@@ -0,0 +1,361 @@ | |||
### Csharp ### | |||
## Ignore Visual Studio temporary files, build results, and | |||
## files generated by popular Visual Studio add-ons. | |||
## | |||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | |||
# User-specific files | |||
*.rsuser | |||
*.suo | |||
*.user | |||
*.userosscache | |||
*.sln.docstates | |||
# User-specific files (MonoDevelop/Xamarin Studio) | |||
*.userprefs | |||
# Mono auto generated files | |||
mono_crash.* | |||
# Build results | |||
[Dd]ebug/ | |||
[Dd]ebugPublic/ | |||
[Rr]elease/ | |||
[Rr]eleases/ | |||
x64/ | |||
x86/ | |||
[Ww][Ii][Nn]32/ | |||
[Aa][Rr][Mm]/ | |||
[Aa][Rr][Mm]64/ | |||
bld/ | |||
[Bb]in/ | |||
[Oo]bj/ | |||
[Ll]og/ | |||
[Ll]ogs/ | |||
# Visual Studio 2015/2017 cache/options directory | |||
.vs/ | |||
# Uncomment if you have tasks that create the project's static files in wwwroot | |||
#wwwroot/ | |||
# Visual Studio 2017 auto generated files | |||
Generated\ Files/ | |||
# MSTest test Results | |||
[Tt]est[Rr]esult*/ | |||
[Bb]uild[Ll]og.* | |||
# NUnit | |||
*.VisualState.xml | |||
TestResult.xml | |||
nunit-*.xml | |||
# Build Results of an ATL Project | |||
[Dd]ebugPS/ | |||
[Rr]eleasePS/ | |||
dlldata.c | |||
# Benchmark Results | |||
BenchmarkDotNet.Artifacts/ | |||
# .NET Core | |||
project.lock.json | |||
project.fragment.lock.json | |||
artifacts/ | |||
# ASP.NET Scaffolding | |||
ScaffoldingReadMe.txt | |||
# StyleCop | |||
StyleCopReport.xml | |||
# Files built by Visual Studio | |||
*_i.c | |||
*_p.c | |||
*_h.h | |||
*.ilk | |||
*.meta | |||
*.obj | |||
*.iobj | |||
*.pch | |||
*.pdb | |||
*.ipdb | |||
*.pgc | |||
*.pgd | |||
*.rsp | |||
*.sbr | |||
*.tlb | |||
*.tli | |||
*.tlh | |||
*.tmp | |||
*.tmp_proj | |||
*_wpftmp.csproj | |||
*.log | |||
*.vspscc | |||
*.vssscc | |||
.builds | |||
*.pidb | |||
*.svclog | |||
*.scc | |||
# Chutzpah Test files | |||
_Chutzpah* | |||
# Visual C++ cache files | |||
ipch/ | |||
*.aps | |||
*.ncb | |||
*.opendb | |||
*.opensdf | |||
*.sdf | |||
*.cachefile | |||
*.VC.db | |||
*.VC.VC.opendb | |||
# Visual Studio profiler | |||
*.psess | |||
*.vsp | |||
*.vspx | |||
*.sap | |||
# Visual Studio Trace Files | |||
*.e2e | |||
# TFS 2012 Local Workspace | |||
$tf/ | |||
# Guidance Automation Toolkit | |||
*.gpState | |||
# ReSharper is a .NET coding add-in | |||
_ReSharper*/ | |||
*.[Rr]e[Ss]harper | |||
*.DotSettings.user | |||
# TeamCity is a build add-in | |||
_TeamCity* | |||
# DotCover is a Code Coverage Tool | |||
*.dotCover | |||
# AxoCover is a Code Coverage Tool | |||
.axoCover/* | |||
!.axoCover/settings.json | |||
# Coverlet is a free, cross platform Code Coverage Tool | |||
coverage*[.json, .xml, .info] | |||
# Visual Studio code coverage results | |||
*.coverage | |||
*.coveragexml | |||
# NCrunch | |||
_NCrunch_* | |||
.*crunch*.local.xml | |||
nCrunchTemp_* | |||
# MightyMoose | |||
*.mm.* | |||
AutoTest.Net/ | |||
# Web workbench (sass) | |||
.sass-cache/ | |||
# Installshield output folder | |||
[Ee]xpress/ | |||
# DocProject is a documentation generator add-in | |||
DocProject/buildhelp/ | |||
DocProject/Help/*.HxT | |||
DocProject/Help/*.HxC | |||
DocProject/Help/*.hhc | |||
DocProject/Help/*.hhk | |||
DocProject/Help/*.hhp | |||
DocProject/Help/Html2 | |||
DocProject/Help/html | |||
# Click-Once directory | |||
publish/ | |||
# Publish Web Output | |||
*.[Pp]ublish.xml | |||
*.azurePubxml | |||
# Note: Comment the next line if you want to checkin your web deploy settings, | |||
# but database connection strings (with potential passwords) will be unencrypted | |||
*.pubxml | |||
*.publishproj | |||
# Microsoft Azure Web App publish settings. Comment the next line if you want to | |||
# checkin your Azure Web App publish settings, but sensitive information contained | |||
# in these scripts will be unencrypted | |||
PublishScripts/ | |||
# NuGet Packages | |||
*.nupkg | |||
# NuGet Symbol Packages | |||
*.snupkg | |||
# The packages folder can be ignored because of Package Restore | |||
**/[Pp]ackages/* | |||
# except build/, which is used as an MSBuild target. | |||
!**/[Pp]ackages/build/ | |||
# Uncomment if necessary however generally it will be regenerated when needed | |||
#!**/[Pp]ackages/repositories.config | |||
# NuGet v3's project.json files produces more ignorable files | |||
*.nuget.props | |||
*.nuget.targets | |||
# Microsoft Azure Build Output | |||
csx/ | |||
*.build.csdef | |||
# Microsoft Azure Emulator | |||
ecf/ | |||
rcf/ | |||
# Windows Store app package directories and files | |||
AppPackages/ | |||
BundleArtifacts/ | |||
Package.StoreAssociation.xml | |||
_pkginfo.txt | |||
*.appx | |||
*.appxbundle | |||
*.appxupload | |||
# Visual Studio cache files | |||
# files ending in .cache can be ignored | |||
*.[Cc]ache | |||
# but keep track of directories ending in .cache | |||
!?*.[Cc]ache/ | |||
# Others | |||
ClientBin/ | |||
~$* | |||
*~ | |||
*.dbmdl | |||
*.dbproj.schemaview | |||
*.jfm | |||
*.pfx | |||
*.publishsettings | |||
orleans.codegen.cs | |||
# Including strong name files can present a security risk | |||
# (https://github.com/github/gitignore/pull/2483#issue-259490424) | |||
#*.snk | |||
# Since there are multiple workflows, uncomment next line to ignore bower_components | |||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) | |||
#bower_components/ | |||
# RIA/Silverlight projects | |||
Generated_Code/ | |||
# Backup & report files from converting an old project file | |||
# to a newer Visual Studio version. Backup files are not needed, | |||
# because we have git ;-) | |||
_UpgradeReport_Files/ | |||
Backup*/ | |||
UpgradeLog*.XML | |||
UpgradeLog*.htm | |||
ServiceFabricBackup/ | |||
*.rptproj.bak | |||
# SQL Server files | |||
*.mdf | |||
*.ldf | |||
*.ndf | |||
# Business Intelligence projects | |||
*.rdl.data | |||
*.bim.layout | |||
*.bim_*.settings | |||
*.rptproj.rsuser | |||
*- [Bb]ackup.rdl | |||
*- [Bb]ackup ([0-9]).rdl | |||
*- [Bb]ackup ([0-9][0-9]).rdl | |||
# Microsoft Fakes | |||
FakesAssemblies/ | |||
# GhostDoc plugin setting file | |||
*.GhostDoc.xml | |||
# Node.js Tools for Visual Studio | |||
.ntvs_analysis.dat | |||
node_modules/ | |||
# Visual Studio 6 build log | |||
*.plg | |||
# Visual Studio 6 workspace options file | |||
*.opt | |||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) | |||
*.vbw | |||
# Visual Studio LightSwitch build output | |||
**/*.HTMLClient/GeneratedArtifacts | |||
**/*.DesktopClient/GeneratedArtifacts | |||
**/*.DesktopClient/ModelManifest.xml | |||
**/*.Server/GeneratedArtifacts | |||
**/*.Server/ModelManifest.xml | |||
_Pvt_Extensions | |||
# Paket dependency manager | |||
.paket/paket.exe | |||
paket-files/ | |||
# FAKE - F# Make | |||
.fake/ | |||
# CodeRush personal settings | |||
.cr/personal | |||
# Python Tools for Visual Studio (PTVS) | |||
__pycache__/ | |||
*.pyc | |||
# Cake - Uncomment if you are using it | |||
# tools/** | |||
# !tools/packages.config | |||
# Tabs Studio | |||
*.tss | |||
# Telerik's JustMock configuration file | |||
*.jmconfig | |||
# BizTalk build output | |||
*.btp.cs | |||
*.btm.cs | |||
*.odx.cs | |||
*.xsd.cs | |||
# OpenCover UI analysis results | |||
OpenCover/ | |||
# Azure Stream Analytics local run output | |||
ASALocalRun/ | |||
# MSBuild Binary and Structured Log | |||
*.binlog | |||
# NVidia Nsight GPU debugger configuration file | |||
*.nvuser | |||
# MFractors (Xamarin productivity tool) working folder | |||
.mfractor/ | |||
# Local History for Visual Studio | |||
.localhistory/ | |||
# BeatPulse healthcheck temp database | |||
healthchecksdb | |||
# Backup folder for Package Reference Convert tool in Visual Studio 2017 | |||
MigrationBackup/ | |||
# Ionide (cross platform F# VS Code tools) working folder | |||
.ionide/ | |||
# Fody - auto-generated XML schema | |||
FodyWeavers.xsd |
@@ -0,0 +1,9 @@ | |||
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> | |||
<PropertyGroup> | |||
<OutputType>WinExe</OutputType> | |||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||
<UseWindowsForms>true</UseWindowsForms> | |||
</PropertyGroup> | |||
</Project> |
@@ -0,0 +1,60 @@ | |||
| |||
namespace GameOfLife | |||
{ | |||
partial class MainForm | |||
{ | |||
/// <summary> | |||
/// Required designer variable. | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// Clean up any resources being used. | |||
/// </summary> | |||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region Windows Form Designer generated code | |||
/// <summary> | |||
/// Required method for Designer support - do not modify | |||
/// the contents of this method with the code editor. | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.components = new System.ComponentModel.Container(); | |||
this.timer = new System.Windows.Forms.Timer(this.components); | |||
this.SuspendLayout(); | |||
// | |||
// MainForm | |||
// | |||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); | |||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
this.BackColor = System.Drawing.Color.Black; | |||
this.ClientSize = new System.Drawing.Size(800, 450); | |||
this.DoubleBuffered = true; | |||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; | |||
this.Name = "MainForm"; | |||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; | |||
this.Load += new System.EventHandler(this.MainForm_Load); | |||
this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainForm_Paint); | |||
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress); | |||
this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseClick); | |||
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseMove); | |||
this.ResumeLayout(false); | |||
} | |||
#endregion | |||
private System.Windows.Forms.Timer timer; | |||
} | |||
} | |||
@@ -0,0 +1,183 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Drawing; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
using System.Windows.Forms; | |||
namespace GameOfLife | |||
{ | |||
public partial class MainForm : Form | |||
{ | |||
private Point mouseLocation; | |||
private bool[,] newCells; | |||
private bool[,] toggleCells; | |||
private bool[,] oldCells; | |||
private Random random; | |||
private int gridSize = 4; | |||
private int magicCells = 0; | |||
private double density = 0.45; | |||
public MainForm(Rectangle bounds) | |||
{ | |||
InitializeComponent(); | |||
random = new Random(); | |||
Bounds = bounds; | |||
newCells = new bool[bounds.Width / gridSize, bounds.Height / gridSize]; | |||
toggleCells = new bool[bounds.Width / gridSize, bounds.Height / gridSize]; | |||
oldCells = new bool[bounds.Width / gridSize, bounds.Height / gridSize]; | |||
for (var x = 0; x < newCells.GetLength(0); x++) { | |||
for (var y = 0; y < newCells.GetLength(1); y++) { | |||
newCells[x, y] = random.NextDouble() <= density; | |||
oldCells[x, y] = false; | |||
toggleCells[x, y] = true; | |||
} | |||
} | |||
} | |||
private void MainForm_Load(object sender, EventArgs e) | |||
{ | |||
Cursor.Hide(); | |||
TopMost = true; | |||
timer.Interval = 50; | |||
timer.Tick += new EventHandler(timer_Tick); | |||
timer.Start(); | |||
} | |||
private void MainForm_MouseMove(object sender, MouseEventArgs e) | |||
{ | |||
if (!mouseLocation.IsEmpty) | |||
{ | |||
// Terminate if mouse is moved a significant distance | |||
if (Math.Abs(mouseLocation.X - e.X) > 5 || | |||
Math.Abs(mouseLocation.Y - e.Y) > 5) | |||
Application.Exit(); | |||
} | |||
// Update current mouse location | |||
mouseLocation = e.Location; | |||
} | |||
private void MainForm_MouseClick(object sender, MouseEventArgs e) | |||
{ | |||
Application.Exit(); | |||
} | |||
private void MainForm_KeyPress(object sender, KeyPressEventArgs e) | |||
{ | |||
Application.Exit(); | |||
} | |||
private int GetAliveNeighbors(bool[,] cells, int x, int y) { | |||
int prevX = x == cells.GetLowerBound(0) ? cells.GetUpperBound(0) : x - 1; | |||
int nextX = x == cells.GetUpperBound(0) ? cells.GetLowerBound(0) : x + 1; | |||
int prevY = y == cells.GetLowerBound(1) ? cells.GetUpperBound(1) : y - 1; | |||
int nextY = y == cells.GetUpperBound(1) ? cells.GetLowerBound(1) : y + 1; | |||
int aliveNeighbors = 0; | |||
if (cells[prevX, prevY]) { | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[x, prevY]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[nextX, prevY]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[prevX, y]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[nextX, y]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[prevX, nextY]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[x, nextY]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
if (cells[nextX, nextY]) | |||
{ | |||
aliveNeighbors += 1; | |||
} | |||
return aliveNeighbors; | |||
} | |||
private void timer_Tick(object sender, EventArgs e) { | |||
for (var x = 0; x < newCells.GetLength(0); x++) | |||
{ | |||
for (var y = 0; y < newCells.GetLength(1); y++) | |||
{ | |||
oldCells[x, y] = newCells[x, y]; | |||
} | |||
} | |||
for (var x = 0; x < newCells.GetLength(0); x++) | |||
{ | |||
for (var y = 0; y < newCells.GetLength(1); y++) | |||
{ | |||
int neighbors = GetAliveNeighbors(oldCells, x, y); | |||
bool shouldLive = false; | |||
if (oldCells[x, y] && neighbors == 2) | |||
{ | |||
shouldLive = true; | |||
} else if (!oldCells[x, y] && neighbors == 3) { | |||
shouldLive = true; | |||
} | |||
newCells[x, y] = shouldLive; | |||
toggleCells[x, y] = oldCells[x, y] == newCells[x, y]; | |||
} | |||
} | |||
for (var i = 0; i < magicCells; i++) { | |||
int magicX = random.Next(0, newCells.GetUpperBound(0)); | |||
int magicY = random.Next(0, newCells.GetUpperBound(1)); | |||
newCells[magicX, magicY] = true; | |||
toggleCells[magicX, magicY] = oldCells[magicX, magicY] == newCells[magicX, magicY]; | |||
} | |||
Redraw(CreateGraphics()); | |||
} | |||
private void Redraw(Graphics graphics) { | |||
graphics.FillRectangle(Brushes.Black, Bounds); | |||
for (var x = 0; x < newCells.GetLength(0); x++) | |||
{ | |||
for (var y = 0; y < newCells.GetLength(1); y++) | |||
{ | |||
if (newCells[x, y]) | |||
{ | |||
graphics.FillRectangle(Brushes.White, x * gridSize, y * gridSize, gridSize, gridSize); | |||
} | |||
//else if (!newCells[x, y]) { | |||
// graphics.FillRectangle(Brushes.Black, x * gridSize, y * gridSize, gridSize, gridSize); | |||
//} | |||
} | |||
} | |||
} | |||
private void MainForm_Paint(object sender, PaintEventArgs e) | |||
{ | |||
Redraw(e.Graphics); | |||
} | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
<root> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
</root> |
@@ -0,0 +1,70 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Threading.Tasks; | |||
using System.Windows.Forms; | |||
namespace GameOfLife | |||
{ | |||
static class Program | |||
{ | |||
/// <summary> | |||
/// The main entry point for the application. | |||
/// </summary> | |||
[STAThread] | |||
static void Main(string[] args) | |||
{ | |||
Application.SetHighDpiMode(HighDpiMode.SystemAware); | |||
Application.EnableVisualStyles(); | |||
Application.SetCompatibleTextRenderingDefault(false); | |||
if (args.Length > 0) | |||
{ | |||
string firstArgument = args[0].ToLower().Trim(); | |||
string secondArgument = null; | |||
// Handle cases where arguments are separated by colon. | |||
// Examples: /c:1234567 or /P:1234567 | |||
if (firstArgument.Length > 2) | |||
{ | |||
secondArgument = firstArgument.Substring(3).Trim(); | |||
firstArgument = firstArgument.Substring(0, 2); | |||
} | |||
else if (args.Length > 1) | |||
secondArgument = args[1]; | |||
if (firstArgument == "/c") // Configuration mode | |||
{ | |||
// TODO | |||
} | |||
else if (firstArgument == "/p") // Preview mode | |||
{ | |||
// TODO | |||
} | |||
else if (firstArgument == "/s") // Full-screen mode | |||
{ | |||
ShowScreenSaver(); | |||
Application.Run(); | |||
} | |||
else // Undefined argument | |||
{ | |||
MessageBox.Show("Sorry, but the command line argument \"" + firstArgument + | |||
"\" is not valid.", "ScreenSaver", | |||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation); | |||
} | |||
} | |||
else // No arguments - treat like /c | |||
{ | |||
// TODO | |||
} | |||
} | |||
static void ShowScreenSaver() | |||
{ | |||
foreach (Screen screen in Screen.AllScreens) { | |||
MainForm form = new MainForm(screen.Bounds); | |||
form.Show(); | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,8 @@ | |||
{ | |||
"profiles": { | |||
"GameOfLife": { | |||
"commandName": "Project", | |||
"commandLineArgs": "/s" | |||
} | |||
} | |||
} |
@@ -0,0 +1,25 @@ | |||
| |||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||
# Visual Studio Version 16 | |||
VisualStudioVersion = 16.0.31005.135 | |||
MinimumVisualStudioVersion = 10.0.40219.1 | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameOfLife", "GameOfLife\GameOfLife.csproj", "{AED00861-CA7B-4A9E-AD2B-A4232834FC3F}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Any CPU = Debug|Any CPU | |||
Release|Any CPU = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||
{AED00861-CA7B-4A9E-AD2B-A4232834FC3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{AED00861-CA7B-4A9E-AD2B-A4232834FC3F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{AED00861-CA7B-4A9E-AD2B-A4232834FC3F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{AED00861-CA7B-4A9E-AD2B-A4232834FC3F}.Release|Any CPU.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {AF4042B1-D47C-4BDE-9E40-C25006615D66} | |||
EndGlobalSection | |||
EndGlobal |