From 6bcbd5dd1105e89bbc4c268253bde42d7eef80c8 Mon Sep 17 00:00:00 2001 From: Austin Kregel <5355937+austinkregel@users.noreply.github.com> Date: Sun, 3 Dec 2023 04:01:57 +0000 Subject: [PATCH] boy this expanded beyond what I expected.... Add Protonmail client, and a matrix server client to pull in messages --- app/Console/Commands/MakeUser.php | 42 + app/Console/Kernel.php | 2 +- app/Events/Admin/Composer/ActionFailed.php | 36 + app/Events/Admin/Composer/ActionFinished.php | 36 + .../Admin/Composer/ActionLoggedToConsole.php | 36 + app/Events/SubscribeToJobEvent.php | 36 + app/Http/Controllers/AccountController.php | 10 + app/Http/Controllers/AdminController.php | 82 + app/Http/Controllers/BudgetController.php | 10 + app/Http/Controllers/ConditionController.php | 10 + .../Controllers/DisableProviderController.php | 84 + .../Controllers/EnableProviderController.php | 88 + app/Http/Controllers/InstallNewProvider.php | 30 + app/Http/Controllers/MessageController.php | 10 + app/Http/Controllers/NavigationController.php | 10 + .../Spork/LocalAdminController.php | 131 +- app/Http/Controllers/ThreadController.php | 10 + .../Controllers/TransactionController.php | 10 + app/Http/Controllers/UninstallNewProvider.php | 37 + app/Http/Middleware/HandleInertiaRequests.php | 30 +- app/Http/Middleware/OnlyHost.php | 18 + app/Models/Article.php | 2 +- app/Models/Condition.php | 11 + app/Models/Credential.php | 9 +- app/Models/Crud.php | 8 + app/Models/Domain.php | 2 +- app/Models/ExternalRssFeed.php | 2 +- app/Models/Finance/Account.php | 30 + app/Models/Finance/Budget.php | 12 + app/Models/Finance/Transaction.php | 11 + app/Models/Message.php | 18 + app/Models/Navigation.php | 33 + app/Models/Page.php | 8 +- app/Models/Person.php | 2 +- app/Models/Project.php | 2 +- app/Models/Research.php | 2 +- app/Models/Server.php | 2 +- app/Models/ShortCode.php | 32 + app/Models/Spork/Script.php | 3 +- app/Models/Tag.php | 2 +- app/Models/Thread.php | 32 + app/Models/User.php | 5 + app/Providers/EventServiceProvider.php | 1 - app/Providers/HorizonServiceProvider.php | 36 + app/Providers/RouteServiceProvider.php | 7 + app/Services/Code.php | 557 ++ .../Development/DescribeTableService.php | 146 + app/Services/Finance/PlaidHttpService.php | 75 + app/Services/HttpService.php | 123 + app/Services/ImapService.php | 153 + app/Services/Matrix/MatrixClient.php | 114 + .../Programming/LaravelProgrammingStyle.php | 190 + app/Services/Server/DigitalOceanService.php | 5 + app/Services/SshService.php | 29 +- config/app.php | 1 + config/auth.php | 1 + config/database.php | 2 +- config/filesystems.php | 6 + config/mail.php | 11 + config/spork.php | 16 + config/websockets.php | 141 + database/factories/ConditionFactory.php | 23 + database/factories/Finance/AccountFactory.php | 23 + database/factories/Finance/BudgetFactory.php | 23 + .../factories/Finance/TransactionFactory.php | 23 + database/factories/MessageFactory.php | 23 + database/factories/NavigationFactory.php | 23 + database/factories/ShortCodeFactory.php | 23 + database/factories/ThreadFactory.php | 23 + ...te_websockets_statistics_entries_table.php | 35 + ...023_06_08_024343_create_projects_table.php | 1 + .../2023_06_09_162056_create_pages_table.php | 1 + ..._06_181801_add_columns_to_people_table.php | 1 + ...2023_10_01_004656_create_budgets_table.php | 35 + ...023_10_01_004659_create_accounts_table.php | 35 + ...10_01_004707_create_transactions_table.php | 37 + ...3_10_01_004742_create_conditions_table.php | 32 + ...023_10_07_023041_create_messages_table.php | 47 + ...2023_10_07_023054_create_threads_table.php | 45 + ..._10_15_205749_create_navigations_table.php | 102 + ..._11_12_000501_create_short_codes_table.php | 34 + database/seeders/AccountSeeder.php | 17 + database/seeders/BudgetSeeder.php | 17 + database/seeders/ConditionSeeder.php | 17 + database/seeders/MessageSeeder.php | 17 + database/seeders/NavigationSeeder.php | 17 + database/seeders/ThreadSeeder.php | 17 + database/seeders/TransactionSeeder.php | 17 + docker/8.0/Dockerfile | 59 - docker/8.0/php.ini | 7 - docker/8.0/start-container | 17 - docker/8.0/supervisord.conf | 14 - docker/8.1/Dockerfile | 58 - docker/8.1/supervisord.conf | 14 - docker/8.2/Dockerfile | 50 +- docker/base/Dockerfile | 49 + docker/base/build.sh | 19 + docker/crontab/Dockerfile | 50 +- docker/horizon/Dockerfile | 50 +- docker/matrix-bot/Dockerfile | 6 + docker/matrix-bot/bot.json | 12 + docker/matrix-bot/db/_default/bot-sdk.json | 4427 ++++++++++++++ docker/matrix-bot/db/bot-sdk.json | 5200 +++++++++++++++++ docker/matrix-bot/db/matrix-sdk-crypto/conf | 4 + docker/matrix-bot/db/matrix-sdk-crypto/db | Bin 0 -> 1572864 bytes .../matrix-sdk-crypto/snap.000000001AA15442 | Bin 0 -> 548 bytes docker/matrix-bot/index.js | 694 +++ docker/matrix-bot/personal-client.js | 668 +++ docker/matrix-bot/reset-password.tsx | 211 + docker/websocket/Dockerfile | 10 + docker/{8.1 => websocket}/php.ini | 3 - docker/{8.1 => websocket}/start-container | 2 +- docker/websocket/supervisord.conf | 12 + resources/js/Components/Button.vue | 96 + resources/js/Components/ComposerPackage.vue | 284 + resources/js/Components/DynamicIcon.vue | 40 + resources/js/Components/GlobalChat.vue | 121 + resources/js/Components/HeaderMapping.vue | 163 + resources/js/Components/Input.vue | 28 + resources/js/Components/Label.vue | 12 + resources/js/Components/LinkAccount.vue | 192 + resources/js/Components/Spork/CrudView.vue | 12 +- .../js/Components/Spork/FileOrFolder.vue | 104 + resources/js/Components/VueTerm.vue | 79 + resources/js/Layouts/AppLayout.vue | 453 +- resources/js/Layouts/Manage.vue | 38 + resources/js/Pages/Admin/Emails.vue | 140 + resources/js/Pages/Admin/Index.vue | 140 + resources/js/Pages/Banking/Settings.vue | 233 + resources/js/Pages/{Servers.vue => Crud.vue} | 96 +- resources/js/Pages/Dashboard.vue | 1 - resources/js/Pages/Domains.vue | 6 +- resources/js/Pages/FileManager.vue | 69 + resources/js/Pages/Manage/Index.vue | 85 + resources/js/Pages/Manage/People.vue | 165 + resources/js/Pages/Manage/Servers.vue | 74 + resources/js/Pages/Pages.vue | 6 +- resources/js/Pages/People.vue | 175 - resources/js/Pages/Petoskey/WeatherHeader.vue | 2 +- resources/js/Pages/Postal/Inbox.vue | 87 + resources/js/Pages/Postal/Index.vue | 95 + resources/js/Pages/Postal/Thread.vue | 166 + resources/js/Pages/Projects/Projects.vue | 14 +- resources/js/Pages/Settings.vue | 103 + resources/js/Pages/Settings2.vue | 54 + .../Teams/Partials/UpdateTeamNameForm.vue | 2 +- resources/js/app.js | 5 +- resources/js/bootstrap.js | 26 +- resources/js/old-spork/404Error.vue | 24 + .../js/old-spork/Auth/ForgotPassword.vue | 66 + resources/js/old-spork/Auth/Login.vue | 71 + resources/js/old-spork/Auth/Register.vue | 86 + resources/js/old-spork/Base.vue | 164 + resources/js/old-spork/Basement/Basement.vue | 58 + resources/js/old-spork/Basement/Dashboard.vue | 11 + resources/js/old-spork/Basement/Domains.vue | 125 + resources/js/old-spork/Basement/Servers.vue | 75 + resources/js/old-spork/Basement/Settings.vue | 11 + .../js/old-spork/Bookmarks/Bookmarks.vue | 139 + resources/js/old-spork/Calendar/Calendar.vue | 98 + .../js/old-spork/Calendar/MasterCalendar.vue | 190 + .../js/old-spork/Calendar/MiniCalendar.vue | 142 + resources/js/old-spork/Compendium.vue | 123 + resources/js/old-spork/Dashboard.vue | 272 + .../js/old-spork/Development/Development.vue | 245 + resources/js/old-spork/Development/Editor.vue | 275 + .../js/old-spork/Development/Fabricator.vue | 100 + .../js/old-spork/Development/FileOrFolder.vue | 112 + resources/js/old-spork/Development/Flow.vue | 189 + .../js/old-spork/Favorites/Favorites.vue | 162 + resources/js/old-spork/Feeds/RssFeeds.vue | 43 + .../js/old-spork/Feeds/RssSubscriptions.vue | 125 + .../js/old-spork/Feeds/UnfilteredFeed.vue | 88 + resources/js/old-spork/Finance/Billing.vue | 202 + resources/js/old-spork/Finance/Dashboard.vue | 94 + resources/js/old-spork/Finance/Finance.vue | 58 + resources/js/old-spork/Finance/Groups.vue | 147 + .../js/old-spork/Finance/LinkAccount.vue | 192 + resources/js/old-spork/Finance/Settings.vue | 233 + resources/js/old-spork/Group.vue | 96 + resources/js/old-spork/Maintenance/Garage.vue | 162 + .../js/old-spork/Maintenance/Maintenance.vue | 46 + .../js/old-spork/Maintenance/Properties.vue | 173 + resources/js/old-spork/News/Articles.vue | 81 + resources/js/old-spork/People/People.vue | 103 + .../js/old-spork/Profile/UserAccount.vue | 267 + resources/js/old-spork/Recipes/AllRecipes.vue | 223 + resources/js/old-spork/Recipes/Food.vue | 91 + resources/js/old-spork/Recipes/Generic.vue | 28 + .../js/old-spork/Recipes/Ingredients.vue | 36 + resources/js/old-spork/Recipes/Recipe.vue | 41 + .../js/old-spork/Recipes/SingleRecipe.vue | 44 + resources/js/old-spork/Recipes/ViewRecipe.vue | 159 + resources/js/old-spork/Reminders.vue | 227 + resources/js/old-spork/Research/Dashboard.vue | 133 + resources/js/old-spork/Research/Research.vue | 51 + .../js/old-spork/Research/RssManager.vue | 10 + resources/js/old-spork/Research/Topic.vue | 308 + resources/js/old-spork/Servers/Dashboard.vue | 63 + resources/js/old-spork/Servers/Servers.vue | 46 + resources/js/old-spork/Servers/Services.vue | 62 + resources/js/old-spork/Settings/Settings.vue | 71 + resources/js/old-spork/Setup.vue | 399 ++ resources/js/old-spork/Shopping/Cart.vue | 53 + .../js/old-spork/Shopping/PastOrders.vue | 35 + resources/js/old-spork/Shopping/Shopping.vue | 68 + resources/js/old-spork/Shopping/Store.vue | 90 + .../Shopping/components/OrderRow.vue | 57 + .../Shopping/components/StoreItem.vue | 55 + resources/js/old-spork/SpeechTagging.vue | 150 + resources/js/ziggy.js | 2 +- resources/node/index.js | 65 + resources/views/app.blade.php | 4 +- .../link-hypervisor.blade.php | 129 + .../basement-scripts/link-server.blade.php | 119 + routes/console.php | 354 +- routes/crud.php | 53 +- routes/pages/deploy.php | 56 + routes/pages/link-shortening.php | 16 + routes/pages/spork.php | 276 +- .../Http/Controllers/LinkServerTest.php | 93 + .../Controllers/MessageControllerTest.php | 20 + .../Controllers/NavigationControllerTest.php | 20 + .../Http/Controllers/ThreadControllerTest.php | 20 + tests/Feature/Models/ConditionTest.php | 20 + tests/Feature/Models/Finance/AccountTest.php | 20 + tests/Feature/Models/Finance/BudgetTest.php | 20 + .../Models/Finance/TransactionTest.php | 20 + tests/Feature/Models/MessageTest.php | 20 + tests/Feature/Models/NavigationTest.php | 20 + tests/Feature/Models/ThreadTest.php | 20 + .../Operations/ServerActionOperationTest.php | 77 + tests/data/authorized_keys | 2 + tests/data/test_key | 38 + tests/data/test_key.pub | 1 + 235 files changed, 26102 insertions(+), 1041 deletions(-) create mode 100644 app/Console/Commands/MakeUser.php create mode 100644 app/Events/Admin/Composer/ActionFailed.php create mode 100644 app/Events/Admin/Composer/ActionFinished.php create mode 100644 app/Events/Admin/Composer/ActionLoggedToConsole.php create mode 100644 app/Events/SubscribeToJobEvent.php create mode 100644 app/Http/Controllers/AccountController.php create mode 100644 app/Http/Controllers/AdminController.php create mode 100644 app/Http/Controllers/BudgetController.php create mode 100644 app/Http/Controllers/ConditionController.php create mode 100644 app/Http/Controllers/DisableProviderController.php create mode 100644 app/Http/Controllers/EnableProviderController.php create mode 100644 app/Http/Controllers/InstallNewProvider.php create mode 100644 app/Http/Controllers/MessageController.php create mode 100644 app/Http/Controllers/NavigationController.php create mode 100644 app/Http/Controllers/ThreadController.php create mode 100644 app/Http/Controllers/TransactionController.php create mode 100644 app/Http/Controllers/UninstallNewProvider.php create mode 100644 app/Http/Middleware/OnlyHost.php create mode 100644 app/Models/Condition.php create mode 100644 app/Models/Crud.php create mode 100644 app/Models/Finance/Account.php create mode 100644 app/Models/Finance/Budget.php create mode 100644 app/Models/Finance/Transaction.php create mode 100644 app/Models/Message.php create mode 100644 app/Models/Navigation.php create mode 100644 app/Models/ShortCode.php create mode 100644 app/Models/Thread.php create mode 100644 app/Providers/HorizonServiceProvider.php create mode 100644 app/Services/Code.php create mode 100644 app/Services/Development/DescribeTableService.php create mode 100644 app/Services/Finance/PlaidHttpService.php create mode 100644 app/Services/HttpService.php create mode 100644 app/Services/ImapService.php create mode 100644 app/Services/Matrix/MatrixClient.php create mode 100644 app/Services/Programming/LaravelProgrammingStyle.php create mode 100644 config/spork.php create mode 100644 config/websockets.php create mode 100644 database/factories/ConditionFactory.php create mode 100644 database/factories/Finance/AccountFactory.php create mode 100644 database/factories/Finance/BudgetFactory.php create mode 100644 database/factories/Finance/TransactionFactory.php create mode 100644 database/factories/MessageFactory.php create mode 100644 database/factories/NavigationFactory.php create mode 100644 database/factories/ShortCodeFactory.php create mode 100644 database/factories/ThreadFactory.php create mode 100644 database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php create mode 100644 database/migrations/2023_10_01_004656_create_budgets_table.php create mode 100644 database/migrations/2023_10_01_004659_create_accounts_table.php create mode 100644 database/migrations/2023_10_01_004707_create_transactions_table.php create mode 100644 database/migrations/2023_10_01_004742_create_conditions_table.php create mode 100644 database/migrations/2023_10_07_023041_create_messages_table.php create mode 100644 database/migrations/2023_10_07_023054_create_threads_table.php create mode 100644 database/migrations/2023_10_15_205749_create_navigations_table.php create mode 100644 database/migrations/2023_11_12_000501_create_short_codes_table.php create mode 100644 database/seeders/AccountSeeder.php create mode 100644 database/seeders/BudgetSeeder.php create mode 100644 database/seeders/ConditionSeeder.php create mode 100644 database/seeders/MessageSeeder.php create mode 100644 database/seeders/NavigationSeeder.php create mode 100644 database/seeders/ThreadSeeder.php create mode 100644 database/seeders/TransactionSeeder.php delete mode 100644 docker/8.0/Dockerfile delete mode 100644 docker/8.0/php.ini delete mode 100644 docker/8.0/start-container delete mode 100644 docker/8.0/supervisord.conf delete mode 100644 docker/8.1/Dockerfile delete mode 100644 docker/8.1/supervisord.conf create mode 100644 docker/base/Dockerfile create mode 100755 docker/base/build.sh create mode 100644 docker/matrix-bot/Dockerfile create mode 100644 docker/matrix-bot/bot.json create mode 100644 docker/matrix-bot/db/_default/bot-sdk.json create mode 100644 docker/matrix-bot/db/bot-sdk.json create mode 100644 docker/matrix-bot/db/matrix-sdk-crypto/conf create mode 100644 docker/matrix-bot/db/matrix-sdk-crypto/db create mode 100644 docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 create mode 100644 docker/matrix-bot/index.js create mode 100644 docker/matrix-bot/personal-client.js create mode 100644 docker/matrix-bot/reset-password.tsx create mode 100644 docker/websocket/Dockerfile rename docker/{8.1 => websocket}/php.ini (70%) rename docker/{8.1 => websocket}/start-container (75%) create mode 100644 docker/websocket/supervisord.conf create mode 100644 resources/js/Components/Button.vue create mode 100644 resources/js/Components/ComposerPackage.vue create mode 100644 resources/js/Components/DynamicIcon.vue create mode 100644 resources/js/Components/GlobalChat.vue create mode 100644 resources/js/Components/HeaderMapping.vue create mode 100644 resources/js/Components/Input.vue create mode 100644 resources/js/Components/Label.vue create mode 100644 resources/js/Components/LinkAccount.vue create mode 100644 resources/js/Components/Spork/FileOrFolder.vue create mode 100644 resources/js/Components/VueTerm.vue create mode 100644 resources/js/Layouts/Manage.vue create mode 100644 resources/js/Pages/Admin/Emails.vue create mode 100644 resources/js/Pages/Admin/Index.vue create mode 100644 resources/js/Pages/Banking/Settings.vue rename resources/js/Pages/{Servers.vue => Crud.vue} (57%) create mode 100644 resources/js/Pages/FileManager.vue create mode 100644 resources/js/Pages/Manage/Index.vue create mode 100644 resources/js/Pages/Manage/People.vue create mode 100644 resources/js/Pages/Manage/Servers.vue delete mode 100644 resources/js/Pages/People.vue create mode 100644 resources/js/Pages/Postal/Inbox.vue create mode 100644 resources/js/Pages/Postal/Index.vue create mode 100644 resources/js/Pages/Postal/Thread.vue create mode 100644 resources/js/Pages/Settings.vue create mode 100644 resources/js/Pages/Settings2.vue create mode 100644 resources/js/old-spork/404Error.vue create mode 100644 resources/js/old-spork/Auth/ForgotPassword.vue create mode 100644 resources/js/old-spork/Auth/Login.vue create mode 100644 resources/js/old-spork/Auth/Register.vue create mode 100644 resources/js/old-spork/Base.vue create mode 100644 resources/js/old-spork/Basement/Basement.vue create mode 100644 resources/js/old-spork/Basement/Dashboard.vue create mode 100644 resources/js/old-spork/Basement/Domains.vue create mode 100644 resources/js/old-spork/Basement/Servers.vue create mode 100644 resources/js/old-spork/Basement/Settings.vue create mode 100644 resources/js/old-spork/Bookmarks/Bookmarks.vue create mode 100644 resources/js/old-spork/Calendar/Calendar.vue create mode 100644 resources/js/old-spork/Calendar/MasterCalendar.vue create mode 100644 resources/js/old-spork/Calendar/MiniCalendar.vue create mode 100644 resources/js/old-spork/Compendium.vue create mode 100644 resources/js/old-spork/Dashboard.vue create mode 100644 resources/js/old-spork/Development/Development.vue create mode 100644 resources/js/old-spork/Development/Editor.vue create mode 100644 resources/js/old-spork/Development/Fabricator.vue create mode 100644 resources/js/old-spork/Development/FileOrFolder.vue create mode 100644 resources/js/old-spork/Development/Flow.vue create mode 100644 resources/js/old-spork/Favorites/Favorites.vue create mode 100644 resources/js/old-spork/Feeds/RssFeeds.vue create mode 100644 resources/js/old-spork/Feeds/RssSubscriptions.vue create mode 100644 resources/js/old-spork/Feeds/UnfilteredFeed.vue create mode 100644 resources/js/old-spork/Finance/Billing.vue create mode 100644 resources/js/old-spork/Finance/Dashboard.vue create mode 100644 resources/js/old-spork/Finance/Finance.vue create mode 100644 resources/js/old-spork/Finance/Groups.vue create mode 100644 resources/js/old-spork/Finance/LinkAccount.vue create mode 100644 resources/js/old-spork/Finance/Settings.vue create mode 100644 resources/js/old-spork/Group.vue create mode 100644 resources/js/old-spork/Maintenance/Garage.vue create mode 100644 resources/js/old-spork/Maintenance/Maintenance.vue create mode 100644 resources/js/old-spork/Maintenance/Properties.vue create mode 100644 resources/js/old-spork/News/Articles.vue create mode 100644 resources/js/old-spork/People/People.vue create mode 100644 resources/js/old-spork/Profile/UserAccount.vue create mode 100644 resources/js/old-spork/Recipes/AllRecipes.vue create mode 100644 resources/js/old-spork/Recipes/Food.vue create mode 100644 resources/js/old-spork/Recipes/Generic.vue create mode 100644 resources/js/old-spork/Recipes/Ingredients.vue create mode 100644 resources/js/old-spork/Recipes/Recipe.vue create mode 100644 resources/js/old-spork/Recipes/SingleRecipe.vue create mode 100644 resources/js/old-spork/Recipes/ViewRecipe.vue create mode 100644 resources/js/old-spork/Reminders.vue create mode 100644 resources/js/old-spork/Research/Dashboard.vue create mode 100644 resources/js/old-spork/Research/Research.vue create mode 100644 resources/js/old-spork/Research/RssManager.vue create mode 100644 resources/js/old-spork/Research/Topic.vue create mode 100644 resources/js/old-spork/Servers/Dashboard.vue create mode 100644 resources/js/old-spork/Servers/Servers.vue create mode 100644 resources/js/old-spork/Servers/Services.vue create mode 100644 resources/js/old-spork/Settings/Settings.vue create mode 100644 resources/js/old-spork/Setup.vue create mode 100644 resources/js/old-spork/Shopping/Cart.vue create mode 100644 resources/js/old-spork/Shopping/PastOrders.vue create mode 100644 resources/js/old-spork/Shopping/Shopping.vue create mode 100644 resources/js/old-spork/Shopping/Store.vue create mode 100644 resources/js/old-spork/Shopping/components/OrderRow.vue create mode 100644 resources/js/old-spork/Shopping/components/StoreItem.vue create mode 100644 resources/js/old-spork/SpeechTagging.vue create mode 100644 resources/node/index.js create mode 100644 resources/views/basement-scripts/link-hypervisor.blade.php create mode 100644 resources/views/basement-scripts/link-server.blade.php create mode 100644 routes/pages/deploy.php create mode 100644 routes/pages/link-shortening.php create mode 100644 tests/Feature/Http/Controllers/LinkServerTest.php create mode 100644 tests/Feature/Http/Controllers/MessageControllerTest.php create mode 100644 tests/Feature/Http/Controllers/NavigationControllerTest.php create mode 100644 tests/Feature/Http/Controllers/ThreadControllerTest.php create mode 100644 tests/Feature/Models/ConditionTest.php create mode 100644 tests/Feature/Models/Finance/AccountTest.php create mode 100644 tests/Feature/Models/Finance/BudgetTest.php create mode 100644 tests/Feature/Models/Finance/TransactionTest.php create mode 100644 tests/Feature/Models/MessageTest.php create mode 100644 tests/Feature/Models/NavigationTest.php create mode 100644 tests/Feature/Models/ThreadTest.php create mode 100644 tests/Feature/Operations/ServerActionOperationTest.php create mode 100644 tests/data/authorized_keys create mode 100644 tests/data/test_key create mode 100644 tests/data/test_key.pub diff --git a/app/Console/Commands/MakeUser.php b/app/Console/Commands/MakeUser.php new file mode 100644 index 00000000..2d0d800e --- /dev/null +++ b/app/Console/Commands/MakeUser.php @@ -0,0 +1,42 @@ + $this->ask('What is your name?'), + 'email' => $this->ask('What is your email address?'), + 'password' => bcrypt($this->ask('What password would you like to use?')), + ]); + + $user->ownedTeams()->create([ + 'name' => config('app.name'), + 'personal_team' => true, + 'settings' => [], + ]); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 4e788775..35609df3 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -21,7 +21,7 @@ protected function schedule(Schedule $schedule): void $schedule->job(FetchResourcesFromCredentials::class)->everyOddHour(); $schedule->job(FetchCloudflareAnalytics::class)->everyFourHours(); - $schedule->command('operations:queue')->everyFiveMinutes(); +// $schedule->command('operations:queue')->everyFiveMinutes(); } /** diff --git a/app/Events/Admin/Composer/ActionFailed.php b/app/Events/Admin/Composer/ActionFailed.php new file mode 100644 index 00000000..f8bc9104 --- /dev/null +++ b/app/Events/Admin/Composer/ActionFailed.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/Admin/Composer/ActionFinished.php b/app/Events/Admin/Composer/ActionFinished.php new file mode 100644 index 00000000..5e2ea0c8 --- /dev/null +++ b/app/Events/Admin/Composer/ActionFinished.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/Admin/Composer/ActionLoggedToConsole.php b/app/Events/Admin/Composer/ActionLoggedToConsole.php new file mode 100644 index 00000000..1c0bf385 --- /dev/null +++ b/app/Events/Admin/Composer/ActionLoggedToConsole.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/SubscribeToJobEvent.php b/app/Events/SubscribeToJobEvent.php new file mode 100644 index 00000000..98a30e1e --- /dev/null +++ b/app/Events/SubscribeToJobEvent.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php new file mode 100644 index 00000000..f2394aed --- /dev/null +++ b/app/Http/Controllers/AccountController.php @@ -0,0 +1,10 @@ +filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + })->reduce(function ($result, $config, $service) use ($installedNotInstalled) { + + try { + $installedServiceThatMatchesInstalledDriver = array_values(array_filter($installedNotInstalled['installed'], fn($value) => in_array($service, $value['drivers'] ?? []))); + $driver = Arr::first($installedServiceThatMatchesInstalledDriver) ?? []; + foreach ($driver['drivers'] ?? [] as $eventListener => $driverName) { + $foundListener = Code::with(LaravelProgrammingStyle::class) + ->for(EventServiceProvider::class) + ->propertyContainsValue('listen', $eventListener); + + if ($foundListener) { + return array_merge($result, [ + 'enabled' => array_merge($result['enabled'] ?? [], [ + $service => $config, + ]), + ]); + } + + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + } + } catch (\Throwable $e) { + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + } + + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + }, [ + 'enabled' => [], + 'disabled' => [], + ]); + + return Inertia::render('Admin/Index', array_merge($installedNotInstalled, $serviceWithOauthish)); + } + + public function email() + { + $imapService = new ImapService(); + + dd($imapService->findAllFromDate(now()->subDay())); + + return Inertia::render('Admin/Emails', [ + + 'mail' => '' + ]); + } +} diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php new file mode 100644 index 00000000..080151ce --- /dev/null +++ b/app/Http/Controllers/BudgetController.php @@ -0,0 +1,10 @@ +validate([ + 'name' => 'required|string', + ]); + $name = request()->get('name'); + + $jobId = Str::uuid(); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $name) { + // enabling is based on if the driver is supported, so we need to remove support from the event service provider. + + $providers = json_decode(file_get_contents(storage_path('provider-information.json')), true); + $driversToEnable = array_values(array_filter($providers['installed'], fn($package) => $package['name'] === $name)); + + abort_if(count($driversToEnable) === 0, 404, 'No drivers installed by this composer vendor name'); + + broadcast(new ActionLoggedToConsole($jobId, "Attempting to identify the driver needed\r\n")); + + $configuredServices = collect(config('services'))->filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + });; + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;32mThere are {$configuredServices->count()} possible oauth/socialite services.\r\n")); + + $errors = collect([]); + $code = LaravelProgrammingStyle::for(EventServiceProvider::class); + foreach ($driversToEnable as $vendor) { + $drivers = $vendor['drivers']; + + foreach ($drivers as $class => $driverName) { + try { + if (!$configuredServices->has($driverName)) { + broadcast(new ActionLoggedToConsole($jobId, "\e[01;31mThere are no services configured for driver [" . $driverName . "]. Please update your config/services.php config file.\r\n")); + continue; + } + + $code->removeListenerFromEvent(SocialiteWasCalled::class, $class); + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;32mLooks like we are able to disable the event listener automatically.\r\n" + ."Attempting to save file...\r\n")); + + $code->toFile(Code::REPLACE_FILE); + broadcast(new ActionLoggedToConsole($jobId, "\e[01;33mFile: app/Providers/EventServiceProvider.php updated successfully.\r\n")); + } catch (\Throwable $e) { + broadcast(new ActionLoggedToConsole($jobId, $e->getMessage())); + $errors->push($e->getMessage()); + } finally { + // We don't want to close the modal in the UI, so don't launch an event to say the job completed. + } + } + } + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;33mDisabling complete, you can close this window.\r\n")); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/EnableProviderController.php b/app/Http/Controllers/EnableProviderController.php new file mode 100644 index 00000000..a9b6cb1b --- /dev/null +++ b/app/Http/Controllers/EnableProviderController.php @@ -0,0 +1,88 @@ +validate([ + 'name' => 'required|string', + 'client_id' => 'required', + 'client_secret' => 'required', + 'redirect' => 'required' + ]); + $name = request()->get('name'); + + $jobId = Str::uuid(); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $name) { + // enabling is based on if the driver is supported, so we need to remove support from the event service provider. + $providers = json_decode(file_get_contents(storage_path('provider-information.json')), true); + $driversToEnable = array_values(array_filter($providers['installed'], fn($package) => $package['name'] === $name)); + + abort_if(count($driversToEnable) === 0, 404, 'No drivers installed by this composer vendor name'); + + broadcast(new ComposerActionLoggedToConsole($jobId, "Attempting to identify the driver needed\r\n")); + + $configuredServices = collect(config('services'))->filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + });; + + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;32mThere are {$configuredServices->count()} possible oauth/socialite services.\r\n")); + + $errors = collect([]); + $code = Code::for(EventServiceProvider::class); + foreach ($driversToEnable as $vendor) { + $drivers = $vendor['drivers']; + + foreach ($drivers as $class => $driverName) { + try { + if (!$configuredServices->has($driverName)) { + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;31mThere are no services configured for driver [" . $driverName . "]. Please update your config/services.php config file.\r\n")); + continue; + } + + $code->addValueToProperty('listen', SocialiteWasCalled::class, $class); + + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;32mLooks like we are able to add the event listener automatically.\r\nAttempting to save file...\r\n")); + + $code->toFile(Code::REPLACE_FILE); + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;33mFile: app/Providers/EventServiceProvider.php updated\r\n")); + } catch (\Throwable $e) { + broadcast(new ComposerActionLoggedToConsole($jobId, $e->getMessage())); + $errors->push($e->getMessage()); + } finally { + // We don't want to close the modal in the UI, so don't launch an event to say the job completed. + } + } + } + }; + + broadcast(new SubscribeToJobEvent(request()->user()->id, $jobId)); + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/InstallNewProvider.php b/app/Http/Controllers/InstallNewProvider.php new file mode 100644 index 00000000..67cd85d5 --- /dev/null +++ b/app/Http/Controllers/InstallNewProvider.php @@ -0,0 +1,30 @@ +validate([ + 'name' => 'required|string', + ]); + + $jobId = Str::uuid(); + + $package = request()->get('name'); + abort_if(empty($package), 404); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $package) { + $process = new Process(['composer', 'require', $package], base_path(), ["COMPOSER_HOME" => "~/.composer"]); + + $this->runProcess($jobId, $process); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/MessageController.php b/app/Http/Controllers/MessageController.php new file mode 100644 index 00000000..02ce6de8 --- /dev/null +++ b/app/Http/Controllers/MessageController.php @@ -0,0 +1,10 @@ + $query->Field, DB::select('describe '.(new $model)->getTable())); - - $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { - $ref = new \ReflectionMethod($model, $method); - - $type = $ref->getReturnType(); - if (empty($type)) { - return $allClassMethods; - } - - return array_merge($allClassMethods, - [ - $method => $type, - ]); - }, []); - - $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); - $relations = array_filter($methodsThatReturnAClass, function ($type) { - $c = new \ReflectionClass($type->getName()); - - if (! empty($parentClass = $c->getParentClass())) { - if (! empty($parentParentClass = $parentClass->getParentClass())) { - if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - - return false; - }); - - return response()->json([ - 'fields' => $fields, - 'includes' => array_keys($relations), - 'sorts' => [], - 'filters' => [], - 'actions' => [ - 'get', - 'paginate:14', - 'first', - ], - ]); + return response()->json((new DescribeTableService)->describe($this->getModel($request))); } +protected function getModel(Request $request) +{ +$parts = $request->path(); +$split = explode('/', $parts); + + +return cache()->get(end($split)); +} + /** * @throws Exception */ - public function index(IndexRequest $request, ModelQuery $model) + public function index(IndexRequest $request) { + $class = $this->getModel($request); + $model = new $class; $action = new ActionFilter(request()->get('action', 'paginate:14')); - $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { - $ref = new \ReflectionMethod($model, $method); - - $type = $ref->getReturnType(); - if (empty($type)) { - return $allClassMethods; - } - - return array_merge($allClassMethods, [ - $method => $type, - ]); - }, []); - - $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); - $relations = array_filter($methodsThatReturnAClass, function ($type) { - $c = new \ReflectionClass($type->getName()); - - if (! empty($parentClass = $c->getParentClass())) { - if (! empty($parentParentClass = $parentClass->getParentClass())) { - if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\MorphOneOrMany::class) { - return true; - } - } - - return false; - }); - - $query = QueryBuilder::for(get_class($model)) - ->allowedFields(array_map(fn ($query) => $query->Field, DB::select('describe '.(new $model)->getTable()))) + $description = (new DescribeTableService)->describe($model); + + $query = QueryBuilder::for($class) + ->allowedFields($description['fields']) ->allowedFilters(array_merge([ Filter::scope('q'), - ])) - ->allowedIncludes(array_keys($relations)) - ->allowedSorts([ - 'id', 'updated_at', 'created_at', - 'name', - ]); + ], $description['filters'])) + ->allowedIncludes(array_keys($description['includes'])) + ->allowedSorts($description['sorts']); return $action->execute($query); } - public function store(CreateRequest $request, ModelQuery $model) + public function store(CreateRequest $request) { + $description = (new DescribeTableService)->describe($model = $this->getModel($request)); + + $request->validate(array_reduce($description['required'], fn ($all, $field) => array_merge( + $all, + [$field => 'required'] + ),[])); /** @var ModelQuery $resource */ $resource = new $model; $resource->fill($request->all()); @@ -143,29 +82,30 @@ public function store(CreateRequest $request, ModelQuery $model) public function show(ViewRequest $request, ModelQuery $model, $abstractEloquentModel = null) { - $query = QueryBuilder::for(get_class($model)); + $query = QueryBuilder::for($model = $this->getModel($request)); return $query->find($abstractEloquentModel) ?? response([ 'message' => 'No resource found by that id.', ], 404); } - public function update(UpdateRequest $request, ModelQuery $model, $abstractEloquentModel = null) + public function update(UpdateRequest $request, $abstractEloquentModel = null) { $abstractEloquentModel->update($request->all()); return $abstractEloquentModel->refresh(); } - public function destroy(DeleteRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) + public function destroy(DeleteRequest $request, ModelQuery $abstractEloquentModel) { $abstractEloquentModel->delete(); return response('', 204); } - public function forceDestroy(ForceDeleteRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) + public function forceDestroy(ForceDeleteRequest $request, ModelQuery $abstractEloquentModel) { + $model = new $this->getModel($request); if (! $model->usesSoftdeletes()) { abort(404, 'You cannot force delete an item of this type.'); @@ -179,6 +119,7 @@ public function forceDestroy(ForceDeleteRequest $request, ModelQuery $model, Mod public function restore(RestoreRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) { + $model = new $this->getModel($request); if (! $model->usesSoftdeletes()) { abort(404, 'You cannot restore an item of this type.'); diff --git a/app/Http/Controllers/ThreadController.php b/app/Http/Controllers/ThreadController.php new file mode 100644 index 00000000..771e8e17 --- /dev/null +++ b/app/Http/Controllers/ThreadController.php @@ -0,0 +1,10 @@ +validate([ + 'name' => 'required|string', + ]); + + $jobId = Str::uuid(); + $package = request()->get('name'); + abort_if(empty($package), 404); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $package) { + $process = new Process(['composer', 'remove', $package], base_path(), ["COMPOSER_HOME" => "~/.composer"]); + + $this->runProcess($jobId, $process); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index dafb4ad8..76dfd0bb 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -4,6 +4,9 @@ namespace App\Http\Middleware; +use App\Models\Domain; +use App\Models\Navigation; +use App\Models\Thread; use Illuminate\Http\Request; use Inertia\Middleware; @@ -36,7 +39,32 @@ public function version(Request $request): ?string public function share(Request $request): array { return array_merge(parent::share($request), [ - // + 'navigation' => Navigation::query() + ->where('authentication_required', auth()->check()) + ->whereNull('parent_id') + ->orderBy('order') + ->get() + + ->map(function (Navigation $item) { + $item->current = $item->href === request()->getRequestUri() || ($item->children->isNotEmpty() && $item->children->filter(fn ($item) => $item->href === request()->getRequestUri())->count() > 0); + return $item->toArray(); + }), + 'current_navigation' => Navigation::query() + ->with(['parent.children', 'children' => function ($query) { + $query->orderBy('order'); + }]) + ->where('authentication_required', auth()->check()) + ->where('href', '/'.request()->path()) + ->orderBy('order') + ->first(), + 'conversations' => Thread::query() + ->orderByDesc('origin_server_ts') + ->paginate( + request('limit'), + ['*'], + 'page', + request('page') + ) ]); } } diff --git a/app/Http/Middleware/OnlyHost.php b/app/Http/Middleware/OnlyHost.php new file mode 100644 index 00000000..e6c9d3a3 --- /dev/null +++ b/app/Http/Middleware/OnlyHost.php @@ -0,0 +1,18 @@ +user(), 404); + + abort_unless(in_array($request->user()->email, config('auth.admin_emails')), 404); + + return $next($request); + } +} diff --git a/app/Models/Article.php b/app/Models/Article.php index 15457227..ec0f96b2 100644 --- a/app/Models/Article.php +++ b/app/Models/Article.php @@ -10,7 +10,7 @@ use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; -class Article extends Model +class Article extends Model implements Crud { use HasFactory, LogsActivity; diff --git a/app/Models/Condition.php b/app/Models/Condition.php new file mode 100644 index 00000000..3086b0ff --- /dev/null +++ b/app/Models/Condition.php @@ -0,0 +1,11 @@ +belongsTo(User::class); + } + public function getPublicKey(): string { $publicKeyFile = $this->settings['pub_key_file']; diff --git a/app/Models/Crud.php b/app/Models/Crud.php new file mode 100644 index 00000000..ca3c9e3b --- /dev/null +++ b/app/Models/Crud.php @@ -0,0 +1,8 @@ +belongsTo(Credential::class); + } +} diff --git a/app/Models/Finance/Budget.php b/app/Models/Finance/Budget.php new file mode 100644 index 00000000..f107e6cb --- /dev/null +++ b/app/Models/Finance/Budget.php @@ -0,0 +1,12 @@ +id() === $this->from_person; + } +} diff --git a/app/Models/Navigation.php b/app/Models/Navigation.php new file mode 100644 index 00000000..d173ed2f --- /dev/null +++ b/app/Models/Navigation.php @@ -0,0 +1,33 @@ + 'boolean', + 'settings' => 'json' + ]; + + public function children() + { + return $this->hasMany(Navigation::class, 'parent_id'); + } + + public function parent() + { + return $this->belongsTo(Navigation::class); + } + + public function domain() + { + return $this->belongsTo(Domain::class); + } +} diff --git a/app/Models/Page.php b/app/Models/Page.php index 94970980..7b453892 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class Page extends Model implements ModelQuery +class Page extends Model implements ModelQuery, Crud { use HasFactory, HasProjectResource; @@ -30,6 +30,12 @@ class Page extends Model implements ModelQuery 'published_at', ]; + public $casts = [ + 'is_active' => 'boolean', + 'middleware' => 'json', + 'settings' => 'json', + ]; + public function domain(): BelongsTo { return $this->belongsTo(Domain::class); diff --git a/app/Models/Person.php b/app/Models/Person.php index f7131e24..2cffcc83 100644 --- a/app/Models/Person.php +++ b/app/Models/Person.php @@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Person extends Model implements ModelQuery +class Person extends Model implements ModelQuery, Crud { use HasFactory; diff --git a/app/Models/Project.php b/app/Models/Project.php index 83be99b7..2e65dfd6 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -16,7 +16,7 @@ use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Tags\HasTags; -class Project extends Model implements ModelQuery +class Project extends Model implements ModelQuery, Crud { use HasFactory, HasTags, LogsActivity; diff --git a/app/Models/Research.php b/app/Models/Research.php index 1c4ceb00..3de812e9 100644 --- a/app/Models/Research.php +++ b/app/Models/Research.php @@ -10,7 +10,7 @@ use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; -class Research extends Model +class Research extends Model implements Crud { use HasFactory, LogsActivity; diff --git a/app/Models/Server.php b/app/Models/Server.php index 0f9b913c..5518e1ef 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -13,7 +13,7 @@ use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Tags\HasTags; -class Server extends Model implements ModelQuery +class Server extends Model implements ModelQuery, Crud { use HasFactory, HasTags, LogsActivity; diff --git a/app/Models/ShortCode.php b/app/Models/ShortCode.php new file mode 100644 index 00000000..1724108e --- /dev/null +++ b/app/Models/ShortCode.php @@ -0,0 +1,32 @@ + 'bool', + ]; + + public function user() + { + return $this->belongsTo(User::class); + } + + public function generate(string $link) + { + } +} diff --git a/app/Models/Spork/Script.php b/app/Models/Spork/Script.php index ccc2a1ef..260e2141 100644 --- a/app/Models/Spork/Script.php +++ b/app/Models/Spork/Script.php @@ -4,10 +4,11 @@ namespace App\Models\Spork; +use App\Models\Crud; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Script extends Model +class Script extends Model implements Crud { use HasFactory; } diff --git a/app/Models/Tag.php b/app/Models/Tag.php index c86e87d2..e040a8fb 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -7,7 +7,7 @@ use App\Contracts\ModelQuery; use Illuminate\Database\Eloquent\Factories\HasFactory; -class Tag extends \Spatie\Tags\Tag implements ModelQuery +class Tag extends \Spatie\Tags\Tag implements ModelQuery, Crud { use HasFactory; diff --git a/app/Models/Thread.php b/app/Models/Thread.php new file mode 100644 index 00000000..1bcba39b --- /dev/null +++ b/app/Models/Thread.php @@ -0,0 +1,32 @@ + 'json', 'origin_server_ts' => 'datetime']; + + public $appends = ['human_timestamp']; + + public function messages() + { + return $this->hasMany(Message::class); + } + + public function participants() + { + return $this->belongsToMany(Person::class, 'thread_participants'); + } + + public function getHumanTimestampAttribute() + { + return $this->origin_server_ts->diffForHumans(now(), CarbonInterface::DIFF_RELATIVE_TO_NOW, false); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 914dd609..17e65b86 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -71,4 +71,9 @@ public function getActivitylogOptions(): LogOptions ->useLogName('user') ->logOnlyDirty(); } + + public function codes() + { + return $this->hasMany(ShortCode::class); + } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index e6c5c0b0..ff7ba181 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -43,7 +43,6 @@ class EventServiceProvider extends ServiceProvider ], Events\Domains\NameServerRecordVerified::class => [ Listeners\DebugEventListener::class, - ], ]; diff --git a/app/Providers/HorizonServiceProvider.php b/app/Providers/HorizonServiceProvider.php new file mode 100644 index 00000000..9811982b --- /dev/null +++ b/app/Providers/HorizonServiceProvider.php @@ -0,0 +1,36 @@ +email, [ + // + ]); + }); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 1143397f..43a4247b 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -72,6 +72,13 @@ public function boot(): void Route::middleware('web') ->domain(config('app.env') == 'production' ? 'spork.zone' : 'spork.localhost') ->group(base_path('routes/pages/spork.php')); + + Route::middleware('api') + ->domain(config('app.env') == 'production' ? 'deploy.kregel.host' : 'deploy.localhost') + ->group(base_path('routes/pages/deploy.php')); + + Route::domain(env("LINK_SHORTENING_DOMAIN")) + ->group(base_path('routes/pages/link-shortening.php')); }); } } diff --git a/app/Services/Code.php b/app/Services/Code.php new file mode 100644 index 00000000..cf4e6c7b --- /dev/null +++ b/app/Services/Code.php @@ -0,0 +1,557 @@ +phpFiles[$file] = PhpFile::fromCode(file_get_contents($file)); + } + } + + public static function with(string $driver): static|LaravelProgrammingStyle + { + return match ($driver) { + 'laravel' => new CodeForLaravel([]), + LaravelProgrammingStyle::class => new LaravelProgrammingStyle([]), + }; + } + + public static function composerMappedClasses(): array + { + /** @var ClassLoader $loader */ + $loader = require base_path('vendor').'/autoload.php'; + + return $loader->getClassMap(); + } + + public static function for(string $desiredParentClass): static + { + $classmap = require base_path('vendor/composer/autoload_classmap.php'); + + $classes = array_key_exists($desiredParentClass, $classmap) ? $classmap[$desiredParentClass] : $desiredParentClass; + + return new static( + $desiredParentClass, + $classes + ); + } + + protected function isArray(Property|Constant $property) + { + $contents = explode("\n", (string) $property->getValue()); + + return $contents[0] === '[' && $contents[count($contents) - 1] === ']'; + } + + public function addValueToProperty(string $property, string $name, mixed $value) + { + $this->modifyProperty($property, function (Property $property) use ($name, $value) { + if (is_callable($value)) { + $property->setValue(call_user_func($value, $property)); + + return; + } + $contents = explode("\n", (string) $property->getValue()); + $content = array_values(array_filter($contents)); + + if ($contents[0] === '[' && $contents[count($contents) - 1] === ']') { + // technically an unsafe eval, but you're using code to write code.. + // Soo uhhh... This may be dubious, but also it could just work well? + $literal = eval('return '.$property->getValue().';'); + // This really isn't ideal. but we are ensuring the contents are likely an array if (is_array($literal)) { + // Since it's an array, we should look for the $name, and then insert that right below it + // Or if it evaluates to an KV array, we can set the value instead. + if (is_array($literal[$name])) { + // This would be an array of arrays, see `EventServiceProvider` + $content = array_values(array_filter($contents)); + + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $name)) { + $lineWithEvent = $lineNumber; + } + } + + if ($lineWithEvent === null) { + $content = array_merge(array_slice($content, 0, 1), [ + // new line with our listener, + " /*(n*/\\$name::class => [", + " /*(n*/\\$value::class.'@handle', // code: this is an autogenerated line", + ' ],', + ], array_slice($content, 1, count($content))); + } else { + $content = array_merge(array_slice($content, 0, $lineWithEvent + 1), [ + // new line with our listener, + " /*(n*/\\$value::class . '@handle', // code: this is an autogenerated line", + ], array_slice($content, $lineWithEvent + 1, count($content))); + } + } else { + // This could be an array of strings, objects, or basically anything that isn't an array. + $content = array_values(array_filter($contents)); + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $name)) { + $lineWithEvent = $lineNumber; + } + } + +// if ($lineWithEvent === null) { +// $content = array_merge(array_slice($content, 0, 1), [ +// // new line with our listener, +// " /*(n*/\\$name::class => [", +// " /*(n*/\\$value::class.'@handle', // code: this is an autogenerated line", +// " ]," +// ], array_slice($content, 1, count($content))); +// } else { +// $content = array_merge(array_slice($content, 0, $lineWithEvent+1), [ +// // new line with our listener, +// " /*(n*/\\$value::class . '@handle', // code: this is an autogenerated line" +// ], array_slice($content, $lineWithEvent+1, count($content))); +// } + // I + } + } + + $property->setValue((new Literal(implode("\n", $content)))); + }); + + return $this; + } + + public static function instancesOf(string $desiredParentClass): static + { + // Classes known to composer in array form + $traits = []; + $classes = []; + $interfaces = []; + + foreach (static::composerMappedClasses() as $className => $filePath) { + $filePath = realpath($filePath); + if (stripos($className, 'reflection') !== false) { + // The class has reflection in the name, generally speaking, I'd like to avoid those... + continue; + } + if (stripos($className, 'abstract') !== false) { + // The class has reflection in the name, generally speaking, I'd like to avoid those... + continue; + } + + $vendorParts = explode('/vendor/', $filePath); + + if (str_contains($filePath, 'vendor/')) { + $possibleVendor = explode('/', $vendorParts[1], 2)[0]; + + if (! empty(config('spork.code.settings.blacklist')) && in_array($possibleVendor, config('spork.code.settings.blacklist'))) { + continue; + } + + if (! empty(config('spork.code.settings.whitelist')) && ! in_array($possibleVendor, config('spork.code.settings.whitelist'))) { + continue; + } + } + + try { + if (interface_exists($className)) { + $interfaces[] = $className; + } elseif (class_exists($className)) { + $classes[] = $className; + } elseif (trait_exists($className)) { + $traits[] = $className; + } + } catch (\Throwable|\Error|\ErrorException|ErrorException|\ReflectionException|\Whoops\Exception\ErrorException|\Symfony\Component\ErrorHandler\Error\FatalError|FatalError $e) { + // Missing classes based on my experience so far. + } + } + + $possibleInstances = match (true) { + interface_exists($desiredParentClass) => array_values(array_filter(array_merge($interfaces, $classes), fn ($declaredClass) => isset(class_implements($declaredClass)[$desiredParentClass]))), + class_exists($desiredParentClass) => array_values(array_filter($classes, fn ($declaredClass) => is_subclass_of($declaredClass, $desiredParentClass))), + trait_exists($desiredParentClass) => array_values(array_filter(array_merge($traits, $classes), fn ($declaredClass) => in_array($desiredParentClass, trait_uses_recursive($declaredClass)))), + }; + + return new static($possibleInstances); + } + + public function import(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + foreach ($imports as $import) { + $possibleImport = class_basename($import); + $uses = $namespace->getUses(); + // contains use ClassName; + // it could be aliased + if (in_array($import, $uses)) { + // already imported; + continue; + } + + if (isset($uses[$possibleImport])) { + // Not imported, but the import already exists, so we need to alias it. + // idk how I want to handle this yet, so I'ma just leave this for future me... + + dd($uses, $possibleImport, $import); + } + + $traitBaseName = class_basename($import); + + if ($namespace->getName().'\\'.$traitBaseName === $import) { + // Our class is in the same namespace as the class we're importing + // So we don't actually need to do anything + continue; + } + $namespace->addUse($import); + } + } + } + + return $this; + } + + public function use(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingTraits = $class->getTraits(); + foreach ($imports as $import) { + if (isset($existingTraits[$import])) { + // The trait is already used by the class. + continue; + } + + $class->addTrait($import); + } + } + } + } + + return $this; + } + + protected const TYPE_PROPERTY = 'property'; + + protected const TYPE_ATTRIBUTES = 'attribute'; + + protected const TYPE_TRAIT = 'trait'; + + protected const TYPE_CONSTANT = 'constant'; + + protected const TYPE_EXTEND = 'extend'; + + protected const TYPE_IMPLEMENT = 'implement'; + + protected const TYPE_METHOD = 'method'; + + protected function modify( + string $type, + string $name, + \Closure $valueResolver + ): static { + /** @var PhpFile $file */ + foreach ($this->phpFiles as $file) { + /** @var PhpNamespace $namespaceObject */ + foreach ($file->getNamespaces() as $namespace => $namespaceObject) { + // Add code at the namespace level like use statements, declare(strict_types=1); + /** @var \Nette\PhpGenerator\ClassType $class */ + foreach ($file->getClasses() as $class) { + switch ($type) { + case static::TYPE_PROPERTY: + /** @var \Nette\PhpGenerator\Property $property */ + foreach ($class->getProperties() as $propertyName => $property) { + if ($propertyName === $name) { + call_user_func($valueResolver, $property); + } + } + break; + case static::TYPE_ATTRIBUTES: + foreach ($class->getAttributes() as $attributeName => $attribute) { + if ($attributeName === $name) { + call_user_func($valueResolver, $attribute); + } + } + break; + case static::TYPE_TRAIT: + foreach ($class->getTraits() as $traitName => $trait) { + if ($traitName === $name) { + call_user_func($valueResolver, $trait); + } + } + break; + case static::TYPE_CONSTANT: + foreach ($class->getConstants() as $constantName => $constant) { + if ($constantName === $name) { + call_user_func($valueResolver, $constant); + } + } + break; + case static::TYPE_EXTEND: + foreach ($class->getExtends() as $extendClass => $extends) { + if ($extendClass === $name) { + call_user_func($valueResolver, $extends); + } + } + break; + case static::TYPE_IMPLEMENT: + foreach ($class->getImplements() as $implementationClass => $implementation) { + if ($implementationClass === $name) { + call_user_func($valueResolver, $implementation); + } + } + break; + case static::TYPE_METHOD: + foreach ($class->getMethods() as $methodName => $method) { + if ($methodName === $name) { + call_user_func($valueResolver, $method); + } + } + break; + default: + throw new \InvalidArgumentException('Unknown argument type, please see me after class for more details'); + } + } + } + } + + return $this; + } + + public function modifyProperty(string $name, \Closure $closure) + { + $this->modify(static::TYPE_PROPERTY, $name, $closure); + + return $this; + } + + public function extends(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + if (count($imports) > 1) { + throw new \DomainException('Failed to extend class, classes may only be extended once in this language.'); + } + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingExtends = $class->getExtends(); + + foreach ($imports as $import) { + if (isset($existingExtends[$import])) { + // We already extend the class. + continue; + } + + $class->setExtends($import); + } + } + } + } + + return $this; + } + + public function getInterfaces() + { + $existingInterfaces = []; + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingInterfaces = array_merge($existingInterfaces, $class->getImplements()); + } + } + } + + return $existingInterfaces; + } + public function getProperty(string $property): array + { + return array_map(function (PhpFile $phpFile) use ($property) { + return array_map(fn (PhpNamespace $namespace) => + array_map(fn (ClassType $type) => $type->getProperty($property), $namespace->getClasses()), $phpFile->getNamespaces()); + }, $this->phpFiles); + } + + public function getClasses(): array + { + return array_reduce($this->phpFiles, function (array $allClasses, PhpFile $phpFile) { + return array_reduce( + $phpFile->getNamespaces(), + fn (array $result, PhpNamespace $namespace) => + array_merge( + $result, + array_values(array_map(fn (ClassType $type) => $namespace->getName().'\\'.$type->getName(), $namespace->getClasses())), + ), + $allClasses + ); + }, []); + } + + public function implements(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingInterfaces = $class->getImplements(); + + foreach ($imports as $import) { + if (isset($existingInterfaces[$import])) { + // We already implement the interface. + continue; + } + + $class->addImplement($import); + } + } + } + } + + return $this; + } + + protected function resolveFileOrClassName(string $fileOrClassName) + { + if (str_contains($fileOrClassName, '.')) { + return $fileOrClassName; + } + + return static::composerMappedClasses()[$fileOrClassName]; + } + + // Default to non-destructive action. + public function toFile($howToHandleFile = self::RETURN_CONTENTS) + { + foreach ($this->phpFiles as $className => $file) { + $contents = str_replace("\t", ' ', $this->validateFile($file)); + switch ($howToHandleFile) { + case static::REPLACE_FILE: + if (! file_exists($filePath = $this->resolveFileOrClassName($className))) { + // Our class name isn't found int composer. + // Perhaps we need to run composer:dump + continue 2; + } + file_put_contents($filePath, $contents); + break; + case static::RETURN_CONTENTS: + default: + return $contents; + } + } + + return $this; + } + + protected function validateFile(PhpFile $file) + { + $printer = new Printer; + $printer->indentation = ' '; + $printer->linesBetweenMethods = 1; + + $processedFile = (string) $printer->printFile($file); + + $lines = explode("\n", $processedFile); + $location = array_keys(array_filter($lines, fn ($line) => str_starts_with($line, 'namespace')))[0] ?? 0; + $preLocation = array_slice($lines, 0, $location + 1); + $postLocation = array_slice($lines, $location + 1, count($lines)); + + $filesystem = new Filesystem(); + $filesystem->makeDirectory(storage_path('tmp'), 0755, true, true); + // How can we validate the file, like make sure there aren't any parsing errors or obvious exceptions. + $path = storage_path('tmp/'.Str::random(16)); + + $filesystem->put($path, $contentToVerify = implode("\n", array_merge($preLocation, [ + sprintf('require "%s/vendor/autoload.php";', base_path()), + ], $postLocation))); + try { + // Generally this isn't safe, but we need to check for syntax issues but we also want to add + // a require line for the autoloader, + try { + exec('php -f ' . escapeshellarg($path) . ' 2>&1', $output, $errorCode); + $output = implode("\n", $output); + } catch (SyntaxErrorException $e) { + return null; + } + if ($errorCode !== 0) { + if (str_starts_with($output, 'PHP Fatal error:')) { + $line = explode('on line ', $output, 2)[1] ?? ''; + + throw new FatalError($output, $errorCode, [ + 'file' => $path, + 'line' => explode("\n", $line, 2)[0], + ]); + } + + + throw new SyntaxErrorException('There were syntax errors found in the generated file, this shouldn\'t happen. ' . $output); + } + + return $processedFile; + } finally { + $filesystem->delete($path); + } + } + + public function propertyIncludesValue($field, \Closure $closure) + { + call_user_func($closure, $field); + return false; + } +} diff --git a/app/Services/Development/DescribeTableService.php b/app/Services/Development/DescribeTableService.php new file mode 100644 index 00000000..7d6a6f53 --- /dev/null +++ b/app/Services/Development/DescribeTableService.php @@ -0,0 +1,146 @@ + array_values(array_map(fn ($query) => $query->Field, $everything)); + $description = cache()->remember('description.'.get_class($model), now()->addHour(), fn () => DB::select('describe '.(new $model)->getTable())); + $indexes = cache()->remember('indexes.'.get_class($model), now()->addHour(), fn () => DB::select('show indexes from '.(new $model)->getTable())); + $fields = $mapField($description); + $sorts = array_filter($description, function($query) { + if (str_contains($query->Type, 'int') && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Type, [ + 'timestamp', + 'date', + ]) && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Field, [ + 'name', + 'created_at', + 'deleted_at', + 'updated_at', + ])) { + return true; + } + + return false; + }); + + $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { + $ref = new \ReflectionMethod($model, $method); + + $type = $ref->getReturnType(); + if (empty($type)) { + return $allClassMethods; + } + + return array_merge($allClassMethods, + [ + $method => $type, + ]); + }, []); + + $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); + $relations = array_filter($methodsThatReturnAClass, function ($type) { + $c = new \ReflectionClass($type->getName()); + + if (! empty($parentClass = $c->getParentClass())) { + if (! empty($parentParentClass = $parentClass->getParentClass())) { + if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + + return false; + }); + + return [ + 'actions' => ActionFilter::WHITELISTED_ACTIONS, + 'fillable' => empty($model->getFillable()) ? ['name'] :$model->getFillable(), + 'fields' => $fields, + 'filters' => array_map(fn ($query) => $query->Column_name, $indexes), + 'includes' => array_keys($relations), + 'sorts' => $mapField($sorts), + 'required' => $mapField(array_filter($description, fn ($query) => $query->Null === "NO" && $query->Extra !== 'auto_increment')), + ]; + } + + + public function describeTable(string $table): array + { + $mapField = fn ($everything) => array_values(array_map(fn ($query) => $query->Field, $everything)); + $description = cache()->remember('description.'.$table, now()->addHour(), fn () => DB::select('describe '.$table)); + $indexes = cache()->remember('indexes.'.$table, now()->addHour(), fn () => DB::select('show indexes from '.$table)); + $fields = $mapField($description); + $sorts = array_filter($description, function($query) { + if (str_contains($query->Type, 'int') && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Type, [ + 'timestamp', + 'date', + ]) && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Field, [ + 'name', + 'created_at', + 'deleted_at', + 'updated_at', + ])) { + return true; + } + + return false; + }); + + $returnTypes = []; + + $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); + $relations = array_filter($methodsThatReturnAClass, function ($type) { + $c = new \ReflectionClass($type->getName()); + + if (! empty($parentClass = $c->getParentClass())) { + if (! empty($parentParentClass = $parentClass->getParentClass())) { + if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + + return false; + }); + + return [ + 'actions' => ActionFilter::WHITELISTED_ACTIONS, + 'fillable' => ['name'], + 'fields' => $fields, + 'filters' => array_map(fn ($query) => $query->Column_name, $indexes), + 'includes' => array_keys($relations), + 'sorts' => $mapField($sorts), + 'required' => $mapField(array_filter($description, fn ($query) => $query->Null === "NO" && $query->Extra !== 'auto_increment')), + ]; + } +} diff --git a/app/Services/Finance/PlaidHttpService.php b/app/Services/Finance/PlaidHttpService.php new file mode 100644 index 00000000..ef865fb3 --- /dev/null +++ b/app/Services/Finance/PlaidHttpService.php @@ -0,0 +1,75 @@ +url = sprintf($this->baseUrl, $this->env); + parent::__construct($this->url, []); + } + + /** + * @return PlaidHttpService + */ + public function sandbox(): self + { + $this->url = sprintf($this->baseUrl, 'sandbox'); + $this->new($this->url, []); + + return $this; + } + + /** + * @return PlaidHttpService + */ + public function development(): self + { + $this->url = sprintf($this->baseUrl, 'development'); + $this->new($this->url, []); + + return $this; + } + + /** + * @param $data + * @return HttpService + */ + public function auth($data): HttpService + { + $this->authBits = $data; + + return $this; + } + + /** + * @param $action + * @param null $data + * @return \Illuminate\Support\Collection + * @throws \Exception + */ + protected function request($action, $data = []) + { + return parent::request($action, array_merge((array) $data, $this->authBits)); + } +} diff --git a/app/Services/HttpService.php b/app/Services/HttpService.php new file mode 100644 index 00000000..1b3fce48 --- /dev/null +++ b/app/Services/HttpService.php @@ -0,0 +1,123 @@ +url = $url; + $this->new($url, $data); + } + + public static function __callStatic($method, $arguments) + { + if (empty(self::$instance)) { + self::$instance = new static; + } + + return call_user_func_array([self::$instance, $method], $arguments); + } + + public function __call($method, $arguments) + { + return call_user_func_array([self::$instance, $method], $arguments); + } + + public function toArray() + { + return $this->response->toArray(); + } + + protected function new($path, $data = []) + { + $this->path = $path; + $this->client = new Client(array_merge(['base_uri' => $this->url], $data)); + + return $this; + } + protected function request($action, $data = []) + { + if (!in_array(strtolower($action), ['get', 'post', 'put', 'delete', 'patch'])) { + throw new \Exception('Your desired action is not supported'); + } + + if (empty($data)) { + $body = [ + 'body' => '{}', + 'headers' => [ + 'Content-Type' => 'application/json', + 'Accepts' => 'application/json', + ] + ]; + } else { + $body = [ + 'json' => $data, + 'headers' => [ + 'Content-Type' => 'application/json', + 'Accepts' => 'application/json', + ] + ]; + } + + try { + $response = $this->client->request($action, $this->path, $body); + + $json = $response->getBody()->getContents(); + } catch (ClientException $exception) { + throw new \Exception($exception->getResponse()->getBody()->getContents()); + } + + return $this->response = collect(json_decode($json)); + } + public function get($path, $data = null) + { + $this->path = $path; + + return $this->request('get', $data); + } + public function post($path, $data = null) + { + $this->path = $path; + + return $this->request('post', $data); + } + + public function patch($path, $data = null) + { + $this->path = $path; + + return $this->request('patch', $data); + } + + public function delete(string $path, $data = null) + { + $this->path = $path; + + return $this->request('delete', $data); + } + + public function put(string $path, $data = null) + { + $this->path = $path; + + return $this->request('put', $data); + } +} diff --git a/app/Services/ImapService.php b/app/Services/ImapService.php new file mode 100644 index 00000000..7672e7e3 --- /dev/null +++ b/app/Services/ImapService.php @@ -0,0 +1,153 @@ +buildMailboxString(), + env('IMAP_USERNAME'), + env("IMAP_PASSWORD") + ), $this->buildMailboxString(), '*')) + ->tap(fn () => imap_close($inbox)); + } + public function findAllFromDate(string $mailbox, Carbon $date): Collection + { + return collect(imap_search($inbox = imap_open( + sprintf('%s%s', $this->buildMailboxString(), $mailbox), + env('IMAP_USERNAME'), + env("IMAP_PASSWORD") + ), + sprintf('SINCE "%s"', $date->format("Y-m-d")) + )) + ->map(function ($messageNumber) use ($inbox) { + $headers = Str::of($headerRaw = imap_fetchheader($inbox, $messageNumber, )) + ->explode("\r\n") + ->filter() + ->reduce(fn ($lines, $line) => array_merge( + $lines, + [explode(": ", $line, 2)[0] => explode(": ", $line, 2)[1] ?? null] + ), []); + + $rfcHeaders = imap_rfc822_parse_headers($headerRaw); + $body = null; + $overview = Arr::first(imap_fetch_overview($inbox, $messageNumber)); + + return [ + 'id' => imap_uid($inbox, $messageNumber), + 'to' => $this->extractEmailAndName($headers['To']), + 'addressed-to' => $this->extractEmailAndName($headers['X-Simplelogin-Envelope-To'] ?? $headers['X-Original-To'] ?? null), + 'addressed-from' => $this->extractEmailAndName($rfcHeaders->fromaddress ?? $headers['X-Pm-External-Id'] ?? null), + 'date' => Carbon::parse($headers['Date']), + 'human_date' => Carbon::parse($headers['Date'])->fromNow(), + 'subject' => imap_utf8($headers['Subject']), + 'from' => $this->extractEmailAndName($rfcHeaders->senderaddress ?? $rfcHeaders->fromaddress ?? $headers['From'], $headers), + 'reply-to' => $this->extractEmailAndName($rfcHeaders->reply_toaddress ?? $headers['Reply-To']), + 'spam' => intval($headers['X-Pm-Spamscore'] ?? 0), + 'seen' => (bool) $overview->seen ?? false, + 'deleted' => (bool) $overview->deleted ?? false, + 'answered' => (bool) $overview->answered ?? false, + 'recent' => (bool) $overview->recent ?? false, + 'draft' => (bool) $overview->draft ?? false, + ]; + }) + ->sortByDesc('date') + ->values() + ->tap(fn () => imap_close($inbox)); + } + + public function findMessage(string $messageNumber, bool $peak = true): array + { + $mailbox = new \PhpImap\Mailbox( + sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}INBOX'), // IMAP server and mailbox folder + env('IMAP_USERNAME'), // Username for the before configured mailbox + env('IMAP_PASSWORD'), // Password for the before configured username + storage_path(), // Directory, where attachments will be saved (optional) + 'UTF-8', // Server encoding (optional) + true, // Trim leading/ending whitespaces of IMAP path (optional) + false // Attachment filename mode (optional; false = random filename; true = original filename) + ); + + $message = $mailbox->getMail($messageNumber, false); + + $headers = Str::of($message->headersRaw) + ->explode("\r\n") + ->filter() + ->reduce(fn ($lines, $line) => array_merge( + $lines, + [explode(": ", $line, 2)[0] => explode(": ", $line, 2)[1] ?? null] + ), []); + + $rfcHeaders = imap_rfc822_parse_headers($message->headersRaw); + return [ + 'id' => $messageNumber, + 'to' => $this->extractEmailAndName($headers['To']), + 'addressed-to' => $this->extractEmailAndName($headers['X-Simplelogin-Envelope-To'] ?? $headers['X-Original-To'] ?? null), + 'addressed-from' => $this->extractEmailAndName($rfcHeaders->fromaddress ?? $headers['X-Pm-External-Id'] ?? null), + 'date' => Carbon::parse($headers['Date']), + 'human_date' => Carbon::parse($headers['Date'])->fromNow(), + 'subject' => imap_utf8($headers['Subject']), + 'from' => $this->extractEmailAndName($rfcHeaders->senderaddress ?? $rfcHeaders->fromaddress ?? $headers['From'], $headers), + 'reply-to' => $this->extractEmailAndName($rfcHeaders->reply_toaddress ?? $headers['Reply-To']), + 'spam' => $headers['X-Pm-Spamscore'], + 'seen' => $message->isSeen ?? false, + 'deleted' => $message->isDeleted ?? false, + 'answered' => $message->isAnswered ?? false, + 'recent' => $message->isRecent ?? false, + 'draft' => $message->isDraft ?? false, + 'body' => base64_encode($message->textHtml), + ]; + } + + protected function buildMailboxString() + { + return sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}'); + } + + protected function extractEmailAndName(?string $value, $headers = []) + { + if (empty($value)) { + return $value +; } + + if (!str_contains($value, '<')) { + return array_merge([ + 'email' => $value + ]); + } + + if (str_contains($value, '"')) { + preg_match_all('/(\".*\")?(\s)?(\<.*\>)/', $value, $matches); + } else { + preg_match_all('/(.*)(\s)(\<.*\>)/', $value, $matches); + } + return match (count($matches)) { + 3 => [ + 'email' => trim(Arr::first($matches[2])), + 'original' => $value + ], + 4 => empty(trim(Arr::first($matches[1]), "\"'")) ? [ + // Address + 'email' => trim(Arr::first($matches[3]), "<>"), + 'original' => $value + ] : [ + // Name + 'name' => trim(Arr::first($matches[1]), "\"'"), + // Address + 'email' => trim(Arr::first($matches[3]), "<>"), + 'original' => $value + ], + }; + } +} diff --git a/app/Services/Matrix/MatrixClient.php b/app/Services/Matrix/MatrixClient.php new file mode 100644 index 00000000..34aef141 --- /dev/null +++ b/app/Services/Matrix/MatrixClient.php @@ -0,0 +1,114 @@ + 'application/json', +// 'Content-type' => 'application/json', +// ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/r0/login')->json() + $rooms = Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.env('MATRIX_ACCESS_TOKEN'), + + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/joined_rooms', [ +// 'type' => 'm.login.application_service', +// 'identifier' => [ +// "type" => "m.id.user", +// 'user' => 'austinkregel', +// +// ] + ])->json('joined_rooms'); + + dd(array_reduce($rooms, function ($all, $room) { + $roomAliases = cache()->rememberForever('room-cache'.$room, fn () => Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.env('MATRIX_ACCESS_TOKEN'), + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/rooms/'.$room.'/aliases')->json('aliases')); + + echo $room."\n"; + + return array_merge( + $all, + [ + $room => $roomAliases + ], + ); + }, [])); + } + + public function requestCodeForBeeper(string $email): string + { + return cache()->remember(md5(json_encode([ + 'beeper','|', + $email, + ])), now()->addMinutes(30), function () use ($email) { + $request = Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login', [ + ])->json('request'); + + Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login/email', [ + 'request' => $request, + 'email' => $email + ])->body(); + + return $request; + }); + } + public function loginWithBeeperCode(string $email, string $code): array + { + if (!cache()->has(md5(json_encode([ + 'beeper','|', + $email + ])))) { + abort(404); + } + + return Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login/response', [ + 'request' => cache()->get(md5(json_encode([ + 'beeper','|', + $email + ]))), + 'response' => $code + ])->json(); + } + + public function loginWithJwt(string $jwt): array + { + $login = Http::withHeaders([ + 'Accept' => 'application/json' + ])->post('https://matrix.'.$this->homeserver.'/_matrix/client/v3/login', [ + 'type' => 'org.matrix.login.jwt', + 'token' => $jwt, + ])->json(); + + return $login; + } + + public function devices(string $jwt): array + { + dd(Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.$jwt, + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/devices')->json()); + } +} diff --git a/app/Services/Programming/LaravelProgrammingStyle.php b/app/Services/Programming/LaravelProgrammingStyle.php new file mode 100644 index 00000000..0d943736 --- /dev/null +++ b/app/Services/Programming/LaravelProgrammingStyle.php @@ -0,0 +1,190 @@ +import([$listener, $eventName]); + $this->modifyProperty('listen', function (Property $property) use ($eventName, $listener) { + /** @var Literal $literal */ + $literal = $property->getValue(); + // plan: Split the literal into chunks, look for the $eventName, + // When $eventName is found, on the following line insert $listener with a trailing comma. + + $lineWithEvent = null; + $content = explode("\n", $literal); + + if (count($content) <= 2) { + throw new \DomainException('This EventServiceProvider needs to have at least 3 lines for the $listen'); + } + + $content = array_values(array_filter($content)); + + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $eventName)) { + $lineWithEvent = $lineNumber; + } + } + + if ($lineWithEvent === null) { + $content = array_merge(array_slice($content, 0, 1), [ + // new line with our listener, + ' '.$this->formatClassWithClass($eventName).' => [', + ' '.$this->formatClassWithClass($listener).".'@handle', // code: this is an autogenerated line", + ' ],', + ], array_slice($content, 1, count($content))); + } else { + $content = array_merge(array_slice($content, 0, $lineWithEvent + 1), [ + // new line with our listener, + ' '.$this->formatClassWithClass($listener)." . '@handle', // code: this is an autogenerated line", + ], array_slice($content, $lineWithEvent + 1, count($content))); + } + + $property->setValue((new Literal(implode("\n", $content)))); + }); + + return $this; + } + + public function propertyContainsValue(string $propertyName, string $valueToLookFor) + { + /** @var PhpFile $file */ + foreach ($this->phpFiles as $file) { + /** @var PhpNamespace $namespaceObject */ + foreach ($file->getNamespaces() as $namespace => $namespaceObject) { + // Add code at the namespace level like use statements, declare(strict_types=1); + /** @var \Nette\PhpGenerator\ClassType $class */ + foreach ($file->getClasses() as $class) { + /** @var \Nette\PhpGenerator\Property $property */ + foreach ($class->getProperties() as $definedProperty => $property) { + if ($definedProperty === $propertyName) { + /** @var Literal $value */ + $value = $property->getValue(); + + if (is_string($value) && str_contains($value, $valueToLookFor)) { + return true; + } + $value = $value->formatWith(new Dumper); + + if (str_contains($value, $valueToLookFor)) { + return true; + } + } + } + } + } + } + + return false; + } + + public function removeListenerFromEvent(string $eventName, string $listener) + { + // We need to find the event service provider + // Then find the $listen property + // then the index of the event + // lastly add the listener to the array of listeners + // and rebuild the file. + $this->removeImport([$listener]); + $this->modifyProperty('listen', function (Property $property) use ($eventName, $listener) { + /** @var Literal $literal */ + $literal = $property->getValue(); + // plan: Split the literal into chunks, look for the $eventName, + // When $eventName is found, on the following line insert $listener with a trailing comma. + + $lineWithListener = null; + $content = explode("\n", $literal); + + if (count($content) <= 2) { + throw new \DomainException('This EventServiceProvider needs to have at least 3 lines for the $listen'); + } + + $content = array_values(array_filter($content)); + + $eventLine = 0; + $eventLineEnd = 0; + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $eventName)) { + $eventLine = $lineNumber; + } + if (str_contains($line, $listener)) { + unset($content[$lineNumber]); + $lineWithListener = $lineNumber; + } + if ($eventLineEnd === 0 && $lineNumber > $lineWithListener && str_contains($line, ']')) { + $eventLineEnd = $lineNumber; + } + } + + if (($eventLineEnd - $eventLine) <= 2) { + $content = array_merge(array_slice($content, 0, $lineWithListener), [ + // We need some amount of space between + " // code: this is an autogenerated line", + ], array_slice($content, $lineWithListener, count($content))); + } + + $property->setValue(new Literal(implode("\n", $content))); + }); + + return $this; + } + + public static function changeConfigValue( + string $filePath, + string $key, + \Closure $closure + ): void { + $phpFile = PhpFile::fromCode(file_get_contents($filePath)); + + dd(VarExporter::export([ + 'hello' + ])); +// composer create-project wintercms/winter example.com "dev-develop" + } + + public function formatClassWithClass(string $class) + { + return '/*(n*/'.$class.'::class'; + } + + public function removeImport($fqns) + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + foreach ($this->phpFiles as $phpFile) { + /** + * @var string $namespaceName + * @var PhpNamespace $namespace + */ + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + foreach ($imports as $importToRemove) { + $uses = $namespace->getUses(); + if (!in_array($importToRemove, $uses)) { + // not already imported; + continue; + } + + $namespace->removeUse($importToRemove); + } + } + } + + return $this; + } +} diff --git a/app/Services/Server/DigitalOceanService.php b/app/Services/Server/DigitalOceanService.php index 199598d2..74a5d45a 100644 --- a/app/Services/Server/DigitalOceanService.php +++ b/app/Services/Server/DigitalOceanService.php @@ -135,4 +135,9 @@ public function updateDomainNs(string $domain, array $nameservers): array { // TODO: Implement updateDomainNs() method. } + + public function createDomain(string $domain): array + { + // TODO: Implement createDomain() method. + } } diff --git a/app/Services/SshService.php b/app/Services/SshService.php index cecdcc09..1e61c37a 100644 --- a/app/Services/SshService.php +++ b/app/Services/SshService.php @@ -6,6 +6,7 @@ use App\Models\Credential; use App\Models\Spork\Script; +use App\Models\User; use Exception; use Illuminate\Support\Str; @@ -88,9 +89,19 @@ public function run(Script $script, string $directory = ''): array /** * @throws Exception */ - public static function factory(string $host, string $username = 'forge', Credential $credential = null): static + public static function factory(string $host, User $user = null): Credential { - if (! $credential) { + $credential = Credential::query()->where(array_merge([ + 'service' => Credential::TYPE_SSH, + 'type' => Credential::TYPE_SSH + ], $user ? ['user_id' => $user->id]: []))->first(); + + if (empty($user) && empty($credential)) { + abort(404, 'user does ot exist'); + } + + + if (empty($credential)) { $randomName = Str::random(16); $generatorService = new SshKeyGeneratorService( @@ -99,11 +110,11 @@ public static function factory(string $host, string $username = 'forge', Credent passKey: $passKey = ''// Str::random(16), ); - $credential = Credential::create([ + return Credential::create([ 'service' => Credential::TYPE_SSH, 'type' => Credential::TYPE_SSH, - 'name' => 'Forge', - 'user_id' => 1, + 'name' => $host.' ssh', + 'user_id' => $user->id, 'settings' => [ 'pub_key' => $generatorService->getPublicKey(), 'pub_key_file' => $publicKeyFile, @@ -114,12 +125,6 @@ public static function factory(string $host, string $username = 'forge', Credent ]); } - return new static( - host: $host, - username: $username, - publicKeyFile: $credential->getPublicKey(), - privateKeyFile: $credential->getPrivateKey(), - passKey: $credential->getPasskey() - ); + return $credential; } } diff --git a/config/app.php b/config/app.php index 1799d102..ae753615 100644 --- a/config/app.php +++ b/config/app.php @@ -169,6 +169,7 @@ App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, + App\Providers\HorizonServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\FortifyServiceProvider::class, App\Providers\JetstreamServiceProvider::class, diff --git a/config/auth.php b/config/auth.php index 3fdb672d..f65f8c7d 100644 --- a/config/auth.php +++ b/config/auth.php @@ -114,4 +114,5 @@ 'password_timeout' => 10800, + 'admin_emails' => explode(',', env('SPORK_ADMIN_EMAILS','')), ]; diff --git a/config/database.php b/config/database.php index f75f0d9f..fe5d6c29 100644 --- a/config/database.php +++ b/config/database.php @@ -40,7 +40,7 @@ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'database' => env("DB_DATABASE"), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], diff --git a/config/filesystems.php b/config/filesystems.php index d307268d..6650ee65 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -37,6 +37,12 @@ 'root' => storage_path('app'), 'throw' => false, ], + 'ftp' => [ + 'driver' => 'ftp', + 'host' => env('FTP_HOST'), + 'username' => env('FTP_USERNAME'), + 'password' => env('FTP_PASSWORD'), + ], 'public' => [ 'driver' => 'local', diff --git a/config/mail.php b/config/mail.php index eb9256af..1ea87cef 100644 --- a/config/mail.php +++ b/config/mail.php @@ -124,4 +124,15 @@ ], ], + 'boxes' => [ + + 'imap' => [ + 'transport' => 'imap', + 'host' => env('IMAP_HOST', 'smtp.mailgun.org'), + 'port' => env('IMAP_PORT', 587), + 'encryption' => env('IMAP_ENCRYPTION', 'notls'), + 'username' => env('IMAP_USERNAME'), + 'password' => env('IMAP_PASSWORD'), + ], + ] ]; diff --git a/config/spork.php b/config/spork.php new file mode 100644 index 00000000..fcceb7b9 --- /dev/null +++ b/config/spork.php @@ -0,0 +1,16 @@ + '', + 'filesystem' => [ + 'default' => env('SPORK_DEFAULT_FILESYSTEM') + ], + 'code' => [ + 'enabled' => true, + 'settings' => [ + // These vendors dont always match 100% with the versions or available interfaces, likely due to missing dev dependencies. + 'blacklist' => ['nesbot', 'doctrine', 'google', 'psy', 'cboden', 'symfony', 'phpunit', 'mockery', 'zendframework'], + 'whitelist' => [], + ] + ] +]; diff --git a/config/websockets.php b/config/websockets.php new file mode 100644 index 00000000..45415d76 --- /dev/null +++ b/config/websockets.php @@ -0,0 +1,141 @@ + [ + 'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001), + ], + + /* + * This package comes with multi tenancy out of the box. Here you can + * configure the different apps that can use the webSockets server. + * + * Optionally you specify capacity so you can limit the maximum + * concurrent connections for a specific app. + * + * Optionally you can disable client events so clients cannot send + * messages to each other via the webSockets. + */ + 'apps' => [ + [ + 'id' => env('PUSHER_APP_ID'), + 'name' => env('APP_NAME'), + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'path' => env('PUSHER_APP_PATH'), + 'capacity' => null, + 'enable_client_messages' => false, + 'enable_statistics' => true, + ], + ], + + /* + * This class is responsible for finding the apps. The default provider + * will use the apps defined in this config file. + * + * You can create a custom provider by implementing the + * `AppProvider` interface. + */ + 'app_provider' => BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider::class, + + /* + * This array contains the hosts of which you want to allow incoming requests. + * Leave this empty if you want to accept requests from all hosts. + */ + 'allowed_origins' => [ + // + ], + + /* + * The maximum request size in kilobytes that is allowed for an incoming WebSocket request. + */ + 'max_request_size_in_kb' => 250, + + /* + * This path will be used to register the necessary routes for the package. + */ + 'path' => 'laravel-websockets', + + /* + * Dashboard Routes Middleware + * + * These middleware will be assigned to every dashboard route, giving you + * the chance to add your own middleware to this list or change any of + * the existing middleware. Or, you can simply stick with this list. + */ + 'middleware' => [ + 'web', + Authorize::class, + ], + + 'statistics' => [ + /* + * This model will be used to store the statistics of the WebSocketsServer. + * The only requirement is that the model should extend + * `WebSocketsStatisticsEntry` provided by this package. + */ + 'model' => \BeyondCode\LaravelWebSockets\Statistics\Models\WebSocketsStatisticsEntry::class, + + /** + * The Statistics Logger will, by default, handle the incoming statistics, store them + * and then release them into the database on each interval defined below. + */ + 'logger' => BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger::class, + + /* + * Here you can specify the interval in seconds at which statistics should be logged. + */ + 'interval_in_seconds' => 60, + + /* + * When the clean-command is executed, all recorded statistics older than + * the number of days specified here will be deleted. + */ + 'delete_statistics_older_than_days' => 60, + + /* + * Use an DNS resolver to make the requests to the statistics logger + * default is to resolve everything to 127.0.0.1. + */ + 'perform_dns_lookup' => false, + ], + + /* + * Define the optional SSL context for your WebSocket connections. + * You can see all available options at: http://php.net/manual/en/context.ssl.php + */ + 'ssl' => [ + /* + * Path to local certificate file on filesystem. It must be a PEM encoded file which + * contains your certificate and private key. It can optionally contain the + * certificate chain of issuers. The private key also may be contained + * in a separate file specified by local_pk. + */ + 'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null), + + /* + * Path to local private key file on filesystem in case of separate files for + * certificate (local_cert) and private key. + */ + 'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null), + + /* + * Passphrase for your local_cert file. + */ + 'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null), + ], + + /* + * Channel Manager + * This class handles how channel persistence is handled. + * By default, persistence is stored in an array by the running webserver. + * The only requirement is that the class should implement + * `ChannelManager` interface provided by this package. + */ + 'channel_manager' => \BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManagers\ArrayChannelManager::class, +]; diff --git a/database/factories/ConditionFactory.php b/database/factories/ConditionFactory.php new file mode 100644 index 00000000..9bcbc605 --- /dev/null +++ b/database/factories/ConditionFactory.php @@ -0,0 +1,23 @@ + + */ +class ConditionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/AccountFactory.php b/database/factories/Finance/AccountFactory.php new file mode 100644 index 00000000..4e6739ea --- /dev/null +++ b/database/factories/Finance/AccountFactory.php @@ -0,0 +1,23 @@ + + */ +class AccountFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/BudgetFactory.php b/database/factories/Finance/BudgetFactory.php new file mode 100644 index 00000000..6b2fc766 --- /dev/null +++ b/database/factories/Finance/BudgetFactory.php @@ -0,0 +1,23 @@ + + */ +class BudgetFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/TransactionFactory.php b/database/factories/Finance/TransactionFactory.php new file mode 100644 index 00000000..0c89fafb --- /dev/null +++ b/database/factories/Finance/TransactionFactory.php @@ -0,0 +1,23 @@ + + */ +class TransactionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/MessageFactory.php b/database/factories/MessageFactory.php new file mode 100644 index 00000000..ff5110d4 --- /dev/null +++ b/database/factories/MessageFactory.php @@ -0,0 +1,23 @@ + + */ +class MessageFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/NavigationFactory.php b/database/factories/NavigationFactory.php new file mode 100644 index 00000000..1c787100 --- /dev/null +++ b/database/factories/NavigationFactory.php @@ -0,0 +1,23 @@ + + */ +class NavigationFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/ShortCodeFactory.php b/database/factories/ShortCodeFactory.php new file mode 100644 index 00000000..0365197e --- /dev/null +++ b/database/factories/ShortCodeFactory.php @@ -0,0 +1,23 @@ + + */ +class ShortCodeFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/ThreadFactory.php b/database/factories/ThreadFactory.php new file mode 100644 index 00000000..1589712c --- /dev/null +++ b/database/factories/ThreadFactory.php @@ -0,0 +1,23 @@ + + */ +class ThreadFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php b/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php new file mode 100644 index 00000000..1b89b4af --- /dev/null +++ b/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('app_id'); + $table->integer('peak_connection_count'); + $table->integer('websocket_message_count'); + $table->integer('api_message_count'); + $table->nullableTimestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('websockets_statistics_entries'); + } +} diff --git a/database/migrations/2023_06_08_024343_create_projects_table.php b/database/migrations/2023_06_08_024343_create_projects_table.php index 94c92428..c795949e 100644 --- a/database/migrations/2023_06_08_024343_create_projects_table.php +++ b/database/migrations/2023_06_08_024343_create_projects_table.php @@ -38,5 +38,6 @@ public function up(): void public function down(): void { Schema::dropIfExists('projects'); + Schema::dropIfExists('project_resources'); } }; diff --git a/database/migrations/2023_06_09_162056_create_pages_table.php b/database/migrations/2023_06_09_162056_create_pages_table.php index b3557aa6..128e87f5 100644 --- a/database/migrations/2023_06_09_162056_create_pages_table.php +++ b/database/migrations/2023_06_09_162056_create_pages_table.php @@ -19,6 +19,7 @@ public function up(): void $table->string('slug')->nullable(); $table->string('route'); $table->json('middleware')->nullable(); + $table->json('settings')->nullable(); // 1 sentence $table->string('subtitle')->nullable(); $table->text('excerpt')->nullable(); diff --git a/database/migrations/2023_09_06_181801_add_columns_to_people_table.php b/database/migrations/2023_09_06_181801_add_columns_to_people_table.php index f6767dfb..fac463b5 100644 --- a/database/migrations/2023_09_06_181801_add_columns_to_people_table.php +++ b/database/migrations/2023_09_06_181801_add_columns_to_people_table.php @@ -24,6 +24,7 @@ public function up(): void $table->json('education')->nullable()->after('emails'); $table->string('estimated_income')->nullable()->after('emails'); $table->string('estimated_home_value')->nullable()->after('emails'); + $table->string('photo_url', 2048)->nullable()->after('estimated_home_value'); }); } diff --git a/database/migrations/2023_10_01_004656_create_budgets_table.php b/database/migrations/2023_10_01_004656_create_budgets_table.php new file mode 100644 index 00000000..964ce5c2 --- /dev/null +++ b/database/migrations/2023_10_01_004656_create_budgets_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignIdFor(\App\Models\User::class); + $table->string('name'); + $table->double('amount'); + $table->string('frequency'); // Year, month, week, + $table->string('interval'); + $table->dateTime('started_at'); + $table->integer('count')->nullable(); + $table->dateTime('breached_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('budgets'); + } +}; diff --git a/database/migrations/2023_10_01_004659_create_accounts_table.php b/database/migrations/2023_10_01_004659_create_accounts_table.php new file mode 100644 index 00000000..b7ae1bc7 --- /dev/null +++ b/database/migrations/2023_10_01_004659_create_accounts_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignIdFor(\App\Models\Credential::class); + $table->string('name'); + $table->string('mask')->nullable(); + // Checking, savings, deposit + $table->string('type'); + $table->string('account_id')->index(); + $table->double('balance'); + $table->double('available'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('accounts'); + } +}; diff --git a/database/migrations/2023_10_01_004707_create_transactions_table.php b/database/migrations/2023_10_01_004707_create_transactions_table.php new file mode 100644 index 00000000..c8d508ac --- /dev/null +++ b/database/migrations/2023_10_01_004707_create_transactions_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('name')->nullable()->index(); + $table->double('amount', 13, 2)->nullable(); + $table->string('account_id')->nullable()->index(); + $table->date('date')->nullable(); + $table->boolean('pending')->default(false); + $table->integer('category_id')->unsigned()->nullable(); + $table->string('transaction_id')->nullable()->index(); + $table->string('transaction_type')->nullable(); + $table->string('pending_transaction_id')->nullable(); + $table->json('data')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transactions'); + } +}; diff --git a/database/migrations/2023_10_01_004742_create_conditions_table.php b/database/migrations/2023_10_01_004742_create_conditions_table.php new file mode 100644 index 00000000..c7e0833a --- /dev/null +++ b/database/migrations/2023_10_01_004742_create_conditions_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('parameter')->nullable(); + $table->string('comparator')->nullable(); + $table->string('value')->nullable(); + + $table->morphs('conditionable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('conditions'); + } +}; diff --git a/database/migrations/2023_10_07_023041_create_messages_table.php b/database/migrations/2023_10_07_023041_create_messages_table.php new file mode 100644 index 00000000..2d6ac09f --- /dev/null +++ b/database/migrations/2023_10_07_023041_create_messages_table.php @@ -0,0 +1,47 @@ +id(); + $table->foreignIdFor(\App\Models\Person::class, 'from_person'); + + $table->foreignIdFor(\App\Models\Thread::class)->nullable(); + + $table->string('type'); + $table->string('event_id')->unique(); + + $table->timestamp('originated_at'); + + // Maybe it's an image + $table->string('thumbnail_url', 2048)->nullable(); + + $table->boolean('is_decrypted'); + + $table->text('message')->nullable(); + $table->text('html_message')->nullable(); + + // Encryption information to decrypt later? + // Email settings? What if every email had a thread by the sender, and all messages were subsiqent emails? + $table->json('settings')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('messages'); + } +}; diff --git a/database/migrations/2023_10_07_023054_create_threads_table.php b/database/migrations/2023_10_07_023054_create_threads_table.php new file mode 100644 index 00000000..35d507f7 --- /dev/null +++ b/database/migrations/2023_10_07_023054_create_threads_table.php @@ -0,0 +1,45 @@ +id(); + $table->string('thread_id')->unique(); + + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('rules')->nullable(); + $table->string('topic')->nullable(); + $table->json('settings')->nullable(); + $table->timestamp('origin_server_ts'); + $table->timestamps(); + }); + + Schema::create('thread_participants', function (Blueprint $table) { + $table->id(); + $table->foreignIdFor(\App\Models\Person::class); + $table->foreignIdFor(\App\Models\Thread::class); + $table->dateTime('joined_at'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('threads'); + Schema::dropIfExists('thread_participants'); + } +}; diff --git a/database/migrations/2023_10_15_205749_create_navigations_table.php b/database/migrations/2023_10_15_205749_create_navigations_table.php new file mode 100644 index 00000000..5b392136 --- /dev/null +++ b/database/migrations/2023_10_15_205749_create_navigations_table.php @@ -0,0 +1,102 @@ +id(); + $table->foreignIdFor(\App\Models\Domain::class)->nullable(); + $table->foreignId('parent_id')->nullable(); + $table->string('name'); + $table->string('icon')->nullable(); + $table->string('href', 2048); + $table->integer('order')->default(0); + $table->boolean('authentication_required'); + $table->json('settings')->nullable(); + $table->string('title')->nullable(); + $table->string('description')->nullable(); + $table->string('pretty_url', 2048)->nullable(); + $table->string('ugly_url', 2048)->nullable(); + $table->timestamps(); + }); + + \App\Models\Navigation::create([ + 'name' => 'Dashboard', + 'icon' => 'HomeIcon', + 'href' => '/-', + 'order' => 0, + 'authentication_required' => true, + ]); + \App\Models\Navigation::create([ + 'name' => 'Files', + 'icon' => 'FolderIcon', + 'href' => '/-/file-manager', + 'order' => 5, + 'authentication_required' => true, + ]); + /** @var \App\Models\Navigation $crudNav */ + $crudNav = \App\Models\Navigation::create([ + 'name' => 'CRUD', + 'icon' => 'CircleStackIcon', + 'href' => '/-/manage', + 'order' => 6, + 'authentication_required' => true, + ]); + + $models = \App\Services\Code::instancesOf(\App\Models\Crud::class); + + $crudClasses = array_values(array_filter( + $models->getClasses(), + fn($class) => in_array(\App\Models\Crud::class, class_implements($class)) + )); + + foreach ($crudClasses as $index => $class) { + \App\Models\Navigation::create([ + 'name' => \Illuminate\Support\Str::headline((new $class)->getTable()), + 'href' => '/-/manage/'. \Illuminate\Support\Str::slug( + \Illuminate\Support\Str::headline((new $class)->getTable()) + ), + 'icon' => \Illuminate\Support\Str::studly(\Illuminate\Support\Str::headline(class_basename($class))).'Icon', + 'order' => $index, + 'authentication_required' => true, + 'parent_id' => $crudNav->id, + 'settings' => [ + 'title' => \Illuminate\Support\Str::headline(class_basename($class)), + 'singular' => \Illuminate\Support\Str::studly(class_basename($class)), + 'api_url' => route(((new $class)->getTable()).'.store') + ] + ]); + } + + \App\Models\Navigation::create([ + 'name' => 'Settings', + 'icon' => 'Cog6ToothIcon', + 'href' => '/-/settings', + 'order' => 10, + 'authentication_required' => true, + ]); + + \App\Models\Navigation::create([ + 'name' => 'Login', + 'href' => '/login', + 'order' => 0, + 'authentication_required' => false, + ]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('navigations'); + } +}; diff --git a/database/migrations/2023_11_12_000501_create_short_codes_table.php b/database/migrations/2023_11_12_000501_create_short_codes_table.php new file mode 100644 index 00000000..b81bdeaa --- /dev/null +++ b/database/migrations/2023_11_12_000501_create_short_codes_table.php @@ -0,0 +1,34 @@ +id()->startingValue(58101822); + $table->foreignIdFor(\App\Models\User::class); + $table->string('short_code', 255)->unique()->index(); + $table->string('long_url', 4096); + $table->boolean('is_enabled'); + // like http status + $table->integer('status'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('short_codes'); + } +}; diff --git a/database/seeders/AccountSeeder.php b/database/seeders/AccountSeeder.php new file mode 100644 index 00000000..9c021c3b --- /dev/null +++ b/database/seeders/AccountSeeder.php @@ -0,0 +1,17 @@ + /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.0-cli php8.0-dev \ - php8.0-pgsql php8.0-sqlite3 php8.0-gd php8.0-imagick \ - php8.0-curl php8.0-memcached \ - php8.0-imap php8.0-mysql php8.0-mbstring \ - php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \ - php8.0-intl php8.0-readline php8.0-pcov \ - php8.0-msgpack php8.0-igbinary php8.0-ldap \ - php8.0-redis php8.0-swoole php8.0-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN update-alternatives --set php /usr/bin/php8.0 - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail - -COPY start-container /usr/local/bin/start-container -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini -RUN chmod +x /usr/local/bin/start-container - -EXPOSE 8000 - -ENTRYPOINT ["start-container"] diff --git a/docker/8.0/php.ini b/docker/8.0/php.ini deleted file mode 100644 index 39dcbcac..00000000 --- a/docker/8.0/php.ini +++ /dev/null @@ -1,7 +0,0 @@ -[PHP] -post_max_size = 100M -upload_max_filesize = 100M -variables_order = EGPCS - -[opcache] -opcache.enable_cli=1 diff --git a/docker/8.0/start-container b/docker/8.0/start-container deleted file mode 100644 index b8643990..00000000 --- a/docker/8.0/start-container +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -if [ ! -z "$WWWUSER" ]; then - usermod -u $WWWUSER sail -fi - -if [ ! -d /.composer ]; then - mkdir /.composer -fi - -chmod -R ugo+rw /.composer - -if [ $# -gt 0 ]; then - exec gosu $WWWUSER "$@" -else - exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf -fi diff --git a/docker/8.0/supervisord.conf b/docker/8.0/supervisord.conf deleted file mode 100644 index 9d284795..00000000 --- a/docker/8.0/supervisord.conf +++ /dev/null @@ -1,14 +0,0 @@ -[supervisord] -nodaemon=true -user=root -logfile=/var/log/supervisor/supervisord.log -pidfile=/var/run/supervisord.pid - -[program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail -environment=LARAVEL_SAIL="1" -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/8.1/Dockerfile b/docker/8.1/Dockerfile deleted file mode 100644 index 28750710..00000000 --- a/docker/8.1/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.1-cli php8.1-dev \ - php8.1-pgsql php8.1-sqlite3 php8.1-gd php8.1-imagick \ - php8.1-curl \ - php8.1-imap php8.1-mysql php8.1-mbstring \ - php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \ - php8.1-intl php8.1-readline \ - php8.1-ldap \ - php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \ - php8.1-memcached php8.1-pcov php8.1-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail - -COPY start-container /usr/local/bin/start-container -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini -RUN chmod +x /usr/local/bin/start-container - -EXPOSE 8000 - -ENTRYPOINT ["start-container"] diff --git a/docker/8.1/supervisord.conf b/docker/8.1/supervisord.conf deleted file mode 100644 index 9d284795..00000000 --- a/docker/8.1/supervisord.conf +++ /dev/null @@ -1,14 +0,0 @@ -[supervisord] -nodaemon=true -user=root -logfile=/var/log/supervisor/supervisord.log -pidfile=/var/run/supervisord.pid - -[program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail -environment=LARAVEL_SAIL="1" -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/8.2/Dockerfile b/docker/8.2/Dockerfile index dec34953..d62bd75e 100644 --- a/docker/8.2/Dockerfile +++ b/docker/8.2/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug php8.2-ssh2 \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn openssh-server \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY start-container /usr/local/bin/start-container COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile new file mode 100644 index 00000000..968b5cc0 --- /dev/null +++ b/docker/base/Dockerfile @@ -0,0 +1,49 @@ +FROM ubuntu:22.04 + +# Thanks to the Laravel team for Laravel Sail, which this is all based on. +LABEL maintainer="Austin Kregel" +ARG WWWGROUP +ARG NODE_VERSION=18 +ARG POSTGRES_VERSION=15 + +WORKDIR /var/www/html + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ=UTC + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.2-cli php8.2-dev \ + php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ + php8.2-curl \ + php8.2-imap php8.2-mysql php8.2-mbstring \ + php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ + php8.2-intl php8.2-readline \ + php8.2-ldap php8.2-ssh2 \ + php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ + php8.2-memcached php8.2-pcov php8.2-xdebug php8.2-ssh2 \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn openssh-server \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail diff --git a/docker/base/build.sh b/docker/base/build.sh new file mode 100755 index 00000000..958e9da0 --- /dev/null +++ b/docker/base/build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -x +set -e + +PHP_VERSION=8.2 + +TAG=$PHP_VERSION-$(git rev-parse HEAD | head -c 7) + +#docker login -u $DOCKER_USER -p $DOCKER_PASS + +export WWWUSER=${WWWUSER:-$UID} +export WWWGROUP=${WWWGROUP:-$(id -g)} + +docker build --build-arg WWWUSER=$WWWUSER --build-arg WWWGROUP=$WWWGROUP -t austinkregel/base:${TAG} . + +docker tag austinkregel/base:${TAG} austinkregel/base:latest + +docker push austinkregel/base:${TAG} +docker push austinkregel/base:latest diff --git a/docker/crontab/Dockerfile b/docker/crontab/Dockerfile index e14dcf7b..a1f14f00 100644 --- a/docker/crontab/Dockerfile +++ b/docker/crontab/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini diff --git a/docker/horizon/Dockerfile b/docker/horizon/Dockerfile index 3b2aa1b3..e3a60c4d 100644 --- a/docker/horizon/Dockerfile +++ b/docker/horizon/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY start-horizon /usr/local/bin/start-horizon COPY horizon-supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/docker/matrix-bot/Dockerfile b/docker/matrix-bot/Dockerfile new file mode 100644 index 00000000..e36c5aa9 --- /dev/null +++ b/docker/matrix-bot/Dockerfile @@ -0,0 +1,6 @@ +FROM node:18-bullseye + +RUN apt update && apt upgrade -y + + +CMD cd /var/www/html && node /var/www/html/docker/matrix-bot/index.js diff --git a/docker/matrix-bot/bot.json b/docker/matrix-bot/bot.json new file mode 100644 index 00000000..40c6d48a --- /dev/null +++ b/docker/matrix-bot/bot.json @@ -0,0 +1,12 @@ +{ + "syncToken": "s733228509_2_873396_723185098_370116421_93051217_173605192_82627453_0_4605,e29228_r22084_a18603_y119_t21761_f59", + "filter": null, + "appserviceUsers": { + "0a767d8967eb640d7eb1648d57a8feed2b75c75f52a5736e406bc1aa1b8c4c7badc13ab413140c13432276f90b765796f44787f01620e9fbe611ef4816c69724": { + "userId": "@austinkregel:beeper.com", + "registered": true + } + }, + "appserviceTransactions": {}, + "kvStore": {} +} \ No newline at end of file diff --git a/docker/matrix-bot/db/_default/bot-sdk.json b/docker/matrix-bot/db/_default/bot-sdk.json new file mode 100644 index 00000000..bdeee5c6 --- /dev/null +++ b/docker/matrix-bot/db/_default/bot-sdk.json @@ -0,0 +1,4427 @@ +{ + "rooms": { + "05831a4661e8b7029c04ecc286303b5039c3e19484daf4188858f510d5d548dff398fe9d643b55485fc1e79397616da8ebdd7989b2cce30d8046e5167c9d8ef9": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "e97ccd77ac7fb99a139750d3d62d2c92fe679849873e7425aa4af47f364667d2fc350c9e93f26e2154703c0f3452214837da0295b1df118eb2c9bc23b8b246a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "2bdc17d30c4b83cdf62440a95547be4859262d2b3ccaa38e5aa3fb7faf4221b9608ccf01fcc566ba45ead79048414f3aa124b38c8cc29a22451199fd8cfc1481": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "18b2eced520d8c513680488575d686fff25cb91dab6d5b1716218019b5a4cce9b0c190b5ea452f740adc64586791dda7cd64262c0027fd5d305eb098cc8b17ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba64ad2e5048e4bbfe879c0950ebcde87f154094a7a97f179b096f84bd1c57fbdfeeb141b712ded374e3f1ea62c072f08c467b8ee8dd41f9a5c91eb632318e88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba5232186e4a7b396d4b744b55f99decadee2560b9ea2aea72f7561f50ab791b54aab795bff939f391dde414de049a11b10ee7d1766f90e19a0aa02921d60003": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "466ab9ad10e0dc7fdd14e2baa73865eff87b55d33587df8226fb1e26d05c7fbe36a4203d3ab45e44c7c552813f97a776370151392ac8c17c185301505792019f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "495ae1020e3f0def9d172a4103f6f415b6a43c7b81c65ed3d6bbdc2502143cc0b581201122b74d2e955b446ad9c7d767cbeb360d0fe1582a65ad8f5aaf56b0db": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d112711c07ec931a1dd2972734d2c924a04a4baddab8b4821493ec41c1400d2b118db1c7e23c22fdf2bd2d9b83103e0512da7bb38e110d3f0e4282ef9315d386": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d416c086d5a811ddc7f5cf9c109ae4bfe453435944224c8705b461c730d1b7449735678907252cf94956729a008c841636d9bdd6840c712b32b47d5a0d0f717": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a517be88ceba0322de055cfb838f4122756ac42a3c65784c4389c290caaa0a895d4b8a9336c3f790dc0744ce2d6a26e3b65af7ecd63ac665942910a8a6fb2c9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e67d23a3f664a404d25b1fec0c47d5dda863af1c43adc6838b3e7e8d7947521a4d22fef5198dee98fff00149df40aed7b83429b551ff232f3e6848322845b9a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "133b24766be6dc9014e7e3e6de2a7f30f6ac2d09ca387adeaa39b047ebb2ff571d5dd70b6dcb230734654e5cd56f956f7407a09824333276705a8e699b538d6a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8491cf8751911ea618a95eb3ce4c4c62388b7df3dc05a2f815d3102a4ec3d8e6e5e84445e6af2306b6f3b51cfaf46f6f9cba1960fd627fa064e4e5b27a2f3a26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2b2fc9b69a5a8b11fb210f373df01a49ed1dfe511c88f1b551a17630f901f23c1d9322bc4de490b47d08bcc4ac0946bf9b2367b9a125d510a34e24814715e142": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bf55c8f6e5df8b4f30c53392bad7405d02ba37fa9af6aff12cd3e0cc47f4417879f5617eb91f64d611f2aeab8ee324558d1949831e19693697df917525ba0cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "09ccdd640c7b48e7a9e763b80ad2c60c7e9de112f848f99c971a125ad17570f8786d2a7dfc88c7da557d2e13b309834289ab42dd7f398767c5b7de493627b1a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d4f15115f8d55884ad962d1036ba6ba170ebab5a090ccee4e896b63bc70600942e8cca9202611ca1dd541a5bb185dba3d26fabfe95eada6fa655eee7ba29fb6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "182a525292a71b3da68c20fcd7170dc139921f9f1b897731c79a668194f351bbf6cab6a84dda7e2a4e66fbd2b5121c98271dfa49ab9908b5eae37e3b842a8fcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a5366667d4cf301848eb370d59323feb93e4b6c2e406d706950b69a1495d7f1e0b8e62729ce06de89cb25162a74ffad5f3fdfa58fdb003231fd9bc38005e2df7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3bfde078d31be7381b06c0bae4a1896c0cad8b97a80c4b5d5631cfecaf1a642b16e2f3ac4cef2b42654a719989d5037de17555e732591593fdfbe38b284348f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c9a41e814bfbbefc3cc9cdb7151a0ab3216275ff2a42bf75fa5f9f5efc01366b79f61e42c95fa2fb047d9c5ad7894389aa926ddaff04001cbb72b2e0a7c7f5a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34f5e181cc810111080d26db282a3f682ccf04d1f5224ab2b0e7ff0fb216138c45f3ec80b7cedc31d2742b31339dca6ad980677f0015a4892bea7a264b484d51": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c5544421fe666d77c5dfc17b4cdd7ac6b51d589587379308826c9ed2e2f25d80607b98f7d7c69469b334fbb52d4599bd835e5538e9cc72ec2a7e63b918c5564a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61e523380ad896b928f11d347e1be83ccd731b404373f68b54ff08c777e9289a8a48d684da221b203f384fddbcdda77a5680e810b9ffac4524ba6a8c6faead06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13579d7711a960f66563f8698da2323400b8ac5a5301680b8cf39f626973d3481e7ce2d6949ea6aafdfda15c8753bb1670cafef618713700f6f0acf152746376": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34de4fcdf0ecc56e2da3fbfad858504b89a0d14bad8719dc52fc6cae56875631592360596e57604c6ca47e2d66d01b749db41e9e5bad7ab88e824bfcf0380e84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1797a1a7cba96fd05978ef270f296e1b95617b7e5ef84d29f86f5d4c535872bfff8de9cd25345741203a225c5e7734ded0ddee86f234786af1d4d3d307f553f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "b82635002db15997d6302ddfa0c0691cfef4c4a97ca680bfff67893b2ad80abaa3c4b8e90358f05e594e8edddbb91e4b273cfc6d9a8bc2f8781101b5c448b3b6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "056bd4207f051bdbe445709debd85030dd0687e9f9787a50e7aa9bea13032c96db28eb6e91bcc957f49e065cf442a96dd9708164fd6482d4441257595438fe97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "97284673d68a6d3d4f06bbf0abdc4d7597c94a20cd30ed8d10d9a43372241da2c3b880a32ec8b49e4d8152bdc7f1ee953809aa72d89a9ed1f25f42902133343b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "692fa8345988bfceb63d925cd7191aff34ea825a98f5494706ec9d798ff70fbf1ac882c77fa5fe8d2fba31cc329494fbac4b516010f241e3c1c0a28679292c43": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7ca244af035542b87a35b8445242be291579839a14e9499ebac8347cca6934bf3df780b280377d421dd7d41123cf7d68c2172802a8dfe988ddb3fbfd8647e3f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b53b36895ad0bace449df62cf006c9d31428bc67fd560b3130f9dd83929d29be8d84560e1e8aee4d651e35c1b00ddf5960f40f2328595c6a55ab6b6ee20be2a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "efece134af2ee271d8e2b15db94c93af0310cc9db9baad68136fe99c1f91a7efa7dfecc04678aad20f29f7ccb212be8bcfb4ac92b96a942305e50942db050871": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a42d0fdd275b9c31ab7c2b20fcfb7bd08b70944542a74785fec675030225d43dc99ee403da1e5fba1db88b10e37d5f29ef8241eb911e899bf90d73f2b5b02759": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "81b6085881e3bbc50b1fcfae555243431d4d0c9f67b3ab49f40b3bcbddfff05035cc34f05ead4e597faa2279786f9060a7b146ea2f2b3a5fa6be64f4a734e7ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f76668e9160e74a5876d555ce9031e52e3f33635b3f3ee94d82a684e41ca6685b9194f732fa671348a76b820e2fdbf773c55e408b29cec00326cde6bfbf19e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "496f85ad58c51ec57d4ed4b8abb6dac6f47c58a5a316788c0f9e31e47a95381d6a4e915cbd38599ce39f60314b9b67b40268aa7c934caf747fefbe5d2c7820ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e29469adf2917532184f887d2b73b44c1d858fdac2ed28ef05e9651aaa6a1c344f6805e69356a352d211496a634003b50579cdc4f5e087c35258f82b819ae62b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55a4e6216bd47399baef1fef6a77bfd9b01dfe9fcc0a803805d32b4a1910bc27394d0bf4bfd6ee3c2b3f78a06f253294c1d59da1eff6f2bfdfe6af297c3ad35d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae592f18ce1025f530a5a27a906788e95fd21a19ae16bfac1ec6855c3f80403a95764bc7cf2f4c2de96cd1f049576972017b7fb0727d8eb5c659fd8fc28b396e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e23068d83c3ec619fe7520bf3ff1da1b149e63600ef3dfdc5ef696b894152ca2ed42b9ba477f960006285ac58aa135d1a155710e571979c7817d67d04120f50b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "af3c5b90f34fae4d6a4b8d7ac95f6757e4cec575b259520341fd4d7fdce41d84b331a7e1eea90c690837bbdb7d5eb435e93f1e21524574022f0c235b1cab3122": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b9028fd819586717a4aced09bbca1fa7e34fd0bb4862a16b7ecbd63139c7926d241c5738bc080b30526cfeecaa79e2855fec50c73e9d00073dc86328379060a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "421ee22ae9db6f43c52cbf224816d5455a65aece315464c27dc92c16b4bf606089b78396dbedc1472081b5c18908c144150b313b54de3ae96174a91cf01f852e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0b05c3aae81e58abb1c06a1d96fa378c05ac382d67adf724f868789147f06da26ae9f92bd4a8152eb6764868f446a973ec1763c1f8d42ca11d727d41fa48b960": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f5266c049370c45ea0d6b4be081006aac1faebd39a5bbb1e6bc3ad81d2efcbd8baecfdd698af40173e5756deb968a136781a8419b8e1b47939516cb03d5ed031": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0ec63beb6e901d82179ece53164ad4be1fc047e0010623399b23aa7177856fd4659f0a7caa9d23baaebf3b99cb00b02e6bb604c685cd1d55ae9f6f6f3c95b02f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cacee0adae2ede4c6dfa512fdd5bdfffb003c7764ebc4f09bfd2e176bd2827f3569145c92bbdc09b3ca49a6ee143ac247eac05bcdbc0cc2b0e5f2782d30e4584": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e68fe711bf2df4a5259339fc743e48ae8dd03dc647f1593d7d1298b63742c376c3b06de47855494545b66c15522b81039a474b3ce9430e8d0445a7ea7b1dedeb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dfb49e8fec28c28ee632c977876e5d3d0f9242a579486ab2ce60a87e0bbd60e804adb5644a9594ebc184d980ae953783da9349c5bea887a00b81bdf6f4b56467": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e42739d6a4f2abb92cd535e8e76f3f7a6de02d5bd08aebda3f86b3b969708dd43d3c7077e2a79f10c1a9211c845c1e5f654a57ae7d2a6ef7b23863cdc10e99a8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "addd3d4ff7ce833869cfea5fef4870974c1f441d6dc9982a8a268c948c56959544672c5196f9bd0fec5eb8e4ab5cb9db61d68a62c5ca870635a4a1ae517b65b3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13e39b25328e9e59a125a4a42006b520baca91878b907be7403e0b8393e75e7ddcc3d329e5f6c52144a90413da3279c1c57c36dcc5471cbd4978e565cc0000de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "51604075ecbee5b206d50237cf2b60c91dd0d569cafcc7a6a8644c24d874567bb3cf30ff4f0b92dfe2a2a3309ada8b8a052f49f5c490e5524270af52fc8714b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1022a96f46cfc110172a1adb6f93d17325ee3523f7bffcb3f0e197d057038e382ced1347d0e1757cf63e5a81735b64923d0df6abffbd608cdf549bfe43e7c275": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e64f63c2094cdb8cee6445f0ab0e36f8c08a7f684248a7c668fe40bef02bd450bd0a45f5d76393d98a421959c10f027c951c104da994766470512134e86a6379": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "786d40778b508ac41655b3be23845fdd038af7981875c7afac1576fb0788d0f6aaae3889e349a3d5eb86ab3506450346a71e587e788c0decb7245cd49fa66931": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bb64b02b48641a6e9756760377af26f299ad4a3a31ab6b5e0f98fa9117a5b6a487d879fa88841da9c1735907f6b71e1fd8f93cf6fe0f1492af5b461513f5f84a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27adc285ede3b8e6159aae281cf20996cb07175bcdda1df15185247294df60e034b6c528ae71a243104f3714cf601945415863ccb7c670d6d21037cc45249667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "baf7b4866959e7a1c863683564012315231970fefbf3421d33e79734071be2046b0fa4924f0aa2d38e95b567f8d95414405bbd45a474751376bcb58e778dc7d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ec56d806bd46e3c6b2f79c64bb72cec732f3930084c9ee093e6b4dd367ea219821615d0e3610fdbaa029bd58b10cc7793a8bfe32fdf7a18e5f817374087e3f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c969fdb113b2a036854ca073aab1a2f5b2529858250718c8fe86b41c4a684e14dfaf663eaa9f990376365aaa946b1ad9094408c7e6cfecabdb82ed1d2bb29741": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b35b3d136ff2d108b234ec47adae6c3781b8d6a39b5f4eb1894a935a5eb0d5d36de7050d5bce33b44c0e672d28e71f9a50fae664c413c53eb97b267aa12d18cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ddf2beecf8fef85bc3d3ee69c53efefac6002ed091298bcc5eb3c63e40e92611670027024127f6cc3b86ff316f2ea15529b5584dd9fdc944382f5e06b2f188a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d91fc3376929a34f07e8b3861208d26409bd18832c10450c2f295d559a2ef074bed25a0313aced78cf7256414ec09503d5af930931573ee4b60b6ba03c63cd2a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df68c1c0f1940d1125de30c96a61aed7f41e7219d3eacef709c636f269f8325a5cf48125aac9d8aac4088e447249e2f7351f159ea81d6e4fce0441b56dfdd7bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "85618624e9861c61abbe321c977d88a930d422000e938b07b4ad95224ba0b42d6f718d521665e3c19a2cce71538c3df4d7b3297cd231225a6a24ac82c64876f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "defd14bdc193bfbed74828fc19c945dd33290fbb94b149720146f8a0637f05c82b4f37e449bf51da0d199e6c4b60551eeb6c4bebc8f85d3371ae1d1a97797546": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "11fb5b91c44907bdf6e6d5f410fd1cf1cb091f812ed91d504f34933b649acebf76ae656a71cf91ffcf5944818489c8bc9ebedd9c5818f01e07789ffa2c65711c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6040eae4439be923fbf6d797242d2041945bd37615132bf2e65425289e845eddfeed34ed14bba846caffaacd7e845b0a6292112b63fb9239efe4f4eb7eeb0a85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f5f013c3fb6e2961cee8455fb4b27f52348022952f1e4e1feccf26132ab4a7fe61a5ca8d227bce882130ab977289bc3fcbb194a70f968e2a11bbe9ae61594d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08ad64d440e3f78edf64a26da33e01447447f782d8181570fcfeaf91bc37fa8d4f5d2736a72927b06e67389bdb25f82631e2bd9ef65e473f1d11e0298e600dee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "196365ded1b87516710a4188b438ac3c950db42930edb8dd7c603b4826fecd5a90b6f51c93a6cd65ed6bb7ceb79b452575a71642db8b80cb5c1605881603da2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0c9d84101e5d75fe0760ea45b92e14cf371af94a0540732cf7c1e4d3077c81054dbb2407592f2bcad435c8da964ae7e1c788c967104959e02a9432ef7f784fb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "762b646466021ba6faa81528834cbf42159634e58212c414b7af564d39eb64e3bcd3918d54abcb7f363c449e48ff242e08be02cd4d83b3d0158aca7a01e932f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d36ffd427844ce30f42bb7e493ee81a30614837e3010442b01dc59061824fb8441a8068f0a53ad7c2f5dff2dfee9df463413900f90142f93d0a6391cbaab0875": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2eb01c6cc20abadd84070eb371c363ea5fe41c487a27cbfcc1c184431737da6ebcbb0fb071c786afb24de88da44e853a37934a38de5fafa576ea4788072a3e7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9efe50a858b26cbdc672c6f0e0d1ae19110fdf00008c202918d356996abed1226901f20053544b66c65f4468f15e0d0940020fa61cafad9d1b3e93153c541d2c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0104f873c22dad7a31c936cf1d51799a3f9121db67f621e24ba07f8cb04b799fcf04519051dd76b81ab8fa5d46c4be5e7b48652a70ca3428c68c70ebb8ac784d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61dee54ea434cd75287db3fed8856d7df279242d598ee523b2e4073080652ebfc635f84322d5412b787de4adc7025b1293b053caef99497b60d8970046ad4092": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5c34f1f21c4a85ba321b2f56b49b549f0e3ebc4a0cbd93636c83d962756b44610ca8f0637e27ca4472c5d66be19c9ed186548e3c0b394193ecf2cccf95a2311a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7ee1770a8b48ac35b53dc1ecf139f9e1d111293549c9d65ab21a6fc401966493ac0017457e35e85ac1f01decdd24eb09e55bc2b75a7cf62d3fa0c7699f155354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c83a24c7ab4519be64a7255c1b7678f7ba569636967b7cb0fa96819bfb4f037521d63c2952a313b2b6ac02b45d3738e4f48e0236b8a82d429bb356987fc06521": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b681ce3d38c3f54568549e3420e235ee02b508e8c2893b24d7916e7e1c769277ed3388513b6bf533131b9c0731e7eba3bf9959db4faef28442cbabae4686653c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "881b15d0c8bf61018ea4a13fad64fa9511647a1c59ac1973b0209eea903856183b605fc6c619bc78c0d99320a87f13c60cf6b2e833b83d4efc2a90d2657f2e47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7c04e49a1ff8c8bb187f848b114a7ad354fcd247ff832f4b8bb072efcb0a243b1030004f4ab2837588aafc7b71a369968e08c684889ae196a1a885762793abe5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d1e7cb40ea789b9472b2d1e787f07f74fb0b6cf663cb865ecf7ab3582deca1225009ef78bc10767ecc113550e0919185a894cb08259a1e2e65bacb6bd079949d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e07cfad390ba4895f8ac71bc9af9eb88cf9e7d079fdf6f33fe47f2e5d4728df21c56a4b2c62dbf283872f7e4cda0dda5a90b8c6bec85bb491b70ebf179eb4d35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3067ede94b4dfb143e2418f9fb5600e5ed32be5b0c60458e244482a67cf116cf85515fe2ddb28514043689711b6e8dd9c134b229527005478ef3bc59fd2d480": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c04772b2d094ca758de7f83e90ba2f111799f32be65252c3fab6fc279c19707d43965f5a725e8731da37990fa8d2d6448de45f0f98938cd2263259da6ad87f33": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e0255b2df521b5804b489174feae084f31cdf644b1d79ade7b88cce5b4279b6baed011fd3249fa8e0f152ebdb9e7f502cd3889cd5f9d185f7cac84d08081ddd5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c68cfd9b1b778cd889969303f53fbbc235fcd9ace1f0bd1497cc991491fa7717ac50ca8d160592a447b65a20011739abd2e19df1b98a1f191b2b08c143e0f962": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7aeff6be9f470fa8ed2da0ecffc6856e8ede6b1003da241843903ad331a35d6d7a652d61d883eab7ed227f63e39d997a95911911106f12d9d510adf5d581e718": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "786e8a2adf886f45be017d7293716427c0bc58dd593447cb7f7a6937334fd8349f1d0b42815c755198992a3f288c4d9e21593059ad5fa841ea6b6cd62381b8f3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "549b637f5a884e79a3ba18b51f65c7e29c86cb801f82ce992a13b9d0d61014dc792b75dbf4c7605acac0b12cacbcd2c14086aef01f83400551b5964a0dd6537e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "402333598f3dd2e366c596b2be621ee67a3dfb7a7615202643a0e21ddd971aa50e73ed667981fa37ac05b5352e76288ec44f2c88fca0a04dad4d3e755d32f306": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b831265ea7fc002282d6e8fa15e5ce4830913372e313f830016e385333496e445d26dac245005cfd8227276e450c4e4e0786b9eb9f5f783ce5baa7ea4aba88ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b152a423a816aa57d018d2401f0ce617ea66a5cf1f51d84779461b1b71e65dcd1c8d583ab7043a45d5b237eb11049060ba403f3874c6d217afa9ebf387c00394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e3b1c1534c8e8ee8a323bc4c7bb0987a316eedd5437fdd245e75dbbf942f5c5dfc92dab40aba23ba83e5d52d5d44da5c062aba32f6ed85d0b8676f73b0f8bd6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "69904e2cd16b3e4b0e09f6f10da9ec3ad351049c0477ce46e48693453d4d85728d0bf2efad35663e1bb94385090969da7cada958466dfc5138c29d9631ab4e39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e1b8800753e302d1344167d10a11f47ec47ae89955def7723f1148601b1c2c691867c09a31195e2ea0c5c60e7b82590c15e25329a9019a7569a367369e52b31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "377468c0afa3cae3c35e1053087dda735f51217a528dafdd871b8f97c82985a79c701fb32283f4d201fdf4edead47887cf0fe1937841952470a34440ceeb04f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9176c5f04982ebf067e4f42cac989f318f999dc08ae25623038a2ebdd96364e4a5dcefa0ccd45d740df7a453662e1a47eafe793d4560cbc24ee16283a10625f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "67c1f0cc6a92ecc79766225e151eb2add18c2a2862ee0a74aea9badc5323bbdad51658c98d7d816a3a489ff47406f2839ecd7789135c0e638f87308b9093700f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58b4a0d63413767469b84fc3bfcb0b9c28192be7c7c1a7246b416ab2bbdfa3ce4178e71963cb097a35f9507718f85cc562da1b5aa932bff41e40bf668ee44183": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1802ef600525763f7b9bc7348da5ac6ca3fa5e5dea5b8f8e3719a87b2c9c2719f8b500af531c7a6522a509e4c508497cae81f2c0640f31db8799956ff6d1b7ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "249edd8dd4222f8dfe6a4b8da800d622382a69ab99b9fbc5f259adbbe26ebdff0481b1eb4f481bef25f935ad0514defb38f61d21693e2d711918b7d047619f76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aedf7da20e3563edfeec535ab3700b40bfa69d0df9eb2c04a4f772e4cefd9e7376e654dd071f5a587a8e64633b560434bb3b99161b95b93d24609cc072fc087b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d1ee13b68b999798f236ea9e03ff52738d5f5e840bb2b69acf8c47141a4508c092826a90620fb3ddb4874699b2794fd485dbc968d85a549bb34bffe1bd4f526d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7f8e51845dfead3de87290ab81c9494509ed6a6ce6af4ae5bfb3839482bad38f87657ef72a0cc5e0ed1362553f2e5114173ab677e89ea2dc8497c797ef08ea76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e5d1cee9481d1cc0c7bada7f70e3e9eeb04c4d511b8335b84afc53d7e60783ed28101bf25bf7d0732d7c3483c029eb497ccee34d6c5b2f05783afc1a802b99d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "020219f3e7e8b17fe85d78f6fde0f7ef94e0382c257e6628de6731568383f9904cd475294c130f26736c86bff0951d4ee8c6d13f75a51a3f003a51606c279324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "edda9381c36fc9aa21b45384ef80425d5a0195d83dd7e7204e1e09d47a00200af5f35083df82227dd953cc7c32512313aa32c1f6995e267055ab88826714c95f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a2919ac9457455be04ea56b0dd6e2bb284c06d816a490085b11ffe2e29eced4a1c232d8536fa5cae3c31be1846e240a7fdd4513043daaa652400caf35d1004e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5f1e75032b91c9df7c20c3a2b71108d087e6cd3e06d08acf534a0efe9e90a491f25bb9e9ed8238c806f2d584210fc0d9e501391fc2bbe87bd916070955e93df0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6da1c159111a95356689d64bc9a112640f86431a51f9da752777e99933c1020cfb36f15df4eb45757a78f18835981e3ec5613af3fb13edb26b653e96c3fa54f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f750e5d40fae0181e51d675f85594ccd43e8efe64f0f7f789e03adbd2d55541ef1b61bbef5c79a891e78001edd8703f3c25c1b8dbf81a92b6923df44c21183d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df3d50da1c536fc423d93e9dc9dbf3269ee7f542c6873a5cdb387642560019bca981134c47a9e7a8f853f9d24015789518efb9977622319ea9ceb9627bf130a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "a5189b854aa1843a3e6092ce0c713672acc6eb71b61e67ee8f9469b4db6ea55876d466d1109e753e581f648bc2d981fbada026044a3973580fa691d788eac557": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d435c1c1861e1c58e4e77c7f761ce4bed5e603b0779505cf124275b613170873c4a0a89790158173826c2422af1c0f1a66e8e9bbe66c06f903ad2ed6a58ecffe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53a824060dd912e54a8991424e514ccc75196260734533480cc0673494ad9a8cfe95d8c0f68affda4ae0f5175812942ea28aaf491e109fb7bfa0d1c26198468a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f1af94bf8fa012153134d98b9340b9a942e8b9a42fe9dac4d11eefadc5bedb56f294f681b7afafa8fcb5092341c846aae349319ef190248074d460b7551bfcac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35f38ec05292a217d9fb04b9d32ef4e167acc61ebd0076a4a5d6fc7103ec732a18dd42acd35735ff5ff9b114298efba1194afc58f10ecfa3ec937abe6c79ed2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f55071cb20d2971553b28328347400c779a23225a5926c664874629c9b946b12280893f3c56f36783d234964e28cf86bc8ed2a899ba7843319375cb6ec66dc13": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9b631a52ff60c82dd4b7ae297d69f5f416a09d852e66ae3ecd79d6716fd1827a06b679e006160e6d1cd9d3a9875c140ef92b65f3a76d49c55cc834f063a4cd45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ca0e68c299a6b56801d32f8ab5f17222796a7055de9fcbfab471976d12ffb9a1bd27e4541deb31b353594f18878b67c1acc91042f3bc2ff30f7710f36064f04": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05a972f01473cca0537f44af3a8923c6fb16c12c139d5bf4f5136cc04376888e1e8453efe1a82d0aef37bba85d762114b140266996fad28b353e13310db3c4e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cd3c28463e07bf80ae415c2233b4dbf19ee3d3032955b587ef16d5fecaf2d4915ea8cb0e03f952578bd1f7c6db5b28cd5675656fd353dd85316c27eb690783e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ee4155454dba79f1cbbd28f9bef6ffe5ce6f58a64ff23d7fefab53fde4b5871172b5041dd75df7b94e1c7ece5899225efdfdedfed7c7b1b1d06f364a02dc7245": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "59ddfc649940f2a43c51c709a0f49d23ccd861c93e4884ef056d5bf81668174930c8d96266557458bd71c0fe77c01c280fdd4a1a17b6bf9b7ea84902f2693d46": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7355b4eb2ea37782bbb78cce5cd32d82d359315505df85cbc64f383b5afd0cb8a66b55128620fcc737819fdc6d134168b47306385de972c4d3838b0c7473c4b2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b4c74e5a02b53b956fa9fef7997de3424ee71cf2a9d5e2ebb9e791d8c81a1255d30c768327530fa42602d395a4e9fddb76dddd1b39be528c75ec46974a1751de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "693ace4fe147433069ad9604abee733fd748a8b4939fb97bd57e45a0a8181f3c58fb02e15e782fa7269721d5e0f16936175ae50cb5731210a1aac0164bfe0693": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f46b32681ce440e41bbb6e5b336e44ee618cdb52714f92255d054f43f5e59fd251221aaa58e8eb173c3d5dfdfea9c968c54bea5b950ddb223e6c4930c4a36f06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dbe25919d4ee7edfb6cdcd5dd832d514413b5ba6e054c633ba388c28410c460f44fcb9bc624187fdcfcacbaeeb635323ab6a6937299f6c0087a3927e0bd573f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5af38882dd31ef1ed8c4baa02dff4cd85b0de5df2bfbb6c235f289c63d05a20c7f9cbd22b2b36368118dc5cc148c1724b2a6d43e5944bf17dbd62748b8ba9361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23af53f28d5d8ee26758bd4df06ea1901b934bad679888ab3291cd66fb4eeaf11aaf56b48f37c25f8634595e45ef6d4c3d42a42a89ed9652fdabd9972fe9351c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "200c56e7a94ea0315e8de814b6b64545347be54fa74fa334cea1a3d46caa8de4bede6af8b230339a427b15b4802e246ab050cdf56698b1ec2a3f2f5052273ec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "82c523a181bb1a00c9fcd1f3981b89c676bbe097655e09ff632edcb6d323b023a06a8a036be7963974990c2e16763f48222d0b63237988d349becaa7767b8267": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36779db1b7ae51b30525f7ff8b08a34065806f45fd7382d6c41972dc93ad8ca3d9e8ccc0ad2fb0412adc55f34c73aa6280dbf4e92011628a565917518396778e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a8d7bf5cb39bc3d3e606dec6f3d8ed9160b6f8c0ca8407436ebf84aea5eff4fd91f9d8a2caf8236a35eabc462f47dbb71c4fb939c88542cd1462ad1efc932095": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa8680b2f586d462112c940c30ae6bd0a9cdef1b58b29b4a0894230d26c7b128f87ffb90e9b17037eac8bf462191b5e17c9b42295b9a4bf4e051e0598362bbca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "107bc55f2ba273e067e289864c1177891ad5e32d9bd4c0c31e81cd063b3dffdb03342dccc00cb14bf4e2a55859377775d757248022ba12444705c66760a9b07b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8b5015fc4f1590b70538ba00379444edb69a284bb8edae5cf0fb1e0493ad71a6071b2f2e433cfd5b8a803e95fc82b02116878848c0f7d48e75499f27d9e43d54": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "026e2e20f4a574795319cebff18419770b4a9096dd09b05cf25a24c7da96f8b8b3123538fa2e359739bfd23cda84b31a415ea5e4ac8af86e37764e74cb08d4d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e488d0250dbf371ac09d6c650adfb287cb77beaa30ebb09b668c8497d5c8ba13b93918c98366cdc852b17a70c0106d3cf1253718994d9dbf744d0696617e50e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c839cf0467738496412279ce62d06618b6ab4f64c0c3bf68d1edf8f25bb0fe4bc0c4a6f9549a5b9b8b4a8e75c0f0b084f9dab9bb7ebae3b673335a2df53855c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a2724a2eebb8cf63bd5ca13c27663f851f83dd9f2ae5a852235457889aede5d6ef81f3504ef6db5ddfda99fbe23aad45920f6101a276dc406ce705170735f901": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a0814d4b15484ff4963d08bbcb6bbdc51c01237066b642b82f12539aad878ccf6cc28e6f47fc51a1b6cc1cd0a010d6b31f57a029816d55164a5f6b7d422f7b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "48e99dade08827f31966c63746585a2978701375bc4436eb3b2eb300f151e33b12a6a301df798dc94bf261788a2fac1bbb66643d9f0700cc696107568dfb1fdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed57e098093862b68382f7660a8efdd68fd5381318a3923827280a5f1fb8058b092a1863eaee43ab17d9395e92135ac80bd5352b9c398fe6909cf43b874af637": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5104569c96f5520f5b67480825a9cd8942745b01781ab546b8ed51f37d0e4e7b302c66fb2cb916c0b68488734b9db1fea7b5ae65951e819ee487fdf8688991d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6ee3d2c93fca233aa76b400af5a45445e56be3166f979127da275e26b0f6658082c5e5a956995b010884763a0d25d8d926be383059ab70ca1c10a2f0db1de251": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3741fcd86d108102310e14afd9496578d27bd0645456b9a432b22def9561e911fd332b5e933ff60ce7741753c93e13e3637344bdde622c3eb769867fa5960ea1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "45972c822c9ea16650238616961296f674e01e3dff3d8a25f78a5e3173bb97594f10d69af44ae00d07c0025f211277bbee966f27904f99499dd9662c8cd51df3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0f2a720048077a79bb1744b784970ebd95655acb2a02d117132151cb09c8de4aa9826cb1a0a81cc1e587a9a2216e6f0af22e2bb8c4d9f9710022bae849604f24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ff1d55e417b6deb1b4c07b331e89f8d0ae1c133e99044f5a6d28362e73005a565a048ee8c7ff4aa7e3fbcabc1705ed3348ae5284e68264f85c827bace35e933f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0662874fdc78cf03d637dc4dbf7a64197ffb1c7e4e8f42532a16138a1e01a0ee5a4c3f1b7a7a7be8f23243666a77dce2229b046e8228b8e22792e751cc8cde1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f0e2b6225216f168a3c84b0f6c66518bfc4b83f05355e6858c6ae3f56c297c3d51f383470f66d2a1032ae454b6fe592a2f98d59e62b836f4aa25354a1a76cdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5d7fba5afed744f84732b2bccf91f41cae412aae61c9d98df51dda4bbe67534319990b7072a1cc8d94d87d3db8809f272d4221f536180df3046ecb23d033379e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06636309cf438fba1b75681d1461901ddcfa58723b212be052859e1178a14b88cca94542caa80239c3f70f2a6014097b57405cfbd13c1efaf0dc8bb8e25b7f47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed4bf5a013732c719654fc723127fd285c634a5f69d1046d7801f734aa2478fd8bfddd12393695a37308c32badd81bc081f537abdc51a9488951b90e07c01d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6543f12ff64a72069b4b9dbc2be17ed6f18b3245f36096703617582f31a13487895843e125309e7a152dca0845e3a17bd8ebcae580e348dc3c070f030f454e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e271d92a5348185fe37c455d180b27950e84aadea862d07e0ec028374777ed078e58d26c3caec7c7a06f38ff0cf7d5c3ff1593713b92e315a8d5d2a81406823d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d7724b60ad1bde1bfadedd0c715adbb151ee373ce73a17b5d8f32842bb3c5d5d35788978a7b3f37987d39d82146ed9925d215fd772d49040196c901c32cb9607": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dd73dfc9be803ccec0b3ad1b44ee9600c6c1743c7633935c68bf2256d1f2e52a4aa1d7a92442260e35f69b3328cb0127b9c8ec47ac35ccf563463240382598f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f8593911fede951694db369a97ec5d826ea328a8c4ae6d263683a250a857ec69c66640a65bf6fd7292dd502b672c95cae691eb00582cb3a20d35f1ee80ea705": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8363cb6a3613d3d71d40ac8c1f7d3a77215343d53ad9efb6e515119599519f6e9a29d596e2c27acab939d890ff4741758dcbf8149d5f69df377776c2e95c7f8e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cbb345f2fa5085a9748dd44e1f6ba99f22645869b0d8974e51efb93dd71b631efa1b363f1470d025c789d7a497b1730b4beb7bb4b0e05017e16ac25096efaecf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c68837bb3672f248f23d5eec95730b372fbd0e0f573708e5f5fbd3b6c89b9e03f847df917f27823d21f8352ab50299debba557e895d4e767332036c99d954bde": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6389827f180728a23eb3cae34cf5a013ba660ddc9a0c424b09512b2087900544b7c27625ceff31763230e7da2d51904ad97d2d9c5cbfd378bb0608e179a9d892": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6101f7fdabf5d3ce4f61dc4254b738285fc002af7e94537f8157d6cbf8cb1efa7c66e65cdaaacdda00c5157d0df958bc9ea21213ba519aefa9661affc30ca980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2fb443333f53b5e5750583bd9f3cb0fa02f7e61003d55406a91a36ba868e2cdf730ee0fa59ff9563b5ce59eecf4534fe4e56cfd0090f94bb7ddfe6758db73093": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ad5dec05769c3afc027cd83fda489debfa62089767b425a3a1018ab3d17e1aae07bd95270a2ffcc7025cb2585e16825ccb95dc1b18bdb82e7c7c244c05282a7d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "65abd50950561eebbc11fc6a9796bf8d153f340b520c3c64d0bd0fe96fb7f90e2277f0e726626703ce82fc985c2e162f339c3c49a473cf7227988ee76a24d4fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "97ed6dc5345c419effc0485eed510d78944c946edad3d8f34a0cf235f7726431cbe26f6ae24e1329a21d92e4f238682e48c6dc93b2e209abeaa497cfc7a18fa3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2d44cbb4e2cf11014f6cb96565e2ae573a3e5cbc4ee866235bfdaabd7d54d73a3e5bdeaf41255622857332c146288f0491f7606d1fb95d638b9140902f8fd7d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e6e004f3ebb4c0af344174ab29f9fbbc3c67d6e055e3667eef3642d29401ad22952399bd40e3e3b15f60d636bb286d53499f68ac3ad608bbc066452c4d20f7a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f07b11c84bd0937eab011a3e3739d3230d22081520060f4761f34f16f7b49593701c2d08d33ae904937574baa033f35cfcf9b718d3b51391dd977ee08fda2926": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c27266fb4f2f953024bdc4209d3b2930c39f278b7c59272ed41af72cc1df619f8827e5fdc21549d2c593532e9663fb87851eca3158b2f614120632a75b34fe24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bb6487e49eb80de189a243cabd34daea113fb6bdd8466f68f19b4e942387e4c72eba38d27a0dad64645b563b6fdc17b69fb6e2425d0771209899097871adc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c943282372270c5fcc956940c4ee67af7833619ab5f94fcbbbdc45897cd9a6ee4c0b17e56246f7029ac168093eb09967bd47f169a887835428435abc667bc26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e3c2d05996716a5d5a4fb85b8ee774eac82fc0fed90f6b3a671240f9f81fd0c15c836be9fa0be4362805ef2949e63a449bd2f011810873316aa8e747793ad523": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "add8b36a38aa693d013faacb1e480cce55b418da4fbee3c3b7252f7db4c045a2e968435ffa249eea61142c065896c87184009793856df330c8dc3f418a60cf40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ace0ab6dcd196464e6d203b37a67633bb96cb5a38ce57a48c2d42ccd3f9d5eb76fb17814d4deceb9ae63e497d12156afd619c9493a998bb789dc51aba9ed247": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a37f3f631305721744eec25008721435bb5c1daf186d36cb0809022f4f58e9000f7aea2cac9e3a0895b7ff21fba34d4060bb97d4f146d7d9a881a94e73929400": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0225ecc1134082c71caf262c167258f6baa059a7978a07e233259421d1fc47280618fe6d82d07ddfc4fdda0811ff0ff73136dfc8e7b1ff8550b53b5d25397eec": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "517eb56bea5f795af30e4da57a9bed9fc2cee7e880394492c222e604ac835a4995f80d6122ca62d051bd1a1a01b47ce860aa733682186e3cbf0e6f62b1152d7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4ce16e5f493fd8ef046852b0fa43c755a0726b468cb99de7b805c4e45de9dff41ff0b2fb3634a6ee1a5fef7efbeb3c9a0c47ca5af960a26a9465f0e42431d80": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "85f245aa3d35a6e3a6393add5dba54faad8f96dd0ea48ccf211c5727ec26c629a739e795f81db920519d1181027d0c13791e91801b56b83519b634b3a93c84c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e58361a9a3f4d70eab5af1d1c1d49ae71c5de639b055b49c29412c9d5999a563e849be590f89a87f905f25f1ce6e09a53e24a755caabf3c9478b8755a805906": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "421c5cb2d8c2edfa05cdc29f774ba4e5b64dce463de28b42e40c1a9d185f8fd7d422e9fb2fbc2cec98faf70e58349465eb1aec294a996227dbd20526bfff755e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "16befafa5069a9c38e70d67aa759c7e336bf54ce7cd3c228253e48dabe9406a0419b714ea19e0bd941cd394ea447f9eb8f7ca6404105dde9f533b47b62339c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a386bcf70a3c9116f470d79102ebf7b6e1eb0c285ddb50edece56f71f12b8780788388fd4e3a3d4508d1f7037016a12b4e96421a23a7026f730c9ad4ebaf53ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1179511b825da1859f02964831f34746418b45bf6ac63e5f6f773aa901bd7c0c3f6c1d4dc64dd308ea7b93e913b0fe44a1508dd92745e540430083fd6f5cb018": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ab8601717198c2b8fd16eb6de4b64655201fca79f9b229dcd9f99091cde7d9015775ab778e98559d4d8f7ab7924c999413db4cc516e740390e174b49f4b187d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "104c81819fb2722752467d0a50eb2268f9f6ca3a25aa0e97cffc642c59fed2eacf5994dbc1430b77a8ac1f3c90cf57595cc056aff0e9b153e265ecdac037a7f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d9b47ca626657ad5cb5b66aac5566e90452e175baf26b66f6c2e54294760f45c0393e145486d5655394e9c92e07f3ffe8cdd5fabd964166f487f550312f2e12a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "843dc8c958813654a32a73361d5f14d8327b909c7031de2a849a8f4f59d95a33b44031c6e3212ba036c0303da5d69ce56a92b925e6f149445c5a7af71e7f3d19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9815fef495e10b15a809b100e1e6e0d28346b3bbd892956964b09d2a4d9affcaf6b853d1bf91d36f50a9a43f3151f569439fd2a23513aea794580e79a491ea90": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d871e4ee5d0010f7a17c1c1b8f4d39a56c443d3814c7b51d608e8df578f15a2cc5f8c371628aebc2dbd66b50499aa92de6b4c0d461e42404e79e1feb79e3983": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ce31dc31847b04923c09724e463426aeb681c00250c1a3b9b4ff9b680d61186c55cdc6358276126508ae0d907d8e116d5d32d8c529561defc130a9d1f1e52b16": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8c4e5bb5c47bb06d529978a311e0910fbcda2646b6d28537652a65dfb571aea14221e41a16f8cccecec23f747af3f2e6922a1d153b0aafba0a7363417d5474e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f99db2d77eaa5cfb51716231d97bf56b7283dc0ecdf8b69ca566f53aa29b18a9e337f01653ff3fb8c87806d8f90882aa33fdc5e43f26af927941ac5b053f5309": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58f13aeb1980b4cf0bc36b3119f8cd67901a023600c7c645bd71ced374aa7c3e3a2e6d96522a6a3d679ad2afeea0307dc82ddf89693be9a3028d94b22a027002": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cf86c40646897ce5fb516545783c901bfa34b67b9f01eff786f58ff4d0ffb79dcba7ea1771946e35555d26607beb285cab685fd65f64b76d51b239c9d34d1400": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "cdb90cbe8a90d44b381157a84ab814dd76ac3bcd0380bbc84022a4fe69ea3ee1306fdb4a92390282f5d36c1763e580a925af14a1a52a860f93266b242cbe12be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f8c07a1c01f5b6e03bbddf0e16b221675ebc54d04118b4d9c995b1b9029c78537d404d0eee6a509626b27e070627bda3a239218722531c7f5edad19aec09c6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "100bd0b845a62e14af455ba67027741a6a876a5fc7c142ec976c9aa280451e91a208e74238ef17ec3aa18e69d0f51420993181deed8c7b89b8a535a5ce104d84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f9b799fd1f4cbaf00a0d2675697dfaab3b8e46b66c25e3b61cc9f7649690d32a1522d526efc0b3f92c669f918219c0d0477993c332cc0b92d2acc4e5754309d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "70bee58742a10082fd9d14d0e6202017848d32549e9ad6d5aa7d3c73db067cc9649920da1052da37e038bf4ef1c63b8f591389fb7775a10cc4231d97be6b1e69": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "232b91a0774285327350d64ce063ee4600cf206d1b7566aa334ee4fd14039862bb358c344c7d9685a6b208269e42306786ddf8bd2371667b8bedbbc37e2dfcb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6fbbe7a64ff0bac7a8ccd91ec50e1c112f9e77e5fe1c313e094ebd9d3a4aae32136ba19941cbd5a9d2cad539744d055caed46f4d625b308f24a359e7e7dcd07": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3b81868c9a823ec39396bc0626d4bd07f92e25237f80f93f2a404d1f23d5b1e6825242bfe066a4d6beed712836a364db542f81710404a1fc8b68356e03661168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f054e9e0876e2326e1a6b9b51dc7768edac09baef125404e47529359f0ead4906ed77a3c0f8df98619351a1dadc166e99f1d1f14e24b0319bc03537867483e29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9c7be6b407b91f7d272781db639e8c94506891717f318cf873cf8641e0b7c852d069afd65d9e36c2361e8f67e3afe3a1331e9b71d1aecf6bfd2318788dcb877": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1077d77e24bcf9a77a2ad28efe921f57d900a2f962f1c1ec7ee58f1d7ff63fa387e34ce2b44b4b51798d3060fe9f77930d6ddf117d4eb371caecf3e3b197c44d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53d88cad7cd84a61c678db6c1864751cc0e259d38230421adb33ae480f36eb9595366e3ab10fd0b0c3d6bf5b4460300d1c8f5a840a7f3bf2509b93e3c1ae4585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "967b8bd598a0f9a36af07411a959c93b47f2fd030ee1ca31faa048d16465c19095e926b4916db8c365c67899f72ea5393b37f9d7810f5bf98528fbc392ff3361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8bf47c9568089aeccc3104d5d096be6c01f57fff37f57271debeaecf61d728ea079208e235d77f3287b0200db1a431176f814338cd8b1993552c396481235090": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9018c5b0522bc8cf4ce580732a3f76714c87a737d6023421a2b48531a4f134570b8a0e49fe9200b34d9d8963df6c0da7457e82b6b7f5a68877c68e16bebdfc84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "86eaaf8826d0aaf713b9776c47d09d34c6433f63162f4075411061c9b84581b2f6159d057da9215812a7f22ef5ebf42389d9e0c0d01bd58318dd8554fbaffa31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "758a40f6b8bd6677f56cc48991159078fe51ef9367c7cf29f75fc3744eb72a7301b849d813abaf7655e8bd6da478b036f5f43d23b01c87cd2a4002501172de40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8e75e43e9c8a281b6201c4a70c561ab7d4477c788693df081b8973fdb1833608144fd31709bd2390f56bfec83f3aca85f640bf02dd031fcef12289cd1157a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31e5fc6d5794f568a14636234995b2fdc4e944f4dfb644408558d9206b43bd1f4032d32e75db67d061bf71932bab1bcaeb3595cf9acfead7749230873e29f201": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a7e6fb62e58be265ebe440b691681019abfe7bed0539c38573c34852c783e70ed9d89b311c768106e06be4ac30f03b9bbdb839ed77a71d4304887d3e0bb6bc76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9a7de2ec68a03c4bdfc456271cf47e6dbe3640bd664433c2aab0f61295dcde91f7e4afe7865298f4412933b119c95f1bb701961cc466d9c03465e0dbf1cf1a25": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a50c60055717fd35a6552574b79c198ba07b933c9fad1d71d24a7f3d1242610cb408c14edff911ef7c02cb7917943ef136f263994f94f33cbe9e48c608d24c6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95ce95bce7dae645e0f34b4c06d856dc50edc23acf519dbe8edb2679a7f3b7faf48ad714b1c371e47a77bf7657a6f398c7143475d44d6eb71ef54cd723b206f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "886aa5d3b5b219e20a1c338dcd2a5882588423a6877dfb1d881ced35a951c71ed77b68b10861f6f53375acad05f6c7f35e79fe08db29381211cd73e03f97a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "57d7851a61cc5d00e940b2a78424047ecd3f960b6ea5c6efc24b791ededfa94a3f8444775231cc049e1584de6973653a77738c1e9a51c1ac23d6abd5c56772d8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2022f14aa2158f0e00a4fa14423aed77a04f8f5a249ae9827f9c452188e5de4727b07da502d6e16093f8bf9012ad775cfd034d1944d3adbb67dacec6bf62ea6e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "43e00f9109f8dae0e896dba6f62dc44d3b60c6fac88665074efe25cb829ca2ece65dbe3ed1688365e744d4c311898fb78afdf4f79c6dfe29ac99d8abbdb0597c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6be43008493ceaef447ecec66fc83a2ca0ddf8d7a3cabdec51bb7de66a16e0967a297985c679ca63a0ead7005a794743130c1fe657fc137378580eb6c5f5b6f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e390d23a16248c86f21755e8ae2f0fd9bde81ab8852ce26b84a088a086e2bf5c0470695c1714e05abcf89b7450572e47dfdc364fefa993902eeba064962e46c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "794e802fad50d4ed108e0e35ecbab9b32efe53886da3dae11c9a764cf99a0db6599e41188f6077968d8e7f20ecf958aceacc32b962bf7908e5b5382f3dc824e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b1e8ef66af2eb9e695a6593d733a0154f1861947ae040b32c88e6b6b760aefb9620785efb10147a2a720b01941504a30a0efc671521246717163b757260b6578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "572d769b8b2b0c6854e0cea2fa9bc1544353df0d4c050ef89595b16c1d9f8454861248f34c5b7af1e0c465a1bc630595f5d64cfd5e3257da1a42368a725493de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35e4a34d2769567dc50fa745d04c0533226680441280fa9252551518edff4612d8984a0e456f7e3a28a9fce8dd9cd096c4b8db208ec896ce9e58cfea10bb1840": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08e13829301245fd54b4a2a82488f68661e87a92d8a79c6070476029dd9ac5df79c1f9a6643e323a8949fafa35ea84e6803c2e950a51a4da98dd6b03d3f01075": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd537d803b8dc6f853886122e313d9e6672e381c4f9372b0016f275d4cd3560fef323e59016275fc43f40b4d2234eeb9f4efe37e49a6abb82eac9c0059795c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "0df380c48cf1c1a41749eaa0570ba16e5d7d2930ae8a565769883222ee5651cc85bb8442197649b8c26fb62b93534a47de4857b321f7d4e3c43063631777e261": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb5aabfd03df4ba48f040e4e706d6eba303ecda4ef1138b3f268b21a5fe696b494aca5ac0003efa5ea974e488dad7e8e80796c0ec883ced292356e7652c39cf7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "442441f146ce1f40809cd79b0fde1b13525f091b968660fa0730a841ad72aa9362a748fc90edd4da201f585f4ed86236f5b1058d694ebcc2dc2aae88260149c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e524ea86e91294977ae3ed4dab8c9d99d8df17f404f3a3a11b3bd935c6324d1e508afc513a17d4e82e0a139f4537ba62e503ceada9f3172464f6e798624746cd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "963a472ee88bba356fb6bdc92617394ce205dc3904fb834298a9234cebb681c21cc454e7179766d97cb794c227df1420852e17684b9ef1b2388234c8ba0bae82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c300c22894e9781259fce4e31ed85077134a3b178506d9bd0e70d5fbf769ef331a728d2dde5ad728d500e5c4d7c0088a48c029b641a7e8914fcb141a197f5578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6dae7a74bdc95a85b7801978e0e7881395536df16a3df226875276b68a3f283231ae9f12fb520fef9191825ac382769bf7448b99306544331951865c33ef602c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a873170b2e4feb0c75e45a490c9b240cd25597f47f14161742e93d9556a4c30fc262d9f501e6bfaab4738ff7dd32bdcc3eb33b2f62dcfcc403bca12b8a4d1a63": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f16cdfedd0bdda362b0a0785df9430ad86db34f14283b6543c75c18ef64518808a3565cdb3735fdda00e93dcf5cbfddcfc76d5fd8b47e8a918894b7ea5ce24d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4710ff06af2dfb2227ca9e195be7e6bae372cb0916b2a5388e6bf635560ea18d68827039b8bb6d928733ed0fed93f3475b32343c5afc6e1cb6384e857785ebae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7207b9cedde4598e0a74187039b433b3dcb2c382a592129a2d5c81628d447bec76bf0451d751f8a9326b6cc039078a156b948d325e30513cf7e237fa328aabcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e1519b3b487052dae57fef1bdb995de1106cf525544f3ceb6f0524e3b9b6d63898e459f3f78f211ddf2812fcad9d9e94b0498ad065536fe62324b18390b1fc5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12645851fe7c3e0ba3721bc1a70c693da011912e4571b71abbdede60e8da0c65c3f11fa878d48558f02f1a9aa2ba60c9ee52a1384c3975d3964d58e577c566e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "eb1751338d792753933809c544e01a4ebc1b0a1e3b91419ef945d5eafd1b25b6f9b0e3466e92831dfe0f2e7560fd6e50f3ec47ce5e50964d59cb4ae6b52998ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c6c8b64ecb9cbf5963522e7323f2adc56b5af634e2edaad40748c8ec466ac0bfe4aee4401d24c4fe6541a3a97a4a33cc5079382002c10034938f194a1cb76622": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62013622bef4f98be9b49e7cf687c41b48477d6b910e53bf8bbe0dd718120d7d166c3aac6c8c4e74d33989c0f84fff7b159a7d0bb7eb1145fc3094ce48447bb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4a186969a558ce541ff8796ae02407de14e62d41d66c927de43462af20c163b77f4320f741cf1895b4158bcd2a4a039b11bc24d1e3c47240a6054b01b8eca039": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "380ac5ac6fb6e6edb820cdcef66538c178dcbab97a87ef963077bb6f467db56ba8ea2262e3a1b893531c37907b162358c38df359bc32125195614ea588f6d6c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6d1e107a2d8d7a03149b2e4b11bd27ff1f5aa58c94a487e6ce5301f9fb2b971147cc5bb2bf3a245726bafd13f38e27b66fa8b26a5e73b862f575e7340e949716": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3faec2ea50ab8fda976742faf0f72ec059fdbc9f696eb6e320fb37db16d52e767448c159d829905c2274a0b10ef64e30197bc98831d2e4284400fc1adc9443d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f034029362eba748fa3b2f9f9696eb7289b782aec3200297354cbbe95f6bce4533884173c2fdd4628ea9f02c860e2b85797bae6983994a5d2a72c3fbbe8c8067": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e727bef0a8774a3ada6d60263fa4140161dbc051af4a5ece65f07e03e10ef8a09d7a580b0a452951fa64c00eccbdd0da4a58425914d4e761d1698918933de09": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ca7b16d620e4d1622f1717510bbcfc3a8fc46d208c426bb6282b898aac743f8c3f23a6160c78488eb28ef2c483e65e25658af487c9d868858e7a8663c777ea39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "495d94c307f5f8d2ab9dab84764fe1c9cc68de581d25e7479a1f51e4acd0b0df979506af7899ba0f8c58fa8b842bfa0d888c79d5510718ce0a03ab0ecb3e916b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c1bbf2ce9a5a22d58196014885f901d4381fe0987a80fe44e2b932944681c6587d9bfc88128bc6f4af2a15176bed3cad965fa9a5da59fa79f18d894d864685ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fe2c47c59cbae07260b4f12b6425f4892eaee2467019b4a58ee017b9af2306c12211857e5a440a3aa2ca0eaf057e7cd7e12dd96d6feaa70ddff86eadd481a98f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f430c70abd8328428b0aff111c846e35b08f77378dbf475855efe049b368d02be9c152d62b22d482ceee0b1920389d007f82830f1ed206bcf3acdc4a490ce49f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "76ed82f8ee415c9ea44c53824440d76e6da885b92af1f4284bf64de97b0215e2314501d1bbdc6ed339a1d59dd779783e6652eca8147dee091a7c015dd9d24db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ccf4d6f66f3be021f03ba11d84341ca1ecbf641ad1d6628bf8aa7c356d147f4ffab2393301e35b342143fb9066b387ee2f09e1d18fcd6b4d152d9ddc15ab6272": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a410b07d9122e423e527e63d61e336eecd6f027b33b36ee070aea36fcfdf590451f1216f30e1acde4253534be40e6e00af2e372b686b84fb7393f763b7e0aa57": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5c158868b3b3ad985d52d2638cb0b499a048763b73e93633aa5a1205325b92ac3324dee5694c13b25619af6ca89fe69a2b11c519d991c90f65bbd0a1f351efb7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "71d9c17ee13b6d805edc523737ed174920b00418718cafd4dfaa4c81936d444d9a3a9052a0e369a52e0f41beaf176c506a0616c8c27bbd3064189c1ccc76c7e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "18c216e277374e8f9ef85441800abd1f6631904dfe2243addc4f20a46d79a6c99690982d504987a7c0cb4de910d2eeb779cd1385e7a10cdc681a945d45da5807": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21d16bbdc52a3dbea15a5c06d41c68dbbdfbaee11f5ba88eef1e3145ab80bbf14b5d2755fe067c877fc7bb5c50507f38db8484c75636e4b58ef3f12b8bd97c83": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a4b1473ff94516c5eba403cb5c8d21dcb17091ffb560eccd1105fa4f7d6567e67efb4233de04a2b4f4eadfaf538db9fc20b0410a62dbee0d9d567e1d93b6678": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08edb4039094b4af2c0ad366eaab8bd012057b969258c45aefff820c2f82c6547267915963b98da7816003e56a93efa0ccd53ada16f5c57bcbb6712e68bb3e0f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6acc2589f5907c214b754dadbdbed06b7486f33476263da7fafcf9d7ca93e4f87cac8ba27725da4fdf918ab6634664ca0a1f600c84fa311f8de5517e274336ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e863681afe8b4261fac46e3a83978fb9b7dd5536a25a809b4a9b8f787d7864e2182abe86175551abf1149d3dda5ef0923a10e3629273d140f28d616172dd515b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1823558b8a46b2c76eba22d14819531e0d71dd9c8610b1fb97091f99a14a92c0256b24ebe623307f4ccb70898702c47f733a1f1b515231712b82aaeddd3a3818": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e49bfb24cfeb61c5c9ddbd06f6a03e65e01db16a3a1d94f206683a71f35e03c533c3461f0bbb0087d9ecc3623eeaaff39ac9c54e8a8c1e0759c5fb3ce10004e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "837544154bc1020ee8abf1cc7263127dc8c59ac93a7d7d5d01b23903ae19e00c87892991856de22094c966762961216ecb463a015a12928cb820b6e5f2038213": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cc638aa21245ff76013a001a5a2dc1230fa8f44855a6a908021a59d431debb675f7d564a9ca394390018746f1138aff87ca56a9cd4a9ac48700e253a2254a337": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "691fa62d560b8cd1e3e84770dfc584415b9cf96161d9bb08321ca601dc33fb6e80b716734c6ccae05aae57d158d90668ed99ad75ff7d5ae705ac0f9164ce202a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6044c22c8fecb6d854ad33f159948ae8d8b93c338549842ac3b70b47859ab6ddf472a9fa44fed1556a44c759dab82b3bae426b9c25a5fed0d0590792d1a01ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5b0a02d28856e1bb4c5adae56511520a29020085142db55aed91a82fe953443e9ebd00216788f7e73919f4ff12a8823c17d6d50bbdb52d448d6c469af84a25d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96e65e141186cc225c85de55dca947e8dcd7c6cade524a58d82f07429fb3b47cbd8eb927afaa67b322b59621a83897c58bb5401091f440c320db5eff26d02c98": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cbe4a3e3e2f90f36afcdcaa79295396aa29673163c1388efd0aec2643bfb1665328c1206eb5ce0d2e32573073cbfd9da625712304c3af021c65578501d9e707c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac6867e7173c6d3bdbb0f5aa5d776be1c8df0700d0f95fa0a53618475d878affe54488795eb4bbb89b28f4bb6fc84d73dea3d49c97774d1cf943bc17f9bf68cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd03bf0639b9c9799e7260160904b526b81b156756280c60aed58ca4dc06fe2d78a0b9d9ad8d92d0cc66516165f97fc0035d54fd3b12f974a93b245d57ac4d42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36f4158574f61844db9d3805420de2aad60a00af65b4d11dd8e46a86224bc23cd7382c1f4b122e67e1c722b816efd2b56d2ddbce631f07f1fd75592155875360": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d97c768079963380ccf2cee6172bd8e67198b990e7d9334691dbdd50c1b551fd4f3131788708b74f671b8502b8dbadf275e225c858347ed6972cb7c07d4557f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "24e38a2714855d96642374361b6e26c10d75f6a6a584a896a940130196d340accad9bfa15e078002d0f45c56fb04e74952008040e164e9c83a7aaabf9ec3e624": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "323363a76fea01b2a58ae7a903f9bca910f6609025dd700d6170af3db29beddf9f0ee83397e4218b645378487d5e6660ad294d525b884d1c0d68a4bbede10037": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e135bb4d0258b2e49c6eff83b3a086e98dc2754bed80eaadcefe24be338b606901721c956973d89e7ff2b33eb689e640f8f5b3963dca7c9f941b2f01c049cbb3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c8b24757a5b6677d436ccb84de75a26ba6e2c0202a9c9e65876da0128496c84d3bfb874df86f4f44da0da5d4e9c25d49bac16c423046f5330566bb86c96d938": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae93a11e7cd4c212acdfc132a0215a6eff50d3730c10758cfd104e507bfd6aadb31805bc132c6a679c82898344557e891f2215c79979140e8b1b4f5bf8e15405": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b61b8110f7f91fc8188e16a635220760e2962f2a8208fa8835dcda6b4d6c8b94c33ed056aefe9315306381a580edf6ee15a3eea13c94fe4152cddff165bd274": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7aafac8fd757755039a5609fa4970ba757750c0d6c02c1d43f3f8decf7334c4f37cc8f060ea70469e476626a6d0680ccb057e38a7e70714a4f0113ac7077f641": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73bb82cd6fb394580fbc8be5b5351d63d1d6dc33a22ff7caab373c0a1bf0e83b6af9015707e3b256c402e1151b3be4e8c5583152081dc0f024aa6069540e20a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "306ff292009141950dd3b40310b3820554c2a48ada0623c52e2a72a99d4f7f87e79b099c9aa6fdfd69a2f60e35c310c705f7da6c6319d4b79df978d385c24774": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "50ce67e2c17f319dfcc1963524e27b4145d08bc1f452831aae3ea17e87fcb036dc37f6a9c2115f4ce26725956b454242669767e473f2b71158758e50a3f3534e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e50a323df1d8739bc82a3477523ee6401ca6d7d1a40d6cb98dd0a5401db9396caaa0d3f51e662f9042b41b7b9cb34de6bed078cde2228fad4ba9b5182115e486": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2c18cba49c0b0b8912f70d4adc009f79c6f58361be3ac71a8b72eeadf7ab9f81d08eb902b0246b70ae6084b125cbc5d2a76e5de035633778eba7b14d91c6e2ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f264b06cce72c456f3056e1616a5fb8df718da19489ad189515ac35738ad25fe2db0a00d21b17830153c84a2c5757c24b7f09e388053edd499e7b415193c3256": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "893b38e917623de807a14ffea5461e5848c1e6285d4c68ea093f164bb0384a5f822c318757378adddfe9807f597a15a28cdfa09562f5586ee762b9132c0538df": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c14904e06884b2db9438ae749d5dd94ff111d2c31699b5a8b78a960b522dd933b962e5f77edcb3eef4d4d10a04dd35c637bde814d6d2b68bfd0426742b9b55a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d698e328a74b01059f45b53ab05d827b9fb99b60a86e73d3f13b2b38554da8326247439060b56e4010c031b6e7a9f5e59d7d9f2c49b6113ffd26c1338842e97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "758ea3402319c5b7a2b1277a5098beb1577a9f37d914294ba6382b59fd75d77da5d7ace9a8b0fe24be0faf12d791a8a4648a6e09a561488992fdeffff9306597": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "246a37cb4fd8221608c61115adae8d351c7a775a7b1e0d2b56d26fd9080552995190c1ecf76a2d7d4a856768e4097d76b5acdbb7322d73ae83f79c9c0763fb75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "394646a9d4a8a9872fbb9ff64fc7f91fea7582c28725aba238a5fb484f93c78b6f72398f271a3714a8065f1a068131a014d0a28c6aa3fc786859a7f0a139f7e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "1c36dad803624753017e82d938d6ade3df699de1e1f771d8338de2f67f665632d13e5c6ee14054a6b816ebc32e3620335c3a7c35125683a57a9146a35ee092a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34bc1af3e8b0a5fd7acba54f64ebe466a11f3ca60fdde3fdf085ff1c5ed3daf4e141e531ab4404ecf26ddc6d84198a6db28cf1c4781c588e3fa9f20a7614d97f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "000c5f433d783385389a2f2ad5676368aeef6e4d8d595a638194de69cccc8d1229da9fa6f06200951cb852a054dfca57ca5d07b7b86f55b597399ed127c91057": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e27860e016bf4c99a9b4e34a7ab59ca95a15f53d9c7972501592d3e00e88fe69bc4e180a0b32df442e74e6c1523028cdc6ad870e573ba6f35c4a169a30b20429": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31251a3267c51a3810ce133a8129d0e556139c87c5e1376d1847315f7978e75119e6c556291bdfc8b06362689b5d5d19720cd17ad759a34a6babdde7b6bb8dae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "082ecce216cf14368ad13217df552b02e4fbe8c2622532ac8b624bffc6177836436cbac2c5aa51511d530088ee29e9a29dccd4fc8afd8f0287806a4eec6976bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c529185cc13d7300e876257191531e1ddab6ce0f3c1aad120e2405bdb98452b973b9f2287280200b1957095975e89da6cc01d4e4ba7acd35e54f25430f6500d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "54088850c94a877c4c65ebaaf9f612044f853af3733bde3d5a5c93604e5c1923e72586a2d3d0ac020fdbe4e7f0b59c7c56cb69dae1452ff5f911305ad7ea4d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "650e4e5f7a9fe8ec2987c96dd0b0096a48688cf886939d1058be956929f68f361e4971ef0a305acc62698099ee8f70362759058c907b5bff79c225f4e7b8b35b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8f2ee1e3977a7cc6614003a8b8938d5821502f9d86de843c0cd93fc560c31ac2a613b642d34cb51d21a005e76cfa74fe0d122c1bd5dd717ad50c7fffe46a8292": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "99d82da6a7ae25c1e017bb5abedfe62c6df8d4ea98c7c13198cd56901bd004add150cd3958a23c7c7dc6dae157314b965553fe195c2e352a23b94731ad168d21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "22b470616e8873ed9d61ee2e6b3fb1a3a6b419fee7410c27844d14528ab27a21992bdf5deb5b8808adece5e1bfdd4ee26e0d866a214d8ee86366c68bbdbadd10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cdd5ae2c815e14b07cff597ed2ca83cb738d8a31e05e8e39c40ca744a2b00f6b023784c3fa971af0584c75fb7b54c695e87c852f26dac9e96d29296e3f50d851": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dba48ec3daa45deb93b3c04904f55a4f6f448d874530f3dabf89f05345e2e38b48d2e7f5145f8ac1bb1109353ef4cf30c2d5927571b43e0daa0536767e186b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "84eb615f3a31c3f6d2f91f7c9213f25a4901095e8099212dcaeac130b1700810c85bdc481f647f01abbf0e31250d17ba5df54abcb60d2db1b899e29324adfd29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd17ddfc77c1e84d093be463eece14ebad46d037d5198b882eb6669a4131649fcaba2cfd36ada7d3631ffe302d7e9e9115a597ca510138ff5ff9d80789640035": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d92b3f9b6437ebe53ba7f8d9e04dca05d5899b4424bf57afb1f242c4f0287811c48dda4b2c4514a903ce5786028db8bfa0debb4b19f88f31c983c94d7aab056c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "99733f515fb6b1961abc8df3ff7e7492fff0919ff1e6eceea0ef9d2fae5e9d51d1ad696656d688bee3113260fc66afc1d64ccaea5044d0eb27cf20f99e8cbbbb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "056267655711181befb17e31262bc5c8a0eebef65518e0f5b12d89cbdbe1e34b6d5e04a73af187afa2ac7486a6e7c969ebd0fb2de0b5b8e99d6cf154b7ebd180": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9eccf05ca77d49c8c2edcb4b943510ba9ab87c2fc25337beac39c70916e174a2be844bcc35393ecb5044ebfe7fdfa4bebf99427afdac67b3c292a82b2650e28": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f04787f2aabaf134c4d14dfbea25f15e25eb448e33c15e937e0e911b2a8f60b5b73baf928f008dca82ae2621452eb57a15bb9dfe40956ee67b723c6a2a49c7f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "15985c55f710aab7c513b81f87adf29409baf623188af4ecda04f3f96b8e66bbbdaa6370a4d28f5fc9c481951e0e06f03322f2f509f3c4f7e4173bb35377a411": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "01b546b3d09d263cffeacc21c06e83438caf0f67f846c2555d45002c4f41614d89b5c54c44602294f61a49162c4f702b3e51386b46a8245409305bb985020adf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "130d3ef4d46201a383cf18359044b80198fc82c5d9ed88b7c51eff595029e84959f836bc3b483b22c2484b01547321efca123ed77fb8495be229a13f098baf3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f6b1779fe63c39573e816139c0fee93c3a3967c2592689e6a67d673850e98393e1b761a46948562cce4b8e9f6354ce28e45e13709e1a69c3d1a57d6d29e48459": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "99683e55cf6c23b8c170fd449ab7e5d11ddf6ed8f407f8668f685ae98403bc3edc20d03ffa3aa74ae59a6a151fbb902a75b9dbfbca35ca52db8db18cb84436ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a3d98eae5d73e9ee31e8086692db20903884b4b4cdf319e9c880e077fba7bec7c322902dfe0a00d4b538a65ce28ed44d58c03a09d8c5ce89bdcee9fa873b42c": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "3f2886a92f1f53d3d83aec30e60f7b78124e202b3913a73760048eb9b5f554266c391a2606b2a4a4369b32f47971a3f7d69f2de21248b020509e4e074593d97e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4be8389462e540869ae0e45c672f423f3d6ff539232df267042fd6f6461ca324f8876027015c82af5652907ad138dfdf2d3ee6aa3709241ecdacc3ff74ec577": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "03b7d7ad4c419d274523a2ec2cc704b306ee3b48af41efb58b337d77fec5f672e59e91d0ddd1200cfb01e7b8f6d35ef5749432fd68b2e913541d0a24b3b49db4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4183acdaae68e788d970234f6a6797f0726b23430adc53bf6cd828ad4c780b8ec1bebfa91d097d374f423ef3a7772845ec1c54c9bc218149f0c0ecfa2727723": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fbc38a7d1867d929ddaf58aec86c3560d843b8856cc8286a8b6795c0705fad90fbb628de4b49fd211f77f12a5846014e7af08a225cf674c295a1393c3965eb10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "901a48f923b0a503fe91690cf36069323d0914a66aad88e56efc3fec296651bad8d82cba6f370e1f0c694de8421ab11898eb1fe1c7fd2a3a499a25a9b7470432": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1cdc6881b0708953f3dd4cfba0a9751f77fd3b3a70fa37b2111c80a604b1c60bb63ede10605c80b7373afb70bfc568d4859daec7cf493a9993ac10e4e37def8f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "018a88d72b9f171526fb8dc93aedc5f5b181450ab83cda34c941b8ab0bac09389f4608eafbafbc25292228bf822140c72a4d305da671d3c0d68e42d9b1b62446": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3e0cd83b8d68d40834b6500e4723d11b3c83a8b4da23c555448c6caf7f6c4203696b63d0a7acfa85e35d6817df26b10c230e2436a70c3ae7c75cd69d2acf672c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bba0c585addaabbf93ff0387703d47aacf16246a5c962d32a7ec179d80159b40c223e0ff587426cfa61cf18010168e3253790f7d2e2f363c54f3dfd8a96afc91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "195b1a709958076e9b54c5f4e9a3ed00fa3ad2d88f0aa2541fe5dfc731df039a0eded0d92cd8e6466a2245321d053dd51df2ea11f9521c25b60f4d3d60788908": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "83bcfa471b51cebcaeb0905f10a6c1275f43e6cdaa8747890bb57d5934c54e4b8d7d5f23f000ba50e83261f319f53358774f47ad2b76663cc103f2267e7e3aa8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55560adca3696faa3cda732b07028d8d80f936bff93a6bae235aa33c166f25e7b7368394628ce6375965dc98bb31423ae981e864e9c521c4ab19120004b9a1e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21563084d826953a7f1e254a6712011fb5340328db8189200c4fc3248728c8124ed3086ffcbe7de1a757b81ac65c9c9243a7244b1820891eb09467656bd3d1fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "322fa527c0d7a72295511493225298b95ad78ce48464e239c59c9b656197378c697ce69a1415599189dfce0d36b8c1b546a1c7ae650dd227c84d88a019f2dedb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3b32357afb9816b013c170fdac77f5f4a5b0563d7f3ef53fb8b6b030fa59d1cd6a56b0cabd637d77706ed9ef20a4a884aa240b06551b59262e762100916252ab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "57259cfc78322cb5dd7a4e413021b9dfe00b0c6e43071aef3c63c717c37f327d1254f6266556b8e7cdd27386e0515ca375063b922c15b6d74153f347c4d53821": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "54736d8b4ca55900201ae46da8b6188d67279e0dcb746e0d3541f45aee5058cbf126905e1b7ff73566657e1d81fe48ca18264f1ae6fcc87bf37eb22f4e7e9fbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "604fdb823eb09cfcfec79135c60e62f678631cdf3874a84bfa3446667f1b7c26a777c438f8d5e6ec3cea0391f1e8f508050fbae028c15afb628ed25de04b4a3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c2d9ac6a996a4f8f718feb0147762f73905346c662ec4f7631502050bbde1dbdd5e49252982b50d28245b137991964289277eee20d8f41c9831b8e0aa560b9f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c12bd0d18739a34465462dc5858ad32443bb88a1d1062a6eb6d42eca15a2ef4859637ecc3f4f4a5dd50e742c5e16414bd065762d550a16e92c1fc6105676e12f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9b34444d864dace4a7c39a95cee7728cc5dd89558a40259ccec1163949c6e3ac96257b0aec082dff98056b307f88dcccdbf46e73438665ed95a6f5aa6cca3364": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f3fdbcaff51067549db62350a3eaa337bc851589e310cee9b5ff9b52b17490a5ea1850f243133e4fe10cf3aea5ea40d7b37612bcee79fd94a290c7f093838e35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2357d1a35af6ca344a6e8d5d303755a936ab705f21bd2e791c679fc3d7a7e7d87d8d1e4664e745f2d29dfd4201bf579fb4904901f290253748ff53d3d6ab08e9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "211ec36b620e27312d6b2f5f12a272d07d3ee87f77a9cf73363b05a555a5e18ea696fb30bc83f692edccadf87a6d67d7c0663e9ff2eedb3108293962053f8a27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e0e3d030425b4b7f610f495b7f591963fab437b519be7bb090841a8715e46ab676178c6b99f7b3db85fc5a974c21decddd8e203e97887fb8177b20e64f12194e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d1b2558d94a429edccd40081b9ca4af97f8e18c75cb2ba051fe3c9fafa11dd96c921473ecbc649e0577865a5ca8aca95eeb7c9a26e9836836e9802c2bb351f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05a5e665235690cb9c12225fe49a2895e515c4557726df43f334a3711a98da193e133f1a7809ea3a1d9c71ea6a2f7e53e01d1d4f84c255f317884e476a9027c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "099fa70f7e669531fb8fa9f4fa8dc5e0015eb818f26c42b48f0dc11ba35d4405cc76506ec8232f873a0270f4dc3dc1da4fc762db296a471bae6f7cd538a35ac7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ea642b6df140d94e114f290d1bec2765939dbbde056739f1cccc69a07e234710aef7ad48b42471486a47041bffc1ebdbb4a8cbcf021a32447b1ad877187fa0ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e67744a5831dca59d219c598a417daf7b561d155e761b932a144f39b6ac5a698d8f8187cb3b3efbc85cd134098d63cd8349c11343dbb3a80a3fc4e0afcf9c1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b7a1487e5609ec81b5dc18fb0e81cb32efa350dec675c322b097367b6f524d724fa8ff468551d0185c48ba41e13cfbd7adfe79ce0d75648bf0796c136df61e77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "16948dbf5bac62799f2a33cf243451d0ff221a257da2fe64a7b177552bbfe4488ec9a3307e0469221ea0acb745a0e04b932f1aa85e2fd8c9129d7136348f6558": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d79f22199461ff6dd4f7d1ab969b96e1d5227497e0f881a864e83a0e01b411d98933259d2c23e3f3fecd5d8c54bf0abcb57ee4c6dc30e265f005bc79fc76be97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31027093faacaa186dccfa6a2be8665c6f44b91f44ddd2e7d8f6852d9321e392ac309654005423fd1e09440d4342b530f31892086744cff9b927b261b25e8db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a4f203aa78a2562d8d7c2c42b74083b7c9280a4096f8720fbbd23383c8db57d469edf944a341a7581bb9bbdbe1a609644e0baccf78e932019b4d08c700a65598": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "749adffa29dc8efb3761e7f2ad46ecbd4b0982dbb7209ad50c7f577153dfa6e565b3fc288fa7da1178c2f75be3d008da96f39acc6b00a3a6933871be35dd12fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "841646343fe6611518e0bc9326bb05ed5808a0c6a417b454c845940a0875b336d0362e92a7c6a32f352de2112c02c1c7b72a926312be2476f0fd3c03ffb21ea7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "81c74e2409f1e0cb8a856de68b024e9f71cfe5918d33be0bbd30a9ba5cd89acd695c5b5826c6381a171fe971e9157b8ce8dd2807e584ccdf5c58dcb5e82499a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c5abac333f0243eb853e3a04d14615c8d0c5b3dfac51d8f8034a8cb1b2b26f296ec52e918520b0ebb4fcc94dbc48e8da8f3d8f94d1730086818377e861ae2c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "211bf624d40728bd7c16d85024e9f09a96018e41fbe3cdd48d42cf0886c01834f2b9b4b394a5f8d931f413f174ea5ca8e6fe926ed99ad2e65542a5ebc7231a91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e82a4a00de8b85bc066820ba7b5a01f977a853d7000f37c507201ec8951dbd887ae29c4260bb99aebbf701681b5dc36b62285c72537b8e1423cf0d997838c55d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b4ae01582c2cf8399a9a9f606a5a3b4569607756a3e2bf89319408edb756f31e4b913aa1fdbbdafcc4926c7f576d485ada0b88d120f0183106f17c571e46e7d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d505a914ea44fe7a3c5825cedef1b703850a67c7495ba7cae82c02bdc2f216d02e216d3af2d0e62064eebe0f1479d817485081a88e8a4db6b55239ba9b4fa911": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c725fe608a03c69bf46b7b220837c0e8b1b39b2d9f34f3bd645ed5a9c3f657350980c5c5c8f44658c4977a445281034f5a76974007e5ed643ecd5a9ed921ddcf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1dc157c3d19915f943de01e828980f8f0a369425b8e1948cfd71d73eacf0c233a908fb8fe606425eda6c93167ce807c56dcf51428f7f9deeaa96b7d6d3b2edfb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "63e1ccbe0b73751efbf00f94e1ef70fd24522fbaddcc38301d0d239e415b68300d1ac8aab688cf454a2f62f3180de46f272d27556ff3eec55fe597d93dbdd61d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "da74814b097a3686eb75996f705bda120338ea3b129b01df46fa9f11671948aa2f3fb571ed1fb3325ac226965d6c3c59fad9cddfe46cee8d7f866a011933b1e1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b5c430a0bc26a06d7ad4dc14e6dbbfedab32fa99f2ec9ece5c600baa3f5af3aa6d29b57fa88776b97eb46b16b53dcf36a885c6e6a694495489e0cf05c539a5f4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bc80bf396c55e7815925dc89f9e2a20f7c474e910b693df4304e51c45651b7eb9d284ac456fecf5f12d83be71d406eac89c10755cd1cd514a1dc8ce8c2b92f1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b7aa6a6fe3a8119c0025a780dfc7726a19c61f8a52e4cf595e02c4e98b6d938512ba372ea07b398edc552379632b24914e4aa08fd82699ea8536ee8ca6e281af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2057a1a2c1977dfaad474b6040478f11ab9814bbb1770f5fff0a12ee454d0e683c3f4abdda4a0e3aca8df8bc333dd826acef8073130a187621dfcfbb27e4f74a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "51be56baea4884864d8852e6d50ce5b5c6f781305181f7ea107914010fe22f3c413c41fdaf75c06c12209c08f9a4d844da441fff4be99914da7d33b947228f39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "662945627f44ca432a8eed24923c60d77d2b6120d7b1500d15f53f3fc4b3bf491d8dfd886f10f055ee652e92a3c15182dbb5b618879caf2c16f414a456b69852": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4fdb84c0dfad6dc57338656abb4074f858daddcb0c02471bc356506f5535d76befa379a4205296912ddb06954dc28a3ec5d8083f68d6fcbad1ba523d24472f56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cd44dba1c9023279952cb1fc3cfc30f646c7f41e57a7ec1dade13ece84a141fe7d5784cc466923fc16dfa1ddff9aeb2ee15babd92e412977c83fcb5746403258": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "343dbeec555a1d6d89e3f7df9b65a149c30a3b5d6297ee02528753ad4036029c886902267811b7f6e75384504e96bf890f3d6d30b6181447e18d49d88ff894f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c8aec875be207f3584088f497b2ae4462898ed45ab6a6b05011742443f733e7cdb04fb72c3941393a9c1014b84a8ab18d4b877a879a9004699f644aa946320e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d6f43bf73633e1cd1effbc89f52f2c819b0dd83a55dceb88639889bc4685afe7a751944c829f411a78a2631584099018a246bdf5bcdf7378ccef0e4a34c9208f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9604fd29e55593c86e9edc3a40663bf9ddc287edf977ae01555ee307b4ea4812bf4950f020cadacaf7294108d67d0aa9f16723a97d00a005e81dcc14737303a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f15bbf2f03952802551f0c0a8a0840da967aa48a105ecbf97cace01d5d6c6c602ba1e25cc370a23a70b47724a6d58834ca5378c8edefde3fbcfdf355c9d02d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1b025f421f0cbd530e7c87ec1508c5a0b305f214e11e659c66c98e117af0386310c177771751746811bc0d567cd2adc04ecedb88dd15961015843c87df8c806b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73bca36d845a050352c46560fe1ba2460a5c6a362cd0a6f18316827e6e0b35c382044a23266eba4c03ff984af2654dcbcb151026e6becc3ff3411fccba8919d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12ff3f0f90bdf2a96db13b4aee3848fc29e1f8e68498d69d002504991de28387fe127e3a6ff374e780e5cc2a2fbbd1b86acc4b6945d5c57f474a86eba4a62e82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf92224f7e21728485703fcae7d47a7bcc00b9cbbb5246057c1eff1ba5f4928538bc48975fe2e949cd3ee501308804186137ec16d2fe57536bea1d854c5eabee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "473e453b74fd315a528026fec5f4c4128b9fc8704c691e4c507361f91cb01edade0e5e755fd5a09f742e007740903a229052dccc5b145e436d8f5cfc982581ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6acccaa23b403ed5f2d20d22d0483e37f1ae638ebb6a61b993d4b83cadd3b20a9b70f2b00dfc2bc6e98b12c8b40d8fb365d9acd35f99cb3baf962bd2695684f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "cffbb099638c976ed945790d4b1ab75c8b3a2b63ac9282dd72a769f4ff7635ecffb9f8b2321174e3872a969977bf7ab96a93cd00e16bd7124a8935c0e0993e12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "458cfe2eeadbcbd0e7406baa8226cb5cf0270836dd776824586cbfff0ba75444c5f26a15fece8cee730b6cc3f7a4c0304d28a4c18bee123482dfacc039bc4f1a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "590f5be92eb758681d38c05d55abe7ffd0c264214b0ab859627c7531db76cce60e92d78a8e1befa0019a0fcbddf406a14f955c31eb62ba13e021684ec2663b97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b913559261d52d8d75f1e489e9b048c4d5cbae2c0161c93519ed3e89089456af8342849fe385ea0dc37553c7d345de20fa634fc0a1f49b7c2aab6f073992e9c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7af814a3c14b64a627cea7d5d47c6b95a493ff864c1d5f212d753afce8c65a154241d5099ba464e763afd85c5ba41f4991de6cc8a9287013163ddc1c537e8f85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e6c3465013e79bfffc5c49a60e8b8522cecef302d3fee3ba2160d720eb9dc1e1f6c0afe130ac89e71eeec0f8e8194e0b1e2802eec12d271155fe58019ad41c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58e967fb9bf0884cdc9edde3d7bf62fbdc04dd9da44a18f2f69b4df5f7adb9ae73a1471536436371d3951c9a5e789e491cc2fee4deff5f9008a9a6d1d6572dce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5a3ba7a5430a6a0016160be2559f0b75f027d39c8a7ae3b943c00c5b3431c5d17f3a24f9b4592bac0e684e703a3e0fb0b71fed7a8d4b5a065ffdffd86655ffaa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "453c04614e68bf5a2bed2f6dea4f14fad84c0780bff5bc58d50a1c3af8c271a4b2934e6012855ca37fa7651152535fc839011838526096357b7d71d2859ad8c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "830c1fb45ffa72eae18967232632d3d7b686a1eacff389d02e90070bab7c08cfd0b8266c826a116dcaca25e80876a22c164091767a32df9bf930bd3d137e6053": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5a6a7e6c7bf247c1dc2bddfe383b9eec0a588d612243e1ffd552329f5797c80c24dcdd2648d25ca4902b2c6c1fe69a86474643f44d5ecd7badba278e7657f2be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1005b57f519a61a630c52e7188284f51b246901953960ca53cb068b8da81a201e22ad2d69fb8f0c6c067ba1ff0d79edfcf32e1b3e9f09d2ac3e0d585ad8af368": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c6b77a2bb2b8e0637c86d6c418df081da84ca0fc822ee774fb7228b77452fd6b68481614ffb449e71e576cb17131de4517a225f2b5339476ab341bb3e8ed1c20": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fc8517523e35e900dfb9b796c232970f41224c321d63191f842a045d9fc3159853d1e41cfa27ebd4ac4d95cd8249425c228e0b3997308ac9c4bb9a177da7857b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "15bb0a9b54bd2ff1d836cc6e2a5e67dd6078a287ec8f3914019ae2dda8007db1779b79904bd0c0e0dae978e982ae64e9d4810809512fc0ab2a3c70213fea3757": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "db881eee51149bd070ae8ded32ea187d5bb86b8c104ea624cefbedc07b90ac72b0a70c6580c78de5ed3aaaaa3a1030d91b3728ae6ece6538ec48f9fb53b076b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3886f16f5c66a251d2de3c43b8dc7a465017ecbabf26738b3443e7686729af0d93e4f7f6c3ccac27ee473ed59e2a01519c901771880b4cd1af462c034f0c70fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd6cbea9404b36aa6f379febdd3c4d604f6bc4196772c99182599989f59e2704b369cacd9395648ca7b77f585b30fea19787dd6df5b312fd6932ae3f6cb7a4fa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e1d981c2fde5fb79e8ea947cbca0b4c81e17afb4c1c50ee472eb340a907d47ac9ac4f9253d341268e243af1462980e781fc2270fd5dd121f0523b7eff161fdf4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7134a575253f60082c0165d417fa8fb2d8e5fe4d04a7b66dbdff28dac63b5878ce55fa91d3e5029ebba33b1e143ed50ef05c4925a4621b656aeee701b25760d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6998db06ea75019d254361f106898caad1339a7d37b8d7974e929b8c694524573040d152e25b0d37645a9d806437a51a1d1d268802ec74afbd2a35e2dbc82e79": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c1ac9f345e047292207ffe8457f518a80a9c6c4d7165b1eeffd532a73c6468573ca76430c6b96a4edb97018741c391162e212c1fe0aec04b67548604f4f46b2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "db8364285268213ba71c0fa3d4e2dc694e035a5ff1fb5cda2da9584756d611ed6a323ff5ec31dc8684cf95915470e4675177fbc6a2ee28820ae440de5c734bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aadb58bb67a6152a831a3fe7a99d188c19a2ed284a95c6fc91f32c31c85d2846634f54f9b962cf48f6e07a46179f5290169dd6517943fe3a33b36f623651b15f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aabb99c7881e18770cd0c8563ee3b508f1f43694411e79542ef81738724eef30732857246fc128f3ba46a20473d7830270000290624da57ab3c4f99983b2e03e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "02c7135bd4574bad743cea5c7049799182ccbcdc52a9aacd106b8dda30de32c375eeaa8f04e86cd034aca441d429ee7bc692c479076a29d71b0cc90adbc4241b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d59c5d546083168128662facfb1d994bc8e2dec7f189d290a5e0dbfc54e392f4fedd63a16f1dadf0712cb801d4ccf312134a4be0459357578921c4fccd920dc3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ad546dcec41867d73a85a8af73c1b9dfa24d33aac9c9c7f046011786ab2d61bcf732bc5f08d349df9f0328499798183b0984edddc5c352d15f1bf396ad26ffff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d21b42606e1b33b67bd6724b25bc4a416c1cb424de045a5dac941163f478e3ec5bfdcc7881a7f83e63c845c6ce8a37cac0cb170a00ee95be5a1f2ffeb1f8772e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9ab01d18d9ef315fd6349a4d3e0e339b0ced6786953bfe1f784c560732a162bc54e196bb5f6066a910f9274591e3f666cbccda1daf4459010d08da2477d9e1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d00eefe299ca6c20fd87dc6c2f56e784a92207bd1e6af1c47f40bca8e77becf6bea1380387132fbae2f68ab6a40529574a9576056c65c9bf003f4e3f2ff66f7b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c24717f12986554742149cacdc180668236348db277562fed7e6f2c7351aa22424680306d93432c40d47e5cc1dd730ccbac3725bd7467d163c27dcab7a401f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "33f4c5be69306db2e01e7ff9f1b3d3ea3ca9d265fb69d3fdc14881526916e169d396eee59428dcbea484215bcefc2e8c24979a46a8f4840b3b4fe86ad54c1c1e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aa65db77187250cdf548c16c5ff020724152ce9ebc62a3e465b21bba45dda3b044cc87023a62d9dbcaa261fcef4e95831578848869b0868f4300255adf6d2979": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a71fbad16c8913af1b4b9a79fe06e39aaf0631439ff41338a0a98a19193c4b463da2bd72a7d453e204a345dae3f10028f8c3f9a94a3c95a4950667aa81c10ca7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "65dade6591384b04951252b94441c14b98d5fb357a3ddfe88204e7386f0857b9781ecce296edd6a0ff71ef997c9d6492dca8ce18532c935e049dbbb863c947c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32277f4eb03e76dfcec7c36a963c4ba23ba9b56f41cbca47778f2f2c545d83fc48b4d8f270cb138675d5425e536e2f6bd554723c7f8e1543f5e0c4fdc9831758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae9d8387176ddea111c01fbbcef95b80c33425bc8d10fe4466b074d3424b4c6e0c103c3ada7bfc7035bbdd06bf376f4934cac24dd576ac1544fa9826a5caa9d7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "569eed1456c018547afe04bea4b9c1b4b831063fbf7f01bc2e95b28554ca699432e79500e4bebf1d3b0b0de0639a923b9dae716ce8d280e99bb2dce1a7b47867": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f14ca132129407e66421d3c0e9640f93ab40fcc4b17f2e32a8caaa54d7d1ad63e2375d167fb2238dc6ae9e8e521dc1178c67571a222da2d5a53cc110596b280d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "70a5fc47fa8c11a2342db76015f70f9b74d6b7ca13fdf8c5ebcc1ddcf7ab9899d340f691eceffbfde4112d1815f94c35f0f5227ba227e03e7abcb0bf131b3f4f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "89c83550df1d0559fff7eca2d5678bd2ee947324cff94d9de9193b276d431176ec5063fa5dca842c2f8ef32fb44a7ec60da6d77c6defc8e7daaa70dccbf70de3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27bc684b8e2ee4793ba4464c86c391185ae4836e84c9be201e6b0320b3561ae0158fe2cc7312bebf878730628fc639f4170806ea5c2a14395d7aa777fed54a40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6c63a717c2eae6541c296a162c2eab21f7781ddb83568053943f0177f7fc337afd2a975373dd6afb439d934847177e9e34a651767fa18e8ba983ab1d7ab792ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bfd5e8817543d145d47bfc44c769d063d0b9f568e28ad69f2ea891c2a40a90041a61cfeb7d67b80cfef32dde8a061683cb26898b6ebc49d44fc65b881e6819cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36bd043851b893b12c0db0b73d23f8fa8d8c8d940d7a5690cc9744853fdfda9bb1d1d97120798921cad47039fd32da0c097208cc6553db7ccb04d5a8fe417eab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96d31cc0d9178ca5b14dd6c114d97c814540d950d7efdd3780bae23698b57dd4c246a70d6a6ac69bbdd245a07d61cc210a1293844ffc7190fe9ff4e312e6e6bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "debab7b6cc9d0b2f97299a7bf11a3fb82dc82c1323c525f9be9e141f28929fb668e1b46a4221ed59a2edcd26bd215ee26113328a277136fa765334ea2776e217": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "062ab2152e724dbc7f7a6f98c0e69af1c4618671192bea0fa86b14c93525f8fc0444da34c28368e6f987bf7d1a0822d9b68f7084b7d1650167d2a3ec5d3724e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa08a25d721203b3f0ce709563ef0bf07a7ad312e1e482f568277b7b27101e2837d63241afc68e439de3860854ae3fe95aaaf24b8a4b40d48fac4ae5eb778d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2f8f48eb1c29858221e17d86274a665eb7ecccaaa9b3fdcf0ff6785de8ac62c3ecb6c048a590647fb878da87f550231f24e625a0f2a3b9e44b450b1443fc2930": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac3d8fb909aaf9c59464cac15db964ca67c63dd1fc507aa657b736f0daeb08f3c83b69ea632eb5175b22b66da8b7e77c311269e41d45df69a3e6da9d24e3ab19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6ad6e6e41f2287d21e8d77f2ae792e97e3ce529b9a8935b43c51b8146059cf7e6e9116d3a138e16bf442e41bacea4ea976a8f40f1d1bffede2c6365c739efb5a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b6f33343c809333ee73d05ce2211569a3754c6e0244e578fe6dc3a5bd823241db9652655df9046f05c7d35b900c7e45d88632c827e8c3b7b834bcf912d7a2bce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "155f08cecfdf3175590a2a21e06a403bdb98b32598e99bc9281972c62a98b5cd80b8c8547c3f6ebf560c57c40e9803da137ceda56bc7213af65f56a91937e923": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f2bada4c3df8136ac0a8b7165fa0cfc44318050da5eaf5b22a21c8a38a3cc3851fdc3c0364d2a4dd85fd933b1297992ad6bce1032d39a08819f88e9ddb7fb6a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e395dd61f8d49a3acc99b77ce837bca6d876dcc566426196e684ba39d1bcfcf616f1dd4e47318802c5ff95235c8d85bf945693b216255686ec30fd4b3e563bbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b40097cb9eca79d394816369d281c33519833b66e8637efc7b5c2d806ebb888385de893d141267aaab808781b6c0d33c104b96d6d90311c747962c5b155b3fec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "762460eca6b0177994a812332bbc5e5224a9bcb0616411e40806fb37fd4b06f423fd2c8bd0734485a9bd059facc76b3fa542278bcb91769082214958513af010": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ab0085b50373a3b6568e0f83f763a923f69704e6387c627ae00c62f7c81a4bf0900ae262e69c4f06615219f587322f044e967b7bd93e0880b4e41ae0698d0f30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2369a5ff7c0fdc5e6c1a1bd5f42bcad6ceac5cc564651e7bd855a58186468ea1fb0beb0e85b238d8436f4fdaebdf54a21e91a38116cb023a7ebf661d2531eb61": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21a08424a50e89cde3b12b896467bf1cfaaee6f32dff5143f3fc508c86d9c840639b550a4a005b676fdbc47ac09b958a9d45bcc427916fb86abd01190881f59d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "553ceb3b5f4055e81bc97d7ce0f7fe72bdcbcce56707277b46b3ff9ee2cd78488531bd5f90e621bbfdc3251d8f15facaa22a673e35156a80811b27a6ffb5c9ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f6fd1bf814bf78db36452a956fcea980019af0836a5f8595f38c0da6b39577bfaeee2af57e1a1fef2fe869636377b495c6db5f93746bf948de20d9889a41297": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0c4c71e39f18f592d590c4f1d127c38c2e8bec19298fb2485553918fdb36c49b5bef35aced2b36b4d989a448aa1d70592ed8ad7df6f7f3823aa2dc18a8074ecd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cac6444713b4be7f9c60cbfcd028f609dc8e7fbd4313a509763fa8189d95e7cb5cc40cc54f6be10889c74558c447908110e29b99f9cdc9e7948de630f67cfbf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb6945c4699c8b50e343178e171cfb1db92b7f67367c88b40fa3938f64403dda357b70ddfeee397bd41de2858f00b29489707f74719a6a07a092af2b810bddf6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d95cb60428fae95821e67441e9eda1bcb5ced1e1953c0bb0d327b2d347ae3e5df825a741a36bed5f306de9addf6bab5e0af50d7753466600f9956b426af38318": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf53235b697210647048ebbb91a441a2ab2d38eed78a37e9b818dc02287c2a7cce79830e1abf9a2ca6800e5ad68f6cfad9d4ebbd90a0147e36f536cbcad164d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "77d817e2ec74d018ae7393950a420ce3394293f4074c4181af9e414cbffd064059ecf05918b5f757b33be97520b40ae69320831c88071acd2a031597b98bd30c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96b0088acfd24dc20c5952b926ab1ec48ee154b9e08d715a40ca02154ae8ff642defac1307cc3592ee6975b1714f47b300f887138d77a48a132eff0e7da05008": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "775747b3d32fc5bd1c948a0095c3bf97ff3a5a4bdb65052ad2cc733ee05e28d33de4cc30a1c6b77377977bc93fb4f1d63846ce19cc5517bac2d6a51e4a8789c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b2c3ca35ad9d1e8caac63bc2026750f22ec10af97c76c506fedaada103391c15db847a597a3f128ea5b9c05b6dfd6c9973b3133e33cd31d9f8aa1d4d5fea23cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4746b29ed9965d61d44f98e957d9ab5145e16a4a5f8cc12def57e47154bd37864ddceb688427072cd791d92185b8b5661084e796e5e185182759062d5ff44899": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "810d9902813fcdc05bbd5316a3b20892f3b941e0880df4e67547706269acc8a1fd511d2b9b4e677121d702b4b8f46cbda359859b123ba7d8d03ec0536b098c7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "398f9142dba738af03496863e624f49b92d2402fa6dd8261b4eb440b5a1b03b5b4defb5ea642a51bf52950db514aabefa7c00ae9e23ccbe1cf33698fcb25382b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "922c2c984fe7ec0054d47ccf75b9e7e1d378c2447df48566d84e995e5df23eb5a18d6a35ac2f4d2930cae95c3d4342e830a87eefbcdea43d40e0ad71beaef4b1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5059dcdd370006356f177c093f2d537ecd338c463f04f28c2fd7b11a2035cbec809da8eba43abd7008c1b87fa35686cbec181084e6a2c80abcfcc263b92913cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "836260f13d4a5fba3f2ff6953ccfac8f9531314248d2c9ef6a96e1edc3a0b64dea2f4431564fb783847f297daa87eb490610109ed01004d36141047e2c406994": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "f9a450e2d31300e51afdaa5e9a84d8943ee38c11ceef2799fd6b2f1094a571a6a2deb29a669163e78eeac52f01dfeb6e67f047e98e664c3b67513e22bbfb9653": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "98826483f3722a122d47f7ac3763afba4636dd83641f253bc995cf559a4191891eef955c0eb3dff54362c87331f5664039bec1780ff31be9f1cc6b60653db383": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "777a58f2da25e27b5c3d4db6d35b6dc2faab61e1dd405292c86d79fed28c24d50639b2af4133679126bcee445fe438ad6dc1f242316e5f5ad7b2e41896b0a6e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2da670e3ffc0145af8c6ac3345214246197921e8184bb654be9709d5aa05575b3026ecf1b7bfa7ab19f405ece8609944fc9c9e29c45bd1c481ad029063467165": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cccdda395b0d9850b99c2d738ae533b88d96546368323ed331d9d431762525097ecc827962795bd55ad5170f09957494f53a2fe72317eb20f037ef5b61dfade3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35b8b3036cf5fc3695078e9021cf1857ac1589ac03e0867141259849fa45c0e622a0ba50f6999cae98de4fb297b650d928fa07065859870dec9d048d2088d168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4bbec59f5677e7a9622a6a2eae696a448330da121dc7f906e638bc9bf1af137479e0e17f5bb99566d21bd180a6bc448824e35a9fe8cbb745dd6769a7d0d16e6c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9caaec6774d71b5cbfaa42e6168871bdaf6cb55f0d2d58c140a7d18965a1dd9c3a19cfb013334b31c25089a0ffba26821ad2644cc5e12d154fd55f6804811017": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f630b5d2af2272d27d1814da01b75574f87171f9f0a6f2d3fb5f67fde5f1002ad4354ca0e97e54615c7259d3c1c331404d9d7fea1a40df1c8bea9178aa68d90c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "18244106b9d159ddfce47904b47578630906b1a4bfda1d11fbef48f7ac2156065a9133dd2c94762d87a57b214c6bda890c5f9cd5bdbb2cca4db3c135e385f67a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5284598183cee11372f3a1adfa937bc7a6adce597a5139168b1cb8042fb9127267f65703310fe2a37a1c48a78b6a27518c845274458ecaa6e16e707c2bde23ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "89ed2e02d6a1b7499a3f0a59f51cfea3ebbd07a97c82b0d5fba0a4c3a7e28f8435bb129cbc222f107d671188e40e5a88d0fb000a7106feddcc2d6496f7b1859f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d3d4791a837606c1d9b9dcf1daeee5353c708eedd864e795fd140860ac35b653a510b12f6494514987a5180e29480c3631d3abb1c4e8348af55eb8a6d880ae9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "29b44fa836aabe9894773cc43b6561c9b6bdad3b1d1bddcfeba2a5d43b65672248f38ef5349d49c83a5c9e96d7411ca740dd720bd86b43c0b341440a9e50982d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4fada7b89a6fe67942f6e22efe3c0780ef238172e36d7e898d96faf8c2012addd74e828f94602b60ab3e89b0b6282c9a9fa6eadf00537cc043415c4c1e253ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "844a6db30ac812a4ea72fe570631d159ab88d3ffb7b15089dae44d11656004a1bacfebdaa12a5ced2ce58823d8ce1629fd053b84d385ab1128000c5f023fc1d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1fea11e4002b8906e6b895ae5b093161f1fc841c4ab8021fea65fb0abee32d16987c1bcbba4523595da9f153363beafdcab8400dd39ff39206ead55fa1e41bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e10ff3341f1bd8e110044a7b557e58c5acd97ef5a1055aaa24234a3752818bb7dc7fbd696a1dd071b1fbd20517ff86f126131e017fc87fc14359adaaa5802e3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ea859e38f157319930f3bef1f9b7674babaff64bd4c8428e991c014f395d3b922885344573e56e1e7cef9da2e1aa8de5bf304600d12c387bc48282ce36619fd6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "873bad8122c84c45e76b0f25c34fb4ffe59e6c70f16d8b8c52877a277ad6facd11f444c02c4ee7925b1f767fea498a69a25288f22bc54dbde60e07d609766c78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "222e316953c9e6353e778ac10f0cfe99a08df37ef377ad3f205b2fa84cc8f852efba446ac9bd2caf59596bc30a2e1d374bf413962edee29e3b37f53534e1b8aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32e8e2f1d82ac61d3a9231ce3553cb9da46dce85974921e7fb9027aaecdeb455d3db4e0757d3f2903a625c28ef040cb45ee6c61a5a1952b26cc9b63ef37dc15c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d22424cee655249fc81566012499b15abd5788df76aa4ca55dbc69c7e93d2ca85e5e1e7189a2eeff8c626da244b0c7f5ff60b6fa9dfb8773a10de5ebfce813d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac3d2c050f024aae1b7569fba174c4eae57536bc5fbba1236ca558727724d25a6831167a1af6053d385251e9d3c3104243672ab6d9acfa96c3f24edd86456978": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4a3628ffc4edd2a64b5ec0e7878f6f4162b99076c722e590dddee1924ffebdbbb63d2b10bf701ffc2885a86cc9fd66622288f39ca439c90ac5aeff793e7ad09b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55d0a5ab70e05e8f12e573f3c35facd342c5456c8c792d59b962e767e7afe0115dfff2952cb0080aa1f38498a6852033c88fbcb2bdfab219f477c67b13c7e412": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "782fdcaf9aaad28fd572e1d70e116f0fef5a1b3f8550aba80c83b1f0ad77c5204a9eff5f3594dbcc1903fb37b47c2a04d0ad29d994e5eedab0b59a66859c0944": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b5bccd5e107993c1d646029090e18ea11f833c72e30eff8289a13b7557454deed09d45d5ea31715dcfde2b9daa2debbf7cf233abe7283e62a044bda3bdc3923b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "92476c2d8c6d484bc67dea7b353d39edf80d12aa06522c70d033db3f15ba46fe008948b9d4d0e98a35526ffad17830dec08657e229a59e2f5cc0d4cc69cef612": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d156add6f77e17db9b1966604284787b5f47b3c3ab0690ca51bd7f9847ac2a8542c38f368576c36abbc2b1d7f67de059837410c30dee6155ccb58784413e9a55": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d779846e8b138759ede809f39f0acac203f491819644e6a9f7046ecd6f14e498145e094565e3213003a177d3561360a3c2bf42549015f5ab94fad84c6b6f9a8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a739860532fdbdca3f22909f5680ff34152d60c31a2d7dad7a6b6f566867138767e901e99ff59a6a249a28caec159b56bd5a1b465dc4e27962d771f3c315bb1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dbd4cf285d270c4b16e06a93abfc0562ef612bbd3050d160f5bdf9e7aa67b469a86903a35ac942ffe3e1e630d7d642d606d952ba079af2c296f702ba08ab880e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d5cb2f9fc0c212fe73e2cf551b44d2f595d22586ba6c49b70a125c19759abb911457fabb71fd5a538c77427f9d9025fb771cebf919c21906a5b8647426f03ff7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "906ac5e2091b7661e081233ced1dbeeeac4c13034aaaf9d9c6d5b4a3c50206734493a64f9ca34ec7b93506455a7b23e89c0dcf38ef63aa998926efb43ab52d22": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c85fa4895fa8448ade159b02e90d83fe4cea12955c38f0ed167bf5b434b4dffe73b6c4301a6fd6129a4135281c569d2b2d41e23c53419c26d0afbf7c64fcb271": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0e5f103d06a856dd53c3f83aa5191f6e589738596b367d024eacba1f5a31fae184af98b9fc265ff179d4b18a782b9a1f3eb452b186eb6cefe19453e2eff88602": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d07ede850cca297d8d40f7ca7c21c3dc6c57f1e7a0f37f1d61bc9251a373cfe8e23032147dc4575c4a97addb043802fcdd6b8a1a5a60c2bc88e90377bc9b2409": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf51cb7a11156dd05e949b6661107b681689289da5498924028738dc08da0e014660a3339dd94a373228588e0196782d6abef06a2fdf98b36c2e33c1bca752af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1e086cbc9fe403b65451f7eaed36a842008092110cb2bdf9ba2c910128616818154bccc245aafeededd84dabd6b8bd40c605444dfc359a24fdb490976fd6443a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "77a402403912ff52446db8f553d94a9c452255548ca579b7e8ef678f20d5ec0b08eb983145ad2072974ce4c66f0983ba9b94f9d7da65a585d2331fc305a6e585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c5bf838032cff4148adae4f31258eddf58c30837d2037b2e139f947b4891336d1f6f97ae0cc5262c9ec6b5619dd60b726a284942f44ce3b3fee3dc1c1052dbd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f95a292dbaf7d04f92f09d3254b000f80ee69ab60f579e50b52f7c8b8b7a9448cdbc35d40486e5ce1f110f9bbd21e89a15ca4ab506e5272eca06dcc53a017e91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "843525e8a43f43a95c66d43daf2ce31cc444791fb1dfe40eb4cf9c430a1b9ba606bb875a803910495e387ab95184057fa6ededaa2437a33f6cbb4257f44e880f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "193a36c6b2eaf268dc6988daaa2d43acf856339d6f1cbfc415968d6bb50a69d38f6476c93d872c1e4106b7cd7c4588b9bfe76b9aaec67ef0d342ecc855d1961b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "935691b47a70ef39f6aca6f09aca4963d82c2a9744dca87eacbe74517244d9a0a10fba00a40305fb0a6582cdc0c4318522ecd3cacb4e730d693ba9b4178089bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "802429937373f966927d19c75556f332136e57ca94a60ba47e0ebb892881d5924eb04c2bac8786473faeed0a6f204cd30d1c9ef642d5a4d784aa27b8c4cb67f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32e416e55cf1dd2f0a1d3ef886a2292685f24fdf8d3c92dae832ab1f15978852d6bd25cfaeb9cd0111a0852bba97901640c4c283326ffb1d543890e5f980d3a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "03b2479210c31b8e646b5c440339e279174af0f7d114644f51f85e1e33dc603f55ffa70c128e6e6bc6af2e071199ec7db4877db537fc23267a0721545835949a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ef9790f0879e3531593ef7ce115ebac92bac7c4692fb72b17920efd0257425f44410d84ec50e7e4df2aebc9334f565a4dbdb3ae516add1b4a741f568a1fa1e37": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "43cd8b2c03e172bff0b6e960728053b0493726ff618d16c61c206734e738a624817514baa800edb75c0a16d08e7c6b4aedb64c6a96b391fd0cc914547ee6675b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c53e8fef5ee64eb4836b0e7e3f3b7aad09e39ec4ef3c2ae7ec57854d87cba084dbb38bd25d92d97ceba9d584e87f2735360e1f3cbf391ab0b95d13e755b0f88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba944c7bf730f575fc98c75e709c46b762f3b0e6f7f1a2542719b7a0165518c5a5cad8279ab312d01fff08ac0d4ca74ea1ebd3ce6b36cc5111e8e13ff61e176d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1cdbffcec86419318f45aaad7904b9afd167f6a03e57cbfd35498b03abbfc33a30b4df52afbf89b75cb2b27c600c88f08442f61c214270eaa2bfe553c3d097fe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c225d58e645f5d455c832a655780dfdf0daabc2d4e41454b88a7dc78ec578d924c48577e89ea82a682dcb93ca9698e5846f340b0b9080f3f900aac5278518fc6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c0a38374241c3a71e1d8f7746bf8562e2b129b6a5b46fd533d0800f2a13d74b4a7b18ecbe4e83993c26c02efcfb6742570ecc6ea59181cd19a5fa21a7bbde06e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "171c6f5f641768df9516ab5fc8a76460cef538883f5b79c063e87da5c0fdff657b16e0fb210ea23de01f4674419598a298e8903c28ccca7de2c3c48089c7f2aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b3eeb002a2450efd632f5fc60028b227f297fe55144b349e724b74ff813775f07fbda7532fbd46aa6176b84359347f03bebd36fec8fa8d0c95d4c3b37eea3da9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "91025839edb9abda690961fc9ad4955235df9a752396fb708d5baf8e0cc8157ad98252318fbb5ba4ac5b32c00b1f101d971e94021deb59222422d11dd253c59c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12c3c2d6ce2554c2ee8760a650b1b8b17f773c39e636a3b3969c7ae65724ef33edbd6fc5ffb165daaf29c724cbac90da62bdc1bdb7dbff57f377d1fbfa9f1186": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa563cca944a0216c8431f50af3cd10a12cecd7bc87963d8293cc17b22f35943c9ddba25ba15faadc2768df6e1a0a17831d34da587346cb9c3e472b22db1931a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bd764d17f9c5642900c5e7cbc28709f7b2b70adccb0200bd27ccfcc7488ee153615be53364f602535659ded0750cf55b4ed8591f9a24e6ea321d39246dd1a5bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a7238cfd12d24b8bfc96e8e50929f1268d6aede5fa2a377b5ac113c6d9f124331120fff92b14e03bf5ed5faad176d90d2123a057c0b416ad9303782364f326a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "373ca776a60c32970d2f3bf1c0e66c250644ca231272765bb10efabcb51eb4b780b4606ab2d33deffd7ee31445907b6447d583d3f3ac97e33ea27f4d1ced1cff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06f39b0f6d2cbd4cdb600fb5d8ccc491c75dde2291f4e8981c78d192391445bcba5bcf3eb484a4737df3a04ad25a94672e8e4a24f494111c863cf50ed2543343": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3ed86b84f8ad78014addefed6939af0f5136b630498dfc660bea5eeaf424c00a30049f96e54d9490d918e06722a8f4001067024fa5d04d07a601b85f5af8a12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2be39289c6d04ae74a937b84a0309f60f923839e1a6ca0c516e3f73f9decaf37981c578b65d74f00df627023de58fd3aa8bc4d0a4c64eb8e1d7c91c8599920d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95bcb73e328e85599421e923282ef3f3fb7a9924f324a256ca17a0e6b19623ebaa2f075394d93dd5627b5bcb9f5399c63db3c434b362b0db551b36dc68dff8af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "319b639c59f2c9a6b9bb6ebef481dcde7e19becde7903bbe004cebc9635b5978f3bdb048bc8c60fb85647f542af8b247c26cbc5310ee7ca39cd3bada8aa3ea8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9c75c30697115e141677e3f597d7ea539424121b7d8513378880e6d22818a244fce7023abbdcadad4ffca24d673385187eda891544495fdcecf6c701363b396f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "419f1951238f325f78c46ac87b615fe45cfc7f7ef82690abf42ef8925c52e44c8f50cb4a6c9971846134d8d96264e52590079a4646db13eb58a49ce56e9a8781": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "19fadc3130c851463f504609ee074ddf7613ed4231a045c059d3e17427eb8585df1a02cb688be4a19fa43ab0e0332f6994d02442e9f1cb659b9d9f21da9c8bf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1d801fc1ec58ca71b5816c5f1252a34ab1ea7b08d4038f7a3286fd49b8582ef9a0d45a1d7f03168948465b349a7e486e61748f596cf751262c9549e36b39714e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fb7a75b757d4a011d2da83f80be6baa530058778ae0654885e83df7762ed99928ee53384cf1d7670a6726f6a5fabcc39036537d25297f8f2e266fa7592c4c0f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "60c50b682df47893d0b4f4363d56a57045dd170843e2455d3289892ec3021eebde1c7e510e1e123161b69359dba5d6dc5504819f141cddead8b685c0d05c05b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f69820440f8278bb91881b123769b0d631b565b841afdb3cf33e24af4ce9924bd5e9f0f65308c18a0b52596324b9327fa357b48d7c937d6ddefe3a9a4040f1b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "00c924c6f2d5273e8a691d95c5a041705d9b9a1f9c6ddf9e20c142bf9c8fc6403ad3ab83f0021944f8c68c3ef2bca23b4da8efed828d322d1bf72fb394dd783e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "adca17d8c2ae58ef3c1a5b88477e49ccc5b77f40ff72e6ba08a48a9bfe7ece30c683b6fe40c4f4ff0f106f5cd5f7bccc137cbe5bb36f4cca31cb06a0c37dd7d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3610963ff7f726d802c11d99c8cd54183a7e07743489cd8f8527eeb3fec75cc6270939fb8fb6d90bee90b665161d201f4acc5533e62e09f35309b51ffab017fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13513de36fee173592fa10d1999ca0d09d19a33f28d731a815e179539d9da91e6a1fb4065db8c64248e3665d1c3103fef96952986e5020c35fced0a2cc5d3ddc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d83c99d79926d9c3f53d82c9b7fc2981885dd6af4be0e1db8cd560178ab3bdadd0832f7af0db5e77e6d9508bfc304b88d0f37789c96d5be9ba04bf4f2d048013": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dc4dc85dca94f32920b43f3372125dfb0ebc481e8eb66c483857991d3c76d6e38f655bc1b672a3a9f0e8671ae1bc82edaf839c9792edd0789c5d0b29d3f25697": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a538b7eb64492c385e85928eea3e7e13bd6298eca05ae30daa15bf426f0dd71f2285e3cd282a1de8ae31ae41db507c585845cc734ee85f265fe69721cc689156": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3f7307ffa135ef00a2cadb91aa56753329e1610c95314195fcdfb756fb764e0be7ba1d2c15e4bdd301f47eedf01d78081da4660102accd50e979a525ae531ce1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae7d1399975a79d8c4ef7a28134b201e5502586f457641a42e6bf03ebb2bddfea2e2f4c2579bf703dbb5b4c320028b00657bddcde74b78de9365466bedbaff47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "682953d133c9737b1e671269b8f15f3581acf62b8a5091de8a4f85b9f36972faa6c79e318551e64cad32c405fadb4b51da4c8b8357c61132501c6b62fece9de6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d8089aa960b3a3328f5dd409531bb1df087da8ab5b8dee7ffffc2129c6133993e87961de7cc2c0dbbf74b1a0276bf6f04c50d9acb2f435ec59d041b865bd122d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3d355f1f53c05582d82d81dfe078c8bd86725a215a0b147b4e0274db9aef1a99beeba984fb8bbb05bca1b9797298ab9da408d4a6e60076c348638ce282dc3660": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fe7697125be297685df4ea834757ddc0dd927a3480917c5f8c89ebd1d9d257fc39cc82b2705bd80602b7188aefc21ecd602dfe8cccd18a49bc5802bce3dc883a": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "55f582f3dc0c8284c97b30332017bdc65e4cce963bf3d0c8a4a8b4b181799111332705695fa4a06fe2b7c4dcec5e5db13fb5f63410cd54ba585eab8e44854891": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b2130985b1ca82ed55b20c1e572403a801d5e6a07d0f7a7f8ac9a3760c7e8a82792072befbaf4606ecb4538d1854d0e5d25feeaccb0ce8f6b310750fc171b1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e718ed8d6abcaeefeaaf35c12a7ce511707486562207cd440bdf97e99fc0e742b74599cf12d6b063264f234b2e1122f5ef0a546829826cce23bbbb9069ae3b49": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6c90b7896a6a1048ee20d061923630f5f9b3e679fb77a5722bfee45942982706497bd4d1d9a7c42b1fe28d2c5458fc6e56deeb1af77878f188e104357f047262": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "320c5ff0bfec8a156bc950cfbe22b94b868d52f4a3ad6ea986ec9de2b726fe332a0b7cb192839e468d58da716af805feeb24fdb96cce615da2c0c8c0afcb0354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b2f47e46796f52779d66fdafc348d5e729668cfdbda76d819fb2fab826920fad631bbb94a698230f120acc27be7724fd8323639e42d1291f068c0b18b06bd76d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0f0c47377fda3efd71b35464b7eb95109d9d7dcec82fc7432260b48cdbbfe7b8865aefca4b516defe5043c88765e7de5adbded75d2c325f088afd4f93d5146c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8ae1dc1563a89f766f6ae8219866a16ce7195af04cb7396ce031cc1ae17440fbef32180fe0534538acd00c2a0e14a6451d4afd45592589da0db061e92617b620": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb7da81c1d2c1683e28bfef10530c3b654005ece55b97a29edde7ff9eebf1c2ac72f5d959e56c0ee98e08b39b950ef5e75634f7dd9f134a492a6a8dbc4559279": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8d1e86f6b5c953ddfce74727a720076d814f9226a5077d0ac0c32437fd849a1fe041e867cd5575414fb006517901689408e85a2fb2d00b6adf58a5c61c31b6e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7389044166ff6c57706b76f8487264e94aa6684713753a13426e336eb38b293826806ecf4a6082397e040492933bd5b153c88c4d421a5184f841b35872b78483": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df3137e618f0b3c2b935ab5d74344c40a7e6bbbcf4f22496d10764fd03bc560b8457a26b7bc6f035f8704cbc5973cc662e0599300f170f37a21a94d78312ecf5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e089dce1cb7a584f8621fdff964c3315d000fc9daa183a4a2fc64efd00a47665d6e7828a17ca43ae7fc7d313cb8a277a6ef5dd47d9bdead5100815c33b95ff5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "98dd81fce93d3964420d0e3527dca338fae0250e10149e1414fd857a21d74d79575d7cae9a24ed9f973088438b7610e959824ca51b0e1c4f12623b37d2cedb05": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62e578d52c804d5d2436aeb8f13ab383ae54fcbb78306cc46a2a94af7e1b317d8817611d83eb01e19e8f950446b1fde6d61a244be2f8ab3ad609eafcb10c9680": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8fef4ab8274e73edebea339fe63286ba989a6213fb9381544866b9994d4a18553629d8d477d435eeae10d7b63d40cc351251beb79d06efe46587a9cb88cea2af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7f3ffdea9a1e410c1b1d9e8cb6e2f5dfcc9d1ef1c1b38d5bb6626b7e52372f0631713dbc75c5e39ab811c2b092d614398a790946e7d85eb30caa5dcbfd4c3fe3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "061a81492aea44c02f9914538aca7adc01648e95658f171839ff031a790a1fc9a2ae76053489f069ce85a1e8b49cd4ef07e8202affc15d44293fb47e3659b3e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "675cb27ecf487a18bbedd3bf0d68c38beef0df6d3fec1edf92d3448d8c2b96597438311658d1965e65aea8273f7baad2e4d9ab534d7f4d18c3e29d8cd99757a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d2b09b2a69862ab021abdfc4ddf2a96f2270d5044298bc3d0f487fe5835160570b011717dd905e78aa5109ff36cc89aa75c351d523e58462ef962d155c2a2589": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "330b65e4064b29d7c31dca09f62698fb81540f74f02d58bfd2ba97155f2a047da97f9a42a2282dddd41f62a5399dd5a366a48cdeae3ebd2262a64229823c312d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a0ca4cbcb30c542e29ae8dc8a7bfdeee8d710b5fb63f50bc22236f54e3ab1c93cd4cf35fe280a561baf5b0feb844d9ca7f4e3aa71b50032c1fa6cb48ed2c935b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b653aa85c08a81e3a8b253fcbba1f7765a6997c96e20acfc5b3dbbcb404f6f8c35e470267d39f99c5c291b1634f49ac991f381e4304997c1607616ef7ff11b34": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "717c176ef45882ca493d74fa23976eb1556119644e9c25c8718bbba12713f1812efda61e8f1e57ccecc19a00d5a1c17ac517e947c089cdbc3e06104c5284b881": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ab8101686f3726ecac502137ccad95c433285cbe57c56966d96b284ab7b87bbba4c51e29565f6264c37f6af45f14a91b77341dd05862ce4bb1325624f0a6514": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f58bb03bc1e9c11bf5aeeab3b2cd0e87557980a306cdbef64ef9e5d2644107ac0b4ac0ba9e556e3ae1895c7834a57ae0a9d19d1d66c11c4e70c3c81b6ba4e194": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e237554e4d352fb86c397c9426990655d36dfd7f45ad773e086d633e36ff9b1eb6a55cbcad5a7a8362513263c935f8ad318b61fee3ea752fcc424902bea77980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c523b961acf5084e88ca628f58f51c135811c41a1802a5f98f2c0ef89f5b6bf61a4fb2e1ec7f7f66696b20a51ba6ea639e76137f55da49cba1753db7877a54bf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7945a92d2128148bc9bc660c06b03e18aadc4cf961d0039ce7c796ba26dfe304b3aeeadce81c1e034dfb05c63cd0a508df857a2e09cff8326272d34148528c0c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62638d8755bbd3568fc8ef8c21e5c196653e98c21a355fcf3195da0e3651ad620c9df4fcef0f1555a95adf031de7a466be064f9324bc8aa9de013d1d2fdab76b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a630ec5cd0bab0764d567c592c7b105828305c34ad3b8fe940379712e9234a20616d7098da48a6d782ae1fba3f57568950c5518002f5a8f469ee1594b05f6148": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "af75f3d8e176f9acb8eb08072022c44b6d592d6e40237a42dcf1e9f7068e248ebc088b151cf5c519451d42af82f28dfd7c81a7c6d709f499ac0bc92681ed66ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f01cc666e1c432cd38230e9d74b15633f599ac13bc959a5345cdd600d0d6f4f0d532f74e47a0c40580432cad3a258aa61df6b43e60b322e678134dbb0f756a32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a530d96a3c7c9526801d3c9312cb8103b330f67c58fbfc7cb23808b93aff378a391cf6a27341b1c53b72d03c322257dbe0dd51d8d0aa8200311cb4c6d92906b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "531f4838ccccdeafa0c98eee6e8e9075bde8dc1894c7f803878cf856adda6a31a978391868d1f84e35d27645c3d548e7cbe3fba0e8d91fdebfa59b915615a79d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ec211bcf1bffe068d042e9c481441f64cee03ef8070001c25a90ca6c0893a9482189955005093a43c07cc2f20aabe18810481fe5b9c764974fa54000ef3f6665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "309b469eb74e85cc58a50c92bce14707cbaeedafe87db618e6a875024074cb58ab1119c9d6c94a807a2537554479f01de0387062756f87bbab8efc7398827f35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b8353ca928feb7199d084b8d497fa62a9381738de8c7e084b11711989276835ebebe529427ec89c23f2067505fae59a95b5b2e7e2dec2727704547e37981fbc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "efd99f1de43c441811a87e7a24bbc595af458170bb0a69f0f26144bf3b1794e84f9c720712837e9914a4eef05d8e97a45b0902c2304e58166922307e249c4777": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "109b57766aafcbc1074c843b4e3dfef9eec0fe7a91f4dac373e1bf1a7ad4f2669973c0114ee8b367eb0a92bbb5ed66aeff32fe58f0466cd95c3cc6081a45db36": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b6aff81dac79cec35745c9b51289b00265c929e17cc31b5ac147a4b6efe74302f95abda8ba331cfd7418976380047aaa795ee94f9eeed9cf20be8a6141c95ccb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95cdb3612c37f37f338bfd296e8a85ffaa054e6588d7bde9d5c0c4d64a5a3a4e95204630761ae571a2e4b92cb1c848b01ea590aee71bfc8e5ac9a7281bd1865a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "915c88a927c639623a1288b12430b17b4ddb159bb8e8b82b60cf1b7e3df0bdb7ac67e5546871360531f53aea6d640a651705aa248407a6443ff7566ed610b1e5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3da89c393b79d5d1b2f976073b06760352558138378441da361076ba3b2679acb2712aa97f6e1326d18b5a44d4933735437d1136944e975616b6990e69930ea0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9e532c8df5beb3adb2130d07202e6f98509391e1f55b6c3f30866c1f598665523372e048df59a4e04a456fb3a120793f63286d48c52a0475c15c3acec205b62": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ca31755a2eee8f21e895a4b48076bde3ed27cda3134b799a01ee061fbc5dbfa5f0cde3753a4206e87fcdb3a8e4b73c479947518dacaa913daeca3cf0abf41e18": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53205636e143322ae2b7e4ff83317eccf24089f12e5a27967d0d40d25f55f3e4559cbad364495c87712f9d28bbbe28a6e0db373a84903613fd0000aa8e68e722": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "50f24c8545766e39e7c10c931ce4b01cc63a90595ec653dcbebf5077b3e62f585277d00b1ad99c74a2c656cfaeec855318b363dcaf1bee8d188f829aa5aeeb74": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a562b113f449520327a8f64647be83e879105522af101574637f35ba30da0021a0c10baa52c9fb367a695e1f3953d2a7621fc3110c5066788552c8205ee74ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "74a3024aef1382b8aee19727df430013bcdc33d3c4c14621650a57f1f5f9a4966c8fc8eb30713425e9cfa9e21ee4c1e9ac0d2f3399431f8c37b6251aac627d9f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a53af4410cec68b7db8e16b26d2280992d179681b1b7d4ae0c3f3621ad372c71608098f1ebae638695bc11ddc7d88987d76ea5ac209cf999f5fe0aa360be910": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a54f6dcdd3922b5efa4d3b34fbec83062a7d586f3d18babe8f3e2bd090b97c99a5a1aa87af833e1476ad2514f595cbde1af1afe90ae7074096cc59006fe6b1d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c8956cb95ff054df7d3674d5cc8a1ef3e6d0a6f4cc45e210d69e1e3bc3da46216d7b1e56bfc96197f26d9e2a2c0063b9bbdf337ebf48ff0e14b7e730879c359d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c7a1ca97215648830e2fe68fb9e194ee6c33397385d0e8dcee3af55b2bc6fa456050c52ebe3746ef666f42ca1a048e62bcb1d2bb277e36b57d60fa8bc4f12e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dd6d3670d656b53018a65bfbe9f6deec954077ad0810cc8a3eef78948dd5a8cd6fe48233a77b5df44a27fcc34b9760ee902ff73922186485cd157f2ab57ef6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "07e8e6fbbc8cec40302d163907d2378f9c50737974d699d43ff15ad902eed8c3d9c2ad397dfc5796b063c1b42c6a9c2048136e0a33fad1b1ffc0f6eb57c6a1b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "289f46f85ab67d8ac95a7abf22d920a4e946e4b0501fa017369f571971425bf4c4172374eaacb696f2f12631fbe3b2b079b2dce469e90a610804c4ac8b9f0468": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "583fd76f558da604f4300d9ade2a735f7e6cdad6c56cab1f13ec99f41a592f9f9d174ff98aa9678203e01ce98054c82841d4afe0835ba8bc1fa4a94c55e1a393": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ee963a079feb9c3dc9f6e9d39b95888516e05f874f82dae39936738677fc349d395ff170a50914c66cd20a47ada094495e637554483a0de84c45ee31736df0ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8c25c5753d9b670470a1951a8efc777e42ab6a84ee910d515b9b627aeb388a1089fadd60fb53445d7fc2c20fcf8b150429f4431c39e45d8d6f9d328edd5e796f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d69a716049f4a479d340eb3c2e9da12374efd9342116f3dc021454b1385f43749f28c2050c382e529308d9956e4f43fe63feceab5822a550be2ed182430ce510": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2b704dc2de3baac11d8b24fccc299091a532c4fbd5580cb1dfd17de2a6e34118af97b735835b9a10d33c55242a3126b2a024e696ca39f6ded2e1976e3f86cd3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "59b3b392e1ec9fd58061ca21056a716c47132abc870d6b3dd7f25b95a64c0a34de19a1f64617e68dadd9097ccd7d095422c134a424ced380425e2750c24cbc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "602df81df1cf734a958ef211d9e79929d1489524918458514b148458933bf21cae44c0f4dfb75b3a99a37fcfc3cb32e97f90bc7b215fd809c5aa6ca924f07b42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a18baa6052162c73e1267465b26ac54d8a2c456c856d26d37e184fd4f018fe6e2dfd6bd7645e4c64c875d986c4bee3489906590802a4198c0502063ff3da4831": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e8ae7129fad1c7e992bd444727bb100779962c16c54c84778d903fc11e6ad32fc4d5be9a67cab79b28232c920625791fd695c9aef40da85e5723a73e6b925758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9da62500215fa996d9f9671225f3dfbe9c71a23fbdc86c5b09f759e79e6494e174ac094efb13010057d782a891d5f89c7db6c330a0f79ad01aac2a549bbedf86": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1b5f4cc791d6c5085256c94c70d8226fdd7449cdec3ecd63eb45353030deef50e530d65c8343143bde62e6cd0ec5e1c7cc88c939022ffe7a405b260228e0544a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "072a7be5b193bdc2e4ed892b93fd2c6cd50dbf37a18caccce709221693c4530ae80602b75b7670dd2938cea6a8af4b0d144a5df577d9dc4762ca882bbbe1d5c4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d00a0144df585c85599216ea6d1fde8420a412ed526307586f489b063a0fcdfccef90a2dec2e99bbfab2363a0d8d7e4d44f8d3f73b070a102699821a8c5ea667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf832852c2d9e472ac9d67d5162fff1a2389223931737727ac8c5af89918a0325de8ace432ab680d2973853d582f03937a7938169e67cfcc682a62d6898303a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4d4c9cf2da542c6de9182fa751d23e8e8e008db9283deddf240b05eddb5b413ef22489de884a52f590d0afd91856f5b03c858ef71fb6325bfe50562c4efe5ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5d07973499aa7868d074ccd009d99e27b41a79b8d69d6b991df64e8e08c17caa5e5b785d3ee83609c3c57360a9ceb4ac216345e9affaf608ea75e73c23564255": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8a7274c4a6655a79a62b9bb20ddcc51b18364dcd08e06973593aecd82f891354b350d92cd02732b5a606f2baaff62118ba49f7cb9e3d6617e444f5dbb86a0139": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ec1a69c7f8c5c6ee12e60533cbf0ae4d87ec2325029ce64f80c34bb7f892c3ccd446e422511ee701dac827358838027ebfdd806fa4947ca06ba3a97498c11e78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d7edfa70907ba376ce59eb59e5ac047627b9b322c39b662a7d40e3c31c6290a3d7b130b095f983195b2608809d20784a8355c03582f3673a0fac1b84c8ab033": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d68d16bc99e19f7aaa47364baab1893308cd83bfdc9d0943baca91d2cd7ac463913536e1c08edb5e78572c6c0a358c56462be2a5d929af84a03acc5424f8da41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "837fa39dc9a9b6459d1018ad70d0647269deebc31bc5c8491aaa70a1e85f1588d7c48d47d95f12369a2dade24108459204e2f9e8cb41ead3cf0b8c5715dd89bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ff44ddc64ba056af211a6ba17601c9d0cdf45220a3af646815c00c2b76355d634b07f83b4648d0a14b516a15c7915a1023f0e67af9171b0fbec1b0f4797c0ff6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8b006037edd1961d9fbf205ae9473f464a07b3753cd1d7ef5bf0dd924b805855021723ba4c6e62d6b47efb91442fe60a04699fb305c7e8de06f31936781faaec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "289a2d0969f108eb3362a9c47b08ef0dde251aa97e050315a73372fb56d136dd054f0e705cf9c9135d60fb3b9b7c0efe30ab9e18f2ba57f513a38531970ef669": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d7e3c519dc132901f4832f3960a0ff47d7e909e0f97082d528f0791e42bb027ce46bcdad23d2b1ecda1e5bddaa4f012a560c3265ba5b9ee9e4cabe61ec033d38": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2906d0aadc5dcf373b10c722fa0843624874cb39d25c81543ab39f21a96c72c4b4a048791e80500695a8a0b84cdfd4084baf2db85c7835d7ecfe1f6640c3d628": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dcb282387e4c7836c3610106b19cefc8821d5c6ce77c84532bdbd50406a10535353b3acd4296d96d5f509fd26a62f749b363f8d775b1e367bc83cb0954405733": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0e6d607ba50d812a669a922bd78be14aab2b24141a3e15390c0706cde32aea4909a0476dcab81adfac82d94ad45e7466f2ed288c7a9a8a79d47b92ad65d9d6f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "42f0af60cd9743454e3c3436f0caf10c4930de6d1544817426f72b77ce8acfa85cec49e9a4e733bd33d185211423f61c95d09ec0810a67f1f70357e04400974e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b069b487e0e068627940e3b89846a5a9d9a301df3d953fd6bebd6f2a32a67c5b1637e2fe1ebb8d90171ccc3ebf6e29d202f15fb878316c85e67de3599acca68": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27426d414c5056c4ba4d95e27418bdd2e8812ba8a1665a4fd262175e5861ff8deacbd8caac208387c404ff3d3e513f6c8cfc731da6fe393ae19cc01475907518": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31ca1f01fc29c49297fdcb4abbef1a50d5eedfc7e6b5a5fc4347bdbc49d8a6d3bf7f9041ef9485c9053b027cc19210adc96492ba9739c06c707fcb7c5640eec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73110e871faec309dc31ffb901c9e765422aa42318e508b38f87cc20e06479100f9c597f17c26a19f2cc3f262e2bcd83b4d50d11dd8a6821be67cf701882faa0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c99232ae9ccb87544fb8b394c1848833d25228325e050a4cbf4ba62c7205071759dd0dc0a346aa07642395d625c2706c23d5acbf51bd36a638ced516d2dc3070": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a658b9e7c0081b0d478c6285cc353fce6eb4063b9e8ee8a03b558c1b0273f9d914a78ec8a567f801ed04c86075dd9e1503963a50f6d9ebd5e82d158e86a85a3c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3f0070524bd9e319382c79d3d0549015ec60bc9d8291af0dac2c160e1bffda950fd0410807ac6b110f60198d80d0206fc8296721a512a027b2071bf59a33c1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f46a83e36262d8878157354db8eaadf6ad20ca4a83852e3f01220fa55ba1772e0bb54f983ba9e29be688ece96a82e04188b74ef3e1736b13b9f0bef105221ecb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3cb8c54eec3a5fd9ee6a09126632772e64c3a33a3f38607ebeb8f1c4248ec1ac7320868312d30821ba0eb83f21dd69d9624c289d1fe1d5732300a0fb0899c563": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7b239494d6f27fdde3cb48e0db7735dfde183237faa1723b3f9b51b3a8b25d8bda562164d53ebc29ddf1a3409e003568f797176ae0b89bdc5d16b5ac8d290ab9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "100e899c58747a79262183a60e9b8dd326406e848b423f25fe96e27e245ddcd103ec8c44646ef6ffa80cd2dce7cdc27a94909ae8c015554105cd051d9ca875a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ee75354c2e9376ecc44a54b8d1999fa24932f4326d4ecf783a32e976f5b53048d9a964f0cb10a56eeaad3e9ad04d551190660ce43170da5a129b93b45670f94f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8e19d883c26bbd6e9618b111428ad354fb3250fc929a4289c6cdafbd5cf1e93d890d014798adb473e3121f42e53bb2e8cbf96ba636f47b64aaf2892c998ee307": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1004a09b684a07e88f9cc1808ac87cfd736196842865ce3047ec4536c9a42c111b741396e7c50510a77e2dfa47d043455f1311876b248cc1449d7962ff0b1c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed5bb42a3fd7a402ede71ff056fc026e7c943d51ddbebfc2738227027078a9de40662ff927204c33ac537cc6c52739e69d1ad311da790b07b83145dbcde89b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d85374b0f9ac7d6ffac5d6d3df002a57f7e66df7221d0b549f224d9f8ce27a5499b3b921af54b8357fc92bb3bbefa805529ee03b5097660ee9c77441d0cb710f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "656e6cd137b60fb198069f2d595772fac6105f450306a1906af7ed210b08b06d0362246426dd97ce6db0530100adec8dff4c5e84400928b8063d02a97f86de60": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1ade4bbcc089312792a4a4df4d67c5f8bb15041c955d231ab42726655a4e0bbd0e6b455b702764e372073d65ff42f444a6a470adcd63b4f260f933e2f66601b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0154b2aa62c19471fe3ae5c7db33ea4890c4fcecd12fb34fcf8b7a49c172d699cbd5f02d247f8223dbefa66a8eeb7efed212f26ecca590651077748754e73a4b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05459b50da19a1edb81b1b3adcd82f8d822dc9ec9b89d71824755bc7a8acda6ef480cf083cefe4b85f79bca3aba6de8f2faa4df25ada6837e914e82371064e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1717a8a964a01793fc3273d9b6b6c330333b409443448ba78847f88351685ca5acf7518440871a446be50f1d473647da3fed3f15824ebb44fc1bb40b08a74324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e53e59df2588566269810acd45f8d134da7ad33d503f743537c6d250a5e2ae900d99af63c29b7f609eb878363ca5c6043c5e78b7d68d28cd6c2b78eab8fa8de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "840570a48eb94446a1ae1dbe9652c85ee5668357bf811dff85b7f9e440d00829dc0cb9da7417af53fa96258df31372ff46309f88d085cd36e4a02ccd3468bbb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4ce9fda813f9e5b200bfc218ff543ddc5b11d181a6cb15e48c0c0750a912950a13ae531de6b11e7bfcf4827d41acb09c9643218b95e598b002705d3382e47f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "acd798a9ef690867c4c2791ec46b29f97e21c08a0114db5aa3d9648a9fc012326fe2770e479e2c2a320c6134f298bd89cc38c5c7943e527eb987e717aa8688f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d92c8fd96b0e80e7538e04ce3996d903a09f304149154b555c22d61e497bd03e23e0784c36a7b42c8a1bd493d3e74725a37e081d3138249d47d056169f65521b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e46f761569a2fb39c8504b776049b4fa8b2635541af3a92f613fd6ed2b1a9a2bb99882b2930c815d8a7c6025fc69a7586aa6b784a500484a1103b4f566d5505d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "41caa3d6aa755e7dfbdd17ed56a8b3c421fbd0b5eff229d116c3ed9dca9cd67ea4f97f91f9299aafa66d32d3dfdb9dbeb69a45415e7b79a501bb30d48ae938bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61c5eb75f3cb707b5e58d8e2bf2305fc1f8eaa026e7f91fa0cd267b65dc612ecc0d61ceb68a90c1629eb3d52ef4cf6e87cd7877460af95adbe4c12947df16eb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23594a4b59e8163113949d557dc38ff5ca77e094cd411ddb161eff13de1e1e2b273664bf2ab6d906638a4a1b40889e36a69e8debffa6a1db677a5245f0c6b3ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d5634c854db1a78559879a37dde5dbd69395dd611a5599494b2afcca8aff28c19024e55534a8caaccd9327d376d0f83e2aeb9b55f0479fc0ed832110c9eca27e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9a3aeb283ce6c8631c24dc654433584fc1b17c93026b59d6e53a38bf69407068a343b378704519cae93b4f438d12cb893bf0c7aef1ad283e507b7de7399c80d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6caa7e9073e75462323452b225dca0187183c10e45ab574b5998956d46ac27fde42dafaae500f51d953c378c361c0fe6028c282440ffaff36890ad178c7e1073": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31b0111f0dbc2062715ec955621c7d31aef183fd7c91b849368a33cafa468b063f9236f56b7f98eec30f09cae6be45e3b3584b4a59fb12603478ade5a1cf1485": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e019c56c96168f01b847fcf909c6896350cacb9d650cbdf21be533501d985bf9361838dfeb85792634e783122740de672fbad51c464b97f8bbd3c8eba47a992": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "239a3154c7649aeb76fa45b8d9542bdf8d74c6611ae01c738d178012c59bba051d27716295bed967e8d88737b5e41469a7e18f5ba2a8fc5deb20014e2f4c8a30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4259bdc66bf7508c953e556b27623aa11ceb02bde1295b712fc7794507b1d2fd17bb07b4aa45d7fd5aeddc912c931808fb37c774123e78c8f66f93c55d79eca8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2209d4b0566978fb9bcb5c920fa6ab6361e8e309f28dd278f9c39911814cec9912d102d3dfbe52c8efb287652b415c8568ee2306a7d3789b5b6706d320a3cc75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53881eb577217a1d34d34d3b7a13295029d369c23adfc8aebd6cb9c1885963312744fb90a2ead3219c33e78649734b3553eb0dc30afbbdff746d8f8543f61c21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f47ccf7581b9bac00e18597ecb9d398940298cecc04a0e41d9cf9bc10b039a73ae71fa645a77fceb043facc618d64a80d753b02951ffd2190db75df300c6922d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6dfa2902e974364b8ba10670c44175aee4739f798d28d6c051c0d97d2a792569c8652973c029ad76480129728cfd25ccfea43ca07510d3de8368a50230c76e2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "54cb3f6c3de92c0a5f05f6b6e41d71bd5b507946f1bfd6dd7c3771306bf67915dde11df3abe91250d95d254cea417302bb325adb3f03b8b2736ca9d9694470c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e0f0313485866043c36a5c67641aada063e7f1b534ec359082cdfd035b52c76ad678572c482d18c43b86a6213392daa63dc97d763fa8c03761c3b4821de58bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac49af0719a2bfc544e7d57963032d4a6000858b4651bc306753fe9978387fd13d333c5f122e9b1a1e608987f8461005b305e9b05fc157b0f608b0979d474c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "eabaaec1dafa57f41d528e2900bc408b9739798d052f21b512c07e66fc6941f0508a7ce1c49660a283692796c42b8fef2f1fe3f8d2d9e66d1a1da989120ab6f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "04c4efdd3bdd36ee24011d08983ced0aabb3997d68e56ace300ed2ce3cf5d73048e386fdf8c64e563a48dd360d7bee278803a9fec1ddefddb89e9f7a79a42c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f1f14d156368fd3eccf12f12892ebd108694e206dcdf048361a0c583b0d71b025e3e3aa44049649d4c49ef0d062b4ae4cbc6962d7ffebb78de446a769f5d432a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c7c04aad2dbf135f464fc2b8d1c796ead1b3adf454447f4a48c2e334cf4cb1b071cfc14d7e81749bd3b66b009b262385ac6e2f6102a69182faed90b2955c4665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c771eb3ec683443c6da413ef7e140a36c8becb94c7585d9b9220e8f1740f0176ca668fda8f6a92ef2033ae16443d702e5c3bd049b292ad4a6514e54c14283b41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a05d361c587308116f5f6f32391cc420c847983d227b271e71158b50027e359e15086049c792c0e00e73e5bbd34a9eafa22f2fbb081c8b781dc794bb83f8219d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f7966ffff624938736e997d7afe02c793174c27064664420ce4d452293ff856e33fe656266ae13e10e2999db9e3d2b1c671737409baf7b3667e3e177bd51828f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3df393fbdae2d23b4d90deac3aa549a115d3cc93023e829fddc3b615816ccd383c5e547789480eb61ab794e1aac3eda7961af6bea17a050124c4498d25e30ec0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ea321f9c6767d453547171fbf1f5a052fb8b7d3c87573868756d50e4e26ca851277787a8c3a725cb2c2aeb304867acdb773220ba1709ee28eb033d8e9053895": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c560790071e698f46dd3f5527489e9220fcb020760f619fdd826d0e56e25cba2448bfdcdd5dae1cd89111feb9bdfba3eb04af580f4e74d37e2da43d31408390": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "74795dc5eb3eb3946e4e31f603bef7083195e33ce5fcebd4b80dc2a4fee8681b3a8403cda4b33db4ecac00f30120a215cd6d2567f738119ab466b996defa16da": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "849812ff06edb977f89ffacf8ebe1a25cdb8c14445cc1ad113e3cd87a0aedd5dca3de8691e9382b8c2f3816eb07fdb59fb9be064f083175966fdf6d3a2e65b37": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "9bdc5bfbcad58c699033d75eb81110c09edfeae8080a8fd447e446147e4c29271c54a663cf1f1d8c025d10f3758d0be0c6e2f7c8c54251e9cb491dd429387dc0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "93535bf3139d0aed129eab3d5a158cb5326f4e3578672a0492a3de0dd61d6c03a7bd2112e72ae1e97ae367f43a85ec51a14418deab555f051ff737fb0e218284": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "809cb83085263833477b4d6c94f7aa081dd02cd05d21d70f1fb6b516b0e1a19fcd3b9dcd448e000b0e47ebfd81146d4199092a27554e2a5b7652e8941c12d3c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5b23a99de57645578857c137cdb8733fe5a6954aa0a0857a1b91f407596d5df53a588251045a0d19e052a47695dfbb623010979fad4dfbeed693a1a396f72682": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b59ef97e1136412690f19664e5f755139324b7207e2c9c6842d60a4fd3bd5935ce97b4d394f1c6099f87c5896fe64bc5544a2eddbc560f94ba8959a86fb89cf3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f9a6c5b072992edc7b6081fb3bb8932656b4c6787bcd19fd6f945aebac4e801da3b880006d4df59949b70c5d3ff62240b72d001e83843bf3e15d1527b963688": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "04fff30a9407ca15f4b2eb114c1a3ac7bdd9727dcc775e31dac162389f76d6029b2661ee6d1526494189c419b110951a210dd966d0f20da765f5a11d35c48515": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "480f612af500abf983649481cb6b7c55ad17fab9a25e477e08238e2eff052501f5c35515e148e515ace49b241303b1fc2859de26e82e8b024535f04f87f481ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "478529d597bfc53f166c97a590195511646547ef633f256f19b045c0141d2abc4f72d5d0374cfd85cef066268fb15a4436f16d70340808a301a52f6330a1755c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aa305aa7a9c5d7d77f78be9aad76b8b2e431d8db6e7e80b443fe83cc2d6dc18c607ea6bf46a154bbc0f0b9dfdac140a4847d7a57a396025cb6a8addbdf98a62d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a070a0691280ec07bc3b82c73053e3a856556b157d4db22b6ef4c3cb60f532a49fb1e0b6f38e0b1729470cd066164848e81e99fc605a3e55537f33cf90db46fb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0784112bb6f8a65c8807af814a3c48177b940f0ce1a9e7ed90e51d5de985772f2cadab4d77b0d957d8fc1e13ef9c21a7e844e637c6230cdd6fa824101d731394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06853952ca58921791a7323079a55d159a5dc035918d53d2c3cbc1ffe5b408acadcd68c6bb241433ff1ea3229e17fbcd15fe005ab47ef238e8f09e69bad02dfa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23723444375e8ecb39faca010c1ef21bf6dbea785be777aaf3838bb4b22a722526c13eb6d57eed391ac9296f674deb8a09b7b3299a20f1672dc9f2d51d3f7be8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb4897379d5e0df6b5d9ca06dc0127aab372efc8e65616557e0c6b4dfc57b1863e248cd3a627da892b97812e435bbebc4651ae617d7872df36d706e906db42c6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c09c33d95b18a08a9ed3c7c08d312e46302b46d7017fea25a7ab1f4131a7f0a18325544aaf078fd6d2c33eeea89a27fe9b413ef503e8e4aeacdab63c5abde20d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7b0ecde7c59ad97ab8b522ae57ed840d7932891f39375bb2ba20b0a9fdebe7d39bcb89cb9ace6b43f0c7f2a9a1a83ba0e63e5983d959a72aa9aaaf9fa2d9da7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ea12f1ff8ef0985e5f147b988aabd9f3165b1b8ddced968dfab73635dbd29baa62a3ca7dd33df35f1683fca29ffecf18e75d256b0b49af8c109db22b00456cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2cc2581423b4ab037160ef8be7c2ca9f2361b0661787b8635dedd0400c234142939b257a9cb32b78a476076ea9fd3312db521081b6134f8560c5f62b6918d3ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4f0de1f55f78cef6bb37f78c9cb9580a824a6f057cde7324a25f5a203044049a6b826aa56610058c3e35b52e3d117893167ed4088814ef85c81d55c662fb89dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "de1fee1bde0df30777a4b913be8b9aad3c6e44f8ff1ff19698f1debf687cf5971a11cfd3bc1c5c7107adcfd62da97829cbb1a8ec2115affe094684b9bacccf56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "71befa4c6a9e2f6cb292511bee33593e3c73568aeb5b1f8f6dfcdd325eea2b3006eda7623bb1d2fdcc2318001700663240fcb33fde53f243a054d256bb2e0094": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "499b34a6a18d76588cb37a8d56a6f8e202ac388de98c739b116b94f71f733d99a7a39446d8be1d3790d05d19528171552426ced0fa26f3e190f1d6eace07ca45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bf3051e8ba3c1e0bd6462f066953394e2ad88899cb41cc2596e1fcc8143bb640dd8f427692145b0da35e4df60ccca8ffeacb35c3aea743fb2fdaeecfe2b4e2f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "947999a11a296fb70e2c66d08829bcf2bf6d53a7c53b65e3a4a52dabf7f0fc021a8e0b178e58a25815533e14e0f64f70595b7c490c040e637f393358c94dd63f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a55a5d76506ec508e0156e0be0893ef0511bc34f6fcc9fc280b2539228158872a2721b60566ef99791575d2befc21b7290ee9c6b464c47a10b15851bc4ab133": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "6b4f92f9bd51abf177f9a16178d8122984b76c6d4f86826589b8f839f130082ccf6bfbd14dd02409aaad2ffe79fe38fb59f440a7c1c27c50504b2b494c3635a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "b788e0a3b977142114d7a29d812f9d766d2da16dbe80706fc29826a28332622b79a208b7c45ba571e0eca86853540d7fd560fb0a94731be200d0e84c00995a74": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "7103849b94d4f54d4c591304ca2bfef994940582608e6e42f14ddac5b0cf03a1333a0937dd2918180b509b09fc271dc307a82723c31a4459004699cec098a543": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ce71693626ce8754c81b55b0cd1f68b26f48ef38e677375932d86c7fd0373ae78354a67f698c197f18be6e3cf417a933fb651170d7513a1f8b52b002f0042d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + } + }, + "deviceId": "FNQVKMHHNV" +} \ No newline at end of file diff --git a/docker/matrix-bot/db/bot-sdk.json b/docker/matrix-bot/db/bot-sdk.json new file mode 100644 index 00000000..076e43d4 --- /dev/null +++ b/docker/matrix-bot/db/bot-sdk.json @@ -0,0 +1,5200 @@ +{ + "rooms": { + "05831a4661e8b7029c04ecc286303b5039c3e19484daf4188858f510d5d548dff398fe9d643b55485fc1e79397616da8ebdd7989b2cce30d8046e5167c9d8ef9": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e97ccd77ac7fb99a139750d3d62d2c92fe679849873e7425aa4af47f364667d2fc350c9e93f26e2154703c0f3452214837da0295b1df118eb2c9bc23b8b246a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2bdc17d30c4b83cdf62440a95547be4859262d2b3ccaa38e5aa3fb7faf4221b9608ccf01fcc566ba45ead79048414f3aa124b38c8cc29a22451199fd8cfc1481": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18b2eced520d8c513680488575d686fff25cb91dab6d5b1716218019b5a4cce9b0c190b5ea452f740adc64586791dda7cd64262c0027fd5d305eb098cc8b17ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba64ad2e5048e4bbfe879c0950ebcde87f154094a7a97f179b096f84bd1c57fbdfeeb141b712ded374e3f1ea62c072f08c467b8ee8dd41f9a5c91eb632318e88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba5232186e4a7b396d4b744b55f99decadee2560b9ea2aea72f7561f50ab791b54aab795bff939f391dde414de049a11b10ee7d1766f90e19a0aa02921d60003": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "466ab9ad10e0dc7fdd14e2baa73865eff87b55d33587df8226fb1e26d05c7fbe36a4203d3ab45e44c7c552813f97a776370151392ac8c17c185301505792019f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "495ae1020e3f0def9d172a4103f6f415b6a43c7b81c65ed3d6bbdc2502143cc0b581201122b74d2e955b446ad9c7d767cbeb360d0fe1582a65ad8f5aaf56b0db": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d112711c07ec931a1dd2972734d2c924a04a4baddab8b4821493ec41c1400d2b118db1c7e23c22fdf2bd2d9b83103e0512da7bb38e110d3f0e4282ef9315d386": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d416c086d5a811ddc7f5cf9c109ae4bfe453435944224c8705b461c730d1b7449735678907252cf94956729a008c841636d9bdd6840c712b32b47d5a0d0f717": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a517be88ceba0322de055cfb838f4122756ac42a3c65784c4389c290caaa0a895d4b8a9336c3f790dc0744ce2d6a26e3b65af7ecd63ac665942910a8a6fb2c9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e67d23a3f664a404d25b1fec0c47d5dda863af1c43adc6838b3e7e8d7947521a4d22fef5198dee98fff00149df40aed7b83429b551ff232f3e6848322845b9a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "133b24766be6dc9014e7e3e6de2a7f30f6ac2d09ca387adeaa39b047ebb2ff571d5dd70b6dcb230734654e5cd56f956f7407a09824333276705a8e699b538d6a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8491cf8751911ea618a95eb3ce4c4c62388b7df3dc05a2f815d3102a4ec3d8e6e5e84445e6af2306b6f3b51cfaf46f6f9cba1960fd627fa064e4e5b27a2f3a26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2b2fc9b69a5a8b11fb210f373df01a49ed1dfe511c88f1b551a17630f901f23c1d9322bc4de490b47d08bcc4ac0946bf9b2367b9a125d510a34e24814715e142": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bf55c8f6e5df8b4f30c53392bad7405d02ba37fa9af6aff12cd3e0cc47f4417879f5617eb91f64d611f2aeab8ee324558d1949831e19693697df917525ba0cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "09ccdd640c7b48e7a9e763b80ad2c60c7e9de112f848f99c971a125ad17570f8786d2a7dfc88c7da557d2e13b309834289ab42dd7f398767c5b7de493627b1a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d4f15115f8d55884ad962d1036ba6ba170ebab5a090ccee4e896b63bc70600942e8cca9202611ca1dd541a5bb185dba3d26fabfe95eada6fa655eee7ba29fb6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "182a525292a71b3da68c20fcd7170dc139921f9f1b897731c79a668194f351bbf6cab6a84dda7e2a4e66fbd2b5121c98271dfa49ab9908b5eae37e3b842a8fcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a5366667d4cf301848eb370d59323feb93e4b6c2e406d706950b69a1495d7f1e0b8e62729ce06de89cb25162a74ffad5f3fdfa58fdb003231fd9bc38005e2df7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3bfde078d31be7381b06c0bae4a1896c0cad8b97a80c4b5d5631cfecaf1a642b16e2f3ac4cef2b42654a719989d5037de17555e732591593fdfbe38b284348f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c9a41e814bfbbefc3cc9cdb7151a0ab3216275ff2a42bf75fa5f9f5efc01366b79f61e42c95fa2fb047d9c5ad7894389aa926ddaff04001cbb72b2e0a7c7f5a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34f5e181cc810111080d26db282a3f682ccf04d1f5224ab2b0e7ff0fb216138c45f3ec80b7cedc31d2742b31339dca6ad980677f0015a4892bea7a264b484d51": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c5544421fe666d77c5dfc17b4cdd7ac6b51d589587379308826c9ed2e2f25d80607b98f7d7c69469b334fbb52d4599bd835e5538e9cc72ec2a7e63b918c5564a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61e523380ad896b928f11d347e1be83ccd731b404373f68b54ff08c777e9289a8a48d684da221b203f384fddbcdda77a5680e810b9ffac4524ba6a8c6faead06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13579d7711a960f66563f8698da2323400b8ac5a5301680b8cf39f626973d3481e7ce2d6949ea6aafdfda15c8753bb1670cafef618713700f6f0acf152746376": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34de4fcdf0ecc56e2da3fbfad858504b89a0d14bad8719dc52fc6cae56875631592360596e57604c6ca47e2d66d01b749db41e9e5bad7ab88e824bfcf0380e84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1797a1a7cba96fd05978ef270f296e1b95617b7e5ef84d29f86f5d4c535872bfff8de9cd25345741203a225c5e7734ded0ddee86f234786af1d4d3d307f553f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b82635002db15997d6302ddfa0c0691cfef4c4a97ca680bfff67893b2ad80abaa3c4b8e90358f05e594e8edddbb91e4b273cfc6d9a8bc2f8781101b5c448b3b6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "056bd4207f051bdbe445709debd85030dd0687e9f9787a50e7aa9bea13032c96db28eb6e91bcc957f49e065cf442a96dd9708164fd6482d4441257595438fe97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "97284673d68a6d3d4f06bbf0abdc4d7597c94a20cd30ed8d10d9a43372241da2c3b880a32ec8b49e4d8152bdc7f1ee953809aa72d89a9ed1f25f42902133343b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "692fa8345988bfceb63d925cd7191aff34ea825a98f5494706ec9d798ff70fbf1ac882c77fa5fe8d2fba31cc329494fbac4b516010f241e3c1c0a28679292c43": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7ca244af035542b87a35b8445242be291579839a14e9499ebac8347cca6934bf3df780b280377d421dd7d41123cf7d68c2172802a8dfe988ddb3fbfd8647e3f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b53b36895ad0bace449df62cf006c9d31428bc67fd560b3130f9dd83929d29be8d84560e1e8aee4d651e35c1b00ddf5960f40f2328595c6a55ab6b6ee20be2a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "efece134af2ee271d8e2b15db94c93af0310cc9db9baad68136fe99c1f91a7efa7dfecc04678aad20f29f7ccb212be8bcfb4ac92b96a942305e50942db050871": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a42d0fdd275b9c31ab7c2b20fcfb7bd08b70944542a74785fec675030225d43dc99ee403da1e5fba1db88b10e37d5f29ef8241eb911e899bf90d73f2b5b02759": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "81b6085881e3bbc50b1fcfae555243431d4d0c9f67b3ab49f40b3bcbddfff05035cc34f05ead4e597faa2279786f9060a7b146ea2f2b3a5fa6be64f4a734e7ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f76668e9160e74a5876d555ce9031e52e3f33635b3f3ee94d82a684e41ca6685b9194f732fa671348a76b820e2fdbf773c55e408b29cec00326cde6bfbf19e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "496f85ad58c51ec57d4ed4b8abb6dac6f47c58a5a316788c0f9e31e47a95381d6a4e915cbd38599ce39f60314b9b67b40268aa7c934caf747fefbe5d2c7820ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e29469adf2917532184f887d2b73b44c1d858fdac2ed28ef05e9651aaa6a1c344f6805e69356a352d211496a634003b50579cdc4f5e087c35258f82b819ae62b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55a4e6216bd47399baef1fef6a77bfd9b01dfe9fcc0a803805d32b4a1910bc27394d0bf4bfd6ee3c2b3f78a06f253294c1d59da1eff6f2bfdfe6af297c3ad35d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae592f18ce1025f530a5a27a906788e95fd21a19ae16bfac1ec6855c3f80403a95764bc7cf2f4c2de96cd1f049576972017b7fb0727d8eb5c659fd8fc28b396e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e23068d83c3ec619fe7520bf3ff1da1b149e63600ef3dfdc5ef696b894152ca2ed42b9ba477f960006285ac58aa135d1a155710e571979c7817d67d04120f50b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "af3c5b90f34fae4d6a4b8d7ac95f6757e4cec575b259520341fd4d7fdce41d84b331a7e1eea90c690837bbdb7d5eb435e93f1e21524574022f0c235b1cab3122": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b9028fd819586717a4aced09bbca1fa7e34fd0bb4862a16b7ecbd63139c7926d241c5738bc080b30526cfeecaa79e2855fec50c73e9d00073dc86328379060a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "421ee22ae9db6f43c52cbf224816d5455a65aece315464c27dc92c16b4bf606089b78396dbedc1472081b5c18908c144150b313b54de3ae96174a91cf01f852e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0b05c3aae81e58abb1c06a1d96fa378c05ac382d67adf724f868789147f06da26ae9f92bd4a8152eb6764868f446a973ec1763c1f8d42ca11d727d41fa48b960": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f5266c049370c45ea0d6b4be081006aac1faebd39a5bbb1e6bc3ad81d2efcbd8baecfdd698af40173e5756deb968a136781a8419b8e1b47939516cb03d5ed031": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0ec63beb6e901d82179ece53164ad4be1fc047e0010623399b23aa7177856fd4659f0a7caa9d23baaebf3b99cb00b02e6bb604c685cd1d55ae9f6f6f3c95b02f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cacee0adae2ede4c6dfa512fdd5bdfffb003c7764ebc4f09bfd2e176bd2827f3569145c92bbdc09b3ca49a6ee143ac247eac05bcdbc0cc2b0e5f2782d30e4584": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e68fe711bf2df4a5259339fc743e48ae8dd03dc647f1593d7d1298b63742c376c3b06de47855494545b66c15522b81039a474b3ce9430e8d0445a7ea7b1dedeb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dfb49e8fec28c28ee632c977876e5d3d0f9242a579486ab2ce60a87e0bbd60e804adb5644a9594ebc184d980ae953783da9349c5bea887a00b81bdf6f4b56467": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e42739d6a4f2abb92cd535e8e76f3f7a6de02d5bd08aebda3f86b3b969708dd43d3c7077e2a79f10c1a9211c845c1e5f654a57ae7d2a6ef7b23863cdc10e99a8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "addd3d4ff7ce833869cfea5fef4870974c1f441d6dc9982a8a268c948c56959544672c5196f9bd0fec5eb8e4ab5cb9db61d68a62c5ca870635a4a1ae517b65b3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13e39b25328e9e59a125a4a42006b520baca91878b907be7403e0b8393e75e7ddcc3d329e5f6c52144a90413da3279c1c57c36dcc5471cbd4978e565cc0000de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "51604075ecbee5b206d50237cf2b60c91dd0d569cafcc7a6a8644c24d874567bb3cf30ff4f0b92dfe2a2a3309ada8b8a052f49f5c490e5524270af52fc8714b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1022a96f46cfc110172a1adb6f93d17325ee3523f7bffcb3f0e197d057038e382ced1347d0e1757cf63e5a81735b64923d0df6abffbd608cdf549bfe43e7c275": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e64f63c2094cdb8cee6445f0ab0e36f8c08a7f684248a7c668fe40bef02bd450bd0a45f5d76393d98a421959c10f027c951c104da994766470512134e86a6379": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "786d40778b508ac41655b3be23845fdd038af7981875c7afac1576fb0788d0f6aaae3889e349a3d5eb86ab3506450346a71e587e788c0decb7245cd49fa66931": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bb64b02b48641a6e9756760377af26f299ad4a3a31ab6b5e0f98fa9117a5b6a487d879fa88841da9c1735907f6b71e1fd8f93cf6fe0f1492af5b461513f5f84a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27adc285ede3b8e6159aae281cf20996cb07175bcdda1df15185247294df60e034b6c528ae71a243104f3714cf601945415863ccb7c670d6d21037cc45249667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "baf7b4866959e7a1c863683564012315231970fefbf3421d33e79734071be2046b0fa4924f0aa2d38e95b567f8d95414405bbd45a474751376bcb58e778dc7d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ec56d806bd46e3c6b2f79c64bb72cec732f3930084c9ee093e6b4dd367ea219821615d0e3610fdbaa029bd58b10cc7793a8bfe32fdf7a18e5f817374087e3f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c969fdb113b2a036854ca073aab1a2f5b2529858250718c8fe86b41c4a684e14dfaf663eaa9f990376365aaa946b1ad9094408c7e6cfecabdb82ed1d2bb29741": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b35b3d136ff2d108b234ec47adae6c3781b8d6a39b5f4eb1894a935a5eb0d5d36de7050d5bce33b44c0e672d28e71f9a50fae664c413c53eb97b267aa12d18cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ddf2beecf8fef85bc3d3ee69c53efefac6002ed091298bcc5eb3c63e40e92611670027024127f6cc3b86ff316f2ea15529b5584dd9fdc944382f5e06b2f188a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d91fc3376929a34f07e8b3861208d26409bd18832c10450c2f295d559a2ef074bed25a0313aced78cf7256414ec09503d5af930931573ee4b60b6ba03c63cd2a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df68c1c0f1940d1125de30c96a61aed7f41e7219d3eacef709c636f269f8325a5cf48125aac9d8aac4088e447249e2f7351f159ea81d6e4fce0441b56dfdd7bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "85618624e9861c61abbe321c977d88a930d422000e938b07b4ad95224ba0b42d6f718d521665e3c19a2cce71538c3df4d7b3297cd231225a6a24ac82c64876f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "defd14bdc193bfbed74828fc19c945dd33290fbb94b149720146f8a0637f05c82b4f37e449bf51da0d199e6c4b60551eeb6c4bebc8f85d3371ae1d1a97797546": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "11fb5b91c44907bdf6e6d5f410fd1cf1cb091f812ed91d504f34933b649acebf76ae656a71cf91ffcf5944818489c8bc9ebedd9c5818f01e07789ffa2c65711c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6040eae4439be923fbf6d797242d2041945bd37615132bf2e65425289e845eddfeed34ed14bba846caffaacd7e845b0a6292112b63fb9239efe4f4eb7eeb0a85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f5f013c3fb6e2961cee8455fb4b27f52348022952f1e4e1feccf26132ab4a7fe61a5ca8d227bce882130ab977289bc3fcbb194a70f968e2a11bbe9ae61594d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08ad64d440e3f78edf64a26da33e01447447f782d8181570fcfeaf91bc37fa8d4f5d2736a72927b06e67389bdb25f82631e2bd9ef65e473f1d11e0298e600dee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "196365ded1b87516710a4188b438ac3c950db42930edb8dd7c603b4826fecd5a90b6f51c93a6cd65ed6bb7ceb79b452575a71642db8b80cb5c1605881603da2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0c9d84101e5d75fe0760ea45b92e14cf371af94a0540732cf7c1e4d3077c81054dbb2407592f2bcad435c8da964ae7e1c788c967104959e02a9432ef7f784fb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "762b646466021ba6faa81528834cbf42159634e58212c414b7af564d39eb64e3bcd3918d54abcb7f363c449e48ff242e08be02cd4d83b3d0158aca7a01e932f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d36ffd427844ce30f42bb7e493ee81a30614837e3010442b01dc59061824fb8441a8068f0a53ad7c2f5dff2dfee9df463413900f90142f93d0a6391cbaab0875": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2eb01c6cc20abadd84070eb371c363ea5fe41c487a27cbfcc1c184431737da6ebcbb0fb071c786afb24de88da44e853a37934a38de5fafa576ea4788072a3e7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9efe50a858b26cbdc672c6f0e0d1ae19110fdf00008c202918d356996abed1226901f20053544b66c65f4468f15e0d0940020fa61cafad9d1b3e93153c541d2c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0104f873c22dad7a31c936cf1d51799a3f9121db67f621e24ba07f8cb04b799fcf04519051dd76b81ab8fa5d46c4be5e7b48652a70ca3428c68c70ebb8ac784d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61dee54ea434cd75287db3fed8856d7df279242d598ee523b2e4073080652ebfc635f84322d5412b787de4adc7025b1293b053caef99497b60d8970046ad4092": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5c34f1f21c4a85ba321b2f56b49b549f0e3ebc4a0cbd93636c83d962756b44610ca8f0637e27ca4472c5d66be19c9ed186548e3c0b394193ecf2cccf95a2311a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7ee1770a8b48ac35b53dc1ecf139f9e1d111293549c9d65ab21a6fc401966493ac0017457e35e85ac1f01decdd24eb09e55bc2b75a7cf62d3fa0c7699f155354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c83a24c7ab4519be64a7255c1b7678f7ba569636967b7cb0fa96819bfb4f037521d63c2952a313b2b6ac02b45d3738e4f48e0236b8a82d429bb356987fc06521": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b681ce3d38c3f54568549e3420e235ee02b508e8c2893b24d7916e7e1c769277ed3388513b6bf533131b9c0731e7eba3bf9959db4faef28442cbabae4686653c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "881b15d0c8bf61018ea4a13fad64fa9511647a1c59ac1973b0209eea903856183b605fc6c619bc78c0d99320a87f13c60cf6b2e833b83d4efc2a90d2657f2e47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7c04e49a1ff8c8bb187f848b114a7ad354fcd247ff832f4b8bb072efcb0a243b1030004f4ab2837588aafc7b71a369968e08c684889ae196a1a885762793abe5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d1e7cb40ea789b9472b2d1e787f07f74fb0b6cf663cb865ecf7ab3582deca1225009ef78bc10767ecc113550e0919185a894cb08259a1e2e65bacb6bd079949d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e07cfad390ba4895f8ac71bc9af9eb88cf9e7d079fdf6f33fe47f2e5d4728df21c56a4b2c62dbf283872f7e4cda0dda5a90b8c6bec85bb491b70ebf179eb4d35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3067ede94b4dfb143e2418f9fb5600e5ed32be5b0c60458e244482a67cf116cf85515fe2ddb28514043689711b6e8dd9c134b229527005478ef3bc59fd2d480": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c04772b2d094ca758de7f83e90ba2f111799f32be65252c3fab6fc279c19707d43965f5a725e8731da37990fa8d2d6448de45f0f98938cd2263259da6ad87f33": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e0255b2df521b5804b489174feae084f31cdf644b1d79ade7b88cce5b4279b6baed011fd3249fa8e0f152ebdb9e7f502cd3889cd5f9d185f7cac84d08081ddd5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c68cfd9b1b778cd889969303f53fbbc235fcd9ace1f0bd1497cc991491fa7717ac50ca8d160592a447b65a20011739abd2e19df1b98a1f191b2b08c143e0f962": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7aeff6be9f470fa8ed2da0ecffc6856e8ede6b1003da241843903ad331a35d6d7a652d61d883eab7ed227f63e39d997a95911911106f12d9d510adf5d581e718": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "786e8a2adf886f45be017d7293716427c0bc58dd593447cb7f7a6937334fd8349f1d0b42815c755198992a3f288c4d9e21593059ad5fa841ea6b6cd62381b8f3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "549b637f5a884e79a3ba18b51f65c7e29c86cb801f82ce992a13b9d0d61014dc792b75dbf4c7605acac0b12cacbcd2c14086aef01f83400551b5964a0dd6537e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "402333598f3dd2e366c596b2be621ee67a3dfb7a7615202643a0e21ddd971aa50e73ed667981fa37ac05b5352e76288ec44f2c88fca0a04dad4d3e755d32f306": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b831265ea7fc002282d6e8fa15e5ce4830913372e313f830016e385333496e445d26dac245005cfd8227276e450c4e4e0786b9eb9f5f783ce5baa7ea4aba88ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b152a423a816aa57d018d2401f0ce617ea66a5cf1f51d84779461b1b71e65dcd1c8d583ab7043a45d5b237eb11049060ba403f3874c6d217afa9ebf387c00394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e3b1c1534c8e8ee8a323bc4c7bb0987a316eedd5437fdd245e75dbbf942f5c5dfc92dab40aba23ba83e5d52d5d44da5c062aba32f6ed85d0b8676f73b0f8bd6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "69904e2cd16b3e4b0e09f6f10da9ec3ad351049c0477ce46e48693453d4d85728d0bf2efad35663e1bb94385090969da7cada958466dfc5138c29d9631ab4e39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e1b8800753e302d1344167d10a11f47ec47ae89955def7723f1148601b1c2c691867c09a31195e2ea0c5c60e7b82590c15e25329a9019a7569a367369e52b31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "377468c0afa3cae3c35e1053087dda735f51217a528dafdd871b8f97c82985a79c701fb32283f4d201fdf4edead47887cf0fe1937841952470a34440ceeb04f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9176c5f04982ebf067e4f42cac989f318f999dc08ae25623038a2ebdd96364e4a5dcefa0ccd45d740df7a453662e1a47eafe793d4560cbc24ee16283a10625f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "67c1f0cc6a92ecc79766225e151eb2add18c2a2862ee0a74aea9badc5323bbdad51658c98d7d816a3a489ff47406f2839ecd7789135c0e638f87308b9093700f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58b4a0d63413767469b84fc3bfcb0b9c28192be7c7c1a7246b416ab2bbdfa3ce4178e71963cb097a35f9507718f85cc562da1b5aa932bff41e40bf668ee44183": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1802ef600525763f7b9bc7348da5ac6ca3fa5e5dea5b8f8e3719a87b2c9c2719f8b500af531c7a6522a509e4c508497cae81f2c0640f31db8799956ff6d1b7ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "249edd8dd4222f8dfe6a4b8da800d622382a69ab99b9fbc5f259adbbe26ebdff0481b1eb4f481bef25f935ad0514defb38f61d21693e2d711918b7d047619f76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aedf7da20e3563edfeec535ab3700b40bfa69d0df9eb2c04a4f772e4cefd9e7376e654dd071f5a587a8e64633b560434bb3b99161b95b93d24609cc072fc087b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d1ee13b68b999798f236ea9e03ff52738d5f5e840bb2b69acf8c47141a4508c092826a90620fb3ddb4874699b2794fd485dbc968d85a549bb34bffe1bd4f526d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7f8e51845dfead3de87290ab81c9494509ed6a6ce6af4ae5bfb3839482bad38f87657ef72a0cc5e0ed1362553f2e5114173ab677e89ea2dc8497c797ef08ea76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e5d1cee9481d1cc0c7bada7f70e3e9eeb04c4d511b8335b84afc53d7e60783ed28101bf25bf7d0732d7c3483c029eb497ccee34d6c5b2f05783afc1a802b99d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "020219f3e7e8b17fe85d78f6fde0f7ef94e0382c257e6628de6731568383f9904cd475294c130f26736c86bff0951d4ee8c6d13f75a51a3f003a51606c279324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "edda9381c36fc9aa21b45384ef80425d5a0195d83dd7e7204e1e09d47a00200af5f35083df82227dd953cc7c32512313aa32c1f6995e267055ab88826714c95f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a2919ac9457455be04ea56b0dd6e2bb284c06d816a490085b11ffe2e29eced4a1c232d8536fa5cae3c31be1846e240a7fdd4513043daaa652400caf35d1004e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5f1e75032b91c9df7c20c3a2b71108d087e6cd3e06d08acf534a0efe9e90a491f25bb9e9ed8238c806f2d584210fc0d9e501391fc2bbe87bd916070955e93df0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6da1c159111a95356689d64bc9a112640f86431a51f9da752777e99933c1020cfb36f15df4eb45757a78f18835981e3ec5613af3fb13edb26b653e96c3fa54f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f750e5d40fae0181e51d675f85594ccd43e8efe64f0f7f789e03adbd2d55541ef1b61bbef5c79a891e78001edd8703f3c25c1b8dbf81a92b6923df44c21183d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df3d50da1c536fc423d93e9dc9dbf3269ee7f542c6873a5cdb387642560019bca981134c47a9e7a8f853f9d24015789518efb9977622319ea9ceb9627bf130a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a5189b854aa1843a3e6092ce0c713672acc6eb71b61e67ee8f9469b4db6ea55876d466d1109e753e581f648bc2d981fbada026044a3973580fa691d788eac557": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d435c1c1861e1c58e4e77c7f761ce4bed5e603b0779505cf124275b613170873c4a0a89790158173826c2422af1c0f1a66e8e9bbe66c06f903ad2ed6a58ecffe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53a824060dd912e54a8991424e514ccc75196260734533480cc0673494ad9a8cfe95d8c0f68affda4ae0f5175812942ea28aaf491e109fb7bfa0d1c26198468a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f1af94bf8fa012153134d98b9340b9a942e8b9a42fe9dac4d11eefadc5bedb56f294f681b7afafa8fcb5092341c846aae349319ef190248074d460b7551bfcac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35f38ec05292a217d9fb04b9d32ef4e167acc61ebd0076a4a5d6fc7103ec732a18dd42acd35735ff5ff9b114298efba1194afc58f10ecfa3ec937abe6c79ed2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f55071cb20d2971553b28328347400c779a23225a5926c664874629c9b946b12280893f3c56f36783d234964e28cf86bc8ed2a899ba7843319375cb6ec66dc13": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9b631a52ff60c82dd4b7ae297d69f5f416a09d852e66ae3ecd79d6716fd1827a06b679e006160e6d1cd9d3a9875c140ef92b65f3a76d49c55cc834f063a4cd45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ca0e68c299a6b56801d32f8ab5f17222796a7055de9fcbfab471976d12ffb9a1bd27e4541deb31b353594f18878b67c1acc91042f3bc2ff30f7710f36064f04": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05a972f01473cca0537f44af3a8923c6fb16c12c139d5bf4f5136cc04376888e1e8453efe1a82d0aef37bba85d762114b140266996fad28b353e13310db3c4e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cd3c28463e07bf80ae415c2233b4dbf19ee3d3032955b587ef16d5fecaf2d4915ea8cb0e03f952578bd1f7c6db5b28cd5675656fd353dd85316c27eb690783e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee4155454dba79f1cbbd28f9bef6ffe5ce6f58a64ff23d7fefab53fde4b5871172b5041dd75df7b94e1c7ece5899225efdfdedfed7c7b1b1d06f364a02dc7245": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "59ddfc649940f2a43c51c709a0f49d23ccd861c93e4884ef056d5bf81668174930c8d96266557458bd71c0fe77c01c280fdd4a1a17b6bf9b7ea84902f2693d46": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7355b4eb2ea37782bbb78cce5cd32d82d359315505df85cbc64f383b5afd0cb8a66b55128620fcc737819fdc6d134168b47306385de972c4d3838b0c7473c4b2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b4c74e5a02b53b956fa9fef7997de3424ee71cf2a9d5e2ebb9e791d8c81a1255d30c768327530fa42602d395a4e9fddb76dddd1b39be528c75ec46974a1751de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "693ace4fe147433069ad9604abee733fd748a8b4939fb97bd57e45a0a8181f3c58fb02e15e782fa7269721d5e0f16936175ae50cb5731210a1aac0164bfe0693": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f46b32681ce440e41bbb6e5b336e44ee618cdb52714f92255d054f43f5e59fd251221aaa58e8eb173c3d5dfdfea9c968c54bea5b950ddb223e6c4930c4a36f06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dbe25919d4ee7edfb6cdcd5dd832d514413b5ba6e054c633ba388c28410c460f44fcb9bc624187fdcfcacbaeeb635323ab6a6937299f6c0087a3927e0bd573f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5af38882dd31ef1ed8c4baa02dff4cd85b0de5df2bfbb6c235f289c63d05a20c7f9cbd22b2b36368118dc5cc148c1724b2a6d43e5944bf17dbd62748b8ba9361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23af53f28d5d8ee26758bd4df06ea1901b934bad679888ab3291cd66fb4eeaf11aaf56b48f37c25f8634595e45ef6d4c3d42a42a89ed9652fdabd9972fe9351c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "200c56e7a94ea0315e8de814b6b64545347be54fa74fa334cea1a3d46caa8de4bede6af8b230339a427b15b4802e246ab050cdf56698b1ec2a3f2f5052273ec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "82c523a181bb1a00c9fcd1f3981b89c676bbe097655e09ff632edcb6d323b023a06a8a036be7963974990c2e16763f48222d0b63237988d349becaa7767b8267": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36779db1b7ae51b30525f7ff8b08a34065806f45fd7382d6c41972dc93ad8ca3d9e8ccc0ad2fb0412adc55f34c73aa6280dbf4e92011628a565917518396778e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a8d7bf5cb39bc3d3e606dec6f3d8ed9160b6f8c0ca8407436ebf84aea5eff4fd91f9d8a2caf8236a35eabc462f47dbb71c4fb939c88542cd1462ad1efc932095": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa8680b2f586d462112c940c30ae6bd0a9cdef1b58b29b4a0894230d26c7b128f87ffb90e9b17037eac8bf462191b5e17c9b42295b9a4bf4e051e0598362bbca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "107bc55f2ba273e067e289864c1177891ad5e32d9bd4c0c31e81cd063b3dffdb03342dccc00cb14bf4e2a55859377775d757248022ba12444705c66760a9b07b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8b5015fc4f1590b70538ba00379444edb69a284bb8edae5cf0fb1e0493ad71a6071b2f2e433cfd5b8a803e95fc82b02116878848c0f7d48e75499f27d9e43d54": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "026e2e20f4a574795319cebff18419770b4a9096dd09b05cf25a24c7da96f8b8b3123538fa2e359739bfd23cda84b31a415ea5e4ac8af86e37764e74cb08d4d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e488d0250dbf371ac09d6c650adfb287cb77beaa30ebb09b668c8497d5c8ba13b93918c98366cdc852b17a70c0106d3cf1253718994d9dbf744d0696617e50e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c839cf0467738496412279ce62d06618b6ab4f64c0c3bf68d1edf8f25bb0fe4bc0c4a6f9549a5b9b8b4a8e75c0f0b084f9dab9bb7ebae3b673335a2df53855c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a2724a2eebb8cf63bd5ca13c27663f851f83dd9f2ae5a852235457889aede5d6ef81f3504ef6db5ddfda99fbe23aad45920f6101a276dc406ce705170735f901": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a0814d4b15484ff4963d08bbcb6bbdc51c01237066b642b82f12539aad878ccf6cc28e6f47fc51a1b6cc1cd0a010d6b31f57a029816d55164a5f6b7d422f7b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "48e99dade08827f31966c63746585a2978701375bc4436eb3b2eb300f151e33b12a6a301df798dc94bf261788a2fac1bbb66643d9f0700cc696107568dfb1fdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed57e098093862b68382f7660a8efdd68fd5381318a3923827280a5f1fb8058b092a1863eaee43ab17d9395e92135ac80bd5352b9c398fe6909cf43b874af637": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5104569c96f5520f5b67480825a9cd8942745b01781ab546b8ed51f37d0e4e7b302c66fb2cb916c0b68488734b9db1fea7b5ae65951e819ee487fdf8688991d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6ee3d2c93fca233aa76b400af5a45445e56be3166f979127da275e26b0f6658082c5e5a956995b010884763a0d25d8d926be383059ab70ca1c10a2f0db1de251": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3741fcd86d108102310e14afd9496578d27bd0645456b9a432b22def9561e911fd332b5e933ff60ce7741753c93e13e3637344bdde622c3eb769867fa5960ea1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "45972c822c9ea16650238616961296f674e01e3dff3d8a25f78a5e3173bb97594f10d69af44ae00d07c0025f211277bbee966f27904f99499dd9662c8cd51df3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0f2a720048077a79bb1744b784970ebd95655acb2a02d117132151cb09c8de4aa9826cb1a0a81cc1e587a9a2216e6f0af22e2bb8c4d9f9710022bae849604f24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ff1d55e417b6deb1b4c07b331e89f8d0ae1c133e99044f5a6d28362e73005a565a048ee8c7ff4aa7e3fbcabc1705ed3348ae5284e68264f85c827bace35e933f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0662874fdc78cf03d637dc4dbf7a64197ffb1c7e4e8f42532a16138a1e01a0ee5a4c3f1b7a7a7be8f23243666a77dce2229b046e8228b8e22792e751cc8cde1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f0e2b6225216f168a3c84b0f6c66518bfc4b83f05355e6858c6ae3f56c297c3d51f383470f66d2a1032ae454b6fe592a2f98d59e62b836f4aa25354a1a76cdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5d7fba5afed744f84732b2bccf91f41cae412aae61c9d98df51dda4bbe67534319990b7072a1cc8d94d87d3db8809f272d4221f536180df3046ecb23d033379e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06636309cf438fba1b75681d1461901ddcfa58723b212be052859e1178a14b88cca94542caa80239c3f70f2a6014097b57405cfbd13c1efaf0dc8bb8e25b7f47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed4bf5a013732c719654fc723127fd285c634a5f69d1046d7801f734aa2478fd8bfddd12393695a37308c32badd81bc081f537abdc51a9488951b90e07c01d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6543f12ff64a72069b4b9dbc2be17ed6f18b3245f36096703617582f31a13487895843e125309e7a152dca0845e3a17bd8ebcae580e348dc3c070f030f454e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e271d92a5348185fe37c455d180b27950e84aadea862d07e0ec028374777ed078e58d26c3caec7c7a06f38ff0cf7d5c3ff1593713b92e315a8d5d2a81406823d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d7724b60ad1bde1bfadedd0c715adbb151ee373ce73a17b5d8f32842bb3c5d5d35788978a7b3f37987d39d82146ed9925d215fd772d49040196c901c32cb9607": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dd73dfc9be803ccec0b3ad1b44ee9600c6c1743c7633935c68bf2256d1f2e52a4aa1d7a92442260e35f69b3328cb0127b9c8ec47ac35ccf563463240382598f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f8593911fede951694db369a97ec5d826ea328a8c4ae6d263683a250a857ec69c66640a65bf6fd7292dd502b672c95cae691eb00582cb3a20d35f1ee80ea705": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8363cb6a3613d3d71d40ac8c1f7d3a77215343d53ad9efb6e515119599519f6e9a29d596e2c27acab939d890ff4741758dcbf8149d5f69df377776c2e95c7f8e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cbb345f2fa5085a9748dd44e1f6ba99f22645869b0d8974e51efb93dd71b631efa1b363f1470d025c789d7a497b1730b4beb7bb4b0e05017e16ac25096efaecf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c68837bb3672f248f23d5eec95730b372fbd0e0f573708e5f5fbd3b6c89b9e03f847df917f27823d21f8352ab50299debba557e895d4e767332036c99d954bde": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6389827f180728a23eb3cae34cf5a013ba660ddc9a0c424b09512b2087900544b7c27625ceff31763230e7da2d51904ad97d2d9c5cbfd378bb0608e179a9d892": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6101f7fdabf5d3ce4f61dc4254b738285fc002af7e94537f8157d6cbf8cb1efa7c66e65cdaaacdda00c5157d0df958bc9ea21213ba519aefa9661affc30ca980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2fb443333f53b5e5750583bd9f3cb0fa02f7e61003d55406a91a36ba868e2cdf730ee0fa59ff9563b5ce59eecf4534fe4e56cfd0090f94bb7ddfe6758db73093": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ad5dec05769c3afc027cd83fda489debfa62089767b425a3a1018ab3d17e1aae07bd95270a2ffcc7025cb2585e16825ccb95dc1b18bdb82e7c7c244c05282a7d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "65abd50950561eebbc11fc6a9796bf8d153f340b520c3c64d0bd0fe96fb7f90e2277f0e726626703ce82fc985c2e162f339c3c49a473cf7227988ee76a24d4fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "97ed6dc5345c419effc0485eed510d78944c946edad3d8f34a0cf235f7726431cbe26f6ae24e1329a21d92e4f238682e48c6dc93b2e209abeaa497cfc7a18fa3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2d44cbb4e2cf11014f6cb96565e2ae573a3e5cbc4ee866235bfdaabd7d54d73a3e5bdeaf41255622857332c146288f0491f7606d1fb95d638b9140902f8fd7d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e6e004f3ebb4c0af344174ab29f9fbbc3c67d6e055e3667eef3642d29401ad22952399bd40e3e3b15f60d636bb286d53499f68ac3ad608bbc066452c4d20f7a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f07b11c84bd0937eab011a3e3739d3230d22081520060f4761f34f16f7b49593701c2d08d33ae904937574baa033f35cfcf9b718d3b51391dd977ee08fda2926": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c27266fb4f2f953024bdc4209d3b2930c39f278b7c59272ed41af72cc1df619f8827e5fdc21549d2c593532e9663fb87851eca3158b2f614120632a75b34fe24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bb6487e49eb80de189a243cabd34daea113fb6bdd8466f68f19b4e942387e4c72eba38d27a0dad64645b563b6fdc17b69fb6e2425d0771209899097871adc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c943282372270c5fcc956940c4ee67af7833619ab5f94fcbbbdc45897cd9a6ee4c0b17e56246f7029ac168093eb09967bd47f169a887835428435abc667bc26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e3c2d05996716a5d5a4fb85b8ee774eac82fc0fed90f6b3a671240f9f81fd0c15c836be9fa0be4362805ef2949e63a449bd2f011810873316aa8e747793ad523": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "add8b36a38aa693d013faacb1e480cce55b418da4fbee3c3b7252f7db4c045a2e968435ffa249eea61142c065896c87184009793856df330c8dc3f418a60cf40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ace0ab6dcd196464e6d203b37a67633bb96cb5a38ce57a48c2d42ccd3f9d5eb76fb17814d4deceb9ae63e497d12156afd619c9493a998bb789dc51aba9ed247": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a37f3f631305721744eec25008721435bb5c1daf186d36cb0809022f4f58e9000f7aea2cac9e3a0895b7ff21fba34d4060bb97d4f146d7d9a881a94e73929400": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0225ecc1134082c71caf262c167258f6baa059a7978a07e233259421d1fc47280618fe6d82d07ddfc4fdda0811ff0ff73136dfc8e7b1ff8550b53b5d25397eec": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "517eb56bea5f795af30e4da57a9bed9fc2cee7e880394492c222e604ac835a4995f80d6122ca62d051bd1a1a01b47ce860aa733682186e3cbf0e6f62b1152d7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4ce16e5f493fd8ef046852b0fa43c755a0726b468cb99de7b805c4e45de9dff41ff0b2fb3634a6ee1a5fef7efbeb3c9a0c47ca5af960a26a9465f0e42431d80": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "85f245aa3d35a6e3a6393add5dba54faad8f96dd0ea48ccf211c5727ec26c629a739e795f81db920519d1181027d0c13791e91801b56b83519b634b3a93c84c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e58361a9a3f4d70eab5af1d1c1d49ae71c5de639b055b49c29412c9d5999a563e849be590f89a87f905f25f1ce6e09a53e24a755caabf3c9478b8755a805906": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "421c5cb2d8c2edfa05cdc29f774ba4e5b64dce463de28b42e40c1a9d185f8fd7d422e9fb2fbc2cec98faf70e58349465eb1aec294a996227dbd20526bfff755e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "16befafa5069a9c38e70d67aa759c7e336bf54ce7cd3c228253e48dabe9406a0419b714ea19e0bd941cd394ea447f9eb8f7ca6404105dde9f533b47b62339c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a386bcf70a3c9116f470d79102ebf7b6e1eb0c285ddb50edece56f71f12b8780788388fd4e3a3d4508d1f7037016a12b4e96421a23a7026f730c9ad4ebaf53ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1179511b825da1859f02964831f34746418b45bf6ac63e5f6f773aa901bd7c0c3f6c1d4dc64dd308ea7b93e913b0fe44a1508dd92745e540430083fd6f5cb018": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ab8601717198c2b8fd16eb6de4b64655201fca79f9b229dcd9f99091cde7d9015775ab778e98559d4d8f7ab7924c999413db4cc516e740390e174b49f4b187d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "104c81819fb2722752467d0a50eb2268f9f6ca3a25aa0e97cffc642c59fed2eacf5994dbc1430b77a8ac1f3c90cf57595cc056aff0e9b153e265ecdac037a7f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d9b47ca626657ad5cb5b66aac5566e90452e175baf26b66f6c2e54294760f45c0393e145486d5655394e9c92e07f3ffe8cdd5fabd964166f487f550312f2e12a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "843dc8c958813654a32a73361d5f14d8327b909c7031de2a849a8f4f59d95a33b44031c6e3212ba036c0303da5d69ce56a92b925e6f149445c5a7af71e7f3d19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9815fef495e10b15a809b100e1e6e0d28346b3bbd892956964b09d2a4d9affcaf6b853d1bf91d36f50a9a43f3151f569439fd2a23513aea794580e79a491ea90": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d871e4ee5d0010f7a17c1c1b8f4d39a56c443d3814c7b51d608e8df578f15a2cc5f8c371628aebc2dbd66b50499aa92de6b4c0d461e42404e79e1feb79e3983": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ce31dc31847b04923c09724e463426aeb681c00250c1a3b9b4ff9b680d61186c55cdc6358276126508ae0d907d8e116d5d32d8c529561defc130a9d1f1e52b16": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8c4e5bb5c47bb06d529978a311e0910fbcda2646b6d28537652a65dfb571aea14221e41a16f8cccecec23f747af3f2e6922a1d153b0aafba0a7363417d5474e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f99db2d77eaa5cfb51716231d97bf56b7283dc0ecdf8b69ca566f53aa29b18a9e337f01653ff3fb8c87806d8f90882aa33fdc5e43f26af927941ac5b053f5309": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58f13aeb1980b4cf0bc36b3119f8cd67901a023600c7c645bd71ced374aa7c3e3a2e6d96522a6a3d679ad2afeea0307dc82ddf89693be9a3028d94b22a027002": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cf86c40646897ce5fb516545783c901bfa34b67b9f01eff786f58ff4d0ffb79dcba7ea1771946e35555d26607beb285cab685fd65f64b76d51b239c9d34d1400": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cdb90cbe8a90d44b381157a84ab814dd76ac3bcd0380bbc84022a4fe69ea3ee1306fdb4a92390282f5d36c1763e580a925af14a1a52a860f93266b242cbe12be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f8c07a1c01f5b6e03bbddf0e16b221675ebc54d04118b4d9c995b1b9029c78537d404d0eee6a509626b27e070627bda3a239218722531c7f5edad19aec09c6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "100bd0b845a62e14af455ba67027741a6a876a5fc7c142ec976c9aa280451e91a208e74238ef17ec3aa18e69d0f51420993181deed8c7b89b8a535a5ce104d84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f9b799fd1f4cbaf00a0d2675697dfaab3b8e46b66c25e3b61cc9f7649690d32a1522d526efc0b3f92c669f918219c0d0477993c332cc0b92d2acc4e5754309d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "70bee58742a10082fd9d14d0e6202017848d32549e9ad6d5aa7d3c73db067cc9649920da1052da37e038bf4ef1c63b8f591389fb7775a10cc4231d97be6b1e69": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "232b91a0774285327350d64ce063ee4600cf206d1b7566aa334ee4fd14039862bb358c344c7d9685a6b208269e42306786ddf8bd2371667b8bedbbc37e2dfcb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6fbbe7a64ff0bac7a8ccd91ec50e1c112f9e77e5fe1c313e094ebd9d3a4aae32136ba19941cbd5a9d2cad539744d055caed46f4d625b308f24a359e7e7dcd07": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3b81868c9a823ec39396bc0626d4bd07f92e25237f80f93f2a404d1f23d5b1e6825242bfe066a4d6beed712836a364db542f81710404a1fc8b68356e03661168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f054e9e0876e2326e1a6b9b51dc7768edac09baef125404e47529359f0ead4906ed77a3c0f8df98619351a1dadc166e99f1d1f14e24b0319bc03537867483e29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9c7be6b407b91f7d272781db639e8c94506891717f318cf873cf8641e0b7c852d069afd65d9e36c2361e8f67e3afe3a1331e9b71d1aecf6bfd2318788dcb877": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1077d77e24bcf9a77a2ad28efe921f57d900a2f962f1c1ec7ee58f1d7ff63fa387e34ce2b44b4b51798d3060fe9f77930d6ddf117d4eb371caecf3e3b197c44d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53d88cad7cd84a61c678db6c1864751cc0e259d38230421adb33ae480f36eb9595366e3ab10fd0b0c3d6bf5b4460300d1c8f5a840a7f3bf2509b93e3c1ae4585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "967b8bd598a0f9a36af07411a959c93b47f2fd030ee1ca31faa048d16465c19095e926b4916db8c365c67899f72ea5393b37f9d7810f5bf98528fbc392ff3361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8bf47c9568089aeccc3104d5d096be6c01f57fff37f57271debeaecf61d728ea079208e235d77f3287b0200db1a431176f814338cd8b1993552c396481235090": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9018c5b0522bc8cf4ce580732a3f76714c87a737d6023421a2b48531a4f134570b8a0e49fe9200b34d9d8963df6c0da7457e82b6b7f5a68877c68e16bebdfc84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "86eaaf8826d0aaf713b9776c47d09d34c6433f63162f4075411061c9b84581b2f6159d057da9215812a7f22ef5ebf42389d9e0c0d01bd58318dd8554fbaffa31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "758a40f6b8bd6677f56cc48991159078fe51ef9367c7cf29f75fc3744eb72a7301b849d813abaf7655e8bd6da478b036f5f43d23b01c87cd2a4002501172de40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8e75e43e9c8a281b6201c4a70c561ab7d4477c788693df081b8973fdb1833608144fd31709bd2390f56bfec83f3aca85f640bf02dd031fcef12289cd1157a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31e5fc6d5794f568a14636234995b2fdc4e944f4dfb644408558d9206b43bd1f4032d32e75db67d061bf71932bab1bcaeb3595cf9acfead7749230873e29f201": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a7e6fb62e58be265ebe440b691681019abfe7bed0539c38573c34852c783e70ed9d89b311c768106e06be4ac30f03b9bbdb839ed77a71d4304887d3e0bb6bc76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9a7de2ec68a03c4bdfc456271cf47e6dbe3640bd664433c2aab0f61295dcde91f7e4afe7865298f4412933b119c95f1bb701961cc466d9c03465e0dbf1cf1a25": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a50c60055717fd35a6552574b79c198ba07b933c9fad1d71d24a7f3d1242610cb408c14edff911ef7c02cb7917943ef136f263994f94f33cbe9e48c608d24c6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95ce95bce7dae645e0f34b4c06d856dc50edc23acf519dbe8edb2679a7f3b7faf48ad714b1c371e47a77bf7657a6f398c7143475d44d6eb71ef54cd723b206f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "886aa5d3b5b219e20a1c338dcd2a5882588423a6877dfb1d881ced35a951c71ed77b68b10861f6f53375acad05f6c7f35e79fe08db29381211cd73e03f97a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "57d7851a61cc5d00e940b2a78424047ecd3f960b6ea5c6efc24b791ededfa94a3f8444775231cc049e1584de6973653a77738c1e9a51c1ac23d6abd5c56772d8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2022f14aa2158f0e00a4fa14423aed77a04f8f5a249ae9827f9c452188e5de4727b07da502d6e16093f8bf9012ad775cfd034d1944d3adbb67dacec6bf62ea6e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "43e00f9109f8dae0e896dba6f62dc44d3b60c6fac88665074efe25cb829ca2ece65dbe3ed1688365e744d4c311898fb78afdf4f79c6dfe29ac99d8abbdb0597c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6be43008493ceaef447ecec66fc83a2ca0ddf8d7a3cabdec51bb7de66a16e0967a297985c679ca63a0ead7005a794743130c1fe657fc137378580eb6c5f5b6f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e390d23a16248c86f21755e8ae2f0fd9bde81ab8852ce26b84a088a086e2bf5c0470695c1714e05abcf89b7450572e47dfdc364fefa993902eeba064962e46c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "794e802fad50d4ed108e0e35ecbab9b32efe53886da3dae11c9a764cf99a0db6599e41188f6077968d8e7f20ecf958aceacc32b962bf7908e5b5382f3dc824e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b1e8ef66af2eb9e695a6593d733a0154f1861947ae040b32c88e6b6b760aefb9620785efb10147a2a720b01941504a30a0efc671521246717163b757260b6578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "572d769b8b2b0c6854e0cea2fa9bc1544353df0d4c050ef89595b16c1d9f8454861248f34c5b7af1e0c465a1bc630595f5d64cfd5e3257da1a42368a725493de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35e4a34d2769567dc50fa745d04c0533226680441280fa9252551518edff4612d8984a0e456f7e3a28a9fce8dd9cd096c4b8db208ec896ce9e58cfea10bb1840": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08e13829301245fd54b4a2a82488f68661e87a92d8a79c6070476029dd9ac5df79c1f9a6643e323a8949fafa35ea84e6803c2e950a51a4da98dd6b03d3f01075": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd537d803b8dc6f853886122e313d9e6672e381c4f9372b0016f275d4cd3560fef323e59016275fc43f40b4d2234eeb9f4efe37e49a6abb82eac9c0059795c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0df380c48cf1c1a41749eaa0570ba16e5d7d2930ae8a565769883222ee5651cc85bb8442197649b8c26fb62b93534a47de4857b321f7d4e3c43063631777e261": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb5aabfd03df4ba48f040e4e706d6eba303ecda4ef1138b3f268b21a5fe696b494aca5ac0003efa5ea974e488dad7e8e80796c0ec883ced292356e7652c39cf7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "442441f146ce1f40809cd79b0fde1b13525f091b968660fa0730a841ad72aa9362a748fc90edd4da201f585f4ed86236f5b1058d694ebcc2dc2aae88260149c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e524ea86e91294977ae3ed4dab8c9d99d8df17f404f3a3a11b3bd935c6324d1e508afc513a17d4e82e0a139f4537ba62e503ceada9f3172464f6e798624746cd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "963a472ee88bba356fb6bdc92617394ce205dc3904fb834298a9234cebb681c21cc454e7179766d97cb794c227df1420852e17684b9ef1b2388234c8ba0bae82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c300c22894e9781259fce4e31ed85077134a3b178506d9bd0e70d5fbf769ef331a728d2dde5ad728d500e5c4d7c0088a48c029b641a7e8914fcb141a197f5578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6dae7a74bdc95a85b7801978e0e7881395536df16a3df226875276b68a3f283231ae9f12fb520fef9191825ac382769bf7448b99306544331951865c33ef602c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a873170b2e4feb0c75e45a490c9b240cd25597f47f14161742e93d9556a4c30fc262d9f501e6bfaab4738ff7dd32bdcc3eb33b2f62dcfcc403bca12b8a4d1a63": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f16cdfedd0bdda362b0a0785df9430ad86db34f14283b6543c75c18ef64518808a3565cdb3735fdda00e93dcf5cbfddcfc76d5fd8b47e8a918894b7ea5ce24d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4710ff06af2dfb2227ca9e195be7e6bae372cb0916b2a5388e6bf635560ea18d68827039b8bb6d928733ed0fed93f3475b32343c5afc6e1cb6384e857785ebae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7207b9cedde4598e0a74187039b433b3dcb2c382a592129a2d5c81628d447bec76bf0451d751f8a9326b6cc039078a156b948d325e30513cf7e237fa328aabcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e1519b3b487052dae57fef1bdb995de1106cf525544f3ceb6f0524e3b9b6d63898e459f3f78f211ddf2812fcad9d9e94b0498ad065536fe62324b18390b1fc5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12645851fe7c3e0ba3721bc1a70c693da011912e4571b71abbdede60e8da0c65c3f11fa878d48558f02f1a9aa2ba60c9ee52a1384c3975d3964d58e577c566e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "eb1751338d792753933809c544e01a4ebc1b0a1e3b91419ef945d5eafd1b25b6f9b0e3466e92831dfe0f2e7560fd6e50f3ec47ce5e50964d59cb4ae6b52998ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c6c8b64ecb9cbf5963522e7323f2adc56b5af634e2edaad40748c8ec466ac0bfe4aee4401d24c4fe6541a3a97a4a33cc5079382002c10034938f194a1cb76622": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62013622bef4f98be9b49e7cf687c41b48477d6b910e53bf8bbe0dd718120d7d166c3aac6c8c4e74d33989c0f84fff7b159a7d0bb7eb1145fc3094ce48447bb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4a186969a558ce541ff8796ae02407de14e62d41d66c927de43462af20c163b77f4320f741cf1895b4158bcd2a4a039b11bc24d1e3c47240a6054b01b8eca039": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "380ac5ac6fb6e6edb820cdcef66538c178dcbab97a87ef963077bb6f467db56ba8ea2262e3a1b893531c37907b162358c38df359bc32125195614ea588f6d6c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6d1e107a2d8d7a03149b2e4b11bd27ff1f5aa58c94a487e6ce5301f9fb2b971147cc5bb2bf3a245726bafd13f38e27b66fa8b26a5e73b862f575e7340e949716": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3faec2ea50ab8fda976742faf0f72ec059fdbc9f696eb6e320fb37db16d52e767448c159d829905c2274a0b10ef64e30197bc98831d2e4284400fc1adc9443d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f034029362eba748fa3b2f9f9696eb7289b782aec3200297354cbbe95f6bce4533884173c2fdd4628ea9f02c860e2b85797bae6983994a5d2a72c3fbbe8c8067": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e727bef0a8774a3ada6d60263fa4140161dbc051af4a5ece65f07e03e10ef8a09d7a580b0a452951fa64c00eccbdd0da4a58425914d4e761d1698918933de09": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ca7b16d620e4d1622f1717510bbcfc3a8fc46d208c426bb6282b898aac743f8c3f23a6160c78488eb28ef2c483e65e25658af487c9d868858e7a8663c777ea39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "495d94c307f5f8d2ab9dab84764fe1c9cc68de581d25e7479a1f51e4acd0b0df979506af7899ba0f8c58fa8b842bfa0d888c79d5510718ce0a03ab0ecb3e916b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c1bbf2ce9a5a22d58196014885f901d4381fe0987a80fe44e2b932944681c6587d9bfc88128bc6f4af2a15176bed3cad965fa9a5da59fa79f18d894d864685ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fe2c47c59cbae07260b4f12b6425f4892eaee2467019b4a58ee017b9af2306c12211857e5a440a3aa2ca0eaf057e7cd7e12dd96d6feaa70ddff86eadd481a98f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f430c70abd8328428b0aff111c846e35b08f77378dbf475855efe049b368d02be9c152d62b22d482ceee0b1920389d007f82830f1ed206bcf3acdc4a490ce49f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "76ed82f8ee415c9ea44c53824440d76e6da885b92af1f4284bf64de97b0215e2314501d1bbdc6ed339a1d59dd779783e6652eca8147dee091a7c015dd9d24db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ccf4d6f66f3be021f03ba11d84341ca1ecbf641ad1d6628bf8aa7c356d147f4ffab2393301e35b342143fb9066b387ee2f09e1d18fcd6b4d152d9ddc15ab6272": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a410b07d9122e423e527e63d61e336eecd6f027b33b36ee070aea36fcfdf590451f1216f30e1acde4253534be40e6e00af2e372b686b84fb7393f763b7e0aa57": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5c158868b3b3ad985d52d2638cb0b499a048763b73e93633aa5a1205325b92ac3324dee5694c13b25619af6ca89fe69a2b11c519d991c90f65bbd0a1f351efb7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "71d9c17ee13b6d805edc523737ed174920b00418718cafd4dfaa4c81936d444d9a3a9052a0e369a52e0f41beaf176c506a0616c8c27bbd3064189c1ccc76c7e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18c216e277374e8f9ef85441800abd1f6631904dfe2243addc4f20a46d79a6c99690982d504987a7c0cb4de910d2eeb779cd1385e7a10cdc681a945d45da5807": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21d16bbdc52a3dbea15a5c06d41c68dbbdfbaee11f5ba88eef1e3145ab80bbf14b5d2755fe067c877fc7bb5c50507f38db8484c75636e4b58ef3f12b8bd97c83": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a4b1473ff94516c5eba403cb5c8d21dcb17091ffb560eccd1105fa4f7d6567e67efb4233de04a2b4f4eadfaf538db9fc20b0410a62dbee0d9d567e1d93b6678": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08edb4039094b4af2c0ad366eaab8bd012057b969258c45aefff820c2f82c6547267915963b98da7816003e56a93efa0ccd53ada16f5c57bcbb6712e68bb3e0f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6acc2589f5907c214b754dadbdbed06b7486f33476263da7fafcf9d7ca93e4f87cac8ba27725da4fdf918ab6634664ca0a1f600c84fa311f8de5517e274336ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e863681afe8b4261fac46e3a83978fb9b7dd5536a25a809b4a9b8f787d7864e2182abe86175551abf1149d3dda5ef0923a10e3629273d140f28d616172dd515b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1823558b8a46b2c76eba22d14819531e0d71dd9c8610b1fb97091f99a14a92c0256b24ebe623307f4ccb70898702c47f733a1f1b515231712b82aaeddd3a3818": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e49bfb24cfeb61c5c9ddbd06f6a03e65e01db16a3a1d94f206683a71f35e03c533c3461f0bbb0087d9ecc3623eeaaff39ac9c54e8a8c1e0759c5fb3ce10004e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "837544154bc1020ee8abf1cc7263127dc8c59ac93a7d7d5d01b23903ae19e00c87892991856de22094c966762961216ecb463a015a12928cb820b6e5f2038213": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cc638aa21245ff76013a001a5a2dc1230fa8f44855a6a908021a59d431debb675f7d564a9ca394390018746f1138aff87ca56a9cd4a9ac48700e253a2254a337": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "691fa62d560b8cd1e3e84770dfc584415b9cf96161d9bb08321ca601dc33fb6e80b716734c6ccae05aae57d158d90668ed99ad75ff7d5ae705ac0f9164ce202a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6044c22c8fecb6d854ad33f159948ae8d8b93c338549842ac3b70b47859ab6ddf472a9fa44fed1556a44c759dab82b3bae426b9c25a5fed0d0590792d1a01ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5b0a02d28856e1bb4c5adae56511520a29020085142db55aed91a82fe953443e9ebd00216788f7e73919f4ff12a8823c17d6d50bbdb52d448d6c469af84a25d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96e65e141186cc225c85de55dca947e8dcd7c6cade524a58d82f07429fb3b47cbd8eb927afaa67b322b59621a83897c58bb5401091f440c320db5eff26d02c98": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cbe4a3e3e2f90f36afcdcaa79295396aa29673163c1388efd0aec2643bfb1665328c1206eb5ce0d2e32573073cbfd9da625712304c3af021c65578501d9e707c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac6867e7173c6d3bdbb0f5aa5d776be1c8df0700d0f95fa0a53618475d878affe54488795eb4bbb89b28f4bb6fc84d73dea3d49c97774d1cf943bc17f9bf68cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd03bf0639b9c9799e7260160904b526b81b156756280c60aed58ca4dc06fe2d78a0b9d9ad8d92d0cc66516165f97fc0035d54fd3b12f974a93b245d57ac4d42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36f4158574f61844db9d3805420de2aad60a00af65b4d11dd8e46a86224bc23cd7382c1f4b122e67e1c722b816efd2b56d2ddbce631f07f1fd75592155875360": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d97c768079963380ccf2cee6172bd8e67198b990e7d9334691dbdd50c1b551fd4f3131788708b74f671b8502b8dbadf275e225c858347ed6972cb7c07d4557f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "24e38a2714855d96642374361b6e26c10d75f6a6a584a896a940130196d340accad9bfa15e078002d0f45c56fb04e74952008040e164e9c83a7aaabf9ec3e624": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "323363a76fea01b2a58ae7a903f9bca910f6609025dd700d6170af3db29beddf9f0ee83397e4218b645378487d5e6660ad294d525b884d1c0d68a4bbede10037": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e135bb4d0258b2e49c6eff83b3a086e98dc2754bed80eaadcefe24be338b606901721c956973d89e7ff2b33eb689e640f8f5b3963dca7c9f941b2f01c049cbb3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c8b24757a5b6677d436ccb84de75a26ba6e2c0202a9c9e65876da0128496c84d3bfb874df86f4f44da0da5d4e9c25d49bac16c423046f5330566bb86c96d938": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae93a11e7cd4c212acdfc132a0215a6eff50d3730c10758cfd104e507bfd6aadb31805bc132c6a679c82898344557e891f2215c79979140e8b1b4f5bf8e15405": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b61b8110f7f91fc8188e16a635220760e2962f2a8208fa8835dcda6b4d6c8b94c33ed056aefe9315306381a580edf6ee15a3eea13c94fe4152cddff165bd274": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7aafac8fd757755039a5609fa4970ba757750c0d6c02c1d43f3f8decf7334c4f37cc8f060ea70469e476626a6d0680ccb057e38a7e70714a4f0113ac7077f641": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73bb82cd6fb394580fbc8be5b5351d63d1d6dc33a22ff7caab373c0a1bf0e83b6af9015707e3b256c402e1151b3be4e8c5583152081dc0f024aa6069540e20a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "306ff292009141950dd3b40310b3820554c2a48ada0623c52e2a72a99d4f7f87e79b099c9aa6fdfd69a2f60e35c310c705f7da6c6319d4b79df978d385c24774": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "50ce67e2c17f319dfcc1963524e27b4145d08bc1f452831aae3ea17e87fcb036dc37f6a9c2115f4ce26725956b454242669767e473f2b71158758e50a3f3534e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e50a323df1d8739bc82a3477523ee6401ca6d7d1a40d6cb98dd0a5401db9396caaa0d3f51e662f9042b41b7b9cb34de6bed078cde2228fad4ba9b5182115e486": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2c18cba49c0b0b8912f70d4adc009f79c6f58361be3ac71a8b72eeadf7ab9f81d08eb902b0246b70ae6084b125cbc5d2a76e5de035633778eba7b14d91c6e2ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f264b06cce72c456f3056e1616a5fb8df718da19489ad189515ac35738ad25fe2db0a00d21b17830153c84a2c5757c24b7f09e388053edd499e7b415193c3256": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "893b38e917623de807a14ffea5461e5848c1e6285d4c68ea093f164bb0384a5f822c318757378adddfe9807f597a15a28cdfa09562f5586ee762b9132c0538df": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c14904e06884b2db9438ae749d5dd94ff111d2c31699b5a8b78a960b522dd933b962e5f77edcb3eef4d4d10a04dd35c637bde814d6d2b68bfd0426742b9b55a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d698e328a74b01059f45b53ab05d827b9fb99b60a86e73d3f13b2b38554da8326247439060b56e4010c031b6e7a9f5e59d7d9f2c49b6113ffd26c1338842e97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "758ea3402319c5b7a2b1277a5098beb1577a9f37d914294ba6382b59fd75d77da5d7ace9a8b0fe24be0faf12d791a8a4648a6e09a561488992fdeffff9306597": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "246a37cb4fd8221608c61115adae8d351c7a775a7b1e0d2b56d26fd9080552995190c1ecf76a2d7d4a856768e4097d76b5acdbb7322d73ae83f79c9c0763fb75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "394646a9d4a8a9872fbb9ff64fc7f91fea7582c28725aba238a5fb484f93c78b6f72398f271a3714a8065f1a068131a014d0a28c6aa3fc786859a7f0a139f7e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c36dad803624753017e82d938d6ade3df699de1e1f771d8338de2f67f665632d13e5c6ee14054a6b816ebc32e3620335c3a7c35125683a57a9146a35ee092a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34bc1af3e8b0a5fd7acba54f64ebe466a11f3ca60fdde3fdf085ff1c5ed3daf4e141e531ab4404ecf26ddc6d84198a6db28cf1c4781c588e3fa9f20a7614d97f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "000c5f433d783385389a2f2ad5676368aeef6e4d8d595a638194de69cccc8d1229da9fa6f06200951cb852a054dfca57ca5d07b7b86f55b597399ed127c91057": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e27860e016bf4c99a9b4e34a7ab59ca95a15f53d9c7972501592d3e00e88fe69bc4e180a0b32df442e74e6c1523028cdc6ad870e573ba6f35c4a169a30b20429": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31251a3267c51a3810ce133a8129d0e556139c87c5e1376d1847315f7978e75119e6c556291bdfc8b06362689b5d5d19720cd17ad759a34a6babdde7b6bb8dae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "082ecce216cf14368ad13217df552b02e4fbe8c2622532ac8b624bffc6177836436cbac2c5aa51511d530088ee29e9a29dccd4fc8afd8f0287806a4eec6976bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c529185cc13d7300e876257191531e1ddab6ce0f3c1aad120e2405bdb98452b973b9f2287280200b1957095975e89da6cc01d4e4ba7acd35e54f25430f6500d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54088850c94a877c4c65ebaaf9f612044f853af3733bde3d5a5c93604e5c1923e72586a2d3d0ac020fdbe4e7f0b59c7c56cb69dae1452ff5f911305ad7ea4d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "650e4e5f7a9fe8ec2987c96dd0b0096a48688cf886939d1058be956929f68f361e4971ef0a305acc62698099ee8f70362759058c907b5bff79c225f4e7b8b35b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8f2ee1e3977a7cc6614003a8b8938d5821502f9d86de843c0cd93fc560c31ac2a613b642d34cb51d21a005e76cfa74fe0d122c1bd5dd717ad50c7fffe46a8292": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99d82da6a7ae25c1e017bb5abedfe62c6df8d4ea98c7c13198cd56901bd004add150cd3958a23c7c7dc6dae157314b965553fe195c2e352a23b94731ad168d21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "22b470616e8873ed9d61ee2e6b3fb1a3a6b419fee7410c27844d14528ab27a21992bdf5deb5b8808adece5e1bfdd4ee26e0d866a214d8ee86366c68bbdbadd10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cdd5ae2c815e14b07cff597ed2ca83cb738d8a31e05e8e39c40ca744a2b00f6b023784c3fa971af0584c75fb7b54c695e87c852f26dac9e96d29296e3f50d851": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dba48ec3daa45deb93b3c04904f55a4f6f448d874530f3dabf89f05345e2e38b48d2e7f5145f8ac1bb1109353ef4cf30c2d5927571b43e0daa0536767e186b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "84eb615f3a31c3f6d2f91f7c9213f25a4901095e8099212dcaeac130b1700810c85bdc481f647f01abbf0e31250d17ba5df54abcb60d2db1b899e29324adfd29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd17ddfc77c1e84d093be463eece14ebad46d037d5198b882eb6669a4131649fcaba2cfd36ada7d3631ffe302d7e9e9115a597ca510138ff5ff9d80789640035": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d92b3f9b6437ebe53ba7f8d9e04dca05d5899b4424bf57afb1f242c4f0287811c48dda4b2c4514a903ce5786028db8bfa0debb4b19f88f31c983c94d7aab056c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99733f515fb6b1961abc8df3ff7e7492fff0919ff1e6eceea0ef9d2fae5e9d51d1ad696656d688bee3113260fc66afc1d64ccaea5044d0eb27cf20f99e8cbbbb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "056267655711181befb17e31262bc5c8a0eebef65518e0f5b12d89cbdbe1e34b6d5e04a73af187afa2ac7486a6e7c969ebd0fb2de0b5b8e99d6cf154b7ebd180": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9eccf05ca77d49c8c2edcb4b943510ba9ab87c2fc25337beac39c70916e174a2be844bcc35393ecb5044ebfe7fdfa4bebf99427afdac67b3c292a82b2650e28": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f04787f2aabaf134c4d14dfbea25f15e25eb448e33c15e937e0e911b2a8f60b5b73baf928f008dca82ae2621452eb57a15bb9dfe40956ee67b723c6a2a49c7f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "15985c55f710aab7c513b81f87adf29409baf623188af4ecda04f3f96b8e66bbbdaa6370a4d28f5fc9c481951e0e06f03322f2f509f3c4f7e4173bb35377a411": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "01b546b3d09d263cffeacc21c06e83438caf0f67f846c2555d45002c4f41614d89b5c54c44602294f61a49162c4f702b3e51386b46a8245409305bb985020adf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "130d3ef4d46201a383cf18359044b80198fc82c5d9ed88b7c51eff595029e84959f836bc3b483b22c2484b01547321efca123ed77fb8495be229a13f098baf3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f6b1779fe63c39573e816139c0fee93c3a3967c2592689e6a67d673850e98393e1b761a46948562cce4b8e9f6354ce28e45e13709e1a69c3d1a57d6d29e48459": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99683e55cf6c23b8c170fd449ab7e5d11ddf6ed8f407f8668f685ae98403bc3edc20d03ffa3aa74ae59a6a151fbb902a75b9dbfbca35ca52db8db18cb84436ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a3d98eae5d73e9ee31e8086692db20903884b4b4cdf319e9c880e077fba7bec7c322902dfe0a00d4b538a65ce28ed44d58c03a09d8c5ce89bdcee9fa873b42c": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3f2886a92f1f53d3d83aec30e60f7b78124e202b3913a73760048eb9b5f554266c391a2606b2a4a4369b32f47971a3f7d69f2de21248b020509e4e074593d97e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4be8389462e540869ae0e45c672f423f3d6ff539232df267042fd6f6461ca324f8876027015c82af5652907ad138dfdf2d3ee6aa3709241ecdacc3ff74ec577": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "03b7d7ad4c419d274523a2ec2cc704b306ee3b48af41efb58b337d77fec5f672e59e91d0ddd1200cfb01e7b8f6d35ef5749432fd68b2e913541d0a24b3b49db4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4183acdaae68e788d970234f6a6797f0726b23430adc53bf6cd828ad4c780b8ec1bebfa91d097d374f423ef3a7772845ec1c54c9bc218149f0c0ecfa2727723": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fbc38a7d1867d929ddaf58aec86c3560d843b8856cc8286a8b6795c0705fad90fbb628de4b49fd211f77f12a5846014e7af08a225cf674c295a1393c3965eb10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "901a48f923b0a503fe91690cf36069323d0914a66aad88e56efc3fec296651bad8d82cba6f370e1f0c694de8421ab11898eb1fe1c7fd2a3a499a25a9b7470432": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1cdc6881b0708953f3dd4cfba0a9751f77fd3b3a70fa37b2111c80a604b1c60bb63ede10605c80b7373afb70bfc568d4859daec7cf493a9993ac10e4e37def8f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "018a88d72b9f171526fb8dc93aedc5f5b181450ab83cda34c941b8ab0bac09389f4608eafbafbc25292228bf822140c72a4d305da671d3c0d68e42d9b1b62446": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3e0cd83b8d68d40834b6500e4723d11b3c83a8b4da23c555448c6caf7f6c4203696b63d0a7acfa85e35d6817df26b10c230e2436a70c3ae7c75cd69d2acf672c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bba0c585addaabbf93ff0387703d47aacf16246a5c962d32a7ec179d80159b40c223e0ff587426cfa61cf18010168e3253790f7d2e2f363c54f3dfd8a96afc91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "195b1a709958076e9b54c5f4e9a3ed00fa3ad2d88f0aa2541fe5dfc731df039a0eded0d92cd8e6466a2245321d053dd51df2ea11f9521c25b60f4d3d60788908": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "83bcfa471b51cebcaeb0905f10a6c1275f43e6cdaa8747890bb57d5934c54e4b8d7d5f23f000ba50e83261f319f53358774f47ad2b76663cc103f2267e7e3aa8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55560adca3696faa3cda732b07028d8d80f936bff93a6bae235aa33c166f25e7b7368394628ce6375965dc98bb31423ae981e864e9c521c4ab19120004b9a1e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21563084d826953a7f1e254a6712011fb5340328db8189200c4fc3248728c8124ed3086ffcbe7de1a757b81ac65c9c9243a7244b1820891eb09467656bd3d1fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "322fa527c0d7a72295511493225298b95ad78ce48464e239c59c9b656197378c697ce69a1415599189dfce0d36b8c1b546a1c7ae650dd227c84d88a019f2dedb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3b32357afb9816b013c170fdac77f5f4a5b0563d7f3ef53fb8b6b030fa59d1cd6a56b0cabd637d77706ed9ef20a4a884aa240b06551b59262e762100916252ab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "57259cfc78322cb5dd7a4e413021b9dfe00b0c6e43071aef3c63c717c37f327d1254f6266556b8e7cdd27386e0515ca375063b922c15b6d74153f347c4d53821": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54736d8b4ca55900201ae46da8b6188d67279e0dcb746e0d3541f45aee5058cbf126905e1b7ff73566657e1d81fe48ca18264f1ae6fcc87bf37eb22f4e7e9fbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "604fdb823eb09cfcfec79135c60e62f678631cdf3874a84bfa3446667f1b7c26a777c438f8d5e6ec3cea0391f1e8f508050fbae028c15afb628ed25de04b4a3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c2d9ac6a996a4f8f718feb0147762f73905346c662ec4f7631502050bbde1dbdd5e49252982b50d28245b137991964289277eee20d8f41c9831b8e0aa560b9f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c12bd0d18739a34465462dc5858ad32443bb88a1d1062a6eb6d42eca15a2ef4859637ecc3f4f4a5dd50e742c5e16414bd065762d550a16e92c1fc6105676e12f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9b34444d864dace4a7c39a95cee7728cc5dd89558a40259ccec1163949c6e3ac96257b0aec082dff98056b307f88dcccdbf46e73438665ed95a6f5aa6cca3364": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f3fdbcaff51067549db62350a3eaa337bc851589e310cee9b5ff9b52b17490a5ea1850f243133e4fe10cf3aea5ea40d7b37612bcee79fd94a290c7f093838e35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2357d1a35af6ca344a6e8d5d303755a936ab705f21bd2e791c679fc3d7a7e7d87d8d1e4664e745f2d29dfd4201bf579fb4904901f290253748ff53d3d6ab08e9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "211ec36b620e27312d6b2f5f12a272d07d3ee87f77a9cf73363b05a555a5e18ea696fb30bc83f692edccadf87a6d67d7c0663e9ff2eedb3108293962053f8a27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e0e3d030425b4b7f610f495b7f591963fab437b519be7bb090841a8715e46ab676178c6b99f7b3db85fc5a974c21decddd8e203e97887fb8177b20e64f12194e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d1b2558d94a429edccd40081b9ca4af97f8e18c75cb2ba051fe3c9fafa11dd96c921473ecbc649e0577865a5ca8aca95eeb7c9a26e9836836e9802c2bb351f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05a5e665235690cb9c12225fe49a2895e515c4557726df43f334a3711a98da193e133f1a7809ea3a1d9c71ea6a2f7e53e01d1d4f84c255f317884e476a9027c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "099fa70f7e669531fb8fa9f4fa8dc5e0015eb818f26c42b48f0dc11ba35d4405cc76506ec8232f873a0270f4dc3dc1da4fc762db296a471bae6f7cd538a35ac7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ea642b6df140d94e114f290d1bec2765939dbbde056739f1cccc69a07e234710aef7ad48b42471486a47041bffc1ebdbb4a8cbcf021a32447b1ad877187fa0ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e67744a5831dca59d219c598a417daf7b561d155e761b932a144f39b6ac5a698d8f8187cb3b3efbc85cd134098d63cd8349c11343dbb3a80a3fc4e0afcf9c1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b7a1487e5609ec81b5dc18fb0e81cb32efa350dec675c322b097367b6f524d724fa8ff468551d0185c48ba41e13cfbd7adfe79ce0d75648bf0796c136df61e77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "16948dbf5bac62799f2a33cf243451d0ff221a257da2fe64a7b177552bbfe4488ec9a3307e0469221ea0acb745a0e04b932f1aa85e2fd8c9129d7136348f6558": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d79f22199461ff6dd4f7d1ab969b96e1d5227497e0f881a864e83a0e01b411d98933259d2c23e3f3fecd5d8c54bf0abcb57ee4c6dc30e265f005bc79fc76be97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31027093faacaa186dccfa6a2be8665c6f44b91f44ddd2e7d8f6852d9321e392ac309654005423fd1e09440d4342b530f31892086744cff9b927b261b25e8db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a4f203aa78a2562d8d7c2c42b74083b7c9280a4096f8720fbbd23383c8db57d469edf944a341a7581bb9bbdbe1a609644e0baccf78e932019b4d08c700a65598": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "749adffa29dc8efb3761e7f2ad46ecbd4b0982dbb7209ad50c7f577153dfa6e565b3fc288fa7da1178c2f75be3d008da96f39acc6b00a3a6933871be35dd12fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "841646343fe6611518e0bc9326bb05ed5808a0c6a417b454c845940a0875b336d0362e92a7c6a32f352de2112c02c1c7b72a926312be2476f0fd3c03ffb21ea7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "81c74e2409f1e0cb8a856de68b024e9f71cfe5918d33be0bbd30a9ba5cd89acd695c5b5826c6381a171fe971e9157b8ce8dd2807e584ccdf5c58dcb5e82499a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c5abac333f0243eb853e3a04d14615c8d0c5b3dfac51d8f8034a8cb1b2b26f296ec52e918520b0ebb4fcc94dbc48e8da8f3d8f94d1730086818377e861ae2c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "211bf624d40728bd7c16d85024e9f09a96018e41fbe3cdd48d42cf0886c01834f2b9b4b394a5f8d931f413f174ea5ca8e6fe926ed99ad2e65542a5ebc7231a91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e82a4a00de8b85bc066820ba7b5a01f977a853d7000f37c507201ec8951dbd887ae29c4260bb99aebbf701681b5dc36b62285c72537b8e1423cf0d997838c55d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b4ae01582c2cf8399a9a9f606a5a3b4569607756a3e2bf89319408edb756f31e4b913aa1fdbbdafcc4926c7f576d485ada0b88d120f0183106f17c571e46e7d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d505a914ea44fe7a3c5825cedef1b703850a67c7495ba7cae82c02bdc2f216d02e216d3af2d0e62064eebe0f1479d817485081a88e8a4db6b55239ba9b4fa911": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c725fe608a03c69bf46b7b220837c0e8b1b39b2d9f34f3bd645ed5a9c3f657350980c5c5c8f44658c4977a445281034f5a76974007e5ed643ecd5a9ed921ddcf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1dc157c3d19915f943de01e828980f8f0a369425b8e1948cfd71d73eacf0c233a908fb8fe606425eda6c93167ce807c56dcf51428f7f9deeaa96b7d6d3b2edfb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "63e1ccbe0b73751efbf00f94e1ef70fd24522fbaddcc38301d0d239e415b68300d1ac8aab688cf454a2f62f3180de46f272d27556ff3eec55fe597d93dbdd61d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "da74814b097a3686eb75996f705bda120338ea3b129b01df46fa9f11671948aa2f3fb571ed1fb3325ac226965d6c3c59fad9cddfe46cee8d7f866a011933b1e1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b5c430a0bc26a06d7ad4dc14e6dbbfedab32fa99f2ec9ece5c600baa3f5af3aa6d29b57fa88776b97eb46b16b53dcf36a885c6e6a694495489e0cf05c539a5f4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bc80bf396c55e7815925dc89f9e2a20f7c474e910b693df4304e51c45651b7eb9d284ac456fecf5f12d83be71d406eac89c10755cd1cd514a1dc8ce8c2b92f1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b7aa6a6fe3a8119c0025a780dfc7726a19c61f8a52e4cf595e02c4e98b6d938512ba372ea07b398edc552379632b24914e4aa08fd82699ea8536ee8ca6e281af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2057a1a2c1977dfaad474b6040478f11ab9814bbb1770f5fff0a12ee454d0e683c3f4abdda4a0e3aca8df8bc333dd826acef8073130a187621dfcfbb27e4f74a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "51be56baea4884864d8852e6d50ce5b5c6f781305181f7ea107914010fe22f3c413c41fdaf75c06c12209c08f9a4d844da441fff4be99914da7d33b947228f39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "662945627f44ca432a8eed24923c60d77d2b6120d7b1500d15f53f3fc4b3bf491d8dfd886f10f055ee652e92a3c15182dbb5b618879caf2c16f414a456b69852": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4fdb84c0dfad6dc57338656abb4074f858daddcb0c02471bc356506f5535d76befa379a4205296912ddb06954dc28a3ec5d8083f68d6fcbad1ba523d24472f56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cd44dba1c9023279952cb1fc3cfc30f646c7f41e57a7ec1dade13ece84a141fe7d5784cc466923fc16dfa1ddff9aeb2ee15babd92e412977c83fcb5746403258": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "343dbeec555a1d6d89e3f7df9b65a149c30a3b5d6297ee02528753ad4036029c886902267811b7f6e75384504e96bf890f3d6d30b6181447e18d49d88ff894f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c8aec875be207f3584088f497b2ae4462898ed45ab6a6b05011742443f733e7cdb04fb72c3941393a9c1014b84a8ab18d4b877a879a9004699f644aa946320e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d6f43bf73633e1cd1effbc89f52f2c819b0dd83a55dceb88639889bc4685afe7a751944c829f411a78a2631584099018a246bdf5bcdf7378ccef0e4a34c9208f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9604fd29e55593c86e9edc3a40663bf9ddc287edf977ae01555ee307b4ea4812bf4950f020cadacaf7294108d67d0aa9f16723a97d00a005e81dcc14737303a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f15bbf2f03952802551f0c0a8a0840da967aa48a105ecbf97cace01d5d6c6c602ba1e25cc370a23a70b47724a6d58834ca5378c8edefde3fbcfdf355c9d02d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1b025f421f0cbd530e7c87ec1508c5a0b305f214e11e659c66c98e117af0386310c177771751746811bc0d567cd2adc04ecedb88dd15961015843c87df8c806b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73bca36d845a050352c46560fe1ba2460a5c6a362cd0a6f18316827e6e0b35c382044a23266eba4c03ff984af2654dcbcb151026e6becc3ff3411fccba8919d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12ff3f0f90bdf2a96db13b4aee3848fc29e1f8e68498d69d002504991de28387fe127e3a6ff374e780e5cc2a2fbbd1b86acc4b6945d5c57f474a86eba4a62e82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf92224f7e21728485703fcae7d47a7bcc00b9cbbb5246057c1eff1ba5f4928538bc48975fe2e949cd3ee501308804186137ec16d2fe57536bea1d854c5eabee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "473e453b74fd315a528026fec5f4c4128b9fc8704c691e4c507361f91cb01edade0e5e755fd5a09f742e007740903a229052dccc5b145e436d8f5cfc982581ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6acccaa23b403ed5f2d20d22d0483e37f1ae638ebb6a61b993d4b83cadd3b20a9b70f2b00dfc2bc6e98b12c8b40d8fb365d9acd35f99cb3baf962bd2695684f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cffbb099638c976ed945790d4b1ab75c8b3a2b63ac9282dd72a769f4ff7635ecffb9f8b2321174e3872a969977bf7ab96a93cd00e16bd7124a8935c0e0993e12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "458cfe2eeadbcbd0e7406baa8226cb5cf0270836dd776824586cbfff0ba75444c5f26a15fece8cee730b6cc3f7a4c0304d28a4c18bee123482dfacc039bc4f1a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "590f5be92eb758681d38c05d55abe7ffd0c264214b0ab859627c7531db76cce60e92d78a8e1befa0019a0fcbddf406a14f955c31eb62ba13e021684ec2663b97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b913559261d52d8d75f1e489e9b048c4d5cbae2c0161c93519ed3e89089456af8342849fe385ea0dc37553c7d345de20fa634fc0a1f49b7c2aab6f073992e9c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7af814a3c14b64a627cea7d5d47c6b95a493ff864c1d5f212d753afce8c65a154241d5099ba464e763afd85c5ba41f4991de6cc8a9287013163ddc1c537e8f85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e6c3465013e79bfffc5c49a60e8b8522cecef302d3fee3ba2160d720eb9dc1e1f6c0afe130ac89e71eeec0f8e8194e0b1e2802eec12d271155fe58019ad41c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58e967fb9bf0884cdc9edde3d7bf62fbdc04dd9da44a18f2f69b4df5f7adb9ae73a1471536436371d3951c9a5e789e491cc2fee4deff5f9008a9a6d1d6572dce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5a3ba7a5430a6a0016160be2559f0b75f027d39c8a7ae3b943c00c5b3431c5d17f3a24f9b4592bac0e684e703a3e0fb0b71fed7a8d4b5a065ffdffd86655ffaa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "453c04614e68bf5a2bed2f6dea4f14fad84c0780bff5bc58d50a1c3af8c271a4b2934e6012855ca37fa7651152535fc839011838526096357b7d71d2859ad8c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "830c1fb45ffa72eae18967232632d3d7b686a1eacff389d02e90070bab7c08cfd0b8266c826a116dcaca25e80876a22c164091767a32df9bf930bd3d137e6053": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5a6a7e6c7bf247c1dc2bddfe383b9eec0a588d612243e1ffd552329f5797c80c24dcdd2648d25ca4902b2c6c1fe69a86474643f44d5ecd7badba278e7657f2be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1005b57f519a61a630c52e7188284f51b246901953960ca53cb068b8da81a201e22ad2d69fb8f0c6c067ba1ff0d79edfcf32e1b3e9f09d2ac3e0d585ad8af368": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c6b77a2bb2b8e0637c86d6c418df081da84ca0fc822ee774fb7228b77452fd6b68481614ffb449e71e576cb17131de4517a225f2b5339476ab341bb3e8ed1c20": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fc8517523e35e900dfb9b796c232970f41224c321d63191f842a045d9fc3159853d1e41cfa27ebd4ac4d95cd8249425c228e0b3997308ac9c4bb9a177da7857b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "15bb0a9b54bd2ff1d836cc6e2a5e67dd6078a287ec8f3914019ae2dda8007db1779b79904bd0c0e0dae978e982ae64e9d4810809512fc0ab2a3c70213fea3757": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "db881eee51149bd070ae8ded32ea187d5bb86b8c104ea624cefbedc07b90ac72b0a70c6580c78de5ed3aaaaa3a1030d91b3728ae6ece6538ec48f9fb53b076b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3886f16f5c66a251d2de3c43b8dc7a465017ecbabf26738b3443e7686729af0d93e4f7f6c3ccac27ee473ed59e2a01519c901771880b4cd1af462c034f0c70fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd6cbea9404b36aa6f379febdd3c4d604f6bc4196772c99182599989f59e2704b369cacd9395648ca7b77f585b30fea19787dd6df5b312fd6932ae3f6cb7a4fa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e1d981c2fde5fb79e8ea947cbca0b4c81e17afb4c1c50ee472eb340a907d47ac9ac4f9253d341268e243af1462980e781fc2270fd5dd121f0523b7eff161fdf4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7134a575253f60082c0165d417fa8fb2d8e5fe4d04a7b66dbdff28dac63b5878ce55fa91d3e5029ebba33b1e143ed50ef05c4925a4621b656aeee701b25760d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6998db06ea75019d254361f106898caad1339a7d37b8d7974e929b8c694524573040d152e25b0d37645a9d806437a51a1d1d268802ec74afbd2a35e2dbc82e79": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c1ac9f345e047292207ffe8457f518a80a9c6c4d7165b1eeffd532a73c6468573ca76430c6b96a4edb97018741c391162e212c1fe0aec04b67548604f4f46b2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "db8364285268213ba71c0fa3d4e2dc694e035a5ff1fb5cda2da9584756d611ed6a323ff5ec31dc8684cf95915470e4675177fbc6a2ee28820ae440de5c734bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aadb58bb67a6152a831a3fe7a99d188c19a2ed284a95c6fc91f32c31c85d2846634f54f9b962cf48f6e07a46179f5290169dd6517943fe3a33b36f623651b15f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aabb99c7881e18770cd0c8563ee3b508f1f43694411e79542ef81738724eef30732857246fc128f3ba46a20473d7830270000290624da57ab3c4f99983b2e03e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "02c7135bd4574bad743cea5c7049799182ccbcdc52a9aacd106b8dda30de32c375eeaa8f04e86cd034aca441d429ee7bc692c479076a29d71b0cc90adbc4241b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d59c5d546083168128662facfb1d994bc8e2dec7f189d290a5e0dbfc54e392f4fedd63a16f1dadf0712cb801d4ccf312134a4be0459357578921c4fccd920dc3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ad546dcec41867d73a85a8af73c1b9dfa24d33aac9c9c7f046011786ab2d61bcf732bc5f08d349df9f0328499798183b0984edddc5c352d15f1bf396ad26ffff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d21b42606e1b33b67bd6724b25bc4a416c1cb424de045a5dac941163f478e3ec5bfdcc7881a7f83e63c845c6ce8a37cac0cb170a00ee95be5a1f2ffeb1f8772e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9ab01d18d9ef315fd6349a4d3e0e339b0ced6786953bfe1f784c560732a162bc54e196bb5f6066a910f9274591e3f666cbccda1daf4459010d08da2477d9e1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d00eefe299ca6c20fd87dc6c2f56e784a92207bd1e6af1c47f40bca8e77becf6bea1380387132fbae2f68ab6a40529574a9576056c65c9bf003f4e3f2ff66f7b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c24717f12986554742149cacdc180668236348db277562fed7e6f2c7351aa22424680306d93432c40d47e5cc1dd730ccbac3725bd7467d163c27dcab7a401f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "33f4c5be69306db2e01e7ff9f1b3d3ea3ca9d265fb69d3fdc14881526916e169d396eee59428dcbea484215bcefc2e8c24979a46a8f4840b3b4fe86ad54c1c1e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aa65db77187250cdf548c16c5ff020724152ce9ebc62a3e465b21bba45dda3b044cc87023a62d9dbcaa261fcef4e95831578848869b0868f4300255adf6d2979": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a71fbad16c8913af1b4b9a79fe06e39aaf0631439ff41338a0a98a19193c4b463da2bd72a7d453e204a345dae3f10028f8c3f9a94a3c95a4950667aa81c10ca7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "65dade6591384b04951252b94441c14b98d5fb357a3ddfe88204e7386f0857b9781ecce296edd6a0ff71ef997c9d6492dca8ce18532c935e049dbbb863c947c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32277f4eb03e76dfcec7c36a963c4ba23ba9b56f41cbca47778f2f2c545d83fc48b4d8f270cb138675d5425e536e2f6bd554723c7f8e1543f5e0c4fdc9831758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae9d8387176ddea111c01fbbcef95b80c33425bc8d10fe4466b074d3424b4c6e0c103c3ada7bfc7035bbdd06bf376f4934cac24dd576ac1544fa9826a5caa9d7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "569eed1456c018547afe04bea4b9c1b4b831063fbf7f01bc2e95b28554ca699432e79500e4bebf1d3b0b0de0639a923b9dae716ce8d280e99bb2dce1a7b47867": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f14ca132129407e66421d3c0e9640f93ab40fcc4b17f2e32a8caaa54d7d1ad63e2375d167fb2238dc6ae9e8e521dc1178c67571a222da2d5a53cc110596b280d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "70a5fc47fa8c11a2342db76015f70f9b74d6b7ca13fdf8c5ebcc1ddcf7ab9899d340f691eceffbfde4112d1815f94c35f0f5227ba227e03e7abcb0bf131b3f4f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "89c83550df1d0559fff7eca2d5678bd2ee947324cff94d9de9193b276d431176ec5063fa5dca842c2f8ef32fb44a7ec60da6d77c6defc8e7daaa70dccbf70de3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27bc684b8e2ee4793ba4464c86c391185ae4836e84c9be201e6b0320b3561ae0158fe2cc7312bebf878730628fc639f4170806ea5c2a14395d7aa777fed54a40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6c63a717c2eae6541c296a162c2eab21f7781ddb83568053943f0177f7fc337afd2a975373dd6afb439d934847177e9e34a651767fa18e8ba983ab1d7ab792ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bfd5e8817543d145d47bfc44c769d063d0b9f568e28ad69f2ea891c2a40a90041a61cfeb7d67b80cfef32dde8a061683cb26898b6ebc49d44fc65b881e6819cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36bd043851b893b12c0db0b73d23f8fa8d8c8d940d7a5690cc9744853fdfda9bb1d1d97120798921cad47039fd32da0c097208cc6553db7ccb04d5a8fe417eab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96d31cc0d9178ca5b14dd6c114d97c814540d950d7efdd3780bae23698b57dd4c246a70d6a6ac69bbdd245a07d61cc210a1293844ffc7190fe9ff4e312e6e6bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "debab7b6cc9d0b2f97299a7bf11a3fb82dc82c1323c525f9be9e141f28929fb668e1b46a4221ed59a2edcd26bd215ee26113328a277136fa765334ea2776e217": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "062ab2152e724dbc7f7a6f98c0e69af1c4618671192bea0fa86b14c93525f8fc0444da34c28368e6f987bf7d1a0822d9b68f7084b7d1650167d2a3ec5d3724e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa08a25d721203b3f0ce709563ef0bf07a7ad312e1e482f568277b7b27101e2837d63241afc68e439de3860854ae3fe95aaaf24b8a4b40d48fac4ae5eb778d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2f8f48eb1c29858221e17d86274a665eb7ecccaaa9b3fdcf0ff6785de8ac62c3ecb6c048a590647fb878da87f550231f24e625a0f2a3b9e44b450b1443fc2930": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac3d8fb909aaf9c59464cac15db964ca67c63dd1fc507aa657b736f0daeb08f3c83b69ea632eb5175b22b66da8b7e77c311269e41d45df69a3e6da9d24e3ab19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6ad6e6e41f2287d21e8d77f2ae792e97e3ce529b9a8935b43c51b8146059cf7e6e9116d3a138e16bf442e41bacea4ea976a8f40f1d1bffede2c6365c739efb5a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b6f33343c809333ee73d05ce2211569a3754c6e0244e578fe6dc3a5bd823241db9652655df9046f05c7d35b900c7e45d88632c827e8c3b7b834bcf912d7a2bce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "155f08cecfdf3175590a2a21e06a403bdb98b32598e99bc9281972c62a98b5cd80b8c8547c3f6ebf560c57c40e9803da137ceda56bc7213af65f56a91937e923": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f2bada4c3df8136ac0a8b7165fa0cfc44318050da5eaf5b22a21c8a38a3cc3851fdc3c0364d2a4dd85fd933b1297992ad6bce1032d39a08819f88e9ddb7fb6a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e395dd61f8d49a3acc99b77ce837bca6d876dcc566426196e684ba39d1bcfcf616f1dd4e47318802c5ff95235c8d85bf945693b216255686ec30fd4b3e563bbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b40097cb9eca79d394816369d281c33519833b66e8637efc7b5c2d806ebb888385de893d141267aaab808781b6c0d33c104b96d6d90311c747962c5b155b3fec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "762460eca6b0177994a812332bbc5e5224a9bcb0616411e40806fb37fd4b06f423fd2c8bd0734485a9bd059facc76b3fa542278bcb91769082214958513af010": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ab0085b50373a3b6568e0f83f763a923f69704e6387c627ae00c62f7c81a4bf0900ae262e69c4f06615219f587322f044e967b7bd93e0880b4e41ae0698d0f30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2369a5ff7c0fdc5e6c1a1bd5f42bcad6ceac5cc564651e7bd855a58186468ea1fb0beb0e85b238d8436f4fdaebdf54a21e91a38116cb023a7ebf661d2531eb61": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21a08424a50e89cde3b12b896467bf1cfaaee6f32dff5143f3fc508c86d9c840639b550a4a005b676fdbc47ac09b958a9d45bcc427916fb86abd01190881f59d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "553ceb3b5f4055e81bc97d7ce0f7fe72bdcbcce56707277b46b3ff9ee2cd78488531bd5f90e621bbfdc3251d8f15facaa22a673e35156a80811b27a6ffb5c9ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f6fd1bf814bf78db36452a956fcea980019af0836a5f8595f38c0da6b39577bfaeee2af57e1a1fef2fe869636377b495c6db5f93746bf948de20d9889a41297": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0c4c71e39f18f592d590c4f1d127c38c2e8bec19298fb2485553918fdb36c49b5bef35aced2b36b4d989a448aa1d70592ed8ad7df6f7f3823aa2dc18a8074ecd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cac6444713b4be7f9c60cbfcd028f609dc8e7fbd4313a509763fa8189d95e7cb5cc40cc54f6be10889c74558c447908110e29b99f9cdc9e7948de630f67cfbf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb6945c4699c8b50e343178e171cfb1db92b7f67367c88b40fa3938f64403dda357b70ddfeee397bd41de2858f00b29489707f74719a6a07a092af2b810bddf6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d95cb60428fae95821e67441e9eda1bcb5ced1e1953c0bb0d327b2d347ae3e5df825a741a36bed5f306de9addf6bab5e0af50d7753466600f9956b426af38318": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf53235b697210647048ebbb91a441a2ab2d38eed78a37e9b818dc02287c2a7cce79830e1abf9a2ca6800e5ad68f6cfad9d4ebbd90a0147e36f536cbcad164d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "77d817e2ec74d018ae7393950a420ce3394293f4074c4181af9e414cbffd064059ecf05918b5f757b33be97520b40ae69320831c88071acd2a031597b98bd30c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96b0088acfd24dc20c5952b926ab1ec48ee154b9e08d715a40ca02154ae8ff642defac1307cc3592ee6975b1714f47b300f887138d77a48a132eff0e7da05008": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "775747b3d32fc5bd1c948a0095c3bf97ff3a5a4bdb65052ad2cc733ee05e28d33de4cc30a1c6b77377977bc93fb4f1d63846ce19cc5517bac2d6a51e4a8789c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b2c3ca35ad9d1e8caac63bc2026750f22ec10af97c76c506fedaada103391c15db847a597a3f128ea5b9c05b6dfd6c9973b3133e33cd31d9f8aa1d4d5fea23cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4746b29ed9965d61d44f98e957d9ab5145e16a4a5f8cc12def57e47154bd37864ddceb688427072cd791d92185b8b5661084e796e5e185182759062d5ff44899": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "810d9902813fcdc05bbd5316a3b20892f3b941e0880df4e67547706269acc8a1fd511d2b9b4e677121d702b4b8f46cbda359859b123ba7d8d03ec0536b098c7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "398f9142dba738af03496863e624f49b92d2402fa6dd8261b4eb440b5a1b03b5b4defb5ea642a51bf52950db514aabefa7c00ae9e23ccbe1cf33698fcb25382b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "922c2c984fe7ec0054d47ccf75b9e7e1d378c2447df48566d84e995e5df23eb5a18d6a35ac2f4d2930cae95c3d4342e830a87eefbcdea43d40e0ad71beaef4b1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5059dcdd370006356f177c093f2d537ecd338c463f04f28c2fd7b11a2035cbec809da8eba43abd7008c1b87fa35686cbec181084e6a2c80abcfcc263b92913cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "836260f13d4a5fba3f2ff6953ccfac8f9531314248d2c9ef6a96e1edc3a0b64dea2f4431564fb783847f297daa87eb490610109ed01004d36141047e2c406994": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f9a450e2d31300e51afdaa5e9a84d8943ee38c11ceef2799fd6b2f1094a571a6a2deb29a669163e78eeac52f01dfeb6e67f047e98e664c3b67513e22bbfb9653": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "98826483f3722a122d47f7ac3763afba4636dd83641f253bc995cf559a4191891eef955c0eb3dff54362c87331f5664039bec1780ff31be9f1cc6b60653db383": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "777a58f2da25e27b5c3d4db6d35b6dc2faab61e1dd405292c86d79fed28c24d50639b2af4133679126bcee445fe438ad6dc1f242316e5f5ad7b2e41896b0a6e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2da670e3ffc0145af8c6ac3345214246197921e8184bb654be9709d5aa05575b3026ecf1b7bfa7ab19f405ece8609944fc9c9e29c45bd1c481ad029063467165": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cccdda395b0d9850b99c2d738ae533b88d96546368323ed331d9d431762525097ecc827962795bd55ad5170f09957494f53a2fe72317eb20f037ef5b61dfade3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35b8b3036cf5fc3695078e9021cf1857ac1589ac03e0867141259849fa45c0e622a0ba50f6999cae98de4fb297b650d928fa07065859870dec9d048d2088d168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4bbec59f5677e7a9622a6a2eae696a448330da121dc7f906e638bc9bf1af137479e0e17f5bb99566d21bd180a6bc448824e35a9fe8cbb745dd6769a7d0d16e6c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9caaec6774d71b5cbfaa42e6168871bdaf6cb55f0d2d58c140a7d18965a1dd9c3a19cfb013334b31c25089a0ffba26821ad2644cc5e12d154fd55f6804811017": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f630b5d2af2272d27d1814da01b75574f87171f9f0a6f2d3fb5f67fde5f1002ad4354ca0e97e54615c7259d3c1c331404d9d7fea1a40df1c8bea9178aa68d90c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18244106b9d159ddfce47904b47578630906b1a4bfda1d11fbef48f7ac2156065a9133dd2c94762d87a57b214c6bda890c5f9cd5bdbb2cca4db3c135e385f67a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5284598183cee11372f3a1adfa937bc7a6adce597a5139168b1cb8042fb9127267f65703310fe2a37a1c48a78b6a27518c845274458ecaa6e16e707c2bde23ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "89ed2e02d6a1b7499a3f0a59f51cfea3ebbd07a97c82b0d5fba0a4c3a7e28f8435bb129cbc222f107d671188e40e5a88d0fb000a7106feddcc2d6496f7b1859f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d3d4791a837606c1d9b9dcf1daeee5353c708eedd864e795fd140860ac35b653a510b12f6494514987a5180e29480c3631d3abb1c4e8348af55eb8a6d880ae9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "29b44fa836aabe9894773cc43b6561c9b6bdad3b1d1bddcfeba2a5d43b65672248f38ef5349d49c83a5c9e96d7411ca740dd720bd86b43c0b341440a9e50982d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4fada7b89a6fe67942f6e22efe3c0780ef238172e36d7e898d96faf8c2012addd74e828f94602b60ab3e89b0b6282c9a9fa6eadf00537cc043415c4c1e253ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "844a6db30ac812a4ea72fe570631d159ab88d3ffb7b15089dae44d11656004a1bacfebdaa12a5ced2ce58823d8ce1629fd053b84d385ab1128000c5f023fc1d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1fea11e4002b8906e6b895ae5b093161f1fc841c4ab8021fea65fb0abee32d16987c1bcbba4523595da9f153363beafdcab8400dd39ff39206ead55fa1e41bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e10ff3341f1bd8e110044a7b557e58c5acd97ef5a1055aaa24234a3752818bb7dc7fbd696a1dd071b1fbd20517ff86f126131e017fc87fc14359adaaa5802e3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ea859e38f157319930f3bef1f9b7674babaff64bd4c8428e991c014f395d3b922885344573e56e1e7cef9da2e1aa8de5bf304600d12c387bc48282ce36619fd6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "873bad8122c84c45e76b0f25c34fb4ffe59e6c70f16d8b8c52877a277ad6facd11f444c02c4ee7925b1f767fea498a69a25288f22bc54dbde60e07d609766c78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "222e316953c9e6353e778ac10f0cfe99a08df37ef377ad3f205b2fa84cc8f852efba446ac9bd2caf59596bc30a2e1d374bf413962edee29e3b37f53534e1b8aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32e8e2f1d82ac61d3a9231ce3553cb9da46dce85974921e7fb9027aaecdeb455d3db4e0757d3f2903a625c28ef040cb45ee6c61a5a1952b26cc9b63ef37dc15c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d22424cee655249fc81566012499b15abd5788df76aa4ca55dbc69c7e93d2ca85e5e1e7189a2eeff8c626da244b0c7f5ff60b6fa9dfb8773a10de5ebfce813d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac3d2c050f024aae1b7569fba174c4eae57536bc5fbba1236ca558727724d25a6831167a1af6053d385251e9d3c3104243672ab6d9acfa96c3f24edd86456978": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4a3628ffc4edd2a64b5ec0e7878f6f4162b99076c722e590dddee1924ffebdbbb63d2b10bf701ffc2885a86cc9fd66622288f39ca439c90ac5aeff793e7ad09b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55d0a5ab70e05e8f12e573f3c35facd342c5456c8c792d59b962e767e7afe0115dfff2952cb0080aa1f38498a6852033c88fbcb2bdfab219f477c67b13c7e412": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "782fdcaf9aaad28fd572e1d70e116f0fef5a1b3f8550aba80c83b1f0ad77c5204a9eff5f3594dbcc1903fb37b47c2a04d0ad29d994e5eedab0b59a66859c0944": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b5bccd5e107993c1d646029090e18ea11f833c72e30eff8289a13b7557454deed09d45d5ea31715dcfde2b9daa2debbf7cf233abe7283e62a044bda3bdc3923b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "92476c2d8c6d484bc67dea7b353d39edf80d12aa06522c70d033db3f15ba46fe008948b9d4d0e98a35526ffad17830dec08657e229a59e2f5cc0d4cc69cef612": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d156add6f77e17db9b1966604284787b5f47b3c3ab0690ca51bd7f9847ac2a8542c38f368576c36abbc2b1d7f67de059837410c30dee6155ccb58784413e9a55": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d779846e8b138759ede809f39f0acac203f491819644e6a9f7046ecd6f14e498145e094565e3213003a177d3561360a3c2bf42549015f5ab94fad84c6b6f9a8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a739860532fdbdca3f22909f5680ff34152d60c31a2d7dad7a6b6f566867138767e901e99ff59a6a249a28caec159b56bd5a1b465dc4e27962d771f3c315bb1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dbd4cf285d270c4b16e06a93abfc0562ef612bbd3050d160f5bdf9e7aa67b469a86903a35ac942ffe3e1e630d7d642d606d952ba079af2c296f702ba08ab880e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d5cb2f9fc0c212fe73e2cf551b44d2f595d22586ba6c49b70a125c19759abb911457fabb71fd5a538c77427f9d9025fb771cebf919c21906a5b8647426f03ff7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "906ac5e2091b7661e081233ced1dbeeeac4c13034aaaf9d9c6d5b4a3c50206734493a64f9ca34ec7b93506455a7b23e89c0dcf38ef63aa998926efb43ab52d22": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c85fa4895fa8448ade159b02e90d83fe4cea12955c38f0ed167bf5b434b4dffe73b6c4301a6fd6129a4135281c569d2b2d41e23c53419c26d0afbf7c64fcb271": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0e5f103d06a856dd53c3f83aa5191f6e589738596b367d024eacba1f5a31fae184af98b9fc265ff179d4b18a782b9a1f3eb452b186eb6cefe19453e2eff88602": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d07ede850cca297d8d40f7ca7c21c3dc6c57f1e7a0f37f1d61bc9251a373cfe8e23032147dc4575c4a97addb043802fcdd6b8a1a5a60c2bc88e90377bc9b2409": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf51cb7a11156dd05e949b6661107b681689289da5498924028738dc08da0e014660a3339dd94a373228588e0196782d6abef06a2fdf98b36c2e33c1bca752af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1e086cbc9fe403b65451f7eaed36a842008092110cb2bdf9ba2c910128616818154bccc245aafeededd84dabd6b8bd40c605444dfc359a24fdb490976fd6443a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "77a402403912ff52446db8f553d94a9c452255548ca579b7e8ef678f20d5ec0b08eb983145ad2072974ce4c66f0983ba9b94f9d7da65a585d2331fc305a6e585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c5bf838032cff4148adae4f31258eddf58c30837d2037b2e139f947b4891336d1f6f97ae0cc5262c9ec6b5619dd60b726a284942f44ce3b3fee3dc1c1052dbd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f95a292dbaf7d04f92f09d3254b000f80ee69ab60f579e50b52f7c8b8b7a9448cdbc35d40486e5ce1f110f9bbd21e89a15ca4ab506e5272eca06dcc53a017e91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "843525e8a43f43a95c66d43daf2ce31cc444791fb1dfe40eb4cf9c430a1b9ba606bb875a803910495e387ab95184057fa6ededaa2437a33f6cbb4257f44e880f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "193a36c6b2eaf268dc6988daaa2d43acf856339d6f1cbfc415968d6bb50a69d38f6476c93d872c1e4106b7cd7c4588b9bfe76b9aaec67ef0d342ecc855d1961b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "935691b47a70ef39f6aca6f09aca4963d82c2a9744dca87eacbe74517244d9a0a10fba00a40305fb0a6582cdc0c4318522ecd3cacb4e730d693ba9b4178089bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "802429937373f966927d19c75556f332136e57ca94a60ba47e0ebb892881d5924eb04c2bac8786473faeed0a6f204cd30d1c9ef642d5a4d784aa27b8c4cb67f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32e416e55cf1dd2f0a1d3ef886a2292685f24fdf8d3c92dae832ab1f15978852d6bd25cfaeb9cd0111a0852bba97901640c4c283326ffb1d543890e5f980d3a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "03b2479210c31b8e646b5c440339e279174af0f7d114644f51f85e1e33dc603f55ffa70c128e6e6bc6af2e071199ec7db4877db537fc23267a0721545835949a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ef9790f0879e3531593ef7ce115ebac92bac7c4692fb72b17920efd0257425f44410d84ec50e7e4df2aebc9334f565a4dbdb3ae516add1b4a741f568a1fa1e37": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "43cd8b2c03e172bff0b6e960728053b0493726ff618d16c61c206734e738a624817514baa800edb75c0a16d08e7c6b4aedb64c6a96b391fd0cc914547ee6675b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c53e8fef5ee64eb4836b0e7e3f3b7aad09e39ec4ef3c2ae7ec57854d87cba084dbb38bd25d92d97ceba9d584e87f2735360e1f3cbf391ab0b95d13e755b0f88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba944c7bf730f575fc98c75e709c46b762f3b0e6f7f1a2542719b7a0165518c5a5cad8279ab312d01fff08ac0d4ca74ea1ebd3ce6b36cc5111e8e13ff61e176d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1cdbffcec86419318f45aaad7904b9afd167f6a03e57cbfd35498b03abbfc33a30b4df52afbf89b75cb2b27c600c88f08442f61c214270eaa2bfe553c3d097fe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c225d58e645f5d455c832a655780dfdf0daabc2d4e41454b88a7dc78ec578d924c48577e89ea82a682dcb93ca9698e5846f340b0b9080f3f900aac5278518fc6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c0a38374241c3a71e1d8f7746bf8562e2b129b6a5b46fd533d0800f2a13d74b4a7b18ecbe4e83993c26c02efcfb6742570ecc6ea59181cd19a5fa21a7bbde06e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "171c6f5f641768df9516ab5fc8a76460cef538883f5b79c063e87da5c0fdff657b16e0fb210ea23de01f4674419598a298e8903c28ccca7de2c3c48089c7f2aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b3eeb002a2450efd632f5fc60028b227f297fe55144b349e724b74ff813775f07fbda7532fbd46aa6176b84359347f03bebd36fec8fa8d0c95d4c3b37eea3da9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "91025839edb9abda690961fc9ad4955235df9a752396fb708d5baf8e0cc8157ad98252318fbb5ba4ac5b32c00b1f101d971e94021deb59222422d11dd253c59c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12c3c2d6ce2554c2ee8760a650b1b8b17f773c39e636a3b3969c7ae65724ef33edbd6fc5ffb165daaf29c724cbac90da62bdc1bdb7dbff57f377d1fbfa9f1186": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa563cca944a0216c8431f50af3cd10a12cecd7bc87963d8293cc17b22f35943c9ddba25ba15faadc2768df6e1a0a17831d34da587346cb9c3e472b22db1931a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bd764d17f9c5642900c5e7cbc28709f7b2b70adccb0200bd27ccfcc7488ee153615be53364f602535659ded0750cf55b4ed8591f9a24e6ea321d39246dd1a5bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a7238cfd12d24b8bfc96e8e50929f1268d6aede5fa2a377b5ac113c6d9f124331120fff92b14e03bf5ed5faad176d90d2123a057c0b416ad9303782364f326a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "373ca776a60c32970d2f3bf1c0e66c250644ca231272765bb10efabcb51eb4b780b4606ab2d33deffd7ee31445907b6447d583d3f3ac97e33ea27f4d1ced1cff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06f39b0f6d2cbd4cdb600fb5d8ccc491c75dde2291f4e8981c78d192391445bcba5bcf3eb484a4737df3a04ad25a94672e8e4a24f494111c863cf50ed2543343": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3ed86b84f8ad78014addefed6939af0f5136b630498dfc660bea5eeaf424c00a30049f96e54d9490d918e06722a8f4001067024fa5d04d07a601b85f5af8a12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2be39289c6d04ae74a937b84a0309f60f923839e1a6ca0c516e3f73f9decaf37981c578b65d74f00df627023de58fd3aa8bc4d0a4c64eb8e1d7c91c8599920d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95bcb73e328e85599421e923282ef3f3fb7a9924f324a256ca17a0e6b19623ebaa2f075394d93dd5627b5bcb9f5399c63db3c434b362b0db551b36dc68dff8af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "319b639c59f2c9a6b9bb6ebef481dcde7e19becde7903bbe004cebc9635b5978f3bdb048bc8c60fb85647f542af8b247c26cbc5310ee7ca39cd3bada8aa3ea8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9c75c30697115e141677e3f597d7ea539424121b7d8513378880e6d22818a244fce7023abbdcadad4ffca24d673385187eda891544495fdcecf6c701363b396f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "419f1951238f325f78c46ac87b615fe45cfc7f7ef82690abf42ef8925c52e44c8f50cb4a6c9971846134d8d96264e52590079a4646db13eb58a49ce56e9a8781": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "19fadc3130c851463f504609ee074ddf7613ed4231a045c059d3e17427eb8585df1a02cb688be4a19fa43ab0e0332f6994d02442e9f1cb659b9d9f21da9c8bf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1d801fc1ec58ca71b5816c5f1252a34ab1ea7b08d4038f7a3286fd49b8582ef9a0d45a1d7f03168948465b349a7e486e61748f596cf751262c9549e36b39714e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fb7a75b757d4a011d2da83f80be6baa530058778ae0654885e83df7762ed99928ee53384cf1d7670a6726f6a5fabcc39036537d25297f8f2e266fa7592c4c0f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "60c50b682df47893d0b4f4363d56a57045dd170843e2455d3289892ec3021eebde1c7e510e1e123161b69359dba5d6dc5504819f141cddead8b685c0d05c05b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f69820440f8278bb91881b123769b0d631b565b841afdb3cf33e24af4ce9924bd5e9f0f65308c18a0b52596324b9327fa357b48d7c937d6ddefe3a9a4040f1b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "00c924c6f2d5273e8a691d95c5a041705d9b9a1f9c6ddf9e20c142bf9c8fc6403ad3ab83f0021944f8c68c3ef2bca23b4da8efed828d322d1bf72fb394dd783e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "adca17d8c2ae58ef3c1a5b88477e49ccc5b77f40ff72e6ba08a48a9bfe7ece30c683b6fe40c4f4ff0f106f5cd5f7bccc137cbe5bb36f4cca31cb06a0c37dd7d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3610963ff7f726d802c11d99c8cd54183a7e07743489cd8f8527eeb3fec75cc6270939fb8fb6d90bee90b665161d201f4acc5533e62e09f35309b51ffab017fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13513de36fee173592fa10d1999ca0d09d19a33f28d731a815e179539d9da91e6a1fb4065db8c64248e3665d1c3103fef96952986e5020c35fced0a2cc5d3ddc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d83c99d79926d9c3f53d82c9b7fc2981885dd6af4be0e1db8cd560178ab3bdadd0832f7af0db5e77e6d9508bfc304b88d0f37789c96d5be9ba04bf4f2d048013": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dc4dc85dca94f32920b43f3372125dfb0ebc481e8eb66c483857991d3c76d6e38f655bc1b672a3a9f0e8671ae1bc82edaf839c9792edd0789c5d0b29d3f25697": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a538b7eb64492c385e85928eea3e7e13bd6298eca05ae30daa15bf426f0dd71f2285e3cd282a1de8ae31ae41db507c585845cc734ee85f265fe69721cc689156": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3f7307ffa135ef00a2cadb91aa56753329e1610c95314195fcdfb756fb764e0be7ba1d2c15e4bdd301f47eedf01d78081da4660102accd50e979a525ae531ce1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae7d1399975a79d8c4ef7a28134b201e5502586f457641a42e6bf03ebb2bddfea2e2f4c2579bf703dbb5b4c320028b00657bddcde74b78de9365466bedbaff47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "682953d133c9737b1e671269b8f15f3581acf62b8a5091de8a4f85b9f36972faa6c79e318551e64cad32c405fadb4b51da4c8b8357c61132501c6b62fece9de6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d8089aa960b3a3328f5dd409531bb1df087da8ab5b8dee7ffffc2129c6133993e87961de7cc2c0dbbf74b1a0276bf6f04c50d9acb2f435ec59d041b865bd122d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3d355f1f53c05582d82d81dfe078c8bd86725a215a0b147b4e0274db9aef1a99beeba984fb8bbb05bca1b9797298ab9da408d4a6e60076c348638ce282dc3660": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fe7697125be297685df4ea834757ddc0dd927a3480917c5f8c89ebd1d9d257fc39cc82b2705bd80602b7188aefc21ecd602dfe8cccd18a49bc5802bce3dc883a": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55f582f3dc0c8284c97b30332017bdc65e4cce963bf3d0c8a4a8b4b181799111332705695fa4a06fe2b7c4dcec5e5db13fb5f63410cd54ba585eab8e44854891": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b2130985b1ca82ed55b20c1e572403a801d5e6a07d0f7a7f8ac9a3760c7e8a82792072befbaf4606ecb4538d1854d0e5d25feeaccb0ce8f6b310750fc171b1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e718ed8d6abcaeefeaaf35c12a7ce511707486562207cd440bdf97e99fc0e742b74599cf12d6b063264f234b2e1122f5ef0a546829826cce23bbbb9069ae3b49": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6c90b7896a6a1048ee20d061923630f5f9b3e679fb77a5722bfee45942982706497bd4d1d9a7c42b1fe28d2c5458fc6e56deeb1af77878f188e104357f047262": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "320c5ff0bfec8a156bc950cfbe22b94b868d52f4a3ad6ea986ec9de2b726fe332a0b7cb192839e468d58da716af805feeb24fdb96cce615da2c0c8c0afcb0354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b2f47e46796f52779d66fdafc348d5e729668cfdbda76d819fb2fab826920fad631bbb94a698230f120acc27be7724fd8323639e42d1291f068c0b18b06bd76d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0f0c47377fda3efd71b35464b7eb95109d9d7dcec82fc7432260b48cdbbfe7b8865aefca4b516defe5043c88765e7de5adbded75d2c325f088afd4f93d5146c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8ae1dc1563a89f766f6ae8219866a16ce7195af04cb7396ce031cc1ae17440fbef32180fe0534538acd00c2a0e14a6451d4afd45592589da0db061e92617b620": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb7da81c1d2c1683e28bfef10530c3b654005ece55b97a29edde7ff9eebf1c2ac72f5d959e56c0ee98e08b39b950ef5e75634f7dd9f134a492a6a8dbc4559279": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8d1e86f6b5c953ddfce74727a720076d814f9226a5077d0ac0c32437fd849a1fe041e867cd5575414fb006517901689408e85a2fb2d00b6adf58a5c61c31b6e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7389044166ff6c57706b76f8487264e94aa6684713753a13426e336eb38b293826806ecf4a6082397e040492933bd5b153c88c4d421a5184f841b35872b78483": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df3137e618f0b3c2b935ab5d74344c40a7e6bbbcf4f22496d10764fd03bc560b8457a26b7bc6f035f8704cbc5973cc662e0599300f170f37a21a94d78312ecf5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e089dce1cb7a584f8621fdff964c3315d000fc9daa183a4a2fc64efd00a47665d6e7828a17ca43ae7fc7d313cb8a277a6ef5dd47d9bdead5100815c33b95ff5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "98dd81fce93d3964420d0e3527dca338fae0250e10149e1414fd857a21d74d79575d7cae9a24ed9f973088438b7610e959824ca51b0e1c4f12623b37d2cedb05": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62e578d52c804d5d2436aeb8f13ab383ae54fcbb78306cc46a2a94af7e1b317d8817611d83eb01e19e8f950446b1fde6d61a244be2f8ab3ad609eafcb10c9680": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8fef4ab8274e73edebea339fe63286ba989a6213fb9381544866b9994d4a18553629d8d477d435eeae10d7b63d40cc351251beb79d06efe46587a9cb88cea2af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7f3ffdea9a1e410c1b1d9e8cb6e2f5dfcc9d1ef1c1b38d5bb6626b7e52372f0631713dbc75c5e39ab811c2b092d614398a790946e7d85eb30caa5dcbfd4c3fe3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "061a81492aea44c02f9914538aca7adc01648e95658f171839ff031a790a1fc9a2ae76053489f069ce85a1e8b49cd4ef07e8202affc15d44293fb47e3659b3e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "675cb27ecf487a18bbedd3bf0d68c38beef0df6d3fec1edf92d3448d8c2b96597438311658d1965e65aea8273f7baad2e4d9ab534d7f4d18c3e29d8cd99757a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d2b09b2a69862ab021abdfc4ddf2a96f2270d5044298bc3d0f487fe5835160570b011717dd905e78aa5109ff36cc89aa75c351d523e58462ef962d155c2a2589": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "330b65e4064b29d7c31dca09f62698fb81540f74f02d58bfd2ba97155f2a047da97f9a42a2282dddd41f62a5399dd5a366a48cdeae3ebd2262a64229823c312d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a0ca4cbcb30c542e29ae8dc8a7bfdeee8d710b5fb63f50bc22236f54e3ab1c93cd4cf35fe280a561baf5b0feb844d9ca7f4e3aa71b50032c1fa6cb48ed2c935b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b653aa85c08a81e3a8b253fcbba1f7765a6997c96e20acfc5b3dbbcb404f6f8c35e470267d39f99c5c291b1634f49ac991f381e4304997c1607616ef7ff11b34": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "717c176ef45882ca493d74fa23976eb1556119644e9c25c8718bbba12713f1812efda61e8f1e57ccecc19a00d5a1c17ac517e947c089cdbc3e06104c5284b881": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ab8101686f3726ecac502137ccad95c433285cbe57c56966d96b284ab7b87bbba4c51e29565f6264c37f6af45f14a91b77341dd05862ce4bb1325624f0a6514": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f58bb03bc1e9c11bf5aeeab3b2cd0e87557980a306cdbef64ef9e5d2644107ac0b4ac0ba9e556e3ae1895c7834a57ae0a9d19d1d66c11c4e70c3c81b6ba4e194": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e237554e4d352fb86c397c9426990655d36dfd7f45ad773e086d633e36ff9b1eb6a55cbcad5a7a8362513263c935f8ad318b61fee3ea752fcc424902bea77980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c523b961acf5084e88ca628f58f51c135811c41a1802a5f98f2c0ef89f5b6bf61a4fb2e1ec7f7f66696b20a51ba6ea639e76137f55da49cba1753db7877a54bf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7945a92d2128148bc9bc660c06b03e18aadc4cf961d0039ce7c796ba26dfe304b3aeeadce81c1e034dfb05c63cd0a508df857a2e09cff8326272d34148528c0c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62638d8755bbd3568fc8ef8c21e5c196653e98c21a355fcf3195da0e3651ad620c9df4fcef0f1555a95adf031de7a466be064f9324bc8aa9de013d1d2fdab76b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a630ec5cd0bab0764d567c592c7b105828305c34ad3b8fe940379712e9234a20616d7098da48a6d782ae1fba3f57568950c5518002f5a8f469ee1594b05f6148": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "af75f3d8e176f9acb8eb08072022c44b6d592d6e40237a42dcf1e9f7068e248ebc088b151cf5c519451d42af82f28dfd7c81a7c6d709f499ac0bc92681ed66ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f01cc666e1c432cd38230e9d74b15633f599ac13bc959a5345cdd600d0d6f4f0d532f74e47a0c40580432cad3a258aa61df6b43e60b322e678134dbb0f756a32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a530d96a3c7c9526801d3c9312cb8103b330f67c58fbfc7cb23808b93aff378a391cf6a27341b1c53b72d03c322257dbe0dd51d8d0aa8200311cb4c6d92906b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "531f4838ccccdeafa0c98eee6e8e9075bde8dc1894c7f803878cf856adda6a31a978391868d1f84e35d27645c3d548e7cbe3fba0e8d91fdebfa59b915615a79d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ec211bcf1bffe068d042e9c481441f64cee03ef8070001c25a90ca6c0893a9482189955005093a43c07cc2f20aabe18810481fe5b9c764974fa54000ef3f6665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "309b469eb74e85cc58a50c92bce14707cbaeedafe87db618e6a875024074cb58ab1119c9d6c94a807a2537554479f01de0387062756f87bbab8efc7398827f35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b8353ca928feb7199d084b8d497fa62a9381738de8c7e084b11711989276835ebebe529427ec89c23f2067505fae59a95b5b2e7e2dec2727704547e37981fbc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "efd99f1de43c441811a87e7a24bbc595af458170bb0a69f0f26144bf3b1794e84f9c720712837e9914a4eef05d8e97a45b0902c2304e58166922307e249c4777": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "109b57766aafcbc1074c843b4e3dfef9eec0fe7a91f4dac373e1bf1a7ad4f2669973c0114ee8b367eb0a92bbb5ed66aeff32fe58f0466cd95c3cc6081a45db36": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b6aff81dac79cec35745c9b51289b00265c929e17cc31b5ac147a4b6efe74302f95abda8ba331cfd7418976380047aaa795ee94f9eeed9cf20be8a6141c95ccb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95cdb3612c37f37f338bfd296e8a85ffaa054e6588d7bde9d5c0c4d64a5a3a4e95204630761ae571a2e4b92cb1c848b01ea590aee71bfc8e5ac9a7281bd1865a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "915c88a927c639623a1288b12430b17b4ddb159bb8e8b82b60cf1b7e3df0bdb7ac67e5546871360531f53aea6d640a651705aa248407a6443ff7566ed610b1e5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3da89c393b79d5d1b2f976073b06760352558138378441da361076ba3b2679acb2712aa97f6e1326d18b5a44d4933735437d1136944e975616b6990e69930ea0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9e532c8df5beb3adb2130d07202e6f98509391e1f55b6c3f30866c1f598665523372e048df59a4e04a456fb3a120793f63286d48c52a0475c15c3acec205b62": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ca31755a2eee8f21e895a4b48076bde3ed27cda3134b799a01ee061fbc5dbfa5f0cde3753a4206e87fcdb3a8e4b73c479947518dacaa913daeca3cf0abf41e18": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53205636e143322ae2b7e4ff83317eccf24089f12e5a27967d0d40d25f55f3e4559cbad364495c87712f9d28bbbe28a6e0db373a84903613fd0000aa8e68e722": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "50f24c8545766e39e7c10c931ce4b01cc63a90595ec653dcbebf5077b3e62f585277d00b1ad99c74a2c656cfaeec855318b363dcaf1bee8d188f829aa5aeeb74": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a562b113f449520327a8f64647be83e879105522af101574637f35ba30da0021a0c10baa52c9fb367a695e1f3953d2a7621fc3110c5066788552c8205ee74ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "74a3024aef1382b8aee19727df430013bcdc33d3c4c14621650a57f1f5f9a4966c8fc8eb30713425e9cfa9e21ee4c1e9ac0d2f3399431f8c37b6251aac627d9f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a53af4410cec68b7db8e16b26d2280992d179681b1b7d4ae0c3f3621ad372c71608098f1ebae638695bc11ddc7d88987d76ea5ac209cf999f5fe0aa360be910": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a54f6dcdd3922b5efa4d3b34fbec83062a7d586f3d18babe8f3e2bd090b97c99a5a1aa87af833e1476ad2514f595cbde1af1afe90ae7074096cc59006fe6b1d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c8956cb95ff054df7d3674d5cc8a1ef3e6d0a6f4cc45e210d69e1e3bc3da46216d7b1e56bfc96197f26d9e2a2c0063b9bbdf337ebf48ff0e14b7e730879c359d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c7a1ca97215648830e2fe68fb9e194ee6c33397385d0e8dcee3af55b2bc6fa456050c52ebe3746ef666f42ca1a048e62bcb1d2bb277e36b57d60fa8bc4f12e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dd6d3670d656b53018a65bfbe9f6deec954077ad0810cc8a3eef78948dd5a8cd6fe48233a77b5df44a27fcc34b9760ee902ff73922186485cd157f2ab57ef6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "07e8e6fbbc8cec40302d163907d2378f9c50737974d699d43ff15ad902eed8c3d9c2ad397dfc5796b063c1b42c6a9c2048136e0a33fad1b1ffc0f6eb57c6a1b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "289f46f85ab67d8ac95a7abf22d920a4e946e4b0501fa017369f571971425bf4c4172374eaacb696f2f12631fbe3b2b079b2dce469e90a610804c4ac8b9f0468": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "583fd76f558da604f4300d9ade2a735f7e6cdad6c56cab1f13ec99f41a592f9f9d174ff98aa9678203e01ce98054c82841d4afe0835ba8bc1fa4a94c55e1a393": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee963a079feb9c3dc9f6e9d39b95888516e05f874f82dae39936738677fc349d395ff170a50914c66cd20a47ada094495e637554483a0de84c45ee31736df0ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8c25c5753d9b670470a1951a8efc777e42ab6a84ee910d515b9b627aeb388a1089fadd60fb53445d7fc2c20fcf8b150429f4431c39e45d8d6f9d328edd5e796f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d69a716049f4a479d340eb3c2e9da12374efd9342116f3dc021454b1385f43749f28c2050c382e529308d9956e4f43fe63feceab5822a550be2ed182430ce510": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2b704dc2de3baac11d8b24fccc299091a532c4fbd5580cb1dfd17de2a6e34118af97b735835b9a10d33c55242a3126b2a024e696ca39f6ded2e1976e3f86cd3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "59b3b392e1ec9fd58061ca21056a716c47132abc870d6b3dd7f25b95a64c0a34de19a1f64617e68dadd9097ccd7d095422c134a424ced380425e2750c24cbc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "602df81df1cf734a958ef211d9e79929d1489524918458514b148458933bf21cae44c0f4dfb75b3a99a37fcfc3cb32e97f90bc7b215fd809c5aa6ca924f07b42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a18baa6052162c73e1267465b26ac54d8a2c456c856d26d37e184fd4f018fe6e2dfd6bd7645e4c64c875d986c4bee3489906590802a4198c0502063ff3da4831": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e8ae7129fad1c7e992bd444727bb100779962c16c54c84778d903fc11e6ad32fc4d5be9a67cab79b28232c920625791fd695c9aef40da85e5723a73e6b925758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9da62500215fa996d9f9671225f3dfbe9c71a23fbdc86c5b09f759e79e6494e174ac094efb13010057d782a891d5f89c7db6c330a0f79ad01aac2a549bbedf86": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1b5f4cc791d6c5085256c94c70d8226fdd7449cdec3ecd63eb45353030deef50e530d65c8343143bde62e6cd0ec5e1c7cc88c939022ffe7a405b260228e0544a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "072a7be5b193bdc2e4ed892b93fd2c6cd50dbf37a18caccce709221693c4530ae80602b75b7670dd2938cea6a8af4b0d144a5df577d9dc4762ca882bbbe1d5c4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d00a0144df585c85599216ea6d1fde8420a412ed526307586f489b063a0fcdfccef90a2dec2e99bbfab2363a0d8d7e4d44f8d3f73b070a102699821a8c5ea667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf832852c2d9e472ac9d67d5162fff1a2389223931737727ac8c5af89918a0325de8ace432ab680d2973853d582f03937a7938169e67cfcc682a62d6898303a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4d4c9cf2da542c6de9182fa751d23e8e8e008db9283deddf240b05eddb5b413ef22489de884a52f590d0afd91856f5b03c858ef71fb6325bfe50562c4efe5ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5d07973499aa7868d074ccd009d99e27b41a79b8d69d6b991df64e8e08c17caa5e5b785d3ee83609c3c57360a9ceb4ac216345e9affaf608ea75e73c23564255": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8a7274c4a6655a79a62b9bb20ddcc51b18364dcd08e06973593aecd82f891354b350d92cd02732b5a606f2baaff62118ba49f7cb9e3d6617e444f5dbb86a0139": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ec1a69c7f8c5c6ee12e60533cbf0ae4d87ec2325029ce64f80c34bb7f892c3ccd446e422511ee701dac827358838027ebfdd806fa4947ca06ba3a97498c11e78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d7edfa70907ba376ce59eb59e5ac047627b9b322c39b662a7d40e3c31c6290a3d7b130b095f983195b2608809d20784a8355c03582f3673a0fac1b84c8ab033": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d68d16bc99e19f7aaa47364baab1893308cd83bfdc9d0943baca91d2cd7ac463913536e1c08edb5e78572c6c0a358c56462be2a5d929af84a03acc5424f8da41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "837fa39dc9a9b6459d1018ad70d0647269deebc31bc5c8491aaa70a1e85f1588d7c48d47d95f12369a2dade24108459204e2f9e8cb41ead3cf0b8c5715dd89bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ff44ddc64ba056af211a6ba17601c9d0cdf45220a3af646815c00c2b76355d634b07f83b4648d0a14b516a15c7915a1023f0e67af9171b0fbec1b0f4797c0ff6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8b006037edd1961d9fbf205ae9473f464a07b3753cd1d7ef5bf0dd924b805855021723ba4c6e62d6b47efb91442fe60a04699fb305c7e8de06f31936781faaec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "289a2d0969f108eb3362a9c47b08ef0dde251aa97e050315a73372fb56d136dd054f0e705cf9c9135d60fb3b9b7c0efe30ab9e18f2ba57f513a38531970ef669": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d7e3c519dc132901f4832f3960a0ff47d7e909e0f97082d528f0791e42bb027ce46bcdad23d2b1ecda1e5bddaa4f012a560c3265ba5b9ee9e4cabe61ec033d38": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2906d0aadc5dcf373b10c722fa0843624874cb39d25c81543ab39f21a96c72c4b4a048791e80500695a8a0b84cdfd4084baf2db85c7835d7ecfe1f6640c3d628": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dcb282387e4c7836c3610106b19cefc8821d5c6ce77c84532bdbd50406a10535353b3acd4296d96d5f509fd26a62f749b363f8d775b1e367bc83cb0954405733": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0e6d607ba50d812a669a922bd78be14aab2b24141a3e15390c0706cde32aea4909a0476dcab81adfac82d94ad45e7466f2ed288c7a9a8a79d47b92ad65d9d6f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "42f0af60cd9743454e3c3436f0caf10c4930de6d1544817426f72b77ce8acfa85cec49e9a4e733bd33d185211423f61c95d09ec0810a67f1f70357e04400974e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b069b487e0e068627940e3b89846a5a9d9a301df3d953fd6bebd6f2a32a67c5b1637e2fe1ebb8d90171ccc3ebf6e29d202f15fb878316c85e67de3599acca68": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27426d414c5056c4ba4d95e27418bdd2e8812ba8a1665a4fd262175e5861ff8deacbd8caac208387c404ff3d3e513f6c8cfc731da6fe393ae19cc01475907518": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31ca1f01fc29c49297fdcb4abbef1a50d5eedfc7e6b5a5fc4347bdbc49d8a6d3bf7f9041ef9485c9053b027cc19210adc96492ba9739c06c707fcb7c5640eec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73110e871faec309dc31ffb901c9e765422aa42318e508b38f87cc20e06479100f9c597f17c26a19f2cc3f262e2bcd83b4d50d11dd8a6821be67cf701882faa0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c99232ae9ccb87544fb8b394c1848833d25228325e050a4cbf4ba62c7205071759dd0dc0a346aa07642395d625c2706c23d5acbf51bd36a638ced516d2dc3070": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a658b9e7c0081b0d478c6285cc353fce6eb4063b9e8ee8a03b558c1b0273f9d914a78ec8a567f801ed04c86075dd9e1503963a50f6d9ebd5e82d158e86a85a3c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3f0070524bd9e319382c79d3d0549015ec60bc9d8291af0dac2c160e1bffda950fd0410807ac6b110f60198d80d0206fc8296721a512a027b2071bf59a33c1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f46a83e36262d8878157354db8eaadf6ad20ca4a83852e3f01220fa55ba1772e0bb54f983ba9e29be688ece96a82e04188b74ef3e1736b13b9f0bef105221ecb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3cb8c54eec3a5fd9ee6a09126632772e64c3a33a3f38607ebeb8f1c4248ec1ac7320868312d30821ba0eb83f21dd69d9624c289d1fe1d5732300a0fb0899c563": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7b239494d6f27fdde3cb48e0db7735dfde183237faa1723b3f9b51b3a8b25d8bda562164d53ebc29ddf1a3409e003568f797176ae0b89bdc5d16b5ac8d290ab9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "100e899c58747a79262183a60e9b8dd326406e848b423f25fe96e27e245ddcd103ec8c44646ef6ffa80cd2dce7cdc27a94909ae8c015554105cd051d9ca875a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee75354c2e9376ecc44a54b8d1999fa24932f4326d4ecf783a32e976f5b53048d9a964f0cb10a56eeaad3e9ad04d551190660ce43170da5a129b93b45670f94f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8e19d883c26bbd6e9618b111428ad354fb3250fc929a4289c6cdafbd5cf1e93d890d014798adb473e3121f42e53bb2e8cbf96ba636f47b64aaf2892c998ee307": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1004a09b684a07e88f9cc1808ac87cfd736196842865ce3047ec4536c9a42c111b741396e7c50510a77e2dfa47d043455f1311876b248cc1449d7962ff0b1c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed5bb42a3fd7a402ede71ff056fc026e7c943d51ddbebfc2738227027078a9de40662ff927204c33ac537cc6c52739e69d1ad311da790b07b83145dbcde89b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d85374b0f9ac7d6ffac5d6d3df002a57f7e66df7221d0b549f224d9f8ce27a5499b3b921af54b8357fc92bb3bbefa805529ee03b5097660ee9c77441d0cb710f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "656e6cd137b60fb198069f2d595772fac6105f450306a1906af7ed210b08b06d0362246426dd97ce6db0530100adec8dff4c5e84400928b8063d02a97f86de60": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1ade4bbcc089312792a4a4df4d67c5f8bb15041c955d231ab42726655a4e0bbd0e6b455b702764e372073d65ff42f444a6a470adcd63b4f260f933e2f66601b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0154b2aa62c19471fe3ae5c7db33ea4890c4fcecd12fb34fcf8b7a49c172d699cbd5f02d247f8223dbefa66a8eeb7efed212f26ecca590651077748754e73a4b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05459b50da19a1edb81b1b3adcd82f8d822dc9ec9b89d71824755bc7a8acda6ef480cf083cefe4b85f79bca3aba6de8f2faa4df25ada6837e914e82371064e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1717a8a964a01793fc3273d9b6b6c330333b409443448ba78847f88351685ca5acf7518440871a446be50f1d473647da3fed3f15824ebb44fc1bb40b08a74324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e53e59df2588566269810acd45f8d134da7ad33d503f743537c6d250a5e2ae900d99af63c29b7f609eb878363ca5c6043c5e78b7d68d28cd6c2b78eab8fa8de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "840570a48eb94446a1ae1dbe9652c85ee5668357bf811dff85b7f9e440d00829dc0cb9da7417af53fa96258df31372ff46309f88d085cd36e4a02ccd3468bbb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4ce9fda813f9e5b200bfc218ff543ddc5b11d181a6cb15e48c0c0750a912950a13ae531de6b11e7bfcf4827d41acb09c9643218b95e598b002705d3382e47f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "acd798a9ef690867c4c2791ec46b29f97e21c08a0114db5aa3d9648a9fc012326fe2770e479e2c2a320c6134f298bd89cc38c5c7943e527eb987e717aa8688f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d92c8fd96b0e80e7538e04ce3996d903a09f304149154b555c22d61e497bd03e23e0784c36a7b42c8a1bd493d3e74725a37e081d3138249d47d056169f65521b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e46f761569a2fb39c8504b776049b4fa8b2635541af3a92f613fd6ed2b1a9a2bb99882b2930c815d8a7c6025fc69a7586aa6b784a500484a1103b4f566d5505d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "41caa3d6aa755e7dfbdd17ed56a8b3c421fbd0b5eff229d116c3ed9dca9cd67ea4f97f91f9299aafa66d32d3dfdb9dbeb69a45415e7b79a501bb30d48ae938bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61c5eb75f3cb707b5e58d8e2bf2305fc1f8eaa026e7f91fa0cd267b65dc612ecc0d61ceb68a90c1629eb3d52ef4cf6e87cd7877460af95adbe4c12947df16eb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23594a4b59e8163113949d557dc38ff5ca77e094cd411ddb161eff13de1e1e2b273664bf2ab6d906638a4a1b40889e36a69e8debffa6a1db677a5245f0c6b3ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d5634c854db1a78559879a37dde5dbd69395dd611a5599494b2afcca8aff28c19024e55534a8caaccd9327d376d0f83e2aeb9b55f0479fc0ed832110c9eca27e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9a3aeb283ce6c8631c24dc654433584fc1b17c93026b59d6e53a38bf69407068a343b378704519cae93b4f438d12cb893bf0c7aef1ad283e507b7de7399c80d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6caa7e9073e75462323452b225dca0187183c10e45ab574b5998956d46ac27fde42dafaae500f51d953c378c361c0fe6028c282440ffaff36890ad178c7e1073": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31b0111f0dbc2062715ec955621c7d31aef183fd7c91b849368a33cafa468b063f9236f56b7f98eec30f09cae6be45e3b3584b4a59fb12603478ade5a1cf1485": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e019c56c96168f01b847fcf909c6896350cacb9d650cbdf21be533501d985bf9361838dfeb85792634e783122740de672fbad51c464b97f8bbd3c8eba47a992": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "239a3154c7649aeb76fa45b8d9542bdf8d74c6611ae01c738d178012c59bba051d27716295bed967e8d88737b5e41469a7e18f5ba2a8fc5deb20014e2f4c8a30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4259bdc66bf7508c953e556b27623aa11ceb02bde1295b712fc7794507b1d2fd17bb07b4aa45d7fd5aeddc912c931808fb37c774123e78c8f66f93c55d79eca8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2209d4b0566978fb9bcb5c920fa6ab6361e8e309f28dd278f9c39911814cec9912d102d3dfbe52c8efb287652b415c8568ee2306a7d3789b5b6706d320a3cc75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53881eb577217a1d34d34d3b7a13295029d369c23adfc8aebd6cb9c1885963312744fb90a2ead3219c33e78649734b3553eb0dc30afbbdff746d8f8543f61c21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f47ccf7581b9bac00e18597ecb9d398940298cecc04a0e41d9cf9bc10b039a73ae71fa645a77fceb043facc618d64a80d753b02951ffd2190db75df300c6922d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6dfa2902e974364b8ba10670c44175aee4739f798d28d6c051c0d97d2a792569c8652973c029ad76480129728cfd25ccfea43ca07510d3de8368a50230c76e2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54cb3f6c3de92c0a5f05f6b6e41d71bd5b507946f1bfd6dd7c3771306bf67915dde11df3abe91250d95d254cea417302bb325adb3f03b8b2736ca9d9694470c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e0f0313485866043c36a5c67641aada063e7f1b534ec359082cdfd035b52c76ad678572c482d18c43b86a6213392daa63dc97d763fa8c03761c3b4821de58bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac49af0719a2bfc544e7d57963032d4a6000858b4651bc306753fe9978387fd13d333c5f122e9b1a1e608987f8461005b305e9b05fc157b0f608b0979d474c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "eabaaec1dafa57f41d528e2900bc408b9739798d052f21b512c07e66fc6941f0508a7ce1c49660a283692796c42b8fef2f1fe3f8d2d9e66d1a1da989120ab6f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "04c4efdd3bdd36ee24011d08983ced0aabb3997d68e56ace300ed2ce3cf5d73048e386fdf8c64e563a48dd360d7bee278803a9fec1ddefddb89e9f7a79a42c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f1f14d156368fd3eccf12f12892ebd108694e206dcdf048361a0c583b0d71b025e3e3aa44049649d4c49ef0d062b4ae4cbc6962d7ffebb78de446a769f5d432a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c7c04aad2dbf135f464fc2b8d1c796ead1b3adf454447f4a48c2e334cf4cb1b071cfc14d7e81749bd3b66b009b262385ac6e2f6102a69182faed90b2955c4665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c771eb3ec683443c6da413ef7e140a36c8becb94c7585d9b9220e8f1740f0176ca668fda8f6a92ef2033ae16443d702e5c3bd049b292ad4a6514e54c14283b41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a05d361c587308116f5f6f32391cc420c847983d227b271e71158b50027e359e15086049c792c0e00e73e5bbd34a9eafa22f2fbb081c8b781dc794bb83f8219d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f7966ffff624938736e997d7afe02c793174c27064664420ce4d452293ff856e33fe656266ae13e10e2999db9e3d2b1c671737409baf7b3667e3e177bd51828f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3df393fbdae2d23b4d90deac3aa549a115d3cc93023e829fddc3b615816ccd383c5e547789480eb61ab794e1aac3eda7961af6bea17a050124c4498d25e30ec0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ea321f9c6767d453547171fbf1f5a052fb8b7d3c87573868756d50e4e26ca851277787a8c3a725cb2c2aeb304867acdb773220ba1709ee28eb033d8e9053895": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c560790071e698f46dd3f5527489e9220fcb020760f619fdd826d0e56e25cba2448bfdcdd5dae1cd89111feb9bdfba3eb04af580f4e74d37e2da43d31408390": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "74795dc5eb3eb3946e4e31f603bef7083195e33ce5fcebd4b80dc2a4fee8681b3a8403cda4b33db4ecac00f30120a215cd6d2567f738119ab466b996defa16da": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "849812ff06edb977f89ffacf8ebe1a25cdb8c14445cc1ad113e3cd87a0aedd5dca3de8691e9382b8c2f3816eb07fdb59fb9be064f083175966fdf6d3a2e65b37": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9bdc5bfbcad58c699033d75eb81110c09edfeae8080a8fd447e446147e4c29271c54a663cf1f1d8c025d10f3758d0be0c6e2f7c8c54251e9cb491dd429387dc0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "93535bf3139d0aed129eab3d5a158cb5326f4e3578672a0492a3de0dd61d6c03a7bd2112e72ae1e97ae367f43a85ec51a14418deab555f051ff737fb0e218284": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "809cb83085263833477b4d6c94f7aa081dd02cd05d21d70f1fb6b516b0e1a19fcd3b9dcd448e000b0e47ebfd81146d4199092a27554e2a5b7652e8941c12d3c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5b23a99de57645578857c137cdb8733fe5a6954aa0a0857a1b91f407596d5df53a588251045a0d19e052a47695dfbb623010979fad4dfbeed693a1a396f72682": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b59ef97e1136412690f19664e5f755139324b7207e2c9c6842d60a4fd3bd5935ce97b4d394f1c6099f87c5896fe64bc5544a2eddbc560f94ba8959a86fb89cf3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f9a6c5b072992edc7b6081fb3bb8932656b4c6787bcd19fd6f945aebac4e801da3b880006d4df59949b70c5d3ff62240b72d001e83843bf3e15d1527b963688": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "04fff30a9407ca15f4b2eb114c1a3ac7bdd9727dcc775e31dac162389f76d6029b2661ee6d1526494189c419b110951a210dd966d0f20da765f5a11d35c48515": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "480f612af500abf983649481cb6b7c55ad17fab9a25e477e08238e2eff052501f5c35515e148e515ace49b241303b1fc2859de26e82e8b024535f04f87f481ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "478529d597bfc53f166c97a590195511646547ef633f256f19b045c0141d2abc4f72d5d0374cfd85cef066268fb15a4436f16d70340808a301a52f6330a1755c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aa305aa7a9c5d7d77f78be9aad76b8b2e431d8db6e7e80b443fe83cc2d6dc18c607ea6bf46a154bbc0f0b9dfdac140a4847d7a57a396025cb6a8addbdf98a62d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a070a0691280ec07bc3b82c73053e3a856556b157d4db22b6ef4c3cb60f532a49fb1e0b6f38e0b1729470cd066164848e81e99fc605a3e55537f33cf90db46fb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0784112bb6f8a65c8807af814a3c48177b940f0ce1a9e7ed90e51d5de985772f2cadab4d77b0d957d8fc1e13ef9c21a7e844e637c6230cdd6fa824101d731394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06853952ca58921791a7323079a55d159a5dc035918d53d2c3cbc1ffe5b408acadcd68c6bb241433ff1ea3229e17fbcd15fe005ab47ef238e8f09e69bad02dfa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23723444375e8ecb39faca010c1ef21bf6dbea785be777aaf3838bb4b22a722526c13eb6d57eed391ac9296f674deb8a09b7b3299a20f1672dc9f2d51d3f7be8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb4897379d5e0df6b5d9ca06dc0127aab372efc8e65616557e0c6b4dfc57b1863e248cd3a627da892b97812e435bbebc4651ae617d7872df36d706e906db42c6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c09c33d95b18a08a9ed3c7c08d312e46302b46d7017fea25a7ab1f4131a7f0a18325544aaf078fd6d2c33eeea89a27fe9b413ef503e8e4aeacdab63c5abde20d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7b0ecde7c59ad97ab8b522ae57ed840d7932891f39375bb2ba20b0a9fdebe7d39bcb89cb9ace6b43f0c7f2a9a1a83ba0e63e5983d959a72aa9aaaf9fa2d9da7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ea12f1ff8ef0985e5f147b988aabd9f3165b1b8ddced968dfab73635dbd29baa62a3ca7dd33df35f1683fca29ffecf18e75d256b0b49af8c109db22b00456cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2cc2581423b4ab037160ef8be7c2ca9f2361b0661787b8635dedd0400c234142939b257a9cb32b78a476076ea9fd3312db521081b6134f8560c5f62b6918d3ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4f0de1f55f78cef6bb37f78c9cb9580a824a6f057cde7324a25f5a203044049a6b826aa56610058c3e35b52e3d117893167ed4088814ef85c81d55c662fb89dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "de1fee1bde0df30777a4b913be8b9aad3c6e44f8ff1ff19698f1debf687cf5971a11cfd3bc1c5c7107adcfd62da97829cbb1a8ec2115affe094684b9bacccf56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "71befa4c6a9e2f6cb292511bee33593e3c73568aeb5b1f8f6dfcdd325eea2b3006eda7623bb1d2fdcc2318001700663240fcb33fde53f243a054d256bb2e0094": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "499b34a6a18d76588cb37a8d56a6f8e202ac388de98c739b116b94f71f733d99a7a39446d8be1d3790d05d19528171552426ced0fa26f3e190f1d6eace07ca45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bf3051e8ba3c1e0bd6462f066953394e2ad88899cb41cc2596e1fcc8143bb640dd8f427692145b0da35e4df60ccca8ffeacb35c3aea743fb2fdaeecfe2b4e2f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "947999a11a296fb70e2c66d08829bcf2bf6d53a7c53b65e3a4a52dabf7f0fc021a8e0b178e58a25815533e14e0f64f70595b7c490c040e637f393358c94dd63f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a55a5d76506ec508e0156e0be0893ef0511bc34f6fcc9fc280b2539228158872a2721b60566ef99791575d2befc21b7290ee9c6b464c47a10b15851bc4ab133": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b4f92f9bd51abf177f9a16178d8122984b76c6d4f86826589b8f839f130082ccf6bfbd14dd02409aaad2ffe79fe38fb59f440a7c1c27c50504b2b494c3635a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b788e0a3b977142114d7a29d812f9d766d2da16dbe80706fc29826a28332622b79a208b7c45ba571e0eca86853540d7fd560fb0a94731be200d0e84c00995a74": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7103849b94d4f54d4c591304ca2bfef994940582608e6e42f14ddac5b0cf03a1333a0937dd2918180b509b09fc271dc307a82723c31a4459004699cec098a543": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ce71693626ce8754c81b55b0cd1f68b26f48ef38e677375932d86c7fd0373ae78354a67f698c197f18be6e3cf417a933fb651170d7513a1f8b52b002f0042d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "992de54e2c91b38f91d1673c91a90f6ea81ac7b65791739a221a108fd9226279892e8937f987b07dbfaf617425dc82b22dc5cb75edd9c33bce8ed588a7af12ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "f25c0cca34f15ff6528810919b46d591c42bff30f652883775b29d3eed3b9ee36c8979cd9efb9f16bede15c821ed50ae6939d90e6047edc477be3043de6c6217": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "655cd85433651e186621b879a86bc6e7ed4662b99132b4dcba54909ef4afee87c05e7ef1b08e0ef1e01459048cd72aa182850afa7fbc6f331fdcefdf8b7a4b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "81ccee80cab4d65528c7dbdce7ea29e158d7991ecf0dcfc4fdb040821b889fe8aaed74f1b7f2a115b71071ca30a5835d55f3bdb7e60249fd7800e8051ccbb995": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "da0a76bbd681070f9dce3e0ecfaca29c191b9a88d02e49798ad2abff94eba12a6bf89a2eed028c105e6de2a0070072c575b97e1e3ec0bbace9304e4cc50c4594": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "c878beefb6fea79374bc1bde606ce14a7408e7051a438981bf3812d200494be1ea07136574918725f294243ef12500d7866b9c0e3973e1470e0228430fd6bae6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + } + }, + "deviceId": "FNQVKMHHNV" +} \ No newline at end of file diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/conf b/docker/matrix-bot/db/matrix-sdk-crypto/conf new file mode 100644 index 00000000..4154d7c4 --- /dev/null +++ b/docker/matrix-bot/db/matrix-sdk-crypto/conf @@ -0,0 +1,4 @@ +segment_size: 524288 +use_compression: false +version: 0.34 +vQÁ \ No newline at end of file diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/db b/docker/matrix-bot/db/matrix-sdk-crypto/db new file mode 100644 index 0000000000000000000000000000000000000000..4385068f13c67d14035ab4a60b49620fc7156be5 GIT binary patch literal 1572864 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
rwycVh-WF!-IWO*{F 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 z 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 literal 0 HcmV?d00001 diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 b/docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 new file mode 100644 index 0000000000000000000000000000000000000000..c2c06842acf992663abd3af945863aa44c645ed4 GIT binary patch literal 548 zcmX}qv1-Cl6vpwKl0k~gNhm2DyQo8lVkh0~>SzKkW_1v%T}qcO=?es0+NCXp_zDIR z=n^vM8>k>Yfx)G5>OIB#-R;khbKtK)0bP__5=AI7oTh1kd`3N}*xx9X* zZK8dfC_f+%iP~pQO<%c#bbO1cj;xEek!{f~vMcH%ebF&;EE*sK(J68&Iz!Gx=g7I} V0=W=fBiBkV&*WDa#^UGV;SXPDkV60f literal 0 HcmV?d00001 diff --git a/docker/matrix-bot/index.js b/docker/matrix-bot/index.js new file mode 100644 index 00000000..7d9fc419 --- /dev/null +++ b/docker/matrix-bot/index.js @@ -0,0 +1,694 @@ +import { + MatrixClient, + MatrixAuth, + AutojoinRoomsMixin, + AutojoinUpgradedRoomsMixin, + SimpleFsStorageProvider, + RustSdkCryptoStorageProvider, + RustSdkAppserviceCryptoStorageProvider, + Appservice, + SimpleRetryJoinStrategy, +} from "matrix-bot-sdk"; +import dotenv from 'dotenv'; +import Sequelize, { DataTypes, QueryTypes } from "sequelize"; +import fs from 'fs'; +import * as sha512 from "hash.js/lib/hash/sha/512.js"; +import crypto from 'crypto'; +const homeserverUrl = "https://matrix.beeper.com"; +import ora from 'ora'; +dotenv.config(); +import Pusher from "pusher"; + +const storageProvider = new SimpleFsStorageProvider("/var/www/html/docker/matrix-bot/bot.json"); // or any other IStorageProvider +const cryptoProvider = new RustSdkCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +// const auth = new MatrixAuth(homeserverUrl); +// const client = await auth.passwordLogin(process.env.MATRIX_USERNAME, process.env.MATRIX_PASSWORD); +const client = new MatrixClient( + homeserverUrl, + process.env.MATRIX_ACCESS_TOKEN, + storageProvider, + cryptoProvider +); + +// In order to sync room keys, we need to ensure we can trust the devices we're getting them from. +// We can request the list of devices, and verify their keys. +// + +const sequelize = new Sequelize( + process.env.DB_DATABASE, + process.env.DB_USERNAME, + process.env.DB_PASSWORD, + { + host: process.env.DB_HOST, + dialect: process.env.DB_CONNECTION, + logging: false, + } +); + + +// Since we're talking directly with our database, Laravel isn't getting any of the events +// Nothing in our UI will update, and no php code will trigger. +// We need a way to hook +const pusher = new Pusher({ + appId: process.env.PUSHER_APP_ID, + key: process.env.PUSHER_APP_KEY, + secret: process.env.PUSHER_APP_SECRET, + cluster: process.env.PUSHER_APP_CLUSTER, + wsHost: process.env.PUSHER_HOST ? process.env.PUSHER_HOST : `ws-${process.env.PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: process.env.PUSHER_PORT ?? 80, + wssPort: process.env.PUSHER_PORT ?? 443, + useTLS: true +}); + +async function findOrCreateMessageEvent(Threads, Messages, People, thread, message, is_decrypted = false) +{ + if (message.type !== 'm.room.message') { + console.log('Told this was a message, but reporeted as ', message.type) + return null; + } + console.log('Looking for thread', thread); + + let threadInQuestion = await Threads.findOne({ + where: { thread_id: thread } + }); + + if (!threadInQuestion) { + console.error('Thread doesn\'t exist yet', thread); + + process.exit(1); + } + + const messageToCreate = await Messages.findOne({ + where: { event_id: message.event_id, } + }); + + + if (!messageToCreate) { + const thread_id = threadInQuestion.id + + const sender = await findPersonByIdentifier(People, message); + console.log('no messages found for event', message.event_id, 'creating message',{ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + is_decrypted + } ) + + await Messages.create({ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + ...(message?.content?.settings ? message?.content?.settings : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + is_decrypted, + + }); + + const updatedTime = { origin_server_ts: new Date() }; + + pusher.trigger('user.1', 'eloquent.updated: App\\Models\\Thread', { + ...threadInQuestion, + ...updatedTime, + }) + await Threads.update(updatedTime, { + where: { thread_id: thread } + }); + } +} + +async function findPersonByIdentifier(People, message) +{ + const identifier = message.sender; + + let peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }) + + if (!peoples || peoples.length === 0) { + if (message.type !== 'm.room.member') { + console.log('m.room.member', message); + return null; + } + + await People.create({ + name: message.content.displayname, + identifiers: JSON.stringify([identifier]) + }) + + const data = await client.downloadContent(message.content.avatar_url); + + console.log(data); + process.exit(); + + peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }); + } + + + return peoples[0] ?? null; +} + +const setupSequlize = async () => { + console.log('[-] Sequilize authenticating...'); + await sequelize.authenticate(); + console.log('[-] Sequilize authenticated...'); + + const Threads = sequelize.define('threads', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + name: { + type: DataTypes.STRING, + }, + description: { + type: DataTypes.STRING, + }, + rules: { + type: DataTypes.STRING, + }, + topic: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.STRING, + }, + origin_server_ts: { + type: DataTypes.DATE, + }, + settings: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const Messages = sequelize.define('messages', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + from_person: { + type: DataTypes.BIGINT, + }, + type: { + type: DataTypes.STRING, + }, + event_id: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.BIGINT, + }, + thumbnail_url: { + type: DataTypes.STRING(2048), + }, + originated_at: { + type: DataTypes.DATE, + }, + message: { + type: DataTypes.TEXT + }, + html_message: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const People = sequelize.define('people', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING(255), + allowNull: false, + }, + primary_number: DataTypes.STRING(255), + primary_address: DataTypes.STRING(255), + primary_email: DataTypes.STRING(255), + pronouns: DataTypes.STRING(255), + birthdate: DataTypes.DATE, + phone_numbers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for phone_numbers'); + } + }, + }, + }, + addresses: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for addresses'); + } + }, + }, + }, + emails: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for emails'); + } + }, + }, + }, + estimated_home_value: DataTypes.STRING(255), + estimated_income: DataTypes.STRING(255), + education: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for education'); + } + }, + }, + }, + jobs: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for jobs'); + } + }, + }, + }, + locality: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for locality'); + } + }, + }, + }, + identifiers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for identifiers'); + } + }, + }, + }, + names: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for names'); + } + }, + }, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, // Set to true if you want Sequelize to manage timestamps + tableName: 'people', + updatedAt: 'updated_at', + createdAt: 'created_at', + collate: 'utf8mb4_unicode_ci', + }); + + const Participant = sequelize.define('thread_participants', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + + person_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + thread_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + + joined_at: { + type: DataTypes.DATE, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, + tableName: 'thread_participants', + updatedAt: 'updated_at', + createdAt: 'created_at', + + }) + console.log('[-] Sequilize models defined...'); + + return { + Threads, + Messages, + People, + Participant, + } +} + +async function main() { + try { + const { user_id, device_id } = await client.getWhoAmI(); + console.log('[-] #############################'); + console.log('[-] Authenticated as', user_id, device_id); + console.log('[-] #############################'); + + if (!await storageProvider.isUserRegistered(user_id)) { + storageProvider.addRegisteredUser(user_id); + } + + const { + Threads, + Messages, + People, + Participant, + } = await setupSequlize(); + + // const client = await auth.passwordLogin(userId, password, "Programmatic Access"); + console.log('[-] Autojoin rooms mixin...'); + AutojoinRoomsMixin.setupOnClient(client); + AutojoinUpgradedRoomsMixin.setupOnClient(client); + console.log('[-] Autojoin rooms mixin established..'); + + client.on('room.join', async (event) => { + await client.crypto.onRoomJoin(event.room_id); + }) + + client.on('room.encrypted_event', async (roomId, event) => { + // handle `m.room.encrypted` event that was received from the server + console.log('Room Ecnrypted eevent', roomId, event) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, { + type: 'm.room.message', + event_id: event.event_id, + origin_server_ts: 0, + room_id: event.room_id, + content: { + ...event.content, + settings: event.content + }, + sender: event.sender, + }, false); + }) + + client.on("room.message", async (roomId, messageEvent) => { + // await client.upload + console.log(roomId, 'received a new message from', messageEvent?.sender) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, messageEvent, true); + }); + + console.log('[-] Preparing crypto lib'); + const cryptoSpinner = ora('Syncing joined rooms, and preparing encryption').start(); + /** @var IStorageProvider userStorage **/ + const userStorage = await client.storageProvider.storageForUser(user_id) + + const rooms = await client.getJoinedRooms() + + await client.crypto.prepare(rooms); + cryptoSpinner.succeed('Crypto library setup, encryption ready.'); + + console.log('[-] ready', client.crypto.isReady); + + console.log('[-]',await client.checkOneTimeKeyCounts()); + + const devices = await client.getUserDevices([user_id]); + + const { one_time_keys } = await client.claimOneTimeKeys({ + [user_id]: {[device_id]: "signed_curve25519"} + }, 10000); + + if (!one_time_keys[user_id]) { + console.error('One time keys are not supported for this device'); + return; + } + + console.log('[-] Finished setting up crypto lib'); + // await client.begin(); + console.log('[-] Started'); + const resp = await client.uploadDeviceOneTimeKeys(one_time_keys[user_id][device_id]) + + console.log('Thing has started', device_id, user_id, resp); + const spinner = ora('Loading message history from all the threads').start(); + + for (let index in rooms) { + const roomId = rooms[index]; + + // spinner.spinner = 'dots'; + // spinner.text = index+'/'+rooms.length+' history syncing: ' + roomId + // spinner.start() + + const state = await client.getRoomState(roomId); + + for (let stateIndex in state) { + const event = state[stateIndex]; + let test = null; + switch (event.type) { + case 'm.room.create': + test = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + + if (test) { + continue; + } + await Threads.create({ + name: roomId, + thread_id: roomId, + origin_server_ts: new Date(event.origin_server_ts), + }); + break; + case 'm.room.name': + test = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + + if (test) { + continue; + } + await Threads.update({ name: event.content.name }, { + where: { thread_id: roomId } + }); + break; + case 'm.room.member': + let matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + replacements: [JSON.stringify(event.sender)], + type: QueryTypes.SELECT, + model: People, + }) + + if (matchingPeople.length === 0) { + await People.create({ + name: event.content?.displayname ?? event.sender, + identifiers: JSON.stringify([event.sender]) + }) + } + matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + replacements: [JSON.stringify(event.sender)], + type: QueryTypes.SELECT, + model: People, + }) + + for (let index in matchingPeople) { + const person = matchingPeople[index]; + + let thread = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + let participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + type: QueryTypes.SELECT, + }); + + if (participant.length === 0) { + await Participant.create({ + person_id: person.id, + thread_id: thread.id, + joined_at: new Date(event.origin_server_ts), + }) + participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + type: QueryTypes.SELECT, + }); + } + + if (event.content?.avatar_url) { + let contentType = 'jpg'; + const data = await client.downloadContent(event.content?.avatar_url); + + if (!data.data) { + continue; + } + + const id = person.id + contentType = data.contentType.split('/')[1]; + + if (!fs.existsSync('/var/www/html/storage/app/' + id + '.' + contentType)) { + const path = '/var/www/html/storage/app/' + id + '.' + contentType; + fs.writeFileSync(path, data.data) + + await People.update({ + photo_url: path + }, { + where: { id } + }); + } + } + } + break; + case 'm.room.encryption': + const hash = crypto.createHash('sha512'); + + const key = hash.update(roomId, 'utf-8'); + + const thread = key.digest('hex'); + let threadInQuestion = await Threads.findOne({ + where: { thread_id: roomId } + }); + + const originalSettings = JSON.parse(threadInQuestion?.settings ?? '{}'); + + await Threads.update({ + settings: JSON.stringify({ + ...originalSettings, + ...event.content, + 'hash': thread + }) + }, { + where: { thread_id: roomId } + }); + + console.log('encrypted room found', await client.crypto.isRoomEncrypted(roomId)); + + break; + // this.db.set(`rooms.${key}`, ).write(); + case 'm.room.topic': + await Threads.update({ topic: event.content.topic }, { + where: { thread_id: roomId } + }); + break; + // Meta settings that dont' matter for this app + case 'm.room.canonical_alias': + case 'm.room.history_visibility': + case 'm.room.guest_access': + case 'm.room.power_levels': + case 'm.room.avatar': + case 'm.room.join_rules': + case 'm.bridge': + case 'uk.half-shot.bridge': + case 'com.beeper.chatwoot.conversation_id': + break; + case 'com.beeper.backfill_status': + + case 'com.beeper.rooms.note_to_self': + case 'com.beeper.support_chat': + break; + case "m.space.parent": + case 'm.space.child': + case 'com.beeper.feed': + case 'org.matrix.msc2716.marker': + // a twitter marker? + + default: + console.log(event.type, JSON.stringify(event, null, 4)); + }; + } + + + const isEncrypted = await client.crypto.isRoomEncrypted(roomId); + const roomState = await cryptoProvider.getRoom(roomId); + if (isEncrypted && !roomState) { + const encryption = await client.getRoomStateEvent(roomId, 'm.room.encryption') + const history_visibility = await client.getRoomStateEvent(roomId, 'm.room.history_visibility') + const guest_access = await client.getRoomStateEvent(roomId, 'm.room.guest_access') + + await client.cryptoStore.storeRoom(roomId, { + ...encryption, + ...history_visibility, + ...guest_access, + }); + } + + spinner.stopAndPersist({ + text: "âœ”ï¸ " + index+'/'+rooms.length+' History sync: ' + roomId, + }); + } + + spinner.succeed('Starting the matrix clint') + await client.start() + + } catch (error) { + console.error("Error:", error.message, error); + } +} + +process.on('SIGINT', function () { + sequelize.close(); + + process.exit(); +}) + +main(); diff --git a/docker/matrix-bot/personal-client.js b/docker/matrix-bot/personal-client.js new file mode 100644 index 00000000..c6c0573f --- /dev/null +++ b/docker/matrix-bot/personal-client.js @@ -0,0 +1,668 @@ +import { + MatrixClient, + MatrixAuth, + AutojoinRoomsMixin, + AutojoinUpgradedRoomsMixin, + SimpleFsStorageProvider, + RustSdkCryptoStorageProvider, + RustSdkAppserviceCryptoStorageProvider, + Appservice, + SimpleRetryJoinStrategy, +} from "matrix-bot-sdk"; +import dotenv from 'dotenv'; +import Sequelize, { DataTypes, QueryTypes } from "sequelize"; +import fs from 'fs'; +import * as sha512 from "hash.js/lib/hash/sha/512.js"; +import crypto from 'crypto'; +const homeserverUrl = "https://matrix.beeper.com"; +import ora from 'ora'; +dotenv.config(); +import Pusher from "pusher"; + +const storageProvider = new SimpleFsStorageProvider("/var/www/html/docker/matrix-bot/bot.json"); // or any other IStorageProvider +const cryptoProvider = new RustSdkCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +const cryptoProvider2 = new RustSdkAppserviceCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +// const auth = new MatrixAuth(homeserverUrl); +// const client = await auth.passwordLogin(process.env.MATRIX_USERNAME, process.env.MATRIX_PASSWORD); +const client = new MatrixClient( + homeserverUrl, + process.env.MATRIX_ACCESS_TOKEN, + storageProvider, + cryptoProvider +); + +// In order to sync room keys, we need to ensure we can trust the devices we're getting them from. +// We can request the list of devices, and verify their keys. +// + +const sequelize = new Sequelize( + process.env.DB_DATABASE, + process.env.DB_USERNAME, + process.env.DB_PASSWORD, + { + host: process.env.DB_HOST, + dialect: process.env.DB_CONNECTION, + logging: false, + } +); + + +// Since we're talking directly with our database, Laravel isn't getting any of the events +// Nothing in our UI will update, and no php code will trigger. +// We need a way to hook +const pusher = new Pusher({ + appId: process.env.PUSHER_APP_ID, + key: process.env.PUSHER_APP_KEY, + secret: process.env.PUSHER_APP_SECRET, + cluster: process.env.PUSHER_APP_CLUSTER, + wsHost: process.env.PUSHER_HOST ? process.env.PUSHER_HOST : `ws-${process.env.PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: process.env.PUSHER_PORT ?? 80, + wssPort: process.env.PUSHER_PORT ?? 443, + useTLS: true +}); + +async function findOrCreateMessageEvent(Threads, Messages, People, thread, message) +{ + if (message.type !== 'm.room.message') { + return null; + } + + let threadInQuestion = await Threads.findOne({ + where: { thread_id: thread } + }); + + if (!threadInQuestion) { + console.error('Thread doesn\'t exist yet', thread); + + process.exit(1); + } + + const messageToCreate = await Messages.findOne({ + where: { event_id: message.event_id, } + }); + + + if (!messageToCreate) { + const thread_id = threadInQuestion.id + + const sender = await findPersonByIdentifier(People, message); + console.log('no messages found for event', message.event_id, 'creating message',{ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + } ) + + await Messages.create({ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + }); + + const updatedTime = { origin_server_ts: new Date() }; + + pusher.trigger('user.1', 'eloquent.updated: App\\Models\\Thread', { + ...threadInQuestion, + ...updatedTime, + }) + await Threads.update(updatedTime, { + where: { thread_id: thread } + }); + } +} + +async function findPersonByIdentifier(People, message) +{ + const identifier = message.sender; + + let peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }) + + if (!peoples || peoples.length === 0) { + if (message.type !== 'm.room.member') { + console.log('m.room.member', message); + return null; + } + + await People.create({ + name: message.content.displayname, + identifiers: JSON.stringify([identifier]) + }) + + const data = await client.downloadContent(message.content.avatar_url); + + console.log(data); + process.exit(); + + peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }); + } + + + return peoples[0] ?? null; +} + +const setupSequlize = async () => { + console.log('[-] Sequilize authenticating...'); + await sequelize.authenticate(); + console.log('[-] Sequilize authenticated...'); + + const Threads = sequelize.define('threads', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + name: { + type: DataTypes.STRING, + }, + description: { + type: DataTypes.STRING, + }, + rules: { + type: DataTypes.STRING, + }, + topic: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.STRING, + }, + origin_server_ts: { + type: DataTypes.DATE, + }, + settings: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const Messages = sequelize.define('messages', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + from_person: { + type: DataTypes.BIGINT, + }, + type: { + type: DataTypes.STRING, + }, + event_id: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.BIGINT, + }, + thumbnail_url: { + type: DataTypes.STRING(2048), + }, + originated_at: { + type: DataTypes.DATE, + }, + message: { + type: DataTypes.TEXT + }, + html_message: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const People = sequelize.define('people', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING(255), + allowNull: false, + }, + primary_number: DataTypes.STRING(255), + primary_address: DataTypes.STRING(255), + primary_email: DataTypes.STRING(255), + pronouns: DataTypes.STRING(255), + birthdate: DataTypes.DATE, + phone_numbers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for phone_numbers'); + } + }, + }, + }, + addresses: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for addresses'); + } + }, + }, + }, + emails: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for emails'); + } + }, + }, + }, + estimated_home_value: DataTypes.STRING(255), + estimated_income: DataTypes.STRING(255), + education: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for education'); + } + }, + }, + }, + jobs: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for jobs'); + } + }, + }, + }, + locality: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for locality'); + } + }, + }, + }, + identifiers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for identifiers'); + } + }, + }, + }, + names: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for names'); + } + }, + }, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, // Set to true if you want Sequelize to manage timestamps + tableName: 'people', + updatedAt: 'updated_at', + createdAt: 'created_at', + collate: 'utf8mb4_unicode_ci', + }); + + const Participant = sequelize.define('thread_participants', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + + person_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + thread_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + + joined_at: { + type: DataTypes.DATE, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, + tableName: 'thread_participants', + updatedAt: 'updated_at', + createdAt: 'created_at', + + }) + console.log('[-] Sequilize models defined...'); + + return { + Threads, + Messages, + People, + Participant, + } +} + +async function main() { + try { + const { user_id, device_id } = await client.getWhoAmI(); + console.log('[-] #############################'); + console.log('[-] Authenticated as', user_id, device_id); + console.log('[-] #############################'); + + if (!await storageProvider.isUserRegistered(user_id)) { + storageProvider.addRegisteredUser(user_id); + } + + const { + Threads, + Messages, + People, + Participant, + } = await setupSequlize(); + + // const client = await auth.passwordLogin(userId, password, "Programmatic Access"); + console.log('[-] Autojoin rooms mixin...'); + AutojoinRoomsMixin.setupOnClient(client); + AutojoinUpgradedRoomsMixin.setupOnClient(client); + console.log('[-] Autojoin rooms mixin established..'); + + client.on('room.join', async (event) => { + await client.crypto.onRoomJoin(event.room_id); + }) + + client.on('room.encrypted_event', (roomId, event) => { + // handle `m.room.encrypted` event that was received from the server + console.log('Room Ecnrypted eevent', roomId, event) + }) + + + client.on("room.message", async (roomId, messageEvent) => { + // await client.upload + console.log(roomId, 'received a new message from', messageEvent?.sender) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, messageEvent); + }); + + console.log('[-] Preparing crypto lib'); + const cryptoSpinner = ora('Syncing joined rooms, and preparing encryption').start(); + /** @var IStorageProvider userStorage **/ + const userStorage = await client.storageProvider.storageForUser(user_id) + + const rooms = await client.getJoinedRooms() + + await client.crypto.prepare(rooms); + cryptoSpinner.succeed('Crypto library setup, encryption ready.'); + + console.log('[-] ready', client.crypto.isReady); + + console.log('[-]',await client.checkOneTimeKeyCounts()); + + const { one_time_keys } = await client.claimOneTimeKeys({ + [user_id]: {[device_id]: "signed_curve25519"} + }, 10000); + + if (!one_time_keys[user_id]) { + console.error('One time keys are not supported for this device'); + return; + } + + console.log('[-]', one_time_keys); + + console.log('[-] Finished setting up crypto lib'); + // await client.begin(); + console.log('[-] Started'); + const resp = await client.uploadDeviceOneTimeKeys(one_time_keys[user_id][device_id]) + + console.log('Thing has started', device_id, user_id, resp); + const spinner = ora('Loading message history from all the threads').start(); + + for (let index in rooms) { + const roomId = rooms[index]; + + // spinner.spinner = 'dots'; + // spinner.text = index+'/'+rooms.length+' history syncing: ' + roomId + // spinner.start() + + const isEncrypted = await client.crypto.isRoomEncrypted(roomId); + if (isEncrypted) { + await client.crypto.onRoomJoin(roomId); + } + // const state = await client.getRoomState(roomId); + + // for (let stateIndex in state) { + // const event = state[stateIndex]; + // let test = null; + // switch (event.type) { + // case 'm.room.create': + // test = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // + // if (test) { + // continue; + // } + // await Threads.create({ + // name: roomId, + // thread_id: roomId, + // origin_server_ts: new Date(event.origin_server_ts), + // }); + // break; + // case 'm.room.name': + // test = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // + // if (test) { + // continue; + // } + // await Threads.update({ name: event.content.name }, { + // where: { thread_id: roomId } + // }); + // break; + // case 'm.room.member': + // let matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + // replacements: [JSON.stringify(event.sender)], + // type: QueryTypes.SELECT, + // model: People, + // }) + // + // if (matchingPeople.length === 0) { + // await People.create({ + // name: event.content?.displayname ?? event.sender, + // identifiers: JSON.stringify([event.sender]) + // }) + // } + // matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + // replacements: [JSON.stringify(event.sender)], + // type: QueryTypes.SELECT, + // model: People, + // }) + // + // for (let index in matchingPeople) { + // const person = matchingPeople[index]; + // + // let thread = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // let participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + // replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + // type: QueryTypes.SELECT, + // }); + // + // if (participant.length === 0) { + // await Participant.create({ + // person_id: person.id, + // thread_id: thread.id, + // joined_at: new Date(event.origin_server_ts), + // }) + // participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + // replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + // type: QueryTypes.SELECT, + // }); + // } + // + // if (event.content?.avatar_url) { + // let contentType = 'jpg'; + // const data = await client.downloadContent(event.content?.avatar_url); + // + // if (!data.data) { + // continue; + // } + // + // const id = person.id + // contentType = data.contentType.split('/')[1]; + // + // if (!fs.existsSync('/var/www/html/storage/app/' + id + '.' + contentType)) { + // const path = '/var/www/html/storage/app/' + id + '.' + contentType; + // fs.writeFileSync(path, data.data) + // + // await People.update({ + // photo_url: path + // }, { + // where: { id } + // }); + // } + // } + // } + // break; + // case 'm.room.encryption': + // const hash = crypto.createHash('sha512'); + // + // const key = hash.update(roomId, 'utf-8'); + // + // const thread = key.digest('hex'); + // let threadInQuestion = await Threads.findOne({ + // where: { thread_id: roomId } + // }); + // + // const originalSettings = JSON.parse(threadInQuestion?.settings ?? '{}'); + // + // await Threads.update({ + // settings: JSON.stringify({ + // ...originalSettings, + // ...event.content, + // 'hash': thread + // }) + // }, { + // where: { thread_id: roomId } + // }); + // + // console.log('encrypted room found', await client.crypto.isRoomEncrypted(roomId)); + // + // break; + // // this.db.set(`rooms.${key}`, ).write(); + // case 'm.room.topic': + // await Threads.update({ topic: event.content.topic }, { + // where: { thread_id: roomId } + // }); + // break; + // // Meta settings that dont' matter for this app + // case 'm.room.canonical_alias': + // case 'm.room.history_visibility': + // case 'm.room.guest_access': + // case 'm.room.power_levels': + // case 'm.room.avatar': + // case 'm.room.join_rules': + // case 'm.bridge': + // case 'uk.half-shot.bridge': + // case 'com.beeper.chatwoot.conversation_id': + // break; + // case 'com.beeper.backfill_status': + // + // case 'com.beeper.rooms.note_to_self': + // case 'com.beeper.support_chat': + // break; + // case "m.space.parent": + // case 'm.space.child': + // case 'com.beeper.feed': + // case 'org.matrix.msc2716.marker': + // // a twitter marker? + // + // default: + // console.log(event.type, JSON.stringify(event, null, 4)); + // }; + // } + + spinner.stopAndPersist({ + text: "âœ”ï¸ " + index+'/'+rooms.length+' History sync: ' + roomId, + }); + } + + spinner.succeed('Starting the matrix clint') + await client.start() + + } catch (error) { + console.error("Error:", error.message, error); + } +} + +process.on('SIGINT', function () { + sequelize.close(); + + process.exit(); +}) + +main(); diff --git a/docker/matrix-bot/reset-password.tsx b/docker/matrix-bot/reset-password.tsx new file mode 100644 index 00000000..fce04251 --- /dev/null +++ b/docker/matrix-bot/reset-password.tsx @@ -0,0 +1,211 @@ +#!/usr/bin/env node_modules/.bin/tsx + +import { default as originalFetch } from "node-fetch"; +import yargs from "yargs"; +import prompts from "prompts"; + +const DEBUG = ["1", "true"].includes(process.env.DEBUG) ?? false; + +async function debugFetch(url: string, options: any) { + console.debug("[fetch]", url, options); + + const response = await originalFetch(url, options); + + console.debug("[fetch] Response status:", response.status); + console.debug("[fetch] Response headers:", response.headers.raw()); + console.debug("[fetch] Response body:", await response.clone().text()); + + return response; +} + +const fetch = DEBUG ? debugFetch : originalFetch; + +async function loginWithEmail(_email?: string) { + const email = + _email ?? + ( + await prompts({ + type: "text", + name: "email", + message: "Enter your email:", + }) + ).email; + + if (!email) throw new Error("Email is required"); + + const loginResponse = await fetch("https://api.beeper.com/user/login", { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + }, + }); + const { request } = await loginResponse.json(); + + if (!request) + throw new Error("JSON response object missing required 'request' key"); + + await fetch("https://api.beeper.com/user/login/email", { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + "Content-Type": "application/json", + }, + body: JSON.stringify({ request, email }), + }); + + const code = ( + await prompts({ + type: "text", + name: "code", + message: "Enter the challenge code sent to your email:", + }) + ).code; + + if (!code) throw new Error("Code is required"); + + const loginChallengeResponse = await fetch( + "https://api.beeper.com/user/login/response", + { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + "Content-Type": "application/json", + }, + body: JSON.stringify({ request, response: code }), + } + ); + const { token } = await loginChallengeResponse.json(); + + console.log("Your JWT Token: ", token); +} + +async function loginWithToken(_token?: string) { + const token = + _token ?? + ( + await prompts({ + type: "text", + name: "token", + message: "Enter your JWT token:", + }) + ).token; + + if (!token) throw new Error("Token is required"); + + const jwtLoginResponse = await fetch( + "https://matrix.beeper.com/_matrix/client/v3/login", + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ type: "org.matrix.login.jwt", token: token }), + } + ); + + const jwtLoginResponseData = await jwtLoginResponse.json(); + const { + user_id: userId, + access_token: accessToken, + device_id: deviceId, + } = jwtLoginResponseData; + + console.log( + "JWT Login Response:", + JSON.stringify(jwtLoginResponseData, null, 2) + ); + + console.log("User ID:", userId); + console.log("Access Token:", accessToken); + console.log("Device ID:", deviceId); +} + +async function resetPassword( + _accessToken?: string, + _jwtToken?: string, + _newPassword?: string +) { + const accessToken = + _accessToken ?? + ( + await prompts({ + type: "text", + name: "access_token", + message: "Enter your Access Token:", + }) + ).access_token; + + if (!accessToken) throw new Error("Access token is required"); + + const jwtToken = + _jwtToken ?? + ( + await prompts({ + type: "text", + name: "jwt_token", + message: "Enter your JWT Token:", + }) + ).jwt_token; + + if (!jwtToken) throw new Error("JWT token is required"); + + const newPassword = + _newPassword ?? + ( + await prompts({ + type: "password", + name: "new_password", + message: "Enter your new password:", + }) + ).new_password; + + if (!newPassword) throw new Error("New password is required"); + + const userInteractiveAuthenticationFlowsResponse = await fetch( + "https://matrix.beeper.com/_matrix/client/v3/account/password", + { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({}), + } + ); + + const { session, flows } = + await userInteractiveAuthenticationFlowsResponse.json(); + + const hasJwtFlow = flows.find((f) => + f.stages.includes("org.matrix.login.jwt") + ); + + if (!hasJwtFlow) + throw new Error("Matrix server doesn't seem to support JWT flow"); + + await fetch("https://matrix.beeper.com/_matrix/client/v3/account/password", { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + auth: { + type: "org.matrix.login.jwt", + token: jwtToken, + session: session, + }, + new_password: newPassword, + logout_devices: false, + }), + }); + + console.log("Password reset successfully"); +} + +// loginWithEmail('beeper@kregel.email') +const jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhdXN0aW5rcmVnZWwiLCJpYXQiOjE2OTYzNjEzMDYsImV4cCI6MTY5NjM2MjIwNn0.Q70QD1jc3Jz5CZLmoQ1wkKuECb6g2Fcwp9e5UpD6Q-I'; + +// loginWithToken(jwt); + +resetPassword('syt_YXVzdGlua3JlZ2Vs_FiMVgVyaZlHWAtCvTmgo_0lpziI',jwt, 'oKcYigyptEFGcqGLn9JtKkurQ9ymrCJD'); diff --git a/docker/websocket/Dockerfile b/docker/websocket/Dockerfile new file mode 100644 index 00000000..8c142120 --- /dev/null +++ b/docker/websocket/Dockerfile @@ -0,0 +1,10 @@ +FROM austinkregel/base:latest + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.1/php.ini b/docker/websocket/php.ini similarity index 70% rename from docker/8.1/php.ini rename to docker/websocket/php.ini index 39dcbcac..66d04d5b 100644 --- a/docker/8.1/php.ini +++ b/docker/websocket/php.ini @@ -2,6 +2,3 @@ post_max_size = 100M upload_max_filesize = 100M variables_order = EGPCS - -[opcache] -opcache.enable_cli=1 diff --git a/docker/8.1/start-container b/docker/websocket/start-container similarity index 75% rename from docker/8.1/start-container rename to docker/websocket/start-container index b8643990..b99ddd05 100644 --- a/docker/8.1/start-container +++ b/docker/websocket/start-container @@ -13,5 +13,5 @@ chmod -R ugo+rw /.composer if [ $# -gt 0 ]; then exec gosu $WWWUSER "$@" else - exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf + /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf fi diff --git a/docker/websocket/supervisord.conf b/docker/websocket/supervisord.conf new file mode 100644 index 00000000..bface116 --- /dev/null +++ b/docker/websocket/supervisord.conf @@ -0,0 +1,12 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:websockets] +command=/usr/bin/php /var/www/html/artisan websockets:serve +numprocs=1 +autostart=true +autorestart=true +user=sail diff --git a/resources/js/Components/Button.vue b/resources/js/Components/Button.vue new file mode 100644 index 00000000..74d74b5a --- /dev/null +++ b/resources/js/Components/Button.vue @@ -0,0 +1,96 @@ + + + diff --git a/resources/js/Components/ComposerPackage.vue b/resources/js/Components/ComposerPackage.vue new file mode 100644 index 00000000..d6857291 --- /dev/null +++ b/resources/js/Components/ComposerPackage.vue @@ -0,0 +1,284 @@ + + + diff --git a/resources/js/Components/DynamicIcon.vue b/resources/js/Components/DynamicIcon.vue new file mode 100644 index 00000000..48c00663 --- /dev/null +++ b/resources/js/Components/DynamicIcon.vue @@ -0,0 +1,40 @@ + + + diff --git a/resources/js/Components/GlobalChat.vue b/resources/js/Components/GlobalChat.vue new file mode 100644 index 00000000..1c9cc6c8 --- /dev/null +++ b/resources/js/Components/GlobalChat.vue @@ -0,0 +1,121 @@ + + + diff --git a/resources/js/Components/HeaderMapping.vue b/resources/js/Components/HeaderMapping.vue new file mode 100644 index 00000000..1df2cb18 --- /dev/null +++ b/resources/js/Components/HeaderMapping.vue @@ -0,0 +1,163 @@ + + + diff --git a/resources/js/Components/Input.vue b/resources/js/Components/Input.vue new file mode 100644 index 00000000..ab69bab0 --- /dev/null +++ b/resources/js/Components/Input.vue @@ -0,0 +1,28 @@ + + + diff --git a/resources/js/Components/Label.vue b/resources/js/Components/Label.vue new file mode 100644 index 00000000..5a19d801 --- /dev/null +++ b/resources/js/Components/Label.vue @@ -0,0 +1,12 @@ + + + diff --git a/resources/js/Components/LinkAccount.vue b/resources/js/Components/LinkAccount.vue new file mode 100644 index 00000000..82c240d5 --- /dev/null +++ b/resources/js/Components/LinkAccount.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/resources/js/Components/Spork/CrudView.vue b/resources/js/Components/Spork/CrudView.vue index 94b170b3..26708efe 100644 --- a/resources/js/Components/Spork/CrudView.vue +++ b/resources/js/Components/Spork/CrudView.vue @@ -1,11 +1,11 @@ + + + + diff --git a/resources/js/Components/VueTerm.vue b/resources/js/Components/VueTerm.vue new file mode 100644 index 00000000..0aec7141 --- /dev/null +++ b/resources/js/Components/VueTerm.vue @@ -0,0 +1,79 @@ + + + diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue index ba7df1d1..11d313f6 100644 --- a/resources/js/Layouts/AppLayout.vue +++ b/resources/js/Layouts/AppLayout.vue @@ -1,19 +1,51 @@ diff --git a/resources/js/Layouts/Manage.vue b/resources/js/Layouts/Manage.vue new file mode 100644 index 00000000..d9972d6e --- /dev/null +++ b/resources/js/Layouts/Manage.vue @@ -0,0 +1,38 @@ + + + diff --git a/resources/js/Pages/Admin/Emails.vue b/resources/js/Pages/Admin/Emails.vue new file mode 100644 index 00000000..c0c035d4 --- /dev/null +++ b/resources/js/Pages/Admin/Emails.vue @@ -0,0 +1,140 @@ + + diff --git a/resources/js/Pages/Admin/Index.vue b/resources/js/Pages/Admin/Index.vue new file mode 100644 index 00000000..c0c035d4 --- /dev/null +++ b/resources/js/Pages/Admin/Index.vue @@ -0,0 +1,140 @@ + + diff --git a/resources/js/Pages/Banking/Settings.vue b/resources/js/Pages/Banking/Settings.vue new file mode 100644 index 00000000..47d20dde --- /dev/null +++ b/resources/js/Pages/Banking/Settings.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/resources/js/Pages/Servers.vue b/resources/js/Pages/Crud.vue similarity index 57% rename from resources/js/Pages/Servers.vue rename to resources/js/Pages/Crud.vue index b6d92bec..686c6bb8 100644 --- a/resources/js/Pages/Servers.vue +++ b/resources/js/Pages/Crud.vue @@ -2,54 +2,53 @@
- - + @@ -68,27 +67,25 @@ import AppLayout from '@/Layouts/AppLayout.vue'; import CrudView from "@/Components/Spork/CrudView.vue"; import SporkInput from "@/Components/Spork/SporkInput.vue"; import {buildUrl} from "@kbco/query-builder"; + export default { components: { + Link, CrudView, AppLayout, SporkInput }, - setup() { + props: ['description', 'plural', 'singular', 'link', 'paginator'], + setup(props) { + const { data, ...paginator} = props.paginator; return { createOpen: ref(false), - form: ref(({ - name: '', - settings: {}, - })), - data: ref([]), - pagination: ref({}), - - } - }, - watch: { - date(to, from) { - this.form.remind_at = dayjs(to).startOf('day').utc().format("YYYY-MM-DD HH:mm:ss") + form: ref(props.description?.required?.reduce((fields, field) => ({ + ...fields, + [field]: '' + }), {})), + data: ref(data ?? []), + pagination: ref(paginator ?? {}), } }, methods: { @@ -99,19 +96,37 @@ export default { return this.form.errors[error] ?? null; }, - dateFormat(contact) { - return '' + contact.starts_at + ' at ' + - '' + dayjs(contact.last_occurrence || contact.remind_at).format('h:mma') + '' - }, + fillDefaultTeamAndUser(form) { + if (form.hasOwnProperty('team_id')) { + form.team_id = this.$attrs.auth.user.current_team_id; + } + if (form.hasOwnProperty('user_id')) { + form.user_id = this.$attrs.auth.user.id; + } + + return form; + }, async save(form) { + form = this.fillDefaultTeamAndUser(form); + if (!form.id) { - await axios.post('/api/servers', form); + await axios.post('/api/crud/'+this.link, form); } else { console.log('No edit method defined') } + await this.fetch({ page: 1, limit: 15, }); + this.clearForm(); }, + clearForm() { + for (let key in form) { + if (form.hasOwnProperty(key)) { + form[key] = ''; + } + } + }, async onDelete(data) { - await axios.delete('/api/servers/' + form.id); + await axios.delete('/api/crud/'+this.link+'/' + form.id); + await this.fetch({ page: 1, limit: 15, }); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -128,11 +143,10 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/servers', { - page, - limit, + '/api/crud/'+this.link, { + page, limit, ...args, - include: ['tags',] + include: [], } )); diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index 1635e74c..839d7a1a 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -29,7 +29,6 @@ defineProps({ -
diff --git a/resources/js/Pages/Domains.vue b/resources/js/Pages/Domains.vue index 867c7d34..a0907316 100644 --- a/resources/js/Pages/Domains.vue +++ b/resources/js/Pages/Domains.vue @@ -111,13 +111,13 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/domains', form); + await axios.post('/api/crud/domains', form); } else { console.log('No edit method defined') } }, async onDelete(data) { - await axios.delete('/api/domains/' + form.id); + await axios.delete('/api/crud/domains/' + form.id); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -134,7 +134,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/domains', { + '/api/crud/domains', { page, limit, ...args, include: [], diff --git a/resources/js/Pages/FileManager.vue b/resources/js/Pages/FileManager.vue new file mode 100644 index 00000000..b41ffedc --- /dev/null +++ b/resources/js/Pages/FileManager.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/resources/js/Pages/Manage/Index.vue b/resources/js/Pages/Manage/Index.vue new file mode 100644 index 00000000..482d92ce --- /dev/null +++ b/resources/js/Pages/Manage/Index.vue @@ -0,0 +1,85 @@ + + + diff --git a/resources/js/Pages/Manage/People.vue b/resources/js/Pages/Manage/People.vue new file mode 100644 index 00000000..ae43c7d3 --- /dev/null +++ b/resources/js/Pages/Manage/People.vue @@ -0,0 +1,165 @@ + + + diff --git a/resources/js/Pages/Manage/Servers.vue b/resources/js/Pages/Manage/Servers.vue new file mode 100644 index 00000000..6342a7db --- /dev/null +++ b/resources/js/Pages/Manage/Servers.vue @@ -0,0 +1,74 @@ + + diff --git a/resources/js/Pages/Pages.vue b/resources/js/Pages/Pages.vue index 18610414..4fcb1aa6 100644 --- a/resources/js/Pages/Pages.vue +++ b/resources/js/Pages/Pages.vue @@ -135,13 +135,13 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/pages', form); + await axios.post('/api/crud/pages', form); } else { console.log('No edit method defined') } }, async onDelete(data) { - await axios.delete('/api/pages/' + form.id); + await axios.delete('/api/crud/pages/' + form.id); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -158,7 +158,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/pages', { + '/api/crud/pages', { page, limit, ...args, include: [] diff --git a/resources/js/Pages/People.vue b/resources/js/Pages/People.vue deleted file mode 100644 index 12fdf099..00000000 --- a/resources/js/Pages/People.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - diff --git a/resources/js/Pages/Petoskey/WeatherHeader.vue b/resources/js/Pages/Petoskey/WeatherHeader.vue index 530c75ae..1c8b6f0a 100644 --- a/resources/js/Pages/Petoskey/WeatherHeader.vue +++ b/resources/js/Pages/Petoskey/WeatherHeader.vue @@ -1,6 +1,6 @@ diff --git a/resources/js/Pages/Postal/Index.vue b/resources/js/Pages/Postal/Index.vue new file mode 100644 index 00000000..488dcd7b --- /dev/null +++ b/resources/js/Pages/Postal/Index.vue @@ -0,0 +1,95 @@ + + + + + + diff --git a/resources/js/Pages/Postal/Thread.vue b/resources/js/Pages/Postal/Thread.vue new file mode 100644 index 00000000..deadf9f9 --- /dev/null +++ b/resources/js/Pages/Postal/Thread.vue @@ -0,0 +1,166 @@ + + + + + + diff --git a/resources/js/Pages/Projects/Projects.vue b/resources/js/Pages/Projects/Projects.vue index de6cab42..ca1aa509 100644 --- a/resources/js/Pages/Projects/Projects.vue +++ b/resources/js/Pages/Projects/Projects.vue @@ -55,8 +55,8 @@
- - + +
@@ -91,7 +91,9 @@ export default { createOpen: ref(false), form: ref(({ name: '', - settings: {}, + settings: { + + }, })), data: ref([]), pagination: ref({}), @@ -117,7 +119,7 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/projects', { + await axios.post('/api/crud/projects', { ...form, team_id: this.$page.props.auth.user.current_team.id, }); @@ -128,7 +130,7 @@ export default { } }, async onDelete(data) { - await axios.delete('/api/projects/' + data.id); + await axios.delete('/api/crud/projects/' + data.id); await this.fetch({ page: 1, limit: 15, }) @@ -148,7 +150,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/projects', { + '/api/crud/projects', { page, limit, ...args, include: ['domains', 'servers'] diff --git a/resources/js/Pages/Settings.vue b/resources/js/Pages/Settings.vue new file mode 100644 index 00000000..a3e01beb --- /dev/null +++ b/resources/js/Pages/Settings.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/resources/js/Pages/Settings2.vue b/resources/js/Pages/Settings2.vue new file mode 100644 index 00000000..770ae95e --- /dev/null +++ b/resources/js/Pages/Settings2.vue @@ -0,0 +1,54 @@ + + + diff --git a/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue b/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue index 313ad3de..ede0c0f7 100644 --- a/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue +++ b/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue @@ -13,7 +13,7 @@ const props = defineProps({ }); const form = useForm({ - name: props.team.name, + name: props.team?.name ?? '', }); const updateTeamName = () => { diff --git a/resources/js/app.js b/resources/js/app.js index 6d4bb860..53e804d1 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1,6 +1,6 @@ import './bootstrap'; import '../css/app.css'; - +import Toaster from "@meforma/vue-toaster"; import { createApp, h } from 'vue'; import { createInertiaApp } from '@inertiajs/vue3'; import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; @@ -9,6 +9,7 @@ import { createStore } from "vuex"; import Hero from './Builder/Components/Heros/Classic.vue'; import BuilderButton from './Builder/Components/BuilderButton.vue'; import BuilderText from './Builder/Components/BuilderText.vue'; +import Notifications from 'notiwind'; import Grid from './Components/Grid.vue'; import TitleAndFooterTextCard from "./Builder/Components/Cards/TitleAndFooterTextCard.vue"; const registeredComponents = []; @@ -38,7 +39,9 @@ createInertiaApp({ const app = createApp({ render: () => h(App, props) }) .use(plugin) + .use(Notifications) .use(store) + .use(Toaster) .use(ZiggyVue, Ziggy); const addComponentToRegistry = (component) => { const name = (component.__name ?? component.name ?? component.__file ?? '').split('/').pop().split('.')[0]; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index b7eb38d9..b2ecae49 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -47,18 +47,18 @@ window.onerror = (error) => { * allows your team to easily build robust real-time web applications. */ -// import Echo from 'laravel-echo'; +import Echo from 'laravel-echo'; -// import Pusher from 'pusher-js'; -// window.Pusher = Pusher; +import Pusher from 'pusher-js'; +window.Pusher = Pusher; -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: import.meta.env.VITE_PUSHER_APP_KEY, -// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', -// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, -// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, -// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, -// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', -// enabledTransports: ['ws', 'wss'], -// }); +window.Echo = new Echo({ + broadcaster: 'pusher', + key: import.meta.env.VITE_PUSHER_APP_KEY, + cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', + wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, + wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, + forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', + enabledTransports: ['ws', 'wss'], +}); diff --git a/resources/js/old-spork/404Error.vue b/resources/js/old-spork/404Error.vue new file mode 100644 index 00000000..f184583e --- /dev/null +++ b/resources/js/old-spork/404Error.vue @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/ForgotPassword.vue b/resources/js/old-spork/Auth/ForgotPassword.vue new file mode 100644 index 00000000..7f4a3d9b --- /dev/null +++ b/resources/js/old-spork/Auth/ForgotPassword.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/Login.vue b/resources/js/old-spork/Auth/Login.vue new file mode 100644 index 00000000..aadcf5d2 --- /dev/null +++ b/resources/js/old-spork/Auth/Login.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/Register.vue b/resources/js/old-spork/Auth/Register.vue new file mode 100644 index 00000000..ac827b0c --- /dev/null +++ b/resources/js/old-spork/Auth/Register.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Base.vue b/resources/js/old-spork/Base.vue new file mode 100644 index 00000000..5416d8ca --- /dev/null +++ b/resources/js/old-spork/Base.vue @@ -0,0 +1,164 @@ + + diff --git a/resources/js/old-spork/Basement/Basement.vue b/resources/js/old-spork/Basement/Basement.vue new file mode 100644 index 00000000..f72f5cbd --- /dev/null +++ b/resources/js/old-spork/Basement/Basement.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/resources/js/old-spork/Basement/Dashboard.vue b/resources/js/old-spork/Basement/Dashboard.vue new file mode 100644 index 00000000..b8da1f47 --- /dev/null +++ b/resources/js/old-spork/Basement/Dashboard.vue @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Basement/Domains.vue b/resources/js/old-spork/Basement/Domains.vue new file mode 100644 index 00000000..30052369 --- /dev/null +++ b/resources/js/old-spork/Basement/Domains.vue @@ -0,0 +1,125 @@ + + + diff --git a/resources/js/old-spork/Basement/Servers.vue b/resources/js/old-spork/Basement/Servers.vue new file mode 100644 index 00000000..0df1a039 --- /dev/null +++ b/resources/js/old-spork/Basement/Servers.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Basement/Settings.vue b/resources/js/old-spork/Basement/Settings.vue new file mode 100644 index 00000000..003ea1dc --- /dev/null +++ b/resources/js/old-spork/Basement/Settings.vue @@ -0,0 +1,11 @@ + + + diff --git a/resources/js/old-spork/Bookmarks/Bookmarks.vue b/resources/js/old-spork/Bookmarks/Bookmarks.vue new file mode 100644 index 00000000..aa285fc5 --- /dev/null +++ b/resources/js/old-spork/Bookmarks/Bookmarks.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/Calendar.vue b/resources/js/old-spork/Calendar/Calendar.vue new file mode 100644 index 00000000..a5c8d3d8 --- /dev/null +++ b/resources/js/old-spork/Calendar/Calendar.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/MasterCalendar.vue b/resources/js/old-spork/Calendar/MasterCalendar.vue new file mode 100644 index 00000000..1bdf5faa --- /dev/null +++ b/resources/js/old-spork/Calendar/MasterCalendar.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/MiniCalendar.vue b/resources/js/old-spork/Calendar/MiniCalendar.vue new file mode 100644 index 00000000..040fd211 --- /dev/null +++ b/resources/js/old-spork/Calendar/MiniCalendar.vue @@ -0,0 +1,142 @@ + + + diff --git a/resources/js/old-spork/Compendium.vue b/resources/js/old-spork/Compendium.vue new file mode 100644 index 00000000..a2a8a315 --- /dev/null +++ b/resources/js/old-spork/Compendium.vue @@ -0,0 +1,123 @@ + + + diff --git a/resources/js/old-spork/Dashboard.vue b/resources/js/old-spork/Dashboard.vue new file mode 100644 index 00000000..d0eb050b --- /dev/null +++ b/resources/js/old-spork/Dashboard.vue @@ -0,0 +1,272 @@ + + diff --git a/resources/js/old-spork/Development/Development.vue b/resources/js/old-spork/Development/Development.vue new file mode 100644 index 00000000..21368119 --- /dev/null +++ b/resources/js/old-spork/Development/Development.vue @@ -0,0 +1,245 @@ + + + diff --git a/resources/js/old-spork/Development/Editor.vue b/resources/js/old-spork/Development/Editor.vue new file mode 100644 index 00000000..5899054f --- /dev/null +++ b/resources/js/old-spork/Development/Editor.vue @@ -0,0 +1,275 @@ + + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Development/Fabricator.vue b/resources/js/old-spork/Development/Fabricator.vue new file mode 100644 index 00000000..63121000 --- /dev/null +++ b/resources/js/old-spork/Development/Fabricator.vue @@ -0,0 +1,100 @@ + + + diff --git a/resources/js/old-spork/Development/FileOrFolder.vue b/resources/js/old-spork/Development/FileOrFolder.vue new file mode 100644 index 00000000..58f2bf37 --- /dev/null +++ b/resources/js/old-spork/Development/FileOrFolder.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Development/Flow.vue b/resources/js/old-spork/Development/Flow.vue new file mode 100644 index 00000000..4167b725 --- /dev/null +++ b/resources/js/old-spork/Development/Flow.vue @@ -0,0 +1,189 @@ + + + diff --git a/resources/js/old-spork/Favorites/Favorites.vue b/resources/js/old-spork/Favorites/Favorites.vue new file mode 100644 index 00000000..2e8be3b6 --- /dev/null +++ b/resources/js/old-spork/Favorites/Favorites.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/resources/js/old-spork/Feeds/RssFeeds.vue b/resources/js/old-spork/Feeds/RssFeeds.vue new file mode 100644 index 00000000..7f246569 --- /dev/null +++ b/resources/js/old-spork/Feeds/RssFeeds.vue @@ -0,0 +1,43 @@ + + + diff --git a/resources/js/old-spork/Feeds/RssSubscriptions.vue b/resources/js/old-spork/Feeds/RssSubscriptions.vue new file mode 100644 index 00000000..07c057bd --- /dev/null +++ b/resources/js/old-spork/Feeds/RssSubscriptions.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/resources/js/old-spork/Feeds/UnfilteredFeed.vue b/resources/js/old-spork/Feeds/UnfilteredFeed.vue new file mode 100644 index 00000000..e81a14c6 --- /dev/null +++ b/resources/js/old-spork/Feeds/UnfilteredFeed.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Billing.vue b/resources/js/old-spork/Finance/Billing.vue new file mode 100644 index 00000000..4823ce0d --- /dev/null +++ b/resources/js/old-spork/Finance/Billing.vue @@ -0,0 +1,202 @@ + + + diff --git a/resources/js/old-spork/Finance/Dashboard.vue b/resources/js/old-spork/Finance/Dashboard.vue new file mode 100644 index 00000000..ba7c0a54 --- /dev/null +++ b/resources/js/old-spork/Finance/Dashboard.vue @@ -0,0 +1,94 @@ + + + diff --git a/resources/js/old-spork/Finance/Finance.vue b/resources/js/old-spork/Finance/Finance.vue new file mode 100644 index 00000000..51b7e144 --- /dev/null +++ b/resources/js/old-spork/Finance/Finance.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Groups.vue b/resources/js/old-spork/Finance/Groups.vue new file mode 100644 index 00000000..853af282 --- /dev/null +++ b/resources/js/old-spork/Finance/Groups.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/resources/js/old-spork/Finance/LinkAccount.vue b/resources/js/old-spork/Finance/LinkAccount.vue new file mode 100644 index 00000000..f9cc8f2f --- /dev/null +++ b/resources/js/old-spork/Finance/LinkAccount.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Settings.vue b/resources/js/old-spork/Finance/Settings.vue new file mode 100644 index 00000000..4541f5dc --- /dev/null +++ b/resources/js/old-spork/Finance/Settings.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/resources/js/old-spork/Group.vue b/resources/js/old-spork/Group.vue new file mode 100644 index 00000000..bf3dd71b --- /dev/null +++ b/resources/js/old-spork/Group.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Garage.vue b/resources/js/old-spork/Maintenance/Garage.vue new file mode 100644 index 00000000..229c764a --- /dev/null +++ b/resources/js/old-spork/Maintenance/Garage.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Maintenance.vue b/resources/js/old-spork/Maintenance/Maintenance.vue new file mode 100644 index 00000000..f8a942ae --- /dev/null +++ b/resources/js/old-spork/Maintenance/Maintenance.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Properties.vue b/resources/js/old-spork/Maintenance/Properties.vue new file mode 100644 index 00000000..de856f7b --- /dev/null +++ b/resources/js/old-spork/Maintenance/Properties.vue @@ -0,0 +1,173 @@ + + + diff --git a/resources/js/old-spork/News/Articles.vue b/resources/js/old-spork/News/Articles.vue new file mode 100644 index 00000000..d6b7a717 --- /dev/null +++ b/resources/js/old-spork/News/Articles.vue @@ -0,0 +1,81 @@ + + + diff --git a/resources/js/old-spork/People/People.vue b/resources/js/old-spork/People/People.vue new file mode 100644 index 00000000..471eb758 --- /dev/null +++ b/resources/js/old-spork/People/People.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/resources/js/old-spork/Profile/UserAccount.vue b/resources/js/old-spork/Profile/UserAccount.vue new file mode 100644 index 00000000..c315a54c --- /dev/null +++ b/resources/js/old-spork/Profile/UserAccount.vue @@ -0,0 +1,267 @@ + + diff --git a/resources/js/old-spork/Recipes/AllRecipes.vue b/resources/js/old-spork/Recipes/AllRecipes.vue new file mode 100644 index 00000000..fffdd18b --- /dev/null +++ b/resources/js/old-spork/Recipes/AllRecipes.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/Food.vue b/resources/js/old-spork/Recipes/Food.vue new file mode 100644 index 00000000..2369413f --- /dev/null +++ b/resources/js/old-spork/Recipes/Food.vue @@ -0,0 +1,91 @@ + + + diff --git a/resources/js/old-spork/Recipes/Generic.vue b/resources/js/old-spork/Recipes/Generic.vue new file mode 100644 index 00000000..4ac6100f --- /dev/null +++ b/resources/js/old-spork/Recipes/Generic.vue @@ -0,0 +1,28 @@ + + diff --git a/resources/js/old-spork/Recipes/Ingredients.vue b/resources/js/old-spork/Recipes/Ingredients.vue new file mode 100644 index 00000000..a262b3b6 --- /dev/null +++ b/resources/js/old-spork/Recipes/Ingredients.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/Recipe.vue b/resources/js/old-spork/Recipes/Recipe.vue new file mode 100644 index 00000000..1dfc8dc3 --- /dev/null +++ b/resources/js/old-spork/Recipes/Recipe.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/SingleRecipe.vue b/resources/js/old-spork/Recipes/SingleRecipe.vue new file mode 100644 index 00000000..3c7841c6 --- /dev/null +++ b/resources/js/old-spork/Recipes/SingleRecipe.vue @@ -0,0 +1,44 @@ + + + diff --git a/resources/js/old-spork/Recipes/ViewRecipe.vue b/resources/js/old-spork/Recipes/ViewRecipe.vue new file mode 100644 index 00000000..f3e37e3c --- /dev/null +++ b/resources/js/old-spork/Recipes/ViewRecipe.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/resources/js/old-spork/Reminders.vue b/resources/js/old-spork/Reminders.vue new file mode 100644 index 00000000..2c6c2af3 --- /dev/null +++ b/resources/js/old-spork/Reminders.vue @@ -0,0 +1,227 @@ + + + diff --git a/resources/js/old-spork/Research/Dashboard.vue b/resources/js/old-spork/Research/Dashboard.vue new file mode 100644 index 00000000..5cd17d77 --- /dev/null +++ b/resources/js/old-spork/Research/Dashboard.vue @@ -0,0 +1,133 @@ + + + diff --git a/resources/js/old-spork/Research/Research.vue b/resources/js/old-spork/Research/Research.vue new file mode 100644 index 00000000..232b3ee0 --- /dev/null +++ b/resources/js/old-spork/Research/Research.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/resources/js/old-spork/Research/RssManager.vue b/resources/js/old-spork/Research/RssManager.vue new file mode 100644 index 00000000..c13227d0 --- /dev/null +++ b/resources/js/old-spork/Research/RssManager.vue @@ -0,0 +1,10 @@ + + + diff --git a/resources/js/old-spork/Research/Topic.vue b/resources/js/old-spork/Research/Topic.vue new file mode 100644 index 00000000..e5a5aa16 --- /dev/null +++ b/resources/js/old-spork/Research/Topic.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/resources/js/old-spork/Servers/Dashboard.vue b/resources/js/old-spork/Servers/Dashboard.vue new file mode 100644 index 00000000..a4fea736 --- /dev/null +++ b/resources/js/old-spork/Servers/Dashboard.vue @@ -0,0 +1,63 @@ + + + diff --git a/resources/js/old-spork/Servers/Servers.vue b/resources/js/old-spork/Servers/Servers.vue new file mode 100644 index 00000000..0a86e247 --- /dev/null +++ b/resources/js/old-spork/Servers/Servers.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/resources/js/old-spork/Servers/Services.vue b/resources/js/old-spork/Servers/Services.vue new file mode 100644 index 00000000..92220e94 --- /dev/null +++ b/resources/js/old-spork/Servers/Services.vue @@ -0,0 +1,62 @@ + + + diff --git a/resources/js/old-spork/Settings/Settings.vue b/resources/js/old-spork/Settings/Settings.vue new file mode 100644 index 00000000..720a4f94 --- /dev/null +++ b/resources/js/old-spork/Settings/Settings.vue @@ -0,0 +1,71 @@ + + + diff --git a/resources/js/old-spork/Setup.vue b/resources/js/old-spork/Setup.vue new file mode 100644 index 00000000..49b09189 --- /dev/null +++ b/resources/js/old-spork/Setup.vue @@ -0,0 +1,399 @@ + + + diff --git a/resources/js/old-spork/Shopping/Cart.vue b/resources/js/old-spork/Shopping/Cart.vue new file mode 100644 index 00000000..48f2dcf9 --- /dev/null +++ b/resources/js/old-spork/Shopping/Cart.vue @@ -0,0 +1,53 @@ + + + diff --git a/resources/js/old-spork/Shopping/PastOrders.vue b/resources/js/old-spork/Shopping/PastOrders.vue new file mode 100644 index 00000000..49a5c613 --- /dev/null +++ b/resources/js/old-spork/Shopping/PastOrders.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/js/old-spork/Shopping/Shopping.vue b/resources/js/old-spork/Shopping/Shopping.vue new file mode 100644 index 00000000..e97e93b0 --- /dev/null +++ b/resources/js/old-spork/Shopping/Shopping.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/resources/js/old-spork/Shopping/Store.vue b/resources/js/old-spork/Shopping/Store.vue new file mode 100644 index 00000000..96d00fc0 --- /dev/null +++ b/resources/js/old-spork/Shopping/Store.vue @@ -0,0 +1,90 @@ + + + diff --git a/resources/js/old-spork/Shopping/components/OrderRow.vue b/resources/js/old-spork/Shopping/components/OrderRow.vue new file mode 100644 index 00000000..b594d4ed --- /dev/null +++ b/resources/js/old-spork/Shopping/components/OrderRow.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/resources/js/old-spork/Shopping/components/StoreItem.vue b/resources/js/old-spork/Shopping/components/StoreItem.vue new file mode 100644 index 00000000..b4889f53 --- /dev/null +++ b/resources/js/old-spork/Shopping/components/StoreItem.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/resources/js/old-spork/SpeechTagging.vue b/resources/js/old-spork/SpeechTagging.vue new file mode 100644 index 00000000..e288d693 --- /dev/null +++ b/resources/js/old-spork/SpeechTagging.vue @@ -0,0 +1,150 @@ + + diff --git a/resources/js/ziggy.js b/resources/js/ziggy.js index 74d5f8a3..f83eaf39 100644 --- a/resources/js/ziggy.js +++ b/resources/js/ziggy.js @@ -1,4 +1,4 @@ -const Ziggy = {"url":"http:\/\/localhost","port":null,"defaults":{},"routes":{"dusk.login":{"uri":"_dusk\/login\/{userId}\/{guard?}","methods":["GET","HEAD"]},"dusk.logout":{"uri":"_dusk\/logout\/{guard?}","methods":["GET","HEAD"]},"dusk.user":{"uri":"_dusk\/user\/{guard?}","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"password.request":{"uri":"forgot-password","methods":["GET","HEAD"]},"password.reset":{"uri":"reset-password\/{token}","methods":["GET","HEAD"]},"password.email":{"uri":"forgot-password","methods":["POST"]},"password.update":{"uri":"reset-password","methods":["POST"]},"register":{"uri":"register","methods":["GET","HEAD"]},"verification.notice":{"uri":"email\/verify","methods":["GET","HEAD"]},"verification.verify":{"uri":"email\/verify\/{id}\/{hash}","methods":["GET","HEAD"]},"verification.send":{"uri":"email\/verification-notification","methods":["POST"]},"user-profile-information.update":{"uri":"user\/profile-information","methods":["PUT"]},"user-password.update":{"uri":"user\/password","methods":["PUT"]},"password.confirmation":{"uri":"user\/confirmed-password-status","methods":["GET","HEAD"]},"password.confirm":{"uri":"user\/confirm-password","methods":["POST"]},"two-factor.login":{"uri":"two-factor-challenge","methods":["GET","HEAD"]},"two-factor.enable":{"uri":"user\/two-factor-authentication","methods":["POST"]},"two-factor.confirm":{"uri":"user\/confirmed-two-factor-authentication","methods":["POST"]},"two-factor.disable":{"uri":"user\/two-factor-authentication","methods":["DELETE"]},"two-factor.qr-code":{"uri":"user\/two-factor-qr-code","methods":["GET","HEAD"]},"two-factor.secret-key":{"uri":"user\/two-factor-secret-key","methods":["GET","HEAD"]},"two-factor.recovery-codes":{"uri":"user\/two-factor-recovery-codes","methods":["GET","HEAD"]},"horizon.stats.index":{"uri":"horizon\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"horizon\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"horizon\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"horizon\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"horizon\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["GET","HEAD"]},"horizon.monitoring-tag.destroy":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"}},"horizon.jobs-metrics.index":{"uri":"horizon\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"horizon\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.queues-metrics.index":{"uri":"horizon\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"horizon\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.index":{"uri":"horizon\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"horizon\/api\/batches\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.retry":{"uri":"horizon\/api\/batches\/retry\/{id}","methods":["POST"]},"horizon.pending-jobs.index":{"uri":"horizon\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"horizon\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"horizon\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"horizon\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"horizon\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"]},"horizon.retry-jobs.show":{"uri":"horizon\/api\/jobs\/retry\/{id}","methods":["POST"]},"horizon.jobs.show":{"uri":"horizon\/api\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.index":{"uri":"horizon\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"}},"profile.show":{"uri":"user\/profile","methods":["GET","HEAD"]},"other-browser-sessions.destroy":{"uri":"user\/other-browser-sessions","methods":["DELETE"]},"current-user-photo.destroy":{"uri":"user\/profile-photo","methods":["DELETE"]},"current-user.destroy":{"uri":"user","methods":["DELETE"]},"api-tokens.index":{"uri":"user\/api-tokens","methods":["GET","HEAD"]},"api-tokens.store":{"uri":"user\/api-tokens","methods":["POST"]},"api-tokens.update":{"uri":"user\/api-tokens\/{token}","methods":["PUT"]},"api-tokens.destroy":{"uri":"user\/api-tokens\/{token}","methods":["DELETE"]},"teams.create":{"uri":"teams\/create","methods":["GET","HEAD"]},"teams.store":{"uri":"teams","methods":["POST"]},"teams.show":{"uri":"teams\/{team}","methods":["GET","HEAD"]},"teams.update":{"uri":"teams\/{team}","methods":["PUT"]},"teams.destroy":{"uri":"teams\/{team}","methods":["DELETE"]},"current-team.update":{"uri":"current-team","methods":["PUT"]},"team-members.store":{"uri":"teams\/{team}\/members","methods":["POST"]},"team-members.update":{"uri":"teams\/{team}\/members\/{user}","methods":["PUT"]},"team-members.destroy":{"uri":"teams\/{team}\/members\/{user}","methods":["DELETE"]},"team-invitations.accept":{"uri":"team-invitations\/{invitation}","methods":["GET","HEAD"]},"team-invitations.destroy":{"uri":"team-invitations\/{invitation}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"abstract_model_id.index":{"uri":"api\/{abstract_model}","methods":["GET","HEAD"]},"abstract_model_id.store":{"uri":"api\/{abstract_model}","methods":["POST"]},"abstract_model_id.fields":{"uri":"api\/{abstract_model}\/fields","methods":["GET","HEAD"]},"abstract_model_id.show":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["GET","HEAD"]},"abstract_model_id.update":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["PUT"]},"abstract_model_id.restore":{"uri":"api\/{abstract_model}\/{abstract_model_id}\/restore","methods":["POST"]},"abstract_model_id.destroy":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["DELETE"]},"abstract_model_id.forceDestroy":{"uri":"api\/{abstract_model}\/{abstract_model_id}\/force","methods":["DELETE"]},"petoskey":{"uri":"\/","methods":["GET","HEAD"],"domain":"petoskey.today"},"dashboard":{"uri":"dashboard","methods":["GET","HEAD"],"domain":"spork.localhost"},"projects":{"uri":"projects","methods":["GET","HEAD"],"domain":"spork.localhost"},"projects.show":{"uri":"projects\/{project}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"project":"id"}},"pages":{"uri":"pages\/create","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers":{"uri":"servers","methods":["GET","HEAD"],"domain":"spork.localhost"},"credentials":{"uri":"credentials","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers.show":{"uri":"servers\/{server}","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains":{"uri":"domains","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains.show":{"uri":"domains\/{domain}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"domain":"id"}}}}; +const Ziggy = {"url":"http:\/\/localhost","port":null,"defaults":{},"routes":{"dusk.login":{"uri":"_dusk\/login\/{userId}\/{guard?}","methods":["GET","HEAD"]},"dusk.logout":{"uri":"_dusk\/logout\/{guard?}","methods":["GET","HEAD"]},"dusk.user":{"uri":"_dusk\/user\/{guard?}","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"password.request":{"uri":"forgot-password","methods":["GET","HEAD"]},"password.reset":{"uri":"reset-password\/{token}","methods":["GET","HEAD"]},"password.email":{"uri":"forgot-password","methods":["POST"]},"password.update":{"uri":"reset-password","methods":["POST"]},"verification.notice":{"uri":"email\/verify","methods":["GET","HEAD"]},"verification.verify":{"uri":"email\/verify\/{id}\/{hash}","methods":["GET","HEAD"]},"verification.send":{"uri":"email\/verification-notification","methods":["POST"]},"user-profile-information.update":{"uri":"user\/profile-information","methods":["PUT"]},"user-password.update":{"uri":"user\/password","methods":["PUT"]},"password.confirmation":{"uri":"user\/confirmed-password-status","methods":["GET","HEAD"]},"password.confirm":{"uri":"user\/confirm-password","methods":["POST"]},"two-factor.login":{"uri":"two-factor-challenge","methods":["GET","HEAD"]},"two-factor.enable":{"uri":"user\/two-factor-authentication","methods":["POST"]},"two-factor.confirm":{"uri":"user\/confirmed-two-factor-authentication","methods":["POST"]},"two-factor.disable":{"uri":"user\/two-factor-authentication","methods":["DELETE"]},"two-factor.qr-code":{"uri":"user\/two-factor-qr-code","methods":["GET","HEAD"]},"two-factor.secret-key":{"uri":"user\/two-factor-secret-key","methods":["GET","HEAD"]},"two-factor.recovery-codes":{"uri":"user\/two-factor-recovery-codes","methods":["GET","HEAD"]},"horizon.stats.index":{"uri":"horizon\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"horizon\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"horizon\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"horizon\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"horizon\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["GET","HEAD"]},"horizon.monitoring-tag.destroy":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"}},"horizon.jobs-metrics.index":{"uri":"horizon\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"horizon\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.queues-metrics.index":{"uri":"horizon\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"horizon\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.index":{"uri":"horizon\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"horizon\/api\/batches\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.retry":{"uri":"horizon\/api\/batches\/retry\/{id}","methods":["POST"]},"horizon.pending-jobs.index":{"uri":"horizon\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"horizon\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"horizon\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"horizon\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"horizon\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"]},"horizon.retry-jobs.show":{"uri":"horizon\/api\/jobs\/retry\/{id}","methods":["POST"]},"horizon.jobs.show":{"uri":"horizon\/api\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.index":{"uri":"horizon\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"}},"profile.show":{"uri":"user\/profile","methods":["GET","HEAD"]},"other-browser-sessions.destroy":{"uri":"user\/other-browser-sessions","methods":["DELETE"]},"current-user-photo.destroy":{"uri":"user\/profile-photo","methods":["DELETE"]},"current-user.destroy":{"uri":"user","methods":["DELETE"]},"api-tokens.index":{"uri":"user\/api-tokens","methods":["GET","HEAD"]},"api-tokens.store":{"uri":"user\/api-tokens","methods":["POST"]},"api-tokens.update":{"uri":"user\/api-tokens\/{token}","methods":["PUT"]},"api-tokens.destroy":{"uri":"user\/api-tokens\/{token}","methods":["DELETE"]},"teams.create":{"uri":"teams\/create","methods":["GET","HEAD"]},"teams.store":{"uri":"teams","methods":["POST"]},"teams.show":{"uri":"teams\/{team}","methods":["GET","HEAD"]},"teams.update":{"uri":"teams\/{team}","methods":["PUT"]},"teams.destroy":{"uri":"teams\/{team}","methods":["DELETE"]},"current-team.update":{"uri":"current-team","methods":["PUT"]},"team-members.store":{"uri":"teams\/{team}\/members","methods":["POST"]},"team-members.update":{"uri":"teams\/{team}\/members\/{user}","methods":["PUT"]},"team-members.destroy":{"uri":"teams\/{team}\/members\/{user}","methods":["DELETE"]},"team-invitations.accept":{"uri":"team-invitations\/{invitation}","methods":["GET","HEAD"]},"team-invitations.destroy":{"uri":"team-invitations\/{invitation}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"abstract_model_id.index":{"uri":"api\/crud\/{abstract_model}","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.store":{"uri":"api\/crud\/{abstract_model}","methods":["POST"],"domain":"spork.localhost"},"abstract_model_id.fields":{"uri":"api\/crud\/{abstract_model}\/fields","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.show":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.update":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["PUT"],"domain":"spork.localhost"},"abstract_model_id.restore":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}\/restore","methods":["POST"],"domain":"spork.localhost"},"abstract_model_id.destroy":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["DELETE"],"domain":"spork.localhost"},"abstract_model_id.forceDestroy":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}\/force","methods":["DELETE"],"domain":"spork.localhost"},"petoskey":{"uri":"\/","methods":["GET","HEAD"],"domain":"petoskey.localhost"},"welcome":{"uri":"\/","methods":["GET","HEAD"],"domain":"spork.localhost"},"dashboard":{"uri":"dashboard","methods":["GET","HEAD"],"domain":"spork.localhost"},"crud":{"uri":"{link}","methods":["GET","HEAD"],"wheres":{"link":"(projects|pages|people|servers|domains|tags|scripts|research|credentials|articles)"},"domain":"spork.localhost"},"projects.show":{"uri":"projects\/{project}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"project":"id"}},"pages":{"uri":"pages\/create","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers.show":{"uri":"servers\/{server}","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains.show":{"uri":"domains\/{domain}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"domain":"id"}},"user.api-query":{"uri":"user\/api-query","methods":["GET","HEAD"],"domain":"spork.localhost"},"project.deploy":{"uri":"project\/{project}\/deploy","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"project.attach":{"uri":"project\/{project}\/attach","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"project.detach":{"uri":"project\/{project}\/detach","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"register-device":{"uri":"register-device","methods":["POST"],"domain":"spork.localhost"},"admin":{"uri":"admin","methods":["GET","HEAD"],"domain":"spork.localhost"}}}; if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') { Object.assign(Ziggy.routes, window.Ziggy.routes); diff --git a/resources/node/index.js b/resources/node/index.js new file mode 100644 index 00000000..534b6a3f --- /dev/null +++ b/resources/node/index.js @@ -0,0 +1,65 @@ +import dialogflow from '@google-cloud/dialogflow'; + +// Instantiates a session client +const sessionClient = new dialogflow.SessionsClient(); + +async function detectIntent( + query, + contexts, +) { + const projectId = 'kb-computers-llc--143019'; +// sessionId: String representing a random number or hashed user identifier + const sessionId = '505049310'; + const languageCode = 'en'; + + + // The path to identify the agent that owns the created intent. + const sessionPath = sessionClient.projectAgentSessionPath( + projectId, + sessionId + ); + + // The text query request. + const request = { + session: sessionPath, + queryInput: { + text: { + text: query, + languageCode: languageCode, + }, + }, + }; + + if (contexts && contexts.length > 0) { + request.queryParams = { + contexts: contexts, + }; + } + + const responses = await sessionClient.detectIntent(request); + return responses[0]; +} + +export default detectIntent; + + +const run = async () => { + let context; + let intentResponse; + + try { + console.log(`Sending Query: ${query}`); + intentResponse = await detectIntent( + query, + context, + ); + console.log('Detected intent'); + console.log( + `Fulfillment Text: ${intentResponse.queryResult.fulfillmentText}`, intentResponse + ); + // Use the context from this response for next queries + context = intentResponse.queryResult.outputContexts; + } catch (error) { + console.log(error); + } +} diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php index 81bcd898..1cb28b20 100644 --- a/resources/views/app.blade.php +++ b/resources/views/app.blade.php @@ -1,5 +1,5 @@ - + @@ -15,7 +15,7 @@ @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead - + @inertia diff --git a/resources/views/basement-scripts/link-hypervisor.blade.php b/resources/views/basement-scripts/link-hypervisor.blade.php new file mode 100644 index 00000000..aa0626cc --- /dev/null +++ b/resources/views/basement-scripts/link-hypervisor.blade.php @@ -0,0 +1,129 @@ +#!/bin/bash +set -xe +# Post-create Hypervisor linking script. +# We should have access to the hypervisor variable here to be able to dispatch a put request from the server. + +# Steps +# 1. Setup SSH +# 2. Get disk size +# 3. Get available memory +# 4. Get available IPs +# 5. Create the server record via CURL. +# 6. Install node +# 6-1. Curl step update for the server. +# 7. Install Metrics +# 7-1. Curl step update for the server. +# 8. Connect to socket IO and start pumping out live installation output +# 9. Run the post-install steps. + +# Set up SSH key (initial generation, and posting to our server) +# Get main disk size +# Get available memory +# Get all available IP configurations (At least need public and private IPs) + +apt_install_prereqs() { +apt-get install -y curl openssh-client jq virt-what +} + +yum_install_prereqs() { +curl -sL https://rpm.nodesource.com/setup_12.x | bash - + +yum install curl openssh-client jq virt-what +} + +apt_install_node() { +apt-get remove -y node nodejs +curl -sL https://deb.nodesource.com/setup_12.x | bash - +apt-get update +apt-get install -y nodejs +} +yum_install_node() { +yum remove node nodejs +curl -sL https://rpm.nodesource.com/setup_12.x | bash - +yum update +yum install nodejs +} + +source /etc/os-release + +if [ -n "$(command -v apt-get)" ]; then +apt_install_prereqs +else +yum_install_prereqs +fi + +# The general idea for these bits here is that we should be getting the data from the server +# in a very general way. One that would allow this to work cross platform. +NAME=$(hostname -s) +PUBLIC_IP=$(curl {{ url('ip') }}) +INSTALL_DATE=$(ls -lact --time-style=long-iso /etc |awk 'END {print $6,$7}') +DISK_SIZE=$(df -h | awk '{print $4}' | head -2 | tail -1) +MEMORY_KB=$(cat /proc/meminfo | grep memtotal -i | awk '{print $2}') +MEMORY=$(($MEMORY_KB / 1024)) +KERNEL=$(uname -r) +CPU_THREADS=$(nproc --all) + +HYPERVISOR=$(virt-what) + +if [[ -z "$HYPERVISOR" ]]; then +echo "##########################################################################################################################" +echo "# ERROR:" +echo "# You do not have a hypervisor installed. Please install one before trying to run this command." +echo "# Suggestion:" +echo "# For Ubuntu you can use:" +echo " sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils" +echo "#" +echo "# For CentOS you can use:" +echo " yum -y install @virt* dejavu-lgc-* xorg-x11-xauth tigervnc libguestfs-tools policycoreutils-python bridge-utils" +echo " semanage fcontext -a -t virt_image_t "/vm(/.*)?"; restorecon -R /vm" +echo " sed -i 's/^\(net.ipv4.ip_forward =\).*/\1 1/' /etc/sysctl.conf; sysctl -p" +echo " chkconfig libvirtd on; shutdown -r now" +echo " chkconfig network on" +echo " service network restart" +echo " yum -y erase NetworkManager" +echo " cp -p /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}" +echo " sed -i -e'/HWADDR/d' -e'/UUID/d' -e's/eth0/br0/' -e's/Ethernet/Bridge/' /etc/sysconfig/network-scripts/ifcfg-br0" +echo " echo DELAY=0 >> /etc/sysconfig/network-scripts/ifcfg-br0" +echo " echo 'BOOTPROTO="none"' >> /etc/sysconfig/network-scripts/ifcfg-eth0" +echo " echo BRIDGE=br0 >> /etc/sysconfig/network-scripts/ifcfg-eth0" +echo " service network restart" +echo " brctl show" +echo "#" +echo "#########################################################################################################################w#" + exit 1; +fi + +# Creation link +SERVER=$(curl -X POST -H 'Content-type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer {!! $token->token !!}' --data "{!! addslashes(json_encode([ + 'name' => '$NAME', + 'ip_address' => '$PUBLIC_IP', + 'memory' => '$MEMORY', + 'disk' => '$DISK_SIZE', + 'host_created_at' => '$INSTALL_DATE', + 'kernel' => '$KERNEL', + 'distro' => '$NAME', + 'threads' => '$CPU_THREADS', +])) !!}" {{ route('servers.create-no-credential', [$credential->id]) }}) + +# The ssh key is generated on the instance of the basement being used. +SSH_PUBLIC_KEY=$(echo $SERVER | jq -r '.ssh_key_public') + +mkdir -p /root/.ssh +touch /root/.ssh/authorized_keys +echo $SSH_PUBLIC_KEY >> /root/.ssh/authorized_keys + +@if(request()->has('node') && (bool) request()->get('node')) + # Install node. + + if [ -n "$(command -v apt-get)" ]; then + apt_install_node + else + yum_install_node + fi + + @if (request()->has('metrics') && (bool) request()->get('metrics')) + # Install metrics client + {{--npm i -g @kbco/monitor--}} + {{--API_HOST={{ url('') }} API_TOKEN={{ $token->token }} monitor--}} + @endif +@endif diff --git a/resources/views/basement-scripts/link-server.blade.php b/resources/views/basement-scripts/link-server.blade.php new file mode 100644 index 00000000..419230cc --- /dev/null +++ b/resources/views/basement-scripts/link-server.blade.php @@ -0,0 +1,119 @@ +@php + $route = function (...$params) { + return str_replace('link.','', route(...$params)); + }; + $url = function (...$params) { + return str_replace('link.','', url(...$params)); + }; +@endphp#!/bin/bash +set -ev +# Steps +# 1. Setup SSH +# 2. Get disk size +# 3. Get available memory +# 4. Get available IPs +# 5. Create the server record via CURL. +# 6. Install node +# 6-1. Curl step update for the server. +# 7. Install Metrics +# 7-1. Curl step update for the server. +# 8. Connect to socket IO and start pumping out live installation output +# 9. Run the post-install steps. + +# Set up SSH key (initial generation, and posting to our server) +# Get main disk size +# Get available memory +# Get all available IP configurations (At least need public and private IPs) + +export DEBIAN_FRONTEND=noninteractive + +apt_install_prereqs() { + apt-get install -y curl openssh-client jq +} + +yum_install_prereqs() { + curl -sL https://rpm.nodesource.com/setup_12.x | bash - + + yum install curl openssh-client jq +} + +apt_install_node() { + apt-get remove -y nodejs + curl -sL https://deb.nodesource.com/setup_12.x | bash - + apt-get update + apt-get install -y nodejs +} +yum_install_node() { + yum remove node nodejs + curl -sL https://rpm.nodesource.com/setup_12.x | bash - + yum update + yum install nodejs +} + +source /etc/lsb-release + +if [[ "$DISTRIB_ID" == "Ubuntu" ]]; then + apt_install_prereqs +else + yum_install_prereqs +fi + +# Creation link +SERVER_DATA() +{ + NAME=$(hostname -s | xargs) + PUBLIC_IP=$(curl "https://ipinfo.io/ip" | xargs) + DISK_SIZE=$(df -h | awk '{print $4}' | head -2 | tail -1 | xargs) + MEMORY_KB=$(cat /proc/meminfo | grep memtotal -i | awk '{print $2}') + MEMORY=$(echo $(($MEMORY_KB / 1024)) | xargs) + KERNEL=$(uname -r | xargs) + CPU_THREADS=$(nproc --all | xargs) + source /etc/lsb-release + cat < '$NAME', + 'ip_address' => '$PUBLIC_IP', + 'memory' => '$MEMORY', + 'disk' => '$DISK_SIZE', + 'host_created_at' => now()->format('Y-m-d H:i:s'), + 'kernel' => '$KERNEL', + 'distro' => '$DISTRIB_ID', + 'threads' => '$CPU_THREADS', +], JSON_PRETTY_PRINT) !!} +EOF +} + +SERVER=$(curl -X POST -H 'Authentication: Bearer {{ request()->header('') }}' -H 'Content-type: application/json' -H 'Accept: application/json' -d "$(SERVER_DATA)" -X POST {{ route('create-device') }}) + +echo "" +echo "$SERVER" +echo "" + +MESSAGE=$(echo $SERVER | jq -r ".message") +ERRORS=$(echo "$SERVER" | jq -r ".errors") +if [[ "$MESSAGE" != null ]]; then + clear + echo 'Error creating server.' + echo $SERVER; + echo "$(SERVER_DATA)" + echo "ERRORS: $MESSAGE" + exit 1; +fi +if [[ "$ERRORS" != null ]]; then + echo 'Error creating server.' + echo $SERVER; + echo "$(SERVER_DATA)" + echo "ERRORS: $ERRORS" + exit 1; +fi +SERVER=$(echo "$SERVER" | jq -r ".data") + +mkdir -p ~/.basement/logs + +echo "{ \"token\": \"$(echo "$SERVER" | jq -r ".access_token")\", \"user_id\": \"$(echo "SERVER" | jq -r ".user_id")\" }" > ~/.basement/config.json + +SSH_PUBLIC_KEY=$(echo $SERVER | jq -r '.`ssh_key_public`') + +mkdir -p /root/.ssh +touch /root/.ssh/authorized_keys +echo $SSH_PUBLIC_KEY >> /root/.ssh/authorized_keys diff --git a/routes/console.php b/routes/console.php index 174d7fd7..189f8d63 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,3 +1,355 @@ getDriver(); + /** @var \League\Flysystem\Ftp\FtpAdapter $adapter */ + $adapter = $this->getAdapter(); + $adapter->customMethod = function ($path) { + $location = $this->prefixer()->prefixPath($path); + + if ($this->isPureFtpdServer) { + $location = $this->escapePath($location); + } + + $object = ftp_raw($this->connection(), 'STAT ' . Str::ascii($location)); + if (empty($object) || count($object) < 3 || substr($object[1], 0, 5) === "ftpd:") { + $object = ftp_raw($this->connection(), 'STAT ' . $this->escapePath($location)); + } + + if (empty($object) || count($object) < 3 || substr($object[1], 0, 5) === "ftpd:") { + dd($object, error_get_last()); + throw UnableToRetrieveMetadata::create($path, '', error_get_last()['message'] ?? ''); + } + + $item = $object[1]; + $item = preg_replace('#\s+#', ' ', trim($item), 7); + $parts = explode(' ', $item, 9); + [$permissions, $number, $owner, $group, $size, $month, $day, $timeOrYear, $path] = $parts; + $permissions = $this->normalizePermissions($permissions); + $metadata = compact( + 'permissions', + 'number', + 'owner', + 'group', + 'size', + 'month', + 'day', + 'timeOrYear', + 'path' + ); + + $metadata['last_modified'] = $this->normalizeUnixTimestamp($month, $day, $timeOrYear); + + return $metadata; + }; + return $adapter->customMethod->bindTo($adapter)->call($adapter, $path); + }); + + $folders = [ + '/Shows', + '/Music', + '/Movies', + '/Downloads', + ]; + + $folderCount = count($folders); + foreach ($folders as $i => $folder) { + $this->info("Processing folder: $i/$folderCount - $folder"); + $files = $storage->allFiles($folder); + $this->info("Found files: ".$count = count($files)); + /** @var \Symfony\Component\Console\Helper\ProgressBar $bar */ + $bar = $this->output->createProgressBar($count); + $bar->clear(); + $bar->display(); + foreach ($files as $file) { + [ + 'size' => $size, + 'last_modified' => $last_modified, + ] = $storage->information($file); + + try { + $file = \App\Models\File::firstOrCreate([ + 'pretty_name' => Str::ascii(basename($file)), + 'name' => Str::ascii(basename($file)), + 'path' => trim($file), + ], [ + 'size' => $size, + 'path' => trim($file), + 'ascii_path' => Str::ascii(trim($file)), + 'last_modified' => \Carbon\Carbon::parse($last_modified), + ]); + + if (\Carbon\Carbon::parse($last_modified)->format('Y-m-d H:i:s') !== \Carbon\Carbon::parse($file->last_modified)->format('Y-m-d H:i:s')) { + $file->last_modified = \Carbon\Carbon::parse($last_modified); + } + + if ($size !== $file->size) { + $file->size = $size; + } + + if ($file->isDirty()) { + $file->save(); + } + } catch (\Throwable $e) { + dd($file, $e,); + } + + $bar->advance(); + } + $bar->finish(); + } +}); + +Artisan::command('file-check', function () { + $page = 1; + $qualities = [ + 0 => 'Unknown', +1 => 'SDTV', +2 => 'DVD', +3 => 'WEBDL-1080p', +4 => 'HDTV-720p', +5 => 'WEBDL-720p', +6 => 'Bluray-720p', +7 => 'Bluray-1080p', +8 => 'WEBDL-480p', +9 => 'HDTV-1080p', +10 => 'Raw-HD', +12 => 'WEBRip-480p', +13 => 'Bluray-480p', +14 => 'WEBRip-720p', +15 => 'WEBRip-1080p', +16 => 'HDTV-2160p', +17 => 'WEBRip-2160p', +18 => 'WEBDL-2160p', +19 => 'Bluray-2160p', +20 => 'Bluray-1080p Remux', +21 => 'Bluray-2160p Remux', + +]; + + do { + $series = App\Models\Sqlite\Episode::query()->with('file', 'series')->paginate(100, ['*'], 'page', $page++); + + foreach ($series as $show) { + // $path = str_replace('/volume1', '', $show->Path); + foreach ([$show->file] as $file) { + if (empty($file)) { + continue; + } + + + $parts = explode('.', $file->RelativePath); + $extension = end($parts); + + $season = $show->SeasonNumber ? 'Season ' . $show->SeasonNumber : null; + + $seasonNumber = $show->SeasonNumber < 10 ? '0' . $show->SeasonNumber : $show->SeasonNumber; + $episodeNumber = $show->EpisodeNumber < 10 ? '0' . $show->EpisodeNumber : $show->EpisodeNumber; + + $quality = $qualities[json_decode($file->Quality, true)['quality']]; + + $episodeName = sprintf('%s - S%sE%s - %s %s.%s', $show->series->Title, $seasonNumber, $episodeNumber, $show->Title, $quality, $extension); + + $standardPath = '/Shows/' . implode('/', array_filter([ + $show->series->Title, + $season, + $episodeName, + ])); + + $isAnime = json_decode($file->MediaInfo)->videoFps <= 25; + $audioLanguages = json_decode($file->MediaInfo)->audioLanguages; + $subtitledLanguages = json_decode($file->MediaInfo)->subtitles; + + if ($isAnime && empty($audioLanguages)) { + $audioLanguages = 'Japanese'; + } elseif (!$isAnime && empty($audioLanguages)) { + $audioLanguages = 'English'; + } + + + $actualPath = str_replace('/volume1', '', $show->series->Path) . '/' . $file->RelativePath; + + if ($standardPath == $actualPath) { + continue; + } + + dd($show, $audioLanguages, $subtitledLanguages, $standardPath, $actualPath); + + Storage::disk('ftp')->move(); + dd($show, Storage::disk('ftp')->exists()); + } + } + } while ($series->hasMorePages()); +}); + +Artisan::command('socialite:discover', function () { + // discover installed socialite providers. +// $autoload = require './vendor/autoload.php'; +// +// $providers = []; +// +// foreach ($autoload->getClassMap() as $class => $location) { +// if (str_contains($location, 'symfony')) { +// continue; +// } +// +// if (str_contains($class, 'Provider')) { +// $implementations = class_implements_recursive($class); +// if (in_array(\Laravel\Socialite\Two\ProviderInterface::class, $implementations)) { +// $providers = array_merge($providers, $implementations); +// } +// } +// } + $files = collect(json_decode(file_get_contents(base_path('composer.lock')))->packages) + ->filter(function ($jsonFile) { + if (isset($jsonFile->name)) { + if ($jsonFile->name === 'socialiteproviders/manager') { + return true; + } + } + + if (isset($jsonFile->require)) { + return isset($jsonFile->require->{'socialiteproviders/manager'}); + } + if (isset($jsonFile->{'require-dev'})) { + return isset($jsonFile->{'require-dev'}->{'socialiteproviders/manager'}); + } + + return false; + }); + + $allFiles = \App\Services\Code::composerMappedClasses(); + $installed = $files->map(function ($contents) use ($allFiles) { + $namespaces = $contents->autoload->{'psr-4'}; + + + return [ + 'name' => $contents->name, + 'description' => $contents->description, + 'version' => $contents->version, + 'time' => \Carbon\Carbon::parse($contents->time)->format('F j, Y H:i:s'), + 'installed' => true, + 'drivers' => collect($allFiles) + ->filter(function($value, $class) use ($namespaces) { + foreach ($namespaces as $psr4Namespace => $sourceFolder) { + if (str_starts_with($class, $psr4Namespace)) { + return true; + } + } + + return false; + }) + ->map(function ($filePath, $class) { + $contentsOfFile = (file_get_contents($filePath)); + preg_match('/extendSocialite..([\w]+)\'./i', $contentsOfFile , $matches); + if (!isset($matches[1])) { + return null; + } + + return $matches[1]; + })->filter(), + ]; + })->values(); + $page = 1; + $installedNames = $installed->map->name; + + $uninstalled = []; + do { + $response = \Illuminate\Support\Facades\Http::get('https://packagist.org/search.json?q=socialiteproviders&per_page=100&page='.$page++)->json(); + $paginator = new \Illuminate\Pagination\LengthAwarePaginator( + $response['results'], + $response['total'], + 100, + $page - 1, + ); + + foreach ($paginator->items() as $provider) { + if ($installedNames->contains($provider['name'])) { + continue; + } + + $uninstalled[] = [ + 'name' => $provider['name'], + 'description' => $provider['description'], + 'downloads' => $provider['downloads'], + 'installed' => false, + ]; + } + } while ($paginator->hasMorePages()); + + // We need a way to add the handle method to the event service provider. + // Also, we might want to change how we identify enabled/disabled values. + file_put_contents(storage_path('provider-information.json'), json_encode([ + 'installed' => $installed, + 'notInstalled' => collect($uninstalled)->sortByDesc('downloads')->values(), + ])); +}); + +//Artisan::command('test', function () { +// $client = new \App\Services\Matrix\MatrixClient('beeper@kregel.email', 'beeper.com', ); +// +// +// dd($client->discover()); +// $request = $client->requestCodeForBeeper('beeper@kregel.email'); +// $request = $client->loginWithBeeperCode('beeper@kregel.email', '741408'); +// $request = $client->loginWithJwt(""); +// dd($request,); //$client->discover()); +// $filesystem = new \Illuminate\Filesystem\Filesystem(); +// $entities = collect($filesystem->allFiles(storage_path('entities'))) +// ->map(function (SplFileInfo $e) { +// return $e->getFilename(); +// })->sort(); +// $intents = collect($filesystem->allFiles(storage_path('intents'))) +// ->map(function (SplFileInfo $e) { +// return $e->getFilename(); +// })->filter(fn ($fileName) => !\Illuminate\Support\Str::contains($fileName, [' ', '_', '-'])); +// +// dd($entities, $intents); +//}); + +Artisan::command('yet-another', function () { + + $models = \App\Services\Code::instancesOf(App\Models\Crud::class); + + $crudClasses = $models->getClasses(); + + dd(array_map(fn ($class) => \Illuminate\Support\Str::slug(\Illuminate\Support\Str::headline((new $class)->getTable())), $crudClasses)); +}); + +Artisan::command('more-test', function () { + dd( + route(((new \App\Models\Page())->getTable().'.store')) + ); +}); + +Artisan::command('inbox', function () { + $mailbox = new PhpImap\Mailbox( + sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}INBOX'), // IMAP server and mailbox folder + env('IMAP_USERNAME'), // Username for the before configured mailbox + env('IMAP_PASSWORD'), // Password for the before configured username + storage_path(), // Directory, where attachments will be saved (optional) + 'UTF-8', // Server encoding (optional) + true, // Trim leading/ending whitespaces of IMAP path (optional) + false // Attachment filename mode (optional; false = random filename; true = original filename) + ); + + try { + // Get all emails (messages) + // PHP.net imap_search criteria: http://php.net/manual/en/function.imap-search.php + + dd($mailsIds); + } catch(PhpImap\Exceptions\ConnectionException $ex) { + echo "IMAP connection failed: " . implode(",", $ex->getErrors('all')); + die(); + } + + dd($mailboxes); +}); diff --git a/routes/crud.php b/routes/crud.php index 89b83709..e3bdcaf5 100644 --- a/routes/crud.php +++ b/routes/crud.php @@ -5,22 +5,45 @@ use Illuminate\Support\Facades\Route; if (! function_exists('developerRoute')) { - function developerRoute($name) + function developerRoute($name, $model) { - Route::get('{abstract_model}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'index'])->name($name.'.index'); - Route::post('{abstract_model}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'store'])->name($name.'.store'); - Route::get('{abstract_model}/fields', [\App\Http\Controllers\Spork\LocalAdminController::class, 'fields'])->name($name.'.fields'); - Route::get('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'show'])->name($name.'.show'); - // Updating - Route::put('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update'])->name($name.'.update'); - Route::patch('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update']); - // Restoring - Route::post('{abstract_model}/{'.$name.'}/restore', [\App\Http\Controllers\Spork\LocalAdminController::class, 'restore'])->name($name.'.restore'); - // Soft-deleting - Route::delete('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'destroy'])->name($name.'.destroy'); - // Force delete - Route::delete('{abstract_model}/{'.$name.'}/force', [\App\Http\Controllers\Spork\LocalAdminController::class, 'forceDestroy'])->name($name.'.forceDestroy'); + cache()->rememberForever($name, fn () => $model); + + Route::prefix('crud')->group(function () use ($name){ + Route::get($name, [\App\Http\Controllers\Spork\LocalAdminController::class, 'index'])->name($name . '.index'); + + Route::post($name.'', [\App\Http\Controllers\Spork\LocalAdminController::class, 'store'])->name($name . '.store'); + Route::get($name.'/fields', [\App\Http\Controllers\Spork\LocalAdminController::class, 'fields'])->name($name . '.fields'); + Route::get($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'show'])->name($name . '.show'); + // Updating + Route::put($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update'])->name($name . '.update'); + Route::patch($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update']); + // Restoring + Route::post($name.'/{' . $name . '}/restore', [\App\Http\Controllers\Spork\LocalAdminController::class, 'restore'])->name($name . '.restore'); + // Soft-deleting + Route::delete($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'destroy'])->name($name . '.destroy'); + // Force delete + Route::delete($name.'/{' . $name . '}/force', [\App\Http\Controllers\Spork\LocalAdminController::class, 'forceDestroy'])->name($name . '.forceDestroy'); + }); } } -developerRoute('abstract_model_id'); +developerRoute('accounts', App\Models\Finance\Account::class); +developerRoute('articles', App\Models\Article::class); +developerRoute('budgets', App\Models\Finance\Budget::class); +developerRoute('conditions', App\Models\Condition::class); +developerRoute('credentials', App\Models\Credential::class); +developerRoute('domains', App\Models\Domain::class); +developerRoute('external_rss_feeds', App\Models\ExternalRssFeed::class); +developerRoute('messages', App\Models\Message::class); +developerRoute('navigations', App\Models\Navigation::class); +developerRoute('pages', App\Models\Page::class); +developerRoute('people', App\Models\Person::class); +developerRoute('projects', App\Models\Project::class); +developerRoute('research', App\Models\Research::class); +developerRoute('scripts', App\Models\Spork\Script::class); +developerRoute('servers', App\Models\Server::class); +developerRoute('tags', App\Models\Tag::class); +developerRoute('threads', App\Models\Thread::class); +developerRoute('transactions', App\Models\Finance\Transaction::class); +developerRoute('users', App\Models\User::class); diff --git a/routes/pages/deploy.php b/routes/pages/deploy.php new file mode 100644 index 00000000..8265b3b8 --- /dev/null +++ b/routes/pages/deploy.php @@ -0,0 +1,56 @@ +get('/register-device', function () { + $ssh = \App\Services\SshService::factory( + request()->ip(), + request()->user(), + ); + + return response()->view('basement-scripts.link-server', [ + 'credential' => $ssh, + ], 200, [ + 'Content-type' => 'text/text' + ]); +})->name('register-device'); + + +Route::post('register-device', function () { + $data = request()->validate([ + 'name' => 'required|string', + 'threads' => 'required|int', + 'memory' => 'required|int', + 'is_hypervisor' => 'boolean', + 'collect_metrics' => 'boolean', + 'uses_client' => 'boolean', + 'has_backup' => 'boolean', + 'is_powered_on' => 'boolean', + 'ip6_address' => 'string', + 'kernel' => 'string', + 'distro' => 'string', + 'boot_disk' => 'string', + 'cost_in_cents' => 'integer', + 'short_code' => 'required|exists:short_codes,short_code' + ]); + + $code = \App\Models\ShortCode::query() + ->with('user') + ->where('short_code', request()->get('short_code')) + ->where('is_enabled', true) + ->firstOrFail(); + + $ssh = \App\Services\SshService::factory(request()->ip(), $code->user); + + $server = \App\Models\Server::create($data + [ + 'credential_id' => $ssh->id, + 'server_id' => \Illuminate\Support\Str::random(), + ]); + + $server->refresh(); + + $ssh->load('user'); + + $server->setAttribute('access_token', $ssh->user->createToken($server->name . ' Access Token', [])); + $server->setAttribute('ssh_key_public', $ssh->getPublicKey()); + + return $server; +})->name('create-device'); diff --git a/routes/pages/link-shortening.php b/routes/pages/link-shortening.php new file mode 100644 index 00000000..40fe6d94 --- /dev/null +++ b/routes/pages/link-shortening.php @@ -0,0 +1,16 @@ +where('short_code', $code) + ->firstOrFail(); + + abort_unless($code->is_enabled, 404); + + return tap(redirect($code->long_url, $code->status, [ + 'X-Short-Code' => $code->short_code, + ]), function () use ($code) { +// $code->is_enabled = false; +// $code->saveQuietly(); + }); +})->name('redirect'); diff --git a/routes/pages/spork.php b/routes/pages/spork.php index 57a9acfb..ff4d7574 100644 --- a/routes/pages/spork.php +++ b/routes/pages/spork.php @@ -4,6 +4,7 @@ use App\Contracts\ModelQuery; use App\Http\Controllers; +use App\Services\Development\DescribeTableService; use Illuminate\Filesystem\Filesystem; use Illuminate\Foundation\Application; use Illuminate\Support\Facades\Route; @@ -20,6 +21,7 @@ | contains the "web" middleware group. Now create something great! | */ + Route::get('/', function () { return Inertia::render('Welcome', [ 'canLogin' => Route::has('login'), @@ -33,23 +35,65 @@ config('jetstream.auth_session'), 'verified', ])->group(function () { + Route::get('/api/files/{basepath}', function ($path) { + $decoded = base64_decode($path); + + if (is_dir($decoded)) { + $files = Storage::disk(config('spork.filesystem.default'))->files($decoded); + $directories = Storage::disk(config('spork.filesystem.default'))->directories($decoded); + + return array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode($file), + 'is_directory' => is_dir($file), + 'type' => 'file', + ], + array_merge( + $directories, + $files + ) + ); + } + + return file_get_contents($decoded); + }); + + Route::get('/api/device-code', function () { + $code = request()->user()->codes()->firstWhere('is_enabled', true); + + if (empty($code)) { + $code = request()->user()->codes()->create([ + 'short_code' => $shortCode = Str::random(), + 'long_url' => route('create-device', [ + 'short_code' => $shortCode, + ]), + 'is_enabled' => true, + 'status' => 301 + ]); + } + + return [ + 'route' => str_replace('https://', 'http://', route('redirect', [ + 'code' => $code->short_code, + ])) + ]; + })->name('setup-device'); + Route::get('/dashboard', Controllers\Spork\DashboardController::class)->name('dashboard'); - Route::get('/projects', [Controllers\Spork\ProjectsController::class, 'index'])->name('projects'); + Route::get('finance/settings', function () { + return Inertia::render('Banking/Settings', [ + + ]); + }); Route::get('/projects/{project}', [Controllers\Spork\ProjectsController::class, 'show'])->name('projects.show'); - Route::get('/pages', Controllers\Spork\PagesController::class)->name('pages'); Route::get('/pages/create', [Controllers\Spork\PagesController::class, 'create'])->name('pages'); - Route::get('/people', Controllers\Spork\PeopleController::class)->name('people'); - - Route::get('/servers', [Controllers\Spork\ServersController::class, 'index'])->name('servers'); Route::get('/servers/{server}', [Controllers\Spork\ServersController::class, 'show'])->name('servers.show'); - Route::get('/credentials', Controllers\Spork\CredentialsController::class)->name('credentials'); - - Route::get('/domains', Controllers\Spork\DomainsController::class)->name('domains'); Route::get('/domains/{domain}', [Controllers\Spork\DomainsController::class, 'show'])->name('domains.show'); Route::get('/user/api-query', function () { @@ -63,27 +107,205 @@ })->middleware(\App\Http\Middleware\Authenticate::class)->name('user.api-query'); Route::post('project/{project}/deploy', [Controllers\Spork\ProjectsController::class, 'deploy'])->name('project.deploy'); + + Route::post('project/{project}/attach', [Controllers\Spork\ProjectsController::class, 'attach']) + ->name('project.attach'); + + Route::post('project/{project}/detach', [Controllers\Spork\ProjectsController::class, 'detach']) + ->name('project.detach'); }); -Route::middleware([ +Route::group(['prefix' => '-', ], function () { + Route::get('/', function () { + $filesystem = new Illuminate\Filesystem\Filesystem(); + $env = array_filter(array_reduce(explode("\n", $filesystem->get(base_path('.env'))), function ($all, $some) { + $envKeyValue = explode('=', $some); + return array_merge($all, [ + $envKeyValue[0] => $envKeyValue[1] ?? null, + ]); + }, [])); + + $allEnvValues = array_map(function (SplFileInfo $file) use ($env) { + return [ + 'env' => collect(explode("\n", file_get_contents(config_path($file->getFilename())))) + ->filter(fn($line) => str_contains($line, 'env(')) + ->map(function ($line) { + $matches = []; + preg_match_all("/env\(([^)]+)\s*,\s*([^)]+)\)(,?)$/i", $line, $matches, PREG_SET_ORDER); + return $matches; + }) + ->filter() + ->map(function ($matches) { + try { + [$match, $key, $default] = $matches[0]; + + $key = trim($key, '\"\''); + $default = trim($default, '\"\''); + + if (trim($default) === ',') { + $default = null; + } + + return compact('match', 'key', 'default'); + } catch (\Throwable $e) { + dd($matches, $e); + } + })->reduce(function ($all, $item) use ($env) { + try { + $all[$item['key']] = json_decode($item['default'], false, 5, JSON_THROW_ON_ERROR); + } catch (\Throwable $e) { + $all[$item['key']] = $item['default']; + } + return $all; + }, []), + 'name' => $file->getFilename(), + ]; + }, $filesystem->files(config_path())); + + return Inertia::render('Settings2', [ + 'config' => array_filter($allEnvValues, fn($item) => !empty($item['env'])), + 'env' => $env, + ]); + }); + + Route::get('/manage', function () { + + return Inertia::render('Manage/Index', [ + + ]); + }); + Route::get('/postal', function () { + return Inertia::render('Postal/Index', [ + 'threads' => \App\Models\Thread::query() + ->with([ + 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + } + ]) + ->where('updated_at', '>=', now()->subWeek(2)) + ->orderByDesc('origin_server_ts') + ->paginate(request('limit', 15), ['*'], 'page', 1) + ]); + }); + Route::get('/inbox', function () { + return Inertia::render('Postal/Inbox', [ + 'threads' => (new \App\Services\ImapService)->findAllMailboxes(), + 'messages' => (new \App\Services\ImapService)->findAllFromDate('INBOX', now()->subDay()) + ]); + }); + Route::get('/inbox/{number}', function ($messageNumber) { + $message = (new \App\Services\ImapService)->findMessage($messageNumber, true); + return base64_decode($message['body']); + }); + Route::get('/postal/{thread}', function ($thread) { + return Inertia::render('Postal/Thread', [ + 'threads' => \App\Models\Thread::query() + ->with([ + 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + } + ]) + + ->where('origin_server_ts', '>=', now()->subWeek(2)) + ->orderByDesc('origin_server_ts') + ->paginate(request('limit', 15), ['*'], 'page', 1), + 'thread' => \App\Models\Thread::query() + ->with(['messages' => function ($query) { + $query->orderBy('originated_at'); + }, 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + }]) + ->orderByDesc('updated_at') + ->findOrFail($thread), + ]); + }); + Route::get('/file-manager', function () { + $filesystem = \Illuminate\Support\Facades\Storage::disk(config('spork.filesystem.default')); + + return Inertia::render('FileManager', [ + 'files' => array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode('/'.$file), + 'is_directory' => false, + 'type' => 'file', + ], + $filesystem->files() + ), + 'directories' => array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode('/'.$file), + 'is_directory' => true, + 'type' => 'folder', + ], + $filesystem->directories() + ), + + ]); + }); + + Route::get('/manage/{link}', function ($link) { + $basename = \Illuminate\Support\Str::title(Str::singular($link)); + $models = array_filter( + array_map(fn (SplFileInfo $file) => basename($file->getBasename()), (new Filesystem)->allFiles(app_path('Models'))), + fn ($file) => $file === $basename.'.php', + ); + $files = array_filter( + array_map(fn (SplFileInfo $file) => basename($file->getBasename()), (new Filesystem)->allFiles(resource_path('js/Pages/Manage'))), + fn ($file) => str_contains($file, $basename), + ); + + abort_if(count($models) !== 1, 404); + + $file = explode('.', Arr::first($models), 2); + $vueFile = explode('.', Arr::first($files) ?? '', 2); + + $model = 'App\\Models\\'. $file[0]; + + $description = (new DescribeTableService)->describe(new $model); + + /** @var \Illuminate\Pagination\LengthAwarePaginator $paginator */ + $paginator = $model::query() + ->paginate(request('limit', 15), ['*'], 'page', request('page', 1)); + + $data = $paginator->items(); + $paginator = $paginator->toArray(); + + unset($paginator['data']); + + if (!empty($files)) {; + return Inertia::render('Manage/'.$vueFile[0], [ + 'description' => $description, + 'singular' => $file[0], + 'plural' => Str::title($link), + 'link' => $link, + 'data' => $data, + 'paginator' => $paginator + ]); + } + + return Inertia::render('Manage/Index', [ + 'description' => $description, + 'singular' => $file[0], + 'plural' => Str::title($link), + 'link' => $link, + 'data' => $data, + 'paginator' => $paginator + ]); + })->where('link', '(projects|pages|people|servers|domains|tags|scripts|research|credentials|articles)') + ->name('crud'); +})->middleware([ 'auth:sanctum', config('jetstream.auth_session'), 'verified', -])->post('register-device', function () { - $credential = \App\Models\Credential::find(3); - - return \App\Models\Server::create(array_merge(request()->all(), [ - 'server_id' => mt_rand(4, 192000), - 'disk' => (float) request()->get('disk'), - 'memory' => (int) request()->get('memory'), - 'last_ping_at' => \Carbon\Carbon::parse(request()->get('last_ping_at')), - ])); -})->name('register-device'); - -Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']) - ->post('project/{project}/attach', [Controllers\Spork\ProjectsController::class, 'attach']) - ->name('project.attach'); - -Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']) - ->post('project/{project}/detach', [Controllers\Spork\ProjectsController::class, 'detach']) - ->name('project.detach'); +]); + +Route::middleware([config('jetstream.auth_session'), 'verified', App\Http\Middleware\OnlyHost::class])->group(function () { + Route::get('/admin', Controllers\AdminController::class)->name('admin'); + Route::get('/admin/email', [Controllers\AdminController::class, 'email'])->name('admin'); + Route::post('/api/install', Controllers\InstallNewProvider::class); + Route::post('/api/uninstall', Controllers\UninstallNewProvider::class); + Route::post('/api/enable', Controllers\EnableProviderController::class); + Route::post('/api/disable', Controllers\DisableProviderController::class); +}); diff --git a/tests/Feature/Http/Controllers/LinkServerTest.php b/tests/Feature/Http/Controllers/LinkServerTest.php new file mode 100644 index 00000000..2a500257 --- /dev/null +++ b/tests/Feature/Http/Controllers/LinkServerTest.php @@ -0,0 +1,93 @@ +postJson(route('create-device'), []); + + $request->assertStatus(422); + } + public function testCanCreateDevice() + { + /** @var User $user */ + $user = User::factory()->create(); + $user->codes()->create([ + 'short_code' => '384', + 'is_enabled' => true, + 'long_url' => 'http://fake.tools', + 'status' => 301, + ]); + + $request = $this->actingAs($user)->postJson(route('create-device'), [ + 'name' => 'aqua-depths', + 'threads' => 1, + 'memory' => 512, + 'short_code' => '384', + ]); + + $request->assertStatus(201); + $request->assertJson([ + 'ssh_key_public' => Credential::first()->getPublicKey(), + ]); + } + + public function testCreateShortCodeUrlForDeviceRegistration() + { + /** @var User $user */ + $user = User::factory()->create(); + + $request = $this->actingAs($user)->getJson(route('setup-device')); + + $request->assertStatus(200); + $request->assertJsonStructure([ + 'route', + ]); + } + + public function testWeProvideRedirectLinkWithAuth() + { + /** @var User $user */ + $user = User::factory()->create(); + $this->assertEmpty($user->codes()->get()); + + $request = $this->actingAs($user)->getJson(route('setup-device')); + + $codes = $user->codes()->get(); + + $this->assertNotEmpty($codes); + + $request->assertStatus(200); + $route = $request->json('route'); + + $this->assertNotEmpty($route); + $otherRequest = $this->get($route); + + $otherRequest->assertStatus(301); + + $routeUsedToLinkDevice = route('register-device').'?short_code='.$codes->first()->short_code; + + $otherRequest->assertRedirect($routeUsedToLinkDevice); + + $attemptToCreateDevice = $this->postJson($routeUsedToLinkDevice, [ + 'name' => 'twelve-foot-ninja', + 'memory' => 512, + 'threads' => 1, + ]); + + $attemptToCreateDevice->assertStatus(201); + + $this->assertDatabaseHas('servers', [ + 'name' => 'twelve-foot-ninja', + ]); + } +} diff --git a/tests/Feature/Http/Controllers/MessageControllerTest.php b/tests/Feature/Http/Controllers/MessageControllerTest.php new file mode 100644 index 00000000..3f5cf7bf --- /dev/null +++ b/tests/Feature/Http/Controllers/MessageControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Http/Controllers/NavigationControllerTest.php b/tests/Feature/Http/Controllers/NavigationControllerTest.php new file mode 100644 index 00000000..62db4947 --- /dev/null +++ b/tests/Feature/Http/Controllers/NavigationControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Http/Controllers/ThreadControllerTest.php b/tests/Feature/Http/Controllers/ThreadControllerTest.php new file mode 100644 index 00000000..ed5bd241 --- /dev/null +++ b/tests/Feature/Http/Controllers/ThreadControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Models/ConditionTest.php b/tests/Feature/Models/ConditionTest.php new file mode 100644 index 00000000..a57971bb --- /dev/null +++ b/tests/Feature/Models/ConditionTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/AccountTest.php b/tests/Feature/Models/Finance/AccountTest.php new file mode 100644 index 00000000..a4ed2d7e --- /dev/null +++ b/tests/Feature/Models/Finance/AccountTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/BudgetTest.php b/tests/Feature/Models/Finance/BudgetTest.php new file mode 100644 index 00000000..c122cef4 --- /dev/null +++ b/tests/Feature/Models/Finance/BudgetTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/TransactionTest.php b/tests/Feature/Models/Finance/TransactionTest.php new file mode 100644 index 00000000..e5e90e20 --- /dev/null +++ b/tests/Feature/Models/Finance/TransactionTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/MessageTest.php b/tests/Feature/Models/MessageTest.php new file mode 100644 index 00000000..6ef060a9 --- /dev/null +++ b/tests/Feature/Models/MessageTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/NavigationTest.php b/tests/Feature/Models/NavigationTest.php new file mode 100644 index 00000000..1a7c3ca6 --- /dev/null +++ b/tests/Feature/Models/NavigationTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/ThreadTest.php b/tests/Feature/Models/ThreadTest.php new file mode 100644 index 00000000..e8f3bfcb --- /dev/null +++ b/tests/Feature/Models/ThreadTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Operations/ServerActionOperationTest.php b/tests/Feature/Operations/ServerActionOperationTest.php new file mode 100644 index 00000000..899a29fd --- /dev/null +++ b/tests/Feature/Operations/ServerActionOperationTest.php @@ -0,0 +1,77 @@ +systemUnderTest = ServerAction::factory()->create([ + 'server_id' => Server::factory()->create([ + 'internal_ip_address' => '127.0.0.1' + ])->id, + 'user_id' => User::factory(), + 'script_id' => Script::factory(), + 'credential_id' => Credential::factory()->create([ + 'settings' => [ + 'pub_key_file' => '/var/www/html/tests/data/test_key.pub', + 'pub_key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos', + 'private_key_file' => '/var/www/html/tests/data/test_key', + 'private_key' => '-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY-----', + 'pass_key' => encrypt(''), + 'username' => 'root', + ] + ])->id + ]); + + $this->systemUnderTest->run(); + } +} diff --git a/tests/data/authorized_keys b/tests/data/authorized_keys new file mode 100644 index 00000000..f60bac39 --- /dev/null +++ b/tests/data/authorized_keys @@ -0,0 +1,2 @@ +# Authorized Key +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos diff --git a/tests/data/test_key b/tests/data/test_key new file mode 100644 index 00000000..d48a4a62 --- /dev/null +++ b/tests/data/test_key @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/tests/data/test_key.pub b/tests/data/test_key.pub new file mode 100644 index 00000000..ef4f3fed --- /dev/null +++ b/tests/data/test_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos \ No newline at end of file