From 6bb612c40ffb9f6a3c36ca492f99b3b2d60ae98e Mon Sep 17 00:00:00 2001 From: Andrei Ignat Date: Wed, 19 Aug 2026 19:17:22 +0300 Subject: [PATCH 1/2] data --- README.md | 30 +- later.md | 2 +- v2/Generator/all.csv | 1 + v2/RSCGExamplesData/GeneratorDataRec.json | 9 +- .../.tours/ReflectionIT.DisposeGenerator.tour | 6 + v2/rscg_examples/serde/description.json | 22 ++ v2/rscg_examples/serde/nuget.txt | 1 + v2/rscg_examples/serde/readme.txt | 40 +++ v2/rscg_examples/serde/src/.tours/serde.tour | 48 +++ v2/rscg_examples/serde/src/Serializer.sln | 25 ++ .../serde/src/Serializer/Person.cs | 13 + .../serde/src/Serializer/Program.cs | 9 + .../serde/src/Serializer/Serializer.csproj | 17 + v2/rscg_examples/serde/video.json | 39 +++ .../docs/Authors/Andy_Gocke.md | 7 + .../docs/Categories/Serializer.md | 10 +- .../docs/Categories/_PrimitiveSerializer.mdx | 8 +- .../ReflectionIT.DisposeGenerator.md | 32 +- .../docs/RSCG-Examples/index.md | 13 +- .../docs/RSCG-Examples/serde.md | 324 ++++++++++++++++++ v2/rscg_examples_site/docs/about.md | 2 +- v2/rscg_examples_site/docs/indexRSCG.md | 5 +- .../src/components/HomepageFeatures/index.js | 2 +- .../static/exports/RSCG.json | 8 + .../static/exports/RSCG.xlsx | Bin 14611 -> 14649 bytes 25 files changed, 650 insertions(+), 23 deletions(-) create mode 100644 v2/rscg_examples/serde/description.json create mode 100644 v2/rscg_examples/serde/nuget.txt create mode 100644 v2/rscg_examples/serde/readme.txt create mode 100644 v2/rscg_examples/serde/src/.tours/serde.tour create mode 100644 v2/rscg_examples/serde/src/Serializer.sln create mode 100644 v2/rscg_examples/serde/src/Serializer/Person.cs create mode 100644 v2/rscg_examples/serde/src/Serializer/Program.cs create mode 100644 v2/rscg_examples/serde/src/Serializer/Serializer.csproj create mode 100644 v2/rscg_examples/serde/video.json create mode 100644 v2/rscg_examples_site/docs/Authors/Andy_Gocke.md create mode 100644 v2/rscg_examples_site/docs/RSCG-Examples/serde.md diff --git a/README.md b/README.md index 6d3581c03..ea427d481 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# RSCG - 279 Examples of Roslyn Source Code Generators / 16 created by Microsoft / +# RSCG - 280 Examples of Roslyn Source Code Generators / 16 created by Microsoft / -The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 279 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports. +The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 280 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports. This system serves as both a learning resource for .NET developers interested in source generators and an automated pipeline for maintaining up-to-date documentation about the RSCG ecosystem -## Latest Update : 2026-08-19 => 19 August 2026 +## Latest Update : 2026-08-20 => 20 August 2026 If you want to see examples with code, please click ***[List V2](https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG)*** @@ -24,8 +24,30 @@ If you want to be notified each time I add a new RSCG example , please click htt ## Content -Those are the 279 Roslyn Source Code Generators that I have tested you can see and download source code example. +Those are the 280 Roslyn Source Code Generators that I have tested you can see and download source code example. ( including 16 from Microsoft ) +### 280. [serde](https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde) , in the [Serializer](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#serializer) category + +Generated on : 2026-08-20 => 20 August 2026 + +
+ Expand + + + +Author: Andy Gocke + +Package Description + +Nuget: [https://www.nuget.org/packages/serde/](https://www.nuget.org/packages/serde/) + + +Link: [https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde](https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde) + +Source: [https://github.com/serdedotnet/serde](https://github.com/serdedotnet/serde) + +
+ ### 279. [ReflectionIT.DisposeGenerator](https://ignatandrei.github.io/RSCG_Examples/v2/docs/ReflectionIT.DisposeGenerator) , in the [Disposer](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#disposer) category Generated on : 2026-08-19 => 19 August 2026 diff --git a/later.md b/later.md index c482172ea..4594e7e2b 100644 --- a/later.md +++ b/later.md @@ -1,6 +1,6 @@ # Just later -## Latest Update : 2026-08-19 => 19 August 2026 +## Latest Update : 2026-08-20 => 20 August 2026 diff --git a/v2/Generator/all.csv b/v2/Generator/all.csv index 7e51dc849..bc261094a 100644 --- a/v2/Generator/all.csv +++ b/v2/Generator/all.csv @@ -278,3 +278,4 @@ Nr,Key,Source,Category 277,Bennewitz.Ninja.AutoVersioning, https://github.com/JanusMael/Bennewitz.Ninja.AutoVersioning,EnhancementProject 278,Atulin.AutoDbSet, https://github.com/Atulin/AutoDbSet,EntityFramework 279,ReflectionIT.DisposeGenerator, https://github.com/sonnemaf/ReflectionIT.DisposeGenerator,Disposer +280,serde, https://github.com/serdedotnet/serde,Serializer diff --git a/v2/RSCGExamplesData/GeneratorDataRec.json b/v2/RSCGExamplesData/GeneratorDataRec.json index e658bbcb6..d9457af99 100644 --- a/v2/RSCGExamplesData/GeneratorDataRec.json +++ b/v2/RSCGExamplesData/GeneratorDataRec.json @@ -1690,5 +1690,12 @@ "Category": 18, "dtStart": "2026-08-19T00:00:00", "show": true - } + }, + +{ + "ID":"serde", + "Category":16, + "dtStart": "2026-08-20T00:00:00", + "show": true +} ] \ No newline at end of file diff --git a/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour b/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour index 3601ad15d..0b6c8b8bf 100644 --- a/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour +++ b/v2/rscg_examples/ReflectionIT.DisposeGenerator/src/.tours/ReflectionIT.DisposeGenerator.tour @@ -16,6 +16,12 @@ "pattern": "this is the code" } + ,{ + "file": "IDisp/DALDB.cs", + "description": "File DALDB.cs ", + "pattern": "this is the code" + } + ,{ "file": "IDisp/Program.cs", "description": "File Program.cs \r\n>> dotnet run --project IDisp/IDisp.csproj ", diff --git a/v2/rscg_examples/serde/description.json b/v2/rscg_examples/serde/description.json new file mode 100644 index 000000000..a9a987b67 --- /dev/null +++ b/v2/rscg_examples/serde/description.json @@ -0,0 +1,22 @@ +{ + "generator":{ + "name":"serde", + "nuget":[ + "https://www.nuget.org/packages/serde/" + ], + "link":"https://github.com/serdedotnet/serde", + "author":"Andy Gocke", + "source":"https://github.com/serdedotnet/serde" + }, + "data":{ + "goodFor":["Serializing in SERDE format"], + "csprojDemo":"Serializer.csproj", + "csFiles":["Program.cs","Person.cs"], + "excludeDirectoryGenerated":[""], + "includeAdditionalFiles":[""] + }, + "links":{ + "blog":"", + "video":"" + } +} \ No newline at end of file diff --git a/v2/rscg_examples/serde/nuget.txt b/v2/rscg_examples/serde/nuget.txt new file mode 100644 index 000000000..882e74f60 --- /dev/null +++ b/v2/rscg_examples/serde/nuget.txt @@ -0,0 +1 @@ +Package Description \ No newline at end of file diff --git a/v2/rscg_examples/serde/readme.txt b/v2/rscg_examples/serde/readme.txt new file mode 100644 index 000000000..455e056c2 --- /dev/null +++ b/v2/rscg_examples/serde/readme.txt @@ -0,0 +1,40 @@ +# Serde.NET + +Serde.NET is a port of the popular [serde.rs](https://serde.rs) Rust ***ser***ialization/***de***serialization +library to .NET. + +For an overview, see [Overview](https://serdedotnet.github.io/overview.html). + +Start by adding the `serde` NuGet package: + +```bash +dotnet add package serde +``` + +To generate serialization/deserialization info for a type, now do the following: +1. Mark the type partial +2. Add the `[GenerateSerde]` attribute + + +```csharp +using Serde; +using Serde.Json; + +string output = JsonSerializer.Serialize(new SampleClass()); + +// prints: {"X":3,"Y":"sample"} +Console.WriteLine(output); + +var deserialized = JsonSerializer.Deserialize(output); + +// prints SampleClass { X = 3, Y = sample } +Console.WriteLine(deserialized); + +[GenerateSerde] +partial record SampleClass +{ + // automatically includes public properties and fields + public int X { get; init; } = 3; + public string Y = "sample"; +} +``` diff --git a/v2/rscg_examples/serde/src/.tours/serde.tour b/v2/rscg_examples/serde/src/.tours/serde.tour new file mode 100644 index 000000000..8d7c7a0c8 --- /dev/null +++ b/v2/rscg_examples/serde/src/.tours/serde.tour @@ -0,0 +1,48 @@ + +{ + "$schema": "https://aka.ms/codetour-schema", + "title": "serde", + "steps": + [ + { + "file": "Serializer/Serializer.csproj", + "description": "First, we add Nuget [serde](https://www.nuget.org/packages/serde/) in csproj ", + "pattern": "serde" + } + + ,{ + "file": "Serializer/Person.cs", + "description": "File Person.cs ", + "pattern": "this is the code" + } + + ,{ + "file": "Serializer/Program.cs", + "description": "File Program.cs \r\n>> dotnet run --project Serializer/Serializer.csproj ", + "pattern": "this is the code" + } + + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerdeProvider.g.cs", + "description": "Generated File 3 from 3 : SerializerDemo.Person.ISerdeProvider.g.cs ", + "line": 1 + } + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerdeInfoProvider.g.cs", + "description": "Generated File 2 from 3 : SerializerDemo.Person.ISerdeInfoProvider.g.cs ", + "line": 1 + } + + ,{ + "file": "Serializer/obj/GX/SerdeGenerator/Serde.SerdeImplRoslynGenerator/SerializerDemo.Person.ISerde.g.cs", + "description": "Generated File 1 from 3 : SerializerDemo.Person.ISerde.g.cs ", + "line": 1 + } + + ], + + "ref": "main" + +} \ No newline at end of file diff --git a/v2/rscg_examples/serde/src/Serializer.sln b/v2/rscg_examples/serde/src/Serializer.sln new file mode 100644 index 000000000..40466f7c7 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serializer", "Serializer\Serializer.csproj", "{7FC58895-BFD9-892B-A3D5-1812858E3D58}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC58895-BFD9-892B-A3D5-1812858E3D58}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {13C14387-12AE-4C73-9EBA-2D145CD7C194} + EndGlobalSection +EndGlobal diff --git a/v2/rscg_examples/serde/src/Serializer/Person.cs b/v2/rscg_examples/serde/src/Serializer/Person.cs new file mode 100644 index 000000000..f73fe75d3 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Person.cs @@ -0,0 +1,13 @@ + +using Serde; + +namespace SerializerDemo; + +[GenerateSerde] +public partial class Person +{ + public int Age { get; set; } + public string Name { get; set; } = string.Empty; + +} + diff --git a/v2/rscg_examples/serde/src/Serializer/Program.cs b/v2/rscg_examples/serde/src/Serializer/Program.cs new file mode 100644 index 000000000..3734c36c2 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Program.cs @@ -0,0 +1,9 @@ +using Serde.Json; +using SerializerDemo; + +Person p = new () { Name= "Andrei Ignat" , Age=55}; +var utf8= JsonSerializer.Serialize(p); +Console.WriteLine(utf8); +var p1 = JsonSerializer.Deserialize(utf8); +Console.WriteLine(p.Name); +Console.WriteLine(p1.Age); \ No newline at end of file diff --git a/v2/rscg_examples/serde/src/Serializer/Serializer.csproj b/v2/rscg_examples/serde/src/Serializer/Serializer.csproj new file mode 100644 index 000000000..656441d26 --- /dev/null +++ b/v2/rscg_examples/serde/src/Serializer/Serializer.csproj @@ -0,0 +1,17 @@ + + + + Exe + net10.0 + enable + enable + + + true + $(BaseIntermediateOutputPath)\GX + + + + + + diff --git a/v2/rscg_examples/serde/video.json b/v2/rscg_examples/serde/video.json new file mode 100644 index 000000000..9a2470715 --- /dev/null +++ b/v2/rscg_examples/serde/video.json @@ -0,0 +1,39 @@ +{ + "scriptName": "serde", + "steps": +[ + {"typeStep":"exec","arg":"clipchamp.exe launch"}, + {"typeStep":"text","arg": "Welcome to Roslyn Examples"}, + {"typeStep":"text","arg":"If you want to see more examples , see List Of RSCG"}, + {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG"}, + {"typeStep":"text","arg": "My name is Andrei Ignat and I am deeply fond of Roslyn Source Code Generator. "}, + +{"typeStep":"text","arg": "Today I will present serde . Serializing in SERDE format ."}, +{"typeStep":"browser","arg":"https://www.nuget.org/packages/serde/"}, +{"typeStep":"text","arg": "The whole example is here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde"}, +{"typeStep":"text","arg": "You can download the code from here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde#download-example-net--c-"}, +{"typeStep":"text","arg":"Here is the code downloaded "}, +{"typeStep":"exec","arg":"explorer.exe /select,D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src\\Serializer.sln"}, +{"typeStep":"text","arg": "So , let's start the project with Visual Studio Code "}, +{"typeStep":"stepvscode","arg": "-n D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src"}, + +{"typeStep":"text","arg": "To use it ,you will put the Nuget serde into the csproj "}, + +{"typeStep":"stepvscode","arg": "-r -g D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\serde\\src\\Serializer\\Serializer.csproj"}, + +{"typeStep":"text","arg": "And now I will show you an example of using serde"}, + +{"typeStep":"hide","arg": "now execute the tour in VSCode"}, +{"typeStep":"tour", "arg": "src/.tours/"}, +{"typeStep":"text","arg":" And I will execute the project"}, +{"typeStep":"showproj", "arg":"Serializer.csproj"}, +{"typeStep":"text","arg":" This concludes the project"}, +{"typeStep":"waitseconds","arg":"30"}, +{"typeStep":"text","arg": "Remember, you can download the code from here"}, +{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde#download-example-net--c-", +SpeakTest=" "}, +{"typeStep":"waitseconds","arg":"30"}, +] +} diff --git a/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md b/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md new file mode 100644 index 000000000..f2488886c --- /dev/null +++ b/v2/rscg_examples_site/docs/Authors/Andy_Gocke.md @@ -0,0 +1,7 @@ +# Author : Andy Gocke + +Number RSCG: 1 + + + 1 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 + diff --git a/v2/rscg_examples_site/docs/Categories/Serializer.md b/v2/rscg_examples_site/docs/Categories/Serializer.md index 60ca9d208..f2d86688a 100644 --- a/v2/rscg_examples_site/docs/Categories/Serializer.md +++ b/v2/rscg_examples_site/docs/Categories/Serializer.md @@ -1,6 +1,6 @@

Serializer

-Number RSCG: 10 +Number RSCG: 11 1 [Csvcsharp](/docs/Csvcsharp) [![Nuget](https://img.shields.io/nuget/dt/Csvcsharp?label=Csvcsharp)](https://www.nuget.org/packages/Csvcsharp/) ![GitHub Repo stars](https://img.shields.io/github/stars/nuskey8/Csv-CSharp?style=social) 2025-10-05 @@ -16,9 +16,11 @@ Number RSCG: 10 7 [Schema](/docs/Schema) [![Nuget](https://img.shields.io/nuget/dt/Schema?label=Schema)](https://www.nuget.org/packages/Schema/) ![GitHub Repo stars](https://img.shields.io/github/stars/MeltyPlayer/Schema?style=social) 2025-08-13 - 8 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 + 8 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 - 9 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + 9 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 - 10 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 + 10 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + + 11 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 \ No newline at end of file diff --git a/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx b/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx index 462a22290..77e2941b8 100644 --- a/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx +++ b/v2/rscg_examples_site/docs/Categories/_PrimitiveSerializer.mdx @@ -14,11 +14,13 @@ 7 [Schema](/docs/Schema) [![Nuget](https://img.shields.io/nuget/dt/Schema?label=Schema)](https://www.nuget.org/packages/Schema/) ![GitHub Repo stars](https://img.shields.io/github/stars/MeltyPlayer/Schema?style=social) 2025-08-13 - 8 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 + 8 [serde](/docs/serde) [![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) ![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) 2026-08-20 - 9 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + 9 [StackXML](/docs/StackXML) [![Nuget](https://img.shields.io/nuget/dt/StackXML?label=StackXML)](https://www.nuget.org/packages/StackXML/) ![GitHub Repo stars](https://img.shields.io/github/stars/ZingBallyhoo/StackXML?style=social) 2025-08-01 - 10 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 + 10 [System.Text.Json](/docs/System.Text.Json) [![Nuget](https://img.shields.io/nuget/dt/System.Text.Json?label=System.Text.Json)](https://www.nuget.org/packages/System.Text.Json/) ![GitHub Repo stars](https://img.shields.io/github/stars/dotnet/runtime?style=social) 2023-04-16 + + 11 [VYaml](/docs/VYaml) [![Nuget](https://img.shields.io/nuget/dt/VYaml?label=VYaml)](https://www.nuget.org/packages/VYaml/) ![GitHub Repo stars](https://img.shields.io/github/stars/hadashiA/VYaml?style=social) 2025-10-03 ### See category diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md b/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md index fe299cf86..736859fb4 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/ReflectionIT.DisposeGenerator.md @@ -605,7 +605,7 @@ This is the CSharp Project that references **ReflectionIT.DisposeGenerator** ```csharp showLineNumbers using IDisposableGeneratorDemo; -//https://github.com/benutomo-dev/RoslynComponents +// https://github.com/sonnemaf/ReflectionIT.DisposeGenerator using (var db = new DALDB()) { Console.WriteLine("before releasing"); @@ -614,13 +614,39 @@ Console.WriteLine("after releasing"); ``` - + - This is the use of **ReflectionIT.DisposeGenerator** in *ConnectionDB.cs* + This is the use of **ReflectionIT.DisposeGenerator** in *DALDB.cs* ```csharp showLineNumbers using ReflectionIT.DisposeGenerator.Attributes; +namespace IDisposableGeneratorDemo; + +[Disposable] +partial class DALDB :IDisposable +{ + [Dispose] + private ConnectionDB cn; + [Dispose] + private ConnectionDB cn1; + + public DALDB() + { + cn = new ConnectionDB(); + cn1=new ConnectionDB(); + } + +} + +``` + + + + + This is the use of **ReflectionIT.DisposeGenerator** in *ConnectionDB.cs* + +```csharp showLineNumbers namespace IDisposableGeneratorDemo; class ConnectionDB : IDisposable { diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/index.md b/v2/rscg_examples_site/docs/RSCG-Examples/index.md index b4b863083..af0412e29 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/index.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/index.md @@ -1,7 +1,7 @@ --- sidebar_position: 30 -title: 279 RSCG list by category -description: 279 RSCG list by category +title: 280 RSCG list by category +description: 280 RSCG list by category slug: /rscg-examples --- @@ -1510,7 +1510,7 @@ import DocCardList from '@theme/DocCardList'; ## Serializer
- Expand Serializer =>examples:10 + Expand Serializer =>examples:11 @@ -1561,6 +1561,11 @@ import DocCardList from '@theme/DocCardList'; [Csvcsharp](/docs/Csvcsharp) + + + +[serde](/docs/serde) +
@@ -2250,6 +2255,8 @@ flowchart LR; Serializer--> Csvcsharp((Csvcsharp)) + Serializer--> serde((serde)) + SignalR--> TypedSignalR.Client((TypedSignalR.Client)) StateMachine--> SuperFluid((SuperFluid)) diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/serde.md b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md new file mode 100644 index 000000000..ec3eac6c7 --- /dev/null +++ b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md @@ -0,0 +1,324 @@ +--- +sidebar_position: 2800 +title: 280 - serde +description: Serializing in SERDE format +slug: /serde +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TOCInline from '@theme/TOCInline'; +import SameCategory from '../Categories/_PrimitiveSerializer.mdx'; + +# serde by Andy Gocke + + + + +## NuGet / site data +[![Nuget](https://img.shields.io/nuget/dt/serde?label=serde)](https://www.nuget.org/packages/serde/) +[![GitHub last commit](https://img.shields.io/github/last-commit/serdedotnet/serde?label=updated)](https://github.com/serdedotnet/serde) +![GitHub Repo stars](https://img.shields.io/github/stars/serdedotnet/serde?style=social) + +## Details + +### Info +:::info + +Name: **serde** + +Package Description + +Author: Andy Gocke + +NuGet: +*https://www.nuget.org/packages/serde/* + + +You can find more details at https://github.com/serdedotnet/serde + +Source: https://github.com/serdedotnet/serde + +::: + +### Author +:::note +Andy Gocke +![Alt text](https://github.com/serdedotnet.png) +::: + +## Original Readme +:::note + +# Serde.NET + +Serde.NET is a port of the popular [serde.rs](https://serde.rs) Rust ***ser***ialization/***de***serialization +library to .NET. + +For an overview, see [Overview](https://serdedotnet.github.io/overview.html). + +Start by adding the `serde` NuGet package: + +```bash +dotnet add package serde +``` + +To generate serialization/deserialization info for a type, now do the following: +1. Mark the type partial +2. Add the `[GenerateSerde]` attribute + + +```csharp +using Serde; +using Serde.Json; + +string output = JsonSerializer.Serialize(new SampleClass()); + +// prints: {"X":3,"Y":"sample"} +Console.WriteLine(output); + +var deserialized = JsonSerializer.Deserialize(output); + +// prints SampleClass \{ X = 3, Y = sample } +Console.WriteLine(deserialized); + +[GenerateSerde] +partial record SampleClass +{ + // automatically includes public properties and fields + public int X \{ get; init; \} = 3; + public string Y = "sample"; +} +``` + + +::: + +### About +:::note + +Serializing in SERDE format + + +::: + +## How to use + +### Example (source csproj, source files) + + + + + +This is the CSharp Project that references **serde** +```xml showLineNumbers {14} + + + + Exe + net10.0 + enable + enable + + + true + $(BaseIntermediateOutputPath)\GX + + + + + + + +``` + + + + + + This is the use of **serde** in *Program.cs* + +```csharp showLineNumbers +using Serde.Json; +using SerializerDemo; + +Person p = new () \{ Name= "Andrei Ignat" , Age=55}; +var utf8= JsonSerializer.Serialize(p); +Console.WriteLine(utf8); +var p1 = JsonSerializer.Deserialize(utf8); +Console.WriteLine(p.Name); +Console.WriteLine(p1.Age); +``` + + + + + This is the use of **serde** in *Person.cs* + +```csharp showLineNumbers + +using Serde; + +namespace SerializerDemo; + +[GenerateSerde] +public partial class Person +{ + public int Age \{ get; set; } + public string Name \{ get; set; \} = string.Empty; + +} + + +``` + + + + +### Generated Files + +Those are taken from $(BaseIntermediateOutputPath)\GX + + + + +```csharp showLineNumbers + +#nullable enable + +using System; +using Serde; + +namespace SerializerDemo; + +partial class Person +{ + sealed partial class _SerdeObj : global::Serde.ISerde + { + global::Serde.ISerdeInfo global::Serde.ISerdeInfoProvider.SerdeInfo => SerializerDemo.Person.s_serdeInfo; + + void global::Serde.ISerialize.Serialize(SerializerDemo.Person value, global::Serde.ISerializer serializer) + { + var _l_info = global::Serde.SerdeInfoProvider.GetInfo(this); + var _l_type = serializer.WriteType(_l_info, 2); + _l_type.WriteI32(_l_info, 0, value.Age); + _l_type.WriteString(_l_info, 1, value.Name); + _l_type.End(_l_info); + } + SerializerDemo.Person Serde.IDeserialize.Deserialize(IDeserializer deserializer) + { + int _l_age = default!; + string _l_name = string.Empty; + + byte _r_assignedValid = 0; + + var _l_serdeInfo = global::Serde.SerdeInfoProvider.GetInfo(this); + var typeDeserialize = deserializer.ReadType(_l_serdeInfo); + while (true) + { + var (_l_index_, _) = typeDeserialize.TryReadIndexWithName(_l_serdeInfo); + if (_l_index_ == Serde.ITypeDeserializer.EndOfType) + { + break; + } + + switch (_l_index_) + { + case 0: + Serde.DeserializeException.ThrowIfDuplicate(_r_assignedValid, 0, _l_serdeInfo); + _l_age = typeDeserialize.ReadI32(_l_serdeInfo, _l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + Serde.DeserializeException.ThrowIfDuplicate(_r_assignedValid, 1, _l_serdeInfo); + _l_name = typeDeserialize.ReadString(_l_serdeInfo, _l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.ITypeDeserializer.IndexNotFound: + typeDeserialize.SkipValue(_l_serdeInfo, _l_index_); + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); + } + } + typeDeserialize.End(_l_serdeInfo); + if ((_r_assignedValid & 0b1) != 0b1) + { + throw Serde.DeserializeException.UnassignedMember(); + } + var newType = new SerializerDemo.Person() { + Age = _l_age, + Name = _l_name, + }; + + return newType; + } + } +} + +``` + + + + +```csharp showLineNumbers + +#nullable enable + +namespace SerializerDemo; + +partial class Person +{ + private static global::Serde.ISerdeInfo s_serdeInfo = Serde.SerdeInfo.MakeCustom( + "Person", + typeof(SerializerDemo.Person).GetCustomAttributesData(), + new global::Serde.SerdeInfo.FieldInfo[] { + new("age", global::Serde.SerdeInfoProvider.GetSerializeInfo()), + new("name", global::Serde.SerdeInfoProvider.GetSerializeInfo()) + } + ); +} + +``` + + + + +```csharp showLineNumbers + +namespace SerializerDemo; + +partial class Person : Serde.ISerdeProvider +{ + static SerializerDemo.Person._SerdeObj global::Serde.ISerdeProvider.Instance \{ get; } + = new SerializerDemo.Person._SerdeObj(); +} + +``` + + + + +## Useful + +### Download Example (.NET C#) + +:::tip + +[Download Example project serde ](/sources/serde.zip) + +::: + + +### Share serde + + + +https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde + + + diff --git a/v2/rscg_examples_site/docs/about.md b/v2/rscg_examples_site/docs/about.md index 1e2688e03..4cd50d1a5 100644 --- a/v2/rscg_examples_site/docs/about.md +++ b/v2/rscg_examples_site/docs/about.md @@ -6,7 +6,7 @@ title: About ## Content You will find here code examples -of 279 Roslyn Source Code Generator (RSCG) +of 280 Roslyn Source Code Generator (RSCG) that can be useful for you. That means, you will write more elegant and concise code - even if the generators code is not always nice to look. ## Are those examples ready for production? diff --git a/v2/rscg_examples_site/docs/indexRSCG.md b/v2/rscg_examples_site/docs/indexRSCG.md index bebbc18da..bbd0fd4e9 100644 --- a/v2/rscg_examples_site/docs/indexRSCG.md +++ b/v2/rscg_examples_site/docs/indexRSCG.md @@ -7,9 +7,9 @@ slug: /List-of-RSCG import useBaseUrl from '@docusaurus/useBaseUrl'; -## 279 RSCG with examples in descending chronological order +## 280 RSCG with examples in descending chronological order -This is the list of 279 ( 16 from Microsoft) RSCG with examples +This is the list of 280 ( 16 from Microsoft) RSCG with examples [See by category](/docs/rscg-examples) [See as json](/exports/RSCG.json) [See as Excel](/exports/RSCG.xlsx) @@ -20,6 +20,7 @@ This is the list of 279 ( 16 from Microsoft) RSCG with examples | No | Name | Date | Category | | --------- | ----- | ---- | -------- | +|280| [serde by Andy Gocke ](/docs/serde)|2026-08-20 => 20 August 2026 | [Serializer](/docs/Categories/Serializer) | |279| [ReflectionIT.DisposeGenerator by Fons Sonnemans ](/docs/ReflectionIT.DisposeGenerator)|2026-08-19 => 19 August 2026 | [Disposer](/docs/Categories/Disposer) | |278| [Atulin.AutoDbSet by Angius Atulin ](/docs/Atulin.AutoDbSet)|2026-08-18 => 18 August 2026 | [EntityFramework](/docs/Categories/EntityFramework) | |277| [Bennewitz.Ninja.AutoVersioning by Brian Bennewitz ](/docs/Bennewitz.Ninja.AutoVersioning)|2026-07-04 => 04 July 2026 | [EnhancementProject](/docs/Categories/EnhancementProject) | diff --git a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js index b693194eb..88b590fad 100644 --- a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js +++ b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js @@ -4,7 +4,7 @@ import styles from './styles.module.css'; const FeatureList = [ { -title: '279 Examples (16 from MSFT)', +title: '280 Examples (16 from MSFT)', Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, description: ( <> diff --git a/v2/rscg_examples_site/static/exports/RSCG.json b/v2/rscg_examples_site/static/exports/RSCG.json index 1f4eda312..ea6b0b197 100644 --- a/v2/rscg_examples_site/static/exports/RSCG.json +++ b/v2/rscg_examples_site/static/exports/RSCG.json @@ -2233,6 +2233,14 @@ "Source": "https://github.com/sonnemaf/ReflectionIT.DisposeGenerator", "Category": "Disposer", "AddedOn": "2026-08-19T00:00:00" + }, + { + "Name": "serde", + "Link": "https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde", + "NuGet": "https://www.nuget.org/packages/serde/", + "Source": "https://github.com/serdedotnet/serde", + "Category": "Serializer", + "AddedOn": "2026-08-20T00:00:00" } ] } \ No newline at end of file diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx index e33512de25ff9756232572e20d5987e5daa86d32..35d96cf19c1935f771504b897627b45a2a4a1799 100644 GIT binary patch delta 880 zcmbPSw6mx_z?+#xgn@y9gJJSa;n@3DlDqZ+c}k274E#X4B1gYGzbHE?KR;WqA~&bE z-<$7{0T1hXp-TQt?IX*xPBW<-5%UuWYIid!6lH($ky9bzbl#tw$j__3zNjiZd|+A) z?@trv#<<|@zdPHqO(v_ZnVqHcUPMoQQMbqUd8aqF)$1KwIAv04yWhttY+o|dH7rCg zOPrh3-mvN^pW&`Ju}HJ&ev$m=>(@`&ud=5o;_$;AHybNdf1AB*;8^Ng5b?})W6({T z_!pPYteN!mw(_6Hj>jT;qc4TG+wF5@`lhw)+?|_^jwhB)vR~OUf8SYVRKK2zZ}>EC ze>s`EyXZ-frU){)`_-xhYfh#)+-gPPv!P}B@(zP z<)qXTrb#|G-Eur9%-Fv<^~A)Y)>RIHM;zMq=5o}j$jcpg{&(Z8nB$Fe4VT@s<_ryF za!#+gygTer=bLEW*ryu0hpUS0lE zGNIiuQ=T>*56@upnfa!G`-k|V?c2Q-rtZ-2k$gigY4 zw?q3J7rN?hxmIjD+gwWGzxl%M{^M5^FI{=5e(qHK(yEKAwH2qWiV1n|cK(ggf0frC zPYPd~4+}a_8r>Xcrp?F+PpgwBnVT?8o;mr1xs1(gNP;acsmw_&1|`=3Z$>5&21M#c z#4$621W+*oY?-WJq0Rv^6%;X({Vl|-L`+a(1>G#vC_tFRz>qq5zJ(^pO{Xkm7%L_} Mw@_nSYz|TY0NPw$ga7~l delta 815 zcmdm4G`Xlgz?+#xgn@y9gQ3<^IQGOgp56O_JS9d327Vx2k)vOpUzDAcpP#K)k(<-o ze=zTm0Z&`J>ZjTz3j{(#qxlqkV;*uky}Go*H|A*K>&N;V7_Z;8`@e0?`}O7B^N)zT zm5E42tmhJt&?(i6k>0WN-{O|oX#K0^M?X55bk)f3sE?A82%4p>d6Vx2@A`~m6UuE} z^Mm9bhklZ|SYo4~W`EK*Fymz}cftSf9zR``B>H*hocrxB(EsE{s;t1qB1ylfeDmzk zMOtfvyt03M?)d+4!M<`a{*-(<=U<|o7Bi<_TAEXM~s)-u&sAA)8+VPHplIL_70Kn7Y^p_w)~Ld zb@#+!iOnn2?Xo4jI{Q0r^4ZM3({f^;UyR3Q&8@z+Zpr7DrN?Ytd#L1mL%nLSO#a0G zPCVy&r+q&dm-g+cxWTic*%r+fv#u0hY`Ff?I$MkT$YsyN3zb*inI+>o4LzI)H*;HzMNE(&3}R+vHJ0`ljCehrfWyDT0ZCK^RC! zJLl(>q~?{xhiqP8#?J^25^&O+yu;jtsn&AxJ98PvH2hM7SEs2u^eGEKg~ zB&8GJ&B!Fe07}M)7|;MFVG!m Date: Wed, 19 Aug 2026 19:21:03 +0300 Subject: [PATCH 2/2] serde final --- .../ReflectionIT.DisposeGenerator.html | 6 ++ v2/book/examples/serde.html | 69 ++++++++++++++++++ v2/book/list.html | 6 +- v2/book/pandocHTML.yaml | 1 + v2/docFind.json | 6 ++ .../docs/RSCG-Examples/serde.md | 2 +- .../static/exports/RSCG.xlsx | Bin 14649 -> 14652 bytes .../static/sources/serde.zip | Bin 0 -> 1522 bytes 8 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 v2/book/examples/serde.html create mode 100644 v2/rscg_examples_site/static/sources/serde.zip diff --git a/v2/book/examples/ReflectionIT.DisposeGenerator.html b/v2/book/examples/ReflectionIT.DisposeGenerator.html index a094f2948..86c57726e 100644 --- a/v2/book/examples/ReflectionIT.DisposeGenerator.html +++ b/v2/book/examples/ReflectionIT.DisposeGenerator.html @@ -28,6 +28,12 @@

This was for me the starting code

I have coded the file Program.cs
+
+ +
+ I have coded the file DALDB.cs +
+

diff --git a/v2/book/examples/serde.html b/v2/book/examples/serde.html new file mode 100644 index 000000000..790c49db6 --- /dev/null +++ b/v2/book/examples/serde.html @@ -0,0 +1,69 @@ + +

RSCG nr 280 : serde

+ +

Info

+Nuget : https://www.nuget.org/packages/serde/ + +

You can find more details at : https://github.com/serdedotnet/serde

+ +

Author :Andy Gocke

+ +

Source: https://github.com/serdedotnet/serde

+ +

About

+ +Serializing in SERDE format + +

+ How to use +

+

+ Add reference to the serde in the csproj +

+ + +

This was for me the starting code

+ +
+ I have coded the file Program.cs +
+ +
+ +
+ I have coded the file Person.cs +
+ +
+

And here are the generated files

+ +
+ The file generated is SerializerDemo.Person.ISerde.g.cs +
+ + +
+ The file generated is SerializerDemo.Person.ISerdeInfoProvider.g.cs +
+ + +
+ The file generated is SerializerDemo.Person.ISerdeProvider.g.cs +
+ + +

+ You can download the code and this page as pdf from + + https://ignatandrei.github.io/RSCG_Examples/v2/docs/serde + +

+ + +

+ You can see the whole list at + + https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG + +

+ diff --git a/v2/book/list.html b/v2/book/list.html index e62f28c0d..2706fd551 100644 --- a/v2/book/list.html +++ b/v2/book/list.html @@ -17,7 +17,7 @@

-This is the list of 279 RSCG with examples => +This is the list of 280 RSCG with examples =>

@@ -1142,6 +1142,10 @@

+ + + +
279 ReflectionIT.DisposeGenerator
280serde
diff --git a/v2/book/pandocHTML.yaml b/v2/book/pandocHTML.yaml index 1b8dd70fa..9f49ca3f9 100644 --- a/v2/book/pandocHTML.yaml +++ b/v2/book/pandocHTML.yaml @@ -293,6 +293,7 @@ input-files: - examples/Bennewitz.Ninja.AutoVersioning.html - examples/Atulin.AutoDbSet.html - examples/ReflectionIT.DisposeGenerator.html +- examples/serde.html # or you may use input-file: with a single value # defaults: diff --git a/v2/docFind.json b/v2/docFind.json index c2e276b50..40d04a261 100644 --- a/v2/docFind.json +++ b/v2/docFind.json @@ -1672,5 +1672,11 @@ "category": "Disposer", "href": "/RSCG_Examples/v2/docs/ReflectionIT.DisposeGenerator/", "body": "Package Description" + }, + { + "title": "serde", + "category": "Serializer", + "href": "/RSCG_Examples/v2/docs/serde/", + "body": "Package Description" } ] \ No newline at end of file diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/serde.md b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md index ec3eac6c7..f07c8077f 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/serde.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/serde.md @@ -49,7 +49,7 @@ Andy Gocke ## Original Readme :::note -# Serde.NET +### Serde.NET Serde.NET is a port of the popular [serde.rs](https://serde.rs) Rust ***ser***ialization/***de***serialization library to .NET. diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx index 35d96cf19c1935f771504b897627b45a2a4a1799..eafea8334645bdedd81b70167b9b7085be5f9c70 100644 GIT binary patch delta 722 zcmdm4w5O;(z?+#xgn@y9gQ0hpaIA_?MEOA=Pl=I%fgea$8$gyiHt|e*Cz2+2w7!kNY=O?0*+#-_76i zM#E%-rk8*O53k-F=^ZM+Kd{6`uYcuL_^MNF;(O-R^;;Vam%4hMOmkVka{;UKy~wV( z|TkJwg9Z{q7%5z{vL?(M^Q z&F!nq|33b_ttr3%hdlqLYmzmp#UCXuP4_qwx%|#d_w5E8H?Mv2*Lv)K{~H^scTdG{ z{C${_sdv`q159y-9H0=G@ml1;W;GLOMghYVV?)bi69Y>_LkpASM6=0(rgC5{eH&Yp#Jj% z!@m9d-tt|~6ge-E`N7X|;!}kSlK1)61s5d#-q3isuKY+~@vQ}Q94ePOm04|zZ+Lkw zJMJ0$jCq&IMmxV*!P3@}TP$DmJykldE%{#3pgz6pvhIWUj(fKbK3Hr%om2Kd)3hVo z1v!s+9_Nc}+|zeIa$1DKyeQV=%ks=aGiUEIdFu68sO69OLUH-?SCl{9d8zJqYW~t4 zmp4z1ozA*$dT(af*GJy|=jLtr&wv_CH}&Q}`~^%65ljpW!azFOIX|x?HE;7=Ga*J! zc(R$i!`uWIl#}0?%P_v1%xxh9;%EY??M#y|FiB|#cr!AIFo4n;130aLLRtfu&On$O uED9sUC-+!LA%c3Hg&0$Y>EuRJ89sy=p!7QVgM|!Z^<-X4HMV8uAk6^78y>F! delta 745 zcmdl}w6mx_z?+#xgn@y9gJJSa;n@3DlDqZ+c}k274E#X4B1gYGzbHE?KR;WqA~&bE z-<$7{0T1hXp-TQt?IX*xPBW<-5%UuWYIid!6lH($ky9bzbl#tw$j__3zNjiZd|+A) z?@trv#<<|@zdPHqO(v_ZnVqHcUPMoQQMbqUd8aqF)$1KwIAv04yWhttY+o|dH7rCg zOPrh3-mvN^pW&`Ju}HJ&ev$m=>(@`&ud=5o;_$;AHybNdf1AB*;8^Ng5b?})W6({T z_!pPYteN!mw(_6Hj>jT;qc4TG+wF5@`lhw)+?|_^jwhB)vR~OUf8SYVRKK2zZ}>EC zGb7^xMyAO#Hy>t-GvojTfnwyf#hW!vq#4aDlMF4>Qj#q#l1wa3QYr=TsUx@^6N;xU@glUq`O}8A+ z2{ZO@PCYTPsCAV?;1P#*y}2B9D)Mp%p8wr=E9Q9PT*GDetT{sinVi#WF7FOI)cGcw zclOt;{^mt{ChoFRndToe>4IP@|GCL83qn?YV2qs?A@ASw+w;Qk@LX!|zv9bccBELt3Yz~*A^0hTullDbtI=A(M}rr!LA zzkul^f{B4a7)VDu=jWBA=51bJCd9}IPf(M0o0|Z`c=AVc8OGO>`7C5W932Z8#x0XQ zE!5>WFrO$RwFzAzjsY0vFyyLDMl#bTm1yZf<_*PCiK$$gvnO*C!FB(+Sl z(3@}fe*gb_ul)Ouzkg1DT_a|^*2>iU-rg6#qN=98lwP>U>*PI-t5r)U{JEt)HSXHA z!=>gTg$#m4b5AdJx3(;syLOZ4v0uHR2|UhCPCU&Pvd6Y3-PHe|DRb>VuU=VBF4<=g8$94E0^o;ak$WO2|@NcGIIlgG+subJsvtSi>Ox@FqB;*Gpo z(OZ6mKW18)^*rg~>nabmO=iWrPvtd4XWGqr^SZmq|M$`JYid8ecyjI(`_F_Qr&QNl z?@PB_6)~CB`anhV*QUSxT32V*uKE6!Mef3(Gkn!gO7>ZNl}#@_Q>`f7@o(|{i<|f) z?(2QJvu^#IbeZ%!yKOIZWh?(!`Txn{jIy8NR|{TiZ1xweKF{#&?uTu{!HTVwx4hK* z?T&5Vo3UokF~y@QK1mJDJ&aC|1(xWXcL+!jx~R0wLUs0JhTUDS|1bu?qj<>-;aL71 zn=E^QQF|DOK@pFLV*P;BqT>8Kz2xH1K0_`hLjl*{2ks>LJzy2%cHAg@Fi7W^MT^5E zUgMidvENd}?s2lsW{`~DW) zJ3l94#fL-o2cA5X+;h|?NUPgyf>vDQ7JrU3re;&^C&34sljmG0d>IgZR@$lCWTtoM zji4Rz`|oN#Gt$#5UTu$X{wJXGEp9ygwF2mD31BJ}MRR^petJ=2F3|ne`>X3S3)A9u zITd6DdaarlURXEJR9`$s!`M)Lv)0xVs;1`h8fQ+6PKaU&Ss1V&VfBRRQR@~gTp6(T z!SorkvsN#7GGltslvyhu%$zqpV$qTXiyzFGmzA9r#eF4gTEvoos7Yyws~L>s5?9I1 z$z(RX?zh-Mc*Q+S`}G#~>Y@63G&ZYTRX5fTWnL03oE6l#kg3g4Z{<-5w}W32W`!+a zFEZk@bhce^*mNyY%wz$*7Pf8YTPdKoRG1hTWKg|^h$Nuz3X1ZxS|@GvJ8U50`rPG} zy^A2Tj;Hm;C2|hAQyPOVHb_MH6iNFCSyxpGez`62L#2*!c`w%#u4C2jFMh4wW`FPA zV%3@HDR0((DtZ;avd1U;nv70bW`b^f&z*^{D{ZeeR0vOgDRnXW+MahiURvBW5!f8= z^3dE?VC51f8}-P?M*}oXDvbD!1y)G#)C8GNJtcB~o0s_7hH3p%b?r8=S6mDYo&SF0 z-i@-BHgj(N+}irsWpmWWr7NXF8#yZ&o&tY8D{m20Hj6 JuvBMY006pgX!QU9 literal 0 HcmV?d00001