Browse Source

MotkT流程

样式分支
NXX 2 years ago
parent
commit
e56087e96e
31 changed files with 1516 additions and 434 deletions
  1. +13
    -4
      BPASmartClient.Business/Plugin/DeviceMgr.cs
  2. +1
    -1
      BPASmartClient.Business/Plugin/OrderProxy.cs
  3. +11
    -2
      BPASmartClient.DRCoffee/CoffeeMachine.cs
  4. +0
    -1
      BPASmartClient.Device/BaseDevice.cs
  5. +4
    -1
      BPASmartClient.GSIceCream/IceCreamMachine.cs
  6. +1
    -0
      BPASmartClient.Lebai/BPASmartClient.Lebai.csproj
  7. +13
    -333
      BPASmartClient.Lebai/LebaiRobot.cs
  8. +15
    -0
      BPASmartClient.LebaiRobot/BPASmartClient.LebaiRobot.csproj
  9. +1
    -1
      BPASmartClient.LebaiRobot/ELebaiRModel.cs
  10. +333
    -0
      BPASmartClient.LebaiRobot/LebaiHelper.cs
  11. +80
    -47
      BPASmartClient.MorkT/Control_MorkT.cs
  12. +5
    -4
      BPASmartClient.MorkT/PolymerBatching.cs
  13. +2
    -0
      BPASmartClient.SCChip/ICChipMachine.cs
  14. +1
    -1
      BPASmartClient.SerialPort/SerialPortClient.cs
  15. +1
    -1
      BPASmartClient.ViewModel/AdminstratorsViewModel.cs
  16. +4
    -0
      BPASmartClient.ViewModel/BPASmartClient.ViewModel.csproj
  17. +1
    -14
      BPASmartClient.ViewModel/MainViewModel.cs
  18. +212
    -0
      BPASmartClient.ViewModel/MorkT_DebugViewModel.cs
  19. +1
    -1
      BPASmartClient.ViewModel/ShopDeviceConfigViewModel.cs
  20. +1
    -4
      BPASmartClient/App.config
  21. +1
    -0
      BPASmartClient/BPASmartClient.csproj
  22. +1
    -1
      BPASmartClient/Control/DebugView.xaml
  23. +244
    -0
      BPASmartClient/Control/MorkT_DebugView.xaml
  24. +28
    -0
      BPASmartClient/Control/MorkT_DebugView.xaml.cs
  25. +22
    -3
      BPASmartClient/DeviceInfo.xml
  26. +5
    -8
      BPASmartClient/MainWindow.xaml
  27. +7
    -2
      BPASmartClient/MainWindow.xaml.cs
  28. +7
    -0
      ClassLibrary1/Class1.cs
  29. +9
    -0
      ClassLibrary1/ClassLibrary1.csproj
  30. +5
    -5
      HBLConsole.MORKIC/Control_MORKIC.cs
  31. +487
    -0
      SmartClient.sln

+ 13
- 4
BPASmartClient.Business/Plugin/DeviceMgr.cs View File

@@ -61,13 +61,22 @@ namespace BPASmartClient.Business
List<IPeripheral> peripherals = new List<IPeripheral>();
foreach (var peripheral in device.Peripherals)
{
var peripheralTemp = Assembly.Load(peripheral.Module.Substring(0, peripheral.Module.LastIndexOf('.'))).CreateInstance(peripheral.Module) as IPeripheral;
try
{
var peripheralTemp = Assembly.Load(peripheral.Module.Substring(0, peripheral.Module.LastIndexOf('.'))).CreateInstance(peripheral.Module,true) as IPeripheral;

foreach (var pars in peripheral.Parameters)
foreach (var pars in peripheral.Parameters)
{
peripheralTemp.GetType().GetProperty(pars.Key).SetValue(peripheralTemp, Convert.ChangeType(pars.Value, peripheralTemp.GetType().GetProperty(pars.Key).PropertyType));
}
peripherals.Add(peripheralTemp);
}
catch (Exception ex)
{
peripheralTemp.GetType().GetProperty(pars.Key).SetValue(peripheralTemp, Convert.ChangeType(pars.Value, peripheralTemp.GetType().GetProperty(pars.Key).PropertyType));

throw ex;
}
peripherals.Add(peripheralTemp);
;
}
deviceTemp.Initliaze(peripherals);
this.devices.Add(deviceTemp);


+ 1
- 1
BPASmartClient.Business/Plugin/OrderProxy.cs View File

@@ -97,7 +97,7 @@ namespace BPASmartClient.Business
var device = deviceMgr.GetDevices().FirstOrDefault(p => p.DeviceId == deviceId);
while (running)
{
if (device.IsBusy || !device.IsHealth)
if (device.IsBusy /*|| !device.IsHealth*/)
{
Thread.Sleep(100);
continue;


+ 11
- 2
BPASmartClient.DRCoffee/CoffeeMachine.cs View File

@@ -38,6 +38,9 @@ namespace BPASmartClient.DRCoffee
/// 是否在线
/// </summary>
public bool OnLine { get { return DateTime.Now.Subtract(lastRefreshTime).TotalSeconds <= 3; } }

//private volatile static CoffeeMachine _Instance;
//public static CoffeeMachine GetInstance => _Instance ?? (_Instance = new CoffeeMachine());
public CoffeeMachine()
{
DrCoffeePackage package = new DrCoffeePackage();
@@ -100,6 +103,7 @@ namespace BPASmartClient.DRCoffee
//一系列解包
while (dataStorage.GetSize() > 0)
{
byte item = dataStorage.GetData();
if (DrCoffee.HEADER == item)
{
@@ -137,9 +141,11 @@ namespace BPASmartClient.DRCoffee
/// <param name="package"></param>
public void ProcessPackage(DrCoffeePackage package)
{
if (((DrCoffeeStatus)status["Status"]) == DrCoffeeStatus.Running && package.Status != DrCoffeeStatus.Running)
{
status["Status"] = package.Status;
lastRefreshTime = DateTime.Now;
new DRCoffee_CoffeEndCookEvent() { DeviceId = DeviceId }.Publish();
}
@@ -147,7 +153,7 @@ namespace BPASmartClient.DRCoffee
status["AppStatus"] = package.ApplicationStatus;
status["Warning"] = package.Warning;
status["Fault"] = package.Fault;
if ((DrCoffeeStatus)status["Status"] == DrCoffeeStatus.Warning
|| (DrCoffeeStatus)status["Status"] == DrCoffeeStatus.Fault
|| (DrCoffeeWarning)status["Warning"] != DrCoffeeWarning.无警告
@@ -155,9 +161,10 @@ namespace BPASmartClient.DRCoffee
)
{
IsWork = false;
}
else
IsWork = true;
IsWork = true;
}

protected override void InitStatus()
@@ -229,6 +236,8 @@ namespace BPASmartClient.DRCoffee
}
});
InitStatus();
//测试
Start();
}

}


+ 0
- 1
BPASmartClient.Device/BaseDevice.cs View File

@@ -125,7 +125,6 @@ namespace BPASmartClient.Device
{
p.DeviceId = this.DeviceId;
p.Init();

});
this.peripherals = peripherals;
}


+ 4
- 1
BPASmartClient.GSIceCream/IceCreamMachine.cs View File

@@ -32,7 +32,8 @@ namespace BPASmartClient.GSIceCream
private DateTime lastRefreshTime = DateTime.MinValue;
//是否在线
public bool OnLine { get { return DateTime.Now.Subtract(lastRefreshTime).TotalSeconds <= 3; } }

//private volatile static IceCreamMachine _Instance;
//public static IceCreamMachine GetInstance => _Instance ?? (_Instance = new IceCreamMachine());
public IceCreamMachine()
{
ICMSG_Heart_DW heartDW = new ICMSG_Heart_DW();
@@ -330,6 +331,8 @@ namespace BPASmartClient.GSIceCream
}
});
InitStatus();
//测试用
Start();
}
}



+ 1
- 0
BPASmartClient.Lebai/BPASmartClient.Lebai.csproj View File

@@ -9,6 +9,7 @@
<ItemGroup>
<ProjectReference Include="..\BPASmartClient.EventBus\BPASmartClient.EventBus.csproj" />
<ProjectReference Include="..\BPASmartClient.Helper\BPASmartClient.Helper.csproj" />
<ProjectReference Include="..\BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj" />
<ProjectReference Include="..\BPASmartClient.Message\BPASmartClient.Message.csproj" />
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" />
<ProjectReference Include="..\BPASmartClient.Peripheral\BPASmartClient.Peripheral.csproj" />


+ 13
- 333
BPASmartClient.Lebai/LebaiRobot.cs View File

@@ -14,71 +14,17 @@ using BPASmartClient.Peripheral;
using BPASmartClient.EventBus;
using static BPASmartClient.EventBus.EventBus;
using BPASmartClient.Model;
using BPASmartClient.LebaiRobot;

namespace BPASmartClient.Lebai
{
public class LebaiRobot: BasePeripheral
{

//public const int SENCE_自嗨 = 10008;
//public const int SENCE_接冰淇淋1 = 10004;
//public const int SENCE_接冰淇淋2 = 10003;
//public const int SENCE_接冰淇淋3 = 10005;
//public const int SENCE_咖啡 = 10006;
//#region 新增场景
//public const int SENCE_取咖啡杯 = 10013;
//public const int SENCE_咖啡杯检测 = 10014;
//public const int SENCE_再次取杯 = 10017;
//public const int SENCE_接咖啡 = 10015;
//public const int SENCE_送咖啡 = 10016; //无取走咖啡检测配合场景
//public const int SENCE_New送咖啡 = 10021;//有取走咖啡检测配合场景
//public const int SENCE_有无咖啡检测 = 10019;
//public const int SENCE_再送咖啡 = 10020;
//public const int SENCE_复位 = 10018;
//#endregion
//public const int SENCE_欢迎 = 10002;


#region 且时且多设备
//取咖啡杯 set:=1 get:=101 10031
//取冰淇淋杯 set:=1 get:=101 10032
//咖啡杯检测 set:=1 get:=101 10033
//冰淇淋杯检测 set:=1 get:=101 10034
//二次取咖啡杯 set:=1 get:=101 10035
//二次取冰淇淋杯 set:=1 get:=101 10036
//接咖啡 set:=1 get:=101 10037
//接冰淇淋公共点 set:=1 get:=101 10038
//接1号冰淇淋 set:=1 get:=101 10039
//接2号冰淇淋 set:=1 get:=101 10040
//接3号冰淇淋 set:=1 get:=101 10041
//放咖啡位置 set:=1 get:=101 10042
//放冰淇淋位置 set:=1 get:=101 10043

public const int SENCE_取咖啡杯 = 10031;
public const int SENCE_取冰淇淋杯 = 10032;
public const int SENCE_咖啡杯检测 = 10033;
public const int SENCE_冰淇淋杯检测 = 10034;
public const int SENCE_二次取咖啡杯 = 10035;
public const int SENCE_二次取冰淇淋杯 = 10036;
public const int SENCE_接咖啡 = 10037;
public const int SENCE_接冰淇淋公共点 = 10038;
public const int SENCE_接1号冰淇淋 = 10039;
public const int SENCE_接2号冰淇淋 = 10040;
public const int SENCE_接3号冰淇淋 = 10041;
public const int SENCE_放咖啡位置 = 10042;
public const int SENCE_放冰淇淋位置 = 10043;

//add 新加场景
public const int SENCE_接咖啡后回原点 = 10051;
public const int SENCE_咖啡杯回原点 = 10050;
public const int SENCE_冰淇淋杯回原点 = 10049;
public const int SENCE_取咖啡出餐 = 10052;
#endregion

/// <summary>
/// IP地址
/// </summary>
public string IpAddress { get; set; }
public string IpAddress { get; set; } = "192.168.0.1";
/// <summary>
/// 抓手上传感器输入位索引
/// </summary>
@@ -88,281 +34,6 @@ namespace BPASmartClient.Lebai
/// </summary>
public int OutputSingalValue { get; set; }


private volatile static LebaiRobot _Instance;
public static LebaiRobot GetInstance => _Instance ?? (_Instance = new LebaiRobot());
private LebaiRobot() { }
private LebaiRobotClient client;
private RobotData robotData;
public bool IsIdle { get; set; } = false;
public bool IsConnected { get { return null != robotData; } }

public void Connect(string ip)
{
bool ErrorFlag = false;
while (robotData == null)
{
try
{
client = new LebaiRobotClient(ip);
robotData = client.GetRobotData().Result;
}
catch (Exception ex)
{
if (!ErrorFlag)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
ErrorFlag = true;
}
Thread.Sleep(3000);
}
}
StartRobot();
MessageLog.GetInstance.Show("乐百机器人连接成功!");
}
/// <summary>
/// 机器人重连检测
/// </summary>
/// <param name="ip"></param>
public void Reconnect(string ip)
{
if (client == null)
{
try
{
client = new LebaiRobotClient(ip);
}
catch (Exception)
{

// throw;
}
}
check:
while (robotData != null)
{

try
{
robotData = client.GetRobotData().Result;
}
catch (Exception)
{
robotData = null;
// throw;
}
}
MessageLog.GetInstance.Show("乐白机器人断开连接,准备重连");
int num = 0;
while (num < 6 && robotData == null)
{
try
{

robotData = client.GetRobotData().Result;
}
catch (Exception ex)
{
if (num == 5)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

if (num < 5 && robotData == null)
{
Thread.Sleep(1000);
MessageLog.GetInstance.Show($"乐白机器人正在尝试第{num + 1}次重连....");
}
else if (num >= 5 && robotData == null)
{
MessageLog.GetInstance.Show("乐白机器人重连失败,请检查硬件连接");
//return;
}
num++;
}
if (robotData != null)
{
StartRobot();
MessageLog.GetInstance.Show("乐白机器人重连成功");
}
goto check;
}

public void GetRobotModeStatus()
{

if (robotData == null) return;
int mode = robotData.RobotMode.Mode;
IsIdle = mode == 5;
for (int i = 0; i < 14; i++)
{
if (RTrig.GetInstance(((ELebaiRModel)i).ToString()).Start(mode == i))
MessageLog.GetInstance.Show(((ELebaiRModel)i).ToString());
}
}
public void GetSpeed()
{
//client.StartSys().GetAwaiter();
var aa = client.GetActualTcpSpeed().GetAwaiter();
//robotData.RobotMode.Mode
}

/// <summary>
/// 启动机器人
/// </summary>
public async void StartRobot()
{
if (robotData != null)
{
await client.StartSys();
await client.Sync();
MessageLog.GetInstance.Show("机器人启动成功");
}
}

/// <summary>
/// 启动示教
/// </summary>
public async void StartTeachMode()
{
try
{
if (robotData != null)
{
await client.TeachMode();
MessageLog.GetInstance.Show("机器人切换为示教模式.");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 结束示教
/// </summary>
public async void EndtTeachMode()
{
try
{
if (robotData != null)
{
await client.EndTeachMode();
MessageLog.GetInstance.Show("机器人切换为停止示教模式.");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 机器人急停
/// </summary>
public async void EStopRobot()
{
try
{
if (robotData != null)
{
await client.EStop();
MessageLog.GetInstance.Show("机器人急停");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 获取抓手重量
/// </summary>
/// <returns></returns>
public double GetClawWdight()
{
if (robotData != null)
{
return client.GetClawWeight().Result.Weight_;
}
return 0;
}

/// <summary>
/// 获取信号量
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public SignalResult? GetValueAsync(int index = 0)
{
if (robotData == null) return default(SignalResult);
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
return client?.GetSignal(signalValue).Result;
}

/// <summary>
/// 设置信号量
/// </summary>
/// <param name="index"></param>
/// <param name="value"></param>
/// <returns></returns>
public SignalResult? SetValue(int value, int index = 0)
{
if (robotData == null) return default;
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
signalValue.Value = value;
return client.SetSignal(signalValue).Result;
}

/// <summary>
/// 获取输入DI状态
/// </summary>
/// <param name="pin"></param>
/// <returns></returns>
public bool GetInput(int pin = 0)
{
if (client == null) return false;
var res = client.GetDIO(new IOPin() { Pin = pin }).Result;
if (res != null)
{
return res.Value == 1 ? true : false;
}
return false;
}

/// <summary>
/// 运行指定的场景
/// </summary>
/// <param name="id"></param>
public async void Scene(int id)
{
CancellationToken cancellationToken = default(CancellationToken);
var result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
var first = result?.Items?.FirstOrDefault();
var r = first == null || first.Status != TaskStatus.Running && first.Status != TaskStatus.Pause;
while (!r)
{
Thread.Sleep(5);
result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
first = result?.Items?.FirstOrDefault();
r = first == null || first.Status != TaskStatus.Running && first.Status != TaskStatus.Pause;
}
while (GetValueAsync().Value != 0)
{
Thread.Sleep(500);
}
Thread.Sleep(1000);
if (robotData == null || client == null) return;
//if (!client.GetIsCanRunTask().Result) return;
await client?.RunScene(id);
MessageLog.GetInstance.Show($"调用场景:{id}");
}

protected override void InitStatus()
{
status["Connected"] = false;
@@ -372,12 +43,18 @@ namespace BPASmartClient.Lebai

public override void Start()
{
Connect(IpAddress);
LebaiHelper.GetInstance().Connect(IpAddress);
ThreadManage.GetInstance().StartLong(() => { LebaiHelper.GetInstance().Reconnect(IpAddress); Thread.Sleep(5000); }, "机器人重连检测");
ThreadManage.GetInstance().StartLong(() =>
{
status["Connected"] = LebaiHelper.GetInstance().IsConnected;
if (LebaiHelper.GetInstance().robotData != null) status["RobotMode"] = LebaiHelper.GetInstance().robotData.RobotMode.Mode;
},"获取乐白机器人数据");
}

public override void Stop()
{

}

public override void Init()
@@ -387,6 +64,9 @@ namespace BPASmartClient.Lebai

});
InitStatus();
Start();
}

}
}

+ 15
- 0
BPASmartClient.LebaiRobot/BPASmartClient.LebaiRobot.csproj View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\BPASmartClient.Helper\BPASmartClient.Helper.csproj" />
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" />
<ProjectReference Include="..\Lebai.SDK\Lebai.SDK.csproj" />
</ItemGroup>

</Project>

BPASmartClient.Lebai/ELebaiRModel.cs → BPASmartClient.LebaiRobot/ELebaiRModel.cs View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPASmartClient.Lebai
namespace BPASmartClient.LebaiRobot
{
public enum ELebaiRModel : int
{

+ 333
- 0
BPASmartClient.LebaiRobot/LebaiHelper.cs View File

@@ -0,0 +1,333 @@
using BPASmartClient.Helper;
using BPASmartClient.Message;
using BPASmartClient.Model;
using Lebai.SDK;
using Lebai.SDK.Dtos;
using Robotc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TaskStatus = Lebai.SDK.Dtos.TaskStatus;

namespace BPASmartClient.LebaiRobot
{
public class LebaiHelper:Singleton<LebaiHelper>
{

#region 且时且多设备
//取咖啡杯 set:=1 get:=101 10031
//取冰淇淋杯 set:=1 get:=101 10032
//咖啡杯检测 set:=1 get:=101 10033
//冰淇淋杯检测 set:=1 get:=101 10034
//二次取咖啡杯 set:=1 get:=101 10035
//二次取冰淇淋杯 set:=1 get:=101 10036
//接咖啡 set:=1 get:=101 10037
//接冰淇淋公共点 set:=1 get:=101 10038
//接1号冰淇淋 set:=1 get:=101 10039
//接2号冰淇淋 set:=1 get:=101 10040
//接3号冰淇淋 set:=1 get:=101 10041
//放咖啡位置 set:=1 get:=101 10042
//放冰淇淋位置 set:=1 get:=101 10043

public const int SENCE_取咖啡杯 = 10031;
public const int SENCE_取冰淇淋杯 = 10032;
public const int SENCE_咖啡杯检测 = 10033;
public const int SENCE_冰淇淋杯检测 = 10034;
public const int SENCE_二次取咖啡杯 = 10035;
public const int SENCE_二次取冰淇淋杯 = 10036;
public const int SENCE_接咖啡 = 10037;
public const int SENCE_接冰淇淋公共点 = 10038;
public const int SENCE_接1号冰淇淋 = 10039;
public const int SENCE_接2号冰淇淋 = 10040;
public const int SENCE_接3号冰淇淋 = 10041;
public const int SENCE_放咖啡位置 = 10042;
public const int SENCE_放冰淇淋位置 = 10043;

//add 新加场景
public const int SENCE_接咖啡后回原点 = 10051;
public const int SENCE_咖啡杯回原点 = 10050;
public const int SENCE_冰淇淋杯回原点 = 10049;
public const int SENCE_取咖啡出餐 = 10052;
#endregion


private LebaiRobotClient client;
public RobotData robotData;
public bool IsIdle { get; set; } = false;
public bool IsConnected { get { return null != robotData; } }
public void Connect(string ip)
{
MessageLog.GetInstance.Show($"机器人IP地址:{ip}");
bool ErrorFlag = false;
while (robotData == null)
{
try
{
client = new LebaiRobotClient(ip);
robotData = client.GetRobotData().Result;
ActionManage.GetInstance.Send("乐白机器人数据");
}
catch (Exception ex)
{
if (!ErrorFlag)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
ErrorFlag = true;
}
Thread.Sleep(3000);
}
}
StartRobot();

MessageLog.GetInstance.Show("乐百机器人连接成功!");
}
/// <summary>
/// 机器人重连检测
/// </summary>
/// <param name="ip"></param>
public void Reconnect(string ip)
{
if (client == null)
{
try
{
client = new LebaiRobotClient(ip);
}
catch (Exception)
{

// throw;
}
}
check:
while (robotData != null)
{

try
{
robotData = client.GetRobotData().Result; }
catch (Exception)
{
robotData = null;
// throw;
}
}
MessageLog.GetInstance.Show("乐白机器人断开连接,准备重连");
int num = 0;
while (num < 6 && robotData == null)
{
try
{
robotData = client.GetRobotData().Result;
}
catch (Exception ex)
{
if (num == 5)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

if (num < 5 && robotData == null)
{
Thread.Sleep(1000);
MessageLog.GetInstance.Show($"乐白机器人正在尝试第{num + 1}次重连....");
}
else if (num >= 5 && robotData == null)
{
MessageLog.GetInstance.Show("乐白机器人重连失败,请检查硬件连接");
//return;
}
num++;
}
if (robotData != null)
{
StartRobot();
MessageLog.GetInstance.Show("乐白机器人重连成功");
}
goto check;
}

public void GetRobotModeStatus()
{
if (robotData == null)
{

return;
}
int mode = robotData.RobotMode.Mode;
IsIdle = mode == 5;

for (int i = 0; i < 14; i++)
{
if (RTrig.GetInstance(((ELebaiRModel)i).ToString()).Start(mode == i))
MessageLog.GetInstance.Show(((ELebaiRModel)i).ToString());
}

}
public void GetSpeed()
{
//client.StartSys().GetAwaiter();
var aa = client.GetActualTcpSpeed().GetAwaiter();
//robotData.RobotMode.Mode
}

/// <summary>
/// 启动机器人
/// </summary>
public async void StartRobot()
{
if (robotData != null)
{
await client.StartSys();
await client.Sync();
MessageLog.GetInstance.Show("机器人启动成功");
}
}

/// <summary>
/// 启动示教
/// </summary>
public async void StartTeachMode()
{
try
{
if (robotData != null)
{
await client.TeachMode();
MessageLog.GetInstance.Show("机器人切换为示教模式.");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 结束示教
/// </summary>
public async void EndtTeachMode()
{
try
{
if (robotData != null)
{
await client.EndTeachMode();
MessageLog.GetInstance.Show("机器人切换为停止示教模式.");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 机器人急停
/// </summary>
public async void EStopRobot()
{
try
{
if (robotData != null)
{
await client.EStop();
MessageLog.GetInstance.Show("机器人急停");
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
}
}

/// <summary>
/// 获取抓手重量
/// </summary>
/// <returns></returns>
public double GetClawWdight()
{
if (robotData != null)
{
return client.GetClawWeight().Result.Weight_;
}
return 0;
}

/// <summary>
/// 获取信号量
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public SignalResult? GetValueAsync(int index = 0)
{
if (robotData == null) return default(SignalResult);
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
return client?.GetSignal(signalValue).Result;
}

/// <summary>
/// 设置信号量
/// </summary>
/// <param name="index"></param>
/// <param name="value"></param>
/// <returns></returns>
public SignalResult? SetValue(int value, int index = 0)
{
if (robotData == null) return default;
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
signalValue.Value = value;
return client.SetSignal(signalValue).Result;
}

/// <summary>
/// 获取输入DI状态
/// </summary>
/// <param name="pin"></param>
/// <returns></returns>
public bool GetInput(int pin = 0)
{
if (client == null) return false;
var res = client.GetDIO(new IOPin() { Pin = pin }).Result;
if (res != null)
{
return res.Value == 1 ? true : false;
}
return false;
}

/// <summary>
/// 运行指定的场景
/// </summary>
/// <param name="id"></param>
public async void Scene(int id)
{
CancellationToken cancellationToken = default(CancellationToken);
var result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
var first = result?.Items?.FirstOrDefault();
var r = first == null || first.Status != Lebai.SDK.Dtos.TaskStatus.Running && first.Status != TaskStatus.Pause;
while (!r)
{
Thread.Sleep(5);
result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
first = result?.Items?.FirstOrDefault();
r = first == null || first.Status != Lebai.SDK.Dtos.TaskStatus.Running && first.Status != Lebai.SDK.Dtos.TaskStatus.Pause;
}
while (GetValueAsync().Value != 0)
{
Thread.Sleep(500);
}
Thread.Sleep(1000);
if (robotData == null || client == null) return;
//if (!client.GetIsCanRunTask().Result) return;
await client?.RunScene(id);
MessageLog.GetInstance.Show($"调用场景:{id}");
}
}
}

+ 80
- 47
BPASmartClient.MorkT/Control_MorkT.cs View File

@@ -2,7 +2,9 @@
using BPASmartClient.Device;
using BPASmartClient.EventBus;
using BPASmartClient.GSIceCream;
using BPASmartClient.Helper;
using BPASmartClient.Lebai;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Message;
using BPASmartClient.Model;
using BPASmartClient.Model.冰淇淋.Enum;
@@ -25,9 +27,9 @@ namespace BPASmartClient.MorkT

GLV_MorkT morkT = new GLV_MorkT();


public override void DoMain()
{
IsHealth = true;
ServerInit();
DataParse();
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeEndCookEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
@@ -35,7 +37,30 @@ namespace BPASmartClient.MorkT
if (morkT.MakeCoffeeOrder != null)
morkT.MakeCoffeeOrder.OrderStatus = 1;
});

ActionManage.GetInstance.Register(new Action<object>((o) =>
{
switch (o)
{
case "机器人启动":
LebaiHelper.GetInstance().StartRobot();
break;
case "启动示教":
LebaiHelper.GetInstance().StartTeachMode();
break;
case "停止示教":
LebaiHelper.GetInstance().EndtTeachMode();
break;
case "机器人急停":
LebaiHelper.GetInstance().EStopRobot();
break;
default:
break;
}
}),"调试控制-机器人控制");
MessageLog.GetInstance.Show("MORKT 设备初始化完成");

}

public override void ResetProgram()
@@ -47,7 +72,7 @@ namespace BPASmartClient.MorkT
public override void MainTask()
{
MakeCoffeeProcess();
if(!LebaiRobot.GetInstance.GetInput())//取餐口有空余位置
if(!LebaiHelper.GetInstance().GetInput())//取餐口有空余位置
{
MakeIceCreamProcess();
MakeCoffeeComplete();
@@ -56,8 +81,8 @@ namespace BPASmartClient.MorkT

public override void ReadData()
{
morkT.lebai = LebaiRobot.GetInstance.GetValueAsync();
LebaiRobot.GetInstance.GetRobotModeStatus();
morkT.lebai = LebaiHelper.GetInstance().GetValueAsync();
LebaiHelper.GetInstance().GetRobotModeStatus();
}


@@ -211,9 +236,9 @@ namespace BPASmartClient.MorkT
{
DeviceProcessLogShow($"开始制作 [咖啡] 订单[{orderLoc.SortNum}]");
GetAndCheeckCoffe(orderLoc);
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_接咖啡后回原点);//把咖啡杯放到咖啡机机的位置后回原点
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_接咖啡后回原点);//把咖啡杯放到咖啡机机的位置后回原点
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
new DRCoffee_MakeCoffeeEvent() { DrinkCode = (Model.咖啡机.Enum.DrCoffeeDrinksCode)int.Parse(orderLoc.Loc) }.Publish(); //接咖啡控制
DeviceProcessLogShow($"发送咖啡机制作{orderLoc.Loc}!");
morkT.IsCoffeeMake = true; morkT.MakeCoffeeOrder = orderLoc;
@@ -246,9 +271,9 @@ namespace BPASmartClient.MorkT
/// </summary>
private void DoCoffeeQC(OrderLocInfo order)
{
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取咖啡出餐);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取咖啡出餐);
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
//订单状态改变:完成
OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK);
DeviceProcessLogShow($"{order.GoodsName}等待取餐");
@@ -262,36 +287,36 @@ namespace BPASmartClient.MorkT
/// <param name="order"></param>
private void GetAndCheeckCoffe(OrderLocInfo order)
{
LebaiRobot.GetInstance.SetValue(0);
LebaiHelper.GetInstance().SetValue(0);
OrderChange(order.SuborderId, ORDER_STATUS.COOKING);
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取咖啡杯);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取咖啡杯);
Wait();
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制
Thread.Sleep(500);
DeviceProcessLogShow("尝试取咖啡杯!");
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
int count = 2;
p:
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_咖啡杯检测);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_咖啡杯检测);
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);

if (!LebaiRobot.GetInstance.GetInput())
if (!LebaiHelper.GetInstance().GetInput())
{
if (count >= 3)
{
//退出循环回到初始位置
DeviceProcessLogShow($"执行{count}次取咖啡杯,仍为成功,订单默认废弃,机器人回到初始位置!");
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_咖啡杯回原点);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_咖啡杯回原点);
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
return;
}
DeviceProcessLogShow("执行二次取咖啡杯");
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_二次取咖啡杯);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_二次取咖啡杯);
Wait();
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
count++;
goto p;
}
@@ -315,22 +340,29 @@ namespace BPASmartClient.MorkT
{
if (IceCreamCanMake())
{
if (MorkIStatus.GetInstance().CurrentMode != MORKI_MODE.制冷模式) new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish();
if (MorkIStatus.GetInstance().CXB >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作
if(Status.status.ContainsKey("CurrentMode"))
{
if (LebaiRobot.GetInstance.GetInput(3))
{
if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡");
morkT.IceIsOK = false;
if ((MORKI_MODE)Status.status["CurrentMode"] != MORKI_MODE.制冷模式) new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish();
}

}
else if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
if(Status.status.ContainsKey("CBX"))
{
if ((short)Status.status["CBX"] >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作
{
morkT.IceIsOK = true;
DeviceProcessLogShow($"开始制作 [冰淇淋] 订单[{order.SortNum}]");
DoIceCream(order);
if (LebaiHelper.GetInstance().GetInput(3))
{
if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡");
morkT.IceIsOK = false;
}
else if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
{
morkT.IceIsOK = true;
DeviceProcessLogShow($"开始制作 [冰淇淋] 订单[{order.SortNum}]");
DoIceCream(order);
}
}
}
}
}

@@ -351,8 +383,8 @@ namespace BPASmartClient.MorkT
/// </summary>
private void GetIceCreamCup()
{
LebaiRobot.GetInstance.SetValue(0);
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取冰淇淋杯);
LebaiHelper.GetInstance().SetValue(0);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取冰淇淋杯);
Wait();
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制
Thread.Sleep(500);
@@ -366,27 +398,27 @@ namespace BPASmartClient.MorkT
private void CheckICeCreaCup()
{
int count = 2;
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
p:
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_冰淇淋杯检测);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_冰淇淋杯检测);
Wait();
LebaiRobot.GetInstance.SetValue(1);
if (!LebaiRobot.GetInstance.GetInput())
LebaiHelper.GetInstance().SetValue(1);
if (!LebaiHelper.GetInstance().GetInput())
{
if (count >= 3)
{
//退出循环回到初始位置
DeviceProcessLogShow($"执行{count}次取冰淇淋杯,仍未成功,订单默认废弃,机器人回到初始位置!");
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_冰淇淋杯回原点);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_冰淇淋杯回原点);
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
return;
}
DeviceProcessLogShow($"执行{count}次取冰淇淋杯!");
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_二次取冰淇淋杯);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_二次取冰淇淋杯);
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
count++;
goto p;
}
@@ -401,9 +433,9 @@ namespace BPASmartClient.MorkT
{
//制冷模式
new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish();
LebaiRobot.GetInstance.SetValue(0);
LebaiHelper.GetInstance().SetValue(0);
OrderChange(order.SuborderId, ORDER_STATUS.COOKING);
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_接1号冰淇淋);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_接1号冰淇淋);
Wait();
bool doItResult = true;
//出料
@@ -418,7 +450,8 @@ namespace BPASmartClient.MorkT
else
{
int count_1 = 0;
while (MorkIStatus.GetInstance().CXB <= 86)

while ((short)Status.status["CBX"] <= 86)
{
Thread.Sleep(5);
count_1++;
@@ -427,7 +460,7 @@ namespace BPASmartClient.MorkT
}
IceCreamCookCheck();
}
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
}

/// <summary>
@@ -436,13 +469,13 @@ namespace BPASmartClient.MorkT
/// <param name="order"></param>
private void PutIceCream(OrderLocInfo order)
{
while (LebaiRobot.GetInstance.GetInput())
while (LebaiHelper.GetInstance().GetInput())
{
Thread.Sleep(500);
}
LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_放冰淇淋位置);
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_放冰淇淋位置);
Wait();
LebaiRobot.GetInstance.SetValue(1);
LebaiHelper.GetInstance().SetValue(1);
//订单状态改变:完成
OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK);
DeviceProcessLogShow($"{order.GoodsName}等待取餐");
@@ -457,7 +490,7 @@ namespace BPASmartClient.MorkT
{
int retry = 3;
DateTime beginTime = DateTime.Now;
while (!LebaiRobot.GetInstance.GetInput(3))
while (!LebaiHelper.GetInstance().GetInput(3))
{
if (retry <= 0 && DateTime.Now.Subtract(beginTime).TotalSeconds >= 10)
{


+ 5
- 4
BPASmartClient.MorkT/PolymerBatching.cs View File

@@ -1,5 +1,6 @@

using BPASmartClient.Lebai;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Model.单片机.Enum;
using System;
using System.Collections.Generic;
@@ -102,19 +103,19 @@ namespace BPASmartClient.MorkT
switch (loc)
{
case ICE_MAIN_BATCHIN1_LOC:
sence = LebaiRobot.SENCE_接1号冰淇淋;
sence = LebaiHelper.SENCE_接1号冰淇淋;
return IC_SE.SE_1;

case ICE_MAIN_BATCHIN2_LOC:
sence = LebaiRobot.SENCE_接2号冰淇淋;
sence = LebaiHelper.SENCE_接2号冰淇淋;
return IC_SE.SE_2;

case ICE_MAIN_BATCHIN3_LOC:
sence = LebaiRobot.SENCE_接3号冰淇淋;
sence = LebaiHelper.SENCE_接3号冰淇淋;
return IC_SE.SE_3;

default:
sence = LebaiRobot.SENCE_接1号冰淇淋;
sence = LebaiHelper.SENCE_接1号冰淇淋;
return IC_SE.SE_1;
}
}


+ 2
- 0
BPASmartClient.SCChip/ICChipMachine.cs View File

@@ -378,6 +378,8 @@ namespace BPASmartClient.SCChip
}
});
InitStatus();
//测试
Start();
}
}



+ 1
- 1
BPASmartClient.SerialPort/SerialPortClient.cs View File

@@ -1,4 +1,5 @@
using BPASmartClient.Helper;
using BPASmartClient.Message;
using System;
using System.IO.Ports;
using System.Linq;
@@ -99,7 +100,6 @@ namespace BPASmartClient.SerialPort
{
if (comPort.IsOpen) //判断是否打开串口
{

byte[] receivedData = new byte[comPort.BytesToRead]; //创建接收字节数组
comPort.Read(receivedData, 0, receivedData.Length); //读取数据



+ 1
- 1
BPASmartClient.ViewModel/AdminstratorsViewModel.cs View File

@@ -27,7 +27,7 @@ namespace BPASmartClient.ViewModel
AdminLoginCommand = new RelayCommand(() =>
{

ActionManage.GetInstance.Send("Lonin");
ActionManage.GetInstance.Send("LoginSuccess");
});
}


+ 4
- 0
BPASmartClient.ViewModel/BPASmartClient.ViewModel.csproj View File

@@ -15,9 +15,13 @@
<ItemGroup>
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" />
<ProjectReference Include="..\BPASmartClient.CustomResource\BPASmartClient.CustomResource.csproj" />
<ProjectReference Include="..\BPASmartClient.DRCoffee\BPASmartClient.DRCoffee.csproj" />
<ProjectReference Include="..\BPASmartClient.GSIceCream\BPASmartClient.GSIceCream.csproj" />
<ProjectReference Include="..\BPASmartClient.Helper\BPASmartClient.Helper.csproj" />
<ProjectReference Include="..\BPASmartClient.IoT\BPASmartClient.IoT.csproj" />
<ProjectReference Include="..\BPASmartClient.Lebai\BPASmartClient.Lebai.csproj" />
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" />
<ProjectReference Include="..\BPASmartClient.SCChip\BPASmartClient.SCChip.csproj" />
</ItemGroup>

</Project>

+ 1
- 14
BPASmartClient.ViewModel/MainViewModel.cs View File

@@ -38,12 +38,6 @@ namespace BPASmartClient.ViewModel
OnPropertyChanged("NetworkConnectState");
}
}
//状态隐藏
public Visibility VsMenuItem { get { return _vsMenuItem; } set { _vsMenuItem = value; OnPropertyChanged(); } }
private Visibility _vsMenuItem;

public RelayCommand LogoutCommand { get; set; }

/// <summary>
/// 是否告警
/// </summary>
@@ -80,14 +74,7 @@ namespace BPASmartClient.ViewModel
};
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Start();
ActionManage.GetInstance.Register(new Action(() =>
{
VsMenuItem = Visibility.Hidden;
}),"Lonin");
LogoutCommand = new RelayCommand(() =>
{
VsMenuItem = Visibility.Visible;
});


}


+ 212
- 0
BPASmartClient.ViewModel/MorkT_DebugViewModel.cs View File

@@ -0,0 +1,212 @@
using BPASmartClient.Business;
using BPASmartClient.Device;
using BPASmartClient.DRCoffee;
using BPASmartClient.EventBus;
using BPASmartClient.GSIceCream;
using BPASmartClient.Helper;
using BPASmartClient.Lebai;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Model;
using BPASmartClient.Model.冰淇淋.Enum;
using BPASmartClient.Model.咖啡机.Enum;
using BPASmartClient.SCChip;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace BPASmartClient.ViewModel
{
public class MorkT_DebugViewModel : ObservableObject
{
#region 乐白机器人
/// <summary>
/// 乐白机器人连接状态
/// </summary>
public string RobotConnected { get; set; }
/// <summary>
/// 乐白机器人的模式状态
/// </summary>
public ELebaiRModel RobotMode { get; set; }
/// <summary>
/// 机器人控制指令
/// </summary>
public RelayCommand<object> Button_RobotControlCommand { get; set; }
/// <summary>
/// 机器人控制
/// </summary>
/// <param name="o"></param>
private void Button_RobotControl(object o)
{
ActionManage.GetInstance.Send("调试控制-机器人控制",o.ToString());
}

#endregion

#region 冰淇淋机器
/// <summary>
/// 制作冰淇淋
/// </summary>
public RelayCommand Button_MakeIceCreamCommand { get; set; }
/// <summary>
/// 选择冰淇淋模式
/// </summary>
public RelayCommand Button_SetIceCreamModelCommand { get; set; }

/// <summary>
/// 冰淇淋连接状态
/// </summary>
public string IceCreamConnected { get; set; }
/// <summary>
/// 预冷温度
/// </summary>
public short YLWD { get; set; }
/// <summary>
/// 回气温度
/// </summary>
public short HQWD { get; set; }
/// <summary>
/// 环境温度
/// </summary>
public short HJWD { get; set; }
/// <summary>
/// 电流
/// </summary>
public short DL { get; set; }
/// <summary>
/// 电压
/// </summary>
public short DY { get; set; }
/// <summary>
/// 当前模式
/// </summary>
public MORKI_MODE CurrentMode { get; set; }
/// <summary>
/// 故障
/// </summary>
public MORKI_FAULT IceCreamFault { get; set; }
/// <summary>
/// 成型比
/// </summary>
public byte CXB { get; set; }
/// <summary>
/// 打料完成状态
/// </summary>
public string DLCompleted { get; set; }

public List<string> IceCreamModes { get; set; } = new List<string>();
public string SelecteIceCreamdMode { get; set; }

private void Button_MakeIceCream()
{
}
private void Button_SetIceCreamModel()
{
MORKI_MODE mORKI_MODE = (MORKI_MODE)Enum.Parse(typeof(MORKI_MODE), SelecteIceCreamdMode);
new GSIceCream_ModeSetEvent() { Mode = mORKI_MODE }.Publish();
}
#endregion

#region 咖啡机
/// <summary>
/// 咖啡机连接状态
/// </summary>
public string CoffeeConnected { get; set; }
/// <summary>
/// 咖啡机状态
/// </summary>
public DrCoffeeStatus CoffeeStatus { get; set; }
/// <summary>
/// 应用状态
/// </summary>
public DrCoffeeAppStatus AppStatus { get; set; }
/// <summary>
/// 告警
/// </summary>
public DrCoffeeWarning Warning { get; set; }
/// <summary>
/// 故障信息
/// </summary>
public DrCoffeeFault CaffeeFault { get; set; }

public List<string> Coffees { get; set; } = new List<string>();
public string SelectedCoffee { get; set; }

public List<string> CoffeeCmds { get; set; } = new List<string>();
public string SelectedCoffeeCmd { get; set; }
#endregion


Dictionary<string, object> CurrentData { get; set; }
public MorkT_DebugViewModel()
{
Button_RobotControlCommand = new RelayCommand<object>(Button_RobotControl);
Button_MakeIceCreamCommand = new RelayCommand(Button_MakeIceCream);
Button_SetIceCreamModelCommand = new RelayCommand(Button_SetIceCreamModel);

foreach (DrCoffeeDrinksCode code in Enum.GetValues(typeof(DrCoffeeDrinksCode)))
{
Coffees.Add(code.ToString());
}
SelectedCoffee = Coffees[0];
foreach (DrCoffeeCommCmd code in Enum.GetValues(typeof(DrCoffeeCommCmd)))
{
CoffeeCmds.Add(code.ToString());
}
SelectedCoffeeCmd = CoffeeCmds[0];

foreach (MORKI_MODE code in Enum.GetValues(typeof(MORKI_MODE)))
{
IceCreamModes.Add(code.ToString());
}
SelecteIceCreamdMode = IceCreamModes[0];


ThreadManage.GetInstance().StartLong(new Action(() =>
{
Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices().ForEach(device =>
{
if (device.Name == "MorkT") CurrentData = device.Status.GetStatus();
});
if (CurrentData != null && CurrentData.Count != 0)
{
RobotConnected = (bool)CurrentData["Lebai.LebaiRobot.Connected"] ? "已连接" : "未连接";
IceCreamConnected = (bool)CurrentData["GSIceCream.IceCreamMachine.IsConnected"] ? "已连接" : "未连接";
CoffeeConnected = (bool)CurrentData["GSIceCream.IceCreamMachine.IsConnected"] ? "已连接" : "未连接";

RobotMode = (ELebaiRModel)CurrentData["Lebai.LebaiRobot.RobotMode"];

CoffeeStatus = (DrCoffeeStatus)CurrentData["DRCoffee.CoffeeMachine.Status"];
AppStatus = (DrCoffeeAppStatus)CurrentData["DRCoffee.CoffeeMachine.AppStatus"];
Warning = (DrCoffeeWarning)CurrentData["DRCoffee.CoffeeMachine.Warning"];
CaffeeFault = (DrCoffeeFault)CurrentData["DRCoffee.CoffeeMachine.Fault"];

YLWD = (short)CurrentData["GSIceCream.IceCreamMachine.YLWD"];
HQWD = (short)CurrentData["GSIceCream.IceCreamMachine.HQWD"];
HJWD = (short)CurrentData["GSIceCream.IceCreamMachine.HJWD"];
DL = (short)CurrentData["GSIceCream.IceCreamMachine.DL"];
DY = (short)CurrentData["GSIceCream.IceCreamMachine.DY"];
CurrentMode = (MORKI_MODE)CurrentData["GSIceCream.IceCreamMachine.CurrentMode"];
IceCreamFault = (MORKI_FAULT)CurrentData["GSIceCream.IceCreamMachine.Fault"];
CXB = (byte)CurrentData["GSIceCream.IceCreamMachine.CXB"];
DLCompleted = (bool)CurrentData["GSIceCream.IceCreamMachine.DLCompleted"] ? "打料完成" : "打料中";
}



Thread.Sleep(500);
}), "MorkT-状态刷新");
}

}
}

+ 1
- 1
BPASmartClient.ViewModel/ShopDeviceConfigViewModel.cs View File

@@ -201,7 +201,7 @@ namespace BPASmartClient.ViewModel
private void DataListInit()
{
Ports.Clear();
SerialPort.GetPortNames().ToList().ForEach((item) => { Ports.Add(item); });
System.IO.Ports.SerialPort.GetPortNames().ToList().ForEach((item) => { Ports.Add(item); });

BaudRates.Clear();
int[] rb = new int[] { 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 43000, 57600, 76800, 115200 };


+ 1
- 4
BPASmartClient/App.config View File

@@ -3,7 +3,7 @@
<appSettings>
<!--通用配置-->
<!--1:且时且多冰淇淋咖啡机,2:且时且多煮面机,3:海科煮面机测试店铺-->
<add key="ClientId" value="48"/>
<add key="ClientId" value="50"/>
<!--<add key="ApolloUri" value="http://10.2.1.21:28080"/>
<add key="OrderServiceUri" value="http://10.2.1.26:21527/order/"/>
<add key="StockServiceUri" value="http://10.2.1.26:21527/stock/"/>-->
@@ -23,9 +23,6 @@
<add key="IsEnableTest" value="False"/>





<!--测试环境-->
<!--<add key="ApolloUri" value="http://10.2.1.21:28070"/>
<add key="OrderServiceUri" value="https://bpa.black-pa.com:21528/order/"/>


+ 1
- 0
BPASmartClient/BPASmartClient.csproj View File

@@ -30,6 +30,7 @@
<ProjectReference Include="..\BPASmartClient.MorkT\BPASmartClient.MorkT.csproj" />
<ProjectReference Include="..\BPASmartClient.SCChip\BPASmartClient.SCChip.csproj" />
<ProjectReference Include="..\BPASmartClient.ViewModel\BPASmartClient.ViewModel.csproj" />
<ProjectReference Include="..\HBLConsole.MORKIC\BPASmartClient.MORKIC.csproj" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
BPASmartClient/Control/DebugView.xaml View File

@@ -21,7 +21,7 @@
</Grid.RowDefinitions>

<StackPanel Orientation="Horizontal" Grid.Row="0">
<Button Content="初始化" Command="{Binding PlcInite}" Margin="10,0,10,0"></Button>
<Button Content="初始化" Command="{Binding PlcInite}" Margin="10,0,10,0" Cursor="Hand"></Button>
<Button Content="模拟订单" Command="{Binding SimulateOrder}" Margin="10,0,10,0"></Button>
<Button Content="手撕包菜" Command="{Binding ShreddCabbage}" Margin="10,0,10,0"></Button>
<Button Content="盐煎肉" Command="{Binding FryPork}" Margin="10,0,10,0"></Button>


+ 244
- 0
BPASmartClient/Control/MorkT_DebugView.xaml View File

@@ -0,0 +1,244 @@
<UserControl x:Class="BPASmartClient.Control.MorkT_DebugView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BPASmartClient.Control"
xmlns:vm ="clr-namespace:BPASmartClient.ViewModel;assembly=BPASmartClient.ViewModel"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="1000" >
<UserControl.DataContext>
<vm:MorkT_DebugViewModel/>
</UserControl.DataContext>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" />
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="9*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>

<GroupBox Grid.ColumnSpan="2"
FontFamily="楷体"
FontSize="20"
Header=" 乐白机器人 ">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding RobotConnected}"
Margin="120,0,0,0"/>
<TextBlock Text="乐白机器人控制"
Grid.Row="1"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ListBox Grid.Row="2" Background="Transparent">
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<WrapPanel Orientation="Horizontal" IsItemsHost="True" ScrollViewer.CanContentScroll="True"/>
</ScrollViewer>
</ControlTemplate>
</ListBox.Template>
<Button Content="机器人启动"
Margin="20,5" Width="150" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人启动">
</Button>
<Button Content="启动示教"
Margin="20,5" Width="150" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="启动示教"/>
<Button Content="停止示教"
Margin="20,5" Width="150" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="停止示教"/>
<Button Content="机器人急停"
Margin="20,5" Width="110" Height="40"
Command="{Binding Button_RobotControlCommand}"
CommandParameter="机器人急停"/>

</ListBox>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1"
FontFamily="楷体"
FontSize="20"
Header=" 冰淇淋机器 ">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding IceCreamConnected}"
Margin="120,0,0,0"/>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>

<TextBlock Grid.Row="0" Grid.Column="0">预冷温度</TextBlock>
<TextBlock
Grid.Row="0"
Grid.Column="1"
Text="{Binding YLWD}" />
<TextBlock Grid.Row="0" Grid.Column="2">回气温度</TextBlock>
<TextBlock
Grid.Row="0"
Grid.Column="3"
Text="{Binding HQWD}" />

<TextBlock Grid.Row="1" Grid.Column="0">环境温度</TextBlock>
<TextBlock
Grid.Row="1"
Grid.Column="1"
Text="{Binding HJWD}" />
<TextBlock Grid.Row="1" Grid.Column="2">当前模式</TextBlock>
<TextBlock
Grid.Row="1"
Grid.Column="3"
Text="{Binding CurrentMode}" />

<TextBlock Grid.Row="2" Grid.Column="0">电流</TextBlock>
<TextBlock
Grid.Row="2"
Grid.Column="1"
Text="{Binding DL}" />
<TextBlock Grid.Row="2" Grid.Column="2">电压</TextBlock>
<TextBlock
Grid.Row="2"
Grid.Column="3"
Text="{Binding DY}" />

<TextBlock Grid.Row="3" Grid.Column="0">成型比</TextBlock>
<TextBlock
Grid.Row="3"
Grid.Column="1"
Text="{Binding CXB}" />
<TextBlock Grid.Row="3" Grid.Column="2">故障</TextBlock>
<TextBlock
Grid.Row="3"
Grid.Column="3"
Text="{Binding IceCreamFault}" />
</Grid>
<StackPanel Grid.Row="2" Orientation="Vertical">
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>冰淇淋</TextBlock>
<Button Command="{Binding Button_MakeIceCreamCommand}"
Margin="20,0"
Content="制作" />
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>模式</TextBlock>
<ComboBox Width="100"
Margin="20,0"
ItemsSource="{Binding IceCreamModes}"
SelectedItem="{Binding SelecteIceCreamdMode}" />
<Button Command="{Binding Button_SetIceCreamModelCommand}"
Margin="20,0"
Content="设置" />
</StackPanel>
</StackPanel>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Grid.Column="1"
FontFamily="楷体"
FontSize="20"
Header=" 咖啡机">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="连接状态" />
<TextBlock Text="{Binding CoffeeConnected}"
Margin="120,0,0,0"/>
<Grid Grid.Row="1">
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="99" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="171" />
</Grid.ColumnDefinitions>
<TextBlock Height="23" Width="100" FontSize="18" HorizontalAlignment="Center">咖啡机状态</TextBlock>
<TextBlock FontSize="18"
Grid.Column="1"
Text="{Binding CoffeeStatus}" Height="23" Width="0" />
<TextBlock Grid.Column="2" Height="23" Width="80" FontSize="18">应用状态</TextBlock>
<TextBlock FontSize="18"
Grid.Column="3"
Text="{Binding AppStatus}" Height="23" Width="100" />
<TextBlock Grid.Row="1" Grid.Column="0" Height="22" Width="80" FontSize="18">告警信息</TextBlock>
<TextBlock FontSize="15"
Grid.Row="1"
Grid.Column="1"
Text="{Binding Warning}" />
<TextBlock Grid.Row="1" Grid.Column="2" Height="22" Width="80" FontSize="18">故障信息</TextBlock>
<TextBlock FontSize="18"
Grid.Row="1"
Grid.Column="3"
Text="{Binding CaffeeFault}" Height="22" Width="60" />
</Grid>
<StackPanel Grid.Row="2" Orientation="Vertical">
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>饮品</TextBlock>
<ComboBox Margin="10,0"
Width="100"
ItemsSource="{Binding Coffees}"
SelectedItem="{Binding SelectedCoffee}" />
<Button Margin="10,0"
Command="{}"
Content="制作"/>
<Button Margin="10,0"
Command="{}"
Content="停止制作"/>
</StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<TextBlock>模式</TextBlock>
<ComboBox Margin="10,0"
Width="100"
ItemsSource="{Binding CoffeeCmds}"
SelectedItem="{Binding SelectedCoffeeCmd}"/>
<Button Margin="10,0"
Command="{}"
Content="设置" Cursor="Hand"/>
</StackPanel>
</StackPanel>
</Grid>
</GroupBox>
</Grid>
</UserControl>

+ 28
- 0
BPASmartClient/Control/MorkT_DebugView.xaml.cs View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace BPASmartClient.Control
{
/// <summary>
/// MorkT_DebugView.xaml 的交互逻辑
/// </summary>
public partial class MorkT_DebugView : UserControl
{
public MorkT_DebugView()
{
InitializeComponent();
}
}
}

+ 22
- 3
BPASmartClient/DeviceInfo.xml View File

@@ -26,17 +26,36 @@
</Peripherals>
</Device>-->

<Device Name="MorkT" Module="BPASmartClient.MorkF.Control_MorkF" DeviceId="29">
<Device Name="MorkT" Module="BPASmartClient.MorkT.Control_MorkT" DeviceId="29">
<Peripherals>
<Peripheral Module="BPASmartClient.DRCoffee.CoffeeMachine">
<Parameters>
<PortName>COM5</PortName>
<BaudRate>9600</BaudRate>
<PortName>COM4</PortName>
<BaudRate>115200</BaudRate>
<!--<IpAddress>192.168.6.1</IpAddress>
<Port>502</Port>
<PLCReadAddress>M,M0.1,1;M,M1.0,8;M,M2.0,9;M,M8.0,4;M,M13.5,1;M,M16.0,7;</PLCReadAddress>-->
</Parameters>
</Peripheral>
<Peripheral Module="BPASmartClient.GSIceCream.IceCreamMachine">
<Parameters>
<PortName>COM6</PortName>
<BaudRate>9600</BaudRate>
</Parameters>
</Peripheral>
<Peripheral Module="BPASmartClient.SCChip.ICChipMachine">
<Parameters>
<PortName>COM7</PortName>
<BaudRate>9600</BaudRate>
</Parameters>
</Peripheral>
<!--<Peripheral Module="BPASmartClient.Lebai.LebaiRobot">
<Parameters>
<IpAddress>192.168.2.100</IpAddress>
<HandSensor>1</HandSensor>
<OutputSingalValue>0</OutputSingalValue>
</Parameters>
</Peripheral>-->
</Peripherals>
</Device>



+ 5
- 8
BPASmartClient/MainWindow.xaml View File

@@ -50,8 +50,8 @@
Margin="20,0,0,0"
VerticalAlignment="Center"
Style="{DynamicResource imagetop_Title}" />
<Grid Grid.Column="1" Visibility="{Binding VsMenuItem}" >
<Menu>
<Grid Grid.Column="1" >
<Menu x:Name="myMenu">
<MenuItem Header="功能列表">
<MenuItem
Click="MenuItem_Click"
@@ -87,7 +87,7 @@
Click="MenuItem_Click"
FontSize="12"
Header="调试界面"
Tag="DebugView" />
Tag="MorkT_DebugView" />
</MenuItem>
<MenuItem Header="状态监视">
<MenuItem
@@ -289,8 +289,7 @@
VerticalAlignment="Top"
Click="Button_Login"
Content="登录"
Cursor="Hand"
Style="{DynamicResource CommonBtn_返回}" />
Cursor="Hand"/>
<Button
Name="logout"
Grid.Row="0"
@@ -300,9 +299,7 @@
VerticalAlignment="Top"
Click="Button_LogOut"
Content="注销"
Cursor="Hand"
Style="{DynamicResource CommonBtn_返回}"
Command="{Binding LogoutCommand}"/>
Cursor="Hand" />
</Grid>
<!--#region 底部窗体栏-->



+ 7
- 2
BPASmartClient/MainWindow.xaml.cs View File

@@ -40,6 +40,11 @@ namespace BPASmartClient
InitializeComponent();
MainViewModel.GetInstance().window = this;
this.DataContext = MainViewModel.GetInstance();
ActionManage.GetInstance.Register(new Action(() =>
{
myMenu.Visibility = Visibility.Visible;
MenuItem_Click(new MenuItem() { Tag = "LogView", Header = "日志监视" },null);
}), "LoginSuccess");
Initialize();
}

@@ -82,7 +87,7 @@ namespace BPASmartClient

}), "启动主IoT", false);

}
#endregion

@@ -218,7 +223,7 @@ namespace BPASmartClient

private void Button_LogOut(object sender, RoutedEventArgs e)
{
myMenu.Visibility = Visibility.Hidden;
}
}
}

+ 7
- 0
ClassLibrary1/Class1.cs View File

@@ -0,0 +1,7 @@
namespace ClassLibrary1
{
public class Class1
{

}
}

+ 9
- 0
ClassLibrary1/ClassLibrary1.csproj View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>

+ 5
- 5
HBLConsole.MORKIC/Control_MORKIC.cs View File

@@ -152,7 +152,7 @@ namespace BPASmartClient.MORKIC

private int NoOrderTime = 0;

public override DeviceClientType DeviceType => throw new NotImplementedException();
public override DeviceClientType DeviceType => DeviceClientType.MORKT;

//订单制作
public void OrderMake()
@@ -605,22 +605,22 @@ namespace BPASmartClient.MORKIC

public override void Stop()
{
throw new NotImplementedException();
}

public override void ReadData()
{
throw new NotImplementedException();
}

public override void MainTask()
{
throw new NotImplementedException();
}

public override void ResetProgram()
{
throw new NotImplementedException();
}
}



+ 487
- 0
SmartClient.sln View File

@@ -78,128 +78,614 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkF", "BPA
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MORKIC", "HBLConsole.MORKIC\BPASmartClient.MORKIC.csproj", "{31A3B51C-A4BB-4FEB-B712-38482F6D1667}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.LebaiRobot", "BPASmartClient.LebaiRobot\BPASmartClient.LebaiRobot.csproj", "{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|ARM.ActiveCfg = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|ARM.Build.0 = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|ARM64.Build.0 = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|x64.ActiveCfg = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|x64.Build.0 = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|x86.ActiveCfg = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Debug|x86.Build.0 = Debug|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|Any CPU.Build.0 = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|ARM.ActiveCfg = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|ARM.Build.0 = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|ARM64.ActiveCfg = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|ARM64.Build.0 = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|x64.ActiveCfg = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|x64.Build.0 = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|x86.ActiveCfg = Release|Any CPU
{31E9DC70-5889-4BA5-A5BA-FFDE66AFF314}.Release|x86.Build.0 = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|ARM.Build.0 = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|ARM64.Build.0 = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|x64.ActiveCfg = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|x64.Build.0 = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|x86.ActiveCfg = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Debug|x86.Build.0 = Debug|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|Any CPU.Build.0 = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|ARM.ActiveCfg = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|ARM.Build.0 = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|ARM64.ActiveCfg = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|ARM64.Build.0 = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|x64.ActiveCfg = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|x64.Build.0 = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|x86.ActiveCfg = Release|Any CPU
{BA543940-3C97-410D-B66C-1B928FCBB567}.Release|x86.Build.0 = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|Any CPU.Build.0 = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|ARM.ActiveCfg = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|ARM.Build.0 = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|ARM64.Build.0 = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|x64.ActiveCfg = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|x64.Build.0 = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|x86.ActiveCfg = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Debug|x86.Build.0 = Debug|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|Any CPU.Build.0 = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|ARM.ActiveCfg = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|ARM.Build.0 = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|ARM64.ActiveCfg = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|ARM64.Build.0 = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|x64.ActiveCfg = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|x64.Build.0 = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|x86.ActiveCfg = Release|Any CPU
{51E93537-DE9A-460C-B2B6-5FCB7A616A94}.Release|x86.Build.0 = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|ARM.Build.0 = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|ARM64.Build.0 = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|x64.ActiveCfg = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|x64.Build.0 = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|x86.ActiveCfg = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Debug|x86.Build.0 = Debug|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|Any CPU.Build.0 = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|ARM.ActiveCfg = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|ARM.Build.0 = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|ARM64.ActiveCfg = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|ARM64.Build.0 = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|x64.ActiveCfg = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|x64.Build.0 = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|x86.ActiveCfg = Release|Any CPU
{F57AF771-8514-4020-BBF3-1708388DD4B3}.Release|x86.Build.0 = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|ARM.Build.0 = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|ARM64.Build.0 = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|x64.ActiveCfg = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|x64.Build.0 = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|x86.ActiveCfg = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Debug|x86.Build.0 = Debug|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|Any CPU.Build.0 = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|ARM.ActiveCfg = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|ARM.Build.0 = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|ARM64.ActiveCfg = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|ARM64.Build.0 = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|x64.ActiveCfg = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|x64.Build.0 = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|x86.ActiveCfg = Release|Any CPU
{69F90530-ADA4-4A0C-8068-AAC5584072D7}.Release|x86.Build.0 = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|ARM.Build.0 = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|ARM64.Build.0 = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|x64.ActiveCfg = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|x64.Build.0 = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|x86.ActiveCfg = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Debug|x86.Build.0 = Debug|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|Any CPU.Build.0 = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|ARM.ActiveCfg = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|ARM.Build.0 = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|ARM64.ActiveCfg = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|ARM64.Build.0 = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|x64.ActiveCfg = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|x64.Build.0 = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|x86.ActiveCfg = Release|Any CPU
{2344EB60-1760-4DF0-961A-FA5BE5BC47CC}.Release|x86.Build.0 = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|Any CPU.Build.0 = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|ARM.ActiveCfg = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|ARM.Build.0 = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|ARM64.Build.0 = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|x64.ActiveCfg = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|x64.Build.0 = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|x86.ActiveCfg = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Debug|x86.Build.0 = Debug|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|Any CPU.ActiveCfg = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|Any CPU.Build.0 = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|ARM.ActiveCfg = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|ARM.Build.0 = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|ARM64.ActiveCfg = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|ARM64.Build.0 = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|x64.ActiveCfg = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|x64.Build.0 = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|x86.ActiveCfg = Release|Any CPU
{202763AA-4C4C-4738-B530-93A9A1ECE578}.Release|x86.Build.0 = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|Any CPU.Build.0 = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|ARM.ActiveCfg = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|ARM.Build.0 = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|ARM64.Build.0 = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|x64.ActiveCfg = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|x64.Build.0 = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|x86.ActiveCfg = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Debug|x86.Build.0 = Debug|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|Any CPU.ActiveCfg = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|Any CPU.Build.0 = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|ARM.ActiveCfg = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|ARM.Build.0 = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|ARM64.ActiveCfg = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|ARM64.Build.0 = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|x64.ActiveCfg = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|x64.Build.0 = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|x86.ActiveCfg = Release|Any CPU
{13C86146-CD3C-4CD3-AB7F-7A155E222832}.Release|x86.Build.0 = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|ARM.Build.0 = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|ARM64.Build.0 = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|x64.ActiveCfg = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|x64.Build.0 = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|x86.ActiveCfg = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Debug|x86.Build.0 = Debug|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|Any CPU.Build.0 = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|ARM.ActiveCfg = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|ARM.Build.0 = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|ARM64.ActiveCfg = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|ARM64.Build.0 = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|x64.ActiveCfg = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|x64.Build.0 = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|x86.ActiveCfg = Release|Any CPU
{0827FA85-8180-4A85-BE58-9483AC4BB3BA}.Release|x86.Build.0 = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|ARM.Build.0 = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|ARM64.Build.0 = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|x64.ActiveCfg = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|x64.Build.0 = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|x86.ActiveCfg = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Debug|x86.Build.0 = Debug|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|Any CPU.Build.0 = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|ARM.ActiveCfg = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|ARM.Build.0 = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|ARM64.ActiveCfg = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|ARM64.Build.0 = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|x64.ActiveCfg = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|x64.Build.0 = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|x86.ActiveCfg = Release|Any CPU
{8878BCFD-AC5E-4D84-8C63-CA99DDE036EE}.Release|x86.Build.0 = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|ARM.ActiveCfg = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|ARM.Build.0 = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|ARM64.Build.0 = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|x64.ActiveCfg = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|x64.Build.0 = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|x86.ActiveCfg = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Debug|x86.Build.0 = Debug|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|Any CPU.Build.0 = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|ARM.ActiveCfg = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|ARM.Build.0 = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|ARM64.ActiveCfg = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|ARM64.Build.0 = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|x64.ActiveCfg = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|x64.Build.0 = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|x86.ActiveCfg = Release|Any CPU
{B399BCFF-82E8-4940-9CE5-B7DCDDFDC696}.Release|x86.Build.0 = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|ARM.Build.0 = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|ARM64.Build.0 = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|x64.ActiveCfg = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|x64.Build.0 = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|x86.ActiveCfg = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Debug|x86.Build.0 = Debug|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|Any CPU.Build.0 = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|ARM.ActiveCfg = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|ARM.Build.0 = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|ARM64.ActiveCfg = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|ARM64.Build.0 = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|x64.ActiveCfg = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|x64.Build.0 = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|x86.ActiveCfg = Release|Any CPU
{A2A5CB83-11C7-4534-A65D-6F957B60EEFF}.Release|x86.Build.0 = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|ARM.Build.0 = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|ARM64.Build.0 = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|x64.ActiveCfg = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|x64.Build.0 = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|x86.ActiveCfg = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Debug|x86.Build.0 = Debug|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|Any CPU.Build.0 = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|ARM.ActiveCfg = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|ARM.Build.0 = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|ARM64.ActiveCfg = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|ARM64.Build.0 = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|x64.ActiveCfg = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|x64.Build.0 = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|x86.ActiveCfg = Release|Any CPU
{C517D33F-8800-405E-9D59-E1F6CA201431}.Release|x86.Build.0 = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|ARM.Build.0 = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|ARM64.Build.0 = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|x64.ActiveCfg = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|x64.Build.0 = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Debug|x86.Build.0 = Debug|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|Any CPU.Build.0 = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|ARM.ActiveCfg = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|ARM.Build.0 = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|ARM64.ActiveCfg = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|ARM64.Build.0 = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|x64.ActiveCfg = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|x64.Build.0 = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|x86.ActiveCfg = Release|Any CPU
{D3DBCC2D-086E-4E3A-B70A-22A79FB295CF}.Release|x86.Build.0 = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|ARM.Build.0 = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|ARM64.Build.0 = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|x64.ActiveCfg = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|x64.Build.0 = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|x86.ActiveCfg = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Debug|x86.Build.0 = Debug|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|Any CPU.Build.0 = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|ARM.ActiveCfg = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|ARM.Build.0 = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|ARM64.ActiveCfg = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|ARM64.Build.0 = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|x64.ActiveCfg = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|x64.Build.0 = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|x86.ActiveCfg = Release|Any CPU
{2BA531E8-7F85-4EBF-AE97-811CD7C83EF2}.Release|x86.Build.0 = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|ARM.Build.0 = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|ARM64.Build.0 = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|x64.ActiveCfg = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|x64.Build.0 = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|x86.ActiveCfg = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Debug|x86.Build.0 = Debug|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|Any CPU.Build.0 = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|ARM.ActiveCfg = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|ARM.Build.0 = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|ARM64.ActiveCfg = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|ARM64.Build.0 = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|x64.ActiveCfg = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|x64.Build.0 = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|x86.ActiveCfg = Release|Any CPU
{4E393E60-D39A-4118-8BD5-427DC72E9ACE}.Release|x86.Build.0 = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|ARM.ActiveCfg = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|ARM.Build.0 = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|ARM64.Build.0 = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|x64.ActiveCfg = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|x64.Build.0 = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|x86.ActiveCfg = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Debug|x86.Build.0 = Debug|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|Any CPU.Build.0 = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|ARM.ActiveCfg = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|ARM.Build.0 = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|ARM64.ActiveCfg = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|ARM64.Build.0 = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|x64.ActiveCfg = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|x64.Build.0 = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|x86.ActiveCfg = Release|Any CPU
{FFECD10B-FE66-4331-A915-409F5BE04480}.Release|x86.Build.0 = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|ARM.Build.0 = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|ARM64.Build.0 = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|x64.ActiveCfg = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|x64.Build.0 = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Debug|x86.Build.0 = Debug|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|Any CPU.Build.0 = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|ARM.ActiveCfg = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|ARM.Build.0 = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|ARM64.ActiveCfg = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|ARM64.Build.0 = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|x64.ActiveCfg = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|x64.Build.0 = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|x86.ActiveCfg = Release|Any CPU
{7D290C8E-ACA7-4F03-91DF-D507FB3E2E87}.Release|x86.Build.0 = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|ARM.Build.0 = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|ARM64.Build.0 = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|x64.ActiveCfg = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|x64.Build.0 = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|x86.ActiveCfg = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Debug|x86.Build.0 = Debug|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|Any CPU.Build.0 = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|ARM.ActiveCfg = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|ARM.Build.0 = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|ARM64.ActiveCfg = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|ARM64.Build.0 = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|x64.ActiveCfg = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|x64.Build.0 = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|x86.ActiveCfg = Release|Any CPU
{F9AD1657-7FF9-470F-BE7F-2379ADAC0BB0}.Release|x86.Build.0 = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|ARM.Build.0 = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|ARM64.Build.0 = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|x64.ActiveCfg = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|x64.Build.0 = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|x86.ActiveCfg = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Debug|x86.Build.0 = Debug|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|Any CPU.Build.0 = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|ARM.ActiveCfg = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|ARM.Build.0 = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|ARM64.ActiveCfg = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|ARM64.Build.0 = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|x64.ActiveCfg = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|x64.Build.0 = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|x86.ActiveCfg = Release|Any CPU
{9F5E2879-972A-45FB-913C-89E9F0CEB189}.Release|x86.Build.0 = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|ARM.Build.0 = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|ARM64.Build.0 = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|x64.ActiveCfg = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|x64.Build.0 = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Debug|x86.Build.0 = Debug|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|Any CPU.Build.0 = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|ARM.ActiveCfg = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|ARM.Build.0 = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|ARM64.ActiveCfg = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|ARM64.Build.0 = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|x64.ActiveCfg = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|x64.Build.0 = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|x86.ActiveCfg = Release|Any CPU
{DCC07B39-E342-4841-B9E4-4D44DA2978FD}.Release|x86.Build.0 = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|ARM.Build.0 = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|ARM64.Build.0 = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|x64.ActiveCfg = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|x64.Build.0 = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|x86.ActiveCfg = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Debug|x86.Build.0 = Debug|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|Any CPU.Build.0 = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|ARM.ActiveCfg = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|ARM.Build.0 = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|ARM64.ActiveCfg = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|ARM64.Build.0 = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|x64.ActiveCfg = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|x64.Build.0 = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|x86.ActiveCfg = Release|Any CPU
{C7FC5FC8-4C72-4CD3-973E-327BDA880DF5}.Release|x86.Build.0 = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|Any CPU.Build.0 = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|ARM.ActiveCfg = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|ARM.Build.0 = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|ARM64.Build.0 = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|x64.ActiveCfg = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|x64.Build.0 = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|x86.ActiveCfg = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Debug|x86.Build.0 = Debug|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|Any CPU.ActiveCfg = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|Any CPU.Build.0 = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|ARM.ActiveCfg = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|ARM.Build.0 = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|ARM64.ActiveCfg = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|ARM64.Build.0 = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|x64.ActiveCfg = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|x64.Build.0 = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|x86.ActiveCfg = Release|Any CPU
{268012B6-C4FC-4C40-802C-74D5FAD3CA45}.Release|x86.Build.0 = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|ARM.ActiveCfg = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|ARM.Build.0 = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|ARM64.Build.0 = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|x64.ActiveCfg = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|x64.Build.0 = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|x86.ActiveCfg = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Debug|x86.Build.0 = Debug|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|Any CPU.Build.0 = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|ARM.ActiveCfg = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|ARM.Build.0 = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|ARM64.ActiveCfg = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|ARM64.Build.0 = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|x64.ActiveCfg = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|x64.Build.0 = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|x86.ActiveCfg = Release|Any CPU
{EF5EF8EF-4A44-4E44-9594-D878CABC4182}.Release|x86.Build.0 = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|ARM.Build.0 = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|ARM64.Build.0 = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|x64.Build.0 = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|x86.ActiveCfg = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Debug|x86.Build.0 = Debug|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|Any CPU.Build.0 = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|ARM.ActiveCfg = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|ARM.Build.0 = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|ARM64.ActiveCfg = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|ARM64.Build.0 = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|x64.ActiveCfg = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|x64.Build.0 = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|x86.ActiveCfg = Release|Any CPU
{CB1BC55F-D267-4724-89BE-96E3A5E432A6}.Release|x86.Build.0 = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|ARM.Build.0 = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|ARM64.Build.0 = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|x64.ActiveCfg = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|x64.Build.0 = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|x86.ActiveCfg = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Debug|x86.Build.0 = Debug|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|Any CPU.Build.0 = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|ARM.ActiveCfg = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|ARM.Build.0 = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|ARM64.ActiveCfg = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|ARM64.Build.0 = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|x64.ActiveCfg = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|x64.Build.0 = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|x86.ActiveCfg = Release|Any CPU
{3A55F68A-D526-4CFC-A5A6-B69FB76716C2}.Release|x86.Build.0 = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|ARM.Build.0 = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|ARM64.Build.0 = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|x64.ActiveCfg = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|x64.Build.0 = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|x86.ActiveCfg = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Debug|x86.Build.0 = Debug|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|Any CPU.Build.0 = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|ARM.ActiveCfg = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|ARM.Build.0 = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|ARM64.ActiveCfg = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|ARM64.Build.0 = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|x64.ActiveCfg = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|x64.Build.0 = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|x86.ActiveCfg = Release|Any CPU
{7F04A788-38B5-42CB-B601-70C657C953B8}.Release|x86.Build.0 = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|ARM.Build.0 = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|ARM64.Build.0 = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|x64.ActiveCfg = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|x64.Build.0 = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|x86.ActiveCfg = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Debug|x86.Build.0 = Debug|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|Any CPU.Build.0 = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|ARM.ActiveCfg = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|ARM.Build.0 = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|ARM64.ActiveCfg = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|ARM64.Build.0 = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|x64.ActiveCfg = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|x64.Build.0 = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|x86.ActiveCfg = Release|Any CPU
{15FD3FF1-80F1-4274-945A-BA5EBA35999E}.Release|x86.Build.0 = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|ARM.ActiveCfg = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|x64.ActiveCfg = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Debug|x86.ActiveCfg = Debug|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|Any CPU.Build.0 = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|ARM.ActiveCfg = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|ARM64.ActiveCfg = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|x64.ActiveCfg = Release|Any CPU
{31A3B51C-A4BB-4FEB-B712-38482F6D1667}.Release|x86.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|ARM.Build.0 = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|ARM64.Build.0 = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|x64.ActiveCfg = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|x64.Build.0 = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|x86.ActiveCfg = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Debug|x86.Build.0 = Debug|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|Any CPU.Build.0 = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|ARM.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|ARM.Build.0 = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|ARM64.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|ARM64.Build.0 = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x64.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x64.Build.0 = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.ActiveCfg = Release|Any CPU
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -234,6 +720,7 @@ Global
{7F04A788-38B5-42CB-B601-70C657C953B8} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD}
{15FD3FF1-80F1-4274-945A-BA5EBA35999E} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
{31A3B51C-A4BB-4FEB-B712-38482F6D1667} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
{D40C3CC7-C07C-4882-93D3-7F9ABCD3B5F0} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC}


Loading…
Cancel
Save