diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..1b22344
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "LibMatrix"]
+ path = LibMatrix
+ url = rory.gay:git/matrix/LibMatrix.git
diff --git a/.idea/.idea.ModerationBot.dir/.idea/.gitignore b/.idea/.idea.ModerationBot.dir/.idea/.gitignore
new file mode 100644
index 0000000..7d79e1c
--- /dev/null
+++ b/.idea/.idea.ModerationBot.dir/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/modules.xml
+/contentModel.xml
+/projectSettingsUpdater.xml
+/.idea.ModerationBot.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.ModerationBot.dir/.idea/encodings.xml b/.idea/.idea.ModerationBot.dir/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.ModerationBot.dir/.idea/encodings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
+</project>
\ No newline at end of file
diff --git a/.idea/.idea.ModerationBot.dir/.idea/indexLayout.xml b/.idea/.idea.ModerationBot.dir/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.ModerationBot.dir/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="UserContentModel">
+ <attachedFolders />
+ <explicitIncludes />
+ <explicitExcludes />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/.idea.ModerationBot.dir/.idea/vcs.xml b/.idea/.idea.ModerationBot.dir/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/.idea.ModerationBot.dir/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/.idea.ModerationBot/.idea/.gitignore b/.idea/.idea.ModerationBot/.idea/.gitignore
new file mode 100644
index 0000000..40a1d1e
--- /dev/null
+++ b/.idea/.idea.ModerationBot/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/.idea.ModerationBot.iml
+/projectSettingsUpdater.xml
+/modules.xml
+/contentModel.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.ModerationBot/.idea/encodings.xml b/.idea/.idea.ModerationBot/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.ModerationBot/.idea/encodings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
+</project>
\ No newline at end of file
diff --git a/.idea/.idea.ModerationBot/.idea/indexLayout.xml b/.idea/.idea.ModerationBot/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.ModerationBot/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="UserContentModel">
+ <attachedFolders />
+ <explicitIncludes />
+ <explicitExcludes />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/.idea.ModerationBot/.idea/vcs.xml b/.idea/.idea.ModerationBot/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/.idea.ModerationBot/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/LibMatrix b/LibMatrix
new file mode 160000
+Subproject 6e1402baa6ad8517a8a8446832fed1d4b48cee5
diff --git a/ModerationBot.sln b/ModerationBot.sln
new file mode 100644
index 0000000..1891670
--- /dev/null
+++ b/ModerationBot.sln
@@ -0,0 +1,161 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LibMatrix", "LibMatrix", "{936A3DB8-59EE-4F00-AF73-F677F47B8217}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ArcaneLibs", "ArcaneLibs", "{2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs", "LibMatrix\ArcaneLibs\ArcaneLibs\ArcaneLibs.csproj", "{3093BA83-1A30-4462-B5E2-42BBAA3416FF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.Blazor.Components", "LibMatrix\ArcaneLibs\ArcaneLibs.Blazor.Components\ArcaneLibs.Blazor.Components.csproj", "{19AEA6EC-6918-462D-8448-2E15032C6BFD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.Legacy", "LibMatrix\ArcaneLibs\ArcaneLibs.Legacy\ArcaneLibs.Legacy.csproj", "{A97C3494-C68A-4B36-A64A-1567D0313E92}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.Logging", "LibMatrix\ArcaneLibs\ArcaneLibs.Logging\ArcaneLibs.Logging.csproj", "{DDAE66B2-31B0-4332-B9E9-3F28B4336B0D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.StringNormalisation", "LibMatrix\ArcaneLibs\ArcaneLibs.StringNormalisation\ArcaneLibs.StringNormalisation.csproj", "{6042C750-8881-4AAE-8F1E-5FAEB730300D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.Timings", "LibMatrix\ArcaneLibs\ArcaneLibs.Timings\ArcaneLibs.Timings.csproj", "{51D305FB-362A-4038-8ED6-91DD2D3D4551}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLibs.UsageTest", "LibMatrix\ArcaneLibs\ArcaneLibs.UsageTest\ArcaneLibs.UsageTest.csproj", "{6B61BDF3-FAB2-4859-9D0E-99E2BACB1735}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcaneLib.Tests", "LibMatrix\ArcaneLibs\ArcaneLib.Tests\ArcaneLib.Tests.csproj", "{02174E9A-6500-4A32-8BE6-3749DE188BFC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.EventTypes", "LibMatrix\LibMatrix.EventTypes\LibMatrix.EventTypes.csproj", "{B0FB923E-DA7B-49B6-B34B-B6730A52754B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix", "LibMatrix\LibMatrix\LibMatrix.csproj", "{A4FD5687-B963-49ED-ABC1-030A64347FE3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.MxApiExtensions", "LibMatrix\LibMatrix.MxApiExtensions\LibMatrix.MxApiExtensions.csproj", "{B4010E66-35D0-4060-8265-E4BA81825A5F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{25D6A95A-856B-4C76-A144-8E7F718139F9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.HomeserverEmulator", "LibMatrix\Tests\LibMatrix.HomeserverEmulator\LibMatrix.HomeserverEmulator.csproj", "{DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.Tests", "LibMatrix\Tests\LibMatrix.Tests\LibMatrix.Tests.csproj", "{4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestDataGenerator", "LibMatrix\Tests\TestDataGenerator\TestDataGenerator.csproj", "{AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utilities", "Utilities", "{4BBABE0C-2F0B-4174-BD45-043F66AAA205}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.DebugDataValidationApi", "LibMatrix\Utilities\LibMatrix.DebugDataValidationApi\LibMatrix.DebugDataValidationApi.csproj", "{92373993-AE27-4321-B7E3-7597F0B16461}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.DevTestBot", "LibMatrix\Utilities\LibMatrix.DevTestBot\LibMatrix.DevTestBot.csproj", "{2E39F6B2-A861-4230-A18E-E6586AF86CC4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.JsonSerializerContextGenerator", "LibMatrix\Utilities\LibMatrix.JsonSerializerContextGenerator\LibMatrix.JsonSerializerContextGenerator.csproj", "{6F2D0A13-CBB6-4186-9C83-538486963985}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.Utilities.Bot", "LibMatrix\Utilities\LibMatrix.Utilities.Bot\LibMatrix.Utilities.Bot.csproj", "{E75F7B39-3A15-401E-8400-548C77A5FDEE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModerationBot", "ModerationBot\ModerationBot.csproj", "{81AC8293-A9CB-4466-84E2-C04BEB2AC852}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3093BA83-1A30-4462-B5E2-42BBAA3416FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3093BA83-1A30-4462-B5E2-42BBAA3416FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3093BA83-1A30-4462-B5E2-42BBAA3416FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3093BA83-1A30-4462-B5E2-42BBAA3416FF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {19AEA6EC-6918-462D-8448-2E15032C6BFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {19AEA6EC-6918-462D-8448-2E15032C6BFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {19AEA6EC-6918-462D-8448-2E15032C6BFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {19AEA6EC-6918-462D-8448-2E15032C6BFD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A97C3494-C68A-4B36-A64A-1567D0313E92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A97C3494-C68A-4B36-A64A-1567D0313E92}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A97C3494-C68A-4B36-A64A-1567D0313E92}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A97C3494-C68A-4B36-A64A-1567D0313E92}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DDAE66B2-31B0-4332-B9E9-3F28B4336B0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DDAE66B2-31B0-4332-B9E9-3F28B4336B0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DDAE66B2-31B0-4332-B9E9-3F28B4336B0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DDAE66B2-31B0-4332-B9E9-3F28B4336B0D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6042C750-8881-4AAE-8F1E-5FAEB730300D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6042C750-8881-4AAE-8F1E-5FAEB730300D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6042C750-8881-4AAE-8F1E-5FAEB730300D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6042C750-8881-4AAE-8F1E-5FAEB730300D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {51D305FB-362A-4038-8ED6-91DD2D3D4551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {51D305FB-362A-4038-8ED6-91DD2D3D4551}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {51D305FB-362A-4038-8ED6-91DD2D3D4551}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {51D305FB-362A-4038-8ED6-91DD2D3D4551}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B61BDF3-FAB2-4859-9D0E-99E2BACB1735}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B61BDF3-FAB2-4859-9D0E-99E2BACB1735}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B61BDF3-FAB2-4859-9D0E-99E2BACB1735}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6B61BDF3-FAB2-4859-9D0E-99E2BACB1735}.Release|Any CPU.Build.0 = Release|Any CPU
+ {02174E9A-6500-4A32-8BE6-3749DE188BFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {02174E9A-6500-4A32-8BE6-3749DE188BFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {02174E9A-6500-4A32-8BE6-3749DE188BFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {02174E9A-6500-4A32-8BE6-3749DE188BFC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0FB923E-DA7B-49B6-B34B-B6730A52754B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0FB923E-DA7B-49B6-B34B-B6730A52754B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0FB923E-DA7B-49B6-B34B-B6730A52754B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0FB923E-DA7B-49B6-B34B-B6730A52754B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A4FD5687-B963-49ED-ABC1-030A64347FE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A4FD5687-B963-49ED-ABC1-030A64347FE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A4FD5687-B963-49ED-ABC1-030A64347FE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A4FD5687-B963-49ED-ABC1-030A64347FE3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B4010E66-35D0-4060-8265-E4BA81825A5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B4010E66-35D0-4060-8265-E4BA81825A5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B4010E66-35D0-4060-8265-E4BA81825A5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B4010E66-35D0-4060-8265-E4BA81825A5F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85}.Release|Any CPU.Build.0 = Release|Any CPU
+ {92373993-AE27-4321-B7E3-7597F0B16461}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {92373993-AE27-4321-B7E3-7597F0B16461}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {92373993-AE27-4321-B7E3-7597F0B16461}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {92373993-AE27-4321-B7E3-7597F0B16461}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2E39F6B2-A861-4230-A18E-E6586AF86CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2E39F6B2-A861-4230-A18E-E6586AF86CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2E39F6B2-A861-4230-A18E-E6586AF86CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2E39F6B2-A861-4230-A18E-E6586AF86CC4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6F2D0A13-CBB6-4186-9C83-538486963985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F2D0A13-CBB6-4186-9C83-538486963985}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F2D0A13-CBB6-4186-9C83-538486963985}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6F2D0A13-CBB6-4186-9C83-538486963985}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E75F7B39-3A15-401E-8400-548C77A5FDEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E75F7B39-3A15-401E-8400-548C77A5FDEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E75F7B39-3A15-401E-8400-548C77A5FDEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E75F7B39-3A15-401E-8400-548C77A5FDEE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {81AC8293-A9CB-4466-84E2-C04BEB2AC852}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {81AC8293-A9CB-4466-84E2-C04BEB2AC852}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {81AC8293-A9CB-4466-84E2-C04BEB2AC852}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {81AC8293-A9CB-4466-84E2-C04BEB2AC852}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {3093BA83-1A30-4462-B5E2-42BBAA3416FF} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {19AEA6EC-6918-462D-8448-2E15032C6BFD} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {A97C3494-C68A-4B36-A64A-1567D0313E92} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {DDAE66B2-31B0-4332-B9E9-3F28B4336B0D} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {6042C750-8881-4AAE-8F1E-5FAEB730300D} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {51D305FB-362A-4038-8ED6-91DD2D3D4551} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {6B61BDF3-FAB2-4859-9D0E-99E2BACB1735} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {02174E9A-6500-4A32-8BE6-3749DE188BFC} = {2FF6B89E-4B6A-409F-84FA-EEC0D0E30095}
+ {B0FB923E-DA7B-49B6-B34B-B6730A52754B} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {A4FD5687-B963-49ED-ABC1-030A64347FE3} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {B4010E66-35D0-4060-8265-E4BA81825A5F} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {25D6A95A-856B-4C76-A144-8E7F718139F9} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {DB0A52A1-8B7D-4230-832A-1F9E7C0BB5D6} = {25D6A95A-856B-4C76-A144-8E7F718139F9}
+ {4EFA7ECF-19D1-4054-AFCE-1E8F6CEC7AB0} = {25D6A95A-856B-4C76-A144-8E7F718139F9}
+ {AFD7C054-B2ED-4465-BA2F-8BC6B0E90D85} = {25D6A95A-856B-4C76-A144-8E7F718139F9}
+ {4BBABE0C-2F0B-4174-BD45-043F66AAA205} = {936A3DB8-59EE-4F00-AF73-F677F47B8217}
+ {92373993-AE27-4321-B7E3-7597F0B16461} = {4BBABE0C-2F0B-4174-BD45-043F66AAA205}
+ {2E39F6B2-A861-4230-A18E-E6586AF86CC4} = {4BBABE0C-2F0B-4174-BD45-043F66AAA205}
+ {6F2D0A13-CBB6-4186-9C83-538486963985} = {4BBABE0C-2F0B-4174-BD45-043F66AAA205}
+ {E75F7B39-3A15-401E-8400-548C77A5FDEE} = {4BBABE0C-2F0B-4174-BD45-043F66AAA205}
+ EndGlobalSection
+EndGlobal
diff --git a/AccountData/BotData.cs b/ModerationBot/AccountData/BotData.cs
index de52679..de52679 100644
--- a/AccountData/BotData.cs
+++ b/ModerationBot/AccountData/BotData.cs
diff --git a/Commands/BanMediaCommand.cs b/ModerationBot/Commands/BanMediaCommand.cs
index 07c9858..07c9858 100644
--- a/Commands/BanMediaCommand.cs
+++ b/ModerationBot/Commands/BanMediaCommand.cs
diff --git a/Commands/DbgAllRoomsArePolicyListsCommand.cs b/ModerationBot/Commands/DbgAllRoomsArePolicyListsCommand.cs
index 78e1979..78e1979 100644
--- a/Commands/DbgAllRoomsArePolicyListsCommand.cs
+++ b/ModerationBot/Commands/DbgAllRoomsArePolicyListsCommand.cs
diff --git a/Commands/DbgAniRainbowTest.cs b/ModerationBot/Commands/DbgAniRainbowTest.cs
index eed6fa5..eed6fa5 100644
--- a/Commands/DbgAniRainbowTest.cs
+++ b/ModerationBot/Commands/DbgAniRainbowTest.cs
diff --git a/Commands/DbgDumpActivePoliciesCommand.cs b/ModerationBot/Commands/DbgDumpActivePoliciesCommand.cs
index 81e81a0..81e81a0 100644
--- a/Commands/DbgDumpActivePoliciesCommand.cs
+++ b/ModerationBot/Commands/DbgDumpActivePoliciesCommand.cs
diff --git a/Commands/DbgDumpAllStateTypesCommand.cs b/ModerationBot/Commands/DbgDumpAllStateTypesCommand.cs
index ac2036a..ac2036a 100644
--- a/Commands/DbgDumpAllStateTypesCommand.cs
+++ b/ModerationBot/Commands/DbgDumpAllStateTypesCommand.cs
diff --git a/Commands/JoinRoomCommand.cs b/ModerationBot/Commands/JoinRoomCommand.cs
index e604a4e..e604a4e 100644
--- a/Commands/JoinRoomCommand.cs
+++ b/ModerationBot/Commands/JoinRoomCommand.cs
diff --git a/Commands/JoinSpaceMembersCommand.cs b/ModerationBot/Commands/JoinSpaceMembersCommand.cs
index 86ecf7e..86ecf7e 100644
--- a/Commands/JoinSpaceMembersCommand.cs
+++ b/ModerationBot/Commands/JoinSpaceMembersCommand.cs
diff --git a/Commands/ReloadPoliciesCommand.cs b/ModerationBot/Commands/ReloadPoliciesCommand.cs
index 2934185..2934185 100644
--- a/Commands/ReloadPoliciesCommand.cs
+++ b/ModerationBot/Commands/ReloadPoliciesCommand.cs
diff --git a/FirstRunTasks.cs b/ModerationBot/FirstRunTasks.cs
index 9dece1d..9dece1d 100644
--- a/FirstRunTasks.cs
+++ b/ModerationBot/FirstRunTasks.cs
diff --git a/ModerationBot.cs b/ModerationBot/ModerationBot.cs
index 791d3b5..791d3b5 100644
--- a/ModerationBot.cs
+++ b/ModerationBot/ModerationBot.cs
diff --git a/ModerationBot.csproj b/ModerationBot/ModerationBot.csproj
index 99eb0b9..009ace0 100644
--- a/ModerationBot.csproj
+++ b/ModerationBot/ModerationBot.csproj
@@ -17,8 +17,8 @@
</PropertyGroup>
<ItemGroup>
- <ProjectReference Include="..\..\LibMatrix\LibMatrix.csproj" />
- <ProjectReference Include="..\..\Utilities\LibMatrix.Utilities.Bot\LibMatrix.Utilities.Bot.csproj" />
+ <ProjectReference Include="..\LibMatrix\LibMatrix\LibMatrix.csproj" />
+ <ProjectReference Include="..\LibMatrix\Utilities\LibMatrix.Utilities.Bot\LibMatrix.Utilities.Bot.csproj" />
</ItemGroup>
<ItemGroup>
diff --git a/ModerationBotConfiguration.cs b/ModerationBot/ModerationBotConfiguration.cs
index 415b581..415b581 100644
--- a/ModerationBotConfiguration.cs
+++ b/ModerationBot/ModerationBotConfiguration.cs
diff --git a/PolicyEngine.cs b/ModerationBot/PolicyEngine.cs
index 7556fc5..7556fc5 100644
--- a/PolicyEngine.cs
+++ b/ModerationBot/PolicyEngine.cs
diff --git a/PolicyList.cs b/ModerationBot/PolicyList.cs
index f291c7b..f291c7b 100644
--- a/PolicyList.cs
+++ b/ModerationBot/PolicyList.cs
diff --git a/Program.cs b/ModerationBot/Program.cs
index 67403c1..67403c1 100644
--- a/Program.cs
+++ b/ModerationBot/Program.cs
diff --git a/Properties/launchSettings.json b/ModerationBot/Properties/launchSettings.json
index 997e294..997e294 100644
--- a/Properties/launchSettings.json
+++ b/ModerationBot/Properties/launchSettings.json
diff --git a/Services/ModerationBotRoomProvider.cs b/ModerationBot/Services/ModerationBotRoomProvider.cs
index d4a200f..d4a200f 100644
--- a/Services/ModerationBotRoomProvider.cs
+++ b/ModerationBot/Services/ModerationBotRoomProvider.cs
diff --git a/StateEventTypes/Policies/BasePolicy.cs b/ModerationBot/StateEventTypes/Policies/BasePolicy.cs
index 64b0448..64b0448 100644
--- a/StateEventTypes/Policies/BasePolicy.cs
+++ b/ModerationBot/StateEventTypes/Policies/BasePolicy.cs
diff --git a/StateEventTypes/Policies/Implementations/MediaPolicyFile.cs b/ModerationBot/StateEventTypes/Policies/Implementations/MediaPolicyFile.cs
index f0fef63..f0fef63 100644
--- a/StateEventTypes/Policies/Implementations/MediaPolicyFile.cs
+++ b/ModerationBot/StateEventTypes/Policies/Implementations/MediaPolicyFile.cs
diff --git a/StateEventTypes/Policies/Implementations/MediaPolicyHomeserver.cs b/ModerationBot/StateEventTypes/Policies/Implementations/MediaPolicyHomeserver.cs
index 72c9a60..72c9a60 100644
--- a/StateEventTypes/Policies/Implementations/MediaPolicyHomeserver.cs
+++ b/ModerationBot/StateEventTypes/Policies/Implementations/MediaPolicyHomeserver.cs
diff --git a/StateEventTypes/Policies/Implementations/MessagePolicyContainsText.cs b/ModerationBot/StateEventTypes/Policies/Implementations/MessagePolicyContainsText.cs
index fa21e2d..fa21e2d 100644
--- a/StateEventTypes/Policies/Implementations/MessagePolicyContainsText.cs
+++ b/ModerationBot/StateEventTypes/Policies/Implementations/MessagePolicyContainsText.cs
diff --git a/StateEventTypes/Policies/Implementations/UnknownPolicy.cs b/ModerationBot/StateEventTypes/Policies/Implementations/UnknownPolicy.cs
index 78860ca..78860ca 100644
--- a/StateEventTypes/Policies/Implementations/UnknownPolicy.cs
+++ b/ModerationBot/StateEventTypes/Policies/Implementations/UnknownPolicy.cs
diff --git a/appsettings.Development.json b/ModerationBot/appsettings.Development.json
index 224d0da..224d0da 100644
--- a/appsettings.Development.json
+++ b/ModerationBot/appsettings.Development.json
diff --git a/appsettings.json b/ModerationBot/appsettings.json
index 6ba02f3..6ba02f3 100644
--- a/appsettings.json
+++ b/ModerationBot/appsettings.json
|