Skip to content

Commit

Permalink
Modify Knn-n
Browse files Browse the repository at this point in the history
  • Loading branch information
aiex718 committed Dec 4, 2018
1 parent 2b63e5c commit 9f9a8ab
Show file tree
Hide file tree
Showing 96 changed files with 70 additions and 58 deletions.
Binary file modified .vs/ML_Learning/v15/.suo
Binary file not shown.
Binary file modified .vs/ML_Learning/v15/Server/sqlite3/storage.ide-shm
Binary file not shown.
Binary file modified .vs/ML_Learning/v15/Server/sqlite3/storage.ide-wal
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="KmeansTrainedDataView.cs">
<Compile Include="Views\KmeansTrainedDataView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="KmeansTrainedDataView.Designer.cs">
<Compile Include="Views\KmeansTrainedDataView.Designer.cs">
<DependentUpon>KmeansTrainedDataView.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
Expand All @@ -75,7 +75,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="KmeansTrainedDataView.resx">
<EmbeddedResource Include="Views\KmeansTrainedDataView.resx">
<DependentUpon>KmeansTrainedDataView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
Expand Down
78 changes: 35 additions & 43 deletions HandwritingDigitRecognition/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HandwritingDigitRecognition.Views;

namespace HandwritingDigitRecognition
{
public partial class MainForm : Form
{
const int PenSize = 12;
bool isMouseDown = false;
Point lastPoint;
List<KmeansTrainedDataView> KmeansTrainedDataViews=null;

const int DefaultKnn_K=1000;
const int DefaultKnn_K = 100;
Knn<RawImage28x28> Knn=null;
Kmeans<RawImage28x28>.TrainResult KmeansTrainResult = null;
List<KmeansTrainedDataView> KmeansTrainedDataViews = null;

public MainForm()
{
Expand All @@ -37,28 +37,52 @@ public MainForm(Knn<RawImage28x28> knn=null, Kmeans<RawImage28x28>.TrainResult k
if (knn != null)
{
Knn = knn;
Knn.OnClassify += Knn_OnClassify;
Knn_KValue_Textbox.Text = DefaultKnn_K.ToString();
SetupKnn();
}

if (kmeansTrainResult!=null)
{
KmeansTrainResult = kmeansTrainResult;
KmeansTrainResult.OnClassify += KmeansTrainResult_OnClassify;
KmeansTrainedDataViews = new List<KmeansTrainedDataView>();
SetupKmeans();
}
}
private void SetupKnn()
{
Knn.OnClassify += Knn_OnClassify;
Knn_KValue_Textbox.Text = DefaultKnn_K.ToString();
}

private void SetupKmeans()
{
KmeansTrainResult.OnClassify += KmeansTrainResult_OnClassify;

foreach (var TrainResult in kmeansTrainResult)
//Initial view if null
if (KmeansTrainedDataViews == null)
{
KmeansTrainedDataViews = new List<KmeansTrainedDataView>();
for (int i = 0; i < KmeansTrainResult.Count; i++)
{
var view = new KmeansTrainedDataView();
view.SetValue(TrainResult.GetCenter().ToBitmap(), TrainResult.ClassifiedTag,0);
KmeansTrainedDataViews.Add(view);
KmeansTrainedData_flowPanel.Controls.Add(view);
}
}

//Refresh view
var DataViewsEnum = KmeansTrainedDataViews.GetEnumerator();
foreach (var TrainResult in KmeansTrainResult)
{
if (DataViewsEnum.MoveNext())
{
var CurrentView = DataViewsEnum.Current;
CurrentView.SetValue(TrainResult.GetCenter().ToBitmap(), TrainResult.ClassifiedTag, 0);
}
}
}




//Refresh results
private void KmeansTrainResult_OnClassify(RawImage28x28 NewNode,IEnumerable<VectorCollection<RawImage28x28>> OrderedGroup, string MostTag)
{
Expand Down Expand Up @@ -116,7 +140,6 @@ private void InuptPictureBox_MouseMove(object sender, MouseEventArgs e)
g.FillEllipse(Brushes.Black,new RectangleF(e.X- PenSize/2, e.Y- PenSize/2, PenSize, PenSize));
}
InputPictureBox.Invalidate();
lastPoint = e.Location;
}
}

Expand All @@ -130,7 +153,6 @@ private void InuptPictureBox_MouseUp(object sender, MouseEventArgs e)
//Buttons
private void Load_KemansTrainedData_btn_Click(object sender, EventArgs e)
{
string FilePath = null;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.InitialDirectory = Environment.CurrentDirectory;
Expand All @@ -141,41 +163,11 @@ private void Load_KemansTrainedData_btn_Click(object sender, EventArgs e)
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
//Get the path of specified file
FilePath = openFileDialog.FileName;
}
}

if (FilePath != null)
{
if (KmeansTrainResult == null)
{
KmeansTrainResult = new Kmeans<RawImage28x28>.TrainResult(FilePath);
KmeansTrainResult.OnClassify += KmeansTrainResult_OnClassify;
KmeansTrainedDataViews = new List<KmeansTrainedDataView>();

foreach (var TrainResult in KmeansTrainResult)
{
var view = new KmeansTrainedDataView();
view.SetValue(TrainResult.GetCenter().ToBitmap(), TrainResult.ClassifiedTag, 0);
KmeansTrainedDataViews.Add(view);
KmeansTrainedData_flowPanel.Controls.Add(view);
}
}
else
{
var FilePath = openFileDialog.FileName;
KmeansTrainResult = new Kmeans<RawImage28x28>.TrainResult(FilePath);
KmeansTrainResult.OnClassify += KmeansTrainResult_OnClassify;

var DataViewsEnum = KmeansTrainedDataViews.GetEnumerator();
foreach (var TrainResult in KmeansTrainResult)
{
DataViewsEnum.MoveNext();
var view = DataViewsEnum.Current;
view.SetValue(TrainResult.GetCenter().ToBitmap(), TrainResult.ClassifiedTag, 0);
}
SetupKmeans();
}
}

}

private void Clear_btn_Click(object sender, EventArgs e)
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HandwritingDigitRecognition
namespace HandwritingDigitRecognition.Views
{
public partial class KmeansTrainedDataView : UserControl
{
Expand Down
Binary file not shown.
Binary file not shown.
Binary file modified HandwritingDigitRecognition/bin/Debug/ML_Lib.dll
Binary file not shown.
Binary file modified HandwritingDigitRecognition/bin/Debug/ML_Lib.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified HandwritingDigitRecognition/bin/Release/ML_Lib.dll
Binary file not shown.
Binary file modified HandwritingDigitRecognition/bin/Release/ML_Lib.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a86cad5265fc031aadb7da75ea6755bf4c8a3a29
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Debug\HandwritingDigitRecognition.exe.config
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Debug\HandwritingDigitRecognition.exe
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Debug\HandwritingDigitRecognition.pdb
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.exe
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.pdb
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Debug\ML_Lib.dll
Expand All @@ -18,4 +17,7 @@ C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Debug\Newtonsoft.Json.xml
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.MainForm.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.Properties.Resources.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.csproj.GenerateResource.Cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.KmeansTrainedDataView.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.csprojAssemblyReference.cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.Views.KmeansTrainedDataView.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Debug\HandwritingDigitRecognition.csproj.CopyComplete
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6c24daab62dd1e9a1a0f88c7533b01910d7d46ba
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Release\HandwritingDigitRecognition.exe.config
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Release\HandwritingDigitRecognition.exe
C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Release\HandwritingDigitRecognition.pdb
Expand All @@ -18,4 +17,6 @@ C:\Git\ML_Learning\HandwritingDigitRecognition\bin\Release\Newtonsoft.Json.xml
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.MainForm.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.Properties.Resources.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.csproj.GenerateResource.Cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.KmeansTrainedDataView.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.Views.KmeansTrainedDataView.resources
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\HandwritingDigitRecognition\obj\Release\HandwritingDigitRecognition.csproj.CopyComplete
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Kmeans/bin/Debug/Kmeans.exe
Binary file not shown.
Binary file modified Kmeans/bin/Debug/Kmeans.pdb
Binary file not shown.
Binary file modified Kmeans/bin/Debug/ML_Lib.dll
Binary file not shown.
Binary file modified Kmeans/bin/Debug/ML_Lib.pdb
Binary file not shown.
Binary file modified Kmeans/bin/Release/Kmeans.exe
Binary file not shown.
Binary file modified Kmeans/bin/Release/Kmeans.pdb
Binary file not shown.
Binary file modified Kmeans/bin/Release/ML_Lib.dll
Binary file not shown.
Binary file modified Kmeans/bin/Release/ML_Lib.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions Kmeans/obj/Debug/Kmeans.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f2958d044b199788cd3d71513a8cd584528b8ba7
3 changes: 2 additions & 1 deletion Kmeans/obj/Debug/Kmeans.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ C:\Git\ML_Learning\Kmeans\bin\Debug\OxyPlot.pdb
C:\Git\ML_Learning\Kmeans\bin\Debug\OxyPlot.xml
C:\Git\ML_Learning\Kmeans\obj\Debug\Kmeans.exe
C:\Git\ML_Learning\Kmeans\obj\Debug\Kmeans.pdb
C:\Git\ML_Learning\Kmeans\obj\Debug\Kmeans.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\Kmeans\bin\Debug\Newtonsoft.Json.dll
C:\Git\ML_Learning\Kmeans\bin\Debug\Newtonsoft.Json.pdb
C:\Git\ML_Learning\Kmeans\bin\Debug\Newtonsoft.Json.xml
C:\Git\ML_Learning\Kmeans\obj\Debug\Kmeans.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\Kmeans\obj\Debug\Kmeans.csproj.CopyComplete
Binary file not shown.
Binary file modified Kmeans/obj/Debug/Kmeans.exe
Binary file not shown.
Binary file modified Kmeans/obj/Debug/Kmeans.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions Kmeans/obj/Release/Kmeans.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
43c798a49181488616dc4eac9bd087a643986cc1
4 changes: 3 additions & 1 deletion Kmeans/obj/Release/Kmeans.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ C:\Git\ML_Learning\Kmeans\bin\Release\OxyPlot.pdb
C:\Git\ML_Learning\Kmeans\bin\Release\OxyPlot.xml
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.exe
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.pdb
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\Kmeans\bin\Release\Newtonsoft.Json.dll
C:\Git\ML_Learning\Kmeans\bin\Release\Newtonsoft.Json.pdb
C:\Git\ML_Learning\Kmeans\bin\Release\Newtonsoft.Json.xml
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.csprojAssemblyReference.cache
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\Kmeans\obj\Release\Kmeans.csproj.CopyComplete
Binary file not shown.
Binary file not shown.
Binary file modified Kmeans/obj/Release/Kmeans.exe
Binary file not shown.
Binary file modified Kmeans/obj/Release/Kmeans.pdb
Binary file not shown.
Binary file modified Knn/bin/Debug/Knn.exe
Binary file not shown.
Binary file modified Knn/bin/Debug/Knn.pdb
Binary file not shown.
Binary file modified Knn/bin/Debug/ML_Lib.dll
Binary file not shown.
Binary file modified Knn/bin/Debug/ML_Lib.pdb
Binary file not shown.
Binary file modified Knn/bin/Release/Knn.exe
Binary file not shown.
Binary file modified Knn/bin/Release/Knn.pdb
Binary file not shown.
Binary file modified Knn/bin/Release/ML_Lib.dll
Binary file not shown.
Binary file modified Knn/bin/Release/ML_Lib.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions Knn/obj/Debug/Knn.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ae348ca0c12c9fe2b34420308a37086310bb09a4
3 changes: 2 additions & 1 deletion Knn/obj/Debug/Knn.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ C:\Git\ML_Learning\Knn\bin\Debug\OxyPlot.WindowsForms.pdb
C:\Git\ML_Learning\Knn\bin\Debug\OxyPlot.WindowsForms.xml
C:\Git\ML_Learning\Knn\bin\Debug\OxyPlot.pdb
C:\Git\ML_Learning\Knn\bin\Debug\OxyPlot.xml
C:\Git\ML_Learning\Knn\obj\Debug\Knn.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\Knn\bin\Debug\Newtonsoft.Json.dll
C:\Git\ML_Learning\Knn\bin\Debug\Newtonsoft.Json.pdb
C:\Git\ML_Learning\Knn\bin\Debug\Newtonsoft.Json.xml
C:\Git\ML_Learning\Knn\obj\Debug\Knn.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\Knn\obj\Debug\Knn.csproj.CopyComplete
Binary file not shown.
Binary file modified Knn/obj/Debug/Knn.exe
Binary file not shown.
Binary file modified Knn/obj/Debug/Knn.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions Knn/obj/Release/Knn.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f4aa510a41a277ab6f4482e0b3e94dc6f610953a
4 changes: 3 additions & 1 deletion Knn/obj/Release/Knn.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ C:\Git\ML_Learning\Knn\bin\Release\OxyPlot.pdb
C:\Git\ML_Learning\Knn\bin\Release\OxyPlot.xml
C:\Git\ML_Learning\Knn\obj\Release\Knn.exe
C:\Git\ML_Learning\Knn\obj\Release\Knn.pdb
C:\Git\ML_Learning\Knn\obj\Release\Knn.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\Knn\bin\Release\Newtonsoft.Json.dll
C:\Git\ML_Learning\Knn\bin\Release\Newtonsoft.Json.pdb
C:\Git\ML_Learning\Knn\bin\Release\Newtonsoft.Json.xml
C:\Git\ML_Learning\Knn\obj\Release\Knn.csprojAssemblyReference.cache
C:\Git\ML_Learning\Knn\obj\Release\Knn.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\Knn\obj\Release\Knn.csproj.CopyComplete
Binary file added Knn/obj/Release/Knn.csprojAssemblyReference.cache
Binary file not shown.
Binary file not shown.
Binary file modified Knn/obj/Release/Knn.exe
Binary file not shown.
Binary file modified Knn/obj/Release/Knn.pdb
Binary file not shown.
Binary file modified ML_Lib/bin/Debug/ML_Lib.dll
Binary file not shown.
Binary file modified ML_Lib/bin/Debug/ML_Lib.pdb
Binary file not shown.
Binary file modified ML_Lib/bin/Release/ML_Lib.dll
Binary file not shown.
Binary file modified ML_Lib/bin/Release/ML_Lib.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions ML_Lib/obj/Debug/ML_Lib.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f5b5653e7949afdf5d3c4d95a6edba4f2315a48b
4 changes: 3 additions & 1 deletion ML_Lib/obj/Debug/ML_Lib.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.Views.Points2DCollectionsViewer.resou
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.csproj.GenerateResource.Cache
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.dll
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.pdb
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\ML_Lib\bin\Debug\Newtonsoft.Json.dll
C:\Git\ML_Learning\ML_Lib\bin\Debug\Newtonsoft.Json.pdb
C:\Git\ML_Learning\ML_Lib\bin\Debug\Newtonsoft.Json.xml
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.csprojAssemblyReference.cache
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\ML_Lib\obj\Debug\ML_Lib.csproj.CopyComplete
Binary file modified ML_Lib/obj/Debug/ML_Lib.csproj.GenerateResource.Cache
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified ML_Lib/obj/Debug/ML_Lib.dll
Binary file not shown.
Binary file modified ML_Lib/obj/Debug/ML_Lib.pdb
Binary file not shown.
Empty file.
1 change: 1 addition & 0 deletions ML_Lib/obj/Release/ML_Lib.csproj.CoreCompileInputs.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f5b5653e7949afdf5d3c4d95a6edba4f2315a48b
3 changes: 2 additions & 1 deletion ML_Lib/obj/Release/ML_Lib.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.Views.Points2DCollectionsViewer.res
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.csproj.GenerateResource.Cache
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.dll
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.pdb
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.csprojResolveAssemblyReference.cache
C:\Git\ML_Learning\ML_Lib\bin\Release\Newtonsoft.Json.dll
C:\Git\ML_Learning\ML_Lib\bin\Release\Newtonsoft.Json.pdb
C:\Git\ML_Learning\ML_Lib\bin\Release\Newtonsoft.Json.xml
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.csproj.CoreCompileInputs.cache
C:\Git\ML_Learning\ML_Lib\obj\Release\ML_Lib.csproj.CopyComplete
Binary file modified ML_Lib/obj/Release/ML_Lib.csproj.GenerateResource.Cache
Binary file not shown.
Binary file not shown.
Binary file modified ML_Lib/obj/Release/ML_Lib.dll
Binary file not shown.
Binary file modified ML_Lib/obj/Release/ML_Lib.pdb
Binary file not shown.

0 comments on commit 9f9a8ab

Please sign in to comment.