From 25effacc7753e77dce674b924eb28f57ed5e7fd1 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 02 一月 2024 15:42:49 +0800
Subject: [PATCH] 添加TEWin项目工程

---
 TEWin/FrmWin.cs                        |   72 +++
 TEWin/FrmTree.resx                     |  128 ++++++
 TEWin/Resources/log4net4.dll           |    0 
 TEWin/CS/LogOut.cs                     |  129 ++++++
 TEWin/app.config                       |    8 
 TEWin/FrmTree.Designer.cs              |   67 +++
 TEWin/Properties/Settings.Designer.cs  |   26 +
 TEWin/Resources/sample.fly             |    0 
 ExportMap.sln                          |   36 +
 TEWin/FrmTree.cs                       |   68 +++
 TEWin/Program.cs                       |   22 +
 TEWin/Properties/Settings.settings     |    7 
 TEWin/Resources/sample.mpt             |    0 
 TEWin/FrmWin.resx                      |  129 ++++++
 TEWin/FrmWin.Designer.cs               |   68 +++
 TEWin/Properties/AssemblyInfo.cs       |   36 +
 TEWin/Properties/Resources.Designer.cs |   63 +++
 TEWin/Resources/Log.config             |   37 +
 TEWin/TEWin.csproj                     |  174 ++++++++
 TEWin/Resources/Newtonsoft.Json.dll    |    0 
 TEWin/Properties/Resources.resx        |  117 +++++
 21 files changed, 1,187 insertions(+), 0 deletions(-)

diff --git a/ExportMap.sln b/ExportMap.sln
index 7a9b5f7..9da58af 100644
--- a/ExportMap.sln
+++ b/ExportMap.sln
@@ -17,14 +17,18 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiangSu", "JiangSu\JiangSu.csproj", "{3A7853AA-2D05-4E64-92D2-6B158B8AD937}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TEWin", "TEWin\TEWin.csproj", "{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
 		Release|Mixed Platforms = Release|Mixed Platforms
 		Release|x64 = Release|x64
+		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -33,90 +37,122 @@
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Debug|x64.ActiveCfg = Debug|x64
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Debug|x64.Build.0 = Debug|x64
+		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|Any CPU.Build.0 = Release|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|x64.ActiveCfg = Release|x64
 		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|x64.Build.0 = Release|x64
+		{53C216F2-AAAB-474C-8A33-9DB69E3670AF}.Release|x86.ActiveCfg = Release|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|x64.ActiveCfg = Debug|x64
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|x64.Build.0 = Debug|x64
+		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|Any CPU.Build.0 = Release|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|x64.ActiveCfg = Release|x64
 		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|x64.Build.0 = Release|x64
+		{49F2AA44-7BF5-46B7-B08F-40AA1455F089}.Release|x86.ActiveCfg = Release|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|x64.ActiveCfg = Debug|x64
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|x64.Build.0 = Debug|x64
+		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|Any CPU.Build.0 = Release|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|x64.ActiveCfg = Release|x64
 		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|x64.Build.0 = Release|x64
+		{95C212E0-D078-4932-9FAB-7A7BFD6657B3}.Release|x86.ActiveCfg = Release|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|x64.ActiveCfg = Debug|x64
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|x64.Build.0 = Debug|x64
+		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|Any CPU.Build.0 = Release|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|x64.ActiveCfg = Release|x64
 		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|x64.Build.0 = Release|x64
+		{1670B5DF-E266-473F-AF55-EA2AC1CFC6E7}.Release|x86.ActiveCfg = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|x64.Build.0 = Debug|Any CPU
+		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|x64.ActiveCfg = Release|Any CPU
 		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|x64.Build.0 = Release|Any CPU
+		{A8E7B821-752F-4604-BAD6-0C8A44008077}.Release|x86.ActiveCfg = Release|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|x64.ActiveCfg = Release|Any CPU
+		{A83A9085-9C26-4940-8671-1D1B3E4453B9}.Release|x86.ActiveCfg = Release|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|x64.ActiveCfg = Release|Any CPU
+		{E22A592A-A8B5-457C-8CC3-8BEEDD89BC83}.Release|x86.ActiveCfg = Release|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|Any CPU.Build.0 = Release|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|x64.ActiveCfg = Release|Any CPU
+		{3A7853AA-2D05-4E64-92D2-6B158B8AD937}.Release|x86.ActiveCfg = Release|Any CPU
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|x64.ActiveCfg = Debug|x64
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|x64.Build.0 = Debug|x64
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|x86.ActiveCfg = Debug|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Debug|x86.Build.0 = Debug|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|Mixed Platforms.Build.0 = Release|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|x64.ActiveCfg = Release|x64
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|x64.Build.0 = Release|x64
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|x86.ActiveCfg = Release|x86
+		{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/TEWin/CS/LogOut.cs b/TEWin/CS/LogOut.cs
new file mode 100644
index 0000000..2e57c78
--- /dev/null
+++ b/TEWin/CS/LogOut.cs
@@ -0,0 +1,129 @@
+锘縰sing System;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace TEWin.CS
+{
+    /// <summary>
+    /// 鏃ュ織杈撳嚭绫�
+    /// </summary>
+    public class LogOut
+    {
+        /// <summary>
+        /// 鏃ュ織
+        /// </summary>
+        protected static readonly log4net.ILog _log;
+
+        /// <summary>
+        /// 闈欐�佹瀯閫犲嚱鏁�
+        /// </summary>
+        static LogOut()
+        {
+            try
+            {
+                _log = log4net.LogManager.GetLogger("log4net");
+
+                //HttpContext.Current.Request.PhysicalApplicationPath
+                //string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\Log.config");
+                string fileName = Path.Combine(Application.StartupPath, "Resources\\Log.config");
+
+                log4net.Config.XmlConfigurator.Configure(new FileInfo(fileName));
+            }
+            catch
+            {
+            }
+        }
+
+        /// <summary>
+        /// 璋冭瘯
+        /// </summary>
+        /// <param name="message">鏃ュ織</param>
+        public static void Debug(string message)
+        {
+            try
+            {
+                if (_log.IsDebugEnabled)
+                {
+                    _log.Debug("璋冭瘯锛�" + message + "\r\n\r\n");
+                }
+            }
+            catch
+            {
+            }
+        }
+
+        /// <summary>
+        /// 淇℃伅
+        /// </summary>
+        /// <param name="message">鏃ュ織</param>
+        public static void Info(string message)
+        {
+            try
+            {
+                if (_log.IsInfoEnabled)
+                {
+                    _log.Info("淇℃伅锛�" + message + "\r\n\r\n");
+                }
+            }
+            catch
+            {
+            }
+        }
+
+        /// <summary>
+        /// 璀﹀憡
+        /// </summary>
+        /// <param name="message">鏃ュ織</param>
+        public static void Warn(string message)
+        {
+            try
+            {
+                if (_log.IsWarnEnabled)
+                {
+                    _log.Warn("璀﹀憡锛�" + message + "\r\n\r\n");
+                }
+            }
+            catch
+            {
+            }
+        }
+
+        /// <summary>
+        /// 閿欒
+        /// </summary>
+        /// <param name="message">鏃ュ織</param>
+        public static void Error(string message)
+        {
+            try
+            {
+                if (_log.IsErrorEnabled)
+                {
+                    _log.Error("閿欒锛�" + message + "\r\n\r\n");
+                }
+            }
+            catch
+            {
+            }
+        }
+
+        /// <summary>
+        /// 鑷村懡
+        /// </summary>
+        /// <param name="message">鏃ュ織</param>
+        public static void Fatal(string message)
+        {
+            try
+            {
+                if (_log.IsFatalEnabled)
+                {
+                    _log.Fatal("鑷村懡锛�" + message + "\r\n\r\n");
+                }
+            }
+            catch
+            {
+            }
+        }
+    }
+}
diff --git a/TEWin/FrmTree.Designer.cs b/TEWin/FrmTree.Designer.cs
new file mode 100644
index 0000000..b1074bf
--- /dev/null
+++ b/TEWin/FrmTree.Designer.cs
@@ -0,0 +1,67 @@
+锘縩amespace TETree
+{
+    partial class FrmTree
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmTree));
+            this.axTETree = new AxTerraExplorerX.AxTEInformationWindow();
+            ((System.ComponentModel.ISupportInitialize)(this.axTETree)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // axTETree
+            // 
+            this.axTETree.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.axTETree.Enabled = true;
+            this.axTETree.Location = new System.Drawing.Point(0, 0);
+            this.axTETree.Margin = new System.Windows.Forms.Padding(2);
+            this.axTETree.Name = "axTETree";
+            this.axTETree.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axTETree.OcxState")));
+            this.axTETree.Size = new System.Drawing.Size(400, 600);
+            this.axTETree.TabIndex = 1;
+            // 
+            // FrmTree
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(400, 600);
+            this.Controls.Add(this.axTETree);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Margin = new System.Windows.Forms.Padding(2);
+            this.Name = "FrmTree";
+            this.Text = "FrmTree";
+            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+            ((System.ComponentModel.ISupportInitialize)(this.axTETree)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private AxTerraExplorerX.AxTEInformationWindow axTETree;
+    }
+}
\ No newline at end of file
diff --git a/TEWin/FrmTree.cs b/TEWin/FrmTree.cs
new file mode 100644
index 0000000..0fe82fd
--- /dev/null
+++ b/TEWin/FrmTree.cs
@@ -0,0 +1,68 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using TerraExplorerX;
+using TEWin.CS;
+
+namespace TETree
+{
+    public partial class FrmTree : Form
+    {
+        public SGWorld74 SG = null;
+
+        public static string StartupPath
+        {
+            get
+            {
+                return System.Windows.Forms.Application.StartupPath;
+            }
+        }
+
+
+        public FrmTree()
+        {
+            InitializeComponent();
+            this.Load += FrmWeb_Load;
+            this.FormClosed += FrmWin_FormClosed;
+        }
+
+        void FrmWeb_Load(object sender, EventArgs e)
+        {
+            try
+            {
+                LogOut.Info("寮�濮嬭繍琛�..");
+
+                string fly = Path.Combine(StartupPath, "Resources\\sample.fly");
+                if (!File.Exists(fly))
+                {
+                    LogOut.Error("Fly鏂囦欢涓嶅瓨鍦細" + fly);
+                    return;
+                }
+
+                SG = new SGWorld74();
+                SG.OnLoadFinished += SG_OnLoadFinished;
+                SG.Open(fly);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+            }
+        }
+
+        void SG_OnLoadFinished(bool bSuccess)
+        {
+            //
+        }
+
+        void FrmWin_FormClosed(object sender, FormClosedEventArgs e)
+        {
+            LogOut.Info("鍏抽棴绋嬪簭.");
+        }
+    }
+}
diff --git a/TEWin/FrmTree.resx b/TEWin/FrmTree.resx
new file mode 100644
index 0000000..35694f2
--- /dev/null
+++ b/TEWin/FrmTree.resx
@@ -0,0 +1,128 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="axTETree.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAOQAAAAIB
+        AAAAAQAAAAAAAAAAAAAAACQAAAAADgAAvgsAAGchAAATAAAAAAADAAIAAAATAAAAAAAIAAAAAAAL
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/TEWin/FrmWin.Designer.cs b/TEWin/FrmWin.Designer.cs
new file mode 100644
index 0000000..746efba
--- /dev/null
+++ b/TEWin/FrmWin.Designer.cs
@@ -0,0 +1,68 @@
+锘縩amespace TEWin
+{
+    partial class FrmWin
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmWin));
+            this.axTEWin = new AxTerraExplorerX.AxTE3DWindow();
+            ((System.ComponentModel.ISupportInitialize)(this.axTEWin)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // axTEWin
+            // 
+            this.axTEWin.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.axTEWin.Enabled = true;
+            this.axTEWin.Location = new System.Drawing.Point(0, 0);
+            this.axTEWin.Margin = new System.Windows.Forms.Padding(2);
+            this.axTEWin.Name = "axTEWin";
+            this.axTEWin.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axTEWin.OcxState")));
+            this.axTEWin.Size = new System.Drawing.Size(784, 561);
+            this.axTEWin.TabIndex = 1;
+            // 
+            // FrmWin
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(784, 561);
+            this.Controls.Add(this.axTEWin);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Margin = new System.Windows.Forms.Padding(2);
+            this.Name = "FrmWin";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "FrmWin";
+            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+            ((System.ComponentModel.ISupportInitialize)(this.axTEWin)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private AxTerraExplorerX.AxTE3DWindow axTEWin;
+    }
+}
\ No newline at end of file
diff --git a/TEWin/FrmWin.cs b/TEWin/FrmWin.cs
new file mode 100644
index 0000000..49392f0
--- /dev/null
+++ b/TEWin/FrmWin.cs
@@ -0,0 +1,72 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using TerraExplorerX;
+using TETree;
+using TEWin.CS;
+
+namespace TEWin
+{
+    public partial class FrmWin : Form
+    {
+        public SGWorld74 SG = null;
+
+        public static string StartupPath
+        {
+            get
+            {
+                return System.Windows.Forms.Application.StartupPath;
+            }
+        }
+
+        public FrmWin()
+        {
+            InitializeComponent();
+            this.Load += FrmWeb_Load;
+            this.FormClosed += FrmWin_FormClosed;
+        }
+
+        void FrmWeb_Load(object sender, EventArgs e)
+        {
+            try
+            {
+                LogOut.Info("寮�濮嬭繍琛�..");
+
+                string fly = Path.Combine(StartupPath, "Resources\\sample.fly");
+                if (!File.Exists(fly))
+                {
+                    LogOut.Error("Fly鏂囦欢涓嶅瓨鍦細" + fly);
+                    return;
+                }
+
+                SG = new SGWorld74();
+                SG.OnLoadFinished += SG_OnLoadFinished;
+                SG.Open(fly);
+
+                FrmTree tree = new FrmTree();
+                tree.Show(this);
+
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+            }
+        }
+
+        void SG_OnLoadFinished(bool bSuccess)
+        {
+            //
+        }
+
+        void FrmWin_FormClosed(object sender, FormClosedEventArgs e)
+        {
+            LogOut.Info("鍏抽棴绋嬪簭.");
+        }
+    }
+}
diff --git a/TEWin/FrmWin.resx b/TEWin/FrmWin.resx
new file mode 100644
index 0000000..9fd8cb6
--- /dev/null
+++ b/TEWin/FrmWin.resx
@@ -0,0 +1,129 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="axTEWin.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAXQAAAAIB
+        AAAAAQAAAAAAAAAAAAAAAEgAAAAADgAAMRIAACQOAAATAAAAAAADAAIAAAAIAAIAAAAAABMAAAAAAAgA
+        HAAAAGEAeABUAEUAMwBEAFcAaQBuAGQAbwB3ADEAAAAL
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/TEWin/Program.cs b/TEWin/Program.cs
new file mode 100644
index 0000000..9a46cf3
--- /dev/null
+++ b/TEWin/Program.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace TEWin
+{
+    static class Program
+    {
+        /// <summary>
+        /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+
+            Application.Run(new FrmWin());
+        }
+    }
+}
diff --git a/TEWin/Properties/AssemblyInfo.cs b/TEWin/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..aff6171
--- /dev/null
+++ b/TEWin/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑甯歌淇℃伅閫氳繃浠ヤ笅
+// 鐗规�ч泦鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("TEWin")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TEWin")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浣挎绋嬪簭闆嗕腑鐨勭被鍨�
+// 瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷锛�
+// 鍒欏皢璇ョ被鍨嬩笂鐨� ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("3fd579ee-ef63-4347-a4dc-4a9f1d1b69e8")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅闈㈠洓涓�肩粍鎴�:
+//
+//      涓荤増鏈�
+//      娆$増鏈� 
+//      鍐呴儴鐗堟湰鍙�
+//      淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滃唴閮ㄧ増鏈彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊硷紝
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TEWin/Properties/Resources.Designer.cs b/TEWin/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..6560ab0
--- /dev/null
+++ b/TEWin/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace TEWin.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+    /// </summary>
+    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   杩斿洖姝ょ被浣跨敤鐨勭紦瀛樼殑 ResourceManager 瀹炰緥銆�
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TEWin.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/TEWin/Properties/Resources.resx b/TEWin/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/TEWin/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?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.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: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" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/TEWin/Properties/Settings.Designer.cs b/TEWin/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..524f277
--- /dev/null
+++ b/TEWin/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace TEWin.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/TEWin/Properties/Settings.settings b/TEWin/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/TEWin/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
diff --git a/TEWin/Resources/Log.config b/TEWin/Resources/Log.config
new file mode 100644
index 0000000..e8f39a8
--- /dev/null
+++ b/TEWin/Resources/Log.config
@@ -0,0 +1,37 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <!--鏃ュ織閰嶇疆閮ㄥ垎-->
+  <configSections>
+    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
+  </configSections>
+  <!--绔欑偣鏃ュ織閰嶇疆閮ㄥ垎-->
+  <log4net>
+    <root>
+      <!-- 鏃ュ織绛夌骇锛欰LL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
+      <priority value="Info"/>
+      <appender-ref ref="RollingFileAppender"/>
+    </root>
+    <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="%date%newline%message"/>
+      </layout>
+    </appender>
+    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="%date%newline%message"/>
+      </layout>
+    </appender>
+    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
+      <file value="log.txt"/>
+      <appendToFile value="true"/>
+      <maxSizeRollBackups value="10"/>
+      <maximumFileSize value="2048KB"/>
+      <rollingStyle value="Size"/>
+      <staticLogFileName value="true"/>
+      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="%date%newline%message"/>
+      </layout>
+    </appender>
+  </log4net>
+</configuration>
\ No newline at end of file
diff --git a/TEWin/Resources/Newtonsoft.Json.dll b/TEWin/Resources/Newtonsoft.Json.dll
new file mode 100644
index 0000000..8ae038b
--- /dev/null
+++ b/TEWin/Resources/Newtonsoft.Json.dll
Binary files differ
diff --git a/TEWin/Resources/log4net4.dll b/TEWin/Resources/log4net4.dll
new file mode 100644
index 0000000..bffd524
--- /dev/null
+++ b/TEWin/Resources/log4net4.dll
Binary files differ
diff --git a/TEWin/Resources/sample.fly b/TEWin/Resources/sample.fly
new file mode 100644
index 0000000..6d89251
--- /dev/null
+++ b/TEWin/Resources/sample.fly
Binary files differ
diff --git a/TEWin/Resources/sample.mpt b/TEWin/Resources/sample.mpt
new file mode 100644
index 0000000..83721e2
--- /dev/null
+++ b/TEWin/Resources/sample.mpt
Binary files differ
diff --git a/TEWin/TEWin.csproj b/TEWin/TEWin.csproj
new file mode 100644
index 0000000..2d8f4b4
--- /dev/null
+++ b/TEWin/TEWin.csproj
@@ -0,0 +1,174 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A5C6A035-4E5F-40BC-86C3-7CBC4662BE61}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>TEWin</RootNamespace>
+    <AssemblyName>TEWin</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <PlatformTarget>x64</PlatformTarget>
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <OutputPath>bin\Debug\</OutputPath>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <OutputPath>bin\Release\</OutputPath>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject>TEWin.Program</StartupObject>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="log4net4, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>Fly\log4net4.dll</HintPath>
+    </Reference>
+    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>Fly\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CS\LogOut.cs" />
+    <Compile Include="FrmTree.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FrmTree.Designer.cs">
+      <DependentUpon>FrmTree.cs</DependentUpon>
+    </Compile>
+    <Compile Include="FrmWin.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FrmWin.Designer.cs">
+      <DependentUpon>FrmWin.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="FrmTree.resx">
+      <DependentUpon>FrmTree.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="FrmWin.resx">
+      <DependentUpon>FrmWin.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <EmbeddedResource Include="Resources\Log.config">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Resources\sample.fly">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Resources\sample.mpt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <COMReference Include="AxTerraExplorerX">
+      <Guid>{B87695B0-65AD-11D5-85C1-0001023952C1}</Guid>
+      <VersionMajor>1</VersionMajor>
+      <VersionMinor>0</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>aximp</WrapperTool>
+      <Isolated>False</Isolated>
+    </COMReference>
+    <COMReference Include="stdole">
+      <Guid>{00020430-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>2</VersionMajor>
+      <VersionMinor>0</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="TerraExplorerX">
+      <Guid>{B87695B0-65AD-11D5-85C1-0001023952C1}</Guid>
+      <VersionMajor>1</VersionMajor>
+      <VersionMinor>0</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>tlbimp</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Resources\log4net4.dll" />
+    <Content Include="Resources\Newtonsoft.Json.dll" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/TEWin/app.config b/TEWin/app.config
new file mode 100644
index 0000000..1b3e886
--- /dev/null
+++ b/TEWin/app.config
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<configuration>
+  <appSettings>
+  </appSettings>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
+  </startup>
+</configuration>

--
Gitblit v1.9.3