Skip to content

Commit f3f9a1c

Browse files
Tratcherdavidfowl
authored andcommitted
Remove Hosting.Internal APIs (#11505)
* Remove Hosting.Internal APIs #11312
1 parent 5ace0ef commit f3f9a1c

File tree

58 files changed

+244
-293
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+244
-293
lines changed

src/Hosting/Abstractions/ref/Microsoft.AspNetCore.Hosting.Abstractions.netcoreapp3.0.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ public partial interface IStartup
6565
void Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder app);
6666
System.IServiceProvider ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services);
6767
}
68+
[System.ObsoleteAttribute]
69+
public partial interface IStartupConfigureContainerFilter<TContainerBuilder>
70+
{
71+
System.Action<TContainerBuilder> ConfigureContainer(System.Action<TContainerBuilder> container);
72+
}
73+
[System.ObsoleteAttribute]
74+
public partial interface IStartupConfigureServicesFilter
75+
{
76+
System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection> ConfigureServices(System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection> next);
77+
}
6878
public partial interface IStartupFilter
6979
{
7080
System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> Configure(System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> next);
@@ -115,14 +125,3 @@ public static partial class WebHostDefaults
115125
public static readonly string WebRootKey;
116126
}
117127
}
118-
namespace Microsoft.AspNetCore.Hosting.Internal
119-
{
120-
public partial interface IStartupConfigureContainerFilter<TContainerBuilder>
121-
{
122-
System.Action<TContainerBuilder> ConfigureContainer(System.Action<TContainerBuilder> container);
123-
}
124-
public partial interface IStartupConfigureServicesFilter
125-
{
126-
System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection> ConfigureServices(System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection> next);
127-
}
128-
}

src/Hosting/Abstractions/src/Internal/IStartupConfigureContainerFilter.cs renamed to src/Hosting/Abstractions/src/IStartupConfigureContainerFilter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55

6-
namespace Microsoft.AspNetCore.Hosting.Internal
6+
namespace Microsoft.AspNetCore.Hosting
77
{
88
/// <summary>
99
/// This API supports the ASP.NET Core infrastructure and is not intended to be used
1010
/// directly from your code. This API may change or be removed in future releases.
1111
/// </summary>
12+
[Obsolete]
1213
public interface IStartupConfigureContainerFilter<TContainerBuilder>
1314
{
1415
Action<TContainerBuilder> ConfigureContainer(Action<TContainerBuilder> container);

src/Hosting/Abstractions/src/Internal/IStartupConfigureServicesFilter.cs renamed to src/Hosting/Abstractions/src/IStartupConfigureServicesFilter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55
using Microsoft.Extensions.DependencyInjection;
66

7-
namespace Microsoft.AspNetCore.Hosting.Internal
7+
namespace Microsoft.AspNetCore.Hosting
88
{
99
/// <summary>
1010
/// This API supports the ASP.NET Core infrastructure and is not intended to be used
1111
/// directly from your code. This API may change or be removed in future releases.
1212
/// </summary>
13+
[Obsolete]
1314
public interface IStartupConfigureServicesFilter
1415
{
1516
Action<IServiceCollection> ConfigureServices(Action<IServiceCollection> next);

src/Hosting/Hosting/ref/Microsoft.AspNetCore.Hosting.netcoreapp3.0.cs

Lines changed: 0 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -71,138 +71,6 @@ public partial interface IApplicationBuilderFactory
7171
Microsoft.AspNetCore.Builder.IApplicationBuilder CreateBuilder(Microsoft.AspNetCore.Http.Features.IFeatureCollection serverFeatures);
7272
}
7373
}
74-
namespace Microsoft.AspNetCore.Hosting.Internal
75-
{
76-
public partial class ApplicationLifetime : Microsoft.AspNetCore.Hosting.IApplicationLifetime, Microsoft.Extensions.Hosting.IApplicationLifetime, Microsoft.Extensions.Hosting.IHostApplicationLifetime
77-
{
78-
public ApplicationLifetime(Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Hosting.Internal.ApplicationLifetime> logger) { }
79-
public System.Threading.CancellationToken ApplicationStarted { get { throw null; } }
80-
public System.Threading.CancellationToken ApplicationStopped { get { throw null; } }
81-
public System.Threading.CancellationToken ApplicationStopping { get { throw null; } }
82-
public void NotifyStarted() { }
83-
public void NotifyStopped() { }
84-
public void StopApplication() { }
85-
}
86-
public partial class ConfigureBuilder
87-
{
88-
public ConfigureBuilder(System.Reflection.MethodInfo configure) { }
89-
public System.Reflection.MethodInfo MethodInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
90-
public System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> Build(object instance) { throw null; }
91-
}
92-
public partial class ConfigureContainerBuilder
93-
{
94-
public ConfigureContainerBuilder(System.Reflection.MethodInfo configureContainerMethod) { }
95-
public System.Func<System.Action<object>, System.Action<object>> ConfigureContainerFilters { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
96-
public System.Reflection.MethodInfo MethodInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
97-
public System.Action<object> Build(object instance) { throw null; }
98-
public System.Type GetContainerType() { throw null; }
99-
}
100-
public partial class ConfigureServicesBuilder
101-
{
102-
public ConfigureServicesBuilder(System.Reflection.MethodInfo configureServices) { }
103-
public System.Reflection.MethodInfo MethodInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
104-
public System.Func<System.Func<Microsoft.Extensions.DependencyInjection.IServiceCollection, System.IServiceProvider>, System.Func<Microsoft.Extensions.DependencyInjection.IServiceCollection, System.IServiceProvider>> StartupServiceFilters { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
105-
public System.Func<Microsoft.Extensions.DependencyInjection.IServiceCollection, System.IServiceProvider> Build(object instance) { throw null; }
106-
}
107-
public partial class ConventionBasedStartup : Microsoft.AspNetCore.Hosting.IStartup
108-
{
109-
public ConventionBasedStartup(Microsoft.AspNetCore.Hosting.Internal.StartupMethods methods) { }
110-
public void Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder app) { }
111-
public System.IServiceProvider ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; }
112-
}
113-
public partial class HostedServiceExecutor
114-
{
115-
public HostedServiceExecutor(Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor> logger, System.Collections.Generic.IEnumerable<Microsoft.Extensions.Hosting.IHostedService> services) { }
116-
public System.Threading.Tasks.Task StartAsync(System.Threading.CancellationToken token) { throw null; }
117-
public System.Threading.Tasks.Task StopAsync(System.Threading.CancellationToken token) { throw null; }
118-
}
119-
public partial class HostingApplication : Microsoft.AspNetCore.Hosting.Server.IHttpApplication<Microsoft.AspNetCore.Hosting.Internal.HostingApplication.Context>
120-
{
121-
public HostingApplication(Microsoft.AspNetCore.Http.RequestDelegate application, Microsoft.Extensions.Logging.ILogger logger, System.Diagnostics.DiagnosticListener diagnosticSource, Microsoft.AspNetCore.Http.IHttpContextFactory httpContextFactory) { }
122-
public Microsoft.AspNetCore.Hosting.Internal.HostingApplication.Context CreateContext(Microsoft.AspNetCore.Http.Features.IFeatureCollection contextFeatures) { throw null; }
123-
public void DisposeContext(Microsoft.AspNetCore.Hosting.Internal.HostingApplication.Context context, System.Exception exception) { }
124-
public System.Threading.Tasks.Task ProcessRequestAsync(Microsoft.AspNetCore.Hosting.Internal.HostingApplication.Context context) { throw null; }
125-
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
126-
public partial struct Context
127-
{
128-
private object _dummy;
129-
private int _dummyPrimitive;
130-
public System.Diagnostics.Activity Activity { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
131-
public bool EventLogEnabled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
132-
public Microsoft.AspNetCore.Http.HttpContext HttpContext { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
133-
public System.IDisposable Scope { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
134-
public long StartTimestamp { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
135-
}
136-
}
137-
public partial class HostingEnvironment : Microsoft.AspNetCore.Hosting.IHostingEnvironment, Microsoft.AspNetCore.Hosting.IWebHostEnvironment, Microsoft.Extensions.Hosting.IHostEnvironment, Microsoft.Extensions.Hosting.IHostingEnvironment
138-
{
139-
public HostingEnvironment() { }
140-
public string ApplicationName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
141-
public Microsoft.Extensions.FileProviders.IFileProvider ContentRootFileProvider { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
142-
public string ContentRootPath { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
143-
public string EnvironmentName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
144-
public Microsoft.Extensions.FileProviders.IFileProvider WebRootFileProvider { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
145-
public string WebRootPath { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
146-
}
147-
public static partial class HostingEnvironmentExtensions
148-
{
149-
public static void Initialize(this Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnvironment, string contentRootPath, Microsoft.AspNetCore.Hosting.Internal.WebHostOptions options) { }
150-
public static void Initialize(this Microsoft.AspNetCore.Hosting.IWebHostEnvironment hostingEnvironment, string contentRootPath, Microsoft.AspNetCore.Hosting.Internal.WebHostOptions options) { }
151-
}
152-
public sealed partial class HostingEventSource : System.Diagnostics.Tracing.EventSource
153-
{
154-
internal HostingEventSource() { }
155-
public static readonly Microsoft.AspNetCore.Hosting.Internal.HostingEventSource Log;
156-
[System.Diagnostics.Tracing.EventAttribute(1, Level=System.Diagnostics.Tracing.EventLevel.Informational)]
157-
public void HostStart() { }
158-
[System.Diagnostics.Tracing.EventAttribute(2, Level=System.Diagnostics.Tracing.EventLevel.Informational)]
159-
public void HostStop() { }
160-
protected override void OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs command) { }
161-
[System.Diagnostics.Tracing.EventAttribute(3, Level=System.Diagnostics.Tracing.EventLevel.Informational)]
162-
public void RequestStart(string method, string path) { }
163-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)][System.Diagnostics.Tracing.EventAttribute(4, Level=System.Diagnostics.Tracing.EventLevel.Informational)]
164-
public void RequestStop() { }
165-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)][System.Diagnostics.Tracing.EventAttribute(5, Level=System.Diagnostics.Tracing.EventLevel.Error)]
166-
public void UnhandledException() { }
167-
}
168-
public partial class StartupLoader
169-
{
170-
public StartupLoader() { }
171-
public static System.Type FindStartupType(string startupAssemblyName, string environmentName) { throw null; }
172-
public static Microsoft.AspNetCore.Hosting.Internal.StartupMethods LoadMethods(System.IServiceProvider hostingServiceProvider, System.Type startupType, string environmentName) { throw null; }
173-
}
174-
public partial class StartupMethods
175-
{
176-
public StartupMethods(object instance, System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> configure, System.Func<Microsoft.Extensions.DependencyInjection.IServiceCollection, System.IServiceProvider> configureServices) { }
177-
public System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> ConfigureDelegate { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
178-
public System.Func<Microsoft.Extensions.DependencyInjection.IServiceCollection, System.IServiceProvider> ConfigureServicesDelegate { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
179-
public object StartupInstance { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
180-
}
181-
public partial class WebHostOptions
182-
{
183-
public WebHostOptions() { }
184-
public WebHostOptions(Microsoft.Extensions.Configuration.IConfiguration configuration) { }
185-
public WebHostOptions(Microsoft.Extensions.Configuration.IConfiguration configuration, string applicationNameFallback) { }
186-
public string ApplicationName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
187-
public bool CaptureStartupErrors { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
188-
public string ContentRootPath { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
189-
public bool DetailedErrors { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
190-
public string Environment { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
191-
public System.Collections.Generic.IReadOnlyList<string> HostingStartupAssemblies { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
192-
public System.Collections.Generic.IReadOnlyList<string> HostingStartupExcludeAssemblies { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
193-
public bool PreventHostingStartup { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
194-
public System.TimeSpan ShutdownTimeout { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
195-
public string StartupAssembly { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
196-
public bool SuppressStatusMessages { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
197-
public string WebRoot { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
198-
public System.Collections.Generic.IEnumerable<string> GetFinalHostingStartupAssemblies() { throw null; }
199-
}
200-
public partial class WebHostUtilities
201-
{
202-
public WebHostUtilities() { }
203-
public static bool ParseBool(Microsoft.Extensions.Configuration.IConfiguration configuration, string key) { throw null; }
204-
}
205-
}
20674
namespace Microsoft.AspNetCore.Hosting.Server.Features
20775
{
20876
public partial class ServerAddressesFeature : Microsoft.AspNetCore.Hosting.Server.Features.IServerAddressesFeature

src/Hosting/Hosting/src/GenericHost/GenericWebHostApplicationLifetime.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Threading;
55
using Microsoft.Extensions.Hosting;
66

7-
namespace Microsoft.AspNetCore.Hosting.Internal
7+
namespace Microsoft.AspNetCore.Hosting
88
{
99
#pragma warning disable CS0618 // Type or member is obsolete
1010
internal class GenericWebHostApplicationLifetime : IApplicationLifetime

src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
using Microsoft.Extensions.Hosting;
1717
using Microsoft.Extensions.ObjectPool;
1818

19-
namespace Microsoft.AspNetCore.Hosting.Internal
19+
namespace Microsoft.AspNetCore.Hosting
2020
{
2121
internal class GenericWebHostBuilder : IWebHostBuilder, ISupportsStartup, ISupportsUseDefaultServiceProvider
2222
{

src/Hosting/Hosting/src/GenericHost/GenericWebHostServiceOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55
using Microsoft.AspNetCore.Builder;
66

7-
namespace Microsoft.AspNetCore.Hosting.Internal
7+
namespace Microsoft.AspNetCore.Hosting
88
{
99
internal class GenericWebHostServiceOptions
1010
{

src/Hosting/Hosting/src/GenericHost/GenericWebHostedService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
using Microsoft.Extensions.StackTrace.Sources;
2323
using Microsoft.Net.Http.Headers;
2424

25-
namespace Microsoft.AspNetCore.Hosting.Internal
25+
namespace Microsoft.AspNetCore.Hosting
2626
{
2727
internal class GenericWebHostService : IHostedService
2828
{

src/Hosting/Hosting/src/GenericHost/HostingStartupWebHostBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55
using Microsoft.AspNetCore.Builder;
66
using Microsoft.Extensions.Configuration;
77
using Microsoft.Extensions.DependencyInjection;
88

9-
namespace Microsoft.AspNetCore.Hosting.Internal
9+
namespace Microsoft.AspNetCore.Hosting
1010
{
1111
// We use this type to capture calls to the IWebHostBuilder so the we can properly order calls to
1212
// to GenericHostWebHostBuilder.

src/Hosting/Hosting/src/GenericHost/ISupportsStartup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55
using Microsoft.AspNetCore.Builder;
66

7-
namespace Microsoft.AspNetCore.Hosting.Internal
7+
namespace Microsoft.AspNetCore.Hosting
88
{
99
internal interface ISupportsStartup
1010
{

src/Hosting/Hosting/src/GenericHost/ISupportsUseDefaultServiceProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
// Copyright (c) .NET Foundation. All rights reserved.
1+
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
55
using Microsoft.Extensions.DependencyInjection;
66

7-
namespace Microsoft.AspNetCore.Hosting.Internal
7+
namespace Microsoft.AspNetCore.Hosting
88
{
99
internal interface ISupportsUseDefaultServiceProvider
1010
{

src/Hosting/Hosting/src/GenericHostWebHostBuilderExtensions.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
using System;
1+
using System;
22
using Microsoft.AspNetCore.Hosting;
3-
using Microsoft.AspNetCore.Hosting.Internal;
43

54
namespace Microsoft.Extensions.Hosting
65
{

0 commit comments

Comments
 (0)