We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Theme settings
There needs to be some way to change settings in themes themselves. People complain about a lot of nonsensical things that they should fix in their forks and not need to be a concern in master. 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `CTFd/constants/config.py`
Content:
```
1 from CTFd.utils import get_config
2 from CTFd.utils.helpers import markup
3 
4 
5 class _ConfigsWrapper:
6     def __getattr__(self, attr):
7         return get_config(attr)
8 
9     @property
10     def ctf_name(self):
11         return get_config("theme_header", default="CTFd")
12 
13     @property
14     def theme_header(self):
15         return markup(get_config("theme_header", default=""))
16 
17     @property
18     def theme_footer(self):
19         return markup(get_config("theme_footer", default=""))
20 
21 
22 Configs = _ConfigsWrapper()
23
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/CTFd/constants/config.py b/CTFd/constants/config.py
--- a/CTFd/constants/config.py
+++ b/CTFd/constants/config.py
@@ -1,3 +1,5 @@
+import json
+
 from CTFd.utils import get_config
 from CTFd.utils.helpers import markup
 
@@ -18,5 +20,9 @@
     def theme_footer(self):
         return markup(get_config("theme_footer", default=""))
 
+    @property
+    def theme_settings(self):
+        return json.loads(get_config("theme_settings", default="null"))
+
 
 Configs = _ConfigsWrapper()

{"golden_diff": "diff --git a/CTFd/constants/config.py b/CTFd/constants/config.py\n--- a/CTFd/constants/config.py\n+++ b/CTFd/constants/config.py\n@@ -1,3 +1,5 @@\n+import json\n+\n from CTFd.utils import get_config\n from CTFd.utils.helpers import markup\n \n@@ -18,5 +20,9 @@\n     def theme_footer(self):\n         return markup(get_config(\"theme_footer\", default=\"\"))\n \n+    @property\n+    def theme_settings(self):\n+        return json.loads(get_config(\"theme_settings\", default=\"null\"))\n+\n \n Configs = _ConfigsWrapper()\n", "issue": "Theme settings\nThere needs to be some way to change settings in themes themselves. People complain about a lot of nonsensical things that they should fix in their forks and not need to be a concern in master. \n", "before_files": [{"content": "from CTFd.utils import get_config\nfrom CTFd.utils.helpers import markup\n\n\nclass _ConfigsWrapper:\n    def __getattr__(self, attr):\n        return get_config(attr)\n\n    @property\n    def ctf_name(self):\n        return get_config(\"theme_header\", default=\"CTFd\")\n\n    @property\n    def theme_header(self):\n        return markup(get_config(\"theme_header\", default=\"\"))\n\n    @property\n    def theme_footer(self):\n        return markup(get_config(\"theme_footer\", default=\"\"))\n\n\nConfigs = _ConfigsWrapper()\n", "path": "CTFd/constants/config.py"}], "after_files": [{"content": "import json\n\nfrom CTFd.utils import get_config\nfrom CTFd.utils.helpers import markup\n\n\nclass _ConfigsWrapper:\n    def __getattr__(self, attr):\n        return get_config(attr)\n\n    @property\n    def ctf_name(self):\n        return get_config(\"theme_header\", default=\"CTFd\")\n\n    @property\n    def theme_header(self):\n        return markup(get_config(\"theme_header\", default=\"\"))\n\n    @property\n    def theme_footer(self):\n        return markup(get_config(\"theme_footer\", default=\"\"))\n\n    @property\n    def theme_settings(self):\n        return json.loads(get_config(\"theme_settings\", default=\"null\"))\n\n\nConfigs = _ConfigsWrapper()\n", "path": "CTFd/constants/config.py"}]}