From 20b138393ab0d441ee6b9e9b1cedbf1d22a2c00c Mon Sep 17 00:00:00 2001
From: qin <a@163.com>
Date: 星期一, 06 五月 2024 14:55:46 +0800
Subject: [PATCH] 冲突解决

---
 Hydraulic/Hydro.Revit2022/Hydro.Revit2022.csproj                   |    4 
 Hydraulic/Hydro.Inp2.2/Hydro.Inp2.2.csproj                         |    6 
 Hydraulic/Hydro.Core/.vs/Hydro.Core.csproj.dtbcache.json           |    2 
 Hydraulic/Hydro.MapView/Template/Template.cs                       |    2 
 Hydraulic/Hydro.HydraulicOptimizer/Hydro.HydraulicOptimizer.csproj |    6 
 Hydro.ClientTool/App.config                                        |   14 
 Hydraulic/Hydro.HydraulicModel/Hydro.HydraulicModel.csproj         |    6 
 Hydraulic/Hydro.MapUI/Map/MapViewer.Designer.cs                    |  187 ++++++---
 Hydro.ClientTool/Program.cs                                        |    2 
 Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs                       |   45 ++
 Hydro.ClientTool/Form2.cs                                          |   46 ++
 Hydraulic/Hydro.CodeProvider/Hydro.CodeProvider.csproj             |    6 
 Hydraulic/Hydro.Core/Hydro.Core.csproj                             |   13 
 Hydraulic/Hydro.MapView/Hydro.MapView.csproj                       |    6 
 Hydraulic/Hydro.Core/Base/NodeCalcModel.cs                         |    6 
 Hydraulic/Hydro.MapView/Base/LinkViewModel.cs                      |    2 
 Hydro.ClientTool/Form1.resx                                        |   48 ++
 Hydraulic/Hydro.Core/Base/LinkCalcModel.cs                         |   15 
 Hydraulic/Hydro.MapView/Base/AreaViewModel.cs                      |    7 
 Hydro.ClientTool/Form1.Designer.cs                                 |   35 +
 Hydraulic/Hydro.MapView/MapViewNetWork.cs                          |    3 
 HydroV1.1.sln                                                      |  266 --------------
 /dev/null                                                          |  131 -------
 Hydraulic/Hydro.Core/packages.config                               |    4 
 Hydraulic/Hydro.MapView/Base/IBaseViewModel.cs                     |    3 
 Hydro.ClientTool/Form2.Designer.cs                                 |   89 ++++
 Hydro.ClientTool/Hydro.ClientTool.csproj                           |   45 ++
 Hydraulic/Hydro.ConfigModel/Hydro.ConfigModel.csproj               |    6 
 Hydro.ClientTool/Form1.cs                                          |    4 
 Hydraulic/Hydro.CommonBase/Hydro.CommonBase.csproj                 |    6 
 Hydraulic/Hydro.CommonBase/Helper/GlobalConfig.cs                  |    3 
 Hydraulic/Hydro.MapUI/WindowsForm/Form_EditFloors.cs               |    2 
 Hydraulic/Hydro.HydraulicOptimizer/WDNModelOptimizer.cs            |    6 
 Hydraulic/Hydro.MapUI/Hydro.MapUI.csproj                           |    6 
 Hydro.ClientTool/Form2.resx                                        |   45 ++
 35 files changed, 542 insertions(+), 535 deletions(-)

diff --git a/Hydraulic/Hydro.CodeProvider/Hydro.CodeProvider.csproj b/Hydraulic/Hydro.CodeProvider/Hydro.CodeProvider.csproj
index f56dd87..1d4a02d 100644
--- a/Hydraulic/Hydro.CodeProvider/Hydro.CodeProvider.csproj
+++ b/Hydraulic/Hydro.CodeProvider/Hydro.CodeProvider.csproj
@@ -18,18 +18,18 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\Debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.CommonBase/Helper/GlobalConfig.cs b/Hydraulic/Hydro.CommonBase/Helper/GlobalConfig.cs
index 3d59ee0..2e48ed2 100644
--- a/Hydraulic/Hydro.CommonBase/Helper/GlobalConfig.cs
+++ b/Hydraulic/Hydro.CommonBase/Helper/GlobalConfig.cs
@@ -26,7 +26,8 @@
         public static string Path 
         { 
             get 
-            { 
+            {
+                if (path == null) path = Directory.GetCurrentDirectory()+"\\";
                 return path; 
             } 
             set 
diff --git a/Hydraulic/Hydro.CommonBase/Hydro.CommonBase.csproj b/Hydraulic/Hydro.CommonBase/Hydro.CommonBase.csproj
index 2a20bcc..25467fd 100644
--- a/Hydraulic/Hydro.CommonBase/Hydro.CommonBase.csproj
+++ b/Hydraulic/Hydro.CommonBase/Hydro.CommonBase.csproj
@@ -20,18 +20,18 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>bin\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.ConfigModel/Hydro.ConfigModel.csproj b/Hydraulic/Hydro.ConfigModel/Hydro.ConfigModel.csproj
index 3fb1173..770fb81 100644
--- a/Hydraulic/Hydro.ConfigModel/Hydro.ConfigModel.csproj
+++ b/Hydraulic/Hydro.ConfigModel/Hydro.ConfigModel.csproj
@@ -21,18 +21,18 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <NoWarn>MSB3305;DV2002;CS0219;CS0162;CS0414;CS016;CS0618;CS0169;CS0649;CS0109;CS3021;CS0168;CS0067</NoWarn>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
     <UseVSHostingProcess>false</UseVSHostingProcess>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
diff --git a/Hydraulic/Hydro.Core/.vs/Hydro.Core.csproj.dtbcache.json b/Hydraulic/Hydro.Core/.vs/Hydro.Core.csproj.dtbcache.json
index ba51f05..0442b58 100644
--- a/Hydraulic/Hydro.Core/.vs/Hydro.Core.csproj.dtbcache.json
+++ b/Hydraulic/Hydro.Core/.vs/Hydro.Core.csproj.dtbcache.json
@@ -1 +1 @@
-{"RootPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\Hydraulic\\Hydro.Core","ProjectFileName":"Hydro.Core.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Base\\BaseModel.cs"},{"SourceFile":"Base\\LinkCalcModel.cs"},{"SourceFile":"Base\\NodeCalcModel.cs"},{"SourceFile":"Common\\CheckModel.cs"},{"SourceFile":"Common\\Coor.cs"},{"SourceFile":"Common\\FlowCurve.cs"},{"SourceFile":"Common\\Parts.cs"},{"SourceFile":"Common\\TimePoint.cs"},{"SourceFile":"Enum\\EpanetEnum.cs"},{"SourceFile":"Enum\\ObjectEnum.cs"},{"SourceFile":"Link\\PipeModel.cs"},{"SourceFile":"Link\\PumpModel.cs"},{"SourceFile":"Link\\ValveModel.cs"},{"SourceFile":"Node\\JunctionModel.cs"},{"SourceFile":"Node\\MeterModel.cs"},{"SourceFile":"Node\\NozzleModel.cs"},{"SourceFile":"Node\\ReservoisModel.cs"},{"SourceFile":"Node\\TankModel.cs"},{"SourceFile":"Geometry_2d\\Line2d.cs"},{"SourceFile":"Geometry_2d\\Point2d.cs"},{"SourceFile":"Geometry_2d\\Vector2d.cs"},{"SourceFile":"Geometry_3d\\Line.cs"},{"SourceFile":"Geometry_2d\\Line2d_Func.cs"},{"SourceFile":"Geometry_3d\\Point_Func.cs"},{"SourceFile":"Geometry_2d\\Boundary2d.cs"},{"SourceFile":"Geometry_3d\\Point.cs"},{"SourceFile":"Geometry_3d\\Polygon.cs"},{"SourceFile":"Geometry_3d\\Vector.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Runtime.Serialization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\bin\\debug\\Hydro.Core.dll","OutputItemRelativePath":"Hydro.Core.dll"},{"OutputItemFullPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\bin\\debug\\Hydro.Core.pdb","OutputItemRelativePath":"Hydro.Core.pdb"}],"CopyToOutputEntries":[]}
\ No newline at end of file
+{"RootPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\Hydraulic\\Hydro.Core","ProjectFileName":"Hydro.Core.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Base\\BaseModel.cs"},{"SourceFile":"Base\\LinkCalcModel.cs"},{"SourceFile":"Base\\NodeCalcModel.cs"},{"SourceFile":"Common\\CheckModel.cs"},{"SourceFile":"Common\\Coor.cs"},{"SourceFile":"Common\\FlowCurve.cs"},{"SourceFile":"Common\\Parts.cs"},{"SourceFile":"Common\\TimePoint.cs"},{"SourceFile":"Enum\\EpanetEnum.cs"},{"SourceFile":"Enum\\ObjectEnum.cs"},{"SourceFile":"Link\\PipeModel.cs"},{"SourceFile":"Link\\PumpModel.cs"},{"SourceFile":"Link\\ValveModel.cs"},{"SourceFile":"Node\\JunctionModel.cs"},{"SourceFile":"Node\\MeterModel.cs"},{"SourceFile":"Node\\NozzleModel.cs"},{"SourceFile":"Node\\ReservoisModel.cs"},{"SourceFile":"Node\\TankModel.cs"},{"SourceFile":"Geometry_2d\\Line2d.cs"},{"SourceFile":"Geometry_2d\\Point2d.cs"},{"SourceFile":"Geometry_2d\\Vector2d.cs"},{"SourceFile":"Geometry_3d\\Line.cs"},{"SourceFile":"Geometry_2d\\Line2d_Func.cs"},{"SourceFile":"Geometry_3d\\Point_Func.cs"},{"SourceFile":"Geometry_2d\\Boundary2d.cs"},{"SourceFile":"Geometry_3d\\Point.cs"},{"SourceFile":"Geometry_3d\\Polygon.cs"},{"SourceFile":"Geometry_3d\\Vector.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Runtime.Serialization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\bin\\debug\\Hydro.Core.dll","OutputItemRelativePath":"Hydro.Core.dll"},{"OutputItemFullPath":"D:\\WorkData\\YiWei\\Hydro\\Hydro.V1.1\\bin\\debug\\Hydro.Core.pdb","OutputItemRelativePath":"Hydro.Core.pdb"}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/Hydraulic/Hydro.Core/Base/LinkCalcModel.cs b/Hydraulic/Hydro.Core/Base/LinkCalcModel.cs
index 122c839..8d345ba 100644
--- a/Hydraulic/Hydro.Core/Base/LinkCalcModel.cs
+++ b/Hydraulic/Hydro.Core/Base/LinkCalcModel.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Linq;
@@ -108,14 +109,16 @@
             }
         }
 
-        
+       
         private NodeCalcModel _StartNode;
+        [JsonIgnore]
         public NodeCalcModel StartNode { 
             get { return _StartNode; } 
             set { _StartNode = value; if (_StartNode != null) this.Node1 = _StartNode.ID; } 
         }
-
+        
         private NodeCalcModel _EndNode;
+        [JsonIgnore]
         public NodeCalcModel EndNode { 
             get { return _EndNode; } 
             set { _EndNode = value; if (_EndNode!=null)this.Node2 = _EndNode.ID; } 
@@ -184,6 +187,12 @@
         [DisplayName("閫変腑")]
         [Browsable(false)]
         public bool Selected { get; set; }
+
+        [Category("4銆佸叾浠栧弬鏁�")]
+        [Description("榧犳爣鎮簬涓婃柟")]
+        [DisplayName("榧犳爣鎮簬涓婃柟")]
+        [Browsable(false)]
+        public bool Hovered { get; set; }
     }
 
 
diff --git a/Hydraulic/Hydro.Core/Base/NodeCalcModel.cs b/Hydraulic/Hydro.Core/Base/NodeCalcModel.cs
index e1e6b72..152baff 100644
--- a/Hydraulic/Hydro.Core/Base/NodeCalcModel.cs
+++ b/Hydraulic/Hydro.Core/Base/NodeCalcModel.cs
@@ -75,5 +75,11 @@
         [Browsable(false)]
         public bool Selected { get; set; }
 
+
+        [Category("4銆佸叾浠栧弬鏁�")]
+        [Description("榧犳爣鎮簬涓婃柟")]
+        [DisplayName("榧犳爣鎮簬涓婃柟")]
+        [Browsable(false)]
+        public bool Hovered { get; set; }
     }
 }
diff --git a/Hydraulic/Hydro.Core/Hydro.Core.csproj b/Hydraulic/Hydro.Core/Hydro.Core.csproj
index 79e0726..121b8a1 100644
--- a/Hydraulic/Hydro.Core/Hydro.Core.csproj
+++ b/Hydraulic/Hydro.Core/Hydro.Core.csproj
@@ -17,22 +17,25 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
@@ -75,6 +78,8 @@
     <Compile Include="Geometry_3d\Vector.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/Hydraulic/Hydro.Core/packages.config b/Hydraulic/Hydro.Core/packages.config
new file mode 100644
index 0000000..e46d5a8
--- /dev/null
+++ b/Hydraulic/Hydro.Core/packages.config
@@ -0,0 +1,4 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
+</packages>
\ No newline at end of file
diff --git a/Hydraulic/Hydro.HydraulicCore/example-networks/Net1.inp b/Hydraulic/Hydro.HydraulicCore/example-networks/Net1.inp
deleted file mode 100644
index 4df5bbf..0000000
--- a/Hydraulic/Hydro.HydraulicCore/example-networks/Net1.inp
+++ /dev/null
@@ -1,178 +0,0 @@
-[TITLE]
- EPANET Example Network 1
-A simple example of modeling chlorine decay. Both bulk and
-wall reactions are included. 
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 10              	710         	0           	                	;
- 11              	710         	150         	                	;
- 12              	700         	150         	                	;
- 13              	695         	100         	                	;
- 21              	700         	150         	                	;
- 22              	695         	200         	                	;
- 23              	690         	150         	                	;
- 31              	700         	100         	                	;
- 32              	710         	100         	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
- 9               	800         	                	;
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 2               	850         	120         	100         	150         	50.5        	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 10              	10              	11              	10530       	18          	100         	0           	Open  	;
- 11              	11              	12              	5280        	14          	100         	0           	Open  	;
- 12              	12              	13              	5280        	10          	100         	0           	Open  	;
- 21              	21              	22              	5280        	10          	100         	0           	Open  	;
- 22              	22              	23              	5280        	12          	100         	0           	Open  	;
- 31              	31              	32              	5280        	6           	100         	0           	Open  	;
- 110             	2               	12              	200         	18          	100         	0           	Open  	;
- 111             	11              	21              	5280        	10          	100         	0           	Open  	;
- 112             	12              	22              	5280        	12          	100         	0           	Open  	;
- 113             	13              	23              	5280        	8           	100         	0           	Open  	;
- 121             	21              	31              	5280        	8           	100         	0           	Open  	;
- 122             	22              	32              	5280        	6           	100         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
- 9               	9               	10              	HEAD 1	;
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
-
-[PATTERNS]
-;ID              	Multipliers
-;Demand Pattern
- 1               	1.0         	1.2         	1.4         	1.6         	1.4         	1.2         
- 1               	1.0         	0.8         	0.6         	0.4         	0.6         	0.8         
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-;PUMP: Pump Curve for Pump 9
- 1               	1500        	250         
-
-[CONTROLS]
- LINK 9 OPEN IF NODE 2 BELOW 110
- LINK 9 CLOSED IF NODE 2 ABOVE 140
-
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
- 10              	0.5
- 11              	0.5
- 12              	0.5
- 13              	0.5
- 21              	0.5
- 22              	0.5
- 23              	0.5
- 31              	0.5
- 32              	0.5
- 9               	1.0
- 2               	1.0
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	-.5
- Global Wall           	-1
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	24:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	2:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	12 am
- Statistic          	None
-
-[REPORT]
- Status             	Yes
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Chlorine mg/L
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 10              	20.00           	70.00           
- 11              	30.00           	70.00           
- 12              	50.00           	70.00           
- 13              	70.00           	70.00           
- 21              	30.00           	40.00           
- 22              	50.00           	40.00           
- 23              	70.00           	40.00           
- 31              	30.00           	10.00           
- 32              	50.00           	10.00           
- 9               	10.00           	70.00           
- 2               	50.00           	90.00           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 6.99             73.63            "Source"                 
- 13.48            68.13            "Pump"                 
- 43.85            91.21            "Tank"                 
-
-[BACKDROP]
- DIMENSIONS     	7.00            	6.00            	73.00           	94.00           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/example-networks/Net2.inp b/Hydraulic/Hydro.HydraulicCore/example-networks/Net2.inp
deleted file mode 100644
index 9f53e62..0000000
--- a/Hydraulic/Hydro.HydraulicCore/example-networks/Net2.inp
+++ /dev/null
@@ -1,309 +0,0 @@
-[TITLE]
-EPANET Example Network 2
-Example of modeling a 55-hour fluoride tracer study.
-Measured fluoride data is contained in the file Net2-FL.dat
-and should be registered with the project to produce a
-Calibration Report (select Calibration Data from the Project
-menu).
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 1               	50          	-694.4      	2               	;
- 2               	100         	8           	                	;
- 3               	60          	14          	                	;
- 4               	60          	8           	                	;
- 5               	100         	8           	                	;
- 6               	125         	5           	                	;
- 7               	160         	4           	                	;
- 8               	110         	9           	                	;
- 9               	180         	14          	                	;
- 10              	130         	5           	                	;
- 11              	185         	34.78       	                	;
- 12              	210         	16          	                	;
- 13              	210         	2           	                	;
- 14              	200         	2           	                	;
- 15              	190         	2           	                	;
- 16              	150         	20          	                	;
- 17              	180         	20          	                	;
- 18              	100         	20          	                	;
- 19              	150         	5           	                	;
- 20              	170         	19          	                	;
- 21              	150         	16          	                	;
- 22              	200         	10          	                	;
- 23              	230         	8           	                	;
- 24              	190         	11          	                	;
- 25              	230         	6           	                	;
- 27              	130         	8           	                	;
- 28              	110         	0           	                	;
- 29              	110         	7           	                	;
- 30              	130         	3           	                	;
- 31              	190         	17          	                	;
- 32              	110         	17          	                	;
- 33              	180         	1.5         	                	;
- 34              	190         	1.5         	                	;
- 35              	110         	0           	                	;
- 36              	110         	1           	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 26              	235         	56.7        	50          	70          	50          	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 1               	1               	2               	2400        	12          	100         	0           	Open  	;
- 2               	2               	5               	800         	12          	100         	0           	Open  	;
- 3               	2               	3               	1300        	8           	100         	0           	Open  	;
- 4               	3               	4               	1200        	8           	100         	0           	Open  	;
- 5               	4               	5               	1000        	12          	100         	0           	Open  	;
- 6               	5               	6               	1200        	12          	100         	0           	Open  	;
- 7               	6               	7               	2700        	12          	100         	0           	Open  	;
- 8               	7               	8               	1200        	12          	140         	0           	Open  	;
- 9               	7               	9               	400         	12          	100         	0           	Open  	;
- 10              	8               	10              	1000        	8           	140         	0           	Open  	;
- 11              	9               	11              	700         	12          	100         	0           	Open  	;
- 12              	11              	12              	1900        	12          	100         	0           	Open  	;
- 13              	12              	13              	600         	12          	100         	0           	Open  	;
- 14              	13              	14              	400         	12          	100         	0           	Open  	;
- 15              	14              	15              	300         	12          	100         	0           	Open  	;
- 16              	13              	16              	1500        	8           	100         	0           	Open  	;
- 17              	15              	17              	1500        	8           	100         	0           	Open  	;
- 18              	16              	17              	600         	8           	100         	0           	Open  	;
- 19              	17              	18              	700         	12          	100         	0           	Open  	;
- 20              	18              	32              	350         	12          	100         	0           	Open  	;
- 21              	16              	19              	1400        	8           	100         	0           	Open  	;
- 22              	14              	20              	1100        	12          	100         	0           	Open  	;
- 23              	20              	21              	1300        	8           	100         	0           	Open  	;
- 24              	21              	22              	1300        	8           	100         	0           	Open  	;
- 25              	20              	22              	1300        	8           	100         	0           	Open  	;
- 26              	24              	23              	600         	12          	100         	0           	Open  	;
- 27              	15              	24              	250         	12          	100         	0           	Open  	;
- 28              	23              	25              	300         	12          	100         	0           	Open  	;
- 29              	25              	26              	200         	12          	100         	0           	Open  	;
- 30              	25              	31              	600         	12          	100         	0           	Open  	;
- 31              	31              	27              	400         	8           	100         	0           	Open  	;
- 32              	27              	29              	400         	8           	100         	0           	Open  	;
- 34              	29              	28              	700         	8           	100         	0           	Open  	;
- 35              	22              	33              	1000        	8           	100         	0           	Open  	;
- 36              	33              	34              	400         	8           	100         	0           	Open  	;
- 37              	32              	19              	500         	8           	100         	0           	Open  	;
- 38              	29              	35              	500         	8           	100         	0           	Open  	;
- 39              	35              	30              	1000        	8           	100         	0           	Open  	;
- 40              	28              	35              	700         	8           	100         	0           	Open  	;
- 41              	28              	36              	300         	8           	100         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
-
-[PATTERNS]
-;ID              	Multipliers
-;Demand Pattern
- 1               	1.26        	1.04        	.97         	.97         	.89         	1.19        
- 1               	1.28        	.67         	.67         	1.34        	2.46        	.97         
- 1               	.92         	.68         	1.43        	.61         	.31         	.78         
- 1               	.37         	.67         	1.26        	1.56        	1.19        	1.26        
- 1               	.6          	1.1         	1.03        	.73         	.88         	1.06        
- 1               	.99         	1.72        	1.12        	1.34        	1.12        	.97         
- 1               	1.04        	1.15        	.91         	.61         	.68         	.46         
- 1               	.51         	.74         	1.12        	1.34        	1.26        	.97         
- 1               	.82         	1.37        	1.03        	.81         	.88         	.81         
- 1               	.81         
-;Pump Station Outflow Pattern
- 2               	.96         	.96         	.96         	.96         	.96         	.96         
- 2               	.62         	0           	0           	0           	0           	0           
- 2               	.8          	1           	1           	1           	1           	.15         
- 2               	0           	0           	0           	0           	0           	0           
- 2               	.55         	.92         	.92         	.92         	.92         	.9          
- 2               	.9          	.45         	0           	0           	0           	0           
- 2               	0           	.7          	1           	1           	1           	1           
- 2               	.2          	0           	0           	0           	0           	0           
- 2               	0           	.74         	.92         	.92         	.92         	.92         
- 2               	.92         
-;Pump Station Fluoride Pattern 
- 3               	.98         	1.02        	1.05        	.99         	.64         	.46         
- 3               	.35         	.35         	.35         	.35         	.35         	.35         
- 3               	.17         	.17         	.13         	.13         	.13         	.15         
- 3               	.15         	.15         	.15         	.15         	.15         	.15         
- 3               	.15         	.12         	.1          	.08         	.11         	.09         
- 3               	.09         	.08         	.08         	.08         	.08         	.08         
- 3               	.08         	.09         	.07         	.07         	.09         	.09         
- 3               	.09         	.09         	.09         	.09         	.09         	.09         
- 3               	.09         	.08         	.35         	.72         	.82         	.92         
- 3               	1           
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-
-[CONTROLS]
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
- 1               	1.0
- 2               	1.0
- 3               	1.0
- 4               	1.0
- 5               	1.0
- 6               	1.0
- 7               	1.0
- 8               	1.0
- 9               	1.0
- 10              	1.0
- 11              	1.0
- 12              	1.0
- 13              	1.0
- 14              	1.0
- 15              	1.0
- 16              	1.0
- 17              	1.0
- 18              	1.0
- 19              	1.0
- 20              	1.0
- 21              	1.0
- 22              	1.0
- 23              	1.0
- 24              	1.0
- 25              	1.0
- 27              	1.0
- 28              	1.0
- 29              	1.0
- 30              	1.0
- 31              	1.0
- 32              	1.0
- 33              	1.0
- 34              	1.0
- 35              	1.0
- 36              	1.0
- 26              	1.0
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
- 1               	CONCEN      	1.0         	3
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	0.0
- Global Wall           	0.0
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	55:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	1:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	8 am
- Statistic          	None
-
-[REPORT]
- Status             	No
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Fluoride mg/L
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 1               	21.00           	4.00            
- 2               	19.00           	20.00           
- 3               	11.00           	21.00           
- 4               	14.00           	28.00           
- 5               	19.00           	25.00           
- 6               	28.00           	23.00           
- 7               	36.00           	39.00           
- 8               	38.00           	30.00           
- 9               	36.00           	42.00           
- 10              	37.00           	23.00           
- 11              	37.00           	49.00           
- 12              	39.00           	60.00           
- 13              	38.00           	64.00           
- 14              	38.00           	66.00           
- 15              	37.00           	69.00           
- 16              	27.00           	65.00           
- 17              	27.00           	69.00           
- 18              	23.00           	68.00           
- 19              	21.00           	59.00           
- 20              	45.00           	68.00           
- 21              	51.00           	62.00           
- 22              	54.00           	69.00           
- 23              	35.00           	74.00           
- 24              	37.00           	71.00           
- 25              	35.00           	76.00           
- 27              	39.00           	87.00           
- 28              	49.00           	85.00           
- 29              	42.00           	86.00           
- 30              	47.00           	80.00           
- 31              	37.00           	80.00           
- 32              	23.00           	64.00           
- 33              	56.00           	73.00           
- 34              	56.00           	77.00           
- 35              	43.00           	81.00           
- 36              	53.00           	87.00           
- 26              	33.00           	76.00           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 24.00            7.00             "Pump"                 
- 24.00            4.00             "Station"                 
- 26.76            77.42            "Tank"                 
-
-[BACKDROP]
- DIMENSIONS     	8.75            	-0.15           	58.25           	91.15           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/example-networks/Net3.inp b/Hydraulic/Hydro.HydraulicCore/example-networks/Net3.inp
deleted file mode 100644
index 3be1e96..0000000
--- a/Hydraulic/Hydro.HydraulicCore/example-networks/Net3.inp
+++ /dev/null
@@ -1,481 +0,0 @@
-[TITLE]
-EPANET Example Network 3
-Example showing how the percent of Lake water in a dual-source 
-system changes over time.
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 10              	147         	0           	                	;
- 15              	32          	1           	3               	;
- 20              	129         	0           	                	;
- 35              	12.5        	1           	4               	;
- 40              	131.9       	0           	                	;
- 50              	116.5       	0           	                	;
- 60              	0           	0           	                	;
- 601             	0           	0           	                	;
- 61              	0           	0           	                	;
- 101             	42          	189.95      	                	;
- 103             	43          	133.2       	                	;
- 105             	28.5        	135.37      	                	;
- 107             	22          	54.64       	                	;
- 109             	20.3        	231.4       	                	;
- 111             	10          	141.94      	                	;
- 113             	2           	20.01       	                	;
- 115             	14          	52.1        	                	;
- 117             	13.6        	117.71      	                	;
- 119             	2           	176.13      	                	;
- 120             	0           	0           	                	;
- 121             	-2          	41.63       	                	;
- 123             	11          	1           	2               	;
- 125             	11          	45.6        	                	;
- 127             	56          	17.66       	                	;
- 129             	51          	0           	                	;
- 131             	6           	42.75       	                	;
- 139             	31          	5.89        	                	;
- 141             	4           	9.85        	                	;
- 143             	-4.5        	6.2         	                	;
- 145             	1           	27.63       	                	;
- 147             	18.5        	8.55        	                	;
- 149             	16          	27.07       	                	;
- 151             	33.5        	144.48      	                	;
- 153             	66.2        	44.17       	                	;
- 157             	13.1        	51.79       	                	;
- 159             	6           	41.32       	                	;
- 161             	4           	15.8        	                	;
- 163             	5           	9.42        	                	;
- 164             	5           	0           	                	;
- 166             	-2          	2.6         	                	;
- 167             	-5          	14.56       	                	;
- 169             	-5          	0           	                	;
- 171             	-4          	39.34       	                	;
- 173             	-4          	0           	                	;
- 177             	8           	58.17       	                	;
- 179             	8           	0           	                	;
- 181             	8           	0           	                	;
- 183             	11          	0           	                	;
- 184             	16          	0           	                	;
- 185             	16          	25.65       	                	;
- 187             	12.5        	0           	                	;
- 189             	4           	107.92      	                	;
- 191             	25          	81.9        	                	;
- 193             	18          	71.31       	                	;
- 195             	15.5        	0           	                	;
- 197             	23          	17.04       	                	;
- 199             	-2          	119.32      	                	;
- 201             	0.1         	44.61       	                	;
- 203             	2           	1           	5               	;
- 204             	21          	0           	                	;
- 205             	21          	65.36       	                	;
- 206             	1           	0           	                	;
- 207             	9           	69.39       	                	;
- 208             	16          	0           	                	;
- 209             	-2          	0.87        	                	;
- 211             	7           	8.67        	                	;
- 213             	7           	13.94       	                	;
- 215             	7           	92.19       	                	;
- 217             	6           	24.22       	                	;
- 219             	4           	41.32       	                	;
- 225             	8           	22.8        	                	;
- 229             	10.5        	64.18       	                	;
- 231             	5           	16.48       	                	;
- 237             	14          	15.61       	                	;
- 239             	13          	44.61       	                	;
- 241             	13          	0           	                	;
- 243             	14          	4.34        	                	;
- 247             	18          	70.38       	                	;
- 249             	18          	0           	                	;
- 251             	30          	24.16       	                	;
- 253             	36          	54.52       	                	;
- 255             	27          	40.39       	                	;
- 257             	17          	0           	                	;
- 259             	25          	0           	                	;
- 261             	0           	0           	                	;
- 263             	0           	0           	                	;
- 265             	0           	0           	                	;
- 267             	21          	0           	                	;
- 269             	0           	0           	                	;
- 271             	6           	0           	                	;
- 273             	8           	0           	                	;
- 275             	10          	0           	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
- River           	220.0       	                	;
- Lake            	167.0       	                	;
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 1               	131.9       	13.1        	.1          	32.1        	85          	0           	                	;
- 2               	116.5       	23.5        	6.5         	40.3        	50          	0           	                	;
- 3               	129.0       	29.0        	4.0         	35.5        	164         	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 20              	3               	20              	99          	99          	199         	0           	Open  	;
- 40              	1               	40              	99          	99          	199         	0           	Open  	;
- 50              	2               	50              	99          	99          	199         	0           	Open  	;
- 60              	River           	60              	1231        	24          	140         	0           	Open  	;
- 101             	10              	101             	14200       	18          	110         	0           	Open  	;
- 103             	101             	103             	1350        	16          	130         	0           	Open  	;
- 105             	101             	105             	2540        	12          	130         	0           	Open  	;
- 107             	105             	107             	1470        	12          	130         	0           	Open  	;
- 109             	103             	109             	3940        	16          	130         	0           	Open  	;
- 111             	109             	111             	2000        	12          	130         	0           	Open  	;
- 112             	115             	111             	1160        	12          	130         	0           	Open  	;
- 113             	111             	113             	1680        	12          	130         	0           	Open  	;
- 114             	115             	113             	2000        	8           	130         	0           	Open  	;
- 115             	107             	115             	1950        	8           	130         	0           	Open  	;
- 116             	113             	193             	1660        	12          	130         	0           	Open  	;
- 117             	263             	105             	2725        	12          	130         	0           	Open  	;
- 119             	115             	117             	2180        	12          	130         	0           	Open  	;
- 120             	119             	120             	730         	12          	130         	0           	Open  	;
- 121             	120             	117             	1870        	12          	130         	0           	Open  	;
- 122             	121             	120             	2050        	8           	130         	0           	Open  	;
- 123             	121             	119             	2000        	30          	141         	0           	Open  	;
- 125             	123             	121             	1500        	30          	141         	0           	Open  	;
- 129             	121             	125             	930         	24          	130         	0           	Open  	;
- 131             	125             	127             	3240        	24          	130         	0           	Open  	;
- 133             	20              	127             	785         	20          	130         	0           	Open  	;
- 135             	127             	129             	900         	24          	130         	0           	Open  	;
- 137             	129             	131             	6480        	16          	130         	0           	Open  	;
- 145             	129             	139             	2750        	8           	130         	0           	Open  	;
- 147             	139             	141             	2050        	8           	130         	0           	Open  	;
- 149             	143             	141             	1400        	8           	130         	0           	Open  	;
- 151             	15              	143             	1650        	8           	130         	0           	Open  	;
- 153             	145             	141             	3510        	12          	130         	0           	Open  	;
- 155             	147             	145             	2200        	12          	130         	0           	Open  	;
- 159             	147             	149             	880         	12          	130         	0           	Open  	;
- 161             	149             	151             	1020        	8           	130         	0           	Open  	;
- 163             	151             	153             	1170        	12          	130         	0           	Open  	;
- 169             	125             	153             	4560        	8           	130         	0           	Open  	;
- 171             	119             	151             	3460        	12          	130         	0           	Open  	;
- 173             	119             	157             	2080        	30          	141         	0           	Open  	;
- 175             	157             	159             	2910        	30          	141         	0           	Open  	;
- 177             	159             	161             	2000        	30          	141         	0           	Open  	;
- 179             	161             	163             	430         	30          	141         	0           	Open  	;
- 180             	163             	164             	150         	14          	130         	0           	Open  	;
- 181             	164             	166             	490         	14          	130         	0           	Open  	;
- 183             	265             	169             	590         	30          	141         	0           	Open  	;
- 185             	167             	169             	60          	8           	130         	0           	Open  	;
- 186             	187             	204             	99.9        	8           	130         	0           	Open  	;
- 187             	169             	171             	1270        	30          	141         	0           	Open  	;
- 189             	171             	173             	50          	30          	141         	0           	Open  	;
- 191             	271             	171             	760         	24          	130         	0           	Open  	;
- 193             	35              	181             	30          	24          	130         	0           	Open  	;
- 195             	181             	177             	30          	12          	130         	0           	Open  	;
- 197             	177             	179             	30          	12          	130         	0           	Open  	;
- 199             	179             	183             	210         	12          	130         	0           	Open  	;
- 201             	40              	179             	1190        	12          	130         	0           	Open  	;
- 202             	185             	184             	99.9        	8           	130         	0           	Open  	;
- 203             	183             	185             	510         	8           	130         	0           	Open  	;
- 204             	184             	205             	4530.       	12          	130         	0           	Open  	;
- 205             	204             	185             	1325.       	12          	130         	0           	Open  	;
- 207             	189             	183             	1350        	12          	130         	0           	Open  	;
- 209             	189             	187             	500         	8           	130         	0           	Open  	;
- 211             	169             	269             	646         	12          	130         	0           	Open  	;
- 213             	191             	187             	2560        	12          	130         	0           	Open  	;
- 215             	267             	189             	1230        	12          	130         	0           	Open  	;
- 217             	191             	193             	520         	12          	130         	0           	Open  	;
- 219             	193             	195             	360         	12          	130         	0           	Open  	;
- 221             	161             	195             	2300        	8           	130         	0           	Open  	;
- 223             	197             	191             	1150        	12          	130         	0           	Open  	;
- 225             	111             	197             	2790        	12          	130         	0           	Open  	;
- 229             	173             	199             	4000        	24          	141         	0           	Open  	;
- 231             	199             	201             	630         	24          	141         	0           	Open  	;
- 233             	201             	203             	120         	24          	130         	0           	Open  	;
- 235             	199             	273             	725         	12          	130         	0           	Open  	;
- 237             	205             	207             	1200        	12          	130         	0           	Open  	;
- 238             	207             	206             	450         	12          	130         	0           	Open  	;
- 239             	275             	207             	1430        	12          	130         	0           	Open  	;
- 240             	206             	208             	510         	12          	130         	0           	Open  	;
- 241             	208             	209             	885         	12          	130         	0           	Open  	;
- 243             	209             	211             	1210        	16          	130         	0           	Open  	;
- 245             	211             	213             	990         	16          	130         	0           	Open  	;
- 247             	213             	215             	4285        	16          	130         	0           	Open  	;
- 249             	215             	217             	1660        	16          	130         	0           	Open  	;
- 251             	217             	219             	2050        	14          	130         	0           	Open  	;
- 257             	217             	225             	1560        	12          	130         	0           	Open  	;
- 261             	213             	229             	2200        	8           	130         	0           	Open  	;
- 263             	229             	231             	1960        	12          	130         	0           	Open  	;
- 269             	211             	237             	2080        	12          	130         	0           	Open  	;
- 271             	237             	229             	790         	8           	130         	0           	Open  	;
- 273             	237             	239             	510         	12          	130         	0           	Open  	;
- 275             	239             	241             	35          	12          	130         	0           	Open  	;
- 277             	241             	243             	2200        	12          	130         	0           	Open  	;
- 281             	241             	247             	445         	10          	130         	0           	Open  	;
- 283             	239             	249             	430         	12          	130         	0           	Open  	;
- 285             	247             	249             	10          	12          	130         	0           	Open  	;
- 287             	247             	255             	1390        	10          	130         	0           	Open  	;
- 289             	50              	255             	925         	10          	130         	0           	Open  	;
- 291             	255             	253             	1100        	10          	130         	0           	Open  	;
- 293             	255             	251             	1100        	8           	130         	0           	Open  	;
- 295             	249             	251             	1450        	12          	130         	0           	Open  	;
- 297             	120             	257             	645         	8           	130         	0           	Open  	;
- 299             	257             	259             	350         	8           	130         	0           	Open  	;
- 301             	259             	263             	1400        	8           	130         	0           	Open  	;
- 303             	257             	261             	1400        	8           	130         	0           	Open  	;
- 305             	117             	261             	645         	12          	130         	0           	Open  	;
- 307             	261             	263             	350         	12          	130         	0           	Open  	;
- 309             	265             	267             	1580        	8           	130         	0           	Open  	;
- 311             	193             	267             	1170        	12          	130         	0           	Open  	;
- 313             	269             	189             	646         	12          	130         	0           	Open  	;
- 315             	181             	271             	260         	24          	130         	0           	Open  	;
- 317             	273             	275             	2230        	8           	130         	0           	Open  	;
- 319             	273             	205             	645         	12          	130         	0           	Open  	;
- 321             	163             	265             	1200        	30          	141         	0           	Open  	;
- 323             	201             	275             	300         	12          	130         	0           	Open  	;
- 325             	269             	271             	1290        	8           	130         	0           	Open  	;
- 329             	61              	123             	45500       	30          	140         	0           	Open  	;
- 330             	60              	601             	1           	30          	140         	0           	Closed	;
- 333             	601             	61              	1           	30          	140         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
- 10              	Lake            	10              	HEAD 1	;
- 335             	60              	61              	HEAD 2	;
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
- 10              	Closed
-
-[PATTERNS]
-;ID              	Multipliers
-;General Default Demand Pattern
- 1               	1.34        	1.94        	1.46        	1.44        	.76         	.92         
- 1               	.85         	1.07        	.96         	1.1         	1.08        	1.19        
- 1               	1.16        	1.08        	.96         	.83         	.79         	.74         
- 1               	.64         	.64         	.85         	.96         	1.24        	1.67        
-;Demand Pattern for Node 123
- 2               	0           	0           	0           	0           	0           	1219        
- 2               	0           	0           	0           	1866        	1836        	1818        
- 2               	1818        	1822        	1822        	1817        	1824        	1816        
- 2               	1833        	1817        	1830        	1814        	1840        	1859        
-;Demand Pattern for Node 15
- 3               	620         	620         	620         	620         	620         	360         
- 3               	360         	0           	0           	0           	0           	360         
- 3               	360         	360         	360         	360         	0           	0           
- 3               	0           	0           	0           	0           	360         	360         
-;Demand Pattern for Node 35
- 4               	1637        	1706        	1719        	1719        	1791        	1819        
- 4               	1777        	1842        	1815        	1825        	1856        	1801        
- 4               	1819        	1733        	1664        	1620        	1613        	1620        
- 4               	1616        	1647        	1627        	1627        	1671        	1668        
-;Demand Pattern for Node 203
- 5               	4439        	4531        	4511        	4582        	4531        	4582        
- 5               	4572        	4613        	4643        	4643        	4592        	4613        
- 5               	4531        	4521        	4449        	4439        	4449        	4460        
- 5               	4439        	4419        	4368        	4399        	4470        	4480        
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-;PUMP: Pump Curve for Pump 10 (Lake Source)
- 1               	0           	104.        
- 1               	2000.       	92.         
- 1               	4000.       	63.         
-;PUMP: Pump Curve for Pump 335 (River Source)
- 2               	0           	200.        
- 2               	8000.       	138.        
- 2               	14000.      	86.         
-
-[CONTROLS]
-;Lake source operates only part of the day
-Link 10 OPEN AT TIME 1
-Link 10 CLOSED AT TIME 15
-
-;Pump 335 controlled by level in Tank 1
-;When pump is closed, bypass pipe is opened
-Link 335 OPEN IF Node 1 BELOW 17.1
-Link 335 CLOSED IF Node 1 ABOVE 19.1
-Link 330 CLOSED IF Node 1 BELOW 17.1
-Link 330 OPEN IF Node 1 ABOVE 19.1
-
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	0.0
- Global Wall           	0.0
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	24:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	1:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	12 am
- Statistic          	None
-
-[REPORT]
- Status             	Yes
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Trace Lake
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 10              	9.00            	27.85           
- 15              	38.68           	23.76           
- 20              	29.44           	26.91           
- 35              	25.46           	10.52           
- 40              	27.02           	9.81            
- 50              	33.01           	3.01            
- 60              	23.90           	29.94           
- 601             	23.00           	29.49           
- 61              	23.71           	29.03           
- 101             	13.81           	22.94           
- 103             	12.96           	21.31           
- 105             	16.97           	21.28           
- 107             	18.45           	20.46           
- 109             	17.64           	18.92           
- 111             	20.21           	17.53           
- 113             	22.04           	16.61           
- 115             	20.98           	19.18           
- 117             	21.69           	21.28           
- 119             	23.70           	22.76           
- 120             	22.08           	23.10           
- 121             	23.54           	25.50           
- 123             	23.37           	27.31           
- 125             	24.59           	25.64           
- 127             	29.29           	26.40           
- 129             	30.32           	26.39           
- 131             	37.89           	29.55           
- 139             	33.28           	24.54           
- 141             	35.68           	23.08           
- 143             	37.47           	21.97           
- 145             	33.02           	19.29           
- 147             	30.24           	20.38           
- 149             	29.62           	20.74           
- 151             	28.29           	21.39           
- 153             	28.13           	22.63           
- 157             	24.85           	20.16           
- 159             	23.12           	17.50           
- 161             	25.10           	15.28           
- 163             	25.39           	14.98           
- 164             	25.98           	15.14           
- 166             	26.48           	15.13           
- 167             	25.88           	12.98           
- 169             	25.68           	12.74           
- 171             	26.65           	11.80           
- 173             	26.87           	11.59           
- 177             	25.92           	10.59           
- 179             	25.71           	10.40           
- 181             	25.72           	10.74           
- 183             	25.45           	10.18           
- 184             	25.15           	9.52            
- 185             	25.01           	9.67            
- 187             	23.64           	11.04           
- 189             	24.15           	11.37           
- 191             	22.10           	14.07           
- 193             	22.88           	14.35           
- 195             	23.18           	14.72           
- 197             	20.97           	15.18           
- 199             	29.42           	8.44            
- 201             	30.89           	8.57            
- 203             	31.14           	8.89            
- 204             	23.80           	10.90           
- 205             	29.20           	6.46            
- 206             	31.66           	6.64            
- 207             	31.00           	6.61            
- 208             	32.54           	6.81            
- 209             	33.76           	6.59            
- 211             	34.20           	5.54            
- 213             	35.26           	6.16            
- 215             	39.95           	8.73            
- 217             	42.11           	8.67            
- 219             	44.86           	9.32            
- 225             	43.53           	7.38            
- 229             	36.16           	3.49            
- 231             	38.38           	2.54            
- 237             	35.37           	3.08            
- 239             	35.76           	2.31            
- 241             	35.87           	2.11            
- 243             	37.04           	0.00            
- 247             	35.02           	2.05            
- 249             	35.02           	1.81            
- 251             	34.15           	1.10            
- 253             	32.17           	1.88            
- 255             	33.51           	2.45            
- 257             	21.17           	23.32           
- 259             	20.80           	23.40           
- 261             	20.79           	21.45           
- 263             	20.32           	21.57           
- 265             	25.39           	13.60           
- 267             	23.38           	12.95           
- 269             	25.03           	12.14           
- 271             	25.97           	11.00           
- 273             	29.16           	7.38            
- 275             	31.07           	8.29            
- River           	24.15           	31.06           
- Lake            	8.00            	27.53           
- 1               	27.46           	9.84            
- 2               	32.99           	3.45            
- 3               	29.41           	27.27           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 8.00             29.42            "LAKE"                 
- 25.00            31.10            "RIVER"                 
-
-[BACKDROP]
- DIMENSIONS     	6.16            	-1.55           	46.70           	32.61           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/CMakeLists.txt b/Hydraulic/Hydro.HydraulicCore/tests/CMakeLists.txt
deleted file mode 100644
index 995d01f..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/CMakeLists.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# CMakeLists.txt - CMake configuration file for epanet/tests
-#
-# Created: February 13, 2018
-#
-# Modified by: Michael E. Tryby
-#              US EPA ORD/NRMRL
-#
-
-
-# Sets for output directory for executables and libraries.
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-
-if(UNIX)
-    set(CMAKE_CXX_FLAGS "-std=c++11")
-endif(UNIX)
-
-
-add_executable(test_net_builder test_net_builder.cpp)
-target_link_libraries(test_net_builder ${Boost_LIBRARIES} epanet2)
-add_test(NAME test_net_builder
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_net_builder
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data)
-
-
-set(toolkit_test_srcs
-     test_toolkit.cpp
-     test_project.cpp
-     test_hydraulics.cpp
-     test_quality.cpp
-     test_report.cpp
-     test_analysis.cpp
-     test_node.cpp
-     test_demand.cpp
-     test_link.cpp
-#     test_pump.cpp
-     test_pattern.cpp
-     test_curve.cpp
-     test_control.cpp
-     test_overflow.cpp
-     test_pda.cpp
-)
-
-add_executable(test_toolkit ${toolkit_test_srcs})
-target_link_libraries(test_toolkit ${Boost_LIBRARIES} epanet2)
-add_test(NAME test_toolkit
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_toolkit
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data)
-
-
-
-add_executable(test_reent test_reent.cpp)
-
-IF(MSVC)
-    target_link_libraries(test_reent ${Boost_LIBRARIES} epanet2)
-ELSE(TRUE)
-    target_link_libraries(test_reent ${Boost_LIBRARIES} pthread epanet2)
-ENDIF(MSVC)
-
-add_test(NAME test_reent
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_reent
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data)
-
-
-# ctest doesn't like tests added in subdirectories so adding them here
-add_test(NAME test_errormanager
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_errormanager)
-
-add_test(NAME test_filemanager
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_filemanager
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/outfile/data)
-
-add_test(NAME test_output
-    COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_output
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/outfile/data)
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/data/example1.out b/Hydraulic/Hydro.HydraulicCore/tests/data/example1.out
deleted file mode 100644
index 416c98b..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/data/example1.out
+++ /dev/null
Binary files differ
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/data/example_0.inp b/Hydraulic/Hydro.HydraulicCore/tests/data/example_0.inp
deleted file mode 100644
index 3be1e96..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/data/example_0.inp
+++ /dev/null
@@ -1,481 +0,0 @@
-[TITLE]
-EPANET Example Network 3
-Example showing how the percent of Lake water in a dual-source 
-system changes over time.
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 10              	147         	0           	                	;
- 15              	32          	1           	3               	;
- 20              	129         	0           	                	;
- 35              	12.5        	1           	4               	;
- 40              	131.9       	0           	                	;
- 50              	116.5       	0           	                	;
- 60              	0           	0           	                	;
- 601             	0           	0           	                	;
- 61              	0           	0           	                	;
- 101             	42          	189.95      	                	;
- 103             	43          	133.2       	                	;
- 105             	28.5        	135.37      	                	;
- 107             	22          	54.64       	                	;
- 109             	20.3        	231.4       	                	;
- 111             	10          	141.94      	                	;
- 113             	2           	20.01       	                	;
- 115             	14          	52.1        	                	;
- 117             	13.6        	117.71      	                	;
- 119             	2           	176.13      	                	;
- 120             	0           	0           	                	;
- 121             	-2          	41.63       	                	;
- 123             	11          	1           	2               	;
- 125             	11          	45.6        	                	;
- 127             	56          	17.66       	                	;
- 129             	51          	0           	                	;
- 131             	6           	42.75       	                	;
- 139             	31          	5.89        	                	;
- 141             	4           	9.85        	                	;
- 143             	-4.5        	6.2         	                	;
- 145             	1           	27.63       	                	;
- 147             	18.5        	8.55        	                	;
- 149             	16          	27.07       	                	;
- 151             	33.5        	144.48      	                	;
- 153             	66.2        	44.17       	                	;
- 157             	13.1        	51.79       	                	;
- 159             	6           	41.32       	                	;
- 161             	4           	15.8        	                	;
- 163             	5           	9.42        	                	;
- 164             	5           	0           	                	;
- 166             	-2          	2.6         	                	;
- 167             	-5          	14.56       	                	;
- 169             	-5          	0           	                	;
- 171             	-4          	39.34       	                	;
- 173             	-4          	0           	                	;
- 177             	8           	58.17       	                	;
- 179             	8           	0           	                	;
- 181             	8           	0           	                	;
- 183             	11          	0           	                	;
- 184             	16          	0           	                	;
- 185             	16          	25.65       	                	;
- 187             	12.5        	0           	                	;
- 189             	4           	107.92      	                	;
- 191             	25          	81.9        	                	;
- 193             	18          	71.31       	                	;
- 195             	15.5        	0           	                	;
- 197             	23          	17.04       	                	;
- 199             	-2          	119.32      	                	;
- 201             	0.1         	44.61       	                	;
- 203             	2           	1           	5               	;
- 204             	21          	0           	                	;
- 205             	21          	65.36       	                	;
- 206             	1           	0           	                	;
- 207             	9           	69.39       	                	;
- 208             	16          	0           	                	;
- 209             	-2          	0.87        	                	;
- 211             	7           	8.67        	                	;
- 213             	7           	13.94       	                	;
- 215             	7           	92.19       	                	;
- 217             	6           	24.22       	                	;
- 219             	4           	41.32       	                	;
- 225             	8           	22.8        	                	;
- 229             	10.5        	64.18       	                	;
- 231             	5           	16.48       	                	;
- 237             	14          	15.61       	                	;
- 239             	13          	44.61       	                	;
- 241             	13          	0           	                	;
- 243             	14          	4.34        	                	;
- 247             	18          	70.38       	                	;
- 249             	18          	0           	                	;
- 251             	30          	24.16       	                	;
- 253             	36          	54.52       	                	;
- 255             	27          	40.39       	                	;
- 257             	17          	0           	                	;
- 259             	25          	0           	                	;
- 261             	0           	0           	                	;
- 263             	0           	0           	                	;
- 265             	0           	0           	                	;
- 267             	21          	0           	                	;
- 269             	0           	0           	                	;
- 271             	6           	0           	                	;
- 273             	8           	0           	                	;
- 275             	10          	0           	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
- River           	220.0       	                	;
- Lake            	167.0       	                	;
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 1               	131.9       	13.1        	.1          	32.1        	85          	0           	                	;
- 2               	116.5       	23.5        	6.5         	40.3        	50          	0           	                	;
- 3               	129.0       	29.0        	4.0         	35.5        	164         	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 20              	3               	20              	99          	99          	199         	0           	Open  	;
- 40              	1               	40              	99          	99          	199         	0           	Open  	;
- 50              	2               	50              	99          	99          	199         	0           	Open  	;
- 60              	River           	60              	1231        	24          	140         	0           	Open  	;
- 101             	10              	101             	14200       	18          	110         	0           	Open  	;
- 103             	101             	103             	1350        	16          	130         	0           	Open  	;
- 105             	101             	105             	2540        	12          	130         	0           	Open  	;
- 107             	105             	107             	1470        	12          	130         	0           	Open  	;
- 109             	103             	109             	3940        	16          	130         	0           	Open  	;
- 111             	109             	111             	2000        	12          	130         	0           	Open  	;
- 112             	115             	111             	1160        	12          	130         	0           	Open  	;
- 113             	111             	113             	1680        	12          	130         	0           	Open  	;
- 114             	115             	113             	2000        	8           	130         	0           	Open  	;
- 115             	107             	115             	1950        	8           	130         	0           	Open  	;
- 116             	113             	193             	1660        	12          	130         	0           	Open  	;
- 117             	263             	105             	2725        	12          	130         	0           	Open  	;
- 119             	115             	117             	2180        	12          	130         	0           	Open  	;
- 120             	119             	120             	730         	12          	130         	0           	Open  	;
- 121             	120             	117             	1870        	12          	130         	0           	Open  	;
- 122             	121             	120             	2050        	8           	130         	0           	Open  	;
- 123             	121             	119             	2000        	30          	141         	0           	Open  	;
- 125             	123             	121             	1500        	30          	141         	0           	Open  	;
- 129             	121             	125             	930         	24          	130         	0           	Open  	;
- 131             	125             	127             	3240        	24          	130         	0           	Open  	;
- 133             	20              	127             	785         	20          	130         	0           	Open  	;
- 135             	127             	129             	900         	24          	130         	0           	Open  	;
- 137             	129             	131             	6480        	16          	130         	0           	Open  	;
- 145             	129             	139             	2750        	8           	130         	0           	Open  	;
- 147             	139             	141             	2050        	8           	130         	0           	Open  	;
- 149             	143             	141             	1400        	8           	130         	0           	Open  	;
- 151             	15              	143             	1650        	8           	130         	0           	Open  	;
- 153             	145             	141             	3510        	12          	130         	0           	Open  	;
- 155             	147             	145             	2200        	12          	130         	0           	Open  	;
- 159             	147             	149             	880         	12          	130         	0           	Open  	;
- 161             	149             	151             	1020        	8           	130         	0           	Open  	;
- 163             	151             	153             	1170        	12          	130         	0           	Open  	;
- 169             	125             	153             	4560        	8           	130         	0           	Open  	;
- 171             	119             	151             	3460        	12          	130         	0           	Open  	;
- 173             	119             	157             	2080        	30          	141         	0           	Open  	;
- 175             	157             	159             	2910        	30          	141         	0           	Open  	;
- 177             	159             	161             	2000        	30          	141         	0           	Open  	;
- 179             	161             	163             	430         	30          	141         	0           	Open  	;
- 180             	163             	164             	150         	14          	130         	0           	Open  	;
- 181             	164             	166             	490         	14          	130         	0           	Open  	;
- 183             	265             	169             	590         	30          	141         	0           	Open  	;
- 185             	167             	169             	60          	8           	130         	0           	Open  	;
- 186             	187             	204             	99.9        	8           	130         	0           	Open  	;
- 187             	169             	171             	1270        	30          	141         	0           	Open  	;
- 189             	171             	173             	50          	30          	141         	0           	Open  	;
- 191             	271             	171             	760         	24          	130         	0           	Open  	;
- 193             	35              	181             	30          	24          	130         	0           	Open  	;
- 195             	181             	177             	30          	12          	130         	0           	Open  	;
- 197             	177             	179             	30          	12          	130         	0           	Open  	;
- 199             	179             	183             	210         	12          	130         	0           	Open  	;
- 201             	40              	179             	1190        	12          	130         	0           	Open  	;
- 202             	185             	184             	99.9        	8           	130         	0           	Open  	;
- 203             	183             	185             	510         	8           	130         	0           	Open  	;
- 204             	184             	205             	4530.       	12          	130         	0           	Open  	;
- 205             	204             	185             	1325.       	12          	130         	0           	Open  	;
- 207             	189             	183             	1350        	12          	130         	0           	Open  	;
- 209             	189             	187             	500         	8           	130         	0           	Open  	;
- 211             	169             	269             	646         	12          	130         	0           	Open  	;
- 213             	191             	187             	2560        	12          	130         	0           	Open  	;
- 215             	267             	189             	1230        	12          	130         	0           	Open  	;
- 217             	191             	193             	520         	12          	130         	0           	Open  	;
- 219             	193             	195             	360         	12          	130         	0           	Open  	;
- 221             	161             	195             	2300        	8           	130         	0           	Open  	;
- 223             	197             	191             	1150        	12          	130         	0           	Open  	;
- 225             	111             	197             	2790        	12          	130         	0           	Open  	;
- 229             	173             	199             	4000        	24          	141         	0           	Open  	;
- 231             	199             	201             	630         	24          	141         	0           	Open  	;
- 233             	201             	203             	120         	24          	130         	0           	Open  	;
- 235             	199             	273             	725         	12          	130         	0           	Open  	;
- 237             	205             	207             	1200        	12          	130         	0           	Open  	;
- 238             	207             	206             	450         	12          	130         	0           	Open  	;
- 239             	275             	207             	1430        	12          	130         	0           	Open  	;
- 240             	206             	208             	510         	12          	130         	0           	Open  	;
- 241             	208             	209             	885         	12          	130         	0           	Open  	;
- 243             	209             	211             	1210        	16          	130         	0           	Open  	;
- 245             	211             	213             	990         	16          	130         	0           	Open  	;
- 247             	213             	215             	4285        	16          	130         	0           	Open  	;
- 249             	215             	217             	1660        	16          	130         	0           	Open  	;
- 251             	217             	219             	2050        	14          	130         	0           	Open  	;
- 257             	217             	225             	1560        	12          	130         	0           	Open  	;
- 261             	213             	229             	2200        	8           	130         	0           	Open  	;
- 263             	229             	231             	1960        	12          	130         	0           	Open  	;
- 269             	211             	237             	2080        	12          	130         	0           	Open  	;
- 271             	237             	229             	790         	8           	130         	0           	Open  	;
- 273             	237             	239             	510         	12          	130         	0           	Open  	;
- 275             	239             	241             	35          	12          	130         	0           	Open  	;
- 277             	241             	243             	2200        	12          	130         	0           	Open  	;
- 281             	241             	247             	445         	10          	130         	0           	Open  	;
- 283             	239             	249             	430         	12          	130         	0           	Open  	;
- 285             	247             	249             	10          	12          	130         	0           	Open  	;
- 287             	247             	255             	1390        	10          	130         	0           	Open  	;
- 289             	50              	255             	925         	10          	130         	0           	Open  	;
- 291             	255             	253             	1100        	10          	130         	0           	Open  	;
- 293             	255             	251             	1100        	8           	130         	0           	Open  	;
- 295             	249             	251             	1450        	12          	130         	0           	Open  	;
- 297             	120             	257             	645         	8           	130         	0           	Open  	;
- 299             	257             	259             	350         	8           	130         	0           	Open  	;
- 301             	259             	263             	1400        	8           	130         	0           	Open  	;
- 303             	257             	261             	1400        	8           	130         	0           	Open  	;
- 305             	117             	261             	645         	12          	130         	0           	Open  	;
- 307             	261             	263             	350         	12          	130         	0           	Open  	;
- 309             	265             	267             	1580        	8           	130         	0           	Open  	;
- 311             	193             	267             	1170        	12          	130         	0           	Open  	;
- 313             	269             	189             	646         	12          	130         	0           	Open  	;
- 315             	181             	271             	260         	24          	130         	0           	Open  	;
- 317             	273             	275             	2230        	8           	130         	0           	Open  	;
- 319             	273             	205             	645         	12          	130         	0           	Open  	;
- 321             	163             	265             	1200        	30          	141         	0           	Open  	;
- 323             	201             	275             	300         	12          	130         	0           	Open  	;
- 325             	269             	271             	1290        	8           	130         	0           	Open  	;
- 329             	61              	123             	45500       	30          	140         	0           	Open  	;
- 330             	60              	601             	1           	30          	140         	0           	Closed	;
- 333             	601             	61              	1           	30          	140         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
- 10              	Lake            	10              	HEAD 1	;
- 335             	60              	61              	HEAD 2	;
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
- 10              	Closed
-
-[PATTERNS]
-;ID              	Multipliers
-;General Default Demand Pattern
- 1               	1.34        	1.94        	1.46        	1.44        	.76         	.92         
- 1               	.85         	1.07        	.96         	1.1         	1.08        	1.19        
- 1               	1.16        	1.08        	.96         	.83         	.79         	.74         
- 1               	.64         	.64         	.85         	.96         	1.24        	1.67        
-;Demand Pattern for Node 123
- 2               	0           	0           	0           	0           	0           	1219        
- 2               	0           	0           	0           	1866        	1836        	1818        
- 2               	1818        	1822        	1822        	1817        	1824        	1816        
- 2               	1833        	1817        	1830        	1814        	1840        	1859        
-;Demand Pattern for Node 15
- 3               	620         	620         	620         	620         	620         	360         
- 3               	360         	0           	0           	0           	0           	360         
- 3               	360         	360         	360         	360         	0           	0           
- 3               	0           	0           	0           	0           	360         	360         
-;Demand Pattern for Node 35
- 4               	1637        	1706        	1719        	1719        	1791        	1819        
- 4               	1777        	1842        	1815        	1825        	1856        	1801        
- 4               	1819        	1733        	1664        	1620        	1613        	1620        
- 4               	1616        	1647        	1627        	1627        	1671        	1668        
-;Demand Pattern for Node 203
- 5               	4439        	4531        	4511        	4582        	4531        	4582        
- 5               	4572        	4613        	4643        	4643        	4592        	4613        
- 5               	4531        	4521        	4449        	4439        	4449        	4460        
- 5               	4439        	4419        	4368        	4399        	4470        	4480        
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-;PUMP: Pump Curve for Pump 10 (Lake Source)
- 1               	0           	104.        
- 1               	2000.       	92.         
- 1               	4000.       	63.         
-;PUMP: Pump Curve for Pump 335 (River Source)
- 2               	0           	200.        
- 2               	8000.       	138.        
- 2               	14000.      	86.         
-
-[CONTROLS]
-;Lake source operates only part of the day
-Link 10 OPEN AT TIME 1
-Link 10 CLOSED AT TIME 15
-
-;Pump 335 controlled by level in Tank 1
-;When pump is closed, bypass pipe is opened
-Link 335 OPEN IF Node 1 BELOW 17.1
-Link 335 CLOSED IF Node 1 ABOVE 19.1
-Link 330 CLOSED IF Node 1 BELOW 17.1
-Link 330 OPEN IF Node 1 ABOVE 19.1
-
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	0.0
- Global Wall           	0.0
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	24:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	1:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	12 am
- Statistic          	None
-
-[REPORT]
- Status             	Yes
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Trace Lake
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 10              	9.00            	27.85           
- 15              	38.68           	23.76           
- 20              	29.44           	26.91           
- 35              	25.46           	10.52           
- 40              	27.02           	9.81            
- 50              	33.01           	3.01            
- 60              	23.90           	29.94           
- 601             	23.00           	29.49           
- 61              	23.71           	29.03           
- 101             	13.81           	22.94           
- 103             	12.96           	21.31           
- 105             	16.97           	21.28           
- 107             	18.45           	20.46           
- 109             	17.64           	18.92           
- 111             	20.21           	17.53           
- 113             	22.04           	16.61           
- 115             	20.98           	19.18           
- 117             	21.69           	21.28           
- 119             	23.70           	22.76           
- 120             	22.08           	23.10           
- 121             	23.54           	25.50           
- 123             	23.37           	27.31           
- 125             	24.59           	25.64           
- 127             	29.29           	26.40           
- 129             	30.32           	26.39           
- 131             	37.89           	29.55           
- 139             	33.28           	24.54           
- 141             	35.68           	23.08           
- 143             	37.47           	21.97           
- 145             	33.02           	19.29           
- 147             	30.24           	20.38           
- 149             	29.62           	20.74           
- 151             	28.29           	21.39           
- 153             	28.13           	22.63           
- 157             	24.85           	20.16           
- 159             	23.12           	17.50           
- 161             	25.10           	15.28           
- 163             	25.39           	14.98           
- 164             	25.98           	15.14           
- 166             	26.48           	15.13           
- 167             	25.88           	12.98           
- 169             	25.68           	12.74           
- 171             	26.65           	11.80           
- 173             	26.87           	11.59           
- 177             	25.92           	10.59           
- 179             	25.71           	10.40           
- 181             	25.72           	10.74           
- 183             	25.45           	10.18           
- 184             	25.15           	9.52            
- 185             	25.01           	9.67            
- 187             	23.64           	11.04           
- 189             	24.15           	11.37           
- 191             	22.10           	14.07           
- 193             	22.88           	14.35           
- 195             	23.18           	14.72           
- 197             	20.97           	15.18           
- 199             	29.42           	8.44            
- 201             	30.89           	8.57            
- 203             	31.14           	8.89            
- 204             	23.80           	10.90           
- 205             	29.20           	6.46            
- 206             	31.66           	6.64            
- 207             	31.00           	6.61            
- 208             	32.54           	6.81            
- 209             	33.76           	6.59            
- 211             	34.20           	5.54            
- 213             	35.26           	6.16            
- 215             	39.95           	8.73            
- 217             	42.11           	8.67            
- 219             	44.86           	9.32            
- 225             	43.53           	7.38            
- 229             	36.16           	3.49            
- 231             	38.38           	2.54            
- 237             	35.37           	3.08            
- 239             	35.76           	2.31            
- 241             	35.87           	2.11            
- 243             	37.04           	0.00            
- 247             	35.02           	2.05            
- 249             	35.02           	1.81            
- 251             	34.15           	1.10            
- 253             	32.17           	1.88            
- 255             	33.51           	2.45            
- 257             	21.17           	23.32           
- 259             	20.80           	23.40           
- 261             	20.79           	21.45           
- 263             	20.32           	21.57           
- 265             	25.39           	13.60           
- 267             	23.38           	12.95           
- 269             	25.03           	12.14           
- 271             	25.97           	11.00           
- 273             	29.16           	7.38            
- 275             	31.07           	8.29            
- River           	24.15           	31.06           
- Lake            	8.00            	27.53           
- 1               	27.46           	9.84            
- 2               	32.99           	3.45            
- 3               	29.41           	27.27           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 8.00             29.42            "LAKE"                 
- 25.00            31.10            "RIVER"                 
-
-[BACKDROP]
- DIMENSIONS     	6.16            	-1.55           	46.70           	32.61           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/data/example_1.inp b/Hydraulic/Hydro.HydraulicCore/tests/data/example_1.inp
deleted file mode 100644
index 4df5bbf..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/data/example_1.inp
+++ /dev/null
@@ -1,178 +0,0 @@
-[TITLE]
- EPANET Example Network 1
-A simple example of modeling chlorine decay. Both bulk and
-wall reactions are included. 
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 10              	710         	0           	                	;
- 11              	710         	150         	                	;
- 12              	700         	150         	                	;
- 13              	695         	100         	                	;
- 21              	700         	150         	                	;
- 22              	695         	200         	                	;
- 23              	690         	150         	                	;
- 31              	700         	100         	                	;
- 32              	710         	100         	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
- 9               	800         	                	;
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 2               	850         	120         	100         	150         	50.5        	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 10              	10              	11              	10530       	18          	100         	0           	Open  	;
- 11              	11              	12              	5280        	14          	100         	0           	Open  	;
- 12              	12              	13              	5280        	10          	100         	0           	Open  	;
- 21              	21              	22              	5280        	10          	100         	0           	Open  	;
- 22              	22              	23              	5280        	12          	100         	0           	Open  	;
- 31              	31              	32              	5280        	6           	100         	0           	Open  	;
- 110             	2               	12              	200         	18          	100         	0           	Open  	;
- 111             	11              	21              	5280        	10          	100         	0           	Open  	;
- 112             	12              	22              	5280        	12          	100         	0           	Open  	;
- 113             	13              	23              	5280        	8           	100         	0           	Open  	;
- 121             	21              	31              	5280        	8           	100         	0           	Open  	;
- 122             	22              	32              	5280        	6           	100         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
- 9               	9               	10              	HEAD 1	;
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
-
-[PATTERNS]
-;ID              	Multipliers
-;Demand Pattern
- 1               	1.0         	1.2         	1.4         	1.6         	1.4         	1.2         
- 1               	1.0         	0.8         	0.6         	0.4         	0.6         	0.8         
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-;PUMP: Pump Curve for Pump 9
- 1               	1500        	250         
-
-[CONTROLS]
- LINK 9 OPEN IF NODE 2 BELOW 110
- LINK 9 CLOSED IF NODE 2 ABOVE 140
-
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
- 10              	0.5
- 11              	0.5
- 12              	0.5
- 13              	0.5
- 21              	0.5
- 22              	0.5
- 23              	0.5
- 31              	0.5
- 32              	0.5
- 9               	1.0
- 2               	1.0
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	-.5
- Global Wall           	-1
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	24:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	2:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	12 am
- Statistic          	None
-
-[REPORT]
- Status             	Yes
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Chlorine mg/L
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 10              	20.00           	70.00           
- 11              	30.00           	70.00           
- 12              	50.00           	70.00           
- 13              	70.00           	70.00           
- 21              	30.00           	40.00           
- 22              	50.00           	40.00           
- 23              	70.00           	40.00           
- 31              	30.00           	10.00           
- 32              	50.00           	10.00           
- 9               	10.00           	70.00           
- 2               	50.00           	90.00           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 6.99             73.63            "Source"                 
- 13.48            68.13            "Pump"                 
- 43.85            91.21            "Tank"                 
-
-[BACKDROP]
- DIMENSIONS     	7.00            	6.00            	73.00           	94.00           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/data/net1.inp b/Hydraulic/Hydro.HydraulicCore/tests/data/net1.inp
deleted file mode 100644
index 4df5bbf..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/data/net1.inp
+++ /dev/null
@@ -1,178 +0,0 @@
-[TITLE]
- EPANET Example Network 1
-A simple example of modeling chlorine decay. Both bulk and
-wall reactions are included. 
-
-[JUNCTIONS]
-;ID              	Elev        	Demand      	Pattern         
- 10              	710         	0           	                	;
- 11              	710         	150         	                	;
- 12              	700         	150         	                	;
- 13              	695         	100         	                	;
- 21              	700         	150         	                	;
- 22              	695         	200         	                	;
- 23              	690         	150         	                	;
- 31              	700         	100         	                	;
- 32              	710         	100         	                	;
-
-[RESERVOIRS]
-;ID              	Head        	Pattern         
- 9               	800         	                	;
-
-[TANKS]
-;ID              	Elevation   	InitLevel   	MinLevel    	MaxLevel    	Diameter    	MinVol      	VolCurve
- 2               	850         	120         	100         	150         	50.5        	0           	                	;
-
-[PIPES]
-;ID              	Node1           	Node2           	Length      	Diameter    	Roughness   	MinorLoss   	Status
- 10              	10              	11              	10530       	18          	100         	0           	Open  	;
- 11              	11              	12              	5280        	14          	100         	0           	Open  	;
- 12              	12              	13              	5280        	10          	100         	0           	Open  	;
- 21              	21              	22              	5280        	10          	100         	0           	Open  	;
- 22              	22              	23              	5280        	12          	100         	0           	Open  	;
- 31              	31              	32              	5280        	6           	100         	0           	Open  	;
- 110             	2               	12              	200         	18          	100         	0           	Open  	;
- 111             	11              	21              	5280        	10          	100         	0           	Open  	;
- 112             	12              	22              	5280        	12          	100         	0           	Open  	;
- 113             	13              	23              	5280        	8           	100         	0           	Open  	;
- 121             	21              	31              	5280        	8           	100         	0           	Open  	;
- 122             	22              	32              	5280        	6           	100         	0           	Open  	;
-
-[PUMPS]
-;ID              	Node1           	Node2           	Parameters
- 9               	9               	10              	HEAD 1	;
-
-[VALVES]
-;ID              	Node1           	Node2           	Diameter    	Type	Setting     	MinorLoss   
-
-[TAGS]
-
-[DEMANDS]
-;Junction        	Demand      	Pattern         	Category
-
-[STATUS]
-;ID              	Status/Setting
-
-[PATTERNS]
-;ID              	Multipliers
-;Demand Pattern
- 1               	1.0         	1.2         	1.4         	1.6         	1.4         	1.2         
- 1               	1.0         	0.8         	0.6         	0.4         	0.6         	0.8         
-
-[CURVES]
-;ID              	X-Value     	Y-Value
-;PUMP: Pump Curve for Pump 9
- 1               	1500        	250         
-
-[CONTROLS]
- LINK 9 OPEN IF NODE 2 BELOW 110
- LINK 9 CLOSED IF NODE 2 ABOVE 140
-
-
-[RULES]
-
-[ENERGY]
- Global Efficiency  	75
- Global Price       	0.0
- Demand Charge      	0.0
-
-[EMITTERS]
-;Junction        	Coefficient
-
-[QUALITY]
-;Node            	InitQual
- 10              	0.5
- 11              	0.5
- 12              	0.5
- 13              	0.5
- 21              	0.5
- 22              	0.5
- 23              	0.5
- 31              	0.5
- 32              	0.5
- 9               	1.0
- 2               	1.0
-
-[SOURCES]
-;Node            	Type        	Quality     	Pattern
-
-[REACTIONS]
-;Type     	Pipe/Tank       	Coefficient
-
-
-[REACTIONS]
- Order Bulk            	1
- Order Tank            	1
- Order Wall            	1
- Global Bulk           	-.5
- Global Wall           	-1
- Limiting Potential    	0.0
- Roughness Correlation 	0.0
-
-[MIXING]
-;Tank            	Model
-
-[TIMES]
- Duration           	24:00 
- Hydraulic Timestep 	1:00 
- Quality Timestep   	0:05 
- Pattern Timestep   	2:00 
- Pattern Start      	0:00 
- Report Timestep    	1:00 
- Report Start       	0:00 
- Start ClockTime    	12 am
- Statistic          	None
-
-[REPORT]
- Status             	Yes
- Summary            	No
- Page               	0
-
-[OPTIONS]
- Units              	GPM
- Headloss           	H-W
- Specific Gravity   	1.0
- Viscosity          	1.0
- Trials             	40
- Accuracy           	0.001
- CHECKFREQ          	2
- MAXCHECK           	10
- DAMPLIMIT          	0
- Unbalanced         	Continue 10
- Pattern            	1
- Demand Multiplier  	1.0
- Emitter Exponent   	0.5
- Quality            	Chlorine mg/L
- Diffusivity        	1.0
- Tolerance          	0.01
-
-[COORDINATES]
-;Node            	X-Coord         	Y-Coord
- 10              	20.00           	70.00           
- 11              	30.00           	70.00           
- 12              	50.00           	70.00           
- 13              	70.00           	70.00           
- 21              	30.00           	40.00           
- 22              	50.00           	40.00           
- 23              	70.00           	40.00           
- 31              	30.00           	10.00           
- 32              	50.00           	10.00           
- 9               	10.00           	70.00           
- 2               	50.00           	90.00           
-
-[VERTICES]
-;Link            	X-Coord         	Y-Coord
-
-[LABELS]
-;X-Coord           Y-Coord          Label & Anchor Node
- 6.99             73.63            "Source"                 
- 13.48            68.13            "Pump"                 
- 43.85            91.21            "Tank"                 
-
-[BACKDROP]
- DIMENSIONS     	7.00            	6.00            	73.00           	94.00           
- UNITS          	None
- FILE           	
- OFFSET         	0.00            	0.00            
-
-[END]
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/data/net1.out b/Hydraulic/Hydro.HydraulicCore/tests/data/net1.out
deleted file mode 100644
index 6cede26..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/data/net1.out
+++ /dev/null
Binary files differ
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/outfile/CMakeLists.txt b/Hydraulic/Hydro.HydraulicCore/tests/outfile/CMakeLists.txt
deleted file mode 100644
index 6d0b730..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/outfile/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-if(UNIX)
-    set(CMAKE_CXX_FLAGS "-std=c++11")
-endif(UNIX)
-
-# Sets for output directory for executables and libraries
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
-
-
-add_executable(test_output test_output.cpp)
-target_include_directories(test_output PUBLIC ../../src/outfile/include)
-target_link_libraries(test_output ${Boost_LIBRARIES} epanet-output)
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/enP1kAlM b/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/enP1kAlM
deleted file mode 100644
index e69de29..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/enP1kAlM
+++ /dev/null
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/example1.out b/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/example1.out
deleted file mode 100644
index 416c98b..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/outfile/data/example1.out
+++ /dev/null
Binary files differ
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/outfile/test_output.cpp b/Hydraulic/Hydro.HydraulicCore/tests/outfile/test_output.cpp
deleted file mode 100644
index bcae21d..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/outfile/test_output.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- *   test_output.cpp
- *
- *   Created: 8/4/2017
- *   Author: Michael E. Tryby
- *           US EPA - ORD/NRMRL
- *
- *   Unit testing for EPANET Output API.
-*/
-
-#define BOOST_TEST_MODULE "output"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string>
-#include <math.h>
-
-#include <boost/test/unit_test.hpp>
-
-#include "epanet_output.h"
-//#include "epanet2_2.h"
-
-
-boost::test_tools::predicate_result check_cdd_float(std::vector<float>& test,
-    std::vector<float>& ref, long cdd_tol){
-    float tmp, min_cdd = 10.0;
-
-    // TODO: What if the vectors aren't the same length?
-
-    std::vector<float>::iterator test_it;
-    std::vector<float>::iterator ref_it;
-
-    for (test_it = test.begin(), ref_it = ref.begin();
-        (test_it < test.end()) && (ref_it < ref.end());
-        ++test_it, ++ref_it)
-    {
-        if (*test_it != *ref_it) {
-            // Compute log absolute error
-            tmp = abs(*test_it - *ref_it);
-            if (tmp < 1.0e-7f)
-                tmp = 1.0e-7f;
-
-            else if (tmp > 2.0f)
-                tmp = 1.0f;
-
-            tmp = -log10(tmp);
-            if (tmp < 0.0f)
-                tmp = 0.0f;
-
-            if (tmp < min_cdd)
-                min_cdd = tmp;
-        }
-    }
-
-    return floor(min_cdd) >= cdd_tol;
-}
-
-boost::test_tools::predicate_result check_string(std::string test, std::string ref)
-{
-    if (ref.compare(test) == 0)
-        return true;
-    else
-        return false;
-}
-
-
-#define DATA_PATH_OUTPUT "./example1.out"
-
-//#define DATA_PATH_INP "./net1.inp"
-//#define DATA_PATH_RPT "./test.rpt"
-//#define DATA_PATH_OUT "./test.out"
-
-
-BOOST_AUTO_TEST_SUITE (test_output_auto)
-
-BOOST_AUTO_TEST_CASE(OpenCloseTest) {
-    std::string path = std::string(DATA_PATH_OUTPUT);
-
-	ENR_Handle p_handle = NULL;
-    ENR_init(&p_handle);
-
-    int error = ENR_open(p_handle, path.c_str());
-    BOOST_REQUIRE(error == 0);
-
-    error = ENR_close(&p_handle);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(p_handle == NULL);
-}
-
-
-// // Test access to output file with the project open
-// BOOST_AUTO_TEST_CASE(AccessTest){
-//
-//     std::string path_inp(DATA_PATH_NET1);
-//     std::string path_rpt(DATA_PATH_RPT);
-//     std::string path_out(DATA_PATH_OUT);
-//
-//     EN_Project ph = NULL;
-//     ENR_Handle p_handle = NULL;
-//
-//     EN_createproject(&ph);
-//
-//     int error = EN_open(ph, path_inp.c_str(), path_rpt.c_str(), path_out.c_str());
-//     BOOST_REQUIRE(error == 0);
-//
-//     error = EN_solveH(ph);
-//     BOOST_REQUIRE(error == 0);
-//
-//     error = EN_solveQ(ph);
-//     BOOST_REQUIRE(error == 0);
-//
-// 	error = EN_report(ph);
-// 	BOOST_REQUIRE(error == 0);
-//
-//
-//     // Access to output file prior to project close
-//     error = ENR_init(&p_handle);
-//     BOOST_REQUIRE(error == 0);
-//     error = ENR_open(p_handle, path_out.c_str());
-//     BOOST_REQUIRE(error == 0);
-//     error = ENR_close(&p_handle);
-//     BOOST_REQUIRE(error == 0);
-//
-//
-//     error = EN_close(ph);
-//     BOOST_REQUIRE(error == 0);
-//
-//     EN_deleteproject(&ph);
-// }
-
-
-BOOST_AUTO_TEST_SUITE_END()
-
-
-struct FixtureOutput{
-    FixtureOutput() {
-        path = std::string(DATA_PATH_OUTPUT);
-
-        error = ENR_init(&p_handle);
-        ENR_clearError(p_handle);
-        error = ENR_open(p_handle, path.c_str());
-
-        array = NULL;
-        array_dim = 0;
-    }
-    ~FixtureOutput() {
-        free((void*)array);
-        error = ENR_close(&p_handle);
-    }
-
-    std::string path;
-    int error;
-    ENR_Handle p_handle;
-
-    float* array;
-    int array_dim;
-};
-
-
-BOOST_AUTO_TEST_SUITE(test_output_fixture)
-
-BOOST_FIXTURE_TEST_CASE(test_getNetSize, FixtureOutput)
-{
-    int *i_array = NULL;
-
-    error = ENR_getNetSize(p_handle, &i_array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-    // nodes, tanks, links, pumps, valves
-    std::vector<int> test;
-    test.assign(i_array, i_array + array_dim);
-
-	std::vector<int> ref = {11,2,13,1,0};
-
-    BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end());
-
-    free((void*)i_array);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getUnits, FixtureOutput) {
-    int flag;
-
-    error = ENR_getUnits(p_handle, ENR_qualUnits, &flag);
-	BOOST_REQUIRE(error == 0);
-
-	BOOST_CHECK_EQUAL(flag, ENR_MGL);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getElementName, FixtureOutput) {
-    char* name;
-    int length, index = 1;
-
-    error = ENR_getElementName(p_handle, ENR_node, index, &name, &length);
-    BOOST_REQUIRE(error == 0);
-
-    std::string test (name);
-    std::string ref ("10");
-    BOOST_CHECK(check_string(test, ref));
-
-    free((void *)name);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getNodeAttribute, FixtureOutput) {
-
-    error = ENR_getNodeAttribute(p_handle, 1, ENR_quality, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-    std::vector<float> ref_vec = { 1.0f,
-		                           0.44407997f,
-                                   0.43766347f,
-                                   0.42827705f,
-                                   0.41342604f,
-                                   0.42804748f,
-                                   0.44152543f,
-                                   0.40502965f,
-                                   0.38635802f,
-                                   1.0f,
-                                   0.96745253f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getLinkAttribute, FixtureOutput) {
-
-    error = ENR_getLinkAttribute(p_handle, 1, ENR_flow, &array ,&array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = { 1848.5812f,
-                                   1220.4274f,
-                                   130.11162f,
-                                   187.6893f,
-                                   119.8884f,
-                                   40.464489f,
-                                   -748.58112f,
-                                   478.15378f,
-                                   191.73459f,
-                                   30.111609f,
-                                   140.46449f,
-                                   59.535515f,
-                                   1848.5812f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getNodeResult, FixtureOutput) {
-
-    error = ENR_getNodeResult(p_handle, 1, 2, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {0.041142918f,
-                                  150.0f,
-                                  987.98358f,
-                                  120.45029f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getLinkResult, FixtureOutput) {
-
-    error = ENR_getLinkResult(p_handle, 24, 13, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {0.58586824f,
-                                  1892.2433f,
-                                  0.0f,
-                                  -200.71875f,
-                                  1.0f,
-                                  3.0f,
-                                  1.0f,
-                                  0.0f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getNodeSeries, FixtureOutput){
-
-    error = ENR_getNodeSeries(p_handle, 2, ENR_pressure, 0, 10, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {119.25731f,
-                                  120.45029f,
-                                  121.19854f,
-                                  122.00622f,
-                                  122.37414f,
-                                  122.8122f,
-                                  122.82034f,
-                                  122.90379f,
-                                  123.40434f,
-                                  123.81807f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getLinkSeries, FixtureOutput) {
-
-    error = ENR_getLinkSeries(p_handle, 2, ENR_flow, 0, 10, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {1234.2072f,
-                                  1220.4274f,
-                                  1164.4f,
-                                  1154.8175f,
-                                  1100.0635f,
-                                  1094.759f,
-                                  1041.7854f,
-                                  1040.7617f,
-                                  1087.556f,
-                                  1082.5011f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getNetReacts, FixtureOutput) {
-
-    error = ENR_getNetReacts(p_handle, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {18806.59f,
-                                  85424.438f,
-                                  115174.05f,
-                                  238972.66f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 2));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getEnergyUsage, FixtureOutput) {
-
-    int linkIdx;
-
-    error = ENR_getEnergyUsage(p_handle, 1, &linkIdx, &array, &array_dim);
-    BOOST_REQUIRE(error == 0);
-
-	std::vector<float> ref_vec = {57.712959f,
-                                  75.0f,
-                                  880.41583f,
-                                  96.254318f,
-                                  96.707115f,
-                                  0.0f};
-
-    std::vector<float> test_vec;
-    test_vec.assign(array, array + array_dim);
-
-    BOOST_CHECK(check_cdd_float(test_vec, ref_vec, 3));
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_analysis.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_analysis.cpp
deleted file mode 100644
index b3c9a93..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_analysis.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_analysis.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-//#define BOOST_ALL_DYN_LINK
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_analysis)
-
-BOOST_FIXTURE_TEST_CASE(test_anlys_getoption, FixtureOpenClose)
-{
-    int i;
-
-    std::vector<double> test(23);
-    double  *array = test.data();
-
-	std::vector<double> ref = {40.0, 0.001, 0.01, 0.5, 1.0, 0.0, 0.0, 0.0, 75.0, 0.0, 0.0, 0.0,
-                               1.0, 1.0, 10.0, 2.0, 10.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0};
-
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_solveQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-
-    for (i=EN_TRIALS; i<=EN_CONCENLIMIT; i++) {
-        error = EN_getoption(ph, i, array++);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end());
-
-    double temp;
-    error = EN_getoption(ph, 25, &temp);
-    BOOST_CHECK(error == 251);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_anlys_gettimeparam, FixtureOpenClose)
-{
-    int i;
-
-    std::vector<long> test(16);
-    long *array = test.data();
-
-	std::vector<long> ref = {86400, 3600, 300, 7200, 0, 3600, 0, 360, 0, 25, 0, 86400, 86400, 0, 3600, 0};
-
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_solveQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-
-    for (i=EN_DURATION; i<=EN_NEXTEVENTTANK; i++) {
-        error = EN_gettimeparam(ph, i, array++);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end());
-
-    long temp;
-    error = EN_gettimeparam(ph, 18, &temp);
-    BOOST_CHECK(error == 251);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_control.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_control.cpp
deleted file mode 100644
index 32b3f5f..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_control.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_control.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-/*
-This is a test for the API functions that adds rules and deletes
-nodes and links from a project. Deletion can be conditional on
-node or link appearing in any simple or rule-based controls.
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-char R1[] = "RULE 1 \n IF NODE 2 LEVEL < 100 \n THEN LINK 9 STATUS = OPEN";
-char R2[] = "RULE 2\nIF SYSTEM TIME = 4\nTHEN LINK 9 STATUS = CLOSED\nAND LINK 31 STATUS = CLOSED";
-char R3[] = "RULE 3\nIF NODE 23 PRESSURE ABOVE 140\nAND NODE 2 LEVEL > 120\n"
-            "THEN LINK 113 STATUS = CLOSED\nELSE LINK 22 STATUS = CLOSED";
-
-
-BOOST_AUTO_TEST_SUITE (test_controls)
-
-BOOST_FIXTURE_TEST_CASE(test_add_get_rule,  FixtureOpenClose)
-{
-    int ruleCount, nP, nTA, nEA;
-    int link113, node23, link22, pump9_before, pump9_after;
-    double priority;
-
-
-    // Add the 3 rules to the project
-    error = EN_addrule(ph, R1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addrule(ph, R2);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addrule(ph, R3);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that rules were added
-    error = EN_getcount(ph, EN_RULECOUNT, &ruleCount);
-    BOOST_CHECK(ruleCount == 3);
-
-    // Check the number of clauses in rule 3
-    error = EN_getrule(ph, 3, &nP, &nTA, &nEA, &priority);
-    BOOST_CHECK(nP == 2);
-    BOOST_CHECK(nTA == 1);
-    BOOST_CHECK(nTA == 1);
-
-    // Try to delete link 113 conditionally which will fail
-    // because it's in rule 3
-    EN_getlinkindex(ph, (char *)"113", &link113);
-    error = EN_deletelink(ph, link113, EN_CONDITIONAL);
-    BOOST_REQUIRE(error == 261);
-
-    // Delete node 23 unconditionally which will result in the
-    // deletion of rule 3 as well as links 22 and 113
-    EN_getnodeindex(ph, (char *)"23", &node23);
-    EN_getlinkindex(ph, (char *)"22", &link22);
-    EN_getlinkindex(ph, (char *)"9", &pump9_before);
-    error = EN_deletenode(ph, node23, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that there are now only 2 rules
-    error = EN_getcount(ph, EN_RULECOUNT, &ruleCount);
-    BOOST_CHECK(ruleCount == 2);
-
-    // Check that link 22 no longer exists
-    error = EN_getlinkindex(ph, (char *)"22", &link22);
-    BOOST_CHECK(error > 0);
-
-    // Check that the index of pump9 has been reduced by 2
-    error = EN_getlinkindex(ph, (char *)"9", &pump9_after);
-    BOOST_CHECK(pump9_before - pump9_after == 2);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_curve.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_curve.cpp
deleted file mode 100644
index 6712cdf..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_curve.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_curve.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (curve)
-
-BOOST_FIXTURE_TEST_CASE(test_curve_comments, FixtureOpenClose)
-{
-    int index;
-    char comment[EN_MAXMSG + 1];
-
-    // Set curve comments
-    error = EN_getcurveindex(ph, (char *)"1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_CURVE, index, (char *)"Curve 1");
-    BOOST_REQUIRE(error == 0);
-
-    // Check curve comments
-    error = EN_getcurveindex(ph, (char *)"1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_CURVE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Curve 1"));
-
-    // Test of EN_setcurve and EN_getcurve
-    int i;
-    char id1[] = "NewCurve";
-    int n1 = 5;
-    double X1[] = {16.88889, 19.5, 22.13889, 25.94445, 33.33334};
-    double Y1[] = {156.7, 146.5, 136.2, 117.9, 50.0};
-    int n2;
-    double X2[5], Y2[5];
-    char id2[EN_MAXID+1];
-
-    // Add data to a new curve
-    error = EN_addcurve(ph, id1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcurveindex(ph, id1, &i);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcurve(ph, i, X1, Y1, n1);
-    BOOST_REQUIRE(error == 0);
-
-    // Retrieve data from curve
-    error = EN_getcurve(ph, i, id2, &n2, X2, Y2);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(id2, id1));
-    BOOST_REQUIRE(n2 == n1);
-    for (i = 0; i < n1; i++)
-    {
-        BOOST_CHECK(X1[i] == X2[i]);
-        BOOST_CHECK(Y1[i] == Y2[i]);
-    }
-}
-
-
-BOOST_FIXTURE_TEST_CASE(test_curve_id_isvalid, FixtureInitClose)
-{
-    int index;
-
-    error = EN_addcurve(ph, (char *)"C1");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addcurve(ph, (char *)"C 2");
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addcurve(ph, (char *)"\"C2");
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addcurve(ph, (char *)"C;2");
-    BOOST_REQUIRE(error == 252);
-
-    EN_getcurveindex(ph, (char *)"C1", &index);
-    error = EN_setcurveid(ph, index, (char *)"C;2");
-    BOOST_REQUIRE(error == 252);
-}
-
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_demand.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_demand.cpp
deleted file mode 100644
index d6ad4d2..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_demand.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_demand.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_demand)
-
-
-BOOST_AUTO_TEST_CASE(test_categories_save)
-{
-    int error = 0;
-    int Nindex, ndem;
-
-    EN_Project ph = NULL;
-
-    error = EN_createproject(&ph);
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
-
-    error = EN_getnodeindex(ph, (char *)"12", &Nindex);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnumdemands(ph, Nindex, &ndem);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(ndem == 1);
-
-    char demname[31];
-    error = EN_getdemandname(ph, Nindex, ndem, demname);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_setdemandname(ph, Nindex, ndem, (char *)"CUB_SCOUT_MOTOR_POOL");
-    BOOST_REQUIRE(error == 0);
-    error = EN_saveinpfile(ph, "net1_dem_cat.inp");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deleteproject(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-
-BOOST_AUTO_TEST_CASE(test_categories_reopen, * boost::unit_test::depends_on("test_demand/test_categories_save"))
-{
-    int error = 0;
-    int Nindex, ndem;
-
-    EN_Project ph = NULL;
-
-    BOOST_TEST_CHECKPOINT("Reopening saved input file");
-    error = EN_createproject(&ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_open(ph, "net1_dem_cat.inp", DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"12", &Nindex);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnumdemands(ph, Nindex, &ndem);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(ndem == 1);
-
-    char demname[31];
-    error = EN_getdemandname(ph, Nindex, ndem, demname);
-    BOOST_CHECK(error == 0);
-
-    BOOST_CHECK(check_string(demname, "CUB_SCOUT_MOTOR_POOL"));
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deleteproject(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_adddemand, FixtureSingleNode)
-{
-    int Dindex, nD1, nD2;
-
-    error = EN_adddemand(ph, node_qhut, 100.0, "PrimaryPattern", "PrimaryDemand");
-    BOOST_CHECK(error != 0);
-
-    error = EN_addpattern(ph, (char *)"PrimaryPattern");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_adddemand(ph, node_qhut, 100.0, "PrimaryPattern", "PrimaryDemand");
-    BOOST_CHECK(error == 0);
-
-    error = EN_addpattern(ph, (char *)"SecondaryPattern");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_adddemand(ph, node_qhut, 10.0, "SecondaryPattern", "SecondaryDemand");
-    BOOST_CHECK(error == 0);
-
-    error = EN_addpattern(ph, (char *)"TertiaryPattern");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_adddemand(ph, node_qhut, 1.0, "TertiaryPattern", "TertiaryDemand");
-    BOOST_CHECK(error == 0);
-
-    error = EN_getnumdemands(ph, node_qhut, &nD1);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getdemandindex(ph, node_qhut, "TertiaryDemand", &Dindex);
-    BOOST_CHECK(error == 0);
-    BOOST_CHECK(Dindex == nD1);
-
-    error = EN_deletedemand(ph, node_qhut, Dindex);
-    BOOST_CHECK(error == 0);
-
-    error = EN_getnumdemands(ph, node_qhut, &nD2);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(nD1 - nD2 == 1);
-}
-
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_hydraulics.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_hydraulics.cpp
deleted file mode 100644
index 8fe81a0..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_hydraulics.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_hydraulics.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-#include <boost/filesystem.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_hydraulics)
-
-BOOST_FIXTURE_TEST_CASE(test_solveH, FixtureOpenClose)
-{
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_hyd_step, FixtureOpenClose)
-{
-    int flag = 00;
-    long t, tstep;
-
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_initH(ph, flag);
-    BOOST_REQUIRE(error == 0);
-
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_nextH(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-
-    } while (tstep > 0);
-
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_hydr_save, FixtureOpenClose)
-{
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_saveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_report(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_hydr_savefile, FixtureOpenClose)
-{
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_savehydfile(ph, "test_savefile.hyd");
-    BOOST_REQUIRE(error == 0);
-
-    BOOST_CHECK(boost::filesystem::exists("test_savefile.hyd") == true);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_hydr_usefile, FixtureOpenClose, * boost::unit_test::depends_on("test_hydraulics/test_hydr_savefile"))
-{
-    error = EN_usehydfile(ph, "test_savefile.hyd");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_solveQ(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_link.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_link.cpp
deleted file mode 100644
index e56693b..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_link.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_link.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <math.h>
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_link)
-
-
-BOOST_FIXTURE_TEST_CASE(test_adddelete_link, FixtureInitClose)
-{
-    int index;
-
-    // Build a network
-    EN_addnode(ph, (char *)"N1", EN_JUNCTION, &index);
-    EN_addnode(ph, (char *)"N2", EN_JUNCTION, &index);
-    EN_addnode(ph, (char *)"N3", EN_RESERVOIR, &index);
-
-    error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N3", (char *)"N1", &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addlink(ph, (char *)"L2", EN_PIPE, (char *)"N1", (char *)"N3", &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getlinkindex(ph, (char *)"L2", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addlink(ph, (char *)"L3", EN_PIPE, (char *)"N1", (char *)"N2", &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getlinkindex(ph, (char *)"L1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkindex(ph, (char *)"L3", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletelink(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-
-}
-
-BOOST_FIXTURE_TEST_CASE(test_link_id_isvalid, FixtureInitClose)
-{
-    int index;
-
-    // Build a network
-    EN_addnode(ph, (char *)"N1", EN_JUNCTION, &index);
-    EN_addnode(ph, (char *)"N2", EN_JUNCTION, &index);
-    EN_addnode(ph, (char *)"N3", EN_RESERVOIR, &index);
-
-    error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N1", (char *)"N2", &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addlink(ph, (char *)"L 2", EN_PIPE, (char *)"N1", (char *)"N2", &index);
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addlink(ph, (char *)"\"L2", EN_PIPE, (char *)"N1", (char *)"N2", &index);
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addlink(ph, (char *)"L;2", EN_PIPE, (char *)"N1", (char *)"N2", &index);
-    BOOST_REQUIRE(error == 252);
-
-    EN_getlinkindex(ph, (char *)"L1", &index);
-    error = EN_setlinkid(ph, index, (char *)"L;1");
-    BOOST_REQUIRE(error == 252);
-}
-
-BOOST_AUTO_TEST_CASE(test_setlinktype)
-{
-    int error = 0;
-    int p113, n31, p121, n113_1, n113_2;
-    double q113 = 0.0, p31 = 0.0, diam;
-
-    EN_Project ph = NULL;
-    EN_createproject(&ph);
-
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-
-    // Change duration to 0
-    error = EN_settimeparam(ph, EN_DURATION, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // Get indexes of pipe 113 and node 31
-    error = EN_getlinkindex(ph, (char *)"113", &p113);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodeindex(ph, (char *)"31", &n31);
-    BOOST_REQUIRE(error == 0);
-
-    // Reverse pipe 113 and give it a check valve
-    error = EN_getlinknodes(ph, p113, &n113_1, &n113_2);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setlinknodes(ph, p113, n113_2, n113_1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setlinktype(ph, &p113, EN_CVPIPE, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // Get index & diameter of pipe 121 connected to node 31
-    error = EN_getlinkindex(ph, (char *)"121", &p121);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkvalue(ph, p121, EN_DIAMETER, &diam);
-    BOOST_REQUIRE(error == 0);
-
-    // Replace it with a PRV
-    error = EN_setlinktype(ph, &p121, EN_PRV, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // Set diameter & setting of new PRV
-    error = EN_setlinkvalue(ph, p121, EN_INITSETTING, 100);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setlinkvalue(ph, p121, EN_DIAMETER, diam);
-    BOOST_REQUIRE(error == 0);
-
-    // Solve for hydraulics
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Get flow in link 113 and pressure at node 31
-    error = EN_getlinkvalue(ph, p113, EN_FLOW, &q113);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodevalue(ph, n31, EN_PRESSURE, &p31);
-    BOOST_REQUIRE(error == 0);
-
-    // Require that link 113 flow be 0
-    q113 = fabs(q113);
-    BOOST_REQUIRE(q113 < 0.001);
-
-    // Require that node 31 pressure be 100
-    p31 = fabs(p31 - 100.0f);
-    BOOST_REQUIRE(p31 < 0.001);
-
-    // Close and delete project
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    EN_deleteproject(ph);
-}
-
-
-BOOST_AUTO_TEST_CASE(test_link_setid_save)
-{
-	int error = 0;
-
-	EN_Project ph = NULL;
-	EN_createproject(&ph);
-
-	error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, "");
-	BOOST_REQUIRE(error == 0);
-
-	// Test of illegal link name change
-	char newid_3[] = "Illegal; link name";
-	error = EN_setlinkid(ph, 3, newid_3);
-	BOOST_REQUIRE(error > 0);
-
-	// Test of legal link name change
-	char newid_4[] = "Link3";
-	error = EN_setlinkid(ph, 3, newid_4);
-	BOOST_REQUIRE(error == 0);
-
-	// Save the project
-	error = EN_saveinpfile(ph, "net1_setid.inp");
-	BOOST_REQUIRE(error == 0);
-
-	error = EN_close(ph);
-	BOOST_REQUIRE(error == 0);
-	EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_CASE(test_link_setid_reopen, * boost::unit_test::depends_on("test_link/test_link_setid_save"))
-{
-	int error = 0;
-	int index;
-
-	EN_Project ph = NULL;
-
-    // Re-open the saved project
-    EN_createproject(&ph);
-    error = EN_open(ph, "net1_setid.inp", DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-
-    // Check that 3rd link has its new name
-    error = EN_getlinkindex(ph, (char *)"Link3", &index);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(index == 3);
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    EN_deleteproject(ph);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_link_comments, FixtureOpenClose)
-{
-    int index;
-    char comment[EN_MAXMSG + 1];
-
-    // Set link comments
-    error = EN_getlinkindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_LINK, index, (char *)"P11");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getlinkindex(ph, (char *)"9", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_LINK, index, (char *)"Pump9");
-    BOOST_REQUIRE(error == 0);
-
-    // Check link comments
-    error = EN_getlinkindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_LINK, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"P11"));
-
-    error = EN_getlinkindex(ph, (char *)"9", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_LINK, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Pump9"));
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_net_builder.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_net_builder.cpp
deleted file mode 100644
index 2d15e86..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_net_builder.cpp
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
-******************************************************************************
-Project:      OWA EPANET
-Version:      2.2
-Module:       test_net_builder.cpp
-Description:  Tests EPANET toolkit api functions
-Authors:      see AUTHORS
-Copyright:    see AUTHORS
-License:      see LICENSE
-Last Updated: 04/12/2019
-******************************************************************************
-*/
-
-
-#define BOOST_TEST_MODULE net_builder
-
-#ifdef _DEBUG
-#define _CRTDBG_MAP_ALLOC
-#include <stdlib.h>
-#include <crtdbg.h>
-#else
-#include <stdlib.h>
-#endif
-
-#include <boost/test/included/unit_test.hpp>
-
-#include "epanet2_2.h"
-
-
-#define DATA_PATH_TMP "./tmp.inp"
-#define DATA_PATH_RPT "./test.rpt"
-#define DATA_PATH_OUT "./test.out"
-
-
-struct FixtureInitClose {
-    FixtureInitClose() {
-        error = 0;
-        ph = NULL;
-
-        EN_createproject(&ph);
-        EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW);
-    }
-
-    ~FixtureInitClose() {
-        EN_close(ph);
-        EN_deleteproject(ph);
-    }
-    int error;
-    EN_Project ph;
-};
-
-
-BOOST_AUTO_TEST_SUITE(test_net_builder)
-
-
-// BOOST_AUTO_TEST_CASE(net_builder_I)
-// {
-// 	int error = 0;
-// 	int flag = 00;
-// 	long t, tstep;
-// 	int i, ind, Lindex, Nindex, Cindex;
-// 	double h_orig, h_build, h_build_loaded;
-//
-// 	// first we load Net1.inp, run it and record the head in Tank 2 at the end of the simulation (h_orig)
-// 	EN_Project ph = NULL;
-// 	EN_createproject(&ph);
-//
-// 	std::string path_inp = std::string(DATA_PATH_NET1);
-// 	std::string path_rpt = std::string(DATA_PATH_RPT);
-// 	std::string path_out = std::string(DATA_PATH_OUT);
-//
-// 	error = EN_open(ph, path_inp.c_str(), path_rpt.c_str(), path_out.c_str());
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	error = EN_getnodeindex(ph, (char *)"2", &Nindex);
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	error = EN_openH(ph);
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	error = EN_initH(ph, flag);
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	do {
-// 		error = EN_runH(ph, &t);
-// 		BOOST_REQUIRE(error == 0);
-//
-// 		// this is the head at the end of the simulation after loading the original Net1.inp
-// 		error = EN_getnodevalue(ph, Nindex, EN_HEAD, &h_orig);
-// 		BOOST_REQUIRE(error == 0);
-//
-// 		error = EN_nextH(ph, &tstep);
-// 		BOOST_REQUIRE(error == 0);
-//
-// 	} while (tstep > 0);
-//
-// 	error = EN_closeH(ph);
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	error = EN_close(ph);
-// 	BOOST_REQUIRE(error == 0);
-//
-// 	EN_deleteproject(&ph);
-// }
-
-BOOST_FIXTURE_TEST_CASE(test_build_net1, FixtureInitClose)
-{
-    int flag = 00;
-    long t, tstep;
-    int i, ind, Lindex, Nindex, Cindex;
-    double h_build;
-
-    // now we build Net1 from scratch...
-    char juncs[9][10] = { "10", "11", "12", "13", "21", "22", "23", "31", "32" };
-    double e[9] = { 710, 710, 700, 695, 700, 695, 690, 700, 710 };
-    double d[9] = { 0, 150, 150, 100, 150, 200, 150, 100, 100 };
-    double X[9] = { 20, 30, 50, 70, 30, 50, 70, 30, 50 };
-    double Y[9] = { 70, 70, 70, 70, 40, 40, 40, 10, 10 };
-    double L[12] = { 10530, 5280, 5280, 5280, 5280, 5280, 200, 5280, 5280, 5280, 5280, 5280 };
-    double dia[12] = { 18, 14, 10, 10, 12, 6, 18, 10, 12, 8, 8, 6 };
-    double P[12] = { 1.0f, 1.2f, 1.4f, 1.6f, 1.4f, 1.2f, 1.0f, 0.8f, 0.6f, 0.4f, 0.6f, 0.8f };
-
-    error = EN_addpattern(ph, (char *)"pat1");
-    BOOST_REQUIRE(error == 0);
-    error = EN_setpattern(ph, 1, P, 12);
-    BOOST_REQUIRE(error == 0);
-    //error = EN_setoption(ph, EN_DEFDEMANDPAT, 1);
-    //BOOST_REQUIRE(error == 0);
-    for (i = 0; i < 9; i++)
-    {
-        error = EN_addnode(ph, juncs[i], EN_JUNCTION, &ind);
-        BOOST_REQUIRE(error == 0);
-        error = EN_setnodevalue(ph, i + 1, EN_ELEVATION, e[i]);
-        BOOST_REQUIRE(error == 0);
-        error = EN_setnodevalue(ph, i + 1, EN_BASEDEMAND, d[i]);
-        BOOST_REQUIRE(error == 0);
-        error = EN_setnodevalue(ph, i+1, EN_PATTERN, 1);
-        BOOST_REQUIRE(error == 0);
-        error = EN_setcoord(ph, i + 1, X[i], Y[i]);
-        BOOST_REQUIRE(error == 0);
-        //error = EN_setdemandpattern(ph, i + 1, 1, 1);
-        //BOOST_REQUIRE(error == 0);
-    }
-    error = EN_addnode(ph, (char *)"9", EN_RESERVOIR, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcoord(ph, 10, 10, 70);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 10, EN_ELEVATION, 800);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addnode(ph, (char *)"2", EN_TANK, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcoord(ph, 11, 50, 90);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_TANKDIAM, 50.5);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_ELEVATION, 850);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_MAXLEVEL, 150);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_TANKLEVEL, 120);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_MINLEVEL, 100);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 11, EN_MIXFRACTION, 1);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addlink(ph, (char *)"10", EN_PIPE, (char *)"10", (char *)"11", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"11", EN_PIPE, (char *)"11", (char *)"12", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"12", EN_PIPE, (char *)"12", (char *)"13", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"21", EN_PIPE, (char *)"21", (char *)"22", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"22", EN_PIPE, (char *)"22", (char *)"23", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"31", EN_PIPE, (char *)"31", (char *)"32", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"110", EN_PIPE, (char *)"2", (char *)"12", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"111", EN_PIPE, (char *)"11", (char *)"21", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"112", EN_PIPE, (char *)"12", (char *)"22", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"113", EN_PIPE, (char *)"13", (char *)"23", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"121", EN_PIPE, (char *)"21", (char *)"31", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"122", EN_PIPE, (char *)"22", (char *)"32", &ind);
-    BOOST_REQUIRE(error == 0);
-    for (i = 0; i < 12; i++)
-    {
-        error = EN_setlinkvalue(ph, i + 1, EN_LENGTH, L[i]);
-        BOOST_REQUIRE(error == 0);
-        error = EN_setlinkvalue(ph, i + 1, EN_DIAMETER, dia[i]);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    error = EN_addlink(ph, (char *)"9", EN_PUMP, (char *)"9", (char *)"10", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addcurve(ph, (char *)"1");
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcurvevalue(ph, 1, 1, 1500, 250);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkindex(ph, (char *)"9", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setheadcurveindex(ph, ind, 1);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_settimeparam(ph, EN_DURATION, 24 * 3600);
-    BOOST_REQUIRE(error == 0);
-    error = EN_settimeparam(ph, EN_PATTERNSTEP, 2 * 3600);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getlinkindex(ph, (char *)"9", &Lindex);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodeindex(ph, (char *)"2", &Nindex);
-    BOOST_REQUIRE(error == 0);
-
-    // Add controls
-    error = EN_addcontrol(ph, EN_LOWLEVEL, Lindex, 1, Nindex, 110, &Cindex);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addcontrol(ph, EN_HILEVEL, Lindex, 0, Nindex, 140, &Cindex);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_initH(ph, 0);
-    BOOST_REQUIRE(error == 0);
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-        // this is the head at the end of the simulation after building the network *without* saving it to file
-        error = EN_getnodevalue(ph, Nindex, EN_HEAD, &h_build);
-        BOOST_REQUIRE(error == 0);
-        error = EN_nextH(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-    } while (tstep > 0);
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_saveinpfile(ph, "net_builder.inp");
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_AUTO_TEST_CASE(test_open_net1, * boost::unit_test::depends_on("test_net_builder/test_build_net1"))
-{
-    int error = 0;
-    int flag = 00;
-    long t, tstep;
-    int Nindex = -1;
-    double h_orig = 0.0, h_build = 0.0, h_build_loaded = 0.0;
-
-
-    EN_Project ph = NULL;
-
-    // now we load the netwok we just built and saved
-    EN_createproject(&ph);
-    error = EN_open(ph, "net_builder.inp", DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"2", &Nindex);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_initH(ph, flag);
-    BOOST_REQUIRE(error == 0);
-
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-        // this is the head at the end of the simulation after building the network and saving it to file
-        error = EN_getnodevalue(ph, Nindex, EN_HEAD, &h_build_loaded);
-        BOOST_REQUIRE(error == 0);
-        error = EN_nextH(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-
-    } while (tstep > 0);
-
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-
-    EN_deleteproject(ph);
-
-    //---------------------------------------------------------------------
-    // if we got this far we can compare results
-
-    // compare the original to the build & saved network
-    //   BOOST_CHECK(abs(h_orig - h_build_loaded) < 0.0001);
-
-    // compare the original to the build without saving
-    //   BOOST_CHECK(abs(h_orig - h_build) < 0.0001);
-}
-
-
-BOOST_FIXTURE_TEST_CASE(test_save_net2, FixtureInitClose)
-{
-    //char id[EN_MAXID+1];
-    double p1_1, p2_1; // p1_2, p2_2;
-    double q1_1, q2_1; // q1_2, q2_2;
-    int ind;
-
-    // Build a network
-    error = EN_addnode(ph, (char *)"N1", EN_JUNCTION, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N2", EN_JUNCTION, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N3", EN_RESERVOIR, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N4", EN_TANK, &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"L1", EN_PUMP, (char *)"N3", (char *)"N1", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"L2", EN_PIPE, (char *)"N1", (char *)"N3", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addlink(ph, (char *)"L3", EN_PIPE, (char *)"N1", (char *)"N2", &ind);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addcurve(ph, (char *)"C1");
-    BOOST_REQUIRE(error == 0);
-
-    // Set network data using the new helper functions
-    error = EN_setcurvevalue(ph, 1, 1, 1500, 250);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setjuncdata(ph, 1, 700, 500, (char *)"");
-    BOOST_REQUIRE(error == 0);
-    error = EN_setjuncdata(ph, 2, 710, 500, (char *)"");
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, 3, EN_ELEVATION, 800);
-    BOOST_REQUIRE(error == 0);
-    error = EN_settankdata(ph, 4, 850, 120, 100, 150, 50.5, 0, (char *)"");
-    BOOST_REQUIRE(error == 0);
-    error = EN_setlinkvalue(ph, 1, EN_PUMP_HCURVE, 1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setpipedata(ph, 2, 10560, 12, 100, 0);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setpipedata(ph, 3, 5280, 14, 100, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // Run hydraulics
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Save results
-    error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p1_1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodevalue(ph, 2, EN_PRESSURE, &p2_1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkvalue(ph, 1, EN_FLOW, &q1_1);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkvalue(ph, 2, EN_FLOW, &q2_1);
-    BOOST_REQUIRE(error == 0);
-
-    // Save project
-    error = EN_saveinpfile(ph, "netbuilder_test2.inp");
-    BOOST_REQUIRE(error == 0);
-}
-
-
-BOOST_AUTO_TEST_CASE(test_reopen_net2, *boost::unit_test::depends_on("test_net_builder/test_save_net2"))
-{
-    int error, index;
-
-    double p1_2, p2_2;
-    double q1_2, q2_2;
-
-    // Open the saved project file
-    EN_Project ph = NULL;
-    error = EN_createproject(&ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_open(ph, "netbuilder_test2.inp", DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    // Run hydraulics
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Save these new results
-    error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p1_2);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodevalue(ph, 2, EN_PRESSURE, &p2_2);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkindex(ph, (char *)"L1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkvalue(ph, index, EN_FLOW, &q1_2);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkindex(ph, (char *)"L2", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkvalue(ph, index, EN_FLOW, &q2_2);
-    BOOST_REQUIRE(error == 0);
-
-    // Display old & new results
-    //cout << "\n  Node N1 Pressure: " << p1_1 << "  " << p1_2;
-    //cout << "\n  Node N2 Pressure: " << p2_1 << "  " << p2_2;
-    //cout << "\n  Link L1 Flow:     " << q1_1 << "  " << q1_2;
-    //cout << "\n  Link L2 Flow:     " << q2_1 << "  " << q2_2;
-
-    // Compare old & new results
-    //    BOOST_CHECK(abs(p1_1 - p1_2) < 1.e-5);
-    //    BOOST_CHECK(abs(q1_1 - q1_2) < 1.e-5);
-    //    BOOST_CHECK(abs(p2_1 - p2_2) < 1.e-5);
-    //    BOOST_CHECK(abs(q2_1 - q2_2) < 1.e-5);
-
-    // Close project
-    EN_close(ph);
-    EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_node.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_node.cpp
deleted file mode 100644
index aa3e21e..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_node.cpp
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_node.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_node)
-
-
-BOOST_FIXTURE_TEST_CASE(test_adddelete_node, FixtureInitClose)
-{
-    int index;
-
-    error = EN_addnode(ph, (char *)"N2", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N4", EN_TANK, &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N3", EN_RESERVOIR, &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_addnode(ph, (char *)"N1", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"N1", &index);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(index == 2);
-    error = EN_getnodeindex(ph, (char *)"N2", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"N4", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodeindex(ph, (char *)"N3", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deletenode(ph, index, EN_UNCONDITIONAL);
-    BOOST_REQUIRE(error == 0);
-
-}
-
-BOOST_FIXTURE_TEST_CASE(test_node_validate_id, FixtureInitClose)
-{
-    int index;
-
-    error = EN_addnode(ph, (char *)"N2", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addnode(ph, (char *)"N 3", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addnode(ph, (char *)"\"N3", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addnode(ph, (char *)"N;3", EN_JUNCTION, &index);
-    BOOST_REQUIRE(error == 252);
-
-    EN_getnodeindex(ph, (char *)"N2", &index);
-    error = EN_setnodeid(ph, index, (char *)"N;2");
-    BOOST_REQUIRE(error = 252);
-}
-
-
-BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose)
-{
-    int index;
-    const auto props = {
-        EN_ELEVATION,
-        EN_BASEDEMAND,
-        EN_PATTERN,
-        EN_EMITTER,
-        EN_INITQUAL,
-    };
-    const size_t num_props = 5;
-
-    std::vector<double> test (num_props);
-    double *value = test.data();
-
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    std::vector<double> ref = {710.0, 150.0, 1.0, 0.0, 0.5};
-
-
-    // Ranged for loop iterates over property set
-    for (EN_NodeProperty p : props) {
-         error = EN_getnodevalue(ph, index, p, value++);
-         BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK(check_cdd_double(test, ref, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_tank_props, FixtureOpenClose)
-{
-    int index;
-    const auto props = {
-        EN_ELEVATION,
-        EN_TANKLEVEL,
-        EN_MINLEVEL,
-        EN_MAXLEVEL,
-        EN_TANKDIAM,
-        EN_MINVOLUME
-    };
-    const size_t num_props = 6;
-
-    std::vector<double> test (num_props);
-    double *value = test.data();
-
-    error = EN_getnodeindex(ph, (char *)"2", &index);
-    std::vector<double> ref = {850.0, 120.0, 100.0, 150.0, 50.5, 200296.167};
-
-    // Ranged for loop iterates over property set
-    for (EN_NodeProperty p : props) {
-        error = EN_getnodevalue(ph, index, p, value++);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK(check_cdd_double(test, ref, 3));
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-
-
-
-BOOST_AUTO_TEST_SUITE(node_props_after_step)
-
-BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureAfterStep)
-{
-    int index;
-    const auto props = {
-        EN_DEMAND,
-        EN_HEAD,
-        EN_PRESSURE,
-        EN_QUALITY
-    };
-    const size_t num_props = 4;
-
-    std::vector<double> test (num_props);
-    double *value = test.data();
-
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    std::vector<double> ref = {179.999, 991.574, 122.006, 0.857};
-
-
-    // Ranged for loop iterates over property set
-    for (EN_NodeProperty p : props) {
-         error = EN_getnodevalue(ph, index, p, value++);
-         BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK(check_cdd_double(test, ref, 3));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_tank_props, FixtureAfterStep)
-{
-    int index;
-    const auto props = {
-        EN_DEMAND,
-        EN_HEAD,
-        EN_PRESSURE,
-        EN_QUALITY
-    };
-    const size_t num_props = 4;
-
-    std::vector<double> test (num_props);
-    double *value = test.data();
-
-    error = EN_getnodeindex(ph, (char *)"2", &index);
-    std::vector<double> ref = {505.383, 978.138, 55.522, 0.911};
-
-    // Ranged for loop iterates over property set
-    for (EN_NodeProperty p : props) {
-        error = EN_getnodevalue(ph, index, p, value++);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK(check_cdd_double(test, ref, 3));
-}
-BOOST_AUTO_TEST_SUITE_END()
-
-
-BOOST_AUTO_TEST_SUITE(setid_save_reopen)
-
-BOOST_AUTO_TEST_CASE(test_setid_save)
-{
-    int error = 0;
-
-    EN_Project ph = NULL;
-    EN_createproject(&ph);
-
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-
-    // Test of illegal node name change
-    char newid_1[] = "Illegal; node name";
-    error = EN_setnodeid(ph, 3, newid_1);
-    BOOST_REQUIRE(error > 0);
-
-    // Test of legal node name change
-    char newid_2[] = "Node3";
-    error = EN_setnodeid(ph, 3, newid_2);
-    BOOST_REQUIRE(error == 0);
-
-    // Save the project
-    error = EN_saveinpfile(ph, "net1_setid.inp");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    EN_deleteproject(ph);
-
-}
-
-BOOST_AUTO_TEST_CASE(test_setid_reopen, * boost::unit_test::depends_on("setid_save_reopen/test_setid_save"))
-{
-    int error = 0;
-    int index;
-
-    EN_Project ph = NULL;
-
-    // Re-open the saved project
-    EN_createproject(&ph);
-    error = EN_open(ph, "net1_setid.inp", DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-
-    // Check that 3rd node has its new name
-    error = EN_getnodeindex(ph, (char *)"Node3", &index);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(index == 3);
-
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-
-BOOST_AUTO_TEST_SUITE(node_comments)
-
-BOOST_FIXTURE_TEST_CASE(test_node_comments, FixtureOpenClose)
-{
-    int index;
-    char comment[EN_MAXMSG + 1];
-
-    // Add comments to selected objects
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"J11");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"23", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"Junc23");
-    BOOST_REQUIRE(error == 0);
-
-    // Check comments
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"J11"));
-
-    error = EN_getnodeindex(ph, (char *)"23", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Junc23"));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_replace_comment, FixtureOpenClose)
-{
-    int index;
-    char comment[EN_MAXMSG + 1];
-
-    // Replace short comment with longer one and vice versa
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"Junction11");
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Junction11"));
-
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"J11");
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"J11"));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_save_comment, FixtureOpenClose)
-{
-    int index;
-
-    // Add comments to selected objects
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"J11");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_getnodeindex(ph, (char *)"23", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_NODE, index, (char *)"Junc23");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_saveinpfile(ph, DATA_PATH_TMP);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_AUTO_TEST_CASE(test_reopen_comment, * boost::unit_test::depends_on("node_comments/test_save_comment"))
-{
-    int error, index;
-    char comment[EN_MAXMSG + 1];
-
-    // Create & load a project
-    EN_Project ph = NULL;
-    EN_createproject(&ph);
-
-    error = EN_open(ph, DATA_PATH_TMP, DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-
-    // Check that comments were saved & read correctly
-    // Check comments
-    error = EN_getnodeindex(ph, (char *)"11", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"J11"));
-
-    error = EN_getnodeindex(ph, (char *)"23", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_NODE, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Junc23"));
-
-    // Close project
-    EN_close(ph);
-    EN_deleteproject(ph);
-}
-
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_overflow.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_overflow.cpp
deleted file mode 100644
index 5ad60a4..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_overflow.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_overflow.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 06/16/2019
- ******************************************************************************
-*/
-
-/*
-   Tests the EN_CANOVERFLOW option for Tank nodes
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-BOOST_AUTO_TEST_SUITE (test_overflow)
-
-BOOST_AUTO_TEST_CASE(test_tank_overflow)
-
-{
-    int error = 0;
-    int Nindex, Lindex;
-    double level, spillage, spillage2, inflow;
-    char testFile[] = "test_overflow.inp";
-
-    EN_Project ph = NULL;
-
-    error = EN_createproject(&ph);
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, "");
-
-    // Get index of the tank and its inlet/outlet pipe
-    error = EN_getnodeindex(ph, (char *)"2", &Nindex);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getlinkindex(ph, (char *)"110", &Lindex);
-    BOOST_REQUIRE(error == 0);
-
-    // Set initial & maximum level to 130
-    error = EN_setnodevalue(ph, Nindex, EN_TANKLEVEL, 130);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setnodevalue(ph, Nindex, EN_MAXLEVEL, 130);
-    BOOST_REQUIRE(error == 0);
-
-    // Set duration to 1 hr
-    error = EN_settimeparam(ph, EN_DURATION, 3600);
-    BOOST_REQUIRE(error == 0);
-
-    // Solve hydraulics with default of no tank spillage allowed
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that tank remains full
-    error = EN_getnodevalue(ph, Nindex, EN_TANKLEVEL, &level);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(level - 130.0) < 0.0001);
-
-    // Check that there is no spillage
-    error = EN_getnodevalue(ph, Nindex, EN_DEMAND, &spillage);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(spillage) < 0.0001);
-
-    // Check that inflow link is closed
-    error = EN_getlinkvalue(ph, Lindex, EN_FLOW, &inflow);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(inflow) < 0.0001);
-
-    // Turn tank overflow option on
-    error = EN_setnodevalue(ph, Nindex, EN_CANOVERFLOW, 1);
-    BOOST_REQUIRE(error == 0);
-
-    // Solve hydraulics again
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that tank remains full
-    error = EN_getnodevalue(ph, Nindex, EN_TANKLEVEL, &level);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(level - 130.0) < 0.0001);
-
-    // Check that there is spillage equal to tank inflow
-    // (inflow has neg. sign since tank is start node of inflow pipe)
-    error = EN_getnodevalue(ph, Nindex, EN_DEMAND, &spillage);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(spillage > 0.0001);
-    error = EN_getlinkvalue(ph, Lindex, EN_FLOW, &inflow);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(-inflow - spillage) < 0.0001);
-
-    // Save project to file and then close it
-    error = EN_saveinpfile(ph, testFile);
-    BOOST_REQUIRE(error == 0);
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Re-open saved file & run it
-    error = EN_open(ph, testFile, DATA_PATH_RPT, "");
-    BOOST_REQUIRE(error == 0);
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that tank spillage has same value as before
-    error = EN_getnodevalue(ph, Nindex, EN_DEMAND, &spillage2);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(spillage - spillage2) < 0.0001);
-
-    // Clean up
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deleteproject(ph);
-    BOOST_REQUIRE(error == 0);
-
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_pattern.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_pattern.cpp
deleted file mode 100644
index 4d98ba3..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_pattern.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_pattern.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (pattern)
-
-BOOST_FIXTURE_TEST_CASE(test_set_get_default_pattern, FixtureOpenClose)
-{
-	// Assign the default pattern index
-	int defPatIdx = 1;
-	int patIdx;
-
-	// Rename the default pattern
-	error = EN_setpatternid(ph, defPatIdx, (char *)"Pat1");
-	BOOST_REQUIRE(error == 0);
-
-	error = EN_getpatternindex(ph, (char *)"Pat1", &patIdx);
-	BOOST_REQUIRE(error == 0);
-
-	BOOST_CHECK(defPatIdx == patIdx);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_add_delete, FixtureOpenClose)
-{
-	double f2[] = { 2.1, 2.2 };
-	double f3[] = { 3.1, 3.2, 3.3, 3.4 };
-
-	// Add 2 new patterns
-	error = EN_addpattern(ph, (char *)"Pat2");
-	BOOST_REQUIRE(error == 0);
-	error = EN_addpattern(ph, (char *)"Pat3");
-	BOOST_REQUIRE(error == 0);
-
-	error = EN_setpattern(ph, 2, f2, 2);
-	BOOST_REQUIRE(error == 0);
-	error = EN_setpattern(ph, 3, f3, 4);
-	BOOST_REQUIRE(error == 0);
-
-	// Delete Pat2
-	error = EN_deletepattern(ph, 2);
-	BOOST_REQUIRE(error == 0);
-
-	// Check that there are now 2 patterns
-	int n;
-	error = EN_getcount(ph, EN_PATCOUNT, &n);
-	BOOST_REQUIRE(error == 0);
-	BOOST_CHECK(n == 2);
-}
-
-
-BOOST_AUTO_TEST_CASE(test_add_set)
-{
-	std::string path_inp(DATA_PATH_NET1);
-	std::string path_rpt(DATA_PATH_RPT);
-	std::string path_out(DATA_PATH_OUT);
-	std::string inp_save("net1_setid.inp");
-
-    int error = 0;
-
-    EN_Project ph = NULL;
-    EN_createproject(&ph);
-
-    error = EN_open(ph, path_inp.c_str(), path_rpt.c_str(), "");
-    BOOST_REQUIRE(error == 0);
-
-    // Assign the default pattern index
-    int n, defPatIdx = 1;
-    int patIdx;
-
-    // Rename the default pattern
-    EN_setpatternid(ph, defPatIdx, (char *)"Pat1");
-    EN_getpatternindex(ph, (char *)"Pat1", &patIdx);
-    BOOST_REQUIRE(defPatIdx == patIdx);
-
-    // Add 2 new patterns
-    EN_addpattern(ph, (char *)"Pat2");
-    EN_addpattern(ph, (char *)"Pat3");
-    double f2[] = {2.1, 2.2};
-    double f3[] = {3.1, 3.2, 3.3, 3.4};
-    EN_setpattern(ph, 2, f2, 2);
-    EN_setpattern(ph, 3, f3, 4);
-
-    // Assign Pat3 to 3rd junction
-    EN_setdemandpattern(ph, 3, 1, 3);
-
-    // Delete Pat2
-    EN_deletepattern(ph, 2);
-
-    //Check that there are now 2 patterns
-    EN_getcount(ph, EN_PATCOUNT, &n);
-    BOOST_REQUIRE(n == 2);
-
-    // Check that Pat3 with 4 factors is still assigned to 3rd junction
-    EN_getdemandpattern(ph, 3, 1, &patIdx);
-    EN_getpatternlen(ph, patIdx, &n);
-    BOOST_REQUIRE(n == 4);
-
-    // Delete the default pattern
-    EN_deletepattern(ph, defPatIdx);
-
-    // Check that junction 4 has no pattern
-    EN_getdemandpattern(ph, 4, 1, &patIdx);
-    BOOST_REQUIRE(patIdx == 0);
-
-    // And that junction 3 still uses Pat3
-    EN_getdemandpattern(ph, 3, 1, &patIdx);
-    char patID[EN_MAXID+1];
-    EN_getpatternid(ph, patIdx, patID);
-    BOOST_REQUIRE(strcmp(patID, "Pat3") == 0);
-
-    // Re-name the pump's (Link 9) head curve
-    int pumpIdx;
-    char pumpID[] = "9";
-    int curveIdx;
-    char newCurveID[] = "PumpHeadCurve";
-    EN_getlinkindex(ph, pumpID, &pumpIdx);
-    EN_getheadcurveindex(ph, pumpIdx, &curveIdx);
-    EN_setcurveid(ph, curveIdx, newCurveID);
-
-    // Check that rename was successful
-    char curveID[EN_MAXID + 1];
-    EN_getcurveid(ph, curveIdx, curveID);
-    BOOST_REQUIRE(strcmp(curveID, newCurveID) == 0);
-
-    // Add two new curves
-    double x2[] = {0.0, 1.0, 2.0};
-    double y2[] = {400.0, 60.0, 30.0};
-    double x3[] = {2000.0};
-    double y3[] = {100.0};
-    char curve2[] = "Curve2";
-    char curve3[] = "Curve3";
-    EN_addcurve(ph, curve2);
-    EN_setcurve(ph, 2, x2, y2, 3);
-    EN_addcurve(ph, curve3);
-    EN_setcurve(ph, 3, x3, y3, 1);
-
-    // Assign Curve3 to pump's head curve
-    EN_getcurveindex(ph, curve3, &curveIdx);
-    EN_setheadcurveindex(ph, pumpIdx, curveIdx);
-
-    // Delete Curve2
-    EN_getcurveindex(ph, curve2, &curveIdx);
-    EN_deletecurve(ph, curveIdx);
-
-    // Check that pump's head curve is still Curve3
-    EN_getheadcurveindex(ph, pumpIdx, &curveIdx);
-    EN_getcurveid(ph, curveIdx, curveID);
-    BOOST_REQUIRE(strcmp(curveID, curve3) == 0);
-
-    // And that it contains the correct data
-    double x, y;
-    EN_getcurvevalue(ph, curveIdx, 1, &x, &y);
-    BOOST_REQUIRE(x == x3[0]);
-    BOOST_REQUIRE(y == y3[0]);
-
-    EN_close(ph);
-    EN_deleteproject(ph);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_pattern_comments, FixtureOpenClose)
-{
-    int index;
-    char comment[EN_MAXMSG + 1];
-
-    // Set pattern comment
-    error = EN_getpatternindex(ph, (char *)"1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcomment(ph, EN_TIMEPAT, index, (char *)"Time Pattern 1");
-    BOOST_REQUIRE(error == 0);
-
-    // Check pattern comment
-    error = EN_getpatternindex(ph, (char *)"1", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getcomment(ph, EN_TIMEPAT, index, comment);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(check_string(comment, (char *)"Time Pattern 1"));
-}
-
-BOOST_FIXTURE_TEST_CASE(test_pat_id_isvalid, FixtureInitClose)
-{
-    int index;
-
-    error = EN_addpattern(ph, (char *)"P1");
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_addpattern(ph, (char *)"P 2");
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addpattern(ph, (char *)"\"P2");
-    BOOST_REQUIRE(error == 252);
-
-    error = EN_addpattern(ph, (char *)"P;2");
-    BOOST_REQUIRE(error == 252);
-
-    EN_getpatternindex(ph, (char *)"P1", &index);
-    error = EN_setpatternid(ph, index, (char *)"P;1");
-    BOOST_REQUIRE(error == 252);
-
-}
-
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_pda.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_pda.cpp
deleted file mode 100644
index b7c1636..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_pda.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_pda.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 07/20/2019
- ******************************************************************************
-*/
-
-/*
-   Tests the Pressure Driven Analysis option
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-BOOST_AUTO_TEST_SUITE (test_pda)
-
-BOOST_AUTO_TEST_CASE(test_pda_model)
-
-{
-    int error = 0;
-    int index;
-    double count, reduction;
-
-    EN_Project ph = NULL;
-    error = EN_createproject(&ph);
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, "");
-
-    // Set Demand Multiplier to 10 to cause negative pressures
-    error = EN_setoption(ph, EN_DEMANDMULT, 10);
-    BOOST_REQUIRE(error == 0);
-    
-    // Run single period analysis
-    error = EN_settimeparam(ph, EN_DURATION, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // Solve hydraulics with default DDA option
-    // which will return with neg. pressure warning code
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 6);
-
-    // Check that 4 demand nodes have negative pressures
-    error = EN_getstatistic(ph, EN_DEFICIENTNODES, &count);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(count == 4);
-
-    // Switch to PDA with pressure limits of 20 - 100 psi
-    error = EN_setdemandmodel(ph, EN_PDA, 20, 100, 0.5);
-    BOOST_REQUIRE(error == 0);
-    
-    // Solve hydraulics again
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // Check that 6 nodes had demand reductions totaling 32.66%
-    error = EN_getstatistic(ph, EN_DEFICIENTNODES, &count);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(count == 6);
-    error = EN_getstatistic(ph, EN_DEMANDREDUCTION, &reduction);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(reduction - 32.66) < 0.01);
-
-    // Check that Junction 12 had full demand
-    error = EN_getnodeindex(ph, (char *)"12", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodevalue(ph, index, EN_DEMANDDEFICIT, &reduction);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(reduction) < 0.01);
-
-    // Check that Junction 21 had a demand deficit of 413.67    
-    error = EN_getnodeindex(ph, (char *)"21", &index);
-    BOOST_REQUIRE(error == 0);
-    error = EN_getnodevalue(ph, index, EN_DEMANDDEFICIT, &reduction);
-    BOOST_REQUIRE(error == 0);
-    BOOST_REQUIRE(abs(reduction - 413.67) < 0.01);
-
-    // Clean up
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_deleteproject(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_project.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_project.cpp
deleted file mode 100644
index 627afbd..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_project.cpp
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_project.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <string.h>
-
-#include <boost/test/unit_test.hpp>
-#include <boost/filesystem.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_project)
-
-BOOST_AUTO_TEST_CASE (test_create_delete)
-{
-    int error = 0;
-    EN_Project ph = NULL;
-
-    error = EN_createproject(&ph);
-
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(ph != NULL);
-
-    error = EN_deleteproject(ph);
-
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_AUTO_TEST_CASE (test_open_close)
-{
-	int error;
-
-	EN_Project ph = NULL;
-
-    EN_createproject(&ph);
-
-    error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_close(ph);
-    BOOST_REQUIRE(error == 0);
-
-    EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_CASE(test_init_close)
-{
-	EN_Project ph = NULL;
-	EN_createproject(&ph);
-
-	int error = EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW);
-	BOOST_REQUIRE(error == 0);
-
-	error = EN_close(ph);
-	BOOST_REQUIRE(error == 0);
-
-	EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_CASE(test_save)
-{
-    int error;
-
-	EN_Project ph_save;
-
-	EN_createproject(&ph_save);
-    error = EN_open(ph_save, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_saveinpfile(ph_save, "test_reopen.inp");
-    BOOST_REQUIRE(error == 0);
-
-    BOOST_CHECK(boost::filesystem::exists("test_reopen.inp") == true);
-
-    error = EN_close(ph_save);
-    BOOST_REQUIRE(error == 0);
-    EN_deleteproject(ph_save);
-}
-
-BOOST_AUTO_TEST_CASE(test_reopen, * boost::unit_test::depends_on("test_project/test_save"))
-{
-    int error;
-
-    EN_Project ph_reopen;
-
-    EN_createproject(&ph_reopen);
-	error = EN_open(ph_reopen, "test_reopen.inp", DATA_PATH_RPT, DATA_PATH_OUT);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_close(ph_reopen);
-    BOOST_REQUIRE(error == 0);
-	EN_deleteproject(ph_reopen);
-}
-
-BOOST_AUTO_TEST_CASE(test_run)
-{
-	int error;
-
-    EN_Project ph;
-
-    EN_createproject(&ph);
-
-    error = EN_runproject(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT, NULL);
-    BOOST_REQUIRE(error == 0);
-
-    EN_deleteproject(ph);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-
-BOOST_AUTO_TEST_SUITE(test_proj_fixture)
-
-BOOST_FIXTURE_TEST_CASE(test_title, FixtureOpenClose)
-{
-    // How is the API user supposed to know array size?
-    char c_test[3][80];
-
-    // ref is an automatic variable and therefore doesn't need to be deleted
-    std::string ref[3] = {
-        " EPANET Example Network 1",
-        "A simple example of modeling chlorine decay. Both bulk and",
-        "wall reactions are included. "};
-
-    error = EN_gettitle(ph, c_test[0], c_test[1], c_test[2]);
-    BOOST_REQUIRE(error == 0);
-
-    for (int i = 0; i < 3; i++) {
-        std::string test (c_test[i]);
-        BOOST_CHECK(check_string(test, ref[i]));
-    }
-
-   // Need a test for EN_settitle
-}
-
-BOOST_FIXTURE_TEST_CASE(test_getcount, FixtureOpenClose)
-{
-    int i;
-
-	std::vector<int> test(7);
-    int *array = test.data();
-
-    std::vector<int> ref = { 11, 2, 13, 1, 1, 2, 0 };
-
-    for (i=EN_NODECOUNT; i<=EN_RULECOUNT; i++) {
-        error = EN_getcount(ph, i, array++);
-        BOOST_REQUIRE(error == 0);
-    }
-
-    BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end());
-
-	error = EN_getcount(ph, 7, &i);
-	BOOST_CHECK(error == 251);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_setdemandpattern, FixtureOpenClose)
-{
-    int i, j, pat_index, pat_index_2, numDemands, nnodes;
-	char newpat[] = "new_pattern";
-
-	// get the number of nodes
-    error = EN_getcount(ph, EN_NODECOUNT, &nnodes);
-    BOOST_REQUIRE(error == 0);
-
-	// add a new pattern
-    error = EN_addpattern(ph, newpat);
-	BOOST_REQUIRE(error == 0);
-
-	// get the new patterns index, should be as the number of patterns
-    error = EN_getpatternindex(ph, newpat, &pat_index);
-	BOOST_REQUIRE(error == 0);
-
-	for (i = 1; i <= nnodes; i++) {
-		// get the number of demand categories
-		error = EN_getnumdemands(ph, i, &numDemands);
-		BOOST_REQUIRE(error == 0);
-
-		for (j = 1; j <= numDemands; j++) {
-			// set demand patterns
-			error = EN_setdemandpattern(ph, i, j, pat_index);
-			BOOST_REQUIRE(error == 0);
-			// get demand patterns should be the same with set
-			error = EN_getdemandpattern(ph, i, j, &pat_index_2);
-			BOOST_REQUIRE(error == 0);
-			BOOST_CHECK(pat_index == pat_index_2);
-		}
-	}
-}
-
-BOOST_FIXTURE_TEST_CASE(test_addpattern, FixtureOpenClose)
-{
-    int pat_index, n_patterns_1, n_patterns_2;
-    char newpat[] = "new_pattern";
-
-    // get the number of current patterns
-    error = EN_getcount(ph, EN_PATCOUNT, &n_patterns_1);
-    BOOST_REQUIRE(error == 0);
-
-    // add a new pattern
-    error = EN_addpattern(ph, newpat);
-    BOOST_REQUIRE(error == 0);
-
-    // get the new patterns count, shoul dbe the old one + 1
-    error = EN_getcount(ph, EN_PATCOUNT, &n_patterns_2);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(n_patterns_1 + 1 == n_patterns_2);
-
-    // gwt the new patterns index, should be as the number of patterns
-    error = EN_getpatternindex(ph, newpat, &pat_index);
-    BOOST_CHECK(pat_index == n_patterns_2);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_add_control, FixtureOpenClose)
-{
-    int flag = 00;
-    long t, tstep;
-    double h1, h2;
-    int Cindex;
-
-    // run with original controls
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_initH(ph, flag);
-    BOOST_REQUIRE(error == 0);
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-        error = EN_getnodevalue(ph, 11, EN_HEAD, &h1); // get the tank head
-        BOOST_REQUIRE(error == 0);
-        error = EN_nextH(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-    } while (tstep > 0);
-
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    // disable current controls
-    error = EN_setcontrol(ph, 1, 0, 0, 0, 0, 0);
-    BOOST_REQUIRE(error == 0);
-    error = EN_setcontrol(ph, 2, 1, 0, 0, 0, 0);
-    BOOST_REQUIRE(error == 0);
-
-    // add new controls
-    error = EN_addcontrol(ph, 0, 13, 1, 11, 110, &Cindex);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(Cindex == 3);
-    error = EN_addcontrol(ph, 1, 13, 0, 11, 140, &Cindex);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(Cindex == 4);
-
-    // run with new controls
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-    error = EN_initH(ph, flag);
-    BOOST_REQUIRE(error == 0);
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-        error = EN_getnodevalue(ph, 11, EN_HEAD, &h2); // get the tank head
-        BOOST_REQUIRE(error == 0);
-        error = EN_nextH(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-    } while (tstep > 0);
-
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    BOOST_CHECK(abs(h1 - h2) < 1.e-5); // end head should be the same with new controls
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_quality.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_quality.cpp
deleted file mode 100644
index 973732a..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_quality.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_quality.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_quality)
-
-BOOST_FIXTURE_TEST_CASE(test_solveQ, FixtureOpenClose)
-{
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_solveQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_report(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_qual_step, FixtureOpenClose)
-{
-    int flag = 0;
-    long t, tstep;
-
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_openQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_initQ(ph, flag);
-    BOOST_REQUIRE(error == 0);
-
-    do {
-        error = EN_runQ(ph, &t);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_stepQ(ph, &tstep);
-        BOOST_REQUIRE(error == 0);
-
-    } while (tstep > 0);
-
-    error = EN_closeQ(ph);
-    BOOST_REQUIRE(error == 0);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_progressive_step, FixtureOpenClose)
-{
-    int flag = EN_NOSAVE;
-    long t, tstep_h, tstep_q;
-
-    error = EN_openH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_initH(ph, flag);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_openQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_initQ(ph, flag);
-    BOOST_REQUIRE(error == 0);
-
-    do {
-        error = EN_runH(ph, &t);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_runQ(ph, &t);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_nextH(ph, &tstep_h);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_nextQ(ph, &tstep_q);
-        BOOST_REQUIRE(error == 0);
-
-    } while (tstep_h > 0);
-
-    error = EN_closeH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_closeQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_reent.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_reent.cpp
deleted file mode 100644
index c82754f..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_reent.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_reent.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/thread.hpp>
-
-#include <string>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "epanet2_2.h"
-
-#define NUM_THREADS 2
-
-using namespace std;
-
-void  epanet_thread(long i)
-{
-    int errorcode = 0;
-    EN_Project ph;
-
-    string prefix = "example_";
-    string suffix = ".inp";
-    string input = prefix + to_string(static_cast<long long>(i)) + suffix;
-
-    suffix = ".rpt";
-    string report = prefix + to_string(static_cast<long long>(i)) + suffix;
-
-    suffix = ".out";
-    string output = prefix + to_string(static_cast<long long>(i)) + suffix;
-
-    printf("Thread #%ld starting EPANET ...\n", i);
-
-    EN_createproject(&ph);
-    errorcode = EN_runproject(ph, input.c_str(), report.c_str(), output.c_str(), NULL);
-    EN_deleteproject(ph);
-
-    printf("Thread #%ld EPANET done. Status = %d\n", i, errorcode);
-}
-
-int main(int argc, char *argv[])
-{
-    long i;
-    boost::thread *threads[NUM_THREADS];
-
-    for (i = 0; i < NUM_THREADS; i++) {
-        threads[i] = new boost::thread(epanet_thread, i);
-        printf("Main: creating thread %ld.\n", i);
-    }
-
-    for (i = 0; i < NUM_THREADS; i++) {
-        threads[i]->join();
-        printf("Main: joining thread %ld.\n", i);
-        delete threads[i];
-    }
-
-    printf("Main: program completed. Exiting.\n");
-    return(0);
-}
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_report.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_report.cpp
deleted file mode 100644
index 5b5850c..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_report.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_report.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#include <boost/test/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-BOOST_AUTO_TEST_SUITE (test_report)
-
-BOOST_FIXTURE_TEST_CASE(test_rprt_anlysstats, FixtureOpenClose)
-{
-    int i;
-
-    std::vector<double> test(5);
-    double *array = test.data();
-
-	std::vector<double> ref = {3.0, 7.0799498320679432e-06, 1.6680242187483429e-08,
-        0.0089173150106518495, 0.99999998187144024};
-
-    error = EN_solveH(ph);
-    BOOST_REQUIRE(error == 0);
-
-    error = EN_solveQ(ph);
-    BOOST_REQUIRE(error == 0);
-
-
-    for (i=EN_ITERATIONS; i<=EN_MASSBALANCE; i++) {
-        error = EN_getstatistic(ph, i, array++);
-        BOOST_REQUIRE(error == 0);
-    }
-    BOOST_CHECK(check_cdd_double(test, ref, 3));
-
-    double temp;
-    error = EN_getstatistic(ph, 8, &temp);
-    BOOST_CHECK(error == 251);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.cpp b/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.cpp
deleted file mode 100644
index 110460a..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_toolkit.cpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#define BOOST_TEST_MODULE toolkit
-
-#include <math.h>
-
-#include <boost/test/included/unit_test.hpp>
-
-#include "test_toolkit.hpp"
-
-
-// Custom test to check the minimum number of correct decimal digits between
-// the test and the ref vectors.
-boost::test_tools::predicate_result check_cdd_double(std::vector<double>& test,
-    std::vector<double>& ref, long cdd_tol){
-    double tmp, min_cdd = 10.0;
-
-    // TODO: What if the vectors aren't the same length?
-
-    std::vector<double>::iterator test_it;
-    std::vector<double>::iterator ref_it;
-
-    for (test_it = test.begin(), ref_it = ref.begin();
-        (test_it < test.end()) && (ref_it < ref.end());
-        ++test_it, ++ref_it)
-    {
-        if (*test_it != *ref_it) {
-            // Compute log absolute error
-            tmp = abs(*test_it - *ref_it);
-            if (tmp < 1.0e-7)
-                tmp = 1.0e-7;
-
-            else if (tmp > 2.0)
-                tmp = 1.0;
-
-            tmp = -log10(tmp);
-            if (tmp < 0.0)
-                tmp = 0.0;
-
-            if (tmp < min_cdd)
-                min_cdd = tmp;
-        }
-    }
-
-    return floor(min_cdd) >= cdd_tol;
-}
-
-boost::test_tools::predicate_result check_string(std::string test, std::string ref)
-{
-    if (ref.compare(test) == 0)
-        return true;
-    else
-        return false;
-}
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.hpp b/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.hpp
deleted file mode 100644
index 3d6c49e..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/test_toolkit.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_toolkit.hpp
- Description:  Tests EPANET toolkit api functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 03/21/2019
- ******************************************************************************
-*/
-
-#ifndef TEST_TOOLKIT_HPP
-#define TEST_TOOLKIT_HPP
-
-#include "epanet2_2.h"
-
-
-#define DATA_PATH_NET1 "./net1.inp"
-#define DATA_PATH_TMP "./tmp.inp"
-#define DATA_PATH_RPT "./test.rpt"
-#define DATA_PATH_OUT "./test.out"
-
-struct FixtureOpenClose{
-    FixtureOpenClose() {
-        error = 0;
-        ph = NULL;
-
-        EN_createproject(&ph);
-        error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
-    }
-
-    ~FixtureOpenClose() {
-      error = EN_close(ph);
-      EN_deleteproject(ph);
-  }
-
-  int error;
-  EN_Project ph;
-};
-
-
-struct FixtureInitClose {
-	FixtureInitClose() {
-        error = 0;
-        ph = NULL;
-
-		EN_createproject(&ph);
-		EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW);
-	}
-
-	~FixtureInitClose() {
-		EN_close(ph);
-		EN_deleteproject(ph);
-	}
-	int error;
-	EN_Project ph;
-};
-
-
-struct FixtureAfterStep{
-    FixtureAfterStep() {
-        error = 0;
-        ph = NULL;
-
-        flag = 0;
-        tstop = 10800;
-
-        EN_createproject(&ph);
-		error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT);
-
-        error = EN_solveH(ph);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_openQ(ph);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_initQ(ph, flag);
-        BOOST_REQUIRE(error == 0);
-
-        do {
-            error = EN_runQ(ph, &t);
-            BOOST_REQUIRE(error == 0);
-
-            error = EN_stepQ(ph, &tstep);
-            BOOST_REQUIRE(error == 0);
-
-        } while (tstep > 0 && t < tstop);
-    }
-
-    ~FixtureAfterStep() {
-        error = EN_closeQ(ph);
-        BOOST_REQUIRE(error == 0);
-
-        error = EN_close(ph);
-        EN_deleteproject(ph);
-    }
-
-    int error, flag;
-    long t, tstep, tstop;
-    EN_Project ph;
-};
-
-struct FixtureSingleNode {
-    FixtureSingleNode() {
-        error = 0;
-        ph = NULL;
-
-        EN_createproject(&ph);
-        EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_GPM, EN_HW);
-
-        EN_addnode(ph, (char *)"CUB_SCOUT_QUONSET_HUT", EN_JUNCTION, &node_qhut);
-    }
-
-    ~FixtureSingleNode() {
-        EN_close(ph);
-        EN_deleteproject(ph);
-    }
-    int error, index, node_qhut;
-    EN_Project ph;
-};
-
-
-boost::test_tools::predicate_result check_cdd_double(std::vector<double>& test,
-    std::vector<double>& ref, long cdd_tol);
-boost::test_tools::predicate_result check_string(std::string test, std::string ref);
-
-
-#endif //TEST_TOOLKIT_HPP
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/util/CMakeLists.txt b/Hydraulic/Hydro.HydraulicCore/tests/util/CMakeLists.txt
deleted file mode 100644
index 7072f35..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/util/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-if(UNIX)
-    set(CMAKE_CXX_FLAGS "-std=c++11")
-endif(UNIX)
-
-# Sets for output directory for executables and libraries
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
-
-
-add_executable(test_cstrhelper ./test_cstrhelper.cpp
-                               ../../src/util/cstr_helper.c)
-target_include_directories(test_cstrhelper PUBLIC ../../src/)
-target_link_libraries(test_cstrhelper ${Boost_LIBRARIES})
-
-
-add_executable(test_errormanager ./test_errormanager.cpp
-                                 ../../src/util/errormanager.c)
-target_include_directories(test_errormanager PUBLIC ../../src/)
-target_link_libraries(test_errormanager ${Boost_LIBRARIES})
-
-
-add_executable(test_filemanager ./test_filemanager.cpp
-                                ../../src/util/filemanager.c
-                                ../../src/util/cstr_helper.c)
-target_include_directories(test_filemanager PUBLIC ../../src/)
-target_link_libraries(test_filemanager ${Boost_LIBRARIES})
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/util/test_cstrhelper.cpp b/Hydraulic/Hydro.HydraulicCore/tests/util/test_cstrhelper.cpp
deleted file mode 100644
index 2688a74..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/util/test_cstrhelper.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       test_cstrhelper.cpp
- Description:  tests for C string helper functions
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 04/16/2019
- ******************************************************************************
-*/
-
-#include <string>
-
-#define BOOST_TEST_MODULE cstr_helper
-#include <boost/test/unit_test.hpp>
-
-#include "util/cstr_helper.h"
-
-
-boost::test_tools::predicate_result check_string(std::string test, std::string ref)
-{
-    if (ref.compare(test) == 0)
-        return true;
-    else
-        return false;
-}
-
-
-BOOST_AUTO_TEST_SUITE(test_cstrhelper)
-
-
-BOOST_AUTO_TEST_CASE(test_duplicate) {
-
-    std::string source = "I will be rewarded for good behavior.";
-    char *dest = NULL;
-
-    cstr_duplicate(&dest, source.c_str());
-    BOOST_CHECK(check_string(dest, source));
-    BOOST_CHECK(cstr_isnullterm(dest) == true);
-
-    free(dest);
-}
-
-
-BOOST_AUTO_TEST_CASE(test_isvalid) {
-
-    BOOST_CHECK(cstr_isvalid("big tank") == false);
-    BOOST_CHECK(cstr_isvalid("big\"tank") == false);
-    BOOST_CHECK(cstr_isvalid("big;tank") == false);
-
-    BOOST_CHECK(cstr_isvalid("big-tank") == true);
-}
-
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/util/test_errormanager.cpp b/Hydraulic/Hydro.HydraulicCore/tests/util/test_errormanager.cpp
deleted file mode 100644
index 8e70774..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/util/test_errormanager.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-#define BOOST_TEST_MODULE errormanager
-
-#include <boost/test/unit_test.hpp>
-
-#include "util/errormanager.h"
-
-
-#define MESSAGE_STRING "This is unit testing!"
-
-
-void mock_lookup(int errcode, char *errmsg, int len)
-{
-    char *msg = NULL;
-
-    if (errcode == 100) {
-        msg = (char *)MESSAGE_STRING;
-    }
-    else {
-        msg = (char *)"";
-    }
-    strncpy(errmsg, msg, len);
-}
-
-boost::test_tools::predicate_result check_string(std::string test, std::string ref)
-{
-    if (ref.compare(test) == 0)
-        return true;
-    else
-        return false;
-}
-
-
-BOOST_AUTO_TEST_SUITE(test_errormanager)
-
-BOOST_AUTO_TEST_CASE (test_create_destroy)
-{
-    error_handle_t *error_handle = NULL;
-    error_handle = create_error_manager(&mock_lookup);
-
-    delete_error_manager(error_handle);
-}
-
-
-struct Fixture{
-    Fixture() {
-        error_message = NULL;
-        error_handle = create_error_manager(&mock_lookup);
-    }
-    ~Fixture() {
-        delete_error_manager(error_handle);
-        free(error_message);
-    }
-    int error;
-    error_handle_t *error_handle;
-    char *error_message;
-};
-
-
-BOOST_FIXTURE_TEST_CASE (test_set_clear, Fixture)
-{
-    error = set_error(error_handle, 100);
-    BOOST_CHECK(error == 100);
-
-    clear_error(error_handle);
-    error = check_error(error_handle, &error_message);
-    BOOST_CHECK(error == 0);
-    BOOST_CHECK(error_message == NULL);
-}
-
-BOOST_FIXTURE_TEST_CASE(test_set_check, Fixture)
-{
-    error = set_error(error_handle, 100);
-    BOOST_CHECK(error == 100);
-
-    error = check_error(error_handle, &error_message);
-    BOOST_CHECK(check_string(error_message, MESSAGE_STRING));
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicCore/tests/util/test_filemanager.cpp b/Hydraulic/Hydro.HydraulicCore/tests/util/test_filemanager.cpp
deleted file mode 100644
index 7e17577..0000000
--- a/Hydraulic/Hydro.HydraulicCore/tests/util/test_filemanager.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- ******************************************************************************
- Project:      OWA EPANET
- Version:      2.2
- Module:       util/test_filemanager.cpp
- Description:  Tests for util/filemanager.c
- Authors:      see AUTHORS
- Copyright:    see AUTHORS
- License:      see LICENSE
- Last Updated: 04/01/2019
- ******************************************************************************
-*/
-
-#define BOOST_TEST_MODULE filemanager
-
-#include <boost/test/unit_test.hpp>
-#include <boost/filesystem.hpp>
-
-#include "util/filemanager.h"
-
-
-#define DATA_PATH_OUTPUT "./example1.out"
-
-
-boost::test_tools::predicate_result check_string(std::string test, std::string ref)
-{
-    if (ref.compare(test) == 0)
-        return true;
-    else
-        return false;
-}
-
-
-BOOST_AUTO_TEST_SUITE(test_filemanager)
-
-
-BOOST_AUTO_TEST_CASE (test_create_destroy)
-{
-    file_handle_t *file_handle = NULL;
-
-    file_handle = create_file_manager();
-    BOOST_CHECK(file_handle != NULL);
-	BOOST_CHECK(is_valid(file_handle) == true);
-
-    delete_file_manager(file_handle);
-}
-
-BOOST_AUTO_TEST_CASE(test_open_close)
-{
-    int error = 0;
-    file_handle_t *file_handle = NULL;
-
-    file_handle = create_file_manager();
-    BOOST_CHECK(file_handle != NULL);
-
-    error = open_file(file_handle, DATA_PATH_OUTPUT, "rb");
-    BOOST_REQUIRE(error == 0);
-	BOOST_CHECK(is_valid(file_handle) == true);
-
-    error = close_file(file_handle);
-    BOOST_REQUIRE(error == 0);
-
-    delete_file_manager(file_handle);
-}
-
-struct Fixture{
-    Fixture() {
-		error = 0;
-        file_handle = NULL;
-
-		file_handle = create_file_manager();
-        open_file(file_handle, NULL, "wt");
-    }
-    ~Fixture() {
-        close_file(file_handle);
-        delete_file_manager(file_handle);
-  }
-  int error;
-  file_handle_t *file_handle;
-};
-
-BOOST_FIXTURE_TEST_CASE(test_temp_file, Fixture)
-{
-    char *filename;
-
-    printf_file(file_handle, "%s", "This is a test.");
-
-    error = get_filename(file_handle, &filename);
-    BOOST_REQUIRE(error == 0);
-    BOOST_CHECK(is_valid(file_handle) == true);
-
-    BOOST_CHECK(boost::filesystem::exists(filename) == true);
-
-    free(filename);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/Hydraulic/Hydro.HydraulicModel/Hydro.HydraulicModel.csproj b/Hydraulic/Hydro.HydraulicModel/Hydro.HydraulicModel.csproj
index 8541b13..63816ba 100644
--- a/Hydraulic/Hydro.HydraulicModel/Hydro.HydraulicModel.csproj
+++ b/Hydraulic/Hydro.HydraulicModel/Hydro.HydraulicModel.csproj
@@ -17,17 +17,17 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.HydraulicOptimizer/Hydro.HydraulicOptimizer.csproj b/Hydraulic/Hydro.HydraulicOptimizer/Hydro.HydraulicOptimizer.csproj
index 05fc7d0..0a174ee 100644
--- a/Hydraulic/Hydro.HydraulicOptimizer/Hydro.HydraulicOptimizer.csproj
+++ b/Hydraulic/Hydro.HydraulicOptimizer/Hydro.HydraulicOptimizer.csproj
@@ -17,17 +17,17 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.HydraulicOptimizer/WDNModelOptimizer.cs b/Hydraulic/Hydro.HydraulicOptimizer/WDNModelOptimizer.cs
index f1e3242..58caf21 100644
--- a/Hydraulic/Hydro.HydraulicOptimizer/WDNModelOptimizer.cs
+++ b/Hydraulic/Hydro.HydraulicOptimizer/WDNModelOptimizer.cs
@@ -758,7 +758,7 @@
 
         private string loadLogicParam()
         {
-            string result = null;
+            //string result = null;
             //(LogicPoint)((LogicTile)sender).Tag;
             param = new LogicModelParams();
 
@@ -769,7 +769,7 @@
                 $"SELECT {LogicPoint.selectColumn} FROM RemoteHost");
 
 
-            double d=0;
+            //double d=0;
 
 
             foreach (var host in hosts.Where(x => x.LogicType == "鍒濆鏉′欢" && x.ParentId != -1 && x.Ext.Enable).OrderBy(x=>x.Sort))
@@ -1022,7 +1022,7 @@
         private string loadGeneticParam(FinishEvent onFinished, FinishEvent onError, FinishEvent onReportProgress, SetEvent  SetVarsMethod)
         {
            
-            string result = null;
+            //string result = null;
 
 
             //DLengths.ForEach(m => chromosomeLength += m);
diff --git a/Hydraulic/Hydro.Inp2.2/Hydro.Inp2.2.csproj b/Hydraulic/Hydro.Inp2.2/Hydro.Inp2.2.csproj
index 80d1292..99a17b8 100644
--- a/Hydraulic/Hydro.Inp2.2/Hydro.Inp2.2.csproj
+++ b/Hydraulic/Hydro.Inp2.2/Hydro.Inp2.2.csproj
@@ -17,17 +17,17 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.MapUI/Hydro.MapUI.csproj b/Hydraulic/Hydro.MapUI/Hydro.MapUI.csproj
index 0292793..4b27c12 100644
--- a/Hydraulic/Hydro.MapUI/Hydro.MapUI.csproj
+++ b/Hydraulic/Hydro.MapUI/Hydro.MapUI.csproj
@@ -17,11 +17,11 @@
     </NuGetPackageImportStamp>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
@@ -32,7 +32,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.Designer.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.Designer.cs
index f225372..2d9ab48 100644
--- a/Hydraulic/Hydro.MapUI/Map/MapViewer.Designer.cs
+++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.Designer.cs
@@ -79,8 +79,9 @@
             this.label_center = new System.Windows.Forms.ToolStripStatusLabel();
             this.toolStripStatusLabel_rotation = new System.Windows.Forms.ToolStripStatusLabel();
             this.label_zoom = new System.Windows.Forms.ToolStripStatusLabel();
-            this.toolStripStatusLabel_split1 = new System.Windows.Forms.ToolStripStatusLabel();
             this.label_mouse = new System.Windows.Forms.ToolStripStatusLabel();
+            this.toolStripStatusLabel_split1 = new System.Windows.Forms.ToolStripStatusLabel();
+            this.label_ZZ = new System.Windows.Forms.ToolStripStatusLabel();
             this.toolStripStatusLabel_split2 = new System.Windows.Forms.ToolStripStatusLabel();
             this.label_file = new System.Windows.Forms.ToolStripStatusLabel();
             this.panel1 = new System.Windows.Forms.Panel();
@@ -230,6 +231,11 @@
             this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
             this.鍏ㄩ�塗oolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.鍙嶉�塗oolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.timer_draw = new System.Windows.Forms.Timer(this.components);
+            this.toolStripSeparator22 = new System.Windows.Forms.ToolStripSeparator();
+            this.妤煎眰绠$悊ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator23 = new System.Windows.Forms.ToolStripSeparator();
+            this.榛樿瑙嗚ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.statusStrip1.SuspendLayout();
             this.panel1.SuspendLayout();
             this.toolStrip1.SuspendLayout();
@@ -242,8 +248,9 @@
             this.label_center,
             this.toolStripStatusLabel_rotation,
             this.label_zoom,
-            this.toolStripStatusLabel_split1,
             this.label_mouse,
+            this.toolStripStatusLabel_split1,
+            this.label_ZZ,
             this.toolStripStatusLabel_split2,
             this.label_file});
             this.statusStrip1.Location = new System.Drawing.Point(0, 578);
@@ -272,17 +279,24 @@
             this.label_zoom.Text = "Zoom锛�1";
             this.label_zoom.Click += new System.EventHandler(this.label_zoom_Click);
             // 
+            // label_mouse
+            // 
+            this.label_mouse.Name = "label_mouse";
+            this.label_mouse.Size = new System.Drawing.Size(65, 17);
+            this.label_mouse.Text = "X锛�0 Y锛�0";
+            // 
             // toolStripStatusLabel_split1
             // 
             this.toolStripStatusLabel_split1.Name = "toolStripStatusLabel_split1";
             this.toolStripStatusLabel_split1.Size = new System.Drawing.Size(11, 17);
             this.toolStripStatusLabel_split1.Text = "|";
             // 
-            // label_mouse
+            // label_ZZ
             // 
-            this.label_mouse.Name = "label_mouse";
-            this.label_mouse.Size = new System.Drawing.Size(65, 17);
-            this.label_mouse.Text = "X锛�0 Y锛�0";
+            this.label_ZZ.Name = "label_ZZ";
+            this.label_ZZ.Size = new System.Drawing.Size(71, 17);
+            this.label_ZZ.Text = "姝d氦妯″紡:寮�";
+            this.label_ZZ.Click += new System.EventHandler(this.label_ZZ_Click);
             // 
             // toolStripStatusLabel_split2
             // 
@@ -616,7 +630,9 @@
             this.鍒犻櫎ToolStripMenuItem1,
             this.toolStripSeparator15,
             this.瀵归綈ToolStripMenuItem,
-            this.鎺掑垪ToolStripMenuItem});
+            this.鎺掑垪ToolStripMenuItem,
+            this.toolStripSeparator22,
+            this.妤煎眰绠$悊ToolStripMenuItem});
             this.toolStripDropDownButton_宸ュ叿.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton_宸ュ叿.Image")));
             this.toolStripDropDownButton_宸ュ叿.ImageTransparentColor = System.Drawing.Color.Magenta;
             this.toolStripDropDownButton_宸ュ叿.Name = "toolStripDropDownButton_宸ュ叿";
@@ -629,7 +645,7 @@
             this.toolStripTextBox_姘村钩鏃嬭浆瑙掑害});
             this.姘村钩鏃嬭浆ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("姘村钩鏃嬭浆ToolStripMenuItem.Image")));
             this.姘村钩鏃嬭浆ToolStripMenuItem.Name = "姘村钩鏃嬭浆ToolStripMenuItem";
-            this.姘村钩鏃嬭浆ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.姘村钩鏃嬭浆ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.姘村钩鏃嬭浆ToolStripMenuItem.Text = "姘村钩鏃嬭浆";
             this.姘村钩鏃嬭浆ToolStripMenuItem.Click += new System.EventHandler(this.姘村钩鏃嬭浆ToolStripMenuItem_Click);
             // 
@@ -644,20 +660,20 @@
             // 
             this.杞存棆杞琓oolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("杞存棆杞琓oolStripMenuItem.Image")));
             this.杞存棆杞琓oolStripMenuItem.Name = "杞存棆杞琓oolStripMenuItem";
-            this.杞存棆杞琓oolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.杞存棆杞琓oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.杞存棆杞琓oolStripMenuItem.Text = "杞存棆杞�";
             // 
             // 杞撮暅鍍廡oolStripMenuItem
             // 
             this.杞撮暅鍍廡oolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("杞撮暅鍍廡oolStripMenuItem.Image")));
             this.杞撮暅鍍廡oolStripMenuItem.Name = "杞撮暅鍍廡oolStripMenuItem";
-            this.杞撮暅鍍廡oolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.杞撮暅鍍廡oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.杞撮暅鍍廡oolStripMenuItem.Text = "杞撮暅鍍�";
             // 
             // toolStripSeparator7
             // 
             this.toolStripSeparator7.Name = "toolStripSeparator7";
-            this.toolStripSeparator7.Size = new System.Drawing.Size(145, 6);
+            this.toolStripSeparator7.Size = new System.Drawing.Size(177, 6);
             // 
             // 缂╂斁ToolStripMenuItem
             // 
@@ -667,7 +683,7 @@
             this.toolStripMenuItem_缂╁皬2鍊峿);
             this.缂╂斁ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("缂╂斁ToolStripMenuItem.Image")));
             this.缂╂斁ToolStripMenuItem.Name = "缂╂斁ToolStripMenuItem";
-            this.缂╂斁ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.缂╂斁ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.缂╂斁ToolStripMenuItem.Text = "缂╂斁";
             this.缂╂斁ToolStripMenuItem.Click += new System.EventHandler(this.缂╂斁ToolStripMenuItem_Click);
             // 
@@ -698,7 +714,7 @@
             this.鍏抽榾鍒嗘瀽涓嶈�冭檻姘存簮ToolStripMenuItem});
             this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("鍏抽榾鍒嗘瀽ToolStripMenuItem.Image")));
             this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Name = "鍏抽榾鍒嗘瀽ToolStripMenuItem";
-            this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Text = "鍏抽榾鍒嗘瀽";
             this.鍏抽榾鍒嗘瀽ToolStripMenuItem.Click += new System.EventHandler(this.鍏抽榾鎼滅储鑰冭檻姘存簮ToolStripMenuItem_Click);
             // 
@@ -713,7 +729,7 @@
             // 
             this.杩為�氭�ф鏌oolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("杩為�氭�ф鏌oolStripMenuItem1.Image")));
             this.杩為�氭�ф鏌oolStripMenuItem1.Name = "杩為�氭�ф鏌oolStripMenuItem1";
-            this.杩為�氭�ф鏌oolStripMenuItem1.Size = new System.Drawing.Size(148, 22);
+            this.杩為�氭�ф鏌oolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
             this.杩為�氭�ф鏌oolStripMenuItem1.Text = "杩為�氭�ф鏌�";
             this.杩為�氭�ф鏌oolStripMenuItem1.Click += new System.EventHandler(this.杩為�氭�ф鏌oolStripMenuItem1_Click);
             // 
@@ -721,7 +737,7 @@
             // 
             this.涓嬫父杩為�氭�oolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("涓嬫父杩為�氭�oolStripMenuItem.Image")));
             this.涓嬫父杩為�氭�oolStripMenuItem.Name = "涓嬫父杩為�氭�oolStripMenuItem";
-            this.涓嬫父杩為�氭�oolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.涓嬫父杩為�氭�oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.涓嬫父杩為�氭�oolStripMenuItem.Text = "涓嬫父杩為�氭��";
             this.涓嬫父杩為�氭�oolStripMenuItem.Click += new System.EventHandler(this.涓嬫父杩為�氭�oolStripMenuItem_Click);
             // 
@@ -729,14 +745,14 @@
             // 
             this.涓婃父杩為�氭�oolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("涓婃父杩為�氭�oolStripMenuItem.Image")));
             this.涓婃父杩為�氭�oolStripMenuItem.Name = "涓婃父杩為�氭�oolStripMenuItem";
-            this.涓婃父杩為�氭�oolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.涓婃父杩為�氭�oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.涓婃父杩為�氭�oolStripMenuItem.Text = "涓婃父杩為�氭��";
             // 
             // 鏍囬珮鎺ㄦ祴ToolStripMenuItem
             // 
             this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("鏍囬珮鎺ㄦ祴ToolStripMenuItem.Image")));
             this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Name = "鏍囬珮鎺ㄦ祴ToolStripMenuItem";
-            this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Text = "鏍囬珮鎺ㄦ祴";
             this.鏍囬珮鎺ㄦ祴ToolStripMenuItem.Click += new System.EventHandler(this.鏍囬珮鎺ㄦ祴ToolStripMenuItem_Click);
             // 
@@ -744,7 +760,7 @@
             // 
             this.鏍囬珮瀵煎嚭ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("鏍囬珮瀵煎嚭ToolStripMenuItem.Image")));
             this.鏍囬珮瀵煎嚭ToolStripMenuItem.Name = "鏍囬珮瀵煎嚭ToolStripMenuItem";
-            this.鏍囬珮瀵煎嚭ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鏍囬珮瀵煎嚭ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏍囬珮瀵煎嚭ToolStripMenuItem.Text = "鏍囬珮瀵煎嚭";
             this.鏍囬珮瀵煎嚭ToolStripMenuItem.Click += new System.EventHandler(this.鏍囬珮瀵煎嚭ToolStripMenuItem_Click);
             // 
@@ -752,28 +768,28 @@
             // 
             this.鏄剧ず姘存祦ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("鏄剧ず姘存祦ToolStripMenuItem.Image")));
             this.鏄剧ず姘存祦ToolStripMenuItem.Name = "鏄剧ず姘存祦ToolStripMenuItem";
-            this.鏄剧ず姘存祦ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鏄剧ず姘存祦ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず姘存祦ToolStripMenuItem.Text = "鏄剧ず姘存祦璺嚎";
             this.鏄剧ず姘存祦ToolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず姘存祦ToolStripMenuItem_Click);
             // 
             // 鏂瑰悜淇ToolStripMenuItem
             // 
             this.鏂瑰悜淇ToolStripMenuItem.Name = "鏂瑰悜淇ToolStripMenuItem";
-            this.鏂瑰悜淇ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鏂瑰悜淇ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏂瑰悜淇ToolStripMenuItem.Text = "鏂瑰悜淇";
             this.鏂瑰悜淇ToolStripMenuItem.Click += new System.EventHandler(this.鏂瑰悜淇ToolStripMenuItem_Click);
             // 
             // toolStripSeparator12
             // 
             this.toolStripSeparator12.Name = "toolStripSeparator12";
-            this.toolStripSeparator12.Size = new System.Drawing.Size(145, 6);
+            this.toolStripSeparator12.Size = new System.Drawing.Size(177, 6);
             // 
             // 澶嶅埗ToolStripMenuItem
             // 
             this.澶嶅埗ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("澶嶅埗ToolStripMenuItem.Image")));
             this.澶嶅埗ToolStripMenuItem.Name = "澶嶅埗ToolStripMenuItem";
             this.澶嶅埗ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C";
-            this.澶嶅埗ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.澶嶅埗ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.澶嶅埗ToolStripMenuItem.Text = "澶嶅埗";
             this.澶嶅埗ToolStripMenuItem.Click += new System.EventHandler(this.澶嶅埗ToolStripMenuItem_Click);
             // 
@@ -782,21 +798,21 @@
             this.绮樿创ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("绮樿创ToolStripMenuItem.Image")));
             this.绮樿创ToolStripMenuItem.Name = "绮樿创ToolStripMenuItem";
             this.绮樿创ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V";
-            this.绮樿创ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.绮樿创ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.绮樿创ToolStripMenuItem.Text = "绮樿创";
             this.绮樿创ToolStripMenuItem.Click += new System.EventHandler(this.绮樿创ToolStripMenuItem1_Click);
             // 
             // 鍒犻櫎ToolStripMenuItem1
             // 
             this.鍒犻櫎ToolStripMenuItem1.Name = "鍒犻櫎ToolStripMenuItem1";
-            this.鍒犻櫎ToolStripMenuItem1.Size = new System.Drawing.Size(148, 22);
+            this.鍒犻櫎ToolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
             this.鍒犻櫎ToolStripMenuItem1.Text = "鍒犻櫎";
             this.鍒犻櫎ToolStripMenuItem1.Click += new System.EventHandler(this.鍒犻櫎ToolStripMenuItem_Click);
             // 
             // toolStripSeparator15
             // 
             this.toolStripSeparator15.Name = "toolStripSeparator15";
-            this.toolStripSeparator15.Size = new System.Drawing.Size(145, 6);
+            this.toolStripSeparator15.Size = new System.Drawing.Size(177, 6);
             // 
             // 瀵归綈ToolStripMenuItem
             // 
@@ -807,7 +823,7 @@
             this.绔栫洿瀵归綈ToolStripMenuItem,
             this.鑷姩瀵归綈ToolStripMenuItem});
             this.瀵归綈ToolStripMenuItem.Name = "瀵归綈ToolStripMenuItem";
-            this.瀵归綈ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.瀵归綈ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.瀵归綈ToolStripMenuItem.Text = "瀵归綈";
             // 
             // toolStripSeparator16
@@ -850,7 +866,7 @@
             // 鎺掑垪ToolStripMenuItem
             // 
             this.鎺掑垪ToolStripMenuItem.Name = "鎺掑垪ToolStripMenuItem";
-            this.鎺掑垪ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鎺掑垪ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鎺掑垪ToolStripMenuItem.Text = "鎺掑垪";
             // 
             // toolStripSeparator8
@@ -886,55 +902,55 @@
             // 
             this.閲嶇疆ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("閲嶇疆ToolStripMenuItem.Image")));
             this.閲嶇疆ToolStripMenuItem.Name = "閲嶇疆ToolStripMenuItem";
-            this.閲嶇疆ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.閲嶇疆ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.閲嶇疆ToolStripMenuItem.Text = "閲嶇疆";
             this.閲嶇疆ToolStripMenuItem.Click += new System.EventHandler(this.閲嶇疆瑙嗚ToolStripMenuItem_Click);
             // 
             // toolStripSeparator14
             // 
             this.toolStripSeparator14.Name = "toolStripSeparator14";
-            this.toolStripSeparator14.Size = new System.Drawing.Size(145, 6);
+            this.toolStripSeparator14.Size = new System.Drawing.Size(177, 6);
             // 
             // toolStripMenuItem8
             // 
             this.toolStripMenuItem8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem8.Image")));
             this.toolStripMenuItem8.Name = "toolStripMenuItem8";
-            this.toolStripMenuItem8.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem8.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem8.Text = "90";
             this.toolStripMenuItem8.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripMenuItem7
             // 
             this.toolStripMenuItem7.Name = "toolStripMenuItem7";
-            this.toolStripMenuItem7.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem7.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem7.Text = "75";
             this.toolStripMenuItem7.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripMenuItem6
             // 
             this.toolStripMenuItem6.Name = "toolStripMenuItem6";
-            this.toolStripMenuItem6.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem6.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem6.Text = "60";
             this.toolStripMenuItem6.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripMenuItem5
             // 
             this.toolStripMenuItem5.Name = "toolStripMenuItem5";
-            this.toolStripMenuItem5.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem5.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem5.Text = "45";
             this.toolStripMenuItem5.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripMenuItem4
             // 
             this.toolStripMenuItem4.Name = "toolStripMenuItem4";
-            this.toolStripMenuItem4.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem4.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem4.Text = "30";
             this.toolStripMenuItem4.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripMenuItem3
             // 
             this.toolStripMenuItem3.Name = "toolStripMenuItem3";
-            this.toolStripMenuItem3.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem3.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem3.Text = "15";
             this.toolStripMenuItem3.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
@@ -942,39 +958,39 @@
             // 
             this.toolStripMenuItem2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem2.Image")));
             this.toolStripMenuItem2.Name = "toolStripMenuItem2";
-            this.toolStripMenuItem2.Size = new System.Drawing.Size(148, 22);
+            this.toolStripMenuItem2.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem2.Text = "0";
             this.toolStripMenuItem2.Click += new System.EventHandler(this.tool璁剧疆淇瑙掑害_Click);
             // 
             // toolStripSeparator3
             // 
             this.toolStripSeparator3.Name = "toolStripSeparator3";
-            this.toolStripSeparator3.Size = new System.Drawing.Size(145, 6);
+            this.toolStripSeparator3.Size = new System.Drawing.Size(177, 6);
             // 
             // ToolStripMenuItem_Floor
             // 
             this.ToolStripMenuItem_Floor.Name = "ToolStripMenuItem_Floor";
-            this.ToolStripMenuItem_Floor.Size = new System.Drawing.Size(148, 22);
+            this.ToolStripMenuItem_Floor.Size = new System.Drawing.Size(180, 22);
             this.ToolStripMenuItem_Floor.Text = "妤煎眰";
             // 
             // 鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem
             // 
             this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem.Name = "鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem";
-            this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem.Text = "鏄剧ず鍏ㄩ儴妤煎眰";
             this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem_Click);
             // 
             // 淇濆瓨妤煎眰瑙嗚ToolStripMenuItem
             // 
             this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem.Name = "淇濆瓨妤煎眰瑙嗚ToolStripMenuItem";
-            this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem.Text = "淇濆瓨妤煎眰瑙嗚";
             this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem.Click += new System.EventHandler(this.淇濆瓨妤煎眰瑙嗚ToolStripMenuItem_Click);
             // 
             // 鍒锋柊妤煎眰ToolStripMenuItem
             // 
             this.鍒锋柊妤煎眰ToolStripMenuItem.Name = "鍒锋柊妤煎眰ToolStripMenuItem";
-            this.鍒锋柊妤煎眰ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
+            this.鍒锋柊妤煎眰ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鍒锋柊妤煎眰ToolStripMenuItem.Text = "鍒锋柊妤煎眰";
             this.鍒锋柊妤煎眰ToolStripMenuItem.Click += new System.EventHandler(this.鍒锋柊妤煎眰ToolStripMenuItem_Click);
             // 
@@ -1041,14 +1057,14 @@
             // 鏄剧ず鑺傜偣ToolStripMenuItem
             // 
             this.鏄剧ず鑺傜偣ToolStripMenuItem.Name = "鏄剧ず鑺傜偣ToolStripMenuItem";
-            this.鏄剧ず鑺傜偣ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鏄剧ず鑺傜偣ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず鑺傜偣ToolStripMenuItem.Text = "鏄剧ず鑺傜偣";
             this.鏄剧ず鑺傜偣ToolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず鑺傜偣ToolStripMenuItem_Click);
             // 
             // 闅愯棌鑺傜偣ToolStripMenuItem
             // 
             this.闅愯棌鑺傜偣ToolStripMenuItem.Name = "闅愯棌鑺傜偣ToolStripMenuItem";
-            this.闅愯棌鑺傜偣ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.闅愯棌鑺傜偣ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.闅愯棌鑺傜偣ToolStripMenuItem.Text = "闅愯棌鑺傜偣";
             this.闅愯棌鑺傜偣ToolStripMenuItem.Click += new System.EventHandler(this.闅愯棌鑺傜偣ToolStripMenuItem_Click);
             // 
@@ -1059,7 +1075,7 @@
             this.涓璗oolStripMenuItem,
             this.灏廡oolStripMenuItem});
             this.鑺傜偣澶у皬ToolStripMenuItem.Name = "鑺傜偣澶у皬ToolStripMenuItem";
-            this.鑺傜偣澶у皬ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鑺傜偣澶у皬ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鑺傜偣澶у皬ToolStripMenuItem.Text = "鑺傜偣澶у皬";
             // 
             // 澶oolStripMenuItem
@@ -1086,19 +1102,19 @@
             // toolStripSeparator10
             // 
             this.toolStripSeparator10.Name = "toolStripSeparator10";
-            this.toolStripSeparator10.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator10.Size = new System.Drawing.Size(177, 6);
             // 
             // 鏄剧ず闃�闂═oolStripMenuItem
             // 
             this.鏄剧ず闃�闂═oolStripMenuItem.Name = "鏄剧ず闃�闂═oolStripMenuItem";
-            this.鏄剧ず闃�闂═oolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鏄剧ず闃�闂═oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず闃�闂═oolStripMenuItem.Text = "鏄剧ず闃�闂�";
             this.鏄剧ず闃�闂═oolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず闃�闂═oolStripMenuItem_Click);
             // 
             // 闅愯棌闃�闂═oolStripMenuItem
             // 
             this.闅愯棌闃�闂═oolStripMenuItem.Name = "闅愯棌闃�闂═oolStripMenuItem";
-            this.闅愯棌闃�闂═oolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.闅愯棌闃�闂═oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.闅愯棌闃�闂═oolStripMenuItem.Text = "闅愯棌闃�闂�";
             this.闅愯棌闃�闂═oolStripMenuItem.Click += new System.EventHandler(this.闅愯棌闃�闂═oolStripMenuItem_Click);
             // 
@@ -1109,7 +1125,7 @@
             this.涓璗oolStripMenuItem1,
             this.灏廡oolStripMenuItem1});
             this.绠$嚎绮楃粏ToolStripMenuItem.Name = "绠$嚎绮楃粏ToolStripMenuItem";
-            this.绠$嚎绮楃粏ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.绠$嚎绮楃粏ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.绠$嚎绮楃粏ToolStripMenuItem.Text = "绠$嚎绮楃粏";
             // 
             // 澶oolStripMenuItem1
@@ -1136,7 +1152,7 @@
             // toolStripSeparator13
             // 
             this.toolStripSeparator13.Name = "toolStripSeparator13";
-            this.toolStripSeparator13.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator13.Size = new System.Drawing.Size(177, 6);
             // 
             // 缂╂斁绾у埆ToolStripMenuItem
             // 
@@ -1145,7 +1161,7 @@
             this.姝e父ToolStripMenuItem,
             this.缂╁皬ToolStripMenuItem});
             this.缂╂斁绾у埆ToolStripMenuItem.Name = "缂╂斁绾у埆ToolStripMenuItem";
-            this.缂╂斁绾у埆ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.缂╂斁绾у埆ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.缂╂斁绾у埆ToolStripMenuItem.Text = "缂╂斁绾у埆";
             // 
             // 鏀惧ぇToolStripMenuItem2
@@ -1169,7 +1185,7 @@
             // toolStripSeparator5
             // 
             this.toolStripSeparator5.Name = "toolStripSeparator5";
-            this.toolStripSeparator5.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6);
             // 
             // 闅愯棌鍐呭ToolStripMenuItem
             // 
@@ -1177,7 +1193,7 @@
             this.鏄剧ず鎵�鏈夐殣钘忓唴瀹筎oolStripMenuItem,
             this.闅愯棌ToolStripMenuItem});
             this.闅愯棌鍐呭ToolStripMenuItem.Name = "闅愯棌鍐呭ToolStripMenuItem";
-            this.闅愯棌鍐呭ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.闅愯棌鍐呭ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.闅愯棌鍐呭ToolStripMenuItem.Text = "闅愯棌鍐呭";
             // 
             // 鏄剧ず鎵�鏈夐殣钘忓唴瀹筎oolStripMenuItem
@@ -1196,83 +1212,83 @@
             // toolStripSeparator17
             // 
             this.toolStripSeparator17.Name = "toolStripSeparator17";
-            this.toolStripSeparator17.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator17.Size = new System.Drawing.Size(177, 6);
             // 
             // 娣诲姞搴曞浘ToolStripMenuItem
             // 
             this.娣诲姞搴曞浘ToolStripMenuItem.Name = "娣诲姞搴曞浘ToolStripMenuItem";
-            this.娣诲姞搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.娣诲姞搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.娣诲姞搴曞浘ToolStripMenuItem.Text = "娣诲姞搴曞浘";
             this.娣诲姞搴曞浘ToolStripMenuItem.Click += new System.EventHandler(this.娣诲姞搴曞浘ToolStripMenuItem_Click);
             // 
             // 璁剧疆搴曞浘ToolStripMenuItem
             // 
             this.璁剧疆搴曞浘ToolStripMenuItem.Name = "璁剧疆搴曞浘ToolStripMenuItem";
-            this.璁剧疆搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.璁剧疆搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.璁剧疆搴曞浘ToolStripMenuItem.Text = "璁剧疆搴曞浘";
             this.璁剧疆搴曞浘ToolStripMenuItem.Click += new System.EventHandler(this.璁剧疆搴曞浘ToolStripMenuItem_Click);
             // 
             // 鏄剧ず闅愯棌搴曞浘ToolStripMenuItem
             // 
             this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem.Name = "鏄剧ず闅愯棌搴曞浘ToolStripMenuItem";
-            this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem.Text = "鏄剧ず/闅愯棌搴曞浘";
             this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず闅愯棌搴曞浘ToolStripMenuItem_Click);
             // 
             // 娓呴櫎搴曞浘ToolStripMenuItem
             // 
             this.娓呴櫎搴曞浘ToolStripMenuItem.Name = "娓呴櫎搴曞浘ToolStripMenuItem";
-            this.娓呴櫎搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.娓呴櫎搴曞浘ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.娓呴櫎搴曞浘ToolStripMenuItem.Text = "娓呴櫎搴曞浘";
             this.娓呴櫎搴曞浘ToolStripMenuItem.Click += new System.EventHandler(this.娓呴櫎搴曞浘ToolStripMenuItem_Click);
             // 
             // toolStripSeparator18
             // 
             this.toolStripSeparator18.Name = "toolStripSeparator18";
-            this.toolStripSeparator18.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator18.Size = new System.Drawing.Size(177, 6);
             // 
             // 鏄剧ず鐘舵�乀oolStripMenuItem
             // 
             this.鏄剧ず鐘舵�乀oolStripMenuItem.Name = "鏄剧ず鐘舵�乀oolStripMenuItem";
-            this.鏄剧ず鐘舵�乀oolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鏄剧ず鐘舵�乀oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず鐘舵�乀oolStripMenuItem.Text = "鏄剧ず鐘舵��";
             this.鏄剧ず鐘舵�乀oolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず鐘舵�乀oolStripMenuItem_Click);
             // 
             // 闅愯棌鐘舵�乀oolStripMenuItem
             // 
             this.闅愯棌鐘舵�乀oolStripMenuItem.Name = "闅愯棌鐘舵�乀oolStripMenuItem";
-            this.闅愯棌鐘舵�乀oolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.闅愯棌鐘舵�乀oolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.闅愯棌鐘舵�乀oolStripMenuItem.Text = "闅愯棌鐘舵��";
             this.闅愯棌鐘舵�乀oolStripMenuItem.Click += new System.EventHandler(this.闅愯棌鐘舵�乀oolStripMenuItem_Click);
             // 
             // toolStripSeparator19
             // 
             this.toolStripSeparator19.Name = "toolStripSeparator19";
-            this.toolStripSeparator19.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator19.Size = new System.Drawing.Size(177, 6);
             // 
             // 鏄剧ず娴佸悜ToolStripMenuItem
             // 
             this.鏄剧ず娴佸悜ToolStripMenuItem.Name = "鏄剧ず娴佸悜ToolStripMenuItem";
-            this.鏄剧ず娴佸悜ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.鏄剧ず娴佸悜ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.鏄剧ず娴佸悜ToolStripMenuItem.Text = "鏄剧ず娴佸悜";
             this.鏄剧ず娴佸悜ToolStripMenuItem.Click += new System.EventHandler(this.鏄剧ず娴佸悜ToolStripMenuItem_Click);
             // 
             // 闅愯棌娴佸悜ToolStripMenuItem
             // 
             this.闅愯棌娴佸悜ToolStripMenuItem.Name = "闅愯棌娴佸悜ToolStripMenuItem";
-            this.闅愯棌娴佸悜ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.闅愯棌娴佸悜ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.闅愯棌娴佸悜ToolStripMenuItem.Text = "闅愯棌娴佸悜";
             this.闅愯棌娴佸悜ToolStripMenuItem.Click += new System.EventHandler(this.闅愯棌娴佸悜ToolStripMenuItem_Click);
             // 
             // toolStripSeparator20
             // 
             this.toolStripSeparator20.Name = "toolStripSeparator20";
-            this.toolStripSeparator20.Size = new System.Drawing.Size(150, 6);
+            this.toolStripSeparator20.Size = new System.Drawing.Size(177, 6);
             // 
             // 棰滆壊鍒嗙骇绠$悊ToolStripMenuItem
             // 
             this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem.Name = "棰滆壊鍒嗙骇绠$悊ToolStripMenuItem";
-            this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
+            this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem.Text = "棰滆壊鍒嗙骇绠$悊";
             this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem.Click += new System.EventHandler(this.棰滆壊鍒嗙骇绠$悊ToolStripMenuItem_Click);
             // 
@@ -1335,11 +1351,13 @@
             // 瑙嗚ToolStripMenuItem
             // 
             this.瑙嗚ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.榛樿瑙嗚ToolStripMenuItem,
+            this.toolStripSeparator23,
             this.淇鍥綯oolStripMenuItem,
             this.姝h鍥綯oolStripMenuItem,
             this.閲嶇疆瑙嗚ToolStripMenuItem});
             this.瑙嗚ToolStripMenuItem.Name = "瑙嗚ToolStripMenuItem";
-            this.瑙嗚ToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
+            this.瑙嗚ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.瑙嗚ToolStripMenuItem.Text = "瑙嗚";
             // 
             // 淇鍥綯oolStripMenuItem
@@ -1532,6 +1550,37 @@
             this.鍙嶉�塗oolStripMenuItem.Size = new System.Drawing.Size(145, 22);
             this.鍙嶉�塗oolStripMenuItem.Text = "鍙嶉��";
             this.鍙嶉�塗oolStripMenuItem.Click += new System.EventHandler(this.鍙嶉�塗oolStripMenuItem_Click);
+            // 
+            // timer_draw
+            // 
+            this.timer_draw.Enabled = true;
+            this.timer_draw.Interval = 33;
+            this.timer_draw.Tick += new System.EventHandler(this.timer_draw_Tick);
+            // 
+            // toolStripSeparator22
+            // 
+            this.toolStripSeparator22.Name = "toolStripSeparator22";
+            this.toolStripSeparator22.Size = new System.Drawing.Size(177, 6);
+            // 
+            // 妤煎眰绠$悊ToolStripMenuItem
+            // 
+            this.妤煎眰绠$悊ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("妤煎眰绠$悊ToolStripMenuItem.Image")));
+            this.妤煎眰绠$悊ToolStripMenuItem.Name = "妤煎眰绠$悊ToolStripMenuItem";
+            this.妤煎眰绠$悊ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+            this.妤煎眰绠$悊ToolStripMenuItem.Text = "妤煎眰绠$悊";
+            this.妤煎眰绠$悊ToolStripMenuItem.Click += new System.EventHandler(this.妤煎眰绠$悊ToolStripMenuItem_Click);
+            // 
+            // toolStripSeparator23
+            // 
+            this.toolStripSeparator23.Name = "toolStripSeparator23";
+            this.toolStripSeparator23.Size = new System.Drawing.Size(177, 6);
+            // 
+            // 榛樿瑙嗚ToolStripMenuItem
+            // 
+            this.榛樿瑙嗚ToolStripMenuItem.Name = "榛樿瑙嗚ToolStripMenuItem";
+            this.榛樿瑙嗚ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+            this.榛樿瑙嗚ToolStripMenuItem.Text = "榛樿瑙嗚";
+            this.榛樿瑙嗚ToolStripMenuItem.Click += new System.EventHandler(this.榛樿瑙嗚ToolStripMenuItem_Click);
             // 
             // MapViewer
             // 
@@ -1740,5 +1789,11 @@
         private ToolStripMenuItem 棰滆壊鍒嗙骇绠$悊ToolStripMenuItem;
         private ToolStripButton tb_棰滆壊鍒嗙骇璁剧疆;
         private ToolStripSeparator toolStripSeparator21;
+        private Timer timer_draw;
+        private ToolStripStatusLabel label_ZZ;
+        private ToolStripSeparator toolStripSeparator22;
+        private ToolStripMenuItem 妤煎眰绠$悊ToolStripMenuItem;
+        private ToolStripMenuItem 榛樿瑙嗚ToolStripMenuItem;
+        private ToolStripSeparator toolStripSeparator23;
     }
 }
diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
index 242304c..6b08526 100644
--- a/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
+++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
@@ -39,11 +39,12 @@
 
         #region 鏂板绠$綉
         [Browsable(false)]
-        public Template _newTemplate { get; set; } = new Template();
+        public Template _newTemplate { get; set; } = null;// new Template();
         MapViewNetWork _NewNet
         {
             get
             {
+                if (_newTemplate==null) _newTemplate = new Template();
                 if (_newTemplate.network == null) _newTemplate.network = new MapViewNetWork(); 
                 return _newTemplate.network;
             }
@@ -189,13 +190,43 @@
         private const float MaxZoom = 1000.0f;
 
         [DisplayName("缂╂斁绯绘暟")]
-        public float zoom { get { return mapOption.zoom; }set { mapOption.zoom = value; } }
+        public float zoom 
+        { 
+            get
+            { 
+                return mapOption.zoom;
+            }
+            set
+            { 
+                mapOption.zoom = value; 
+            } 
+        }
         [DisplayName("鏃嬭浆瑙掑害")]
-        public double Rotation { get { return mapOption.rotation; } set { mapOption.rotation = value; } }
+        public double Rotation 
+        {
+            get
+            {
+                return mapOption.rotation; 
+            } 
+            set 
+            { 
+                mapOption.rotation = value; 
+            } 
+        }
         
         private double Rotation0 = 0;
         [Browsable(false)]
-        public PointF MapCenter { get { return mapOption.Center; } set { mapOption.Center = value; } }
+        public PointF MapCenter 
+        { 
+            get 
+            { 
+                return mapOption.Center; 
+            } 
+            set 
+            { 
+                mapOption.Center = value; 
+            } 
+        }
         private PointF MapCenter0;
         private bool is3Dview = false;
         double 淇瑙掑害_start = 90;
@@ -206,13 +237,15 @@
         [DisplayName("淇瑙掑害")]
         public double RotationF 
         { 
-            get {
+            get 
+            {
                 if (Lock2DView) 
                     mapOption.rotationF = 90;
                 
                 return mapOption.rotationF; 
             } 
-            set { 
+            set 
+            { 
                 
                 if (Lock2DView) 
                     mapOption.rotationF = 90;
diff --git a/Hydraulic/Hydro.MapUI/WindowsForm/Form_EditFloors.cs b/Hydraulic/Hydro.MapUI/WindowsForm/Form_EditFloors.cs
index 783dab1..ac6ae3e 100644
--- a/Hydraulic/Hydro.MapUI/WindowsForm/Form_EditFloors.cs
+++ b/Hydraulic/Hydro.MapUI/WindowsForm/Form_EditFloors.cs
@@ -13,7 +13,7 @@
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement;
-using TRegion = Hydro.MapView.TRegion;
+//using TRegion = Hydro.MapView.TRegion;
 
 namespace Hydro.MapUI
 {
diff --git a/Hydraulic/Hydro.MapView/Base/AreaViewModel.cs b/Hydraulic/Hydro.MapView/Base/AreaViewModel.cs
index 57a68bd..723fea0 100644
--- a/Hydraulic/Hydro.MapView/Base/AreaViewModel.cs
+++ b/Hydraulic/Hydro.MapView/Base/AreaViewModel.cs
@@ -32,6 +32,13 @@
         [Browsable(false)]
         public bool Selected { get; set; }
 
+        [Category("4銆佸叾浠栧弬鏁�")]
+        [Description("榧犳爣鎮簬涓婃柟")]
+        [DisplayName("榧犳爣鎮簬涓婃柟")]
+        [Browsable(false)]
+        public bool Hovered { get; set; }
+
+
 
         [Category("4銆佸叾浠栧弬鏁�")]
         [Description("閫変腑")]
diff --git a/Hydraulic/Hydro.MapView/Base/IBaseViewModel.cs b/Hydraulic/Hydro.MapView/Base/IBaseViewModel.cs
index 24a0b93..ecdf2ac 100644
--- a/Hydraulic/Hydro.MapView/Base/IBaseViewModel.cs
+++ b/Hydraulic/Hydro.MapView/Base/IBaseViewModel.cs
@@ -25,6 +25,8 @@
         [DisplayName("閫変腑")]
         [Browsable(false)]
         bool Selected { get; set; }
+        [Browsable(false)]
+        bool Hovered { get; set; }
 
 
         [Category("4銆佸叾浠栧弬鏁�")]
@@ -104,6 +106,7 @@
         MapObjectType GetTypeString();
 
         TagList Tags { get; set; }
+        
 
         //string TagsString { get; set; }
 
diff --git a/Hydraulic/Hydro.MapView/Base/LinkViewModel.cs b/Hydraulic/Hydro.MapView/Base/LinkViewModel.cs
index a3b03b5..0e9f8bd 100644
--- a/Hydraulic/Hydro.MapView/Base/LinkViewModel.cs
+++ b/Hydraulic/Hydro.MapView/Base/LinkViewModel.cs
@@ -115,7 +115,7 @@
 
 
         [Browsable(false)]
-
+        [JsonIgnore]
         public List<PointF> Points { get { return new List<PointF>() { StartNode.Position, EndNode.Position }; } }
         public PointF[] ToArray(bool is3Dview = false)
         {
diff --git a/Hydraulic/Hydro.MapView/Hydro.MapView.csproj b/Hydraulic/Hydro.MapView/Hydro.MapView.csproj
index af47f47..23272c5 100644
--- a/Hydraulic/Hydro.MapView/Hydro.MapView.csproj
+++ b/Hydraulic/Hydro.MapView/Hydro.MapView.csproj
@@ -18,17 +18,17 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>0</WarningLevel>
     <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x64</PlatformTarget>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydraulic/Hydro.MapView/MapViewNetWork.cs b/Hydraulic/Hydro.MapView/MapViewNetWork.cs
index 0df3766..ecda281 100644
--- a/Hydraulic/Hydro.MapView/MapViewNetWork.cs
+++ b/Hydraulic/Hydro.MapView/MapViewNetWork.cs
@@ -50,8 +50,9 @@
         /// 鏍稿績鎵胯浇瀛楁
         /// </summary>
         //public new List<LinkViewModel> Links = new List<LinkViewModel>();
-
+        [JsonIgnore]
         public Dictionary<string, Dataset> dict_dataset = new Dictionary<string, Dataset>();
+        [JsonIgnore]
         public HashSet<string> Hash_ID;
 
         [JsonIgnore]
diff --git a/Hydraulic/Hydro.MapView/Template/Template.cs b/Hydraulic/Hydro.MapView/Template/Template.cs
index 8bdbaaa..290dd3c 100644
--- a/Hydraulic/Hydro.MapView/Template/Template.cs
+++ b/Hydraulic/Hydro.MapView/Template/Template.cs
@@ -156,7 +156,7 @@
         [Category("5銆佹ゼ灞�")]
         [DisplayName("妤煎眰")]
 
-        public List<TRegion> Regions { get; set; } = new List<TRegion>();
+        public List<TRegion> Regions { get; set; } = null;// new List<TRegion>();
 
         [Category("1銆佸熀鏈俊鎭�")]
         [DisplayName("鏍囬珮")]
diff --git a/Hydraulic/Hydro.Revit2022/Hydro.Revit2022.csproj b/Hydraulic/Hydro.Revit2022/Hydro.Revit2022.csproj
index 631feba..19c0155 100644
--- a/Hydraulic/Hydro.Revit2022/Hydro.Revit2022.csproj
+++ b/Hydraulic/Hydro.Revit2022/Hydro.Revit2022.csproj
@@ -17,7 +17,7 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\..\bin\debug\</OutputPath>
+    <OutputPath>..\..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
@@ -26,7 +26,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\bin\release\</OutputPath>
+    <OutputPath>..\..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
diff --git a/Hydro.ClientTool/App.config b/Hydro.ClientTool/App.config
index 56efbc7..4d54a72 100644
--- a/Hydro.ClientTool/App.config
+++ b/Hydro.ClientTool/App.config
@@ -1,6 +1,18 @@
-锘�<?xml version="1.0" encoding="utf-8" ?>
+锘�<?xml version="1.0" encoding="utf-8"?>
 <configuration>
     <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
     </startup>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
 </configuration>
\ No newline at end of file
diff --git a/Hydro.ClientTool/Form1.Designer.cs b/Hydro.ClientTool/Form1.Designer.cs
index 5944073..2337e9e 100644
--- a/Hydro.ClientTool/Form1.Designer.cs
+++ b/Hydro.ClientTool/Form1.Designer.cs
@@ -28,25 +28,38 @@
         /// </summary>
         private void InitializeComponent()
         {
-            this.button1 = new System.Windows.Forms.Button();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+            //this.mapViewer1 = new Hydro.MapUI.MapViewer();
             this.SuspendLayout();
             // 
-            // button1
+            // mapViewer1
             // 
-            this.button1.Location = new System.Drawing.Point(79, 95);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(75, 23);
-            this.button1.TabIndex = 0;
-            this.button1.Text = "button1";
-            this.button1.UseVisualStyleBackColor = true;
-            this.button1.Click += new System.EventHandler(this.button1_Click);
+            //this.mapViewer1._IsEditMode = true;
+            //this.mapViewer1._newTemplate = null;/*((Hydro.MapView.Template)(resources.GetObject("mapViewer1._newTemplate")));*/
+            //this.mapViewer1._ShowJunction = true;
+            //this.mapViewer1._ShowValve = true;
+            //this.mapViewer1._Template = null;
+            //this.mapViewer1.BackColor = System.Drawing.Color.Transparent;
+            //this.mapViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            //this.mapViewer1.junction_multiply = 1F;
+            //this.mapViewer1.Link_multiply = 1F;
+            //this.mapViewer1.Location = new System.Drawing.Point(0, 0);
+            //this.mapViewer1.MapCenter = new System.Drawing.PointF(0,0);//((System.Drawing.PointF)(resources.GetObject("mapViewer1.MapCenter")));
+            //this.mapViewer1.Name = "mapViewer1";
+            //this.mapViewer1.Rotation = 0D;
+            //this.mapViewer1.RotationF = 90D;
+            //this.mapViewer1.ShowStatusBar = true;
+            //this.mapViewer1.showToolBar = false;
+            //this.mapViewer1.Size = new System.Drawing.Size(800, 450);
+            //this.mapViewer1.TabIndex = 1;
+            //this.mapViewer1.zoom = 1F;
             // 
             // Form1
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(800, 450);
-            this.Controls.Add(this.button1);
+            //this.Controls.Add(this.mapViewer1);
             this.Name = "Form1";
             this.Text = "Form1";
             this.Load += new System.EventHandler(this.Form1_Load);
@@ -56,7 +69,7 @@
 
         #endregion
 
-        private System.Windows.Forms.Button button1;
+        //private MapUI.MapViewer mapViewer1;
     }
 }
 
diff --git a/Hydro.ClientTool/Form1.cs b/Hydro.ClientTool/Form1.cs
index bf2cebd..6ce52b8 100644
--- a/Hydro.ClientTool/Form1.cs
+++ b/Hydro.ClientTool/Form1.cs
@@ -7,7 +7,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
-using Hydro.MapUI;
+//using Hydro.MapUI;
 
 namespace Hydro.ClientTool
 {
@@ -25,7 +25,7 @@
 
         private void button1_Click(object sender, EventArgs e)
         {
-            MapViewer viwer = new MapViewer(true);
+            //MapViewer viwer = new MapViewer(true);
             //viwer.Dock = DockStyle.Fill;
             //viwer.Name = "MapViewer";
             //this.Controls.Add(viwer);
diff --git a/Hydro.ClientTool/Form1.resx b/Hydro.ClientTool/Form1.resx
index 1af7de1..ecba174 100644
--- a/Hydro.ClientTool/Form1.resx
+++ b/Hydro.ClientTool/Form1.resx
@@ -117,4 +117,52 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <data name="mapViewer1._newTemplate" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAERIeWRyby5NYXBWaWV3LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
+        cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9u
+        PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwE
+        AAAAkwFIeWRyby5NYXBWaWV3LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGlj
+        S2V5VG9rZW49bnVsbF1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWws
+        IFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABZIeWRyby5NYXBWaWV3LlRlbXBsYXRl
+        GQAAAANfSUQVPE5hbWU+a19fQmFja2luZ0ZpZWxkGjxtYXBPcHRpb24+a19fQmFja2luZ0ZpZWxkCV9m
+        aWxlUGF0aBc8T2ZmU2V0PmtfX0JhY2tpbmdGaWVsZA5CYWNrR3JvdW5kRWxldg5CYWNrR3JvdW5kSW1n
+        WA5CYWNrR3JvdW5kSW1nWRNCYWNrR3JvdW5kSW1nSGVpZ2h0EkJhY2tHcm91bmRJbWdXaWR0aBZCYWNr
+        R3JvdW5kSW1nUm90YUFuZ2xlEEJhY2tHcm91bmRQb2ludDEQQmFja0dyb3VuZFBvaW50MiA8SW1wb3J0
+        RXhjZWxQYXRoPmtfX0JhY2tpbmdGaWVsZCE8SW1wb3J0RXhjZWxJbmRleD5rX19CYWNraW5nRmllbGQZ
+        PE1heExldmVsPmtfX0JhY2tpbmdGaWVsZBU8VHlwZT5rX19CYWNraW5nRmllbGQYPFJlZ2lvbnM+a19f
+        QmFja2luZ0ZpZWxkFjxOb2RlMT5rX19CYWNraW5nRmllbGQWPE5vZGUyPmtfX0JhY2tpbmdGaWVsZBI8
+        WD5rX19CYWNraW5nRmllbGQSPFk+a19fQmFja2luZ0ZpZWxkGDxWaXNpYmxlPmtfX0JhY2tpbmdGaWVs
+        ZBU8dmlldz5rX19CYWNraW5nRmllbGQYPENvbG91cnM+a19fQmFja2luZ0ZpZWxkAQEEAQQAAAAAAAAE
+        BAEAAAQEAQEBAQEEBBdIeWRyby5NYXBWaWV3Lk1hcE9wdGlvbgIAAAAWSHlkcm8uTWFwVmlldy5Qb2lu
+        dEYzRAIAAAALCwsLCwsVU3lzdGVtLkRyYXdpbmcuUG9pbnRGAwAAABVTeXN0ZW0uRHJhd2luZy5Qb2lu
+        dEYDAAAACAgmSHlkcm8uTWFwVmlldy5NYXBWaWV3RW51bStUZW1wbGF0ZVR5cGUCAAAAOFN5c3RlbS5D
+        b2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbSHlkcm8uTWFwVmlldy5UUmVnaW9uBAAAABtIeWRyby5N
+        YXBWaWV3Lk1hcERpbWVuc2lvbnMCAAAAN1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtb
+        SHlkcm8uTWFwVmlldy5Db2xvdXIEAAAAAgAAAAYFAAAAJDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAw
+        MDAwMDAwMDAwMAYGAAAABuS4tOaXtgkHAAAACgkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABff/
+        //8VU3lzdGVtLkRyYXdpbmcuUG9pbnRGAgAAAAF4AXkAAAsLAwAAAAAAAAAAAAAAAfb////3////AAAA
+        AAAAAAAKAAAAAGMAAAAF9f///yZIeWRyby5NYXBWaWV3Lk1hcFZpZXdFbnVtK1RlbXBsYXRlVHlwZQEA
+        AAAHdmFsdWVfXwAIAgAAAAAAAAAJDAAAAAoKCgoKCgkNAAAABQcAAAAXSHlkcm8uTWFwVmlldy5NYXBP
+        cHRpb24GAAAAHjxMaW5rX211bHRpcGx5PmtfX0JhY2tpbmdGaWVsZCI8anVuY3Rpb25fbXVsdGlwbHk+
+        a19fQmFja2luZ0ZpZWxkGzxfU2hvd1ZhbHZlPmtfX0JhY2tpbmdGaWVsZB48X1Nob3dKdW5jdGlvbj5r
+        X19CYWNraW5nRmllbGQcPF9TaG93U3RhdHVzPmtfX0JhY2tpbmdGaWVsZCM8X1Nob3dGbG93RGlyZWN0
+        aW9uPmtfX0JhY2tpbmdGaWVsZAAAAAAAAAsLAQEBAQIAAADarCo/AACAPwEBAAAFCAAAABZIeWRyby5N
+        YXBWaWV3LlBvaW50RjNEAwAAABI8WD5rX19CYWNraW5nRmllbGQSPFk+a19fQmFja2luZ0ZpZWxkEjxa
+        PmtfX0JhY2tpbmdGaWVsZAAAAAsLCwIAAAAAAAAAAAAAAAAAAAAFDAAAADhTeXN0ZW0uQ29sbGVjdGlv
+        bnMuR2VuZXJpYy5MaXN0YDFbW0h5ZHJvLk1hcFZpZXcuVFJlZ2lvbgMAAAAGX2l0ZW1zBV9zaXplCF92
+        ZXJzaW9uBAAAF0h5ZHJvLk1hcFZpZXcuVFJlZ2lvbltdAgAAAAgIBAAAAAkOAAAAAAAAAAAAAAAFDQAA
+        ADdTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW0h5ZHJvLk1hcFZpZXcuQ29sb3VyAwAA
+        AAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAWSHlkcm8uTWFwVmlldy5Db2xvdXJbXQIAAAAICAQAAAAJ
+        DwAAAAAAAAAAAAAABw4AAAAAAQAAAAAAAAAEFUh5ZHJvLk1hcFZpZXcuVFJlZ2lvbgIAAAAHDwAAAAAB
+        AAAAAAAAAAQUSHlkcm8uTWFwVmlldy5Db2xvdXICAAAACw==
+</value>
+  </data>
+  <data name="mapViewer1.MapCenter" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
+        dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh
+        d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL
+</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Hydro.ClientTool/Form2.Designer.cs b/Hydro.ClientTool/Form2.Designer.cs
new file mode 100644
index 0000000..228ac9f
--- /dev/null
+++ b/Hydro.ClientTool/Form2.Designer.cs
@@ -0,0 +1,89 @@
+锘�
+namespace Hydro.ClientTool
+{
+    partial class Form2
+    {
+        /// <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()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
+            this.mapViewer1 = new Hydro.MapUI.MapViewer();
+            this.propertyForm1 = new Hydro.MapUI.PropertyForm();
+            this.SuspendLayout();
+            // 
+            // mapViewer1
+            // 
+            this.mapViewer1._IsEditMode = true;
+            this.mapViewer1._newTemplate = null;
+            this.mapViewer1._ShowJunction = true;
+            this.mapViewer1._ShowValve = true;
+            this.mapViewer1._Template = null;
+            this.mapViewer1.BackColor = System.Drawing.Color.Transparent;
+            this.mapViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mapViewer1.junction_multiply = 1F;
+            this.mapViewer1.Link_multiply = 1F;
+            this.mapViewer1.Location = new System.Drawing.Point(0, 0);
+            this.mapViewer1.MapCenter = ((System.Drawing.PointF)(resources.GetObject("mapViewer1.MapCenter")));
+            this.mapViewer1.Name = "mapViewer1";
+            this.mapViewer1.Rotation = 0D;
+            this.mapViewer1.RotationF = 90D;
+            this.mapViewer1.ShowStatusBar = true;
+            this.mapViewer1.showToolBar = true;
+            this.mapViewer1.Size = new System.Drawing.Size(1000, 666);
+            this.mapViewer1.TabIndex = 0;
+            this.mapViewer1.zoom = 1F;
+            // 
+            // propertyForm1
+            // 
+            this.propertyForm1.Dock = System.Windows.Forms.DockStyle.Right;
+            this.propertyForm1.Location = new System.Drawing.Point(1000, 0);
+            this.propertyForm1.Name = "propertyForm1";
+            this.propertyForm1.Size = new System.Drawing.Size(272, 666);
+            this.propertyForm1.TabIndex = 1;
+            // 
+            // Form2
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1272, 666);
+            this.Controls.Add(this.mapViewer1);
+            this.Controls.Add(this.propertyForm1);
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Name = "Form2";
+            this.ShowIcon = false;
+            this.Text = "鍦板浘娴嬭瘯";
+            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+            this.Load += new System.EventHandler(this.Form2_Load);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private MapUI.MapViewer mapViewer1;
+        private MapUI.PropertyForm propertyForm1;
+    }
+}
\ No newline at end of file
diff --git a/Hydro.ClientTool/Form2.cs b/Hydro.ClientTool/Form2.cs
new file mode 100644
index 0000000..218d191
--- /dev/null
+++ b/Hydro.ClientTool/Form2.cs
@@ -0,0 +1,46 @@
+锘縰sing 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;
+using Hydro.MapUI;
+using Hydro.MapView;
+using Hydro.MapView.Common;
+
+namespace Hydro.ClientTool
+{
+    public partial class Form2 : Form
+    {
+        public Form2()
+        {
+
+            InitializeComponent();
+        }
+
+        private void 鎵撳紑OToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            妯℃澘绠$悊 form = new 妯℃澘绠$悊();
+            if(form.ShowDialog()==DialogResult.OK)
+            {
+                var temp = TemplateList.GetTemplate(form.TemplateID);
+                mapViewer1.SetData(temp);
+            }
+           
+        }
+
+        private void Form2_Load(object sender, EventArgs e)
+        {
+            this.mapViewer1.showToolBar = true;
+            if(TemplateList.Inited == false)
+            {
+                TemplateList.Init();
+            }
+            GlobalObject.map = this.mapViewer1;
+            GlobalObject.PropertyForm = this.propertyForm1;
+        }
+    }
+}
diff --git a/Test/Properties/Resources.resx b/Hydro.ClientTool/Form2.resx
similarity index 63%
rename from Test/Properties/Resources.resx
rename to Hydro.ClientTool/Form2.resx
index af7dbeb..53b2a04 100644
--- a/Test/Properties/Resources.resx
+++ b/Hydro.ClientTool/Form2.resx
@@ -46,7 +46,7 @@
     
     mimetype: application/x-microsoft.net.object.binary.base64
     value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
     
     mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,6 +60,7 @@
             : and then encoded with base64 encoding.
     -->
   <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">
@@ -68,9 +69,10 @@
               <xsd:sequence>
                 <xsd:element name="value" type="xsd:string" minOccurs="0" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" />
+              <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">
@@ -85,9 +87,10 @@
                 <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" msdata:Ordinal="1" />
+              <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">
@@ -109,9 +112,41 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <data name="mapViewer1.MapCenter" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
+        dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh
+        d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL
+</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABILAAASCwAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAASD85skg/Of9IPzn/SD85/0g/Of9IPzn/SD85/0g/Of9IPzn/SD85/0g/Of9IPzn/SD85/0g/
+        Of9IPzn/SD85skg/Of/t6uj/7ero/+3q6P/t6uj/d2he/+3q6P/t6uj/7ero/+3q6P93aF7/7ero/+3q
+        6P/t6uj/7ero/0g/Of9IPzn/5eDc/+Xg3P/l4Nz/5eDc/3doXv/l4Nz/5eDc/+Xg3P/l4Nz/d2he/+Xg
+        3P/l4Nz/5eDc/+Xg3P9IPzn/SD85//j39v/49/b/+Pf2//j39v93aF7/+Pf2//j39v/49/b/+Pf2/3do
+        Xv/49/b/+Pf2//j39v/49/b/SD85/0g/ObJIPzn/SD85/0g/Of9IPzn/s2EK/7NhCv+zYQr/s2EK/7Nh
+        Cv+zYQr/d2he/3doXv93aF7/d2he/0g/Of8AAAAAAAAAAAAAAAAAAAAAAAAAALNhCv/o1q//6Nav/+jW
+        r//o1q//s2EK/+3q6P/t6uj/7ero/+3q6P9IPzn/AAAAAAAAAAAAAAAAAAAAAAAAAACzYQr/5tKo/+bS
+        qP/m0qj/5tKo/7NhCv/l4Nz/5eDc/+Xg3P/l4Nz/SD85/wAAAAAAAAAAAAAAAAAAAACzYQr/s2EK/7Nh
+        Cv/69ez/+vXs//r17P+zYQr/+Pf2//j39v/49/b/+Pf2/0g/Of8AAAAAAAAAAAAAAAAAAAAAs2EK/7Nh
+        Cv+zYQr/s2EK/7NhCv+zYQr/s2EK/7NhCv+zYQr/s2EK/7NhCv+zYQr/AAAAAAAAAAAAAAAAAAAAALNh
+        Cv+zYQr/s2EK/wAAAAAAAAAAAAAAALNhCv/o1q//6Nav/+jWr//o1q//s2EK/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACzYQr/5tKo/+bSqP/m0qj/5tKo/7NhCv8AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACzYQr/s2EK/7NhCv/69ez/+vXs//r17P+zYQr/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs2EK/7NhCv+zYQr/s2EK/7NhCv+zYQr/s2EKsgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALNhCv+zYQr/s2EK/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAAB/8AAAf/AAAP/wAAD/8AAA4/MXcAPzJ3AH8AAAB/
+        AAAAcAAAAAAAAA==
+</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Hydro.ClientTool/Hydro.ClientTool.csproj b/Hydro.ClientTool/Hydro.ClientTool.csproj
index a13e147..f5a6315 100644
--- a/Hydro.ClientTool/Hydro.ClientTool.csproj
+++ b/Hydro.ClientTool/Hydro.ClientTool.csproj
@@ -18,23 +18,33 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
+    <OutputPath>..\out\debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
+    <WarningLevel>0</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
+    <OutputPath>..\out\release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="DevExpress.Data.Desktop.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="DevExpress.Data.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="DevExpress.Drawing.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="DevExpress.Printing.v22.2.Core, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="DevExpress.Utils.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="PresentationCore" />
     <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Remoting" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
     <Reference Include="Microsoft.CSharp" />
@@ -44,18 +54,21 @@
     <Reference Include="System.Net.Http" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
+    <Reference Include="UIAutomationClient" />
+    <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Form1.cs">
+    <Compile Include="Form2.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="Form1.Designer.cs">
-      <DependentUpon>Form1.cs</DependentUpon>
+    <Compile Include="Form2.Designer.cs">
+      <DependentUpon>Form2.cs</DependentUpon>
     </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Form1.resx">
-      <DependentUpon>Form1.cs</DependentUpon>
+    <EmbeddedResource Include="Form2.resx">
+      <DependentUpon>Form2.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
@@ -80,14 +93,30 @@
     <None Include="App.config" />
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\Hydraulic\Hydro.CommonBase\Hydro.CommonBase.csproj">
+      <Project>{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}</Project>
+      <Name>Hydro.CommonBase</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Hydraulic\Hydro.Core\Hydro.Core.csproj">
       <Project>{ca211620-16a7-4953-929d-723a5f9d3239}</Project>
       <Name>Hydro.Core</Name>
     </ProjectReference>
+    <ProjectReference Include="..\Hydraulic\Hydro.HydraulicOptimizer\Hydro.HydraulicOptimizer.csproj">
+      <Project>{0f5c43e6-97ba-457c-954d-62eab47a38a9}</Project>
+      <Name>Hydro.HydraulicOptimizer</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Hydraulic\Hydro.Inp2.2\Hydro.Inp2.2.csproj">
+      <Project>{fffbe974-ba86-420d-aa27-6db215017c8c}</Project>
+      <Name>Hydro.Inp2.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Hydraulic\Hydro.MapUI\Hydro.MapUI.csproj">
       <Project>{50a0264a-17c1-4132-bf90-91e4ba593c88}</Project>
       <Name>Hydro.MapUI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\Hydraulic\Hydro.MapView\Hydro.MapView.csproj">
+      <Project>{18e2e3d7-508e-4781-a760-ba852564e409}</Project>
+      <Name>Hydro.MapView</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/Hydro.ClientTool/Program.cs b/Hydro.ClientTool/Program.cs
index 6b2ba78..cb3d5ff 100644
--- a/Hydro.ClientTool/Program.cs
+++ b/Hydro.ClientTool/Program.cs
@@ -16,7 +16,7 @@
         {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new Form1());
+            Application.Run(new Form2());
         }
     }
 }
diff --git a/HydroV1.1.sln b/HydroV1.1.sln
index 2716a90..97b9922 100644
--- a/HydroV1.1.sln
+++ b/HydroV1.1.sln
@@ -29,413 +29,156 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hydro.HydraulicOptimizer", "Hydraulic\Hydro.HydraulicOptimizer\Hydro.HydraulicOptimizer.csproj", "{0F5C43E6-97BA-457C-954D-62EAB47A38A9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{AB9E43B0-B848-417E-85C3-B350062F1B20}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hydro.ClientTool", "Hydro.ClientTool\Hydro.ClientTool.csproj", "{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug_new|Any CPU = Debug_new|Any CPU
-		Debug_new|x64 = Debug_new|x64
-		Debug_new|x86 = Debug_new|x86
 		Debug|Any CPU = Debug|Any CPU
 		Debug|x64 = Debug|x64
 		Debug|x86 = Debug|x86
-		Debug1|Any CPU = Debug1|Any CPU
-		Debug1|x64 = Debug1|x64
-		Debug1|x86 = Debug1|x86
-		dll_test|Any CPU = dll_test|Any CPU
-		dll_test|x64 = dll_test|x64
-		dll_test|x86 = dll_test|x86
 		Release|Any CPU = Release|Any CPU
 		Release|x64 = Release|x64
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|x64.Build.0 = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug|x86.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|x64.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.Debug1|x86.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|x64.Build.0 = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{CA211620-16A7-4953-929D-723A5F9D3239}.dll_test|x86.Build.0 = Debug|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|Any CPU.Build.0 = Release|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|x64.ActiveCfg = Release|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|x64.Build.0 = Release|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|x86.ActiveCfg = Release|Any CPU
 		{CA211620-16A7-4953-929D-723A5F9D3239}.Release|x86.Build.0 = Release|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|x64.Build.0 = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug|x86.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|x64.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Debug1|x86.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|x64.Build.0 = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.dll_test|x86.Build.0 = Debug|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|Any CPU.Build.0 = Release|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|x64.ActiveCfg = Release|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|x64.Build.0 = Release|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|x86.ActiveCfg = Release|Any CPU
 		{FFFBE974-BA86-420D-AA27-6DB215017C8C}.Release|x86.Build.0 = Release|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|Any CPU.ActiveCfg = Debug_new|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|Any CPU.Build.0 = Debug_new|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|x64.ActiveCfg = Debug_new|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|x64.Build.0 = Debug_new|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|x86.ActiveCfg = Debug_new|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug_new|x86.Build.0 = Debug_new|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|x64.Build.0 = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug|x86.Build.0 = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|Any CPU.ActiveCfg = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|Any CPU.Build.0 = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|x64.ActiveCfg = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|x64.Build.0 = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|x86.ActiveCfg = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Debug1|x86.Build.0 = Debug1|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|x64.Build.0 = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{50A0264A-17C1-4132-BF90-91E4BA593C88}.dll_test|x86.Build.0 = Debug|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|Any CPU.Build.0 = Release|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|x64.ActiveCfg = Release|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|x64.Build.0 = Release|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|x86.ActiveCfg = Release|Any CPU
 		{50A0264A-17C1-4132-BF90-91E4BA593C88}.Release|x86.Build.0 = Release|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|x64.Build.0 = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug|x86.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|x64.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.Debug1|x86.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|x64.Build.0 = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{18E2E3D7-508E-4781-A760-BA852564E409}.dll_test|x86.Build.0 = Debug|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|Any CPU.Build.0 = Release|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|x64.ActiveCfg = Release|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|x64.Build.0 = Release|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|x86.ActiveCfg = Release|Any CPU
 		{18E2E3D7-508E-4781-A760-BA852564E409}.Release|x86.Build.0 = Release|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|x64.Build.0 = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Debug|x86.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|x64.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.Debug1|x86.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|x64.Build.0 = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{78653BED-368A-470D-A021-929F2E583313}.dll_test|x86.Build.0 = Debug|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|Any CPU.Build.0 = Release|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|x64.ActiveCfg = Release|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|x64.Build.0 = Release|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|x86.ActiveCfg = Release|Any CPU
 		{78653BED-368A-470D-A021-929F2E583313}.Release|x86.Build.0 = Release|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|x64.Build.0 = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug|x86.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|x64.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.Debug1|x86.Build.0 = Debug|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|Any CPU.ActiveCfg = dll_test|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|Any CPU.Build.0 = dll_test|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|x64.ActiveCfg = dll_test|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|x64.Build.0 = dll_test|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|x86.ActiveCfg = dll_test|Any CPU
-		{791F7359-A30D-4401-B712-0E8E841840D9}.dll_test|x86.Build.0 = dll_test|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|Any CPU.Build.0 = Release|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|x64.ActiveCfg = Release|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|x64.Build.0 = Release|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|x86.ActiveCfg = Release|Any CPU
 		{791F7359-A30D-4401-B712-0E8E841840D9}.Release|x86.Build.0 = Release|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|x64.ActiveCfg = Debug|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|x64.Build.0 = Debug|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|x64.ActiveCfg = Debug|x64
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|x64.Build.0 = Debug|x64
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug|x86.Build.0 = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|x64.ActiveCfg = Debug|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|x64.Build.0 = Debug|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Debug1|x86.Build.0 = Debug|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|Any CPU.ActiveCfg = dll_test|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|Any CPU.Build.0 = dll_test|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|x64.ActiveCfg = dll_test|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|x64.Build.0 = dll_test|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|x86.ActiveCfg = dll_test|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.dll_test|x86.Build.0 = dll_test|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x64.ActiveCfg = Release|x64
-		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x64.Build.0 = Release|x64
+		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x64.ActiveCfg = Release|Any CPU
+		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x64.Build.0 = Release|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x86.ActiveCfg = Release|Any CPU
 		{84E17BA3-BA03-43C1-9D19-8CE64508F2B5}.Release|x86.Build.0 = Release|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|x64.ActiveCfg = Debug|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|x64.Build.0 = Debug|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|x64.ActiveCfg = Debug|x64
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|x64.Build.0 = Debug|x64
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug|x86.Build.0 = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|x64.ActiveCfg = Debug|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|x64.Build.0 = Debug|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Debug1|x86.Build.0 = Debug|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|Any CPU.ActiveCfg = dll_test|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|Any CPU.Build.0 = dll_test|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|x64.ActiveCfg = dll_test|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|x64.Build.0 = dll_test|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|x86.ActiveCfg = dll_test|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.dll_test|x86.Build.0 = dll_test|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x64.ActiveCfg = Release|x64
-		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x64.Build.0 = Release|x64
+		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x64.ActiveCfg = Release|Any CPU
+		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x64.Build.0 = Release|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x86.ActiveCfg = Release|Any CPU
 		{5F33CE64-2329-422C-9DDA-903CEEF25A6E}.Release|x86.Build.0 = Release|Any CPU
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|Any CPU.ActiveCfg = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|Any CPU.Build.0 = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|x64.ActiveCfg = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|x64.Build.0 = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|x86.ActiveCfg = Debug|Win32
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug_new|x86.Build.0 = Debug|Win32
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|Any CPU.Build.0 = Debug|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|x64.ActiveCfg = Debug|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|x64.Build.0 = Debug|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|x86.ActiveCfg = Debug|Win32
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug|x86.Build.0 = Debug|Win32
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|Any CPU.ActiveCfg = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|Any CPU.Build.0 = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|x64.ActiveCfg = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|x64.Build.0 = Debug|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|x86.ActiveCfg = Debug|Win32
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Debug1|x86.Build.0 = Debug|Win32
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|Any CPU.ActiveCfg = dll_test|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|Any CPU.Build.0 = dll_test|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|x64.ActiveCfg = dll_test|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|x64.Build.0 = dll_test|x64
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|x86.ActiveCfg = dll_test|Win32
-		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.dll_test|x86.Build.0 = dll_test|Win32
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|Any CPU.ActiveCfg = Release|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|Any CPU.Build.0 = Release|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x64.ActiveCfg = Release|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x64.Build.0 = Release|x64
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x86.ActiveCfg = Release|Win32
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF}.Release|x86.Build.0 = Release|Win32
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|x64.Build.0 = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug|x86.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|x64.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Debug1|x86.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|x64.Build.0 = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.dll_test|x86.Build.0 = Debug|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|x64.ActiveCfg = Release|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|x64.Build.0 = Release|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|x86.ActiveCfg = Release|Any CPU
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972}.Release|x86.Build.0 = Release|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|x64.Build.0 = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug|x86.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|x64.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Debug1|x86.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|x64.Build.0 = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.dll_test|x86.Build.0 = Debug|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|Any CPU.Build.0 = Release|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|x64.ActiveCfg = Release|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|x64.Build.0 = Release|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|x86.ActiveCfg = Release|Any CPU
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9}.Release|x86.Build.0 = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug_new|x86.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|x64.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug|x86.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|x64.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Debug1|x86.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|x64.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.dll_test|x86.Build.0 = Debug|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|x64.ActiveCfg = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|x64.Build.0 = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|x86.ActiveCfg = Release|Any CPU
-		{AB9E43B0-B848-417E-85C3-B350062F1B20}.Release|x86.Build.0 = Release|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|Any CPU.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|Any CPU.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|x64.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|x64.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|x86.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug_new|x86.Build.0 = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|x64.Build.0 = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug|x86.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|Any CPU.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|Any CPU.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|x64.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|x64.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|x86.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Debug1|x86.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|Any CPU.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|x64.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|x64.Build.0 = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|x86.ActiveCfg = Debug|Any CPU
-		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.dll_test|x86.Build.0 = Debug|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A87A91DE-3A66-4305-8C4D-61927C4F2D4F}.Release|x64.ActiveCfg = Release|Any CPU
@@ -458,7 +201,6 @@
 		{D2B8356F-0EA6-4167-8119-57B3E49A55CF} = {F976F42E-15B8-40BB-8132-80FBE0CAAD43}
 		{D66081C0-21B2-4B2A-A4AD-DAE293271972} = {F976F42E-15B8-40BB-8132-80FBE0CAAD43}
 		{0F5C43E6-97BA-457C-954D-62EAB47A38A9} = {F976F42E-15B8-40BB-8132-80FBE0CAAD43}
-		{AB9E43B0-B848-417E-85C3-B350062F1B20} = {5B5DE24F-D205-4B5A-A439-8EA61C1B23C7}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {04D92980-B7F3-4AC8-B744-D6A674322C27}
diff --git a/Test/App.config b/Test/App.config
deleted file mode 100644
index 56efbc7..0000000
--- a/Test/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
-    </startup>
-</configuration>
\ No newline at end of file
diff --git a/Test/Form1.Designer.cs b/Test/Form1.Designer.cs
deleted file mode 100644
index 083a352..0000000
--- a/Test/Form1.Designer.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-锘縩amespace Test
-{
-    partial class Form1
-    {
-        /// <summary>
-        /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
-        /// </summary>
-        /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜
-
-        /// <summary>
-        /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈淇敼
-        /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
-        /// </summary>
-        private void InitializeComponent()
-        {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
-            this.mapViewer2 = new Hydro.MapUI.MapViewer();
-            this.SuspendLayout();
-            // 
-            // mapViewer2
-            // 
-            this.mapViewer2._IsEditMode = true;
-            this.mapViewer2._newTemplate = ((Hydro.MapView.Template)(resources.GetObject("mapViewer2._newTemplate")));
-            this.mapViewer2._ShowJunction = true;
-            this.mapViewer2._ShowValve = true;
-            this.mapViewer2._Template = null;
-            this.mapViewer2.BackColor = System.Drawing.Color.Transparent;
-            this.mapViewer2.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.mapViewer2.junction_multiply = 1F;
-            this.mapViewer2.Link_multiply = 1F;
-            this.mapViewer2.Location = new System.Drawing.Point(0, 0);
-            this.mapViewer2.MapCenter = ((System.Drawing.PointF)(resources.GetObject("mapViewer2.MapCenter")));
-            this.mapViewer2.Name = "mapViewer2";
-            this.mapViewer2.Rotation = 0D;
-            this.mapViewer2.RotationF = 90D;
-            this.mapViewer2.ShowStatusBar = true;
-            this.mapViewer2.showToolBar = false;
-            this.mapViewer2.Size = new System.Drawing.Size(800, 450);
-            this.mapViewer2.TabIndex = 0;
-            this.mapViewer2.zoom = 1F;
-            // 
-            // Form1
-            // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(800, 450);
-            this.Controls.Add(this.mapViewer2);
-            this.Name = "Form1";
-            this.Text = "Form1";
-            this.ResumeLayout(false);
-
-        }
-
-        #endregion
-
-        private Hydro.MapUI.MapViewer mapViewer1;
-        private Hydro.MapUI.MapViewer mapViewer2;
-    }
-}
-
diff --git a/Test/Form1.cs b/Test/Form1.cs
deleted file mode 100644
index d1be11e..0000000
--- a/Test/Form1.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-锘縰sing 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 Test
-{
-    public partial class Form1 : Form
-    {
-        public Form1()
-        {
-            InitializeComponent();
-        }
-    }
-}
diff --git a/Test/Form1.resx b/Test/Form1.resx
deleted file mode 100644
index 1274c78..0000000
--- a/Test/Form1.resx
+++ /dev/null
@@ -1,168 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <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>
-  <data name="mapViewer2._newTemplate" mimetype="application/x-microsoft.net.object.binary.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAERIeWRyby5NYXBWaWV3LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
-        cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9u
-        PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwE
-        AAAAkwFIeWRyby5NYXBWaWV3LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGlj
-        S2V5VG9rZW49bnVsbF1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWws
-        IFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABZIeWRyby5NYXBWaWV3LlRlbXBsYXRl
-        GQAAAANfSUQVPE5hbWU+a19fQmFja2luZ0ZpZWxkGjxtYXBPcHRpb24+a19fQmFja2luZ0ZpZWxkCV9m
-        aWxlUGF0aBc8T2ZmU2V0PmtfX0JhY2tpbmdGaWVsZA5CYWNrR3JvdW5kRWxldg5CYWNrR3JvdW5kSW1n
-        WA5CYWNrR3JvdW5kSW1nWRNCYWNrR3JvdW5kSW1nSGVpZ2h0EkJhY2tHcm91bmRJbWdXaWR0aBZCYWNr
-        R3JvdW5kSW1nUm90YUFuZ2xlEEJhY2tHcm91bmRQb2ludDEQQmFja0dyb3VuZFBvaW50MiA8SW1wb3J0
-        RXhjZWxQYXRoPmtfX0JhY2tpbmdGaWVsZCE8SW1wb3J0RXhjZWxJbmRleD5rX19CYWNraW5nRmllbGQZ
-        PE1heExldmVsPmtfX0JhY2tpbmdGaWVsZBU8VHlwZT5rX19CYWNraW5nRmllbGQYPFJlZ2lvbnM+a19f
-        QmFja2luZ0ZpZWxkFjxOb2RlMT5rX19CYWNraW5nRmllbGQWPE5vZGUyPmtfX0JhY2tpbmdGaWVsZBI8
-        WD5rX19CYWNraW5nRmllbGQSPFk+a19fQmFja2luZ0ZpZWxkGDxWaXNpYmxlPmtfX0JhY2tpbmdGaWVs
-        ZBU8dmlldz5rX19CYWNraW5nRmllbGQYPENvbG91cnM+a19fQmFja2luZ0ZpZWxkAQEEAQQAAAAAAAAE
-        BAEAAAQEAQEBAQEEBBdIeWRyby5NYXBWaWV3Lk1hcE9wdGlvbgIAAAAWSHlkcm8uTWFwVmlldy5Qb2lu
-        dEYzRAIAAAALCwsLCwsVU3lzdGVtLkRyYXdpbmcuUG9pbnRGAwAAABVTeXN0ZW0uRHJhd2luZy5Qb2lu
-        dEYDAAAACAgmSHlkcm8uTWFwVmlldy5NYXBWaWV3RW51bStUZW1wbGF0ZVR5cGUCAAAAOFN5c3RlbS5D
-        b2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbSHlkcm8uTWFwVmlldy5UUmVnaW9uBAAAABtIeWRyby5N
-        YXBWaWV3Lk1hcERpbWVuc2lvbnMCAAAAN1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtb
-        SHlkcm8uTWFwVmlldy5Db2xvdXIEAAAAAgAAAAYFAAAAJDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAw
-        MDAwMDAwMDAwMAYGAAAABuS4tOaXtgkHAAAACgkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABff/
-        //8VU3lzdGVtLkRyYXdpbmcuUG9pbnRGAgAAAAF4AXkAAAsLAwAAAAAAAAAAAAAAAfb////3////AAAA
-        AAAAAAAKAAAAAGMAAAAF9f///yZIeWRyby5NYXBWaWV3Lk1hcFZpZXdFbnVtK1RlbXBsYXRlVHlwZQEA
-        AAAHdmFsdWVfXwAIAgAAAAAAAAAJDAAAAAoKCgoKCgkNAAAABQcAAAAXSHlkcm8uTWFwVmlldy5NYXBP
-        cHRpb24GAAAAHjxMaW5rX211bHRpcGx5PmtfX0JhY2tpbmdGaWVsZCI8anVuY3Rpb25fbXVsdGlwbHk+
-        a19fQmFja2luZ0ZpZWxkGzxfU2hvd1ZhbHZlPmtfX0JhY2tpbmdGaWVsZB48X1Nob3dKdW5jdGlvbj5r
-        X19CYWNraW5nRmllbGQcPF9TaG93U3RhdHVzPmtfX0JhY2tpbmdGaWVsZCM8X1Nob3dGbG93RGlyZWN0
-        aW9uPmtfX0JhY2tpbmdGaWVsZAAAAAAAAAsLAQEBAQIAAADarCo/AACAPwEBAAAFCAAAABZIeWRyby5N
-        YXBWaWV3LlBvaW50RjNEAwAAABI8WD5rX19CYWNraW5nRmllbGQSPFk+a19fQmFja2luZ0ZpZWxkEjxa
-        PmtfX0JhY2tpbmdGaWVsZAAAAAsLCwIAAAAAAAAAAAAAAAAAAAAFDAAAADhTeXN0ZW0uQ29sbGVjdGlv
-        bnMuR2VuZXJpYy5MaXN0YDFbW0h5ZHJvLk1hcFZpZXcuVFJlZ2lvbgMAAAAGX2l0ZW1zBV9zaXplCF92
-        ZXJzaW9uBAAAF0h5ZHJvLk1hcFZpZXcuVFJlZ2lvbltdAgAAAAgIBAAAAAkOAAAAAAAAAAAAAAAFDQAA
-        ADdTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW0h5ZHJvLk1hcFZpZXcuQ29sb3VyAwAA
-        AAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAWSHlkcm8uTWFwVmlldy5Db2xvdXJbXQIAAAAICAQAAAAJ
-        DwAAAAAAAAAAAAAABw4AAAAAAQAAAAAAAAAEFUh5ZHJvLk1hcFZpZXcuVFJlZ2lvbgIAAAAHDwAAAAAB
-        AAAAAAAAAAQUSHlkcm8uTWFwVmlldy5Db2xvdXICAAAACw==
-</value>
-  </data>
-  <data name="mapViewer2.MapCenter" mimetype="application/x-microsoft.net.object.binary.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
-        dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh
-        d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/Test/Program.cs b/Test/Program.cs
deleted file mode 100644
index 0037453..0000000
--- a/Test/Program.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace Test
-{
-    internal static class Program
-    {
-        /// <summary>
-        /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
-        /// </summary>
-        [STAThread]
-        static void Main()
-        {
-            Application.EnableVisualStyles();
-            Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new Form1());
-        }
-    }
-}
diff --git a/Test/Properties/AssemblyInfo.cs b/Test/Properties/AssemblyInfo.cs
deleted file mode 100644
index f429eb4..0000000
--- a/Test/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-锘縰sing System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
-// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
-// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
-[assembly: AssemblyTitle("Test")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Test")]
-[assembly: AssemblyCopyright("Copyright 漏  2024")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
-//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
-//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
-[assembly: ComVisible(false)]
-
-// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
-[assembly: Guid("ab9e43b0-b848-417e-85c3-b350062f1b20")]
-
-// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: 
-//
-//      涓荤増鏈�
-//      娆$増鏈�
-//      鐢熸垚鍙�
-//      淇鍙�
-//
-//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
-//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Test/Properties/Resources.Designer.cs b/Test/Properties/Resources.Designer.cs
deleted file mode 100644
index 9f136fa..0000000
--- a/Test/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-锘�//------------------------------------------------------------------------------
-// <auto-generated>
-//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
-//     杩愯鏃剁増鏈�: 4.0.30319.42000
-//
-//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳藉鑷翠笉姝g‘鐨勮涓猴紝濡傛灉
-//     閲嶆柊鐢熸垚浠g爜锛屽垯鎵�鍋氭洿鏀瑰皢涓㈠け銆�
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Test.Properties
-{
-
-
-    /// <summary>
-    ///   寮虹被鍨嬭祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲瀛楃涓茬瓑銆�
-    /// </summary>
-    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
-    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
-    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
-    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources()
-        {
-        }
-
-        /// <summary>
-        ///   杩斿洖姝ょ被浣跨敤鐨勭紦瀛� ResourceManager 瀹炰緥銆�
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
-        ///   浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-    }
-}
diff --git a/Test/Properties/Settings.Designer.cs b/Test/Properties/Settings.Designer.cs
deleted file mode 100644
index a8cf573..0000000
--- a/Test/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-锘�//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Test.Properties
-{
-
-
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-    {
-
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-        public static Settings Default
-        {
-            get
-            {
-                return defaultInstance;
-            }
-        }
-    }
-}
diff --git a/Test/Properties/Settings.settings b/Test/Properties/Settings.settings
deleted file mode 100644
index 3964565..0000000
--- a/Test/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-锘�<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>
diff --git a/Test/Test.csproj b/Test/Test.csproj
deleted file mode 100644
index afcc0b5..0000000
--- a/Test/Test.csproj
+++ /dev/null
@@ -1,131 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{AB9E43B0-B848-417E-85C3-B350062F1B20}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <RootNamespace>Test</RootNamespace>
-    <AssemblyName>Test</AssemblyName>
-    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-    <Deterministic>true</Deterministic>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Form1.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Form1.Designer.cs">
-      <DependentUpon>Form1.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Form1.resx">
-      <DependentUpon>Form1.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Hydraulic\Hydro.CodeProvider\Hydro.CodeProvider.csproj">
-      <Project>{791f7359-a30d-4401-b712-0e8e841840d9}</Project>
-      <Name>Hydro.CodeProvider</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.CommonBase\Hydro.CommonBase.csproj">
-      <Project>{84e17ba3-ba03-43c1-9d19-8ce64508f2b5}</Project>
-      <Name>Hydro.CommonBase</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.ConfigModel\Hydro.ConfigModel.csproj">
-      <Project>{5f33ce64-2329-422c-9dda-903ceef25a6e}</Project>
-      <Name>Hydro.ConfigModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.Core\Hydro.Core.csproj">
-      <Project>{ca211620-16a7-4953-929d-723a5f9d3239}</Project>
-      <Name>Hydro.Core</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.HydraulicCore\HydraulicCore.vcxproj">
-      <Project>{d2b8356f-0ea6-4167-8119-57b3e49a55cf}</Project>
-      <Name>Hydro.HydraulicCore</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.HydraulicModel\Hydro.HydraulicModel.csproj">
-      <Project>{d66081c0-21b2-4b2a-a4ad-dae293271972}</Project>
-      <Name>Hydro.HydraulicModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.HydraulicOptimizer\Hydro.HydraulicOptimizer.csproj">
-      <Project>{0f5c43e6-97ba-457c-954d-62eab47a38a9}</Project>
-      <Name>Hydro.HydraulicOptimizer</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.Inp2.2\Hydro.Inp2.2.csproj">
-      <Project>{fffbe974-ba86-420d-aa27-6db215017c8c}</Project>
-      <Name>Hydro.Inp2.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.MapUI\Hydro.MapUI.csproj">
-      <Project>{50a0264a-17c1-4132-bf90-91e4ba593c88}</Project>
-      <Name>Hydro.MapUI</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.MapView\Hydro.MapView.csproj">
-      <Project>{18e2e3d7-508e-4781-a760-ba852564e409}</Project>
-      <Name>Hydro.MapView</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\Hydraulic\Hydro.Revit2022\Hydro.Revit2022.csproj">
-      <Project>{78653bed-368a-470d-a021-929f2e583313}</Project>
-      <Name>Hydro.Revit2022</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-</Project>
\ No newline at end of file

--
Gitblit v1.9.3