aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorlbsa712007-04-11 14:14:19 +0000
committerlbsa712007-04-11 14:14:19 +0000
commit08d5d10d62df2c1c418e7a39cadb6662ea66b228 (patch)
tree19ac712ff6cc51f0563bc99767fc4331061214a8
parentdeleted OpenSim.Terrain.BasicTerrain.dll from the bin folder, don't think the... (diff)
downloadopensim-SC-08d5d10d62df2c1c418e7a39cadb6662ea66b228.zip
opensim-SC-08d5d10d62df2c1c418e7a39cadb6662ea66b228.tar.gz
opensim-SC-08d5d10d62df2c1c418e7a39cadb6662ea66b228.tar.bz2
opensim-SC-08d5d10d62df2c1c418e7a39cadb6662ea66b228.tar.xz
* Started on converting UserHTTPServer to BaseHttpServer
* Added a 'param' param to the RestMethod * Added RestHandlerEntry to store more info about the 'rest' handler
-rw-r--r--OpenGridServices.GridServer/GridHttp.cs13
-rw-r--r--OpenGridServices.GridServer/Main.cs1
-rw-r--r--OpenGridServices.UserServer/Main.cs6
-rw-r--r--OpenGridServices.UserServer/UserHttp.cs20
-rw-r--r--OpenSim.Framework/UserProfileManager.cs16
-rw-r--r--OpenSim.RegionServer/CAPS/AdminWebFront.cs26
-rw-r--r--OpenSim.RegionServer/OpenSimMain.cs2
-rw-r--r--OpenSim.Servers/BaseHttpServer.cs36
-rw-r--r--OpenSim.Servers/IRestHandler.cs2
-rw-r--r--OpenSim.sln228
10 files changed, 178 insertions, 172 deletions
diff --git a/OpenGridServices.GridServer/GridHttp.cs b/OpenGridServices.GridServer/GridHttp.cs
index 5f8bd56..9e9246d 100644
--- a/OpenGridServices.GridServer/GridHttp.cs
+++ b/OpenGridServices.GridServer/GridHttp.cs
@@ -49,12 +49,17 @@ namespace OpenGridServices.GridServer
49 public HttpListener Listener; 49 public HttpListener Listener;
50 50
51 public GridHTTPServer() : base( 8001 ) { 51 public GridHTTPServer() : base( 8001 ) {
52 MainConsole.Instance.WriteLine("Starting up HTTP Server"); 52 Start();
53 HTTPD = new Thread(new ThreadStart(StartHTTP));
54 HTTPD.Start();
55 } 53 }
56 54
57 public void StartHTTP() { 55 public void Start()
56 {
57 MainConsole.Instance.WriteLine("Starting up HTTP Server");
58 HTTPD = new Thread(new ThreadStart(StartHTTP));
59 HTTPD.Start();
60 }
61
62 public void StartHTTP() {
58 MainConsole.Instance.WriteLine("GridHttp.cs:StartHTTP() - Spawned main thread OK"); 63 MainConsole.Instance.WriteLine("GridHttp.cs:StartHTTP() - Spawned main thread OK");
59 Listener = new HttpListener(); 64 Listener = new HttpListener();
60 65
diff --git a/OpenGridServices.GridServer/Main.cs b/OpenGridServices.GridServer/Main.cs
index 192b10c..8c83bbf 100644
--- a/OpenGridServices.GridServer/Main.cs
+++ b/OpenGridServices.GridServer/Main.cs
@@ -105,6 +105,7 @@ namespace OpenGridServices.GridServer
105 105
106 m_console.WriteLine("Main.cs:Startup() - Starting HTTP process"); 106 m_console.WriteLine("Main.cs:Startup() - Starting HTTP process");
107 _httpd = new GridHTTPServer(); 107 _httpd = new GridHTTPServer();
108 _httpd.Start();
108 109
109 m_console.WriteLine("Main.cs:Startup() - Starting sim status checker"); 110 m_console.WriteLine("Main.cs:Startup() - Starting sim status checker");
110 SimCheckTimer = new Timer(); 111 SimCheckTimer = new Timer();
diff --git a/OpenGridServices.UserServer/Main.cs b/OpenGridServices.UserServer/Main.cs
index 9c128d3..9132a54 100644
--- a/OpenGridServices.UserServer/Main.cs
+++ b/OpenGridServices.UserServer/Main.cs
@@ -97,6 +97,12 @@ namespace OpenGridServices.UserServer
97 97
98 MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting HTTP process"); 98 MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting HTTP process");
99 _httpd = new UserHTTPServer(); 99 _httpd = new UserHTTPServer();
100
101 _httpd.AddXmlRPCHandler("login_to_simulator", _profilemanager.XmlRpcLoginMethod);
102 _httpd.AddRestHandler( "DELETE", "/usersessions/", _profilemanager.RestDeleteUserSessionMethod );
103
104 _httpd.Start();
105
100 } 106 }
101 107
102 108
diff --git a/OpenGridServices.UserServer/UserHttp.cs b/OpenGridServices.UserServer/UserHttp.cs
index e1385f7..191fccb 100644
--- a/OpenGridServices.UserServer/UserHttp.cs
+++ b/OpenGridServices.UserServer/UserHttp.cs
@@ -52,6 +52,10 @@ namespace OpenGridServices.UserServer
52 52
53 public UserHTTPServer() : base( 8002 ) 53 public UserHTTPServer() : base( 8002 )
54 { 54 {
55 }
56
57 public void Start()
58 {
55 MainConsole.Instance.WriteLine("Starting up HTTP Server"); 59 MainConsole.Instance.WriteLine("Starting up HTTP Server");
56 HTTPD = new Thread(new ThreadStart(StartHTTP)); 60 HTTPD = new Thread(new ThreadStart(StartHTTP));
57 HTTPD.Start(); 61 HTTPD.Start();
@@ -89,21 +93,13 @@ namespace OpenGridServices.UserServer
89 switch (req_type) 93 switch (req_type)
90 { 94 {
91 case "usersessions": 95 case "usersessions":
92 LLUUID sessionid = new LLUUID(rest_params[2]); // get usersessions/sessionid 96 string param = rest_params[2];
97 string result = "";
93 if (www_req.HttpMethod == "DELETE") 98 if (www_req.HttpMethod == "DELETE")
94 { 99 {
95 foreach (libsecondlife.LLUUID UUID in OpenUser_Main.userserver._profilemanager.UserProfiles.Keys) 100 result = OpenUser_Main.userserver._profilemanager.RestDeleteUserSessionMethod( null, null, param );
96 {
97 if (OpenUser_Main.userserver._profilemanager.UserProfiles[UUID].CurrentSessionID == sessionid)
98 {
99 OpenUser_Main.userserver._profilemanager.UserProfiles[UUID].CurrentSessionID = null;
100 OpenUser_Main.userserver._profilemanager.UserProfiles[UUID].CurrentSecureSessionID = null;
101 OpenUser_Main.userserver._profilemanager.UserProfiles[UUID].Circuits.Clear();
102 }
103 }
104
105 } 101 }
106 return "OK"; 102 return result;
107 } 103 }
108 104
109 return ""; 105 return "";
diff --git a/OpenSim.Framework/UserProfileManager.cs b/OpenSim.Framework/UserProfileManager.cs
index bf11910..7c4fb6f 100644
--- a/OpenSim.Framework/UserProfileManager.cs
+++ b/OpenSim.Framework/UserProfileManager.cs
@@ -48,6 +48,22 @@ namespace OpenSim.Framework.User
48 return ""; 48 return "";
49 } 49 }
50 50
51 public string RestDeleteUserSessionMethod( string request, string path, string param )
52 {
53 LLUUID sessionid = new LLUUID(param); // get usersessions/sessionid
54 foreach (libsecondlife.LLUUID UUID in UserProfiles.Keys)
55 {
56 if ( UserProfiles[UUID].CurrentSessionID == sessionid)
57 {
58 UserProfiles[UUID].CurrentSessionID = null;
59 UserProfiles[UUID].CurrentSecureSessionID = null;
60 UserProfiles[UUID].Circuits.Clear();
61 }
62 }
63
64 return "OK";
65 }
66
51 public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) 67 public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
52 { 68 {
53 XmlRpcResponse response = new XmlRpcResponse(); 69 XmlRpcResponse response = new XmlRpcResponse();
diff --git a/OpenSim.RegionServer/CAPS/AdminWebFront.cs b/OpenSim.RegionServer/CAPS/AdminWebFront.cs
index d4519e8..743d1a9 100644
--- a/OpenSim.RegionServer/CAPS/AdminWebFront.cs
+++ b/OpenSim.RegionServer/CAPS/AdminWebFront.cs
@@ -48,7 +48,7 @@ namespace OpenSim.CAPS
48 server.AddRestHandler("POST", "/Admin/Login", PostLogin ); 48 server.AddRestHandler("POST", "/Admin/Login", PostLogin );
49 } 49 }
50 50
51 private string GetWelcomePage(string request, string path) 51 private string GetWelcomePage(string request, string path, string param)
52 { 52 {
53 string responseString; 53 string responseString;
54 responseString = "Welcome to the OpenSim Admin Page"; 54 responseString = "Welcome to the OpenSim Admin Page";
@@ -56,7 +56,7 @@ namespace OpenSim.CAPS
56 return responseString; 56 return responseString;
57 } 57 }
58 58
59 private string PostLogin(string requestBody, string path) 59 private string PostLogin(string requestBody, string path, string param)
60 { 60 {
61 string responseString; 61 string responseString;
62// Console.WriteLine(requestBody); 62// Console.WriteLine(requestBody);
@@ -73,7 +73,7 @@ namespace OpenSim.CAPS
73 return responseString; 73 return responseString;
74 } 74 }
75 75
76 private string PostNewAccount(string requestBody, string path) 76 private string PostNewAccount(string requestBody, string path, string param)
77 { 77 {
78 string responseString; 78 string responseString;
79 string firstName = ""; 79 string firstName = "";
@@ -122,7 +122,7 @@ namespace OpenSim.CAPS
122 return responseString; 122 return responseString;
123 } 123 }
124 124
125 private string GetConnectedClientsPage(string request, string path) 125 private string GetConnectedClientsPage(string request, string path, string param)
126 { 126 {
127 string responseString; 127 string responseString;
128 responseString = " <p> Listing connected Clients </p>"; 128 responseString = " <p> Listing connected Clients </p>";
@@ -140,7 +140,7 @@ namespace OpenSim.CAPS
140 return responseString; 140 return responseString;
141 } 141 }
142 142
143 private string AddTestScript(string request, string path) 143 private string AddTestScript(string request, string path, string param)
144 { 144 {
145 int index = path.LastIndexOf('/'); 145 int index = path.LastIndexOf('/');
146 146
@@ -159,13 +159,13 @@ namespace OpenSim.CAPS
159 return String.Format("Couldn't parse [{0}]", lluidStr ); 159 return String.Format("Couldn't parse [{0}]", lluidStr );
160 } 160 }
161 } 161 }
162 162
163 private string GetScriptsPage(string request, string path) 163 private string GetScriptsPage(string request, string path, string param)
164 { 164 {
165 return String.Empty; 165 return String.Empty;
166 } 166 }
167 167
168 private string GetEntitiesPage(string request, string path) 168 private string GetEntitiesPage(string request, string path, string param)
169 { 169 {
170 string responseString; 170 string responseString;
171 responseString = " <p> Listing current entities</p><ul>"; 171 responseString = " <p> Listing current entities</p><ul>";
@@ -179,7 +179,7 @@ namespace OpenSim.CAPS
179 return responseString; 179 return responseString;
180 } 180 }
181 181
182 private string GetClientsInventory(string request, string path) 182 private string GetClientsInventory(string request, string path, string param)
183 { 183 {
184 string[] line; 184 string[] line;
185 string delimStr = "/"; 185 string delimStr = "/";
@@ -208,12 +208,12 @@ namespace OpenSim.CAPS
208 return responseString; 208 return responseString;
209 } 209 }
210 210
211 private string GetCachedAssets(string request, string path) 211 private string GetCachedAssets(string request, string path, string param)
212 { 212 {
213 return ""; 213 return "";
214 } 214 }
215 215
216 private string GetAccountsPage(string request, string path) 216 private string GetAccountsPage(string request, string path, string param)
217 { 217 {
218 string responseString; 218 string responseString;
219 responseString = "<p> Account management </p>"; 219 responseString = "<p> Account management </p>";
@@ -223,7 +223,7 @@ namespace OpenSim.CAPS
223 return responseString; 223 return responseString;
224 } 224 }
225 225
226 private string GetAdminPage(string request, string path) 226 private string GetAdminPage(string request, string path, string param)
227 { 227 {
228 return AdminPage; 228 return AdminPage;
229 } 229 }
diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs
index fcc6512..9ea32b1 100644
--- a/OpenSim.RegionServer/OpenSimMain.cs
+++ b/OpenSim.RegionServer/OpenSimMain.cs
@@ -197,7 +197,7 @@ namespace OpenSim
197 return new XmlRpcResponse(); 197 return new XmlRpcResponse();
198 }); 198 });
199 _httpServer.AddRestHandler("GET", "/simstatus/", 199 _httpServer.AddRestHandler("GET", "/simstatus/",
200 delegate(string request, string path) 200 delegate(string request, string path, string param )
201 { 201 {
202 return "OK"; 202 return "OK";
203 }); 203 });
diff --git a/OpenSim.Servers/BaseHttpServer.cs b/OpenSim.Servers/BaseHttpServer.cs
index 2f73f46..0a123b7 100644
--- a/OpenSim.Servers/BaseHttpServer.cs
+++ b/OpenSim.Servers/BaseHttpServer.cs
@@ -12,9 +12,30 @@ namespace OpenSim.Servers
12{ 12{
13 public class BaseHttpServer 13 public class BaseHttpServer
14 { 14 {
15 protected class RestMethodEntry
16 {
17 private string m_path;
18 public string Path
19 {
20 get { return m_path; }
21 }
22
23 private RestMethod m_restMethod;
24 public RestMethod RestMethod
25 {
26 get { return m_restMethod; }
27 }
28
29 public RestMethodEntry( string path, RestMethod restMethod )
30 {
31 m_path = path;
32 m_restMethod = restMethod;
33 }
34 }
35
15 protected Thread m_workerThread; 36 protected Thread m_workerThread;
16 protected HttpListener m_httpListener; 37 protected HttpListener m_httpListener;
17 protected Dictionary<string, RestMethod> m_restHandlers = new Dictionary<string, RestMethod>(); 38 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>();
18 protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); 39 protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
19 protected int m_port; 40 protected int m_port;
20 41
@@ -29,7 +50,7 @@ namespace OpenSim.Servers
29 50
30 if (!this.m_restHandlers.ContainsKey(methodKey)) 51 if (!this.m_restHandlers.ContainsKey(methodKey))
31 { 52 {
32 this.m_restHandlers.Add(methodKey, handler); 53 this.m_restHandlers.Add(methodKey, new RestMethodEntry( path, handler ));
33 return true; 54 return true;
34 } 55 }
35 56
@@ -74,7 +95,6 @@ namespace OpenSim.Servers
74 protected virtual string ParseREST(string request, string path, string method) 95 protected virtual string ParseREST(string request, string path, string method)
75 { 96 {
76 string response; 97 string response;
77 RestMethod handler;
78 98
79 string requestKey = String.Format("{0}: {1}", method, path); 99 string requestKey = String.Format("{0}: {1}", method, path);
80 100
@@ -89,10 +109,14 @@ namespace OpenSim.Servers
89 } 109 }
90 } 110 }
91 } 111 }
92 112
93 if (m_restHandlers.TryGetValue(bestMatch, out handler)) 113 RestMethodEntry restMethodEntry;
114 if (m_restHandlers.TryGetValue(bestMatch, out restMethodEntry))
94 { 115 {
95 response = handler(request, path); 116 RestMethod restMethod = restMethodEntry.RestMethod;
117
118 string param = path.Substring( restMethodEntry.Path.Length );
119 response = restMethod(request, path, param);
96 120
97 } 121 }
98 else 122 else
diff --git a/OpenSim.Servers/IRestHandler.cs b/OpenSim.Servers/IRestHandler.cs
index 08737cc..c322505 100644
--- a/OpenSim.Servers/IRestHandler.cs
+++ b/OpenSim.Servers/IRestHandler.cs
@@ -4,5 +4,5 @@ using System.Text;
4 4
5namespace OpenSim.Servers 5namespace OpenSim.Servers
6{ 6{
7 public delegate string RestMethod( string request, string path ); 7 public delegate string RestMethod( string request, string path, string param );
8} 8}
diff --git a/OpenSim.sln b/OpenSim.sln
index 58be9fe..47f7a5c 100644
--- a/OpenSim.sln
+++ b/OpenSim.sln
@@ -43,139 +43,97 @@ EndProject
43Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGridServices.GridServer", "OpenGridServices.GridServer\OpenGridServices.GridServer.csproj", "{21BFC8E2-0000-0000-0000-000000000000}" 43Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGridServices.GridServer", "OpenGridServices.GridServer\OpenGridServices.GridServer.csproj", "{21BFC8E2-0000-0000-0000-000000000000}"
44EndProject 44EndProject
45Global 45Global
46 GlobalSection(SolutionConfigurationPlatforms) = preSolution 46 GlobalSection(SolutionConfigurationPlatforms) = preSolution
47 Debug|Any CPU = Debug|Any CPU 47 Debug|Any CPU = Debug|Any CPU
48 Release|Any CPU = Release|Any CPU 48 Release|Any CPU = Release|Any CPU
49 EndGlobalSection 49 EndGlobalSection
50 GlobalSection(ProjectDependencies) = postSolution 50 GlobalSection(ProjectConfigurationPlatforms) = postSolution
51 ({632E1BFD-0000-0000-0000-000000000000}).5 = ({2270B8FE-0000-0000-0000-000000000000}) 51 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52 ({632E1BFD-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000}) 52 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
53 ({632E1BFD-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000}) 53 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
54 ({632E1BFD-0000-0000-0000-000000000000}).8 = ({E88EF749-0000-0000-0000-000000000000}) 54 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
55 ({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000}) 55 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56 ({632E1BFD-0000-0000-0000-000000000000}).10 = ({8BB20F0A-0000-0000-0000-000000000000}) 56 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
57 ({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000}) 57 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
58 ({EE9E5D96-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000}) 58 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
59 ({EE9E5D96-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000}) 59 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
60 ({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 60 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
61 ({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 61 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
62 ({438A9556-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000}) 62 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
63 ({438A9556-0000-0000-0000-000000000000}).8 = ({8BB20F0A-0000-0000-0000-000000000000}) 63 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64 ({438A9556-0000-0000-0000-000000000000}).9 = ({632E1BFD-0000-0000-0000-000000000000}) 64 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
65 ({E88EF749-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 65 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
66 ({8BE16150-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 66 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
67 ({8BE16150-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 67 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
68 ({97A82740-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 68 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
69 ({66591469-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 69 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
70 ({66591469-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 70 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
71 ({66591469-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000}) 71 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72 ({4F874463-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000}) 72 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
73 ({B0027747-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 73 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
74 ({B0027747-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 74 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
75 ({988F0AC4-0000-0000-0000-000000000000}).3 = ({8BE16150-0000-0000-0000-000000000000}) 75 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
76 ({B55C0B5D-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 76 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
77 ({B55C0B5D-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 77 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
78 ({8BB20F0A-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 78 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
79 ({8BB20F0A-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) 79 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
80 ({E1B79ECF-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000}) 80 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
81 ({E1B79ECF-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000}) 81 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
82 ({6B20B603-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 82 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
83 ({6B20B603-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 83 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
84 ({7E494328-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 84 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
85 ({7E494328-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 85 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
86 ({546099CD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000}) 86 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
87 ({546099CD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000}) 87 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88 ({21BFC8E2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 88 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
89 ({21BFC8E2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 89 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
90 ({21BFC8E2-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000}) 90 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
91 EndGlobalSection 91 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
92 GlobalSection(ProjectConfigurationPlatforms) = postSolution 92 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
93 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 93 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
94 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 94 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
95 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 95 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
96 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 96 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
97 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 97 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
98 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 98 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
99 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 99 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
100 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 100 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
101 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 101 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
102 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 102 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
103 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 103 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
104 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 104 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
105 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 105 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
106 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 106 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
107 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 107 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
108 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 108 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
109 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 109 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
110 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 110 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
111 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 111 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
112 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 112 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
113 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 113 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
114 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 114 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
115 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 115 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
116 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 116 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
117 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 117 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
118 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 118 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
119 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 119 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
120 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 120 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
121 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 121 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
122 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 122 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
123 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 123 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
124 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 124 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
125 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 125 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
126 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 126 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
127 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 127 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
128 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 128 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
129 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 129 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
130 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 130 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
131 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 131 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
132 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 132 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
133 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 133 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
134 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 134 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
135 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 135 EndGlobalSection
136 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 136 GlobalSection(SolutionProperties) = preSolution
137 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 137 HideSolutionNode = FALSE
138 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 138 EndGlobalSection
139 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
140 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
141 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
142 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
143 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
144 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
145 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
146 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
147 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
148 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
149 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
150 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
151 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
152 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
153 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
154 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
155 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
156 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
157 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
158 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
159 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
160 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
161 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
162 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
163 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
164 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
165 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
166 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
167 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
168 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
169 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
170 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
171 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
172 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
173 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
174 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
175 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
176 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
177 EndGlobalSection
178 GlobalSection(SolutionProperties) = preSolution
179 HideSolutionNode = FALSE
180 EndGlobalSection
181EndGlobal 139EndGlobal