# HG changeset patch
# User nelopauselli
# Date 1312574118 10800
# Node ID 734d3f0853bfbe944f2ea14e917996c39bdf46f8
# Parent f17252543cbf4fff1f8b2b24d246a202d10e00dc
Manejando configuración de los publicadores con una sección propia en los .config
Agregando la opción de habilitar / deshabilitar un publicador
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Blog/Agendas.Blog.csproj
--- a/Agendas/trunk/src/Agendas.Blog/Agendas.Blog.csproj Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Blog/Agendas.Blog.csproj Fri Aug 05 16:55:18 2011 -0300
@@ -71,6 +71,10 @@
+
+ {583304D0-51C7-4808-BE20-6E9A904CA908}
+ Agendas.Configurations
+
{A14907DF-02E4-4FA7-BE27-4292AF50AA22}
Agendas.Domain
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs
--- a/Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using AltNetHispano.Agendas.Configurations;
using AltNetHispano.Agendas.Domain;
namespace Agendas.Blog.Impl
@@ -9,6 +10,16 @@
{
private readonly IPostWriterFactory _postWriterFactory;
+ public BlogPublicador()
+ : this(
+ new PostWriterFactory(
+ new PostWriterWebServiceAdapter(
+ new BlogPublicadorConfig(AgendasConfigurationManager.Publicadores.Blog.Writer.PostWriterServiceUrl,
+ AgendasConfigurationManager.Publicadores.Blog.Writer.BlogName,
+ AgendasConfigurationManager.Publicadores.Blog.Writer.BlogWriterMasterKey))))
+ {
+ }
+
public BlogPublicador(IPostWriterFactory postWriterFactory)
{
_postWriterFactory = postWriterFactory;
@@ -16,6 +27,8 @@
public void Publicar(IEnumerable
+
+ {DDD605FF-EF42-428A-AEB6-F3496A46A82B}
+ Agendas.Blog
+
{A14907DF-02E4-4FA7-BE27-4292AF50AA22}
Agendas.Domain
+
+ {45804F1F-EB72-4F82-A227-088CAD9B785D}
+ Agendas.Google
+
{9519A43A-9D5E-4BFD-9F88-AFFC53C9973A}
Agendas.NHibernate
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Google.Test/App.config
--- a/Agendas/trunk/src/Agendas.Google.Test/App.config Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Google.Test/App.config Fri Aug 05 16:55:18 2011 -0300
@@ -1,8 +1,13 @@
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Google.Test/GCalendarTest.cs
--- a/Agendas/trunk/src/Agendas.Google.Test/GCalendarTest.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Google.Test/GCalendarTest.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,10 +1,8 @@
using System;
-using System.Configuration;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Google;
using AltNetHispano.Agendas.Google.DetailsEvents;
using AltNetHispano.Agendas.Tests;
-using Moq;
using NUnit.Framework;
namespace Agendas.Google.Test
@@ -17,9 +15,7 @@
[Test]
public void CrearEventoGoogleCalendar()
{
- var gCalendar = new GCalendarAdapter("VAN", ConfigurationManager.AppSettings["userNameGoogleCalendar"],
- ConfigurationManager.AppSettings["passwordGoogleCalendar"],
- ConfigurationManager.AppSettings["calendarIdGoogleCalendar"]);
+ var gCalendar = new GCalendarAdapter("VAN");
var ev = Evento.Agendar("Evento Test", null, _fechaEvento, "url", TipoEvento.Cafe);
string message;
var detail = new CafeGEventDetail();
@@ -32,9 +28,7 @@
[Test]
public void EliminarEventoGoogleCalendar()
{
- var gCalendar = new GCalendarAdapter("VAN", ConfigurationManager.AppSettings["userNameGoogleCalendar"],
- ConfigurationManager.AppSettings["passwordGoogleCalendar"],
- ConfigurationManager.AppSettings["calendarIdGoogleCalendar"]);
+ var gCalendar = new GCalendarAdapter("VAN");
string message;
var startEvent = new DateTime(_fechaEvento.Year, _fechaEvento.Month, _fechaEvento.Day, 18, 0, 0,
DateTimeKind.Utc);
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Google/Agendas.Google.csproj
--- a/Agendas/trunk/src/Agendas.Google/Agendas.Google.csproj Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Google/Agendas.Google.csproj Fri Aug 05 16:55:18 2011 -0300
@@ -63,6 +63,10 @@
+
+ {583304D0-51C7-4808-BE20-6E9A904CA908}
+ Agendas.Configurations
+
{A14907DF-02E4-4FA7-BE27-4292AF50AA22}
Agendas.Domain
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Google/GCalendarAdapter.cs
--- a/Agendas/trunk/src/Agendas.Google/GCalendarAdapter.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Google/GCalendarAdapter.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,79 +1,90 @@
using System;
+using AltNetHispano.Agendas.Configurations;
using Google.GData.Calendar;
using Google.GData.Extensions;
namespace AltNetHispano.Agendas.Google
{
- public class GCalendarAdapter : IGCalendarAdapter
- {
- private readonly CalendarService _service;
- private readonly Uri _feedUri;
+ public class GCalendarAdapter : IGCalendarAdapter
+ {
+ private readonly CalendarService _service;
+ private readonly Uri _feedUri;
- public bool CreateEvent(IGEventDetail gEventDetail, out string message)
- {
- try
- {
- var entry = new EventEntry
- {
- Title = { Text = gEventDetail.Title },
- Content = { Content = gEventDetail.Summary }
- };
+ public bool CreateEvent(IGEventDetail gEventDetail, out string message)
+ {
+ try
+ {
+ var entry = new EventEntry
+ {
+ Title = {Text = gEventDetail.Title},
+ Content = {Content = gEventDetail.Summary}
+ };
- var eventLocation = new Where
- {
- ValueString = gEventDetail.Location
- };
+ var eventLocation = new Where
+ {
+ ValueString = gEventDetail.Location
+ };
- entry.Locations.Add(eventLocation);
+ entry.Locations.Add(eventLocation);
- var eventTime = new When(gEventDetail.StartEvent, gEventDetail.EndEvent);
- entry.Times.Add(eventTime);
+ var eventTime = new When(gEventDetail.StartEvent, gEventDetail.EndEvent);
+ entry.Times.Add(eventTime);
- _service.Insert(_feedUri, entry);
- message = "Event create successful";
- return true;
- }
- catch (Exception exception)
- {
- message = exception.Message;
- return false;
- }
- }
+ _service.Insert(_feedUri, entry);
+ message = "Event create successful";
+ return true;
+ }
+ catch (Exception exception)
+ {
+ message = exception.Message;
+ return false;
+ }
+ }
- public bool DeleteEvent(DateTime startEvent, DateTime endEvent, out string message)
- {
- try
- {
- var myQuery = new EventQuery
- {
- StartTime = startEvent,
- EndTime = endEvent,
- Uri = _feedUri
- };
+ public bool DeleteEvent(DateTime startEvent, DateTime endEvent, out string message)
+ {
+ try
+ {
+ var myQuery = new EventQuery
+ {
+ StartTime = startEvent,
+ EndTime = endEvent,
+ Uri = _feedUri
+ };
- var myResultsFeed = _service.Query(myQuery);
- if (myResultsFeed.Entries.Count > 0)
- {
- myResultsFeed.Entries[0].Delete();
- message = "Event delete successful";
- return true;
- }
+ var myResultsFeed = _service.Query(myQuery);
+ if (myResultsFeed.Entries.Count > 0)
+ {
+ myResultsFeed.Entries[0].Delete();
+ message = "Event delete successful";
+ return true;
+ }
- message = "Event not found";
- return false;
- }
- catch (Exception exception)
- {
- message = exception.Message;
- return false;
- }
- }
+ message = "Event not found";
+ return false;
+ }
+ catch (Exception exception)
+ {
+ message = exception.Message;
+ return false;
+ }
+ }
- public GCalendarAdapter(string applicationName ,string userName, string password, string calendarId)
- {
- _service = new CalendarService(applicationName);
- _service.setUserCredentials(userName, password);
- _feedUri = new Uri("https://www.google.com/calendar/feeds/" + calendarId + "/private/full");
- }
- }
+ public GCalendarAdapter(string applicationName) : this(applicationName,
+ AgendasConfigurationManager.Publicadores.Google.Calendar.
+ UserName,
+ AgendasConfigurationManager.Publicadores.Google.Calendar.
+ Password,
+ AgendasConfigurationManager.Publicadores.Google.Calendar.
+ CalendarId)
+ {
+ }
+
+ public GCalendarAdapter(string applicationName, string userName, string password, string calendarId)
+ {
+ _service = new CalendarService(applicationName);
+ _service.setUserCredentials(userName, password);
+ _feedUri = new Uri("https://www.google.com/calendar/feeds/" + calendarId + "/private/full");
+ }
+ }
}
\ No newline at end of file
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Google/GooglePublicador.cs
--- a/Agendas/trunk/src/Agendas.Google/GooglePublicador.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Google/GooglePublicador.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using System.Configuration;
+using AltNetHispano.Agendas.Configurations;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Google.DetailsEvents;
@@ -12,21 +12,23 @@
private static string GetUserName
{
- get { return ConfigurationManager.AppSettings["userNameGoogleCalendar"]; }
+ get { return AgendasConfigurationManager.Publicadores.Google.Calendar.UserName; }
}
private static string GetPassword
{
- get { return ConfigurationManager.AppSettings["passwordGoogleCalendar"]; }
+ get { return AgendasConfigurationManager.Publicadores.Google.Calendar.Password; }
}
private static string GetCalendarId
{
- get { return ConfigurationManager.AppSettings["calendarIdGoogleCalendar"]; }
+ get { return AgendasConfigurationManager.Publicadores.Google.Calendar.CalendarId; }
}
public void Publicar(IEnumerable
-
+
+ Designer
+
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter.Tests/App.config
--- a/Agendas/trunk/src/Agendas.Twitter.Tests/App.config Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter.Tests/App.config Fri Aug 05 16:55:18 2011 -0300
@@ -1,9 +1,15 @@
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs
--- a/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter.Tests/Publicador_tests.cs Fri Aug 05 16:55:18 2011 -0300
@@ -4,7 +4,6 @@
using AltNetHispano.Agendas.Twitter;
using Moq;
using NUnit.Framework;
-using Twitterizer;
namespace Agendas.Twitter.Tests
{
@@ -15,17 +14,10 @@
public void Proponer_evento()
{
var adapter = new Mock();
+
+ string message;
string twitt = null;
-
- var response = new TwitterResponse
- {
- Result =
- RequestResult.Success
- };
-
- adapter.Setup(a => a.UpdateStatus(It.IsAny(), It.IsAny()))
- .Returns(response)
- .Callback((tokens, status) => twitt = status);
+ adapter.Setup(a => a.Update(It.IsAny(), out message)).Returns(true).Callback((status, m) => twitt = status);
var publicador = new TwitterPublicador(adapter.Object);
@@ -33,7 +25,7 @@
agenda.Proponer("Identity Providers", null, null, TipoEvento.GrupoEstudio);
- adapter.Verify(a => a.UpdateStatus(It.IsAny(), It.IsAny()), Times.Once());
+ adapter.Verify(a => a.Update(It.IsAny(), out message), Times.Once());
Assert.That(twitt, Is.StringContaining("GrupoEstudio"));
}
@@ -42,28 +34,21 @@
public void Proponer_y_agendar_evento()
{
var adapter = new Mock();
+
+ string message;
string twitt = null;
-
- var response = new TwitterResponse
- {
- Result =
- RequestResult.Success
- };
-
- adapter.Setup(a => a.UpdateStatus(It.IsAny(), It.IsAny()))
- .Returns(response)
- .Callback((tokens, status) => twitt = status);
+ adapter.Setup(a => a.Update(It.IsAny(), out message)).Returns(true).Callback((status, m) => twitt = status);
var publicador = new TwitterPublicador(adapter.Object);
var agenda = new Agenda(publicador, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
agenda.Proponer("Identity Providers", null, null, TipoEvento.GrupoEstudio);
- adapter.Verify(a => a.UpdateStatus(It.IsAny(), It.IsAny()), Times.Once());
+ adapter.Verify(a => a.Update(It.IsAny(), out message), Times.Once());
agenda.Agendar("Identity Providers", TestsHelper.GetOrCreatePonente("Nelo Pauselli"), DateTime.Today.AddDays(7), null, TipoEvento.GrupoEstudio);
- adapter.Verify(a => a.UpdateStatus(It.IsAny(), It.IsAny()), Times.Exactly(2));
+ adapter.Verify(a => a.Update(It.IsAny(), out message), Times.Exactly(2));
Assert.That(twitt, Is.StringContaining("@nelopauselli"));
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter.Tests/Send_twitt_tests.cs
--- a/Agendas/trunk/src/Agendas.Twitter.Tests/Send_twitt_tests.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter.Tests/Send_twitt_tests.cs Fri Aug 05 16:55:18 2011 -0300
@@ -10,10 +10,10 @@
[Test]
public void Send_twitt()
{
- var p = new TwitterPublicador();
+ var p = new TwitterAdapter();
string message;
- var r = p.Publicar("Ejecutando los tests. Hora: " + DateTime.Now, out message);
+ var r = p.Update("Ejecutando los tests. Hora: " + DateTime.Now, out message);
Console.WriteLine(message);
Assert.IsTrue(r);
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj
--- a/Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter/Agendas.Twitter.csproj Fri Aug 05 16:55:18 2011 -0300
@@ -60,6 +60,10 @@
+
+ {583304D0-51C7-4808-BE20-6E9A904CA908}
+ Agendas.Configurations
+
{A14907DF-02E4-4FA7-BE27-4292AF50AA22}
Agendas.Domain
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs
--- a/Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,4 +1,5 @@
using System;
+using AltNetHispano.Agendas.Configurations;
using Twitterizer;
namespace AltNetHispano.Agendas.Twitter
@@ -7,11 +8,40 @@
{
Uri BuildAuthorizationUri(string consumerKey, string consumerSecret, string callbackAddress);
string GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string verifier);
- TwitterResponse UpdateStatus(OAuthTokens tokens, string status);
+ bool Update(string status, out string message);
}
public class TwitterAdapter : ITwitterAdapter
{
+ private static TwitterConfigurationElement _config;
+
+ public TwitterAdapter()
+ {
+ _config = AgendasConfigurationManager.Publicadores.Twitter;
+ }
+
+ private static string ConsumerKey
+ {
+ get { return _config.SendTwitter.ConsumerKey; }
+ }
+
+ private static string ConsumerSecret
+ {
+ get { return _config.SendTwitter.ConsumerSecret; }
+ }
+
+
+ private static string AccessToken
+ {
+ get { return _config.SendTwitter.AccessToken; }
+ }
+
+
+ private static string AccessTokenSecret
+ {
+ get { return _config.SendTwitter.AccessTokenSecret; }
+ }
+
public Uri BuildAuthorizationUri(string consumerKey, string consumerSecret, string callbackAddress)
{
// Obtain a request token
@@ -47,9 +77,21 @@
}
- public TwitterResponse UpdateStatus(OAuthTokens tokens, string status)
+ public bool Update(string status, out string message)
{
- return TwitterStatus.Update(tokens, status);
+ var tokens = new OAuthTokens
+ {
+ ConsumerKey = ConsumerKey,
+ ConsumerSecret = ConsumerSecret,
+ AccessToken = AccessToken,
+ AccessTokenSecret = AccessTokenSecret
+ };
+
+ var response = TwitterStatus.Update(tokens, status);
+
+ message = response.ErrorMessage;
+ return response.Result == RequestResult.Success;
+
}
}
}
\ No newline at end of file
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs
--- a/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Fri Aug 05 16:55:18 2011 -0300
@@ -1,9 +1,8 @@
using System.Collections.Generic;
-using System.Configuration;
using System.Linq;
+using AltNetHispano.Agendas.Configurations;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Twitter.Writers;
-using Twitterizer;
namespace AltNetHispano.Agendas.Twitter
{
@@ -32,30 +31,10 @@
private const int LIMITE_MENSAJE = 140;
- private static string ConsumerKey
- {
- get { return ConfigurationManager.AppSettings["consumerKeyAppTwitt"]; }
- }
-
- private static string ConsumerSecret
- {
- get { return ConfigurationManager.AppSettings["consumerSecretAppTwitt"]; }
- }
-
-
- private static string AccessToken
- {
- get { return ConfigurationManager.AppSettings["accessTokenAppTwitt"]; }
- }
-
-
- private static string AccessTokenSecret
- {
- get { return ConfigurationManager.AppSettings["accessTokenSecretAppTwitt"]; }
- }
-
public void Publicar(IEnumerable
@@ -163,6 +162,10 @@
+
+ {583304D0-51C7-4808-BE20-6E9A904CA908}
+ Agendas.Configurations
+
{A14907DF-02E4-4FA7-BE27-4292AF50AA22}
Agendas.Domain
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Web/DataProviders.cs
--- a/Agendas/trunk/src/Agendas.Web/DataProviders.cs Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/DataProviders.cs Fri Aug 05 16:55:18 2011 -0300
@@ -23,6 +23,5 @@
select
new SelectListItem {Text = p.Nombre, Value = p.Id.ToString(), Selected = p.Id.Equals(id)};
}
-
}
-}
\ No newline at end of file
+}
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.Web/Web.config
--- a/Agendas/trunk/src/Agendas.Web/Web.config Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Web.config Fri Aug 05 16:55:18 2011 -0300
@@ -5,23 +5,15 @@
-->
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
@@ -93,4 +85,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r f17252543cbf -r 734d3f0853bf Agendas/trunk/src/Agendas.sln
--- a/Agendas/trunk/src/Agendas.sln Thu Aug 04 18:45:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.sln Fri Aug 05 16:55:18 2011 -0300
@@ -34,6 +34,10 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agendas.Google.Test", "Agendas.Google.Test\Agendas.Google.Test.csproj", "{3257EEC5-8FB7-4AD6-AD4C-F9748A1791B1}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agendas.Configurations", "Agendas.Configurations\Agendas.Configurations.csproj", "{583304D0-51C7-4808-BE20-6E9A904CA908}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agendas.Configurations.Tests", "Agendas.Configurations.Tests\Agendas.Configurations.Tests.csproj", "{BBE36765-6AAB-4689-B2F3-6D18E3F11746}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -92,6 +96,14 @@
{3257EEC5-8FB7-4AD6-AD4C-F9748A1791B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3257EEC5-8FB7-4AD6-AD4C-F9748A1791B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3257EEC5-8FB7-4AD6-AD4C-F9748A1791B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {583304D0-51C7-4808-BE20-6E9A904CA908}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {583304D0-51C7-4808-BE20-6E9A904CA908}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {583304D0-51C7-4808-BE20-6E9A904CA908}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {583304D0-51C7-4808-BE20-6E9A904CA908}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BBE36765-6AAB-4689-B2F3-6D18E3F11746}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BBE36765-6AAB-4689-B2F3-6D18E3F11746}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BBE36765-6AAB-4689-B2F3-6D18E3F11746}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BBE36765-6AAB-4689-B2F3-6D18E3F11746}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE