From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs |  468 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 263 insertions(+), 205 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
index c87c383..6ad1f05 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -1,24 +1,24 @@
-锘縰sing Shared.Common;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using ZigBee.Device;
-
-namespace Shared.Phone.UserCenter
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter
 {
-  /// <summary>
-  /// 璁惧灞炴�х殑閫昏緫绫�
-  /// </summary>
+  /// <summary>
+  /// 璁惧灞炴�х殑閫昏緫绫�
+  /// </summary>
   public class HdlDeviceAttributeLogic
   {
-    #region 鈻� 鍙橀噺澹版槑___________________________
+    #region 鈻� 鍙橀噺澹版槑___________________________
 
-    /// <summary>
-    /// 灞炴�х殑閫昏緫
+    /// <summary>
+    /// 灞炴�х殑閫昏緫
     /// </summary>
     private static HdlDeviceAttributeLogic m_Current = null;
-    /// <summary>
-    /// 灞炴�х殑閫昏緫
+    /// <summary>
+    /// 灞炴�х殑閫昏緫
     /// </summary>
     public static HdlDeviceAttributeLogic Current
     {
@@ -36,18 +36,18 @@
       }
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍐欏叆璁惧灞炴�______________________
+    #region 鈻� 鍐欏叆璁惧灞炴�______________________
 
-    /// <summary>
-    /// 鑾峰彇鏇存敼璁惧绉佹湁灞炴�х殑鍛戒护
-    /// </summary>
-    /// <param name="clusterId"></param>
-    /// <param name="attributeId"></param>
-    /// <param name="attributeDataType"></param>
-    /// <param name="attributeData"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鏇存敼璁惧绉佹湁灞炴�х殑鍛戒护
+    /// </summary>
+    /// <param name="clusterId"></param>
+    /// <param name="attributeId"></param>
+    /// <param name="attributeDataType"></param>
+    /// <param name="attributeData"></param>
+    /// <returns></returns>
     public string GetWriteDeviceAttributeText(string DeviceAddr, int DeviceEpoint, int clusterId, int attributeId, int attributeDataType, object attributeData)
     {
       var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", clusterId }, { "Command", 120 } };
@@ -65,7 +65,7 @@
       return jObject.ToString();
     }
 
-    #endregion
+    #endregion
 
     #region 鈻� 绌鸿皟_______________________________
 
@@ -88,86 +88,86 @@
       { IsBackground = true }.Start();
     }
 
-    /// <summary>
-    /// SendThermostatStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    /// <summary>
+    /// SendThermostatStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     public void SendThermostatStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.Thermostat },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Thermostat },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.LocalTemperature}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CoolingSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.HeatingSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.AutoSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.SystemMode}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.AcModeSupport}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CleanStatu}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.LocalTemperature}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CoolingSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.HeatingSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.AutoSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.SystemMode}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.AcModeSupport}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CleanStatu}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
       device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
     }
 
-    /// <summary>
-    /// SendFanStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    /// <summary>
+    /// SendFanStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     private void SendFanStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.FanControl },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.FanControl },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.FanMode}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.FanSwing}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanMode}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanSwing}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
@@ -176,11 +176,11 @@
 
     #endregion
 
-    #region 鈻� 鏂伴_______________________________
-    /// <summary>
-    /// SendFreshAirStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    #region 鈻� 鏂伴_______________________________
+    /// <summary>
+    /// SendFreshAirStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     public void SendFreshAirStatuComand(CommonDevice device)
     {
       if (device == null)
@@ -195,29 +195,29 @@
       { IsBackground = true }.Start();
     }
 
-    /// <summary>
-    /// SendFanStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    /// <summary>
+    /// SendFanStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     private void SendFreshAirFanStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.FanControl },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.FanControl },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.FanMode}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanMode}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
@@ -226,11 +226,11 @@
 
     #endregion
 
-    #region 鈻� PM2.5_______________________________
-    /// <summary>
-    /// SendPmSensorComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    #region 鈻� PM2.5_______________________________
+    /// <summary>
+    /// SendPmSensorComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     public void SendPmSensorComand(CommonDevice device)
     {
       if (device == null)
@@ -239,7 +239,7 @@
       }
       new System.Threading.Thread(() =>
       {
-        SendPmSensorStatuComand(device);
+        SendPm2P5Comand(device);
         //璇诲彇Pm2.5浼犳劅鍣ㄧ殑娓╁害鏁版嵁
         HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(device);
         //璇诲彇Pm2.5浼犳劅鍣ㄧ殑婀垮害鏁版嵁
@@ -249,46 +249,104 @@
       { IsBackground = true }.Start();
     }
 
-    /// <summary>
-    /// SendFanStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
-    private void SendPmSensorStatuComand(CommonDevice device)
+    /// <summary>
+    /// SendFanStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
+    private void SendPm2P5Comand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.PmTwoPointFiveMeasurement  },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.PmTwoPointFiveMeasurement  },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
       device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鏅捐。鏋禵______________________________
-    /// <summary>
-    /// SendAirerComand
+    #region 鈻� 绌烘皵璐ㄩ噺浼犳劅鍣╛______________________________
+    /// <summary>
+    /// SendAirQualitySensorComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
+    public void SendAirQualitySensorComand(CommonDevice device)
+    {
+      if (device == null)
+      {
+        return;
+      }
+      new System.Threading.Thread(() =>
+      {
+        SendSwitchStatuComand(device);
+        //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑PM2.5鏁版嵁
+        SendPm2P5Comand(device);
+        //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑CO2鏁版嵁
+        SendCO2Comand(device);
+        //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑娓╁害鏁版嵁
+        HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(device);
+        //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑婀垮害鏁版嵁
+        HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(device);
+        System.Threading.Thread.Sleep(300);
+      })
+      { IsBackground = true }.Start();
+    }
+
+    /// <summary>
+    /// SendCO2Comand
+    /// </summary>
+    /// <param name="device">璁惧</param>
+    private void SendCO2Comand(CommonDevice device)
+    {
+      if (device == null)
+      {
+        return;
+      }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.CO2},
+                { "Command", 108 }
+            };
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
+            };
+      var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+      jObject.Add("Data", data);
+      device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+    }
+
+    #endregion
+
+    #region 鈻� 鏅捐。鏋禵______________________________
+    /// <summary>
+    /// SendAirerComand
     ///鍥炶矾2:璇诲彇鐓ф槑寮�鍏崇姸鎬�
     ///鍥炶矾3:璇诲彇椋庡共寮�鍏崇姸鎬佸拰鏃堕棿鍊� 
     ///鍥炶矾4:璇诲彇鐑樺共寮�鍏崇姸鎬佸拰鏃堕棿鍊�
     ///鍥炶矾5:璇诲彇娑堟瘨寮�鍏崇姸鎬佸拰鏃堕棿鍊�
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    /// </summary>
+    /// <param name="device">璁惧</param>
     /// <param name="ctrlEpoint">鎺у埗绔偣</param>
     public void SendAirerComand(CommonDevice device, int ctrlEpoint)
     {
@@ -304,33 +362,33 @@
       { IsBackground = true }.Start();
     }
 
-    /// <summary>
-    /// SendAirerStatuComand
-    /// </summary>
-    /// <param name="device">璁惧</param>
+    /// <summary>
+    /// SendAirerStatuComand
+    /// </summary>
+    /// <param name="device">璁惧</param>
     private void SendAirerStatuComand(CommonDevice device, int ctrlEpoint = 1)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", ctrlEpoint },
-                { "Cluster_ID", (int)Cluster_ID.Switch},
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", ctrlEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Switch},
+                { "Command", 108 }
             };
       Newtonsoft.Json.Linq.JArray attriBute = new Newtonsoft.Json.Linq.JArray();
 
       //鏅捐。鏋剁殑鏅捐。鏋剁殑锛堢儤骞诧紝椋庡共锛屾秷姣�,鐓ф槑鐘舵�佽鍙栵級
-      attriBute = new Newtonsoft.Json.Linq.JArray
-             {
-                new Newtonsoft.Json.Linq.JObject
-               {
-                    //鏅捐。鏋剁殑鐓ф槑寮�鍏崇姸鎬�
-                 { "AttriButeId", (int)AttriButeId.Switch}
-               }
+      attriBute = new Newtonsoft.Json.Linq.JArray
+             {
+                new Newtonsoft.Json.Linq.JObject
+               {
+                    //鏅捐。鏋剁殑鐓ф槑寮�鍏崇姸鎬�
+                 { "AttriButeId", (int)AttriButeId.Switch}
+               }
              };
 
       //if (device.DeviceEpoint != 2)
@@ -359,32 +417,32 @@
       device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
     }
 
-    #endregion
+    #endregion
 
     #region 鈻� 绐楀笜_______________________________
-    /// <summary>
-    /// 鍙戦�佽幏鍙栫獥甯樼姸鎬佸懡浠�
-    /// </summary>
-    /// <param name="device">绐楀笜</param>
+    /// <summary>
+    /// 鍙戦�佽幏鍙栫獥甯樼姸鎬佸懡浠�
+    /// </summary>
+    /// <param name="device">绐楀笜</param>
     public void SendCurtainStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.WindowCovering },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.WindowCovering },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CurrentPositionLiftPercentage}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CurrentPositionLiftPercentage}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
@@ -423,58 +481,58 @@
       { IsBackground = true }.Start();
     }
 
-    /// <summary>
-    /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
-    /// </summary>
-    /// <param name="device">绐楀笜</param>
+    /// <summary>
+    /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
+    /// </summary>
+    /// <param name="device">绐楀笜</param>
     private void SendSwitchStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.Switch },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Switch },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.Switch}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.Switch}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
       device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
     }
 
-    /// <summary>
-    /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
-    /// </summary>
-    /// <param name="device">绐楀笜</param>
+    /// <summary>
+    /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
+    /// </summary>
+    /// <param name="device">绐楀笜</param>
     public void SendLevelStatuComand(CommonDevice device)
     {
       if (device == null)
       {
         return;
       }
-      var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.LevelControl },
-                { "Command", 108 }
+      var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.LevelControl },
+                { "Command", 108 }
             };
-      var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.LevelControl}
-               }
+      var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.LevelControl}
+               }
             };
       var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
       jObject.Add("Data", data);
@@ -575,6 +633,6 @@
       device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
     }
 
-    #endregion
-  }
-}
+    #endregion
+  }
+}

--
Gitblit v1.8.0