From ba19a8e1fdbd9818687a850e596bca824856d6e7 Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期三, 13 十一月 2024 11:29:31 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Cancel.svg                                                          |   12 
 Service/HStation.Service.Equivalent.Core/05-service/00-core/01-dal/DALCreateHelper.cs                             |   23 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMin32.png                                                       |    0 
 Service/HStation.Service.PBS.Core/00-core/DataType.cs                                                             |   24 
 BLL/HStation.BLL.Equivalent.Core/00-core/Mapper.cs                                                                |   27 
 BLL/HStation.BLL.PBS.Core/HStation.BLL.PBS.Core.csproj                                                            |   44 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_Factory.cs                  |   18 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Square32.png                                                        |    0 
 Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml                                 |   13 
 BLL/HStation.BLL.PBS.Core/GlobalUsings.cs                                                                         |    4 
 Desktop/HStation.Desktop.PBS.Core/DbFirstHelper.cs                                                                |   18 
 Service/HStation.Service.Equivalent.Core/00-core/DbType.cs                                                        |   18 
 Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.user                                                  |   17 
 Service/HStation.Service.Equivalent.Core/00-core/DataType.cs                                                      |   11 
 Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml                                         |   13 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_SQLite.cs     |   13 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.resx                                                     |  148 +
 Dto/HStation.Dto.Equivalent.Core/GlobalUsings.cs                                                                  |    1 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL.cs                      |   27 
 BLL/HStation.BLL.Equivalent.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs                                     |   15 
 Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj                                                |   42 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Remove.svg                                                          |   12 
 BLL/HStation.BLL.Equivalent.Core/GlobalUsings.cs                                                                  |    4 
 Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml                                  |   13 
 Service/HStation.Service.PBS.Core/HStation.Service.PBS.Core.csproj                                                |   25 
 Desktop/HStation.Desktop.PBS.Core/Properties/Resources.Designer.cs                                                |   83 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/03-file/Paras_PBS_File.cs                                  |   19 
 BLL/HStation.BLL.Equivalent.Core/04-bll/00-core/CALCreateHelper.cs                                                |   22 
 Desktop/HStation.Desktop.PBS.Core/Resources/loginbg.png                                                           |    0 
 Service/HStation.Service.Equivalent.Core/05-service/00-core/02-cache/CacheHelper.cs                               |   36 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs                             |    4 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.resx                                              |  120 +
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Min32.png                                                    |    0 
 BLL/HStation.BLL.PBS.Core/04-bll/00-core/CALCreateHelper.cs                                                       |   22 
 Dto/HStation.Dto.PBS.Core/GlobalUsings.cs                                                                         |    1 
 Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs                                                            |  479 ++++
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeNormal32.png                                                    |    0 
 Service/HStation.Service.Equivalent.Core/00-core/ConfigHelper.cs                                                  |   93 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/GlobalUsings.cs                                                               |    1 
 Vmo/HStation.Vmo.PBS.Core/GlobalUsings.cs                                                                         |    1 
 Vmo/HStation.Vmo.PBS.Core/HStation.Vmo.PBS.Core.csproj                                                            |   14 
 Dto/HStation.Dto.PBS.Core/HStation.Dto.PBS.Core.csproj                                                            |   15 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj                                             |   64 
 Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.cs                                                               |  136 +
 Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml.user                             |   10 
 Service/HStation.Service.Equivalent.Core/paras_equivalent_settings.json                                           |   35 
 Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.Designer.cs                                                      |  502 ++++
 Service/HStation.Service.PBS.Core/paras_pbs_settings.json                                                         |   35 
 BLL/HStation.BLL.PBS.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs                                           |   25 
 Desktop/HStation.Desktop.PBS.Core/Program.cs                                                                      |  110 
 Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user                                    |   10 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/EquivalentParas.cs                          |   13 
 Service/HStation.Service.PBS.Core/00-core/Flags.cs                                                                |   19 
 Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentFileHelper.cs                              |   64 
 Service/HStation.Service.PBS.Core/00-core/MemoryCacheKey.cs                                                       |   26 
 HStation.Xhs.Core.sln                                                                                             |  231 +
 Desktop/HStation.Desktop.PBS.Core/Properties/Resources.resx                                                       |  127 +
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_HttpClient.cs           |   13 
 BLL/HStation.BLL.PBS.Core/00-core/Mapper.cs                                                                       |   27 
 Vmo/HStation.Vmo.Equivalent.Core/HStation.Vmo.Equivalent.Core.csproj                                              |   15 
 Vmo/HStation.Vmo.Equivalent.Core/GlobalUsings.cs                                                                  |    1 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/Paras_Equivalent.cs                         |   31 
 Desktop/HStation.Desktop.PBS.Core/Login/LoginHelper.cs                                                            |   25 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/Paras_PBS.cs                                       |   31 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.csproj                               |   54 
 BLL/HStation.BLL.Equivalent.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs                                            |   15 
 Service/HStation.Service.Equivalent.Core/HStation.Service.Equivalent.Core.csproj                                  |   23 
 Desktop/HStation.Desktop.PBS.Core/Hstation.ico                                                                    |    0 
 Dto/HStation.Dto.Equivalent.Core/00-core/Extensions.cs                                                            |   12 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.Designer.cs                                       |   63 
 Dto/HStation.Dto.PBS.Core/00-core/Extensions.cs                                                                   |   12 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.Designer.cs                                              |  153 +
 Service/HStation.Service.PBS.Core/GlobalUsings.cs                                                                 |   11 
 Service/HStation.Service.PBS.Core/03-settings/00-core/PBSFileHelper.cs                                            |   64 
 Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj.user                                           |   12 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/App.config                                                             |    3 
 BLL/HStation.BLL.Equivalent.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs                                    |   25 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.user                                 |  254 ++
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Pump32.png                                                   |    0 
 Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentParasHelper.cs                             |   27 
 Service/HStation.Service.Equivalent.Core/GlobalUsings.cs                                                          |    5 
 Desktop/HStation.Desktop.PBS.Core/MainForm.cs                                                                     | 1057 +++++++++
 BLL/HStation.BLL.PBS.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs                                            |   24 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_PostgreSql.cs |   13 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_PostgreSql.cs               |   13 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Close32.png                                                         |    0 
 Desktop/HStation.Desktop.PBS.Core/Login/eLoginStatus.cs                                                           |   18 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_HttpClient.cs                         |   13 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/IncomingCall.svg                                                    |   12 
 Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user                            |   10 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/PBSParas.cs                                        |   13 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMax32.png                                                       |    0 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/MapLayers.svg                                                       |   12 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase.cs            |   31 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj.user                                        |    5 
 Service/HStation.Service.PBS.Core/05-service/00-core/03-helper/DbFirstHelper.cs                                   |   69 
 Desktop/HStation.Desktop.PBS.Core/app.manifest                                                                    |   79 
 BLL/HStation.BLL.Equivalent.Core/00-core/ConfigHelper.cs                                                          |   13 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_LocalClient.cs                        |   10 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/03-file/Paras_Equivalent_File.cs                    |   19 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL.cs                                    |   27 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/GlobalUsings.cs                                                        |    1 
 Service/HStation.Service.PBS.Core/05-service/00-core/02-cache/CacheHelper.cs                                      |   34 
 WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/SizeMax32.png                                                |    0 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/App.config                                                                    |    3 
 Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.resx                                                             |  120 +
 BLL/HStation.BLL.PBS.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs                                                   |   15 
 Desktop/HStation.Desktop.PBS.Core/Login/UserLoginSettings.cs                                                      |   42 
 Desktop/HStation.Desktop.PBS.Core/App.config                                                                      |   48 
 Service/HStation.Service.Equivalent.Core/05-service/00-core/03-helper/DbFirstHelper.cs                            |   69 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Pump32.png                                                          |    0 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.user                                               |  254 ++
 Desktop/HStation.Desktop.PBS.Core/Resources/app.ico                                                               |    0 
 BLL/HStation.BLL.Equivalent.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs                                     |   24 
 Service/HStation.Service.PBS.Core/03-settings/00-core/PBSParasHelper.cs                                           |   27 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Folder.svg                                                          |   12 
 WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Min32.png                                                           |    0 
 Service/HStation.Service.PBS.Core/00-core/DbType.cs                                                               |   18 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase.cs                          |   31 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_LocalClient.cs          |   10 
 BLL/HStation.BLL.Equivalent.Core/HStation.BLL.Equivalent.Core.csproj                                              |   44 
 Dto/HStation.Dto.Equivalent.Core/HStation.Dto.Equivalent.Core.csproj                                              |   15 
 BLL/HStation.BLL.PBS.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs                                            |   15 
 Desktop/HStation.Desktop.PBS.Core/MainForm.resx                                                                   |  812 ++++++
 BLL/HStation.BLL.PBS.Core/00-core/ConfigHelper.cs                                                                 |   13 
 Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_SQLite.cs                   |   13 
 Service/HStation.Service.Equivalent.Core/00-core/Flags.cs                                                         |   19 
 Service/HStation.Service.Equivalent.Core/00-core/MemoryCacheKey.cs                                                |   26 
 Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_Factory.cs    |   18 
 Service/HStation.Service.PBS.Core/00-core/ConfigHelper.cs                                                         |   93 
 Service/HStation.Service.PBS.Core/05-service/00-core/01-dal/DALCreateHelper.cs                                    |   23 
 131 files changed, 6,970 insertions(+), 2 deletions(-)

diff --git a/BLL/HStation.BLL.Equivalent.Core/00-core/ConfigHelper.cs b/BLL/HStation.BLL.Equivalent.Core/00-core/ConfigHelper.cs
new file mode 100644
index 0000000..fb0da8a
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/00-core/ConfigHelper.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.BLL.Equivalent
+{
+    internal class ConfigHelper
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public static string HttpUrl
+        {
+            get { return Settings.EquivalentParasHelper.Equivalent.CAL.HttpClient.HttpUrl; }
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/00-core/Mapper.cs b/BLL/HStation.BLL.Equivalent.Core/00-core/Mapper.cs
new file mode 100644
index 0000000..a690036
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/00-core/Mapper.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.BLL.Equivalent
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class Mapper : IRegister
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        /// <param name="config"></param>
+        public void Register(TypeAdapterConfig config)
+        {
+            #region project
+
+            //config.ForType<AddEquivalentProjectInput, Model.EquivalentProject>()
+            // .Map(dest => dest.Paras, src => src.Paras)
+            // .Map(dest => dest.Flags, src => src.Flags);
+ 
+
+            #endregion
+
+           
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Equivalent.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs b/BLL/HStation.BLL.Equivalent.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs
new file mode 100644
index 0000000..8a960c8
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs
@@ -0,0 +1,15 @@
+锘縰sing Yw.CAL;
+
+namespace HStation.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IEquivalentDbFirstHelper : IBaseCAL
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<bool> Initial();
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.Equivalent.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..9c87849
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,24 @@
+锘�
+using Yw.CAL.HttpClient;
+
+namespace HStation.CAL.HttpClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class EquivalentDbFirstHelper : BaseCAL, IEquivalentDbFirstHelper
+    {
+        protected override string Prefix
+        {
+            get { return $"{HStation.BLL.Equivalent.ConfigHelper.HttpUrl}/Equivalent/DbFirst"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await GetUrl("Initial@V1.0").Get<bool>();
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.Equivalent.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..a27c4e0
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,25 @@
+锘縩amespace HStation.CAL.LocalClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class EquivalentDbFirstHelper : IEquivalentDbFirstHelper
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await Task.Run(() =>
+            {
+                var bol = HStation.Service.Equivalent.DbFirstHelper.Initial(out string Msg);
+                if (!bol)
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.L001, Msg);
+                }
+                return bol;
+            });
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/04-bll/00-core/CALCreateHelper.cs b/BLL/HStation.BLL.Equivalent.Core/04-bll/00-core/CALCreateHelper.cs
new file mode 100644
index 0000000..4bbf511
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/04-bll/00-core/CALCreateHelper.cs
@@ -0,0 +1,22 @@
+锘縩amespace HStation.BLL.Equivalent
+{
+    /// <summary>
+    /// CAL杈呭姪绫�
+    /// </summary>
+    internal class CALCreateHelper
+    {
+        /// <summary>
+        /// 鍒涘缓CAL
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T CreateCAL<T>()
+        {
+            var type = Settings.EquivalentParasHelper.Equivalent.CAL.CALType;
+            return Yw.CALFactory.CreateCAL<T>(type);
+        }
+
+
+
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.Equivalent.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..870df6c
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,15 @@
+锘縩amespace HStation.BLL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class EquivalentDbFirstHelper : HStation.CAL.IEquivalentDbFirstHelper
+    {
+        private readonly HStation.CAL.IEquivalentDbFirstHelper _cal = CALCreateHelper.CreateCAL<HStation.CAL.IEquivalentDbFirstHelper>();
+
+        public Task<bool> Initial()
+        {
+            return _cal.Initial();
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.Equivalent.Core/GlobalUsings.cs b/BLL/HStation.BLL.Equivalent.Core/GlobalUsings.cs
new file mode 100644
index 0000000..d5bb669
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/GlobalUsings.cs
@@ -0,0 +1,4 @@
+锘縢lobal using HStation.BLL.Equivalent;
+global using Mapster;
+global using Yw.Dto;
+
diff --git a/BLL/HStation.BLL.Equivalent.Core/HStation.BLL.Equivalent.Core.csproj b/BLL/HStation.BLL.Equivalent.Core/HStation.BLL.Equivalent.Core.csproj
new file mode 100644
index 0000000..c31a6b9
--- /dev/null
+++ b/BLL/HStation.BLL.Equivalent.Core/HStation.BLL.Equivalent.Core.csproj
@@ -0,0 +1,44 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>disable</Nullable>
+		<Version>3.0.0</Version>
+	</PropertyGroup>
+
+	<ItemGroup>
+	  <Compile Remove="03-localclient\PumpProduct\**" />
+	  <Compile Remove="03-localclient\PumpProject\**" />
+	  <Compile Remove="03-localclient\Pump\**" />
+	  <Compile Remove="04-bll\01-ProjectItem\**" />
+	  <Compile Remove="04-bll\02-PumpProdcuct\**" />
+	  <EmbeddedResource Remove="03-localclient\PumpProduct\**" />
+	  <EmbeddedResource Remove="03-localclient\PumpProject\**" />
+	  <EmbeddedResource Remove="03-localclient\Pump\**" />
+	  <EmbeddedResource Remove="04-bll\01-ProjectItem\**" />
+	  <EmbeddedResource Remove="04-bll\02-PumpProdcuct\**" />
+	  <None Remove="03-localclient\PumpProduct\**" />
+	  <None Remove="03-localclient\PumpProject\**" />
+	  <None Remove="03-localclient\Pump\**" />
+	  <None Remove="04-bll\01-ProjectItem\**" />
+	  <None Remove="04-bll\02-PumpProdcuct\**" />
+	</ItemGroup>
+
+	<ItemGroup>
+	  <Compile Remove="02-httpclient\EquivalentProject.cs" />
+	  <Compile Remove="02-httpclient\EquivalentProjectItem.cs" />
+	  <Compile Remove="02-httpclient\EquivalentProjectItemModel.cs" />
+	  <Compile Remove="02-httpclient\EquivalentProjectItemModelMap.cs" />
+	  <Compile Remove="03-localclient\EquivalentProject.cs" />
+	  <Compile Remove="03-localclient\EquivalentProjectItem.cs" />
+	  <Compile Remove="03-localclient\EquivalentProjectItemModel.cs" />
+	  <Compile Remove="03-localclient\EquivalentProjectItemModelMap.cs" />
+	</ItemGroup>
+
+	<ItemGroup>
+	  <ProjectReference Include="..\..\Dto\HStation.Dto.Equivalent.Core\HStation.Dto.Equivalent.Core.csproj" />
+	  <ProjectReference Include="..\HStation.BLL.Core\HStation.BLL.Core.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git a/BLL/HStation.BLL.PBS.Core/00-core/ConfigHelper.cs b/BLL/HStation.BLL.PBS.Core/00-core/ConfigHelper.cs
new file mode 100644
index 0000000..8ac9a59
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/00-core/ConfigHelper.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.BLL.PBS
+{
+    internal class ConfigHelper
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public static string HttpUrl
+        {
+            get { return Settings.PBSParasHelper.PBS.CAL.HttpClient.HttpUrl; }
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/00-core/Mapper.cs b/BLL/HStation.BLL.PBS.Core/00-core/Mapper.cs
new file mode 100644
index 0000000..7710711
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/00-core/Mapper.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.BLL.PBS
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class Mapper : IRegister
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        /// <param name="config"></param>
+        public void Register(TypeAdapterConfig config)
+        {
+            #region project
+
+            //config.ForType<AddPBSProjectInput, Model.PBSProject>()
+            // .Map(dest => dest.Paras, src => src.Paras)
+            // .Map(dest => dest.Flags, src => src.Flags);
+ 
+
+            #endregion
+
+           
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.PBS.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs b/BLL/HStation.BLL.PBS.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs
new file mode 100644
index 0000000..0caaa5c
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/01-interface/09-dbfirst/IXhsDbFirstHelper.cs
@@ -0,0 +1,15 @@
+锘縰sing Yw.CAL;
+
+namespace HStation.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IPBSDbFirstHelper : IBaseCAL
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<bool> Initial();
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.PBS.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..be7c38d
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/02-httpclient/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,24 @@
+锘�
+using Yw.CAL.HttpClient;
+
+namespace HStation.CAL.HttpClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PBSDbFirstHelper : BaseCAL, IPBSDbFirstHelper
+    {
+        protected override string Prefix
+        {
+            get { return $"{HStation.BLL.PBS.ConfigHelper.HttpUrl}/PBS/DbFirst"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await GetUrl("Initial@V1.0").Get<bool>();
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.PBS.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..4dbc684
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/03-localclient/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,25 @@
+锘縩amespace HStation.CAL.LocalClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PBSDbFirstHelper : IPBSDbFirstHelper
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await Task.Run(() =>
+            {
+                var bol = HStation.Service.PBS.DbFirstHelper.Initial(out string Msg);
+                if (!bol)
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.L001, Msg);
+                }
+                return bol;
+            });
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/04-bll/00-core/CALCreateHelper.cs b/BLL/HStation.BLL.PBS.Core/04-bll/00-core/CALCreateHelper.cs
new file mode 100644
index 0000000..d2510d0
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/04-bll/00-core/CALCreateHelper.cs
@@ -0,0 +1,22 @@
+锘縩amespace HStation.BLL.PBS
+{
+    /// <summary>
+    /// CAL杈呭姪绫�
+    /// </summary>
+    internal class CALCreateHelper
+    {
+        /// <summary>
+        /// 鍒涘缓CAL
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T CreateCAL<T>()
+        {
+            var type = Settings.PBSParasHelper.PBS.CAL.CALType;
+            return Yw.CALFactory.CreateCAL<T>(type);
+        }
+
+
+
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs b/BLL/HStation.BLL.PBS.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs
new file mode 100644
index 0000000..cd00a33
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/04-bll/09-dbfirst/XhsDbFirstHelper.cs
@@ -0,0 +1,15 @@
+锘縩amespace HStation.BLL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PBSDbFirstHelper : HStation.CAL.IPBSDbFirstHelper
+    {
+        private readonly HStation.CAL.IPBSDbFirstHelper _cal = CALCreateHelper.CreateCAL<HStation.CAL.IPBSDbFirstHelper>();
+
+        public Task<bool> Initial()
+        {
+            return _cal.Initial();
+        }
+    }
+}
diff --git a/BLL/HStation.BLL.PBS.Core/GlobalUsings.cs b/BLL/HStation.BLL.PBS.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5559937
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/GlobalUsings.cs
@@ -0,0 +1,4 @@
+锘縢lobal using HStation.BLL.PBS;
+global using Mapster;
+global using Yw.Dto;
+
diff --git a/BLL/HStation.BLL.PBS.Core/HStation.BLL.PBS.Core.csproj b/BLL/HStation.BLL.PBS.Core/HStation.BLL.PBS.Core.csproj
new file mode 100644
index 0000000..9a7e49a
--- /dev/null
+++ b/BLL/HStation.BLL.PBS.Core/HStation.BLL.PBS.Core.csproj
@@ -0,0 +1,44 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>disable</Nullable>
+		<Version>3.0.0</Version>
+	</PropertyGroup>
+
+	<ItemGroup>
+	  <Compile Remove="03-localclient\PumpProduct\**" />
+	  <Compile Remove="03-localclient\PumpProject\**" />
+	  <Compile Remove="03-localclient\Pump\**" />
+	  <Compile Remove="04-bll\01-ProjectItem\**" />
+	  <Compile Remove="04-bll\02-PumpProdcuct\**" />
+	  <EmbeddedResource Remove="03-localclient\PumpProduct\**" />
+	  <EmbeddedResource Remove="03-localclient\PumpProject\**" />
+	  <EmbeddedResource Remove="03-localclient\Pump\**" />
+	  <EmbeddedResource Remove="04-bll\01-ProjectItem\**" />
+	  <EmbeddedResource Remove="04-bll\02-PumpProdcuct\**" />
+	  <None Remove="03-localclient\PumpProduct\**" />
+	  <None Remove="03-localclient\PumpProject\**" />
+	  <None Remove="03-localclient\Pump\**" />
+	  <None Remove="04-bll\01-ProjectItem\**" />
+	  <None Remove="04-bll\02-PumpProdcuct\**" />
+	</ItemGroup>
+
+	<ItemGroup>
+	  <Compile Remove="02-httpclient\PBSProject.cs" />
+	  <Compile Remove="02-httpclient\PBSProjectItem.cs" />
+	  <Compile Remove="02-httpclient\PBSProjectItemModel.cs" />
+	  <Compile Remove="02-httpclient\PBSProjectItemModelMap.cs" />
+	  <Compile Remove="03-localclient\PBSProject.cs" />
+	  <Compile Remove="03-localclient\PBSProjectItem.cs" />
+	  <Compile Remove="03-localclient\PBSProjectItemModel.cs" />
+	  <Compile Remove="03-localclient\PBSProjectItemModelMap.cs" />
+	</ItemGroup>
+
+	<ItemGroup>
+	  <ProjectReference Include="..\..\Dto\HStation.Dto.PBS.Core\HStation.Dto.PBS.Core.csproj" />
+	  <ProjectReference Include="..\HStation.BLL.Core\HStation.BLL.Core.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git a/Desktop/HStation.Desktop.PBS.Core/App.config b/Desktop/HStation.Desktop.PBS.Core/App.config
new file mode 100644
index 0000000..040da78
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/App.config
@@ -0,0 +1,48 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System">
+      <section name="DevExpress.LookAndFeel.Design.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+    </sectionGroup>
+  </configSections>
+  <applicationSettings>
+    <DevExpress.LookAndFeel.Design.AppSettings>
+      <setting name="DefaultAppSkin" serializeAs="String">
+        <value>CompactSkin/WXI</value>
+      </setting>
+      <setting name="DefaultPalette" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="TouchUI" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="CompactUI" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="TouchScaleFactor" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="DirectX" serializeAs="String">
+        <value>True</value>
+      </setting>
+      <setting name="RegisterUserSkins" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="RegisterBonusSkins" serializeAs="String">
+        <value>True</value>
+      </setting>
+      <setting name="FontBehavior" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="DefaultAppFont" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="DPIAwarenessMode" serializeAs="String">
+        <value></value>
+      </setting>
+      <setting name="CustomPaletteCollection" serializeAs="Xml">
+        <value />
+      </setting>
+    </DevExpress.LookAndFeel.Design.AppSettings>
+  </applicationSettings>
+</configuration>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/DbFirstHelper.cs b/Desktop/HStation.Desktop.PBS.Core/DbFirstHelper.cs
new file mode 100644
index 0000000..72cef90
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/DbFirstHelper.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.Desktop
+{
+    /// <summary>
+    /// dbfirst
+    /// </summary>
+    public class DbFirstHelper
+    {
+        /// <summary>
+        /// 鍒濆鍖�
+        /// </summary>
+        public static void Initial()
+        { 
+             
+
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj
new file mode 100644
index 0000000..49acc56
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj
@@ -0,0 +1,42 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>disable</Nullable>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <ApplicationManifest>app.manifest</ApplicationManifest>
+    <ApplicationIcon>Hstation.ico</ApplicationIcon>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Content Include="Hstation.ico" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
+    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.1.8" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\WinFrmUI\Yw.WinFrmUI.Core\Yw.WinFrmUI.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Login\LoginFrm.cs" />
+    <Compile Update="Properties\Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Update="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj.user b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj.user
new file mode 100644
index 0000000..90b0d22
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj.user
@@ -0,0 +1,12 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+  <ItemGroup>
+    <Compile Update="Login\LoginFrm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.user b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.user
new file mode 100644
index 0000000..bbe5c2f
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.user
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <_LastSelectedProfileId>D:\WorkData\git\HStation\XHS\Desktop\HStation.Desktop.Xhs.Core\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Update="Login\LoginFrm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="TestForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Hstation.ico b/Desktop/HStation.Desktop.PBS.Core/Hstation.ico
new file mode 100644
index 0000000..fd64892
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Hstation.ico
Binary files differ
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.Designer.cs b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.Designer.cs
new file mode 100644
index 0000000..25c8efd
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.Designer.cs
@@ -0,0 +1,502 @@
+锘縩amespace HStation.Desktop
+{
+    partial class LoginFrm
+    {
+        /// <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()
+        {
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition3 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition4 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition5 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition3 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition4 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition5 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition6 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition7 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition8 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition9 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition10 = new DevExpress.XtraLayout.RowDefinition();
+            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            marqueeProgressBarControl1 = new DevExpress.XtraEditors.MarqueeProgressBarControl();
+            layoutControl2 = new DevExpress.XtraLayout.LayoutControl();
+            labelControl1 = new DevExpress.XtraEditors.LabelControl();
+            btnCancel = new DevExpress.XtraEditors.SimpleButton();
+            btnLogin = new DevExpress.XtraEditors.SimpleButton();
+            ckRemember = new DevExpress.XtraEditors.CheckEdit();
+            txtPwd = new DevExpress.XtraEditors.TextEdit();
+            txtLoginName = new DevExpress.XtraEditors.TextEdit();
+            labTitle = new DevExpress.XtraEditors.LabelControl();
+            layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            labSysTitle = new DevExpress.XtraLayout.SimpleLabelItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            itemForProgress = new DevExpress.XtraLayout.LayoutControlItem();
+            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
+            layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)marqueeProgressBarControl1.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControl2).BeginInit();
+            layoutControl2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)ckRemember.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)txtPwd.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)txtLoginName.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)labSysTitle).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)itemForProgress).BeginInit();
+            SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            layoutControl1.BackColor = Color.Transparent;
+            layoutControl1.Controls.Add(marqueeProgressBarControl1);
+            layoutControl1.Controls.Add(layoutControl2);
+            layoutControl1.Dock = DockStyle.Fill;
+            layoutControl1.Location = new Point(0, 0);
+            layoutControl1.Margin = new Padding(3, 2, 3, 2);
+            layoutControl1.Name = "layoutControl1";
+            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(994, 279, 650, 400);
+            layoutControl1.Root = Root;
+            layoutControl1.Size = new Size(1097, 565);
+            layoutControl1.TabIndex = 0;
+            layoutControl1.Text = "layoutControl1";
+            // 
+            // marqueeProgressBarControl1
+            // 
+            marqueeProgressBarControl1.EditValue = 0;
+            marqueeProgressBarControl1.Location = new Point(0, 550);
+            marqueeProgressBarControl1.Margin = new Padding(3, 2, 3, 2);
+            marqueeProgressBarControl1.Name = "marqueeProgressBarControl1";
+            marqueeProgressBarControl1.Properties.MarqueeAnimationSpeed = 20;
+            marqueeProgressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
+            marqueeProgressBarControl1.Size = new Size(1097, 15);
+            marqueeProgressBarControl1.StyleController = layoutControl1;
+            marqueeProgressBarControl1.TabIndex = 6;
+            // 
+            // layoutControl2
+            // 
+            layoutControl2.Controls.Add(labelControl1);
+            layoutControl2.Controls.Add(btnCancel);
+            layoutControl2.Controls.Add(btnLogin);
+            layoutControl2.Controls.Add(ckRemember);
+            layoutControl2.Controls.Add(txtPwd);
+            layoutControl2.Controls.Add(txtLoginName);
+            layoutControl2.Controls.Add(labTitle);
+            layoutControl2.HiddenItems.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem9 });
+            layoutControl2.Location = new Point(693, 172);
+            layoutControl2.Margin = new Padding(3, 2, 3, 2);
+            layoutControl2.Name = "layoutControl2";
+            layoutControl2.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(943, 480, 650, 400);
+            layoutControl2.Root = layoutControlGroup1;
+            layoutControl2.Size = new Size(302, 302);
+            layoutControl2.TabIndex = 5;
+            layoutControl2.Text = "layoutControl2";
+            // 
+            // labelControl1
+            // 
+            labelControl1.Appearance.Options.UseTextOptions = true;
+            labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            labelControl1.AppearanceHovered.ForeColor = Color.FromArgb(255, 128, 0);
+            labelControl1.AppearanceHovered.Options.UseForeColor = true;
+            labelControl1.AppearancePressed.ForeColor = Color.FromArgb(255, 128, 0);
+            labelControl1.AppearancePressed.Options.UseForeColor = true;
+            labelControl1.Location = new Point(155, 167);
+            labelControl1.Margin = new Padding(3, 2, 3, 2);
+            labelControl1.Name = "labelControl1";
+            labelControl1.Size = new Size(136, 19);
+            labelControl1.StyleController = layoutControl2;
+            labelControl1.TabIndex = 10;
+            labelControl1.Text = "蹇樿瀵嗙爜";
+            labelControl1.Visible = false;
+            // 
+            // btnCancel
+            // 
+            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
+            btnCancel.Appearance.Options.UseBackColor = true;
+            btnCancel.DialogResult = DialogResult.Cancel;
+            btnCancel.Location = new Point(14, 210);
+            btnCancel.Margin = new Padding(3, 2, 3, 2);
+            btnCancel.Name = "btnCancel";
+            btnCancel.Size = new Size(133, 28);
+            btnCancel.StyleController = layoutControl2;
+            btnCancel.TabIndex = 9;
+            btnCancel.Text = "鍙栨秷";
+            btnCancel.Click += btnCancel_Click;
+            // 
+            // btnLogin
+            // 
+            btnLogin.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
+            btnLogin.Appearance.Options.UseBackColor = true;
+            btnLogin.Location = new Point(155, 210);
+            btnLogin.Margin = new Padding(3, 2, 3, 2);
+            btnLogin.Name = "btnLogin";
+            btnLogin.Size = new Size(133, 28);
+            btnLogin.StyleController = layoutControl2;
+            btnLogin.TabIndex = 8;
+            btnLogin.Text = "鐧诲綍";
+            btnLogin.Click += btnLogin_Click;
+            // 
+            // ckRemember
+            // 
+            ckRemember.Location = new Point(14, 170);
+            ckRemember.Margin = new Padding(3, 2, 3, 2);
+            ckRemember.Name = "ckRemember";
+            ckRemember.Properties.AllowFocused = false;
+            ckRemember.Properties.AutoHeight = false;
+            ckRemember.Properties.AutoWidth = true;
+            ckRemember.Properties.Caption = "璁颁綇瀵嗙爜";
+            ckRemember.Size = new Size(71, 18);
+            ckRemember.StyleController = layoutControl2;
+            ckRemember.TabIndex = 7;
+            // 
+            // txtPwd
+            // 
+            txtPwd.EditValue = "";
+            txtPwd.Location = new Point(14, 122);
+            txtPwd.Margin = new Padding(3, 2, 3, 2);
+            txtPwd.Name = "txtPwd";
+            txtPwd.Properties.AutoHeight = false;
+            txtPwd.Properties.NullValuePrompt = "璇疯緭鍏ュ瘑鐮�";
+            txtPwd.Properties.PasswordChar = '*';
+            txtPwd.Size = new Size(274, 26);
+            txtPwd.StyleController = layoutControl2;
+            txtPwd.TabIndex = 6;
+            txtPwd.KeyPress += txtPwd_KeyPress;
+            // 
+            // txtLoginName
+            // 
+            txtLoginName.Location = new Point(14, 78);
+            txtLoginName.Margin = new Padding(3, 2, 3, 2);
+            txtLoginName.Name = "txtLoginName";
+            txtLoginName.Properties.AutoHeight = false;
+            txtLoginName.Properties.NullValuePrompt = "璇疯緭鍏ョ敤鎴峰悕";
+            txtLoginName.Size = new Size(274, 26);
+            txtLoginName.StyleController = layoutControl2;
+            txtLoginName.TabIndex = 5;
+            txtLoginName.KeyPress += txtLoginName_KeyPress;
+            // 
+            // labTitle
+            // 
+            labTitle.Appearance.FontSizeDelta = 10;
+            labTitle.Appearance.ForeColor = Color.White;
+            labTitle.Appearance.Options.UseFont = true;
+            labTitle.Appearance.Options.UseForeColor = true;
+            labTitle.Location = new Point(14, 13);
+            labTitle.Margin = new Padding(3, 2, 3, 2);
+            labTitle.Name = "labTitle";
+            labTitle.Size = new Size(274, 53);
+            labTitle.StyleController = layoutControl2;
+            labTitle.TabIndex = 4;
+            labTitle.Text = "鐢ㄦ埛鐧诲綍";
+            // 
+            // layoutControlItem9
+            // 
+            layoutControlItem9.Control = labelControl1;
+            layoutControlItem9.Location = new Point(163, 200);
+            layoutControlItem9.MinSize = new Size(75, 17);
+            layoutControlItem9.Name = "layoutControlItem9";
+            layoutControlItem9.OptionsTableLayoutItem.ColumnIndex = 1;
+            layoutControlItem9.OptionsTableLayoutItem.RowIndex = 3;
+            layoutControlItem9.Size = new Size(163, 60);
+            layoutControlItem9.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem9.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 11, 11);
+            layoutControlItem9.TextSize = new Size(0, 0);
+            layoutControlItem9.TextVisible = false;
+            // 
+            // layoutControlGroup1
+            // 
+            layoutControlGroup1.AppearanceGroup.BackColor = Color.FromArgb(80, 170, 220);
+            layoutControlGroup1.AppearanceGroup.Options.UseBackColor = true;
+            layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            layoutControlGroup1.GroupBordersVisible = false;
+            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7, layoutControlItem8 });
+            layoutControlGroup1.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
+            layoutControlGroup1.Name = "Root";
+            columnDefinition1.SizeType = SizeType.Percent;
+            columnDefinition1.Width = 50D;
+            columnDefinition2.SizeType = SizeType.Percent;
+            columnDefinition2.Width = 50D;
+            layoutControlGroup1.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2 });
+            rowDefinition1.Height = 59D;
+            rowDefinition1.SizeType = SizeType.Absolute;
+            rowDefinition2.Height = 44D;
+            rowDefinition2.SizeType = SizeType.Absolute;
+            rowDefinition3.Height = 44D;
+            rowDefinition3.SizeType = SizeType.Absolute;
+            rowDefinition4.Height = 44D;
+            rowDefinition4.SizeType = SizeType.Absolute;
+            rowDefinition5.Height = 44D;
+            rowDefinition5.SizeType = SizeType.Absolute;
+            layoutControlGroup1.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2, rowDefinition3, rowDefinition4, rowDefinition5 });
+            layoutControlGroup1.Size = new Size(302, 302);
+            layoutControlGroup1.TextVisible = false;
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = labTitle;
+            layoutControlItem3.Location = new Point(0, 0);
+            layoutControlItem3.MinSize = new Size(75, 17);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.OptionsTableLayoutItem.ColumnSpan = 2;
+            layoutControlItem3.Size = new Size(282, 59);
+            layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem3.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 1, 1);
+            layoutControlItem3.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
+            layoutControlItem3.TextSize = new Size(0, 0);
+            layoutControlItem3.TextToControlDistance = 0;
+            layoutControlItem3.TextVisible = false;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = txtLoginName;
+            layoutControlItem4.Location = new Point(0, 59);
+            layoutControlItem4.MinSize = new Size(163, 22);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.OptionsTableLayoutItem.ColumnSpan = 2;
+            layoutControlItem4.OptionsTableLayoutItem.RowIndex = 1;
+            layoutControlItem4.Size = new Size(282, 44);
+            layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem4.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 7, 7);
+            layoutControlItem4.Text = "鐢ㄦ埛鍚�";
+            layoutControlItem4.TextSize = new Size(0, 0);
+            layoutControlItem4.TextVisible = false;
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = txtPwd;
+            layoutControlItem5.Location = new Point(0, 103);
+            layoutControlItem5.MinSize = new Size(163, 22);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.OptionsTableLayoutItem.ColumnSpan = 2;
+            layoutControlItem5.OptionsTableLayoutItem.RowIndex = 2;
+            layoutControlItem5.Size = new Size(282, 44);
+            layoutControlItem5.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem5.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 7, 7);
+            layoutControlItem5.Text = "瀵嗙爜";
+            layoutControlItem5.TextSize = new Size(0, 0);
+            layoutControlItem5.TextVisible = false;
+            // 
+            // layoutControlItem6
+            // 
+            layoutControlItem6.Control = ckRemember;
+            layoutControlItem6.Location = new Point(0, 147);
+            layoutControlItem6.MinSize = new Size(80, 20);
+            layoutControlItem6.Name = "layoutControlItem6";
+            layoutControlItem6.OptionsTableLayoutItem.RowIndex = 3;
+            layoutControlItem6.Size = new Size(141, 44);
+            layoutControlItem6.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem6.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 11, 11);
+            layoutControlItem6.Text = "璁颁綇瀵嗙爜";
+            layoutControlItem6.TextLocation = DevExpress.Utils.Locations.Left;
+            layoutControlItem6.TextSize = new Size(0, 0);
+            layoutControlItem6.TextVisible = false;
+            // 
+            // layoutControlItem7
+            // 
+            layoutControlItem7.Control = btnLogin;
+            layoutControlItem7.Location = new Point(141, 191);
+            layoutControlItem7.MaxSize = new Size(0, 46);
+            layoutControlItem7.MinSize = new Size(87, 46);
+            layoutControlItem7.Name = "layoutControlItem7";
+            layoutControlItem7.OptionsTableLayoutItem.ColumnIndex = 1;
+            layoutControlItem7.OptionsTableLayoutItem.RowIndex = 4;
+            layoutControlItem7.Size = new Size(141, 91);
+            layoutControlItem7.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem7.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 7, 7);
+            layoutControlItem7.TextSize = new Size(0, 0);
+            layoutControlItem7.TextVisible = false;
+            // 
+            // layoutControlItem8
+            // 
+            layoutControlItem8.Control = btnCancel;
+            layoutControlItem8.Location = new Point(0, 191);
+            layoutControlItem8.MaxSize = new Size(0, 46);
+            layoutControlItem8.MinSize = new Size(87, 46);
+            layoutControlItem8.Name = "layoutControlItem8";
+            layoutControlItem8.OptionsTableLayoutItem.RowIndex = 4;
+            layoutControlItem8.Size = new Size(141, 91);
+            layoutControlItem8.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem8.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 7, 7);
+            layoutControlItem8.TextSize = new Size(0, 0);
+            layoutControlItem8.TextVisible = false;
+            // 
+            // Root
+            // 
+            Root.BackgroundImageOptions.Layout = ImageLayout.Zoom;
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { labSysTitle, layoutControlItem2, itemForProgress });
+            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
+            Root.Name = "Root";
+            columnDefinition3.SizeType = SizeType.Percent;
+            columnDefinition3.Width = 100D;
+            columnDefinition4.SizeType = SizeType.Absolute;
+            columnDefinition4.Width = 306D;
+            columnDefinition5.SizeType = SizeType.Absolute;
+            columnDefinition5.Width = 100D;
+            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition3, columnDefinition4, columnDefinition5 });
+            rowDefinition6.Height = 59D;
+            rowDefinition6.SizeType = SizeType.Absolute;
+            rowDefinition7.Height = 111D;
+            rowDefinition7.SizeType = SizeType.Absolute;
+            rowDefinition8.Height = 100D;
+            rowDefinition8.SizeType = SizeType.Percent;
+            rowDefinition9.Height = 74D;
+            rowDefinition9.SizeType = SizeType.Absolute;
+            rowDefinition10.Height = 15D;
+            rowDefinition10.SizeType = SizeType.Absolute;
+            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition6, rowDefinition7, rowDefinition8, rowDefinition9, rowDefinition10 });
+            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            Root.Size = new Size(1097, 565);
+            Root.TextVisible = false;
+            // 
+            // labSysTitle
+            // 
+            labSysTitle.AllowHotTrack = false;
+            labSysTitle.AppearanceItemCaption.FontSizeDelta = 15;
+            labSysTitle.AppearanceItemCaption.ForeColor = Color.White;
+            labSysTitle.AppearanceItemCaption.Options.UseFont = true;
+            labSysTitle.AppearanceItemCaption.Options.UseForeColor = true;
+            labSysTitle.CustomizationFormText = "寰幆姘村垎鏋愮郴缁�";
+            labSysTitle.Location = new Point(0, 0);
+            labSysTitle.Name = "labSysTitle";
+            labSysTitle.OptionsTableLayoutItem.ColumnSpan = 3;
+            labSysTitle.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            labSysTitle.Size = new Size(1097, 59);
+            labSysTitle.Text = " 寰幆姘村垎鏋愮郴缁�";
+            labSysTitle.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
+            labSysTitle.TextSize = new Size(234, 39);
+            labSysTitle.MouseDown += labSysTitle_MouseDown;
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.Control = layoutControl2;
+            layoutControlItem2.Location = new Point(691, 170);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.OptionsTableLayoutItem.ColumnIndex = 1;
+            layoutControlItem2.OptionsTableLayoutItem.RowIndex = 2;
+            layoutControlItem2.Size = new Size(306, 306);
+            layoutControlItem2.TextSize = new Size(0, 0);
+            layoutControlItem2.TextVisible = false;
+            // 
+            // itemForProgress
+            // 
+            itemForProgress.Control = marqueeProgressBarControl1;
+            itemForProgress.Location = new Point(0, 550);
+            itemForProgress.MinSize = new Size(44, 7);
+            itemForProgress.Name = "itemForProgress";
+            itemForProgress.OptionsTableLayoutItem.ColumnSpan = 3;
+            itemForProgress.OptionsTableLayoutItem.RowIndex = 4;
+            itemForProgress.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            itemForProgress.Size = new Size(1097, 15);
+            itemForProgress.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            itemForProgress.TextSize = new Size(0, 0);
+            itemForProgress.TextVisible = false;
+            itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+            // 
+            // LoginFrm
+            // 
+            Appearance.BackColor = Color.FromArgb(76, 132, 191);
+            Appearance.Options.UseBackColor = true;
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            BackgroundImageLayoutStore = ImageLayout.Stretch;
+            BackgroundImageStore = Xhs.Core.Properties.Resources.loginbg;
+            ClientSize = new Size(1097, 565);
+            Controls.Add(layoutControl1);
+            DoubleBuffered = true;
+            FormBorderStyle = FormBorderStyle.None;
+            Margin = new Padding(3, 2, 3, 2);
+            Name = "LoginFrm";
+            StartPosition = FormStartPosition.CenterScreen;
+            Text = "LoginBigFrm";
+            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
+            layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)marqueeProgressBarControl1.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControl2).EndInit();
+            layoutControl2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)ckRemember.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)txtPwd.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)txtLoginName.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).EndInit();
+            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
+            ((System.ComponentModel.ISupportInitialize)labSysTitle).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
+            ((System.ComponentModel.ISupportInitialize)itemForProgress).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.SimpleLabelItem labSysTitle;
+        private DevExpress.XtraLayout.LayoutControl layoutControl2;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraEditors.SimpleButton btnCancel;
+        private DevExpress.XtraEditors.SimpleButton btnLogin;
+        private DevExpress.XtraEditors.CheckEdit ckRemember;
+        private DevExpress.XtraEditors.TextEdit txtPwd;
+        private DevExpress.XtraEditors.TextEdit txtLoginName;
+        private DevExpress.XtraEditors.LabelControl labTitle;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
+        private DevExpress.XtraEditors.LabelControl labelControl1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
+        private DevExpress.XtraEditors.MarqueeProgressBarControl marqueeProgressBarControl1;
+        private DevExpress.XtraLayout.LayoutControlItem itemForProgress;
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.cs b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.cs
new file mode 100644
index 0000000..65631f7
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.cs
@@ -0,0 +1,136 @@
+锘縰sing DevExpress.XtraEditors;
+using Yw.WinFrmUI;
+
+namespace HStation.Desktop
+{
+    public partial class LoginFrm : DevExpress.XtraEditors.XtraForm
+    {
+        public LoginFrm()
+        {
+            InitializeComponent();
+            this.layoutControl1.SetupLayoutControl();
+            this.layoutControl2.SetupLayoutControl();
+            this.Load += LoginBigFrm_Load;
+        }
+
+        private void LoginBigFrm_Load(object sender, EventArgs e)
+        {
+            try
+            {
+                var settings = new UserLoginSettings();
+                this.txtLoginName.EditValue = settings.LoginName;
+                if (settings.ExpireTime != null && settings.ExpireTime.Value > DateTime.Now)
+                {
+                    this.txtPwd.EditValue = settings.Password;
+                    this.ckRemember.Checked = true;
+                }
+            }
+            catch
+            {
+            }
+        }
+
+        private void labSysTitle_MouseDown(object sender, MouseEventArgs e)
+        {
+            //this.DragMove();
+        }
+
+        private void btnLogin_Click(object sender, EventArgs e)
+        {
+            Login();
+        }
+
+        /// <summary>
+        /// 鏂板缁樺埗杈规
+        /// </summary>
+        protected override void OnPaint(PaintEventArgs e)
+        {
+            base.OnPaint(e);
+            //using (var pen = new Pen(Color.FromArgb(0, 122, 204), 1f))
+            //{
+            //    e.Graphics.DrawRectangle(pen, 0.5f, 0.5f, this.Width - 1, this.Height - 1);
+            //}
+        }
+
+        //楠岃瘉
+        private bool Valid()
+        {
+            this.itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
+            if (string.IsNullOrEmpty(this.txtLoginName.Text.Trim()))
+            {
+                XtraMessageBox.Show("璇疯緭鍏ョ敤鎴峰悕锛�");
+                this.itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+                return default;
+            }
+            if (string.IsNullOrEmpty(this.txtPwd.Text.Trim()))
+            {
+                XtraMessageBox.Show("璇疯緭鍏ュ瘑鐮侊紒");
+                this.itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+                return default;
+            }
+            return true;
+        }
+
+        //鍙栨秷
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.Cancel;
+            this.Close();
+        }
+
+        //鐢ㄦ埛鍚岴nter
+        private void txtLoginName_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == 13)
+            {
+                this.txtPwd.Focus();
+            }
+        }
+
+        //瀵嗙爜 Enter
+        private void txtPwd_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == 13)
+            {
+                Login();
+            }
+        }
+
+        //鐧诲綍
+        private async void Login()
+        {
+            if (!Valid())
+                return;
+
+            // 鐢ㄦ埛鐧诲綍
+            var loginModel = new Yw.Dto.UserLoginSoftwareBySystemAccountStandardInput();
+            loginModel.Software = "HStation_XHS_DESKTOP";
+            loginModel.LoginName = this.txtLoginName.Text.Trim();
+            loginModel.LoginPwd = this.txtPwd.Text.Trim();
+            var bll = new Yw.BLL.UserLogin();
+            var result = await bll.LoginSoftwareStandardBySystemAccount(loginModel);
+            if (result.Status != Yw.Auth.eLoginStatus.Success)
+            {
+                XtraMessageBox.Show($"鐧诲綍澶辫触,淇℃伅锛歿(int)result.Status}");
+                this.itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+                return;
+            }
+
+            Yw.JwtToken2Helper.Set(result.AccessToken, result.RefreshToken);
+            var settings = new UserLoginSettings();
+            settings.LoginName = this.txtLoginName.Text.Trim();
+            settings.Password = null;
+            settings.ExpireTime = DateTime.Now;
+            if (this.ckRemember.Checked)
+            {
+                settings.Password = this.txtPwd.Text.Trim();
+                settings.ExpireTime = DateTime.Now.AddMonths(1);
+            }
+            settings.Save();
+
+            // var login = new LoginUser(result);
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.resx b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/LoginFrm.resx
@@ -0,0 +1,120 @@
+锘�<?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>
+</root>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/LoginHelper.cs b/Desktop/HStation.Desktop.PBS.Core/Login/LoginHelper.cs
new file mode 100644
index 0000000..ff76e9e
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/LoginHelper.cs
@@ -0,0 +1,25 @@
+锘縩amespace HStation.Desktop
+{
+    /// <summary>
+    /// 鐧诲綍杈呭姪绫�
+    /// </summary>
+    public class LoginHelper
+    {
+        /// <summary>
+        /// 鐧诲綍
+        /// </summary>
+        public static bool Login()
+        {
+            var dlg = new LoginFrm();
+            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+            {
+                return true;
+            }
+            return false;
+        }
+
+
+
+
+    }
+}
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/UserLoginSettings.cs b/Desktop/HStation.Desktop.PBS.Core/Login/UserLoginSettings.cs
new file mode 100644
index 0000000..1899989
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/UserLoginSettings.cs
@@ -0,0 +1,42 @@
+锘縰sing System.Configuration;
+using Yw.Untity;
+
+namespace HStation.Desktop
+{
+    /// <summary>
+    /// 鐢ㄦ埛璁剧疆
+    /// </summary>
+    internal sealed class UserLoginSettings : ApplicationSettingsBase
+    {
+        /// <summary>
+        /// 鐧诲綍鍚嶇О
+        /// </summary>
+        [UserScopedSetting]
+        public string LoginName
+        {
+            get { return (string)this[nameof(LoginName)]; }
+            set { this[nameof(LoginName)] = value; }
+        }
+
+        /// <summary>
+        /// 鐧诲綍瀵嗙爜
+        /// </summary>
+        [UserScopedSetting]
+        public string Password
+        {
+            get { return ((string)this[nameof(Password)])?.DecryptByBase64(); }
+            set { this[nameof(Password)] = value?.EncryptByBase64(); }
+        }
+
+        /// <summary>
+        /// 杩囨湡鏃堕棿
+        /// </summary>
+        [UserScopedSetting]
+        public DateTime? ExpireTime
+        {
+            get { return (DateTime?)(this[nameof(ExpireTime)]); }
+            set { this[nameof(ExpireTime)] = value; }
+        }
+
+    }
+}
diff --git a/Desktop/HStation.Desktop.PBS.Core/Login/eLoginStatus.cs b/Desktop/HStation.Desktop.PBS.Core/Login/eLoginStatus.cs
new file mode 100644
index 0000000..1cf4f9b
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Login/eLoginStatus.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.Desktop
+{
+    /// <summary>
+    /// 鐧诲綍鐘舵��
+    /// </summary>
+    public enum eLoginStatus
+    {
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        Cancel = 0,
+
+        /// <summary>
+        /// 纭畾
+        /// </summary>
+        OK = 1,
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs b/Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs
new file mode 100644
index 0000000..079de94
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs
@@ -0,0 +1,479 @@
+锘縩amespace HStation.Desktop
+{
+    partial class MainForm
+    {
+        /// <summary>
+        ///  Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        ///  Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        ///  Required method for Designer support - do not modify
+        ///  the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+            DevExpress.Utils.SuperToolTip superToolTip4 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem4 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip5 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem5 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip6 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem6 = new DevExpress.Utils.ToolTipItem();
+            tileNavPane = new DevExpress.XtraBars.Navigation.TileNavPane();
+            nbTitle = new DevExpress.XtraBars.Navigation.NavButton();
+            navBtnPrevious = new DevExpress.XtraBars.Navigation.NavButton();
+            navBtnCurrent = new DevExpress.XtraBars.Navigation.NavButton();
+            navBtnNext = new DevExpress.XtraBars.Navigation.NavButton();
+            navBtnPattern = new DevExpress.XtraBars.Navigation.NavButton();
+            nbProjectMgr = new DevExpress.XtraBars.Navigation.NavButton();
+            nbModelMgr = new DevExpress.XtraBars.Navigation.NavButton();
+            nbProductManage = new DevExpress.XtraBars.Navigation.NavButton();
+            navButton2 = new DevExpress.XtraBars.Navigation.NavButton();
+            nbSystemConfig = new DevExpress.XtraBars.Navigation.NavButton();
+            nbAuthConfig = new DevExpress.XtraBars.Navigation.NavButton();
+            nbMin = new DevExpress.XtraBars.Navigation.NavButton();
+            nbNormal = new DevExpress.XtraBars.Navigation.NavButton();
+            nbClose = new DevExpress.XtraBars.Navigation.NavButton();
+            documentManager1 = new DevExpress.XtraBars.Docking2010.DocumentManager(components);
+            barManager1 = new DevExpress.XtraBars.BarManager(components);
+            bar3 = new DevExpress.XtraBars.Bar();
+            barStaticOwner = new DevExpress.XtraBars.BarStaticItem();
+            barStaticVersion = new DevExpress.XtraBars.BarStaticItem();
+            barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+            barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+            barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+            barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
+            barDockingMenuItem1 = new DevExpress.XtraBars.BarDockingMenuItem();
+            tabbedView1 = new DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(components);
+            flyoutPanel1 = new DevExpress.Utils.FlyoutPanel();
+            flyoutPanelControl1 = new DevExpress.Utils.FlyoutPanelControl();
+            svgImg32Model = new DevExpress.Utils.SvgImageCollection(components);
+            ((System.ComponentModel.ISupportInitialize)tileNavPane).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)documentManager1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)barManager1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)tabbedView1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).BeginInit();
+            flyoutPanel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)svgImg32Model).BeginInit();
+            SuspendLayout();
+            // 
+            // tileNavPane
+            // 
+            tileNavPane.AllowGlyphSkinning = true;
+            tileNavPane.Buttons.Add(nbTitle);
+            tileNavPane.Buttons.Add(navBtnPrevious);
+            tileNavPane.Buttons.Add(navBtnCurrent);
+            tileNavPane.Buttons.Add(navBtnNext);
+            tileNavPane.Buttons.Add(navBtnPattern);
+            tileNavPane.Buttons.Add(nbProjectMgr);
+            tileNavPane.Buttons.Add(nbModelMgr);
+            tileNavPane.Buttons.Add(nbProductManage);
+            tileNavPane.Buttons.Add(navButton2);
+            tileNavPane.Buttons.Add(nbSystemConfig);
+            tileNavPane.Buttons.Add(nbAuthConfig);
+            tileNavPane.Buttons.Add(nbMin);
+            tileNavPane.Buttons.Add(nbNormal);
+            tileNavPane.Buttons.Add(nbClose);
+            // 
+            // tileNavCategory1
+            // 
+            tileNavPane.DefaultCategory.Name = "tileNavCategory1";
+            // 
+            // 
+            // 
+            tileNavPane.DefaultCategory.Tile.DropDownOptions.BeakColor = Color.Empty;
+            tileNavPane.Dock = DockStyle.Top;
+            tileNavPane.Location = new Point(0, 0);
+            tileNavPane.Margin = new Padding(4, 5, 4, 5);
+            tileNavPane.Name = "tileNavPane";
+            tileNavPane.Size = new Size(2087, 83);
+            tileNavPane.TabIndex = 0;
+            tileNavPane.Text = "tileNavPane1";
+            tileNavPane.ElementClick += tileNavPane_ElementClick;
+            tileNavPane.MouseDown += tileNavPane_MouseDown;
+            // 
+            // nbTitle
+            // 
+            nbTitle.Caption = "浜屼緵鎴愬绯荤粺";
+            nbTitle.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+            nbTitle.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbTitle.ImageOptions.SvgImage");
+            nbTitle.Name = "nbTitle";
+            nbTitle.ElementClick += nbTitle_ElementClick;
+            // 
+            // navBtnPrevious
+            // 
+            navBtnPrevious.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Left;
+            navBtnPrevious.Caption = null;
+            navBtnPrevious.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("navBtnPrevious.ImageOptions.SvgImage");
+            navBtnPrevious.Name = "navBtnPrevious";
+            toolTipItem4.Text = "鍚庨��";
+            superToolTip4.Items.Add(toolTipItem4);
+            navBtnPrevious.SuperTip = superToolTip4;
+            navBtnPrevious.Visible = false;
+            navBtnPrevious.ElementClick += navBtnPrevious_ElementClick;
+            // 
+            // navBtnCurrent
+            // 
+            navBtnCurrent.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Left;
+            navBtnCurrent.Appearance.BackColor = Color.FromArgb(255, 128, 0);
+            navBtnCurrent.Appearance.ForeColor = Color.White;
+            navBtnCurrent.Appearance.Options.UseBackColor = true;
+            navBtnCurrent.Appearance.Options.UseForeColor = true;
+            navBtnCurrent.AppearanceDisabled.BackColor = Color.FromArgb(255, 128, 0);
+            navBtnCurrent.AppearanceDisabled.ForeColor = Color.White;
+            navBtnCurrent.AppearanceDisabled.Options.UseBackColor = true;
+            navBtnCurrent.AppearanceDisabled.Options.UseForeColor = true;
+            navBtnCurrent.AppearanceHovered.BackColor = Color.FromArgb(255, 128, 0);
+            navBtnCurrent.AppearanceHovered.ForeColor = Color.White;
+            navBtnCurrent.AppearanceHovered.Options.UseBackColor = true;
+            navBtnCurrent.AppearanceHovered.Options.UseForeColor = true;
+            navBtnCurrent.AppearanceSelected.BackColor = Color.FromArgb(255, 128, 0);
+            navBtnCurrent.AppearanceSelected.ForeColor = Color.White;
+            navBtnCurrent.AppearanceSelected.Options.UseBackColor = true;
+            navBtnCurrent.AppearanceSelected.Options.UseForeColor = true;
+            navBtnCurrent.Caption = "棣栭〉";
+            navBtnCurrent.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("navBtnCurrent.ImageOptions.SvgImage");
+            navBtnCurrent.Name = "navBtnCurrent";
+            // 
+            // navBtnNext
+            // 
+            navBtnNext.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Left;
+            navBtnNext.Caption = null;
+            navBtnNext.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("navBtnNext.ImageOptions.SvgImage");
+            navBtnNext.Name = "navBtnNext";
+            toolTipItem5.Text = "鍓嶈繘";
+            superToolTip5.Items.Add(toolTipItem5);
+            navBtnNext.SuperTip = superToolTip5;
+            navBtnNext.Visible = false;
+            navBtnNext.ElementClick += navBtnNext_ElementClick;
+            // 
+            // navBtnPattern
+            // 
+            navBtnPattern.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Left;
+            navBtnPattern.Caption = null;
+            navBtnPattern.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("navBtnPattern.ImageOptions.SvgImage");
+            navBtnPattern.Name = "navBtnPattern";
+            toolTipItem6.Text = "妯″紡鍒囨崲";
+            superToolTip6.Items.Add(toolTipItem6);
+            navBtnPattern.SuperTip = superToolTip6;
+            navBtnPattern.ElementClick += navBtnPattern_ElementClick;
+            // 
+            // nbProjectMgr
+            // 
+            nbProjectMgr.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbProjectMgr.Caption = "椤圭洰绠$悊";
+            nbProjectMgr.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbProjectMgr.ImageOptions.SvgImage");
+            nbProjectMgr.ImageOptions.SvgImageSize = new Size(24, 24);
+            nbProjectMgr.Name = "nbProjectMgr";
+            nbProjectMgr.ElementClick += nbProjectMgr_ElementClick;
+            // 
+            // nbModelMgr
+            // 
+            nbModelMgr.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbModelMgr.Caption = "妯″瀷绠$悊";
+            nbModelMgr.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbModelMgr.ImageOptions.SvgImage");
+            nbModelMgr.ImageOptions.SvgImageSize = new Size(24, 24);
+            nbModelMgr.Name = "nbModelMgr";
+            nbModelMgr.ElementClick += nbModelMgr_ElementClick;
+            // 
+            // nbProductManage
+            // 
+            nbProductManage.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbProductManage.Caption = "浜у搧绠$悊";
+            nbProductManage.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbProductManage.ImageOptions.SvgImage");
+            nbProductManage.Name = "nbProductManage";
+            nbProductManage.ElementClick += nbProductManage_ElementClick;
+            // 
+            // navButton2
+            // 
+            navButton2.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            navButton2.Caption = "鍨嬪彿绠$悊";
+            navButton2.Name = "navButton2";
+            navButton2.Visible = false;
+            // 
+            // nbSystemConfig
+            // 
+            nbSystemConfig.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbSystemConfig.Caption = "绯荤粺閰嶇疆";
+            nbSystemConfig.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbSystemConfig.ImageOptions.SvgImage");
+            nbSystemConfig.Name = "nbSystemConfig";
+            nbSystemConfig.ElementClick += nbSystemConfig_ElementClick;
+            // 
+            // nbAuthConfig
+            // 
+            nbAuthConfig.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbAuthConfig.Caption = "鏉冮檺閰嶇疆";
+            nbAuthConfig.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbAuthConfig.ImageOptions.SvgImage");
+            nbAuthConfig.Name = "nbAuthConfig";
+            nbAuthConfig.ElementClick += nbAuthConfig_ElementClick;
+            // 
+            // nbMin
+            // 
+            nbMin.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbMin.Caption = null;
+            nbMin.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+            nbMin.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbMin.ImageOptions.SvgImage");
+            nbMin.ImageOptions.SvgImageSize = new Size(24, 24);
+            nbMin.Name = "nbMin";
+            nbMin.ElementClick += nbMin_ElementClick;
+            // 
+            // nbNormal
+            // 
+            nbNormal.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbNormal.Caption = null;
+            nbNormal.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+            nbNormal.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbNormal.ImageOptions.SvgImage");
+            nbNormal.ImageOptions.SvgImageSize = new Size(20, 20);
+            nbNormal.Name = "nbNormal";
+            nbNormal.ElementClick += nbNormal_ElementClick;
+            // 
+            // nbClose
+            // 
+            nbClose.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
+            nbClose.Caption = null;
+            nbClose.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+            nbClose.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbClose.ImageOptions.SvgImage");
+            nbClose.ImageOptions.SvgImageSize = new Size(24, 24);
+            nbClose.Name = "nbClose";
+            nbClose.ElementClick += nabClose_ElementClick;
+            // 
+            // documentManager1
+            // 
+            documentManager1.ContainerControl = this;
+            documentManager1.MenuManager = barManager1;
+            documentManager1.View = tabbedView1;
+            documentManager1.ViewCollection.AddRange(new DevExpress.XtraBars.Docking2010.Views.BaseView[] { tabbedView1 });
+            // 
+            // barManager1
+            // 
+            barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar3 });
+            barManager1.DockControls.Add(barDockControlTop);
+            barManager1.DockControls.Add(barDockControlBottom);
+            barManager1.DockControls.Add(barDockControlLeft);
+            barManager1.DockControls.Add(barDockControlRight);
+            barManager1.DockManager = dockManager1;
+            barManager1.Form = this;
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barStaticOwner, barStaticVersion, barDockingMenuItem1 });
+            barManager1.MaxItemId = 4;
+            barManager1.StatusBar = bar3;
+            // 
+            // bar3
+            // 
+            bar3.BarName = "Status bar";
+            bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+            bar3.DockCol = 0;
+            bar3.DockRow = 0;
+            bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+            bar3.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barStaticOwner), new DevExpress.XtraBars.LinkPersistInfo(barStaticVersion) });
+            bar3.OptionsBar.AllowQuickCustomization = false;
+            bar3.OptionsBar.DrawDragBorder = false;
+            bar3.OptionsBar.UseWholeRow = true;
+            bar3.Text = "Status bar";
+            // 
+            // barStaticOwner
+            // 
+            barStaticOwner.Caption = "涓婃捣涔夌淮娴佷綋绉戞妧鏈夐檺鍏徃";
+            barStaticOwner.Id = 1;
+            barStaticOwner.Name = "barStaticOwner";
+            // 
+            // barStaticVersion
+            // 
+            barStaticVersion.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            barStaticVersion.Caption = "鐗堟湰锛�1.0.0.0";
+            barStaticVersion.Id = 2;
+            barStaticVersion.Name = "barStaticVersion";
+            // 
+            // barDockControlTop
+            // 
+            barDockControlTop.CausesValidation = false;
+            barDockControlTop.Dock = DockStyle.Top;
+            barDockControlTop.Location = new Point(0, 0);
+            barDockControlTop.Manager = barManager1;
+            barDockControlTop.Margin = new Padding(4, 5, 4, 5);
+            barDockControlTop.Size = new Size(2087, 0);
+            // 
+            // barDockControlBottom
+            // 
+            barDockControlBottom.CausesValidation = false;
+            barDockControlBottom.Dock = DockStyle.Bottom;
+            barDockControlBottom.Location = new Point(0, 1085);
+            barDockControlBottom.Manager = barManager1;
+            barDockControlBottom.Margin = new Padding(4, 5, 4, 5);
+            barDockControlBottom.Size = new Size(2087, 46);
+            // 
+            // barDockControlLeft
+            // 
+            barDockControlLeft.CausesValidation = false;
+            barDockControlLeft.Dock = DockStyle.Left;
+            barDockControlLeft.Location = new Point(0, 0);
+            barDockControlLeft.Manager = barManager1;
+            barDockControlLeft.Margin = new Padding(4, 5, 4, 5);
+            barDockControlLeft.Size = new Size(0, 1085);
+            // 
+            // barDockControlRight
+            // 
+            barDockControlRight.CausesValidation = false;
+            barDockControlRight.Dock = DockStyle.Right;
+            barDockControlRight.Location = new Point(2087, 0);
+            barDockControlRight.Manager = barManager1;
+            barDockControlRight.Margin = new Padding(4, 5, 4, 5);
+            barDockControlRight.Size = new Size(0, 1085);
+            // 
+            // dockManager1
+            // 
+            dockManager1.Form = this;
+            dockManager1.MenuManager = barManager1;
+            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
+            // 
+            // barDockingMenuItem1
+            // 
+            barDockingMenuItem1.Caption = "Window";
+            barDockingMenuItem1.Id = 3;
+            barDockingMenuItem1.Name = "barDockingMenuItem1";
+            // 
+            // tabbedView1
+            // 
+            tabbedView1.DocumentGroupProperties.ShowTabHeader = false;
+            tabbedView1.DocumentProperties.AllowPin = true;
+            tabbedView1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
+            tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
+            tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
+            tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
+            tabbedView1.DocumentClosed += tabbedView1_DocumentClosed;
+            // 
+            // flyoutPanel1
+            // 
+            flyoutPanel1.AnimationRate = 100;
+            flyoutPanel1.Controls.Add(flyoutPanelControl1);
+            flyoutPanel1.Location = new Point(706, 209);
+            flyoutPanel1.Margin = new Padding(4, 5, 4, 5);
+            flyoutPanel1.Name = "flyoutPanel1";
+            flyoutPanel1.Options.CloseOnOuterClick = true;
+            flyoutPanel1.OptionsBeakPanel.BeakLocation = DevExpress.Utils.BeakPanelBeakLocation.Top;
+            flyoutPanel1.OptionsButtonPanel.ButtonPanelHeight = 47;
+            flyoutPanel1.ParentForm = this;
+            flyoutPanel1.Size = new Size(286, 157);
+            flyoutPanel1.TabIndex = 5;
+            // 
+            // flyoutPanelControl1
+            // 
+            flyoutPanelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+            flyoutPanelControl1.Dock = DockStyle.Fill;
+            flyoutPanelControl1.FlyoutPanel = flyoutPanel1;
+            flyoutPanelControl1.Location = new Point(0, 0);
+            flyoutPanelControl1.Margin = new Padding(4, 5, 4, 5);
+            flyoutPanelControl1.Name = "flyoutPanelControl1";
+            flyoutPanelControl1.Size = new Size(286, 157);
+            flyoutPanelControl1.TabIndex = 0;
+            // 
+            // svgImg32Model
+            // 
+            svgImg32Model.ImageSize = new Size(32, 32);
+            svgImg32Model.Add("actions_book", "image://svgimages/icon builder/actions_book.svg");
+            svgImg32Model.Add("charttype_stepline", "image://svgimages/chart/charttype_stepline.svg");
+            svgImg32Model.Add("bletter", "image://svgimages/outlook inspired/bletter.svg");
+            svgImg32Model.Add("propertiespanel", "image://svgimages/diagramicons/propertiespanel.svg");
+            svgImg32Model.Add("columntotalsposition", "image://svgimages/dashboards/columntotalsposition.svg");
+            svgImg32Model.Add("bo_category", "image://svgimages/business objects/bo_category.svg");
+            svgImg32Model.Add("documentproperties", "image://svgimages/richedit/documentproperties.svg");
+            svgImg32Model.Add("showallvalue", "image://svgimages/dashboards/showallvalue.svg");
+            svgImg32Model.Add("gaugestylelinearhorizontal", "image://svgimages/dashboards/gaugestylelinearhorizontal.svg");
+            svgImg32Model.Add("createlinechartnomarkers", "image://svgimages/spreadsheet/createlinechartnomarkers.svg");
+            svgImg32Model.Add("Threelink", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Threelink"));
+            svgImg32Model.Add("Line", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Line"));
+            svgImg32Model.Add("compressor", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.compressor"));
+            svgImg32Model.Add("Exchanger", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Exchanger"));
+            svgImg32Model.Add("Fourlink", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Fourlink"));
+            svgImg32Model.Add("Elbow", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Elbow"));
+            svgImg32Model.Add("Manufacturer", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Manufacturer"));
+            svgImg32Model.Add("Valve", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Valve"));
+            svgImg32Model.Add("Pump", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Pump"));
+            svgImg32Model.Add("Nozzle", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImg32Model.Nozzle"));
+            // 
+            // MainForm
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(2087, 1131);
+            Controls.Add(flyoutPanel1);
+            Controls.Add(tileNavPane);
+            Controls.Add(barDockControlLeft);
+            Controls.Add(barDockControlRight);
+            Controls.Add(barDockControlBottom);
+            Controls.Add(barDockControlTop);
+            Margin = new Padding(4, 3, 4, 3);
+            Name = "MainForm";
+            Text = "Form1";
+            WindowState = FormWindowState.Maximized;
+            FormClosing += MainForm_FormClosing;
+            FormClosed += MainForm_FormClosed;
+            Load += MainForm_Load;
+            Shown += MainForm_Shown;
+            Resize += MainForm_Resize;
+            ((System.ComponentModel.ISupportInitialize)tileNavPane).EndInit();
+            ((System.ComponentModel.ISupportInitialize)documentManager1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)barManager1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)dockManager1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)tabbedView1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).EndInit();
+            flyoutPanel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)svgImg32Model).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private DevExpress.XtraBars.Navigation.TileNavPane tileNavPane;
+        private DevExpress.XtraBars.Navigation.NavButton nbTitle;
+        private DevExpress.XtraBars.Docking2010.DocumentManager documentManager1;
+        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+        private DevExpress.XtraBars.BarManager barManager1;
+        private DevExpress.XtraBars.Bar bar3;
+        private DevExpress.XtraBars.BarDockControl barDockControlTop;
+        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+        private DevExpress.XtraBars.BarDockControl barDockControlRight;
+        private DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView tabbedView1;
+        private DevExpress.XtraBars.BarStaticItem barStaticOwner;
+        private DevExpress.XtraBars.BarStaticItem barStaticVersion;
+        private DevExpress.XtraBars.BarDockingMenuItem barDockingMenuItem1;
+        private DevExpress.XtraBars.Navigation.NavButton nbMin;
+        private DevExpress.XtraBars.Navigation.NavButton nbNormal;
+        private DevExpress.XtraBars.Navigation.NavButton nbClose;
+        private DevExpress.XtraBars.Docking.DockManager dockManager1;
+        private DevExpress.XtraBars.Navigation.NavButton nbProjectMgr;
+        private DevExpress.XtraBars.Navigation.NavButton nbModelMgr;
+        private DevExpress.Utils.FlyoutPanel flyoutPanel1;
+        private DevExpress.Utils.FlyoutPanelControl flyoutPanelControl1;
+        private DevExpress.Utils.SvgImageCollection svgImg32Model;
+        private DevExpress.XtraBars.Navigation.NavButton nbProductManage;
+        private DevExpress.XtraBars.Navigation.NavButton nbSystemConfig;
+        private DevExpress.XtraBars.Navigation.NavButton navButton2;
+        private DevExpress.XtraBars.Navigation.NavButton navBtnCurrent;
+        private DevExpress.XtraBars.Navigation.NavButton navBtnPrevious;
+        private DevExpress.XtraBars.Navigation.NavButton navBtnNext;
+        private DevExpress.XtraBars.Navigation.NavButton nbAuthConfig;
+        private DevExpress.XtraBars.Navigation.NavButton navBtnPattern;
+    }
+}
diff --git a/Desktop/HStation.Desktop.PBS.Core/MainForm.cs b/Desktop/HStation.Desktop.PBS.Core/MainForm.cs
new file mode 100644
index 0000000..e896851
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/MainForm.cs
@@ -0,0 +1,1057 @@
+using DevExpress.XtraBars.Docking;
+using DevExpress.XtraBars.Docking2010.Views;
+using DevExpress.XtraBars.Navigation;
+using DevExpress.XtraBars.Ribbon;
+using DevExpress.XtraEditors;
+using System.IO;
+using Yw.WinFrmUI;
+using Yw.WinFrmUI.Page;
+
+namespace HStation.Desktop
+{
+    public partial class MainForm : RibbonForm
+    {
+        public MainForm()
+        {
+            InitializeComponent();
+        }
+
+        #region TileNavPane 相关处理
+
+        //最大化最小化窗体
+        private void nbNormal_ElementClick(object sender, NavElementEventArgs e)
+        {
+            if (this.WindowState == FormWindowState.Maximized)
+            {
+                this.WindowState = FormWindowState.Normal;
+            }
+            else
+            {
+                this.WindowState = FormWindowState.Maximized;
+            }
+        }
+
+        //最小化窗体
+        private void nbMin_ElementClick(object sender, NavElementEventArgs e)
+        {
+            this.WindowState = FormWindowState.Minimized;
+        }
+
+        //关闭窗体
+        private void nabClose_ElementClick(object sender, NavElementEventArgs e)
+        {
+            this.Close();
+        }
+
+        //移动窗体
+        private void tileNavPane_MouseDown(object sender, MouseEventArgs e)
+        {
+            if (e.Clicks >= 2)
+            {
+                if (this.WindowState == FormWindowState.Maximized)
+                {
+                    this.WindowState = FormWindowState.Normal;
+                }
+                else
+                {
+                    this.WindowState = FormWindowState.Maximized;
+                }
+            }
+            else
+            {
+                var hitInfo = this.tileNavPane.CalcHitInfo(e.Location);
+                if (hitInfo.InButton)
+                {
+                    return;
+                }
+                this.DragMove();
+            }
+        }
+
+        //功能点击事件
+        private void tileNavPane_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var item = e.Element as NavButton;
+            if (item.Tag != null)
+            {
+                if (item.Tag is string)
+                {
+                }
+            }
+        }
+
+        //首页
+        private void nbTitle_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var guid = new PageGuid()
+            {
+                Modular = "Xhs",
+                MoudingType = eMoudingType.Tab,
+                Function = "Home"
+            };
+            if (!IsExistPage(guid, true))
+            {
+                //var page = new HomeXhsProjectPage();
+                //CreatePage(page, guid);
+            }
+        }
+
+        //项目管理
+        private void nbProjectMgr_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var guid = new PageGuid()
+            {
+                Modular = "Xhs",
+                MoudingType = eMoudingType.Tab,
+                Function = "ProjectMgr",
+            };
+            if (!IsExistPage(guid, true))
+            {
+                //var page = new XhsProjectMgrPage();
+                //CreatePage(page, guid);
+            }
+        }
+
+        //模型管理
+        private void nbModelMgr_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var pt = this.tileNavPane.PointToClient(MousePosition);
+            var hitInfo = this.tileNavPane.CalcHitInfo(pt);
+            if (hitInfo.ButtonInfo != null)
+            {
+                if (_bimfaceMgrBeakCtrl == null)
+                {
+                    var peakItemList = new List<Yw.WinFrmUI.TilePeekItem>()
+                    {
+                        new TilePeekItem()
+                        {
+                            Caption="水力场景",
+                            SvgImage=svgImg32Model[0],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Hydro",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="SceneMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    //var page=new Yw.WinFrmUI.HydroSceneMgrPage();
+                                    //CreatePage(page,guid);
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="水力模型",
+                            SvgImage=svgImg32Model[1],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Hydro",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ModelMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new HStation.WinFrmUI.HydroModelMgrPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="三维模型",
+                            SvgImage=svgImg32Model[2],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Bimface",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="FileMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new Yw.WinFrmUI.BimfaceFileMgrPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                    };
+                    _bimfaceMgrBeakCtrl = peakItemList.CreatePeekCtrl();
+                }
+                this.flyoutPanel1.Size = _bimfaceMgrBeakCtrl.Size;
+                this.flyoutPanelControl1.Controls.Clear();
+                this.flyoutPanelControl1.Controls.Add(_bimfaceMgrBeakCtrl);
+                var rectangle = this.RectangleToScreen(hitInfo.ButtonInfo.Bounds);
+                this.flyoutPanel1.ShowBeakForm(rectangle);
+            }
+        }
+
+        private Control _bimfaceMgrBeakCtrl = null;//bimface管理弹出界面
+        private Control _SystemProductManageCtrl = null;//产品管理弹出界面
+
+        private Control _SystemConfigCtrl = null;//系统配置弹出界面
+
+        private Control _AuthConfigCtrl = null;//权限配置弹出界面
+
+        //产品管理
+        private void nbProductManage_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var pt = this.tileNavPane.PointToClient(MousePosition);
+            var hitInfo = this.tileNavPane.CalcHitInfo(pt);
+            if (hitInfo.ButtonInfo != null)
+            {
+                if (_SystemProductManageCtrl == null)
+                {
+                    var peakItemList = new List<Yw.WinFrmUI.TilePeekItem>()
+                    {
+                        new TilePeekItem(){
+                            Caption="水泵管理",
+                            SvgImage=svgImg32Model[18],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="pumpMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new PumpProductMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="阀门管理",
+                            SvgImage=svgImg32Model[17],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ValveMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                  /*  var page=new ValveManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                          /*new TilePeekItem(){
+                            Caption="管道附件",
+                            SvgImage=svgImg32Model[8],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="AdaptingMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    var page=new AdaptingManageMainPanel();
+                                    CreatePage(page,guid);
+                                }
+                            }
+                        }, */ new TilePeekItem(){
+                            Caption="弯头管理",
+                            SvgImage=svgImg32Model[15],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="Elbow",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new ElbowManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                           new TilePeekItem(){
+                            Caption="三通管理",
+                            SvgImage=svgImg32Model[10],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ThreeLink",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new ThreeLinkManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                            new TilePeekItem(){
+                            Caption="喷头管理",
+                            SvgImage=svgImg32Model[19],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="Sprinkler",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new SprinklerManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                             new TilePeekItem(){
+                            Caption="四通管理",
+                            SvgImage=svgImg32Model[14],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="FourLink",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new FourLinkManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="厂商管理",
+                            SvgImage=svgImg32Model[16],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="AssetsManufacturerMainPanel",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new AssetsManufacturerMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                                new TilePeekItem(){
+                            Caption="管道管理",
+                            SvgImage=svgImg32Model[11],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="PipeLineMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new PipeManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },  new TilePeekItem(){
+                            Caption="换热器管理",
+                            SvgImage=svgImg32Model[13],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ExchangerMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new ExchangerManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },new TilePeekItem(){
+                            Caption="空压机管理",
+                            SvgImage=svgImg32Model[12],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Asstes",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="CompressorMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                  /*  var page=new CompressorManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        }
+                    };
+                    _SystemProductManageCtrl = peakItemList.CreatePeekCtrl();
+                }
+                this.flyoutPanel1.Size = _SystemProductManageCtrl.Size;
+                this.flyoutPanelControl1.Controls.Clear();
+                this.flyoutPanelControl1.Controls.Add(_SystemProductManageCtrl);
+                var rectangle = this.RectangleToScreen(hitInfo.ButtonInfo.Bounds);
+                this.flyoutPanel1.ShowBeakForm(rectangle);
+            }
+        }
+
+        //系统配置
+        private void nbSystemConfig_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var pt = this.tileNavPane.PointToClient(MousePosition);
+            var hitInfo = this.tileNavPane.CalcHitInfo(pt);
+            if (hitInfo.ButtonInfo != null)
+            {
+                if (_SystemConfigCtrl == null)
+                {
+                    var peakItemList = new List<Yw.WinFrmUI.TilePeekItem>()
+                    {
+                    /*    new TilePeekItem(){
+                            Caption="角色管理",
+                            SvgImage=svgImg32Model[3],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="UserManageMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    var page=new UserMgrMainPanel();
+                                    CreatePage(page,guid);
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="用户管理",
+                            SvgImage=svgImg32Model[7],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ValveMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    var page=new ValveManageMainPage();
+                                    CreatePage(page,guid);
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="菜单管理",
+                            SvgImage=svgImg32Model[2],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="TypeMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    var page=new SysTypeManageMainPanel();
+                                    CreatePage(page,guid);
+                                }
+                            }
+                        },*/
+                             new TilePeekItem(){
+                            Caption="类型管理",
+                            SvgImage=svgImg32Model[4],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Basic",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="TypeMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {/*
+                                    var page=new SysTypeManageMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                          new TilePeekItem(){
+                            Caption="分类管理",
+                            SvgImage=svgImg32Model[5],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Basic",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="CataLogMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                  /*  var page=new SysCatalogManageMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                         },      new TilePeekItem(){
+                            Caption="属性管理",
+                            SvgImage=svgImg32Model[6],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Basic",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="PropMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new SysPropManageMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                         },
+                        new TilePeekItem(){
+                            Caption="字典类型",
+                            SvgImage=svgImg32Model[1],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Dict",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="DictMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                   /* var page=new HStation.WinFrmUI.Dict.DictManageMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                     };
+                    _SystemConfigCtrl = peakItemList.CreatePeekCtrl();
+                }
+                this.flyoutPanel1.Size = _SystemConfigCtrl.Size;
+                this.flyoutPanelControl1.Controls.Clear();
+                this.flyoutPanelControl1.Controls.Add(_SystemConfigCtrl);
+                var rectangle = this.RectangleToScreen(hitInfo.ButtonInfo.Bounds);
+                this.flyoutPanel1.ShowBeakForm(rectangle);
+            }
+        }
+
+        /// <summary>
+        /// 权限配置
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void nbAuthConfig_ElementClick(object sender, NavElementEventArgs e)
+        {
+            var pt = this.tileNavPane.PointToClient(MousePosition);
+            var hitInfo = this.tileNavPane.CalcHitInfo(pt);
+            if (hitInfo.ButtonInfo != null)
+            {
+                if (_AuthConfigCtrl == null)
+                {
+                    var peakItemList = new List<Yw.WinFrmUI.TilePeekItem>()
+                    {
+                        new TilePeekItem(){
+                            Caption="角色管理",
+                            SvgImage=svgImg32Model[3],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="UserManageMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new UserMgrMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="用户管理",
+                            SvgImage=svgImg32Model[7],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="ValveMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new ValveManageMainPage();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        new TilePeekItem(){
+                            Caption="菜单管理",
+                            SvgImage=svgImg32Model[2],
+                            SvgImageSize=new Size(24,24),
+                            Click=()=>{
+                                this.flyoutPanel1.HideBeakForm();
+                                var guid=new PageGuid(){
+                                    Modular="Auth",
+                                    MoudingType=eMoudingType.Tab,
+                                    Function="TypeMgr",
+                                };
+                                if(!IsExistPage(guid,true))
+                                {
+                                    /*var page=new SysTypeManageMainPanel();
+                                    CreatePage(page,guid);*/
+                                }
+                            }
+                        },
+                        };
+                    _AuthConfigCtrl = peakItemList.CreatePeekCtrl();
+                }
+                this.flyoutPanel1.Size = _AuthConfigCtrl.Size;
+                this.flyoutPanelControl1.Controls.Clear();
+                this.flyoutPanelControl1.Controls.Add(_AuthConfigCtrl);
+                var rectangle = this.RectangleToScreen(hitInfo.ButtonInfo.Bounds);
+                this.flyoutPanel1.ShowBeakForm(rectangle);
+            }
+        }
+
+        #endregion TileNavPane 相关处理
+
+        #region 窗体事件
+
+        //界面记载事件
+        private void MainForm_Load(object sender, EventArgs e)
+        {
+        }
+
+        //界面显示事件
+        private void MainForm_Shown(object sender, EventArgs e)
+        {
+            var guid = new PageGuid()
+            {
+                Modular = "Xhs",
+                MoudingType = eMoudingType.Tab,
+                Function = "Home"
+            };
+            if (!IsExistPage(guid, true))
+            {
+                /* var page = new HomeXhsProjectPage();
+                 //var page = new HomeXhsProjectPage();
+                 CreatePage(page, guid);*/
+            }
+        }
+
+        //界面正在退出时确认
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (e.CloseReason == CloseReason.UserClosing)
+            {
+                if (XtraMessageBox.Show("是否关闭程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
+                {
+                    e.Cancel = true;
+                    return;
+                }
+            }
+        }
+
+        //界面退出
+        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
+        {
+        }
+
+        //窗体尺寸改变
+        private void MainForm_Resize(object sender, EventArgs e)
+        {
+            if (this.WindowState == FormWindowState.Maximized)
+            {
+            }
+            else
+            {
+            }
+        }
+
+        #endregion 窗体事件
+
+        #region TabbedView 相关事件处理程序
+
+        //选中
+        private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e)
+        {
+            if (e.Document == null)
+                return;
+            var surfaceGuid = e.Document.Tag as PageGuid;
+            if (surfaceGuid == null)
+                return;
+            SelectModular(surfaceGuid.Modular, surfaceGuid);
+        }
+
+        //添加
+        private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e)
+        {
+            if (this.tabbedView1.Documents.Count > 1)
+            {
+                if (!this.tabbedView1.DocumentGroupProperties.ShowTabHeader)
+                {
+                    this.navBtnPrevious.Visible = true;
+                    this.navBtnNext.Visible = true;
+                }
+            }
+        }
+
+        //激活
+        private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e)
+        {
+            var page = e.Document.Control as DocumentPage;
+            if (page == null)
+            {
+                return;
+            }
+            this.navBtnCurrent.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
+            this.navBtnCurrent.Caption = page.PageTitle.Caption;
+        }
+
+        //关闭 此时控件已经为空
+        private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e)
+        {
+        }
+
+        #endregion TabbedView 相关事件处理程序
+
+        #region Page
+
+        //是否存在Page
+        private bool IsExistPage(PageGuid pguid, bool isActivePage)
+        {
+            if (pguid == null)
+            {
+                return false;
+            }
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                foreach (DockPanel panel in this.dockManager1.Panels)
+                {
+                    if (panel.Tag != null)
+                    {
+                        if (panel.Tag is PageGuid)
+                        {
+                            if ((panel.Tag as PageGuid).ToString() == pguid.ToString())
+                            {
+                                if (isActivePage)
+                                {
+                                    panel.Show();
+                                }
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                foreach (BaseDocument doc in this.tabbedView1.Documents)
+                {
+                    if (doc.Tag != null)
+                    {
+                        if (doc.Tag is PageGuid)
+                        {
+                            if ((doc.Tag as PageGuid).ToString() == pguid.ToString())
+                            {
+                                if (isActivePage)
+                                {
+                                    this.tabbedView1.Controller.Activate(doc);
+                                }
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            return false;
+        }
+
+        //更新数据
+        private void RefreshPageData(PageGuid pguid)
+        {
+            if (pguid == null)
+            {
+                return;
+            }
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (panel != null)
+                {
+                    if (panel.ControlContainer.Controls.Count > 0)
+                    {
+                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
+                        if (page != null)
+                        {
+                            page.RefreshData();
+                        }
+                    }
+                    return;
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (doc != null)
+                {
+                    var page = doc.Control as DocumentPage;
+                    if (page != null)
+                    {
+                        page.RefreshData();
+                    }
+                    return;
+                }
+            }
+        }
+
+        //更新PageTitle
+        private void UpdatePageTitle(PageGuid pguid, PageTitle title)
+        {
+            if (pguid == null || title == null)
+                return;
+
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (panel != null)
+                {
+                    panel.Text = title.Caption;
+                    panel.ImageOptions.Image = title.HeaderImage;
+                    panel.ImageOptions.SvgImage = title.HeaderSvgImage;
+                    panel.ImageOptions.SvgImageSize = title.SvgImageSize;
+                    if (panel.ControlContainer.Controls.Count > 0)
+                    {
+                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
+                        if (page != null)
+                        {
+                            page.PageTitle = title;
+                        }
+                    }
+                    return;
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (doc != null)
+                {
+                    doc.Caption = title.Caption;
+                    doc.ImageOptions.Image = title.HeaderImage;
+                    doc.ImageOptions.SvgImage = title.HeaderSvgImage;
+                    doc.ImageOptions.SvgImageSize = title.SvgImageSize;
+                    var page = doc.Control as DocumentPage;
+                    if (page != null)
+                    {
+                        page.PageTitle = title;
+                    }
+                    return;
+                }
+            }
+        }
+
+        //创建Page
+        private bool CreatePage(DocumentPage page, PageGuid pguid)
+        {
+            if (page == null || pguid == null)
+            {
+                return false;
+            }
+            page.PageGuid = pguid;
+            page.Dock = DockStyle.Fill;
+            page.IsExistPageEvent += IsExistPage;
+            page.CreatePageEvent += CreatePage;
+            page.RefreshPageDataEvent += RefreshPageData;
+            page.UpdatePageTitleEvent += UpdatePageTitle;
+            page.ClosePageEvent += ClosePage;
+            page.RegistEvents();
+            switch (pguid.MoudingType)
+            {
+                case eMoudingType.Dock:
+                    {
+                        this.dockManager1.BeginUpdate();
+                        DockPanel docPnl = null;
+                        if (pguid.DockType == eDockType.Left)
+                        {
+                            docPnl = this.dockManager1.AddPanel(DockingStyle.Left);
+                        }
+                        else if (pguid.DockType == eDockType.Right)
+                        {
+                            docPnl = this.dockManager1.AddPanel(DockingStyle.Right);
+                        }
+
+                        docPnl.Footer = Directory.GetCurrentDirectory();
+                        if (page.PageTitle != null)
+                        {
+                            docPnl.Text = page.PageTitle.Caption;
+                            docPnl.ImageOptions.Image = page.PageTitle.HeaderImage;
+                            docPnl.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
+                            docPnl.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
+                            docPnl.Options.ShowCloseButton = page.PageTitle.AllowClose;
+                        }
+                        docPnl.ControlContainer.Controls.Add(page);
+                        docPnl.Tag = pguid;
+                        this.dockManager1.EndUpdate();
+                        docPnl.Show();
+                    }
+                    break;
+
+                case eMoudingType.Tab:
+                    {
+                        this.tabbedView1.BeginUpdate();
+                        var doc = this.tabbedView1.AddDocument(page);
+                        doc.Footer = Directory.GetCurrentDirectory();
+                        if (page.PageTitle != null)
+                        {
+                            doc.Caption = page.PageTitle.Caption;
+                            doc.ImageOptions.Image = page.PageTitle.HeaderImage;
+                            doc.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
+                            doc.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
+                            doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
+                        }
+                        doc.Tag = pguid;
+                        this.tabbedView1.EndUpdate();
+                        this.tabbedView1.Controller.Activate(doc);
+                    }
+                    break;
+
+                default: break;
+            }
+            page.InitialDataSource();
+            return true;
+        }
+
+        //关闭Page
+        private void ClosePage(PageGuid pguid)
+        {
+            switch (pguid.MoudingType)
+            {
+                case eMoudingType.Dock:
+                    {
+                        if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+                        {
+                            var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                            if (panel != null)
+                            {
+                                if (panel.Visibility != DockVisibility.Hidden)
+                                    panel.Close();//会触发正在关闭和关闭事件
+                                                  //this.dockManager1.RemovePanel(panel);//不会触发正在关闭和关闭事件
+                            }
+                        }
+                    }
+                    break;
+
+                case eMoudingType.Tab:
+                    {
+                        if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+                        {
+                            var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                            if (doc != null)
+                            {
+                                this.tabbedView1.Controller.Close(doc);//会触发正在关闭和关闭事件
+                            }
+                        }
+                    }
+                    break;
+
+                default: break;
+            }
+        }
+
+        #endregion Page
+
+        #region Modular
+
+        //选择模块
+        private void SelectModular(string modular, PageGuid pageGuid = null)
+        {
+            //foreach (NavButton item in this.tileNavPane.Buttons)
+            //{
+            //    if (item.Tag == null)
+            //        continue;
+            //    if (item.Tag is int)
+            //    {
+            //        if (((int)item.Tag) == (int)modular)
+            //        {
+            //            item.Appearance.BackColor = Color.FromArgb(255, 128, 0);
+            //        }
+            //        else
+            //        {
+            //            item.Appearance.BackColor = Color.Transparent;
+            //        }
+            //    }
+            //}
+            //this.docPnlFuncList.Text = modular.ToString();
+            //this.funcTreeListCtrl1.SetMatching(modular, surfaceGuid);
+            //if (surfaceGuid == null)
+            //{
+            //    var func = this.funcTreeListCtrl1.SetDefault();
+            //    if (func != null)
+            //        CreateFuncPage(func);
+            //}
+        }
+
+        #endregion Modular
+
+        //上一页
+        private void navBtnPrevious_ElementClick(object sender, NavElementEventArgs e)
+        {
+            this.tabbedView1.Controller.SelectNextTab(false);
+        }
+
+        //下一页
+        private void navBtnNext_ElementClick(object sender, NavElementEventArgs e)
+        {
+            this.tabbedView1.Controller.SelectNextTab(true);
+        }
+
+        //模式切换
+        private void navBtnPattern_ElementClick(object sender, NavElementEventArgs e)
+        {
+            if (this.tabbedView1.DocumentGroupProperties.ShowTabHeader)
+            {
+                this.navBtnPrevious.Visible = true;
+                this.navBtnCurrent.Visible = true;
+                this.navBtnNext.Visible = true;
+            }
+            else
+            {
+                this.navBtnPrevious.Visible = false;
+                this.navBtnCurrent.Visible = false;
+                this.navBtnNext.Visible = false;
+            }
+            this.tabbedView1.DocumentGroupProperties.ShowTabHeader = !this.tabbedView1.DocumentGroupProperties.ShowTabHeader;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/MainForm.resx b/Desktop/HStation.Desktop.PBS.Core/MainForm.resx
new file mode 100644
index 0000000..6edd6e9
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/MainForm.resx
@@ -0,0 +1,812 @@
+锘�<?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>
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="nbTitle.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEgEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJEYXNoYm9hcmQiPg0K
+        ICAgIDxwYXRoIGQ9Ik0yNi4zLDUuMUwxNi40LDE1bDkuOSw5LjljMi4zLTIuNiwzLjctNi4xLDMuNy05
+        LjlTMjguNiw3LjgsMjYuMyw1LjF6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8cGF0aCBkPSJNMTQsMTZ2
+        LTF2LTAuNEwyNC45LDMuN0MyMi4yLDEuNCwxOC44LDAsMTUsMEM2LjcsMCwwLDYuNywwLDE1YzAsNy45
+        LDYuMiwxNC40LDE0LDE0LjlWMTZ6IiBjbGFzcz0iUmVkIiAvPg0KICAgIDxwYXRoIGQ9Ik0xNiwyOS45
+        YzMuNC0wLjIsNi41LTEuNiw4LjktMy43TDE2LDE3LjRWMjkuOXoiIGNsYXNzPSJZZWxsb3ciIC8+DQog
+        IDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="navBtnPrevious.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iVW5kb18xXyI+DQogICAgPHBh
+        dGggZD0iTTE0LDEyVjkuNlY2TDQsMTZsMTAsMTB2LTZjNy43LDAsMTQsMi43LDE0LDZDMjgsMTguMywy
+        MS43LDEyLDE0LDEyeiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="navBtnCurrent.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIIDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBZGRyZXNzIj4NCiAg
+        ICA8cG9seWdvbiBwb2ludHM9IjgsMjggOCwxOCAyLDE4IDE2LDQgMzAsMTggMjQsMTggMjQsMjggMTgs
+        MjggMTgsMTggMTQsMTggMTQsMjggICIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="navBtnNext.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIYCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iUmVkb18xXyI+DQogICAgPHBh
+        dGggZD0iTTI4LDE2TDE4LDZ2My42VjEyYy03LjcsMC0xNCw2LjMtMTQsMTRjMC0zLjMsNi4zLTYsMTQt
+        NnY2TDI4LDE2eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="navBtnPattern.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJYCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMzU3NUJCO30KCS5C
+        bGFja3tmaWxsOiM3MzczNzQ7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuWWVsbG93e2ZpbGw6I0ZD
+        QjAxQjt9CgkuUmVke2ZpbGw6I0QwMjAyNzt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMzEsMkgxMWMtMC41LDAtMSwwLjUtMSwxdjlo
+        MlY0aDE4djI0SDEydi04aC0ydjljMCwwLjUsMC41LDEsMSwxaDIwYzAuNSwwLDEtMC41LDEtMVYzQzMy
+        LDIuNSwzMS41LDIsMzEsMnogICIgY2xhc3M9IkJsYWNrIiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjE4
+        LDE0IDgsMTQgOCw4IDAsMTYgOCwyNCA4LDE4IDE4LDE4ICIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="nbProjectMgr.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFMEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLlJlZHtmaWxsOiNEMTFD
+        MUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7Zmls
+        bDojNzI3MjcyO30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuNzU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iUHJvZHVjdFF1aWNrU2hpcHBtZW50cyI+DQogICAgPHBhdGggZD0iTTMsMThIMHYx
+        NGgzYzAuNiwwLDEtMC40LDEtMVYxOUM0LDE4LjQsMy42LDE4LDMsMTh6IiBjbGFzcz0iQmxhY2siIC8+
+        DQogICAgPHBhdGggZD0iTTEyLDZWM2MwLTAuNSwwLjUtMSwxLTFoMTZjMC41LDAsMSwwLjUsMSwxdjNI
+        MTJ6IE0xNCwxNGMxLjcsMCw2LjEsMSw5LjYsMS44YzEuNCwwLjMsMi40LDEuNiwyLjQsMyAgIGMwLDAu
+        MiwwLDAuNS0wLjEsMC43QzI2LjUsMTkuMywzMCwxOCwzMCwxOFY4SDEydjYuNEMxMi42LDE0LjIsMTMu
+        MywxNCwxNCwxNHoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwYXRoIGQ9Ik02LDIwYzIsMCw0LTIsNC0y
+        czItMiw0LTJjMS42LDAsNywxLjMsOS4xLDEuOGMwLjUsMC4xLDAuOSwwLjYsMC45LDEuMXYwYzAsMC42
+        LTAuNSwxLjEtMS4xLDEuMSAgIGMwLDAtMi45LDAtNC45LDBjMCwyLDQsMiw2LDJzNS4xLTEuNyw2LjQt
+        MmMwLjQtMC4xLDEuMiwwLDEuNSwwLjVsMCwwYzAuMywwLjYsMC4xLDEuMi0wLjUsMS41QzI5LjQsMjMu
+        MiwyNSwyNiwyMCwyNiAgIGMtNCwwLTYtMi04LTJzLTYsNC02LDRTNiwyMyw2LDIweiIgY2xhc3M9Illl
+        bGxvdyIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="nbModelMgr.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGcEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJQcm9kdWN0X3g1Rl9H
+        cm91cCI+DQogICAgPHBhdGggZD0iTTE2LDcuNGw0LTRWMTBoLTRWNy40eiBNMjYsMTcuNFYzMGw0LTRW
+        MTMuNEwyNiwxNy40eiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAg
+        IDxwYXRoIGQ9Ik0xNC42LDZIMmw0LTRoMTIuNkwxNC42LDZ6IE0xNiwxMmwtNCw0aDEyLjZsNC00SDE2
+        eiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgICA8L2c+DQogICAgPGcgY2xhc3M9InN0MSI+DQogICAgICA8
+        cGF0aCBkPSJNMTQsMTEuMmwtNCw0VjE4djJIMlY4aDEyVjExLjJ6IE0xMiwzMGgxMlYxOEgxMlYzMHoi
+        IGNsYXNzPSJZZWxsb3ciIC8+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="nbProductManage.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOsDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iU2V0dGluZyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0wLjIt
+        MC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEuNC0w
+        LjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3LjUs
+        NC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCwwLjdj
+        MC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNywwLjQs
+        MS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwzLjYs
+        Mi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0xNiwy
+        MGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4yLDIw
+        LDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="nbSystemConfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALoDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iUGFnZVNldHVwIj4NCiAgICA8cGF0aCBkPSJNMTkuMiwyNkg4VjZoMTB2NWMwLDAu
+        NiwwLjQsMSwxLDFoNXY5LjJsMiwyVjExbC03LTdIN0M2LjQsNCw2LDQuNCw2LDV2MjJjMCwwLjYsMC40
+        LDEsMSwxaDE0LjJMMTkuMiwyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgICA8cGF0aCBkPSJNMjcuNiwy
+        Ny42bC02LjItNi4yYzAuNC0wLjcsMC42LTEuNSwwLjYtMi40YzAtMi44LTIuMi01LTUtNWMtMC44LDAt
+        MS41LDAuMi0yLjEsMC41bDIuNywyLjcgICBjMC42LDAuNiwwLjYsMS43LDAsMi40cy0xLjcsMC42LTIu
+        NCwwbC0yLjctMi43QzEyLjIsMTcuNSwxMiwxOC4yLDEyLDE5YzAsMi44LDIuMiw1LDUsNWMwLjksMCwx
+        LjctMC4yLDIuNC0wLjZsNi4yLDYuMiAgIGMwLjYsMC42LDEuNCwwLjYsMiwwbDAsMEMyOC4xLDI5LDI4
+        LjEsMjguMSwyNy42LDI3LjZ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="nbAuthConfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMgFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJVc2VyIj4NCiAgICA8
+        cGF0aCBkPSJNMTYuMiwyNkgydi0xLjVjMC03LjUsNS43LTUsOC04LjVjMC44LDEuNSwyLjEsNCw0LDRz
+        My4yLTIuNSw0LTRjMC43LDEsMS43LDEuNSwyLjcsMS45bDAsMCAgIGMtMC41LDAuOS0wLjcsMi0wLjcs
+        My4xYzAsMC40LDAsMC43LDAuMSwxLjFMMTYuMiwyNkwxNi4yLDI2eiBNOS4zLDEwLjljMCwwLDAsMC4x
+        LDAsMC4yYzAuNiwyLjMsMiw0LjksNC43LDQuOXM0LjItMi42LDQuNy00LjkgICBWMTFjMSwwLjEsMC42
+        LTEuMSwwLjktMS42QzE5LjgsOC45LDIwLDguNSwxOS45LDhjLTAuMS0wLjQtMC40LTAuNC0wLjUtMC4z
+        QzIxLjIsMi44LDE4LjMsMywxOC4zLDNTMTgsMCwxMi44LDBDOCwwLDcuNCw0LDguNSw3LjYgICBDOC40
+        LDcuNiw4LjEsNy43LDgsNy45QzcuOSw4LjQsOC4yLDguOCw4LjQsOS4zQzguNiw5LjgsOC4zLDExLDku
+        MywxMC45eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRoIGQ9Ik0yNywxNmMtMi44LDAtNSwyLjIt
+        NSw1YzAsMC42LDAuMSwxLjIsMC4zLDEuN0wxNiwyOXYzaDR2LTJoMnYtMmgybDIuMS0yLjFDMjYuNCwy
+        NiwyNi43LDI2LDI3LDI2ICAgYzIuOCwwLDUtMi4yLDUtNVMyOS44LDE2LDI3LDE2eiBNMjcsMjJjLTAu
+        NiwwLTEtMC40LTEtMWMwLTAuNiwwLjQtMSwxLTFzMSwwLjQsMSwxQzI4LDIxLjYsMjcuNiwyMiwyNywy
+        MnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="nbMin.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFICAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlJlbW92ZSI+DQogICAgPHBhdGggZD0iTTI3LDE4SDVj
+        LTAuNiwwLTEtMC41LTEtMXYtMmMwLTAuNiwwLjQtMSwxLTFoMjJjMC41LDAsMSwwLjQsMSwxdjJDMjgs
+        MTcuNSwyNy41LDE4LDI3LDE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="nbNormal.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IldpbmRvdyI+DQogICAgPHBhdGggZD0iTTMwLDEwVjVj
+        MC0wLjUtMC41LTEtMS0xSDNDMi41LDQsMiw0LjUsMiw1djVIMzB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
+        ICA8cGF0aCBkPSJNMjgsMTB2MTZINFYxMEgydjE3YzAsMC41LDAuNSwxLDEsMWgyNmMwLjUsMCwxLTAu
+        NSwxLTFWMTBIMjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAD0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4N
+        CiAgICA8Zz4NCiAgICAgIDxwYXRoIGQ9Ik0xOC44LDE2bDYuOS02LjljMC40LTAuNCwwLjQtMSwwLTEu
+        NGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwxMy4yTDkuMSw2LjNjLTAuNC0wLjQtMS0w
+        LjQtMS40LDAgICAgTDYuMyw3LjdjLTAuNCwwLjQtMC40LDEsMCwxLjRsNi45LDYuOWwtNi45LDYuOWMt
+        MC40LDAuNC0wLjQsMSwwLDEuNGwxLjQsMS40YzAuNCwwLjQsMSwwLjQsMS40LDBsNi45LTYuOWw2Ljks
+        Ni45ICAgIGMwLjQsMC40LDEsMC40LDEuNCwwbDEuNC0xLjRjMC40LTAuNCwwLjQtMSwwLTEuNEwxOC44
+        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <metadata name="documentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>259, 17</value>
+  </metadata>
+  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>442, 17</value>
+  </metadata>
+  <metadata name="svgImg32Model.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>638, 17</value>
+  </metadata>
+  <data name="svgImg32Model.Threelink" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcGAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0xODEuOTYgMTU5LjQ0aDMzNi43NnY3MDUu
+        MTZIMTgxLjk2eiIgZmlsbD0iIzcwODk5RCIgLz4NCiAgPHBhdGggZD0iTTUwNi44OCAxNTkuODhoNDYu
+        NTJ2NzI1LjE2aC00Ni41MnoiIGZpbGw9IiM0NDVFNzgiIC8+DQogIDxwYXRoIGQ9Ik01MTguNzIgNjUy
+        Ljc2aDM0MS4zMnY0MS40aC0zNDEuMzJ6IiBmaWxsPSIjNDQ1RTc4IiAvPg0KICA8cGF0aCBkPSJNMjIy
+        LjcyIDE4OC43NmgxNDB2Njk2LjMyaC0xNDB6IiBmaWxsPSIjOTZBREJDIiAvPg0KICA8cGF0aCBkPSJN
+        NDczLjM2IDM5Ny40aDM2NS4zMnYyNTUuMzZoLTM2NS4zMnoiIGZpbGw9IiM3MDg5OUQiIC8+DQogIDxw
+        YXRoIGQ9Ik0zMzIuOCA0MzEuOTZoNDkyLjUydjExOS40NEgzMzIuOHoiIGZpbGw9IiM5NkFEQkMiIC8+
+        DQogIDxwYXRoIGQ9Ik05MjAuNiA3NjYuMkE0NC43MiA0NC43MiAwIDAgMSA4NzYgODEwLjhoLTIzLjJh
+        NDQuNzIgNDQuNzIgMCAwIDEtNDQuNi00NC42VjMzNi43MkE0NC43MiA0NC43MiAwIDAgMSA4NTIuODQg
+        MjkySDg3NmE0NC43MiA0NC43MiAwIDAgMSA0NC42IDQ0LjZ6IiBmaWxsPSIjMjkzODQ4IiAvPg0KICA8
+        cGF0aCBkPSJNOTIwLjYgNzY2LjJBNDQuNzIgNDQuNzIgMCAwIDEgODc2IDgxMC44aC0yMy4yYTQ0Ljcy
+        IDQ0LjcyIDAgMCAxLTQ0LjYtNDQuNlYzMzYuNzJBNDQuNzIgNDQuNzIgMCAwIDEgODUyLjg0IDI5Mkg4
+        NzZhNDQuNzIgNDQuNzIgMCAwIDEgNDQuNiA0NC42eiIgZmlsbD0iIzQ0NUU3OCIgLz4NCiAgPHBhdGgg
+        ZD0iTTU5MiAxMDMuMjRjMTYuNTIgMCAzMC4wNCAyMCAzMC4wNCA0NC42djIzLjJjMCAyNC41Mi0xMy41
+        MiA0NC42LTMwLjA0IDQ0LjZIMTMzLjQ0Yy0xNi41MiAwLTMwLjA0LTIwLTMwLjA0LTQ0LjZWMTQ4YzAt
+        MjQuNTIgMTMuNTItNDQuNiAzMC4wNC00NC42eiIgZmlsbD0iIzI5Mzg0OCIgLz4NCiAgPHBhdGggZD0i
+        TTU5MiAxMDMuMjRjMTYuNTIgMCAzMC4wNCAyMCAzMC4wNCA0NC42djIzLjJjMCAyNC41Mi0xMy41MiA0
+        NC42LTMwLjA0IDQ0LjZIMTMzLjQ0Yy0xNi41MiAwLTMwLjA0LTIwLTMwLjA0LTQ0LjZWMTQ4YzAtMjQu
+        NTIgMTMuNTItNDQuNiAzMC4wNC00NC42eiIgZmlsbD0iIzQ0NUU3OCIgLz4NCiAgPHBhdGggZD0iTTU5
+        MiA4MDguMzZjMTYuNTIgMCAzMC4wNCAyMCAzMC4wNCA0NC42Vjg3NmMwIDI0LjUyLTEzLjUyIDQ0LjYt
+        MzAuMDQgNDQuNkgxMzMuNDRjLTE2LjUyIDAtMzAuMDQtMjAtMzAuMDQtNDQuNnYtMjMuMmMwLTI0LjUy
+        IDEzLjUyLTQ0LjYgMzAuMDQtNDQuNnoiIGZpbGw9IiMyOTM4NDgiIC8+DQogIDxwYXRoIGQ9Ik01OTIg
+        ODA4LjM2YzE2LjUyIDAgMzAuMDQgMjAgMzAuMDQgNDQuNlY4NzZjMCAyNC41Mi0xMy41MiA0NC42LTMw
+        LjA0IDQ0LjZIMTMzLjQ0Yy0xNi41MiAwLTMwLjA0LTIwLTMwLjA0LTQ0LjZ2LTIzLjJjMC0yNC41MiAx
+        My41Mi00NC42IDMwLjA0LTQ0LjZ6IiBmaWxsPSIjNDQ1RTc4IiAvPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="svgImg32Model.Line" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIEEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik00NjIgMjQxLjA5SDExNS45MWMtMTYuNjIg
+        MC0zMC4wOS0xMy40Ny0zMC4wOS0zMC4wOVY5My45NmMwLTE2LjYyIDEzLjQ3LTMwLjA5IDMwLjA5LTMw
+        LjA5SDQ2MmMxNi42MiAwIDMwLjA5IDEzLjQ3IDMwLjA5IDMwLjA5djExNy4wM2MwLjAxIDE2LjYzLTEz
+        LjQ2IDMwLjEtMzAuMDkgMzAuMXpNMTQ2LjAxIDE4MC45aDI4NS45di01Ni44NGgtMjg1Ljl2NTYuODR6
+        TTkxMC4wOSA5NTkuNzNINzkzLjA0Yy0xNi42MSAwLTMwLjA5LTEzLjQ4LTMwLjA5LTMwLjA5di0zNDYu
+        MWMwLTE2LjYxIDEzLjQ4LTMwLjA5IDMwLjA5LTMwLjA5aDExNy4wNWMxNi42MSAwIDMwLjA5IDEzLjQ4
+        IDMwLjA5IDMwLjA5djM0Ni4wOWMwIDE2LjYyLTEzLjQ4IDMwLjEtMzAuMDkgMzAuMXogbS04Ni45Ni02
+        MC4xOWg1Ni44NnYtMjg1LjloLTU2Ljg2djI4NS45eiIgLz4NCiAgPHBhdGggZD0iTTc5My43OCA4ODgu
+        MTRINTE4Ljg1Yy0yMDMuNzUgMC0zNjkuNS0xNjUuNzYtMzY5LjUtMzY5LjV2LTI5NWg2MC4xOXYyOTVj
+        MCAxNzAuNTYgMTM4Ljc2IDMwOS4zMSAzMDkuMzEgMzA5LjMxaDI3NC45M3Y2MC4xOXoiIC8+DQogIDxw
+        YXRoIGQ9Ik03OTMuMTIgNjg3LjU2SDU0NS42Yy03NC43MSAwLTEzNS41LTYwLjc4LTEzNS41LTEzNS40
+        OVYyMTEuMDZoNjAuMTl2MzQxLjAyYzAgNDEuNTIgMzMuNzggNzUuMyA3NS4zMSA3NS4zaDI0Ny41MnY2
+        MC4xOHoiIC8+DQogIDxwYXRoIGQ9Ik00NTIuNzQgNzcwLjEzYy03NC43MSAwLTEzNS40OS02MC43OC0x
+        MzUuNDktMTM1LjQ5IDAtMTYuNjEgMTMuNDctMzAuMDkgMzAuMDktMzAuMDlzMzAuMDkgMTMuNDggMzAu
+        MDkgMzAuMDljMCA0MS41MiAzMy43OCA3NS4zIDc1LjMgNzUuMyAxNi42MiAwIDMwLjA5IDEzLjQ4IDMw
+        LjA5IDMwLjA5IDAuMDEgMTYuNjItMTMuNDYgMzAuMS0zMC4wOCAzMC4xeiIgZmlsbD0iI0U2MjMzMCIg
+        Lz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="svgImg32Model.compressor" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMwFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjU0Ljg0Mzc1
+        cHgiIGhlaWdodD0iNDhweCIgdmlld0JveD0iMCAwIDExNzAgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxu
+        cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
+        Zy8xOTk5L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0xMDI0IDEwMjRIMTQ2LjI4NTcx
+        NGE3My4xNDI4NTcgNzMuMTQyODU3IDAgMCAxLTczLjE0Mjg1Ny03My4xNDI4NTdWNzMuMTQyODU3YTcz
+        LjE0Mjg1NyA3My4xNDI4NTcgMCAwIDEgNzMuMTQyODU3LTczLjE0Mjg1N2g4NzcuNzE0Mjg2YTczLjE0
+        Mjg1NyA3My4xNDI4NTcgMCAwIDEgNzMuMTQyODU3IDczLjE0Mjg1N3Y4NzcuNzE0Mjg2YTczLjE0Mjg1
+        NyA3My4xNDI4NTcgMCAwIDEtNzMuMTQyODU3IDczLjE0Mjg1N3pNNTg1LjE0Mjg1NyAxMDkuNzE0Mjg2
+        YTQwMi4yODU3MTQgNDAyLjI4NTcxNCAwIDEgMCA0MDIuMjg1NzE0IDQwMi4yODU3MTRBNDAyLjI4NTcx
+        NCA0MDIuMjg1NzE0IDAgMCAwIDU4NS4xNDI4NTcgMTA5LjcxNDI4NnogbTY1LjgyODU3MiAzODkuNTU4
+        ODU3YzMxOC42NDY4NTctMTIwLjY4NTcxNCAyOTkuNTIgNTguMDM4ODU3IDI5OS41MiA1OC4wMzg4NTds
+        LTI5OS41Mi0xMS41OTMxNDN2LTQ2LjQ0NTcxNHogbS0yOC4zNDI4NTgtNDIuOTM0ODU3YzEzOS45OTU0
+        MjktMzEwLjg1NzE0MyAyNTIuODE4Mjg2LTE3MC44MjUxNDMgMjUyLjgxODI4Ni0xNzAuODI1MTQzbC0y
+        MjAuMDEzNzE0IDIwMy42Mjk3MTR6IG0tNTAuMzk1NDI4LTEwLjMxMzE0M2MtMTIwLjY4NTcxNC0zMTgu
+        NzIgNTguMDM4ODU3LTI5OS41OTMxNDMgNTguMDM4ODU3LTI5OS41OTMxNDNMNjE4Ljc4ODU3MSA0NDYu
+        MTcxNDI5aC00Ni40MDkxNDJ6IG0tNDIuODk4Mjg2IDI4LjM0Mjg1N0MyMTguNjk3MTQzIDMzNC4zMzYg
+        MzU4LjU4Mjg1NyAyMjEuNDc2NTcxIDM1OC41ODI4NTcgMjIxLjQ3NjU3MWwyMDMuNTU2NTcyIDIyMC4w
+        NTAyODZ6TTUxOS4zMTQyODYgNTI0LjhjLTMxOC42MTAyODYgMTIwLjY4NTcxNC0yOTkuNTItNTguMDM4
+        ODU3LTI5OS41Mi01OC4wMzg4NTdsMjk5LjUyIDExLjU5MzE0M3Y0Ni40NDU3MTR6IG0yOC4zNDI4NTcg
+        NDIuOTM0ODU3Yy0xMzkuOTk1NDI5IDMxMC44NTcxNDMtMjUyLjgxODI4NiAxNzAuODI1MTQzLTI1Mi44
+        MTgyODYgMTcwLjgyNTE0M2wyMjAuMDEzNzE0LTIwMy42Mjk3MTR6IG01MC4zOTU0MjggMTAuMzEzMTQz
+        YzEyMC42ODU3MTQgMzE4LjcyLTU4LjAzODg1NyAyOTkuNTkzMTQzLTU4LjAzODg1NyAyOTkuNTkzMTQz
+        bDExLjYyOTcxNS0yOTkuNTkzMTQzaDQ2LjQwOTE0MnogbTQyLjg5ODI4Ni0yOC4zNDI4NTdjMzEwLjYz
+        NzcxNCAxNDAuMDMyIDE3MC43NTIgMjUyLjg5MTQyOSAxNzAuNzUyIDI1Mi44OTE0MjhsLTIwMy41NTY1
+        NzEtMjIwLjA1MDI4NXoiIGZpbGw9IiMxMDEwMTAiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="svgImg32Model.Exchanger" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAIVAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik03OTYuNDQ0NDQ0IDI5NS4xNjhoNjEuMDU2
+        Yy00Ljg0OTc3OCAxMi40MzAyMjItNy43Nzk1NTYgMjguNTQ0LTcuNzc5NTU1IDQ2LjE2NTMzMyAwIDE3
+        LjYyMTMzMyAyLjkyOTc3OCAzMy43MzUxMTEgNy43Nzk1NTUgNDYuMTY1MzM0SDc5Ni40NDQ0NDRWNzUz
+        Ljc3Nzc3OGEyOC40NDQ0NDQgMjguNDQ0NDQ0IDAgMCAxLTI4LjQ0NDQ0NCAyOC40NDQ0NDRIMTQyLjIy
+        MjIyMmEyOC40NDQ0NDQgMjguNDQ0NDQ0IDAgMCAxLTI4LjQ0NDQ0NC0yOC40NDQ0NDRWMjg0LjQ0NDQ0
+        NGEyOC40NDQ0NDQgMjguNDQ0NDQ0IDAgMCAxIDI4LjQ0NDQ0NC0yOC40NDQ0NDRoNjI1Ljc3Nzc3OGEy
+        OC40NDQ0NDQgMjguNDQ0NDQ0IDAgMCAxIDI4LjQ0NDQ0NCAyOC40NDQ0NDR2MTAuNzIzNTU2eiBtLTkw
+        LjUyNDQ0NCAzMC4zMzZIMjA3LjI3NDY2N3YxMi40MDE3NzhoNDk4LjYzMTExMXYtMTIuNDAxNzc4eiBt
+        MC0yNC44MTc3Nzh2LTAuNDk3Nzc4SDIwNy4yNzQ2Njd2MC40OTc3NzhoNDk4LjYzMTExMXogbTAgMzg0
+        LjcyNTMzNHYtMTQuODkwNjY3SDIwNy4yNzQ2Njd2MTQuODkwNjY3aDQ5OC42MzExMTF6IG0wIDM0Ljc1
+        OTExMUgyMDcuMjc0NjY3djE3Ljg2MzExMWg0OTguNjMxMTExdi0xNy44NjMxMTF6IG0wLTg0LjM5NDY2
+        N3YtMTQuODkwNjY3SDIwNy4yNzQ2Njd2MTQuODkwNjY3aDQ5OC42MzExMTF6IG0wLTQ5LjYzNTU1NnYt
+        MTQuOTA0ODg4SDIwNy4yNzQ2Njd2MTQuODkwNjY2aDQ5OC42MzExMTF6IG0wLTQ5LjY0OTc3N3YtMTQu
+        ODkwNjY3SDIwNy4yNzQ2Njd2MTQuODkwNjY3aDQ5OC42MzExMTF6IG0wLTQ5LjYzNTU1NnYtMTQuOTA0
+        ODg5SDIwNy4yNzQ2Njd2MTQuODkwNjY3aDQ5OC42MzExMTF6IG0wLTQ5LjY0OTc3OHYtMTQuOTA0ODg5
+        SDIwNy4yNzQ2Njd2MTQuOTA0ODg5aDQ5OC42MzExMTF6IG0wLTQ5LjY0OTc3N3YtMTQuODkwNjY3SDIw
+        Ny4yNzQ2Njd2MTQuODkwNjY3aDQ5OC42MzExMTF6IG02NS43OTItMTExLjcwMTMzNGE0Ljk0OTMzMyA0
+        Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMyA0Ljk0OTMzNHY5Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAw
+        IDEgMCA5Ljg5ODY2NiAwdi05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00
+        Ljk0OTMzNHogbS02MzAuNzI3MTExIDBhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMgNC45
+        NDkzMzR2OS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAxIDAgOS44OTg2NjYgMHYtOS45NTU1NTVh
+        NC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMtNC45NDkzMzR6IG02MzAuNzI3MTExIDk0LjMy
+        MTc3OGE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMyA0Ljk0OTMzM3Y5Ljk1NTU1NmE0Ljk0
+        OTMzMyA0Ljk0OTMzMyAwIDEgMCA5Ljg5ODY2NiAwdi05Ljk1NTU1NmE0Ljk0OTMzMyA0Ljk0OTMzMyAw
+        IDAgMC00Ljk0OTMzMy00Ljk0OTMzM3ogbS02MzAuNzI3MTExIDBhNC45NDkzMzMgNC45NDkzMzMgMCAw
+        IDAtNC45NDkzMzMgNC45NDkzMzN2OS45NTU1NTZhNC45NDkzMzMgNC45NDkzMzMgMCAxIDAgOS44OTg2
+        NjYgMHYtOS45NTU1NTZhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMtNC45NDkzMzN6IG02
+        MzAuNzI3MTExIDk0LjMyMTc3OGE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMyA0Ljk0OTMz
+        M3Y5Ljk1NTU1NmE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMCA5Ljg5ODY2NiAwdi05Ljk1NTU1NmE0Ljk0
+        OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00Ljk0OTMzM3ogbS02MzAuNzI3MTExIDBhNC45NDkz
+        MzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMgNC45NDkzMzN2OS45NTU1NTZhNC45NDkzMzMgNC45NDkz
+        MzMgMCAwIDAgOS44OTg2NjYgMHYtOS45NTU1NTZhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkz
+        MzMtNC45NDkzMzN6IG02MzAuNzI3MTExIDk0LjMyMTc3OGE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00
+        Ljk0OTMzMyA0Ljk0OTMzM3Y5Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMCA5Ljg5ODY2NiAw
+        di05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00Ljk0OTMzM3ogbS02MzAu
+        NzI3MTExIDBhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMgNC45NDkzMzN2OS45NTU1NTVh
+        NC45NDkzMzMgNC45NDkzMzMgMCAwIDAgOS44OTg2NjYgMHYtOS45NTU1NTVhNC45NDkzMzMgNC45NDkz
+        MzMgMCAwIDAtNC45NDkzMzMtNC45NDkzMzN6IG02MzAuNzI3MTExIDk0LjMzNmE0Ljk0OTMzMyA0Ljk0
+        OTMzMyAwIDAgMC00Ljk0OTMzMyA0LjkzNTExMXY5Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDEg
+        MCA5Ljg5ODY2NiAwdi05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00Ljkz
+        NTExMXogbS02MzAuNzI3MTExIDBhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMgNC45MzUx
+        MTF2OS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAxIDAgOS44OTg2NjYgMHYtOS45NTU1NTVhNC45
+        NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMtNC45MzUxMTF6IG02MzAuNzI3MTExIDk0LjMyMTc3
+        N2E0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMyA0LjkzNTExMXY5Ljk2OTc3OGE0Ljk0OTMz
+        MyA0Ljk0OTMzMyAwIDAgMCA5Ljg5ODY2NiAwdi05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAg
+        MC00Ljk0OTMzMy00Ljk0OTMzNHogbS02MzAuNzI3MTExIDBhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAt
+        NC45NDkzMzMgNC45MzUxMTF2OS45Njk3NzhhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAgOS44OTg2NjYg
+        MHYtOS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMtNC45NDkzMzR6IG04OS4w
+        MzExMTEgMGE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00LjkzNTExMSA0LjkzNTExMXY5Ljk2OTc3OGE0
+        Ljk0OTMzMyA0Ljk0OTMzMyAwIDEgMCA5Ljg5ODY2NyAwdi05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMz
+        MyAwIDAgMC00Ljk0OTMzNC00Ljk0OTMzNHogbTAtNDcxLjYwODg4OWE0Ljk0OTMzMyA0Ljk0OTMzMyAw
+        IDAgMC00LjkzNTExMSA0LjkzNTExMnY5Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDEgMCA5Ljg5
+        ODY2NyAwdi05Ljk1NTU1NWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzNC00Ljk0OTMzNHog
+        bTkxLjUzNDIyMiA0NzEuNjA4ODg5YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5MzMzIDQuOTM1
+        MTExdjkuOTY5Nzc4YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwIDkuODk4NjY3IDB2LTkuOTU1NTU1YTQu
+        OTQ5MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5MzM0LTQuOTQ5MzM0eiBtMC00NzEuNjA4ODg5YTQuOTQ5
+        MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5MzMzIDQuOTM1MTEydjkuOTU1NTU1YTQuOTQ5MzMzIDQuOTQ5
+        MzMzIDAgMSAwIDkuODk4NjY3IDB2LTkuOTU1NTU1YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5
+        MzM0LTQuOTQ5MzM0eiBtODkuMDMxMTExIDQ3MS42MDg4ODlhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAt
+        NC45MzUxMTEgNC45MzUxMTF2OS45Njk3NzhhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAgOS44ODQ0NDUg
+        MHYtOS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45MzUxMTEtNC45NDkzMzR6IG0wLTQ3
+        MS42MDg4ODlhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45MzUxMTEgNC45MzUxMTJ2OS45NTU1NTVh
+        NC45NDkzMzMgNC45NDkzMzMgMCAwIDAgOS44ODQ0NDUgMHYtOS45NTU1NTVhNC45NDkzMzMgNC45NDkz
+        MzMgMCAwIDAtNC45MzUxMTEtNC45NDkzMzR6IG05MS41MiA0NzEuNjA4ODg5YTQuOTQ5MzMzIDQuOTQ5
+        MzMzIDAgMCAwLTQuOTM1MTExIDQuOTM1MTExdjkuOTY5Nzc4YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAw
+        IDkuODg0NDQ1IDB2LTkuOTU1NTU1YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5MzM0LTQuOTQ5
+        MzM0eiBtMC00NzEuNjA4ODg5YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTM1MTExIDQuOTM1MTEy
+        djkuOTU1NTU1YTQuOTQ5MzMzIDQuOTQ5MzMzIDAgMCAwIDkuODg0NDQ1IDB2LTkuOTU1NTU1YTQuOTQ5
+        MzMzIDQuOTQ5MzMzIDAgMCAwLTQuOTQ5MzM0LTQuOTQ5MzM0eiBtODkuMDQ1MzM0IDQ3MS42MDg4ODlh
+        NC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzQgNC45MzUxMTF2OS45Njk3NzhhNC45NDkzMzMg
+        NC45NDkzMzMgMCAwIDAgOS44OTg2NjcgMHYtOS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAt
+        NC45NDkzMzMtNC45NDkzMzR6IG0wLTQ3MS42MDg4ODlhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45
+        NDkzMzQgNC45MzUxMTJ2OS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAxIDAgOS44OTg2NjcgMHYt
+        OS45NTU1NTVhNC45NDkzMzMgNC45NDkzMzMgMCAwIDAtNC45NDkzMzMtNC45NDkzMzR6TTY4Mi42NjY2
+        NjcgNzQ3LjQ2MzExMWE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzNCA0LjkzNTExMXY5Ljk2
+        OTc3OGE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMCA5Ljg5ODY2NyAwdi05Ljk1NTU1NmE0Ljk0OTMzMyA0
+        Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00Ljk0OTMzM3ogbTAtNDcxLjYwODg4OWE0Ljk0OTMzMyA0Ljk0
+        OTMzMyAwIDAgMC00Ljk0OTMzNCA0LjkzNTExMXY5Ljk1NTU1NmE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAg
+        MCA5Ljg5ODY2NyAwdi05Ljk1NTU1NmE0Ljk0OTMzMyA0Ljk0OTMzMyAwIDAgMC00Ljk0OTMzMy00Ljk0
+        OTMzM3pNODkxLjkwNCA0MTIuNDQ0NDQ0Yy0xNy45NzY4ODkgMC0zMi41NDA0NDQtMzEuODQzNTU2LTMy
+        LjU0MDQ0NC03MS4xMTExMTFzMTQuNTYzNTU2LTcxLjExMTExMSAzMi41NDA0NDQtNzEuMTExMTExQzkw
+        OS44ODA4ODkgMjcwLjIyMjIyMiA5MjQuNDQ0NDQ0IDMwMi4wNjU3NzggOTI0LjQ0NDQ0NCAzNDEuMzMz
+        MzMzcy0xNC41NjM1NTYgNzEuMTExMTExLTMyLjU0MDQ0NCA3MS4xMTExMTF6IG0yLjQxNzc3OC0zOS45
+        MjE3NzdjOC42NDcxMTEgMCAxNS42NTg2NjctMTMuOTY2MjIyIDE1LjY1ODY2Ni0zMS4xODkzMzRzLTcu
+        MDExNTU2LTMxLjE4OTMzMy0xNS42NzI4ODgtMzEuMTg5MzMzYy04LjY0NzExMSAwLTE1LjY1ODY2NyAx
+        My45NjYyMjItMTUuNjU4NjY3IDMxLjE4OTMzM3M3LjAxMTU1NiAzMS4xODkzMzMgMTUuNjU4NjY3IDMx
+        LjE4OTMzNHoiIGZpbGw9IiMwMDAwMDAiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="svgImg32Model.Fourlink" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAA4DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik05MDEuMTIgMzAxLjY1MzMzM2EzNC45ODY2
+        NjcgMzQuOTg2NjY3IDAgMCAwLTM0Ljk4NjY2NyAzNC45ODY2NjdoLTE2My44NFYyMTkuNzMzMzMzYTM0
+        Ljk4NjY2NyAzNC45ODY2NjcgMCAwIDAgMC02OS45NzMzMzNIMzI4LjEwNjY2N2EzNC45ODY2NjcgMzQu
+        OTg2NjY3IDAgMSAwIDAgNjkuOTczMzMzdjExNi45MDY2NjdIMTY0LjY5MzMzM2EzNS40MTMzMzMgMzUu
+        NDEzMzMzIDAgMCAwLTcwLjQgMHYzMjcuMjUzMzMzYTM1LjQxMzMzMyAzNS40MTMzMzMgMCAxIDAgNzAu
+        NCAwaDE2My40MTMzMzR2MTE2LjkwNjY2N2EzNS40MTMzMzMgMzUuNDEzMzMzIDAgMCAwLTM0Ljk4NjY2
+        NyAzNS40MTMzMzMgMzQuOTg2NjY3IDM0Ljk4NjY2NyAwIDAgMCAzNC45ODY2NjcgMzQuOTg2NjY3aDM3
+        NC4xODY2NjZhMzUuNDEzMzMzIDM1LjQxMzMzMyAwIDAgMCAwLTcwLjR2LTExNi45MDY2NjdoMTYzLjg0
+        YTM0Ljk4NjY2NyAzNC45ODY2NjcgMCAxIDAgNjkuOTczMzM0IDBWMzM2LjY0YTM0Ljk4NjY2NyAzNC45
+        ODY2NjcgMCAwIDAtMzQuOTg2NjY3LTM0Ljk4NjY2N3oiIGZpbGw9IiMyMzE4MTUiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="svgImg32Model.Elbow" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOcEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ5LjI2NTYy
+        NXB4IiBoZWlnaHQ9IjQ4cHgiIHZpZXdCb3g9IjAgMCAxMDUxIDEwMjQiIHZlcnNpb249IjEuMSIgeG1s
+        bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
+        cmcvMTk5OS94bGluayIgY2xhc3M9Imljb24iPg0KICA8cGF0aCBkPSJNMTE2Ljc5MjkzMyA3NzEuNTI1
+        MDcxSDY5Ljk2OTM0M3YyMjkuMDYzMTM0YzAgMTIuNzcwMDcgMTAuMzc1NjgyIDIzLjQxMTc5NSAyMy40
+        MTE3OTUgMjMuNDExNzk1aDMyNS45MDI4MzJjMTIuNzcwMDcgMCAyMy40MTE3OTUtMTAuMzc1NjgyIDIz
+        LjQxMTc5NS0yMy40MTE3OTVWNzcxLjUyNTA3MUgxMTYuNzkyOTMzek0xMDI3LjcyNDYwNCA2OS43MDMz
+        aC0yMzIuNzg3NzM3djM3Mi40NjAzNzloMjMyLjc4NzczN2MxMi43NzAwNyAwIDIzLjQxMTc5NS0xMC4z
+        NzU2ODIgMjMuNDExNzk1LTIzLjQxMTc5NVY5My4xMTUwOTVjMC0xMi43NzAwNy0xMC4zNzU2ODItMjMu
+        NDExNzk1LTIzLjQxMTc5NS0yMy40MTE3OTV6TTY5OC42MjkyNTQgMEg2NTIuMDcxNzA3Yy0yNS41NDAx
+        NCAwLTQ2LjU1NzU0NyAyMS4wMTc0MDctNDYuNTU3NTQ3IDQ2LjU1NzU0N3YyMy40MTE3OTZINDY1Ljg0
+        MTUxN0MyNDcuNjg2MTUyIDY5LjcwMzMgNjkuOTY5MzQzIDI0Ny40MjAxMDkgNjkuOTY5MzQzIDQ2NS41
+        NzU0NzR2MTE2LjUyNjg5aC0yMy40MTE3OTZjLTI1LjU0MDE0IDAtNDYuNTU3NTQ3IDIxLjAxNzQwNy00
+        Ni41NTc1NDcgNDYuNTU3NTQ4djQ2LjU1NzU0N2MwIDI1LjU0MDE0IDIxLjAxNzQwNyA0Ni41NTc1NDcg
+        NDYuNTU3NTQ3IDQ2LjU1NzU0N0g0NjUuODQxNTE3YzI1LjU0MDE0IDAgNDYuNTU3NTQ3LTIxLjAxNzQw
+        NyA0Ni41NTc1NDgtNDYuNTU3NTQ3di00Ni41NTc1NDdjMC0yNS41NDAxNC0yMS4wMTc0MDctNDYuNTU3
+        NTQ3LTQ2LjU1NzU0OC00Ni41NTc1NDhoLTIzLjQxMTc5NXYtNjkuNzAzMjk5YzAtMzguMzEwMjEgMzEu
+        MzkzMDg5LTY5LjcwMzMgNjkuNzAzMy02OS43MDMzaDkzLjExNTA5NHYyMy40MTE3OTVjMCAyNS41NDAx
+        NCAyMS4wMTc0MDcgNDYuNTU3NTQ3IDQ2LjU1NzU0OCA0Ni41NTc1NDhoNDYuNTU3NTQ3YzI1LjU0MDE0
+        IDAgNDYuNTU3NTQ3LTIxLjAxNzQwNyA0Ni41NTc1NDgtNDYuNTU3NTQ4VjQ2LjU1NzU0N0M3NDUuMTg2
+        ODAyIDIxLjAxNzQwNyA3MjQuMTY5Mzk1IDAgNjk4LjYyOTI1NCAweiIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="svgImg32Model.Manufacturer" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOUDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0xNjAgODc4LjRhMjIuNCAyMi40IDAgMCAx
+        LTMuMDQtNDQuNjA4TDE2MCA4MzMuNmg3My42VjM5Ni45MjhhODYuNCA4Ni40IDAgMCAxIDI2LjExMi02
+        MS44ODhsNC43MDQtNC4yNTYgMTI4LTEwNy41NTJBODYuNCA4Ni40IDAgMCAxIDUzNC40IDI4OS4zNzZs
+        LTAuMDMyIDU0NC4yMjRINTg1LjZWNDgwLjE5MmE1NC40IDU0LjQgMCAwIDEgNDkuNjk2LTU0LjE3Nmw0
+        LjcwNC0wLjIyNGE1NC40IDU0LjQgMCAwIDEgMzYuNTQ0IDE0LjExMmwxMDYuNDk2IDk2LjU3NmEyMi40
+        IDIyLjQgMCAwIDEgNy4zNiAxNi41NzZ2MjgwLjU0NEg4NjRhMjIuNCAyMi40IDAgMCAxIDMuMDQgNDQu
+        NjA4TDg2NCA4NzguNEgxNjB6IG0zMTkuODQtNjE1Ljc3NmE0MS42IDQxLjYgMCAwIDAtNTguNTkyLTUu
+        MTJsLTEyOCAxMDcuNTg0YTQxLjYgNDEuNiAwIDAgMC0xNC44NDggMzEuODRWODMzLjZoMjExLjJWMjg5
+        LjM3NmE0MS42IDQxLjYgMCAwIDAtNi44NDgtMjIuODQ4eiBtMTYwLjE2IDIwOGE5LjYgOS42IDAgMCAw
+        LTkuNiA5LjZ2MzUzLjM0NGgxMTUuMnYtMjcwLjU5MmwtOTkuMTM2LTg5Ljg4OGE5LjYgOS42IDAgMCAw
+        LTQuMTI4LTIuMTc2eiBtLTIyNCAxODYuOTc2YTIyLjQgMjIuNCAwIDAgMSAzLjA0IDQ0LjYwOEw0MTYg
+        NzAyLjRoLTY0YTIyLjQgMjIuNCAwIDAgMS0zLjA0LTQ0LjYwOEwzNTIgNjU3LjZoNjR6IG0wLTE2MGEy
+        Mi40IDIyLjQgMCAwIDEgMy4wNCA0NC42MDhMNDE2IDU0Mi40aC02NGEyMi40IDIyLjQgMCAwIDEtMy4w
+        NC00NC42MDhMMzUyIDQ5Ny42aDY0eiIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="svgImg32Model.Valve" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAcFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0wLjUxMiA0OTUuODcyYTQ5NS4xMDQgNDk1
+        LjEwNCAwIDEgMCA5OTAuMTU2OCA5LjE2NDhBNDk1LjEwNCA0OTUuMTA0IDAgMCAwIDAuNTEyIDQ5NS45
+        MjMydi0wLjA1MTJ6IiBmaWxsPSIjNTA2RUJDIiAvPg0KICA8cGF0aCBkPSJNNDY2LjE3NiAzNzUuMDRW
+        Mjg5Ljg5NDRIMzM3LjkyYTMxLjIzMiAzMS4yMzIgMCAwIDEtMzEuNzQ0LTMwLjcyYzAtMTYuODk2IDE0
+        LjMzNi0zMC43MiAzMS43NDQtMzAuNzJoMzEwLjc4NGMxNy40MDggMCAzMS42NDE2IDEzLjgyNCAzMS42
+        NDE2IDMwLjcyIDAgMTcuMTAwOC0xNC4xODI0IDMwLjcyLTMxLjY0MTYgMzAuNzJoLTEyOC4xMDI0djg1
+        LjA0MzJoMTAuMDg2NGMxMS45Mjk2IDAgMjEuNjA2NCA5LjQyMDggMjEuNjA2NCAyMC45OTJ2NTAuMDcz
+        NmwtMTE3LjgxMTItMC4yMDQ4di00OS44Njg4YzAtMTEuNTIgOS42NzY4LTIwLjg4OTYgMjEuNjA2NC0y
+        MC44ODk2aDEwLjA4NjR6IG0tMjExLjA0NjQgMzI2LjI0NjR2MzUuMzI4YzAgNS4xMi00LjM1MiA5LjQy
+        MDgtOS43NzkyIDkuNDIwOGgtMjUuMDg4YTkuNjI1NiA5LjYyNTYgMCAwIDEtOS43MjgtOS42MjU2VjUx
+        MC43MmMwLTUuMzI0OCA0LjM1Mi05LjU3NDQgOS43NzkyLTkuNTc0NGgyNS4wMzY4YzUuNDI3MiAwIDku
+        Nzc5MiA0LjI0OTYgOS43NzkyIDkuNTc0NHY0NS45Nzc2aDgzLjJjMy41MzI4LTQ3LjMwODggNDMuODI3
+        Mi04NC41ODI0IDkzLjEzMjgtODQuNTgyNGgxMTQuOTQ0YzQ5LjMwNTYgMCA4OS42NTEyIDM3LjI3MzYg
+        OTMuMTMyOCA4NC41ODI0aDgzLjQwNDh2LTQ2LjMzNmMwLTUuMTIgNC4xOTg0LTkuMjE2IDkuNDIwOC05
+        LjIxNmgyNS42YTkuMjE2IDkuMjE2IDAgMCAxIDkuNDIwOCA5LjIxNnYyMjYuNDU3NmMwLjIwNDggNS4x
+        Mi00LjE0NzIgOS4xNjQ4LTkuNDIwOCA5LjE2NDhoLTI1LjZhOS4yNjcyIDkuMjY3MiAwIDAgMS05LjM2
+        OTYtOS4yMTZ2LTM1LjQ4MTZoLTg5LjZhOTMuMzM3NiA5My4zMzc2IDAgMCAxLTg2Ljk4ODggNTcuOTA3
+        Mkg0MzEuNDYyNGE5My4zMzc2IDkzLjMzNzYgMCAwIDEtODYuOTM3Ni01Ny44NTZIMjU1LjEyOTZ6IiBm
+        aWxsPSIjRkZGRkZGIiAvPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="svgImg32Model.Pump" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAACwMAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik01MDkuMTcwMjczIDEwMjIuNDk0ODI2QzIy
+        NC4yNzA5MzEgMTAxNy43Mzg0NzYtMy43MzI4MzIgNzg2LjMwMjkxNiAwLjkwMzEwNCA1MDYuNTIxMTY3
+        IDUuNTM5MDQgMjIzLjkwOTY5IDIzOS41NjM1LTQuMzM0OTAxIDUyMC4wMDc1MjYgMS41NjUzODFjMjgy
+        LjQzMDg1NiA1LjkwMDI4MiA1MDMuODcyMDYgMjI5LjA4NzQ4OCA1MDMuMTQ5NTc3IDUxNC4yODc4NjUt
+        MC42NjIyNzcgMjgyLjU1MTI3LTIzNi45MTQzOTMgNTExLjIxNzMxLTUxMy45ODY4MyA1MDYuNjQxNTh6
+        IiBmaWxsPSIjM0I4MEMzIiAvPg0KICA8cGF0aCBkPSJNNTEyLjYwMjA3IDk3OS42Mjc0NjlDMjUyLjg2
+        OTIzOCA5NzkuNjg3Njc2IDQyLjMyNTQ5NCA3NjkuNzQ2MDAyIDQzLjA0Nzk3NyA1MTEuMjc3NTE2IDQz
+        Ljc3MDQ2MSAyNTMuMTEwMDY2IDI1NC44NTYwNjggNDMuODkwODc1IDUxNC4yODc4NjUgNDQuMzcyNTMx
+        YzI1Ni42NjIyNzcgMC40ODE2NTYgNDY2Ljg0NDc3OSAyMTEuNTY3MjYyIDQ2Ni43MjQzNjUgNDY4Ljcx
+        MTE5NC0wLjE4MDYyMSAyNTYuODQyODk3LTIxMC42MDM5NTEgNDY2LjQ4MzUzNy00NjguNDEwMTYgNDY2
+        LjU0Mzc0NHoiIGZpbGw9IiNGRkZGRkYiIC8+DQogIDxwYXRoIGQ9Ik00NDMuNDI0MjcxIDc2NS4xNzAy
+        NzNjMCAyMy45MDIxNjQtMC42MDIwNyA0Ny44NjQ1MzQgMC4zMDEwMzUgNzEuNzA2NDkxIDAuNDIxNDQ5
+        IDExLjkyMDk3OC0zLjc5MzAzOSAxNS4xMTE5NDctMTUuMTExOTQ4IDE0Ljc1MDcwNS0yMS45NzU1NDEt
+        MC43ODI2OS00NC4wNzE0OTYtMC42NjIyNzctNjYuMDQ3MDM2LTAuMDYwMjA3LTEwLjM1NTU5NyAwLjMw
+        MTAzNS0xNC40NDk2NzEtMi43Njk1Mi0xNC4zMjkyNTctMTMuNzI3MTg3IDAuNDgxNjU2LTQ5LjA2ODY3
+        NC0wLjEyMDQxNC05OC4xOTc1NTQgMC40ODE2NTYtMTQ3LjI2NjIyNyAwLjM2MTI0Mi0yOC4xMTY2NTEg
+        MjEuMDcyNDM3LTQ4LjE2NTU2OSA0Ny43NDQxMi00Ny44NjQ1MzUgMjYuMzcwNjQ5IDAuMjQwODI4IDQ2
+        LjI5OTE1MyAyMC41OTA3ODEgNDYuOTAxMjIzIDQ4LjgyNzg0NiAwLjQyMTQ0OSAyNC41MDQyMzMgMCA0
+        OS4wNjg2NzQgMC4wNjAyMDcgNzMuNjMzMTE0eiIgZmlsbD0iI0ZGRkZGRiIgLz4NCiAgPHBhdGggZD0i
+        TTkzMi44NDY2NiA1MTIuMDYwMjA3YzAuMTIwNDE0IDIzMy43ODM2MzEtMTg4LjI2NzE2OCA0MjIuNjUy
+        ODY5LTQyMS4zODg1MjMgNDIyLjQxMjA0MS0yMzEuNzk2ODAyLTAuMjQwODI4LTQyMC4wMDM3NjMtMTg4
+        LjUwNzk5Ni00MjAuMzY1MDA0LTQyMC40MjUyMTEtMC4zMDEwMzUtMjM0LjYyNjUyOSAxODUuNDk3NjQ4
+        LTQyMi41MzI0NTUgNDE5Ljg4MzM0OS00MjQuNTE5Mjg1IDIzMS41NTU5NzQtMS45MjY2MjMgNDIxLjc0
+        OTc2NSAxODguNTA3OTk2IDQyMS44NzAxNzggNDIyLjUzMjQ1NXoiIGZpbGw9IiMzQjgwQzMiIC8+DQog
+        IDxwYXRoIGQ9Ik03MDMuNjk4OTY1IDgzMi4xMjA0MTRjLTEyNS40NzEzMDggMC0yNDYuMzY2ODg2LTAu
+        MTgwNjIxLTM2Ny4yNjI0NjUgMC4xODA2MjEtMTQuMDg4NDI5IDAuMDYwMjA3LTE1LjExMTk0Ny00LjIx
+        NDQ4Ny05LjMzMjA3OS0xNS40NzMxODkgMTcuMjE5MTkxLTMzLjU5NTQ4NCAzMy4yMzQyNDMtNjcuODUz
+        MjQ2IDUxLjE3NTkxOC0xMDEuMDg3NDg5IDcuMTY0NjI4LTEzLjMwNTczOCA1LjIzODAwNi0yMC4xNjkz
+        MzItNi41NjI1NTktMjkuNTYxNjE4LTkyLjgzOTEzNS03NC4xNzQ5NzYtMTExLjMyMjY3Mi0yMDQuNzYz
+        ODc2LTQzLjI4ODgwNS0zMDIuNTM5OTgxIDUuNTk5MjQ3LTguMDY3NzMzIDcuMjg1MDQyLTE2LjAxNTA1
+        MiA3LjIyNDgzNS0yNS4zNDcxMzEtMC4yNDA4MjgtMzcuMDI3MjgxLTEuMDgzNzI1LTc0LjExNDc3IDAu
+        MzYxMjQyLTExMS4wODE4NDMgMC43MjI0ODQtMTguNzI0MzY1LTQuNTE1NTIyLTI1Ljg4ODk5My0yMy43
+        MjE1NDMtMjQuMDgyNzg1LTguODUwNDIzIDAuODQyODk3LTIyLjYzNzgxNyA2LjAyMDY5Ni0yMy45MDIx
+        NjQtMTEuNjgwMTUtMC44NDI4OTctMTIuMTAxNTk5IDAuOTAzMTA0LTE5LjkyODUwNCAxNi40MzY1MDEt
+        MTkuODA4MDkxIDY4Ljc1NjM1IDAuNjAyMDcgMTM3LjUxMjcgMC4zNjEyNDIgMjA2LjI2OTA1IDAuMTIw
+        NDE0IDEwLjU5NjQyNS0wLjA2MDIwNyAxNy4wMzg1NyAxLjkyNjYyMyAxNy4wOTg3NzcgMTQuNzUwNzA2
+        IDAuMDYwMjA3IDEyLjU4MzI1NS00LjIxNDQ4NyAxNy4zMzk2MDUtMTcuMDk4Nzc3IDE3LjM5OTgxMi05
+        Ljk5NDM1NiAwLTI1LjcwODM3My01Ljk2MDQ4OS0yOS4wMTk3NTYgNC42OTYxNDMtNS41MzkwNCAxNy42
+        NDA2NC00LjIxNDQ4NyAzNy41NjkxNDQtMC4zMDEwMzUgNTUuOTkyNDc0IDEuNjI1NTg4IDcuNzA2NDkx
+        IDExLjgwMDU2NCA0LjI3NDY5NCAxOC4xODI1MDMgNC4yNzQ2OTQgNjIuMDEzMTctMC4xODA2MjEgMTE3
+        LjQ2Mzc4MiAxNi43OTc3NDIgMTY0LjEyNDE3NyA1OS40MjQyNzEgOTcuMDUzNjIyIDg4LjU2NDQ0IDk2
+        LjYzMjE3MyAyNDMuNTM3MTU5LTMuMzcxNTkgMzI4LjQ4OTE4MS0yMC40NzAzNjcgMTcuMzk5ODEyLTIy
+        LjE1NjE2MiAyOS41MDE0MTEtOS4zMzIwNzkgNTEuNTM3MTU5IDE4Ljk2NTE5MyAzMi4yNzA5MzEgMzMu
+        OTU2NzI2IDY2LjgyOTcyNyA1Mi4zMTk4NDkgMTAzLjc5NjgwMnoiIGZpbGw9IiNGRkZGRkYiIC8+DQog
+        IDxwYXRoIGQ9Ik00MTUuNzI5MDY5IDUxMS4yNzc1MTZjMC4yNDA4MjgtNTMuMDQyMzMzIDQyLjk4Nzc3
+        LTk2LjIxMDcyNCA5NC4zNDQzMDgtOTUuMjQ3NDEzIDU2LjUzNDMzNyAxLjA4MzcyNSA5Ny41OTU0ODQg
+        NDIuNTA2MTE1IDk2Ljg3MzAwMSA5Ny43NzYxMDYtMC43MjI0ODQgNTMuMTAyNTQtNDIuMDg0NjY2IDkz
+        LjgwMjQ0Ni05NS42MDg2NTUgOTQuMDQzMjc0LTUzLjIyMjk1NCAwLjI0MDgyOC05NS44NDk0ODMtNDIu
+        ODA3MTUtOTUuNjA4NjU0LTk2LjU3MTk2N3oiIGZpbGw9IiMzQjgwQzMiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="svgImg32Model.Nozzle" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAF0HAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjQ4cHgiIGhl
+        aWdodD0iNDhweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
+        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
+        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0xNzAuNjY2NjY3IDg1LjMzMzMzM200Mi42
+        NjY2NjYgMGw1OTcuMzMzMzM0IDBxNDIuNjY2NjY3IDAgNDIuNjY2NjY2IDQyLjY2NjY2N2wwIDBxMCA0
+        Mi42NjY2NjctNDIuNjY2NjY2IDQyLjY2NjY2N2wtNTk3LjMzMzMzNCAwcS00Mi42NjY2NjcgMC00Mi42
+        NjY2NjYtNDIuNjY2NjY3bDAgMHEwLTQyLjY2NjY2NyA0Mi42NjY2NjYtNDIuNjY2NjY3WiIgZmlsbD0i
+        IzA1NTY3OSIgLz4NCiAgPHBhdGggZD0iTTQ2OS4zMzMzMzMgNTEyaDg1LjMzMzMzNHYxNzAuNjY2NjY3
+        aC04NS4zMzMzMzR6TTUxMiA4OTZhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDEgMSAwIDg1LjMzMzMzMyA0
+        Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzMzeiBtMC0xMjhhNDIuNjY2NjY3IDQyLjY2
+        NjY2NyAwIDEgMSAwIDg1LjMzMzMzMyA0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzMz
+        ek0yNDAuODk2IDg0Ny4xMDRhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDEgMS02MC4zMzA2NjcgNjAuMzMw
+        NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEgNjAuMzMwNjY3LTYwLjMzMDY2N3ogbTkwLjUzODY2
+        Ny05MC41Mzg2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDEgMS02MC4zMzA2NjcgNjAuMzMwNjY3IDQy
+        LjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEgNjAuMzMwNjY3LTYwLjMzMDY2N3pNNzgzLjEwNCA4NDcuMTA0
+        YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAxIDAgNjAuMzMwNjY3IDYwLjMzMDY2NyA0Mi42NjY2NjcgNDIu
+        NjY2NjY3IDAgMCAwLTYwLjMzMDY2Ny02MC4zMzA2Njd6IG0tOTAuNTM4NjY3LTkwLjUzODY2N2E0Mi42
+        NjY2NjcgNDIuNjY2NjY3IDAgMSAwIDYwLjMzMDY2NyA2MC4zMzA2NjcgNDIuNjY2NjY3IDQyLjY2NjY2
+        NyAwIDAgMC02MC4zMzA2NjctNjAuMzMwNjY3eiIgZmlsbD0iIzA1NTY3OSIgLz4NCiAgPHBhdGggZD0i
+        TTc2OCA4NS4zMzMzMzN2MjEzLjMzMzMzNEEyNTYgMjU2IDAgMSAxIDI1NiAyOTguNjY2NjY3Vjg1LjMz
+        MzMzM2g1MTJ6IG0tODUuMzMzMzMzIDg1LjMzMzMzNEgzNDEuMzMzMzMzdjEyOGExNzAuNjY2NjY3IDE3
+        MC42NjY2NjcgMCAwIDAgMTYyLjEzMzMzNCAxNzAuNDUzMzMzTDUxMiA0NjkuMzMzMzMzYTE3MC42NjY2
+        NjcgMTcwLjY2NjY2NyAwIDAgMCAxNzAuNDUzMzMzLTE2Mi4xMzMzMzNMNjgyLjY2NjY2NyAyOTguNjY2
+        NjY3VjE3MC42NjY2Njd6IiBmaWxsPSIjMDU1Njc5IiAvPg0KICA8cGF0aCBkPSJNNzAzLjI3NDY2NyA1
+        NjAuNTU0NjY3YTQyLjg4IDQyLjg4IDAgMCAxIDU4Ljg4IDE1Ljc4NjY2NmMxMS45NDY2NjcgMjAuODY0
+        IDQuOTQ5MzMzIDQ3LjQ4OC0xNS42NTg2NjcgNTkuNTYyNjY3LTEwMS4yMDUzMzMgNTkuMzA2NjY3LTE1
+        MS40NjY2NjcgODkuNDI5MzMzLTIzNS42MDUzMzMgODkuNDI5MzMzLTg0LjEzODY2NyAwLTEzMy44ODgt
+        MzAuMjA4LTIzMy42NDI2NjctODkuNmE0My43NzYgNDMuNzc2IDAgMCAxLTE1LjI3NDY2Ny01OS42MDUz
+        MzMgNDIuODM3MzMzIDQyLjgzNzMzMyAwIDAgMSA1OS4wMDgtMTUuNDQ1MzMzbDEyLjk3MDY2NyA3LjYz
+        NzMzMyAyNC44MzIgMTMuOTk0NjY3YzY4LjQ4IDM3LjU0NjY2NyA2Ny45NjggNTUuODkzMzMzIDE1Mi4x
+        MDY2NjcgNTUuODkzMzMzczEwMy4zODEzMzMtMjUuNTE0NjY3IDE5Mi4zODQtNzcuNjUzMzMzeiIgZmls
+        bD0iIzA1NTY3OSIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Program.cs b/Desktop/HStation.Desktop.PBS.Core/Program.cs
new file mode 100644
index 0000000..7c75e0d
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Program.cs
@@ -0,0 +1,110 @@
+using DevExpress.LookAndFeel;
+using Mapster;
+using System.Reflection;
+
+namespace HStation.Desktop
+{
+    internal static class Program
+    {
+        /// <summary>
+        ///  The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        private static void Main()
+        {
+            using (var mutex = new System.Threading.Mutex(true, Application.ProductName, out bool createNew))
+            {
+                if (!createNew)
+                {
+                    MessageBox.Show("程序正在运行中...");
+                    Application.Exit();
+                    return;
+                }
+
+                //DevExpress.UserSkins.BonusSkins.Register();
+                DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Bezier");//Visual Studio 2013 Light
+                DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(SkinSvgPalette.Bezier.OfficeColorful);
+                DevExpress.Skins.SkinManager.EnableFormSkins();
+                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hans");
+                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-Hans");
+
+                //处理未捕获的异常
+                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
+                //处理UI线程异常
+                Application.ThreadException += Application_ThreadException;
+                //处理非UI线程异常
+                AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
+
+                Application.EnableVisualStyles();
+                Application.SetCompatibleTextRenderingDefault(false);
+
+                //字体
+                var font = new System.Drawing.Font("微软雅黑", 10);
+                DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = font;
+                DevExpress.XtraEditors.WindowsFormsSettings.DefaultMenuFont = font;
+                DevExpress.Utils.AppearanceObject.DefaultFont = font;
+
+                //zh-Hans界面翻译
+                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hans");
+                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-Hans");
+
+                //皮肤
+                DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(SkinStyle.WXICompact);
+                //DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(SkinStyle.WXICompact);
+
+                // To customize application configuration such as set high DPI settings or default font,
+                // see https://aka.ms/applicationconfiguration.
+                ApplicationConfiguration.Initialize();
+
+                //if (!LoginHelper.Login())
+                //{
+                //    return;
+                //}
+
+                // Yw.FileFolderZipHelper.Zip(@"C:\Users\ZKC\Desktop\循环水用例", @"C:\Users\ZKC\Desktop\循环水用例.ywrvt");
+                //Yw.FileFolderZipHelper.Zip(@"C:\Users\Eventech\Desktop\循环水用例", @"C:\Users\Eventech\Desktop\循环水用例.ywrvt");
+                // Yw.FileFolderZipHelper.Zip(@"C:\Users\admin\Desktop\居家办公工作\循环水用例", @"C:\Users\admin\Desktop\居家办公工作\循环水用例.ywrvt");
+                //Yw.FileFolderZipHelper.Zip(@"C:\Users\admin\Desktop\居家办公工作\简单用例", @"C:\Users\admin\Desktop\居家办公工作\简单用例.ywrvt");
+
+                //var json = RevitTestHelper.GenerateJson();
+
+                //var jsonFileName = @"C:\Users\admin\Desktop\居家办公工作\二开压缩文件\hydro.json";
+                //var jsonContent = File.ReadAllText(jsonFileName);
+                //var jsonModel = JsonHelper.Json2Object<HStation.Model.RevitModel>(jsonContent);
+                //扫描全局DTO映射
+                TypeAdapterConfig.GlobalSettings.Scan
+                    (
+                        Assembly.Load("Yw.BLL.Auth.Core"),
+                        Assembly.Load("Yw.BLL.Bimface.Core"),
+                        Assembly.Load("Yw.BLL.Hydro.Core"),
+                        Assembly.Load("Yw.BLL.Map.Core"),
+                        Assembly.Load("HStation.BLL.Xhs.Core")
+                    );
+                DbFirstHelper.Initial();
+                Yw.WinFrmUI.GlobalParas.AppIcon = HStation.Desktop.Xhs.Core.Properties.Resources.app;
+                Application.Run(new MainForm());
+            }
+        }
+
+        ///<summary>
+        ///  这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
+        ///  做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
+        ///  这就是仁者见仁智者见智,大家自己做了。
+        ///</summary>
+        ///<param name="sender"> </param>
+        ///<param name="e"> </param>
+        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+        {
+            var ex = e.Exception;
+            Yw.LogHelper.Error("系统出现未知异常,ERROR:249", ex);
+            MessageBox.Show($"系统出现未知异常,请重启系统!\r\n{ex.Message}");
+        }
+
+        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            var ex = e.ExceptionObject as Exception;
+            Yw.LogHelper.Error("系统出现未知异常,ERROR:255", ex);
+            MessageBox.Show($"系统出现未知异常,请重启系统!\r\n{ex.Message}");
+        }
+    }
+}
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml b/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..da35d97
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0-windows\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..6e1a744
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <History>True|2024-10-21T04:02:00.7754536Z;False|2024-10-21T11:51:29.4414327+08:00;False|2024-10-21T11:50:51.8640100+08:00;False|2024-10-21T11:49:14.9169777+08:00;</History>
+    <LastFailureDetails />
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.Designer.cs b/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..79b3359
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.Designer.cs
@@ -0,0 +1,83 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HStation.Desktop.Xhs.Core.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+    /// </summary>
+    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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 (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HStation.Desktop.Xhs.Core.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;
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘绫讳技浜� (鍥炬爣) 鐨� System.Drawing.Icon 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Icon app {
+            get {
+                object obj = ResourceManager.GetObject("app", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap loginbg {
+            get {
+                object obj = ResourceManager.GetObject("loginbg", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
diff --git a/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.resx b/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.resx
new file mode 100644
index 0000000..f971b8f
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Properties/Resources.resx
@@ -0,0 +1,127 @@
+锘�<?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>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="app" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="loginbg" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\loginbg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.PBS.Core/Resources/app.ico b/Desktop/HStation.Desktop.PBS.Core/Resources/app.ico
new file mode 100644
index 0000000..fd64892
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Resources/app.ico
Binary files differ
diff --git a/Desktop/HStation.Desktop.PBS.Core/Resources/loginbg.png b/Desktop/HStation.Desktop.PBS.Core/Resources/loginbg.png
new file mode 100644
index 0000000..cc315e1
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/Resources/loginbg.png
Binary files differ
diff --git a/Desktop/HStation.Desktop.PBS.Core/app.manifest b/Desktop/HStation.Desktop.PBS.Core/app.manifest
new file mode 100644
index 0000000..87d44e1
--- /dev/null
+++ b/Desktop/HStation.Desktop.PBS.Core/app.manifest
@@ -0,0 +1,79 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC 娓呭崟閫夐」
+             濡傛灉鎯宠鏇存敼 Windows 鐢ㄦ埛甯愭埛鎺у埗绾у埆锛岃浣跨敤
+             浠ヤ笅鑺傜偣涔嬩竴鏇挎崲 requestedExecutionLevel 鑺傜偣銆�
+
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            鎸囧畾 requestedExecutionLevel 鍏冪礌灏嗙鐢ㄦ枃浠跺拰娉ㄥ唽琛ㄨ櫄鎷熷寲銆�
+            濡傛灉浣犵殑搴旂敤绋嬪簭闇�瑕佹铏氭嫙鍖栨潵瀹炵幇鍚戝悗鍏煎鎬э紝鍒欑Щ闄ゆ
+            鍏冪礌銆�
+        -->
+        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- 璁捐姝ゅ簲鐢ㄧ▼搴忎笌鍏朵竴璧峰伐浣滀笖宸查拡瀵规搴旂敤绋嬪簭杩涜娴嬭瘯鐨�
+           Windows 鐗堟湰鐨勫垪琛ㄣ�傚彇娑堣瘎璁洪�傚綋鐨勫厓绱狅紝
+           Windows 灏嗚嚜鍔ㄩ�夋嫨鏈�鍏煎鐨勭幆澧冦�� -->
+
+      <!-- Windows Vista -->
+      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
+
+      <!-- Windows 7 -->
+      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
+
+      <!-- Windows 8 -->
+      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
+
+      <!-- Windows 8.1 -->
+      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
+
+      <!-- Windows 10 -->
+      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
+
+    </application>
+  </compatibility>
+
+  <!-- 鎸囩ず璇ュ簲鐢ㄧ▼搴忓彲鎰熺煡 DPI 涓� Windows 鍦� DPI 杈冮珮鏃跺皢涓嶄細瀵瑰叾杩涜
+       鑷姩缂╂斁銆俉indows Presentation Foundation (WPF)搴旂敤绋嬪簭鑷姩鎰熺煡 DPI锛屾棤闇�
+       閫夋嫨鍔犲叆銆傞�夋嫨鍔犲叆姝よ缃殑 Windows 绐椾綋搴旂敤绋嬪簭(闈㈠悜 .NET Framework 4.6)杩樺簲
+       鍦ㄥ叾 app.config 涓皢 "EnableWindowsFormsHighDpiAutoResizing" 璁剧疆璁剧疆涓� "true"銆�
+       
+       灏嗗簲鐢ㄧ▼搴忚涓烘劅鐭ラ暱璺緞銆傝鍙傞槄 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
+  
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+      <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
+    </windowsSettings>
+  </application>
+  
+
+  <!-- 鍚敤 Windows 鍏叡鎺т欢鍜屽璇濇鐨勪富棰�(Windows XP 鍜屾洿楂樼増鏈�) -->
+  <!--
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity
+          type="win32"
+          name="Microsoft.Windows.Common-Controls"
+          version="6.0.0.0"
+          processorArchitecture="*"
+          publicKeyToken="6595b64144ccf1df"
+          language="*"
+        />
+    </dependentAssembly>
+  </dependency>
+  -->
+
+</assembly>
diff --git a/Dto/HStation.Dto.Equivalent.Core/00-core/Extensions.cs b/Dto/HStation.Dto.Equivalent.Core/00-core/Extensions.cs
new file mode 100644
index 0000000..eaaab36
--- /dev/null
+++ b/Dto/HStation.Dto.Equivalent.Core/00-core/Extensions.cs
@@ -0,0 +1,12 @@
+锘縩amespace HStation.Dto.Xhs
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public static class Extensions
+    {
+
+
+
+    }
+}
diff --git a/Dto/HStation.Dto.Equivalent.Core/GlobalUsings.cs b/Dto/HStation.Dto.Equivalent.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/Dto/HStation.Dto.Equivalent.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/Dto/HStation.Dto.Equivalent.Core/HStation.Dto.Equivalent.Core.csproj b/Dto/HStation.Dto.Equivalent.Core/HStation.Dto.Equivalent.Core.csproj
new file mode 100644
index 0000000..79ddbb3
--- /dev/null
+++ b/Dto/HStation.Dto.Equivalent.Core/HStation.Dto.Equivalent.Core.csproj
@@ -0,0 +1,15 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>disable</Nullable>
+		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+		<Version>3.1.8</Version>
+	</PropertyGroup>
+
+	<ItemGroup>
+	  <ProjectReference Include="..\..\Service\HStation.Service.Equivalent.Core\HStation.Service.Equivalent.Core.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git a/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml b/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..154e035
--- /dev/null
+++ b/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..ba02b3f
--- /dev/null
+++ b/Dto/HStation.Dto.Equivalent.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <History>True|2024-06-17T06:46:08.5635444Z;True|2024-06-17T14:45:13.5778330+08:00;True|2024-06-12T18:50:19.2813927+08:00;True|2024-06-12T17:05:52.5704328+08:00;True|2024-06-12T16:30:20.6762244+08:00;True|2024-06-11T16:14:47.7274200+08:00;True|2024-06-11T15:37:17.5156447+08:00;True|2024-06-07T13:29:36.4259538+08:00;True|2024-06-07T13:18:03.1407603+08:00;True|2024-06-05T17:00:04.0961032+08:00;True|2024-06-05T16:45:49.0327824+08:00;True|2024-06-05T15:55:56.8772154+08:00;True|2024-06-05T15:15:37.2764019+08:00;True|2024-06-05T15:10:30.5557864+08:00;True|2024-06-05T13:36:01.3319880+08:00;True|2024-06-05T12:08:41.7145545+08:00;True|2024-06-05T11:50:34.4721947+08:00;</History>
+    <LastFailureDetails />
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Dto/HStation.Dto.PBS.Core/00-core/Extensions.cs b/Dto/HStation.Dto.PBS.Core/00-core/Extensions.cs
new file mode 100644
index 0000000..eaaab36
--- /dev/null
+++ b/Dto/HStation.Dto.PBS.Core/00-core/Extensions.cs
@@ -0,0 +1,12 @@
+锘縩amespace HStation.Dto.Xhs
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public static class Extensions
+    {
+
+
+
+    }
+}
diff --git a/Dto/HStation.Dto.PBS.Core/GlobalUsings.cs b/Dto/HStation.Dto.PBS.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/Dto/HStation.Dto.PBS.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/Dto/HStation.Dto.PBS.Core/HStation.Dto.PBS.Core.csproj b/Dto/HStation.Dto.PBS.Core/HStation.Dto.PBS.Core.csproj
new file mode 100644
index 0000000..154bdd1
--- /dev/null
+++ b/Dto/HStation.Dto.PBS.Core/HStation.Dto.PBS.Core.csproj
@@ -0,0 +1,15 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net6.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>disable</Nullable>
+		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+		<Version>3.1.8</Version>
+	</PropertyGroup>
+
+	<ItemGroup>
+	  <ProjectReference Include="..\..\Service\HStation.Service.PBS.Core\HStation.Service.PBS.Core.csproj" />
+	</ItemGroup>
+
+</Project>
diff --git a/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml b/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..154e035
--- /dev/null
+++ b/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..ba02b3f
--- /dev/null
+++ b/Dto/HStation.Dto.PBS.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <History>True|2024-06-17T06:46:08.5635444Z;True|2024-06-17T14:45:13.5778330+08:00;True|2024-06-12T18:50:19.2813927+08:00;True|2024-06-12T17:05:52.5704328+08:00;True|2024-06-12T16:30:20.6762244+08:00;True|2024-06-11T16:14:47.7274200+08:00;True|2024-06-11T15:37:17.5156447+08:00;True|2024-06-07T13:29:36.4259538+08:00;True|2024-06-07T13:18:03.1407603+08:00;True|2024-06-05T17:00:04.0961032+08:00;True|2024-06-05T16:45:49.0327824+08:00;True|2024-06-05T15:55:56.8772154+08:00;True|2024-06-05T15:15:37.2764019+08:00;True|2024-06-05T15:10:30.5557864+08:00;True|2024-06-05T13:36:01.3319880+08:00;True|2024-06-05T12:08:41.7145545+08:00;True|2024-06-05T11:50:34.4721947+08:00;</History>
+    <LastFailureDetails />
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/HStation.Xhs.Core.sln b/HStation.Xhs.Core.sln
index 574ba59..385d232 100644
--- a/HStation.Xhs.Core.sln
+++ b/HStation.Xhs.Core.sln
@@ -155,6 +155,28 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.WinFrmUI.Basic.Core", "WinFrmUI\HStation.WinFrmUI.Basic.Core\HStation.WinFrmUI.Basic.Core.csproj", "{2A30EB54-38CA-44D4-BB11-3C2658568346}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Desktop.PBS.Core", "Desktop\HStation.Desktop.PBS.Core\HStation.Desktop.PBS.Core.csproj", "{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.WinFrmUI.PBS.Core", "WinFrmUI\HStation.WinFrmUI.PBS.Core\HStation.WinFrmUI.PBS.Core.csproj", "{5CC269BF-A20B-4D43-B0AE-E545315672F3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.BLL.PBS.Core", "BLL\HStation.BLL.PBS.Core\HStation.BLL.PBS.Core.csproj", "{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Vmo.PBS.Core", "Vmo\HStation.Vmo.PBS.Core\HStation.Vmo.PBS.Core.csproj", "{DBE66876-8B00-4359-A0B3-269202FB2794}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Dto.PBS.Core", "Dto\HStation.Dto.PBS.Core\HStation.Dto.PBS.Core.csproj", "{859BFDFE-8D52-4451-A093-B58C9D6C009D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Service.PBS.Core", "Service\HStation.Service.PBS.Core\HStation.Service.PBS.Core.csproj", "{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.WinFrmUI.Equivalent.Core", "WinFrmUI\HStation.WinFrmUI.Equivalent.Core\HStation.WinFrmUI.Equivalent.Core.csproj", "{941E1340-380E-4C76-AD21-745BD1F733AE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.BLL.Equivalent.Core", "BLL\HStation.BLL.Equivalent.Core\HStation.BLL.Equivalent.Core.csproj", "{289785D7-C95E-4966-95F7-35776D566727}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Vmo.Equivalent.Core", "Vmo\HStation.Vmo.Equivalent.Core\HStation.Vmo.Equivalent.Core.csproj", "{B930E14D-8018-47DB-82C1-872DA02151C8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Dto.Equivalent.Core", "Dto\HStation.Dto.Equivalent.Core\HStation.Dto.Equivalent.Core.csproj", "{7DFA0C65-0EA6-46B4-B256-87F409C4E381}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Service.Equivalent.Core", "Service\HStation.Service.Equivalent.Core\HStation.Service.Equivalent.Core.csproj", "{2C273E0D-7305-46C3-9030-A0D56F1B539D}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -1338,6 +1360,204 @@
 		{2A30EB54-38CA-44D4-BB11-3C2658568346}.Release|x64.Build.0 = Release|Any CPU
 		{2A30EB54-38CA-44D4-BB11-3C2658568346}.Release|x86.ActiveCfg = Release|Any CPU
 		{2A30EB54-38CA-44D4-BB11-3C2658568346}.Release|x86.Build.0 = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|x64.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Debug|x86.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|x64.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.dll_test|x86.Build.0 = Debug|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|x64.ActiveCfg = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|x64.Build.0 = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|x86.ActiveCfg = Release|Any CPU
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE}.Release|x86.Build.0 = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|x64.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Debug|x86.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|x64.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.dll_test|x86.Build.0 = Debug|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|x64.ActiveCfg = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|x64.Build.0 = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|x86.ActiveCfg = Release|Any CPU
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3}.Release|x86.Build.0 = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|x64.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Debug|x86.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|x64.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.dll_test|x86.Build.0 = Debug|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|x64.ActiveCfg = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|x64.Build.0 = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|x86.ActiveCfg = Release|Any CPU
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA}.Release|x86.Build.0 = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|x64.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Debug|x86.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|x64.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.dll_test|x86.Build.0 = Debug|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|x64.ActiveCfg = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|x64.Build.0 = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|x86.ActiveCfg = Release|Any CPU
+		{DBE66876-8B00-4359-A0B3-269202FB2794}.Release|x86.Build.0 = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|x64.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Debug|x86.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|x64.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.dll_test|x86.Build.0 = Debug|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|x64.ActiveCfg = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|x64.Build.0 = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|x86.ActiveCfg = Release|Any CPU
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D}.Release|x86.Build.0 = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|x64.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Debug|x86.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|x64.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.dll_test|x86.Build.0 = Debug|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|x64.ActiveCfg = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|x64.Build.0 = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|x86.ActiveCfg = Release|Any CPU
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C}.Release|x86.Build.0 = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|x64.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Debug|x86.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|x64.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.dll_test|x86.Build.0 = Debug|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|x64.ActiveCfg = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|x64.Build.0 = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|x86.ActiveCfg = Release|Any CPU
+		{941E1340-380E-4C76-AD21-745BD1F733AE}.Release|x86.Build.0 = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|x64.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Debug|x86.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|x64.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.dll_test|x86.Build.0 = Debug|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|Any CPU.Build.0 = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|x64.ActiveCfg = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|x64.Build.0 = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|x86.ActiveCfg = Release|Any CPU
+		{289785D7-C95E-4966-95F7-35776D566727}.Release|x86.Build.0 = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|x64.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Debug|x86.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|x64.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.dll_test|x86.Build.0 = Debug|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|x64.ActiveCfg = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|x64.Build.0 = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|x86.ActiveCfg = Release|Any CPU
+		{B930E14D-8018-47DB-82C1-872DA02151C8}.Release|x86.Build.0 = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|x64.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Debug|x86.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|x64.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.dll_test|x86.Build.0 = Debug|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|x64.ActiveCfg = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|x64.Build.0 = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|x86.ActiveCfg = Release|Any CPU
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381}.Release|x86.Build.0 = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|x64.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Debug|x86.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|Any CPU.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|Any CPU.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|x64.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|x64.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|x86.ActiveCfg = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.dll_test|x86.Build.0 = Debug|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|x64.ActiveCfg = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|x64.Build.0 = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|x86.ActiveCfg = Release|Any CPU
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -1408,6 +1628,17 @@
 		{0DBE9BD3-457E-472C-BB93-86D754B2A348} = {4D3764D7-19DE-4C77-8F75-0EFB19D64B3F}
 		{C0C9D757-5AA3-4590-9161-C4CE2700F822} = {929B3BD5-B817-4EAF-ADA4-3DFBD1580DA6}
 		{2A30EB54-38CA-44D4-BB11-3C2658568346} = {4F0A7BA1-6ED6-4F4F-A3B4-B9B3A133D869}
+		{09380ADD-5C27-4A29-B67F-ED1B5B8133EE} = {E43ECCDE-FE94-4165-93CA-C14F197378FB}
+		{5CC269BF-A20B-4D43-B0AE-E545315672F3} = {4F0A7BA1-6ED6-4F4F-A3B4-B9B3A133D869}
+		{9D8BE75D-FEBB-49DE-9D58-F2926B7978CA} = {4D3764D7-19DE-4C77-8F75-0EFB19D64B3F}
+		{DBE66876-8B00-4359-A0B3-269202FB2794} = {E956660D-6E09-417B-9A3C-27888AF69266}
+		{859BFDFE-8D52-4451-A093-B58C9D6C009D} = {929B3BD5-B817-4EAF-ADA4-3DFBD1580DA6}
+		{9D0BEFFB-0F9E-4F75-B122-EAA5DFD0437C} = {CF8E0A6C-9342-430D-BD10-6E1B5DE18571}
+		{941E1340-380E-4C76-AD21-745BD1F733AE} = {4F0A7BA1-6ED6-4F4F-A3B4-B9B3A133D869}
+		{289785D7-C95E-4966-95F7-35776D566727} = {4D3764D7-19DE-4C77-8F75-0EFB19D64B3F}
+		{B930E14D-8018-47DB-82C1-872DA02151C8} = {E956660D-6E09-417B-9A3C-27888AF69266}
+		{7DFA0C65-0EA6-46B4-B256-87F409C4E381} = {929B3BD5-B817-4EAF-ADA4-3DFBD1580DA6}
+		{2C273E0D-7305-46C3-9030-A0D56F1B539D} = {CF8E0A6C-9342-430D-BD10-6E1B5DE18571}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {E02989A8-9B6F-43E5-AACA-790328215089}
diff --git a/Service/HStation.Service.Equivalent.Core/00-core/ConfigHelper.cs b/Service/HStation.Service.Equivalent.Core/00-core/ConfigHelper.cs
new file mode 100644
index 0000000..384c13e
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/00-core/ConfigHelper.cs
@@ -0,0 +1,93 @@
+锘縩amespace HStation.Equivalent
+{
+    internal class ConfigHelper
+    {
+        /// <summary>
+        /// 榛樿杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig DefaultConnectionConfig
+        {
+            get
+            {
+                ConnectionConfig connectConfig = null;
+                switch (EquivalentParasHelper.Equivalent.DataBase.DbType)
+                {
+                    case DbType.PostgreSql:
+                        {
+                            connectConfig = PostgreSqlConnectionConfig;
+                        }
+                        break;
+
+                    case DbType.SQLite:
+                        {
+                            connectConfig = SQLiteConnectionConfig;
+                        }
+                        break;
+
+                    default: break;
+                }
+                return connectConfig;
+            }
+        }
+
+        /// <summary>
+        /// PostgreSql杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig PostgreSqlConnectionConfig
+        {
+            get
+            {
+                //SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; 涓嶅悓鏈哄櫒閰嶇疆鐨勫敮涓�鏁板瓧; // 鍗曟湇鍔″櫒涓嶉渶瑕佹寚瀹�
+                return new ConnectionConfig()
+                {
+                    DbType = SqlSugar.DbType.PostgreSQL,//鏁版嵁搴撶被鍨�
+                    ConnectionString = EquivalentParasHelper.Equivalent.DataBase.PostgreSql.ConnectString,
+                    IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴
+                    MoreSettings = new ConnMoreSettings()
+                    {
+                        //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍�
+                    },
+                    AopEvents = new AopEvents
+                    {
+                        OnLogExecuting = (sql, p) =>
+                        {
+                            // var sqlString = UtilMethods.GetNativeSql(sql, p);
+                            //LogHelper.Debug(sqlString);
+                            // Console.WriteLine(sql);
+                        }
+                    }
+                };
+            }
+        }
+
+        /// <summary>
+        /// SQLite杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig SQLiteConnectionConfig
+        {
+            get
+            {
+                //SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; 涓嶅悓鏈哄櫒閰嶇疆鐨勫敮涓�鏁板瓧; // 鍗曟湇鍔″櫒涓嶉渶瑕佹寚瀹�
+                return new ConnectionConfig()
+                {
+                    DbType = SqlSugar.DbType.Sqlite,//鏁版嵁搴撶被鍨�
+                    ConnectionString = EquivalentParasHelper.Equivalent.DataBase.SQLite.ConnectString,
+                    IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴
+                    MoreSettings = new ConnMoreSettings()
+                    {
+                        //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍�
+                    },
+                    AopEvents = new AopEvents
+                    {
+                        OnLogExecuting = (sql, p) =>
+                        {
+                            // var sqlString = UtilMethods.GetNativeSql(sql, p);
+                            //LogHelper.Debug(sqlString);
+                            // Console.WriteLine(sql);
+                        }
+                    }
+                };
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.Equivalent.Core/00-core/DataType.cs b/Service/HStation.Service.Equivalent.Core/00-core/DataType.cs
new file mode 100644
index 0000000..529ff42
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/00-core/DataType.cs
@@ -0,0 +1,11 @@
+锘縩amespace HStation.Equivalent
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DataType
+    {
+        
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/00-core/DbType.cs b/Service/HStation.Service.Equivalent.Core/00-core/DbType.cs
new file mode 100644
index 0000000..5881d6d
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/00-core/DbType.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.Equivalent
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class DbType
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        public const string SQLite = "SQLite";
+
+        /// <summary>
+        ///
+        /// </summary>
+        public const string PostgreSql = "PostgreSql";
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.Equivalent.Core/00-core/Flags.cs b/Service/HStation.Service.Equivalent.Core/00-core/Flags.cs
new file mode 100644
index 0000000..a946393
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/00-core/Flags.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.Equivalent
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Flags
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public const string 榛樿 = "榛樿";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public const string 涓氬姟 = "涓氬姟";
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/00-core/MemoryCacheKey.cs b/Service/HStation.Service.Equivalent.Core/00-core/MemoryCacheKey.cs
new file mode 100644
index 0000000..b10fae1
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/00-core/MemoryCacheKey.cs
@@ -0,0 +1,26 @@
+锘縩amespace HStation.Equivalent
+{
+    /// <summary>
+    /// 鍐呭瓨缂撳瓨閿�-涓轰互鍚庡鍔犳竻闄ょ紦瀛樺仛鍑嗗
+    /// </summary>
+    public class MemoryCacheKey
+    {
+        /// <summary>
+        /// 鏈嶅姟灞傜骇
+        /// </summary>
+        public const string ServiceLevel = "Service";
+
+        /// <summary>
+        /// 鎺ュ彛灞傜骇
+        /// </summary>
+        public const string WebApiLevel = "WebApi";
+
+        /// <summary>
+        /// 妯″潡
+        /// </summary>
+        public const string Module = "Equivalent";
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentFileHelper.cs b/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentFileHelper.cs
new file mode 100644
index 0000000..b43ec16
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentFileHelper.cs
@@ -0,0 +1,64 @@
+锘縩amespace HStation.Settings
+{
+    internal class EquivalentFileHelper
+    {
+        /// <summary>
+        /// json鏂囦欢鍚嶇О
+        /// </summary>
+        internal static string JsonFileName
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(_jsonFileName))
+                {
+                    _jsonFileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_equivalent_settings.json");
+                }
+                return _jsonFileName;
+            }
+        }
+        private static string _jsonFileName = null;
+
+        /// <summary>
+        /// 鑾峰彇
+        /// </summary>
+        internal static EquivalentParas Get()
+        {
+            if (_appparas == null)
+            {
+                lock (_locker)
+                {
+                    if (_appparas == null)
+                    {
+                        var json = File.ReadAllText(JsonFileName, Encoding.UTF8);
+                        _appparas = JsonHelper.Json2Object<EquivalentParas>(json);
+                        if (_appparas == null)
+                        {
+                            _appparas = new EquivalentParas();
+                        }
+                    }
+                }
+            }
+            return _appparas;
+        }
+        private static EquivalentParas _appparas = null;
+        private static readonly object _locker = new object();
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        /// <returns></returns>
+        internal static bool Save()
+        {
+            if (_appparas == null)
+            {
+                return default;
+            }
+            var json = JsonHelper.Object2FormatJson(_appparas);
+            File.WriteAllText(JsonFileName, json, Encoding.UTF8);
+            return true;
+        }
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentParasHelper.cs b/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentParasHelper.cs
new file mode 100644
index 0000000..14c6914
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/00-core/EquivalentParasHelper.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class EquivalentParasHelper
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public static Paras_Equivalent Equivalent
+        {
+            get { return EquivalentFileHelper.Get().Equivalent; }
+        }
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        public static bool Save()
+        {
+            return EquivalentFileHelper.Save();
+        }
+
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/EquivalentParas.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/EquivalentParas.cs
new file mode 100644
index 0000000..25917ce
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/EquivalentParas.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    internal class EquivalentParas
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public Paras_Equivalent Equivalent { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/Paras_Equivalent.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/Paras_Equivalent.cs
new file mode 100644
index 0000000..525678e
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/00-core/Paras_Equivalent.cs
@@ -0,0 +1,31 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent
+    {
+
+        /// <summary>
+        /// 鏁版嵁搴�
+        /// </summary>
+        public Paras_Equivalent_DataBase DataBase { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鏂囦欢澶�
+        /// </summary>
+        public string DataFolder { get; set; }
+
+        /// <summary>
+        /// CAL
+        /// </summary>
+        public Paras_Equivalent_CAL CAL { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢
+        /// </summary>
+        public Paras_Equivalent_File File { get; set; }
+
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase.cs
new file mode 100644
index 0000000..164b3e4
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase.cs
@@ -0,0 +1,31 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_DataBase
+    {
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public string DbType { get; set; }
+
+        /// <summary>
+        /// 宸ュ巶
+        /// </summary>
+        public Paras_Equivalent_DataBase_Factory Factory { get; set; }
+
+        /// <summary>
+        /// PostgreSql
+        /// </summary>
+        public Paras_Equivalent_DataBase_PostgreSql PostgreSql { get; set; }
+
+        /// <summary>
+        /// SQLite
+        /// </summary>
+        public Paras_Equivalent_DataBase_SQLite SQLite { get; set; }
+
+
+    }
+
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_Factory.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_Factory.cs
new file mode 100644
index 0000000..54534c8
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_Factory.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_DataBase_Factory
+    {
+        /// <summary>
+        /// 鏄惁寮�鍚紦瀛�
+        /// </summary>
+        public bool EnableCache { get; set; }
+
+        /// <summary>
+        /// 缂撳瓨鏃堕棿锛堢锛�
+        /// </summary>
+        public int CacheTime { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_PostgreSql.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_PostgreSql.cs
new file mode 100644
index 0000000..16f6522
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_PostgreSql.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_DataBase_PostgreSql
+    {
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string ConnectString { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_SQLite.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_SQLite.cs
new file mode 100644
index 0000000..9939f2b
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/01-database/Paras_Equivalent_DataBase_SQLite.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_DataBase_SQLite
+    {
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string ConnectString { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL.cs
new file mode 100644
index 0000000..a87a20e
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class Paras_Equivalent_CAL
+    {
+        /// <summary>
+        /// CAL绫诲瀷
+        /// </summary>
+        public string CALType
+        {
+            get;
+            set;
+        }
+
+        /// <summary>
+        /// HttpClient
+        /// </summary>
+        public Paras_Equivalent_CAL_HttpClient HttpClient { get; set; }
+
+        /// <summary>
+        /// LocalClient
+        /// </summary>
+        public Paras_Equivalent_CAL_LocalClient LocalClient { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_HttpClient.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_HttpClient.cs
new file mode 100644
index 0000000..8e51ba1
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_HttpClient.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_CAL_HttpClient
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string HttpUrl { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_LocalClient.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_LocalClient.cs
new file mode 100644
index 0000000..64fa389
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/02-cal/Paras_Equivalent_CAL_LocalClient.cs
@@ -0,0 +1,10 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_Equivalent_CAL_LocalClient
+    {
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/03-file/Paras_Equivalent_File.cs b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/03-file/Paras_Equivalent_File.cs
new file mode 100644
index 0000000..0c7bc88
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/03-settings/01-paras/03-file/Paras_Equivalent_File.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 鏂囦欢
+    /// </summary>
+    public class Paras_Equivalent_File
+    {
+        /// <summary>
+        /// 鍚庣紑
+        /// </summary>
+        public string Suffix { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; }
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/05-service/00-core/01-dal/DALCreateHelper.cs b/Service/HStation.Service.Equivalent.Core/05-service/00-core/01-dal/DALCreateHelper.cs
new file mode 100644
index 0000000..24fd25e
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/05-service/00-core/01-dal/DALCreateHelper.cs
@@ -0,0 +1,23 @@
+锘縩amespace HStation.Service.Equivalent
+{
+    /// <summary>
+    /// DAL杈呭姪绫�
+    /// </summary>
+    internal class DALCreateHelper
+    {
+
+        /// <summary>
+        /// 鍒涘缓DAL
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T CreateDAL<T>()
+        {
+            var dbType = Settings.EquivalentParasHelper.Equivalent.DataBase.DbType;
+            var enableCache = Settings.EquivalentParasHelper.Equivalent.DataBase.Factory.EnableCache;
+            var cacheTime = Settings.EquivalentParasHelper.Equivalent.DataBase.Factory.CacheTime;
+            return Yw.DALFactory.CreateDAL3<T>(dbType, enableCache, cacheTime);
+        }
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/05-service/00-core/02-cache/CacheHelper.cs b/Service/HStation.Service.Equivalent.Core/05-service/00-core/02-cache/CacheHelper.cs
new file mode 100644
index 0000000..2f3a5ea
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/05-service/00-core/02-cache/CacheHelper.cs
@@ -0,0 +1,36 @@
+锘縰sing HStation.Equivalent;
+
+namespace HStation.Service.Equivalent
+{
+    /// <summary>
+    /// 缂撳瓨杈呭姪绫�
+    /// </summary>
+    internal class CacheHelper
+    {
+        private const string _cacheKeyPrefix = "Equivalent";//缂撳瓨閿墠缂�
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨閿�
+        /// </summary>
+        public static string GetCacheKey(string keyContent)
+        {
+            return MemoryCacheKeyHelper.GetKey(MemoryCacheKey.ServiceLevel, MemoryCacheKey.Module, $"*{_cacheKeyPrefix}*_{keyContent}");
+        }
+
+        /// <summary>
+        /// 娓呴櫎鍏ㄩ儴
+        /// </summary>
+        public static void Clear()
+        {
+            Yw.MemoryCacheHelper.Remove((key) =>
+            {
+                var prefix = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.ServiceLevel, MemoryCacheKey.Module, $"*{_cacheKeyPrefix}*");
+                return key.StartsWith(prefix);
+            });
+        }
+
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.Equivalent.Core/05-service/00-core/03-helper/DbFirstHelper.cs b/Service/HStation.Service.Equivalent.Core/05-service/00-core/03-helper/DbFirstHelper.cs
new file mode 100644
index 0000000..206685c
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/05-service/00-core/03-helper/DbFirstHelper.cs
@@ -0,0 +1,69 @@
+锘縩amespace HStation.Service.Equivalent
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class DbFirstHelper
+    {
+        /// <summary>
+        /// 鍒濆鍖�
+        /// </summary>
+        public static bool Initial(out string msg)
+        {
+            msg = string.Empty;
+            try
+            {
+                var connectConfig = HStation.Equivalent.ConfigHelper.DefaultConnectionConfig;
+                if (connectConfig == null)
+                {
+                    msg = "杩炴帴閰嶇疆鍒濆鍖栧け璐�";
+                    return false;
+                }
+
+                connectConfig.ConfigureExternalServices = new ConfigureExternalServices()
+                {
+                    EntityService = (property, column) =>
+                    {
+                        //闄や富閿鍏朵粬鍒楅兘鍙┖
+                        if (!column.IsPrimarykey)
+                        {
+                            column.IsNullable = true;
+                        }
+                        if (column.DataType == StaticConfig.CodeFirst_BigString)
+                        {
+                            if (EquivalentParasHelper.Equivalent.DataBase.DbType == HStation.Equivalent.DbType.PostgreSql)
+                            {
+                                column.DataType = "character varying";
+                            }
+                        }
+                    }
+                };
+
+                var typeList = new List<Type>()
+                {
+                   
+                 };
+
+                using (var db = new SqlSugarClient(connectConfig))
+                {
+                    //璁剧疆瀛楃涓查粯璁ら暱搴�
+                    //db.CodeFirst.SetStringDefaultLength(250);
+                    //db.CodeFirst.SetStringDefaultLength(int.MaxValue);
+                    //寤哄簱锛氬鏋滀笉瀛樺湪鍒涘缓鏁版嵁搴撳瓨鍦ㄤ笉浼氶噸澶嶅垱寤� createdb;娉ㄦ剰 锛歄racle鍜屼釜鍒浗浜у簱闇�涓嶆敮鎸佽鏂规硶锛岄渶瑕佹墜鍔ㄥ缓搴�
+                    db.DbMaintenance.CreateDatabase();
+                    db.CodeFirst.InitTables
+                        (
+                           typeList.ToArray()
+                        );
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                msg = ex.Message;
+                return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.Equivalent.Core/GlobalUsings.cs b/Service/HStation.Service.Equivalent.Core/GlobalUsings.cs
new file mode 100644
index 0000000..76ef006
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/GlobalUsings.cs
@@ -0,0 +1,5 @@
+锘縢lobal using HStation.Settings;
+global using SqlSugar;
+global using System.Text;
+global using Yw;
+global using Yw.Untity;
diff --git a/Service/HStation.Service.Equivalent.Core/HStation.Service.Equivalent.Core.csproj b/Service/HStation.Service.Equivalent.Core/HStation.Service.Equivalent.Core.csproj
new file mode 100644
index 0000000..4b1c889
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/HStation.Service.Equivalent.Core.csproj
@@ -0,0 +1,23 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Remove="paras_equivalent_equivalent_settings.json" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="01-entity\" />
+    <Folder Include="02-model\" />
+    <Folder Include="04-dal\" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Yw.Service.Basic.Core" Version="3.3.2" />
+  </ItemGroup>
+
+</Project>
diff --git a/Service/HStation.Service.Equivalent.Core/paras_equivalent_settings.json b/Service/HStation.Service.Equivalent.Core/paras_equivalent_settings.json
new file mode 100644
index 0000000..2c0873e
--- /dev/null
+++ b/Service/HStation.Service.Equivalent.Core/paras_equivalent_settings.json
@@ -0,0 +1,35 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+
+
+  "Xhs": {
+    "DataBase": {
+      "DbType": "PostgreSql", //PostgreSql/SQLite
+      "Factory": {
+        "EnableCache": true,
+        "CacheTime": 10
+      },
+      "PostgreSql": {
+        "ConnectString": "PORT=5432;DATABASE=hstation_xhs;HOST=localhost;PASSWORD=123456;USER ID=postgres;"
+      },
+      "SQLite": {
+        "ConnectString": "Data Source=hstation_xhs.db;"
+      }
+    },
+    "DataFolder": "Xhs",
+    "CAL": {
+      "CALType": "HttpClient", //HttpClient/LocalClient
+      "HttpClient": {
+        "HttpUrl": ""
+      },
+      "LocalClient": {
+      }
+    },
+    "File": {
+      "Suffix": ".ywrvt",
+      "Password": ""
+    }
+  }
+
+
+}
diff --git a/Service/HStation.Service.PBS.Core/00-core/ConfigHelper.cs b/Service/HStation.Service.PBS.Core/00-core/ConfigHelper.cs
new file mode 100644
index 0000000..9c69406
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/00-core/ConfigHelper.cs
@@ -0,0 +1,93 @@
+锘縩amespace HStation.PBS
+{
+    internal class ConfigHelper
+    {
+        /// <summary>
+        /// 榛樿杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig DefaultConnectionConfig
+        {
+            get
+            {
+                ConnectionConfig connectConfig = null;
+                switch (PBSParasHelper.PBS.DataBase.DbType)
+                {
+                    case DbType.PostgreSql:
+                        {
+                            connectConfig = PostgreSqlConnectionConfig;
+                        }
+                        break;
+
+                    case DbType.SQLite:
+                        {
+                            connectConfig = SQLiteConnectionConfig;
+                        }
+                        break;
+
+                    default: break;
+                }
+                return connectConfig;
+            }
+        }
+
+        /// <summary>
+        /// PostgreSql杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig PostgreSqlConnectionConfig
+        {
+            get
+            {
+                //SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; 涓嶅悓鏈哄櫒閰嶇疆鐨勫敮涓�鏁板瓧; // 鍗曟湇鍔″櫒涓嶉渶瑕佹寚瀹�
+                return new ConnectionConfig()
+                {
+                    DbType = SqlSugar.DbType.PostgreSQL,//鏁版嵁搴撶被鍨�
+                    ConnectionString = PBSParasHelper.PBS.DataBase.PostgreSql.ConnectString,
+                    IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴
+                    MoreSettings = new ConnMoreSettings()
+                    {
+                        //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍�
+                    },
+                    AopEvents = new AopEvents
+                    {
+                        OnLogExecuting = (sql, p) =>
+                        {
+                            // var sqlString = UtilMethods.GetNativeSql(sql, p);
+                            //LogHelper.Debug(sqlString);
+                            // Console.WriteLine(sql);
+                        }
+                    }
+                };
+            }
+        }
+
+        /// <summary>
+        /// SQLite杩炴帴閰嶇疆
+        /// </summary>
+        internal static ConnectionConfig SQLiteConnectionConfig
+        {
+            get
+            {
+                //SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; 涓嶅悓鏈哄櫒閰嶇疆鐨勫敮涓�鏁板瓧; // 鍗曟湇鍔″櫒涓嶉渶瑕佹寚瀹�
+                return new ConnectionConfig()
+                {
+                    DbType = SqlSugar.DbType.Sqlite,//鏁版嵁搴撶被鍨�
+                    ConnectionString = PBSParasHelper.PBS.DataBase.SQLite.ConnectString,
+                    IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴
+                    MoreSettings = new ConnMoreSettings()
+                    {
+                        //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍�
+                    },
+                    AopEvents = new AopEvents
+                    {
+                        OnLogExecuting = (sql, p) =>
+                        {
+                            // var sqlString = UtilMethods.GetNativeSql(sql, p);
+                            //LogHelper.Debug(sqlString);
+                            // Console.WriteLine(sql);
+                        }
+                    }
+                };
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.PBS.Core/00-core/DataType.cs b/Service/HStation.Service.PBS.Core/00-core/DataType.cs
new file mode 100644
index 0000000..01108b4
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/00-core/DataType.cs
@@ -0,0 +1,24 @@
+锘縩amespace HStation.PBS
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DataType
+    {
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        public const string PBSProject = "pbs-project";
+
+        /// <summary>
+        /// 椤圭洰绔�
+        /// </summary>
+        public const string PBSProjectSite = "pbs-project-site";
+
+        /// <summary>
+        /// 鏂规
+        /// </summary>
+        public const string PBSScheme = "pbs-scheme";
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/00-core/DbType.cs b/Service/HStation.Service.PBS.Core/00-core/DbType.cs
new file mode 100644
index 0000000..ab2947d
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/00-core/DbType.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.PBS
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class DbType
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        public const string SQLite = "SQLite";
+
+        /// <summary>
+        ///
+        /// </summary>
+        public const string PostgreSql = "PostgreSql";
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.PBS.Core/00-core/Flags.cs b/Service/HStation.Service.PBS.Core/00-core/Flags.cs
new file mode 100644
index 0000000..54fd99a
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/00-core/Flags.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.PBS
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Flags
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public const string 榛樿 = "榛樿";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public const string 涓氬姟 = "涓氬姟";
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/00-core/MemoryCacheKey.cs b/Service/HStation.Service.PBS.Core/00-core/MemoryCacheKey.cs
new file mode 100644
index 0000000..1e93af2
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/00-core/MemoryCacheKey.cs
@@ -0,0 +1,26 @@
+锘縩amespace HStation.PBS
+{
+    /// <summary>
+    /// 鍐呭瓨缂撳瓨閿�-涓轰互鍚庡鍔犳竻闄ょ紦瀛樺仛鍑嗗
+    /// </summary>
+    public class MemoryCacheKey
+    {
+        /// <summary>
+        /// 鏈嶅姟灞傜骇
+        /// </summary>
+        public const string ServiceLevel = "Service";
+
+        /// <summary>
+        /// 鎺ュ彛灞傜骇
+        /// </summary>
+        public const string WebApiLevel = "WebApi";
+
+        /// <summary>
+        /// 妯″潡
+        /// </summary>
+        public const string Module = "PBS";
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSFileHelper.cs b/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSFileHelper.cs
new file mode 100644
index 0000000..9eac1ba
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSFileHelper.cs
@@ -0,0 +1,64 @@
+锘縩amespace HStation.Settings
+{
+    internal class PBSFileHelper
+    {
+        /// <summary>
+        /// json鏂囦欢鍚嶇О
+        /// </summary>
+        internal static string JsonFileName
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(_jsonFileName))
+                {
+                    _jsonFileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_pbs_settings.json");
+                }
+                return _jsonFileName;
+            }
+        }
+        private static string _jsonFileName = null;
+
+        /// <summary>
+        /// 鑾峰彇
+        /// </summary>
+        internal static PBSParas Get()
+        {
+            if (_appparas == null)
+            {
+                lock (_locker)
+                {
+                    if (_appparas == null)
+                    {
+                        var json = File.ReadAllText(JsonFileName, Encoding.UTF8);
+                        _appparas = JsonHelper.Json2Object<PBSParas>(json);
+                        if (_appparas == null)
+                        {
+                            _appparas = new PBSParas();
+                        }
+                    }
+                }
+            }
+            return _appparas;
+        }
+        private static PBSParas _appparas = null;
+        private static readonly object _locker = new object();
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        /// <returns></returns>
+        internal static bool Save()
+        {
+            if (_appparas == null)
+            {
+                return default;
+            }
+            var json = JsonHelper.Object2FormatJson(_appparas);
+            File.WriteAllText(JsonFileName, json, Encoding.UTF8);
+            return true;
+        }
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSParasHelper.cs b/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSParasHelper.cs
new file mode 100644
index 0000000..7c4a959
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/00-core/PBSParasHelper.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PBSParasHelper
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public static Paras_PBS PBS
+        {
+            get { return PBSFileHelper.Get().PBS; }
+        }
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        public static bool Save()
+        {
+            return PBSFileHelper.Save();
+        }
+
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/PBSParas.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/PBSParas.cs
new file mode 100644
index 0000000..e946b49
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/PBSParas.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    internal class PBSParas
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public Paras_PBS PBS { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/Paras_PBS.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/Paras_PBS.cs
new file mode 100644
index 0000000..2d3b4e2
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/00-core/Paras_PBS.cs
@@ -0,0 +1,31 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS
+    {
+
+        /// <summary>
+        /// 鏁版嵁搴�
+        /// </summary>
+        public Paras_PBS_DataBase DataBase { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鏂囦欢澶�
+        /// </summary>
+        public string DataFolder { get; set; }
+
+        /// <summary>
+        /// CAL
+        /// </summary>
+        public Paras_PBS_CAL CAL { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢
+        /// </summary>
+        public Paras_PBS_File File { get; set; }
+
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase.cs
new file mode 100644
index 0000000..f41804a
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase.cs
@@ -0,0 +1,31 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_DataBase
+    {
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public string DbType { get; set; }
+
+        /// <summary>
+        /// 宸ュ巶
+        /// </summary>
+        public Paras_PBS_DataBase_Factory Factory { get; set; }
+
+        /// <summary>
+        /// PostgreSql
+        /// </summary>
+        public Paras_PBS_DataBase_PostgreSql PostgreSql { get; set; }
+
+        /// <summary>
+        /// SQLite
+        /// </summary>
+        public Paras_PBS_DataBase_SQLite SQLite { get; set; }
+
+
+    }
+
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_Factory.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_Factory.cs
new file mode 100644
index 0000000..3e47cd5
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_Factory.cs
@@ -0,0 +1,18 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_DataBase_Factory
+    {
+        /// <summary>
+        /// 鏄惁寮�鍚紦瀛�
+        /// </summary>
+        public bool EnableCache { get; set; }
+
+        /// <summary>
+        /// 缂撳瓨鏃堕棿锛堢锛�
+        /// </summary>
+        public int CacheTime { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_PostgreSql.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_PostgreSql.cs
new file mode 100644
index 0000000..5f88ff5
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_PostgreSql.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_DataBase_PostgreSql
+    {
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string ConnectString { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_SQLite.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_SQLite.cs
new file mode 100644
index 0000000..7d8c33f
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/01-database/Paras_PBS_DataBase_SQLite.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_DataBase_SQLite
+    {
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string ConnectString { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL.cs
new file mode 100644
index 0000000..f6d8ca4
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL.cs
@@ -0,0 +1,27 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class Paras_PBS_CAL
+    {
+        /// <summary>
+        /// CAL绫诲瀷
+        /// </summary>
+        public string CALType
+        {
+            get;
+            set;
+        }
+
+        /// <summary>
+        /// HttpClient
+        /// </summary>
+        public Paras_PBS_CAL_HttpClient HttpClient { get; set; }
+
+        /// <summary>
+        /// LocalClient
+        /// </summary>
+        public Paras_PBS_CAL_LocalClient LocalClient { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_HttpClient.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_HttpClient.cs
new file mode 100644
index 0000000..88d38cd
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_HttpClient.cs
@@ -0,0 +1,13 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_CAL_HttpClient
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string HttpUrl { get; set; }
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_LocalClient.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_LocalClient.cs
new file mode 100644
index 0000000..e1ee810
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/02-cal/Paras_PBS_CAL_LocalClient.cs
@@ -0,0 +1,10 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Paras_PBS_CAL_LocalClient
+    {
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/03-settings/01-paras/03-file/Paras_PBS_File.cs b/Service/HStation.Service.PBS.Core/03-settings/01-paras/03-file/Paras_PBS_File.cs
new file mode 100644
index 0000000..d3c8e1f
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/03-settings/01-paras/03-file/Paras_PBS_File.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.Settings
+{
+    /// <summary>
+    /// 鏂囦欢
+    /// </summary>
+    public class Paras_PBS_File
+    {
+        /// <summary>
+        /// 鍚庣紑
+        /// </summary>
+        public string Suffix { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; }
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/05-service/00-core/01-dal/DALCreateHelper.cs b/Service/HStation.Service.PBS.Core/05-service/00-core/01-dal/DALCreateHelper.cs
new file mode 100644
index 0000000..aa8587f
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/05-service/00-core/01-dal/DALCreateHelper.cs
@@ -0,0 +1,23 @@
+锘縩amespace HStation.Service.PBS
+{
+    /// <summary>
+    /// DAL杈呭姪绫�
+    /// </summary>
+    internal class DALCreateHelper
+    {
+
+        /// <summary>
+        /// 鍒涘缓DAL
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T CreateDAL<T>()
+        {
+            var dbType = Settings.PBSParasHelper.PBS.DataBase.DbType;
+            var enableCache = Settings.PBSParasHelper.PBS.DataBase.Factory.EnableCache;
+            var cacheTime = Settings.PBSParasHelper.PBS.DataBase.Factory.CacheTime;
+            return Yw.DALFactory.CreateDAL3<T>(dbType, enableCache, cacheTime);
+        }
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/05-service/00-core/02-cache/CacheHelper.cs b/Service/HStation.Service.PBS.Core/05-service/00-core/02-cache/CacheHelper.cs
new file mode 100644
index 0000000..1af42f1
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/05-service/00-core/02-cache/CacheHelper.cs
@@ -0,0 +1,34 @@
+锘縩amespace HStation.Service.PBS
+{
+    /// <summary>
+    /// 缂撳瓨杈呭姪绫�
+    /// </summary>
+    internal class CacheHelper
+    {
+        private const string _cacheKeyPrefix = "PBS";//缂撳瓨閿墠缂�
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨閿�
+        /// </summary>
+        public static string GetCacheKey(string keyContent)
+        {
+            return MemoryCacheKeyHelper.GetKey(MemoryCacheKey.ServiceLevel, MemoryCacheKey.Module, $"*{_cacheKeyPrefix}*_{keyContent}");
+        }
+
+        /// <summary>
+        /// 娓呴櫎鍏ㄩ儴
+        /// </summary>
+        public static void Clear()
+        {
+            Yw.MemoryCacheHelper.Remove((key) =>
+            {
+                var prefix = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.ServiceLevel, MemoryCacheKey.Module, $"*{_cacheKeyPrefix}*");
+                return key.StartsWith(prefix);
+            });
+        }
+
+
+
+
+    }
+}
diff --git a/Service/HStation.Service.PBS.Core/05-service/00-core/03-helper/DbFirstHelper.cs b/Service/HStation.Service.PBS.Core/05-service/00-core/03-helper/DbFirstHelper.cs
new file mode 100644
index 0000000..9c10dad
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/05-service/00-core/03-helper/DbFirstHelper.cs
@@ -0,0 +1,69 @@
+锘縩amespace HStation.Service.PBS
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class DbFirstHelper
+    {
+        /// <summary>
+        /// 鍒濆鍖�
+        /// </summary>
+        public static bool Initial(out string msg)
+        {
+            msg = string.Empty;
+            try
+            {
+                var connectConfig = HStation.PBS.ConfigHelper.DefaultConnectionConfig;
+                if (connectConfig == null)
+                {
+                    msg = "杩炴帴閰嶇疆鍒濆鍖栧け璐�";
+                    return false;
+                }
+
+                connectConfig.ConfigureExternalServices = new ConfigureExternalServices()
+                {
+                    EntityService = (property, column) =>
+                    {
+                        //闄や富閿鍏朵粬鍒楅兘鍙┖
+                        if (!column.IsPrimarykey)
+                        {
+                            column.IsNullable = true;
+                        }
+                        if (column.DataType == StaticConfig.CodeFirst_BigString)
+                        {
+                            if (PBSParasHelper.PBS.DataBase.DbType == HStation.PBS.DbType.PostgreSql)
+                            {
+                                column.DataType = "character varying";
+                            }
+                        }
+                    }
+                };
+
+                var typeList = new List<Type>()
+                {
+                   
+                 };
+
+                using (var db = new SqlSugarClient(connectConfig))
+                {
+                    //璁剧疆瀛楃涓查粯璁ら暱搴�
+                    //db.CodeFirst.SetStringDefaultLength(250);
+                    //db.CodeFirst.SetStringDefaultLength(int.MaxValue);
+                    //寤哄簱锛氬鏋滀笉瀛樺湪鍒涘缓鏁版嵁搴撳瓨鍦ㄤ笉浼氶噸澶嶅垱寤� createdb;娉ㄦ剰 锛歄racle鍜屼釜鍒浗浜у簱闇�涓嶆敮鎸佽鏂规硶锛岄渶瑕佹墜鍔ㄥ缓搴�
+                    db.DbMaintenance.CreateDatabase();
+                    db.CodeFirst.InitTables
+                        (
+                           typeList.ToArray()
+                        );
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                msg = ex.Message;
+                return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Service/HStation.Service.PBS.Core/GlobalUsings.cs b/Service/HStation.Service.PBS.Core/GlobalUsings.cs
new file mode 100644
index 0000000..860df22
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/GlobalUsings.cs
@@ -0,0 +1,11 @@
+锘縢lobal using AutoMapper;
+global using HStation.Service.PBS;
+global using HStation.Settings;
+global using HStation.PBS;
+global using SqlSugar;
+global using System.Text;
+global using Yw;
+global using Yw.Service;
+global using Yw.Untity;
+global using System.ComponentModel.DataAnnotations;
+global using System.ComponentModel;
\ No newline at end of file
diff --git a/Service/HStation.Service.PBS.Core/HStation.Service.PBS.Core.csproj b/Service/HStation.Service.PBS.Core/HStation.Service.PBS.Core.csproj
new file mode 100644
index 0000000..bd5abf1
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/HStation.Service.PBS.Core.csproj
@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="05-service\00-core\04-extensions\**" />
+    <EmbeddedResource Remove="05-service\00-core\04-extensions\**" />
+    <None Remove="05-service\00-core\04-extensions\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Yw.Service.Basic.Core" Version="3.3.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="01-entity\" />
+    <Folder Include="02-model\" />
+    <Folder Include="04-dal\" />
+  </ItemGroup>
+
+</Project>
diff --git a/Service/HStation.Service.PBS.Core/paras_pbs_settings.json b/Service/HStation.Service.PBS.Core/paras_pbs_settings.json
new file mode 100644
index 0000000..cd179b8
--- /dev/null
+++ b/Service/HStation.Service.PBS.Core/paras_pbs_settings.json
@@ -0,0 +1,35 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+
+
+  "PBS": {
+    "DataBase": {
+      "DbType": "PostgreSql", //PostgreSql/SQLite
+      "Factory": {
+        "EnableCache": true,
+        "CacheTime": 10
+      },
+      "PostgreSql": {
+        "ConnectString": "PORT=5432;DATABASE=hstation_PBS;HOST=localhost;PASSWORD=123456;USER ID=postgres;"
+      },
+      "SQLite": {
+        "ConnectString": "Data Source=hstation_PBS.db;"
+      }
+    },
+    "DataFolder": "PBS",
+    "CAL": {
+      "CALType": "HttpClient", //HttpClient/LocalClient
+      "HttpClient": {
+        "HttpUrl": ""
+      },
+      "LocalClient": {
+      }
+    },
+    "File": {
+      "Suffix": ".ywrvt",
+      "Password": ""
+    }
+  }
+
+
+}
diff --git a/Vmo/HStation.Vmo.Equivalent.Core/GlobalUsings.cs b/Vmo/HStation.Vmo.Equivalent.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/Vmo/HStation.Vmo.Equivalent.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/Vmo/HStation.Vmo.Equivalent.Core/HStation.Vmo.Equivalent.Core.csproj b/Vmo/HStation.Vmo.Equivalent.Core/HStation.Vmo.Equivalent.Core.csproj
new file mode 100644
index 0000000..a549ced
--- /dev/null
+++ b/Vmo/HStation.Vmo.Equivalent.Core/HStation.Vmo.Equivalent.Core.csproj
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Dto\HStation.Dto.Equivalent.Core\HStation.Dto.Equivalent.Core.csproj" />
+    <ProjectReference Include="..\..\Dto\HStation.Dto.Xhs.Core\HStation.Dto.Xhs.Core.csproj" />
+    <ProjectReference Include="..\HStation.Vmo.Core\HStation.Vmo.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Vmo/HStation.Vmo.PBS.Core/GlobalUsings.cs b/Vmo/HStation.Vmo.PBS.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/Vmo/HStation.Vmo.PBS.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/Vmo/HStation.Vmo.PBS.Core/HStation.Vmo.PBS.Core.csproj b/Vmo/HStation.Vmo.PBS.Core/HStation.Vmo.PBS.Core.csproj
new file mode 100644
index 0000000..b215e54
--- /dev/null
+++ b/Vmo/HStation.Vmo.PBS.Core/HStation.Vmo.PBS.Core.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Dto\HStation.Dto.PBS.Core\HStation.Dto.PBS.Core.csproj" />
+    <ProjectReference Include="..\HStation.Vmo.Core\HStation.Vmo.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/App.config b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/App.config
new file mode 100644
index 0000000..49cc43e
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/App.config
@@ -0,0 +1,3 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+</configuration>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/GlobalUsings.cs b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.csproj
new file mode 100644
index 0000000..72003b8
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.csproj
@@ -0,0 +1,54 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>disable</Nullable>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="03-ViewModel\**" />
+    <Compile Remove="04-HomePageMainPanel\**" />
+    <Compile Remove="Resources\**" />
+    <EmbeddedResource Remove="03-ViewModel\**" />
+    <EmbeddedResource Remove="04-HomePageMainPanel\**" />
+    <EmbeddedResource Remove="Resources\**" />
+    <None Remove="03-ViewModel\**" />
+    <None Remove="04-HomePageMainPanel\**" />
+    <None Remove="Resources\**" />
+    <Page Remove="03-ViewModel\**" />
+    <Page Remove="04-HomePageMainPanel\**" />
+    <Page Remove="Resources\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\BLL\HStation.BLL.Equivalent.Core\HStation.BLL.Equivalent.Core.csproj" />
+    <ProjectReference Include="..\Hstation.WinFrmUI.Core\HStation.WinFrmUI.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Properties\Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Update="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Properties\DataSources\" />
+    <Folder Include="Resources\" />
+  </ItemGroup>
+
+</Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.user b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.user
new file mode 100644
index 0000000..4c009e1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/HStation.WinFrmUI.Equivalent.Core.user
@@ -0,0 +1,254 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Compile Update="01-home\00-core\HomeXhsProjectPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\01-project\HomeXhsProjectTreeListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\02-map\MapViewProjectListContainer.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\03-property\HomeXhsProjectPropertyCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\00-core\ImportXhsProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\01-info\cloud\SelectXhsProjectTransferFileDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\01-info\InputXhsProjectInfoWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\02-map\SetXhsProjectMapLocationWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\03-generate\GenerateXhsProjectWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\04-completed\ImportXhsProjectCompletedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\ProjectResultShowPanel.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationAnalysisCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationBimfaceInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationHydroInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationProjectInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\02-bimface\ViewXhsProjectBimfacePage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\03-mgr\XhsProjectMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\00-core\ImportXhsProjectFileDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\01-FileChoice\SelectXhsProjectFileModelFileWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\02-GeneralProject\GenerateXhsProjectFileWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\03-ImportCompleted\ImportXhsProjectFileCompletedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\04-ProjectResultShowPanel\ProjectFileResultShowPanel.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\AddProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\EditProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationBimfaceInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationHydroInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationInfoPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationProjectInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-property\XhsProjectSimulationPropertyCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\02-bimface\XhsProjectSimulationBimfaceCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\03-q3d\XhsProjectSimulationQ3dCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\01-add\AddXhsSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\99-ctrl\XhsParterListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\AddXhsProjectSimulationSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\XhsProjectSimulationSchemeMgrCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\05-function\XhsProjectSimulationFunctionMgrCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\00-core\XhsProjectSimulationMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpSingleMatchingCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpSingleMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\XhsPumpMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveChartShowDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveSingleMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\XhsProjectSimulationValveMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\01-pipesinglematching\PipeSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\01-pipesinglematching\PipeSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\XhsProjectSimulationPipeMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\01-elbowsinglematching\ElbowSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\01-elbowsinglematching\ElbowSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\XhsProjectSimulationElbowsMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\01-threelinksinglematching\ThreeLinkSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\01-threelinksinglematching\ThreeLinkSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\XhsProjectSimulationThreelinkMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\01-threelinksinglematching\FourLinkSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\01-threelinksinglematching\FourLinkSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\XhsProjectSimulationFourlinkMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\02-check\XhsProjectSimulationHydroCheckResultCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixDlg1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\01-waterbox\SetHydroWaterboxCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\02-pump\SetHydroPumpCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\03-nozzle\SetHydroNozzleCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\99-failed\HydroCalcuFailedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\00-core\XhsProjectSimulationUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\01-pump\XhsProjectSimulationPumpUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\02-valve\XhsProjectSimulationValveUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\03-pipe\XhsProjectSimulationPipeUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\04-elbow\XhsProjectSimulationElbowUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\05-threelink\XhsProjectSimulationThreelinkUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\06-fourlink\XhsProjectSimulationFourlinkUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\07-bulkset\00-core\XhsProjectSimulationBulksetCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\07-bulkset\02-pump\XhsProjectSimulationPumpBulkSetCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\XhsProjectSimulationCorePage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\07-l3d\XhsProjectSimulationL3dCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\XhsProjectSimulationMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\01-Prop\PumpPropViewCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\02-analy\SinglePumpAnalyDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="04-pump\02-analy\SinglePumpAnalyInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\PumpFullInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\PumpFullInfoViewDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="04-pump\SinglePumpInfoViewDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..5b962e3
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HStation.WinFrmUI.PBS.Equivalent.Core.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+    /// </summary>
+    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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 (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HStation.WinFrmUI.PBS.Equivalent.Core.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/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.resx b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Properties/Resources.resx
@@ -0,0 +1,120 @@
+锘�<?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>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Min32.png b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Min32.png
new file mode 100644
index 0000000..87401a1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Min32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Pump32.png b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Pump32.png
new file mode 100644
index 0000000..c1f75f9
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/Pump32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/SizeMax32.png b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/SizeMax32.png
new file mode 100644
index 0000000..704a114
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Equivalent.Core/Resources/SizeMax32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/App.config b/WinFrmUI/HStation.WinFrmUI.PBS.Core/App.config
new file mode 100644
index 0000000..49cc43e
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/App.config
@@ -0,0 +1,3 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+</configuration>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/GlobalUsings.cs b/WinFrmUI/HStation.WinFrmUI.PBS.Core/GlobalUsings.cs
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/GlobalUsings.cs
@@ -0,0 +1 @@
+锘�
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj
new file mode 100644
index 0000000..864360f
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj
@@ -0,0 +1,64 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>disable</Nullable>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="03-ViewModel\**" />
+    <Compile Remove="04-HomePageMainPanel\**" />
+    <Compile Remove="Resources\**" />
+    <EmbeddedResource Remove="03-ViewModel\**" />
+    <EmbeddedResource Remove="04-HomePageMainPanel\**" />
+    <EmbeddedResource Remove="Resources\**" />
+    <None Remove="03-ViewModel\**" />
+    <None Remove="04-HomePageMainPanel\**" />
+    <None Remove="Resources\**" />
+    <Page Remove="03-ViewModel\**" />
+    <Page Remove="04-HomePageMainPanel\**" />
+    <Page Remove="Resources\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Include="Resources\Cancel.svg" />
+    <None Include="Resources\Close32.png" />
+    <None Include="Resources\Folder.svg" />
+    <None Include="Resources\IncomingCall.svg" />
+    <None Include="Resources\MapLayers.svg" />
+    <None Include="Resources\Remove.svg" />
+    <None Include="Resources\Square32.png" />
+    <None Include="Resources\SizeNormal32.png" />
+    <None Include="Resources\SizeMin32.png" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Properties\Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Update="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Properties\DataSources\" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\BLL\HStation.BLL.PBS.Core\HStation.BLL.PBS.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj.user
new file mode 100644
index 0000000..b5309f2
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.csproj.user
@@ -0,0 +1,5 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+  <ItemGroup />
+</Project>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.user b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.user
new file mode 100644
index 0000000..4c009e1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/HStation.WinFrmUI.PBS.Core.user
@@ -0,0 +1,254 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Compile Update="01-home\00-core\HomeXhsProjectPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\01-project\HomeXhsProjectTreeListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\02-map\MapViewProjectListContainer.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="01-home\03-property\HomeXhsProjectPropertyCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\00-core\ImportXhsProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\01-info\cloud\SelectXhsProjectTransferFileDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\01-info\InputXhsProjectInfoWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\02-map\SetXhsProjectMapLocationWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\03-generate\GenerateXhsProjectWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\04-completed\ImportXhsProjectCompletedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\ProjectResultShowPanel.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationAnalysisCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationBimfaceInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationHydroInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\01-import\05-completed\XhsProjectSimulationProjectInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\02-bimface\ViewXhsProjectBimfacePage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\03-mgr\XhsProjectMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\00-core\ImportXhsProjectFileDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\01-FileChoice\SelectXhsProjectFileModelFileWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\02-GeneralProject\GenerateXhsProjectFileWizardPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\03-ImportCompleted\ImportXhsProjectFileCompletedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\04-ProjectResultShowPanel\ProjectFileResultShowPanel.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\AddProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="02-project\04-dlg\EditProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationBimfaceInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationHydroInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationInfoPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-info\XhsProjectSimulationProjectInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\01-property\XhsProjectSimulationPropertyCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\02-bimface\XhsProjectSimulationBimfaceCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\03-q3d\XhsProjectSimulationQ3dCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\01-add\AddXhsSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\99-ctrl\XhsParterListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\AddXhsProjectSimulationSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\04-scheme\XhsProjectSimulationSchemeMgrCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\05-function\XhsProjectSimulationFunctionMgrCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\00-core\XhsProjectSimulationMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpSingleMatchingCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpSingleMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\02-pump\XhsPumpMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveChartShowDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveSingleMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\01-valvesinglematching\ValveSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\03-valve\XhsProjectSimulationValveMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\01-pipesinglematching\PipeSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\01-pipesinglematching\PipeSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\04-pipe\XhsProjectSimulationPipeMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\01-elbowsinglematching\ElbowSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\01-elbowsinglematching\ElbowSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\05-elbows\XhsProjectSimulationElbowsMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\01-threelinksinglematching\ThreeLinkSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\01-threelinksinglematching\ThreeLinkSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\06-threelink\XhsProjectSimulationThreelinkMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\01-threelinksinglematching\FourLinkSingleMatchingForm.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\01-threelinksinglematching\FourLinkSingMatchingDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\01-matching\07-fourlink\XhsProjectSimulationFourlinkMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\02-check\XhsProjectSimulationHydroCheckResultCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\00-core\SetHydroCalcuPrefixDlg1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\01-waterbox\SetHydroWaterboxCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\02-pump\SetHydroPumpCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\01-prefix\03-nozzle\SetHydroNozzleCalcuPrefixListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\03-calcu\99-failed\HydroCalcuFailedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\00-core\XhsProjectSimulationUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\01-pump\XhsProjectSimulationPumpUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\02-valve\XhsProjectSimulationValveUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\03-pipe\XhsProjectSimulationPipeUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\04-elbow\XhsProjectSimulationElbowUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\05-threelink\XhsProjectSimulationThreelinkUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\04-unmatching\06-fourlink\XhsProjectSimulationFourlinkUnMatchingListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\07-bulkset\00-core\XhsProjectSimulationBulksetCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\07-bulkset\02-pump\XhsProjectSimulationPumpBulkSetCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\06-simulation\XhsProjectSimulationCorePage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\07-l3d\XhsProjectSimulationL3dCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-simulation\XhsProjectSimulationMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\01-Prop\PumpPropViewCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\02-analy\SinglePumpAnalyDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="04-pump\02-analy\SinglePumpAnalyInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\PumpFullInfoCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="04-pump\PumpFullInfoViewDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="04-pump\SinglePumpInfoViewDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.Designer.cs b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..7553532
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.Designer.cs
@@ -0,0 +1,153 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HStation.WinFrmUI.Xhs.Core.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+    /// </summary>
+    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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 (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HStation.WinFrmUI.Xhs.Core.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;
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage Cancel {
+            get {
+                object obj = ResourceManager.GetObject("Cancel", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap Close32 {
+            get {
+                object obj = ResourceManager.GetObject("Close32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage Folder {
+            get {
+                object obj = ResourceManager.GetObject("Folder", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage IncomingCall {
+            get {
+                object obj = ResourceManager.GetObject("IncomingCall", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage MapLayers {
+            get {
+                object obj = ResourceManager.GetObject("MapLayers", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage Remove {
+            get {
+                object obj = ResourceManager.GetObject("Remove", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap SizeMin32 {
+            get {
+                object obj = ResourceManager.GetObject("SizeMin32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap SizeNormal32 {
+            get {
+                object obj = ResourceManager.GetObject("SizeNormal32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap Square32 {
+            get {
+                object obj = ResourceManager.GetObject("Square32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.resx b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.resx
new file mode 100644
index 0000000..385eb81
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Properties/Resources.resx
@@ -0,0 +1,148 @@
+锘�<?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>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="SizeMin32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SizeMin32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SizeNormal32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SizeNormal32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Square32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Square32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Close32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Close32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Cancel" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Cancel.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="Remove" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Remove.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="Folder" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Folder.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="MapLayers" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\MapLayers.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="IncomingCall" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\IncomingCall.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Cancel.svg b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Cancel.svg
new file mode 100644
index 0000000..684792f
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Cancel.svg
@@ -0,0 +1,12 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+		.Black
+		{
+			fill:#727272; 
+			font-family:'dx-font-icons'; 
+			font-size:32px;
+		}
+	</style>
+  <text x="0px" y="32px" class="Black">顪�</text>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Close32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Close32.png
new file mode 100644
index 0000000..3959089
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Close32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Folder.svg b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Folder.svg
new file mode 100644
index 0000000..60f871b
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Folder.svg
@@ -0,0 +1,12 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+		.Black
+		{
+			fill:#727272; 
+			font-family:'dx-font-icons'; 
+			font-size:32px;
+		}
+	</style>
+  <text x="0px" y="32px" class="Black">睥�</text>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/IncomingCall.svg b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/IncomingCall.svg
new file mode 100644
index 0000000..e025149
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/IncomingCall.svg
@@ -0,0 +1,12 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+		.Black
+		{
+			fill:#727272; 
+			font-family:'dx-font-icons'; 
+			font-size:32px;
+		}
+	</style>
+  <text x="0px" y="32px" class="Black">顫�</text>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/MapLayers.svg b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/MapLayers.svg
new file mode 100644
index 0000000..b9c256f
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/MapLayers.svg
@@ -0,0 +1,12 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+		.Black
+		{
+			fill:#727272; 
+			font-family:'dx-font-icons'; 
+			font-size:32px;
+		}
+	</style>
+  <text x="0px" y="32px" class="Black">顮�</text>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Min32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Min32.png
new file mode 100644
index 0000000..87401a1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Min32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Pump32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Pump32.png
new file mode 100644
index 0000000..c1f75f9
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Pump32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Remove.svg b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Remove.svg
new file mode 100644
index 0000000..a0aca05
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Remove.svg
@@ -0,0 +1,12 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+		.Black
+		{
+			fill:#727272; 
+			font-family:'dx-font-icons'; 
+			font-size:32px;
+		}
+	</style>
+  <text x="0px" y="32px" class="Black">顪�</text>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMax32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMax32.png
new file mode 100644
index 0000000..704a114
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMax32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMin32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMin32.png
new file mode 100644
index 0000000..b30a592
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeMin32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeNormal32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeNormal32.png
new file mode 100644
index 0000000..9783e81
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/SizeNormal32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Square32.png b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Square32.png
new file mode 100644
index 0000000..1bd020f
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.PBS.Core/Resources/Square32.png
Binary files differ
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
index 282d9e2..cec1ef0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
@@ -38,6 +38,7 @@
                     };
                 }
             }
+
         }
 
 
@@ -205,8 +206,7 @@
         #endregion
 
         #region Menu
-
-    
+         
         #region FastShowHidden
 
         //涓�閿樉闅�

--
Gitblit v1.9.3