From 0a75ead764e5e81520ea1279ea7e4d8afc44c48c Mon Sep 17 00:00:00 2001
From: anoadragon453 This API allows an administrator to join an user account with a given This API allows an administrator to join a user account with a given Edit Room Membership API
-user_id
+user_id
to a room with a given room_id_or_alias
. You can only modify the membership of
local users. The server administrator must be in the room and have permission to
invite users.
Support for this feature can be enabled and configured by adding a the
-retention
in the Synapse configuration file (see
+
Support for this feature can be enabled and configured by adding the
+retention
option in the Synapse configuration file (see
configuration manual).
To enable support for message retention policies, set the setting
enabled
in this section to true
.
max_lifetime
is lower or equal to 3 days.
policy's max_lifetime
is greater than a week.
Note that this example is tailored to show different configurations and
-features slightly more jobs than it's probably necessary (in practice, a
+features slightly more jobs than is probably necessary (in practice, a
server admin would probably consider it better to replace the two last
jobs with one that runs once a day and handles rooms which
policy's max_lifetime
is greater than 3 days).
The script synapse_port_db
allows porting an existing synapse server
-backed by SQLite to using PostgreSQL. This is done in as a two phase
+backed by SQLite to using PostgreSQL. This is done as a two phase
process:
--report-stats
argument.
This command will generate you a config file that you can then customise, but it will
also generate a set of keys for you. These keys will allow your homeserver to
-identify itself to other homeserver, so don't lose or delete them. It would be
+identify itself to other homeservers, so don't lose or delete them. It would be
wise to back them up somewhere safe. (If, for whatever reason, you do need to
-change your homeserver's keys, you may find that other homeserver have the
+change your homeserver's keys, you may find that other homeservers have the
old key cached. If you update the signing key, you should change the name of the
key in the <server name>.signing.key
file (the second word) to something
different. See the spec for more information on key management).
The script synapse_port_db
allows porting an existing synapse server
-backed by SQLite to using PostgreSQL. This is done in as a two phase
+backed by SQLite to using PostgreSQL. This is done as a two phase
process:
You need to read all of the upgrade notes for each version between your current @@ -1860,13 +1860,18 @@ database migrations are complete. You should wait until background updates from each upgrade are complete before moving on to the next upgrade, to avoid stacking them up. You can monitor the currently running background updates with the Admin API.
-The minimum supported Rust version has been increased from v1.65.0 to v1.66.0.
+Users building from source will need to ensure their rustc
version is up to
+date.
The minimum supported Rust version has been increased from v1.61.0 to v1.65.0.
Users building from source will need to ensure their rustc
version is up to
date.
The minimum supported Rust version has been increased from v1.60.0 to v1.61.0.
Users building from source will need to ensure their rustc
version is up to
date.
For an illustrative example, please see Upgrading to v1.84.0 below.
The minimum supported Rust version has been increased from v1.58.1 to v1.60.0.
Users building from source will need to ensure their rustc
version is up to
date.
enable_notifs
: Set to true to enable sending emails for messages that the user
-has missed. Disabled by default.
enable_notifs
: Set to true to allow users to receive e-mail notifications. If this is not set,
+users can configure e-mail notifications but will not receive them. Disabled by default.
notif_for_new_users
: Set to false to disable automatic subscription to email
@@ -4890,6 +4895,9 @@ for a given destination and the state of the backoff is stored in the database.<
event_cache_size
The number of events to cache in memory. Defaults to 10K. Like other caches,
this is affected by caches.global_factor
(see below).
For example, the default is 10K and the global_factor default is 0.5.
+Since 10K * 0.5 is 5K then the event cache size will be 5K.
+The cache affected by this configuration is named as "getEvent".
Note that this option is not part of the caches
section.
Example configuration:
event_cache_size: 15K
@@ -4909,6 +4917,7 @@ set.
variable. Setting by environment variable takes priority over
setting through the config file.
Defaults to 0.5, which will halve the size of all caches.
+Note that changing this value also affects the HTTP connection pool.
per_cache_factors
: A dictionary of cache name to cache factor for that individual
@@ -8931,6 +8940,7 @@ string is returned from this method, Synapse will prompt the user to
either accept this localpart or pick their own username. Otherwise this
option has no effect. If omitted, defaults to False
.
display_name
: An optional string, the display name for the user.picture
: An optional string, the avatar url for the user.emails
: A list of strings, the email address(es) to associate with
this user. If omitted, defaults to an empty list.The queries for PostgreSQL and SQLite are detailed below, by their overall goal +
The queries for PostgreSQL and SQLite are detailed below, but their overall goal is to find matching users, preferring users who are "real" (e.g. not bots, -not deactivated). It is assumed that real users will have an display name and +not deactivated). It is assumed that real users will have a display name and avatar set.
The above words are then transformed into two queries:
@@ -9854,8 +9864,8 @@ though it will always hide it from clients. delete the last message in a room. It will, however, hide it from clients.Support for this feature can be enabled and configured by adding a the
-retention
in the Synapse configuration file (see
+
Support for this feature can be enabled and configured by adding the
+retention
option in the Synapse configuration file (see
configuration manual).
To enable support for message retention policies, set the setting
enabled
in this section to true
.
max_lifetime
is lower or equal to 3 days.max_lifetime
is greater than a week.
Note that this example is tailored to show different configurations and
-features slightly more jobs than it's probably necessary (in practice, a
+features slightly more jobs than is probably necessary (in practice, a
server admin would probably consider it better to replace the two last
jobs with one that runs once a day and handles rooms which
policy's max_lifetime
is greater than 3 days).
This style of configuration supersedes the legacy synapse.app.appservice
worker application type.
You can designate generic worker to sending push notifications to +
You can designate generic workers to send push notifications to a push gateway such as sygnal and email.
This will stop the main process sending push notifications.
@@ -12236,7 +12246,7 @@ run against the database.total_duration_ms
how long the background process has been running, not including time spent sleeping.
average_items_per_ms
how many items are processed per millisecond based on an exponential average.
This API allow pausing background updates.
+This API allows pausing background updates.
Background updates should not be paused for significant periods of time, as this can affect the performance of Synapse.
Note: This won't persist over restarts.
@@ -13063,7 +13073,7 @@ the Ma }This API allows an administrator to join an user account with a given user_id
+
This API allows an administrator to join a user account with a given user_id
to a room with a given room_id_or_alias
. You can only modify the membership of
local users. The server administrator must be in the room and have permission to
invite users.
However, degraded performance due to a low cache factor, common on -machines with slow disks, often leads to explosions in memory use due +machines with slow disks, often leads to explosions in memory use due to backlogged requests. In this case, reducing the cache factor will make things worse. Instead, try increasing it drastically. 2.0 is a good starting value.
diff --git a/latest/searchindex.js b/latest/searchindex.js index 680496ed1f..9678d99906 100644 --- a/latest/searchindex.js +++ b/latest/searchindex.js @@ -1 +1 @@ -Object.assign(window.search, {"doc_urls":["welcome_and_overview.html#introduction","welcome_and_overview.html#installing-and-using-synapse","welcome_and_overview.html#developing-on-synapse","welcome_and_overview.html#reporting-a-security-vulnerability","setup/installation.html#installation-instructions","setup/installation.html#choosing-your-server-name","setup/installation.html#installing-synapse","setup/installation.html#prebuilt-packages","setup/installation.html#installing-as-a-python-module-from-pypi","setup/installation.html#setting-up-synapse","setup/installation.html#using-postgresql","setup/installation.html#tls-certificates","setup/installation.html#client-well-known-uri","setup/installation.html#email","setup/installation.html#registering-a-user","setup/installation.html#setting-up-a-turn-server","setup/installation.html#url-previews","setup/installation.html#troubleshooting-installation","postgres.html#using-postgres","postgres.html#install-postgres-client-libraries","postgres.html#set-up-database","postgres.html#synapse-config","postgres.html#tuning-postgres","postgres.html#porting-from-sqlite","postgres.html#overview","postgres.html#using-the-port-script","postgres.html#troubleshooting","postgres.html#alternative-auth-methods","postgres.html#fixing-incorrect-collate-or-ctype","postgres.html#fixing-inconsistent-sequences-error","reverse_proxy.html#using-a-reverse-proxy-with-synapse","reverse_proxy.html#homeserver-configuration","reverse_proxy.html#reverse-proxy-configuration-examples","reverse_proxy.html#nginx","reverse_proxy.html#caddy-v2","reverse_proxy.html#apache","reverse_proxy.html#haproxy","reverse_proxy.html#relayd","reverse_proxy.html#health-check-endpoint","reverse_proxy.html#synapse-administration-endpoints","setup/forward_proxy.html#using-a-forward-proxy-with-synapse","setup/forward_proxy.html#configure","setup/forward_proxy.html#connection-types","setup/forward_proxy.html#troubleshooting","turn-howto.html#overview","turn-howto.html#requirements","turn-howto.html#synapse-setup","turn-howto.html#troubleshooting","setup/turn/coturn.html#coturn-turn-server","setup/turn/coturn.html#coturn-setup","setup/turn/coturn.html#initial-installation","setup/turn/coturn.html#configuration","setup/turn/eturnal.html#eturnal-turn-server","setup/turn/eturnal.html#eturnal-setup","setup/turn/eturnal.html#initial-installation","setup/turn/eturnal.html#configuration","setup/turn/eturnal.html#eturnalctl-opterations-script","delegate.html#delegation-of-incoming-federation-traffic","delegate.html#well-known-delegation","delegate.html#external-server","delegate.html#serving-a-well-knownmatrixserver-file-with-synapse","delegate.html#srv-dns-record-delegation","delegate.html#delegation-faq","delegate.html#when-do-i-need-delegation","delegate.html#should-i-use-a-reverse-proxy-for-federation-traffic","upgrade.html#upgrading-synapse","upgrade.html#rolling-back-to-older-versions","upgrade.html#upgrading-from-a-very-old-version","upgrade.html#upgrading-to-v11000","upgrade.html#minimum-supported-rust-version","upgrade.html#upgrading-to-v1930","upgrade.html#minimum-supported-rust-version-1","upgrade.html#upgrading-to-v1900","upgrade.html#app-service-query-parameter-authorization-is-now-a-configuration-option","upgrade.html#upgrading-to-v1890","upgrade.html#removal-of-unspecced-user-property-for-register","upgrade.html#upgrading-to-v1880","upgrade.html#minimum-supported-python-version","upgrade.html#removal-of-worker_replication_-settings","upgrade.html#upgrading-to-v1860","upgrade.html#minimum-supported-rust-version-2","upgrade.html#upgrading-to-v1850","upgrade.html#application-service-registration-with-user-property-deprecation","upgrade.html#upgrading-to-v1840","upgrade.html#deprecation-of-worker_replication_-configuration-settings","upgrade.html#example-change","upgrade.html#upgrading-to-v1810","upgrade.html#application-service-path--authentication-deprecations","upgrade.html#upgrading-to-v1800","upgrade.html#reporting-events-error-code-change","upgrade.html#upgrading-to-v1790","upgrade.html#the-on_threepid_bind-module-callback-method-has-been-deprecated","upgrade.html#upgrading-to-v1780","upgrade.html#deprecate-the-_synapseadminv1mediadelete-admin-api","upgrade.html#upgrading-to-v1760","upgrade.html#faster-joins-are-enabled-by-default","upgrade.html#changes-to-the-account-data-replication-streams","upgrade.html#minimum-version-of-poetry-is-now-132","upgrade.html#upgrading-to-v1740","upgrade.html#unicode-support-in-user-search","upgrade.html#user-directory-rebuild","upgrade.html#upgrading-to-v1730","upgrade.html#legacy-prometheus-metric-names-have-now-been-removed","upgrade.html#upgrading-to-v1720","upgrade.html#dropping-support-for-postgresql-10","upgrade.html#upgrading-to-v1710","upgrade.html#removal-of-the-generate_short_term_login_token-module-api-method","upgrade.html#changes-to-the-events-received-by-application-services-interest","upgrade.html#legacy-prometheus-metric-names-are-now-disabled-by-default","upgrade.html#upgrading-to-v1690","upgrade.html#changes-to-the-receipts-replication-streams","upgrade.html#deprecation-of-legacy-prometheus-metric-names","upgrade.html#deprecation-of-the-generate_short_term_login_token-module-api-method","upgrade.html#upgrading-to-v1680","upgrade.html#sqlite-version-requirement","upgrade.html#rust-requirement-when-building-from-source","upgrade.html#upgrading-to-v1670","upgrade.html#direct-tcp-replication-is-no-longer-supported-migrate-to-redis","upgrade.html#minimum-version-of-poetry-is-now-v120","upgrade.html#rust-requirement-in-the-next-release","upgrade.html#sqlite-version-requirement-in-the-next-release","upgrade.html#upgrading-to-v1660","upgrade.html#delegation-of-email-validation-no-longer-supported","upgrade.html#upgrading-to-v1640","upgrade.html#deprecation-of-the-ability-to-delegate-e-mail-verification-to-identity-servers","upgrade.html#changes-to-the-event-replication-streams","upgrade.html#frozendict-release","upgrade.html#upgrading-to-v1620","upgrade.html#new-signatures-for-spam-checker-callbacks","upgrade.html#upgrading-to-v1610","upgrade.html#removal-of-deprecated-communitygroups","upgrade.html#worker-endpoints","upgrade.html#upgrading-to-v1600","upgrade.html#adding-a-new-unique-index-to-state_group_edges-could-fail-if-your-database-is-corrupted","upgrade.html#on-postgres","upgrade.html#on-sqlite","upgrade.html#for-more-details","upgrade.html#new-signature-for-the-spam-checker-callback-check_event_for_spam","upgrade.html#upgrading-to-v1590","upgrade.html#device-name-lookup-over-federation-has-been-disabled-by-default","upgrade.html#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types","upgrade.html#upgrading-to-v1580","upgrade.html#groupscommunities-feature-has-been-disabled-by-default","upgrade.html#upgrading-to-v1570","upgrade.html#changes-to-database-schema-for-application-services","upgrade.html#upgrading-to-v1560","upgrade.html#open-registration-without-verification-is-now-disabled-by-default","upgrade.html#groupscommunities-feature-has-been-deprecated","upgrade.html#change-in-behaviour-for-postgresql-databases-with-unsafe-locale","upgrade.html#upgrading-to-v1550","upgrade.html#synctl-script-has-been-moved","upgrade.html#compatibility-dropped-for-mjolnir-131-and-earlier","upgrade.html#upgrading-to-v1540","upgrade.html#legacy-structured-logging-configuration-removal","upgrade.html#upgrading-to-v1530","upgrade.html#dropping-support-for-webclient-listeners-and-non-https-web_client_location","upgrade.html#stablisation-of-msc3231","upgrade.html#time-based-cache-expiry-is-now-enabled-by-default","upgrade.html#deprecation-of-capability-orgmatrixmsc3283","upgrade.html#removal-of-user_may_create_room_with_invites","upgrade.html#upgrading-to-v1520","upgrade.html#twisted-security-release","upgrade.html#upgrading-to-v1510","upgrade.html#deprecation-of-webclient-listeners-and-non-https-web_client_location","upgrade.html#upgrading-to-v1500","upgrade.html#dropping-support-for-old-python-and-postgres-versions","upgrade.html#upgrading-to-v1470","upgrade.html#removal-of-old-room-admin-api","upgrade.html#deprecation-of-the-user_may_create_room_with_invites-module-callback","upgrade.html#upgrading-to-v1450","upgrade.html#changes-required-to-media-storage-provider-modules-when-reading-from-the-synapse-configuration-object","upgrade.html#upgrading-to-v1440","upgrade.html#the-url-preview-cache-is-no-longer-mirrored-to-storage-providers","upgrade.html#upgrading-to-v1430","upgrade.html#the-spaces-summary-apis-can-now-be-handled-by-workers","upgrade.html#upgrading-to-v1420","upgrade.html#removal-of-old-room-admin-api-1","upgrade.html#user-interactive-authentication-fallback-templates-can-now-display-errors","upgrade.html#removal-of-out-of-date-email-pushers","upgrade.html#upgrading-to-v1410","upgrade.html#add-support-for-routing-outbound-http-requests-via-a-proxy-for-federation","upgrade.html#deprecation-of-template_dir","upgrade.html#_synapseadminv1usersuseridmedia-must-be-handled-by-media-workers","upgrade.html#upgrading-to-v1390","upgrade.html#deprecation-of-the-current-third-party-rules-module-interface","upgrade.html#upgrading-to-v1380","upgrade.html#re-indexing-of-events-table-on-postgres-databases","upgrade.html#upgrading-to-v1370","upgrade.html#deprecation-of-the-current-spam-checker-interface","upgrade.html#upgrading-to-v1340","upgrade.html#room_invite_state_types-configuration-setting","upgrade.html#upgrading-to-v1330","upgrade.html#account-validity-html-templates-can-now-display-a-users-expiration-date","upgrade.html#upgrading-to-v1320","upgrade.html#regression-causing-connected-prometheus-instances-to-become-overwhelmed","upgrade.html#dropping-support-for-old-python-postgres-and-sqlite-versions","upgrade.html#removal-of-old-list-accounts-admin-api","upgrade.html#application-services-must-use-type-mloginapplication_service-when-registering-users","upgrade.html#upgrading-to-v1290","upgrade.html#requirement-for-x-forwarded-proto-header","upgrade.html#upgrading-to-v1270","upgrade.html#changes-to-callback-uri-for-oauth2--openid-connect-and-saml2","upgrade.html#changes-to-html-templates","upgrade.html#upgrading-to-v1260","upgrade.html#rolling-back-to-v1250-after-a-failed-upgrade","upgrade.html#upgrading-to-v1250","upgrade.html#last-release-supporting-python-35","upgrade.html#blacklisting-ip-ranges","upgrade.html#upgrading-to-v1240","upgrade.html#custom-openid-connect-mapping-provider-breaking-change","upgrade.html#removal-historical-synapse-admin-api","upgrade.html#upgrading-to-v1230","upgrade.html#structured-logging-configuration-breaking-changes","upgrade.html#upgrading-to-v1220","upgrade.html#thirdpartyeventrules-breaking-changes","upgrade.html#upgrading-to-v1210","upgrade.html#forwarding-_synapseclient-through-your-reverse-proxy","upgrade.html#new-html-templates","upgrade.html#updated-single-sign-on-html-templates","upgrade.html#upgrading-to-v1180","upgrade.html#docker--py3-suffix-will-be-removed-in-future-versions","upgrade.html#redis-replication-is-now-recommended-in-lieu-of-tcp-replication","upgrade.html#upgrading-to-v1140","upgrade.html#upgrading-to-v1130","upgrade.html#incorrect-database-migration-in-old-synapse-versions","upgrade.html#new-single-sign-on-html-templates","upgrade.html#synapse-sso-plugins-method-deprecation","upgrade.html#rolling-back-to-v1124-after-a-failed-upgrade","upgrade.html#upgrading-to-v1120","upgrade.html#upgrading-to-v1100","upgrade.html#upgrading-to-v180","upgrade.html#upgrading-to-v170","upgrade.html#upgrading-to-v150","upgrade.html#upgrading-to-v140","upgrade.html#new-custom-templates","upgrade.html#3pid-verification-changes","upgrade.html#email","upgrade.html#phone-numbers","upgrade.html#rolling-back-to-v131","upgrade.html#upgrading-to-v120","upgrade.html#upgrading-to-v110","upgrade.html#minimum-python-version","upgrade.html#minimum-postgresql-version","upgrade.html#upgrading-to-v10","upgrade.html#validation-of-tls-certificates","upgrade.html#email-1","upgrade.html#new-email-templates","upgrade.html#upgrading-to-v0990","upgrade.html#upgrading-to-v0340","upgrade.html#upgrading-to-v0337","upgrade.html#upgrading-to-v0273","upgrade.html#upgrading-to-v0150","upgrade.html#upgrading-to-v0110","upgrade.html#upgrading-to-v090","upgrade.html#upgrading-to-v080","upgrade.html#upgrading-to-v070","upgrade.html#upgrading-to-v060","upgrade.html#upgrading-to-v051","upgrade.html#upgrading-to-v050","upgrade.html#upgrading-to-v040","upgrade.html#upgrading-to-v030","upgrade.html#web-client","upgrade.html#upgrading-to-v020","upgrade.html#upgrading-to-v001","federate.html#setting-up-federation","federate.html#troubleshooting","federate.html#known-issues","federate.html#running-a-demo-federation-of-synapses","usage/configuration/index.html#configuration","usage/configuration/config_documentation.html#configuring-synapse","usage/configuration/config_documentation.html#config-conventions","usage/configuration/config_documentation.html#config-validation","usage/configuration/config_documentation.html#yaml","usage/configuration/config_documentation.html#modules","usage/configuration/config_documentation.html#modules-1","usage/configuration/config_documentation.html#server","usage/configuration/config_documentation.html#server_name","usage/configuration/config_documentation.html#pid_file","usage/configuration/config_documentation.html#web_client_location","usage/configuration/config_documentation.html#public_baseurl","usage/configuration/config_documentation.html#serve_server_wellknown","usage/configuration/config_documentation.html#extra_well_known_client_content","usage/configuration/config_documentation.html#soft_file_limit","usage/configuration/config_documentation.html#presence","usage/configuration/config_documentation.html#require_auth_for_profile_requests","usage/configuration/config_documentation.html#limit_profile_requests_to_users_who_share_rooms","usage/configuration/config_documentation.html#include_profile_data_on_invite","usage/configuration/config_documentation.html#allow_public_rooms_without_auth","usage/configuration/config_documentation.html#allow_public_rooms_over_federation","usage/configuration/config_documentation.html#default_room_version","usage/configuration/config_documentation.html#gc_thresholds","usage/configuration/config_documentation.html#gc_min_interval","usage/configuration/config_documentation.html#filter_timeline_limit","usage/configuration/config_documentation.html#block_non_admin_invites","usage/configuration/config_documentation.html#enable_search","usage/configuration/config_documentation.html#ip_range_blacklist","usage/configuration/config_documentation.html#ip_range_whitelist","usage/configuration/config_documentation.html#listeners","usage/configuration/config_documentation.html#manhole_settings","usage/configuration/config_documentation.html#dummy_events_threshold","usage/configuration/config_documentation.html#delete_stale_devices_after","usage/configuration/config_documentation.html#email","usage/configuration/config_documentation.html#homeserver-blocking","usage/configuration/config_documentation.html#admin_contact","usage/configuration/config_documentation.html#hs_disabled-and-hs_disabled_message","usage/configuration/config_documentation.html#limit_usage_by_mau","usage/configuration/config_documentation.html#max_mau_value","usage/configuration/config_documentation.html#mau_trial_days","usage/configuration/config_documentation.html#mau_appservice_trial_days","usage/configuration/config_documentation.html#mau_limit_alerting","usage/configuration/config_documentation.html#mau_stats_only","usage/configuration/config_documentation.html#mau_limit_reserved_threepids","usage/configuration/config_documentation.html#server_context","usage/configuration/config_documentation.html#limit_remote_rooms","usage/configuration/config_documentation.html#require_membership_for_aliases","usage/configuration/config_documentation.html#allow_per_room_profiles","usage/configuration/config_documentation.html#max_avatar_size","usage/configuration/config_documentation.html#allowed_avatar_mimetypes","usage/configuration/config_documentation.html#redaction_retention_period","usage/configuration/config_documentation.html#forgotten_room_retention_period","usage/configuration/config_documentation.html#user_ips_max_age","usage/configuration/config_documentation.html#request_token_inhibit_3pid_errors","usage/configuration/config_documentation.html#next_link_domain_whitelist","usage/configuration/config_documentation.html#templates-and-custom_template_directory","usage/configuration/config_documentation.html#retention","usage/configuration/config_documentation.html#tls","usage/configuration/config_documentation.html#tls_certificate_path","usage/configuration/config_documentation.html#tls_private_key_path","usage/configuration/config_documentation.html#federation_verify_certificates","usage/configuration/config_documentation.html#federation_client_minimum_tls_version","usage/configuration/config_documentation.html#federation_certificate_verification_whitelist","usage/configuration/config_documentation.html#federation_custom_ca_list","usage/configuration/config_documentation.html#federation","usage/configuration/config_documentation.html#federation_domain_whitelist","usage/configuration/config_documentation.html#federation_metrics_domains","usage/configuration/config_documentation.html#allow_profile_lookup_over_federation","usage/configuration/config_documentation.html#allow_device_name_lookup_over_federation","usage/configuration/config_documentation.html#federation-1","usage/configuration/config_documentation.html#caching","usage/configuration/config_documentation.html#event_cache_size","usage/configuration/config_documentation.html#caches-and-associated-values","usage/configuration/config_documentation.html#reloading-cache-factors","usage/configuration/config_documentation.html#database","usage/configuration/config_documentation.html#database-1","usage/configuration/config_documentation.html#databases","usage/configuration/config_documentation.html#logging","usage/configuration/config_documentation.html#log_config","usage/configuration/config_documentation.html#ratelimiting","usage/configuration/config_documentation.html#rc_message","usage/configuration/config_documentation.html#rc_registration","usage/configuration/config_documentation.html#rc_registration_token_validity","usage/configuration/config_documentation.html#rc_login","usage/configuration/config_documentation.html#rc_admin_redaction","usage/configuration/config_documentation.html#rc_joins","usage/configuration/config_documentation.html#rc_joins_per_room","usage/configuration/config_documentation.html#rc_3pid_validation","usage/configuration/config_documentation.html#rc_invites","usage/configuration/config_documentation.html#rc_third_party_invite","usage/configuration/config_documentation.html#rc_media_create","usage/configuration/config_documentation.html#rc_federation","usage/configuration/config_documentation.html#federation_rr_transactions_per_room_per_second","usage/configuration/config_documentation.html#media-store","usage/configuration/config_documentation.html#enable_media_repo","usage/configuration/config_documentation.html#media_store_path","usage/configuration/config_documentation.html#max_pending_media_uploads","usage/configuration/config_documentation.html#unused_expiration_time","usage/configuration/config_documentation.html#media_storage_providers","usage/configuration/config_documentation.html#max_upload_size","usage/configuration/config_documentation.html#max_image_pixels","usage/configuration/config_documentation.html#prevent_media_downloads_from","usage/configuration/config_documentation.html#dynamic_thumbnails","usage/configuration/config_documentation.html#thumbnail_sizes","usage/configuration/config_documentation.html#media_retention","usage/configuration/config_documentation.html#url_preview_enabled","usage/configuration/config_documentation.html#url_preview_ip_range_blacklist","usage/configuration/config_documentation.html#url_preview_ip_range_whitelist","usage/configuration/config_documentation.html#url_preview_url_blacklist","usage/configuration/config_documentation.html#max_spider_size","usage/configuration/config_documentation.html#url_preview_accept_language","usage/configuration/config_documentation.html#oembed","usage/configuration/config_documentation.html#captcha","usage/configuration/config_documentation.html#recaptcha_public_key","usage/configuration/config_documentation.html#recaptcha_private_key","usage/configuration/config_documentation.html#enable_registration_captcha","usage/configuration/config_documentation.html#recaptcha_siteverify_api","usage/configuration/config_documentation.html#turn","usage/configuration/config_documentation.html#turn_uris","usage/configuration/config_documentation.html#turn_shared_secret","usage/configuration/config_documentation.html#turn_username-and-turn_password","usage/configuration/config_documentation.html#turn_user_lifetime","usage/configuration/config_documentation.html#turn_allow_guests","usage/configuration/config_documentation.html#registration","usage/configuration/config_documentation.html#enable_registration","usage/configuration/config_documentation.html#enable_registration_without_verification","usage/configuration/config_documentation.html#registrations_require_3pid","usage/configuration/config_documentation.html#disable_msisdn_registration","usage/configuration/config_documentation.html#allowed_local_3pids","usage/configuration/config_documentation.html#enable_3pid_lookup","usage/configuration/config_documentation.html#registration_requires_token","usage/configuration/config_documentation.html#registration_shared_secret","usage/configuration/config_documentation.html#registration_shared_secret_path","usage/configuration/config_documentation.html#bcrypt_rounds","usage/configuration/config_documentation.html#allow_guest_access","usage/configuration/config_documentation.html#default_identity_server","usage/configuration/config_documentation.html#account_threepid_delegates","usage/configuration/config_documentation.html#enable_set_displayname","usage/configuration/config_documentation.html#enable_set_avatar_url","usage/configuration/config_documentation.html#enable_3pid_changes","usage/configuration/config_documentation.html#auto_join_rooms","usage/configuration/config_documentation.html#autocreate_auto_join_rooms","usage/configuration/config_documentation.html#autocreate_auto_join_rooms_federated","usage/configuration/config_documentation.html#autocreate_auto_join_room_preset","usage/configuration/config_documentation.html#auto_join_mxid_localpart","usage/configuration/config_documentation.html#auto_join_rooms_for_guests","usage/configuration/config_documentation.html#inhibit_user_in_use_error","usage/configuration/config_documentation.html#user-session-management","usage/configuration/config_documentation.html#session_lifetime","usage/configuration/config_documentation.html#refresh_access_token_lifetime","usage/configuration/config_documentation.html#refresh_token_lifetime","usage/configuration/config_documentation.html#nonrefreshable_access_token_lifetime","usage/configuration/config_documentation.html#ui_auth","usage/configuration/config_documentation.html#login_via_existing_session","usage/configuration/config_documentation.html#metrics","usage/configuration/config_documentation.html#enable_metrics","usage/configuration/config_documentation.html#sentry","usage/configuration/config_documentation.html#metrics_flags","usage/configuration/config_documentation.html#report_stats","usage/configuration/config_documentation.html#report_stats_endpoint","usage/configuration/config_documentation.html#api-configuration","usage/configuration/config_documentation.html#room_prejoin_state","usage/configuration/config_documentation.html#track_puppeted_user_ips","usage/configuration/config_documentation.html#app_service_config_files","usage/configuration/config_documentation.html#track_appservice_user_ips","usage/configuration/config_documentation.html#use_appservice_legacy_authorization","usage/configuration/config_documentation.html#macaroon_secret_key","usage/configuration/config_documentation.html#form_secret","usage/configuration/config_documentation.html#signing-keys","usage/configuration/config_documentation.html#signing_key_path","usage/configuration/config_documentation.html#old_signing_keys","usage/configuration/config_documentation.html#key_refresh_interval","usage/configuration/config_documentation.html#trusted_key_servers","usage/configuration/config_documentation.html#suppress_key_server_warning","usage/configuration/config_documentation.html#key_server_signing_keys_path","usage/configuration/config_documentation.html#single-sign-on-integration","usage/configuration/config_documentation.html#saml2_config","usage/configuration/config_documentation.html#oidc_providers","usage/configuration/config_documentation.html#cas_config","usage/configuration/config_documentation.html#sso","usage/configuration/config_documentation.html#jwt_config","usage/configuration/config_documentation.html#password_config","usage/configuration/config_documentation.html#push","usage/configuration/config_documentation.html#push-1","usage/configuration/config_documentation.html#rooms","usage/configuration/config_documentation.html#encryption_enabled_by_default_for_room_type","usage/configuration/config_documentation.html#user_directory","usage/configuration/config_documentation.html#user_consent","usage/configuration/config_documentation.html#stats","usage/configuration/config_documentation.html#server_notices","usage/configuration/config_documentation.html#enable_room_list_search","usage/configuration/config_documentation.html#alias_creation_rules","usage/configuration/config_documentation.html#room_list_publication_rules","usage/configuration/config_documentation.html#default_power_level_content_override","usage/configuration/config_documentation.html#forget_rooms_on_leave","usage/configuration/config_documentation.html#exclude_rooms_from_sync","usage/configuration/config_documentation.html#opentracing","usage/configuration/config_documentation.html#opentracing-1","usage/configuration/config_documentation.html#coordinating-workers","usage/configuration/config_documentation.html#worker_replication_secret","usage/configuration/config_documentation.html#start_pushers","usage/configuration/config_documentation.html#pusher_instances","usage/configuration/config_documentation.html#send_federation","usage/configuration/config_documentation.html#federation_sender_instances","usage/configuration/config_documentation.html#instance_map","usage/configuration/config_documentation.html#stream_writers","usage/configuration/config_documentation.html#outbound_federation_restricted_to","usage/configuration/config_documentation.html#run_background_tasks_on","usage/configuration/config_documentation.html#update_user_directory_from_worker","usage/configuration/config_documentation.html#notify_appservices_from_worker","usage/configuration/config_documentation.html#media_instance_running_background_jobs","usage/configuration/config_documentation.html#redis","usage/configuration/config_documentation.html#individual-worker-configuration","usage/configuration/config_documentation.html#worker_app","usage/configuration/config_documentation.html#worker_name","usage/configuration/config_documentation.html#worker_listeners","usage/configuration/config_documentation.html#worker_manhole","usage/configuration/config_documentation.html#worker_daemonize","usage/configuration/config_documentation.html#worker_pid_file","usage/configuration/config_documentation.html#worker_log_config","usage/configuration/config_documentation.html#background-updates","usage/configuration/config_documentation.html#background_updates","usage/configuration/homeserver_sample_config.html#homeserver-sample-configuration-file","usage/configuration/logging_sample_config.html#logging-sample-configuration-file","structured_logging.html#structured-logging","templates.html#templates","templates.html#email-templates","templates.html#html-page-templates-for-registration-and-password-reset","templates.html#html-page-templates-for-single-sign-on-sso","usage/configuration/user_authentication/index.html#user-authentication","usage/configuration/user_authentication/single_sign_on/index.html#single-sign-on","openid.html#configuring-synapse-to-authenticate-against-an-openid-connect-provider","openid.html#preparing-synapse","openid.html#oidc-back-channel-logout","openid.html#sample-configs","openid.html#microsoft-azure-active-directory","openid.html#apple","openid.html#auth0","openid.html#authentik","openid.html#dex","openid.html#django-oauth-toolkit","openid.html#facebook","openid.html#github","openid.html#gitlab","openid.html#gitea","openid.html#google","openid.html#keycloak","openid.html#lemonldap","openid.html#mastodon","openid.html#shibboleth-with-oidc-plugin","openid.html#twitch","openid.html#twitter","openid.html#xwiki","usage/configuration/user_authentication/single_sign_on/saml.html#saml","usage/configuration/user_authentication/single_sign_on/cas.html#cas","sso_mapping_providers.html#sso-mapping-providers","sso_mapping_providers.html#openid-mapping-providers","sso_mapping_providers.html#building-a-custom-openid-mapping-provider","sso_mapping_providers.html#default-openid-mapping-provider","sso_mapping_providers.html#saml-mapping-providers","sso_mapping_providers.html#building-a-custom-saml-mapping-provider","sso_mapping_providers.html#default-saml-mapping-provider","password_auth_providers.html#password-auth-provider-modules","password_auth_providers.html#required-methods","password_auth_providers.html#optional-methods","jwt.html#jwt-login-type","jwt.html#preparing-synapse","jwt.html#how-to-test-jwt-as-a-developer","usage/configuration/user_authentication/refresh_tokens.html#refresh-tokens","usage/configuration/user_authentication/refresh_tokens.html#background-and-motivation","usage/configuration/user_authentication/refresh_tokens.html#caveats","usage/configuration/user_authentication/refresh_tokens.html#configuration-guide","usage/configuration/user_authentication/refresh_tokens.html#using-refresh-token-expiry-to-log-out-inactive-sessions","CAPTCHA_SETUP.html#overview","CAPTCHA_SETUP.html#getting-api-keys","CAPTCHA_SETUP.html#configuring-ip-used-for-auth","application_services.html#registering-an-application-service","server_notices.html#server-notices","server_notices.html#user-experience","server_notices.html#synapse-configuration","server_notices.html#sending-notices","consent_tracking.html#support-in-synapse-for-tracking-agreement-to-server-terms-and-conditions","consent_tracking.html#collecting-policy-agreement-from-a-user","consent_tracking.html#enabling-consent-tracking-at-registration","consent_tracking.html#constructing-the-consent-uri","consent_tracking.html#sending-users-a-server-notice-asking-them-to-agree-to-the-policy","consent_tracking.html#blocking-users-from-using-the-server-until-they-agree-to-the-policy","user_directory.html#user-directory-api-implementation","user_directory.html#data-model","user_directory.html#configuration-options","user_directory.html#search-algorithm","user_directory.html#postgresql","user_directory.html#sqlite","message_retention_policies.html#message-retention-policies","message_retention_policies.html#server-configuration","message_retention_policies.html#default-policy","message_retention_policies.html#purge-jobs","message_retention_policies.html#lifetime-limits","message_retention_policies.html#room-configuration","message_retention_policies.html#note-on-reclaiming-disk-space","modules/index.html#modules","modules/index.html#using-modules","modules/index.html#using-multiple-modules","modules/index.html#current-status","modules/writing_a_module.html#writing-a-module","modules/writing_a_module.html#when-synapse-runs-with-several-modules-configured","modules/writing_a_module.html#handling-the-modules-configuration","modules/writing_a_module.html#registering-a-web-resource","modules/writing_a_module.html#registering-a-callback","modules/writing_a_module.html#caching","modules/spam_checker_callbacks.html#spam-checker-callbacks","modules/spam_checker_callbacks.html#callbacks","modules/spam_checker_callbacks.html#check_event_for_spam","modules/spam_checker_callbacks.html#user_may_join_room","modules/spam_checker_callbacks.html#user_may_invite","modules/spam_checker_callbacks.html#user_may_send_3pid_invite","modules/spam_checker_callbacks.html#user_may_create_room","modules/spam_checker_callbacks.html#user_may_create_room_alias","modules/spam_checker_callbacks.html#user_may_publish_room","modules/spam_checker_callbacks.html#check_username_for_spam","modules/spam_checker_callbacks.html#check_registration_for_spam","modules/spam_checker_callbacks.html#check_media_file_for_spam","modules/spam_checker_callbacks.html#should_drop_federated_event","modules/spam_checker_callbacks.html#check_login_for_spam","modules/spam_checker_callbacks.html#example","modules/third_party_rules_callbacks.html#third-party-rules-callbacks","modules/third_party_rules_callbacks.html#callbacks","modules/third_party_rules_callbacks.html#check_event_allowed","modules/third_party_rules_callbacks.html#on_create_room","modules/third_party_rules_callbacks.html#check_threepid_can_be_invited","modules/third_party_rules_callbacks.html#check_visibility_can_be_modified","modules/third_party_rules_callbacks.html#on_new_event","modules/third_party_rules_callbacks.html#check_can_shutdown_room","modules/third_party_rules_callbacks.html#check_can_deactivate_user","modules/third_party_rules_callbacks.html#on_profile_update","modules/third_party_rules_callbacks.html#on_user_deactivation_status_changed","modules/third_party_rules_callbacks.html#on_threepid_bind","modules/third_party_rules_callbacks.html#on_add_user_third_party_identifier","modules/third_party_rules_callbacks.html#on_remove_user_third_party_identifier","modules/third_party_rules_callbacks.html#example","modules/presence_router_callbacks.html#presence-router-callbacks","modules/presence_router_callbacks.html#callbacks","modules/presence_router_callbacks.html#get_users_for_states","modules/presence_router_callbacks.html#get_interested_users","modules/presence_router_callbacks.html#example","modules/account_validity_callbacks.html#account-validity-callbacks","modules/account_validity_callbacks.html#is_user_expired","modules/account_validity_callbacks.html#on_user_registration","modules/account_validity_callbacks.html#on_user_login","modules/password_auth_provider_callbacks.html#password-auth-provider-callbacks","modules/password_auth_provider_callbacks.html#callbacks","modules/password_auth_provider_callbacks.html#auth_checkers","modules/password_auth_provider_callbacks.html#check_3pid_auth","modules/password_auth_provider_callbacks.html#on_logged_out","modules/password_auth_provider_callbacks.html#get_username_for_registration","modules/password_auth_provider_callbacks.html#get_displayname_for_registration","modules/password_auth_provider_callbacks.html#is_3pid_allowed","modules/password_auth_provider_callbacks.html#example","modules/background_update_controller_callbacks.html#background-update-controller-callbacks","modules/background_update_controller_callbacks.html#on_update","modules/background_update_controller_callbacks.html#default_batch_size","modules/background_update_controller_callbacks.html#min_batch_size","modules/account_data_callbacks.html#account-data-callbacks","modules/account_data_callbacks.html#callbacks","modules/account_data_callbacks.html#on_account_data_updated","modules/account_data_callbacks.html#example","modules/add_extra_fields_to_client_events_unsigned.html#add-extra-fields-to-client-events-unsigned-section-callbacks","modules/add_extra_fields_to_client_events_unsigned.html#api","modules/porting_legacy_module.html#porting-an-existing-module-that-uses-the-old-interface","workers.html#scaling-synapse-via-workers","workers.html#main-processworker-communication","workers.html#setting-up-workers","workers.html#shared-configuration","workers.html#worker-configuration","workers.html#running-synapse-with-workers","workers.html#start-synapse-with-poetry","workers.html#available-worker-applications","workers.html#synapseappgeneric_worker","workers.html#synapseapppusher","workers.html#synapseappappservice","workers.html#synapseappfederation_sender","workers.html#synapseappmedia_repository","workers.html#synapseappuser_dir","workers.html#historical-apps","workers.html#migration-from-old-config","workers.html#architectural-diagram","synctl_workers.html#using-synctl-with-workers","systemd-with-workers/index.html#setting-up-synapse-with-workers-and-systemd","systemd-with-workers/index.html#synapse-configuration-files","systemd-with-workers/index.html#set-up","systemd-with-workers/index.html#usage","systemd-with-workers/index.html#hardening","usage/administration/index.html#administration","usage/administration/admin_api/index.html#the-admin-api","usage/administration/admin_api/index.html#authenticate-as-a-server-admin","usage/administration/admin_api/index.html#making-an-admin-api-request","admin_api/account_validity.html#account-validity-api","admin_api/account_validity.html#renew-account","usage/administration/admin_api/background_updates.html#background-updates-api","usage/administration/admin_api/background_updates.html#status","usage/administration/admin_api/background_updates.html#enabled","usage/administration/admin_api/background_updates.html#run","admin_api/event_reports.html#show-reported-events","admin_api/event_reports.html#show-details-of-a-specific-event-report","admin_api/event_reports.html#delete-a-specific-event-report","admin_api/experimental_features.html#experimental-features-api","admin_api/experimental_features.html#enablingdisabling-features","admin_api/experimental_features.html#listing-enabled-features","admin_api/media_admin_api.html#querying-media","admin_api/media_admin_api.html#list-all-media-in-a-room","admin_api/media_admin_api.html#list-all-media-uploaded-by-a-user","admin_api/media_admin_api.html#quarantine-media","admin_api/media_admin_api.html#quarantining-media-by-id","admin_api/media_admin_api.html#remove-media-from-quarantine-by-id","admin_api/media_admin_api.html#quarantining-media-in-a-room","admin_api/media_admin_api.html#quarantining-all-media-of-a-user","admin_api/media_admin_api.html#protecting-media-from-being-quarantined","admin_api/media_admin_api.html#unprotecting-media-from-being-quarantined","admin_api/media_admin_api.html#delete-local-media","admin_api/media_admin_api.html#delete-a-specific-local-media","admin_api/media_admin_api.html#delete-local-media-by-date-or-size","admin_api/media_admin_api.html#delete-media-uploaded-by-a-user","admin_api/media_admin_api.html#purge-remote-media-api","admin_api/purge_history_api.html#purge-history-api","admin_api/purge_history_api.html#purge-status-query","admin_api/purge_history_api.html#reclaim-disk-space-postgres","admin_api/register_api.html#shared-secret-registration","usage/administration/admin_api/registration_tokens.html#registration-tokens","usage/administration/admin_api/registration_tokens.html#registration-token-objects","usage/administration/admin_api/registration_tokens.html#list-all-tokens","usage/administration/admin_api/registration_tokens.html#get-one-token","usage/administration/admin_api/registration_tokens.html#create-token","usage/administration/admin_api/registration_tokens.html#update-token","usage/administration/admin_api/registration_tokens.html#delete-token","usage/administration/admin_api/registration_tokens.html#errors","admin_api/room_membership.html#edit-room-membership-api","admin_api/room_membership.html#parameters","admin_api/room_membership.html#usage","admin_api/rooms.html#list-room-api","admin_api/rooms.html#room-details-api","admin_api/rooms.html#room-members-api","admin_api/rooms.html#room-state-api","admin_api/rooms.html#room-messages-api","admin_api/rooms.html#room-timestamp-to-event-api","admin_api/rooms.html#block-room-api","admin_api/rooms.html#block-or-unblock-a-room","admin_api/rooms.html#get-block-status","admin_api/rooms.html#delete-room-api","admin_api/rooms.html#version-1-old-version","admin_api/rooms.html#version-2-new-version","admin_api/rooms.html#status-of-deleting-rooms","admin_api/rooms.html#query-by-room_id","admin_api/rooms.html#query-by-delete_id","admin_api/rooms.html#response","admin_api/rooms.html#undoing-room-deletions","admin_api/rooms.html#make-room-admin-api","admin_api/rooms.html#forward-extremities-admin-api","admin_api/rooms.html#check-for-forward-extremities","admin_api/rooms.html#deleting-forward-extremities","admin_api/rooms.html#event-context-api","admin_api/server_notices.html#server-notices","admin_api/statistics.html#users-media-usage-statistics","admin_api/statistics.html#get-largest-rooms-by-size-in-database","admin_api/user_admin_api.html#user-admin-api","admin_api/user_admin_api.html#query-user-account","admin_api/user_admin_api.html#create-or-modify-account","admin_api/user_admin_api.html#list-accounts","admin_api/user_admin_api.html#list-accounts-v2","admin_api/user_admin_api.html#list-accounts-v3","admin_api/user_admin_api.html#query-current-sessions-for-a-user","admin_api/user_admin_api.html#deactivate-account","admin_api/user_admin_api.html#reset-password","admin_api/user_admin_api.html#get-whether-a-user-is-a-server-administrator-or-not","admin_api/user_admin_api.html#change-whether-a-user-is-a-server-administrator-or-not","admin_api/user_admin_api.html#list-room-memberships-of-a-user","admin_api/user_admin_api.html#account-data","admin_api/user_admin_api.html#user-media","admin_api/user_admin_api.html#list-media-uploaded-by-a-user","admin_api/user_admin_api.html#delete-media-uploaded-by-a-user","admin_api/user_admin_api.html#login-as-a-user","admin_api/user_admin_api.html#allow-replacing-master-cross-signing-key-without-user-interactive-auth","admin_api/user_admin_api.html#user-devices","admin_api/user_admin_api.html#list-all-devices","admin_api/user_admin_api.html#create-a-device","admin_api/user_admin_api.html#delete-multiple-devices","admin_api/user_admin_api.html#show-a-device","admin_api/user_admin_api.html#update-a-device","admin_api/user_admin_api.html#delete-a-device","admin_api/user_admin_api.html#list-all-pushers","admin_api/user_admin_api.html#controlling-whether-a-user-is-shadow-banned","admin_api/user_admin_api.html#override-ratelimiting-for-users","admin_api/user_admin_api.html#get-status-of-ratelimit","admin_api/user_admin_api.html#set-ratelimit","admin_api/user_admin_api.html#delete-ratelimit","admin_api/user_admin_api.html#check-username-availability","admin_api/user_admin_api.html#find-a-user-based-on-their-id-in-an-auth-provider","admin_api/user_admin_api.html#find-a-user-based-on-their-third-party-id-threepid-or-3pid","admin_api/version_api.html#version-api","usage/administration/admin_api/federation.html#federation-api","usage/administration/admin_api/federation.html#list-of-destinations","usage/administration/admin_api/federation.html#destination-details-api","usage/administration/admin_api/federation.html#destination-rooms","usage/administration/admin_api/federation.html#reset-connection-timeout","manhole.html#using-the-synapse-manhole","manhole.html#configuring-the-manhole","manhole.html#security-settings","manhole.html#accessing-synapse-manhole","metrics-howto.html#how-to-monitor-synapse-metrics-using-prometheus","metrics-howto.html#monitoring-workers","metrics-howto.html#renaming-of-metrics--deprecation-of-old-names-in-12","metrics-howto.html#removal-of-deprecated-metrics--time-based-counters-becoming-histograms-in-0310","metrics-howto.html#block-and-response-metrics-renamed-for-0270","metrics-howto.html#standard-metric-names","usage/administration/monitoring/reporting_homeserver_usage_statistics.html#reporting-homeserver-usage-statistics","usage/administration/monitoring/reporting_homeserver_usage_statistics.html#available-statistics","usage/administration/monitoring/reporting_homeserver_usage_statistics.html#using-a-custom-statistics-collection-server","usage/administration/monthly_active_users.html#monthly-active-users","usage/administration/monthly_active_users.html#calculating-active-users","usage/administration/monthly_active_users.html#trial-days","usage/administration/monthly_active_users.html#limiting-usage-of-the-homeserver-when-the-maximum-mau-is-reached","usage/administration/monthly_active_users.html#metrics","usage/administration/understanding_synapse_through_grafana_graphs.html#understanding-synapse-through-grafana-graphs","usage/administration/understanding_synapse_through_grafana_graphs.html#message-event-send-time","usage/administration/understanding_synapse_through_grafana_graphs.html#transaction-count-and-transaction-duration","usage/administration/understanding_synapse_through_grafana_graphs.html#federation","usage/administration/understanding_synapse_through_grafana_graphs.html#caches","usage/administration/understanding_synapse_through_grafana_graphs.html#forward-extremities","usage/administration/understanding_synapse_through_grafana_graphs.html#garbage-collection","usage/administration/understanding_synapse_through_grafana_graphs.html#final-thoughts","usage/administration/useful_sql_for_admins.html#some-useful-sql-queries-for-synapse-admins","usage/administration/useful_sql_for_admins.html#size-of-full-matrix-db","usage/administration/useful_sql_for_admins.html#result-example","usage/administration/useful_sql_for_admins.html#show-top-20-larger-tables-by-row-count","usage/administration/useful_sql_for_admins.html#result-example-1","usage/administration/useful_sql_for_admins.html#show-top-20-larger-tables-by-storage-size","usage/administration/useful_sql_for_admins.html#result-example-2","usage/administration/useful_sql_for_admins.html#show-top-20-larger-rooms-by-state-events-count","usage/administration/useful_sql_for_admins.html#show-top-20-rooms-by-new-events-count-in-last-1-day","usage/administration/useful_sql_for_admins.html#show-top-20-users-on-homeserver-by-sent-events-messages-at-last-month","usage/administration/useful_sql_for_admins.html#show-last-100-messages-from-needed-user-with-room-names","usage/administration/useful_sql_for_admins.html#show-rooms-with-names-sorted-by-events-in-this-rooms","usage/administration/useful_sql_for_admins.html#result-example-3","usage/administration/useful_sql_for_admins.html#lookup-room-state-info-by-list-of-room_id","usage/administration/useful_sql_for_admins.html#show-users-and-devices-that-have-not-been-online-for-a-while","usage/administration/useful_sql_for_admins.html#clear-the-cache-of-a-remote-users-device-list","usage/administration/database_maintenance_tools.html#list-of-useful-tools-and-scripts-for-maintenance-synapse-database","usage/administration/database_maintenance_tools.html#purge-remote-media-api","usage/administration/database_maintenance_tools.html#purge-local-media-api","usage/administration/database_maintenance_tools.html#purge-history-api","usage/administration/database_maintenance_tools.html#synapse-compress-state","usage/administration/database_maintenance_tools.html#sql-for-analyzing-synapse-postgresql-database-stats","usage/administration/state_groups.html#how-do-state-groups-work","usage/administration/state_groups.html#known-bugs-with-state-groups","usage/administration/state_groups.html#compression-tool","usage/administration/request_log.html#request-log-format","usage/administration/admin_faq.html#admin-faq","usage/administration/admin_faq.html#how-do-i-become-a-server-admin","usage/administration/admin_faq.html#what-servers-are-my-server-talking-to","usage/administration/admin_faq.html#what-servers-are-currently-participating-in-this-room","usage/administration/admin_faq.html#what-users-are-registered-on-my-server","usage/administration/admin_faq.html#how-can-i-export-user-data","usage/administration/admin_faq.html#how-do-i-upgrade-from-a-very-old-version-of-synapse-to-the-latest","usage/administration/admin_faq.html#manually-resetting-passwords","usage/administration/admin_faq.html#i-have-a-problem-with-my-server-can-i-just-delete-my-database-and-start-again","usage/administration/admin_faq.html#ive-stuffed-up-access-to-my-room-how-can-i-delete-it-to-free-up-the-alias","usage/administration/admin_faq.html#how-can-i-find-the-lines-corresponding-to-a-given-http-request-in-my-homeserver-log","usage/administration/admin_faq.html#what-do-all-those-fields-in-the-processed-line-mean","usage/administration/admin_faq.html#what-are-the-biggest-rooms-on-my-server","usage/administration/admin_faq.html#people-cant-accept-room-invitations-from-me","usage/administration/admin_faq.html#help-synapse-is-slow-and-eats-all-my-ramcpu","usage/administration/admin_faq.html#running-out-of-file-handles","development/contributing_guide.html#contributing","development/contributing_guide.html#1-who-can-contribute-to-synapse","development/contributing_guide.html#2-what-do-i-need","development/contributing_guide.html#3-get-the-source","development/contributing_guide.html#4-install-the-dependencies","development/contributing_guide.html#running-synapse-via-poetry","development/contributing_guide.html#5-get-in-touch","development/contributing_guide.html#6-pick-an-issue","development/contributing_guide.html#7-turn-coffee-into-code-and-documentation","development/contributing_guide.html#8-test-test-test","development/contributing_guide.html#run-the-linters","development/contributing_guide.html#run-the-unit-tests-twisted-trial","development/contributing_guide.html#running-tests-under-postgresql","development/contributing_guide.html#run-the-integration-tests--sytest-","development/contributing_guide.html#run-the-integration-tests--complement-","development/contributing_guide.html#prettier-formatting-with-gotestfmt","development/contributing_guide.html#access-database-for-homeserver-after-complement-test-runs","development/contributing_guide.html#9-submit-your-patch","development/contributing_guide.html#changelog","development/contributing_guide.html#how-do-i-know-what-to-call-the-changelog-file-before-i-create-the-pr","development/contributing_guide.html#debian-changelog","development/contributing_guide.html#sign-off","development/contributing_guide.html#10-turn-feedback-into-better-code","development/contributing_guide.html#11-find-a-new-issue","development/contributing_guide.html#notes-for-maintainers-on-merging-prs-etc","development/contributing_guide.html#conclusion","code_style.html#code-style","code_style.html#formatting-tools","code_style.html#general-rules","code_style.html#configuration-code-and-documentation-format","code_style.html#modules","development/reviews.html#some-notes-on-how-we-do-reviews","development/reviews.html#performing-a-review","development/releases.html#synapse-release-cycle","development/releases.html#bugfix-releases","development/releases.html#security-releases","development/git.html#some-notes-on-how-we-use-git","development/git.html#on-keeping-the-commit-history-clean","development/git.html#merges-squashes-rebases-wtf","development/git.html#git-branching-model","development/demo.html#synapse-demo-setup","development/demo.html#using-the-demo-scripts","opentracing.html#opentracing","opentracing.html#background","opentracing.html#setting-up-opentracing","opentracing.html#enable-opentracing-in-synapse","opentracing.html#homeserver-whitelisting","opentracing.html#configuring-jaeger","development/database_schema.html#synapse-database-schema-files","development/database_schema.html#logical-databases","development/database_schema.html#synapse-schema-versions","development/database_schema.html#full-schema-dumps","development/database_schema.html#building-full-schema-dumps","development/database_schema.html#delta-files","development/database_schema.html#sql-delta-files","development/database_schema.html#python-delta-files","development/database_schema.html#background-updates","development/database_schema.html#boolean-columns","development/database_schema.html#event_id-global-uniqueness","development/database_schema.html#worked-examples-of-gradual-migrations","development/database_schema.html#transforming-a-column-into-another-one-with-not-null-constraints","development/experimental_features.html#implementing-experimental-features-in-synapse","development/dependencies.html#managing-dependencies-with-poetry","development/dependencies.html#installing","development/dependencies.html#background","development/dependencies.html#example-dependency","development/dependencies.html#tooling-recommendation-direnv","development/dependencies.html#how-do-i","development/dependencies.html#reset-my-venv-to-the-locked-environment","development/dependencies.html#delete-everything-and-start-over-from-scratch","development/dependencies.html#run-a-command-in-the-poetry-virtualenv","development/dependencies.html#inspect-the-poetry-virtualenv","development/dependencies.html#add-a-new-dependency","development/dependencies.html#remove-a-dependency","development/dependencies.html#update-the-version-range-for-an-existing-dependency","development/dependencies.html#update-a-dependency-in-the-locked-environment","development/dependencies.html#export-a-requirementstxt-file","development/dependencies.html#build-a-test-wheel","development/dependencies.html#handle-a-dependabot-pull-request","development/dependencies.html#troubleshooting","development/dependencies.html#check-the-version-of-poetry-with-poetry---version","development/dependencies.html#clear-caches-poetry-cache-clear---all-pypi","development/dependencies.html#remove-outdated-egg-info","development/dependencies.html#try---verbose-or---dry-run-arguments","development/synapse_architecture/cancellation.html#cancellation","development/synapse_architecture/cancellation.html#enabling-cancellation-for-an-endpoint","development/synapse_architecture/cancellation.html#mechanics","development/synapse_architecture/cancellation.html#deferredcancel","development/synapse_architecture/cancellation.html#cancellederror","development/synapse_architecture/cancellation.html#handling-cancellation-correctly","development/synapse_architecture/cancellation.html#async-function-calls","development/synapse_architecture/cancellation.html#cancellederrors","development/synapse_architecture/cancellation.html#creation-of-deferreds","development/synapse_architecture/cancellation.html#uncancelled-processing","log_contexts.html#log-contexts","log_contexts.html#logcontexts-without-asynchronous-code","log_contexts.html#using-logcontexts-with-awaitables","log_contexts.html#always-await-your-awaitables","log_contexts.html#where-you-create-a-new-awaitable-make-it-follow-the-rules","log_contexts.html#fire-and-forget","log_contexts.html#passing-synapse-deferreds-into-third-party-functions","log_contexts.html#a-note-on-garbage-collection-of-awaitable-chains","replication.html#replication-architecture","replication.html#motivation","replication.html#architecture","replication.html#the-replication-protocol","replication.html#the-tcp-replication-module","development/synapse_architecture/streams.html#streams","development/synapse_architecture/streams.html#definition","development/synapse_architecture/streams.html#current-stream-id","development/synapse_architecture/streams.html#multi-writer-streams","development/synapse_architecture/streams.html#writing-to-streams","development/synapse_architecture/streams.html#subscribing-to-streams","development/synapse_architecture/streams.html#summary","tcp_replication.html#tcp-replication","tcp_replication.html#motivation","tcp_replication.html#overview","tcp_replication.html#architecture","tcp_replication.html#keep-alives","tcp_replication.html#start-up","tcp_replication.html#error-handling","tcp_replication.html#congestion","tcp_replication.html#reliability","tcp_replication.html#example","tcp_replication.html#list-of-commands","tcp_replication.html#remote_server_up-s-c","tcp_replication.html#cache-invalidation-stream","development/synapse_architecture/faster_joins.html#how-do-faster-joins-work","development/synapse_architecture/faster_joins.html#overview-processing-events-in-a-partially-joined-room","development/synapse_architecture/faster_joins.html#partial-state","development/synapse_architecture/faster_joins.html#approximation-error","development/synapse_architecture/faster_joins.html#fixing-the-approximation-with-a-resync","development/synapse_architecture/faster_joins.html#faster-joins-on-workers","development/synapse_architecture/faster_joins.html#notes-on-specific-cases","development/synapse_architecture/faster_joins.html#creating-events-during-a-partial-join","development/synapse_architecture/faster_joins.html#joining-after-a-partial-join","development/synapse_architecture/faster_joins.html#leaving-and-kicks-and-bans-after-a-partial-join","development/internal_documentation/index.html#internal-documentation","development/saml.html#how-to-test-saml-as-a-developer-without-a-server","development/cas.html#how-to-test-cas-as-a-developer-without-a-server","development/cas.html#prerequisites","development/cas.html#configure-synapse-and-element-to-use-cas","development/cas.html#testing-the-configuration","development/room-dag-concepts.html#room-dag-concepts","development/room-dag-concepts.html#edges","development/room-dag-concepts.html#depth-and-stream-ordering","development/room-dag-concepts.html#outliers","development/room-dag-concepts.html#out-of-band-membership-events","development/room-dag-concepts.html#forward-extremity","development/room-dag-concepts.html#backward-extremity","development/room-dag-concepts.html#state-groups","development/room-dag-concepts.html#stage-group-edges","auth_chain_difference_algorithm.html#auth-chain-difference-algorithm","auth_chain_difference_algorithm.html#definitions","auth_chain_difference_algorithm.html#breadth-first-walk-algorithm","auth_chain_difference_algorithm.html#chain-cover-index","auth_chain_difference_algorithm.html#example","auth_chain_difference_algorithm.html#using-the-index","auth_chain_difference_algorithm.html#worked-example","media_repository.html#media-repository","media_repository.html#local-media","media_repository.html#paths","media_repository.html#remote-media","media_repository.html#paths-1","media_repository.html#url-previews","media_repository.html#paths-2","room_and_user_statistics.html#room-and-user-statistics","room_and_user_statistics.html#synapse-developer-documentation","room_and_user_statistics.html#high-level-concepts","room_and_user_statistics.html#definitions","room_and_user_statistics.html#overview","deprecation_policy.html#deprecation-policy-for-platform-dependencies","deprecation_policy.html#policy","deprecation_policy.html#context","other/running_synapse_on_single_board_computers.html#summary-of-performance-impact-of-running-on-resource-constrained-devices-such-as-sbcs","other/running_synapse_on_single_board_computers.html#presence","other/running_synapse_on_single_board_computers.html#joining","other/running_synapse_on_single_board_computers.html#sessions","other/running_synapse_on_single_board_computers.html#recommended-configuration"],"index":{"documentStore":{"docInfo":{"0":{"body":9,"breadcrumbs":3,"title":1},"1":{"body":55,"breadcrumbs":5,"title":3},"10":{"body":58,"breadcrumbs":3,"title":2},"100":{"body":37,"breadcrumbs":7,"title":3},"1000":{"body":16,"breadcrumbs":5,"title":1},"1001":{"body":33,"breadcrumbs":6,"title":2},"1002":{"body":28,"breadcrumbs":5,"title":1},"1003":{"body":44,"breadcrumbs":6,"title":2},"1004":{"body":22,"breadcrumbs":5,"title":1},"1005":{"body":15,"breadcrumbs":8,"title":3},"1006":{"body":0,"breadcrumbs":8,"title":3},"1007":{"body":0,"breadcrumbs":8,"title":3},"1008":{"body":18,"breadcrumbs":6,"title":1},"1009":{"body":15,"breadcrumbs":6,"title":1},"101":{"body":0,"breadcrumbs":6,"title":2},"1010":{"body":19,"breadcrumbs":7,"title":4},"1011":{"body":64,"breadcrumbs":4,"title":1},"1012":{"body":115,"breadcrumbs":4,"title":1},"1013":{"body":54,"breadcrumbs":14,"title":9},"1014":{"body":86,"breadcrumbs":6,"title":1},"1015":{"body":114,"breadcrumbs":6,"title":1},"1016":{"body":43,"breadcrumbs":6,"title":1},"1017":{"body":153,"breadcrumbs":7,"title":2},"102":{"body":77,"breadcrumbs":10,"title":6},"103":{"body":0,"breadcrumbs":6,"title":2},"104":{"body":16,"breadcrumbs":8,"title":4},"105":{"body":0,"breadcrumbs":6,"title":2},"106":{"body":15,"breadcrumbs":9,"title":5},"107":{"body":81,"breadcrumbs":10,"title":6},"108":{"body":56,"breadcrumbs":11,"title":7},"109":{"body":0,"breadcrumbs":6,"title":2},"11":{"body":113,"breadcrumbs":3,"title":2},"110":{"body":33,"breadcrumbs":8,"title":4},"111":{"body":115,"breadcrumbs":9,"title":5},"112":{"body":57,"breadcrumbs":9,"title":5},"113":{"body":9,"breadcrumbs":6,"title":2},"114":{"body":22,"breadcrumbs":7,"title":3},"115":{"body":35,"breadcrumbs":8,"title":4},"116":{"body":0,"breadcrumbs":6,"title":2},"117":{"body":63,"breadcrumbs":11,"title":7},"118":{"body":11,"breadcrumbs":9,"title":5},"119":{"body":26,"breadcrumbs":8,"title":4},"12":{"body":120,"breadcrumbs":5,"title":4},"120":{"body":44,"breadcrumbs":9,"title":5},"121":{"body":0,"breadcrumbs":6,"title":2},"122":{"body":63,"breadcrumbs":9,"title":5},"123":{"body":0,"breadcrumbs":6,"title":2},"124":{"body":44,"breadcrumbs":12,"title":8},"125":{"body":32,"breadcrumbs":8,"title":4},"126":{"body":34,"breadcrumbs":6,"title":2},"127":{"body":0,"breadcrumbs":6,"title":2},"128":{"body":82,"breadcrumbs":9,"title":5},"129":{"body":0,"breadcrumbs":6,"title":2},"13":{"body":55,"breadcrumbs":2,"title":1},"130":{"body":6,"breadcrumbs":7,"title":3},"131":{"body":18,"breadcrumbs":6,"title":2},"132":{"body":0,"breadcrumbs":6,"title":2},"133":{"body":102,"breadcrumbs":12,"title":8},"134":{"body":29,"breadcrumbs":5,"title":1},"135":{"body":32,"breadcrumbs":5,"title":1},"136":{"body":9,"breadcrumbs":6,"title":2},"137":{"body":62,"breadcrumbs":10,"title":6},"138":{"body":0,"breadcrumbs":6,"title":2},"139":{"body":25,"breadcrumbs":11,"title":7},"14":{"body":103,"breadcrumbs":3,"title":2},"140":{"body":123,"breadcrumbs":10,"title":6},"141":{"body":0,"breadcrumbs":6,"title":2},"142":{"body":10,"breadcrumbs":8,"title":4},"143":{"body":0,"breadcrumbs":6,"title":2},"144":{"body":136,"breadcrumbs":9,"title":5},"145":{"body":0,"breadcrumbs":6,"title":2},"146":{"body":18,"breadcrumbs":11,"title":7},"147":{"body":19,"breadcrumbs":7,"title":3},"148":{"body":32,"breadcrumbs":10,"title":6},"149":{"body":0,"breadcrumbs":6,"title":2},"15":{"body":13,"breadcrumbs":5,"title":4},"150":{"body":60,"breadcrumbs":7,"title":3},"151":{"body":21,"breadcrumbs":9,"title":5},"152":{"body":0,"breadcrumbs":6,"title":2},"153":{"body":20,"breadcrumbs":9,"title":5},"154":{"body":0,"breadcrumbs":6,"title":2},"155":{"body":36,"breadcrumbs":11,"title":7},"156":{"body":19,"breadcrumbs":6,"title":2},"157":{"body":46,"breadcrumbs":11,"title":7},"158":{"body":25,"breadcrumbs":7,"title":3},"159":{"body":31,"breadcrumbs":6,"title":2},"16":{"body":61,"breadcrumbs":3,"title":2},"160":{"body":0,"breadcrumbs":6,"title":2},"161":{"body":42,"breadcrumbs":7,"title":3},"162":{"body":0,"breadcrumbs":6,"title":2},"163":{"body":19,"breadcrumbs":10,"title":6},"164":{"body":0,"breadcrumbs":6,"title":2},"165":{"body":20,"breadcrumbs":10,"title":6},"166":{"body":0,"breadcrumbs":6,"title":2},"167":{"body":24,"breadcrumbs":9,"title":5},"168":{"body":29,"breadcrumbs":8,"title":4},"169":{"body":0,"breadcrumbs":6,"title":2},"17":{"body":32,"breadcrumbs":3,"title":2},"170":{"body":28,"breadcrumbs":14,"title":10},"171":{"body":0,"breadcrumbs":6,"title":2},"172":{"body":18,"breadcrumbs":11,"title":7},"173":{"body":0,"breadcrumbs":6,"title":2},"174":{"body":19,"breadcrumbs":10,"title":6},"175":{"body":0,"breadcrumbs":6,"title":2},"176":{"body":26,"breadcrumbs":9,"title":5},"177":{"body":26,"breadcrumbs":12,"title":8},"178":{"body":12,"breadcrumbs":9,"title":5},"179":{"body":0,"breadcrumbs":6,"title":2},"18":{"body":8,"breadcrumbs":4,"title":2},"180":{"body":70,"breadcrumbs":13,"title":9},"181":{"body":43,"breadcrumbs":6,"title":2},"182":{"body":21,"breadcrumbs":8,"title":4},"183":{"body":0,"breadcrumbs":6,"title":2},"184":{"body":44,"breadcrumbs":11,"title":7},"185":{"body":0,"breadcrumbs":6,"title":2},"186":{"body":96,"breadcrumbs":10,"title":6},"187":{"body":0,"breadcrumbs":6,"title":2},"188":{"body":48,"breadcrumbs":9,"title":5},"189":{"body":0,"breadcrumbs":6,"title":2},"19":{"body":63,"breadcrumbs":6,"title":4},"190":{"body":34,"breadcrumbs":7,"title":3},"191":{"body":0,"breadcrumbs":6,"title":2},"192":{"body":75,"breadcrumbs":13,"title":9},"193":{"body":0,"breadcrumbs":6,"title":2},"194":{"body":27,"breadcrumbs":11,"title":7},"195":{"body":22,"breadcrumbs":11,"title":7},"196":{"body":32,"breadcrumbs":10,"title":6},"197":{"body":26,"breadcrumbs":11,"title":7},"198":{"body":0,"breadcrumbs":6,"title":2},"199":{"body":72,"breadcrumbs":9,"title":5},"2":{"body":74,"breadcrumbs":4,"title":2},"20":{"body":70,"breadcrumbs":5,"title":3},"200":{"body":0,"breadcrumbs":6,"title":2},"201":{"body":99,"breadcrumbs":11,"title":7},"202":{"body":64,"breadcrumbs":7,"title":3},"203":{"body":0,"breadcrumbs":6,"title":2},"204":{"body":102,"breadcrumbs":9,"title":5},"205":{"body":0,"breadcrumbs":6,"title":2},"206":{"body":42,"breadcrumbs":9,"title":5},"207":{"body":57,"breadcrumbs":7,"title":3},"208":{"body":0,"breadcrumbs":6,"title":2},"209":{"body":66,"breadcrumbs":11,"title":7},"21":{"body":104,"breadcrumbs":4,"title":2},"210":{"body":50,"breadcrumbs":9,"title":5},"211":{"body":0,"breadcrumbs":6,"title":2},"212":{"body":39,"breadcrumbs":9,"title":5},"213":{"body":0,"breadcrumbs":6,"title":2},"214":{"body":61,"breadcrumbs":7,"title":3},"215":{"body":0,"breadcrumbs":6,"title":2},"216":{"body":50,"breadcrumbs":9,"title":5},"217":{"body":63,"breadcrumbs":7,"title":3},"218":{"body":46,"breadcrumbs":9,"title":5},"219":{"body":0,"breadcrumbs":6,"title":2},"22":{"body":58,"breadcrumbs":4,"title":2},"220":{"body":46,"breadcrumbs":10,"title":6},"221":{"body":24,"breadcrumbs":11,"title":7},"222":{"body":20,"breadcrumbs":6,"title":2},"223":{"body":0,"breadcrumbs":6,"title":2},"224":{"body":65,"breadcrumbs":10,"title":6},"225":{"body":19,"breadcrumbs":9,"title":5},"226":{"body":18,"breadcrumbs":9,"title":5},"227":{"body":57,"breadcrumbs":9,"title":5},"228":{"body":196,"breadcrumbs":6,"title":2},"229":{"body":16,"breadcrumbs":6,"title":2},"23":{"body":0,"breadcrumbs":4,"title":2},"230":{"body":18,"breadcrumbs":6,"title":2},"231":{"body":51,"breadcrumbs":6,"title":2},"232":{"body":19,"breadcrumbs":6,"title":2},"233":{"body":0,"breadcrumbs":6,"title":2},"234":{"body":40,"breadcrumbs":7,"title":3},"235":{"body":216,"breadcrumbs":7,"title":3},"236":{"body":191,"breadcrumbs":5,"title":1},"237":{"body":95,"breadcrumbs":6,"title":2},"238":{"body":67,"breadcrumbs":7,"title":3},"239":{"body":10,"breadcrumbs":6,"title":2},"24":{"body":124,"breadcrumbs":3,"title":1},"240":{"body":11,"breadcrumbs":6,"title":2},"241":{"body":48,"breadcrumbs":7,"title":3},"242":{"body":17,"breadcrumbs":7,"title":3},"243":{"body":0,"breadcrumbs":6,"title":2},"244":{"body":61,"breadcrumbs":7,"title":3},"245":{"body":88,"breadcrumbs":5,"title":1},"246":{"body":53,"breadcrumbs":7,"title":3},"247":{"body":22,"breadcrumbs":6,"title":2},"248":{"body":223,"breadcrumbs":6,"title":2},"249":{"body":40,"breadcrumbs":6,"title":2},"25":{"body":144,"breadcrumbs":5,"title":3},"250":{"body":42,"breadcrumbs":6,"title":2},"251":{"body":16,"breadcrumbs":6,"title":2},"252":{"body":49,"breadcrumbs":6,"title":2},"253":{"body":97,"breadcrumbs":6,"title":2},"254":{"body":20,"breadcrumbs":6,"title":2},"255":{"body":20,"breadcrumbs":6,"title":2},"256":{"body":49,"breadcrumbs":6,"title":2},"257":{"body":24,"breadcrumbs":6,"title":2},"258":{"body":136,"breadcrumbs":6,"title":2},"259":{"body":25,"breadcrumbs":6,"title":2},"26":{"body":0,"breadcrumbs":3,"title":1},"260":{"body":79,"breadcrumbs":6,"title":2},"261":{"body":23,"breadcrumbs":6,"title":2},"262":{"body":68,"breadcrumbs":6,"title":2},"263":{"body":94,"breadcrumbs":6,"title":2},"264":{"body":132,"breadcrumbs":4,"title":3},"265":{"body":77,"breadcrumbs":2,"title":1},"266":{"body":64,"breadcrumbs":3,"title":2},"267":{"body":18,"breadcrumbs":5,"title":4},"268":{"body":15,"breadcrumbs":2,"title":1},"269":{"body":55,"breadcrumbs":5,"title":2},"27":{"body":67,"breadcrumbs":5,"title":3},"270":{"body":74,"breadcrumbs":5,"title":2},"271":{"body":39,"breadcrumbs":5,"title":2},"272":{"body":142,"breadcrumbs":4,"title":1},"273":{"body":16,"breadcrumbs":4,"title":1},"274":{"body":32,"breadcrumbs":4,"title":1},"275":{"body":5,"breadcrumbs":4,"title":1},"276":{"body":72,"breadcrumbs":4,"title":1},"277":{"body":12,"breadcrumbs":4,"title":1},"278":{"body":11,"breadcrumbs":4,"title":1},"279":{"body":44,"breadcrumbs":4,"title":1},"28":{"body":90,"breadcrumbs":6,"title":4},"280":{"body":44,"breadcrumbs":4,"title":1},"281":{"body":47,"breadcrumbs":4,"title":1},"282":{"body":23,"breadcrumbs":4,"title":1},"283":{"body":55,"breadcrumbs":4,"title":1},"284":{"body":30,"breadcrumbs":4,"title":1},"285":{"body":28,"breadcrumbs":4,"title":1},"286":{"body":34,"breadcrumbs":4,"title":1},"287":{"body":24,"breadcrumbs":4,"title":1},"288":{"body":17,"breadcrumbs":4,"title":1},"289":{"body":36,"breadcrumbs":4,"title":1},"29":{"body":36,"breadcrumbs":6,"title":4},"290":{"body":15,"breadcrumbs":4,"title":1},"291":{"body":37,"breadcrumbs":4,"title":1},"292":{"body":18,"breadcrumbs":4,"title":1},"293":{"body":18,"breadcrumbs":4,"title":1},"294":{"body":17,"breadcrumbs":4,"title":1},"295":{"body":81,"breadcrumbs":4,"title":1},"296":{"body":43,"breadcrumbs":4,"title":1},"297":{"body":487,"breadcrumbs":4,"title":1},"298":{"body":58,"breadcrumbs":4,"title":1},"299":{"body":54,"breadcrumbs":4,"title":1},"3":{"body":15,"breadcrumbs":5,"title":3},"30":{"body":126,"breadcrumbs":7,"title":4},"300":{"body":44,"breadcrumbs":4,"title":1},"301":{"body":582,"breadcrumbs":4,"title":1},"302":{"body":4,"breadcrumbs":5,"title":2},"303":{"body":11,"breadcrumbs":4,"title":1},"304":{"body":20,"breadcrumbs":5,"title":2},"305":{"body":42,"breadcrumbs":4,"title":1},"306":{"body":21,"breadcrumbs":4,"title":1},"307":{"body":37,"breadcrumbs":4,"title":1},"308":{"body":31,"breadcrumbs":4,"title":1},"309":{"body":34,"breadcrumbs":4,"title":1},"31":{"body":55,"breadcrumbs":5,"title":2},"310":{"body":21,"breadcrumbs":4,"title":1},"311":{"body":33,"breadcrumbs":4,"title":1},"312":{"body":14,"breadcrumbs":4,"title":1},"313":{"body":78,"breadcrumbs":4,"title":1},"314":{"body":12,"breadcrumbs":4,"title":1},"315":{"body":22,"breadcrumbs":4,"title":1},"316":{"body":29,"breadcrumbs":4,"title":1},"317":{"body":24,"breadcrumbs":4,"title":1},"318":{"body":48,"breadcrumbs":4,"title":1},"319":{"body":17,"breadcrumbs":4,"title":1},"32":{"body":3,"breadcrumbs":7,"title":4},"320":{"body":21,"breadcrumbs":4,"title":1},"321":{"body":50,"breadcrumbs":4,"title":1},"322":{"body":55,"breadcrumbs":4,"title":1},"323":{"body":47,"breadcrumbs":5,"title":2},"324":{"body":306,"breadcrumbs":4,"title":1},"325":{"body":3,"breadcrumbs":4,"title":1},"326":{"body":42,"breadcrumbs":4,"title":1},"327":{"body":11,"breadcrumbs":4,"title":1},"328":{"body":20,"breadcrumbs":4,"title":1},"329":{"body":38,"breadcrumbs":4,"title":1},"33":{"body":73,"breadcrumbs":4,"title":1},"330":{"body":36,"breadcrumbs":4,"title":1},"331":{"body":29,"breadcrumbs":4,"title":1},"332":{"body":3,"breadcrumbs":4,"title":1},"333":{"body":51,"breadcrumbs":4,"title":1},"334":{"body":34,"breadcrumbs":4,"title":1},"335":{"body":21,"breadcrumbs":4,"title":1},"336":{"body":25,"breadcrumbs":4,"title":1},"337":{"body":143,"breadcrumbs":4,"title":1},"338":{"body":3,"breadcrumbs":4,"title":1},"339":{"body":20,"breadcrumbs":4,"title":1},"34":{"body":43,"breadcrumbs":5,"title":2},"340":{"body":329,"breadcrumbs":6,"title":3},"341":{"body":46,"breadcrumbs":6,"title":3},"342":{"body":5,"breadcrumbs":4,"title":1},"343":{"body":134,"breadcrumbs":4,"title":1},"344":{"body":305,"breadcrumbs":4,"title":1},"345":{"body":4,"breadcrumbs":4,"title":1},"346":{"body":13,"breadcrumbs":4,"title":1},"347":{"body":25,"breadcrumbs":4,"title":1},"348":{"body":25,"breadcrumbs":4,"title":1},"349":{"body":20,"breadcrumbs":4,"title":1},"35":{"body":93,"breadcrumbs":4,"title":1},"350":{"body":23,"breadcrumbs":4,"title":1},"351":{"body":70,"breadcrumbs":4,"title":1},"352":{"body":27,"breadcrumbs":4,"title":1},"353":{"body":53,"breadcrumbs":4,"title":1},"354":{"body":46,"breadcrumbs":4,"title":1},"355":{"body":19,"breadcrumbs":4,"title":1},"356":{"body":118,"breadcrumbs":4,"title":1},"357":{"body":32,"breadcrumbs":4,"title":1},"358":{"body":25,"breadcrumbs":4,"title":1},"359":{"body":77,"breadcrumbs":4,"title":1},"36":{"body":342,"breadcrumbs":4,"title":1},"360":{"body":28,"breadcrumbs":4,"title":1},"361":{"body":6,"breadcrumbs":5,"title":2},"362":{"body":19,"breadcrumbs":4,"title":1},"363":{"body":9,"breadcrumbs":4,"title":1},"364":{"body":25,"breadcrumbs":4,"title":1},"365":{"body":14,"breadcrumbs":4,"title":1},"366":{"body":60,"breadcrumbs":4,"title":1},"367":{"body":34,"breadcrumbs":4,"title":1},"368":{"body":10,"breadcrumbs":4,"title":1},"369":{"body":60,"breadcrumbs":4,"title":1},"37":{"body":142,"breadcrumbs":4,"title":1},"370":{"body":32,"breadcrumbs":4,"title":1},"371":{"body":48,"breadcrumbs":4,"title":1},"372":{"body":96,"breadcrumbs":4,"title":1},"373":{"body":20,"breadcrumbs":4,"title":1},"374":{"body":88,"breadcrumbs":4,"title":1},"375":{"body":39,"breadcrumbs":4,"title":1},"376":{"body":121,"breadcrumbs":4,"title":1},"377":{"body":13,"breadcrumbs":4,"title":1},"378":{"body":65,"breadcrumbs":4,"title":1},"379":{"body":46,"breadcrumbs":4,"title":1},"38":{"body":20,"breadcrumbs":6,"title":3},"380":{"body":7,"breadcrumbs":4,"title":1},"381":{"body":11,"breadcrumbs":4,"title":1},"382":{"body":11,"breadcrumbs":4,"title":1},"383":{"body":26,"breadcrumbs":4,"title":1},"384":{"body":12,"breadcrumbs":4,"title":1},"385":{"body":6,"breadcrumbs":4,"title":1},"386":{"body":10,"breadcrumbs":4,"title":1},"387":{"body":11,"breadcrumbs":4,"title":1},"388":{"body":13,"breadcrumbs":5,"title":2},"389":{"body":11,"breadcrumbs":4,"title":1},"39":{"body":27,"breadcrumbs":6,"title":3},"390":{"body":35,"breadcrumbs":4,"title":1},"391":{"body":8,"breadcrumbs":4,"title":1},"392":{"body":46,"breadcrumbs":4,"title":1},"393":{"body":26,"breadcrumbs":4,"title":1},"394":{"body":19,"breadcrumbs":4,"title":1},"395":{"body":15,"breadcrumbs":4,"title":1},"396":{"body":29,"breadcrumbs":4,"title":1},"397":{"body":13,"breadcrumbs":4,"title":1},"398":{"body":32,"breadcrumbs":4,"title":1},"399":{"body":29,"breadcrumbs":4,"title":1},"4":{"body":0,"breadcrumbs":3,"title":2},"40":{"body":27,"breadcrumbs":7,"title":4},"400":{"body":32,"breadcrumbs":4,"title":1},"401":{"body":41,"breadcrumbs":4,"title":1},"402":{"body":20,"breadcrumbs":4,"title":1},"403":{"body":24,"breadcrumbs":4,"title":1},"404":{"body":91,"breadcrumbs":4,"title":1},"405":{"body":24,"breadcrumbs":4,"title":1},"406":{"body":24,"breadcrumbs":4,"title":1},"407":{"body":17,"breadcrumbs":4,"title":1},"408":{"body":56,"breadcrumbs":4,"title":1},"409":{"body":45,"breadcrumbs":4,"title":1},"41":{"body":111,"breadcrumbs":4,"title":1},"410":{"body":34,"breadcrumbs":4,"title":1},"411":{"body":53,"breadcrumbs":4,"title":1},"412":{"body":63,"breadcrumbs":4,"title":1},"413":{"body":18,"breadcrumbs":4,"title":1},"414":{"body":43,"breadcrumbs":4,"title":1},"415":{"body":0,"breadcrumbs":6,"title":3},"416":{"body":27,"breadcrumbs":4,"title":1},"417":{"body":42,"breadcrumbs":4,"title":1},"418":{"body":40,"breadcrumbs":4,"title":1},"419":{"body":41,"breadcrumbs":4,"title":1},"42":{"body":42,"breadcrumbs":5,"title":2},"420":{"body":69,"breadcrumbs":4,"title":1},"421":{"body":52,"breadcrumbs":4,"title":1},"422":{"body":4,"breadcrumbs":4,"title":1},"423":{"body":13,"breadcrumbs":4,"title":1},"424":{"body":60,"breadcrumbs":4,"title":1},"425":{"body":33,"breadcrumbs":4,"title":1},"426":{"body":36,"breadcrumbs":4,"title":1},"427":{"body":15,"breadcrumbs":4,"title":1},"428":{"body":5,"breadcrumbs":5,"title":2},"429":{"body":151,"breadcrumbs":4,"title":1},"43":{"body":28,"breadcrumbs":4,"title":1},"430":{"body":64,"breadcrumbs":4,"title":1},"431":{"body":11,"breadcrumbs":4,"title":1},"432":{"body":21,"breadcrumbs":4,"title":1},"433":{"body":35,"breadcrumbs":4,"title":1},"434":{"body":39,"breadcrumbs":4,"title":1},"435":{"body":19,"breadcrumbs":4,"title":1},"436":{"body":5,"breadcrumbs":5,"title":2},"437":{"body":24,"breadcrumbs":4,"title":1},"438":{"body":43,"breadcrumbs":4,"title":1},"439":{"body":25,"breadcrumbs":4,"title":1},"44":{"body":44,"breadcrumbs":4,"title":1},"440":{"body":163,"breadcrumbs":4,"title":1},"441":{"body":15,"breadcrumbs":4,"title":1},"442":{"body":22,"breadcrumbs":4,"title":1},"443":{"body":26,"breadcrumbs":6,"title":3},"444":{"body":559,"breadcrumbs":4,"title":1},"445":{"body":897,"breadcrumbs":4,"title":1},"446":{"body":191,"breadcrumbs":4,"title":1},"447":{"body":135,"breadcrumbs":4,"title":1},"448":{"body":176,"breadcrumbs":4,"title":1},"449":{"body":152,"breadcrumbs":4,"title":1},"45":{"body":33,"breadcrumbs":4,"title":1},"450":{"body":5,"breadcrumbs":4,"title":1},"451":{"body":169,"breadcrumbs":4,"title":1},"452":{"body":4,"breadcrumbs":4,"title":1},"453":{"body":43,"breadcrumbs":4,"title":1},"454":{"body":151,"breadcrumbs":4,"title":1},"455":{"body":161,"breadcrumbs":4,"title":1},"456":{"body":33,"breadcrumbs":4,"title":1},"457":{"body":150,"breadcrumbs":4,"title":1},"458":{"body":28,"breadcrumbs":4,"title":1},"459":{"body":191,"breadcrumbs":4,"title":1},"46":{"body":66,"breadcrumbs":5,"title":2},"460":{"body":263,"breadcrumbs":4,"title":1},"461":{"body":73,"breadcrumbs":4,"title":1},"462":{"body":17,"breadcrumbs":4,"title":1},"463":{"body":24,"breadcrumbs":4,"title":1},"464":{"body":5,"breadcrumbs":4,"title":1},"465":{"body":122,"breadcrumbs":4,"title":1},"466":{"body":73,"breadcrumbs":5,"title":2},"467":{"body":27,"breadcrumbs":4,"title":1},"468":{"body":22,"breadcrumbs":4,"title":1},"469":{"body":48,"breadcrumbs":4,"title":1},"47":{"body":348,"breadcrumbs":4,"title":1},"470":{"body":24,"breadcrumbs":4,"title":1},"471":{"body":63,"breadcrumbs":4,"title":1},"472":{"body":69,"breadcrumbs":4,"title":1},"473":{"body":30,"breadcrumbs":4,"title":1},"474":{"body":32,"breadcrumbs":4,"title":1},"475":{"body":18,"breadcrumbs":4,"title":1},"476":{"body":16,"breadcrumbs":4,"title":1},"477":{"body":18,"breadcrumbs":4,"title":1},"478":{"body":31,"breadcrumbs":4,"title":1},"479":{"body":136,"breadcrumbs":4,"title":1},"48":{"body":9,"breadcrumbs":9,"title":3},"480":{"body":24,"breadcrumbs":6,"title":3},"481":{"body":16,"breadcrumbs":4,"title":1},"482":{"body":23,"breadcrumbs":4,"title":1},"483":{"body":62,"breadcrumbs":4,"title":1},"484":{"body":27,"breadcrumbs":4,"title":1},"485":{"body":20,"breadcrumbs":4,"title":1},"486":{"body":31,"breadcrumbs":4,"title":1},"487":{"body":23,"breadcrumbs":4,"title":1},"488":{"body":5,"breadcrumbs":5,"title":2},"489":{"body":111,"breadcrumbs":4,"title":1},"49":{"body":0,"breadcrumbs":8,"title":2},"490":{"body":154,"breadcrumbs":9,"title":4},"491":{"body":283,"breadcrumbs":9,"title":4},"492":{"body":196,"breadcrumbs":5,"title":2},"493":{"body":118,"breadcrumbs":3,"title":1},"494":{"body":309,"breadcrumbs":4,"title":2},"495":{"body":129,"breadcrumbs":8,"title":6},"496":{"body":480,"breadcrumbs":8,"title":6},"497":{"body":52,"breadcrumbs":5,"title":2},"498":{"body":23,"breadcrumbs":7,"title":2},"499":{"body":76,"breadcrumbs":14,"title":7},"5":{"body":60,"breadcrumbs":4,"title":3},"50":{"body":61,"breadcrumbs":8,"title":2},"500":{"body":58,"breadcrumbs":9,"title":2},"501":{"body":44,"breadcrumbs":11,"title":4},"502":{"body":6,"breadcrumbs":9,"title":2},"503":{"body":77,"breadcrumbs":11,"title":4},"504":{"body":104,"breadcrumbs":8,"title":1},"505":{"body":79,"breadcrumbs":8,"title":1},"506":{"body":96,"breadcrumbs":8,"title":1},"507":{"body":82,"breadcrumbs":8,"title":1},"508":{"body":105,"breadcrumbs":10,"title":3},"509":{"body":127,"breadcrumbs":8,"title":1},"51":{"body":471,"breadcrumbs":7,"title":1},"510":{"body":85,"breadcrumbs":8,"title":1},"511":{"body":49,"breadcrumbs":8,"title":1},"512":{"body":82,"breadcrumbs":8,"title":1},"513":{"body":82,"breadcrumbs":8,"title":1},"514":{"body":142,"breadcrumbs":8,"title":1},"515":{"body":111,"breadcrumbs":8,"title":1},"516":{"body":125,"breadcrumbs":8,"title":1},"517":{"body":85,"breadcrumbs":10,"title":3},"518":{"body":42,"breadcrumbs":8,"title":1},"519":{"body":111,"breadcrumbs":8,"title":1},"52":{"body":9,"breadcrumbs":9,"title":3},"520":{"body":33,"breadcrumbs":8,"title":1},"521":{"body":22,"breadcrumbs":7,"title":1},"522":{"body":20,"breadcrumbs":7,"title":1},"523":{"body":167,"breadcrumbs":11,"title":3},"524":{"body":39,"breadcrumbs":11,"title":3},"525":{"body":269,"breadcrumbs":13,"title":5},"526":{"body":12,"breadcrumbs":12,"title":4},"527":{"body":39,"breadcrumbs":11,"title":3},"528":{"body":272,"breadcrumbs":13,"title":5},"529":{"body":12,"breadcrumbs":12,"title":4},"53":{"body":0,"breadcrumbs":8,"title":2},"530":{"body":76,"breadcrumbs":10,"title":4},"531":{"body":50,"breadcrumbs":8,"title":2},"532":{"body":269,"breadcrumbs":8,"title":2},"533":{"body":114,"breadcrumbs":9,"title":3},"534":{"body":53,"breadcrumbs":8,"title":2},"535":{"body":116,"breadcrumbs":9,"title":3},"536":{"body":14,"breadcrumbs":7,"title":2},"537":{"body":172,"breadcrumbs":7,"title":2},"538":{"body":121,"breadcrumbs":6,"title":1},"539":{"body":143,"breadcrumbs":7,"title":2},"54":{"body":27,"breadcrumbs":8,"title":2},"540":{"body":128,"breadcrumbs":13,"title":8},"541":{"body":18,"breadcrumbs":4,"title":1},"542":{"body":80,"breadcrumbs":6,"title":3},"543":{"body":34,"breadcrumbs":7,"title":4},"544":{"body":98,"breadcrumbs":6,"title":3},"545":{"body":42,"breadcrumbs":5,"title":2},"546":{"body":56,"breadcrumbs":5,"title":2},"547":{"body":108,"breadcrumbs":5,"title":2},"548":{"body":6,"breadcrumbs":5,"title":2},"549":{"body":50,"breadcrumbs":10,"title":7},"55":{"body":423,"breadcrumbs":7,"title":1},"550":{"body":182,"breadcrumbs":7,"title":4},"551":{"body":77,"breadcrumbs":7,"title":4},"552":{"body":80,"breadcrumbs":6,"title":3},"553":{"body":65,"breadcrumbs":10,"title":7},"554":{"body":57,"breadcrumbs":10,"title":7},"555":{"body":52,"breadcrumbs":7,"title":4},"556":{"body":174,"breadcrumbs":5,"title":2},"557":{"body":17,"breadcrumbs":5,"title":2},"558":{"body":113,"breadcrumbs":5,"title":2},"559":{"body":125,"breadcrumbs":4,"title":1},"56":{"body":41,"breadcrumbs":9,"title":3},"560":{"body":49,"breadcrumbs":4,"title":1},"561":{"body":214,"breadcrumbs":7,"title":3},"562":{"body":22,"breadcrumbs":6,"title":2},"563":{"body":71,"breadcrumbs":6,"title":2},"564":{"body":218,"breadcrumbs":6,"title":2},"565":{"body":105,"breadcrumbs":6,"title":2},"566":{"body":58,"breadcrumbs":6,"title":2},"567":{"body":53,"breadcrumbs":8,"title":4},"568":{"body":36,"breadcrumbs":4,"title":1},"569":{"body":31,"breadcrumbs":5,"title":2},"57":{"body":68,"breadcrumbs":5,"title":4},"570":{"body":76,"breadcrumbs":6,"title":3},"571":{"body":36,"breadcrumbs":5,"title":2},"572":{"body":51,"breadcrumbs":7,"title":2},"573":{"body":58,"breadcrumbs":10,"title":5},"574":{"body":36,"breadcrumbs":8,"title":3},"575":{"body":93,"breadcrumbs":8,"title":3},"576":{"body":69,"breadcrumbs":7,"title":2},"577":{"body":145,"breadcrumbs":6,"title":1},"578":{"body":21,"breadcrumbs":11,"title":3},"579":{"body":4,"breadcrumbs":9,"title":1},"58":{"body":24,"breadcrumbs":4,"title":3},"580":{"body":105,"breadcrumbs":9,"title":1},"581":{"body":121,"breadcrumbs":9,"title":1},"582":{"body":95,"breadcrumbs":9,"title":1},"583":{"body":164,"breadcrumbs":9,"title":1},"584":{"body":84,"breadcrumbs":9,"title":1},"585":{"body":87,"breadcrumbs":9,"title":1},"586":{"body":89,"breadcrumbs":9,"title":1},"587":{"body":109,"breadcrumbs":9,"title":1},"588":{"body":106,"breadcrumbs":9,"title":1},"589":{"body":87,"breadcrumbs":9,"title":1},"59":{"body":60,"breadcrumbs":3,"title":2},"590":{"body":61,"breadcrumbs":9,"title":1},"591":{"body":97,"breadcrumbs":9,"title":1},"592":{"body":99,"breadcrumbs":9,"title":1},"593":{"body":25,"breadcrumbs":13,"title":4},"594":{"body":5,"breadcrumbs":10,"title":1},"595":{"body":212,"breadcrumbs":10,"title":1},"596":{"body":86,"breadcrumbs":10,"title":1},"597":{"body":59,"breadcrumbs":10,"title":1},"598":{"body":61,"breadcrumbs":10,"title":1},"599":{"body":88,"breadcrumbs":10,"title":1},"6":{"body":0,"breadcrumbs":3,"title":2},"60":{"body":43,"breadcrumbs":6,"title":5},"600":{"body":61,"breadcrumbs":10,"title":1},"601":{"body":88,"breadcrumbs":10,"title":1},"602":{"body":131,"breadcrumbs":10,"title":1},"603":{"body":76,"breadcrumbs":10,"title":1},"604":{"body":64,"breadcrumbs":10,"title":1},"605":{"body":65,"breadcrumbs":10,"title":1},"606":{"body":65,"breadcrumbs":10,"title":1},"607":{"body":64,"breadcrumbs":10,"title":1},"608":{"body":56,"breadcrumbs":11,"title":3},"609":{"body":4,"breadcrumbs":9,"title":1},"61":{"body":101,"breadcrumbs":5,"title":4},"610":{"body":75,"breadcrumbs":9,"title":1},"611":{"body":95,"breadcrumbs":9,"title":1},"612":{"body":76,"breadcrumbs":9,"title":1},"613":{"body":33,"breadcrumbs":11,"title":3},"614":{"body":83,"breadcrumbs":9,"title":1},"615":{"body":37,"breadcrumbs":9,"title":1},"616":{"body":36,"breadcrumbs":9,"title":1},"617":{"body":20,"breadcrumbs":13,"title":4},"618":{"body":0,"breadcrumbs":10,"title":1},"619":{"body":160,"breadcrumbs":10,"title":1},"62":{"body":0,"breadcrumbs":3,"title":2},"620":{"body":96,"breadcrumbs":10,"title":1},"621":{"body":54,"breadcrumbs":10,"title":1},"622":{"body":216,"breadcrumbs":10,"title":1},"623":{"body":103,"breadcrumbs":10,"title":1},"624":{"body":88,"breadcrumbs":10,"title":1},"625":{"body":112,"breadcrumbs":10,"title":1},"626":{"body":88,"breadcrumbs":13,"title":4},"627":{"body":103,"breadcrumbs":10,"title":1},"628":{"body":34,"breadcrumbs":10,"title":1},"629":{"body":44,"breadcrumbs":10,"title":1},"63":{"body":60,"breadcrumbs":3,"title":2},"630":{"body":21,"breadcrumbs":11,"title":3},"631":{"body":4,"breadcrumbs":9,"title":1},"632":{"body":94,"breadcrumbs":9,"title":1},"633":{"body":111,"breadcrumbs":9,"title":1},"634":{"body":26,"breadcrumbs":21,"title":8},"635":{"body":48,"breadcrumbs":14,"title":1},"636":{"body":84,"breadcrumbs":16,"title":6},"637":{"body":85,"breadcrumbs":6,"title":4},"638":{"body":80,"breadcrumbs":5,"title":3},"639":{"body":155,"breadcrumbs":5,"title":3},"64":{"body":24,"breadcrumbs":6,"title":5},"640":{"body":139,"breadcrumbs":4,"title":2},"641":{"body":96,"breadcrumbs":4,"title":2},"642":{"body":33,"breadcrumbs":5,"title":3},"643":{"body":36,"breadcrumbs":5,"title":3},"644":{"body":0,"breadcrumbs":5,"title":3},"645":{"body":1108,"breadcrumbs":3,"title":1},"646":{"body":61,"breadcrumbs":3,"title":1},"647":{"body":38,"breadcrumbs":3,"title":1},"648":{"body":66,"breadcrumbs":3,"title":1},"649":{"body":109,"breadcrumbs":3,"title":1},"65":{"body":159,"breadcrumbs":6,"title":2},"650":{"body":75,"breadcrumbs":3,"title":1},"651":{"body":16,"breadcrumbs":4,"title":2},"652":{"body":31,"breadcrumbs":5,"title":3},"653":{"body":36,"breadcrumbs":4,"title":2},"654":{"body":90,"breadcrumbs":8,"title":3},"655":{"body":42,"breadcrumbs":8,"title":5},"656":{"body":70,"breadcrumbs":6,"title":3},"657":{"body":68,"breadcrumbs":5,"title":2},"658":{"body":62,"breadcrumbs":4,"title":1},"659":{"body":103,"breadcrumbs":4,"title":1},"66":{"body":143,"breadcrumbs":8,"title":4},"660":{"body":25,"breadcrumbs":2,"title":1},"661":{"body":0,"breadcrumbs":5,"title":2},"662":{"body":79,"breadcrumbs":6,"title":3},"663":{"body":94,"breadcrumbs":7,"title":4},"664":{"body":33,"breadcrumbs":8,"title":3},"665":{"body":57,"breadcrumbs":7,"title":2},"666":{"body":11,"breadcrumbs":8,"title":3},"667":{"body":70,"breadcrumbs":6,"title":1},"668":{"body":64,"breadcrumbs":6,"title":1},"669":{"body":40,"breadcrumbs":6,"title":1},"67":{"body":91,"breadcrumbs":8,"title":4},"670":{"body":268,"breadcrumbs":8,"title":3},"671":{"body":174,"breadcrumbs":10,"title":5},"672":{"body":22,"breadcrumbs":9,"title":4},"673":{"body":45,"breadcrumbs":8,"title":3},"674":{"body":34,"breadcrumbs":7,"title":2},"675":{"body":26,"breadcrumbs":8,"title":3},"676":{"body":27,"breadcrumbs":6,"title":2},"677":{"body":24,"breadcrumbs":7,"title":3},"678":{"body":14,"breadcrumbs":8,"title":4},"679":{"body":20,"breadcrumbs":6,"title":2},"68":{"body":0,"breadcrumbs":6,"title":2},"680":{"body":17,"breadcrumbs":7,"title":3},"681":{"body":18,"breadcrumbs":8,"title":4},"682":{"body":39,"breadcrumbs":7,"title":3},"683":{"body":44,"breadcrumbs":7,"title":3},"684":{"body":29,"breadcrumbs":8,"title":4},"685":{"body":11,"breadcrumbs":8,"title":4},"686":{"body":30,"breadcrumbs":7,"title":3},"687":{"body":44,"breadcrumbs":8,"title":4},"688":{"body":104,"breadcrumbs":9,"title":5},"689":{"body":10,"breadcrumbs":8,"title":4},"69":{"body":16,"breadcrumbs":8,"title":4},"690":{"body":60,"breadcrumbs":8,"title":4},"691":{"body":136,"breadcrumbs":8,"title":3},"692":{"body":26,"breadcrumbs":8,"title":3},"693":{"body":13,"breadcrumbs":9,"title":4},"694":{"body":186,"breadcrumbs":8,"title":3},"695":{"body":36,"breadcrumbs":7,"title":2},"696":{"body":91,"breadcrumbs":8,"title":3},"697":{"body":111,"breadcrumbs":7,"title":2},"698":{"body":32,"breadcrumbs":7,"title":2},"699":{"body":138,"breadcrumbs":7,"title":2},"7":{"body":483,"breadcrumbs":3,"title":2},"70":{"body":0,"breadcrumbs":6,"title":2},"700":{"body":102,"breadcrumbs":7,"title":2},"701":{"body":23,"breadcrumbs":7,"title":2},"702":{"body":32,"breadcrumbs":6,"title":1},"703":{"body":31,"breadcrumbs":10,"title":4},"704":{"body":16,"breadcrumbs":7,"title":1},"705":{"body":7,"breadcrumbs":7,"title":1},"706":{"body":715,"breadcrumbs":7,"title":3},"707":{"body":196,"breadcrumbs":7,"title":3},"708":{"body":38,"breadcrumbs":7,"title":3},"709":{"body":43,"breadcrumbs":7,"title":3},"71":{"body":16,"breadcrumbs":8,"title":4},"710":{"body":273,"breadcrumbs":7,"title":3},"711":{"body":77,"breadcrumbs":8,"title":4},"712":{"body":30,"breadcrumbs":7,"title":3},"713":{"body":46,"breadcrumbs":7,"title":3},"714":{"body":47,"breadcrumbs":6,"title":2},"715":{"body":140,"breadcrumbs":7,"title":3},"716":{"body":82,"breadcrumbs":8,"title":4},"717":{"body":213,"breadcrumbs":8,"title":4},"718":{"body":26,"breadcrumbs":7,"title":3},"719":{"body":52,"breadcrumbs":6,"title":2},"72":{"body":0,"breadcrumbs":6,"title":2},"720":{"body":31,"breadcrumbs":6,"title":2},"721":{"body":116,"breadcrumbs":5,"title":1},"722":{"body":160,"breadcrumbs":7,"title":3},"723":{"body":30,"breadcrumbs":8,"title":4},"724":{"body":17,"breadcrumbs":8,"title":4},"725":{"body":20,"breadcrumbs":7,"title":3},"726":{"body":36,"breadcrumbs":7,"title":3},"727":{"body":167,"breadcrumbs":7,"title":3},"728":{"body":78,"breadcrumbs":7,"title":2},"729":{"body":268,"breadcrumbs":8,"title":4},"73":{"body":50,"breadcrumbs":12,"title":8},"730":{"body":82,"breadcrumbs":8,"title":4},"731":{"body":10,"breadcrumbs":7,"title":3},"732":{"body":81,"breadcrumbs":7,"title":3},"733":{"body":345,"breadcrumbs":7,"title":3},"734":{"body":0,"breadcrumbs":6,"title":2},"735":{"body":504,"breadcrumbs":7,"title":3},"736":{"body":38,"breadcrumbs":7,"title":3},"737":{"body":41,"breadcrumbs":8,"title":4},"738":{"body":175,"breadcrumbs":6,"title":2},"739":{"body":32,"breadcrumbs":6,"title":2},"74":{"body":0,"breadcrumbs":6,"title":2},"740":{"body":15,"breadcrumbs":8,"title":4},"741":{"body":16,"breadcrumbs":9,"title":5},"742":{"body":53,"breadcrumbs":8,"title":4},"743":{"body":92,"breadcrumbs":6,"title":2},"744":{"body":0,"breadcrumbs":6,"title":2},"745":{"body":399,"breadcrumbs":8,"title":4},"746":{"body":111,"breadcrumbs":8,"title":4},"747":{"body":83,"breadcrumbs":6,"title":2},"748":{"body":85,"breadcrumbs":14,"title":10},"749":{"body":0,"breadcrumbs":6,"title":2},"75":{"body":21,"breadcrumbs":9,"title":5},"750":{"body":137,"breadcrumbs":6,"title":2},"751":{"body":39,"breadcrumbs":6,"title":2},"752":{"body":40,"breadcrumbs":7,"title":3},"753":{"body":104,"breadcrumbs":6,"title":2},"754":{"body":43,"breadcrumbs":6,"title":2},"755":{"body":29,"breadcrumbs":6,"title":2},"756":{"body":158,"breadcrumbs":6,"title":2},"757":{"body":98,"breadcrumbs":9,"title":5},"758":{"body":12,"breadcrumbs":7,"title":3},"759":{"body":56,"breadcrumbs":6,"title":2},"76":{"body":0,"breadcrumbs":6,"title":2},"760":{"body":76,"breadcrumbs":6,"title":2},"761":{"body":20,"breadcrumbs":6,"title":2},"762":{"body":28,"breadcrumbs":7,"title":3},"763":{"body":73,"breadcrumbs":10,"title":6},"764":{"body":59,"breadcrumbs":12,"title":8},"765":{"body":35,"breadcrumbs":7,"title":2},"766":{"body":14,"breadcrumbs":6,"title":2},"767":{"body":277,"breadcrumbs":6,"title":2},"768":{"body":42,"breadcrumbs":7,"title":3},"769":{"body":127,"breadcrumbs":6,"title":2},"77":{"body":29,"breadcrumbs":8,"title":4},"770":{"body":84,"breadcrumbs":7,"title":3},"771":{"body":33,"breadcrumbs":5,"title":3},"772":{"body":95,"breadcrumbs":4,"title":2},"773":{"body":40,"breadcrumbs":4,"title":2},"774":{"body":64,"breadcrumbs":5,"title":3},"775":{"body":200,"breadcrumbs":7,"title":5},"776":{"body":117,"breadcrumbs":4,"title":2},"777":{"body":142,"breadcrumbs":8,"title":6},"778":{"body":44,"breadcrumbs":11,"title":9},"779":{"body":101,"breadcrumbs":7,"title":5},"78":{"body":42,"breadcrumbs":7,"title":3},"780":{"body":62,"breadcrumbs":5,"title":3},"781":{"body":58,"breadcrumbs":10,"title":4},"782":{"body":411,"breadcrumbs":8,"title":2},"783":{"body":37,"breadcrumbs":11,"title":5},"784":{"body":47,"breadcrumbs":7,"title":3},"785":{"body":136,"breadcrumbs":7,"title":3},"786":{"body":57,"breadcrumbs":6,"title":2},"787":{"body":75,"breadcrumbs":10,"title":6},"788":{"body":56,"breadcrumbs":5,"title":1},"789":{"body":59,"breadcrumbs":11,"title":5},"79":{"body":0,"breadcrumbs":6,"title":2},"790":{"body":19,"breadcrumbs":10,"title":4},"791":{"body":87,"breadcrumbs":10,"title":4},"792":{"body":74,"breadcrumbs":7,"title":1},"793":{"body":85,"breadcrumbs":7,"title":1},"794":{"body":54,"breadcrumbs":8,"title":2},"795":{"body":29,"breadcrumbs":8,"title":2},"796":{"body":30,"breadcrumbs":8,"title":2},"797":{"body":0,"breadcrumbs":9,"title":5},"798":{"body":4,"breadcrumbs":8,"title":4},"799":{"body":5,"breadcrumbs":6,"title":2},"8":{"body":606,"breadcrumbs":5,"title":4},"80":{"body":16,"breadcrumbs":8,"title":4},"800":{"body":21,"breadcrumbs":11,"title":7},"801":{"body":40,"breadcrumbs":6,"title":2},"802":{"body":25,"breadcrumbs":11,"title":7},"803":{"body":60,"breadcrumbs":6,"title":2},"804":{"body":65,"breadcrumbs":12,"title":8},"805":{"body":28,"breadcrumbs":14,"title":10},"806":{"body":30,"breadcrumbs":14,"title":10},"807":{"body":30,"breadcrumbs":12,"title":8},"808":{"body":50,"breadcrumbs":10,"title":6},"809":{"body":31,"breadcrumbs":6,"title":2},"81":{"body":0,"breadcrumbs":6,"title":2},"810":{"body":25,"breadcrumbs":10,"title":6},"811":{"body":15,"breadcrumbs":8,"title":4},"812":{"body":24,"breadcrumbs":10,"title":6},"813":{"body":21,"breadcrumbs":11,"title":7},"814":{"body":12,"breadcrumbs":8,"title":4},"815":{"body":6,"breadcrumbs":8,"title":4},"816":{"body":13,"breadcrumbs":7,"title":3},"817":{"body":5,"breadcrumbs":7,"title":3},"818":{"body":7,"breadcrumbs":10,"title":6},"819":{"body":172,"breadcrumbs":6,"title":3},"82":{"body":26,"breadcrumbs":10,"title":6},"820":{"body":15,"breadcrumbs":7,"title":4},"821":{"body":22,"breadcrumbs":5,"title":2},"822":{"body":252,"breadcrumbs":7,"title":3},"823":{"body":0,"breadcrumbs":5,"title":2},"824":{"body":44,"breadcrumbs":6,"title":3},"825":{"body":6,"breadcrumbs":6,"title":3},"826":{"body":13,"breadcrumbs":7,"title":4},"827":{"body":3,"breadcrumbs":6,"title":3},"828":{"body":193,"breadcrumbs":6,"title":3},"829":{"body":4,"breadcrumbs":9,"title":6},"83":{"body":0,"breadcrumbs":6,"title":2},"830":{"body":14,"breadcrumbs":6,"title":3},"831":{"body":95,"breadcrumbs":9,"title":6},"832":{"body":38,"breadcrumbs":12,"title":9},"833":{"body":91,"breadcrumbs":11,"title":8},"834":{"body":4,"breadcrumbs":8,"title":5},"835":{"body":25,"breadcrumbs":6,"title":3},"836":{"body":57,"breadcrumbs":8,"title":5},"837":{"body":183,"breadcrumbs":8,"title":5},"838":{"body":136,"breadcrumbs":7,"title":4},"839":{"body":5,"breadcrumbs":3,"title":1},"84":{"body":32,"breadcrumbs":8,"title":4},"840":{"body":39,"breadcrumbs":5,"title":3},"841":{"body":131,"breadcrumbs":4,"title":2},"842":{"body":41,"breadcrumbs":4,"title":2},"843":{"body":100,"breadcrumbs":5,"title":3},"844":{"body":75,"breadcrumbs":6,"title":4},"845":{"body":6,"breadcrumbs":4,"title":2},"846":{"body":9,"breadcrumbs":5,"title":3},"847":{"body":99,"breadcrumbs":7,"title":5},"848":{"body":9,"breadcrumbs":6,"title":4},"849":{"body":69,"breadcrumbs":4,"title":2},"85":{"body":94,"breadcrumbs":6,"title":2},"850":{"body":165,"breadcrumbs":7,"title":5},"851":{"body":195,"breadcrumbs":6,"title":4},"852":{"body":82,"breadcrumbs":6,"title":4},"853":{"body":184,"breadcrumbs":6,"title":4},"854":{"body":32,"breadcrumbs":5,"title":3},"855":{"body":72,"breadcrumbs":8,"title":6},"856":{"body":56,"breadcrumbs":5,"title":3},"857":{"body":117,"breadcrumbs":3,"title":1},"858":{"body":61,"breadcrumbs":9,"title":7},"859":{"body":74,"breadcrumbs":4,"title":2},"86":{"body":0,"breadcrumbs":6,"title":2},"860":{"body":49,"breadcrumbs":3,"title":1},"861":{"body":106,"breadcrumbs":7,"title":5},"862":{"body":3,"breadcrumbs":6,"title":4},"863":{"body":8,"breadcrumbs":7,"title":5},"864":{"body":31,"breadcrumbs":3,"title":1},"865":{"body":0,"breadcrumbs":4,"title":2},"866":{"body":72,"breadcrumbs":4,"title":2},"867":{"body":70,"breadcrumbs":4,"title":2},"868":{"body":114,"breadcrumbs":6,"title":4},"869":{"body":52,"breadcrumbs":3,"title":1},"87":{"body":51,"breadcrumbs":9,"title":5},"870":{"body":116,"breadcrumbs":4,"title":2},"871":{"body":63,"breadcrumbs":4,"title":2},"872":{"body":61,"breadcrumbs":5,"title":3},"873":{"body":18,"breadcrumbs":4,"title":2},"874":{"body":67,"breadcrumbs":4,"title":2},"875":{"body":0,"breadcrumbs":5,"title":3},"876":{"body":195,"breadcrumbs":6,"title":4},"877":{"body":157,"breadcrumbs":6,"title":4},"878":{"body":200,"breadcrumbs":5,"title":3},"879":{"body":91,"breadcrumbs":6,"title":3},"88":{"body":0,"breadcrumbs":6,"title":2},"880":{"body":46,"breadcrumbs":6,"title":3},"881":{"body":0,"breadcrumbs":2,"title":1},"882":{"body":144,"breadcrumbs":2,"title":1},"883":{"body":55,"breadcrumbs":4,"title":3},"884":{"body":29,"breadcrumbs":4,"title":3},"885":{"body":76,"breadcrumbs":3,"title":2},"886":{"body":5,"breadcrumbs":3,"title":2},"887":{"body":6,"breadcrumbs":6,"title":4},"888":{"body":48,"breadcrumbs":4,"title":2},"889":{"body":189,"breadcrumbs":5,"title":3},"89":{"body":28,"breadcrumbs":9,"title":5},"890":{"body":16,"breadcrumbs":5,"title":3},"891":{"body":40,"breadcrumbs":6,"title":4},"892":{"body":54,"breadcrumbs":4,"title":2},"893":{"body":38,"breadcrumbs":5,"title":3},"894":{"body":62,"breadcrumbs":5,"title":3},"895":{"body":160,"breadcrumbs":4,"title":2},"896":{"body":30,"breadcrumbs":4,"title":2},"897":{"body":97,"breadcrumbs":5,"title":3},"898":{"body":73,"breadcrumbs":6,"title":4},"899":{"body":550,"breadcrumbs":8,"title":6},"9":{"body":6,"breadcrumbs":4,"title":3},"90":{"body":0,"breadcrumbs":6,"title":2},"900":{"body":154,"breadcrumbs":6,"title":4},"901":{"body":6,"breadcrumbs":5,"title":3},"902":{"body":17,"breadcrumbs":3,"title":1},"903":{"body":102,"breadcrumbs":3,"title":1},"904":{"body":155,"breadcrumbs":4,"title":2},"905":{"body":90,"breadcrumbs":5,"title":3},"906":{"body":0,"breadcrumbs":2,"title":0},"907":{"body":4,"breadcrumbs":6,"title":4},"908":{"body":35,"breadcrumbs":7,"title":5},"909":{"body":64,"breadcrumbs":6,"title":4},"91":{"body":91,"breadcrumbs":9,"title":5},"910":{"body":40,"breadcrumbs":5,"title":3},"911":{"body":25,"breadcrumbs":5,"title":3},"912":{"body":20,"breadcrumbs":4,"title":2},"913":{"body":13,"breadcrumbs":7,"title":5},"914":{"body":59,"breadcrumbs":6,"title":4},"915":{"body":11,"breadcrumbs":5,"title":3},"916":{"body":24,"breadcrumbs":5,"title":3},"917":{"body":53,"breadcrumbs":6,"title":4},"918":{"body":0,"breadcrumbs":3,"title":1},"919":{"body":24,"breadcrumbs":7,"title":5},"92":{"body":0,"breadcrumbs":6,"title":2},"920":{"body":29,"breadcrumbs":8,"title":6},"921":{"body":16,"breadcrumbs":6,"title":4},"922":{"body":6,"breadcrumbs":7,"title":5},"923":{"body":46,"breadcrumbs":4,"title":1},"924":{"body":37,"breadcrumbs":6,"title":3},"925":{"body":31,"breadcrumbs":4,"title":1},"926":{"body":74,"breadcrumbs":4,"title":1},"927":{"body":12,"breadcrumbs":4,"title":1},"928":{"body":62,"breadcrumbs":6,"title":3},"929":{"body":65,"breadcrumbs":6,"title":3},"93":{"body":20,"breadcrumbs":8,"title":4},"930":{"body":121,"breadcrumbs":4,"title":1},"931":{"body":110,"breadcrumbs":5,"title":2},"932":{"body":145,"breadcrumbs":5,"title":2},"933":{"body":82,"breadcrumbs":6,"title":2},"934":{"body":59,"breadcrumbs":8,"title":4},"935":{"body":195,"breadcrumbs":7,"title":3},"936":{"body":104,"breadcrumbs":7,"title":3},"937":{"body":63,"breadcrumbs":10,"title":6},"938":{"body":215,"breadcrumbs":6,"title":2},"939":{"body":113,"breadcrumbs":10,"title":6},"94":{"body":0,"breadcrumbs":6,"title":2},"940":{"body":163,"breadcrumbs":9,"title":5},"941":{"body":0,"breadcrumbs":5,"title":2},"942":{"body":111,"breadcrumbs":4,"title":1},"943":{"body":0,"breadcrumbs":4,"title":1},"944":{"body":4,"breadcrumbs":5,"title":2},"945":{"body":10,"breadcrumbs":6,"title":3},"946":{"body":75,"breadcrumbs":4,"title":1},"947":{"body":157,"breadcrumbs":4,"title":1},"948":{"body":227,"breadcrumbs":6,"title":3},"949":{"body":143,"breadcrumbs":6,"title":3},"95":{"body":32,"breadcrumbs":8,"title":4},"950":{"body":80,"breadcrumbs":5,"title":2},"951":{"body":54,"breadcrumbs":5,"title":2},"952":{"body":80,"breadcrumbs":4,"title":1},"953":{"body":0,"breadcrumbs":6,"title":2},"954":{"body":23,"breadcrumbs":5,"title":1},"955":{"body":171,"breadcrumbs":5,"title":1},"956":{"body":34,"breadcrumbs":5,"title":1},"957":{"body":57,"breadcrumbs":6,"title":2},"958":{"body":56,"breadcrumbs":6,"title":2},"959":{"body":17,"breadcrumbs":6,"title":2},"96":{"body":36,"breadcrumbs":9,"title":5},"960":{"body":36,"breadcrumbs":5,"title":1},"961":{"body":49,"breadcrumbs":5,"title":1},"962":{"body":106,"breadcrumbs":5,"title":1},"963":{"body":152,"breadcrumbs":6,"title":2},"964":{"body":14,"breadcrumbs":7,"title":3},"965":{"body":105,"breadcrumbs":7,"title":3},"966":{"body":46,"breadcrumbs":8,"title":3},"967":{"body":208,"breadcrumbs":11,"title":6},"968":{"body":136,"breadcrumbs":7,"title":2},"969":{"body":192,"breadcrumbs":7,"title":2},"97":{"body":26,"breadcrumbs":9,"title":5},"970":{"body":147,"breadcrumbs":8,"title":3},"971":{"body":28,"breadcrumbs":8,"title":3},"972":{"body":11,"breadcrumbs":8,"title":3},"973":{"body":292,"breadcrumbs":10,"title":5},"974":{"body":108,"breadcrumbs":8,"title":3},"975":{"body":300,"breadcrumbs":10,"title":5},"976":{"body":46,"breadcrumbs":4,"title":2},"977":{"body":142,"breadcrumbs":10,"title":5},"978":{"body":11,"breadcrumbs":10,"title":5},"979":{"body":81,"breadcrumbs":6,"title":1},"98":{"body":0,"breadcrumbs":6,"title":2},"980":{"body":38,"breadcrumbs":10,"title":5},"981":{"body":30,"breadcrumbs":7,"title":2},"982":{"body":0,"breadcrumbs":8,"title":3},"983":{"body":26,"breadcrumbs":6,"title":1},"984":{"body":85,"breadcrumbs":8,"title":3},"985":{"body":95,"breadcrumbs":6,"title":1},"986":{"body":41,"breadcrumbs":9,"title":4},"987":{"body":43,"breadcrumbs":7,"title":2},"988":{"body":62,"breadcrumbs":7,"title":2},"989":{"body":37,"breadcrumbs":7,"title":2},"99":{"body":50,"breadcrumbs":8,"title":4},"990":{"body":7,"breadcrumbs":8,"title":3},"991":{"body":15,"breadcrumbs":12,"title":4},"992":{"body":63,"breadcrumbs":9,"title":1},"993":{"body":61,"breadcrumbs":12,"title":4},"994":{"body":289,"breadcrumbs":11,"title":3},"995":{"body":53,"breadcrumbs":9,"title":1},"996":{"body":80,"breadcrumbs":10,"title":2},"997":{"body":111,"breadcrumbs":10,"title":2},"998":{"body":44,"breadcrumbs":6,"title":2},"999":{"body":47,"breadcrumbs":6,"title":2}},"docs":{"0":{"body":"Welcome to the documentation repository for Synapse, a Matrix homeserver implementation developed by Element.","breadcrumbs":"Welcome and Overview » Introduction","id":"0","title":"Introduction"},"1":{"body":"This documentation covers topics for installation , configuration and maintenance of your Synapse process: Learn how to install and configure your own instance, perhaps with Single Sign-On . See how to upgrade between Synapse versions. Administer your instance using the Admin API , installing pluggable modules , or by accessing the manhole . Learn how to read log lines , configure logging or set up structured logging . Scale Synapse through additional worker processes . Set up monitoring and metrics to keep an eye on your Synapse instance's performance.","breadcrumbs":"Welcome and Overview » Installing and using Synapse","id":"1","title":"Installing and using Synapse"},"10":{"body":"By default Synapse uses an SQLite database and in doing so trades performance for convenience. Almost all installations should opt to use PostgreSQL instead. Advantages include: significant performance improvements due to the superior threading and caching model, smarter query optimiser allowing the DB to be run on separate hardware For information on how to install and use PostgreSQL in Synapse, please see Using Postgres SQLite is only acceptable for testing purposes. SQLite should not be used in a production server. Synapse will perform poorly when using SQLite, especially when participating in large rooms.","breadcrumbs":"Installation » Using PostgreSQL","id":"10","title":"Using PostgreSQL"},"100":{"body":"Synapse 1.74 queues a background update to rebuild the user directory , in order to fix missing or erroneous entries. When this update begins, the user directory will be cleared out and rebuilt from scratch. User directory lookups will be incomplete until the rebuild completes. Admins can monitor the rebuild's progress by using the Background update Admin API .","breadcrumbs":"Upgrading between Synapse Versions » User directory rebuild","id":"100","title":"User directory rebuild"},"1000":{"body":"A file with media ID aabbcccccccccccccccccccc and its 128x96 image/jpeg thumbnail, created by scaling, would be stored at: local_content/aa/bb/cccccccccccccccccccc\nlocal_thumbnails/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale","breadcrumbs":"Internal Documentation » Media Repository » Paths","id":"1000","title":"Paths"},"1001":{"body":"When media from a remote homeserver is requested from Synapse, it is assigned a local filesystem_id, with the same format as locally-generated media IDs, as described above. A record of remote media is stored in the remote_media_cache table, which can be used to map remote MXC URIs (server names and media IDs) to local filesystem_ids.","breadcrumbs":"Internal Documentation » Media Repository » Remote Media","id":"1001","title":"Remote Media"},"1002":{"body":"A file from matrix.org with filesystem_id aabbcccccccccccccccccccc and its 128x96 image/jpeg thumbnail, created by scaling, would be stored at: remote_content/matrix.org/aa/bb/cccccccccccccccccccc\nremote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale Older thumbnails may omit the thumbnailing method: remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg Note that remote_thumbnail/ does not have an s.","breadcrumbs":"Internal Documentation » Media Repository » Paths","id":"1002","title":"Paths"},"1003":{"body":"When generating previews for URLs, Synapse may download and cache various resources, including images. These resources are assigned temporary media IDs of the form yyyy-mm-dd_aaaaaaaaaaaaaaaa, where yyyy-mm-dd is the current date and aaaaaaaaaaaaaaaa is a random sequence of 16 case-sensitive letters. The metadata for these cached resources is stored in the local_media_repository and local_media_repository_url_cache tables. Resources for URL previews are deleted after a few days.","breadcrumbs":"Internal Documentation » Media Repository » URL Previews","id":"1003","title":"URL Previews"},"1004":{"body":"The file with media ID yyyy-mm-dd_aaaaaaaaaaaaaaaa and its 128x96 image/jpeg thumbnail, created by scaling, would be stored at: url_cache/yyyy-mm-dd/aaaaaaaaaaaaaaaa\nurl_cache_thumbnails/yyyy-mm-dd/aaaaaaaaaaaaaaaa/128-96-image-jpeg-scale","breadcrumbs":"Internal Documentation » Media Repository » Paths","id":"1004","title":"Paths"},"1005":{"body":"Synapse maintains room and user statistics in various tables. These can be used for administrative purposes but are also used when generating the public room directory.","breadcrumbs":"Internal Documentation » Room and User Statistics » Room and User Statistics","id":"1005","title":"Room and User Statistics"},"1006":{"body":"","breadcrumbs":"Internal Documentation » Room and User Statistics » Synapse Developer Documentation","id":"1006","title":"Synapse Developer Documentation"},"1007":{"body":"","breadcrumbs":"Internal Documentation » Room and User Statistics » High-Level Concepts","id":"1007","title":"High-Level Concepts"},"1008":{"body":"subject : Something we are tracking stats about – currently a room or user. current row : An entry for a subject in the appropriate current statistics table. Each subject can have only one.","breadcrumbs":"Internal Documentation » Room and User Statistics » Definitions","id":"1008","title":"Definitions"},"1009":{"body":"Stats correspond to the present values. Current rows contain the most up-to-date statistics for a room. Each subject can only have one entry.","breadcrumbs":"Internal Documentation » Room and User Statistics » Overview","id":"1009","title":"Overview"},"101":{"body":"","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.73.0","id":"101","title":"Upgrading to v1.73.0"},"1010":{"body":"Synapse has a number of platform dependencies, including Python, Rust, PostgreSQL and SQLite. This document outlines the policy towards which versions we support, and when we drop support for versions in the future.","breadcrumbs":"Dependency Deprecation Policy » Deprecation Policy for Platform Dependencies","id":"1010","title":"Deprecation Policy for Platform Dependencies"},"1011":{"body":"Synapse follows the upstream support life cycles for Python and PostgreSQL, i.e. when a version reaches End of Life Synapse will withdraw support for that version in future releases. Details on the upstream support life cycles for Python and PostgreSQL are documented at https://endoflife.date/python and https://endoflife.date/postgresql . A Rust compiler is required to build Synapse from source. For any given release the minimum required version may be bumped up to a recent Rust version, and so people building from source should ensure they can fetch recent versions of Rust (e.g. by using rustup ). The oldest supported version of SQLite is the version provided by Debian oldstable .","breadcrumbs":"Dependency Deprecation Policy » Policy","id":"1011","title":"Policy"},"1012":{"body":"It is important for system admins to have a clear understanding of the platform requirements of Synapse and its deprecation policies so that they can effectively plan upgrading their infrastructure ahead of time. This is especially important in contexts where upgrading the infrastructure requires auditing and approval from a security team, or where otherwise upgrading is a long process. By following the upstream support life cycles Synapse can ensure that its dependencies continue to get security patches, while not requiring system admins to constantly update their platform dependencies to the latest versions. For Rust, the situation is a bit different given that a) the Rust foundation does not generally support older Rust versions, and b) the library ecosystem generally bump their minimum support Rust versions frequently. In general, the Synapse team will try to avoid updating the dependency on Rust to the absolute latest version, but introducing a formal policy is hard given the constraints of the ecosystem. On a similar note, SQLite does not generally have a concept of \"supported release\"; bugfixes are published for the latest minor release only. We chose to track Debian's oldstable as this is relatively conservative, predictably updated and is consistent with the .deb packages released by Matrix.org.","breadcrumbs":"Dependency Deprecation Policy » Context","id":"1012","title":"Context"},"1013":{"body":"I've been running my homeserver on a cubietruck at home now for some time and am often replying to statements like \"you need loads of ram to join large rooms\" with \"it works fine for me\". I thought it might be useful to curate a summary of the issues you're likely to run into to help as a scaling-down guide, maybe highlight these for development work or end up as documentation. It seems that once you get up to about 4x1.5GHz arm64 4GiB these issues are no longer a problem. Platform : 2x1GHz armhf 2GiB ram Single-board computers , SSD, postgres.","breadcrumbs":"Running Synapse on a Single-Board Computer » Summary of performance impact of running on resource constrained devices such as SBCs","id":"1013","title":"Summary of performance impact of running on resource constrained devices such as SBCs"},"1014":{"body":"This is the main reason people have a poor matrix experience on resource constrained homeservers. Element web will frequently be saying the server is offline while the python process will be pegged at 100% cpu. This feature is used to tell when other users are active (have a client app in the foreground) and therefore more likely to respond, but requires a lot of network activity to maintain even when nobody is talking in a room. Screenshot_2020-10-01_19-29-46 While synapse does have some performance issues with presence #3971 , the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial #8055 . There is also a client-side config option which disables the UI and idle tracking enable_presence_by_hs_url to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well.","breadcrumbs":"Running Synapse on a Single-Board Computer » Presence","id":"1014","title":"Presence"},"1015":{"body":"Joining a \"large\", federated room will initially fail with the below message in Element web, but waiting a while (10-60mins) and trying again will succeed without any issue. What counts as \"large\" is not message history, user count, connections to homeservers or even a simple count of the state events, it is instead how long the state resolution algorithm takes. However, each of those numbers are reasonable proxies, so we can use them as estimates since user count is one of the few things you see before joining. Screenshot_2020-10-02_17-15-06 This is #1211 and will also hopefully be mitigated by peeking matrix-org/matrix-doc#2753 so at least you don't need to wait for a join to complete before finding out if it's the kind of room you want. Note that you should first disable presence, otherwise it'll just make the situation worse #3120 . There is a lot of database interaction too, so make sure you've migrated your data from the default sqlite to postgresql. Personally, I recommend patience - once the initial join is complete there's rarely any issues with actually interacting with the room, but if you like you can just block \"large\" rooms entirely.","breadcrumbs":"Running Synapse on a Single-Board Computer » Joining","id":"1015","title":"Joining"},"1016":{"body":"Anything that requires modifying the device list #7721 will take a while to propagate, again taking the client \"Offline\" until it's complete. This includes signing in and out, editing the public name and verifying e2ee. The main mitigation I recommend is to keep long-running sessions open e.g. by using Firefox SSB \"Use this site in App mode\" or Chromium PWA \"Install Element\".","breadcrumbs":"Running Synapse on a Single-Board Computer » Sessions","id":"1016","title":"Sessions"},"1017":{"body":"Put the below in a new file at /etc/matrix-synapse/conf.d/sbc.yaml to override the defaults in homeserver.yaml. # Disable presence tracking, which is currently fairly resource intensive\n# More info: https://github.com/matrix-org/synapse/issues/9478\nuse_presence: false # Set a small complexity limit, preventing users from joining large rooms\n# which may be resource-intensive to remain a part of.\n#\n# Note that this will not prevent users from joining smaller rooms that\n# eventually become complex.\nlimit_remote_rooms: enabled: true complexity: 3.0 # Database configuration\ndatabase: # Use postgres for the best performance name: psycopg2 args: user: matrix-synapse # Generate a long, secure password using a password manager password: hunter2 database: matrix-synapse host: localhost Currently the complexity is measured by current_state_events / 500 . You can find join times and your most complex rooms like this: admin@homeserver:~$ zgrep '/client/r0/join/' /var/log/matrix-synapse/homeserver.log* | awk '{print $18, $25}' | sort --human-numeric-sort\n29.922sec/-0.002sec /_matrix/client/r0/join/%23debian-fasttrack%3Apoddery.com\n182.088sec/0.003sec /_matrix/client/r0/join/%23decentralizedweb-general%3Amatrix.org\n911.625sec/-570.847sec /_matrix/client/r0/join/%23synapse%3Amatrix.org admin@homeserver:~$ sudo --user postgres psql matrix-synapse --command 'select canonical_alias, joined_members, current_state_events from room_stats_state natural join room_stats_current where canonical_alias is not null order by current_state_events desc fetch first 5 rows only' canonical_alias | joined_members | current_state_events -------------------------------+----------------+---------------------- #_oftc_#debian:matrix.org | 871 | 52355 #matrix:matrix.org | 6379 | 10684 #irc:matrix.org | 461 | 3751 #decentralizedweb-general:matrix.org | 997 | 1509 #whatsapp:maunium.net | 554 | 854","breadcrumbs":"Running Synapse on a Single-Board Computer » Recommended configuration","id":"1017","title":"Recommended configuration"},"102":{"body":"Synapse v1.69.0 included the deprecation of legacy Prometheus metric names and offered an option to disable them. Synapse v1.71.0 disabled legacy Prometheus metric names by default. This version, v1.73.0, removes those legacy Prometheus metric names entirely. This also means that the enable_legacy_metrics configuration option has been removed; it will no longer be possible to re-enable the legacy metric names. If you use metrics and have not yet updated your Grafana dashboard(s), Prometheus console(s) or alerting rule(s), please consider doing so when upgrading to this version. Note that the included Grafana dashboard was updated in v1.72.0 to correct some metric names which were missed when legacy metrics were disabled by default. See v1.69.0: Deprecation of legacy Prometheus metric names for more context.","breadcrumbs":"Upgrading between Synapse Versions » Legacy Prometheus metric names have now been removed","id":"102","title":"Legacy Prometheus metric names have now been removed"},"103":{"body":"","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.72.0","id":"103","title":"Upgrading to v1.72.0"},"104":{"body":"In line with our deprecation policy , we've dropped support for PostgreSQL 10, as it is no longer supported upstream. This release of Synapse requires PostgreSQL 11+.","breadcrumbs":"Upgrading between Synapse Versions » Dropping support for PostgreSQL 10","id":"104","title":"Dropping support for PostgreSQL 10"},"105":{"body":"","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.71.0","id":"105","title":"Upgrading to v1.71.0"},"106":{"body":"As announced with the release of Synapse 1.69.0 , the deprecated generate_short_term_login_token module method has been removed. Modules relying on it can instead use the create_login_token method.","breadcrumbs":"Upgrading between Synapse Versions » Removal of the generate_short_term_login_token module API method","id":"106","title":"Removal of the generate_short_term_login_token module API method"},"107":{"body":"To align with spec (changed in MSC3905 ), Synapse now only considers local users to be interesting. In other words, the users namespace regex is only be applied against local users of the homeserver. Please note, this probably doesn't affect the expected behavior of your application service, since an interesting local user in a room still means all messages in the room (from local or remote users) will still be considered interesting. And matching a room with the rooms or aliases namespace regex will still consider all events sent in the room to be interesting to the application service. If one of your application service's users regex was intending to match a remote user, this will no longer match as you expect. The behavioral mismatch between matching all local users and some remote users is why the spec was changed/clarified and this caveat is no longer supported.","breadcrumbs":"Upgrading between Synapse Versions » Changes to the events received by application services (interest)","id":"107","title":"Changes to the events received by application services (interest)"},"108":{"body":"Synapse v1.71.0 disables legacy Prometheus metric names by default. For administrators that still rely on them and have not yet had chance to update their uses of the metrics, it's still possible to specify enable_legacy_metrics: true in the configuration to re-enable them temporarily. Synapse v1.73.0 will remove legacy metric names altogether and at that point, it will no longer be possible to re-enable them. If you do not use metrics or you have already updated your Grafana dashboard(s), Prometheus console(s) and alerting rule(s), there is no action needed. See v1.69.0: Deprecation of legacy Prometheus metric names .","breadcrumbs":"Upgrading between Synapse Versions » Legacy Prometheus metric names are now disabled by default","id":"108","title":"Legacy Prometheus metric names are now disabled by default"},"109":{"body":"","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.69.0","id":"109","title":"Upgrading to v1.69.0"},"11":{"body":"The default configuration exposes a single HTTP port on the local interface: http://localhost:8008. It is suitable for local testing, but for any practical use, you will need Synapse's APIs to be served over HTTPS. The recommended way to do so is to set up a reverse proxy on port 8448. You can find documentation on doing so in the reverse proxy documentation . Alternatively, you can configure Synapse to expose an HTTPS port. To do so, you will need to edit homeserver.yaml, as follows: First, under the listeners option, add the configuration for the TLS-enabled listener like so: listeners: - port: 8448 type: http tls: true resources: - names: [client, federation] You will also need to add the options tls_certificate_path and tls_private_key_path. to your configuration file. You will need to manage provisioning of these certificates yourself. You can find more information about these options as well as how to configure synapse in the configuration manual . If you are using your own certificate, be sure to use a .pem file that includes the full certificate chain including any intermediate certificates (for instance, if using certbot, use fullchain.pem as your certificate, not cert.pem). For a more detailed guide to configuring your server for federation, see Federation .","breadcrumbs":"Installation » TLS certificates","id":"11","title":"TLS certificates"},"110":{"body":"Synapse now includes information indicating if a receipt applies to a thread when replicating it to other workers. This is a forwards- and backwards-incompatible change: v1.68 and workers cannot process receipts replicated by v1.69 workers, and vice versa. Once all workers are upgraded to v1.69 (or downgraded to v1.68), receipts replication will resume as normal.","breadcrumbs":"Upgrading between Synapse Versions » Changes to the receipts replication streams","id":"110","title":"Changes to the receipts replication streams"},"111":{"body":"In current versions of Synapse, some Prometheus metrics are emitted under two different names, with one of the names being older but non-compliant with OpenMetrics and Prometheus conventions and one of the names being newer but compliant. Synapse v1.71.0 will turn the old metric names off by default . For administrators that still rely on them and have not had chance to update their uses of the metrics, it's possible to specify enable_legacy_metrics: true in the configuration to re-enable them temporarily. Synapse v1.73.0 will remove legacy metric names altogether and it will no longer be possible to re-enable them. The Grafana dashboard, Prometheus recording rules and Prometheus Consoles included in the contrib directory in the Synapse repository have been updated to no longer rely on the legacy names. These can be used on a current version of Synapse because current versions of Synapse emit both old and new names. You may need to update your alerting rules or any other rules that depend on the names of Prometheus metrics. If you want to test your changes before legacy names are disabled by default, you may specify enable_legacy_metrics: false in your homeserver configuration. A list of affected metrics is available on the Metrics How-to page .","breadcrumbs":"Upgrading between Synapse Versions » Deprecation of legacy Prometheus metric names","id":"111","title":"Deprecation of legacy Prometheus metric names"},"112":{"body":"The following method of the module API has been deprecated, and is scheduled to be remove in v1.71.0: def generate_short_term_login_token( self, user_id: str, duration_in_ms: int = (2 * 60 * 1000), auth_provider_id: str = \"\", auth_provider_session_id: Optional[str] = None,\n) -> str: ... It has been replaced by an asynchronous equivalent: async def create_login_token( self, user_id: str, duration_in_ms: int = (2 * 60 * 1000), auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None,\n) -> str: ... Synapse will log a warning when a module uses the deprecated method, to help administrators find modules using it.","breadcrumbs":"Upgrading between Synapse Versions » Deprecation of the generate_short_term_login_token module API method","id":"112","title":"Deprecation of the generate_short_term_login_token module API method"},"113":{"body":"Two changes announced in the upgrade notes for v1.67.0 have now landed in v1.68.0.","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.68.0","id":"113","title":"Upgrading to v1.68.0"},"114":{"body":"Synapse now requires a SQLite version of 3.27.0 or higher if SQLite is configured as Synapse's database. Installations using Docker images from matrixdotorg , Debian packages from Matrix.org , or a PostgreSQL database are not affected.","breadcrumbs":"Upgrading between Synapse Versions » SQLite version requirement","id":"114","title":"SQLite version requirement"},"115":{"body":"Building from a source checkout of Synapse now requires a recent Rust compiler (currently Rust 1.58.1, but see also the Platform Dependency Policy ). Installations using Docker images from matrixdotorg , Debian packages from Matrix.org , or PyPI wheels via pip install matrix-synapse (on supported platforms and architectures) will not be affected.","breadcrumbs":"Upgrading between Synapse Versions » Rust requirement when building from source.","id":"115","title":"Rust requirement when building from source."},"116":{"body":"","breadcrumbs":"Upgrading between Synapse Versions » Upgrading to v1.67.0","id":"116","title":"Upgrading to v1.67.0"},"117":{"body":"Redis support was added in v1.13.0 with it becoming the recommended method in v1.18.0. It replaced the old direct TCP connections (which was deprecated as of v1.18.0) to the main process. With Redis, rather than all the workers connecting to the main process, all the workers and the main process connect to Redis, which relays replication commands between processes. This can give a significant CPU saving on the main process and is a prerequisite for upcoming performance improvements. To migrate to Redis add the redis config , and remove the TCP replication listener from config of the master and worker_replication_port from worker config. Note that a HTTP listener with a replication resource is still required.","breadcrumbs":"Upgrading between Synapse Versions » Direct TCP replication is no longer supported: migrate to Redis","id":"117","title":"Direct TCP replication is no longer supported: migrate to Redis"},"118":{"body":"The minimum supported version of poetry is now 1.2. This should only affect those installing from a source checkout.","breadcrumbs":"Upgrading between Synapse Versions » Minimum version of Poetry is now v1.2.0","id":"118","title":"Minimum version of Poetry is now v1.2.0"},"119":{"body":"From the next major release (v1.68.0) installing Synapse from a source checkout will require a recent Rust compiler. Those using packages or pip install matrix-synapse will not be affected. The simplest way of installing Rust is via rustup.rs","breadcrumbs":"Upgrading between Synapse Versions » Rust requirement in the next release","id":"119","title":"Rust requirement in the next release"},"12":{"body":"Setting up the client Well-Known URI is optional but if you set it up, it will allow users to enter their full username (e.g. @user: