This commit is contained in:
Bahru 2025-07-31 23:56:15 +07:00
parent 49b6f3810d
commit 52e830b459
23 changed files with 923 additions and 171 deletions

BIN
.DS_Store vendored

Binary file not shown.

4
.gitignore vendored
View file

@ -1,4 +0,0 @@
bin
obj
.vs
*.png

17
LiloController.cs Normal file
View file

@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Mvc;
namespace LiloStitcher;
[ApiController]
[Route( "api/image" )]
public sealed class LiloController( LiloStitcher stitcher ) : ControllerBase
{
[HttpPost]
[Route( "generate" )]
[Produces( "image/png" )]
public async Task<IActionResult> Generate( [FromBody] GenerateRequest payload, CancellationToken ct )
{
var png = await stitcher.CreateImageAsync( payload, ct );
return File( png, "image/png" );
}
}

View file

@ -1,136 +1,139 @@
using Microsoft.Extensions.Caching.Memory;
using NetVips;
namespace lilo_stitcher_console;
namespace LiloStitcher;
public record GenerateRequest(
string CanvasRect,
double[] CropOffset,
double[] CropSize,
double OutputScale
public sealed record GenerateRequest(
string Canvas_Rect,
double[] Crop_Offset,
double[] Crop_Size,
double Output_Scale
);
public readonly record struct PlateCoordinate(int Row, int Col)
public readonly record struct PlateCoordinate( int Row, int Col )
{
public static PlateCoordinate Parse(string token)
{
var rowPart = new string(token.TakeWhile(char.IsLetter).ToArray()).ToUpperInvariant();
var colPart = new string(token.SkipWhile(char.IsLetter).ToArray());
int row = 0;
foreach (var character in rowPart)
row = row * 26 + (character - 'A' + 1);
int.TryParse(colPart, out int col);
return new PlateCoordinate(row, col);
}
}
public class TileCache(IMemoryCache cache)
{
private const long TileBytes = 720L * 720 * 3;
public Image? Get(string key) => cache.TryGetValue(key, out Image? img) ? img : null;
public void Set(string key, Image img) =>
cache.Set(key, img, new MemoryCacheEntryOptions
public static PlateCoordinate Parse( string token )
{
Size = TileBytes,
SlidingExpiration = TimeSpan.FromMinutes(20)
});
if( string.IsNullOrWhiteSpace( token ) )
throw new ArgumentException( "Empty coordinate." );
var rowPart = new string( token.TakeWhile( char.IsLetter ).ToArray() ).ToUpperInvariant();
var colPart = new string( token.SkipWhile( char.IsLetter ).ToArray() );
int row = 0;
foreach( char c in rowPart )
row = row * 26 + ( c - 'A' + 1 );
return new PlateCoordinate( row, int.Parse( colPart ) );
}
}
public class TileLoader(TileCache cache, string assetDir)
public class TileCache( IMemoryCache cache )
{
public async Task<Image> LoadAsync(string name, CancellationToken ct)
{
if (cache.Get(name) is { } hit)
return hit;
private const long TileBytes = 720L * 720 * 3;
var image = await Task.Run(() =>
Image.NewFromFile(Path.Combine(assetDir, $"{name}.png"), access: Enums.Access.Sequential), ct);
public Image? Get( string key ) => cache.TryGetValue( key, out Image? img ) ? img : null;
cache.Set(name, image);
return image;
}
public void Set( string key, Image img ) =>
cache.Set( key, img, new MemoryCacheEntryOptions
{
Size = TileBytes,
SlidingExpiration = TimeSpan.FromMinutes( 20 )
} );
}
public class LiloStitcher(TileLoader loader)
public class TileLoader( TileCache cache, string assetDir )
{
public async Task<string> CreateImageAsync(GenerateRequest req, CancellationToken ct)
public async Task<Image> LoadAsync( string name, CancellationToken ct )
{
(int rowMin, int colMin, int rows, int cols) = ParseCanvas(req.CanvasRect);
if( cache.Get( name ) is { } hit )
return hit;
Validate(req.CropOffset, nameof(req.CropOffset));
Validate(req.CropSize, nameof(req.CropSize));
var image = await Task.Run( () =>
Image.NewFromFile( Path.Combine( assetDir, $"{name}.png" ), access: Enums.Access.Sequential ), ct );
double scale = req.OutputScale;
if (scale <= 0 || scale > 1)
throw new ArgumentOutOfRangeException(nameof(req.OutputScale));
cache.Set( name, image );
return image;
}
}
var tiles = new List<Image>(rows * cols);
public class LiloStitcher( TileLoader loader )
{
public async Task<byte[]> CreateImageAsync( GenerateRequest req, CancellationToken ct )
{
(int rowMin, int colMin, int rows, int cols) = ParseCanvas( req.Canvas_Rect );
double scale = req.Output_Scale;
if( scale <= 0 || scale > 1 )
throw new ArgumentOutOfRangeException( nameof( req.Output_Scale ) );
var tiles = new List<Image>( rows * cols );
for( int row = 0; row < rows; row++ )
{
for( int col = 0; col < cols; col++ )
{
string id = $"{RowName( rowMin + row )}{colMin + col}";
var tile = await loader.LoadAsync( id, ct );
if( scale < 1 ) tile = tile.Resize( scale );
tiles.Add( tile );
}
for( int col = 0; col < cols; col++ )
{
string id = $"{RowName( rowMin + row )}{colMin + col}";
var tile = await loader.LoadAsync( id, ct );
if( scale < 1 ) tile = tile.Resize( scale );
tiles.Add( tile );
}
}
var mosaic = Image.Arrayjoin(tiles.ToArray(), across: cols);
var mosaic = Image.Arrayjoin( tiles.ToArray(), across: cols );
int offsetX = (int)Math.Truncate(req.CropOffset[0] * mosaic.Width);
int offsetY = (int)Math.Truncate(req.CropOffset[1] * mosaic.Height);
int offsetX = (int)Math.Truncate( req.Output_Scale * mosaic.Width );
int offsetY = (int)Math.Truncate( req.Output_Scale * mosaic.Height );
int restWidth = mosaic.Width - offsetX;
int restHeight = mosaic.Height - offsetY;
int cropWidth = Math.Max(1, (int)Math.Truncate(req.CropSize[0] * restWidth));
int cropHeight = Math.Max(1, (int)Math.Truncate(req.CropSize[1] * restHeight));
int cropWidth = Math.Max( 1, (int)Math.Truncate( req.Crop_Size[0] * restWidth ) );
int cropHeight = Math.Max( 1, (int)Math.Truncate( req.Crop_Size[1] * restHeight ) );
int cropX = (int)Math.Truncate(offsetX / 2.0 + (restWidth - cropWidth) / 2.0);
int cropY = (int)Math.Truncate(offsetY / 2.0 + (restHeight - cropHeight) / 2.0);
int cropX = (int)Math.Truncate( offsetX / 2.0 + ( restWidth - cropWidth ) / 2.0 );
int cropY = (int)Math.Truncate( offsetY / 2.0 + ( restHeight - cropHeight ) / 2.0 );
var cropRect = mosaic.Crop(cropX, cropY, cropWidth, cropHeight);
var cropped = mosaic.Crop( cropX, cropY, cropWidth, cropHeight );
string tmpPath = Path.Combine(Path.GetTempPath(), $"mosaic-{Guid.NewGuid():N}.png");
cropRect.WriteToFile(tmpPath);
var finalImg = scale < 1.0 ? cropped.Resize( scale ) : cropped;
return tmpPath;
string tmp = Path.GetTempFileName() + ".png";
finalImg.WriteToFile( tmp );
byte[] result = await File.ReadAllBytesAsync( tmp, ct );
File.Delete( tmp );
return result;
}
private static (int rowMin, int colMin, int rows, int cols) ParseCanvas(string rect)
private static (int rowMin, int colMin, int rows, int cols) ParseCanvas( string rect )
{
var parts = rect.ToUpperInvariant().Split(':', StringSplitOptions.RemoveEmptyEntries);
var part1 = PlateCoordinate.Parse(parts[0]);
var part2 = PlateCoordinate.Parse(parts[1]);
int rowMin = Math.Min(part1.Row, part2.Row);
int rowMax = Math.Max(part1.Row, part2.Row);
int colMin = Math.Min(part1.Col, part2.Col);
int colMax = Math.Max(part1.Col, part2.Col);
var parts = rect.ToUpperInvariant().Split( ':', StringSplitOptions.RemoveEmptyEntries );
var part1 = PlateCoordinate.Parse( parts[0] );
var part2 = PlateCoordinate.Parse( parts[1] );
int rowMin = Math.Min( part1.Row, part2.Row );
int rowMax = Math.Max( part1.Row, part2.Row );
int colMin = Math.Min( part1.Col, part2.Col );
int colMax = Math.Max( part1.Col, part2.Col );
return (rowMin, colMin, rowMax - rowMin + 1, colMax - colMin + 1);
}
private static void Validate(double[] arr, string name)
private static void Validate( double[] arr, string name )
{
if (arr is null || arr.Length < 2)
throw new ArgumentException($"{name} length");
if (arr.Any(x => x < 0 || x > 1))
throw new ArgumentOutOfRangeException(name);
if( arr is null || arr.Length < 2 )
throw new ArgumentException( $"{name} length" );
if( arr.Any( x => x < 0 || x > 1 ) )
throw new ArgumentOutOfRangeException( name );
}
static string RowName(int row)
static string RowName( int row )
{
var stringBuilder = new System.Text.StringBuilder();
while (row > 0)
{
row--;
stringBuilder.Insert(0, (char)('A' + row % 26));
row /= 26;
}
return stringBuilder.ToString();
var stringBuilder = new System.Text.StringBuilder();
while( row > 0 )
{
row--;
stringBuilder.Insert( 0, (char)( 'A' + row % 26 ) );
row /= 26;
}
return stringBuilder.ToString();
}
}

View file

@ -1,68 +1,19 @@
using lilo_stitcher_console;
using System.Diagnostics;
using Microsoft.Extensions.Caching.Memory;
var builder = WebApplication.CreateBuilder(args);
namespace LiloStitcher;
// Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
// builder.Services.AddOpenApi();
public static class Program
{
public static async Task<int> Main( string[] args )
{
try
{
NetVips.NetVips.Init();
NetVips.NetVips.Concurrency = 3;
builder.Services.AddControllers().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNameCaseInsensitive = true);
Stopwatch sw = Stopwatch.StartNew();
var begin = sw.ElapsedMilliseconds;
var opt = new Options
{
CanvasRect = "A1:AE55",
CropOffset = new[] { 0.4, 0.4 },
CropSize = new[] { 0.8, 0.8 },
OutputScale = 0.5,
OutputPath = "stitched.png"
};
builder.Services.AddMemoryCache(o => o.SizeLimit = 256 * 1024 * 1024);
string tileFilePath = "../tiles1705"; // should later be directed to the read-only `ASSET_PATH_RO` environment variable
string assetDir = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), tileFilePath));
builder.Services.AddSingleton<LiloStitcher.TileCache>();
builder.Services.AddSingleton<LiloStitcher.TileLoader>();
builder.Services.AddSingleton<LiloStitcher.LiloStitcher>();
using var memCache = new MemoryCache(new MemoryCacheOptions { SizeLimit = 128L * 1024 * 1024 });
var tileCache = new TileCache(memCache);
var loader = new TileLoader(tileCache, assetDir);
var stitcher = new lilo_stitcher_console.LiloStitcher(loader);
var app = builder.Build();
var req = new GenerateRequest(
opt.CanvasRect!,
opt.CropOffset!,
opt.CropSize!,
opt.OutputScale
);
app.MapControllers();
Console.WriteLine("Stitching...");
var png = await stitcher.CreateImageAsync(req, CancellationToken.None);
File.Move( png, opt.OutputPath!, overwrite: true );
long bytes = new FileInfo( opt.OutputPath! ).Length;
Console.WriteLine($"Done. Wrote {opt.OutputPath} ({bytes / 1024.0:F1} KB)");
Console.WriteLine(sw.ElapsedMilliseconds - begin);
return 0;
}
catch( Exception ex )
{
Console.Error.WriteLine( "ERROR: " + ex.Message );
return 1;
}
}
private struct Options
{
public string? CanvasRect { get; set; }
public double[]? CropOffset { get; set; }
public double[]? CropSize { get; set; }
public double OutputScale { get; set; }
public string? OutputPath { get; set; }
}
}
app.Run();

View file

@ -0,0 +1,23 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "http://localhost:5243",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:7121;http://localhost:5243",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View file

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

9
appsettings.json Normal file
View file

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

View file

@ -1,18 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<RootNamespace>lilo_stitcher_console</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>preview</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>lilos_stitcher</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.7" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="10.0.0-preview.6.25358.103" />
<PackageReference Include="NetVips" Version="3.1.0" />
<PackageReference Include="NetVips.Native.linux-x64" Version="8.17.1" />
</ItemGroup>
</Project>

6
lilos-stitcher.http Normal file
View file

@ -0,0 +1,6 @@
@lilos_stitcher_HostAddress = http://localhost:5243
GET {{lilos_stitcher_HostAddress}}/weatherforecast/
Accept: application/json
###

View file

@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lilo-stitcher-console", "lilo-stitcher-console.csproj", "{2A1F81C9-D10F-1AE9-CA5C-0714270F48C1}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lilos-stitcher", "lilos-stitcher.csproj", "{8FDFFCBC-9C8E-94D5-A96D-606027D71B44}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -10,15 +10,15 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2A1F81C9-D10F-1AE9-CA5C-0714270F48C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A1F81C9-D10F-1AE9-CA5C-0714270F48C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A1F81C9-D10F-1AE9-CA5C-0714270F48C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A1F81C9-D10F-1AE9-CA5C-0714270F48C1}.Release|Any CPU.Build.0 = Release|Any CPU
{8FDFFCBC-9C8E-94D5-A96D-606027D71B44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FDFFCBC-9C8E-94D5-A96D-606027D71B44}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FDFFCBC-9C8E-94D5-A96D-606027D71B44}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FDFFCBC-9C8E-94D5-A96D-606027D71B44}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7CD65D7-8035-4FC2-A584-06B21F732FF7}
SolutionGuid = {8DD20971-C4B3-41BF-8263-D31D5D81631F}
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View file

@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("lilos-stitcher")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("lilos-stitcher")]
[assembly: System.Reflection.AssemblyTitleAttribute("lilos-stitcher")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View file

@ -0,0 +1 @@
b9648f35d08e6094ba68410eef2ef1b321e87149ab6afaeef61e60bd1216d6d3

View file

@ -0,0 +1,21 @@
is_global = true
build_property.TargetFramework = net9.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb = true
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = lilos_stitcher
build_property.RootNamespace = lilos_stitcher
build_property.ProjectDir = /home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 9.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet
build_property._RazorSourceGeneratorDebug =
build_property.EffectiveAnalysisLevelStyle = 9.0
build_property.EnableCodeStyleSeverity =

View file

@ -0,0 +1,17 @@
// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View file

@ -0,0 +1,86 @@
{
"format": 1,
"restore": {
"/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj": {}
},
"projects": {
"/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj",
"projectName": "lilos-stitcher",
"projectPath": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj",
"packagesPath": "/home/mbsbahru/.nuget/packages/",
"outputPath": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/mbsbahru/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"/home/mbsbahru/nuget-local": {},
"/usr/lib/dotnet/library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.100"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.Extensions.Caching.Memory": {
"target": "Package",
"version": "[10.0.0-preview.6.25358.103, )"
},
"NetVips": {
"target": "Package",
"version": "[3.1.0, )"
},
"NetVips.Native.linux-x64": {
"target": "Package",
"version": "[8.17.1, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/9.0.108/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/mbsbahru/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/mbsbahru/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.4</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/mbsbahru/.nuget/packages/" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.0-preview.6.25358.103/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.0-preview.6.25358.103/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.0-preview.6.25358.103/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.0-preview.6.25358.103/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
</ImportGroup>
</Project>

549
obj/project.assets.json Normal file
View file

@ -0,0 +1,549 @@
{
"version": 3,
"targets": {
"net9.0": {
"Microsoft.Extensions.Caching.Abstractions/10.0.0-preview.6.25358.103": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "10.0.0-preview.6.25358.103"
},
"compile": {
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
},
"Microsoft.Extensions.Caching.Memory/10.0.0-preview.6.25358.103": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "10.0.0-preview.6.25358.103",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0-preview.6.25358.103",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0-preview.6.25358.103",
"Microsoft.Extensions.Options": "10.0.0-preview.6.25358.103",
"Microsoft.Extensions.Primitives": "10.0.0-preview.6.25358.103"
},
"compile": {
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0-preview.6.25358.103": {
"type": "package",
"compile": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
},
"Microsoft.Extensions.Logging.Abstractions/10.0.0-preview.6.25358.103": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0-preview.6.25358.103",
"System.Diagnostics.DiagnosticSource": "10.0.0-preview.6.25358.103"
},
"compile": {
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
"Microsoft.Extensions.Options/10.0.0-preview.6.25358.103": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0-preview.6.25358.103",
"Microsoft.Extensions.Primitives": "10.0.0-preview.6.25358.103"
},
"compile": {
"lib/net9.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {}
}
},
"Microsoft.Extensions.Primitives/10.0.0-preview.6.25358.103": {
"type": "package",
"compile": {
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
},
"NetVips/3.1.0": {
"type": "package",
"compile": {
"lib/net6.0/NetVips.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/NetVips.dll": {
"related": ".xml"
}
}
},
"NetVips.Native.linux-x64/8.17.1": {
"type": "package",
"compile": {
"lib/net6.0/_._": {}
},
"runtime": {
"lib/net6.0/_._": {}
},
"runtimeTargets": {
"runtimes/linux-x64/native/libvips.so.42": {
"assetType": "native",
"rid": "linux-x64"
}
}
},
"System.Diagnostics.DiagnosticSource/10.0.0-preview.6.25358.103": {
"type": "package",
"compile": {
"lib/net9.0/System.Diagnostics.DiagnosticSource.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net9.0/System.Diagnostics.DiagnosticSource.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
}
}
},
"libraries": {
"Microsoft.Extensions.Caching.Abstractions/10.0.0-preview.6.25358.103": {
"sha512": "XueBRYerg0fC13swErWCHB8zJ7feYt5R5Und/CjDy45DIccK7MvGJ2aSrtg+OUvPCUinJYphBaLiarfrLuIWfw==",
"type": "package",
"path": "microsoft.extensions.caching.abstractions/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets",
"lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net10.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
"microsoft.extensions.caching.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.caching.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Caching.Memory/10.0.0-preview.6.25358.103": {
"sha512": "TnEV0E/xlGsAX2zXwdmBVyHcKCAXm7zlOXavdFF7HyHWf0qiReM1ZAvnCDGMERippHxqqUtXC3koZ2uz28UvhQ==",
"type": "package",
"path": "microsoft.extensions.caching.memory/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets",
"lib/net10.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net10.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net462/Microsoft.Extensions.Caching.Memory.dll",
"lib/net462/Microsoft.Extensions.Caching.Memory.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net9.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
"microsoft.extensions.caching.memory.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.caching.memory.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0-preview.6.25358.103": {
"sha512": "XrX5CQwI6dnGvmPJJxf/X1JxhPzRwdKKUf9onJKN+qyqP+wwH9floTgkckGdJxVV+jvnWeUgSJ6MZvQM6WmwSg==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"microsoft.extensions.dependencyinjection.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging.Abstractions/10.0.0-preview.6.25358.103": {
"sha512": "ktG/8xOcrtBL176cYv6mzOL+YRSPySE8hcppHonAXYa8jf3lW/WmxfAUwK0WtUEl7MdYR8mbuEAbSg81crBq5Q==",
"type": "package",
"path": "microsoft.extensions.logging.abstractions/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
"microsoft.extensions.logging.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Options/10.0.0-preview.6.25358.103": {
"sha512": "V3IaV1wPAVpVfDrOK0b4xKZVEHMFlYSL0Wfx6/Tm8bt4ovodorVqHe/EvsogWmsbcj1XhJvFuWXVDuG479i2vw==",
"type": "package",
"path": "microsoft.extensions.options/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
"buildTransitive/net8.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
"lib/net10.0/Microsoft.Extensions.Options.dll",
"lib/net10.0/Microsoft.Extensions.Options.xml",
"lib/net462/Microsoft.Extensions.Options.dll",
"lib/net462/Microsoft.Extensions.Options.xml",
"lib/net8.0/Microsoft.Extensions.Options.dll",
"lib/net8.0/Microsoft.Extensions.Options.xml",
"lib/net9.0/Microsoft.Extensions.Options.dll",
"lib/net9.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
"microsoft.extensions.options.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.options.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Primitives/10.0.0-preview.6.25358.103": {
"sha512": "iSpD+A130hPiq20tbqKGujXtFY1Zc3q/R/AlN3qPpUYwmxEZbybykQ+YpiDzdyoGvo0gp/4vtk/Hqcvkwt53Gw==",
"type": "package",
"path": "microsoft.extensions.primitives/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
"lib/net10.0/Microsoft.Extensions.Primitives.dll",
"lib/net10.0/Microsoft.Extensions.Primitives.xml",
"lib/net462/Microsoft.Extensions.Primitives.dll",
"lib/net462/Microsoft.Extensions.Primitives.xml",
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
"lib/net9.0/Microsoft.Extensions.Primitives.dll",
"lib/net9.0/Microsoft.Extensions.Primitives.xml",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
"microsoft.extensions.primitives.10.0.0-preview.6.25358.103.nupkg.sha512",
"microsoft.extensions.primitives.nuspec",
"useSharedDesignerContext.txt"
]
},
"NetVips/3.1.0": {
"sha512": "/8vwrHjZYO8ec2hXtHxzoreA8TGeSUlcbM+EBc951jlhNQ3n6KfjmZSDQ4T3Is2YS/+FPQrAEUnMIXV2IhxRfg==",
"type": "package",
"path": "netvips/3.1.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net452/NetVips.dll",
"lib/net452/NetVips.xml",
"lib/net6.0/NetVips.dll",
"lib/net6.0/NetVips.xml",
"netvips.3.1.0.nupkg.sha512",
"netvips.nuspec"
]
},
"NetVips.Native.linux-x64/8.17.1": {
"sha512": "i5enEqi0SDWKoinxP/cyjq7T4Vo8bDCfvv5Nf5smBdynAj6EuyNxDaZ54inRjcRD2pA8hZV7mW9gI5H/v/Ls2w==",
"type": "package",
"path": "netvips.native.linux-x64/8.17.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"THIRD-PARTY-NOTICES.md",
"lib/net6.0/_._",
"netvips.native.linux-x64.8.17.1.nupkg.sha512",
"netvips.native.linux-x64.nuspec",
"runtimes/linux-x64/native/libvips.so.42",
"versions.json"
]
},
"System.Diagnostics.DiagnosticSource/10.0.0-preview.6.25358.103": {
"sha512": "SmleXl7WsR4hURxBWoTqeCVt8B+doEKMJRev9fxbqdSi5r18kTX/wYqsNePbq/eJeoq3x8UlngVwxwXplYXXfg==",
"type": "package",
"path": "system.diagnostics.diagnosticsource/10.0.0-preview.6.25358.103",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets",
"lib/net10.0/System.Diagnostics.DiagnosticSource.dll",
"lib/net10.0/System.Diagnostics.DiagnosticSource.xml",
"lib/net462/System.Diagnostics.DiagnosticSource.dll",
"lib/net462/System.Diagnostics.DiagnosticSource.xml",
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll",
"lib/net8.0/System.Diagnostics.DiagnosticSource.xml",
"lib/net9.0/System.Diagnostics.DiagnosticSource.dll",
"lib/net9.0/System.Diagnostics.DiagnosticSource.xml",
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll",
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml",
"system.diagnostics.diagnosticsource.10.0.0-preview.6.25358.103.nupkg.sha512",
"system.diagnostics.diagnosticsource.nuspec",
"useSharedDesignerContext.txt"
]
}
},
"projectFileDependencyGroups": {
"net9.0": [
"Microsoft.Extensions.Caching.Memory >= 10.0.0-preview.6.25358.103",
"NetVips >= 3.1.0",
"NetVips.Native.linux-x64 >= 8.17.1"
]
},
"packageFolders": {
"/home/mbsbahru/.nuget/packages/": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj",
"projectName": "lilos-stitcher",
"projectPath": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj",
"packagesPath": "/home/mbsbahru/.nuget/packages/",
"outputPath": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/mbsbahru/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"/home/mbsbahru/nuget-local": {},
"/usr/lib/dotnet/library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.100"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.Extensions.Caching.Memory": {
"target": "Package",
"version": "[10.0.0-preview.6.25358.103, )"
},
"NetVips": {
"target": "Package",
"version": "[3.1.0, )"
},
"NetVips.Native.linux-x64": {
"target": "Package",
"version": "[8.17.1, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/9.0.108/PortableRuntimeIdentifierGraph.json"
}
}
}
}

18
obj/project.nuget.cache Normal file
View file

@ -0,0 +1,18 @@
{
"version": 2,
"dgSpecHash": "ND5vzXBabtw=",
"success": true,
"projectFilePath": "/home/mbsbahru/Documents/Formulatrix Trivia/stitch-a-ton challenge/lilos-stitcher-aspnet/lilos-stitcher.csproj",
"expectedPackageFiles": [
"/home/mbsbahru/.nuget/packages/microsoft.extensions.caching.abstractions/10.0.0-preview.6.25358.103/microsoft.extensions.caching.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/microsoft.extensions.caching.memory/10.0.0-preview.6.25358.103/microsoft.extensions.caching.memory.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/10.0.0-preview.6.25358.103/microsoft.extensions.dependencyinjection.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/microsoft.extensions.logging.abstractions/10.0.0-preview.6.25358.103/microsoft.extensions.logging.abstractions.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/microsoft.extensions.options/10.0.0-preview.6.25358.103/microsoft.extensions.options.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/microsoft.extensions.primitives/10.0.0-preview.6.25358.103/microsoft.extensions.primitives.10.0.0-preview.6.25358.103.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/netvips/3.1.0/netvips.3.1.0.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/netvips.native.linux-x64/8.17.1/netvips.native.linux-x64.8.17.1.nupkg.sha512",
"/home/mbsbahru/.nuget/packages/system.diagnostics.diagnosticsource/10.0.0-preview.6.25358.103/system.diagnostics.diagnosticsource.10.0.0-preview.6.25358.103.nupkg.sha512"
],
"logs": []
}