Show a patch.

GET /api/1.1/patches/24291/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 24291,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/24291/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/24291/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20250908140803.123272-2-stefan.klug@ideasonboard.com>",
    "date": "2025-09-08T14:07:44",
    "name": "[1/6] documentation: Add doxygen-awesome-css",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "79ffebc37e132e2579a98fda26bf5ab9a2901dc7",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/24291/mbox/",
    "series": [
        {
            "id": 5424,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5424/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5424",
            "date": "2025-09-08T14:07:43",
            "name": "Documentation theming update",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5424/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/24291/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/24291/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3D8ABBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  8 Sep 2025 14:08:33 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 072CB69360;\n\tMon,  8 Sep 2025 16:08:33 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F273A6934E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  8 Sep 2025 16:08:30 +0200 (CEST)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:c241:40fd:9e5d:437c])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 1DF1F10BE; \n\tMon,  8 Sep 2025 16:07:18 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"On+vw/t5\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1757340438;\n\tbh=zCLcZUwoLvtC88qVF/WkwxhsFd8Qq08pzV2kqzDGNtY=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=On+vw/t5Ddyw/5Z+624w/01FBbL1J3SEPF8peRVivG82w8Lz1+hVTHztGf9rEVyRh\n\tC/S7G7iFuAbspXi3yh2iGkhf1UxbPj7BQ4wdqPb9TAvQPCjC/v7J5cwY1HZd8YeCmA\n\tJVi4n9eKH9oLQVLxmUn+7OW3d84Ux7be/EfX9xU8=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH 1/6] documentation: Add doxygen-awesome-css",
        "Date": "Mon,  8 Sep 2025 16:07:44 +0200",
        "Message-ID": "<20250908140803.123272-2-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.48.1",
        "In-Reply-To": "<20250908140803.123272-1-stefan.klug@ideasonboard.com>",
        "References": "<20250908140803.123272-1-stefan.klug@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "quoted-printable",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Add the doxygen-awesome files to the libcamera repository to improve\nthe styling of the doxygen documentation. These are from commmit\n9760c3001413 (\"[readme] Add example website DuMux doc (#178)\") of\nhttps://github.com/jothepro/doxygen-awesome-css .\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n---\n .../doxygen-awesome-darkmode-toggle.js        |  157 +\n .../doxygen-awesome-fragment-copy-button.js   |   85 +\n .../doxygen-awesome-interactive-toc.js        |   91 +\n .../doxygen-awesome-paragraph-link.js         |   51 +\n ...n-awesome-sidebar-only-darkmode-toggle.css |   40 +\n .../doxygen-awesome-sidebar-only.css          |  116 +\n .../doxygen-awesome-tabs.js                   |   90 +\n .../doxygen-awesome-css/doxygen-awesome.css   | 2683 +++++++++++++++++\n 8 files changed, 3313 insertions(+)\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-interactive-toc.js\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-paragraph-link.js\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only.css\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome-tabs.js\n create mode 100644 Documentation/doxygen-awesome-css/doxygen-awesome.css",
    "diff": "diff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js b/Documentation/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js\nnew file mode 100644\nindex 000000000000..40fe2d38e090\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js\n@@ -0,0 +1,157 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2021 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+class DoxygenAwesomeDarkModeToggle extends HTMLElement {\n+    // SVG icons from https://fonts.google.com/icons\n+    // Licensed under the Apache 2.0 license:\n+    // https://www.apache.org/licenses/LICENSE-2.0.html\n+    static lightModeIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#FCBF00\"><rect fill=\"none\" height=\"24\" width=\"24\"/><circle cx=\"12\" cy=\"12\" opacity=\".3\" r=\"3\"/><path d=\"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"/></svg>`\n+    static darkModeIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#FE9700\"><rect fill=\"none\" height=\"24\" width=\"24\"/><path d=\"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27 C17.45,17.19,14.93,19,12,19c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z\" opacity=\".3\"/><path d=\"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"/></svg>`\n+    static title = \"Toggle Light/Dark Mode\"\n+\n+    static prefersLightModeInDarkModeKey = \"prefers-light-mode-in-dark-mode\"\n+    static prefersDarkModeInLightModeKey = \"prefers-dark-mode-in-light-mode\"\n+\n+    static _staticConstructor = function() {\n+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference)\n+        // Update the color scheme when the browsers preference changes\n+        // without user interaction on the website.\n+        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n+            DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()\n+        })\n+        // Update the color scheme when the tab is made visible again.\n+        // It is possible that the appearance was changed in another tab \n+        // while this tab was in the background.\n+        document.addEventListener(\"visibilitychange\", visibilityState => {\n+            if (document.visibilityState === 'visible') {\n+                DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()\n+            }\n+        });\n+    }()\n+\n+    static init() {\n+        $(function() {\n+            $(document).ready(function() {\n+                const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')\n+                toggleButton.title = DoxygenAwesomeDarkModeToggle.title\n+                toggleButton.updateIcon()\n+\n+                window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n+                    toggleButton.updateIcon()\n+                })\n+                document.addEventListener(\"visibilitychange\", visibilityState => {\n+                    if (document.visibilityState === 'visible') {\n+                        toggleButton.updateIcon()\n+                    }\n+                });\n+\n+                $(document).ready(function(){\n+                    document.getElementById(\"MSearchBox\").parentNode.appendChild(toggleButton)\n+                })\n+                $(window).resize(function(){\n+                    document.getElementById(\"MSearchBox\").parentNode.appendChild(toggleButton)\n+                })\n+            })\n+        })\n+    }\n+\n+    constructor() {\n+        super();\n+        this.onclick=this.toggleDarkMode\n+    }\n+\n+    /**\n+     * @returns `true` for dark-mode, `false` for light-mode system preference\n+     */\n+    static get systemPreference() {\n+        return window.matchMedia('(prefers-color-scheme: dark)').matches\n+    }\n+\n+    /**\n+     * @returns `true` for dark-mode, `false` for light-mode user preference\n+     */\n+    static get userPreference() {\n+        return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || \n+        (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))\n+    }\n+\n+    static set userPreference(userPreference) {\n+        DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference\n+        if(!userPreference) {\n+            if(DoxygenAwesomeDarkModeToggle.systemPreference) {\n+                localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true)\n+            } else {\n+                localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)\n+            }\n+        } else {\n+            if(!DoxygenAwesomeDarkModeToggle.systemPreference) {\n+                localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true)\n+            } else {\n+                localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)\n+            }\n+        }\n+        DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged()\n+    }\n+\n+    static enableDarkMode(enable) {\n+        if(enable) {\n+            DoxygenAwesomeDarkModeToggle.darkModeEnabled = true\n+            document.documentElement.classList.add(\"dark-mode\")\n+            document.documentElement.classList.remove(\"light-mode\")\n+        } else {\n+            DoxygenAwesomeDarkModeToggle.darkModeEnabled = false\n+            document.documentElement.classList.remove(\"dark-mode\")\n+            document.documentElement.classList.add(\"light-mode\")\n+        }\n+    }\n+\n+    static onSystemPreferenceChanged() {\n+        DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference\n+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)\n+    }\n+\n+    static onUserPreferenceChanged() {\n+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)\n+    }\n+\n+    toggleDarkMode() {\n+        DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference\n+        this.updateIcon()\n+    }\n+\n+    updateIcon() {\n+        if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) {\n+            this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon\n+        } else {\n+            this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon\n+        }\n+    }\n+}\n+\n+customElements.define(\"doxygen-awesome-dark-mode-toggle\", DoxygenAwesomeDarkModeToggle);\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js b/Documentation/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js\nnew file mode 100644\nindex 000000000000..86c16fd93a71\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js\n@@ -0,0 +1,85 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2022 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+class DoxygenAwesomeFragmentCopyButton extends HTMLElement {\n+    constructor() {\n+        super();\n+        this.onclick=this.copyContent\n+    }\n+    static title = \"Copy to clipboard\"\n+    static copyIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"/></svg>`\n+    static successIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"/></svg>`\n+    static successDuration = 980\n+    static init() {\n+        $(function() {\n+            $(document).ready(function() {\n+                if(navigator.clipboard) {\n+                    const fragments = document.getElementsByClassName(\"fragment\")\n+                    for(const fragment of fragments) {\n+                        const fragmentWrapper = document.createElement(\"div\")\n+                        fragmentWrapper.className = \"doxygen-awesome-fragment-wrapper\"\n+                        const fragmentCopyButton = document.createElement(\"doxygen-awesome-fragment-copy-button\")\n+                        fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon\n+                        fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title\n+                \n+                        fragment.parentNode.replaceChild(fragmentWrapper, fragment)\n+                        fragmentWrapper.appendChild(fragment)\n+                        fragmentWrapper.appendChild(fragmentCopyButton)\n+            \n+                    }\n+                }\n+            })\n+        })\n+    }\n+\n+\n+    copyContent() {\n+        const content = this.previousSibling.cloneNode(true)\n+        // filter out line number from file listings\n+        content.querySelectorAll(\".lineno, .ttc\").forEach((node) => {\n+            node.remove()\n+        })\n+        let textContent = content.textContent\n+        // remove trailing newlines that appear in file listings\n+        let numberOfTrailingNewlines = 0\n+        while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\\n') {\n+            numberOfTrailingNewlines++;\n+        }\n+        textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines)\n+        navigator.clipboard.writeText(textContent);\n+        this.classList.add(\"success\")\n+        this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon\n+        window.setTimeout(() => {\n+            this.classList.remove(\"success\")\n+            this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon\n+        }, DoxygenAwesomeFragmentCopyButton.successDuration);\n+    }\n+}\n+\n+customElements.define(\"doxygen-awesome-fragment-copy-button\", DoxygenAwesomeFragmentCopyButton)\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-interactive-toc.js b/Documentation/doxygen-awesome-css/doxygen-awesome-interactive-toc.js\nnew file mode 100644\nindex 000000000000..f3c3e7706824\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-interactive-toc.js\n@@ -0,0 +1,91 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2022 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+class DoxygenAwesomeInteractiveToc {\n+    static topOffset = 38\n+    static hideMobileMenu = true\n+    static headers = []\n+\n+    static init() {\n+        window.addEventListener(\"load\", () => {\n+            let toc = document.querySelector(\".contents > .toc\")\n+            if(toc) {\n+                toc.classList.add(\"interactive\")\n+                if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) {\n+                    toc.classList.add(\"open\")\n+                }\n+                document.querySelector(\".contents > .toc > h3\")?.addEventListener(\"click\", () => {\n+                    if(toc.classList.contains(\"open\")) {\n+                        toc.classList.remove(\"open\")\n+                    } else {\n+                        toc.classList.add(\"open\")\n+                    }\n+                })\n+\n+                document.querySelectorAll(\".contents > .toc > ul a\").forEach((node) => {\n+                    let id = node.getAttribute(\"href\").substring(1)\n+                    DoxygenAwesomeInteractiveToc.headers.push({\n+                        node: node,\n+                        headerNode: document.getElementById(id)\n+                    })\n+\n+                    document.getElementById(\"doc-content\")?.addEventListener(\"scroll\",this.throttle(DoxygenAwesomeInteractiveToc.update, 100))\n+                })\n+                DoxygenAwesomeInteractiveToc.update()\n+            }\n+        })\n+    }\n+\n+    static update() {\n+        let active = DoxygenAwesomeInteractiveToc.headers[0]?.node\n+        DoxygenAwesomeInteractiveToc.headers.forEach((header) => {\n+            let position = header.headerNode.getBoundingClientRect().top\n+            header.node.classList.remove(\"active\")\n+            header.node.classList.remove(\"aboveActive\")\n+            if(position < DoxygenAwesomeInteractiveToc.topOffset) {\n+                active = header.node\n+                active?.classList.add(\"aboveActive\")\n+            }\n+        })\n+        active?.classList.add(\"active\")\n+        active?.classList.remove(\"aboveActive\")\n+    }\n+\n+    static throttle(func, delay) {\n+        let lastCall = 0;\n+        return function (...args) {\n+            const now = new Date().getTime();\n+            if (now - lastCall < delay) {\n+                return;\n+            }\n+            lastCall = now;\n+            return setTimeout(() => {func(...args)}, delay);\n+        };\n+    }\n+}\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-paragraph-link.js b/Documentation/doxygen-awesome-css/doxygen-awesome-paragraph-link.js\nnew file mode 100644\nindex 000000000000..e53d132cea5a\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-paragraph-link.js\n@@ -0,0 +1,51 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2022 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+class DoxygenAwesomeParagraphLink {\n+    // Icon from https://fonts.google.com/icons\n+    // Licensed under the Apache 2.0 license:\n+    // https://www.apache.org/licenses/LICENSE-2.0.html\n+    static icon = `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 0 24 24\" width=\"20px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8z\"/></svg>`\n+    static title = \"Permanent Link\"\n+    static init() {\n+        $(function() {\n+            $(document).ready(function() {\n+                document.querySelectorAll(\".contents a.anchor[id], .contents .groupheader > a[id]\").forEach((node) => {\n+                    let anchorlink = document.createElement(\"a\")\n+                    anchorlink.setAttribute(\"href\", `#${node.getAttribute(\"id\")}`)\n+                    anchorlink.setAttribute(\"title\", DoxygenAwesomeParagraphLink.title)\n+                    anchorlink.classList.add(\"anchorlink\")\n+                    node.classList.add(\"anchor\")\n+                    anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon\n+                    node.parentElement.appendChild(anchorlink)\n+                })\n+            })\n+        })\n+    }\n+}\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css b/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css\nnew file mode 100644\nindex 000000000000..d207446e0be8\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css\n@@ -0,0 +1,40 @@\n+\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2021 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+@media screen and (min-width: 768px) {\n+\n+    #MSearchBox {\n+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px);\n+    }\n+\n+    #MSearchField {\n+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height));\n+    }\n+}\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only.css b/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only.css\nnew file mode 100644\nindex 000000000000..853f6d6926e2\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-sidebar-only.css\n@@ -0,0 +1,116 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2021 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+ */\n+\n+html {\n+    /* side nav width. MUST be = `TREEVIEW_WIDTH`.\n+     * Make sure it is wide enough to contain the page title (logo + title + version)\n+     */\n+    --side-nav-fixed-width: 335px;\n+    --menu-display: none;\n+\n+    --top-height: 120px;\n+    --toc-sticky-top: -25px;\n+    --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px);\n+}\n+\n+#projectname {\n+    white-space: nowrap;\n+}\n+\n+\n+@media screen and (min-width: 768px) {\n+    html {\n+        --searchbar-background: var(--page-background-color);\n+    }\n+\n+    #side-nav {\n+        min-width: var(--side-nav-fixed-width);\n+        max-width: var(--side-nav-fixed-width);\n+        top: var(--top-height);\n+        overflow: visible;\n+    }\n+\n+    #nav-tree, #side-nav {\n+        height: calc(100vh - var(--top-height)) !important;\n+    }\n+\n+    #nav-tree {\n+        padding: 0;\n+    }\n+\n+    #top {\n+        display: block;\n+        border-bottom: none;\n+        height: var(--top-height);\n+        margin-bottom: calc(0px - var(--top-height));\n+        max-width: var(--side-nav-fixed-width);\n+        overflow: hidden;\n+        background: var(--side-nav-background);\n+    }\n+    #main-nav {\n+        float: left;\n+        padding-right: 0;\n+    }\n+\n+    .ui-resizable-handle {\n+        cursor: default;\n+        width: 1px !important;\n+        background: var(--separator-color);\n+        box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color);\n+    }\n+\n+    #nav-path {\n+        position: fixed;\n+        right: 0;\n+        left: var(--side-nav-fixed-width);\n+        bottom: 0;\n+        width: auto;\n+    }\n+\n+    #doc-content {\n+        height: calc(100vh - 31px) !important;\n+        padding-bottom: calc(3 * var(--spacing-large));\n+        padding-top: calc(var(--top-height) - 80px);\n+        box-sizing: border-box;\n+        margin-left: var(--side-nav-fixed-width) !important;\n+    }\n+\n+    #MSearchBox {\n+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)));\n+    }\n+\n+    #MSearchField {\n+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px);\n+    }\n+\n+    #MSearchResultsWindow {\n+        left: var(--spacing-medium) !important;\n+        right: auto;\n+    }\n+}\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome-tabs.js b/Documentation/doxygen-awesome-css/doxygen-awesome-tabs.js\nnew file mode 100644\nindex 000000000000..06dfd3d66f4e\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome-tabs.js\n@@ -0,0 +1,90 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+class DoxygenAwesomeTabs {\n+\n+    static init() {\n+        window.addEventListener(\"load\", () => {\n+            document.querySelectorAll(\".tabbed:not(:empty)\").forEach((tabbed, tabbedIndex) => {\n+                let tabLinkList = []           \n+                tabbed.querySelectorAll(\":scope > ul > li\").forEach((tab, tabIndex) => {\n+                    tab.id = \"tab_\" + tabbedIndex + \"_\" + tabIndex\n+                    let header = tab.querySelector(\".tab-title\")\n+                    let tabLink = document.createElement(\"button\")\n+                    tabLink.classList.add(\"tab-button\")\n+                    tabLink.appendChild(header)\n+                    header.title = header.textContent\n+                    tabLink.addEventListener(\"click\", () => {\n+                        tabbed.querySelectorAll(\":scope > ul > li\").forEach((tab) => {\n+                            tab.classList.remove(\"selected\")\n+                        })\n+                        tabLinkList.forEach((tabLink) => {\n+                            tabLink.classList.remove(\"active\")\n+                        })\n+                        tab.classList.add(\"selected\")\n+                        tabLink.classList.add(\"active\")\n+                    })\n+                    tabLinkList.push(tabLink)\n+                    if(tabIndex == 0) {\n+                        tab.classList.add(\"selected\")\n+                        tabLink.classList.add(\"active\")\n+                    }\n+                })\n+                let tabsOverview = document.createElement(\"div\")\n+                tabsOverview.classList.add(\"tabs-overview\")\n+                let tabsOverviewContainer = document.createElement(\"div\")\n+                tabsOverviewContainer.classList.add(\"tabs-overview-container\")\n+                tabLinkList.forEach((tabLink) => {\n+                    tabsOverview.appendChild(tabLink)\n+                })\n+                tabsOverviewContainer.appendChild(tabsOverview)\n+                tabbed.before(tabsOverviewContainer)\n+\n+                function resize() {\n+                    let maxTabHeight = 0\n+                    tabbed.querySelectorAll(\":scope > ul > li\").forEach((tab, tabIndex) => {\n+                        let visibility = tab.style.display\n+                        tab.style.display = \"block\"\n+                        maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight)\n+                        tab.style.display = visibility\n+                    })\n+                    tabbed.style.height = `${maxTabHeight + 10}px`\n+                }\n+\n+                resize()\n+                new ResizeObserver(resize).observe(tabbed)\n+            })\n+        })\n+        \n+    }\n+\n+    static resize(tabbed) {\n+        \n+    }\n+}\n\\ No newline at end of file\ndiff --git a/Documentation/doxygen-awesome-css/doxygen-awesome.css b/Documentation/doxygen-awesome-css/doxygen-awesome.css\nnew file mode 100644\nindex 000000000000..af68d5fea7a1\n--- /dev/null\n+++ b/Documentation/doxygen-awesome-css/doxygen-awesome.css\n@@ -0,0 +1,2683 @@\n+/**\n+\n+Doxygen Awesome\n+https://github.com/jothepro/doxygen-awesome-css\n+\n+MIT License\n+\n+Copyright (c) 2021 - 2023 jothepro\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in all\n+copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+SOFTWARE.\n+\n+*/\n+\n+html {\n+    /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */\n+    --primary-color: #1779c4;\n+    --primary-dark-color: #335c80;\n+    --primary-light-color: #70b1e9;\n+    --on-primary-color: #ffffff;\n+\n+    /* page base colors */\n+    --page-background-color: #ffffff;\n+    --page-foreground-color: #2f4153;\n+    --page-secondary-foreground-color: #6f7e8e;\n+\n+    /* color for all separators on the website: hr, borders, ... */\n+    --separator-color: #dedede;\n+\n+    /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */\n+    --border-radius-large: 8px;\n+    --border-radius-small: 4px;\n+    --border-radius-medium: 6px;\n+\n+    /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */\n+    --spacing-small: 5px;\n+    --spacing-medium: 10px;\n+    --spacing-large: 16px;\n+\n+    /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */\n+    --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075);\n+\n+    --odd-color: rgba(0,0,0,.028);\n+\n+    /* font-families. will affect all text on the website\n+     * font-family: the normal font for text, headlines, menus\n+     * font-family-monospace: used for preformatted text in memtitle, code, fragments\n+     */\n+    --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n+    --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;\n+\n+    /* font sizes */\n+    --page-font-size: 15.6px;\n+    --navigation-font-size: 14.4px;\n+    --toc-font-size: 13.4px;\n+    --code-font-size: 14px; /* affects code, fragment */\n+    --title-font-size: 22px;\n+\n+    /* content text properties. These only affect the page content, not the navigation or any other ui elements */\n+    --content-line-height: 27px;\n+    /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/\n+    --content-maxwidth: 1050px;\n+    --table-line-height: 24px;\n+    --toc-sticky-top: var(--spacing-medium);\n+    --toc-width: 200px;\n+    --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px);\n+\n+    /* colors for various content boxes: @warning, @note, @deprecated @bug */\n+    --warning-color: #faf3d8;\n+    --warning-color-dark: #f3a600;\n+    --warning-color-darker: #5f4204;\n+    --note-color: #e4f3ff;\n+    --note-color-dark: #1879C4;\n+    --note-color-darker: #274a5c;\n+    --todo-color: #e4dafd;\n+    --todo-color-dark: #5b2bdd;\n+    --todo-color-darker: #2a0d72;\n+    --deprecated-color: #ecf0f3;\n+    --deprecated-color-dark: #5b6269;\n+    --deprecated-color-darker: #43454a;\n+    --bug-color: #f8d1cc;\n+    --bug-color-dark: #b61825;\n+    --bug-color-darker: #75070f;\n+    --invariant-color: #d8f1e3;\n+    --invariant-color-dark: #44b86f;\n+    --invariant-color-darker: #265532;\n+\n+    /* blockquote colors */\n+    --blockquote-background: #f8f9fa;\n+    --blockquote-foreground: #636568;\n+\n+    /* table colors */\n+    --tablehead-background: #f1f1f1;\n+    --tablehead-foreground: var(--page-foreground-color);\n+\n+    /* menu-display: block | none\n+     * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible.\n+     * `GENERATE_TREEVIEW` MUST be enabled!\n+     */\n+    --menu-display: block;\n+\n+    --menu-focus-foreground: var(--on-primary-color);\n+    --menu-focus-background: var(--primary-color);\n+    --menu-selected-background: rgba(0,0,0,.05);\n+\n+\n+    --header-background: var(--page-background-color);\n+    --header-foreground: var(--page-foreground-color);\n+\n+    /* searchbar colors */\n+    --searchbar-background: var(--side-nav-background);\n+    --searchbar-foreground: var(--page-foreground-color);\n+\n+    /* searchbar size\n+     * (`searchbar-width` is only applied on screens >= 768px.\n+     * on smaller screens the searchbar will always fill the entire screen width) */\n+    --searchbar-height: 33px;\n+    --searchbar-width: 210px;\n+    --searchbar-border-radius: var(--searchbar-height);\n+\n+    /* code block colors */\n+    --code-background: #f5f5f5;\n+    --code-foreground: var(--page-foreground-color);\n+\n+    /* fragment colors */\n+    --fragment-background: #F8F9FA;\n+    --fragment-foreground: #37474F;\n+    --fragment-keyword: #bb6bb2;\n+    --fragment-keywordtype: #8258b3;\n+    --fragment-keywordflow: #d67c3b;\n+    --fragment-token: #438a59;\n+    --fragment-comment: #969696;\n+    --fragment-link: #5383d6;\n+    --fragment-preprocessor: #46aaa5;\n+    --fragment-linenumber-color: #797979;\n+    --fragment-linenumber-background: #f4f4f5;\n+    --fragment-linenumber-border: #e3e5e7;\n+    --fragment-lineheight: 20px;\n+\n+    /* sidebar navigation (treeview) colors */\n+    --side-nav-background: #fbfbfb;\n+    --side-nav-foreground: var(--page-foreground-color);\n+    --side-nav-arrow-opacity: 0;\n+    --side-nav-arrow-hover-opacity: 0.9;\n+\n+    --toc-background: var(--side-nav-background);\n+    --toc-foreground: var(--side-nav-foreground);\n+\n+    /* height of an item in any tree / collapsible table */\n+    --tree-item-height: 30px;\n+\n+    --memname-font-size: var(--code-font-size);\n+    --memtitle-font-size: 18px;\n+\n+    --webkit-scrollbar-size: 7px;\n+    --webkit-scrollbar-padding: 4px;\n+    --webkit-scrollbar-color: var(--separator-color);\n+\n+    --animation-duration: .12s\n+}\n+\n+@media screen and (max-width: 767px) {\n+    html {\n+        --page-font-size: 16px;\n+        --navigation-font-size: 16px;\n+        --toc-font-size: 15px;\n+        --code-font-size: 15px; /* affects code, fragment */\n+        --title-font-size: 22px;\n+    }\n+}\n+\n+@media (prefers-color-scheme: dark) {\n+    html:not(.light-mode) {\n+        color-scheme: dark;\n+\n+        --primary-color: #1982d2;\n+        --primary-dark-color: #86a9c4;\n+        --primary-light-color: #4779ac;\n+\n+        --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35);\n+\n+        --odd-color: rgba(100,100,100,.06);\n+\n+        --menu-selected-background: rgba(0,0,0,.4);\n+\n+        --page-background-color: #1C1D1F;\n+        --page-foreground-color: #d2dbde;\n+        --page-secondary-foreground-color: #859399;\n+        --separator-color: #38393b;\n+        --side-nav-background: #252628;\n+\n+        --code-background: #2a2c2f;\n+\n+        --tablehead-background: #2a2c2f;\n+    \n+        --blockquote-background: #222325;\n+        --blockquote-foreground: #7e8c92;\n+\n+        --warning-color: #3b2e04;\n+        --warning-color-dark: #f1b602;\n+        --warning-color-darker: #ceb670;\n+        --note-color: #163750;\n+        --note-color-dark: #1982D2;\n+        --note-color-darker: #dcf0fa;\n+        --todo-color: #2a2536;\n+        --todo-color-dark: #7661b3;\n+        --todo-color-darker: #ae9ed6;\n+        --deprecated-color: #2e323b;\n+        --deprecated-color-dark: #738396;\n+        --deprecated-color-darker: #abb0bd;\n+        --bug-color: #2e1917;\n+        --bug-color-dark: #ad2617;\n+        --bug-color-darker: #f5b1aa;\n+        --invariant-color: #303a35;\n+        --invariant-color-dark: #76ce96;\n+        --invariant-color-darker: #cceed5;\n+\n+        --fragment-background: #282c34;\n+        --fragment-foreground: #dbe4eb;\n+        --fragment-keyword: #cc99cd;\n+        --fragment-keywordtype: #ab99cd;\n+        --fragment-keywordflow: #e08000;\n+        --fragment-token: #7ec699;\n+        --fragment-comment: #999999;\n+        --fragment-link: #98c0e3;\n+        --fragment-preprocessor: #65cabe;\n+        --fragment-linenumber-color: #cccccc;\n+        --fragment-linenumber-background: #35393c;\n+        --fragment-linenumber-border: #1f1f1f;\n+    }\n+}\n+\n+/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */\n+html.dark-mode {\n+    color-scheme: dark;\n+\n+    --primary-color: #1982d2;\n+    --primary-dark-color: #86a9c4;\n+    --primary-light-color: #4779ac;\n+\n+    --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30);\n+\n+    --odd-color: rgba(100,100,100,.06);\n+\n+    --menu-selected-background: rgba(0,0,0,.4);\n+\n+    --page-background-color: #1C1D1F;\n+    --page-foreground-color: #d2dbde;\n+    --page-secondary-foreground-color: #859399;\n+    --separator-color: #38393b;\n+    --side-nav-background: #252628;\n+\n+    --code-background: #2a2c2f;\n+\n+    --tablehead-background: #2a2c2f;\n+\n+    --blockquote-background: #222325;\n+    --blockquote-foreground: #7e8c92;\n+\n+    --warning-color: #3b2e04;\n+    --warning-color-dark: #f1b602;\n+    --warning-color-darker: #ceb670;\n+    --note-color: #163750;\n+    --note-color-dark: #1982D2;\n+    --note-color-darker: #dcf0fa;\n+    --todo-color: #2a2536;\n+    --todo-color-dark: #7661b3;\n+    --todo-color-darker: #ae9ed6;\n+    --deprecated-color: #2e323b;\n+    --deprecated-color-dark: #738396;\n+    --deprecated-color-darker: #abb0bd;\n+    --bug-color: #2e1917;\n+    --bug-color-dark: #ad2617;\n+    --bug-color-darker: #f5b1aa;\n+    --invariant-color: #303a35;\n+    --invariant-color-dark: #76ce96;\n+    --invariant-color-darker: #cceed5;\n+\n+    --fragment-background: #282c34;\n+    --fragment-foreground: #dbe4eb;\n+    --fragment-keyword: #cc99cd;\n+    --fragment-keywordtype: #ab99cd;\n+    --fragment-keywordflow: #e08000;\n+    --fragment-token: #7ec699;\n+    --fragment-comment: #999999;\n+    --fragment-link: #98c0e3;\n+    --fragment-preprocessor: #65cabe;\n+    --fragment-linenumber-color: #cccccc;\n+    --fragment-linenumber-background: #35393c;\n+    --fragment-linenumber-border: #1f1f1f;\n+}\n+\n+body {\n+    color: var(--page-foreground-color);\n+    background-color: var(--page-background-color);\n+    font-size: var(--page-font-size);\n+}\n+\n+body, table, div, p, dl, #nav-tree .label, .title,\n+.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname,\n+.SelectItem, #MSearchField, .navpath li.navelem a,\n+.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 {\n+    font-family: var(--font-family);\n+}\n+\n+h1, h2, h3, h4, h5 {\n+    margin-top: 1em;\n+    font-weight: 600;\n+    line-height: initial;\n+}\n+\n+p, div, table, dl, p.reference, p.definition {\n+    font-size: var(--page-font-size);\n+}\n+\n+p.reference, p.definition {\n+    color: var(--page-secondary-foreground-color);\n+}\n+\n+a:link, a:visited, a:hover, a:focus, a:active {\n+    color: var(--primary-color) !important;\n+    font-weight: 500;\n+    background: none;\n+}\n+\n+a.anchor {\n+    scroll-margin-top: var(--spacing-large);\n+    display: block;\n+}\n+\n+/*\n+ Title and top navigation\n+ */\n+\n+#top {\n+    background: var(--header-background);\n+    border-bottom: 1px solid var(--separator-color);\n+}\n+\n+@media screen and (min-width: 768px) {\n+    #top {\n+        display: flex;\n+        flex-wrap: wrap;\n+        justify-content: space-between;\n+        align-items: center;\n+    }\n+}\n+\n+#main-nav {\n+    flex-grow: 5;\n+    padding: var(--spacing-small) var(--spacing-medium);\n+}\n+\n+#titlearea {\n+    width: auto;\n+    padding: var(--spacing-medium) var(--spacing-large);\n+    background: none;\n+    color: var(--header-foreground);\n+    border-bottom: none;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    #titlearea {\n+        padding-bottom: var(--spacing-small);\n+    }\n+}\n+\n+#titlearea table tbody tr {\n+    height: auto !important;\n+}\n+\n+#projectname {\n+    font-size: var(--title-font-size);\n+    font-weight: 600;\n+}\n+\n+#projectnumber {\n+    font-family: inherit;\n+    font-size: 60%;\n+}\n+\n+#projectbrief {\n+    font-family: inherit;\n+    font-size: 80%;\n+}\n+\n+#projectlogo {\n+    vertical-align: middle;\n+}\n+\n+#projectlogo img {\n+    max-height: calc(var(--title-font-size) * 2);\n+    margin-right: var(--spacing-small);\n+}\n+\n+.sm-dox, .tabs, .tabs2, .tabs3 {\n+    background: none;\n+    padding: 0;\n+}\n+\n+.tabs, .tabs2, .tabs3 {\n+    border-bottom: 1px solid var(--separator-color);\n+    margin-bottom: -1px;\n+}\n+\n+.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after {\n+    background: var(--page-secondary-foreground-color);\n+}\n+\n+@media screen and (max-width: 767px) {\n+    .sm-dox a span.sub-arrow {\n+        background: var(--code-background);\n+    }\n+\n+    #main-menu a.has-submenu span.sub-arrow {\n+        color: var(--page-secondary-foreground-color);\n+        border-radius: var(--border-radius-medium);\n+    }\n+\n+    #main-menu a.has-submenu:hover span.sub-arrow {\n+        color: var(--page-foreground-color);\n+    }\n+}\n+\n+@media screen and (min-width: 768px) {\n+    .sm-dox li, .tablist li {\n+        display: var(--menu-display);\n+    }\n+\n+    .sm-dox a span.sub-arrow {\n+        border-color: var(--header-foreground) transparent transparent transparent;\n+    }\n+\n+    .sm-dox a:hover span.sub-arrow {\n+        border-color: var(--menu-focus-foreground) transparent transparent transparent;\n+    }\n+\n+    .sm-dox ul a span.sub-arrow {\n+        border-color: transparent transparent transparent var(--page-foreground-color);\n+    }\n+\n+    .sm-dox ul a:hover span.sub-arrow {\n+        border-color: transparent transparent transparent var(--menu-focus-foreground);\n+    }\n+}\n+\n+.sm-dox ul {\n+    background: var(--page-background-color);\n+    box-shadow: var(--box-shadow);\n+    border: 1px solid var(--separator-color);\n+    border-radius: var(--border-radius-medium) !important;\n+    padding: var(--spacing-small);\n+    animation: ease-out 150ms slideInMenu;\n+}\n+\n+@keyframes slideInMenu {\n+    from {\n+        opacity: 0;\n+        transform: translate(0px, -2px);\n+    }\n+\n+    to {\n+        opacity: 1;\n+        transform: translate(0px, 0px);\n+    }\n+}\n+\n+.sm-dox ul a {\n+    color: var(--page-foreground-color) !important;\n+    background: var(--page-background-color);\n+    font-size: var(--navigation-font-size);\n+}\n+\n+.sm-dox>li>ul:after {\n+    border-bottom-color: var(--page-background-color) !important;\n+}\n+\n+.sm-dox>li>ul:before {\n+    border-bottom-color: var(--separator-color) !important;\n+}\n+\n+.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus {\n+    font-size: var(--navigation-font-size) !important;\n+    color: var(--menu-focus-foreground) !important;\n+    text-shadow: none;\n+    background-color: var(--menu-focus-background);\n+    border-radius: var(--border-radius-small) !important;\n+}\n+\n+.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a {\n+    text-shadow: none;\n+    background: transparent;\n+    background-image: none !important;\n+    color: var(--header-foreground) !important;\n+    font-weight: normal;\n+    font-size: var(--navigation-font-size);\n+    border-radius: var(--border-radius-small) !important;\n+}\n+\n+.sm-dox a:focus {\n+    outline: auto;\n+}\n+\n+.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover {\n+    text-shadow: none;\n+    font-weight: normal;\n+    background: var(--menu-focus-background);\n+    color: var(--menu-focus-foreground) !important;\n+    border-radius: var(--border-radius-small) !important;\n+    font-size: var(--navigation-font-size);\n+}\n+\n+.tablist li.current {\n+    border-radius: var(--border-radius-small);\n+    background: var(--menu-selected-background);\n+}\n+\n+.tablist li {\n+    margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small);\n+}\n+\n+.tablist a {\n+    padding: 0 var(--spacing-large);\n+}\n+\n+\n+/*\n+ Search box\n+ */\n+\n+#MSearchBox {\n+    height: var(--searchbar-height);\n+    background: var(--searchbar-background);\n+    border-radius: var(--searchbar-border-radius);\n+    border: 1px solid var(--separator-color);\n+    overflow: hidden;\n+    width: var(--searchbar-width);\n+    position: relative;\n+    box-shadow: none;\n+    display: block;\n+    margin-top: 0;\n+}\n+\n+/* until Doxygen 1.9.4 */\n+.left img#MSearchSelect {\n+    left: 0;\n+    user-select: none;\n+    padding-left: 8px;\n+}\n+\n+/* Doxygen 1.9.5 */\n+.left span#MSearchSelect {\n+    left: 0;\n+    user-select: none;\n+    margin-left: 8px;\n+    padding: 0;\n+}\n+\n+.left #MSearchSelect[src$=\".png\"] {\n+    padding-left: 0\n+}\n+\n+.SelectionMark {\n+    user-select: none;\n+}\n+\n+.tabs .left #MSearchSelect {\n+    padding-left: 0;\n+}\n+\n+.tabs #MSearchBox {\n+    position: absolute;\n+    right: var(--spacing-medium);\n+}\n+\n+@media screen and (max-width: 767px) {\n+    .tabs #MSearchBox {\n+        position: relative;\n+        right: 0;\n+        margin-left: var(--spacing-medium);\n+        margin-top: 0;\n+    }\n+}\n+\n+#MSearchSelectWindow, #MSearchResultsWindow {\n+    z-index: 9999;\n+}\n+\n+#MSearchBox.MSearchBoxActive {\n+    border-color: var(--primary-color);\n+    box-shadow: inset 0 0 0 1px var(--primary-color);\n+}\n+\n+#main-menu > li:last-child {\n+    margin-right: 0;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    #main-menu > li:last-child {\n+        height: 50px;\n+    }\n+}\n+\n+#MSearchField {\n+    font-size: var(--navigation-font-size);\n+    height: calc(var(--searchbar-height) - 2px);\n+    background: transparent;\n+    width: calc(var(--searchbar-width) - 64px);\n+}\n+\n+.MSearchBoxActive #MSearchField {\n+    color: var(--searchbar-foreground);\n+}\n+\n+#MSearchSelect {\n+    top: calc(calc(var(--searchbar-height) / 2) - 11px);\n+}\n+\n+#MSearchBox span.left, #MSearchBox span.right {\n+    background: none;\n+    background-image: none;\n+}\n+\n+#MSearchBox span.right {\n+    padding-top: calc(calc(var(--searchbar-height) / 2) - 12px);\n+    position: absolute;\n+    right: var(--spacing-small);\n+}\n+\n+.tabs #MSearchBox span.right {\n+    top: calc(calc(var(--searchbar-height) / 2) - 12px);\n+}\n+\n+@keyframes slideInSearchResults {\n+    from {\n+        opacity: 0;\n+        transform: translate(0, 15px);\n+    }\n+\n+    to {\n+        opacity: 1;\n+        transform: translate(0, 20px);\n+    }\n+}\n+\n+#MSearchResultsWindow {\n+    left: auto !important;\n+    right: var(--spacing-medium);\n+    border-radius: var(--border-radius-large);\n+    border: 1px solid var(--separator-color);\n+    transform: translate(0, 20px);\n+    box-shadow: var(--box-shadow);\n+    animation: ease-out 280ms slideInSearchResults;\n+    background: var(--page-background-color);\n+}\n+\n+iframe#MSearchResults {\n+    margin: 4px;\n+}\n+\n+iframe {\n+    color-scheme: normal;\n+}\n+\n+@media (prefers-color-scheme: dark) {\n+    html:not(.light-mode) iframe#MSearchResults {\n+        filter: invert() hue-rotate(180deg);\n+    }\n+}\n+\n+html.dark-mode iframe#MSearchResults {\n+    filter: invert() hue-rotate(180deg);\n+}\n+\n+#MSearchResults .SRPage {\n+    background-color: transparent;\n+}\n+\n+#MSearchResults .SRPage .SREntry {\n+    font-size: 10pt;\n+    padding: var(--spacing-small) var(--spacing-medium);\n+}\n+\n+#MSearchSelectWindow {\n+    border: 1px solid var(--separator-color);\n+    border-radius: var(--border-radius-medium);\n+    box-shadow: var(--box-shadow);\n+    background: var(--page-background-color);\n+    padding-top: var(--spacing-small);\n+    padding-bottom: var(--spacing-small);\n+}\n+\n+#MSearchSelectWindow a.SelectItem {\n+    font-size: var(--navigation-font-size);\n+    line-height: var(--content-line-height);\n+    margin: 0 var(--spacing-small);\n+    border-radius: var(--border-radius-small);\n+    color: var(--page-foreground-color) !important;\n+    font-weight: normal;\n+}\n+\n+#MSearchSelectWindow a.SelectItem:hover {\n+    background: var(--menu-focus-background);\n+    color: var(--menu-focus-foreground) !important;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    #MSearchBox {\n+        margin-top: var(--spacing-medium);\n+        margin-bottom: var(--spacing-medium);\n+        width: calc(100vw - 30px);\n+    }\n+\n+    #main-menu > li:last-child {\n+        float: none !important;\n+    }\n+\n+    #MSearchField {\n+        width: calc(100vw - 110px);\n+    }\n+\n+    @keyframes slideInSearchResultsMobile {\n+        from {\n+            opacity: 0;\n+            transform: translate(0, 15px);\n+        }\n+\n+        to {\n+            opacity: 1;\n+            transform: translate(0, 20px);\n+        }\n+    }\n+\n+    #MSearchResultsWindow {\n+        left: var(--spacing-medium) !important;\n+        right: var(--spacing-medium);\n+        overflow: auto;\n+        transform: translate(0, 20px);\n+        animation: ease-out 280ms slideInSearchResultsMobile;\n+        width: auto !important;\n+    }\n+\n+    /*\n+     * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2\n+     */\n+    label.main-menu-btn ~ #searchBoxPos1 {\n+        top: 3px !important;\n+        right: 6px !important;\n+        left: 45px;\n+        display: flex;\n+    }\n+\n+    label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox {\n+        margin-top: 0;\n+        margin-bottom: 0;\n+        flex-grow: 2;\n+        float: left;\n+    }\n+}\n+\n+/*\n+ Tree view\n+ */\n+\n+#side-nav {\n+    padding: 0 !important;\n+    background: var(--side-nav-background);\n+    min-width: 8px;\n+    max-width: 50vw;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    #side-nav {\n+        display: none;\n+    }\n+\n+    #doc-content {\n+        margin-left: 0 !important;\n+    }\n+}\n+\n+#nav-tree {\n+    background: transparent;\n+    margin-right: 1px;\n+}\n+\n+#nav-tree .label {\n+    font-size: var(--navigation-font-size);\n+}\n+\n+#nav-tree .item {\n+    height: var(--tree-item-height);\n+    line-height: var(--tree-item-height);\n+    overflow: hidden;\n+    text-overflow: ellipsis;\n+}\n+\n+#nav-tree .item > a:focus {\n+    outline: none;\n+}\n+\n+#nav-sync {\n+    bottom: 12px;\n+    right: 12px;\n+    top: auto !important;\n+    user-select: none;\n+}\n+\n+#nav-tree .selected {\n+    text-shadow: none;\n+    background-image: none;\n+    background-color: transparent;\n+    position: relative;\n+    color: var(--primary-color) !important;\n+    font-weight: 500;\n+}\n+\n+#nav-tree .selected::after {\n+    content: \"\";\n+    position: absolute;\n+    top: 1px;\n+    bottom: 1px;\n+    left: 0;\n+    width: 4px;\n+    border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0;\n+    background: var(--primary-color);\n+}\n+\n+\n+#nav-tree a {\n+    color: var(--side-nav-foreground) !important;\n+    font-weight: normal;\n+}\n+\n+#nav-tree a:focus {\n+    outline-style: auto;\n+}\n+\n+#nav-tree .arrow {\n+    opacity: var(--side-nav-arrow-opacity);\n+    background: none;\n+}\n+\n+.arrow {\n+    color: inherit;\n+    cursor: pointer;\n+    font-size: 45%;\n+    vertical-align: middle;\n+    margin-right: 2px;\n+    font-family: serif;\n+    height: auto;\n+    text-align: right;\n+}\n+\n+#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow {\n+    opacity: var(--side-nav-arrow-hover-opacity);\n+}\n+\n+#nav-tree .selected a {\n+    color: var(--primary-color) !important;\n+    font-weight: bolder;\n+    font-weight: 600;\n+}\n+\n+.ui-resizable-e {\n+    width: 4px;\n+    background: transparent;\n+    box-shadow: inset -1px 0 0 0 var(--separator-color);\n+}\n+\n+/*\n+ Contents\n+ */\n+\n+div.header {\n+    border-bottom: 1px solid var(--separator-color);\n+    background-color: var(--page-background-color);\n+    background-image: none;\n+}\n+\n+@media screen and (min-width: 1000px) {\n+    #doc-content > div > div.contents,\n+    .PageDoc > div.contents {\n+        display: flex;\n+        flex-direction: row-reverse;\n+        flex-wrap: nowrap;\n+        align-items: flex-start;\n+    }\n+    \n+    div.contents .textblock {\n+        min-width: 200px;\n+        flex-grow: 1;\n+    }\n+}\n+\n+div.contents, div.header .title, div.header .summary {\n+    max-width: var(--content-maxwidth);\n+}\n+\n+div.contents, div.header .title  {\n+    line-height: initial;\n+    margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto;\n+}\n+\n+div.header .summary {\n+    margin: var(--spacing-medium) auto 0 auto;\n+}\n+\n+div.headertitle {\n+    padding: 0;\n+}\n+\n+div.header .title {\n+    font-weight: 600;\n+    font-size: 225%;\n+    padding: var(--spacing-medium) var(--spacing-large);\n+    word-break: break-word;\n+}\n+\n+div.header .summary {\n+    width: auto;\n+    display: block;\n+    float: none;\n+    padding: 0 var(--spacing-large);\n+}\n+\n+td.memSeparator {\n+    border-color: var(--separator-color);\n+}\n+\n+span.mlabel {\n+    background: var(--primary-color);\n+    color: var(--on-primary-color);\n+    border: none;\n+    padding: 4px 9px;\n+    border-radius: 12px;\n+    margin-right: var(--spacing-medium);\n+}\n+\n+span.mlabel:last-of-type {\n+    margin-right: 2px;\n+}\n+\n+div.contents {\n+    padding: 0 var(--spacing-large);\n+}\n+\n+div.contents p, div.contents li {\n+    line-height: var(--content-line-height);\n+}\n+\n+div.contents div.dyncontent {\n+    margin: var(--spacing-medium) 0;\n+}\n+\n+@media (prefers-color-scheme: dark) {\n+    html:not(.light-mode) div.contents div.dyncontent img,\n+    html:not(.light-mode) div.contents center img,\n+    html:not(.light-mode) div.contents > table img,\n+    html:not(.light-mode) div.contents div.dyncontent iframe,\n+    html:not(.light-mode) div.contents center iframe,\n+    html:not(.light-mode) div.contents table iframe,\n+    html:not(.light-mode) div.contents .dotgraph iframe {\n+        filter: brightness(89%) hue-rotate(180deg) invert();\n+    }\n+}\n+\n+html.dark-mode div.contents div.dyncontent img,\n+html.dark-mode div.contents center img,\n+html.dark-mode div.contents > table img,\n+html.dark-mode div.contents div.dyncontent iframe,\n+html.dark-mode div.contents center iframe,\n+html.dark-mode div.contents table iframe,\n+html.dark-mode div.contents .dotgraph iframe\n+ {\n+    filter: brightness(89%) hue-rotate(180deg) invert();\n+}\n+\n+h2.groupheader {\n+    border-bottom: 0px;\n+    color: var(--page-foreground-color);\n+    box-shadow: \n+        100px 0 var(--page-background-color), \n+        -100px 0 var(--page-background-color),\n+        100px 0.75px var(--separator-color),\n+        -100px 0.75px var(--separator-color),\n+        500px 0 var(--page-background-color), \n+        -500px 0 var(--page-background-color),\n+        500px 0.75px var(--separator-color),\n+        -500px 0.75px var(--separator-color),\n+        900px 0 var(--page-background-color), \n+        -900px 0 var(--page-background-color),\n+        900px 0.75px var(--separator-color),\n+        -900px 0.75px var(--separator-color),\n+        1400px 0 var(--page-background-color),\n+        -1400px 0 var(--page-background-color), \n+        1400px 0.75px var(--separator-color),\n+        -1400px 0.75px var(--separator-color),\n+        1900px 0 var(--page-background-color),\n+        -1900px 0 var(--page-background-color),\n+        1900px 0.75px var(--separator-color),\n+        -1900px 0.75px var(--separator-color);\n+}\n+\n+blockquote {\n+    margin: 0 var(--spacing-medium) 0 var(--spacing-medium);\n+    padding: var(--spacing-small) var(--spacing-large);\n+    background: var(--blockquote-background);\n+    color: var(--blockquote-foreground);\n+    border-left: 0;\n+    overflow: visible;\n+    border-radius: var(--border-radius-medium);\n+    overflow: visible;\n+    position: relative;\n+}\n+\n+blockquote::before, blockquote::after {\n+    font-weight: bold;\n+    font-family: serif;\n+    font-size: 360%;\n+    opacity: .15;\n+    position: absolute;\n+}\n+\n+blockquote::before {\n+    content: \"“\";\n+    left: -10px;\n+    top: 4px;\n+}\n+\n+blockquote::after {\n+    content: \"”\";\n+    right: -8px;\n+    bottom: -25px;\n+}\n+\n+blockquote p {\n+    margin: var(--spacing-small) 0 var(--spacing-medium) 0;\n+}\n+.paramname, .paramname em {\n+    font-weight: 600;\n+    color: var(--primary-dark-color);\n+}\n+\n+.paramname > code {\n+    border: 0;\n+}\n+\n+table.params .paramname {\n+    font-weight: 600;\n+    font-family: var(--font-family-monospace);\n+    font-size: var(--code-font-size);\n+    padding-right: var(--spacing-small);\n+    line-height: var(--table-line-height);\n+}\n+\n+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n+    text-shadow: 0 0 15px var(--primary-light-color);\n+}\n+\n+.alphachar a {\n+    color: var(--page-foreground-color);\n+}\n+\n+.dotgraph {\n+    max-width: 100%;\n+    overflow-x: scroll;\n+}\n+\n+.dotgraph .caption {\n+    position: sticky;\n+    left: 0;\n+}\n+\n+/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */\n+.interactive_dotgraph .dotgraph iframe {\n+    max-width: 100%;\n+}\n+\n+/*\n+ Table of Contents\n+ */\n+\n+div.contents .toc {\n+    max-height: var(--toc-max-height);\n+    min-width: var(--toc-width);\n+    border: 0;\n+    border-left: 1px solid var(--separator-color);\n+    border-radius: 0;\n+    background-color: var(--page-background-color);\n+    box-shadow: none;\n+    position: sticky;\n+    top: var(--toc-sticky-top);\n+    padding: 0 var(--spacing-large);\n+    margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large);\n+}\n+\n+div.toc h3 {\n+    color: var(--toc-foreground);\n+    font-size: var(--navigation-font-size);\n+    margin: var(--spacing-large) 0 var(--spacing-medium) 0;\n+}\n+\n+div.toc li {\n+    padding: 0;\n+    background: none;\n+    line-height: var(--toc-font-size);\n+    margin: var(--toc-font-size) 0 0 0;\n+}\n+\n+div.toc li::before {\n+    display: none;\n+}\n+\n+div.toc ul {\n+    margin-top: 0\n+}\n+\n+div.toc li a {\n+    font-size: var(--toc-font-size);\n+    color: var(--page-foreground-color) !important;\n+    text-decoration: none;\n+}\n+\n+div.toc li a:hover, div.toc li a.active {\n+    color: var(--primary-color) !important;\n+}\n+\n+div.toc li a.aboveActive {\n+    color: var(--page-secondary-foreground-color) !important;\n+}\n+\n+\n+@media screen and (max-width: 999px) {\n+    div.contents .toc {\n+        max-height: 45vh;\n+        float: none;\n+        width: auto;\n+        margin: 0 0 var(--spacing-medium) 0;\n+        position: relative;\n+        top: 0;\n+        position: relative;\n+        border: 1px solid var(--separator-color);\n+        border-radius: var(--border-radius-medium);\n+        background-color: var(--toc-background);\n+        box-shadow: var(--box-shadow);\n+    }\n+\n+    div.contents .toc.interactive {\n+        max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large));\n+        overflow: hidden;\n+    }\n+\n+    div.contents .toc > h3 {\n+        -webkit-tap-highlight-color: transparent;\n+        cursor: pointer;\n+        position: sticky;\n+        top: 0;\n+        background-color: var(--toc-background);\n+        margin: 0;\n+        padding: var(--spacing-large) 0;\n+        display: block;\n+    }\n+\n+    div.contents .toc.interactive > h3::before {\n+        content: \"\";\n+        width: 0; \n+        height: 0; \n+        border-left: 4px solid transparent;\n+        border-right: 4px solid transparent;\n+        border-top: 5px solid var(--primary-color);\n+        display: inline-block;\n+        margin-right: var(--spacing-small);\n+        margin-bottom: calc(var(--navigation-font-size) / 4);\n+        transform: rotate(-90deg);\n+        transition: transform var(--animation-duration) ease-out;\n+    }\n+\n+    div.contents .toc.interactive.open > h3::before {\n+        transform: rotate(0deg);\n+    }\n+\n+    div.contents .toc.interactive.open {\n+        max-height: 45vh;\n+        overflow: auto;\n+        transition: max-height 0.2s ease-in-out;\n+    }\n+\n+    div.contents .toc a, div.contents .toc a.active {\n+        color: var(--primary-color) !important;\n+    }\n+\n+    div.contents .toc a:hover {\n+        text-decoration: underline;\n+    }\n+}\n+\n+/*\n+ Code & Fragments\n+ */\n+\n+code, div.fragment, pre.fragment {\n+    border-radius: var(--border-radius-small);\n+    border: 1px solid var(--separator-color);\n+    overflow: hidden;\n+}\n+\n+code {\n+    display: inline;\n+    background: var(--code-background);\n+    color: var(--code-foreground);\n+    padding: 2px 6px;\n+}\n+\n+div.fragment, pre.fragment {\n+    margin: var(--spacing-medium) 0;\n+    padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large);\n+    background: var(--fragment-background);\n+    color: var(--fragment-foreground);\n+    overflow-x: auto;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    div.fragment, pre.fragment {\n+        border-top-right-radius: 0;\n+        border-bottom-right-radius: 0;\n+        border-right: 0;\n+    }\n+\n+    .contents > div.fragment,\n+    .textblock > div.fragment,\n+    .textblock > pre.fragment,\n+    .textblock > .tabbed > ul > li > div.fragment,\n+    .textblock > .tabbed > ul > li > pre.fragment,\n+    .contents > .doxygen-awesome-fragment-wrapper > div.fragment,\n+    .textblock > .doxygen-awesome-fragment-wrapper > div.fragment,\n+    .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment,\n+    .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment,\n+    .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment {\n+        margin: var(--spacing-medium) calc(0px - var(--spacing-large));\n+        border-radius: 0;\n+        border-left: 0;\n+    }\n+\n+    .textblock li > .fragment,\n+    .textblock li > .doxygen-awesome-fragment-wrapper > .fragment {\n+        margin: var(--spacing-medium) calc(0px - var(--spacing-large));\n+    }\n+\n+    .memdoc li > .fragment,\n+    .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment {\n+        margin: var(--spacing-medium) calc(0px - var(--spacing-medium));\n+    }\n+\n+    .textblock ul, .memdoc ul {\n+        overflow: initial;\n+    }\n+\n+    .memdoc > div.fragment,\n+    .memdoc > pre.fragment,\n+    dl dd > div.fragment,\n+    dl dd pre.fragment,\n+    .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment,\n+    .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment,\n+    dl dd > .doxygen-awesome-fragment-wrapper > div.fragment,\n+    dl dd .doxygen-awesome-fragment-wrapper > pre.fragment {\n+        margin: var(--spacing-medium) calc(0px - var(--spacing-medium));\n+        border-radius: 0;\n+        border-left: 0;\n+    }\n+}\n+\n+code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span {\n+    font-family: var(--font-family-monospace);\n+    font-size: var(--code-font-size) !important;\n+}\n+\n+div.line:after {\n+    margin-right: var(--spacing-medium);\n+}\n+\n+div.fragment .line, pre.fragment {\n+    white-space: pre;\n+    word-wrap: initial;\n+    line-height: var(--fragment-lineheight);\n+}\n+\n+div.fragment span.keyword {\n+    color: var(--fragment-keyword);\n+}\n+\n+div.fragment span.keywordtype {\n+    color: var(--fragment-keywordtype);\n+}\n+\n+div.fragment span.keywordflow {\n+    color: var(--fragment-keywordflow);\n+}\n+\n+div.fragment span.stringliteral {\n+    color: var(--fragment-token)\n+}\n+\n+div.fragment span.comment {\n+    color: var(--fragment-comment);\n+}\n+\n+div.fragment a.code {\n+    color: var(--fragment-link) !important;\n+}\n+\n+div.fragment span.preprocessor {\n+    color: var(--fragment-preprocessor);\n+}\n+\n+div.fragment span.lineno {\n+    display: inline-block;\n+    width: 27px;\n+    border-right: none;\n+    background: var(--fragment-linenumber-background);\n+    color: var(--fragment-linenumber-color);\n+}\n+\n+div.fragment span.lineno a {\n+    background: none;\n+    color: var(--fragment-link) !important;\n+}\n+\n+div.fragment > .line:first-child .lineno {\n+    box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border);\n+    background-color: var(--fragment-linenumber-background) !important;\n+}\n+\n+div.line {\n+    border-radius: var(--border-radius-small);\n+}\n+\n+div.line.glow {\n+    background-color: var(--primary-light-color);\n+    box-shadow: none;\n+}\n+\n+/*\n+ dl warning, attention, note, deprecated, bug, ...\n+ */\n+\n+dl.bug dt a, dl.deprecated dt a, dl.todo dt a {\n+    font-weight: bold !important;\n+}\n+\n+dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark {\n+    padding: var(--spacing-medium);\n+    margin: var(--spacing-medium) 0;\n+    color: var(--page-background-color);\n+    overflow: hidden;\n+    margin-left: 0;\n+    border-radius: var(--border-radius-small);\n+}\n+\n+dl.section dd {\n+    margin-bottom: 2px;\n+}\n+\n+dl.warning, dl.attention {\n+    background: var(--warning-color);\n+    border-left: 8px solid var(--warning-color-dark);\n+    color: var(--warning-color-darker);\n+}\n+\n+dl.warning dt, dl.attention dt {\n+    color: var(--warning-color-dark);\n+}\n+\n+dl.note, dl.remark {\n+    background: var(--note-color);\n+    border-left: 8px solid var(--note-color-dark);\n+    color: var(--note-color-darker);\n+}\n+\n+dl.note dt, dl.remark dt {\n+    color: var(--note-color-dark);\n+}\n+\n+dl.todo {\n+    background: var(--todo-color);\n+    border-left: 8px solid var(--todo-color-dark);\n+    color: var(--todo-color-darker);\n+}\n+\n+dl.todo dt a {\n+    color: var(--todo-color-dark) !important;\n+}\n+\n+dl.bug dt a {\n+    color: var(--todo-color-dark) !important;\n+}\n+\n+dl.bug {\n+    background: var(--bug-color);\n+    border-left: 8px solid var(--bug-color-dark);\n+    color: var(--bug-color-darker);\n+}\n+\n+dl.bug dt a {\n+    color: var(--bug-color-dark) !important;\n+}\n+\n+dl.deprecated {\n+    background: var(--deprecated-color);\n+    border-left: 8px solid var(--deprecated-color-dark);\n+    color: var(--deprecated-color-darker);\n+}\n+\n+dl.deprecated dt a {\n+    color: var(--deprecated-color-dark) !important;\n+}\n+\n+dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd {\n+    margin-inline-start: 0px;\n+}\n+\n+dl.invariant, dl.pre, dl.post {\n+    background: var(--invariant-color);\n+    border-left: 8px solid var(--invariant-color-dark);\n+    color: var(--invariant-color-darker);\n+}\n+\n+dl.invariant dt, dl.pre dt, dl.post dt {\n+    color: var(--invariant-color-dark);\n+}\n+\n+/*\n+ memitem\n+ */\n+\n+div.memdoc, div.memproto, h2.memtitle {\n+    box-shadow: none;\n+    background-image: none;\n+    border: none;\n+}\n+\n+div.memdoc {\n+    padding: 0 var(--spacing-medium);\n+    background: var(--page-background-color);\n+}\n+\n+h2.memtitle, div.memitem {\n+    border: 1px solid var(--separator-color);\n+    box-shadow: var(--box-shadow);\n+}\n+\n+h2.memtitle {\n+    box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow);\n+}\n+\n+div.memitem {\n+    transition: none;\n+}\n+\n+div.memproto, h2.memtitle {\n+    background: var(--fragment-background);\n+}\n+\n+h2.memtitle {\n+    font-weight: 500;\n+    font-size: var(--memtitle-font-size);\n+    font-family: var(--font-family-monospace);\n+    border-bottom: none;\n+    border-top-left-radius: var(--border-radius-medium);\n+    border-top-right-radius: var(--border-radius-medium);\n+    word-break: break-all;\n+    position: relative;\n+}\n+\n+h2.memtitle:after {\n+    content: \"\";\n+    display: block;\n+    background: var(--fragment-background);\n+    height: var(--spacing-medium);\n+    bottom: calc(0px - var(--spacing-medium));\n+    left: 0;\n+    right: -14px;\n+    position: absolute;\n+    border-top-right-radius: var(--border-radius-medium);\n+}\n+\n+h2.memtitle > span.permalink {\n+    font-size: inherit;\n+}\n+\n+h2.memtitle > span.permalink > a {\n+    text-decoration: none;\n+    padding-left: 3px;\n+    margin-right: -4px;\n+    user-select: none;\n+    display: inline-block;\n+    margin-top: -6px;\n+}\n+\n+h2.memtitle > span.permalink > a:hover {\n+    color: var(--primary-dark-color) !important;\n+}\n+\n+a:target + h2.memtitle, a:target + h2.memtitle + div.memitem {\n+    border-color: var(--primary-light-color);\n+}\n+\n+div.memitem {\n+    border-top-right-radius: var(--border-radius-medium);\n+    border-bottom-right-radius: var(--border-radius-medium);\n+    border-bottom-left-radius: var(--border-radius-medium);\n+    overflow: hidden;\n+    display: block !important;\n+}\n+\n+div.memdoc {\n+    border-radius: 0;\n+}\n+\n+div.memproto {\n+    border-radius: 0 var(--border-radius-small) 0 0;\n+    overflow: auto;\n+    border-bottom: 1px solid var(--separator-color);\n+    padding: var(--spacing-medium);\n+    margin-bottom: -1px;\n+}\n+\n+div.memtitle {\n+    border-top-right-radius: var(--border-radius-medium);\n+    border-top-left-radius: var(--border-radius-medium);\n+}\n+\n+div.memproto table.memname {\n+    font-family: var(--font-family-monospace);\n+    color: var(--page-foreground-color);\n+    font-size: var(--memname-font-size);\n+    text-shadow: none;\n+}\n+\n+div.memproto div.memtemplate {\n+    font-family: var(--font-family-monospace);\n+    color: var(--primary-dark-color);\n+    font-size: var(--memname-font-size);\n+    margin-left: 2px;\n+    text-shadow: none;\n+}\n+\n+table.mlabels, table.mlabels > tbody {\n+    display: block;\n+}\n+\n+td.mlabels-left {\n+    width: auto;\n+}\n+\n+td.mlabels-right {\n+    margin-top: 3px;\n+    position: sticky;\n+    left: 0;\n+}\n+\n+table.mlabels > tbody > tr:first-child {\n+    display: flex;\n+    justify-content: space-between;\n+    flex-wrap: wrap;\n+}\n+\n+.memname, .memitem span.mlabels {\n+    margin: 0\n+}\n+\n+/*\n+ reflist\n+ */\n+\n+dl.reflist {\n+    box-shadow: var(--box-shadow);\n+    border-radius: var(--border-radius-medium);\n+    border: 1px solid var(--separator-color);\n+    overflow: hidden;\n+    padding: 0;\n+}\n+\n+\n+dl.reflist dt, dl.reflist dd {\n+    box-shadow: none;\n+    text-shadow: none;\n+    background-image: none;\n+    border: none;\n+    padding: 12px;\n+}\n+\n+\n+dl.reflist dt {\n+    font-weight: 500;\n+    border-radius: 0;\n+    background: var(--code-background);\n+    border-bottom: 1px solid var(--separator-color);\n+    color: var(--page-foreground-color)\n+}\n+\n+\n+dl.reflist dd {\n+    background: none;\n+}\n+\n+/*\n+ Table\n+ */\n+\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname),\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody {\n+    display: inline-block;\n+    max-width: 100%;\n+}\n+\n+.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) {\n+    margin-left: calc(0px - var(--spacing-large));\n+    margin-right: calc(0px - var(--spacing-large));\n+    max-width: calc(100% + 2 * var(--spacing-large));\n+}\n+\n+table.fieldtable,\n+table.markdownTable tbody,\n+table.doxtable tbody {\n+    border: none;\n+    margin: var(--spacing-medium) 0;\n+    box-shadow: 0 0 0 1px var(--separator-color);\n+    border-radius: var(--border-radius-small);\n+}\n+\n+table.markdownTable, table.doxtable, table.fieldtable {\n+    padding: 1px;\n+}\n+\n+table.doxtable caption {\n+    display: block;\n+}\n+\n+table.fieldtable {\n+    border-collapse: collapse;\n+    width: 100%;\n+}\n+\n+th.markdownTableHeadLeft,\n+th.markdownTableHeadRight,\n+th.markdownTableHeadCenter,\n+th.markdownTableHeadNone,\n+table.doxtable th {\n+    background: var(--tablehead-background);\n+    color: var(--tablehead-foreground);\n+    font-weight: 600;\n+    font-size: var(--page-font-size);\n+}\n+\n+th.markdownTableHeadLeft:first-child,\n+th.markdownTableHeadRight:first-child,\n+th.markdownTableHeadCenter:first-child,\n+th.markdownTableHeadNone:first-child,\n+table.doxtable tr th:first-child {\n+    border-top-left-radius: var(--border-radius-small);\n+}\n+\n+th.markdownTableHeadLeft:last-child,\n+th.markdownTableHeadRight:last-child,\n+th.markdownTableHeadCenter:last-child,\n+th.markdownTableHeadNone:last-child,\n+table.doxtable tr th:last-child {\n+    border-top-right-radius: var(--border-radius-small);\n+}\n+\n+table.markdownTable td,\n+table.markdownTable th,\n+table.fieldtable td,\n+table.fieldtable th,\n+table.doxtable td,\n+table.doxtable th {\n+    border: 1px solid var(--separator-color);\n+    padding: var(--spacing-small) var(--spacing-medium);\n+}\n+\n+table.markdownTable td:last-child,\n+table.markdownTable th:last-child,\n+table.fieldtable td:last-child,\n+table.fieldtable th:last-child,\n+table.doxtable td:last-child,\n+table.doxtable th:last-child {\n+    border-right: none;\n+}\n+\n+table.markdownTable td:first-child,\n+table.markdownTable th:first-child,\n+table.fieldtable td:first-child,\n+table.fieldtable th:first-child,\n+table.doxtable td:first-child,\n+table.doxtable th:first-child {\n+    border-left: none;\n+}\n+\n+table.markdownTable tr:first-child td,\n+table.markdownTable tr:first-child th,\n+table.fieldtable tr:first-child td,\n+table.fieldtable tr:first-child th,\n+table.doxtable tr:first-child td,\n+table.doxtable tr:first-child th {\n+    border-top: none;\n+}\n+\n+table.markdownTable tr:last-child td,\n+table.markdownTable tr:last-child th,\n+table.fieldtable tr:last-child td,\n+table.fieldtable tr:last-child th,\n+table.doxtable tr:last-child td,\n+table.doxtable tr:last-child th {\n+    border-bottom: none;\n+}\n+\n+table.markdownTable tr, table.doxtable tr {\n+    border-bottom: 1px solid var(--separator-color);\n+}\n+\n+table.markdownTable tr:last-child, table.doxtable tr:last-child {\n+    border-bottom: none;\n+}\n+\n+.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) {\n+    display: block;\n+}\n+\n+.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody {\n+    display: table;\n+    width: 100%;\n+}\n+\n+table.fieldtable th {\n+    font-size: var(--page-font-size);\n+    font-weight: 600;\n+    background-image: none;\n+    background-color: var(--tablehead-background);\n+    color: var(--tablehead-foreground);\n+}\n+\n+table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th {\n+    border-bottom: 1px solid var(--separator-color);\n+    border-right: 1px solid var(--separator-color);\n+}\n+\n+table.fieldtable tr:last-child td:first-child {\n+    border-bottom-left-radius: var(--border-radius-small);\n+}\n+\n+table.fieldtable tr:last-child td:last-child {\n+    border-bottom-right-radius: var(--border-radius-small);\n+}\n+\n+.memberdecls td.glow, .fieldtable tr.glow {\n+    background-color: var(--primary-light-color);\n+    box-shadow: none;\n+}\n+\n+table.memberdecls {\n+    display: block;\n+    -webkit-tap-highlight-color: transparent;\n+}\n+\n+table.memberdecls tr[class^='memitem'] {\n+    font-family: var(--font-family-monospace);\n+    font-size: var(--code-font-size);\n+}\n+\n+table.memberdecls tr[class^='memitem'] .memTemplParams {\n+    font-family: var(--font-family-monospace);\n+    font-size: var(--code-font-size);\n+    color: var(--primary-dark-color);\n+    white-space: normal;\n+}\n+\n+table.memberdecls .memItemLeft,\n+table.memberdecls .memItemRight,\n+table.memberdecls .memTemplItemLeft,\n+table.memberdecls .memTemplItemRight,\n+table.memberdecls .memTemplParams {\n+    transition: none;\n+    padding-top: var(--spacing-small);\n+    padding-bottom: var(--spacing-small);\n+    border-top: 1px solid var(--separator-color);\n+    border-bottom: 1px solid var(--separator-color);\n+    background-color: var(--fragment-background);\n+}\n+\n+table.memberdecls .memTemplItemLeft,\n+table.memberdecls .memTemplItemRight {\n+    padding-top: 2px;\n+}\n+\n+table.memberdecls .memTemplParams {\n+    border-bottom: 0;\n+    border-left: 1px solid var(--separator-color);\n+    border-right: 1px solid var(--separator-color);\n+    border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;\n+    padding-bottom: var(--spacing-small);\n+}\n+\n+table.memberdecls .memTemplItemLeft {\n+    border-radius: 0 0 0 var(--border-radius-small);\n+    border-left: 1px solid var(--separator-color);\n+    border-top: 0;\n+}\n+\n+table.memberdecls .memTemplItemRight {\n+    border-radius: 0 0 var(--border-radius-small) 0;\n+    border-right: 1px solid var(--separator-color);\n+    padding-left: 0;\n+    border-top: 0;\n+}\n+\n+table.memberdecls .memItemLeft {\n+    border-radius: var(--border-radius-small) 0 0 var(--border-radius-small);\n+    border-left: 1px solid var(--separator-color);\n+    padding-left: var(--spacing-medium);\n+    padding-right: 0;\n+}\n+\n+table.memberdecls .memItemRight  {\n+    border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0;\n+    border-right: 1px solid var(--separator-color);\n+    padding-right: var(--spacing-medium);\n+    padding-left: 0;\n+\n+}\n+\n+table.memberdecls .mdescLeft, table.memberdecls .mdescRight {\n+    background: none;\n+    color: var(--page-foreground-color);\n+    padding: var(--spacing-small) 0;\n+}\n+\n+table.memberdecls .memItemLeft,\n+table.memberdecls .memTemplItemLeft {\n+    padding-right: var(--spacing-medium);\n+}\n+\n+table.memberdecls .memSeparator {\n+    background: var(--page-background-color);\n+    height: var(--spacing-large);\n+    border: 0;\n+    transition: none;\n+}\n+\n+table.memberdecls .groupheader {\n+    margin-bottom: var(--spacing-large);\n+}\n+\n+table.memberdecls .inherit_header td {\n+    padding: 0 0 var(--spacing-medium) 0;\n+    text-indent: -12px;\n+    color: var(--page-secondary-foreground-color);\n+}\n+\n+table.memberdecls img[src=\"closed.png\"],\n+table.memberdecls img[src=\"open.png\"],\n+div.dynheader img[src=\"open.png\"],\n+div.dynheader img[src=\"closed.png\"] {\n+    width: 0; \n+    height: 0; \n+    border-left: 4px solid transparent;\n+    border-right: 4px solid transparent;\n+    border-top: 5px solid var(--primary-color);\n+    margin-top: 8px;\n+    display: block;\n+    float: left;\n+    margin-left: -10px;\n+    transition: transform var(--animation-duration) ease-out;\n+}\n+\n+table.memberdecls img {\n+    margin-right: 10px;\n+}\n+\n+table.memberdecls img[src=\"closed.png\"],\n+div.dynheader img[src=\"closed.png\"] {\n+    transform: rotate(-90deg);\n+    \n+}\n+\n+.compoundTemplParams {\n+    font-family: var(--font-family-monospace);\n+    color: var(--primary-dark-color);\n+    font-size: var(--code-font-size);\n+}\n+\n+@media screen and (max-width: 767px) {\n+\n+    table.memberdecls .memItemLeft,\n+    table.memberdecls .memItemRight,\n+    table.memberdecls .mdescLeft,\n+    table.memberdecls .mdescRight,\n+    table.memberdecls .memTemplItemLeft,\n+    table.memberdecls .memTemplItemRight,\n+    table.memberdecls .memTemplParams {\n+        display: block;\n+        text-align: left;\n+        padding-left: var(--spacing-large);\n+        margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large));\n+        border-right: none;\n+        border-left: none;\n+        border-radius: 0;\n+        white-space: normal;\n+    }\n+\n+    table.memberdecls .memItemLeft,\n+    table.memberdecls .mdescLeft,\n+    table.memberdecls .memTemplItemLeft {\n+        border-bottom: 0;\n+        padding-bottom: 0;\n+    }\n+\n+    table.memberdecls .memTemplItemLeft {\n+        padding-top: 0;\n+    }\n+\n+    table.memberdecls .mdescLeft {\n+        margin-bottom: calc(0px - var(--page-font-size));\n+    }\n+\n+    table.memberdecls .memItemRight, \n+    table.memberdecls .mdescRight,\n+    table.memberdecls .memTemplItemRight {\n+        border-top: 0;\n+        padding-top: 0;\n+        padding-right: var(--spacing-large);\n+        overflow-x: auto;\n+    }\n+\n+    table.memberdecls tr[class^='memitem']:not(.inherit) {\n+        display: block;\n+        width: calc(100vw - 2 * var(--spacing-large));\n+    }\n+\n+    table.memberdecls .mdescRight {\n+        color: var(--page-foreground-color);\n+    }\n+\n+    table.memberdecls tr.inherit {\n+        visibility: hidden;\n+    }\n+\n+    table.memberdecls tr[style=\"display: table-row;\"] {\n+        display: block !important;\n+        visibility: visible;\n+        width: calc(100vw - 2 * var(--spacing-large));\n+        animation: fade .5s;\n+    }\n+\n+    @keyframes fade {\n+        0% {\n+            opacity: 0;\n+            max-height: 0;\n+        }\n+\n+        100% {\n+            opacity: 1;\n+            max-height: 200px;\n+        }\n+    }\n+}\n+\n+\n+/*\n+ Horizontal Rule\n+ */\n+\n+hr {\n+    margin-top: var(--spacing-large);\n+    margin-bottom: var(--spacing-large);\n+    height: 1px;\n+    background-color: var(--separator-color);\n+    border: 0;\n+}\n+\n+.contents hr {\n+    box-shadow: 100px 0 var(--separator-color),\n+                -100px 0 var(--separator-color),\n+                500px 0 var(--separator-color),\n+                -500px 0 var(--separator-color),\n+                900px 0 var(--separator-color),\n+                -900px 0 var(--separator-color),\n+                1400px 0 var(--separator-color),\n+                -1400px 0 var(--separator-color),\n+                1900px 0 var(--separator-color),\n+                -1900px 0 var(--separator-color);       \n+}\n+\n+.contents img, .contents .center, .contents center, .contents div.image object {\n+    max-width: 100%;\n+    overflow: auto;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    .contents .dyncontent > .center, .contents > center {\n+        margin-left: calc(0px - var(--spacing-large));\n+        margin-right: calc(0px - var(--spacing-large));\n+        max-width: calc(100% + 2 * var(--spacing-large));\n+    }\n+}\n+\n+/*\n+ Directories\n+ */\n+div.directory {\n+    border-top: 1px solid var(--separator-color);\n+    border-bottom: 1px solid var(--separator-color);\n+    width: auto;\n+}\n+\n+table.directory {\n+    font-family: var(--font-family);\n+    font-size: var(--page-font-size);\n+    font-weight: normal;\n+    width: 100%;\n+}\n+\n+table.directory td.entry, table.directory td.desc {\n+    padding: calc(var(--spacing-small) / 2) var(--spacing-small);\n+    line-height: var(--table-line-height);\n+}\n+\n+table.directory tr.even td:last-child {\n+    border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0;\n+}\n+\n+table.directory tr.even td:first-child {\n+    border-radius: var(--border-radius-small) 0 0 var(--border-radius-small);\n+}\n+\n+table.directory tr.even:last-child td:last-child {\n+    border-radius: 0 var(--border-radius-small) 0 0;\n+}\n+\n+table.directory tr.even:last-child td:first-child {\n+    border-radius: var(--border-radius-small) 0 0 0;\n+}\n+\n+table.directory td.desc {\n+    min-width: 250px;\n+}\n+\n+table.directory tr.even {\n+    background-color: var(--odd-color);\n+}\n+\n+table.directory tr.odd {\n+    background-color: transparent;\n+}\n+\n+.icona {\n+    width: auto;\n+    height: auto;\n+    margin: 0 var(--spacing-small);\n+}\n+\n+.icon {\n+    background: var(--primary-color);\n+    border-radius: var(--border-radius-small);\n+    font-size: var(--page-font-size);\n+    padding: calc(var(--page-font-size) / 5);\n+    line-height: var(--page-font-size);\n+    transform: scale(0.8);\n+    height: auto;\n+    width: var(--page-font-size);\n+    user-select: none;\n+}\n+\n+.iconfopen, .icondoc, .iconfclosed {\n+    background-position: center;\n+    margin-bottom: 0;\n+    height: var(--table-line-height);\n+}\n+\n+.icondoc {\n+    filter: saturate(0.2);\n+}\n+\n+@media screen and (max-width: 767px) {\n+    div.directory {\n+        margin-left: calc(0px - var(--spacing-large));\n+        margin-right: calc(0px - var(--spacing-large));\n+    }\n+}\n+\n+@media (prefers-color-scheme: dark) {\n+    html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed {\n+        filter: hue-rotate(180deg) invert();\n+    }\n+}\n+\n+html.dark-mode .iconfopen, html.dark-mode .iconfclosed {\n+    filter: hue-rotate(180deg) invert();\n+}\n+\n+/*\n+ Class list\n+ */\n+\n+.classindex dl.odd {\n+    background: var(--odd-color);\n+    border-radius: var(--border-radius-small);\n+}\n+\n+.classindex dl.even {\n+    background-color: transparent;\n+}\n+\n+/* \n+ Class Index Doxygen 1.8 \n+*/\n+\n+table.classindex {\n+    margin-left: 0;\n+    margin-right: 0;\n+    width: 100%;\n+}\n+\n+table.classindex table div.ah {\n+    background-image: none;\n+    background-color: initial;\n+    border-color: var(--separator-color);\n+    color: var(--page-foreground-color);\n+    box-shadow: var(--box-shadow);\n+    border-radius: var(--border-radius-large);\n+    padding: var(--spacing-small);\n+}\n+\n+div.qindex {\n+    background-color: var(--odd-color);\n+    border-radius: var(--border-radius-small);\n+    border: 1px solid var(--separator-color);\n+    padding: var(--spacing-small) 0;\n+}\n+\n+/*\n+  Footer and nav-path\n+ */\n+\n+#nav-path {\n+    width: 100%;\n+}\n+\n+#nav-path ul {\n+    background-image: none;\n+    background: var(--page-background-color);\n+    border: none;\n+    border-top: 1px solid var(--separator-color);\n+    border-bottom: 1px solid var(--separator-color);\n+    border-bottom: 0;\n+    box-shadow: 0 0.75px 0 var(--separator-color);\n+    font-size: var(--navigation-font-size);\n+}\n+\n+img.footer {\n+    width: 60px;\n+}\n+\n+.navpath li.footer {\n+    color: var(--page-secondary-foreground-color);\n+}\n+\n+address.footer {\n+    color: var(--page-secondary-foreground-color);\n+    margin-bottom: var(--spacing-large);\n+}\n+\n+#nav-path li.navelem {\n+    background-image: none;\n+    display: flex;\n+    align-items: center;\n+}\n+\n+.navpath li.navelem a {\n+    text-shadow: none;\n+    display: inline-block;\n+    color: var(--primary-color) !important;\n+}\n+\n+.navpath li.navelem b {\n+    color: var(--primary-dark-color);\n+    font-weight: 500;\n+}\n+\n+li.navelem {\n+    padding: 0;\n+    margin-left: -8px;\n+}\n+\n+li.navelem:first-child {\n+    margin-left: var(--spacing-large);\n+}\n+\n+li.navelem:first-child:before {\n+    display: none;\n+}\n+\n+#nav-path li.navelem:after {\n+    content: '';\n+    border: 5px solid var(--page-background-color);\n+    border-bottom-color: transparent;\n+    border-right-color: transparent;\n+    border-top-color: transparent;\n+    transform: translateY(-1px) scaleY(4.2);\n+    z-index: 10;\n+    margin-left: 6px;\n+}\n+\n+#nav-path li.navelem:before {\n+    content: '';\n+    border: 5px solid var(--separator-color);\n+    border-bottom-color: transparent;\n+    border-right-color: transparent;\n+    border-top-color: transparent;\n+    transform: translateY(-1px) scaleY(3.2);\n+    margin-right: var(--spacing-small);\n+}\n+\n+.navpath li.navelem a:hover {\n+    color: var(--primary-color);\n+}\n+\n+/*\n+ Scrollbars for Webkit\n+*/\n+\n+#nav-tree::-webkit-scrollbar,\n+div.fragment::-webkit-scrollbar,\n+pre.fragment::-webkit-scrollbar,\n+div.memproto::-webkit-scrollbar,\n+.contents center::-webkit-scrollbar,\n+.contents .center::-webkit-scrollbar,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar,\n+div.contents .toc::-webkit-scrollbar,\n+.contents .dotgraph::-webkit-scrollbar,\n+.contents .tabs-overview-container::-webkit-scrollbar {\n+    background: transparent;\n+    width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));\n+    height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));\n+}\n+\n+#nav-tree::-webkit-scrollbar-thumb,\n+div.fragment::-webkit-scrollbar-thumb,\n+pre.fragment::-webkit-scrollbar-thumb,\n+div.memproto::-webkit-scrollbar-thumb,\n+.contents center::-webkit-scrollbar-thumb,\n+.contents .center::-webkit-scrollbar-thumb,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb,\n+div.contents .toc::-webkit-scrollbar-thumb,\n+.contents .dotgraph::-webkit-scrollbar-thumb,\n+.contents .tabs-overview-container::-webkit-scrollbar-thumb {\n+    background-color: transparent;\n+    border: var(--webkit-scrollbar-padding) solid transparent;\n+    border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));\n+    background-clip: padding-box;  \n+}\n+\n+#nav-tree:hover::-webkit-scrollbar-thumb,\n+div.fragment:hover::-webkit-scrollbar-thumb,\n+pre.fragment:hover::-webkit-scrollbar-thumb,\n+div.memproto:hover::-webkit-scrollbar-thumb,\n+.contents center:hover::-webkit-scrollbar-thumb,\n+.contents .center:hover::-webkit-scrollbar-thumb,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb,\n+div.contents .toc:hover::-webkit-scrollbar-thumb,\n+.contents .dotgraph:hover::-webkit-scrollbar-thumb,\n+.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb {\n+    background-color: var(--webkit-scrollbar-color);\n+}\n+\n+#nav-tree::-webkit-scrollbar-track,\n+div.fragment::-webkit-scrollbar-track,\n+pre.fragment::-webkit-scrollbar-track,\n+div.memproto::-webkit-scrollbar-track,\n+.contents center::-webkit-scrollbar-track,\n+.contents .center::-webkit-scrollbar-track,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track,\n+div.contents .toc::-webkit-scrollbar-track,\n+.contents .dotgraph::-webkit-scrollbar-track,\n+.contents .tabs-overview-container::-webkit-scrollbar-track {\n+    background: transparent;\n+}\n+\n+#nav-tree::-webkit-scrollbar-corner {\n+    background-color: var(--side-nav-background);\n+}\n+\n+#nav-tree,\n+div.fragment,\n+pre.fragment,\n+div.memproto,\n+.contents center,\n+.contents .center,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody,\n+div.contents .toc {\n+    overflow-x: auto;\n+    overflow-x: overlay;\n+}\n+\n+#nav-tree {\n+    overflow-x: auto;\n+    overflow-y: auto;\n+    overflow-y: overlay;\n+}\n+\n+/*\n+ Scrollbars for Firefox\n+*/\n+\n+#nav-tree,\n+div.fragment,\n+pre.fragment,\n+div.memproto,\n+.contents center,\n+.contents .center,\n+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody,\n+div.contents .toc,\n+.contents .dotgraph,\n+.contents .tabs-overview-container {\n+    scrollbar-width: thin;\n+}\n+\n+/*\n+  Optional Dark mode toggle button\n+*/\n+\n+doxygen-awesome-dark-mode-toggle {\n+    display: inline-block;\n+    margin: 0 0 0 var(--spacing-small);\n+    padding: 0;\n+    width: var(--searchbar-height);\n+    height: var(--searchbar-height);\n+    background: none;\n+    border: none;\n+    border-radius: var(--searchbar-height);\n+    vertical-align: middle;\n+    text-align: center;\n+    line-height: var(--searchbar-height);\n+    font-size: 22px;\n+    display: flex;\n+    align-items: center;\n+    justify-content: center;\n+    user-select: none;\n+    cursor: pointer;\n+}\n+\n+doxygen-awesome-dark-mode-toggle > svg {\n+    transition: transform var(--animation-duration) ease-in-out;\n+}\n+\n+doxygen-awesome-dark-mode-toggle:active > svg {\n+    transform: scale(.5);\n+}\n+\n+doxygen-awesome-dark-mode-toggle:hover {\n+    background-color: rgba(0,0,0,.03);\n+}\n+\n+html.dark-mode doxygen-awesome-dark-mode-toggle:hover {\n+    background-color: rgba(0,0,0,.18);\n+}\n+\n+/*\n+ Optional fragment copy button\n+*/\n+.doxygen-awesome-fragment-wrapper {\n+    position: relative;\n+}\n+\n+doxygen-awesome-fragment-copy-button {\n+    opacity: 0;\n+    background: var(--fragment-background);\n+    width: 28px;\n+    height: 28px;\n+    position: absolute;\n+    right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5));\n+    top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5));\n+    border: 1px solid var(--fragment-foreground);\n+    cursor: pointer;\n+    border-radius: var(--border-radius-small);\n+    display: flex;\n+    justify-content: center;\n+    align-items: center;\n+}\n+\n+.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success {\n+    opacity: .28;\n+}\n+\n+doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success {\n+    opacity: 1 !important;\n+}\n+\n+doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg {\n+    transform: scale(.91);\n+}\n+\n+doxygen-awesome-fragment-copy-button svg {\n+    fill: var(--fragment-foreground);\n+    width: 18px;\n+    height: 18px;\n+}\n+\n+doxygen-awesome-fragment-copy-button.success svg {\n+    fill: rgb(14, 168, 14);\n+}\n+\n+doxygen-awesome-fragment-copy-button.success {\n+    border-color: rgb(14, 168, 14);\n+}\n+\n+@media screen and (max-width: 767px) {\n+    .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,\n+    .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,\n+    .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,\n+    .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,\n+    dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button {\n+        right: 0;\n+    }\n+}\n+\n+/*\n+ Optional paragraph link button\n+*/\n+\n+a.anchorlink {\n+    font-size: 90%;\n+    margin-left: var(--spacing-small);\n+    color: var(--page-foreground-color) !important;\n+    text-decoration: none;\n+    opacity: .15;\n+    display: none;\n+    transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out;\n+}\n+\n+a.anchorlink svg {\n+    fill: var(--page-foreground-color);\n+}\n+\n+h3 a.anchorlink svg, h4 a.anchorlink svg {\n+    margin-bottom: -3px;\n+    margin-top: -4px;\n+}\n+\n+a.anchorlink:hover {\n+    opacity: .45;\n+}\n+\n+h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink  {\n+    display: inline-block;\n+}\n+\n+/*\n+ Optional tab feature\n+*/\n+\n+.tabbed > ul {\n+    padding-inline-start: 0px;\n+    margin: 0;\n+    padding: var(--spacing-small) 0;\n+}\n+\n+.tabbed > ul > li {\n+    display: none;\n+}\n+\n+.tabbed > ul > li.selected {\n+    display: block;\n+}\n+\n+.tabs-overview-container {\n+    overflow-x: auto;\n+    display: block;\n+    overflow-y: visible;\n+}\n+\n+.tabs-overview {\n+    border-bottom: 1px solid var(--separator-color);\n+    display: flex;\n+    flex-direction: row;\n+}\n+\n+@media screen and (max-width: 767px) {\n+    .tabs-overview-container {\n+        margin: 0 calc(0px - var(--spacing-large));\n+    }\n+    .tabs-overview {\n+        padding: 0 var(--spacing-large)\n+    }\n+}\n+\n+.tabs-overview button.tab-button {\n+    color: var(--page-foreground-color);\n+    margin: 0;\n+    border: none;\n+    background: transparent;\n+    padding: calc(var(--spacing-large) / 2) 0;\n+    display: inline-block;\n+    font-size: var(--page-font-size);\n+    cursor: pointer;\n+    box-shadow: 0 1px 0 0 var(--separator-color);\n+    position: relative;\n+    \n+    -webkit-tap-highlight-color: transparent;\n+}\n+\n+.tabs-overview button.tab-button .tab-title::before {\n+    display: block;\n+    content: attr(title);\n+    font-weight: 600;\n+    height: 0;\n+    overflow: hidden;\n+    visibility: hidden;\n+}\n+\n+.tabs-overview button.tab-button .tab-title {\n+    float: left;\n+    white-space: nowrap;\n+    font-weight: normal;\n+    padding: calc(var(--spacing-large) / 2) var(--spacing-large);\n+    border-radius: var(--border-radius-medium);\n+    transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out;\n+}\n+\n+.tabs-overview button.tab-button:not(:last-child) .tab-title {\n+    box-shadow: 8px 0 0 -7px var(--separator-color);\n+}\n+\n+.tabs-overview button.tab-button:hover .tab-title {\n+    background: var(--separator-color);\n+    box-shadow: none;\n+}\n+\n+.tabs-overview button.tab-button.active .tab-title {\n+    font-weight: 600;\n+}\n+\n+.tabs-overview button.tab-button::after {\n+    content: '';\n+    display: block;\n+    position: absolute;\n+    left: 0;\n+    bottom: 0;\n+    right: 0;\n+    height: 0;\n+    width: 0%;\n+    margin: 0 auto;\n+    border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;\n+    background-color: var(--primary-color);\n+    transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out;\n+}\n+\n+.tabs-overview button.tab-button.active::after {\n+    width: 100%;\n+    box-sizing: border-box;\n+    height: 3px;\n+}\n+\n+\n+/*\n+ Navigation Buttons\n+*/\n+\n+.section_buttons:not(:empty) {\n+    margin-top: calc(var(--spacing-large) * 3);\n+}\n+\n+.section_buttons table.markdownTable {\n+    display: block;\n+    width: 100%;\n+}\n+\n+.section_buttons table.markdownTable tbody {\n+    display: table !important;\n+    width: 100%;\n+    box-shadow: none;\n+    border-spacing: 10px;\n+}\n+\n+.section_buttons table.markdownTable td {\n+    padding: 0;\n+}\n+\n+.section_buttons table.markdownTable th {\n+    display: none;\n+}\n+\n+.section_buttons table.markdownTable tr.markdownTableHead {\n+    border: none;\n+}\n+\n+.section_buttons tr th, .section_buttons tr td {\n+    background: none;\n+    border: none;\n+    padding: var(--spacing-large) 0 var(--spacing-small);\n+}\n+\n+.section_buttons a {\n+    display: inline-block;\n+    border: 1px solid var(--separator-color);\n+    border-radius: var(--border-radius-medium);\n+    color: var(--page-secondary-foreground-color) !important;\n+    text-decoration: none;\n+    transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out;\n+}\n+\n+.section_buttons a:hover {\n+    color: var(--page-foreground-color) !important;\n+    background-color: var(--odd-color);\n+}\n+\n+.section_buttons tr td.markdownTableBodyLeft a {\n+    padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2);\n+}\n+\n+.section_buttons tr td.markdownTableBodyRight a {\n+    padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large);\n+}\n+\n+.section_buttons tr td.markdownTableBodyLeft a::before,\n+.section_buttons tr td.markdownTableBodyRight a::after {\n+    color: var(--page-secondary-foreground-color) !important;\n+    display: inline-block;\n+    transition: color .08s ease-in-out, transform .09s ease-in-out;\n+}\n+\n+.section_buttons tr td.markdownTableBodyLeft a::before {\n+    content: '〈';\n+    padding-right: var(--spacing-large);\n+}\n+\n+\n+.section_buttons tr td.markdownTableBodyRight a::after {\n+    content: '〉';\n+    padding-left: var(--spacing-large);\n+}\n+\n+\n+.section_buttons tr td.markdownTableBodyLeft a:hover::before {\n+    color: var(--page-foreground-color) !important;\n+    transform: translateX(-3px);\n+}\n+\n+.section_buttons tr td.markdownTableBodyRight a:hover::after {\n+    color: var(--page-foreground-color) !important;\n+    transform: translateX(3px);\n+}\n+\n+@media screen and (max-width: 450px) {\n+    .section_buttons a {\n+        width: 100%;\n+        box-sizing: border-box;\n+    }\n+\n+    .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a {\n+        border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium);\n+        border-right: none;\n+    }\n+\n+    .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a {\n+        border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0;\n+    }\n+}\n",
    "prefixes": [
        "1/6"
    ]
}