Skip to content

Merge redist installer with redist #47659

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eng/Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
it depends on assets from other verticals that are built in the first build pass. -->
<ItemGroup Condition="'$(DotNetBuildPass)' == '2' and
'$(OS)' == 'Windows_NT'">
<ProjectToBuild Include="$(RepoRoot)src\Layout\redist-installer\redist-installer.proj" DotNetBuildPass="2" />
<ProjectToBuild Include="$(RepoRoot)src\Layout\redist\redist.csproj" DotNetBuildPass="2" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion eng/Publishing.props
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

<Target Name="GetNonStableProductVersion">
<!-- Retrieve the non-stable product version. -->
<MSBuild Projects="$(RepoRoot)src\Layout\redist-installer\redist-installer.proj"
<MSBuild Projects="$(RepoRoot)src\Layout\redist\redist.csproj"
Targets="ReturnProductVersion">
<Output TaskParameter="TargetOutputs" PropertyName="NonStableProductVersion" />
</MSBuild>
Expand Down
2 changes: 1 addition & 1 deletion eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
<Sha>79edb640661c29fc3917eac0a6f06e908f4cf617</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
</Dependency>
<!-- Change blob version in GenerateLayout.targets if this is unpinned to service targeting pack -->
<!-- Change blob version in GenerateInstallerLayout.targets if this is unpinned to service targeting pack -->
<!-- No new netstandard.library planned for 3.1 timeframe at this time. -->
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0" Pinned="true">
<Uri>https://github.com/dotnet/core-setup</Uri>
Expand Down
7 changes: 0 additions & 7 deletions sdk.sln
Original file line number Diff line number Diff line change
Expand Up @@ -485,8 +485,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-format.UnitTests", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "finalizer", "src\Layout\finalizer\finalizer.csproj", "{32DA04FF-A951-43EA-B2FA-86A825009A97}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "redist-installer", "src\Layout\redist-installer\redist-installer.proj", "{FAADC193-BA41-449D-97CE-0EF82836046A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-sdk", "src\Layout\pkg\dotnet-sdk.proj", "{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VS.Redist.Common.Net.Core.SDK.VSTemplateLocator", "src\Layout\VS.Redist.Common.Net.Core.SDK.VSTemplateLocator\VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.proj", "{0CBA5FB8-71A3-457A-89F3-E52B9602164A}"
Expand Down Expand Up @@ -945,10 +943,6 @@ Global
{32DA04FF-A951-43EA-B2FA-86A825009A97}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32DA04FF-A951-43EA-B2FA-86A825009A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32DA04FF-A951-43EA-B2FA-86A825009A97}.Release|Any CPU.Build.0 = Release|Any CPU
{FAADC193-BA41-449D-97CE-0EF82836046A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAADC193-BA41-449D-97CE-0EF82836046A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAADC193-BA41-449D-97CE-0EF82836046A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAADC193-BA41-449D-97CE-0EF82836046A}.Release|Any CPU.Build.0 = Release|Any CPU
{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D6A9984-118D-4415-A8FA-AB1F26CF5C44}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -1184,7 +1178,6 @@ Global
{85A01ACB-CC90-45EF-8F6C-AFC2B9F31126} = {3AD322BF-405B-4A53-9858-51CF66E8509F}
{7382A1CB-AA9A-4136-A548-17D7A67C6B0C} = {71A9F549-0EB6-41F9-BC16-4A6C5007FC91}
{D7495CE7-64E5-4715-9304-799A41EC1D71} = {580D1AE7-AA8F-4912-8B76-105594E00B3B}
{FAADC193-BA41-449D-97CE-0EF82836046A} = {71C279BD-E850-4A8D-9775-11CA26B8E5BA}
{8D6A9984-118D-4415-A8FA-AB1F26CF5C44} = {71C279BD-E850-4A8D-9775-11CA26B8E5BA}
{0CBA5FB8-71A3-457A-89F3-E52B9602164A} = {71C279BD-E850-4A8D-9775-11CA26B8E5BA}
{21C21975-84C1-4A24-8E21-F7EC790A4584} = {580D1AE7-AA8F-4912-8B76-105594E00B3B}
Expand Down
1 change: 0 additions & 1 deletion source-build.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
"src\\Compatibility\\Microsoft.DotNet.ApiSymbolExtensions\\Microsoft.DotNet.ApiSymbolExtensions.csproj",
"src\\Containers\\Microsoft.NET.Build.Containers\\Microsoft.NET.Build.Containers.csproj",
"src\\Containers\\packaging\\package.csproj",
"src\\Layout\\redist-installer\\redist-installer.proj",
"src\\Layout\\pkg\\dotnet-sdk.proj",
"src\\Layout\\redist\\redist.csproj",
"src\\Layout\\redist\\tools\\tool_fsc.csproj",
Expand Down
8 changes: 6 additions & 2 deletions src/Layout/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
<ExeExtension Condition="!$([MSBuild]::IsOSPlatform('WINDOWS'))"></ExeExtension>

<Rid>$(OSName)-$(Architecture)</Rid>
<ProductMonikerRid Condition="'$(ProductMonikerRid)' == ''">$(Rid)</ProductMonikerRid>
<ProductMonikerRid>$(Rid)</ProductMonikerRid>

<PortableOSName Condition="'$(PortableOSName)' == ''">$(OSName)</PortableOSName>
<PortableRid>$(PortableOSName)-$(Architecture)</PortableRid>
<PortableProductMonikerRid Condition="'$(PortableProductMonikerRid)' == ''">$(PortableRid)</PortableProductMonikerRid>
<PortableProductMonikerRid>$(PortableRid)</PortableProductMonikerRid>
</PropertyGroup>

<PropertyGroup>
Expand Down Expand Up @@ -69,4 +69,8 @@
<SharedFrameworkRid Condition=" '$(UsePortableLinuxSharedFramework)' == 'true' ">linux-$(Architecture)</SharedFrameworkRid>
</PropertyGroup>

<PropertyGroup>
<SdkPkgSourcesRootDirectory>$(MSBuildThisFileDirectory)pkg\</SdkPkgSourcesRootDirectory>
</PropertyGroup>

</Project>
5 changes: 3 additions & 2 deletions src/Layout/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
<RedistLayoutPath>$(ArtifactsBinDir)redist\$(Configuration)\dotnet\</RedistLayoutPath>
<SdkOutputDirectory>$(RedistLayoutPath)sdk\$(Version)</SdkOutputDirectory>

<RedistInstallerLayoutPath>$(ArtifactsBinDir)redist-installer\$(Configuration)\dotnet\</RedistInstallerLayoutPath>
<SdkInternalLayoutPath>$(ArtifactsBinDir)redist-installer\$(Configuration)\i\</SdkInternalLayoutPath>
<RedistInstallerBaseOutputPath>$(ArtifactsBinDir)redist-installer\$(Configuration)\</RedistInstallerBaseOutputPath>
<RedistInstallerLayoutPath>$(RedistInstallerBaseOutputPath)dotnet\</RedistInstallerLayoutPath>
<SdkInternalLayoutPath>$(RedistInstallerBaseOutputPath)i\</SdkInternalLayoutPath>
<InstallerOutputDirectory>$(RedistInstallerLayoutPath)sdk\$(Version)\</InstallerOutputDirectory>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<ItemGroup>
<ProjectReference Include="$(RepoRoot)src\Microsoft.Net.Sdk.AnalyzerRedirecting\Microsoft.Net.Sdk.AnalyzerRedirecting.csproj" />
<ProjectReference Include="..\redist-installer\redist-installer.proj" />
<ProjectReference Include="..\redist\redist.csproj" />
</ItemGroup>

<!-- Shared infra to build and use the sdk-tasks -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\redist-installer\redist-installer.proj" />
<ProjectReference Include="..\redist\redist.csproj" />
</ItemGroup>

<Target Name="GenerateLayout" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="ResolveProjectReferences">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\redist-installer\redist-installer.proj" />
<ProjectReference Include="..\redist\redist.csproj" />
</ItemGroup>

<Target Name="GenerateLayout" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="ResolveProjectReferences">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\redist-installer\redist-installer.proj" />
<ProjectReference Include="..\redist\redist.csproj" />
</ItemGroup>

<Target Name="GenerateLayout" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="ResolveProjectReferences">
Expand Down
2 changes: 1 addition & 1 deletion src/Layout/pkg/dotnet-sdk.proj
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\redist-installer\redist-installer.proj" ReferenceOutputAssembly="false" />
<ProjectReference Include="..\redist\redist.csproj" ReferenceOutputAssembly="false" />
</ItemGroup>

<ItemGroup>
Expand Down
24 changes: 0 additions & 24 deletions src/Layout/redist-installer/Directory.Build.targets

This file was deleted.

24 changes: 0 additions & 24 deletions src/Layout/redist-installer/redist-installer.proj

This file was deleted.

15 changes: 14 additions & 1 deletion src/Layout/redist/redist.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);NETSDK1205</MSBuildWarningsAsMessages>
<!-- The D.B.targets file is in subfolder so that the tools projects don't import it. -->
<DirectoryBuildTargetsPath>$(MSBuildThisFileDirectory)targets\Directory.Build.targets</DirectoryBuildTargetsPath>
<!-- Needed to calculate the stable FileVersion for the sdk bundle version. -->
<IsShippingPackage>true</IsShippingPackage>
<NoWarn>$(NoWarn);NU1505</NoWarn>
</PropertyGroup>

<ItemGroup>
Expand Down Expand Up @@ -47,9 +50,11 @@
<PackageReference Include="Microsoft.Build.Framework" VersionOverride="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.Build.Utilities.Core" VersionOverride="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.NET.StringTools" VersionOverride="$(MicrosoftBuildVersion)" />

<PackageReference Include="Microsoft.DotNet.Build.Tasks.Installers" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
<ItemGroup Condition="'$(GenerateSdkBundleOnly)' != 'true'">
<!-- These project references with ReferenceOutputAssembly="false" should also set SkipGetTargetFrameworkProperties="true". Otherwise, only the inner
build of a multi-targeted project will be built to fulfill the project reference, and if the redist project depends on output that is created
in the outer build (which is the case for some of these references), there may be sporadic incorrect builds if the outer build happens to run concurrently
Expand All @@ -63,6 +68,12 @@
<ProjectReference Include="..\..\Resolvers\Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver\Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.csproj" />
<ProjectReference Include="$(RepoRoot)src\BuiltInTools\dotnet-watch\dotnet-watch.csproj" ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" Private="false" />
<ProjectReference Include="$(RepoRoot)src\BuiltInTools\dotnet-format\dotnet-format.csproj" ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" Private="false" />

<ProjectReference Include="$(RepoRoot)template_feed\*\*.csproj" ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" Private="false" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\finalizer\finalizer.csproj" Condition="'$(OS)' == 'Windows_NT'" ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" Private="false" />
</ItemGroup>

<ItemGroup>
Expand Down Expand Up @@ -98,4 +109,6 @@
</ItemGroup>
</Target>

<Target Name="ReturnProductVersion" Returns="$(FullNugetVersion)" />

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@

<Target Name="LayoutTemplatesForMSI" DependsOnTargets="CalculateTemplatesVersions;GetRepoTemplates" Condition="$(ProductMonikerRid.StartsWith('win'))">
<Copy SourceFiles="%(BundledTemplatesWithInstallPaths.RestoredNupkgPath)"
DestinationFolder="$(BaseOutputPath)$(Configuration)\templates-%(BundledTemplatesWithInstallPaths.TemplateFrameworkVersion)\templates\%(BundledTemplatesWithInstallPaths.BundledTemplateInstallPath)" />
DestinationFolder="$(RedistInstallerBaseOutputPath)templates-%(BundledTemplatesWithInstallPaths.TemplateFrameworkVersion)\templates\%(BundledTemplatesWithInstallPaths.BundledTemplateInstallPath)" />

<!-- Copy the current Microsoft.DotNet.Common.ItemTemplates and Microsoft.DotNet.Common.ProjectTemplates packages to the layout location. -->
<PropertyGroup>
<CurrentTemplateInstallPath Condition="'%(BundledTemplatesWithInstallPaths.TemplateFrameworkVersion)' == '10.0'">%(BundledTemplatesWithInstallPaths.BundledTemplateInstallPath)</CurrentTemplateInstallPath>
<CurrentTemplateFrameworkVersion>%(CurrentVersionBundledTemplates.TemplateFrameworkVersion)</CurrentTemplateFrameworkVersion>
</PropertyGroup>
<Copy SourceFiles="@(RepoTemplate)"
DestinationFiles="$(BaseOutputPath)$(Configuration)\templates-$(CurrentTemplateFrameworkVersion)\templates\$(CurrentTemplateInstallPath)\$([System.String]::Copy('%(Filename)%(Extension)').ToLowerInvariant())" />
DestinationFiles="$(RedistInstallerBaseOutputPath)templates-$(CurrentTemplateFrameworkVersion)\templates\$(CurrentTemplateInstallPath)\$([System.String]::Copy('%(Filename)%(Extension)').ToLowerInvariant())" />
</Target>

</Project>
24 changes: 20 additions & 4 deletions src/Layout/redist/targets/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,25 @@
<!-- Shared infra to build and use the sdk-tasks -->
<Import Project="$(RepoRoot)src\Tasks\sdk-tasks\sdk-tasks.InTree.targets" />

<Import Project="BundledSdks.targets" />
<Import Project="PublishDotnetWatch.targets" />
<Import Project="GenerateLayout.targets" />
<Import Project="OverlaySdkOnLKG.targets" Condition="'$(DotNetBuild)' != 'true'" />
<Import Project="RestoreLayout.targets" />
<Import Project="BundledManifests.targets" />

<ImportGroup Condition="'$(GenerateSdkBundleOnly)' != 'true'">
<Import Project="BundledSdks.targets" />
<Import Project="PublishDotnetWatch.targets" />
<Import Project="GenerateLayout.targets" />
<Import Project="OverlaySdkOnLKG.targets" Condition="'$(DotNetBuild)' != 'true'" />

<Import Project="BundledTemplates.targets" />
<Import Project="BundledDotnetTools.targets" />
<Import Project="GenerateBundledVersions.targets" />
<Import Project="Crossgen.targets" />
<Import Project="GenerateInstallerLayout.targets" />
<Import Project="GenerateArchives.targets" />
</ImportGroup>

<!-- Installers -->
<Import Project="GenerateMSIs.targets" Condition="'$(OS)' == 'Windows_NT' and '$(SkipBuildingInstallers)' != 'true'" />
<Import Project="GeneratePKG.targets" Condition="'$(OSName)' == 'osx' and '$(SkipBuildingInstallers)' != 'true'" />

</Project>
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project>

<Target Name="GenerateArchives"
DependsOnTargets="GenerateLayout"
BeforeTargets="AfterBuild">
DependsOnTargets="GenerateInstallerLayout"
AfterTargets="Build">
<!-- When running in Docker under a Windows host, tar is warning "file changed as we read it" for several files and returning exit code 1.
So this flag allows that to be ignored. -->
<PropertyGroup Condition="'$(IgnoreTarExitCode)' == ''">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -512,10 +512,6 @@
LatestVersion="2.2.8" />
</ItemGroup>

<PropertyGroup>
<PortableProductMonikerRid Condition="'$(PortableProductMonikerRid)' == ''">$(ProductMonikerRid)</PortableProductMonikerRid>
</PropertyGroup>

<PropertyGroup>
<BundledVersionsPropsContent>
<![CDATA[
Expand Down Expand Up @@ -1391,14 +1387,14 @@ Copyright (c) .NET Foundation. All rights reserved.

<Target Name="GenerateBundledMSBuildProps">
<PropertyGroup>
<MinimumMSBuildVersionFile>$(RedistInstallerLayoutPath)sdk/$(Version)/minimumMSBuildVersion</MinimumMSBuildVersionFile>
<MinimumMSBuildVersionFile>$(MSBuildProjectDirectory)\minimumMSBuildVersion</MinimumMSBuildVersionFile>
<BundledMSBuildPropsFileName>Microsoft.NETCoreSdk.BundledMSBuildInformation.props</BundledMSBuildPropsFileName>
<_ShippingMSBuildVersion>$(MicrosoftBuildVersion)</_ShippingMSBuildVersion>
<_ShippingMSBuildVersion Condition="$(_ShippingMSBuildVersion.Contains('-'))">$(MicrosoftBuildVersion.Split('-')[0])</_ShippingMSBuildVersion>
<BundledMSBuildVersion>$(_ShippingMSBuildVersion)</BundledMSBuildVersion>
</PropertyGroup>

<Error Text="No MSBuild version file found under '$(RedistInstallerLayoutPath)sdk/$(Version)'" Condition="!Exists('$(MinimumMSBuildVersionFile)')" />
<Error Text="No MSBuild version file found: '$(MinimumMSBuildVersionFile)'" Condition="!Exists('$(MinimumMSBuildVersionFile)')" />

<ReadLinesFromFile File="$(MinimumMSBuildVersionFile)">
<Output TaskParameter="Lines" PropertyName="MinimumMSBuildVersion"/>
Expand Down Expand Up @@ -1437,18 +1433,4 @@ Copyright (c) .NET Foundation. All rights reserved.
Overwrite="true" />
</Target>

<ItemGroup>
<PackageDownload Include="Microsoft.NETCore.Platforms" Version="[$(MicrosoftNETCorePlatformsPackageVersion)]" />
</ItemGroup>

<Target Name="LayoutRuntimeGraph"
DependsOnTargets="GenerateBundledVersionsProps">

<GenerateSdkRuntimeIdentifierChain
RuntimeIdentifier="$(PortableProductMonikerRid)"
RuntimeIdentifierGraphPath="$(InstallerOutputDirectory)PortableRuntimeIdentifierGraph.json"
RuntimeIdentifierChainOutputPath="$(InstallerOutputDirectory)NETCoreSdkRuntimeIdentifierChain.txt" />

</Target>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
<Copy SourceFiles="@(DotnetToolsetInternalSource)" DestinationFiles="@(DotnetToolsetInternalDestination)" SkipUnchangedFiles="true" />
</Target>

<Target Name="RetargetTools">
<Target Name="RetargetInstallerTools">
<ItemGroup>
<ToolRuntimeConfigPath Include="$(RedistInstallerLayoutPath)sdk/$(Version)/**/*.runtimeconfig.json" />
</ItemGroup>
Expand Down Expand Up @@ -138,27 +138,23 @@
<ReplaceFilesWithSymbolicLinks Directory="$(RedistInstallerLayoutPath)/packs/Microsoft.AspNetCore.App.Runtime.$(SharedFrameworkRid)/$(MicrosoftAspNetCoreAppRuntimePackageVersion)" LinkToFilesFrom="$(RedistInstallerLayoutPath)/shared/Microsoft.AspNetCore.App/$(MicrosoftAspNetCoreAppRuntimePackageVersion)" />
</Target>

<Target Name="GenerateLayout"
<Target Name="GenerateInstallerLayout"
DependsOnTargets="DownloadBundledComponents;
GenerateLayout;
LayoutBundledComponents;
GenerateVersionFile;
CopyKnownWorkloadManifestFile;
GenerateBundledVersions;
LayoutRuntimeGraph;
LayoutTemplates;
LayoutManifests;
LayoutBaselineWorkloadSet;
LayoutWorkloadUserLocalMarker;
LayoutBundledTools;
RetargetTools;
RetargetInstallerTools;
CrossgenLayout;
LayoutAppHostTemplate;
ReplaceBundledRuntimePackFilesWithSymbolicLinks"
BeforeTargets="AfterBuild" />

<Target Name="GenerateInternalLayout"
DependsOnTargets="GenerateLayout"
BeforeTargets="AfterBuild" >
AfterTargets="Build">
<RemoveDir Directories="$(SdkInternalLayoutPath)" />
<MakeDir Directories="$(SdkInternalLayoutPath)" />

Expand Down
Loading