diff --git a/.woodpecker/publish-docs.yml b/.woodpecker/publish-docs.yml index 603c2a3..7e832c6 100644 --- a/.woodpecker/publish-docs.yml +++ b/.woodpecker/publish-docs.yml @@ -1,6 +1,7 @@ steps: build: image: klakegg/hugo:ext-debian-ci + pull: true commands: - git submodule foreach 'git fetch origin; git checkout $(git describe --tags `git rev-list --tags --max-count=1`);' - cd docs diff --git a/docs/content/config/_index.md b/docs/content/config/_index.md index 01750d4..4fe1d49 100644 --- a/docs/content/config/_index.md +++ b/docs/content/config/_index.md @@ -7,7 +7,7 @@ description: > This is the section on the config file. -To use a specific file: +To use a specific file use the `-f` CLI flag: ```backy [command] -f /path/to/file``` If you leave the config path blank, the following paths will be searched in order: diff --git a/docs/public/404.html b/docs/public/404.html index 0886888..d252564 100644 --- a/docs/public/404.html +++ b/docs/public/404.html @@ -3,23 +3,24 @@ - - + + 404 Page not found - A tool for commands + - - - - - - - - - - - - + + + + + + + + + + + + - -
+ +
-
-

Error

+
+

44

+

Not found

Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.

Go to homepage

-

Page not found!

+

+ + + + + + + + + +

diff --git a/docs/public/categories/index.html b/docs/public/categories/index.html index 1013b51..950cb4c 100644 --- a/docs/public/categories/index.html +++ b/docs/public/categories/index.html @@ -3,24 +3,24 @@ - - + + Categories - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/cli/index.html b/docs/public/cli/index.html index 5b99838..eab1e5e 100644 --- a/docs/public/cli/index.html +++ b/docs/public/cli/index.html @@ -3,24 +3,24 @@ - - + + CLI - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/config/command-lists/index.html b/docs/public/config/command-lists/index.html index e271859..ec8b8c3 100644 --- a/docs/public/config/command-lists/index.html +++ b/docs/public/config/command-lists/index.html @@ -3,24 +3,24 @@ - - + + Command Lists - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/config/commands/index.html b/docs/public/config/commands/index.html index 9e6b297..eef82aa 100644 --- a/docs/public/config/commands/index.html +++ b/docs/public/config/commands/index.html @@ -3,23 +3,23 @@ - - + + Commands - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/config/index.html b/docs/public/config/index.html index 6f4d90b..a98c737 100644 --- a/docs/public/config/index.html +++ b/docs/public/config/index.html @@ -3,25 +3,25 @@ - - + + Configuring Backy - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/config/index.xml b/docs/public/config/index.xml index f5f197c..2a36cc8 100644 --- a/docs/public/config/index.xml +++ b/docs/public/config/index.xml @@ -6,34 +6,156 @@ Recent content in Configuring Backy on A tool for commands Hugo -- gohugo.io en-us - - Command Lists - http://example.org/config/command-lists/index.html - Mon, 01 Jan 0001 00:00:00 +0000 - http://example.org/config/command-lists/index.html - Command lists are for executing commands in sequence and getting notifications from them. -The top-level object key can be anything you want. -key description type required order Defines the sequence of commands to execute []string yes notifications The notification IDs to use on success and failure []string no name Optional name of the list string no cron Time at which to schedule the list. string no Order The order is an array of commands to execute in order. - Commands http://example.org/config/commands/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/config/commands/index.html - The yaml top-level map can be any string. -The top-level name must be unique. -commands: stop-docker-container: cmd: docker Args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, command will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in either the config file or the SSH Config files host: some-host environment: - FOO=BAR - APP=$VAR Values available for this section: + <p>The yaml top-level map can be any string.</p> +<p>The top-level name must be unique.</p> +<h3 id="example-config">Example Config</h3> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">commands</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">stop-docker-container</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">docker</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">Args</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">compose</span> +</span></span><span style="display:flex;"><span> - -<span style="color:#ae81ff">f /some/path/to/docker-compose.yaml</span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">down</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e"># if host is not defined, command will be run locally</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e"># The host has to be defined in either the config file or the SSH Config files</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">host</span>: <span style="color:#ae81ff">some-host</span> +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">hooks</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">error</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">some-other-command-when-failing</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">success</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">success-command</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">final</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">final-command</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">backup-docker-container-script</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">/path/to/local/script</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e"># script file is input as stdin to SSH</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">scriptFile</span> <span style="color:#75715e"># also can be script</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">FOO=BAR</span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">APP=$VAR</span> +</span></span></code></pre></div><p>Values available for this section:</p> + + + Command Lists + http://example.org/config/command-lists/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + http://example.org/config/command-lists/index.html + <p>Command lists are for executing commands in sequence and getting notifications from them.</p> +<p>The top-level object key can be anything you want but not the same as another.</p> +<p>Lists can go in a separate file. Command lists should be in a separate file if:</p> +<ol> +<li>key &lsquo;cmd-lists.file&rsquo; is found</li> +<li>hosts.yml or hosts.yaml is found in the same directory as the backy config file</li> +</ol> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span> <span style="color:#f92672">test2</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">test2</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">order</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">test</span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">test2</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">notifications</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">mail.prod-email</span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">matrix.sysadmin</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">cron</span>: <span style="color:#e6db74">&#34;0 * * * * *&#34;</span> +</span></span></code></pre></div><table> + <thead> + <tr> + <th style="text-align: left">key</th> + <th style="text-align: left">description</th> + <th style="text-align: left">type</th> + <th style="text-align: left">required</th> + </tr> + </thead> + <tbody> + <tr> + <td style="text-align: left"><code>order</code></td> + <td style="text-align: left">Defines the sequence of commands to execute</td> + <td style="text-align: left"><code>[]string</code></td> + <td style="text-align: left">yes</td> + </tr> + <tr> + <td style="text-align: left"><code>getOutput</code></td> + <td style="text-align: left">Command(s) output is in the notification(s)</td> + <td style="text-align: left"><code>bool</code></td> + <td style="text-align: left">no</td> + </tr> + <tr> + <td style="text-align: left"><code>notifications</code></td> + <td style="text-align: left">The notification service(s) and ID(s) to use on success and failure. Must be <em><code>service.id</code></em>. See the <a href="http://example.org/config/notifications/">notifications documentation page</a> for more</td> + <td style="text-align: left"><code>[]string</code></td> + <td style="text-align: left">no</td> + </tr> + <tr> + <td style="text-align: left"><code>name</code></td> + <td style="text-align: left">Optional name of the list</td> + <td style="text-align: left"><code>string</code></td> + <td style="text-align: left">no</td> + </tr> + <tr> + <td style="text-align: left"><code>cron</code></td> + <td style="text-align: left">Time at which to schedule the list. Only has affect when cron subcommand is run.</td> + <td style="text-align: left"><code>string</code></td> + <td style="text-align: left">no</td> + </tr> + </tbody> +</table> +<h3 id="order">Order</h3> +<p>The order is an array of commands to execute in order. Each command must be defined.</p> Notifications http://example.org/config/notifications/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/config/notifications/index.html - Notifications can be sent on command list completion and failure. -The supported platforms for notifications are email (SMTP) and Matrix. -Notifications are defined by type. The top-level object will be the id, and the type is required. -Info Type in a cmd-configs object must match one of these. -notifications: prod-email: type: mail host: yourhost.tld port: 587 senderaddress: email@domain.tld to: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: type: matrix home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Types recognized are type: mail and type: matrix + <p>Notifications can be sent on command list completion and failure.</p> +<p>The supported platforms for notifications are email (SMTP) and <a href="https://matrix.org/" target="_blank">Matrix</a>.</p> +<p>Notifications are defined by service, with the current form following below. Ids must come after the service.</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">notifications</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">mail</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">prod-email</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">host</span>: <span style="color:#ae81ff">yourhost.tld</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">port</span>: <span style="color:#ae81ff">587</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">senderaddress</span>: <span style="color:#ae81ff">email@domain.tld</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">to</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">admin@domain.tld</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">username</span>: <span style="color:#ae81ff">smtp-username@domain.tld</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">password</span>: <span style="color:#ae81ff">your-password-here</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">matrix</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">matrix</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">home-server</span>: <span style="color:#ae81ff">your-home-server.tld</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">room-id</span>: <span style="color:#ae81ff">room-id</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">access-token</span>: <span style="color:#ae81ff">your-access-token</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">user-id</span>: <span style="color:#ae81ff">your-user-id</span> +</span></span></code></pre></div><p>Sections recognized are <code>mail</code> and <code>matrix</code></p> +<p>There must be a section with an id (eg. <code>mail.test-svr</code>) following one of these sections.</p> + + + Vault + http://example.org/config/vault/index.html + Mon, 01 Jan 0001 00:00:00 +0000 + http://example.org/config/vault/index.html + <p><a href="https://www.vaultproject.io/" target="_blank">Vault</a> is a tool for storing secrets and other data securely.</p> +<p>Vault config can be used by prefixing <code>vault:</code> in front of a password or ENV var.</p> +<p>This is the object in the config file:</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">vault</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">token</span>: <span style="color:#ae81ff">hvs.tXqcASvTP8wg92f7riyvGyuf</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">address</span>: <span style="color:#ae81ff">http://127.0.0.1:8200</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">enabled</span>: <span style="color:#66d9ef">false</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">keys</span>: +</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">mongourl</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">mountpath</span>: <span style="color:#ae81ff">secret</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">path</span>: <span style="color:#ae81ff">mongo/url</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#75715e"># KVv1 or KVv2</span> +</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">path</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">mountpath</span>: +</span></span></code></pre></div> \ No newline at end of file diff --git a/docs/public/config/notifications/index.html b/docs/public/config/notifications/index.html index 626fef9..6feb847 100644 --- a/docs/public/config/notifications/index.html +++ b/docs/public/config/notifications/index.html @@ -3,24 +3,24 @@ - - + + Notifications - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/css/auto-complete.css b/docs/public/css/auto-complete.css index 83e8009..5b32a25 100644 --- a/docs/public/css/auto-complete.css +++ b/docs/public/css/auto-complete.css @@ -1,17 +1,18 @@ .autocomplete-suggestions { - text-align: left; + text-align: start; + color-scheme: only light; /* set browser scrollbar color */ cursor: default; - border: 1px solid #ccc; + border: 1px solid rgba( 204, 204, 204, 1 ); border-top: 0; - background: #fff; - box-shadow: -1px 1px 3px rgba(0,0,0,.1); + background: rgba( 255, 255, 255, 1 ); + box-shadow: -1px 1px 3px rgba( 0, 0, 0, .1 ); /* core styles should not be changed */ position: absolute; display: none; z-index: 9999; - max-height: 150px; - max-height: calc( 100vh - 150px ); + max-height: 10em; + max-height: calc( 100vh - 10em ); overflow: hidden; overflow-y: auto; box-sizing: border-box; @@ -19,22 +20,22 @@ .autocomplete-suggestion { position: relative; cursor: pointer; - padding: 7px; - line-height: 23px; + padding: .46em; + line-height: 1.5em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - color: #282828; + color: rgba( 40, 40, 40, 1 ); } .autocomplete-suggestion b { font-weight: normal; - color: #1f8dd6; + color: rgba( 31, 141, 214, 1 ); } .autocomplete-suggestion.selected { - background: #282828; - color: #fff; + background: rgba( 40, 40, 40, 1 ); + color: rgba( 255, 255, 255, 1 ); } .autocomplete-suggestion:hover, @@ -46,12 +47,12 @@ #searchresults .autocomplete-suggestion:hover > .context, #searchresults .autocomplete-suggestion:focus > .context, #searchresults .autocomplete-suggestion:active > .context { - background: #383838; - color: #fff; + background: rgba( 56, 56, 56, 1 ); + color: rgba( 255, 255, 255, 1 ); } .autocomplete-suggestion > .context { - font-size: 12px; + font-size: .7869em; margin-inline-start: 1em; overflow: hidden; text-overflow: ellipsis; diff --git a/docs/public/css/format-print.css b/docs/public/css/format-print.css index 86d7ac7..a5e6a9a 100644 --- a/docs/public/css/format-print.css +++ b/docs/public/css/format-print.css @@ -5,6 +5,7 @@ } #body { margin-left: 0 !important; + margin-right: 0 !important; min-width: 100% !important; max-width: 100% !important; width: 100% !important; @@ -16,27 +17,23 @@ html{ font-size: 8.763pt; } body { - background-color: white; + background-color: rgba( 255, 255, 255, 1 ); } code.copy-to-clipboard-code { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - border-right-width: 1px; -} -span > code.copy-to-clipboard-code { - border-end-end-radius: 2px; border-start-end-radius: 2px; + border-end-end-radius: 2px; border-inline-end-width: 1px; } pre { - border: 1px solid #ccc; + border: 1px solid rgba( 204, 204, 204, 1 ); } #body #topbar{ - background-color: #fff; /* avoid background bleeding*/ - border-bottom: 1px solid #ddd; + background-color: rgba( 255, 255, 255, 1 ); /* avoid background bleeding*/ + border-bottom: 1px solid rgba( 221, 221, 221, 1 ); border-radius: 0; + color: rgba( 119, 119, 119, 1 ); padding-left: 0; /* for print, we want to align with the footer to ease the layout */ - color: #777; + padding-right: 0; } .navigation, #top-print-link, @@ -57,7 +54,7 @@ pre { #body h1, #body h2, #body h3, #body .article-subheading, #body h4, #body h5, #body h6 { /* better contrast for colored elements */ - color: black; + color: rgba( 0, 0, 0, 1 ); } #body th, #body td, #body code, #body strong, #body b, @@ -65,19 +62,19 @@ pre { #body p, #body a, #body button, #body .badge .badge-content { /* better contrast for colored elements */ - color: black; + color: rgba( 0, 0, 0, 1 ); } #body .anchor{ display: none; } #body pre, #body code { - background-color: white; - border-color: #ddd; + background-color: rgba( 255, 255, 255, 1 ); + border-color: rgba( 221, 221, 221, 1 ); } hr{ - border-bottom: 1px solid #ddd; + border-bottom: 1px solid rgba( 221, 221, 221, 1 ); } body, #body, @@ -90,7 +87,7 @@ body, } #body #body-inner h1 { - border-bottom: 1px solid #ddd; + border-bottom: 1px solid rgba( 221, 221, 221, 1 ); margin-bottom: 2rem; padding-bottom: .75rem; } @@ -108,11 +105,12 @@ body, .footline { /* in print mode show footer line to signal reader the end of document */ - border-top: 1px solid #ddd; - color: #777; + border-top: 1px solid rgba( 221, 221, 221, 1 ); + color: rgba( 119, 119, 119, 1 ); margin-top: 1.5rem; padding-top: .75rem; } +#body #body-inner .headline a, #body #body-inner .footline a, #body #body-inner .btn a { text-decoration: none; @@ -140,12 +138,9 @@ body, position: inherit; /* IE11 doesn't know "initial" here */ } #topbar > div { - background-color: #ffffff; /* IE11 doesn't know "initial" here */ + background-color: rgba( 255, 255, 255, 1 ); /* IE11 doesn't know "initial" here */ } -#body .tab-nav-button:not(.active) { - opacity: .5; -} -#head-tags { +.tags { display: none; } mark { @@ -155,74 +150,24 @@ mark { .mermaid > svg:hover { border-color: transparent; } -div.box { - border: 1px solid #ddd; -} div.box > .box-content { - background-color: white; -} - -rapi-doc{ - /* adjust rapi-doc internals to fill out available space with render-style=read */ - margin-left: calc( -80px ); - width: calc( 100% + 80px + 80px ); -} -@media (max-width: 1023px) { - rapi-doc { - margin-left: calc( -8px ); - width: calc( 100% + 8px + 8px ); - } -} -rapi-doc::part(section-tag) { - /* adjust rapi-doc internals to fill out available space with render-style=read */ - margin-left: 80px; - margin-right: 80px; - padding-left: 0; - padding-right: 0; -} -@media (max-width: 1023px) { - rapi-doc::part(section-tag) { - margin-left: 8px; - margin-right: 8px; - padding-left: 0; - padding-right: 0; - } -} - -rapi-doc::part(section-main-content) { - /* override variables for adapting rapidoc design to print theme */ - --fg: black; - --fg2: black; - --fg3: black; -} - -rapi-doc::part(section-overview-title) { - /* set print color for titles */ - color: black !important; -} - -rapi-doc::part(operation-divider) { - /* remove whitespace */ - margin-bottom: 1rem; - margin-top: 1rem; -} - -rapi-doc::part(section-navbar) { - /* removes the nav bar for render-style=read */ - display: none; + background-color: rgba( 255, 255, 255, 1 ); } .btn, #body .tab-nav-button { - color: black !important; + color: rgba( 0, 0, 0, 1 ); } #body .tab-nav-button.active { - background-color: white !important; - border-bottom-color: white !important; - color: black; + border-bottom-color: rgba( 255, 255, 255, 1 ); + color: rgba( 0, 0, 0, 1 ); } -#body .tab-nav-button:not(.active) { - opacity: 1; +#body .tab-nav-button.active > * { + background-color: rgba( 255, 255, 255, 1 ); +} +#body .tab-content-text { + background-color: rgba( 255, 255, 255, 1 ) ; + color: rgba( 0, 0, 0, 1 ); } article { diff --git a/docs/public/css/ie.css b/docs/public/css/ie.css index b8df666..ddacea5 100644 --- a/docs/public/css/ie.css +++ b/docs/public/css/ie.css @@ -1,81 +1,215 @@ @media all and (-ms-high-contrast:none) { + /* ----------------------------------------------- */ /* turn off LTR support as it is dependend on CSS properties that aren't supported by IE11 */ - article, - .toc-wrapper, - .tags { - direction: ltr; + html { + direction: ltr !important; + } + /* nucleus */ + th { + text-align: left; + } + input[type="checkbox"], input[type="radio"] { + margin-right: 0.425rem; + } + blockquote { + padding-left: 0.85rem; + } + /* theme */ + #sidebar { + left: 0; + } + .searchbox > :first-child { + left: .5rem; + } + .searchbox span { + right: .5rem; + } + .searchbox input { + padding-left: 1.8rem; + padding-right: 1.6rem; + } + #sidebar ul li.visited + span { + margin-right: 1rem; + } + #sidebar ul li .read-icon { + right: 1rem; + } + #sidebar .nav-title { + padding-left: 1rem; + } + #body { + margin-left: 18.75rem; } h2, h3, h4, h5, h6 { padding-right: 2rem; } blockquote { - border-left: 10px solid rgba( 134, 134, 134, .4 ); - padding-left: 0.85rem; + border-left: .6rem solid rgba( 134, 134, 134, .4 ); } blockquote cite { text-align: right; } - th { - text-align: left; - } - .disableInlineCopyToClipboard span > code.copy-to-clipboard-code { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - border-right-width: 1px; - } - .anchor { - margin-left: .66em; - } div.attachments .box-content { padding-left: 1.75rem; } + #body-inner ul.children-h2, + #body-inner ul.children-h3, + #body-inner ul.children-h4, + #body-inner ul.children-h5, + #body-inner ul.children-h6 { + /* if we display children with style=h2 but without a containerstyle + a ul will be used for structuring; we remove default indention for uls + in this case */ + padding-left: 0; + } + code.copy-to-clipboard-code { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-right-width: 0; + } + html[dir="rtl"] .navigation, + html[dir="rtl"] #top-print-link, + html[dir="rtl"] #top-github-link { + float: right; + } + .nav, + .print-link, + .github-link { + border-left: thin solid rgba( 134, 134, 134, .333 ); + } + html[dir="rtl"] .nav i { + transform: scaleX(1); + } + #toc-menu, + #sidebar-toggle-span { + border-right: thin solid rgba( 134, 134, 134, .333 ); + } + html[dir="rtl"] #body #breadcrumbs { + float: left; + } + .progress { + left: 1rem; + } + @media screen and (max-width: 48rem) { + .progress { + left: 4.25rem; + } + } + @media screen and (max-width: 60rem) { + #body { + margin-left: 14.375rem; + } + } + @media screen and (max-width: 48rem) { + .mobile-support #sidebar { + left: -14.375rem; + } + .mobile-support #body { + margin-left: 0; + } + .mobile-support.sidebar-flyout #sidebar { + left: 0; + } + .mobile-support.sidebar-flyout #body { + margin-left: 14.375rem; + } + } + .copy-to-clipboard-button { + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; + } + span > .copy-to-clipboard-button { + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; + } + pre > .copy-to-clipboard-button { + right: 4px; + } + .disableInlineCopyToClipboard span > code.copy-to-clipboard-code { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-right-width: 1px; + } .expand > label { left: 0; } - .expand > input + label > .fa-chevron-left { - display: none !important; + .expand > .expand-content { + margin-left: 1rem; } - .expand > input + label > .fa-chevron-right { - display: inline-block !important; + html[dir="rtl"] .expand > .expand-label > i.fa-chevron-right { + transform: scaleX(1); } - .expand > input:checked + label > .fa-chevron-right { - display: none !important; + .headline i, + .footline i{ + margin-left: .5rem; } - #body .tab-nav-button { - margin-left: 4px; + .headline i:first-child, + .footline i:first-child{ + margin-left: 0; } - #body .tab-nav-button.direction-rtl { + .anchor { + margin-left: .66em; + } + html[dir="rtl"] .select-container i, + html[dir="rtl"] .select-container span { float: left; } - #body .tab-nav-button:first-child { - margin-left: 9px; + .footerVisitedLinks > * { + text-align: left; } .searchform input { margin-right: .5rem; } - .autocomplete-suggestion > .context { - margin-left: 1em; - } - .badge > .badge-title { border-right: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; } - .badge.badge-with-title > .badge-content { border-top-left-radius: 0; border-bottom-left-radius: 0; } - - article ul li:has(input[type="checkbox"]) { + article ul > li:has(> input[type="checkbox"]) { margin-left: -1rem; } + /* tabs */ + #body .tab-nav-button { + margin-left: .6rem; + } + #body .tab-content{ + margin-top: -1px; + } + /* auto-complete */ + .autocomplete-suggestions { + text-align: left; + } + .autocomplete-suggestion > .context { + margin-left: 1em; + } + /* menu */ + #sidebar ul ul { + padding-left: 1rem; + } + #sidebar ul.collapsible-menu > li > label { + left: 0; + padding-left: .125rem; + } + html[dir="rtl"] #sidebar ul.collapsible-menu > li > label > i.fa-chevron-right { + transform: scaleX(1); + } + /* ----------------------------------------------- */ /* set default colors as in variant.css for IE11 */ + html { + color-scheme: only light; + } body { - background-color: #ffffff; /* var(--MAIN-BG-color) */ - color: #101010; /* var(--MAIN-TEXT-color) */ + background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TEXT-color) */ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-font) */ } @@ -85,18 +219,18 @@ #toc-menu, #body a.highlight:after, #searchresults .autocomplete-suggestion { - color: #486ac9; /* var(--MAIN-LINK-color) */ + color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ } a:hover, .anchor:hover, #toc-menu:hover, #body a.highlight:hover:after { - color: #202891; /* var(--MAIN-LINK-HOVER-color) */ + color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */ } #sidebar { - background: #282828; /* var(--MENU-SECTIONS-BG-color) */ + background: rgba( 40, 40, 40, 1 ); /* var(--MENU-SECTIONS-BG-color) */ } #header-wrapper { @@ -104,103 +238,104 @@ non default variant is active */ background-color: rgba( 0, 0, 0, 0 ); /* var(--MENU-SECTIONS-BG-color) */ border-bottom-color: rgba( 0, 0, 0, 0 ); /* var(--MENU-SECTIONS-BG-color) */ - color: #e0e0e0; /* var(--MENU-SEARCH-color) */ + color: rgba( 224, 224, 224, 1 ); /* var(--MENU-SEARCH-color) */ } .searchbox { - border-color: #e0e0e0; /* var(--MENU-SEARCH-BORDER-color) */ - background-color: #323232; /* var(--MENU-SEARCH-BG-color) */ + border-color: rgba( 224, 224, 224, 1 ); /* var(--MENU-SEARCH-BORDER-color) */ + background-color: rgba( 50, 50, 50, 1 ); /* var(--MENU-SEARCH-BG-color) */ } .searchbox input:-ms-input-placeholder { - color: #e0e0e0; /* var(--INTERNAL-MENU-SEARCH-color) */ + color: rgba( 224, 224, 224, 1 ); /* var(--INTERNAL-MENU-SEARCH-color) */ opacity: .45; } #sidebar .searchbox > :first-child, #sidebar .searchbox button, .searchbox span { - color: #e0e0e0; /* var(--INTERNAL-MENU-SEARCH-color) */ + color: rgba( 224, 224, 224, 1 ); /* var(--INTERNAL-MENU-SEARCH-color) */ } .searchform input:-ms-input-placeholder { - color: rgba( 134, 134, 134 ); + color: rgba( 134, 134, 134, 1 ); opacity: .666; } - #sidebar .collapsible-menu .toggle, + #sidebar .collapsible-menu label, #sidebar .select-container, #sidebar a, #sidebar button { - color: #bababa; /* var(--MENU-SECTIONS-LINK-color) */ + color: rgba( 186, 186, 186, 1 ); /* var(--MENU-SECTIONS-LINK-color) */ } #sidebar select:hover, - #sidebar .collapsible-menu .toggle:hover, + #sidebar .collapsible-menu li:not(.active) > label:hover, #sidebar .select-container:hover, #sidebar a:hover, #sidebar button:hover { - color: #ffffff; /* var(--MENU-SECTIONS-LINK-HOVER-color) */ + color: rgba( 255, 255, 255, 1 ); /* var(--MENU-SECTIONS-LINK-HOVER-color) */ } - #sidebar ul.topics > li.parent, - #sidebar ul.topics > li.active { + #sidebar ul.enlarge > li.parent, + #sidebar ul.enlarge > li.active { background-color: rgba( 0, 0, 0, .166 ); /* var(--MENU-SECTIONS-ACTIVE-BG-color) */ } - #sidebar ul.collapsible-menu li.active > .toggle, - #sidebar ul.topics li.active > a { - color: #444444; /* var(--MENU-SECTION-ACTIVE-CATEGORY-color) */ + #sidebar li.active > label, + #sidebar li.active > a { + color: rgba( 68, 68, 68, 1 ); /* var(--MENU-SECTION-ACTIVE-CATEGORY-color) */ } - #sidebar ul.topics li.active > a { - background-color: #ffffff; /* var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color) */ + #sidebar li.active > a { + background-color: rgba( 255, 255, 255, 1 ); /* var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color) */ } - #sidebar ul li.visited > a .read-icon { - color: #486ac9; /* var(--MENU-VISITED-color) */ + #sidebar ul li > a .read-icon { + color: rgba( 72, 106, 201, 1 ); /* var(--MENU-VISITED-color) */ } #sidebar .nav-title { - color: #ffffff; /* var(--MENU-SECTIONS-LINK-HOVER-color) */ + color: rgba( 255, 255, 255, 1 ); /* var(--MENU-SECTIONS-LINK-HOVER-color) */ } #sidebar hr { - border-color: #606060; /* var(--MENU-SECTION-HR-color) */ + border-color: rgba( 96, 96, 96, 1 ); /* var(--MENU-SECTION-HR-color) */ } #footer { - color: #bababa; /* var(--MENU-SECTIONS-LINK-color) */ + color: rgba( 186, 186, 186, 1 ); /* var(--MENU-SECTIONS-LINK-color) */ } mark { - background-color: #ffff00; + background-color: rgba( 255, 255, 0, 1 ); } h1 { - color: #101010; /* var(--MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TEXT-color) */ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-font) */ } h2, h3, .article-subheading, h4, h5, h6 { - color: #4a4a4a; /* var(--MAIN-TITLES-TEXT-color) */ + color: rgba( 74, 74, 74, 1 ); /* var(--MAIN-TITLES-TEXT-color) */ font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; /* var(--MAIN-TITLES-TEXT-font) */ } .expand > label { - color: #486ac9; /* var(--MAIN-LINK-color) */ + color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ } .expand > label:hover { - color: #202891; /* var(--MAIN-LINK-HOVER-color) */ + color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */ } .expand > label:after { - color: #202891; /* var(--MAIN-LINK-HOVER-color) */ + color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */ } div.box { background-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-NEUTRAL-color) */ + border-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-NEUTRAL-color) */ } div.box > .box-label { @@ -214,6 +349,7 @@ div.box.info { background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-INFO-color) */ + border-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-INFO-color) */ } div.box.info > .box-content { @@ -222,6 +358,7 @@ div.box.warning { background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-WARNING-color) */ + border-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-WARNING-color) */ } div.box.warning > .box-content { @@ -230,6 +367,7 @@ div.box.note { background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-NOTE-color) */ + border-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-NOTE-color) */ } div.box.note > .box-content { @@ -238,6 +376,7 @@ div.box.tip { background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-TIP-color) */ + border-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-TIP-color) */ } div.box.tip > .box-content { @@ -245,31 +384,35 @@ } div.box.primary { - background-color: #7dc903; /* var(--INTERNAL-PRIMARY-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */ + border-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */ } div.box.primary > .box-content { - color: #101010; /* var(--INTERNAL-MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */ } div.box.secondary { - background-color: #486ac9; /* var(--INTERNAL-SECONDARY-color) */ + background-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */ + border-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */ } div.box.secondary > .box-content { - color: #101010; /* var(--INTERNAL-MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */ } div.box.accent { - background-color: #ff88ff; /* var(--INTERNAL-ACCENT-color) */ + background-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */ + border-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */ } div.box.accent > .box-content { - color: #101010; /* var(--INTERNAL-MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */ } div.box.blue { background-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-BLUE-color) */ + border-color: rgba( 48, 117, 229, 1 ); /* var(--INTERNAL-BOX-BLUE-color) */ } div.box.blue > .box-content { @@ -278,6 +421,7 @@ div.box.green { background-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-GREEN-color) */ + border-color: rgba( 42, 178, 24, 1 ); /* var(--INTERNAL-BOX-GREEN-color) */ } div.box.green > .box-content { @@ -285,7 +429,8 @@ } div.box.grey { - background-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-GREY-color) */ + background-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */ + border-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */ } div.box.grey > .box-content { @@ -294,6 +439,7 @@ div.box.orange { background-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-ORANGE-color) */ + border-color: rgba( 237, 153, 9, 1 ); /* var(--INTERNAL-BOX-ORANGE-color) */ } div.box.orange > .box-content { @@ -302,6 +448,7 @@ div.box.red { background-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-RED-color) */ + border-color: rgba( 224, 62, 62, 1 ); /* var(--INTERNAL-BOX-RED-color) */ } div.box.red > .box-content { @@ -310,15 +457,16 @@ div.box.transparent { background-color: transparent; + border-color: transparent; } div.box.transparent > .box-label { - color: #4a4a4a; /* var(--MAIN-TITLES-TEXT-color) */ + color: rgba( 74, 74, 74, 1 ); /* var(--MAIN-TITLES-TEXT-color) */ } div.box.transparent > .box-content { background-color: transparent; - color: #101010; /* var(--MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TEXT-color) */ } code, @@ -329,80 +477,80 @@ } code { - background-color: #fffae9; /* var(--CODE-INLINE-BG-color) */ - border-color: #f8e8c8; /* var(--CODE-INLINE-BORDER-color) */ - color: #5e5e5e; /* var(--CODE-INLINE-color) */ + background-color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */ + border-color: rgba( 248, 232, 200, 1 ); /* var(--CODE-INLINE-BORDER-color) */ + color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */ } pre { - background-color: #f8f8f8; /* var(--CODE-BLOCK-BG-color) */ - border-color: #d8d8d8; /* var(--CODE-BLOCK-BORDER-color) */ - color: #000000; /* var(--CODE-BLOCK-color) */ + background-color: rgba( 248, 248, 248, 1 ); /* var(--CODE-BLOCK-BG-color) */ + border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */ + color: rgba( 0, 0, 0, 1 ); /* var(--CODE-BLOCK-color) */ } table { - background-color: #ffffff; /* var(--INTERNAL-MAIN-BG-color) */ + background-color: rgba( 255, 255, 255, 1 ); /* var(--INTERNAL-MAIN-BG-color) */ } .lightbox img{ - background-color: #ffffff /* var(--INTERNAL-MAIN-BG-color); */ + background-color: rgba( 255, 255, 255, 1 ) /* var(--INTERNAL-MAIN-BG-color); */ } #topbar { - background-color: #ffffff; /* var(--MAIN-BG-color) */ + background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */ } #body a[aria-disabled="true"], #searchresults .autocomplete-suggestion > .context { - color: #101010; /* var(--MAIN-TEXT-color) - inherit is not processed correctly in Chrome */ + color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TEXT-color) - inherit is not processed correctly in Chrome */ } .copy-to-clipboard-button { - background-color: #fffae9; /* var(--CODE-INLINE-BG-color) */ - border-color: #f8e8c8; /* var(--CODE-INLINE-BORDER-color) */ - color: #5e5e5e; /* var(--CODE-INLINE-color) */ + background-color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */ + border-color: rgba( 248, 232, 200, 1 ); /* var(--CODE-INLINE-BORDER-color) */ + color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */ font-family: "Consolas", menlo, monospace; /* var(--CODE-font) */ } .copy-to-clipboard-button:hover { - background-color: #5e5e5e; /* var(--CODE-INLINE-color) */ - color: #fffae9; /* var(--CODE-INLINE-BG-color) */ + background-color: rgba( 94, 94, 94, 1 ); /* var(--CODE-INLINE-color) */ + color: rgba( 255, 250, 233, 1 ); /* var(--CODE-INLINE-BG-color) */ } pre .copy-to-clipboard-button { - border-color: #d8d8d8; /* var(--CODE-BLOCK-BORDER-color) */ - color: #486ac9; /* var(--MAIN-LINK-color) */ + border-color: rgba( 216, 216, 216, 1 ); /* var(--CODE-BLOCK-BORDER-color) */ + color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ } pre .copy-to-clipboard-button:hover { - background-color: #486ac9; /* var(--MAIN-LINK-color) */ - border-color: #486ac9; /* var(--MAIN-LINK-color) */ - color: #f8f8f8; /* var(--CODE-BLOCK-BG-color) */ + background-color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ + border-color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ + color: rgba( 248, 248, 248, 1 ); /* var(--CODE-BLOCK-BG-color) */ } #homelinks { - background-color: #7dc903; /* var(--MENU-HEADER-BORDER-color) */ - border-color: #7dc903; /* var(--MENU-HEADER-BORDER-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BORDER-color) */ + border-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BORDER-color) */ } #homelinks a { - color: #404040 /* var(--MENU-HOME-LINK-color) */ + color: rgba( 64, 64, 64, 1 ) /* var(--MENU-HOME-LINK-color) */ } #homelinks a:hover { - color: #808080 /* var(--MENU-HOME-LINK-HOVER-color) */; + color: rgba( 128, 128, 128, 1 ) /* var(--MENU-HOME-LINK-HOVER-color) */; } #body a.highlight:after { - background-color: #486ac9; /* var(--MAIN-LINK-color) */ + background-color: rgba( 72, 106, 201, 1 ); /* var(--MAIN-LINK-color) */ } #body a.highlight:hover:after { - background-color: #202891; /* var(--MAIN-LINK-HOVER-color) */ + background-color: rgba( 32, 40, 145, 1 ); /* var(--MAIN-LINK-HOVER-color) */ } .progress { - background-color: #ffffff; /* var(--MAIN-BG-color) */ + background-color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */ } .btn { @@ -454,27 +602,27 @@ } .btn.cstyle.primary { - background-color: #7dc903; /* var(--PRIMARY-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--PRIMARY-color) */ } .btn.cstyle.primary > * { - border-color: #7dc903; /* var(--PRIMARY-color) */ + border-color: rgba( 125, 201, 3, 1 ); /* var(--PRIMARY-color) */ } .btn.cstyle.secondary { - background-color: #486ac9; /* var(--SECONDARY-color) */ + background-color: rgba( 72, 106, 201, 1 ); /* var(--SECONDARY-color) */ } .btn.cstyle.secondary > * { - border-color: #486ac9; /* var(--SECONDARY-color) */ + border-color: rgba( 72, 106, 201, 1 ); /* var(--SECONDARY-color) */ } .btn.cstyle.accent { - background-color: #ff88ff; /* var(--ACCENT-color) */ + background-color: rgba( 255, 136, 255, 1 ); /* var(--ACCENT-color) */ } .btn.cstyle.accent > * { - border-color: #ff88ff; /* var(--ACCENT-color) */ + border-color: rgba( 255, 136, 255, 1 ); /* var(--ACCENT-color) */ } .btn.cstyle.blue { @@ -494,11 +642,11 @@ } .btn.cstyle.grey { - background-color: rgba( 128, 128, 128, 1 ); /* var(--BOX-GREY-color) */ + background-color: rgba( 160, 160, 160, 1 ); /* var(--BOX-GREY-color) */ } .btn.cstyle.grey > * { - border-color: rgba( 128, 128, 128, 1 ); /* var(--BOX-GREY-color) */ + border-color: rgba( 160, 160, 160, 1 ); /* var(--BOX-GREY-color) */ } .btn.cstyle.orange { @@ -519,7 +667,7 @@ .btn.cstyle.transparent { background-color: transparent; - color: #101010; /* var(--MAIN-TEXT-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--MAIN-TEXT-color) */ } .btn.cstyle.transparent:hover, @@ -529,26 +677,21 @@ } .btn.cstyle.transparent > * { - color: #4a4a4a; /* var(--MAIN-TITLES-TEXT-color) */ + color: rgba( 74, 74, 74, 1 ); /* var(--MAIN-TITLES-TEXT-color) */ } #body .tags a.tag-link { - background-color: #7dc903; /* var(--TAG-BG-color) */ - color: #ffffff; /* var(--MAIN-BG-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--TAG-BG-color) */ + color: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */ margin-right: 16px; } #body .tags a.tag-link:before { - border-right-color: #7dc903; /* var(--TAG-BG-color) */ + border-right-color: rgba( 125, 201, 3, 1 ); /* var(--TAG-BG-color) */ } #body .tags a.tag-link:after { - background: #ffffff; /* var(--MAIN-BG-color) */ - } - - #body .tab-nav-button.active { - background-color: #ffffff !important; /* var(--MAIN-BG-color) */ - border-bottom-color: #ffffff !important; /* var(--MAIN-BG-color) */ + background: rgba( 255, 255, 255, 1 ); /* var(--MAIN-BG-color) */ } .badge > * { @@ -577,15 +720,15 @@ } .badge.primary > .badge-content { - background-color: #7dc903; /* var(--INTERNAL-PRIMARY-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */ } .badge.secondary > .badge-content { - background-color: #486ac9; /* var(--INTERNAL-SECONDARY-color) */ + background-color: rgba( 72, 106, 201, 1 ); /* var(--INTERNAL-SECONDARY-color) */ } .badge.accent > .badge-content { - background-color: #ff88ff; /* var(--INTERNAL-ACCENT-color) */ + background-color: rgba( 255, 136, 255, 1 ); /* var(--INTERNAL-ACCENT-color) */ } .badge.blue > .badge-content { @@ -597,7 +740,7 @@ } .badge.grey > .badge-content { - background-color: rgba( 128, 128, 128, 1 ); /* var(--INTERNAL-BOX-GREY-color) */ + background-color: rgba( 160, 160, 160, 1 ); /* var(--INTERNAL-BOX-GREY-color) */ } .badge.orange > .badge-content { @@ -610,18 +753,51 @@ .badge.transparent > .badge-content { background-color: transparent; - color: #4a4a4a; /* var(--MAIN-TITLES-TEXT-color) */ + color: rgba( 74, 74, 74, 1 ); /* var(--MAIN-TITLES-TEXT-color) */ } - article ul li input[type="checkbox"] { - background-color: #ffffff; /* var(--INTERNAL-MAIN-BG-color); */ - color: #101010; /* var(--INTERNAL-MAIN-TEXT-color) */ + article ul > li > input[type="checkbox"] { + background-color: rgba( 255, 255, 255, 1 ); /* var(--INTERNAL-MAIN-BG-color); */ + color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */ } - article ul li input[type="checkbox"]::before { - box-shadow: inset 1em 1em #7dc903; /* var(--INTERNAL-PRIMARY-color) */ + article ul > li > input[type="checkbox"]::before { + box-shadow: inset 1em 1em rgba( 125, 201, 3, 1 ); /* var(--INTERNAL-PRIMARY-color) */ } + /* no style support for tabs in IE11; all styled as default */ + #body .tab-nav-button { + color: rgba( 16, 16, 16, 1 ); /* var(--INTERNAL-MAIN-TEXT-color) */ + } + + #body .tab-nav-button.active { + background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */ + border-bottom-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */ + border-left-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */ + border-right-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */ + border-top-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--VARIABLE-BOX-TEXT-color) */ + } + + #body .tab-nav-button.active > *{ + background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */ + } + + #body .tab-nav-button > * > *{ + border-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */ + } + + #body .tab-content{ + background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */ + border-color: rgba( 134, 134, 134, .4 ); /* var(--VARIABLE-BOX-color) */ + } + + #body .tab-content-text{ + background-color: rgba( 255, 255, 255, 1 ); /* var(--VARIABLE-BOX-BG-color) */ + color: rgba( 16, 16, 16, 1 ); /* var(--VARIABLE-BOX-TEXT-color) */ + } + + /* ----------------------------------------------- */ /* set further styles to fix broken stuff in IE11 */ /* turn off animiation in IE because this causes the menu @@ -632,8 +808,8 @@ /* our silly dinosaur browser wants to have the real colors */ #header-wrapper { - background-color: #7dc903; /* var(--MENU-HEADER-BG-color) */ - border-bottom-color: #7dc903; /* var(--MENU-HEADER-BORDER-color) */ + background-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BG-color) */ + border-bottom-color: rgba( 125, 201, 3, 1 ); /* var(--MENU-HEADER-BORDER-color) */ } /* clears the 'X' from Internet Explorer's search input */ @@ -657,3 +833,11 @@ display: none; } } + +@media print and (-ms-high-contrast:none) { + code.copy-to-clipboard-code { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-right-width: 1px; + } +} diff --git a/docs/public/css/nucleus.css b/docs/public/css/nucleus.css index 05970ee..668effa 100644 --- a/docs/public/css/nucleus.css +++ b/docs/public/css/nucleus.css @@ -82,6 +82,9 @@ sup { sub { bottom: -0.25em; } +iframe { + border: 0; } + img { border: 0; max-width: 100%; } @@ -90,7 +93,7 @@ svg:not(:root) { overflow: hidden; } figure { - margin: 1em 40px; } + margin: 1rem 2.5rem; } hr { height: 0; } @@ -108,7 +111,8 @@ textarea { margin: 0; } button { - overflow: visible; } + overflow: visible; + padding: 0; } button, select { @@ -242,7 +246,7 @@ textarea { input[type="checkbox"], input[type="radio"] { display: inline; - margin-right: 0.425rem; } + margin-inline-end: 0.425rem; } input[type="file"] { width: 100%; } diff --git a/docs/public/css/perfect-scrollbar.min.css b/docs/public/css/perfect-scrollbar.min.css index 6761910..e033639 100644 --- a/docs/public/css/perfect-scrollbar.min.css +++ b/docs/public/css/perfect-scrollbar.min.css @@ -1 +1 @@ -.ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}} \ No newline at end of file +:root{--ps-thumb-color:#aaa;--ps-thumb-hover-color:#999;--ps-rail-hover-color:#eee}.ps{overflow:hidden !important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color 0.2s linear, opacity 0.2s linear;-webkit-transition:background-color 0.2s linear, opacity 0.2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color 0.2s linear, opacity 0.2s linear;-webkit-transition:background-color 0.2s linear, opacity 0.2s linear;width:15px;right:0;position:absolute}.ps--active-x > .ps__rail-x,.ps--active-y > .ps__rail-y{display:block;background-color:transparent}.ps--focus > .ps__rail-x,.ps--focus > .ps__rail-y,.ps--scrolling-x > .ps__rail-x,.ps--scrolling-y > .ps__rail-y,.ps:hover > .ps__rail-x,.ps:hover > .ps__rail-y{opacity:0.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;background-color:var(--ps-rail-hover-color);opacity:0.9}.ps__thumb-x{background-color:#aaa;background-color:var(--ps-thumb-color);border-radius:6px;transition:background-color 0.2s linear, height 0.2s ease-in-out;-webkit-transition:background-color 0.2s linear, height 0.2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;background-color:var(--ps-thumb-color);border-radius:6px;transition:background-color 0.2s linear, width 0.2s ease-in-out;-webkit-transition:background-color 0.2s linear, width 0.2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus > .ps__thumb-x,.ps__rail-x:hover > .ps__thumb-x{background-color:#999;background-color:var(--ps-thumb-hover-color);height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus > .ps__thumb-y,.ps__rail-y:hover > .ps__thumb-y{background-color:#999;background-color:var(--ps-thumb-hover-color);width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto !important}}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.ps{overflow:auto !important}} \ No newline at end of file diff --git a/docs/public/css/tags.css b/docs/public/css/tags.css index a45a737..3a32389 100644 --- a/docs/public/css/tags.css +++ b/docs/public/css/tags.css @@ -1,6 +1,6 @@ /* Tags */ -#head-tags{ +.tags{ margin-left:1rem; margin-top:1rem; } @@ -8,7 +8,7 @@ #body .tags a.tag-link { border-bottom-right-radius: 3px; border-top-right-radius: 3px; - box-shadow: 0 1px 2px rgba(0,0,0,0.2); + box-shadow: 0 1px 2px rgba( 0, 0, 0, .2 ); display: inline-block; font-size: 0.8em; font-weight: 400; diff --git a/docs/public/css/theme-auto.css b/docs/public/css/theme-auto.css index 4e57dc0..9108620 100644 --- a/docs/public/css/theme-auto.css +++ b/docs/public/css/theme-auto.css @@ -1,2 +1,2 @@ -@import "theme-relearn-light.css" screen; -@import "theme-relearn-dark.css" screen and (prefers-color-scheme: dark); \ No newline at end of file +@import "theme-relearn-light.css" screen and (prefers-color-scheme: light); +@import "theme-relearn-dark.css" screen and (prefers-color-scheme: dark); diff --git a/docs/public/css/theme-blue.css b/docs/public/css/theme-blue.css index 648cac0..5b49219 100644 --- a/docs/public/css/theme-blue.css +++ b/docs/public/css/theme-blue.css @@ -6,41 +6,41 @@ @import "chroma-learn.css"; :root { - --MAIN-TEXT-color: #323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */ - --MAIN-TITLES-H1-color: #222222; /* text color of h1 titles */ - --MAIN-LINK-color: #1c90f3; /* Color of links */ - --MAIN-LINK-HOVER-color: #167ad0; /* Color of hovered links */ - --MAIN-BG-color: #ffffff; /* color of text by default */ + --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */ + --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */ + --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */ + --MAIN-LINK-color: rgba( 28, 144, 243, 1 ); /* Color of links */ + --MAIN-LINK-HOVER-color: rgba( 22, 122, 208, 1 ); /* Color of hovered links */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */ /* adjusted to base16-snazzy chroma style */ - --CODE-BLOCK-color: #e2e4e5; /* fallback color for code text */ - --CODE-BLOCK-BG-color: #282a36; /* fallback color for code background */ - --CODE-BLOCK-BORDER-color: #282a36; /* color of block code border */ + --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */ + --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */ + --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */ - --CODE-INLINE-color: #5e5e5e; /* color for inline code text */ - --CODE-INLINE-BG-color: #fffae9; /* color for inline code background */ - --CODE-INLINE-BORDER-color: #f8e8c8; /* color of inline code border */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */ + --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */ + --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */ - --MENU-HOME-LINK-color: #2d363f; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #000000; /* Color of the hovered home button text */ + --MENU-HOME-LINK-color: rgba( 45, 54, 63, 1 ); /* Color of the home button text */ + --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */ - --MENU-HEADER-BG-color: #1c90f3; /* Background color of menu header */ - --MENU-HEADER-BORDER-color: #33a1ff; /*Color of menu header border */ + --MENU-HEADER-BG-color: rgba( 28, 144, 243, 1 ); /* Background color of menu header */ + --MENU-HEADER-BORDER-color: rgba( 51, 161, 255, 1 ); /*Color of menu header border */ - --MENU-SEARCH-color: #ffffff; /* Color of search field text */ - --MENU-SEARCH-BG-color: #167ad0; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BORDER-color: #33a1ff; /* Override search field border color */ + --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */ + --MENU-SEARCH-BG-color: rgba( 22, 122, 208, 1 ); /* Search field background color (by default borders + icons) */ + --MENU-SEARCH-BORDER-color: rgba( 51, 161, 255, 1 ); /* Override search field border color */ - --MENU-SECTIONS-ACTIVE-BG-color: #20272b; /* Background color of the active section and its children */ - --MENU-SECTIONS-BG-color: #252c31; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 32, 39, 43, 1 ); /* Background color of the active section and its children */ + --MENU-SECTIONS-BG-color: rgba( 37, 44, 49, 1 ); /* Background color of other sections */ + --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */ + --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */ - --MENU-VISITED-color: #1c90f3; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #20272b; /* Color of
separator in menu */ + --MENU-VISITED-color: rgba( 28, 144, 243, 1 ); /* Color of 'page visited' icons in menu */ + --MENU-SECTION-HR-color: rgba( 32, 39, 43, 1 ); /* Color of
separator in menu */ /* base styling for boxes */ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */ diff --git a/docs/public/css/theme-green.css b/docs/public/css/theme-green.css index abc2435..9dd9f4a 100644 --- a/docs/public/css/theme-green.css +++ b/docs/public/css/theme-green.css @@ -6,41 +6,41 @@ @import "chroma-learn.css"; :root { - --MAIN-TEXT-color: #323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */ - --MAIN-TITLES-H1-color: #222222; /* text color of h1 titles */ - --MAIN-LINK-color: #599a3e; /* Color of links */ - --MAIN-LINK-HOVER-color: #3f6d2c; /* Color of hovered links */ - --MAIN-BG-color: #ffffff; /* color of text by default */ + --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */ + --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */ + --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */ + --MAIN-LINK-color: rgba( 89, 154, 62, 1 ); /* Color of links */ + --MAIN-LINK-HOVER-color: rgba( 63, 109, 44, 1 ); /* Color of hovered links */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */ /* adjusted to base16-snazzy chroma style */ - --CODE-BLOCK-color: #e2e4e5; /* fallback color for code text */ - --CODE-BLOCK-BG-color: #282a36; /* fallback color for code background */ - --CODE-BLOCK-BORDER-color: #282a36; /* color of block code border */ + --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */ + --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */ + --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */ - --CODE-INLINE-color: #5e5e5e; /* color for inline code text */ - --CODE-INLINE-BG-color: #fffae9; /* color for inline code background */ - --CODE-INLINE-BORDER-color: #f8e8c8; /* color of inline code border */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */ + --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */ + --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */ - --MENU-HOME-LINK-color: #2e3b2e; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #000000; /* Color of the hovered home button text */ + --MENU-HOME-LINK-color: rgba( 46, 59, 46, 1 ); /* Color of the home button text */ + --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */ - --MENU-HEADER-BG-color: #74b559; /* Background color of menu header */ - --MENU-HEADER-BORDER-color: #9cd484; /*Color of menu header border */ + --MENU-HEADER-BG-color: rgba( 116, 181, 89, 1 ); /* Background color of menu header */ + --MENU-HEADER-BORDER-color: rgba( 156, 212, 132, 1 ); /*Color of menu header border */ - --MENU-SEARCH-color: #ffffff; /* Color of search field text */ - --MENU-SEARCH-BG-color: #599a3e; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BORDER-color: #84c767; /* Override search field border color */ + --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */ + --MENU-SEARCH-BG-color: rgba( 89, 154, 62, 1 ); /* Search field background color (by default borders + icons) */ + --MENU-SEARCH-BORDER-color: rgba( 132, 199, 103, 1 ); /* Override search field border color */ - --MENU-SECTIONS-ACTIVE-BG-color: #1b211c; /* Background color of the active section and its children */ - --MENU-SECTIONS-BG-color: #222723; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 27, 33, 28, 1 ); /* Background color of the active section and its children */ + --MENU-SECTIONS-BG-color: rgba( 34, 39, 35, 1 ); /* Background color of other sections */ + --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */ + --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */ - --MENU-VISITED-color: #599a3e; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #18211c; /* Color of
separator in menu */ + --MENU-VISITED-color: rgba( 89, 154, 62, 1 ); /* Color of 'page visited' icons in menu */ + --MENU-SECTION-HR-color: rgba( 24, 33, 28, 1 ); /* Color of
separator in menu */ /* base styling for boxes */ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */ diff --git a/docs/public/css/theme-learn.css b/docs/public/css/theme-learn.css index 6bc79d7..1fe8129 100644 --- a/docs/public/css/theme-learn.css +++ b/docs/public/css/theme-learn.css @@ -6,41 +6,41 @@ @import "chroma-learn.css"; :root { - --MAIN-TEXT-color: #323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */ - --MAIN-TITLES-H1-color: #222222; /* text color of h1 titles */ - --MAIN-LINK-color: #00bdf3; /* Color of links */ - --MAIN-LINK-HOVER-color: #0082a7; /* Color of hovered links */ - --MAIN-BG-color: #ffffff; /* color of text by default */ + --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */ + --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */ + --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */ + --MAIN-LINK-color: rgba( 0, 189, 243, 1 ); /* Color of links */ + --MAIN-LINK-HOVER-color: rgba( 0, 130, 167, 1 ); /* Color of hovered links */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */ /* adjusted to base16-snazzy chroma style */ - --CODE-BLOCK-color: #e2e4e5; /* fallback color for code text */ - --CODE-BLOCK-BG-color: #282a36; /* fallback color for code background */ - --CODE-BLOCK-BORDER-color: #282a36; /* color of block code border */ + --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */ + --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */ + --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */ - --CODE-INLINE-color: #5e5e5e; /* color for inline code text */ - --CODE-INLINE-BG-color: #fff7dd; /* color for inline code background */ - --CODE-INLINE-BORDER-color: #fbf0cb; /* color of inline code border */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */ + --CODE-INLINE-BG-color: rgba( 255, 247, 221, 1 ); /* color for inline code background */ + --CODE-INLINE-BORDER-color: rgba( 251, 240, 203, 1 ); /* color of inline code border */ - --MENU-HOME-LINK-color: #e0e0e0; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #f0f0f0; /* Color of the hovered home button text */ + --MENU-HOME-LINK-color: rgba( 224, 224, 224, 1 ); /* Color of the home button text */ + --MENU-HOME-LINK-HOVER-color: rgba( 240, 240, 240, 1 ); /* Color of the hovered home button text */ - --MENU-HEADER-BG-color: #8451a1; /* Background color of menu header */ - --MENU-HEADER-BORDER-color: #9c6fb6; /*Color of menu header border */ + --MENU-HEADER-BG-color: rgba( 132, 81, 161, 1 ); /* Background color of menu header */ + --MENU-HEADER-BORDER-color: rgba( 156, 111, 182, 1 ); /*Color of menu header border */ - --MENU-SEARCH-color: #ffffff; /* Color of search field text */ - --MENU-SEARCH-BG-color: #764890; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BORDER-color: #915eae; /* Override search field border color */ + --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */ + --MENU-SEARCH-BG-color: rgba( 118, 72, 144, 1 ); /* Search field background color (by default borders + icons) */ + --MENU-SEARCH-BORDER-color: rgba( 145, 94, 174, 1 ); /* Override search field border color */ - --MENU-SECTIONS-ACTIVE-BG-color: #251f29; /* Background color of the active section and its children */ - --MENU-SECTIONS-BG-color: #322a38; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #cccccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #ffffff; /* Color of background for the active category (only) */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 37, 31, 41, 1 ); /* Background color of the active section and its children */ + --MENU-SECTIONS-BG-color: rgba( 50, 42, 56, 1 ); /* Background color of other sections */ + --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */ + --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */ - --MENU-VISITED-color: #00bdf3; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #2a232f; /* Color of
separator in menu */ + --MENU-VISITED-color: rgba( 0, 189, 243, 1 ); /* Color of 'page visited' icons in menu */ + --MENU-SECTION-HR-color: rgba( 42, 35, 47, 1 ); /* Color of
separator in menu */ /* base styling for boxes */ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */ @@ -49,12 +49,9 @@ } body a#logo, +body a#logo:hover, body #logo svg, body #logo svg * { color: var(--INTERNAL-MENU-SEARCH-color); fill: var(--INTERNAL-MENU-SEARCH-color) !important; } - -body a#logo:hover { - color: var(--INTERNAL-MENU-SEARCH-color); -} diff --git a/docs/public/css/theme-neon.css b/docs/public/css/theme-neon.css index 15be486..35d04bd 100644 --- a/docs/public/css/theme-neon.css +++ b/docs/public/css/theme-neon.css @@ -10,47 +10,49 @@ @supports not (-ms-high-contrast:none) { :root { - --PRIMARY-color: #f300b2; /* brand primary color */ - --SECONDARY-color: #1c90f3; /* brand secondary color */ - --ACCENT-color: #ffff00; /* brand accent color, used for search highlights */ + --PRIMARY-color: rgba( 243, 0, 178, 1 ); /* brand primary color */ + --SECONDARY-color: rgba( 28, 144, 243, 1 ); /* brand secondary color */ + --ACCENT-color: rgba( 255, 255, 0, 1 ); /* brand accent color, used for search highlights */ - --MAIN-TEXT-color: #e0e0e0; /* text color of content and h1 titles */ - --MAIN-LINK-HOVER-color: #4cabff; /* hovered link color of content */ - --MAIN-BG-color: #202020; /* background color of content */ + --MAIN-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of content and h1 titles */ + --MAIN-LINK-HOVER-color: rgba( 76, 171, 255, 1 ); /* hovered link color of content */ + --MAIN-BG-color: rgba( 32, 32, 32, 1 ); /* background color of content */ /* optional overwrites for specific headers */ - --MAIN-TITLES-TEXT-color: #f300b2; /* text color of h2-h6 titles and transparent box titles */ - --MAIN-TITLES-H3-color: #00f3d3; /* text color of h3-h6 titles */ - --MAIN-TITLES-H4-color: #ffff00; /* text color of h4-h6 titles */ + --MAIN-TITLES-TEXT-color: rgba( 243, 0, 178, 1 ); /* text color of h2-h6 titles and transparent box titles */ + --MAIN-TITLES-H3-color: rgba( 0, 243, 211, 1 ); /* text color of h3-h6 titles */ + --MAIN-TITLES-H4-color: rgba( 255, 255, 0, 1 ); /* text color of h4-h6 titles */ /* adjusted to neon chroma style */ - --CODE-BLOCK-color: #f8f8f2; /* fallback text color of block code; should be adjusted to your selected chroma style */ - --CODE-BLOCK-BG-color: #000000; /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-color: rgba( 248, 248, 242, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: rgba( 0, 0, 0, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */ - --CODE-INLINE-color: #82e550; /* text color of inline code */ - --CODE-INLINE-BG-color: #282a36; /* background color of inline code */ - --CODE-INLINE-BORDER-color: #464646; /* border color of inline code */ + --CODE-INLINE-color: rgba( 130, 229, 80, 1 ); /* text color of inline code */ + --CODE-INLINE-BG-color: rgba( 40, 42, 54, 1 ); /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgba( 70, 70, 70, 1 ); /* border color of inline code */ + --BROWSER-theme: dark; /* name of the theme for browser scrollbars of the main section */ --MERMAID-theme: dark; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */ - --SWAGGER-theme: dark; /* name of the default Swagger theme for this variant, can be overridden in config.toml */ + --OPENAPI-theme: dark; /* name of the default OpenAPI theme for this variant, can be overridden in config.toml */ + --OPENAPI-CODE-theme: tomorrow-night; /* name of the default OpenAPI code theme for this variant, can be overridden in config.toml */ --MENU-HEADER-BG-color: rgba( 0, 0, 0, 0 ); /* background color of menu header */ - --MENU-HOME-LINK-color: #ffffff; /* home button color if configured */ - --MENU-HOME-LINK-HOVER-color: #d0d0d0; /* hovered home button color if configured */ + --MENU-HOME-LINK-color: rgba( 255, 255, 255, 1 ); /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: rgba( 208, 208, 208, 1 ); /* hovered home button color if configured */ - --MENU-SEARCH-color: #f8f8f8; /* text and icon color of search box */ + --MENU-SEARCH-color: rgba( 248, 248, 248, 1 ); /* text and icon color of search box */ --MENU-SEARCH-BG-color: rgba( 16, 16, 16, .6 ); /* background color of search box */ - --MENU-SEARCH-BORDER-color: #e8e8e8; /* border color of search box */ + --MENU-SEARCH-BORDER-color: rgba( 232, 232, 232, 1 ); /* border color of search box */ - --MENU-SECTIONS-BG-color: linear-gradient( 165deg, #f300b2d3 0%, #1c90f3b3 65%, #00e3d3b3 100% ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-BG-color: linear-gradient( 165deg, rgba( 243, 0, 178, .825 ) 0%, rgba( 28, 144, 243, .7 ) 65%, rgba( 0, 227, 211, .7 ) 100% ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 0, 0, 0, .166 ); /* background color of the active menu section */ - --MENU-SECTIONS-LINK-color: #ffffff; /* link color of menu topics */ - --MENU-SECTIONS-LINK-HOVER-color: #d0d0d0; /* hovered link color of menu topics */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #56ffe8; /* text color of the displayed menu topic */ - --MENU-SECTION-HR-color: #bababa; /* separator color of menu footer */ + --MENU-SECTIONS-LINK-color: rgba( 255, 255, 255, 1 ); /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 208, 208, 208, 1 ); /* hovered link color of menu topics */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 86, 255, 232, 1 ); /* text color of the displayed menu topic */ + --MENU-SECTION-HR-color: rgba( 186, 186, 186, 1 ); /* separator color of menu footer */ - --MENU-VISITED-color: #33a1ff; /* icon color of visited menu topics if configured */ + --MENU-VISITED-color: rgba( 51, 161, 255, 1 ); /* icon color of visited menu topics if configured */ /* base styling for boxes */ --BOX-CAPTION-color: rgba( 240, 240, 240, 1 ); /* text color of colored box titles */ @@ -62,7 +64,7 @@ --BOX-BLUE-TEXT-color: var( --BOX-BLUE-color ); /* text color of blue boxes */ --BOX-GREEN-color: rgba( 42, 178, 24, 1 ); /* background color of green boxes */ --BOX-GREEN-TEXT-color: var( --BOX-GREEN-color ); /* text color of green boxes */ - --BOX-GREY-color: rgba( 128, 128, 128, 1 ); /* background color of grey boxes */ + --BOX-GREY-color: rgba( 160, 160, 160, 1 ); /* background color of grey boxes */ --BOX-GREY-TEXT-color: var( --BOX-GREY-color ); /* text color of grey boxes */ --BOX-ORANGE-color: rgba( 237, 153, 9, 1 ); /* background color of orange boxes */ --BOX-ORANGE-TEXT-color: var( --BOX-ORANGE-color ); /* text color of orange boxes */ @@ -71,6 +73,7 @@ } body a#logo, +body a#logo:hover, body #logo svg, body #logo svg * { color: var(--INTERNAL-MENU-SEARCH-BORDER-color); @@ -78,138 +81,128 @@ body #logo svg * { } body a#logo{ - color: var(--INTERNAL-MENU-SEARCH-BORDER-color); text-shadow: 0 0 1px var(--INTERNAL-MENU-SEARCH-BORDER-color), 0 0 2px var(--INTERNAL-MENU-SEARCH-BORDER-color), 0 0 4px var(--INTERNAL-MENU-SEARCH-BORDER-color), - 0 0 8px #808080, + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color), 0 0 8px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color); } body h1 { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 4px #fff, - 0 0 8px #fff, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 4px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 255, 255, 255, 1 ), 0 0 3px var(--INTERNAL-MAIN-TITLES-H1-color), 0 0 6px var(--INTERNAL-MAIN-TITLES-H1-color), 0 0 8px var(--INTERNAL-MAIN-TITLES-H1-color); } body h2 { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MAIN-TITLES-H2-color), 0 0 8px var(--INTERNAL-MAIN-TITLES-H2-color), 0 0 10px var(--INTERNAL-MAIN-TITLES-H2-color); } -@media screen { - body:not(.print) rapi-doc::part(section-overview-title) { - color: #fff; - text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, - 0 0 4px var(--INTERNAL-MAIN-TITLES-H2-color), - 0 0 8px var(--INTERNAL-MAIN-TITLES-H2-color), - 0 0 10px var(--INTERNAL-MAIN-TITLES-H2-color); - } -} - body h3, body .article-subheading { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MAIN-TITLES-H3-color), 0 0 8px var(--INTERNAL-MAIN-TITLES-H3-color), 0 0 10px var(--INTERNAL-MAIN-TITLES-H3-color); } body h4 { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MAIN-TITLES-H4-color), 0 0 8px var(--INTERNAL-MAIN-TITLES-H4-color), 0 0 10px var(--INTERNAL-MAIN-TITLES-H4-color); } body h5 { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 3px rgba( 255, 255, 255, 1 ), + 0 0 6px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MAIN-TITLES-H5-color), - 0 0 8px var(--INTERNAL-MAIN-TITLES-H5-color), - 0 0 10px var(--INTERNAL-MAIN-TITLES-H5-color); + 0 0 8px var(--INTERNAL-MAIN-TITLES-H5-color); } body h6 { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 4px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MAIN-TITLES-H6-color), - 0 0 8px var(--INTERNAL-MAIN-TITLES-H6-color), - 0 0 10px var(--INTERNAL-MAIN-TITLES-H5-color); + 0 0 8px var(--INTERNAL-MAIN-TITLES-H6-color); } -body #sidebar ul.collapsible-menu li.active > .toggle, -body #sidebar ul.topics li.active > a { - color: #fff; - text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, - 0 0 4px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color), - 0 0 8px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color); +.swagger-ui h4, +.swagger-ui h5, +.swagger-ui h6{ + color: rgba( 255, 255, 255, 1 ) !important; } body #sidebar .searchbox button:hover, body .searchbox span:hover { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MENU-SEARCH-color), 0 0 8px var(--INTERNAL-MENU-SEARCH-color); } body #sidebar select:hover, -body #sidebar .collapsible-menu .toggle:hover, +body #sidebar .collapsible-menu li:not(.active) > label:hover, body #sidebar .select-container:hover, body #sidebar a:hover, body #sidebar button:hover { - color: #fff; + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color), 0 0 8px var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color); } -body #homelinks a:hover { - color: #fff; +body #sidebar li.active > label, +body #sidebar li.active > a { + color: rgba( 255, 255, 255, 1 ); text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 8px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), + 0 0 4px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color), + 0 0 8px var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color); +} + +body #homelinks a:hover { + color: rgba( 255, 255, 255, 1 ); + text-shadow: + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 8px rgba( 128, 128, 128, 1 ), 0 0 4px var(--INTERNAL-MENU-HOME-LINK-HOVER-color), 0 0 8px var(--INTERNAL-MENU-HOME-LINK-HOVER-color); } @@ -228,9 +221,9 @@ body .badge, body .btn, body div.box { box-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 4px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 4px rgba( 128, 128, 128, 1 ), 0 0 4px var(--VARIABLE-BOX-color); } @@ -239,12 +232,13 @@ body .btn, body .btn > *, body div.box > .box-label { text-shadow: - 0 0 1px #fff, - 0 0 2px #fff, - 0 0 4px #808080, + 0 0 1px rgba( 255, 255, 255, 1 ), + 0 0 2px rgba( 255, 255, 255, 1 ), + 0 0 4px rgba( 128, 128, 128, 1 ), 0 0 4px var(--VARIABLE-BOX-CAPTION-color); } +body .tab-panel-cstyle:not(.transparent), body .badge.cstyle:not(.transparent), body .btn.cstyle { --VARIABLE-BOX-TEXT-color: var(--VARIABLE-BOX-CAPTION-color); @@ -280,12 +274,19 @@ body .box.cstyle.transparent { #body h6 { text-shadow: none; } + #body .badge, + #body .badge > .badge-content, #body .btn, + #body .btn > *, #body div.box, #body div.box > .box-label { box-shadow: none; text-shadow: none; } + #body .badge.cstyle:not(.transparent), + #body .btn.cstyle { + --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NEUTRAL-TEXT-color); + } } /* if we are in print chapter preview our @media statement from @@ -298,11 +299,23 @@ above will not apply, so we have to repeat it here */ .print #body h6 { text-shadow: none; } +.print #body .badge, +.print #body .badge > .badge-content, .print #body .btn, +.print #body .btn > *, .print #body div.box, .print #body div.box > .box-label { box-shadow: none; text-shadow: none; } +.print #body .badge.cstyle:not(.transparent), +.print #body .btn.cstyle { + --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-NEUTRAL-TEXT-color); +} + +#content-wrapper { + --ps-thumb-color: rgba( 208, 208, 208, 1 ); + --ps-thumb-hover-color: rgba( 204, 204, 204, 1 ); +} } diff --git a/docs/public/css/theme-red.css b/docs/public/css/theme-red.css index 84148ef..c2b7029 100644 --- a/docs/public/css/theme-red.css +++ b/docs/public/css/theme-red.css @@ -6,41 +6,41 @@ @import "chroma-learn.css"; :root { - --MAIN-TEXT-color: #323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5-h6 */ - --MAIN-TITLES-H1-color: #222222; /* text color of h1 titles */ - --MAIN-LINK-color: #f31c1c; /* Color of links */ - --MAIN-LINK-HOVER-color: #d01616; /* Color of hovered links */ - --MAIN-BG-color: #ffffff; /* color of text by default */ + --MAIN-TEXT-color: rgba( 50, 50, 50, 1 ); /* Color of text by default */ + --MAIN-TITLES-TEXT-color: rgba( 94, 94, 94, 1 ); /* Color of titles h2-h3-h4-h5-h6 */ + --MAIN-TITLES-H1-color: rgba( 34, 34, 34, 1 ); /* text color of h1 titles */ + --MAIN-LINK-color: rgba( 243, 28, 28, 1 ); /* Color of links */ + --MAIN-LINK-HOVER-color: rgba( 208, 22, 22, 1 ); /* Color of hovered links */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* color of text by default */ /* adjusted to base16-snazzy chroma style */ - --CODE-BLOCK-color: #e2e4e5; /* fallback color for code text */ - --CODE-BLOCK-BG-color: #282a36; /* fallback color for code background */ - --CODE-BLOCK-BORDER-color: #282a36; /* color of block code border */ + --CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */ + --CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */ + --CODE-BLOCK-BORDER-color: rgba( 40, 42, 54, 1 ); /* color of block code border */ - --CODE-INLINE-color: #5e5e5e; /* color for inline code text */ - --CODE-INLINE-BG-color: #fffae9; /* color for inline code background */ - --CODE-INLINE-BORDER-color: #f8e8c8; /* color of inline code border */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* color for inline code text */ + --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* color for inline code background */ + --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* color of inline code border */ - --MENU-HOME-LINK-color: #382b2b; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #000000; /* Color of the hovered home button text */ + --MENU-HOME-LINK-color: rgba( 56, 43, 43, 1 ); /* Color of the home button text */ + --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* Color of the hovered home button text */ - --MENU-HEADER-BG-color: #dc1010; /* Background color of menu header */ - --MENU-HEADER-BORDER-color: #e23131; /*Color of menu header border */ + --MENU-HEADER-BG-color: rgba( 220, 16, 16, 1 ); /* Background color of menu header */ + --MENU-HEADER-BORDER-color: rgba( 226, 49, 49, 1 ); /*Color of menu header border */ - --MENU-SEARCH-color: #ffffff; /* Color of search field text */ - --MENU-SEARCH-BG-color: #b90000; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BORDER-color: #ef2020; /* Override search field border color */ + --MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text */ + --MENU-SEARCH-BG-color: rgba( 185, 0, 0, 1 ); /* Search field background color (by default borders + icons) */ + --MENU-SEARCH-BORDER-color: rgba( 239, 32, 32, 1 ); /* Override search field border color */ - --MENU-SECTIONS-ACTIVE-BG-color: #2b2020; /* Background color of the active section and its children */ - --MENU-SECTIONS-BG-color: #312525; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 43, 32, 32, 1 ); /* Background color of the active section and its children */ + --MENU-SECTIONS-BG-color: rgba( 49, 37, 37, 1 ); /* Background color of other sections */ + --MENU-SECTIONS-LINK-color: rgba( 204, 204, 204, 1 ); /* Color of links in menu */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 230, 230, 230, 1 ); /* Color of links in menu, when hovered */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 119, 119, 119, 1 ); /* Color of active category text */ + --MENU-SECTION-ACTIVE-CATEGORY-BG-color: rgba( 255, 255, 255, 1 ); /* Color of background for the active category (only) */ - --MENU-VISITED-color: #f31c1c; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #2b2020; /* Color of
separator in menu */ + --MENU-VISITED-color: rgba( 243, 28, 28, 1 ); /* Color of 'page visited' icons in menu */ + --MENU-SECTION-HR-color: rgba( 43, 32, 32, 1 ); /* Color of
separator in menu */ /* base styling for boxes */ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* color of the title text */ diff --git a/docs/public/css/theme-relearn-dark.css b/docs/public/css/theme-relearn-dark.css index 7ad782c..6f2c2a4 100644 --- a/docs/public/css/theme-relearn-dark.css +++ b/docs/public/css/theme-relearn-dark.css @@ -6,43 +6,45 @@ @import "chroma-relearn-dark.css"; :root { - --PRIMARY-color: #7dc903; /* brand primary color */ - --SECONDARY-color: #6c8ce3; /* brand secondary color */ - --ACCENT-color: #ff44ff; /* brand accent color, used for search highlights */ + --PRIMARY-color: rgba( 125, 201, 3, 1 ); /* brand primary color */ + --SECONDARY-color: rgba( 108, 140, 227, 1 ); /* brand secondary color */ + --ACCENT-color: rgba( 255, 68, 255, 1 ); /* brand accent color, used for search highlights */ - --MAIN-TEXT-color: #e0e0e0; /* text color of content and h1 titles */ - --MAIN-LINK-HOVER-color: #93b0ff; /* hovered link color of content */ - --MAIN-BG-color: #202020; /* background color of content */ - --MAIN-TITLES-TEXT-color: #ffffff; /* text color of h2-h6 titles and transparent box titles */ + --MAIN-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of content and h1 titles */ + --MAIN-LINK-HOVER-color: rgba( 147, 176, 255, 1 ); /* hovered link color of content */ + --MAIN-BG-color: rgba( 32, 32, 32, 1 ); /* background color of content */ + --MAIN-TITLES-TEXT-color: rgba( 255, 255, 255, 1 ); /* text color of h2-h6 titles and transparent box titles */ /* adjusted to relearn-dark chroma style */ - --CODE-BLOCK-color: #f8f8f8; /* fallback text color of block code; should be adjusted to your selected chroma style */ - --CODE-BLOCK-BG-color: #2b2b2b; /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-color: rgba( 248, 248, 248, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: rgba( 43, 43, 43, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */ - --CODE-INLINE-color: #82e550; /* text color of inline code */ - --CODE-INLINE-BG-color: #2d2d2d; /* background color of inline code */ - --CODE-INLINE-BORDER-color: #464646; /* border color of inline code */ + --CODE-INLINE-color: rgba( 130, 229, 80, 1 ); /* text color of inline code */ + --CODE-INLINE-BG-color: rgba( 45, 45, 45, 1 ); /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgba( 70, 70, 70, 1 ); /* border color of inline code */ + --BROWSER-theme: dark; /* name of the theme for browser scrollbars of the main section */ --MERMAID-theme: dark; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */ - --SWAGGER-theme: dark; /* name of the default Swagger theme for this variant, can be overridden in config.toml */ + --OPENAPI-theme: dark; /* name of the default OpenAPI theme for this variant, can be overridden in config.toml */ + --OPENAPI-CODE-theme: obsidian; /* name of the default OpenAPI code theme for this variant, can be overridden in config.toml */ - --MENU-HOME-LINK-color: #404040; /* home button color if configured */ - --MENU-HOME-LINK-HOVER-color: #000000; /* hovered home button color if configured */ + --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* hovered home button color if configured */ - --MENU-SEARCH-color: #e0e0e0; /* text and icon color of search box */ - --MENU-SEARCH-BG-color: #323232; /* background color of search box */ - --MENU-SEARCH-BORDER-color: #e0e0e0; /* border color of search box */ + --MENU-SEARCH-color: rgba( 224, 224, 224, 1 ); /* text and icon color of search box */ + --MENU-SEARCH-BG-color: rgba( 50, 50, 50, 1 ); /* background color of search box */ + --MENU-SEARCH-BORDER-color: rgba( 224, 224, 224, 1 ); /* border color of search box */ - --MENU-SECTIONS-BG-color: #2b2b2b; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ - --MENU-SECTIONS-LINK-color: #bababa; /* link color of menu topics */ - --MENU-SECTIONS-LINK-HOVER-color: #ffffff; /* hovered link color of menu topics */ - --MENU-SECTIONS-ACTIVE-BG-color: #323232; /* background color of the active menu section */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #82e550; /* text color of the displayed menu topic */ - --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */ + --MENU-SECTIONS-BG-color: rgba( 43, 43, 43, 1 ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-LINK-color: rgba( 186, 186, 186, 1 ); /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 255, 255, 255, 1 ); /* hovered link color of menu topics */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 50, 50, 50, 1 ); /* background color of the active menu section */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 130, 229, 80, 1 ); /* text color of the displayed menu topic */ + --MENU-SECTION-HR-color: rgba( 96, 96, 96, 1 ); /* separator color of menu footer */ - --MENU-VISITED-color: #486ac9; /* icon color of visited menu topics if configured */ + --MENU-VISITED-color: rgba( 72, 106, 201, 1 ); /* icon color of visited menu topics if configured */ --BOX-CAPTION-color: rgba( 240, 240, 240, 1 ); /* text color of colored box titles */ --BOX-BG-color: rgba( 20, 20, 20, 1 ); /* background color of colored boxes */ - --BOX-TEXT-color: #e0e0e0; /* text color of colored box content */ + --BOX-TEXT-color: rgba( 224, 224, 224, 1 ); /* text color of colored box content */ } diff --git a/docs/public/css/theme-relearn-light.css b/docs/public/css/theme-relearn-light.css index e79dd9a..eb79b13 100644 --- a/docs/public/css/theme-relearn-light.css +++ b/docs/public/css/theme-relearn-light.css @@ -6,40 +6,42 @@ @import "chroma-relearn-light.css"; :root { - --PRIMARY-color: #7dc903; /* brand primary color */ - --SECONDARY-color: #486ac9; /* brand secondary color */ - --ACCENT-color: #ff88ff; /* brand accent color, used for search highlights */ + --PRIMARY-color: rgba( 125, 201, 3, 1 ); /* brand primary color */ + --SECONDARY-color: rgba( 72, 106, 201, 1 ); /* brand secondary color */ + --ACCENT-color: rgba( 255, 136, 255, 1 ); /* brand accent color, used for search highlights */ - --MAIN-TEXT-color: #101010; /* text color of content and h1 titles */ - --MAIN-LINK-HOVER-color: #202891; /* hovered link color of content */ - --MAIN-BG-color: #ffffff; /* background color of content */ - --MAIN-TITLES-TEXT-color: #4a4a4a; /* text color of h2-h6 titles and transparent box titles */ + --MAIN-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of content and h1 titles */ + --MAIN-LINK-HOVER-color: rgba( 32, 40, 145, 1 ); /* hovered link color of content */ + --MAIN-BG-color: rgba( 255, 255, 255, 1 ); /* background color of content */ + --MAIN-TITLES-TEXT-color: rgba( 74, 74, 74, 1 ); /* text color of h2-h6 titles and transparent box titles */ /* adjusted to relearn-light chroma style */ - --CODE-BLOCK-color: #000000; /* fallback text color of block code; should be adjusted to your selected chroma style */ - --CODE-BLOCK-BG-color: #f8f8f8; /* fallback background color of block code; should be adjusted to your selected chroma style */ - --CODE-BLOCK-BORDER-color: #d8d8d8; /* border color of block code */ + --CODE-BLOCK-color: rgba( 0, 0, 0, 1 ); /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: rgba( 248, 248, 248, 1 ); /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BORDER-color: rgba( 216, 216, 216, 1 ); /* border color of block code */ - --CODE-INLINE-color: #5e5e5e; /* text color of inline code */ - --CODE-INLINE-BG-color: #fffae9; /* background color of inline code */ - --CODE-INLINE-BORDER-color: #f8e8c8; /* border color of inline code */ + --CODE-INLINE-color: rgba( 94, 94, 94, 1 ); /* text color of inline code */ + --CODE-INLINE-BG-color: rgba( 255, 250, 233, 1 ); /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgba( 248, 232, 200, 1 ); /* border color of inline code */ + --BROWSER-theme: light; /* name of the theme for browser scrollbars of the main section */ --MERMAID-theme: default; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */ - --SWAGGER-theme: light; /* name of the default Swagger theme for this variant, can be overridden in config.toml */ + --OPENAPI-theme: light; /* name of the default OpenAPI theme for this variant, can be overridden in config.toml */ + --OPENAPI-CODE-theme: obsidian; /* name of the default OpenAPI code theme for this variant, can be overridden in config.toml */ - --MENU-HOME-LINK-color: #404040; /* home button color if configured */ - --MENU-HOME-LINK-HOVER-color: #000000; /* hovered home button color if configured */ + --MENU-HOME-LINK-color: rgba( 64, 64, 64, 1 ); /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: rgba( 0, 0, 0, 1 ); /* hovered home button color if configured */ - --MENU-SEARCH-color: #e0e0e0; /* text and icon color of search box */ - --MENU-SEARCH-BG-color: #323232; /* background color of search box */ - --MENU-SEARCH-BORDER-color: #e0e0e0; /* border color of search box */ + --MENU-SEARCH-color: rgba( 224, 224, 224, 1 ); /* text and icon color of search box */ + --MENU-SEARCH-BG-color: rgba( 50, 50, 50, 1 ); /* background color of search box */ + --MENU-SEARCH-BORDER-color: rgba( 224, 224, 224, 1 ); /* border color of search box */ - --MENU-SECTIONS-BG-color: #282828; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-BG-color: rgba( 40, 40, 40, 1 ); /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ --MENU-SECTIONS-ACTIVE-BG-color: rgba( 0, 0, 0, .166 ); /* background color of the active menu section */ - --MENU-SECTIONS-LINK-color: #bababa; /* link color of menu topics */ - --MENU-SECTIONS-LINK-HOVER-color: #ffffff; /* hovered link color of menu topics */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #444444; /* text color of the displayed menu topic */ - --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */ + --MENU-SECTIONS-LINK-color: rgba( 186, 186, 186, 1 ); /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: rgba( 255, 255, 255, 1 ); /* hovered link color of menu topics */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgba( 68, 68, 68, 1 ); /* text color of the displayed menu topic */ + --MENU-SECTION-HR-color: rgba( 96, 96, 96, 1 ); /* separator color of menu footer */ --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* text color of colored box titles */ --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* background color of colored boxes */ diff --git a/docs/public/css/theme.css b/docs/public/css/theme.css index 7ec93d7..6a81fc3 100644 --- a/docs/public/css/theme.css +++ b/docs/public/css/theme.css @@ -1,7 +1,97 @@ @charset "UTF-8"; @import "tags.css"; -@import "tabs.css"; + +/* until browsers don't let us set length values based on dppx, we +need a way to calculate them ourself */ +:root { + --dpr: 1; + --bpx: 1; +} +@media (min-resolution: 105dpi) { + :root { + --dpr: 1.1; + --bpx: 1.1; + } +} +@media (min-resolution: 115dpi) { + :root { + --dpr: 1.2; + --bpx: 1.2; + } +} +@media (min-resolution: 120dpi) { + :root { + --dpr: 1.25; + --bpx: 1.25; + } +} +@media (min-resolution: 128dpi) { + :root { + --dpr: 1.333; + --bpx: 1.333; + } +} +@media (min-resolution: 144dpi) { + :root { + --dpr: 1.5; + --bpx: 1.5; + } +} +@media (min-resolution: 160dpi) { + :root { + --dpr: 1.666; + --bpx: 1.666; + } +} +@media (min-resolution: 168dpi) { + :root { + --dpr: 1.75; + --bpx: 1.75; + } +} +@media (min-resolution: 192dpi) { + :root { + --dpr: 2; + --bpx: 1; + } +} +@media (min-resolution: 240dpi) { + :root { + --dpr: 2.5; + --bpx: 1.25; + } +} +@media (min-resolution: 288dpi) { + :root { + --dpr: 3; + --bpx: 1; + } +} +@media (min-resolution: 384dpi) { + :root { + --dpr: 4; + --bpx: 1; + } +} +@media (min-resolution: 480dpi) { + :root { + --dpr: 5; + --bpx: 1.25; + } +} +@media (min-resolution: 576dpi) { + :root { + --dpr: 6; + --bpx: 1.5; + } +} +@media (min-resolution: 768dpi) { + :root { + --dpr: 8; + --bpx: 1; + } +} html { height: 100%; @@ -52,13 +142,13 @@ dd { flex-shrink: 0; font-size: .953125rem; height: 100%; - left: 0; + inset-inline-start: 0; line-height: 1.574; min-height: 100%; - min-width: 300px; - max-width: 300px; + min-width: 18.75rem; + max-width: 18.75rem; position: fixed; - width: 300px; + width: 18.75rem; } #header-wrapper { @@ -81,8 +171,8 @@ dd { } .searchbox > :first-child { + inset-inline-start: .5rem; position: absolute; - left: .5rem; } .searchbox > button { @@ -101,8 +191,8 @@ dd { .searchbox span { cursor: pointer; + inset-inline-end: .5rem; position: absolute; - right: .5rem; top: .25rem; } @@ -123,7 +213,10 @@ dd { height: 1.875rem; background: transparent; border: 0; - padding: 0 1.6rem 0 1.8rem; + padding-bottom: 0; + padding-inline-end: 1.6rem; + padding-inline-start: 1.8rem; + padding-top: 0; margin: 0; font-weight: 300; } @@ -133,6 +226,7 @@ dd { } #content-wrapper { + --ps-rail-hover-color: rgba( 176, 176, 176, .25 ); display: flex; flex-direction: column; flex: 1; /* fill rest of vertical space */ @@ -145,60 +239,6 @@ dd { padding: 0 1rem; } -#sidebar ul.topics { - margin: 0 1rem; -} - -#sidebar ul.topics ul { - display: none; -} - -#sidebar ul.topics li { - position: relative; -} - -#sidebar ul.topics > li > ul > li:last-child { - padding-bottom: 1rem; -} - -#sidebar ul.topics ul ul { - padding-bottom: 0; -} - -#sidebar ul.topics li.parent > ul, -#sidebar ul.topics li.active > ul, -#sidebar ul.topics li.alwaysopen > ul { - display: block; -} - -#sidebar ul.collapsible-menu > li > .toggle, -#sidebar ul.topics > li > a { - font-size: 1.1rem; - line-height: 2rem; -} - -#sidebar ul.topics > li > a b { - font-weight: 400; -} - -#sidebar ul.topics > li > a .fa { - margin-top: 9px; -} - -#sidebar ul.topics > li { - margin-left: -1rem; - margin-right: -1rem; - padding-left: 1rem; - padding-right: 1rem; -} - -#sidebar ul.topics li > a { - margin-left: -1rem; - margin-right: -1rem; - padding-left: 1rem; - padding-right: 1rem; -} - #sidebar ul { list-style: none; padding: 0; @@ -210,47 +250,16 @@ dd { } #sidebar ul li.visited + span { - margin-right: 16px; -} - -#sidebar ul li a, -#sidebar ul li button { - display: block; - padding: 2px 0; -} - -#sidebar ul li a span { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -#sidebar ul li > a, -#sidebar ul li > button { - padding: 4px 0; -} - -#sidebar ul li li { - padding-left: 1rem; -} - -#sidebar ul.topics > li > a .read-icon { - margin-top: 9px; -} - -#sidebar #shortcuts li { - list-style: none; - padding: 2px 0; + margin-inline-end: 1rem; } #sidebar ul li .read-icon { display: none; - float: right; - font-size: 13px; - margin: 4px 0 0 0; - min-width: 16px; - text-align: right; + font-size: .8125rem; + inset-inline-end: 1rem; + margin: .25rem 0 0 0; + min-width: 1rem; + position: absolute; } #sidebar ul li.visited > a .read-icon { @@ -260,10 +269,10 @@ dd { #sidebar .nav-title { font-size: 2rem; font-weight: 200; - letter-spacing: -1px; + letter-spacing: -.02175em; line-height: 110% !important; margin: 1rem 0 1rem 0; - padding-left: 1rem; + padding-inline-start: 1rem; text-rendering: optimizeLegibility; text-transform: uppercase; } @@ -285,13 +294,13 @@ dd { flex-grow: 1; flex-shrink: 0; height: 100%; - margin-left: 300px; + margin-inline-start: 18.75rem; min-height: 100%; - min-width: calc( 100% - 300px); - max-width: calc( 100% - 300px); + min-width: calc( 100% - 18.75rem); + max-width: calc( 100% - 18.75rem); overflow-wrap: break-word; /* avoid x-scrolling of body if it is to large to fit */ position: relative; /* PS */ - width: calc( 100% - 300px); + width: calc( 100% - 18.75rem); z-index: 70; } @@ -318,7 +327,7 @@ dd { #body img.shadow, #body .video-container.shadow { - box-shadow: 0 10px 30px rgba( 200, 200, 200, .666 ); + box-shadow: 0 10px 30px rgba( 176, 176, 176, .666 ); } #body img.inline { @@ -335,14 +344,14 @@ dd { padding: 0 3.25rem 4rem 3.25rem; position: relative; /* PS */ } -@media screen and (max-width: 59.938em) { +@media screen and (max-width: 60rem) { #body-inner { - padding: 0 2rem 15px 2rem; + padding: 0 2rem 1rem 2rem; } } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { #body-inner { - padding: 0 1.25rem 5px 1.25rem; + padding: 0 1.25rem .375rem 1.25rem; } } @@ -356,33 +365,37 @@ dd { margin-top: -1rem; } +#body .flex-block-wrapper { + margin-left: auto; + margin-right: auto; + max-width: calc( 81.25rem - 18.75rem - 2 * 3.25rem ); + width: 100%; +} +body:not(.print) #body .narrow .flex-block-wrapper { + max-width: calc( 81.25rem - 18.75rem - 2 * 9.75rem ); +} + /* we limit width if we have large screens */ -@media screen and ( min-width: 1300px ){ /* #sidebar/width + ./max-width */ +@media screen and ( min-width: 81.25rem ){ /* #sidebar/width + ./max-width */ #body .flex-block-wrapper { - margin-left: auto; - margin-right: auto; - min-width: calc( 1300px - 300px - 2 * 3.25rem ); - width: calc( 1300px - 300px - 2 * 3.25rem ); - max-width: calc( 1300px - 300px - 2 * 3.25rem ); + width: calc( 81.25rem - 18.75rem - 2 * 3.25rem ); } body:not(.print) #body .narrow .flex-block-wrapper { - min-width: calc( 1300px - 300px - 2 * 9.75rem ); - width: calc( 1300px - 300px - 2 * 9.75rem ); - max-width: calc( 1300px - 300px - 2 * 9.75rem ); + width: calc( 81.25rem - 18.75rem - 2 * 9.75rem ); } } body:not(.print) #body-inner.narrow { padding: 2rem 9.75rem; } -@media screen and (max-width: 59.938em) { +@media screen and (max-width: 60rem) { body:not(.print) #body-inner.narrow { - padding: 15px 6.5rem; + padding: 1rem 6.5rem; } } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { body:not(.print) #body-inner.narrow { - padding: 5px 3.25rem; + padding: .375rem 3.25rem; } } @@ -399,7 +412,7 @@ body:not(.print) #body-inner.narrow p { } mark { - color: black; + color: rgba( 0, 0, 0, 1 ); } h1 { @@ -418,12 +431,12 @@ body:not(.print) #body-inner.narrow h1 { border-bottom: 4px solid rgba( 134, 134, 134, .125 ); font-size: 3.5rem; } -@media only screen and (min-width: 48em) and (max-width: 59.938em) { +@media only screen and (min-width: 48rem) and (max-width: 60rem) { body:not(.print) #body-inner.narrow h1 { font-size: 2.8rem; } } -@media only screen and (max-width: 47.938em) { +@media only screen and (max-width: 48rem) { body:not(.print) #body-inner.narrow h1 { font-size: 2.5rem; } @@ -455,7 +468,7 @@ h6 { } h2, h3, .article-subheading, h4, h5, h6 { - letter-spacing: -1px; + letter-spacing: -.0625rem; margin: 2rem 0 1rem 0; /* big titles cause a horizontal scrollbar - fixing this by wrapping text */ overflow-wrap: break-word; @@ -469,7 +482,7 @@ h2, h3, h4, h5, h6 { } blockquote { - border-inline-start: 10px solid rgba( 134, 134, 134, .4 ); + border-inline-start: .6rem solid rgba( 134, 134, 134, .4 ); } blockquote p { @@ -483,7 +496,7 @@ blockquote cite { display: block; font-weight: bold; opacity: .5; - padding-top: .5em; + padding-top: .5rem; text-align: end; } @@ -500,6 +513,8 @@ blockquote cite { div.box { margin: 1.5rem 0; + border-style: solid; + border-width: 1px; } div.box > .box-label { @@ -519,7 +534,11 @@ div.box > .box-content { #body table td > :first-child, #body table td > :first-child :first-child, #body div.box > .box-content > :first-child, -#body div.box > .box-content > :first-child :first-child { +#body div.box > .box-content > :first-child :first-child, +#body div.expand > .expand-content-text > :first-child, +#body div.expand > .expand-content-text > :first-child :first-child, +#body div.tab-content > .tab-content-text > :first-child, +#body div.tab-content > .tab-content-text > :first-child :first-child { margin-top: 0; } @@ -528,7 +547,11 @@ div.box > .box-content { #body table td > :last-child, #body table td > :last-child :last-child, #body div.box > .box-content > :last-child, -#body div.box > .box-content > :last-child :last-child { +#body div.box > .box-content > :last-child :last-child, +#body div.expand > .expand-content-text > :last-child, +#body div.expand > .expand-content-text > :last-child :last-child, +#body div.tab-content > .tab-content-text > :last-child, +#body div.tab-content > .tab-content-text > :last-child :last-child { margin-bottom: 0; } @@ -544,10 +567,10 @@ div.attachments .box-content { .children p { font-size: .8125rem; - margin-bottom: 0px; - margin-top: 0px; - padding-bottom: 0px; - padding-top: 0px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 0; + padding-top: 0; } .children-li p { @@ -558,10 +581,10 @@ div.attachments .box-content { .children-h2 p, .children-h3 p { font-size: .8125rem; - margin-bottom: 0px; - margin-top: 0px; - padding-bottom: 0px; - padding-top: 0px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 0; + padding-top: 0; } #body-inner .children h2, @@ -604,18 +627,10 @@ code { span.copy-to-clipboard { display: inline-block; + white-space: nowrap; } code.copy-to-clipboard-code { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - border-right-width: 0; -} - -span > code.copy-to-clipboard-code { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - border-right-width: 1px; border-end-end-radius: 0; border-start-end-radius: 0; border-inline-end-width: 0; @@ -632,10 +647,11 @@ pre { position: relative; } -pre.pre-code, -pre:has( code ){ - /* the :has() operator isn't available in FF yet, so we patch this by JS */ +/* pre:has( code ), */ +/* the :has() operator isn't available in FF yet, so we patch this by JS */ +pre.pre-code { direction: ltr; + text-align: left; } pre code { @@ -684,10 +700,10 @@ td { } .tooltipped:after { - background: rgba(0, 0, 0, 1); - border: 1px solid #777; + background: rgba( 0, 0, 0, 1 ); + border: 1px solid rgba( 119, 119, 119, 1 ); border-radius: 3px; - color: #fff; + color: rgba( 255, 255, 255, 1 ); content: attr(aria-label); display: none; font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; @@ -710,7 +726,7 @@ td { .tooltipped:before { border: 5px solid transparent; - color: rgba(0, 0, 0, 1); + color: rgba( 0, 0, 0, 1 ); content: ""; display: none; height: 0; @@ -741,7 +757,7 @@ td { .tooltipped-s:before, .tooltipped-se:before, .tooltipped-sw:before { - border-bottom-color: rgba(0, 0, 0, 0.8); + border-bottom-color: rgba( 0, 0, 0, .8 ); bottom: -5px; margin-right: -5px; right: 50%; @@ -769,7 +785,7 @@ td { .tooltipped-n:before, .tooltipped-ne:before, .tooltipped-nw:before { - border-top-color: rgba(0, 0, 0, 0.8); + border-top-color: rgba( 0, 0, 0, .8 ); bottom: auto; margin-right: -5px; right: 50%; @@ -799,7 +815,7 @@ td { } .tooltipped-w:before { - border-left-color: rgba(0, 0, 0, 0.8); + border-left-color: rgba( 0, 0, 0, .8 ); bottom: 50%; left: -5px; margin-top: -5px; @@ -814,7 +830,7 @@ td { } .tooltipped-e:before { - border-right-color: rgba(0, 0, 0, 0.8); + border-right-color: rgba( 0, 0, 0, .8 ); bottom: 50%; margin-top: -5px; right: -5px; @@ -843,14 +859,22 @@ td { display: block; float: right; } +html[dir="rtl"] .navigation, +html[dir="rtl"] #top-print-link, +html[dir="rtl"] #top-github-link { + float: left; +} .nav, .print-link, .github-link { - border-left: thin solid rgba( 134, 134, 134, .333 ); + border-inline-start: thin solid rgba( 134, 134, 134, .333 ); padding-left: 1rem; padding-right: 1rem; } +html[dir="rtl"] .nav i { + transform: scaleX(-1); +} span.nav i{ color: rgba( 134, 134, 134, .333 ); } @@ -868,13 +892,12 @@ span.nav i{ } #toc-menu, #sidebar-toggle-span { - border-right: thin solid rgba( 134, 134, 134, .333 ); + border-inline-end: thin solid rgba( 134, 134, 134, .333 ); padding-left: 1rem; padding-right: 1rem; } #body #breadcrumbs { - display: inline-block; float: left; height: auto; line-height: 1.4; @@ -887,7 +910,10 @@ span.nav i{ white-space: nowrap; width: calc(100% - 5*3.25rem); } -@media screen and (max-width: 47.938em) { +html[dir="rtl"] #body #breadcrumbs { + float: right; +} +@media screen and (max-width: 48rem) { #body #breadcrumbs { text-overflow: unset; } @@ -897,15 +923,15 @@ span.nav i{ display: none; } .progress { - left: 1rem; + inset-inline-start: 1rem; top: 1rem; } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { .mobile-support #sidebar-toggle-span { display: inline; } .progress { - left: 4.25rem; + inset-inline-start: 4.25rem; } } @@ -913,7 +939,7 @@ span.nav i{ display: inline; padding: 0 .75rem; } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { #body #breadcrumbs .links { /* we just hide the breadcrumbs instead of display: none; this makes sure that the breadcrumbs are still usable for @@ -940,46 +966,48 @@ span.nav i{ text-decoration: none; } -@media screen and (max-width: 59.938em) { +@media screen and (max-width: 60rem) { #sidebar { - min-width: 230px; - max-width: 230px; - width: 230px; + min-width: 14.375rem; + max-width: 14.375rem; + width: 14.375rem; } #body { - margin-left: 230px; - min-width: calc( 100% - 230px); - max-width: calc( 100% - 230px); - width: calc( 100% - 230px); + margin-inline-start: 14.375rem; + min-width: calc( 100% - 14.375rem); + max-width: calc( 100% - 14.375rem); + width: calc( 100% - 14.375rem); } } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { /* we don't support sidebar flyout in mobile */ .mobile-support #sidebar { - left: -230px; + inset-inline-start: -14.375rem; } .mobile-support #navshow{ display: inline; } .mobile-support #body { - margin-left: 0; min-width: 100%; max-width: 100%; width: 100%; } + .mobile-support #body { + margin-inline-start: 0; + } .mobile-support.sidebar-flyout { overflow: hidden; } .mobile-support.sidebar-flyout #sidebar { - left: 0; + inset-inline-start: 0; z-index: 90; } .mobile-support.sidebar-flyout #body { - margin-left: 230px; + margin-inline-start: 14.375rem; overflow: hidden; } .mobile-support.sidebar-flyout #sidebar-overlay{ - background-color: rgba(134, 134, 134, 0.5); + background-color: rgba( 134, 134, 134, .5 ); bottom: 0; cursor: pointer; left: 0; @@ -991,12 +1019,14 @@ span.nav i{ } .copy-to-clipboard-button { - border-radius: 0 2px 2px 0; + border-start-start-radius: 0; + border-start-end-radius: 2px; + border-end-end-radius: 2px; + border-end-start-radius: 0; border-style: solid; border-width: 1px; cursor: pointer; - font-size: .859625rem; - padding-left: 22px; + font-size: .934375rem; } span > .copy-to-clipboard-button { @@ -1007,9 +1037,8 @@ span > .copy-to-clipboard-button { } .copy-to-clipboard-button > i { - font-size: .790855rem; + font-size: .859625rem; font-weight: 500; - margin-left: -22px; } .copy-to-clipboard-code + .copy-to-clipboard-button > i { @@ -1022,9 +1051,9 @@ pre > .copy-to-clipboard-button { border-radius: 2px; border-style: solid; border-width: 1px; - padding: 5px 3px 5px 25px; + inset-inline-end: 4px; + padding: 5px 3px; position: absolute; - right: 4px; top: 4px; } @@ -1033,15 +1062,15 @@ pre > .copy-to-clipboard-button { } .disableInlineCopyToClipboard span > code.copy-to-clipboard-code { - border-end-end-radius: 2px; border-start-end-radius: 2px; + border-end-end-radius: 2px; border-inline-end-width: 1px; } #homelinks { border-bottom-style: solid; border-bottom-width: 4px; - padding: 7px 0; + padding: .5rem 0; } option { @@ -1071,7 +1100,6 @@ option { } .expand > label:after { - background-color: var(--INTERNAL-MAIN-LINK-HOVER-color); content: ""; display: block; height: 1px; @@ -1089,6 +1117,7 @@ option { } .expand > .expand-content { + margin-inline-start: 1rem; margin-top: .5rem; } /* closed expander */ @@ -1099,7 +1128,6 @@ option { .expand > input + label > .fa-chevron-down { display: none; } -.expand > input + label > .fa-chevron-left, .expand > input + label > .fa-chevron-right { display: inline-block; } @@ -1112,26 +1140,26 @@ option { .expand > input:checked + label > .fa-chevron-down { display: inline-block; } -.expand > input:checked + label > .fa-chevron-left, .expand > input:checked + label > .fa-chevron-right { display: none; } -/* turn off unsuitable expander for this reading direction */ -.expand > .expand-label > .expand-rtl.direction-ltr, -.expand > .expand-label > .expand-ltr.direction-rtl { - display: none; +/* adjust expander for RTL reading direction */ +html[dir="rtl"] .expand > .expand-label > i.fa-chevron-right { + transform: scaleX(-1); } #body footer.footline{ margin-top: 2rem; } +.headline i, .footline i{ - margin-left: .5rem; + margin-inline-start: .5rem; } +.headline i:first-child, .footline i:first-child{ - margin-left: 0; + margin-inline-start: 0; } .mermaid-container { @@ -1229,7 +1257,7 @@ option { } .progress { - border: 0px solid rgba( 134, 134, 134, .166 ); + border: 0 solid rgba( 134, 134, 134, .166 ); box-shadow: 1px 2px 5px 1px rgba( 134, 134, 134, .2 ); height: 0; opacity: 0; @@ -1253,14 +1281,15 @@ option { .progress ul { list-style: none; margin: 0; - padding: 0 15px; + padding: 0 1rem; } #TableOfContents { + --ps-rail-hover-color: rgba( 176, 176, 176, .25 ); font-size: .8125rem !important; max-height: 90vh; overflow: hidden; - padding: 15px 5px !important; + padding: 1rem .375rem !important; position: relative; /* PS */ } @@ -1304,6 +1333,11 @@ option { white-space: nowrap; } +.btn > *:after { + /* avoid breakage if no content is given */ + content: "\200b" +} + #body #body-inner .btn > *.highlight:after { background-color: transparent; } @@ -1364,45 +1398,6 @@ h6 a { margin-top: 1rem; } -rapi-doc { - /* adjust rapi-doc internals to fill out available space with render-style=view */ - margin-left: calc( -8px - 24px ); - width: calc( 100% + 8px + 24px + 8px ); -} -@media (max-width: 767px) { - rapi-doc { - margin-left: calc( -12px ); - width: calc( 100% + 12px + 4px ); - } -} - -rapi-doc::part(section-main-content) { - /* override variables for adapting rapidoc design to theme */ - --font-mono: var(--INTERNAL-CODE-font); - --font-size-mono: .9375rem; - --font-regular: var(--INTERNAL-MAIN-font); - --font-size-regular: 1.015625rem; - --font-size-small: .875rem; - font-weight: 300 !important; -} - -rapi-doc::part(section-overview-title) { - color: var(--INTERNAL-MAIN-TITLES-H2-color); - font-size: 2.55rem; - font-weight: 500; -} - -rapi-doc::part(btn) { - /* makes download button large enough to not overflow default text */ - width: unset !important; -} - -rapi-doc::part(section-endpoint-head-method) { - /* makes method marker large enough to not overflow on text DELETE */ - font-size: .6875rem; - width: 5.5em; -} - .select-container i { padding-top: .25em; } @@ -1412,10 +1407,19 @@ rapi-doc::part(section-endpoint-head-method) { display: block; float: left; } +html[dir="rtl"] .select-container i, +html[dir="rtl"] .select-container span { + float: right; +} + +#sidebar ul select { + padding-left: 0; + padding-right: 0; +} .select-style { border: 0; - border-radius: 0px; + border-radius: 0; height: 1.574em; overflow: hidden; } @@ -1439,7 +1443,7 @@ rapi-doc::part(section-endpoint-head-method) { } .select-style option { - color: #000000; + color: rgba( 0, 0, 0, 1 ); padding: 0; margin: 0; } @@ -1467,12 +1471,12 @@ rapi-doc::part(section-endpoint-head-method) { appearance: none; background: transparent; cursor: pointer; - text-align: left; + text-align: start; text-decoration: none; width: 100%; } -@media screen and (max-width: 47.938em) { +@media screen and (max-width: 48rem) { #breadcrumbs .links { display: none; } @@ -1484,47 +1488,6 @@ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { display: none; } -#sidebar ul.collapsible-menu input.toggle { - -webkit-appearance: none; - appearance: none; - cursor: pointer; - height: 2rem; - left: 1rem; - padding-top: .35rem; - position: absolute; - width: 1px; -} - -#sidebar ul.collapsible-menu > li > input.toggle { - padding-top: .25rem; -} - -#sidebar .collapsible-menu input.toggle:before { - content: "\f054"; - font-family: "Font Awesome 5 Free"; - font-size: .8rem; - font-weight: 900; - margin-left: -1rem; - padding-bottom: .65rem; - padding-left: .2rem; - padding-right: .2rem; - padding-top: .6rem; -} - -#sidebar .collapsible-menu input.toggle:checked:before { - content: "\f078"; - padding-left: .1rem; - padding-right: .1rem; -} - -#sidebar .collapsible-menu input.toggle + label.toggle + a + ul { - display: none; -} - -#sidebar .collapsible-menu input.toggle:checked + label.toggle + a + ul { - display: inline; -} - .math.align-left > mjx-container{ text-align: left !important; } @@ -1570,8 +1533,8 @@ input[type="search"]::-webkit-search-results-decoration { display: none; } left: 50%; text-align: center; width: 200px; - background: #fff; - color: #368512; + background: rgba( 255, 255, 255, 1 ); + color: rgba( 54, 133, 18, 1 ); padding: .8em 0 .7em; font-size: 16px; z-index: 5000; @@ -1617,7 +1580,7 @@ input[type="search"]::-webkit-search-results-decoration { display: none; } .searchform input::-webkit-input-placeholder, .searchform input::placeholder { - color: rgba( 134, 134, 134 ); + color: rgba( 134, 134, 134, 1 ); opacity: .666; } @@ -1679,25 +1642,28 @@ input[type="search"]::-webkit-search-results-decoration { display: none; } border-end-start-radius: 0; } +.badge-content:after { + /* avoid breakage if no content is given */ + content: "\200b"; +} + /* task list and its checkboxes */ -article ul li:has(input[type="checkbox"]) { +article ul > li:has(> input[type="checkbox"]) { list-style: none; margin-inline-start: -1rem; } -article ul li:has(input[type="checkbox"])::before { +article ul > li:has(> input[type="checkbox"])::before { content: "\200B"; /* accessibilty for Safari https://developer.mozilla.org/en-US/docs/Web/CSS/list-style */ } /* https://moderncss.dev/pure-css-custom-checkbox-style/ */ -article ul li input[type="checkbox"] { +article ul > li > input[type="checkbox"] { -webkit-appearance: none; appearance: none; /* For iOS < 15 */ - background-color: var(--INTERNAL-MAIN-BG-color); /* box background */ border: 0.15em solid currentColor; border-radius: 0.15em; - color: var(--INTERNAL-MAIN-TEXT-color); display: inline-grid; font: inherit; height: 1.15em; @@ -1707,7 +1673,7 @@ article ul li input[type="checkbox"] { width: 1.15em; } -article ul li input[type="checkbox"]::before { +article ul > li > input[type="checkbox"]::before { box-shadow: inset 1em 1em var(--INTERNAL-PRIMARY-color); clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); content: ""; @@ -1720,14 +1686,14 @@ article ul li input[type="checkbox"]::before { background-color: CanvasText; } -article ul li input[type="checkbox"]:checked::before { +article ul > li > input[type="checkbox"]:checked::before { transform: scale(1); } /* CSS Lightbox https://codepen.io/gschier/pen/kyRXVx */ .lightbox { align-items: center; - background: rgba(0, 0, 0, 0.8); + background: rgba( 0, 0, 0, .8 ); bottom: 0; display: none; justify-content: center; @@ -1750,3 +1716,251 @@ article ul li input[type="checkbox"]:checked::before { overflow: auto; padding: min(2vh, 2vw); } + +/* basic menu list styles (non-collapsible) */ + +#sidebar ul > li > a { + display: block; + position: relative; +} + +#sidebar ul.space > li > * { + padding-bottom: .125rem; + padding-top: .125rem; +} +#sidebar ul.space > li > ul { + padding-bottom: 0; + padding-top: 0; +} + +#sidebar ul.morespace > li > * { + padding-bottom: .25rem; + padding-top: .25rem; +} +#sidebar ul.morespace > li > ul { + padding-bottom: 0; + padding-top: 0; +} + +#sidebar ul.enlarge > li > a { + font-size: 1.1rem; + line-height: 2rem; +} +#sidebar ul.enlarge > li > a > .read-icon { + margin-top: .5rem; +} +#sidebar ul.enlarge > li > ul > li:last-child { + padding-bottom: 1rem; +} + +#sidebar ul ul { + padding-inline-start: 1rem; +} + +/* collapsible menu style overrides */ + +#sidebar ul.collapsible-menu > li { + position: relative; +} + +#sidebar ul.collapsible-menu > li > input { + -webkit-appearance: none; + appearance: none; + cursor: pointer; + display: inline-block; + margin-left: 0; + margin-right: 0; + margin-top: .65rem; + position: absolute; + width: 1rem; + z-index: 1; +} +#sidebar ul.collapsible-menu.enlarge > li > input { + margin-top: .9rem; +} + +#sidebar ul.collapsible-menu > li > label { + cursor: pointer; + display: inline-block; + inset-inline-start: 0; + margin-bottom: 0; /* nucleus */ + padding-inline-start: .125rem; + position: absolute; + width: 1rem; + z-index: 2; +} +#sidebar ul.collapsible-menu.enlarge > li > label { + font-size: 1.1rem; + line-height: 2rem; +} + +#sidebar ul.collapsible-menu > li > label:after { + content: ""; + display: block; + height: 1px; + transition: width 0.5s ease; + width: 0%; +} + +#sidebar ul.collapsible-menu > li > label:hover:after { + width: 100%; +} + +#sidebar ul.collapsible-menu > li > label > .fas { + font-size: .8rem; + width: .6rem; +} + +#sidebar ul.collapsible-menu > li > a { + display: inline-block; + width: 100%; +} + +/* menu states for not(.collapsible-menu) */ + +#sidebar ul ul { + display: none; +} + +#sidebar ul > li.parent > ul, +#sidebar ul > li.active > ul, +#sidebar ul > li.alwaysopen > ul { + display: block; +} + +/* closed menu */ + +#sidebar ul.collapsible-menu > li > input + label ~ ul { + display: none; +} + +#sidebar ul.collapsible-menu > li > input + label > .fa-chevron-down { + display: none; +} +#sidebar ul.collapsible-menu > li > input + label > .fa-chevron-right { + display: inline-block; +} + +/* open menu */ + +#sidebar ul.collapsible-menu > li > input:checked + label ~ ul { + display: block; +} + +#sidebar ul.collapsible-menu > li > input:checked + label > .fa-chevron-down { + display: inline-block; +} +#sidebar ul.collapsible-menu > li > input:checked + label > .fa-chevron-right { + display: none; +} + +/* adjust menu for RTL reading direction */ + +html[dir="rtl"] #sidebar ul.collapsible-menu > li > label > i.fa-chevron-right { + transform: scaleX(-1); +} + +.columnize{ + column-count: 2; +} +@media screen and (min-width: 79.25rem) { + .columnize{ + column-count: 3; + } +} + +#body .tab-panel{ + margin-bottom: 1.5rem; + margin-top: 1.5rem; +} + +#body .tab-nav{ + display: flex; + flex-wrap: wrap; +} + +#body .tab-nav-title{ + font-size: .9rem; + font-weight: 400; + line-height: 1.42857143; + padding: .2rem 0; + margin-inline-start: .6rem; +} + +#body .tab-nav-button{ + -webkit-appearance: none; + appearance: none; + background-color: transparent; + border: 1px solid transparent; + display: block; + font-size: .9rem; + font-weight: 300; + line-height: 1.42857143; + margin-inline-start: .6rem; +} + +#body .tab-nav-button.active{ + border-radius: 2px 2px 0 0; + cursor: default; +} + +#body .tab-nav-button > *{ + position: relative; +} + +#body .tab-nav-button.active > *{ + border-radius: 1px 1px 0 0; +} + +#body .tab-nav-button > * > *{ + border-bottom-style: solid; + border-bottom-width: .2rem; + padding: .2rem .6rem 0 .6rem; +} + +#body .tab-nav-button.active > * > *{ + border-bottom-color: transparent; + font-weight: 500; +} + +#body .tab-nav-button > * > .tab-nav-hidden{ + font-weight: 500; + visibility: hidden; +} + +#body .tab-nav-button > * > .tab-nav-text{ + position: absolute; + top: 0; +} + +#body .tab-content{ + border-style: solid; + border-width: 1px; + display: none; + /* if setting a border to 1px, a browser instead sets it to 1dppx which is not + usable as a unit yet, so we have to calculate it ourself */ + margin-top: calc( -1px / var(--bpx) ); + z-index: 10; +} + +#body .tab-content.active{ + display: block; +} + +#body .tab-content-text{ + padding: 1rem; +} + +/* remove margin if only a single code block is contained in the tab (FF without :has using .codify style) */ +#body .tab-content.codify > .tab-content-text{ + padding: 0; +} +#body .tab-content-text:has(> div.highlight:only-child){ + padding: 0; +} + +/* remove border from a code block if single */ +#body .tab-content-text > div.highlight:only-child > pre, +#body .tab-content-text > pre.pre-code:only-child{ + border: 0; +} diff --git a/docs/public/css/variant.css b/docs/public/css/variant.css index 88246db..48dde02 100644 --- a/docs/public/css/variant.css +++ b/docs/public/css/variant.css @@ -1,105 +1,7 @@ -:root { - /* initially use section background to avoid flickering on load when a non default variant is active; - this is only possible because every color variant defines this variable, otherwise we would have been lost */ - --INTERNAL-PRIMARY-color: var(--PRIMARY-color, var(--MENU-HEADER-BG-color, rgba( 0, 0, 0, 0 ))); /* not --INTERNAL-MENU-HEADER-BG-color */ - --INTERNAL-SECONDARY-color: var(--SECONDARY-color, var(--MAIN-LINK-color, #486ac9)); /* not --INTERNAL-MAIN-LINK-color */ - --INTERNAL-ACCENT-color: var(--ACCENT-color, #ffff00); +@import "variant-internal.css"; - --INTERNAL-MAIN-LINK-color: var(--MAIN-LINK-color, var(--SECONDARY-color, #486ac9)); /* not --INTERNAL-SECONDARY-color */ - --INTERNAL-MAIN-LINK-HOVER-color: var(--MAIN-LINK-HOVER-color, var(--INTERNAL-MAIN-LINK-color)); - --INTERNAL-MAIN-BG-color: var(--MAIN-BG-color, #ffffff); - - --INTERNAL-MAIN-TEXT-color: var(--MAIN-TEXT-color, #101010); - --INTERNAL-MAIN-TITLES-TEXT-color: var(--MAIN-TITLES-TEXT-color, var(--INTERNAL-MAIN-TEXT-color)); - - --INTERNAL-MAIN-TITLES-H1-color: var(--MAIN-TITLES-H1-color, var(--INTERNAL-MAIN-TEXT-color)); - --INTERNAL-MAIN-TITLES-H2-color: var(--MAIN-TITLES-H2-color, var(--INTERNAL-MAIN-TITLES-TEXT-color)); - --INTERNAL-MAIN-TITLES-H3-color: var(--MAIN-TITLES-H3-color, var(--INTERNAL-MAIN-TITLES-H2-color)); - --INTERNAL-MAIN-TITLES-H4-color: var(--MAIN-TITLES-H4-color, var(--INTERNAL-MAIN-TITLES-H3-color)); - --INTERNAL-MAIN-TITLES-H5-color: var(--MAIN-TITLES-H5-color, var(--INTERNAL-MAIN-TITLES-H4-color)); - --INTERNAL-MAIN-TITLES-H6-color: var(--MAIN-TITLES-H6-color, var(--INTERNAL-MAIN-TITLES-H5-color)); - - --INTERNAL-MAIN-font: var(--MAIN-font, "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif); - --INTERNAL-MAIN-TITLES-TEXT-font: var(--MAIN-TITLES-TEXT-font, var(--INTERNAL-MAIN-font)); - - --INTERNAL-MAIN-TITLES-H1-font: var(--MAIN-TITLES-H1-font, var(--INTERNAL-MAIN-font)); - --INTERNAL-MAIN-TITLES-H2-font: var(--MAIN-TITLES-H2-font, var(--INTERNAL-MAIN-TITLES-TEXT-font)); - --INTERNAL-MAIN-TITLES-H3-font: var(--MAIN-TITLES-H3-font, var(--INTERNAL-MAIN-TITLES-H2-font)); - --INTERNAL-MAIN-TITLES-H4-font: var(--MAIN-TITLES-H4-font, var(--INTERNAL-MAIN-TITLES-H3-font)); - --INTERNAL-MAIN-TITLES-H5-font: var(--MAIN-TITLES-H5-font, var(--INTERNAL-MAIN-TITLES-H4-font)); - --INTERNAL-MAIN-TITLES-H6-font: var(--MAIN-TITLES-H6-font, var(--INTERNAL-MAIN-TITLES-H5-font)); - - --INTERNAL-CODE-BLOCK-color: var(--CODE-BLOCK-color, var(--MAIN-CODE-color, #000000)); - --INTERNAL-CODE-BLOCK-BG-color: var(--CODE-BLOCK-BG-color, var(--MAIN-CODE-BG-color, #f8f8f8)); - --INTERNAL-CODE-BLOCK-BORDER-color: var(--CODE-BLOCK-BORDER-color, var(--MAIN-CODE-BG-color, var(--INTERNAL-CODE-BLOCK-BG-color))); - - --INTERNAL-CODE-INLINE-color: var(--CODE-INLINE-color, #5e5e5e); - --INTERNAL-CODE-INLINE-BG-color: var(--CODE-INLINE-BG-color, #fffae9); - --INTERNAL-CODE-INLINE-BORDER-color: var(--CODE-INLINE-BORDER-color, #fbf0cb); - - --INTERNAL-CODE-font: var(--CODE-font, "Consolas", menlo, monospace); - - --INTERNAL-MERMAID-theme: var(--CONFIG-MERMAID-theme, var(--MERMAID-theme, var(--INTERNAL-PRINT-MERMAID-theme))); - --INTERNAL-SWAGGER-theme: var(--CONFIG-SWAGGER-theme, var(--SWAGGER-theme, var(--INTERNAL-PRINT-SWAGGER-theme))); - - --INTERNAL-TAG-BG-color: var(--TAG-BG-color, var(--INTERNAL-PRIMARY-color)); - - --INTERNAL-MENU-HEADER-BG-color: var(--MENU-HEADER-BG-color, var(--PRIMARY-color, rgba( 0, 0, 0, 0 ))); /* not --INTERNAL-PRIMARY-color */ - --INTERNAL-MENU-HEADER-BORDER-color: var(--MENU-HEADER-BORDER-color, var(--INTERNAL-MENU-HEADER-BG-color)); - - --INTERNAL-MENU-HOME-LINK-color: var(--MENU-HOME-LINK-color, #323232); - --INTERNAL-MENU-HOME-LINK-HOVER-color: var(--MENU-HOME-LINK-HOVER-color, var(--MENU-HOME-LINK-HOVERED-color, #808080)); - - --INTERNAL-MENU-SEARCH-color: var(--MENU-SEARCH-color, var(--MENU-SEARCH-BOX-ICONS-color, #e0e0e0)); - --INTERNAL-MENU-SEARCH-BG-color: var(--MENU-SEARCH-BG-color, #323232); - --INTERNAL-MENU-SEARCH-BORDER-color: var(--MENU-SEARCH-BORDER-color, var(--MENU-SEARCH-BOX-color, var(--INTERNAL-MENU-SEARCH-BG-color))); - - --INTERNAL-MENU-SECTIONS-ACTIVE-BG-color: var(--MENU-SECTIONS-ACTIVE-BG-color, rgba( 0, 0, 0, .166 )); - --INTERNAL-MENU-SECTIONS-BG-color: var(--MENU-SECTIONS-BG-color, #282828); - --INTERNAL-MENU-SECTIONS-LINK-color: var(--MENU-SECTIONS-LINK-color, #bababa); - --INTERNAL-MENU-SECTIONS-LINK-HOVER-color: var(--MENU-SECTIONS-LINK-HOVER-color, var(--INTERNAL-MENU-SECTIONS-LINK-color)); - --INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color: var(--MENU-SECTION-ACTIVE-CATEGORY-color, #444444); - --INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BG-color: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color, var(--INTERNAL-MAIN-BG-color)); - - --INTERNAL-MENU-VISITED-color: var(--MENU-VISITED-color, var(--INTERNAL-SECONDARY-color)); - --INTERNAL-MENU-SECTION-HR-color: var(--MENU-SECTION-HR-color, #606060); - - --INTERNAL-BOX-CAPTION-color: var(--BOX-CAPTION-color, rgba( 255, 255, 255, 1 )); - --INTERNAL-BOX-BG-color: var(--BOX-BG-color, rgba( 255, 255, 255, .833 )); - --INTERNAL-BOX-TEXT-color: var(--BOX-TEXT-color, var(--INTERNAL-MAIN-TEXT-color)); - - --INTERNAL-BOX-BLUE-color: var(--BOX-BLUE-color, rgba( 48, 117, 229, 1 )); - --INTERNAL-BOX-GREEN-color: var(--BOX-GREEN-color, rgba( 42, 178, 24, 1 )); - --INTERNAL-BOX-GREY-color: var(--BOX-GREY-color, rgba( 128, 128, 128, 1 )); - --INTERNAL-BOX-ORANGE-color: var(--BOX-ORANGE-color, rgba( 237, 153, 9, 1 )); - --INTERNAL-BOX-RED-color: var(--BOX-RED-color, rgba( 224, 62, 62, 1 )); - - --INTERNAL-BOX-INFO-color: var(--BOX-INFO-color, var(--INTERNAL-BOX-BLUE-color)); - --INTERNAL-BOX-NEUTRAL-color: var(--BOX-NEUTRAL-color, var(--INTERNAL-BOX-GREY-color)); - --INTERNAL-BOX-NOTE-color: var(--BOX-NOTE-color, var(--INTERNAL-BOX-ORANGE-color)); - --INTERNAL-BOX-TIP-color: var(--BOX-TIP-color, var(--INTERNAL-BOX-GREEN-color)); - --INTERNAL-BOX-WARNING-color: var(--BOX-WARNING-color, var(--INTERNAL-BOX-RED-color)); - - --INTERNAL-BOX-BLUE-TEXT-color: var(--BOX-BLUE-TEXT-color, var(--INTERNAL-BOX-TEXT-color)); - --INTERNAL-BOX-GREEN-TEXT-color: var(--BOX-GREEN-TEXT-color, var(--INTERNAL-BOX-TEXT-color)); - --INTERNAL-BOX-GREY-TEXT-color: var(--BOX-GREY-TEXT-color, var(--INTERNAL-BOX-TEXT-color)); - --INTERNAL-BOX-ORANGE-TEXT-color: var(--BOX-ORANGE-TEXT-color, var(--INTERNAL-BOX-TEXT-color)); - --INTERNAL-BOX-RED-TEXT-color: var(--BOX-RED-TEXT-color, var(--INTERNAL-BOX-TEXT-color)); - - --INTERNAL-BOX-INFO-TEXT-color: var(--BOX-INFO-TEXT-color, var(--INTERNAL-BOX-BLUE-TEXT-color)); - --INTERNAL-BOX-NEUTRAL-TEXT-color: var(--BOX-NEUTRAL-TEXT-color, var(--INTERNAL-BOX-GREY-TEXT-color)); - --INTERNAL-BOX-NOTE-TEXT-color: var(--BOX-NOTE-TEXT-color, var(--INTERNAL-BOX-ORANGE-TEXT-color)); - --INTERNAL-BOX-TIP-TEXT-color: var(--BOX-TIP-TEXT-color, var(--INTERNAL-BOX-GREEN-TEXT-color)); - --INTERNAL-BOX-WARNING-TEXT-color: var(--BOX-WARNING-TEXT-color, var(--INTERNAL-BOX-RED-TEXT-color)); - - /* print style, values taken from relearn-light as it is used as a default print style */ - --INTERNAL-PRINT-MERMAID-theme: var(--PRINT-MERMAID-theme, default); - --INTERNAL-PRINT-MAIN-BG-color: var(--PRINT-MAIN-BG-color, #ffffff); - --INTERNAL-PRINT-CODE-font: var(--PRINT-CODE-font, "Consolas", menlo, monospace); - --INTERNAL-PRINT-TAG-BG-color: var(--PRINT-TAG-BG-color, #7dc903); - --INTERNAL-PRINT-MAIN-font: var(--PRINT-MAIN-font, "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif); - --INTERNAL-PRINT-MAIN-TEXT-color: var(--PRINT-MAIN-TEXT-color, #101010); - --INTERNAL-PRINT-SWAGGER-theme: var(--PRINT-SWAGGER-theme, light); +html { + color-scheme: only var(--INTERNAL-BROWSER-theme); } body { @@ -150,7 +52,7 @@ a:hover, color: var(--INTERNAL-MENU-SEARCH-color); } -#sidebar .collapsible-menu .toggle, +#sidebar .collapsible-menu label, #sidebar .select-container, #sidebar a, #sidebar button { @@ -158,28 +60,28 @@ a:hover, } #sidebar select:hover, -#sidebar .collapsible-menu .toggle:hover, +#sidebar .collapsible-menu li:not(.active) > label:hover, #sidebar .select-container:hover, #sidebar a:hover, #sidebar button:hover { color: var(--INTERNAL-MENU-SECTIONS-LINK-HOVER-color); } -#sidebar ul.topics > li.parent, -#sidebar ul.topics > li.active { +#sidebar ul.enlarge > li.parent, +#sidebar ul.enlarge > li.active { background-color: var(--INTERNAL-MENU-SECTIONS-ACTIVE-BG-color); } -#sidebar ul.collapsible-menu li.active > .toggle, -#sidebar ul.topics li.active > a { +#sidebar li.active > label, +#sidebar li.active > a { color: var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-color); } -#sidebar ul.topics li.active > a { +#sidebar li.active > a { background-color: var(--INTERNAL-MENU-SECTION-ACTIVE-CATEGORY-BG-color); } -#sidebar ul li.visited > a .read-icon { +#sidebar ul li > a .read-icon { color: var(--INTERNAL-MENU-VISITED-color); } @@ -231,6 +133,7 @@ h6 { div.box { background-color: var(--VARIABLE-BOX-color); + border-color: var(--VARIABLE-BOX-color); } div.box > .box-label { @@ -302,6 +205,13 @@ div.box > .box-content { --VARIABLE-BOX-TEXT-color: var(--INTERNAL-BOX-RED-TEXT-color); } +.cstyle.code { + --VARIABLE-BOX-color: var(--INTERNAL-CODE-BLOCK-BORDER-color); + --VARIABLE-BOX-CAPTION-color: var(--INTERNAL-CODE-BLOCK-color); + --VARIABLE-BOX-BG-color: var(--INTERNAL-CODE-BLOCK-BG-color); + --VARIABLE-BOX-TEXT-color: var(--INTERNAL-CODE-BLOCK-color); +} + .cstyle.transparent { --VARIABLE-BOX-color: transparent; --VARIABLE-BOX-CAPTION-color: var(--INTERNAL-MAIN-TITLES-TEXT-color); @@ -449,11 +359,6 @@ pre .copy-to-clipboard-button:hover { background-color: var(--INTERNAL-MAIN-BG-color); } -#body .tab-nav-button.active { - background-color: var(--INTERNAL-MAIN-BG-color) !important; - border-bottom-color: var(--INTERNAL-MAIN-BG-color) !important; -} - .badge > * { border-color: var(--VARIABLE-BOX-TEXT-color); } @@ -466,3 +371,65 @@ pre .copy-to-clipboard-button:hover { .badge.cstyle.transparent{ --VARIABLE-BOX-BG-color: var(--INTERNAL-BOX-BG-color); } + +article ul > li > input[type="checkbox"] { + background-color: var(--INTERNAL-MAIN-BG-color); /* box background */ + color: var(--INTERNAL-MAIN-TEXT-color); +} + +#body .tab-nav-button { + color: var(--INTERNAL-MAIN-TEXT-color); +} + +#body .tab-nav-button.active { + background-color: var(--VARIABLE-BOX-color); + border-bottom-color: var(--VARIABLE-BOX-BG-color); + color: var(--VARIABLE-BOX-TEXT-color); +} + +#body .tab-nav-button.active > *{ + background-color: var(--VARIABLE-BOX-BG-color); +} + +#body .tab-nav-button > * > *{ + border-color: var(--VARIABLE-BOX-color); +} + +#body .tab-content{ + background-color: var(--VARIABLE-BOX-color); + border-color: var(--VARIABLE-BOX-color); +} + +#body .tab-content-text{ + background-color: var(--VARIABLE-BOX-BG-color); + color: var(--VARIABLE-BOX-TEXT-color); +} + +.tab-panel-style.cstyle.initial, +.tab-panel-style.cstyle.default { + --VARIABLE-BOX-BG-color: var(--INTERNAL-MAIN-BG-color); +} + +.tab-panel-style.cstyle.transparent { + --VARIABLE-BOX-color: rgba( 134, 134, 134, .4 ); + --VARIABLE-BOX-BG-color: transparent; +} + +#body .tab-panel-style.cstyle.initial.tab-nav-button.active, +#body .tab-panel-style.cstyle.default.tab-nav-button.active, +#body .tab-panel-style.cstyle.transparent.tab-nav-button.active{ + background-color: var(--VARIABLE-BOX-BG-color); + border-left-color: var(--VARIABLE-BOX-color); + border-right-color: var(--VARIABLE-BOX-color); + border-top-color: var(--VARIABLE-BOX-color); +} + +#body .tab-panel-style.cstyle.code.tab-nav-button:not(.active){ + --VARIABLE-BOX-color: var(--INTERNAL-BOX-NEUTRAL-color); +} + +#body .tab-panel-style.cstyle.initial.tab-content, +#body .tab-panel-style.cstyle.default.tab-content, +#body .tab-panel-style.cstyle.transparent.tab-content{ + background-color: var(--VARIABLE-BOX-BG-color); +} diff --git a/docs/public/getting-started/config/index.html b/docs/public/getting-started/config/index.html index 3e0dc54..b11b3cc 100644 --- a/docs/public/getting-started/config/index.html +++ b/docs/public/getting-started/config/index.html @@ -3,24 +3,24 @@ - - + + Config File Definitions - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/getting-started/index.html b/docs/public/getting-started/index.html index 6fa7682..5afa9e3 100644 --- a/docs/public/getting-started/index.html +++ b/docs/public/getting-started/index.html @@ -3,25 +3,25 @@ - - + + Getting started - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/getting-started/index.xml b/docs/public/getting-started/index.xml index 43cbb68..70ecedc 100644 --- a/docs/public/getting-started/index.xml +++ b/docs/public/getting-started/index.xml @@ -11,19 +11,53 @@ http://example.org/getting-started/install/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/getting-started/install/index.html - Binaries are available from the release page. Make sure to get the correct version for your system, which supports x86_64, ARM64, and i386. -Source Install You can install from source. You will need Go installed. -Then run: -go install git.andrewnw.xyz/CyberShell/backy@master Once set, jump over to the config docs and start configuring your file. + <p>Binaries are available from the <a href="https://git.andrewnw.xyz/CyberShell/backy/releases" target="_blank">release page</a>. Make sure to get the correct version for your system, which supports x86_64, ARM64, and i386.</p> +<h3 id="source-install">Source Install</h3> +<p>You can install from source. You will need <a href="https://go.dev/doc/install" target="_blank">Go installed</a>.</p> +<p>Then run:</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>go install git.andrewnw.xyz/CyberShell/backy@master +</span></span></code></pre></div><p>Once set, jump over to the <a href="http://example.org/getting-started/config">config docs</a> and start configuring your file.</p> Config File Definitions http://example.org/getting-started/config/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/getting-started/config/index.html - Commands The commands section is for defining commands. These can be run with or without a shell and on a host or locally. -See the commands documentation for further information. -commands: stop-docker-container: cmd: docker args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, cmd will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in the config file host: some-host environment: - FOO=BAR - APP=$VAR # defined in . + <h3 id="commands">Commands</h3> +<p>The commands section is for defining commands. These can be run with or without a shell and on a host or locally.</p> +<p>See the <a href="http://example.org/config/commands">commands documentation</a> for further information.</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">commands</span>: +</span></span><span style="display:flex;"><span>  <span style="color:#f92672">stop-docker-container</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">output</span>: <span style="color:#66d9ef">true</span> <span style="color:#75715e"># Optional and only when run in list and notifications are sent</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">docker</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">args</span>: +</span></span><span style="display:flex;"><span>      - <span style="color:#ae81ff">compose</span> +</span></span><span style="display:flex;"><span>      - -<span style="color:#ae81ff">f /some/path/to/docker-compose.yaml</span> +</span></span><span style="display:flex;"><span>      - <span style="color:#ae81ff">down</span> +</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># if host is not defined, cmd will be run locally</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">host</span>: <span style="color:#ae81ff">some-host </span> +</span></span><span style="display:flex;"><span>  <span style="color:#f92672">backup-docker-container-script</span>: +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">/path/to/script</span> +</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># The host has to be defined in the config file</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">host</span>: <span style="color:#ae81ff">some-host</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">environment</span>: +</span></span><span style="display:flex;"><span>      - <span style="color:#ae81ff">FOO=BAR</span> +</span></span><span style="display:flex;"><span>     - <span style="color:#ae81ff">APP=$VAR</span> <span style="color:#75715e"># defined in .env file in config directory</span> +</span></span><span style="display:flex;"><span>  <span style="color:#f92672">shell-cmd</span>: +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">rsync</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">shell</span>: <span style="color:#ae81ff">bash</span> +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">args</span>: +</span></span><span style="display:flex;"><span>      - -<span style="color:#ae81ff">av</span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">some-host:/path/to/data </span> +</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">~/Docker/Backups/docker-data</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">script</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">scriptFile</span> <span style="color:#75715e"># run a local script on a remote host</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">path/to/your/script.sh</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">host</span>: <span style="color:#ae81ff">some-host </span> +</span></span><span style="display:flex;"><span>  <span style="color:#f92672">hostname</span>: +</span></span><span style="display:flex;"><span>    <span style="color:#f92672">cmd</span>: <span style="color:#ae81ff">hostname</span> +</span></span></code></pre></div><h3 id="lists">Lists</h3> +<p>To execute groups of commands in sequence, use a list configuration.</p> \ No newline at end of file diff --git a/docs/public/getting-started/install/index.html b/docs/public/getting-started/install/index.html index ffeef67..98f5033 100644 --- a/docs/public/getting-started/install/index.html +++ b/docs/public/getting-started/install/index.html @@ -3,24 +3,24 @@ - - + + Install Backy - A tool for commands - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/index.html b/docs/public/index.html index bf8d927..a08e096 100644 --- a/docs/public/index.html +++ b/docs/public/index.html @@ -3,24 +3,25 @@ - - + + Backy - A tool for commands + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + +
-
- - + + - - - - - - - - - + + + + + + + + + - - - + diff --git a/docs/public/index.search.js b/docs/public/index.search.js index 1fc1c5f..3e24ec2 100644 --- a/docs/public/index.search.js +++ b/docs/public/index.search.js @@ -1,4 +1,11 @@ var relearn_search_index = [ + { + "content": "The yaml top-level map can be any string.\nThe top-level name must be unique.\nExample Config commands: stop-docker-container: cmd: docker Args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, command will be run locally # The host has to be defined in either the config file or the SSH Config files host: some-host hooks error: - some-other-command-when-failing success: - success-command final: - final-command backup-docker-container-script: cmd: /path/to/local/script # script file is input as stdin to SSH type: scriptFile # also can be script environment: - FOO=BAR - APP=$VAR Values available for this section:\nname notes type required cmd Defines the command to execute string yes args Defines the arguments to the command []string no environment Defines evironment variables for the command []string no type May be scriptFile or script. Runs script from local machine on remote. Only applicable when host is defined. string no getOutput Command(s) output is in the notification(s) bool no host If not specified, the command will execute locally. string no scriptEnvFile When type is scriptFile, the script is appended to this file. string no shell Only applicable when host is not specified string no hooks Hooks are used at the end of the individual command. Must be another command. []string no cmd cmd must be a valid command or script to execute.\nargs args must be arguments to cmd as they would be on the command-line:\ncmd [arg1 arg2 ...] Define them in an array:\nargs: - arg1 - arg2 - arg3 getOutput Get command output when a notification is sent.\nIs not required. Can be true or false.\nhost Info If any host is not defined or left blank, the command will run on the local machine.\nHost may or may not be defined in the hosts section.\nInfo If any host from the commands section does not match any object in the hosts section, the Host is assumed to be this value. This value will be used to search in the default SSH config files.\nFor example, say that I have a host defined in my SSH config with the Host defined as web-prod. If I assign a value to host as host: web-prod and don’t specify this value in the hosts object, web-prod will be used as the Host in searching the SSH config files.\nshell If shell is defined and host is NOT defined, the command will run in the specified shell. Make sure to escape any shell input.\nscriptEnvFile Path to a file.\nWhen type is specified, the script is appended to this file.\nThis is useful for specifying environment variables or other things so they don’t have to be included in the script.\ntype May be scriptFile or script. Runs script from local machine on remote host passed to the SSH session as standard input.\nIf type is script, cmd is used as the script.\nIf type is scriptFile, cmd must be a script file.\nenvironment The environment variables support expansion:\nusing escaped values $VAR or ${VAR} For now, the variables have to be defined in an .env file in the same directory as the config file.\nIf using it with host specified, the SSH server has to be configured to accept those env variables.\nIf the command is run locally, the OS’s environment is added.\nhooks Hooks are run after the command is run.\nErrors are run if the command errors, success if it returns no error. Final hooks are run regardless of error condition.\nValues for hooks are as follows:\ncommand: hook: # these commands are defined elsewhere in the file error: - errcommand success: - successcommand final: - donecommand ", + "description": "", + "tags": null, + "title": "Commands", + "uri": "/config/commands/index.html" + }, { "content": "Binaries are available from the release page. Make sure to get the correct version for your system, which supports x86_64, ARM64, and i386.\nSource Install You can install from source. You will need Go installed.\nThen run:\ngo install git.andrewnw.xyz/CyberShell/backy@master Once set, jump over to the config docs and start configuring your file.\n", "description": "This page tells you how to install Backy.\n", @@ -7,56 +14,56 @@ var relearn_search_index = [ "uri": "/getting-started/install/index.html" }, { - "content": "Command lists are for executing commands in sequence and getting notifications from them.\nThe top-level object key can be anything you want.\nkey description type required order Defines the sequence of commands to execute []string yes notifications The notification IDs to use on success and failure []string no name Optional name of the list string no cron Time at which to schedule the list. string no Order The order is an array of commands to execute in order. Each command must be defined.\nNotifications An array of notification IDs to use on success and failure. Must match any of the notifications object map keys.\nName Name is optional for logging. If name is not defined, name will be the object’s map key.\nCron mode Backy also has a cron mode, so one can run backy cron and start a process that schedules jobs to run at times defined in the configuration file.\nAdding cron: 0 0 1 * * * to a cmd-configs object will schedule the list at 1 in the morning. See https://crontab.guru/ for reference.\nTip Note: Backy uses the second field of cron, so add anything except * to the beginning of a regular cron expression.\ncmd-configs: cmds-to-run: # this can be any name you want # all commands have to be defined order: - stop-docker-container - backup-docker-container-script - shell-cmd - hostname notifications: - matrix name: backup-some-server cron: \"0 0 1 * * *\" hostname: name: hostname order: - hostname notifications: - prod-email ", + "content": "Command lists are for executing commands in sequence and getting notifications from them.\nThe top-level object key can be anything you want but not the same as another.\nLists can go in a separate file. Command lists should be in a separate file if:\nkey ‘cmd-lists.file’ is found hosts.yml or hosts.yaml is found in the same directory as the backy config file test2: name: test2 order: - test - test2 notifications: - mail.prod-email - matrix.sysadmin cron: \"0 * * * * *\" key description type required order Defines the sequence of commands to execute []string yes getOutput Command(s) output is in the notification(s) bool no notifications The notification service(s) and ID(s) to use on success and failure. Must be service.id. See the notifications documentation page for more []string no name Optional name of the list string no cron Time at which to schedule the list. Only has affect when cron subcommand is run. string no Order The order is an array of commands to execute in order. Each command must be defined.\norder: - cmd-1 - cmd-2 getOutput Get command output when a notification is sent.\nIs not required. Can be true or false. Default is false.\nNotifications An array of notification IDs to use on success and failure. Must match any of the notifications object map keys.\nName Name is optional. If name is not defined, name will be the object’s map key.\nCron mode Backy also has a cron mode, so one can run backy cron and start a process that schedules jobs to run at times defined in the configuration file.\nAdding cron: 0 0 1 * * * to a cmd-lists object will schedule the list at 1 in the morning. See https://crontab.guru/ for reference.\nTip Note: Backy uses the second field of cron, so add anything except * to the beginning of a regular cron expression.\ncmd-lists: docker-container-backup: # this can be any name you want # all commands have to be defined order: - stop-docker-container - backup-docker-container-script - shell-cmd - hostname - start-docker-container notifications: - matrix.id name: backup-some-container cron: \"0 0 1 * * *\" hostname: name: hostname order: - hostname notifications: - mail.prod-email ", "description": "This page tells you how to get started with Backy.\n", "tags": null, "title": "Command Lists", "uri": "/config/command-lists/index.html" }, { - "content": "The yaml top-level map can be any string.\nThe top-level name must be unique.\ncommands: stop-docker-container: cmd: docker Args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, command will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in either the config file or the SSH Config files host: some-host environment: - FOO=BAR - APP=$VAR Values available for this section:\nname description type required cmd Defines the command to execute string yes args Defines the arguments to the command []string no environment Defines evironment variables for the command []string no host If not specified, the command will execute locally. string no shell Only applicable when host is not specified string no cmd cmd must be a valid command or script to execute.\nargs args must be arguments to cmd as they would be on the command-line:\ncmd [arg1 arg2 ...] Define them in an array:\nargs: - arg1 - arg2 - arg3 host Info If any host is not defined or left blank, the command will run on the local machine.\nHost may or may not be defined in the hosts section.\nInfo If any host from the commands section does not match any object in the hosts section, the Host is assumed to be this value. This value will be used to search in the default SSH config files.\nFor example, say that I have a host defined in my SSH config with the Host defined as web-prod. If I assign a value to host as host: web-prod and don’t specify this value in the hosts object, web-prod will be used as the Host in searching the SSH config files.\nshell If shell is defined and host is NOT defined, the command will run in the specified shell. Make sure to escape any shell input.\nenvironment The environment variables support expansion:\nusing escaped values $VAR or ${VAR} For now the variables have to be defined in an .env file in the same directory as the config file.\nIf using it with host specified, the SSH server has to be configured to accept those env variables.\nIf the command is run locally, the OS’s environment is added.\n", - "description": "", - "tags": null, - "title": "Commands", - "uri": "/config/commands/index.html" - }, - { - "content": "If you have not installed Backy, see the install documentation.\n", + "content": "If you have not installed Backy, see the install documentation.\nIf you need to configure it, see the config page.\n", "description": "This page tells you how to get started with Backy.\n", "tags": null, "title": "Getting started", "uri": "/getting-started/index.html" }, { - "content": "Notifications can be sent on command list completion and failure.\nThe supported platforms for notifications are email (SMTP) and Matrix.\nNotifications are defined by type. The top-level object will be the id, and the type is required.\nInfo Type in a cmd-configs object must match one of these.\nnotifications: prod-email: type: mail host: yourhost.tld port: 587 senderaddress: email@domain.tld to: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: type: matrix home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Types recognized are type: mail and type: matrix\nThe type’s object and its keys are listed below.\ntype: mail key description type host Specifies the SMTP host to connect to string port Specifies the SMTP port uint16 senderaddress Address from which to send mail string to Recipients to send emails to []string username SMTP username string password SMTP password string type: matrix key description type home-server Specifies the Matrix server connect to string room-id Specifies the room ID of the room to send messages to string access-token Matrix access token string user-id Matrix user ID string To get your access token (assumes you are using Element) :\nLog in to the account you want to get the access token for. Click on the name in the top left corner, then “Settings”. Click the “Help \u0026 About” tab (left side of the dialog). Scroll to the bottom and click on \u003cclick to reveal\u003e part of Access Token. Copy your access token to a safe place. To get the room ID:\nOn Element or a similar client, navigate to the room. Navigate to the settings from the top menu. Click on Advanced, the room ID is there. Info Make sure to quote the room ID, as YAML spec defines tags using !.\n", - "description": "This page tells you how to get set up Backy notifications.\n", - "tags": null, - "title": "Notifications", - "uri": "/config/notifications/index.html" - }, - { - "content": "This is the section on the config file.\nTo use a specific file: backy backup -f /path/to/file\nIf you leave the config path blank, the following paths will be searched in order:\n./backy.yml ./backy.yaml ~/.config/backy.yml ~/.config/backy.yaml Create a file at ~/.config/backy.yml.\nSee the documentation in this section to configure it.\n", + "content": "This is the section on the config file.\nTo use a specific file: backy [command] -f /path/to/file\nIf you leave the config path blank, the following paths will be searched in order:\n./backy.yml ./backy.yaml ~/.config/backy.yml ~/.config/backy.yaml Create a file at ~/.config/backy.yml.\nSee the rest of the documentation in this section to configure it.\n", "description": "This page tells you how to configure Backy.\n", "tags": null, "title": "Configuring Backy", "uri": "/config/index.html" }, { - "content": "This page lists documentation for the CLI.\nSubcommands backy backup Backup executes commands defined in config file. Use the --lists flag to execute the specified commands. If not specified, all lists will be executed. Usage: backy backup [--lists=list1,list2] [flags] Flags: -h, --help help for backup -l, --lists strings Accepts comma-separated names of command lists to execute. Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level backy exec Exec executes commands defined in config file. Usage: backy exec command ... [flags] Flags: -h, --help help for exec Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level backy cron Cron starts a scheduler that executes command lists at the time defined in config file. Usage: backy cron [flags] Flags: -h, --help help for cron Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level backy version Prints the version and exits. Usage: backy version [flags] Flags: -h, --help help for version ", + "content": "Notifications can be sent on command list completion and failure.\nThe supported platforms for notifications are email (SMTP) and Matrix.\nNotifications are defined by service, with the current form following below. Ids must come after the service.\nnotifications: mail: prod-email: host: yourhost.tld port: 587 senderaddress: email@domain.tld to: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: matrix: home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Sections recognized are mail and matrix\nThere must be a section with an id (eg. mail.test-svr) following one of these sections.\nmail key description type host Specifies the SMTP host to connect to string port Specifies the SMTP port uint16 senderaddress Address from which to send mail string to Recipients to send emails to []string username SMTP username string password SMTP password string matrix key description type home-server Specifies the Matrix server connect to string room-id Specifies the room ID of the room to send messages to string access-token Matrix access token string user-id Matrix user ID string To get your access token (assumes you are using Element) :\nLog in to the account you want to get the access token for. Click on the name in the top left corner, then “Settings”. Click the “Help \u0026 About” tab (left side of the dialog). Scroll to the bottom and click on \u003cclick to reveal\u003e part of Access Token. Copy your access token to a safe place. To get the room ID:\nOn Element or a similar client, navigate to the room. Navigate to the settings from the top menu. Click on Advanced, the room ID is there. Info Make sure to quote the room ID, as YAML spec defines tags using !.\n", + "description": "This page tells you how to get set up Backy notifications.\n", + "tags": null, + "title": "Notifications", + "uri": "/config/notifications/index.html" + }, + { + "content": "This page lists documentation for the CLI.\nBacky Backy is a command-line application useful for configuring backups, or any commands run in sequence. Usage: backy [command] Available Commands: backup Runs commands defined in config file. completion Generate the autocompletion script for the specified shell cron Starts a scheduler that runs lists defined in config file. exec Runs commands defined in config file in order given. help Help about any command list Lists commands, lists, or hosts defined in config file. version Prints the version and exits Flags: -f, --config string config file to read from -h, --help help for backy -v, --verbose Sets verbose level Use \"backy [command] --help\" for more information about a command. Subcommands backup Backup executes commands defined in config file. Use the --lists or -l flag to execute the specified lists. If not flag is not given, all lists will be executed. Usage: backy backup [--lists=list1,list2,... | -l list1, list2,...] [flags] Flags: -h, --help help for backup -l, --lists strings Accepts comma-separated names of command lists to execute. Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level cron Cron starts a scheduler that executes command lists at the time defined in config file. Usage: backy cron [flags] Flags: -h, --help help for cron Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level exec Exec executes commands defined in config file in order given. Usage: backy exec command ... [flags] Flags: -h, --help help for exec Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level version Prints the version and exits. No arguments just prints the version number only. Usage: backy version [flags] Flags: -h, --help help for version -n, --num Output the version number only. -V, --vpre Output the version with v prefixed. Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level list Backup lists commands or groups defined in config file. Use the --lists or -l flag to list the specified lists. If not flag is not given, all lists will be executed. Usage: backy list [--list=list1,list2,... | -l list1, list2,...] [ -cmd cmd1 cmd2 cmd3...] [flags] Flags: -c, --cmds strings Accepts comma-separated names of commands to list. -h, --help help for list -l, --lists strings Accepts comma-separated names of command lists to list. Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level ", "description": "", "tags": null, "title": "CLI", "uri": "/cli/index.html" }, { - "content": "The repo mirrors are:\nhttps://git.andrewnw.xyz/CyberShell/backy https://git.vern.cc/cybershell/backy https://github.com/CybersShell/backy ", + "content": "Vault is a tool for storing secrets and other data securely.\nVault config can be used by prefixing vault: in front of a password or ENV var.\nThis is the object in the config file:\nvault: token: hvs.tXqcASvTP8wg92f7riyvGyuf address: http://127.0.0.1:8200 enabled: false keys: - name: mongourl mountpath: secret path: mongo/url type: # KVv1 or KVv2 - name: path: type: mountpath: ", + "description": "", + "tags": null, + "title": "Vault", + "uri": "/config/vault/index.html" + }, + { + "content": "The repo mirrors are:\nhttps://git.andrewnw.xyz/CyberShell/backy https://github.com/CybersShell/backy ", "description": "", "tags": null, "title": "Repositories", "uri": "/repositories/index.html" }, { - "content": "Backy is a tool for automating data backup and remote command execution. It can work over SSH, and provides completion and failure notifications, error reporting, and more.\nWhy the name Backy? Because I wanted an app for backups.\nTip Feel free to open a PR, raise an issue(s), or request new feature(s).\nFeatures Allows easy configuration of executable commands\nAllows for commands to be run on many hosts over SSH\nCommands can be grouped in list to run in specific order\nNotifications on completion and failure\nRun in cron mode\nFor any command, especially backup commands\n", + "content": "Backy is a tool for automating data backup and remote command execution. It can work over SSH, and provides completion and failure notifications, error reporting, and more.\nWhy the name Backy? Because I wanted an app for backups.\nView the changelog here.\nTip Feel free to open a PR, raise an issue(s), or request new feature(s).\nFeatures Allows easy configuration of executable commands\nAllows for commands to be run on many hosts over SSH\nCommands can be grouped in list to run in specific order\nNotifications on completion and failure\nRun in cron mode\nFor any command, especially backup commands\n", "description": "", "tags": null, "title": "Backy", @@ -70,7 +77,7 @@ var relearn_search_index = [ "uri": "/categories/index.html" }, { - "content": "Commands The commands section is for defining commands. These can be run with or without a shell and on a host or locally.\nSee the commands documentation for further information.\ncommands: stop-docker-container: cmd: docker args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, cmd will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in the config file host: some-host environment: - FOO=BAR - APP=$VAR # defined in .env file in config directory shell-cmd: cmd: rsync shell: bash args: - -av - some-host:/path/to/data - ~/Docker/Backups/docker-data hostname: cmd: hostname Lists To execute groups of commands in sequence, use a list configuration.\ncmd-configs: cmds-to-run: # this can be any name you want # all commands have to be defined order: - stop-docker-container - backup-docker-container-script - shell-cmd - hostname notifications: - matrix name: backup-some-server hostname: name: hostname order: - hostname notifications: - prod-email Hosts The hosts object may or may not be defined.\nInfo If any host from a commands object does not match any host object, the needed values will be checked in the default SSH config files.\nhosts: # any ssh_config(5) keys/values not listed here will be looked up in the config file or the default config file some-host: hostname: some-hostname config: ~/.ssh/config user: user privatekeypath: /path/to/private/key port: 22 # can also be env:VAR or the password itself password: file:/path/to/file # can also be env:VAR or the password itself privatekeypassword: file:/path/to/file # only one is supported for now proxyjump: some-proxy-host Notifications The notifications object can have two forms.\nFor more, see the notification object documentation. The top-level map key is id that has to be referenced by the cmd-configs key notifications.\nnotifications: prod-email: type: mail host: yourhost.tld port: 587 senderAddress: email@domain.tld recipients: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: type: matrix home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Logging cmd-std-out controls whether commands output is echoed to StdOut.\nIf logfile is not defined, the log file will be written to the config directory in the file backy.log.\nconsole-disabled controls whether the logging messages are echoed to StdOut. Default is false.\nverbose basically does nothing as all necessary info is already output.\nlogging: verbose: false file: path/to/log/file.log console-disabled: false cmd-std-out: false ", + "content": "Commands The commands section is for defining commands. These can be run with or without a shell and on a host or locally.\nSee the commands documentation for further information.\ncommands: stop-docker-container: output: true # Optional and only when run in list and notifications are sent cmd: docker args: - compose - -f /some/path/to/docker-compose.yaml - down # if host is not defined, cmd will be run locally host: some-host backup-docker-container-script: cmd: /path/to/script # The host has to be defined in the config file host: some-host environment: - FOO=BAR - APP=$VAR # defined in .env file in config directory shell-cmd: cmd: rsync shell: bash args: - -av - some-host:/path/to/data - ~/Docker/Backups/docker-data script: type: scriptFile # run a local script on a remote host cmd: path/to/your/script.sh host: some-host hostname: cmd: hostname Lists To execute groups of commands in sequence, use a list configuration.\ncmd-lists: cmds-to-run: # this can be any name you want # all commands have to be defined in the commands section order: - stop-docker-container - backup-docker-container-script - shell-cmd - hostname getOutput: true # Optional and only for when notifications are sent notifications: - matrix name: backup-some-server hostname: name: hostname order: - hostname notifications: - prod-email Hosts The hosts object may or may not be defined.\nInfo If any host from a commands object does not match any host object, the needed values will be checked in the default SSH config files.\nhosts: # any needed ssh_config(5) keys/values not listed here will be looked up in the config file or the default config file some-host: hostname: some-hostname config: ~/.ssh/config user: user privatekeypath: /path/to/private/key port: 22 # can also be env:VAR or the password itself password: file:/path/to/file # can also be env:VAR or the password itself privatekeypassword: file:/path/to/file # only one is supported for now proxyjump: some-proxy-host Notifications The notifications object can have two forms.\nFor more, see the notification object documentation. The top-level map key is id that has to be referenced by the cmd-lists key notifications.\nnotifications: prod-email: type: mail host: yourhost.tld port: 587 senderAddress: email@domain.tld recipients: - admin@domain.tld username: smtp-username@domain.tld password: your-password-here matrix: type: matrix home-server: your-home-server.tld room-id: room-id access-token: your-access-token user-id: your-user-id Logging cmd-std-out controls whether commands output is echoed to StdOut.\nIf logfile is not defined, the log file will be written to the config directory in the file backy.log.\nconsole-disabled controls whether the logging messages are echoed to StdOut. Default is false.\nverbose basically does nothing as all necessary info is already output.\nlogging: verbose: false file: path/to/log/file.log console-disabled: false cmd-std-out: false Vault Vault can be used to get some configuration values and ENV variables securely.\nvault: token: hvs.tXqcASvTP8wg92f7riyvGyuf address: http://127.0.0.1:8200 enabled: false keys: - name: mongourl mountpath: secret path: mongo/url type: # KVv1 or KVv2 - name: path: type: mountpath: ", "description": "This page tells you how to configure Backy.\n", "tags": null, "title": "Config File Definitions", diff --git a/docs/public/index.xml b/docs/public/index.xml index b9aa796..308e7eb 100644 --- a/docs/public/index.xml +++ b/docs/public/index.xml @@ -11,34 +11,134 @@ http://example.org/getting-started/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/getting-started/index.html - If you have not installed Backy, see the install documentation. + <p>If you have not installed Backy, <a href="install">see the install documentation</a>.</p> +<p>If you need to configure it, <a href="config">see the config page</a>.</p> Configuring Backy http://example.org/config/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/config/index.html - This is the section on the config file. -To use a specific file: backy backup -f /path/to/file -If you leave the config path blank, the following paths will be searched in order: -./backy.yml ./backy.yaml ~/.config/backy.yml ~/.config/backy.yaml Create a file at ~/.config/backy.yml. -See the documentation in this section to configure it. + <p>This is the section on the config file.</p> +<p>To use a specific file: +<code>backy [command] -f /path/to/file</code></p> +<p>If you leave the config path blank, the following paths will be searched in order:</p> +<ol> +<li><code>./backy.yml</code></li> +<li><code>./backy.yaml</code></li> +<li><code>~/.config/backy.yml</code></li> +<li><code>~/.config/backy.yaml</code></li> +</ol> +<p>Create a file at <code>~/.config/backy.yml</code>.</p> +<p>See the rest of the documentation in this section to configure it.</p> CLI http://example.org/cli/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/cli/index.html - This page lists documentation for the CLI. -Subcommands backy backup Backup executes commands defined in config file. Use the --lists flag to execute the specified commands. If not specified, all lists will be executed. Usage: backy backup [--lists=list1,list2] [flags] Flags: -h, --help help for backup -l, --lists strings Accepts comma-separated names of command lists to execute. Global Flags: -f, --config string config file to read from -v, --verbose Sets verbose level backy exec Exec executes commands defined in config file. + <p>This page lists documentation for the CLI.</p> +<h2 id="backy">Backy</h2> +<pre tabindex="0"><code>Backy is a command-line application useful for configuring backups, or any commands run in sequence. + +Usage: + backy [command] + +Available Commands: + backup Runs commands defined in config file. + completion Generate the autocompletion script for the specified shell + cron Starts a scheduler that runs lists defined in config file. + exec Runs commands defined in config file in order given. + help Help about any command + list Lists commands, lists, or hosts defined in config file. + version Prints the version and exits + +Flags: + -f, --config string config file to read from + -h, --help help for backy + -v, --verbose Sets verbose level + +Use &#34;backy [command] --help&#34; for more information about a command. +</code></pre><h1 id="subcommands">Subcommands</h1> +<h2 id="backup">backup</h2> +<pre tabindex="0"><code>Backup executes commands defined in config file. +Use the --lists or -l flag to execute the specified lists. If not flag is not given, all lists will be executed. + +Usage: + backy backup [--lists=list1,list2,... | -l list1, list2,...] [flags] + +Flags: + -h, --help help for backup + -l, --lists strings Accepts comma-separated names of command lists to execute. + +Global Flags: + -f, --config string config file to read from + -v, --verbose Sets verbose level +</code></pre><h2 id="cron">cron</h2> +<pre tabindex="0"><code>Cron starts a scheduler that executes command lists at the time defined in config file. + +Usage: + backy cron [flags] + +Flags: + -h, --help help for cron + +Global Flags: + -f, --config string config file to read from + -v, --verbose Sets verbose level +</code></pre><h2 id="exec">exec</h2> +<pre tabindex="0"><code>Exec executes commands defined in config file in order given. + +Usage: + backy exec command ... [flags] + +Flags: + -h, --help help for exec + +Global Flags: + -f, --config string config file to read from + -v, --verbose Sets verbose level +</code></pre><h2 id="version">version</h2> +<pre tabindex="0"><code>Prints the version and exits. No arguments just prints the version number only. + +Usage: + backy version [flags] + +Flags: + -h, --help help for version + -n, --num Output the version number only. + -V, --vpre Output the version with v prefixed. + +Global Flags: + -f, --config string config file to read from + -v, --verbose Sets verbose level +</code></pre><h2 id="list">list</h2> +<pre tabindex="0"><code>Backup lists commands or groups defined in config file. +Use the --lists or -l flag to list the specified lists. If not flag is not given, all lists will be executed. + +Usage: + backy list [--list=list1,list2,... | -l list1, list2,...] [ -cmd cmd1 cmd2 cmd3...] [flags] + +Flags: + -c, --cmds strings Accepts comma-separated names of commands to list. + -h, --help help for list + -l, --lists strings Accepts comma-separated names of command lists to list. + +Global Flags: + -f, --config string config file to read from + -v, --verbose Sets verbose level +</code></pre> Repositories http://example.org/repositories/index.html Mon, 01 Jan 0001 00:00:00 +0000 http://example.org/repositories/index.html - The repo mirrors are: -https://git.andrewnw.xyz/CyberShell/backy https://git.vern.cc/cybershell/backy https://github.com/CybersShell/backy + <p>The repo mirrors are:</p> +<ul> +<li><a href="https://git.andrewnw.xyz/CyberShell/backy" target="_blank">https://git.andrewnw.xyz/CyberShell/backy</a></li> +<li><a href="https://github.com/CybersShell/backy" target="_blank">https://github.com/CybersShell/backy</a></li> +</ul> \ No newline at end of file diff --git a/docs/public/js/mermaid.min.js b/docs/public/js/mermaid.min.js index e9adf40..871d554 100644 --- a/docs/public/js/mermaid.min.js +++ b/docs/public/js/mermaid.min.js @@ -1,202 +1,130 @@ -(function(jr,wn){typeof exports=="object"&&typeof module<"u"?module.exports=wn():typeof define=="function"&&define.amd?define(wn):(jr=typeof globalThis<"u"?globalThis:jr||self,jr.mermaid=wn())})(this,function(){"use strict";var Ost=Object.defineProperty;var Fst=(jr,wn,fn)=>wn in jr?Ost(jr,wn,{enumerable:!0,configurable:!0,writable:!0,value:fn}):jr[wn]=fn;var vl=(jr,wn,fn)=>(Fst(jr,typeof wn!="symbol"?wn+"":wn,fn),fn);var jr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wn(t){var e=t.default;if(typeof e=="function"){var r=function(){return e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}),r}function fn(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var y_={exports:{}};(function(t,e){(function(r,n){t.exports=n()})(jr,function(){var r;function n(){return r.apply(null,arguments)}function i(g){return g instanceof Array||Object.prototype.toString.call(g)==="[object Array]"}function a(g){return g!=null&&Object.prototype.toString.call(g)==="[object Object]"}function s(g,E){return Object.prototype.hasOwnProperty.call(g,E)}function o(g){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(g).length===0;for(var E in g)if(s(g,E))return;return 1}function l(g){return g===void 0}function u(g){return typeof g=="number"||Object.prototype.toString.call(g)==="[object Number]"}function h(g){return g instanceof Date||Object.prototype.toString.call(g)==="[object Date]"}function d(g,E){for(var I=[],O=g.length,G=0;G>>0,O=0;Oue(g)?(ht=g+1,xt-ue(g)):(ht=g,xt);return{year:ht,dayOfYear:Mt}}function Ke(g,E,I){var O,G,ht=Ie(g.year(),E,I),ht=Math.floor((g.dayOfYear()-ht-1)/7)+1;return ht<1?O=ht+wr(G=g.year()-1,E,I):ht>wr(g.year(),E,I)?(O=ht-wr(g.year(),E,I),G=g.year()+1):(G=g.year(),O=ht),{week:O,year:G}}function wr(g,G,I){var O=Ie(g,G,I),G=Ie(g+1,G,I);return(ue(g)-O+G)/7}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),Z("week",5),Z("isoWeek",5),ft("w",at),ft("ww",at,fe),ft("W",at),ft("WW",at,fe),we(["w","ww","W","WW"],function(g,E,I,O){E[O.substr(0,1)]=q(g)});function Ge(g,E){return g.slice(E,7).concat(g.slice(0,E))}Y("d",0,"do","day"),Y("dd",0,0,function(g){return this.localeData().weekdaysMin(this,g)}),Y("ddd",0,0,function(g){return this.localeData().weekdaysShort(this,g)}),Y("dddd",0,0,function(g){return this.localeData().weekdays(this,g)}),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),Z("day",11),Z("weekday",11),Z("isoWeekday",11),ft("d",at),ft("e",at),ft("E",at),ft("dd",function(g,E){return E.weekdaysMinRegex(g)}),ft("ddd",function(g,E){return E.weekdaysShortRegex(g)}),ft("dddd",function(g,E){return E.weekdaysRegex(g)}),we(["dd","ddd","dddd"],function(g,E,I,O){O=I._locale.weekdaysParse(g,O,I._strict),O!=null?E.d=O:m(I).invalidWeekday=g}),we(["d","e","E"],function(g,E,I,O){E[O]=q(g)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),qt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),st="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),At=Tt,Nt=Tt,Jt=Tt;function ze(){function g(Ot,de){return de.length-Ot.length}for(var E,I,O,G=[],ht=[],xt=[],Mt=[],Vt=0;Vt<7;Vt++)O=p([2e3,1]).day(Vt),E=Dt(this.weekdaysMin(O,"")),I=Dt(this.weekdaysShort(O,"")),O=Dt(this.weekdays(O,"")),G.push(E),ht.push(I),xt.push(O),Mt.push(E),Mt.push(I),Mt.push(O);G.sort(g),ht.sort(g),xt.sort(g),Mt.sort(g),this._weekdaysRegex=new RegExp("^("+Mt.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+xt.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+ht.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+G.join("|")+")","i")}function Pe(){return this.hours()%12||12}function qe(g,E){Y(g,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),E)})}function Tr(g,E){return E._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,Pe),Y("k",["kk",2],0,function(){return this.hours()||24}),Y("hmm",0,0,function(){return""+Pe.apply(this)+N(this.minutes(),2)}),Y("hmmss",0,0,function(){return""+Pe.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)}),Y("Hmm",0,0,function(){return""+this.hours()+N(this.minutes(),2)}),Y("Hmmss",0,0,function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)}),qe("a",!0),qe("A",!1),W("hour","h"),Z("hour",13),ft("a",Tr),ft("A",Tr),ft("H",at),ft("h",at),ft("k",at),ft("HH",at,fe),ft("hh",at,fe),ft("kk",at,fe),ft("hmm",It),ft("hmmss",Lt),ft("Hmm",It),ft("Hmmss",Lt),Qt(["H","HH"],bt),Qt(["k","kk"],function(g,E,I){g=q(g),E[bt]=g===24?0:g}),Qt(["a","A"],function(g,E,I){I._isPm=I._locale.isPM(g),I._meridiem=g}),Qt(["h","hh"],function(g,E,I){E[bt]=q(g),m(I).bigHour=!0}),Qt("hmm",function(g,E,I){var O=g.length-2;E[bt]=q(g.substr(0,O)),E[Et]=q(g.substr(O)),m(I).bigHour=!0}),Qt("hmmss",function(g,E,I){var O=g.length-4,G=g.length-2;E[bt]=q(g.substr(0,O)),E[Et]=q(g.substr(O,2)),E[kt]=q(g.substr(G)),m(I).bigHour=!0}),Qt("Hmm",function(g,E,I){var O=g.length-2;E[bt]=q(g.substr(0,O)),E[Et]=q(g.substr(O))}),Qt("Hmmss",function(g,E,I){var O=g.length-4,G=g.length-2;E[bt]=q(g.substr(0,O)),E[Et]=q(g.substr(O,2)),E[kt]=q(g.substr(G))}),Tt=U("Hours",!0);var Ve,va={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:ne,monthsShort:ve,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:st,weekdaysShort:qt,meridiemParse:/[ap]\.?m?\.?/i},Ce={},Wi={};function E0(g){return g&&g.toLowerCase().replace("_","-")}function _u(g){for(var E,I,O,G,ht=0;ht=E&&function(xt,Mt){for(var Vt=Math.min(xt.length,Mt.length),Ot=0;Ot=E-1)break;E--}ht++}return Ve}function Ln(g){var E;if(Ce[g]===void 0&&!0&&t&&t.exports&&g.match("^[^/\\\\]*$")!=null)try{E=Ve._abbr,fn("./locale/"+g),Xt(E)}catch{Ce[g]=null}return Ce[g]}function Xt(g,E){return g&&((E=l(E)?ce(g):ee(g,E))?Ve=E:typeof console<"u"&&console.warn&&console.warn("Locale "+g+" not found. Did you forget to load it?")),Ve._abbr}function ee(g,E){if(E===null)return delete Ce[g],null;var I,O=va;if(E.abbr=g,Ce[g]!=null)L("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),O=Ce[g]._config;else if(E.parentLocale!=null)if(Ce[E.parentLocale]!=null)O=Ce[E.parentLocale]._config;else{if((I=Ln(E.parentLocale))==null)return Wi[E.parentLocale]||(Wi[E.parentLocale]=[]),Wi[E.parentLocale].push({name:g,config:E}),null;O=I._config}return Ce[g]=new w(B(O,E)),Wi[g]&&Wi[g].forEach(function(G){ee(G.name,G.config)}),Xt(g),Ce[g]}function ce(g){var E;if(!(g=g&&g._locale&&g._locale._abbr?g._locale._abbr:g))return Ve;if(!i(g)){if(E=Ln(g))return E;g=[g]}return _u(g)}function Pt(g){var E=g._a;return E&&m(g).overflow===-2&&(E=E[zt]<0||11yt(E[Ft],E[zt])?wt:E[bt]<0||24wr(ht,Vt,Ot)?m(O)._overflowWeeks=!0:de!=null?m(O)._overflowWeekday=!0:(ie=oe(ht,xt,Mt,Vt,Ot),O._a[Ft]=ie.year,O._dayOfYear=ie.dayOfYear)),g._dayOfYear!=null&&(G=Gi(g._a[Ft],I[Ft]),(g._dayOfYear>ue(G)||g._dayOfYear===0)&&(m(g)._overflowDayOfYear=!0),de=Hr(G,0,g._dayOfYear),g._a[zt]=de.getUTCMonth(),g._a[wt]=de.getUTCDate()),E=0;E<3&&g._a[E]==null;++E)g._a[E]=er[E]=I[E];for(;E<7;E++)g._a[E]=er[E]=g._a[E]==null?E===2?1:0:g._a[E];g._a[bt]===24&&g._a[Et]===0&&g._a[kt]===0&&g._a[Ut]===0&&(g._nextDay=!0,g._a[bt]=0),g._d=(g._useUTC?Hr:_a).apply(null,er),ht=g._useUTC?g._d.getUTCDay():g._d.getDay(),g._tzm!=null&&g._d.setUTCMinutes(g._d.getUTCMinutes()-g._tzm),g._nextDay&&(g._a[bt]=24),g._w&&g._w.d!==void 0&&g._w.d!==ht&&(m(g).weekdayMismatch=!0)}}function vu(g){if(g._f===n.ISO_8601)A0(g);else if(g._f===n.RFC_2822)Hi(g);else{g._a=[],m(g).empty=!0;for(var E,I,O,G,ht,xt=""+g._i,Mt=xt.length,Vt=0,Ot=lt(g._f,g._locale).match(z)||[],de=Ot.length,ie=0;ieg.valueOf():g.valueOf()"}),P.toJSON=function(){return this.isValid()?this.toISOString():null},P.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},P.unix=function(){return Math.floor(this.valueOf()/1e3)},P.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},P.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},P.eraName=function(){for(var g,E=this.localeData().eras(),I=0,O=E.length;Ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},P.isLocal=function(){return!!this.isValid()&&!this._isUTC},P.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},P.isUtc=rR,P.isUTC=rR,P.zoneAbbr=function(){return this._isUTC?"UTC":""},P.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},P.dates=R("dates accessor is deprecated. Use date instead.",ls),P.months=R("months accessor is deprecated. Use month instead",se),P.years=R("years accessor is deprecated. Use year instead",N0),P.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(g,E){return g!=null?(this.utcOffset(g=typeof g!="string"?-g:g,E),this):-this.utcOffset()}),P.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var g,E={};return T(E,this),(E=M0(E))._a?(g=(E._isUTC?p:De)(E._a),this._isDSTShifted=this.isValid()&&0{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},D0=function(t="fatal"){let e=ji.fatal;typeof t=="string"?(t=t.toLowerCase(),t in ji&&(e=ji[t])):typeof t=="number"&&(e=t),H.trace=()=>{},H.debug=()=>{},H.info=()=>{},H.warn=()=>{},H.error=()=>{},H.fatal=()=>{},e<=ji.fatal&&(H.fatal=console.error?console.error.bind(console,Nn("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Nn("FATAL"))),e<=ji.error&&(H.error=console.error?console.error.bind(console,Nn("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Nn("ERROR"))),e<=ji.warn&&(H.warn=console.warn?console.warn.bind(console,Nn("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Nn("WARN"))),e<=ji.info&&(H.info=console.info?console.info.bind(console,Nn("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Nn("INFO"))),e<=ji.debug&&(H.debug=console.debug?console.debug.bind(console,Nn("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Nn("DEBUG"))),e<=ji.trace&&(H.trace=console.debug?console.debug.bind(console,Nn("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Nn("TRACE")))},Nn=t=>`%c${Xn().format("ss.SSS")} : ${t} : `;var O0={};Object.defineProperty(O0,"__esModule",{value:!0});var ki=O0.sanitizeUrl=void 0,bR=/^([^\w]*)(javascript|data|vbscript)/im,_R=/&#(\w+)(^\w|;)?/g,vR=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,xR=/^([^:]+):/gm,kR=[".","/"];function wR(t){return kR.indexOf(t[0])>-1}function TR(t){return t.replace(_R,function(e,r){return String.fromCharCode(r)})}function ER(t){var e=TR(t||"").replace(vR,"").trim();if(!e)return"about:blank";if(wR(e))return e;var r=e.match(xR);if(!r)return e;var n=r[0];return bR.test(n)?"about:blank":e}ki=O0.sanitizeUrl=ER;function Qe(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function m_(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function ku(t){let e,r,n;t.length!==2?(e=Qe,r=(o,l)=>Qe(t(o),l),n=(o,l)=>t(o)-l):(e=t===Qe||t===m_?t:CR,r=t,n=t);function i(o,l,u=0,h=o.length){if(u>>1;r(o[d],l)<0?u=d+1:h=d}while(u>>1;r(o[d],l)<=0?u=d+1:h=d}while(uu&&n(o[d-1],l)>-n(o[d],l)?d-1:d}return{left:i,center:s,right:a}}function CR(){return 0}function b_(t){return t===null?NaN:+t}function*__(t,e){if(e===void 0)for(let r of t)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of t)(n=e(n,++r,t))!=null&&(n=+n)>=n&&(yield n)}}const v_=ku(Qe),x_=v_.right,SR=v_.left,AR=ku(b_).center,cs=x_;function MR(t,e){if(!((e=+e)>=0))throw new RangeError("invalid r");let r=t.length;if(!((r=Math.floor(r))>=0))throw new RangeError("invalid length");if(!r||!e)return t;const n=F0(e),i=t.slice();return n(t,i,0,r,1),n(i,t,0,r,1),n(t,i,0,r,1),t}const k_=w_(F0),LR=w_(RR);function w_(t){return function(e,r,n=r){if(!((r=+r)>=0))throw new RangeError("invalid rx");if(!((n=+n)>=0))throw new RangeError("invalid ry");let{data:i,width:a,height:s}=e;if(!((a=Math.floor(a))>=0))throw new RangeError("invalid width");if(!((s=Math.floor(s!==void 0?s:i.length/a))>=0))throw new RangeError("invalid height");if(!a||!s||!r&&!n)return e;const o=r&&t(r),l=n&&t(n),u=i.slice();return o&&l?(ro(o,u,i,a,s),ro(o,i,u,a,s),ro(o,u,i,a,s),no(l,i,u,a,s),no(l,u,i,a,s),no(l,i,u,a,s)):o?(ro(o,i,u,a,s),ro(o,u,i,a,s),ro(o,i,u,a,s)):l&&(no(l,i,u,a,s),no(l,u,i,a,s),no(l,i,u,a,s)),e}}function ro(t,e,r,n,i){for(let a=0,s=n*i;a{i<<=2,a<<=2,s<<=2,e(r,n,i+0,a+0,s),e(r,n,i+1,a+1,s),e(r,n,i+2,a+2,s),e(r,n,i+3,a+3,s)}}function F0(t){const e=Math.floor(t);if(e===t)return IR(t);const r=t-e,n=2*t+1;return(i,a,s,o,l)=>{if(!((o-=l)>=s))return;let u=e*a[s];const h=l*e,d=h+l;for(let f=s,p=s+h;f{if(!((a-=s)>=i))return;let o=t*n[i];const l=s*t;for(let u=i,h=i+l;u=n&&++r;else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(i=+i)>=i&&++r}return r}function NR(t){return t.length|0}function BR(t){return!(t>0)}function DR(t){return typeof t!="object"||"length"in t?t:Array.from(t)}function OR(t){return e=>t(...e)}function FR(...t){const e=typeof t[t.length-1]=="function"&&OR(t.pop());t=t.map(DR);const r=t.map(NR),n=t.length-1,i=new Array(n+1).fill(0),a=[];if(n<0||r.some(BR))return a;for(;;){a.push(i.map((o,l)=>t[l][o]));let s=n;for(;++i[s]===r[s];){if(s===0)return e?a.map(e):a;i[s--]=0}}}function PR(t,e){var r=0,n=0;return Float64Array.from(t,e===void 0?i=>r+=+i||0:i=>r+=+e(i,n++,t)||0)}function T_(t,e){let r=0,n,i=0,a=0;if(e===void 0)for(let s of t)s!=null&&(s=+s)>=s&&(n=s-i,i+=n/++r,a+=n*(s-i));else{let s=-1;for(let o of t)(o=e(o,++s,t))!=null&&(o=+o)>=o&&(n=o-i,i+=n/++r,a+=n*(o-i))}if(r>1)return a/(r-1)}function E_(t,e){const r=T_(t,e);return r&&Math.sqrt(r)}function xl(t,e){let r,n;if(e===void 0)for(const i of t)i!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n=a&&(r=n=a):(r>a&&(r=a),n0){for(s=e[--r];r>0&&(n=s,i=e[--r],s=n+i,a=i-(s-n),!a););r>0&&(a<0&&e[r-1]<0||a>0&&e[r-1]>0)&&(i=a*2,n=s+i,i==n-s&&(s=n))}return s}}function qR(t,e){const r=new _r;if(e===void 0)for(let n of t)(n=+n)&&r.add(n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&r.add(i)}return+r}function VR(t,e){const r=new _r;let n=-1;return Float64Array.from(t,e===void 0?i=>r.add(+i||0):i=>r.add(+e(i,++n,t)||0))}class kl extends Map{constructor(e,r=A_){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(const[n,i]of e)this.set(n,i)}get(e){return super.get(P0(this,e))}has(e){return super.has(P0(this,e))}set(e,r){return super.set(C_(this,e),r)}delete(e){return super.delete(S_(this,e))}}class us extends Set{constructor(e,r=A_){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(const n of e)this.add(n)}has(e){return super.has(P0(this,e))}add(e){return super.add(C_(this,e))}delete(e){return super.delete(S_(this,e))}}function P0({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):r}function C_({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function S_({_intern:t,_key:e},r){const n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function A_(t){return t!==null&&typeof t=="object"?t.valueOf():t}function io(t){return t}function M_(t,...e){return ao(t,io,io,e)}function L_(t,...e){return ao(t,Array.from,io,e)}function R_(t,e){for(let r=1,n=e.length;ri.pop().map(([a,s])=>[...i,a,s]));return t}function zR(t,...e){return R_(L_(t,...e),e)}function YR(t,e,...r){return R_(N_(t,e,...r),r)}function I_(t,e,...r){return ao(t,io,e,r)}function N_(t,e,...r){return ao(t,Array.from,e,r)}function UR(t,...e){return ao(t,io,B_,e)}function WR(t,...e){return ao(t,Array.from,B_,e)}function B_(t){if(t.length!==1)throw new Error("duplicate key");return t[0]}function ao(t,e,r,n){return function i(a,s){if(s>=n.length)return r(a);const o=new kl,l=n[s++];let u=-1;for(const h of a){const d=l(h,++u,a),f=o.get(d);f?f.push(h):o.set(d,[h])}for(const[h,d]of o)o.set(h,i(d,s));return e(o)}(t,0)}function D_(t,e){return Array.from(e,r=>t[r])}function q0(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[r]=e;if(r&&r.length!==2||e.length>1){const n=Uint32Array.from(t,(i,a)=>a);return e.length>1?(e=e.map(i=>t.map(i)),n.sort((i,a)=>{for(const s of e){const o=so(s[i],s[a]);if(o)return o}})):(r=t.map(r),n.sort((i,a)=>so(r[i],r[a]))),D_(t,n)}return t.sort(V0(r))}function V0(t=Qe){if(t===Qe)return so;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,r)=>{const n=t(e,r);return n||n===0?n:(t(r,r)===0)-(t(e,e)===0)}}function so(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(te?1:0)}function HR(t,e,r){return(e.length!==2?q0(I_(t,e,r),([n,i],[a,s])=>Qe(i,s)||Qe(n,a)):q0(M_(t,r),([n,i],[a,s])=>e(i,s)||Qe(n,a))).map(([n])=>n)}var GR=Array.prototype,jR=GR.slice;function Tu(t){return()=>t}var z0=Math.sqrt(50),Y0=Math.sqrt(10),U0=Math.sqrt(2);function hs(t,e,r){var n,i=-1,a,s,o;if(e=+e,t=+t,r=+r,t===e&&r>0)return[t];if((n=e0){let l=Math.round(t/o),u=Math.round(e/o);for(l*oe&&--u,s=new Array(a=u-l+1);++ie&&--u,s=new Array(a=u-l+1);++i=0?(a>=z0?10:a>=Y0?5:a>=U0?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=z0?10:a>=Y0?5:a>=U0?2:1)}function wl(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=z0?i*=10:a>=Y0?i*=5:a>=U0&&(i*=2),e0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),n=i}}function W0(t){return Math.ceil(Math.log(wu(t))/Math.LN2)+1}function F_(){var t=io,e=xl,r=W0;function n(i){Array.isArray(i)||(i=Array.from(i));var a,s=i.length,o,l,u=new Array(s);for(a=0;a=f)if(b>=f&&e===xl){const k=oo(d,f,x);isFinite(k)&&(k>0?f=(Math.floor(f/k)+1)*k:k<0&&(f=(Math.ceil(f*-k)+1)/-k))}else p.pop()}for(var m=p.length;p[0]<=d;)p.shift(),--m;for(;p[m-1]>f;)p.pop(),--m;var _=new Array(m+1),y;for(a=0;a<=m;++a)y=_[a]=[],y.x0=a>0?p[a-1]:d,y.x1=a0)for(a=0;a=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}function H0(t,e){let r,n=-1,i=-1;if(e===void 0)for(const a of t)++i,a!=null&&(r=a)&&(r=a,n=i);else for(let a of t)(a=e(a,++i,t))!=null&&(r=a)&&(r=a,n=i);return n}function Tl(t,e){let r;if(e===void 0)for(const n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}function G0(t,e){let r,n=-1,i=-1;if(e===void 0)for(const a of t)++i,a!=null&&(r>a||r===void 0&&a>=a)&&(r=a,n=i);else for(let a of t)(a=e(a,++i,t))!=null&&(r>a||r===void 0&&a>=a)&&(r=a,n=i);return n}function Eu(t,e,r=0,n=t.length-1,i){for(i=i===void 0?so:V0(i);n>r;){if(n-r>600){const l=n-r+1,u=e-r+1,h=Math.log(l),d=.5*Math.exp(2*h/3),f=.5*Math.sqrt(h*d*(l-d)/l)*(u-l/2<0?-1:1),p=Math.max(r,Math.floor(e-u*d/l+f)),m=Math.min(n,Math.floor(e+(l-u)*d/l+f));Eu(t,e,p,m,i)}const a=t[e];let s=r,o=n;for(El(t,r,e),i(t[n],a)>0&&El(t,r,n);s0;)--o}i(t[r],a)===0?El(t,r,o):(++o,El(t,o,n)),o<=e&&(r=o+1),e<=o&&(n=o-1)}return t}function El(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function P_(t,e=Qe){let r,n=!1;if(e.length===1){let i;for(const a of t){const s=e(a);(n?Qe(s,i)>0:Qe(s,s)===0)&&(r=a,i=s,n=!0)}}else for(const i of t)(n?e(i,r)>0:e(i,i)===0)&&(r=i,n=!0);return r}function Cl(t,e,r){if(t=Float64Array.from(__(t,r)),!!(n=t.length)){if((e=+e)<=0||n<2)return Tl(t);if(e>=1)return lo(t);var n,i=(n-1)*e,a=Math.floor(i),s=lo(Eu(t,a).subarray(0,a+1)),o=Tl(t.subarray(a+1));return s+(o-s)*(i-a)}}function q_(t,e,r=b_){if(!!(n=t.length)){if((e=+e)<=0||n<2)return+r(t[0],0,t);if(e>=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),s=+r(t[a],a,t),o=+r(t[a+1],a+1,t);return s+(o-s)*(i-a)}}function V_(t,e,r){if(t=Float64Array.from(__(t,r)),!!(n=t.length)){if((e=+e)<=0||n<2)return G0(t);if(e>=1)return H0(t);var n,i=Math.floor((n-1)*e),a=(o,l)=>so(t[o],t[l]),s=Eu(Uint32Array.from(t,(o,l)=>l),i,0,n-1,a);return P_(s.subarray(0,i+1),o=>t[o])}}function $R(t,e,r){return Math.ceil((r-e)/(2*(Cl(t,.75)-Cl(t,.25))*Math.pow(wu(t),-1/3)))}function XR(t,e,r){return Math.ceil((r-e)*Math.cbrt(wu(t))/(3.49*E_(t)))}function KR(t,e){let r=0,n=0;if(e===void 0)for(let i of t)i!=null&&(i=+i)>=i&&(++r,n+=i);else{let i=-1;for(let a of t)(a=e(a,++i,t))!=null&&(a=+a)>=a&&(++r,n+=a)}if(r)return n/r}function ZR(t,e){return Cl(t,.5,e)}function QR(t,e){return V_(t,.5,e)}function*JR(t){for(const e of t)yield*e}function j0(t){return Array.from(JR(t))}function tI(t,e){const r=new kl;if(e===void 0)for(let a of t)a!=null&&a>=a&&r.set(a,(r.get(a)||0)+1);else{let a=-1;for(let s of t)(s=e(s,++a,t))!=null&&s>=s&&r.set(s,(r.get(s)||0)+1)}let n,i=0;for(const[a,s]of r)s>i&&(i=s,n=a);return n}function eI(t,e=rI){const r=[];let n,i=!1;for(const a of t)i&&r.push(e(n,a)),n=a,i=!0;return r}function rI(t,e){return[t,e]}function Ca(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++ne(r[o],r[l]);let a,s;return Uint32Array.from(r,(o,l)=>l).sort(e===Qe?(o,l)=>so(r[o],r[l]):V0(i)).forEach((o,l)=>{const u=i(o,a===void 0?o:a);u>=0?((a===void 0||u>0)&&(a=o,s=l),n[o]=s):n[o]=NaN}),n}function iI(t,e=Qe){let r,n=!1;if(e.length===1){let i;for(const a of t){const s=e(a);(n?Qe(s,i)<0:Qe(s,s)===0)&&(r=a,i=s,n=!0)}}else for(const i of t)(n?e(i,r)<0:e(i,i)===0)&&(r=i,n=!0);return r}function z_(t,e=Qe){if(e.length===1)return G0(t,e);let r,n=-1,i=-1;for(const a of t)++i,(n<0?e(a,a)===0:e(a,r)<0)&&(r=a,n=i);return n}function aI(t,e=Qe){if(e.length===1)return H0(t,e);let r,n=-1,i=-1;for(const a of t)++i,(n<0?e(a,a)===0:e(a,r)>0)&&(r=a,n=i);return n}function sI(t,e){const r=z_(t,e);return r<0?void 0:r}const oI=Y_(Math.random);function Y_(t){return function(r,n=0,i=r.length){let a=i-(n=+n);for(;a;){const s=t()*a--|0,o=r[a+n];r[a+n]=r[s+n],r[s+n]=o}return r}}function lI(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}function U_(t){if(!(a=t.length))return[];for(var e=-1,r=Tl(t,cI),n=new Array(r);++ee(r,n,t))}function gI(t,e,r){if(typeof e!="function")throw new TypeError("reducer is not a function");const n=t[Symbol.iterator]();let i,a,s=-1;if(arguments.length<3){if({done:i,value:r}=n.next(),i)return;++s}for(;{done:i,value:a}=n.next(),!i;)r=e(r,a,++s,t);return r}function yI(t){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");return Array.from(t).reverse()}function mI(t,...e){t=new us(t);for(const r of e)for(const n of r)t.delete(n);return t}function bI(t,e){const r=e[Symbol.iterator](),n=new us;for(const i of t){if(n.has(i))return!1;let a,s;for(;({value:a,done:s}=r.next())&&!s;){if(Object.is(i,a))return!1;n.add(a)}}return!0}function _I(t,...e){t=new us(t),e=e.map(vI);t:for(const r of t)for(const n of e)if(!n.has(r)){t.delete(r);continue t}return t}function vI(t){return t instanceof us?t:new us(t)}function W_(t,e){const r=t[Symbol.iterator](),n=new Set;for(const i of e){const a=H_(i);if(n.has(a))continue;let s,o;for(;{value:s,done:o}=r.next();){if(o)return!1;const l=H_(s);if(n.add(l),Object.is(a,l))break}}return!0}function H_(t){return t!==null&&typeof t=="object"?t.valueOf():t}function xI(t,e){return W_(e,t)}function kI(...t){const e=new us;for(const r of t)for(const n of r)e.add(n);return e}function wI(t){return t}var Cu=1,Su=2,$0=3,Sl=4,G_=1e-6;function TI(t){return"translate("+t+",0)"}function EI(t){return"translate(0,"+t+")"}function CI(t){return e=>+t(e)}function SI(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function AI(){return!this.__axis}function Au(t,e){var r=[],n=null,i=null,a=6,s=6,o=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=t===Cu||t===Sl?-1:1,h=t===Sl||t===Su?"x":"y",d=t===Cu||t===$0?TI:EI;function f(p){var m=n==null?e.ticks?e.ticks.apply(e,r):e.domain():n,_=i==null?e.tickFormat?e.tickFormat.apply(e,r):wI:i,y=Math.max(a,0)+o,b=e.range(),x=+b[0]+l,k=+b[b.length-1]+l,T=(e.bandwidth?SI:CI)(e.copy(),l),C=p.selection?p.selection():p,M=C.selectAll(".domain").data([null]),S=C.selectAll(".tick").data(m,e).order(),R=S.exit(),A=S.enter().append("g").attr("class","tick"),L=S.select("line"),v=S.select("text");M=M.merge(M.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(A),L=L.merge(A.append("line").attr("stroke","currentColor").attr(h+"2",u*a)),v=v.merge(A.append("text").attr("fill","currentColor").attr(h,u*y).attr("dy",t===Cu?"0em":t===$0?"0.71em":"0.32em")),p!==C&&(M=M.transition(p),S=S.transition(p),L=L.transition(p),v=v.transition(p),R=R.transition(p).attr("opacity",G_).attr("transform",function(B){return isFinite(B=T(B))?d(B+l):this.getAttribute("transform")}),A.attr("opacity",G_).attr("transform",function(B){var w=this.parentNode.__axis;return d((w&&isFinite(w=w(B))?w:T(B))+l)})),R.remove(),M.attr("d",t===Sl||t===Su?s?"M"+u*s+","+x+"H"+l+"V"+k+"H"+u*s:"M"+l+","+x+"V"+k:s?"M"+x+","+u*s+"V"+l+"H"+k+"V"+u*s:"M"+x+","+l+"H"+k),S.attr("opacity",1).attr("transform",function(B){return d(T(B)+l)}),L.attr(h+"2",u*a),v.attr(h,u*y).text(_),C.filter(AI).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Su?"start":t===Sl?"end":"middle"),C.each(function(){this.__axis=T})}return f.scale=function(p){return arguments.length?(e=p,f):e},f.ticks=function(){return r=Array.from(arguments),f},f.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),f):r.slice()},f.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),f):n&&n.slice()},f.tickFormat=function(p){return arguments.length?(i=p,f):i},f.tickSize=function(p){return arguments.length?(a=s=+p,f):a},f.tickSizeInner=function(p){return arguments.length?(a=+p,f):a},f.tickSizeOuter=function(p){return arguments.length?(s=+p,f):s},f.tickPadding=function(p){return arguments.length?(o=+p,f):o},f.offset=function(p){return arguments.length?(l=+p,f):l},f}function j_(t){return Au(Cu,t)}function MI(t){return Au(Su,t)}function $_(t){return Au($0,t)}function LI(t){return Au(Sl,t)}var RI={value:()=>{}};function fs(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Mu.prototype=fs.prototype={constructor:Mu,on:function(t,e){var r=this._,n=II(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),K0.hasOwnProperty(e)?{space:K0[e],local:t}:t}function BI(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===X0&&e.documentElement.namespaceURI===X0?e.createElement(t):e.createElementNS(r,t)}}function DI(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Lu(t){var e=Al(t);return(e.local?DI:BI)(e)}function OI(){}function Ru(t){return t==null?OI:function(){return this.querySelector(t)}}function FI(t){typeof t!="function"&&(t=Ru(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i=k&&(k=x+1);!(C=y[k])&&++k=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}function oN(t){t||(t=lN);function e(d,f){return d&&f?t(d.__data__,f.__data__):!d-!f}for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}function cN(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function uN(){return Array.from(this)}function hN(){for(var t=this._groups,e=0,r=t.length;e1?this.each((e==null?kN:typeof e=="function"?TN:wN)(t,e,r==null?"":r)):ds(this.node(),t)}function ds(t,e){return t.style.getPropertyValue(e)||J0(t).getComputedStyle(t,null).getPropertyValue(e)}function CN(t){return function(){delete this[t]}}function SN(t,e){return function(){this[t]=e}}function AN(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function MN(t,e){return arguments.length>1?this.each((e==null?CN:typeof e=="function"?AN:SN)(t,e)):this.node()[t]}function J_(t){return t.trim().split(/^|\s+/)}function td(t){return t.classList||new t5(t)}function t5(t){this._node=t,this._names=J_(t.getAttribute("class")||"")}t5.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function e5(t,e){for(var r=td(t),n=-1,i=e.length;++n=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function nB(t){return function(){var e=this.__on;if(!!e){for(var r=0,n=-1,i=e.length,a;rTn(r,e))}function Nu(t){return typeof t=="string"?new $r([document.querySelectorAll(t)],[document.documentElement]):new $r([K_(t)],ed)}const pB={passive:!1},Ml={capture:!0,passive:!1};function nd(t){t.stopImmediatePropagation()}function co(t){t.preventDefault(),t.stopImmediatePropagation()}function Bu(t){var e=t.document.documentElement,r=St(t).on("dragstart.drag",co,Ml);"onselectstart"in e?r.on("selectstart.drag",co,Ml):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function Du(t,e){var r=t.document.documentElement,n=St(t).on("dragstart.drag",null);e&&(n.on("click.drag",co,Ml),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in r?n.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}const Ou=t=>()=>t;function id(t,{sourceEvent:e,subject:r,target:n,identifier:i,active:a,x:s,y:o,dx:l,dy:u,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:o,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:h}})}id.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function gB(t){return!t.ctrlKey&&!t.button}function yB(){return this.parentNode}function mB(t,e){return e==null?{x:t.x,y:t.y}:e}function bB(){return navigator.maxTouchPoints||"ontouchstart"in this}function _B(){var t=gB,e=yB,r=mB,n=bB,i={},a=fs("start","drag","end"),s=0,o,l,u,h,d=0;function f(T){T.on("mousedown.drag",p).filter(n).on("touchstart.drag",y).on("touchmove.drag",b,pB).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(T,C){if(!(h||!t.call(this,T,C))){var M=k(this,e.call(this,T,C),T,C,"mouse");!M||(St(T.view).on("mousemove.drag",m,Ml).on("mouseup.drag",_,Ml),Bu(T.view),nd(T),u=!1,o=T.clientX,l=T.clientY,M("start",T))}}function m(T){if(co(T),!u){var C=T.clientX-o,M=T.clientY-l;u=C*C+M*M>d}i.mouse("drag",T)}function _(T){St(T.view).on("mousemove.drag mouseup.drag",null),Du(T.view,u),co(T),i.mouse("end",T)}function y(T,C){if(!!t.call(this,T,C)){var M=T.changedTouches,S=e.call(this,T,C),R=M.length,A,L;for(A=0;A>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Fu(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Fu(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=xB.exec(t))?new Er(e[1],e[2],e[3],1):(e=kB.exec(t))?new Er(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=wB.exec(t))?Fu(e[1],e[2],e[3],e[4]):(e=TB.exec(t))?Fu(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=EB.exec(t))?f5(e[1],e[2]/100,e[3]/100,1):(e=CB.exec(t))?f5(e[1],e[2]/100,e[3]/100,e[4]):s5.hasOwnProperty(t)?c5(s5[t]):t==="transparent"?new Er(NaN,NaN,NaN,0):null}function c5(t){return new Er(t>>16&255,t>>8&255,t&255,1)}function Fu(t,e,r,n){return n<=0&&(t=e=r=NaN),new Er(t,e,r,n)}function ad(t){return t instanceof Sa||(t=Aa(t)),t?(t=t.rgb(),new Er(t.r,t.g,t.b,t.opacity)):new Er}function po(t,e,r,n){return arguments.length===1?ad(t):new Er(t,e,r,n==null?1:n)}function Er(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}uo(Er,po,Ll(Sa,{brighter(t){return t=t==null?ho:Math.pow(ho,t),new Er(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?gs:Math.pow(gs,t),new Er(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Er(ys(this.r),ys(this.g),ys(this.b),Pu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:u5,formatHex:u5,formatHex8:MB,formatRgb:h5,toString:h5}));function u5(){return`#${ms(this.r)}${ms(this.g)}${ms(this.b)}`}function MB(){return`#${ms(this.r)}${ms(this.g)}${ms(this.b)}${ms((isNaN(this.opacity)?1:this.opacity)*255)}`}function h5(){const t=Pu(this.opacity);return`${t===1?"rgb(":"rgba("}${ys(this.r)}, ${ys(this.g)}, ${ys(this.b)}${t===1?")":`, ${t})`}`}function Pu(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function ys(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ms(t){return t=ys(t),(t<16?"0":"")+t.toString(16)}function f5(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Kn(t,e,r,n)}function d5(t){if(t instanceof Kn)return new Kn(t.h,t.s,t.l,t.opacity);if(t instanceof Sa||(t=Aa(t)),!t)return new Kn;if(t instanceof Kn)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,o=a-i,l=(a+i)/2;return o?(e===a?s=(r-n)/o+(r0&&l<1?0:s,new Kn(s,o,l,t.opacity)}function qu(t,e,r,n){return arguments.length===1?d5(t):new Kn(t,e,r,n==null?1:n)}function Kn(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}uo(Kn,qu,Ll(Sa,{brighter(t){return t=t==null?ho:Math.pow(ho,t),new Kn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?gs:Math.pow(gs,t),new Kn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new Er(sd(t>=240?t-240:t+120,i,n),sd(t,i,n),sd(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new Kn(p5(this.h),Vu(this.s),Vu(this.l),Pu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Pu(this.opacity);return`${t===1?"hsl(":"hsla("}${p5(this.h)}, ${Vu(this.s)*100}%, ${Vu(this.l)*100}%${t===1?")":`, ${t})`}`}}));function p5(t){return t=(t||0)%360,t<0?t+360:t}function Vu(t){return Math.max(0,Math.min(1,t||0))}function sd(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}const g5=Math.PI/180,y5=180/Math.PI,zu=18,m5=.96422,b5=1,_5=.82521,v5=4/29,go=6/29,x5=3*go*go,LB=go*go*go;function k5(t){if(t instanceof Zn)return new Zn(t.l,t.a,t.b,t.opacity);if(t instanceof Ti)return T5(t);t instanceof Er||(t=ad(t));var e=ud(t.r),r=ud(t.g),n=ud(t.b),i=od((.2225045*e+.7168786*r+.0606169*n)/b5),a,s;return e===r&&r===n?a=s=i:(a=od((.4360747*e+.3850649*r+.1430804*n)/m5),s=od((.0139322*e+.0971045*r+.7141733*n)/_5)),new Zn(116*i-16,500*(a-i),200*(i-s),t.opacity)}function RB(t,e){return new Zn(t,0,0,e==null?1:e)}function Yu(t,e,r,n){return arguments.length===1?k5(t):new Zn(t,e,r,n==null?1:n)}function Zn(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}uo(Zn,Yu,Ll(Sa,{brighter(t){return new Zn(this.l+zu*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Zn(this.l-zu*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=m5*ld(e),t=b5*ld(t),r=_5*ld(r),new Er(cd(3.1338561*e-1.6168667*t-.4906146*r),cd(-.9787684*e+1.9161415*t+.033454*r),cd(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));function od(t){return t>LB?Math.pow(t,1/3):t/x5+v5}function ld(t){return t>go?t*t*t:x5*(t-v5)}function cd(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ud(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function w5(t){if(t instanceof Ti)return new Ti(t.h,t.c,t.l,t.opacity);if(t instanceof Zn||(t=k5(t)),t.a===0&&t.b===0)return new Ti(NaN,0=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,o=n()=>t;function I5(t,e){return function(r){return t+r*e}}function BB(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function Gu(t,e){var r=e-t;return r?I5(t,r>180||r<-180?r-360*Math.round(r/360):r):Hu(isNaN(t)?e:t)}function DB(t){return(t=+t)==1?Cr:function(e,r){return r-e?BB(e,r,t):Hu(isNaN(e)?r:e)}}function Cr(t,e){var r=e-t;return r?I5(t,r):Hu(isNaN(t)?e:t)}const Nl=function t(e){var r=DB(e);function n(i,a){var s=r((i=po(i)).r,(a=po(a)).r),o=r(i.g,a.g),l=r(i.b,a.b),u=Cr(i.opacity,a.opacity);return function(h){return i.r=s(h),i.g=o(h),i.b=l(h),i.opacity=u(h),i+""}}return n.gamma=t,n}(1);function N5(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,o;for(s=0;sr&&(a=e.slice(r,a),o[s]?o[s]+=a:o[++s]=a),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:Bn(n,i)})),r=gd.lastIndex;return r180?h+=360:h-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Bn(u,h)})):h&&d.push(i(d)+"rotate("+h+n)}function o(u,h,d,f){u!==h?f.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Bn(u,h)}):h&&d.push(i(d)+"skewX("+h+n)}function l(u,h,d,f,p,m){if(u!==d||h!==f){var _=p.push(i(p)+"scale(",null,",",null,")");m.push({i:_-4,x:Bn(u,d)},{i:_-2,x:Bn(h,f)})}else(d!==1||f!==1)&&p.push(i(p)+"scale("+d+","+f+")")}return function(u,h){var d=[],f=[];return u=t(u),h=t(h),a(u.translateX,u.translateY,h.translateX,h.translateY,d,f),s(u.rotate,h.rotate,d,f),o(u.skewX,h.skewX,d,f),l(u.scaleX,u.scaleY,h.scaleX,h.scaleY,d,f),u=h=null,function(p){for(var m=-1,_=f.length,y;++m<_;)d[(y=f[m]).i]=y.x(p);return d.join("")}}}var Y5=z5(YB,"px, ","px)","deg)"),U5=z5(UB,", ",")",")"),WB=1e-12;function W5(t){return((t=Math.exp(t))+1/t)/2}function HB(t){return((t=Math.exp(t))-1/t)/2}function GB(t){return((t=Math.exp(2*t))-1)/(t+1)}const H5=function t(e,r,n){function i(a,s){var o=a[0],l=a[1],u=a[2],h=s[0],d=s[1],f=s[2],p=h-o,m=d-l,_=p*p+m*m,y,b;if(_=0&&t._call.call(void 0,e),t=t._next;--yo}function tv(){_s=(Zu=Fl.now())+Qu,yo=Bl=0;try{J5()}finally{yo=0,eD(),_s=0}}function tD(){var t=Fl.now(),e=t-Zu;e>Z5&&(Qu-=e,Zu=t)}function eD(){for(var t,e=Ku,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:Ku=r);Ol=t,bd(n)}function bd(t){if(!yo){Bl&&(Bl=clearTimeout(Bl));var e=t-_s;e>24?(t<1/0&&(Bl=setTimeout(tv,t-Fl.now()-Qu)),Dl&&(Dl=clearInterval(Dl))):(Dl||(Zu=Fl.now(),Dl=setInterval(tD,Z5)),yo=1,Q5(tv))}}function _d(t,e,r){var n=new ql;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}function rD(t,e,r){var n=new ql,i=e;return e==null?(n.restart(t,e,r),n):(n._restart=n.restart,n.restart=function(a,s,o){s=+s,o=o==null?Pl():+o,n._restart(function l(u){u+=i,n._restart(l,i+=s,o),a(u)},s,o)},n.restart(t,e,r),n)}var nD=fs("start","end","cancel","interrupt"),iD=[],ev=0,vd=1,xd=2,th=3,rv=4,kd=5,eh=6;function rh(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;aD(t,r,{name:e,index:n,group:i,on:nD,tween:iD,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ev})}function wd(t,e){var r=Jn(t,e);if(r.state>ev)throw new Error("too late; already scheduled");return r}function Ei(t,e){var r=Jn(t,e);if(r.state>th)throw new Error("too late; already running");return r}function Jn(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function aD(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=Ju(a,0,r.time);function a(u){r.state=vd,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var h,d,f,p;if(r.state!==vd)return l();for(h in n)if(p=n[h],p.name===r.name){if(p.state===th)return _d(s);p.state===rv?(p.state=eh,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete n[h]):+hxd&&n.state=0&&(e=e.slice(0,r)),!e||e==="start"})}function DD(t,e,r){var n,i,a=BD(e)?wd:Ei;return function(){var s=a(this,t),o=s.on;o!==n&&(i=(n=o).copy()).on(e,r),s.on=i}}function OD(t,e){var r=this._id;return arguments.length<2?Jn(this.node(),r).on.on(t):this.each(DD(r,t,e))}function FD(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function PD(){return this.on("end.remove",FD(this._id))}function qD(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Ru(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s+t;function oO(t){return t*t}function lO(t){return t*(2-t)}function ov(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function cO(t){return t*t*t}function uO(t){return--t*t*t+1}function Ed(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Cd=3,hO=function t(e){e=+e;function r(n){return Math.pow(n,e)}return r.exponent=t,r}(Cd),fO=function t(e){e=+e;function r(n){return 1-Math.pow(1-n,e)}return r.exponent=t,r}(Cd),lv=function t(e){e=+e;function r(n){return((n*=2)<=1?Math.pow(n,e):2-Math.pow(2-n,e))/2}return r.exponent=t,r}(Cd),cv=Math.PI,uv=cv/2;function dO(t){return+t==1?1:1-Math.cos(t*uv)}function pO(t){return Math.sin(t*uv)}function hv(t){return(1-Math.cos(cv*t))/2}function La(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function gO(t){return La(1-+t)}function yO(t){return 1-La(t)}function fv(t){return((t*=2)<=1?La(1-t):2-La(t-1))/2}function mO(t){return 1-Math.sqrt(1-t*t)}function bO(t){return Math.sqrt(1- --t*t)}function dv(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Sd=4/11,_O=6/11,vO=8/11,xO=3/4,kO=9/11,wO=10/11,TO=15/16,EO=21/22,CO=63/64,nh=1/Sd/Sd;function SO(t){return 1-Vl(1-t)}function Vl(t){return(t=+t)vd&&n.name===e)return new Ci([[t]],OO,e,+i)}return null}const Rd=t=>()=>t;function PO(t,{sourceEvent:e,target:r,selection:n,mode:i,dispatch:a}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},selection:{value:n,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:a}})}function qO(t){t.stopImmediatePropagation()}function Id(t){t.preventDefault(),t.stopImmediatePropagation()}var yv={name:"drag"},Nd={name:"space"},bo={name:"handle"},_o={name:"center"};const{abs:mv,max:Or,min:Fr}=Math;function bv(t){return[+t[0],+t[1]]}function Bd(t){return[bv(t[0]),bv(t[1])]}var ih={name:"x",handles:["w","e"].map(zl),input:function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ah={name:"y",handles:["n","s"].map(zl),input:function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},VO={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(zl),input:function(t){return t==null?null:Bd(t)},output:function(t){return t}},Xi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},_v={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},vv={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},zO={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},YO={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function zl(t){return{type:t}}function UO(t){return!t.ctrlKey&&!t.button}function WO(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function HO(){return navigator.maxTouchPoints||"ontouchstart"in this}function Dd(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function GO(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function jO(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function $O(){return Od(ih)}function XO(){return Od(ah)}function KO(){return Od(VO)}function Od(t){var e=WO,r=UO,n=HO,i=!0,a=fs("start","brush","end"),s=6,o;function l(y){var b=y.property("__brush",_).selectAll(".overlay").data([zl("overlay")]);b.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Xi.overlay).merge(b).each(function(){var k=Dd(this).extent;St(this).attr("x",k[0][0]).attr("y",k[0][1]).attr("width",k[1][0]-k[0][0]).attr("height",k[1][1]-k[0][1])}),y.selectAll(".selection").data([zl("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Xi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var x=y.selectAll(".handle").data(t.handles,function(k){return k.type});x.exit().remove(),x.enter().append("rect").attr("class",function(k){return"handle handle--"+k.type}).attr("cursor",function(k){return Xi[k.type]}),y.each(u).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",f).filter(n).on("touchstart.brush",f).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}l.move=function(y,b,x){y.tween?y.on("start.brush",function(k){h(this,arguments).beforestart().start(k)}).on("interrupt.brush end.brush",function(k){h(this,arguments).end(k)}).tween("brush",function(){var k=this,T=k.__brush,C=h(k,arguments),M=T.selection,S=t.input(typeof b=="function"?b.apply(this,arguments):b,T.extent),R=Ma(M,S);function A(L){T.selection=L===1&&S===null?null:R(L),u.call(k),C.brush()}return M!==null&&S!==null?A:A(1)}):y.each(function(){var k=this,T=arguments,C=k.__brush,M=t.input(typeof b=="function"?b.apply(k,T):b,C.extent),S=h(k,T).beforestart();vs(k),C.selection=M===null?null:M,u.call(k),S.start(x).brush(x).end(x)})},l.clear=function(y,b){l.move(y,null,b)};function u(){var y=St(this),b=Dd(this).selection;b?(y.selectAll(".selection").style("display",null).attr("x",b[0][0]).attr("y",b[0][1]).attr("width",b[1][0]-b[0][0]).attr("height",b[1][1]-b[0][1]),y.selectAll(".handle").style("display",null).attr("x",function(x){return x.type[x.type.length-1]==="e"?b[1][0]-s/2:b[0][0]-s/2}).attr("y",function(x){return x.type[0]==="s"?b[1][1]-s/2:b[0][1]-s/2}).attr("width",function(x){return x.type==="n"||x.type==="s"?b[1][0]-b[0][0]+s:s}).attr("height",function(x){return x.type==="e"||x.type==="w"?b[1][1]-b[0][1]+s:s})):y.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function h(y,b,x){var k=y.__brush.emitter;return k&&(!x||!k.clean)?k:new d(y,b,x)}function d(y,b,x){this.that=y,this.args=b,this.state=y.__brush,this.active=0,this.clean=x}d.prototype={beforestart:function(){return++this.active===1&&(this.state.emitter=this,this.starting=!0),this},start:function(y,b){return this.starting?(this.starting=!1,this.emit("start",y,b)):this.emit("brush",y),this},brush:function(y,b){return this.emit("brush",y,b),this},end:function(y,b){return--this.active===0&&(delete this.state.emitter,this.emit("end",y,b)),this},emit:function(y,b,x){var k=St(this.that).datum();a.call(y,this.that,new PO(y,{sourceEvent:b,target:l,selection:t.output(this.state.selection),mode:x,dispatch:a}),k)}};function f(y){if(o&&!y.touches||!r.apply(this,arguments))return;var b=this,x=y.target.__data__.type,k=(i&&y.metaKey?x="overlay":x)==="selection"?yv:i&&y.altKey?_o:bo,T=t===ah?null:zO[x],C=t===ih?null:YO[x],M=Dd(b),S=M.extent,R=M.selection,A=S[0][0],L,v,B=S[0][1],w,D,N=S[1][0],z,X,ct=S[1][1],J,Y,$=0,lt=0,ut,W=T&&C&&i&&y.shiftKey,tt,K,it=Array.from(y.touches||[y],at=>{const It=at.identifier;return at=Tn(at,b),at.point0=at.slice(),at.identifier=It,at});vs(b);var Z=h(b,arguments,!0).beforestart();if(x==="overlay"){R&&(ut=!0);const at=[it[0],it[1]||it[0]];M.selection=R=[[L=t===ah?A:Fr(at[0][0],at[1][0]),w=t===ih?B:Fr(at[0][1],at[1][1])],[z=t===ah?N:Or(at[0][0],at[1][0]),J=t===ih?ct:Or(at[0][1],at[1][1])]],it.length>1&&F(y)}else L=R[0][0],w=R[0][1],z=R[1][0],J=R[1][1];v=L,D=w,X=z,Y=J;var V=St(b).attr("pointer-events","none"),Q=V.selectAll(".overlay").attr("cursor",Xi[x]);if(y.touches)Z.moved=U,Z.ended=j;else{var q=St(y.view).on("mousemove.brush",U,!0).on("mouseup.brush",j,!0);i&&q.on("keydown.brush",P,!0).on("keyup.brush",et,!0),Bu(y.view)}u.call(b),Z.start(y,k.name);function U(at){for(const It of at.changedTouches||[at])for(const Lt of it)Lt.identifier===It.identifier&&(Lt.cur=Tn(It,b));if(W&&!tt&&!K&&it.length===1){const It=it[0];mv(It.cur[0]-It[0])>mv(It.cur[1]-It[1])?K=!0:tt=!0}for(const It of it)It.cur&&(It[0]=It.cur[0],It[1]=It.cur[1]);ut=!0,Id(at),F(at)}function F(at){const It=it[0],Lt=It.point0;var Rt;switch($=It[0]-Lt[0],lt=It[1]-Lt[1],k){case Nd:case yv:{T&&($=Or(A-L,Fr(N-z,$)),v=L+$,X=z+$),C&&(lt=Or(B-w,Fr(ct-J,lt)),D=w+lt,Y=J+lt);break}case bo:{it[1]?(T&&(v=Or(A,Fr(N,it[0][0])),X=Or(A,Fr(N,it[1][0])),T=1),C&&(D=Or(B,Fr(ct,it[0][1])),Y=Or(B,Fr(ct,it[1][1])),C=1)):(T<0?($=Or(A-L,Fr(N-L,$)),v=L+$,X=z):T>0&&($=Or(A-z,Fr(N-z,$)),v=L,X=z+$),C<0?(lt=Or(B-w,Fr(ct-w,lt)),D=w+lt,Y=J):C>0&&(lt=Or(B-J,Fr(ct-J,lt)),D=w,Y=J+lt));break}case _o:{T&&(v=Or(A,Fr(N,L-$*T)),X=Or(A,Fr(N,z+$*T))),C&&(D=Or(B,Fr(ct,w-lt*C)),Y=Or(B,Fr(ct,J+lt*C)));break}}X0&&(L=v-$),C<0?J=Y-lt:C>0&&(w=D-lt),k=Nd,Q.attr("cursor",Xi.selection),F(at));break}default:return}Id(at)}function et(at){switch(at.keyCode){case 16:{W&&(tt=K=W=!1,F(at));break}case 18:{k===_o&&(T<0?z=X:T>0&&(L=v),C<0?J=Y:C>0&&(w=D),k=bo,F(at));break}case 32:{k===Nd&&(at.altKey?(T&&(z=X-$*T,L=v+$*T),C&&(J=Y-lt*C,w=D+lt*C),k=_o):(T<0?z=X:T>0&&(L=v),C<0?J=Y:C>0&&(w=D),k=bo),Q.attr("cursor",Xi[x]),F(at));break}default:return}Id(at)}}function p(y){h(this,arguments).moved(y)}function m(y){h(this,arguments).ended(y)}function _(){var y=this.__brush||{selection:null};return y.extent=Bd(e.apply(this,arguments)),y.dim=t,y}return l.extent=function(y){return arguments.length?(e=typeof y=="function"?y:Rd(Bd(y)),l):e},l.filter=function(y){return arguments.length?(r=typeof y=="function"?y:Rd(!!y),l):r},l.touchable=function(y){return arguments.length?(n=typeof y=="function"?y:Rd(!!y),l):n},l.handleSize=function(y){return arguments.length?(s=+y,l):s},l.keyModifiers=function(y){return arguments.length?(i=!!y,l):i},l.on=function(){var y=a.on.apply(a,arguments);return y===a?l:y},l}var xv=Math.abs,vo=Math.cos,xo=Math.sin,kv=Math.PI,sh=kv/2,wv=kv*2,Tv=Math.max,Fd=1e-12;function Pd(t,e){return Array.from({length:e-t},(r,n)=>t+n)}function ZO(t){return function(e,r){return t(e.source.value+e.target.value,r.source.value+r.target.value)}}function QO(){return qd(!1,!1)}function JO(){return qd(!1,!0)}function tF(){return qd(!0,!1)}function qd(t,e){var r=0,n=null,i=null,a=null;function s(o){var l=o.length,u=new Array(l),h=Pd(0,l),d=new Array(l*l),f=new Array(l),p=0,m;o=Float64Array.from({length:l*l},e?(_,y)=>o[y%l][y/l|0]:(_,y)=>o[y/l|0][y%l]);for(let _=0;_n(u[y],u[b]));for(const y of h){const b=_;if(t){const x=Pd(~l+1,l).filter(k=>k<0?o[~k*l+y]:o[y*l+k]);i&&x.sort((k,T)=>i(k<0?-o[~k*l+y]:o[y*l+k],T<0?-o[~T*l+y]:o[y*l+T]));for(const k of x)if(k<0){const T=d[~k*l+y]||(d[~k*l+y]={source:null,target:null});T.target={index:y,startAngle:_,endAngle:_+=o[~k*l+y]*p,value:o[~k*l+y]}}else{const T=d[y*l+k]||(d[y*l+k]={source:null,target:null});T.source={index:y,startAngle:_,endAngle:_+=o[y*l+k]*p,value:o[y*l+k]}}f[y]={index:y,startAngle:b,endAngle:_,value:u[y]}}else{const x=Pd(0,l).filter(k=>o[y*l+k]||o[k*l+y]);i&&x.sort((k,T)=>i(o[y*l+k],o[y*l+T]));for(const k of x){let T;if(yxs)if(!(Math.abs(h*o-l*u)>xs)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var f=r-a,p=n-s,m=o*o+l*l,_=f*f+p*p,y=Math.sqrt(m),b=Math.sqrt(d),x=i*Math.tan((Vd-Math.acos((m+d-_)/(2*y*b)))/2),k=x/b,T=x/y;Math.abs(k-1)>xs&&(this._+="L"+(t+k*u)+","+(e+k*h)),this._+="A"+i+","+i+",0,0,"+ +(h*f>u*p)+","+(this._x1=t+T*o)+","+(this._y1=e+T*l)}},arc:function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),o=r*Math.sin(n),l=t+s,u=e+o,h=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+l+","+u:(Math.abs(this._x1-l)>xs||Math.abs(this._y1-u)>xs)&&(this._+="L"+l+","+u),r&&(d<0&&(d=d%zd+zd),d>eF?this._+="A"+r+","+r+",0,1,"+h+","+(t-s)+","+(e-o)+"A"+r+","+r+",0,1,"+h+","+(this._x1=l)+","+(this._y1=u):d>xs&&(this._+="A"+r+","+r+",0,"+ +(d>=Vd)+","+h+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},rect:function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},toString:function(){return this._}};var rF=Array.prototype.slice;function ks(t){return function(){return t}}function nF(t){return t.source}function iF(t){return t.target}function Ev(t){return t.radius}function aF(t){return t.startAngle}function sF(t){return t.endAngle}function oF(){return 0}function lF(){return 10}function Cv(t){var e=nF,r=iF,n=Ev,i=Ev,a=aF,s=sF,o=oF,l=null;function u(){var h,d=e.apply(this,arguments),f=r.apply(this,arguments),p=o.apply(this,arguments)/2,m=rF.call(arguments),_=+n.apply(this,(m[0]=d,m)),y=a.apply(this,m)-sh,b=s.apply(this,m)-sh,x=+i.apply(this,(m[0]=f,m)),k=a.apply(this,m)-sh,T=s.apply(this,m)-sh;if(l||(l=h=Ra()),p>Fd&&(xv(b-y)>p*2+Fd?b>y?(y+=p,b-=p):(y-=p,b+=p):y=b=(y+b)/2,xv(T-k)>p*2+Fd?T>k?(k+=p,T-=p):(k-=p,T+=p):k=T=(k+T)/2),l.moveTo(_*vo(y),_*xo(y)),l.arc(0,0,_,y,b),y!==k||b!==T)if(t){var C=+t.apply(this,arguments),M=x-C,S=(k+T)/2;l.quadraticCurveTo(0,0,M*vo(k),M*xo(k)),l.lineTo(x*vo(S),x*xo(S)),l.lineTo(M*vo(T),M*xo(T))}else l.quadraticCurveTo(0,0,x*vo(k),x*xo(k)),l.arc(0,0,x,k,T);if(l.quadraticCurveTo(0,0,_*vo(y),_*xo(y)),l.closePath(),h)return l=null,h+""||null}return t&&(u.headRadius=function(h){return arguments.length?(t=typeof h=="function"?h:ks(+h),u):t}),u.radius=function(h){return arguments.length?(n=i=typeof h=="function"?h:ks(+h),u):n},u.sourceRadius=function(h){return arguments.length?(n=typeof h=="function"?h:ks(+h),u):n},u.targetRadius=function(h){return arguments.length?(i=typeof h=="function"?h:ks(+h),u):i},u.startAngle=function(h){return arguments.length?(a=typeof h=="function"?h:ks(+h),u):a},u.endAngle=function(h){return arguments.length?(s=typeof h=="function"?h:ks(+h),u):s},u.padAngle=function(h){return arguments.length?(o=typeof h=="function"?h:ks(+h),u):o},u.source=function(h){return arguments.length?(e=h,u):e},u.target=function(h){return arguments.length?(r=h,u):r},u.context=function(h){return arguments.length?(l=h==null?null:h,u):l},u}function cF(){return Cv()}function uF(){return Cv(lF)}var hF=Array.prototype,Sv=hF.slice;function fF(t,e){return t-e}function dF(t){for(var e=0,r=t.length,n=t[r-1][1]*t[0][0]-t[r-1][0]*t[0][1];++e()=>t;function pF(t,e){for(var r=-1,n=e.length,i;++rn!=p>n&&r<(f-u)*(n-h)/(p-h)+u&&(i=-i)}return i}function yF(t,e,r){var n;return mF(t,e,r)&&bF(t[n=+(t[0]===e[0])],r[n],e[n])}function mF(t,e,r){return(e[0]-t[0])*(r[1]-t[1])===(r[0]-t[0])*(e[1]-t[1])}function bF(t,e,r){return t<=e&&e<=r||r<=e&&e<=t}function _F(){}var Ki=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ud(){var t=1,e=1,r=W0,n=l;function i(u){var h=r(u);if(Array.isArray(h))h=h.slice().sort(fF);else{const d=xl(u),f=wl(d[0],d[1],h);h=hs(Math.floor(d[0]/f)*f,Math.floor(d[1]/f-1)*f,h)}return h.map(d=>a(u,d))}function a(u,h){var d=[],f=[];return s(u,h,function(p){n(p,u,h),dF(p)>0?d.push([p]):f.push(p)}),f.forEach(function(p){for(var m=0,_=d.length,y;m<_;++m)if(pF((y=d[m])[0],p)!==-1){y.push(p);return}}),{type:"MultiPolygon",value:h,coordinates:d}}function s(u,h,d){var f=new Array,p=new Array,m,_,y,b,x,k;for(m=_=-1,b=u[0]>=h,Ki[b<<1].forEach(T);++m=h,Ki[y|b<<1].forEach(T);for(Ki[b<<0].forEach(T);++_=h,x=u[_*t]>=h,Ki[b<<1|x<<2].forEach(T);++m=h,k=x,x=u[_*t+m+1]>=h,Ki[y|b<<1|x<<2|k<<3].forEach(T);Ki[b|x<<3].forEach(T)}for(m=-1,x=u[_*t]>=h,Ki[x<<2].forEach(T);++m=h,Ki[x<<2|k<<3].forEach(T);Ki[x<<3].forEach(T);function T(C){var M=[C[0][0]+m,C[0][1]+_],S=[C[1][0]+m,C[1][1]+_],R=o(M),A=o(S),L,v;(L=p[R])?(v=f[A])?(delete p[L.end],delete f[v.start],L===v?(L.ring.push(S),d(L.ring)):f[L.start]=p[v.end]={start:L.start,end:v.end,ring:L.ring.concat(v.ring)}):(delete p[L.end],L.ring.push(S),p[L.end=A]=L):(L=f[A])?(v=p[R])?(delete f[L.start],delete p[v.end],L===v?(L.ring.push(S),d(L.ring)):f[v.start]=p[L.end]={start:v.start,end:L.end,ring:v.ring.concat(L.ring)}):(delete f[L.start],L.ring.unshift(M),f[L.start=R]=L):f[R]=p[A]={start:R,end:A,ring:[M,S]}}}function o(u){return u[0]*2+u[1]*(t+1)*4}function l(u,h,d){u.forEach(function(f){var p=f[0],m=f[1],_=p|0,y=m|0,b,x=h[y*t+_];p>0&&p0&&m=0&&d>=0))throw new Error("invalid size");return t=h,e=d,i},i.thresholds=function(u){return arguments.length?(r=typeof u=="function"?u:Array.isArray(u)?Ia(Sv.call(u)):Ia(u),i):r},i.smooth=function(u){return arguments.length?(n=u?l:_F,i):n===l},i}function vF(t){return t[0]}function xF(t){return t[1]}function kF(){return 1}function wF(){var t=vF,e=xF,r=kF,n=960,i=500,a=20,s=2,o=a*3,l=n+o*2>>s,u=i+o*2>>s,h=Ia(20);function d(x){var k=new Float32Array(l*u),T=Math.pow(2,-s),C=-1;for(const w of x){var M=(t(w,++C,x)+o)*T,S=(e(w,C,x)+o)*T,R=+r(w,C,x);if(M>=0&&M=0&&SM*C))(k).map((M,S)=>(M.value=+T[S],p(M)))}f.contours=function(x){var k=d(x),T=Ud().size([l,u]),C=Math.pow(2,2*s),M=S=>{S=+S;var R=p(T.contour(k,S*C));return R.value=S,R};return Object.defineProperty(M,"max",{get:()=>lo(k)/C}),M};function p(x){return x.coordinates.forEach(m),x}function m(x){x.forEach(_)}function _(x){x.forEach(y)}function y(x){x[0]=x[0]*Math.pow(2,s)-o,x[1]=x[1]*Math.pow(2,s)-o}function b(){return o=a*3,l=n+o*2>>s,u=i+o*2>>s,f}return f.x=function(x){return arguments.length?(t=typeof x=="function"?x:Ia(+x),f):t},f.y=function(x){return arguments.length?(e=typeof x=="function"?x:Ia(+x),f):e},f.weight=function(x){return arguments.length?(r=typeof x=="function"?x:Ia(+x),f):r},f.size=function(x){if(!arguments.length)return[n,i];var k=+x[0],T=+x[1];if(!(k>=0&&T>=0))throw new Error("invalid size");return n=k,i=T,b()},f.cellSize=function(x){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return s=Math.floor(Math.log(x)/Math.LN2),b()},f.thresholds=function(x){return arguments.length?(h=typeof x=="function"?x:Array.isArray(x)?Ia(Sv.call(x)):Ia(x),f):h},f.bandwidth=function(x){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((x=+x)>=0))throw new Error("invalid bandwidth");return a=(Math.sqrt(4*x*x+1)-1)/2,b()},f}const Zi=11102230246251565e-32,Pr=134217729,TF=(3+8*Zi)*Zi;function Wd(t,e,r,n,i){let a,s,o,l,u=e[0],h=n[0],d=0,f=0;h>u==h>-u?(a=u,u=e[++d]):(a=h,h=n[++f]);let p=0;if(du==h>-u?(s=u+a,o=a-(s-u),u=e[++d]):(s=h+a,o=a-(s-h),h=n[++f]),a=s,o!==0&&(i[p++]=o);du==h>-u?(s=a+u,l=s-a,o=a-(s-l)+(u-l),u=e[++d]):(s=a+h,l=s-a,o=a-(s-l)+(h-l),h=n[++f]),a=s,o!==0&&(i[p++]=o);for(;d=D||-w>=D||(d=t-A,o=t-(A+d)+(d-i),d=r-L,u=r-(L+d)+(d-i),d=e-v,l=e-(v+d)+(d-a),d=n-B,h=n-(B+d)+(d-a),o===0&&l===0&&u===0&&h===0)||(D=AF*s+TF*Math.abs(w),w+=A*h+B*o-(v*u+L*l),w>=D||-w>=D))return w;T=o*B,f=Pr*o,p=f-(f-o),m=o-p,f=Pr*B,_=f-(f-B),y=B-_,C=m*y-(T-p*_-m*_-p*y),M=l*L,f=Pr*l,p=f-(f-l),m=l-p,f=Pr*L,_=f-(f-L),y=L-_,S=m*y-(M-p*_-m*_-p*y),b=C-S,d=C-b,Xr[0]=C-(b+d)+(d-S),x=T+b,d=x-T,k=T-(x-d)+(b-d),b=k-M,d=k-b,Xr[1]=k-(b+d)+(d-M),R=x+b,d=R-x,Xr[2]=x-(R-d)+(b-d),Xr[3]=R;const N=Wd(4,ko,4,Xr,Av);T=A*h,f=Pr*A,p=f-(f-A),m=A-p,f=Pr*h,_=f-(f-h),y=h-_,C=m*y-(T-p*_-m*_-p*y),M=v*u,f=Pr*v,p=f-(f-v),m=v-p,f=Pr*u,_=f-(f-u),y=u-_,S=m*y-(M-p*_-m*_-p*y),b=C-S,d=C-b,Xr[0]=C-(b+d)+(d-S),x=T+b,d=x-T,k=T-(x-d)+(b-d),b=k-M,d=k-b,Xr[1]=k-(b+d)+(d-M),R=x+b,d=R-x,Xr[2]=x-(R-d)+(b-d),Xr[3]=R;const z=Wd(N,Av,4,Xr,Mv);T=o*h,f=Pr*o,p=f-(f-o),m=o-p,f=Pr*h,_=f-(f-h),y=h-_,C=m*y-(T-p*_-m*_-p*y),M=l*u,f=Pr*l,p=f-(f-l),m=l-p,f=Pr*u,_=f-(f-u),y=u-_,S=m*y-(M-p*_-m*_-p*y),b=C-S,d=C-b,Xr[0]=C-(b+d)+(d-S),x=T+b,d=x-T,k=T-(x-d)+(b-d),b=k-M,d=k-b,Xr[1]=k-(b+d)+(d-M),R=x+b,d=R-x,Xr[2]=x-(R-d)+(b-d),Xr[3]=R;const X=Wd(z,Mv,4,Xr,Lv);return Lv[X-1]}function oh(t,e,r,n,i,a){const s=(e-a)*(r-i),o=(t-i)*(n-a),l=s-o;if(s===0||o===0||s>0!=o>0)return l;const u=Math.abs(s+o);return Math.abs(l)>=CF*u?l:-MF(t,e,r,n,i,a,u)}const Rv=Math.pow(2,-52),lh=new Uint32Array(512);class ch{static from(e,r=BF,n=DF){const i=e.length,a=new Float64Array(i*2);for(let s=0;s>1;if(r>0&&typeof e[0]!="number")throw new Error("Expected coords to contain numbers.");this.coords=e;const n=Math.max(2*r-5,0);this._triangles=new Uint32Array(n*3),this._halfedges=new Int32Array(n*3),this._hashSize=Math.ceil(Math.sqrt(r)),this._hullPrev=new Uint32Array(r),this._hullNext=new Uint32Array(r),this._hullTri=new Uint32Array(r),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(r),this._dists=new Float64Array(r),this.update()}update(){const{coords:e,_hullPrev:r,_hullNext:n,_hullTri:i,_hullHash:a}=this,s=e.length>>1;let o=1/0,l=1/0,u=-1/0,h=-1/0;for(let L=0;Lu&&(u=v),B>h&&(h=B),this._ids[L]=L}const d=(o+u)/2,f=(l+h)/2;let p=1/0,m,_,y;for(let L=0;L0&&(_=L,p=v)}let k=e[2*_],T=e[2*_+1],C=1/0;for(let L=0;Lw&&(L[v++]=D,w=this._dists[D])}this.hull=L.subarray(0,v),this.triangles=new Uint32Array(0),this.halfedges=new Uint32Array(0);return}if(oh(b,x,k,T,M,S)<0){const L=_,v=k,B=T;_=y,k=M,T=S,y=L,M=v,S=B}const R=NF(b,x,k,T,M,S);this._cx=R.x,this._cy=R.y;for(let L=0;L0&&Math.abs(D-v)<=Rv&&Math.abs(N-B)<=Rv||(v=D,B=N,w===m||w===_||w===y))continue;let z=0;for(let $=0,lt=this._hashKey(D,N);$=0;)if(X=ct,X===z){X=-1;break}if(X===-1)continue;let J=this._addTriangle(X,w,n[X],-1,-1,i[X]);i[w]=this._legalize(J+2),i[X]=J,A++;let Y=n[X];for(;ct=n[Y],oh(D,N,e[2*Y],e[2*Y+1],e[2*ct],e[2*ct+1])<0;)J=this._addTriangle(Y,w,ct,i[w],-1,i[Y]),i[w]=this._legalize(J+2),n[Y]=Y,A--,Y=ct;if(X===z)for(;ct=r[X],oh(D,N,e[2*ct],e[2*ct+1],e[2*X],e[2*X+1])<0;)J=this._addTriangle(ct,w,X,-1,i[X],i[ct]),this._legalize(J+2),i[ct]=J,n[X]=X,A--,X=ct;this._hullStart=r[w]=X,n[X]=r[Y]=w,n[w]=Y,a[this._hashKey(D,N)]=w,a[this._hashKey(e[2*X],e[2*X+1])]=X}this.hull=new Uint32Array(A);for(let L=0,v=this._hullStart;L0?3-r:1+r)/4}function Hd(t,e,r,n){const i=t-r,a=e-n;return i*i+a*a}function RF(t,e,r,n,i,a,s,o){const l=t-s,u=e-o,h=r-s,d=n-o,f=i-s,p=a-o,m=l*l+u*u,_=h*h+d*d,y=f*f+p*p;return l*(d*y-_*p)-u*(h*y-_*f)+m*(h*p-d*f)<0}function IF(t,e,r,n,i,a){const s=r-t,o=n-e,l=i-t,u=a-e,h=s*s+o*o,d=l*l+u*u,f=.5/(s*u-o*l),p=(u*h-o*d)*f,m=(s*d-l*h)*f;return p*p+m*m}function NF(t,e,r,n,i,a){const s=r-t,o=n-e,l=i-t,u=a-e,h=s*s+o*o,d=l*l+u*u,f=.5/(s*u-o*l),p=t+(u*h-o*d)*f,m=e+(s*d-l*h)*f;return{x:p,y:m}}function wo(t,e,r,n){if(n-r<=20)for(let i=r+1;i<=n;i++){const a=t[i],s=e[a];let o=i-1;for(;o>=r&&e[t[o]]>s;)t[o+1]=t[o--];t[o+1]=a}else{const i=r+n>>1;let a=r+1,s=n;Ul(t,i,a),e[t[r]]>e[t[n]]&&Ul(t,r,n),e[t[a]]>e[t[n]]&&Ul(t,a,n),e[t[r]]>e[t[a]]&&Ul(t,r,a);const o=t[a],l=e[o];for(;;){do a++;while(e[t[a]]l);if(s=s-r?(wo(t,e,a,n),wo(t,e,r,s-1)):(wo(t,e,r,s-1),wo(t,e,a,n))}}function Ul(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function BF(t){return t[0]}function DF(t){return t[1]}const Iv=1e-6;class ws{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(e,r){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(e,r){this._+=`L${this._x1=+e},${this._y1=+r}`}arc(e,r,n){e=+e,r=+r,n=+n;const i=e+n,a=r;if(n<0)throw new Error("negative radius");this._x1===null?this._+=`M${i},${a}`:(Math.abs(this._x1-i)>Iv||Math.abs(this._y1-a)>Iv)&&(this._+="L"+i+","+a),n&&(this._+=`A${n},${n},0,1,1,${e-n},${r}A${n},${n},0,1,1,${this._x1=i},${this._y1=a}`)}rect(e,r,n,i){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${+n}v${+i}h${-n}Z`}value(){return this._||null}}class Gd{constructor(){this._=[]}moveTo(e,r){this._.push([e,r])}closePath(){this._.push(this._[0].slice())}lineTo(e,r){this._.push([e,r])}value(){return this._.length?this._:null}}class Nv{constructor(e,[r,n,i,a]=[0,0,960,500]){if(!((i=+i)>=(r=+r))||!((a=+a)>=(n=+n)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(e.points.length*2),this.vectors=new Float64Array(e.points.length*2),this.xmax=i,this.xmin=r,this.ymax=a,this.ymin=n,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:e,hull:r,triangles:n},vectors:i}=this,a=this.circumcenters=this._circumcenters.subarray(0,n.length/3*2);for(let p=0,m=0,_=n.length,y,b;p<_;p+=3,m+=2){const x=n[p]*2,k=n[p+1]*2,T=n[p+2]*2,C=e[x],M=e[x+1],S=e[k],R=e[k+1],A=e[T],L=e[T+1],v=S-C,B=R-M,w=A-C,D=L-M,N=(v*D-B*w)*2;if(Math.abs(N)<1e-9){let z=1e9;const X=n[0]*2;z*=Math.sign((e[X]-C)*D-(e[X+1]-M)*w),y=(C+A)/2-z*D,b=(M+L)/2+z*w}else{const z=1/N,X=v*v+B*B,ct=w*w+D*D;y=C+(D*X-B*ct)*z,b=M+(v*ct-w*X)*z}a[m]=y,a[m+1]=b}let s=r[r.length-1],o,l=s*4,u,h=e[2*s],d,f=e[2*s+1];i.fill(0);for(let p=0;p1;)a-=2;for(let s=2;s4)for(let s=0;s0){if(r>=this.ymax)return null;(s=(this.ymax-r)/i)0){if(e>=this.xmax)return null;(s=(this.xmax-e)/n)this.xmax?2:0)|(rthis.ymax?8:0)}}const OF=2*Math.PI,To=Math.pow;function FF(t){return t[0]}function PF(t){return t[1]}function qF(t){const{triangles:e,coords:r}=t;for(let n=0;n1e-10)return!1}return!0}function VF(t,e,r){return[t+Math.sin(t+e)*r,e+Math.cos(t-e)*r]}class jd{static from(e,r=FF,n=PF,i){return new jd("length"in e?zF(e,r,n,i):Float64Array.from(YF(e,r,n,i)))}constructor(e){this._delaunator=new ch(e),this.inedges=new Int32Array(e.length/2),this._hullIndex=new Int32Array(e.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const e=this._delaunator,r=this.points;if(e.hull&&e.hull.length>2&&qF(e)){this.collinear=Int32Array.from({length:r.length/2},(f,p)=>p).sort((f,p)=>r[2*f]-r[2*p]||r[2*f+1]-r[2*p+1]);const l=this.collinear[0],u=this.collinear[this.collinear.length-1],h=[r[2*l],r[2*l+1],r[2*u],r[2*u+1]],d=1e-8*Math.hypot(h[3]-h[1],h[2]-h[0]);for(let f=0,p=r.length/2;f0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=i[0],s[i[0]]=1,i.length===2&&(s[i[1]]=0,this.triangles[1]=i[1],this.triangles[2]=i[1]))}voronoi(e){return new Nv(this,e)}*neighbors(e){const{inedges:r,hull:n,_hullIndex:i,halfedges:a,triangles:s,collinear:o}=this;if(o){const d=o.indexOf(e);d>0&&(yield o[d-1]),d=0&&a!==n&&a!==i;)n=a;return a}_step(e,r,n){const{inedges:i,hull:a,_hullIndex:s,halfedges:o,triangles:l,points:u}=this;if(i[e]===-1||!u.length)return(e+1)%(u.length>>1);let h=e,d=To(r-u[e*2],2)+To(n-u[e*2+1],2);const f=i[e];let p=f;do{let m=l[p];const _=To(r-u[m*2],2)+To(n-u[m*2+1],2);if(_9999?"+"+dn(t,6):dn(t,4)}function HF(t){var e=t.getUTCHours(),r=t.getUTCMinutes(),n=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":WF(t.getUTCFullYear())+"-"+dn(t.getUTCMonth()+1,2)+"-"+dn(t.getUTCDate(),2)+(i?"T"+dn(e,2)+":"+dn(r,2)+":"+dn(n,2)+"."+dn(i,3)+"Z":n?"T"+dn(e,2)+":"+dn(r,2)+":"+dn(n,2)+"Z":r||e?"T"+dn(e,2)+":"+dn(r,2)+"Z":"")}function uh(t){var e=new RegExp('["'+t+` -\r]`),r=t.charCodeAt(0);function n(d,f){var p,m,_=i(d,function(y,b){if(p)return p(y,b-1);m=y,p=f?UF(y,f):Dv(y)});return _.columns=m||[],_}function i(d,f){var p=[],m=d.length,_=0,y=0,b,x=m<=0,k=!1;d.charCodeAt(m-1)===Wl&&--m,d.charCodeAt(m-1)===Kd&&--m;function T(){if(x)return $d;if(k)return k=!1,Bv;var M,S=_,R;if(d.charCodeAt(S)===Xd){for(;_++=m?x=!0:(R=d.charCodeAt(_++))===Wl?k=!0:R===Kd&&(k=!0,d.charCodeAt(_)===Wl&&++_),d.slice(S+1,M-1).replace(/""/g,'"')}for(;_hh(e,r).then(n=>new DOMParser().parseFromString(n,t))}const mP=Zd("application/xml");var bP=Zd("text/html"),_P=Zd("image/svg+xml");function vP(t,e){var r,n=1;t==null&&(t=0),e==null&&(e=0);function i(){var a,s=r.length,o,l=0,u=0;for(a=0;a=(d=(o+u)/2))?o=d:u=d,(y=r>=(f=(l+h)/2))?l=f:h=f,i=a,!(a=a[b=y<<1|_]))return i[b]=s,t;if(p=+t._x.call(null,a.data),m=+t._y.call(null,a.data),e===p&&r===m)return s.next=a,i?i[b]=s:t._root=s,t;do i=i?i[b]=new Array(4):t._root=new Array(4),(_=e>=(d=(o+u)/2))?o=d:u=d,(y=r>=(f=(l+h)/2))?l=f:h=f;while((b=y<<1|_)===(x=(m>=f)<<1|p>=d));return i[x]=a,i[b]=s,t}function kP(t){var e,r,n=t.length,i,a,s=new Array(n),o=new Array(n),l=1/0,u=1/0,h=-1/0,d=-1/0;for(r=0;rh&&(h=i),ad&&(d=a));if(l>h||u>d)return this;for(this.cover(l,u).cover(h,d),r=0;rt||t>=i||n>e||e>=a;)switch(u=(eh||(o=m.y0)>d||(l=m.x1)=b)<<1|t>=y)&&(m=f[f.length-1],f[f.length-1]=f[f.length-1-_],f[f.length-1-_]=m)}else{var x=t-+this._x.call(null,p.data),k=e-+this._y.call(null,p.data),T=x*x+k*k;if(T=(f=(s+l)/2))?s=f:l=f,(_=d>=(p=(o+u)/2))?o=p:u=p,e=r,!(r=r[y=_<<1|m]))return this;if(!r.length)break;(e[y+1&3]||e[y+2&3]||e[y+3&3])&&(n=e,b=y)}for(;r.data!==t;)if(i=r,!(r=r.next))return this;return(a=r.next)&&delete r.next,i?(a?i.next=a:delete i.next,this):e?(a?e[y]=a:delete e[y],(r=e[0]||e[1]||e[2]||e[3])&&r===(e[3]||e[2]||e[1]||e[0])&&!r.length&&(n?n[b]=r:this._root=r),this):(this._root=a,this)}function AP(t){for(var e=0,r=t.length;ef.index){var v=p-R.x-R.vx,B=m-R.y-R.vy,w=v*v+B*B;wp+L||Mm+L||Su.r&&(u.r=u[h].r)}function l(){if(!!e){var u,h=e.length,d;for(r=new Array(h),u=0;u[e(C,M,s),C])),T;for(y=0,o=new Array(b);y(t=(YP*t+UP)%Uv)/Uv}function HP(t){return t.x}function GP(t){return t.y}var jP=10,$P=Math.PI*(3-Math.sqrt(5));function XP(t){var e,r=1,n=.001,i=1-Math.pow(n,1/300),a=0,s=.6,o=new Map,l=Ju(d),u=fs("tick","end"),h=WP();t==null&&(t=[]);function d(){f(),u.call("tick",e),r1?(y==null?o.delete(_):o.set(_,m(y)),e):o.get(_)},find:function(_,y,b){var x=0,k=t.length,T,C,M,S,R;for(b==null?b=1/0:b*=b,x=0;x1?(u.on(_,y),e):u.on(_)}}}function KP(){var t,e,r,n,i=vr(-30),a,s=1,o=1/0,l=.81;function u(p){var m,_=t.length,y=fh(t,HP,GP).visitAfter(d);for(n=p,m=0;m<_;++m)e=t[m],y.visit(f)}function h(){if(!!t){var p,m=t.length,_;for(a=new Array(m),p=0;p=o)return;(p.data!==e||p.next)&&(b===0&&(b=Na(r),T+=b*b),x===0&&(x=Na(r),T+=x*x),T=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function dh(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Eo(t){return t=dh(Math.abs(t)),t?t[1]:NaN}function eq(t,e){return function(r,n){for(var i=r.length,a=[],s=0,o=t[0],l=0;i>0&&o>0&&(l+o+1>n&&(o=Math.max(1,n-l)),a.push(r.substring(i-=o,i+o)),!((l+=o+1)>n));)o=t[s=(s+1)%t.length];return a.reverse().join(e)}}function rq(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var nq=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Co(t){if(!(e=nq.exec(t)))throw new Error("invalid format: "+t);var e;return new ph({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Co.prototype=ph.prototype;function ph(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}ph.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function iq(t){t:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var Wv;function aq(t,e){var r=dh(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(Wv=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+dh(t,Math.max(0,e+a-1))[0]}function Hv(t,e){var r=dh(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}const Gv={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:tq,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Hv(t*100,e),r:Hv,s:aq,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function jv(t){return t}var $v=Array.prototype.map,Xv=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Kv(t){var e=t.grouping===void 0||t.thousands===void 0?jv:eq($v.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?jv:rq($v.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",o=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function u(d){d=Co(d);var f=d.fill,p=d.align,m=d.sign,_=d.symbol,y=d.zero,b=d.width,x=d.comma,k=d.precision,T=d.trim,C=d.type;C==="n"?(x=!0,C="g"):Gv[C]||(k===void 0&&(k=12),T=!0,C="g"),(y||f==="0"&&p==="=")&&(y=!0,f="0",p="=");var M=_==="$"?r:_==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",S=_==="$"?n:/[%p]/.test(C)?s:"",R=Gv[C],A=/[defgprs%]/.test(C);k=k===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,k)):Math.max(0,Math.min(20,k));function L(v){var B=M,w=S,D,N,z;if(C==="c")w=R(v)+w,v="";else{v=+v;var X=v<0||1/v<0;if(v=isNaN(v)?l:R(Math.abs(v),k),T&&(v=iq(v)),X&&+v==0&&m!=="+"&&(X=!1),B=(X?m==="("?m:o:m==="-"||m==="("?"":m)+B,w=(C==="s"?Xv[8+Wv/3]:"")+w+(X&&m==="("?")":""),A){for(D=-1,N=v.length;++Dz||z>57){w=(z===46?i+v.slice(D+1):v.slice(D))+w,v=v.slice(0,D);break}}}x&&!y&&(v=e(v,1/0));var ct=B.length+v.length+w.length,J=ct>1)+B+v+w+J.slice(ct);break;default:v=J+B+v+w;break}return a(v)}return L.toString=function(){return d+""},L}function h(d,f){var p=u((d=Co(d),d.type="f",d)),m=Math.max(-8,Math.min(8,Math.floor(Eo(f)/3)))*3,_=Math.pow(10,-m),y=Xv[8+m/3];return function(b){return p(_*b)+y}}return{format:u,formatPrefix:h}}var gh,yh,Jd;Zv({thousands:",",grouping:[3],currency:["$",""]});function Zv(t){return gh=Kv(t),yh=gh.format,Jd=gh.formatPrefix,gh}function Qv(t){return Math.max(0,-Eo(Math.abs(t)))}function Jv(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Eo(e)/3)))*3-Eo(Math.abs(t)))}function t6(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Eo(e)-Eo(t))+1}var te=1e-6,Hl=1e-12,Ae=Math.PI,rr=Ae/2,mh=Ae/4,Qr=Ae*2,Ue=180/Ae,re=Ae/180,Ne=Math.abs,So=Math.atan,Jr=Math.atan2,Kt=Math.cos,bh=Math.ceil,e6=Math.exp,t2=Math.hypot,_h=Math.log,e2=Math.pow,Ht=Math.sin,Dn=Math.sign||function(t){return t>0?1:t<0?-1:0},Sr=Math.sqrt,r2=Math.tan;function r6(t){return t>1?0:t<-1?Ae:Math.acos(t)}function tn(t){return t>1?rr:t<-1?-rr:Math.asin(t)}function n6(t){return(t=Ht(t/2))*t}function Je(){}function vh(t,e){t&&a6.hasOwnProperty(t.type)&&a6[t.type](t,e)}var i6={Feature:function(t,e){vh(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=Kt(e),s=Ht(e),o=s2*s,l=a2*a+o*Kt(i),u=o*n*Ht(i);xh.add(Jr(u,l)),i2=t,a2=a,s2=s}function cq(t){return kh=new _r,ti(t,Si),kh*2}function wh(t){return[Jr(t[1],t[0]),tn(t[2])]}function Cs(t){var e=t[0],r=t[1],n=Kt(r);return[n*Kt(e),n*Ht(e),Ht(r)]}function Th(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ao(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function o2(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Eh(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Ch(t){var e=Sr(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tr,pn,nr,En,Ss,u6,h6,Mo,Gl,Ba,Qi,Ji={point:l2,lineStart:d6,lineEnd:p6,polygonStart:function(){Ji.point=g6,Ji.lineStart=uq,Ji.lineEnd=hq,Gl=new _r,Si.polygonStart()},polygonEnd:function(){Si.polygonEnd(),Ji.point=l2,Ji.lineStart=d6,Ji.lineEnd=p6,xh<0?(tr=-(nr=180),pn=-(En=90)):Gl>te?En=90:Gl<-te&&(pn=-90),Qi[0]=tr,Qi[1]=nr},sphere:function(){tr=-(nr=180),pn=-(En=90)}};function l2(t,e){Ba.push(Qi=[tr=t,nr=t]),eEn&&(En=e)}function f6(t,e){var r=Cs([t*re,e*re]);if(Mo){var n=Ao(Mo,r),i=[n[1],-n[0],0],a=Ao(i,n);Ch(a),a=wh(a);var s=t-Ss,o=s>0?1:-1,l=a[0]*Ue*o,u,h=Ne(s)>180;h^(o*SsEn&&(En=u)):(l=(l+360)%360-180,h^(o*SsEn&&(En=e))),h?tCn(tr,nr)&&(nr=t):Cn(t,nr)>Cn(tr,nr)&&(tr=t):nr>=tr?(tnr&&(nr=t)):t>Ss?Cn(tr,t)>Cn(tr,nr)&&(nr=t):Cn(t,nr)>Cn(tr,nr)&&(tr=t)}else Ba.push(Qi=[tr=t,nr=t]);eEn&&(En=e),Mo=r,Ss=t}function d6(){Ji.point=f6}function p6(){Qi[0]=tr,Qi[1]=nr,Ji.point=l2,Mo=null}function g6(t,e){if(Mo){var r=t-Ss;Gl.add(Ne(r)>180?r+(r>0?360:-360):r)}else u6=t,h6=e;Si.point(t,e),f6(t,e)}function uq(){Si.lineStart()}function hq(){g6(u6,h6),Si.lineEnd(),Ne(Gl)>te&&(tr=-(nr=180)),Qi[0]=tr,Qi[1]=nr,Mo=null}function Cn(t,e){return(e-=t)<0?e+360:e}function fq(t,e){return t[0]-e[0]}function y6(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eCn(n[0],n[1])&&(n[1]=i[1]),Cn(i[0],n[1])>Cn(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(s=-1/0,r=a.length-1,e=0,n=a[r];e<=r;n=i,++e)i=a[e],(o=Cn(n[1],i[0]))>s&&(s=o,tr=i[0],nr=n[1])}return Ba=Qi=null,tr===1/0||pn===1/0?[[NaN,NaN],[NaN,NaN]]:[[tr,pn],[nr,En]]}var jl,Sh,Ah,Mh,Lh,Rh,Ih,Nh,c2,u2,h2,m6,b6,en,rn,nn,ei={sphere:Je,point:f2,lineStart:_6,lineEnd:v6,polygonStart:function(){ei.lineStart=yq,ei.lineEnd=mq},polygonEnd:function(){ei.lineStart=_6,ei.lineEnd=v6}};function f2(t,e){t*=re,e*=re;var r=Kt(e);$l(r*Kt(t),r*Ht(t),Ht(e))}function $l(t,e,r){++jl,Ah+=(t-Ah)/jl,Mh+=(e-Mh)/jl,Lh+=(r-Lh)/jl}function _6(){ei.point=pq}function pq(t,e){t*=re,e*=re;var r=Kt(e);en=r*Kt(t),rn=r*Ht(t),nn=Ht(e),ei.point=gq,$l(en,rn,nn)}function gq(t,e){t*=re,e*=re;var r=Kt(e),n=r*Kt(t),i=r*Ht(t),a=Ht(e),s=Jr(Sr((s=rn*a-nn*i)*s+(s=nn*n-en*a)*s+(s=en*i-rn*n)*s),en*n+rn*i+nn*a);Sh+=s,Rh+=s*(en+(en=n)),Ih+=s*(rn+(rn=i)),Nh+=s*(nn+(nn=a)),$l(en,rn,nn)}function v6(){ei.point=f2}function yq(){ei.point=bq}function mq(){x6(m6,b6),ei.point=f2}function bq(t,e){m6=t,b6=e,t*=re,e*=re,ei.point=x6;var r=Kt(e);en=r*Kt(t),rn=r*Ht(t),nn=Ht(e),$l(en,rn,nn)}function x6(t,e){t*=re,e*=re;var r=Kt(e),n=r*Kt(t),i=r*Ht(t),a=Ht(e),s=rn*a-nn*i,o=nn*n-en*a,l=en*i-rn*n,u=t2(s,o,l),h=tn(u),d=u&&-h/u;c2.add(d*s),u2.add(d*o),h2.add(d*l),Sh+=h,Rh+=h*(en+(en=n)),Ih+=h*(rn+(rn=i)),Nh+=h*(nn+(nn=a)),$l(en,rn,nn)}function _q(t){jl=Sh=Ah=Mh=Lh=Rh=Ih=Nh=0,c2=new _r,u2=new _r,h2=new _r,ti(t,ei);var e=+c2,r=+u2,n=+h2,i=t2(e,r,n);return iAe?t+Math.round(-t/Qr)*Qr:t,e]}p2.invert=p2;function g2(t,e,r){return(t%=Qr)?e||r?d2(w6(t),T6(e,r)):w6(t):e||r?T6(e,r):p2}function k6(t){return function(e,r){return e+=t,[e>Ae?e-Qr:e<-Ae?e+Qr:e,r]}}function w6(t){var e=k6(t);return e.invert=k6(-t),e}function T6(t,e){var r=Kt(t),n=Ht(t),i=Kt(e),a=Ht(e);function s(o,l){var u=Kt(l),h=Kt(o)*u,d=Ht(o)*u,f=Ht(l),p=f*r+h*n;return[Jr(d*i-p*a,h*r-f*n),tn(p*i+d*a)]}return s.invert=function(o,l){var u=Kt(l),h=Kt(o)*u,d=Ht(o)*u,f=Ht(l),p=f*i-d*a;return[Jr(d*i+f*a,h*r+p*n),tn(p*r-h*n)]},s}function E6(t){t=g2(t[0]*re,t[1]*re,t.length>2?t[2]*re:0);function e(r){return r=t(r[0]*re,r[1]*re),r[0]*=Ue,r[1]*=Ue,r}return e.invert=function(r){return r=t.invert(r[0]*re,r[1]*re),r[0]*=Ue,r[1]*=Ue,r},e}function C6(t,e,r,n,i,a){if(!!r){var s=Kt(e),o=Ht(e),l=n*r;i==null?(i=e+n*Qr,a=e-l/2):(i=S6(s,i),a=S6(s,a),(n>0?ia)&&(i+=n*Qr));for(var u,h=i;n>0?h>a:h1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],e=null,r}}}function Bh(t,e){return Ne(t[0]-e[0])=0;--o)i.point((d=h[o])[0],d[1]);else n(f.x,f.p.x,-1,i);f=f.p}f=f.o,h=f.z,p=!p}while(!f.v);i.lineEnd()}}}function L6(t){if(!!(e=t.length)){for(var e,r=0,n=t[0],i;++r=0?1:-1,L=A*R,v=L>Ae,B=y*M;if(l.add(Jr(B*A*Ht(L),b*S+B*Kt(L))),s+=v?R+A*Qr:R,v^m>=r^T>=r){var w=Ao(Cs(p),Cs(k));Ch(w);var D=Ao(a,w);Ch(D);var N=(v^R>=0?-1:1)*tn(D[2]);(n>N||n===N&&(w[0]||w[1]))&&(o+=v^R>=0?1:-1)}}return(s<-te||s0){for(l||(i.polygonStart(),l=!0),i.lineStart(),M=0;M1&&T&2&&C.push(C.pop().concat(C.shift())),h.push(C.filter(xq))}}return f}}function xq(t){return t.length>1}function kq(t,e){return((t=t.x)[0]<0?t[1]-rr-te:rr-t[1])-((e=e.x)[0]<0?e[1]-rr-te:rr-e[1])}const m2=I6(function(){return!0},wq,Eq,[-Ae,-rr]);function wq(t){var e=NaN,r=NaN,n=NaN,i;return{lineStart:function(){t.lineStart(),i=1},point:function(a,s){var o=a>0?Ae:-Ae,l=Ne(a-e);Ne(l-Ae)0?rr:-rr),t.point(n,r),t.lineEnd(),t.lineStart(),t.point(o,r),t.point(a,r),i=0):n!==o&&l>=Ae&&(Ne(e-n)te?So((Ht(e)*(a=Kt(n))*Ht(r)-Ht(n)*(i=Kt(e))*Ht(t))/(i*a*s)):(e+n)/2}function Eq(t,e,r,n){var i;if(t==null)i=r*rr,n.point(-Ae,i),n.point(0,i),n.point(Ae,i),n.point(Ae,0),n.point(Ae,-i),n.point(0,-i),n.point(-Ae,-i),n.point(-Ae,0),n.point(-Ae,i);else if(Ne(t[0]-e[0])>te){var a=t[0]0,i=Ne(e)>te;function a(h,d,f,p){C6(p,t,r,f,h,d)}function s(h,d){return Kt(h)*Kt(d)>e}function o(h){var d,f,p,m,_;return{lineStart:function(){m=p=!1,_=1},point:function(y,b){var x=[y,b],k,T=s(y,b),C=n?T?0:u(y,b):T?u(y+(y<0?Ae:-Ae),b):0;if(!d&&(m=p=T)&&h.lineStart(),T!==p&&(k=l(d,x),(!k||Bh(d,k)||Bh(x,k))&&(x[2]=1)),T!==p)_=0,T?(h.lineStart(),k=l(x,d),h.point(k[0],k[1])):(k=l(d,x),h.point(k[0],k[1],2),h.lineEnd()),d=k;else if(i&&d&&n^T){var M;!(C&f)&&(M=l(x,d,!0))&&(_=0,n?(h.lineStart(),h.point(M[0][0],M[0][1]),h.point(M[1][0],M[1][1]),h.lineEnd()):(h.point(M[1][0],M[1][1]),h.lineEnd(),h.lineStart(),h.point(M[0][0],M[0][1],3)))}T&&(!d||!Bh(d,x))&&h.point(x[0],x[1]),d=x,p=T,f=C},lineEnd:function(){p&&h.lineEnd(),d=null},clean:function(){return _|(m&&p)<<1}}}function l(h,d,f){var p=Cs(h),m=Cs(d),_=[1,0,0],y=Ao(p,m),b=Th(y,y),x=y[0],k=b-x*x;if(!k)return!f&&h;var T=e*b/k,C=-e*x/k,M=Ao(_,y),S=Eh(_,T),R=Eh(y,C);o2(S,R);var A=M,L=Th(S,A),v=Th(A,A),B=L*L-v*(Th(S,S)-1);if(!(B<0)){var w=Sr(B),D=Eh(A,(-L-w)/v);if(o2(D,S),D=wh(D),!f)return D;var N=h[0],z=d[0],X=h[1],ct=d[1],J;z0^D[1]<(Ne(D[0]-N)Ae^(N<=D[0]&&D[0]<=z)){var ut=Eh(A,(-L+w)/v);return o2(ut,S),[D,wh(ut)]}}}function u(h,d){var f=n?t:Ae-t,p=0;return h<-f?p|=1:h>f&&(p|=2),d<-f?p|=4:d>f&&(p|=8),p}return I6(s,o,a,n?[0,-t]:[-Ae,t-Ae])}function Cq(t,e,r,n,i,a){var s=t[0],o=t[1],l=e[0],u=e[1],h=0,d=1,f=l-s,p=u-o,m;if(m=r-s,!(!f&&m>0)){if(m/=f,f<0){if(m0){if(m>d)return;m>h&&(h=m)}if(m=i-s,!(!f&&m<0)){if(m/=f,f<0){if(m>d)return;m>h&&(h=m)}else if(f>0){if(m0)){if(m/=p,p<0){if(m0){if(m>d)return;m>h&&(h=m)}if(m=a-o,!(!p&&m<0)){if(m/=p,p<0){if(m>d)return;m>h&&(h=m)}else if(p>0){if(m0&&(t[0]=s+h*f,t[1]=o+h*p),d<1&&(e[0]=s+d*f,e[1]=o+d*p),!0}}}}}var Xl=1e9,Oh=-Xl;function Fh(t,e,r,n){function i(u,h){return t<=u&&u<=r&&e<=h&&h<=n}function a(u,h,d,f){var p=0,m=0;if(u==null||(p=s(u,d))!==(m=s(h,d))||l(u,h)<0^d>0)do f.point(p===0||p===3?t:r,p>1?n:e);while((p=(p+d+4)%4)!==m);else f.point(h[0],h[1])}function s(u,h){return Ne(u[0]-t)0?0:3:Ne(u[0]-r)0?2:1:Ne(u[1]-e)0?1:0:h>0?3:2}function o(u,h){return l(u.x,h.x)}function l(u,h){var d=s(u,1),f=s(h,1);return d!==f?d-f:d===0?h[1]-u[1]:d===1?u[0]-h[0]:d===2?u[1]-h[1]:h[0]-u[0]}return function(u){var h=u,d=A6(),f,p,m,_,y,b,x,k,T,C,M,S={point:R,lineStart:B,lineEnd:w,polygonStart:L,polygonEnd:v};function R(N,z){i(N,z)&&h.point(N,z)}function A(){for(var N=0,z=0,X=p.length;zn&&(W-lt)*(n-ut)>(tt-ut)*(t-lt)&&++N:tt<=n&&(W-lt)*(n-ut)<(tt-ut)*(t-lt)&&--N;return N}function L(){h=d,f=[],p=[],M=!0}function v(){var N=A(),z=M&&N,X=(f=j0(f)).length;(z||X)&&(u.polygonStart(),z&&(u.lineStart(),a(null,null,1,u),u.lineEnd()),X&&M6(f,o,N,a,u),u.polygonEnd()),h=u,f=p=m=null}function B(){S.point=D,p&&p.push(m=[]),C=!0,T=!1,x=k=NaN}function w(){f&&(D(_,y),b&&T&&d.rejoin(),f.push(d.result())),S.point=R,T&&h.lineEnd()}function D(N,z){var X=i(N,z);if(p&&m.push([N,z]),C)_=N,y=z,b=X,C=!1,X&&(h.lineStart(),h.point(N,z));else if(X&&T)h.point(N,z);else{var ct=[x=Math.max(Oh,Math.min(Xl,x)),k=Math.max(Oh,Math.min(Xl,k))],J=[N=Math.max(Oh,Math.min(Xl,N)),z=Math.max(Oh,Math.min(Xl,z))];Cq(ct,J,t,e,r,n)?(T||(h.lineStart(),h.point(ct[0],ct[1])),h.point(J[0],J[1]),X||h.lineEnd(),M=!1):X&&(h.lineStart(),h.point(N,z),M=!1)}x=N,k=z,T=X}return S}}function Sq(){var t=0,e=0,r=960,n=500,i,a,s;return s={stream:function(o){return i&&a===o?i:i=Fh(t,e,r,n)(a=o)},extent:function(o){return arguments.length?(t=+o[0][0],e=+o[0][1],r=+o[1][0],n=+o[1][1],i=a=null,s):[[t,e],[r,n]]}}}var b2,_2,Ph,qh,Ro={sphere:Je,point:Je,lineStart:Aq,lineEnd:Je,polygonStart:Je,polygonEnd:Je};function Aq(){Ro.point=Lq,Ro.lineEnd=Mq}function Mq(){Ro.point=Ro.lineEnd=Je}function Lq(t,e){t*=re,e*=re,_2=t,Ph=Ht(e),qh=Kt(e),Ro.point=Rq}function Rq(t,e){t*=re,e*=re;var r=Ht(e),n=Kt(e),i=Ne(t-_2),a=Kt(i),s=Ht(i),o=n*s,l=qh*r-Ph*n*a,u=Ph*r+qh*n*a;b2.add(Jr(Sr(o*o+l*l),u)),_2=t,Ph=r,qh=n}function B6(t){return b2=new _r,ti(t,Ro),+b2}var v2=[null,null],Iq={type:"LineString",coordinates:v2};function Vh(t,e){return v2[0]=t,v2[1]=e,B6(Iq)}var D6={Feature:function(t,e){return zh(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Vh(t[a],t[a-1]),i>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))te}).map(f)).concat(Ca(bh(a/u)*u,i,u).filter(function(k){return Ne(k%d)>te}).map(p))}return b.lines=function(){return x().map(function(k){return{type:"LineString",coordinates:k}})},b.outline=function(){return{type:"Polygon",coordinates:[m(n).concat(_(s).slice(1),m(r).reverse().slice(1),_(o).reverse().slice(1))]}},b.extent=function(k){return arguments.length?b.extentMajor(k).extentMinor(k):b.extentMinor()},b.extentMajor=function(k){return arguments.length?(n=+k[0][0],r=+k[1][0],o=+k[0][1],s=+k[1][1],n>r&&(k=n,n=r,r=k),o>s&&(k=o,o=s,s=k),b.precision(y)):[[n,o],[r,s]]},b.extentMinor=function(k){return arguments.length?(e=+k[0][0],t=+k[1][0],a=+k[0][1],i=+k[1][1],e>t&&(k=e,e=t,t=k),a>i&&(k=a,a=i,i=k),b.precision(y)):[[e,a],[t,i]]},b.step=function(k){return arguments.length?b.stepMajor(k).stepMinor(k):b.stepMinor()},b.stepMajor=function(k){return arguments.length?(h=+k[0],d=+k[1],b):[h,d]},b.stepMinor=function(k){return arguments.length?(l=+k[0],u=+k[1],b):[l,u]},b.precision=function(k){return arguments.length?(y=+k,f=z6(a,i,90),p=Y6(e,t,y),m=z6(o,s,90),_=Y6(n,r,y),b):y},b.extentMajor([[-180,-90+te],[180,90-te]]).extentMinor([[-180,-80-te],[180,80+te]])}function Dq(){return U6()()}function Oq(t,e){var r=t[0]*re,n=t[1]*re,i=e[0]*re,a=e[1]*re,s=Kt(n),o=Ht(n),l=Kt(a),u=Ht(a),h=s*Kt(r),d=s*Ht(r),f=l*Kt(i),p=l*Ht(i),m=2*tn(Sr(n6(a-n)+s*l*n6(i-r))),_=Ht(m),y=m?function(b){var x=Ht(b*=m)/_,k=Ht(m-b)/_,T=k*h+x*f,C=k*d+x*p,M=k*o+x*u;return[Jr(C,T)*Ue,Jr(M,Sr(T*T+C*C))*Ue]}:function(){return[r*Ue,n*Ue]};return y.distance=m,y}const Kl=t=>t;var x2=new _r,k2=new _r,W6,H6,w2,T2,Da={point:Je,lineStart:Je,lineEnd:Je,polygonStart:function(){Da.lineStart=Fq,Da.lineEnd=qq},polygonEnd:function(){Da.lineStart=Da.lineEnd=Da.point=Je,x2.add(Ne(k2)),k2=new _r},result:function(){var t=x2/2;return x2=new _r,t}};function Fq(){Da.point=Pq}function Pq(t,e){Da.point=G6,W6=w2=t,H6=T2=e}function G6(t,e){k2.add(T2*t-w2*e),w2=t,T2=e}function qq(){G6(W6,H6)}const j6=Da;var Io=1/0,Yh=Io,Zl=-Io,Uh=Zl,Vq={point:zq,lineStart:Je,lineEnd:Je,polygonStart:Je,polygonEnd:Je,result:function(){var t=[[Io,Yh],[Zl,Uh]];return Zl=Uh=-(Yh=Io=1/0),t}};function zq(t,e){tZl&&(Zl=t),eUh&&(Uh=e)}const Wh=Vq;var E2=0,C2=0,Ql=0,Hh=0,Gh=0,No=0,S2=0,A2=0,Jl=0,$6,X6,Ai,Mi,ri={point:As,lineStart:K6,lineEnd:Z6,polygonStart:function(){ri.lineStart=Wq,ri.lineEnd=Hq},polygonEnd:function(){ri.point=As,ri.lineStart=K6,ri.lineEnd=Z6},result:function(){var t=Jl?[S2/Jl,A2/Jl]:No?[Hh/No,Gh/No]:Ql?[E2/Ql,C2/Ql]:[NaN,NaN];return E2=C2=Ql=Hh=Gh=No=S2=A2=Jl=0,t}};function As(t,e){E2+=t,C2+=e,++Ql}function K6(){ri.point=Yq}function Yq(t,e){ri.point=Uq,As(Ai=t,Mi=e)}function Uq(t,e){var r=t-Ai,n=e-Mi,i=Sr(r*r+n*n);Hh+=i*(Ai+t)/2,Gh+=i*(Mi+e)/2,No+=i,As(Ai=t,Mi=e)}function Z6(){ri.point=As}function Wq(){ri.point=Gq}function Hq(){Q6($6,X6)}function Gq(t,e){ri.point=Q6,As($6=Ai=t,X6=Mi=e)}function Q6(t,e){var r=t-Ai,n=e-Mi,i=Sr(r*r+n*n);Hh+=i*(Ai+t)/2,Gh+=i*(Mi+e)/2,No+=i,i=Mi*t-Ai*e,S2+=i*(Ai+t),A2+=i*(Mi+e),Jl+=i*3,As(Ai=t,Mi=e)}const J6=ri;function tx(t){this._context=t}tx.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:{this._context.moveTo(t,e),this._point=1;break}case 1:{this._context.lineTo(t,e);break}default:{this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,Qr);break}}},result:Je};var M2=new _r,L2,ex,rx,tc,ec,jh={point:Je,lineStart:function(){jh.point=jq},lineEnd:function(){L2&&nx(ex,rx),jh.point=Je},polygonStart:function(){L2=!0},polygonEnd:function(){L2=null},result:function(){var t=+M2;return M2=new _r,t}};function jq(t,e){jh.point=nx,ex=tc=t,rx=ec=e}function nx(t,e){tc-=t,ec-=e,M2.add(Sr(tc*tc+ec*ec)),tc=t,ec=e}const ix=jh;function ax(){this._string=[]}ax.prototype={_radius:4.5,_circle:sx(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:{this._string.push("M",t,",",e),this._point=1;break}case 1:{this._string.push("L",t,",",e);break}default:{this._circle==null&&(this._circle=sx(this._radius)),this._string.push("M",t,",",e,this._circle);break}}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}else return null}};function sx(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function $q(t,e){var r=4.5,n,i;function a(s){return s&&(typeof r=="function"&&i.pointRadius(+r.apply(this,arguments)),ti(s,n(i))),i.result()}return a.area=function(s){return ti(s,n(j6)),j6.result()},a.measure=function(s){return ti(s,n(ix)),ix.result()},a.bounds=function(s){return ti(s,n(Wh)),Wh.result()},a.centroid=function(s){return ti(s,n(J6)),J6.result()},a.projection=function(s){return arguments.length?(n=s==null?(t=null,Kl):(t=s).stream,a):t},a.context=function(s){return arguments.length?(i=s==null?(e=null,new ax):new tx(e=s),typeof r!="function"&&i.pointRadius(r),a):e},a.pointRadius=function(s){return arguments.length?(r=typeof s=="function"?s:(i.pointRadius(+s),+s),a):r},a.projection(t).context(e)}function Xq(t){return{stream:rc(t)}}function rc(t){return function(e){var r=new R2;for(var n in t)r[n]=t[n];return r.stream=e,r}}function R2(){}R2.prototype={constructor:R2,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function I2(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),n!=null&&t.clipExtent(null),ti(r,t.stream(Wh)),e(Wh.result()),n!=null&&t.clipExtent(n),t}function $h(t,e,r){return I2(t,function(n){var i=e[1][0]-e[0][0],a=e[1][1]-e[0][1],s=Math.min(i/(n[1][0]-n[0][0]),a/(n[1][1]-n[0][1])),o=+e[0][0]+(i-s*(n[1][0]+n[0][0]))/2,l=+e[0][1]+(a-s*(n[1][1]+n[0][1]))/2;t.scale(150*s).translate([o,l])},r)}function N2(t,e,r){return $h(t,[[0,0],e],r)}function B2(t,e,r){return I2(t,function(n){var i=+e,a=i/(n[1][0]-n[0][0]),s=(i-a*(n[1][0]+n[0][0]))/2,o=-a*n[0][1];t.scale(150*a).translate([s,o])},r)}function D2(t,e,r){return I2(t,function(n){var i=+e,a=i/(n[1][1]-n[0][1]),s=-a*n[0][0],o=(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([s,o])},r)}var ox=16,Kq=Kt(30*re);function lx(t,e){return+e?Qq(t,e):Zq(t)}function Zq(t){return rc({point:function(e,r){e=t(e,r),this.stream.point(e[0],e[1])}})}function Qq(t,e){function r(n,i,a,s,o,l,u,h,d,f,p,m,_,y){var b=u-n,x=h-i,k=b*b+x*x;if(k>4*e&&_--){var T=s+f,C=o+p,M=l+m,S=Sr(T*T+C*C+M*M),R=tn(M/=S),A=Ne(Ne(M)-1)e||Ne((b*w+x*D)/k-.5)>.3||s*f+o*p+l*m2?N[2]%360*re:0,w()):[o*Ue,l*Ue,u*Ue]},v.angle=function(N){return arguments.length?(d=N%360*re,w()):d*Ue},v.reflectX=function(N){return arguments.length?(f=N?-1:1,w()):f<0},v.reflectY=function(N){return arguments.length?(p=N?-1:1,w()):p<0},v.precision=function(N){return arguments.length?(M=lx(S,C=N*N),D()):Sr(C)},v.fitExtent=function(N,z){return $h(v,N,z)},v.fitSize=function(N,z){return N2(v,N,z)},v.fitWidth=function(N,z){return B2(v,N,z)},v.fitHeight=function(N,z){return D2(v,N,z)};function w(){var N=cx(r,0,0,f,p,d).apply(null,e(a,s)),z=cx(r,n-N[0],i-N[1],f,p,d);return h=g2(o,l,u),S=d2(e,z),R=d2(h,S),M=lx(S,C),D()}function D(){return A=L=null,v}return function(){return e=t.apply(this,arguments),v.invert=e.invert&&B,w()}}function F2(t){var e=0,r=Ae/3,n=O2(t),i=n(e,r);return i.parallels=function(a){return arguments.length?n(e=a[0]*re,r=a[1]*re):[e*Ue,r*Ue]},i}function rV(t){var e=Kt(t);function r(n,i){return[n*e,Ht(i)/e]}return r.invert=function(n,i){return[n/e,tn(i*e)]},r}function ux(t,e){var r=Ht(t),n=(r+Ht(e))/2;if(Ne(n)=.12&&y<.234&&_>=-.425&&_<-.214?i:y>=.166&&y<.234&&_>=-.214&&_<-.115?s:r).invert(f)},h.stream=function(f){return t&&e===f?t:t=nV([r.stream(e=f),i.stream(f),s.stream(f)])},h.precision=function(f){return arguments.length?(r.precision(f),i.precision(f),s.precision(f),d()):r.precision()},h.scale=function(f){return arguments.length?(r.scale(f),i.scale(f*.35),s.scale(f),h.translate(r.translate())):r.scale()},h.translate=function(f){if(!arguments.length)return r.translate();var p=r.scale(),m=+f[0],_=+f[1];return n=r.translate(f).clipExtent([[m-.455*p,_-.238*p],[m+.455*p,_+.238*p]]).stream(u),a=i.translate([m-.307*p,_+.201*p]).clipExtent([[m-.425*p+te,_+.12*p+te],[m-.214*p-te,_+.234*p-te]]).stream(u),o=s.translate([m-.205*p,_+.212*p]).clipExtent([[m-.214*p+te,_+.166*p+te],[m-.115*p-te,_+.234*p-te]]).stream(u),d()},h.fitExtent=function(f,p){return $h(h,f,p)},h.fitSize=function(f,p){return N2(h,f,p)},h.fitWidth=function(f,p){return B2(h,f,p)},h.fitHeight=function(f,p){return D2(h,f,p)};function d(){return t=e=null,h}return h.scale(1070)}function fx(t){return function(e,r){var n=Kt(e),i=Kt(r),a=t(n*i);return a===1/0?[2,0]:[a*i*Ht(e),a*Ht(r)]}}function nc(t){return function(e,r){var n=Sr(e*e+r*r),i=t(n),a=Ht(i),s=Kt(i);return[Jr(e*a,n*s),tn(n&&r*a/n)]}}var P2=fx(function(t){return Sr(2/(1+t))});P2.invert=nc(function(t){return 2*tn(t/2)});function aV(){return Li(P2).scale(124.75).clipAngle(180-.001)}var q2=fx(function(t){return(t=r6(t))&&t/Ht(t)});q2.invert=nc(function(t){return t});function sV(){return Li(q2).scale(79.4188).clipAngle(180-.001)}function ic(t,e){return[t,_h(r2((rr+e)/2))]}ic.invert=function(t,e){return[t,2*So(e6(e))-rr]};function oV(){return dx(ic).scale(961/Qr)}function dx(t){var e=Li(t),r=e.center,n=e.scale,i=e.translate,a=e.clipExtent,s=null,o,l,u;e.scale=function(d){return arguments.length?(n(d),h()):n()},e.translate=function(d){return arguments.length?(i(d),h()):i()},e.center=function(d){return arguments.length?(r(d),h()):r()},e.clipExtent=function(d){return arguments.length?(d==null?s=o=l=u=null:(s=+d[0][0],o=+d[0][1],l=+d[1][0],u=+d[1][1]),h()):s==null?null:[[s,o],[l,u]]};function h(){var d=Ae*n(),f=e(E6(e.rotate()).invert([0,0]));return a(s==null?[[f[0]-d,f[1]-d],[f[0]+d,f[1]+d]]:t===ic?[[Math.max(f[0]-d,s),o],[Math.min(f[0]+d,l),u]]:[[s,Math.max(f[1]-d,o)],[l,Math.min(f[1]+d,u)]])}return h()}function Kh(t){return r2((rr+t)/2)}function px(t,e){var r=Kt(t),n=t===e?Ht(t):_h(r/Kt(e))/_h(Kh(e)/Kh(t)),i=r*e2(Kh(t),n)/n;if(!n)return ic;function a(s,o){i>0?o<-rr+te&&(o=-rr+te):o>rr-te&&(o=rr-te);var l=i/e2(Kh(o),n);return[l*Ht(n*s),i-l*Kt(n*s)]}return a.invert=function(s,o){var l=i-o,u=Dn(n)*Sr(s*s+l*l),h=Jr(s,Ne(l))*Dn(l);return l*n<0&&(h-=Ae*Dn(s)*Dn(l)),[h/n,2*So(e2(i/u,1/n))-rr]},a}function lV(){return F2(px).scale(109.5).parallels([30,30])}function ac(t,e){return[t,e]}ac.invert=ac;function cV(){return Li(ac).scale(152.63)}function gx(t,e){var r=Kt(t),n=t===e?Ht(t):(r-Kt(e))/(e-t),i=r/n+t;if(Ne(n)te&&--n>0);return[t/(.8707+(a=r*r)*(-.131979+a*(-.013791+a*a*a*(.003971-.001529*a)))),r]};function gV(){return Li(Y2).scale(175.295)}function U2(t,e){return[Kt(e)*Ht(t),Ht(e)]}U2.invert=nc(tn);function yV(){return Li(U2).scale(249.5).clipAngle(90+te)}function W2(t,e){var r=Kt(e),n=1+Kt(t)*r;return[r*Ht(t)/n,Ht(e)/n]}W2.invert=nc(function(t){return 2*So(t)});function mV(){return Li(W2).scale(250).clipAngle(142)}function H2(t,e){return[_h(r2((rr+e)/2)),-t]}H2.invert=function(t,e){return[-e,2*So(e6(t))-rr]};function bV(){var t=dx(H2),e=t.center,r=t.rotate;return t.center=function(n){return arguments.length?e([-n[1],n[0]]):(n=e(),[n[1],-n[0]])},t.rotate=function(n){return arguments.length?r([n[0],n[1],n.length>2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function _V(t,e){return t.parent===e.parent?1:2}function vV(t){return t.reduce(xV,0)/t.length}function xV(t,e){return t+e.x}function kV(t){return 1+t.reduce(wV,0)}function wV(t,e){return Math.max(t,e.y)}function TV(t){for(var e;e=t.children;)t=e[0];return t}function EV(t){for(var e;e=t.children;)t=e[e.length-1];return t}function CV(){var t=_V,e=1,r=1,n=!1;function i(a){var s,o=0;a.eachAfter(function(f){var p=f.children;p?(f.x=vV(p),f.y=kV(p)):(f.x=s?o+=t(f,s):0,f.y=0,s=f)});var l=TV(a),u=EV(a),h=l.x-t(l,u)/2,d=u.x+t(u,l)/2;return a.eachAfter(n?function(f){f.x=(f.x-a.x)*e,f.y=(a.y-f.y)*r}:function(f){f.x=(f.x-h)/(d-h)*e,f.y=(1-(a.y?f.y/a.y:1))*r})}return i.separation=function(a){return arguments.length?(t=a,i):t},i.size=function(a){return arguments.length?(n=!1,e=+a[0],r=+a[1],i):n?null:[e,r]},i.nodeSize=function(a){return arguments.length?(n=!0,e=+a[0],r=+a[1],i):n?[e,r]:null},i}function SV(t){var e=0,r=t.children,n=r&&r.length;if(!n)e=1;else for(;--n>=0;)e+=r[n].value;t.value=e}function AV(){return this.eachAfter(SV)}function MV(t,e){let r=-1;for(const n of this)t.call(e,n,++r,this);return this}function LV(t,e){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(t.call(e,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}function RV(t,e){for(var r=this,n=[r],i=[],a,s,o,l=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,o=a.length;s=0;)r+=n[i].value;e.value=r})}function BV(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function DV(t){for(var e=this,r=OV(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n}function OV(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}function FV(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}function PV(){return Array.from(this)}function qV(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function VV(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}function*zV(){var t=this,e,r=[t],n,i,a;do for(e=r.reverse(),r=[];t=e.pop();)if(yield t,n=t.children)for(i=0,a=n.length;i=0;--o)i.push(a=s[o]=new Ms(s[o])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(yx)}function YV(){return G2(this).eachBefore(HV)}function UV(t){return t.children}function WV(t){return Array.isArray(t)?t[1]:null}function HV(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function yx(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function Ms(t){this.data=t,this.depth=this.height=0,this.parent=null}Ms.prototype=G2.prototype={constructor:Ms,count:AV,each:MV,eachAfter:RV,eachBefore:LV,find:IV,sum:NV,sort:BV,path:DV,ancestors:FV,descendants:PV,leaves:qV,links:VV,copy:YV,[Symbol.iterator]:zV};function Qh(t){return t==null?null:mx(t)}function mx(t){if(typeof t!="function")throw new Error;return t}function Ls(){return 0}function Bo(t){return function(){return t}}const GV=1664525,jV=1013904223,bx=4294967296;function j2(){let t=1;return()=>(t=(GV*t+jV)%bx)/bx}function $V(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function XV(t,e){let r=t.length,n,i;for(;r;)i=e()*r--|0,n=t[r],t[r]=t[i],t[i]=n;return t}function KV(t){return _x(t,j2())}function _x(t,e){for(var r=0,n=(t=XV(Array.from(t),e)).length,i=[],a,s;r0&&r*r>n*n+i*i}function $2(t,e){for(var r=0;r1e-6?(v+Math.sqrt(v*v-4*L*B))/(2*L):B/v);return{x:n+M+S*w,y:i+R+A*w,r:w}}function kx(t,e,r){var n=t.x-e.x,i,a,s=t.y-e.y,o,l,u=n*n+s*s;u?(a=e.r+r.r,a*=a,l=t.r+r.r,l*=l,a>l?(i=(u+l-a)/(2*u),o=Math.sqrt(Math.max(0,l/u-i*i)),r.x=t.x-i*n-o*s,r.y=t.y-i*s+o*n):(i=(u+a-l)/(2*u),o=Math.sqrt(Math.max(0,a/u-i*i)),r.x=e.x+i*n-o*s,r.y=e.y+i*s+o*n)):(r.x=e.x+r.r,r.y=e.y)}function wx(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function Tx(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function tf(t){this._=t,this.next=null,this.previous=null}function Ex(t,e){if(!(a=(t=$V(t)).length))return 0;var r,n,i,a,s,o,l,u,h,d,f;if(r=t[0],r.x=0,r.y=0,!(a>1))return r.r;if(n=t[1],r.x=-n.r,n.x=r.r,n.y=0,!(a>2))return r.r+n.r;kx(n,r,i=t[2]),r=new tf(r),n=new tf(n),i=new tf(i),r.next=i.previous=n,n.next=r.previous=i,i.next=n.previous=r;t:for(l=3;llz(r(T,C,i))),x=b.map(Lx),k=new Set(b).add("");for(const T of x)k.has(T)||(k.add(T),b.push(T),x.push(Lx(T)),a.push(K2));s=(T,C)=>b[C],o=(T,C)=>x[C]}for(h=0,l=a.length;h=0&&(p=a[b],p.data===K2);--b)p.data=null}if(d.parent=iz,d.eachBefore(function(b){b.depth=b.parent.depth+1,--l}).eachBefore(yx),d.parent=null,l>0)throw new Error("cycle");return d}return n.id=function(i){return arguments.length?(t=Qh(i),n):t},n.parentId=function(i){return arguments.length?(e=Qh(i),n):e},n.path=function(i){return arguments.length?(r=Qh(i),n):r},n}function lz(t){t=`${t}`;let e=t.length;return Z2(t,e-1)&&!Z2(t,e-2)&&(t=t.slice(0,-1)),t[0]==="/"?t:`/${t}`}function Lx(t){let e=t.length;if(e<2)return"";for(;--e>1&&!Z2(t,e););return t.slice(0,e)}function Z2(t,e){if(t[e]==="/"){let r=0;for(;e>0&&t[--e]==="\\";)++r;if((r&1)===0)return!0}return!1}function cz(t,e){return t.parent===e.parent?1:2}function Q2(t){var e=t.children;return e?e[0]:t.t}function J2(t){var e=t.children;return e?e[e.length-1]:t.t}function uz(t,e,r){var n=r/(e.i-t.i);e.c-=n,e.s+=r,t.c+=n,e.z+=r,e.m+=r}function hz(t){for(var e=0,r=0,n=t.children,i=n.length,a;--i>=0;)a=n[i],a.z+=e,a.m+=e,e+=a.s+(r+=a.c)}function fz(t,e,r){return t.a.parent===e.parent?t.a:r}function ef(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}ef.prototype=Object.create(Ms.prototype);function dz(t){for(var e=new ef(t,0),r,n=[e],i,a,s,o;r=n.pop();)if(a=r._.children)for(r.children=new Array(o=a.length),s=o-1;s>=0;--s)n.push(i=r.children[s]=new ef(a[s],s)),i.parent=r;return(e.parent=new ef(null,0)).children=[e],e}function pz(){var t=cz,e=1,r=1,n=null;function i(u){var h=dz(u);if(h.eachAfter(a),h.parent.m=-h.z,h.eachBefore(s),n)u.eachBefore(l);else{var d=u,f=u,p=u;u.eachBefore(function(x){x.xf.x&&(f=x),x.depth>p.depth&&(p=x)});var m=d===f?1:t(d,f)/2,_=m-d.x,y=e/(f.x+m+_),b=r/(p.depth||1);u.eachBefore(function(x){x.x=(x.x+_)*y,x.y=x.depth*b})}return u}function a(u){var h=u.children,d=u.parent.children,f=u.i?d[u.i-1]:null;if(h){hz(u);var p=(h[0].z+h[h.length-1].z)/2;f?(u.z=f.z+t(u._,f._),u.m=u.z-p):u.z=p}else f&&(u.z=f.z+t(u._,f._));u.parent.A=o(u,f,u.parent.A||d[0])}function s(u){u._.x=u.z+u.parent.m,u.m+=u.parent.m}function o(u,h,d){if(h){for(var f=u,p=u,m=h,_=f.parent.children[0],y=f.m,b=p.m,x=m.m,k=_.m,T;m=J2(m),f=Q2(f),m&&f;)_=Q2(_),p=J2(p),p.a=u,T=m.z+x-f.z-y+t(m._,f._),T>0&&(uz(fz(m,u,d),u,T),y+=T,b+=T),x+=m.m,y+=f.m,k+=_.m,b+=p.m;m&&!J2(p)&&(p.t=m,p.m+=x-b),f&&!Q2(_)&&(_.t=f,_.m+=y-k,d=u)}return d}function l(u){u.x*=e,u.y=u.depth*r}return i.separation=function(u){return arguments.length?(t=u,i):t},i.size=function(u){return arguments.length?(n=!1,e=+u[0],r=+u[1],i):n?null:[e,r]},i.nodeSize=function(u){return arguments.length?(n=!0,e=+u[0],r=+u[1],i):n?[e,r]:null},i}function rf(t,e,r,n,i){for(var a=t.children,s,o=-1,l=a.length,u=t.value&&(i-r)/t.value;++ox&&(x=u),M=y*y*C,k=Math.max(x/M,M/b),k>T){y-=u;break}T=k}s.push(l={value:y,dice:p1?n:1)},r}(Rx);function gz(){var t=Nx,e=!1,r=1,n=1,i=[0],a=Ls,s=Ls,o=Ls,l=Ls,u=Ls;function h(f){return f.x0=f.y0=0,f.x1=r,f.y1=n,f.eachBefore(d),i=[0],e&&f.eachBefore(Ax),f}function d(f){var p=i[f.depth],m=f.x0+p,_=f.y0+p,y=f.x1-p,b=f.y1-p;y=f-1){var x=a[d];x.x0=m,x.y0=_,x.x1=y,x.y1=b;return}for(var k=u[d],T=p/2+k,C=d+1,M=f-1;C>>1;u[S]b-_){var L=p?(m*A+y*R)/p:y;h(d,C,R,m,_,L,b),h(C,f,A,L,_,y,b)}else{var v=p?(_*A+b*R)/p:b;h(d,C,R,m,_,y,v),h(C,f,A,m,v,y,b)}}}function mz(t,e,r,n,i){(t.depth&1?rf:hc)(t,e,r,n,i)}const bz=function t(e){function r(n,i,a,s,o){if((l=n._squarify)&&l.ratio===e)for(var l,u,h,d,f=-1,p,m=l.length,_=n.value;++f1?n:1)},r}(Rx);function _z(t){for(var e=-1,r=t.length,n,i=t[r-1],a=0;++e1&&xz(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function wz(t){if((r=t.length)<3)return null;var e,r,n=new Array(r),i=new Array(r);for(e=0;e=0;--e)u.push(t[n[a[e]][2]]);for(e=+o;ea!=o>a&&i<(s-l)*(a-u)/(o-u)+l&&(h=!h),s=l,o=u;return h}function Ez(t){for(var e=-1,r=t.length,n=t[r-1],i,a,s=n[0],o=n[1],l=0;++e1);return n+i*o*Math.sqrt(-2*Math.log(s)/s)}}return r.source=t,r}(Ir),Az=function t(e){var r=tp.source(e);function n(){var i=r.apply(this,arguments);return function(){return Math.exp(i())}}return n.source=t,n}(Ir),Dx=function t(e){function r(n){return(n=+n)<=0?()=>0:function(){for(var i=0,a=n;a>1;--a)i+=e();return i+a*e()}}return r.source=t,r}(Ir),Mz=function t(e){var r=Dx.source(e);function n(i){if((i=+i)==0)return e;var a=r(i);return function(){return a()/i}}return n.source=t,n}(Ir),Lz=function t(e){function r(n){return function(){return-Math.log1p(-e())/n}}return r.source=t,r}(Ir),Rz=function t(e){function r(n){if((n=+n)<0)throw new RangeError("invalid alpha");return n=1/-n,function(){return Math.pow(1-e(),n)}}return r.source=t,r}(Ir),Iz=function t(e){function r(n){if((n=+n)<0||n>1)throw new RangeError("invalid p");return function(){return Math.floor(e()+n)}}return r.source=t,r}(Ir),Ox=function t(e){function r(n){if((n=+n)<0||n>1)throw new RangeError("invalid p");return n===0?()=>1/0:n===1?()=>1:(n=Math.log1p(-n),function(){return 1+Math.floor(Math.log1p(-e())/n)})}return r.source=t,r}(Ir),ep=function t(e){var r=tp.source(e)();function n(i,a){if((i=+i)<0)throw new RangeError("invalid k");if(i===0)return()=>0;if(a=a==null?1:+a,i===1)return()=>-Math.log1p(-e())*a;var s=(i<1?i+1:i)-1/3,o=1/(3*Math.sqrt(s)),l=i<1?()=>Math.pow(e(),1/i):()=>1;return function(){do{do var u=r(),h=1+o*u;while(h<=0);h*=h*h;var d=1-e()}while(d>=1-.0331*u*u*u*u&&Math.log(d)>=.5*u*u+s*(1-h+Math.log(h)));return s*h*l()*a}}return n.source=t,n}(Ir),Fx=function t(e){var r=ep.source(e);function n(i,a){var s=r(i),o=r(a);return function(){var l=s();return l===0?0:l/(l+o())}}return n.source=t,n}(Ir),Px=function t(e){var r=Ox.source(e),n=Fx.source(e);function i(a,s){return a=+a,(s=+s)>=1?()=>a:s<=0?()=>0:function(){for(var o=0,l=a,u=s;l*u>16&&l*(1-u)>16;){var h=Math.floor((l+1)*u),d=n(h,l-h+1)();d<=u?(o+=h,l-=h,u=(u-d)/(1-d)):(l=h-1,u/=d)}for(var f=u<.5,p=f?u:1-u,m=r(p),_=m(),y=0;_<=l;++y)_+=m();return o+(f?y:l-y)}}return i.source=t,i}(Ir),Nz=function t(e){function r(n,i,a){var s;return(n=+n)==0?s=o=>-Math.log(o):(n=1/n,s=o=>Math.pow(o,n)),i=i==null?0:+i,a=a==null?1:+a,function(){return i+a*s(-Math.log1p(-e()))}}return r.source=t,r}(Ir),Bz=function t(e){function r(n,i){return n=n==null?0:+n,i=i==null?1:+i,function(){return n+i*Math.tan(Math.PI*e())}}return r.source=t,r}(Ir),Dz=function t(e){function r(n,i){return n=n==null?0:+n,i=i==null?1:+i,function(){var a=e();return n+i*Math.log(a/(1-a))}}return r.source=t,r}(Ir),Oz=function t(e){var r=ep.source(e),n=Px.source(e);function i(a){return function(){for(var s=0,o=a;o>16;){var l=Math.floor(.875*o),u=r(l)();if(u>o)return s+n(l-1,o/u)();s+=l,o-=u}for(var h=-Math.log1p(-e()),d=0;h<=o;++d)h-=Math.log1p(-e());return s+d}}return i.source=t,i}(Ir),Fz=1664525,Pz=1013904223,qx=1/4294967296;function qz(t=Math.random()){let e=(0<=t&&t<1?t/qx:Math.abs(t))|0;return()=>(e=Fz*e+Pz|0,qx*(e>>>0))}function On(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function ta(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const rp=Symbol("implicit");function nf(){var t=new kl,e=[],r=[],n=rp;function i(a){let s=t.get(a);if(s===void 0){if(n!==rp)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new kl;for(const s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return nf(e,r).unknown(n)},On.apply(i,arguments),i}function np(){var t=nf().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,o=!1,l=0,u=0,h=.5;delete t.unknown;function d(){var f=e().length,p=ie&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Uz(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?Wz:Uz,l=u=null,d}function d(f){return f==null||isNaN(f=+f)?a:(l||(l=o(t.map(n),e,r)))(n(s(f)))}return d.invert=function(f){return s(i((u||(u=o(e,t.map(n),Bn)))(f)))},d.domain=function(f){return arguments.length?(t=Array.from(f,af),h()):t.slice()},d.range=function(f){return arguments.length?(e=Array.from(f),h()):e.slice()},d.rangeRound=function(f){return e=Array.from(f),r=ju,h()},d.clamp=function(f){return arguments.length?(s=f?!0:an,h()):s!==an},d.interpolate=function(f){return arguments.length?(r=f,h()):r},d.unknown=function(f){return arguments.length?(a=f,d):a},function(f,p){return n=f,i=p,h()}}function ap(){return sf()(an,an)}function Yx(t,e,r,n){var i=wl(t,e,r),a;switch(n=Co(n==null?",f":n),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=Jv(i,s))&&(n.precision=a),Jd(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=t6(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=Qv(i))&&(n.precision=a-(n.type==="%")*2);break}}return yh(n)}function Oa(t){var e=t.domain;return t.ticks=function(r){var n=e();return hs(n[0],n[n.length-1],r==null?10:r)},t.tickFormat=function(r,n){var i=e();return Yx(i[0],i[i.length-1],r==null?10:r,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],o=n[a],l,u,h=10;for(o0;){if(u=oo(s,o,r),u===l)return n[i]=s,n[a]=o,e(n);if(u>0)s=Math.floor(s/u)*u,o=Math.ceil(o/u)*u;else if(u<0)s=Math.ceil(s*u)/u,o=Math.floor(o*u)/u;else break;l=u}return t},t}function sp(){var t=ap();return t.copy=function(){return fc(t,sp())},On.apply(t,arguments),Oa(t)}function Ux(t){var e;function r(n){return n==null||isNaN(n=+n)?e:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(t=Array.from(n,af),r):t.slice()},r.unknown=function(n){return arguments.length?(e=n,r):e},r.copy=function(){return Ux(t).unknown(e)},t=arguments.length?Array.from(t,af):[0,1],Oa(r)}function Wx(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return aMath.pow(t,e)}function Xz(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function jx(t){return(e,r)=>-t(-e,r)}function op(t){const e=t(Hx,Gx),r=e.domain;let n=10,i,a;function s(){return i=Xz(n),a=$z(n),r()[0]<0?(i=jx(i),a=jx(a),t(Hz,Gz)):t(Hx,Gx),e}return e.base=function(o){return arguments.length?(n=+o,s()):n},e.domain=function(o){return arguments.length?(r(o),s()):r()},e.ticks=o=>{const l=r();let u=l[0],h=l[l.length-1];const d=h0){for(;f<=p;++f)for(m=1;mh)break;b.push(_)}}else for(;f<=p;++f)for(m=n-1;m>=1;--m)if(_=f>0?m/a(-f):m*a(f),!(_h)break;b.push(_)}b.length*2{if(o==null&&(o=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=Co(l)).precision==null&&(l.trim=!0),l=yh(l)),o===1/0)return l;const u=Math.max(1,n*o/e.ticks().length);return h=>{let d=h/a(Math.round(i(h)));return d*nr(Wx(r(),{floor:o=>a(Math.floor(i(o))),ceil:o=>a(Math.ceil(i(o)))})),e}function $x(){const t=op(sf()).domain([1,10]);return t.copy=()=>fc(t,$x()).base(t.base()),On.apply(t,arguments),t}function Xx(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Kx(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function lp(t){var e=1,r=t(Xx(e),Kx(e));return r.constant=function(n){return arguments.length?t(Xx(e=+n),Kx(e)):e},Oa(r)}function Zx(){var t=lp(sf());return t.copy=function(){return fc(t,Zx()).constant(t.constant())},On.apply(t,arguments)}function Qx(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Kz(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Zz(t){return t<0?-t*t:t*t}function cp(t){var e=t(an,an),r=1;function n(){return r===1?t(an,an):r===.5?t(Kz,Zz):t(Qx(r),Qx(1/r))}return e.exponent=function(i){return arguments.length?(r=+i,n()):r},Oa(e)}function up(){var t=cp(sf());return t.copy=function(){return fc(t,up()).exponent(t.exponent())},On.apply(t,arguments),t}function Qz(){return up.apply(null,arguments).exponent(.5)}function Jx(t){return Math.sign(t)*t*t}function Jz(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}function t8(){var t=ap(),e=[0,1],r=!1,n;function i(a){var s=Jz(t(a));return isNaN(s)?n:r?Math.round(s):s}return i.invert=function(a){return t.invert(Jx(a))},i.domain=function(a){return arguments.length?(t.domain(a),i):t.domain()},i.range=function(a){return arguments.length?(t.range((e=Array.from(a,af)).map(Jx)),i):e.slice()},i.rangeRound=function(a){return i.range(a).round(!0)},i.round=function(a){return arguments.length?(r=!!a,i):r},i.clamp=function(a){return arguments.length?(t.clamp(a),i):t.clamp()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return t8(t.domain(),e).round(r).clamp(t.clamp()).unknown(n)},On.apply(i,arguments),Oa(i)}function e8(){var t=[],e=[],r=[],n;function i(){var s=0,o=Math.max(1,e.length);for(r=new Array(o-1);++s0?r[o-1]:t[0],o=r?[n[r-1],e]:[n[u-1],n[u]]},s.unknown=function(l){return arguments.length&&(a=l),s},s.thresholds=function(){return n.slice()},s.copy=function(){return r8().domain([t,e]).range(i).unknown(a)},On.apply(Oa(s),arguments)}function n8(){var t=[.5],e=[0,1],r,n=1;function i(a){return a!=null&&a<=a?e[cs(t,a,0,n)]:r}return i.domain=function(a){return arguments.length?(t=Array.from(a),n=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(a){return arguments.length?(e=Array.from(a),n=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(a){var s=e.indexOf(a);return[t[s-1],t[s]]},i.unknown=function(a){return arguments.length?(r=a,i):r},i.copy=function(){return n8().domain(t).range(e).unknown(r)},On.apply(i,arguments)}var hp=new Date,fp=new Date;function xr(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=function(a){return t(a=new Date(+a)),a},i.ceil=function(a){return t(a=new Date(a-1)),e(a,1),t(a),a},i.round=function(a){var s=i(a),o=i.ceil(a);return a-s0))return l;do l.push(u=new Date(+a)),e(a,o),t(a);while(u=s)for(;t(s),!a(s);)s.setTime(s-1)},function(s,o){if(s>=s)if(o<0)for(;++o<=0;)for(;e(s,-1),!a(s););else for(;--o>=0;)for(;e(s,1),!a(s););})},r&&(i.count=function(a,s){return hp.setTime(+a),fp.setTime(+s),t(hp),t(fp),Math.floor(r(hp,fp))},i.every=function(a){return a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?function(s){return n(s)%a===0}:function(s){return i.count(0,s)%a===0}):i}),i}var of=xr(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});of.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?xr(function(e){e.setTime(Math.floor(e/t)*t)},function(e,r){e.setTime(+e+r*t)},function(e,r){return(r-e)/t}):of};const dp=of;var i8=of.range;const ea=1e3,Fn=ea*60,ra=Fn*60,Rs=ra*24,pp=Rs*7,a8=Rs*30,gp=Rs*365;var s8=xr(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*ea)},function(t,e){return(e-t)/ea},function(t){return t.getUTCSeconds()});const Fa=s8;var o8=s8.range,l8=xr(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*ea)},function(t,e){t.setTime(+t+e*Fn)},function(t,e){return(e-t)/Fn},function(t){return t.getMinutes()});const yp=l8;var tY=l8.range,c8=xr(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*ea-t.getMinutes()*Fn)},function(t,e){t.setTime(+t+e*ra)},function(t,e){return(e-t)/ra},function(t){return t.getHours()});const mp=c8;var eY=c8.range,u8=xr(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Fn)/Rs,t=>t.getDate()-1);const dc=u8;var rY=u8.range;function Is(t){return xr(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,r){e.setDate(e.getDate()+r*7)},function(e,r){return(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*Fn)/pp})}var Do=Is(0),pc=Is(1),h8=Is(2),f8=Is(3),Ns=Is(4),d8=Is(5),p8=Is(6),g8=Do.range,nY=pc.range,iY=h8.range,aY=f8.range,sY=Ns.range,oY=d8.range,lY=p8.range,y8=xr(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const bp=y8;var cY=y8.range,_p=xr(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});_p.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:xr(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,r){e.setFullYear(e.getFullYear()+r*t)})};const Pa=_p;var uY=_p.range,m8=xr(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Fn)},function(t,e){return(e-t)/Fn},function(t){return t.getUTCMinutes()});const vp=m8;var hY=m8.range,b8=xr(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*ra)},function(t,e){return(e-t)/ra},function(t){return t.getUTCHours()});const xp=b8;var fY=b8.range,_8=xr(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/Rs},function(t){return t.getUTCDate()-1});const gc=_8;var dY=_8.range;function Bs(t){return xr(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,r){e.setUTCDate(e.getUTCDate()+r*7)},function(e,r){return(r-e)/pp})}var Oo=Bs(0),yc=Bs(1),v8=Bs(2),x8=Bs(3),Ds=Bs(4),k8=Bs(5),w8=Bs(6),T8=Oo.range,pY=yc.range,gY=v8.range,yY=x8.range,mY=Ds.range,bY=k8.range,_Y=w8.range,E8=xr(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const kp=E8;var vY=E8.range,wp=xr(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});wp.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:xr(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})};const qa=wp;var xY=wp.range;function C8(t,e,r,n,i,a){const s=[[Fa,1,ea],[Fa,5,5*ea],[Fa,15,15*ea],[Fa,30,30*ea],[a,1,Fn],[a,5,5*Fn],[a,15,15*Fn],[a,30,30*Fn],[i,1,ra],[i,3,3*ra],[i,6,6*ra],[i,12,12*ra],[n,1,Rs],[n,2,2*Rs],[r,1,pp],[e,1,a8],[e,3,3*a8],[t,1,gp]];function o(u,h,d){const f=hy).right(s,f);if(p===s.length)return t.every(wl(u/gp,h/gp,d));if(p===0)return dp.every(Math.max(wl(u,h,d),1));const[m,_]=s[f/s[p-1][2]53)return null;"w"in U||(U.w=1),"Z"in U?(j=Ep(mc(U.y,0,1)),P=j.getUTCDay(),j=P>4||P===0?yc.ceil(j):yc(j),j=gc.offset(j,(U.V-1)*7),U.y=j.getUTCFullYear(),U.m=j.getUTCMonth(),U.d=j.getUTCDate()+(U.w+6)%7):(j=Tp(mc(U.y,0,1)),P=j.getDay(),j=P>4||P===0?pc.ceil(j):pc(j),j=dc.offset(j,(U.V-1)*7),U.y=j.getFullYear(),U.m=j.getMonth(),U.d=j.getDate()+(U.w+6)%7)}else("W"in U||"U"in U)&&("w"in U||(U.w="u"in U?U.u%7:"W"in U?1:0),P="Z"in U?Ep(mc(U.y,0,1)).getUTCDay():Tp(mc(U.y,0,1)).getDay(),U.m=0,U.d="W"in U?(U.w+6)%7+U.W*7-(P+5)%7:U.w+U.U*7-(P+6)%7);return"Z"in U?(U.H+=U.Z/100|0,U.M+=U.Z%100,Ep(U)):Tp(U)}}function R(V,Q,q,U){for(var F=0,j=Q.length,P=q.length,et,at;F=P)return-1;if(et=Q.charCodeAt(F++),et===37){if(et=Q.charAt(F++),at=C[et in I8?Q.charAt(F++):et],!at||(U=at(V,q,U))<0)return-1}else if(et!=q.charCodeAt(U++))return-1}return U}function A(V,Q,q){var U=u.exec(Q.slice(q));return U?(V.p=h.get(U[0].toLowerCase()),q+U[0].length):-1}function L(V,Q,q){var U=p.exec(Q.slice(q));return U?(V.w=m.get(U[0].toLowerCase()),q+U[0].length):-1}function v(V,Q,q){var U=d.exec(Q.slice(q));return U?(V.w=f.get(U[0].toLowerCase()),q+U[0].length):-1}function B(V,Q,q){var U=b.exec(Q.slice(q));return U?(V.m=x.get(U[0].toLowerCase()),q+U[0].length):-1}function w(V,Q,q){var U=_.exec(Q.slice(q));return U?(V.m=y.get(U[0].toLowerCase()),q+U[0].length):-1}function D(V,Q,q){return R(V,e,Q,q)}function N(V,Q,q){return R(V,r,Q,q)}function z(V,Q,q){return R(V,n,Q,q)}function X(V){return s[V.getDay()]}function ct(V){return a[V.getDay()]}function J(V){return l[V.getMonth()]}function Y(V){return o[V.getMonth()]}function $(V){return i[+(V.getHours()>=12)]}function lt(V){return 1+~~(V.getMonth()/3)}function ut(V){return s[V.getUTCDay()]}function W(V){return a[V.getUTCDay()]}function tt(V){return l[V.getUTCMonth()]}function K(V){return o[V.getUTCMonth()]}function it(V){return i[+(V.getUTCHours()>=12)]}function Z(V){return 1+~~(V.getUTCMonth()/3)}return{format:function(V){var Q=M(V+="",k);return Q.toString=function(){return V},Q},parse:function(V){var Q=S(V+="",!1);return Q.toString=function(){return V},Q},utcFormat:function(V){var Q=M(V+="",T);return Q.toString=function(){return V},Q},utcParse:function(V){var Q=S(V+="",!0);return Q.toString=function(){return V},Q}}}var I8={"-":"",_:" ",0:"0"},Ar=/^\s*\d+/,kY=/^%/,wY=/[\\^$*+?|[\]().{}]/g;function Oe(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function EY(t,e,r){var n=Ar.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function CY(t,e,r){var n=Ar.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function SY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function AY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function MY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function N8(t,e,r){var n=Ar.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function B8(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function LY(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function RY(t,e,r){var n=Ar.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function IY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function D8(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function NY(t,e,r){var n=Ar.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function O8(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function BY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function DY(t,e,r){var n=Ar.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function OY(t,e,r){var n=Ar.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function FY(t,e,r){var n=Ar.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function PY(t,e,r){var n=kY.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function qY(t,e,r){var n=Ar.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function VY(t,e,r){var n=Ar.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function F8(t,e){return Oe(t.getDate(),e,2)}function zY(t,e){return Oe(t.getHours(),e,2)}function YY(t,e){return Oe(t.getHours()%12||12,e,2)}function UY(t,e){return Oe(1+dc.count(Pa(t),t),e,3)}function P8(t,e){return Oe(t.getMilliseconds(),e,3)}function WY(t,e){return P8(t,e)+"000"}function HY(t,e){return Oe(t.getMonth()+1,e,2)}function GY(t,e){return Oe(t.getMinutes(),e,2)}function jY(t,e){return Oe(t.getSeconds(),e,2)}function $Y(t){var e=t.getDay();return e===0?7:e}function XY(t,e){return Oe(Do.count(Pa(t)-1,t),e,2)}function q8(t){var e=t.getDay();return e>=4||e===0?Ns(t):Ns.ceil(t)}function KY(t,e){return t=q8(t),Oe(Ns.count(Pa(t),t)+(Pa(t).getDay()===4),e,2)}function ZY(t){return t.getDay()}function QY(t,e){return Oe(pc.count(Pa(t)-1,t),e,2)}function JY(t,e){return Oe(t.getFullYear()%100,e,2)}function tU(t,e){return t=q8(t),Oe(t.getFullYear()%100,e,2)}function eU(t,e){return Oe(t.getFullYear()%1e4,e,4)}function rU(t,e){var r=t.getDay();return t=r>=4||r===0?Ns(t):Ns.ceil(t),Oe(t.getFullYear()%1e4,e,4)}function nU(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Oe(e/60|0,"0",2)+Oe(e%60,"0",2)}function V8(t,e){return Oe(t.getUTCDate(),e,2)}function iU(t,e){return Oe(t.getUTCHours(),e,2)}function aU(t,e){return Oe(t.getUTCHours()%12||12,e,2)}function sU(t,e){return Oe(1+gc.count(qa(t),t),e,3)}function z8(t,e){return Oe(t.getUTCMilliseconds(),e,3)}function oU(t,e){return z8(t,e)+"000"}function lU(t,e){return Oe(t.getUTCMonth()+1,e,2)}function cU(t,e){return Oe(t.getUTCMinutes(),e,2)}function uU(t,e){return Oe(t.getUTCSeconds(),e,2)}function hU(t){var e=t.getUTCDay();return e===0?7:e}function fU(t,e){return Oe(Oo.count(qa(t)-1,t),e,2)}function Y8(t){var e=t.getUTCDay();return e>=4||e===0?Ds(t):Ds.ceil(t)}function dU(t,e){return t=Y8(t),Oe(Ds.count(qa(t),t)+(qa(t).getUTCDay()===4),e,2)}function pU(t){return t.getUTCDay()}function gU(t,e){return Oe(yc.count(qa(t)-1,t),e,2)}function yU(t,e){return Oe(t.getUTCFullYear()%100,e,2)}function mU(t,e){return t=Y8(t),Oe(t.getUTCFullYear()%100,e,2)}function bU(t,e){return Oe(t.getUTCFullYear()%1e4,e,4)}function _U(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Ds(t):Ds.ceil(t),Oe(t.getUTCFullYear()%1e4,e,4)}function vU(){return"+0000"}function U8(){return"%"}function W8(t){return+t}function H8(t){return Math.floor(+t/1e3)}var Fo,vc,G8,lf,Cp;j8({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function j8(t){return Fo=R8(t),vc=Fo.format,G8=Fo.parse,lf=Fo.utcFormat,Cp=Fo.utcParse,Fo}var $8="%Y-%m-%dT%H:%M:%S.%LZ";function xU(t){return t.toISOString()}var kU=Date.prototype.toISOString?xU:lf($8);const wU=kU;function TU(t){var e=new Date(t);return isNaN(e)?null:e}var EU=+new Date("2000-01-01T00:00:00.000Z")?TU:Cp($8);const CU=EU;function SU(t){return new Date(t)}function AU(t){return t instanceof Date?+t:+new Date(+t)}function Sp(t,e,r,n,i,a,s,o,l,u){var h=ap(),d=h.invert,f=h.domain,p=u(".%L"),m=u(":%S"),_=u("%I:%M"),y=u("%I %p"),b=u("%a %d"),x=u("%b %d"),k=u("%B"),T=u("%Y");function C(M){return(l(M)e(i/(t.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,a)=>Cl(t,a/n))},r.copy=function(){return J8(e).domain(t)},ta.apply(r,arguments)}function uf(){var t=0,e=.5,r=1,n=1,i,a,s,o,l,u=an,h,d=!1,f;function p(_){return isNaN(_=+_)?f:(_=.5+((_=+h(_))-a)*(n*_B5(t[t.length-1]);var n7=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Ee);const YU=We(n7);var i7=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Ee);const UU=We(i7);var a7=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Ee);const WU=We(a7);var s7=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Ee);const HU=We(s7);var o7=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Ee);const GU=We(o7);var l7=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Ee);const jU=We(l7);var c7=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Ee);const $U=We(c7);var u7=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Ee);const XU=We(u7);var h7=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Ee);const KU=We(h7);var f7=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Ee);const ZU=We(f7);var d7=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Ee);const QU=We(d7);var p7=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Ee);const JU=We(p7);var g7=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Ee);const tW=We(g7);var y7=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Ee);const eW=We(y7);var m7=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Ee);const rW=We(m7);var b7=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Ee);const nW=We(b7);var _7=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Ee);const iW=We(_7);var v7=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Ee);const aW=We(v7);var x7=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Ee);const sW=We(x7);var k7=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Ee);const oW=We(k7);var w7=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Ee);const lW=We(w7);var T7=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Ee);const cW=We(T7);var E7=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Ee);const uW=We(E7);var C7=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Ee);const hW=We(C7);var S7=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Ee);const fW=We(S7);var A7=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Ee);const dW=We(A7);var M7=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Ee);const pW=We(M7);function gW(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-t*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-t*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-t*2475.67)))))))+")"}const yW=Xu(Qn(300,.5,0),Qn(-240,.5,1));var mW=Xu(Qn(-100,.75,.35),Qn(80,1.5,.8)),bW=Xu(Qn(260,.75,.35),Qn(80,1.5,.8)),hf=Qn();function _W(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return hf.h=360*t-100,hf.s=1.5-1.5*e,hf.l=.8-.9*e,hf+""}var ff=po(),vW=Math.PI/3,xW=Math.PI*2/3;function kW(t){var e;return t=(.5-t)*Math.PI,ff.r=255*(e=Math.sin(t))*e,ff.g=255*(e=Math.sin(t+vW))*e,ff.b=255*(e=Math.sin(t+xW))*e,ff+""}function wW(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-t*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+t*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-t*6838.66)))))))+")"}function df(t){var e=t.length;return function(r){return t[Math.max(0,Math.min(e-1,Math.floor(r*e)))]}}const TW=df(Ee("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var EW=df(Ee("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),CW=df(Ee("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),SW=df(Ee("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function xe(t){return function(){return t}}const L7=Math.abs,qr=Math.atan2,na=Math.cos,AW=Math.max,Po=Math.min,gn=Math.sin,He=Math.sqrt,Vr=1e-12,za=Math.PI,pf=za/2,Ya=2*za;function MW(t){return t>1?0:t<-1?za:Math.acos(t)}function R7(t){return t>=1?pf:t<=-1?-pf:Math.asin(t)}function LW(t){return t.innerRadius}function RW(t){return t.outerRadius}function IW(t){return t.startAngle}function NW(t){return t.endAngle}function BW(t){return t&&t.padAngle}function DW(t,e,r,n,i,a,s,o){var l=r-t,u=n-e,h=s-i,d=o-a,f=d*l-h*u;if(!(f*fD*D+N*N&&(R=L,A=v),{cx:R,cy:A,x01:-h,y01:-d,x11:R*(i/C-1),y11:A*(i/C-1)}}function yf(){var t=LW,e=RW,r=xe(0),n=null,i=IW,a=NW,s=BW,o=null;function l(){var u,h,d=+t.apply(this,arguments),f=+e.apply(this,arguments),p=i.apply(this,arguments)-pf,m=a.apply(this,arguments)-pf,_=L7(m-p),y=m>p;if(o||(o=u=Ra()),fVr))o.moveTo(0,0);else if(_>Ya-Vr)o.moveTo(f*na(p),f*gn(p)),o.arc(0,0,f,p,m,!y),d>Vr&&(o.moveTo(d*na(m),d*gn(m)),o.arc(0,0,d,m,p,y));else{var b=p,x=m,k=p,T=m,C=_,M=_,S=s.apply(this,arguments)/2,R=S>Vr&&(n?+n.apply(this,arguments):He(d*d+f*f)),A=Po(L7(f-d)/2,+r.apply(this,arguments)),L=A,v=A,B,w;if(R>Vr){var D=R7(R/d*gn(S)),N=R7(R/f*gn(S));(C-=D*2)>Vr?(D*=y?1:-1,k+=D,T-=D):(C=0,k=T=(p+m)/2),(M-=N*2)>Vr?(N*=y?1:-1,b+=N,x-=N):(M=0,b=x=(p+m)/2)}var z=f*na(b),X=f*gn(b),ct=d*na(T),J=d*gn(T);if(A>Vr){var Y=f*na(x),$=f*gn(x),lt=d*na(k),ut=d*gn(k),W;if(_Vr?v>Vr?(B=gf(lt,ut,z,X,f,v,y),w=gf(Y,$,ct,J,f,v,y),o.moveTo(B.cx+B.x01,B.cy+B.y01),vVr)||!(C>Vr)?o.lineTo(ct,J):L>Vr?(B=gf(ct,J,Y,$,d,-L,y),w=gf(z,X,lt,ut,d,-L,y),o.lineTo(B.cx+B.x01,B.cy+B.y01),L=f;--p)o.point(x[p],k[p]);o.lineEnd(),o.areaEnd()}y&&(x[d]=+t(_,d,h),k[d]=+e(_,d,h),o.point(n?+n(_,d,h):x[d],r?+r(_,d,h):k[d]))}if(b)return o=null,b+""||null}function u(){return Ua().defined(i).curve(s).context(a)}return l.x=function(h){return arguments.length?(t=typeof h=="function"?h:xe(+h),n=null,l):t},l.x0=function(h){return arguments.length?(t=typeof h=="function"?h:xe(+h),l):t},l.x1=function(h){return arguments.length?(n=h==null?null:typeof h=="function"?h:xe(+h),l):n},l.y=function(h){return arguments.length?(e=typeof h=="function"?h:xe(+h),r=null,l):e},l.y0=function(h){return arguments.length?(e=typeof h=="function"?h:xe(+h),l):e},l.y1=function(h){return arguments.length?(r=h==null?null:typeof h=="function"?h:xe(+h),l):r},l.lineX0=l.lineY0=function(){return u().x(t).y(e)},l.lineY1=function(){return u().x(t).y(r)},l.lineX1=function(){return u().x(n).y(e)},l.defined=function(h){return arguments.length?(i=typeof h=="function"?h:xe(!!h),l):i},l.curve=function(h){return arguments.length?(s=h,a!=null&&(o=s(a)),l):s},l.context=function(h){return arguments.length?(h==null?a=o=null:o=s(a=h),l):a},l}function FW(t,e){return et?1:e>=t?0:NaN}function PW(t){return t}function B7(){var t=PW,e=FW,r=null,n=xe(0),i=xe(Ya),a=xe(0);function s(o){var l,u=(o=mf(o)).length,h,d,f=0,p=new Array(u),m=new Array(u),_=+n.apply(this,arguments),y=Math.min(Ya,Math.max(-Ya,i.apply(this,arguments)-_)),b,x=Math.min(Math.abs(y)/u,a.apply(this,arguments)),k=x*(y<0?-1:1),T;for(l=0;l0&&(f+=T);for(e!=null?p.sort(function(C,M){return e(m[C],m[M])}):r!=null&&p.sort(function(C,M){return r(o[C],o[M])}),l=0,d=f?(y-u*k)/f:0;l0?T*d:0)+k,m[h]={data:o[h],index:l,value:T,startAngle:_,endAngle:b,padAngle:x};return m}return s.value=function(o){return arguments.length?(t=typeof o=="function"?o:xe(+o),s):t},s.sortValues=function(o){return arguments.length?(e=o,r=null,s):e},s.sort=function(o){return arguments.length?(r=o,e=null,s):r},s.startAngle=function(o){return arguments.length?(n=typeof o=="function"?o:xe(+o),s):n},s.endAngle=function(o){return arguments.length?(i=typeof o=="function"?o:xe(+o),s):i},s.padAngle=function(o){return arguments.length?(a=typeof o=="function"?o:xe(+o),s):a},s}var D7=Ip(yn);function O7(t){this._curve=t}O7.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};function Ip(t){function e(r){return new O7(t(r))}return e._curve=t,e}function xc(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(r){return arguments.length?e(Ip(r)):e()._curve},t}function F7(){return xc(Ua().curve(D7))}function P7(){var t=N7().curve(D7),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return xc(r())},delete t.lineX0,t.lineEndAngle=function(){return xc(n())},delete t.lineX1,t.lineInnerRadius=function(){return xc(i())},delete t.lineY0,t.lineOuterRadius=function(){return xc(a())},delete t.lineY1,t.curve=function(s){return arguments.length?e(Ip(s)):e()._curve},t}function kc(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}class q7{constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}}class qW{constructor(e){this._context=e}lineStart(){this._point=0}lineEnd(){}point(e,r){if(e=+e,r=+r,this._point++===0)this._x0=e,this._y0=r;else{const n=kc(this._x0,this._y0),i=kc(this._x0,this._y0=(this._y0+r)/2),a=kc(e,this._y0),s=kc(e,r);this._context.moveTo(...n),this._context.bezierCurveTo(...i,...a,...s)}}}function V7(t){return new q7(t,!0)}function z7(t){return new q7(t,!1)}function VW(t){return new qW(t)}function zW(t){return t.source}function YW(t){return t.target}function bf(t){let e=zW,r=YW,n=Lp,i=Rp,a=null,s=null;function o(){let l;const u=OW.call(arguments),h=e.apply(this,u),d=r.apply(this,u);if(a==null&&(s=t(l=Ra())),s.lineStart(),u[0]=h,s.point(+n.apply(this,u),+i.apply(this,u)),u[0]=d,s.point(+n.apply(this,u),+i.apply(this,u)),s.lineEnd(),l)return s=null,l+""||null}return o.source=function(l){return arguments.length?(e=l,o):e},o.target=function(l){return arguments.length?(r=l,o):r},o.x=function(l){return arguments.length?(n=typeof l=="function"?l:xe(+l),o):n},o.y=function(l){return arguments.length?(i=typeof l=="function"?l:xe(+l),o):i},o.context=function(l){return arguments.length?(l==null?a=s=null:s=t(a=l),o):a},o}function UW(){return bf(V7)}function WW(){return bf(z7)}function HW(){const t=bf(VW);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}const GW=He(3),Y7={draw(t,e){const r=He(e+Po(e/28,.75))*.59436,n=r/2,i=n*GW;t.moveTo(0,r),t.lineTo(0,-r),t.moveTo(-i,-n),t.lineTo(i,n),t.moveTo(-i,n),t.lineTo(i,-n)}},_f={draw(t,e){const r=He(e/za);t.moveTo(r,0),t.arc(0,0,r,0,Ya)}},U7={draw(t,e){const r=He(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},W7=He(1/3),jW=W7*2,H7={draw(t,e){const r=He(e/jW),n=r*W7;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},G7={draw(t,e){const r=He(e)*.62625;t.moveTo(0,-r),t.lineTo(r,0),t.lineTo(0,r),t.lineTo(-r,0),t.closePath()}},j7={draw(t,e){const r=He(e-Po(e/7,2))*.87559;t.moveTo(-r,0),t.lineTo(r,0),t.moveTo(0,r),t.lineTo(0,-r)}},$7={draw(t,e){const r=He(e),n=-r/2;t.rect(n,n,r,r)}},X7={draw(t,e){const r=He(e)*.4431;t.moveTo(r,r),t.lineTo(r,-r),t.lineTo(-r,-r),t.lineTo(-r,r),t.closePath()}},$W=.8908130915292852,K7=gn(za/10)/gn(7*za/10),XW=gn(Ya/10)*K7,KW=-na(Ya/10)*K7,Z7={draw(t,e){const r=He(e*$W),n=XW*r,i=KW*r;t.moveTo(0,-r),t.lineTo(n,i);for(let a=1;a<5;++a){const s=Ya*a/5,o=na(s),l=gn(s);t.lineTo(l*r,-o*r),t.lineTo(o*n-l*i,l*n+o*i)}t.closePath()}},Np=He(3),Q7={draw(t,e){const r=-He(e/(Np*3));t.moveTo(0,r*2),t.lineTo(-Np*r,-r),t.lineTo(Np*r,-r),t.closePath()}},ZW=He(3),J7={draw(t,e){const r=He(e)*.6824,n=r/2,i=r*ZW/2;t.moveTo(0,-r),t.lineTo(i,n),t.lineTo(-i,n),t.closePath()}},Pn=-.5,qn=He(3)/2,Bp=1/He(12),QW=(Bp/2+1)*3,tk={draw(t,e){const r=He(e/QW),n=r/2,i=r*Bp,a=n,s=r*Bp+r,o=-a,l=s;t.moveTo(n,i),t.lineTo(a,s),t.lineTo(o,l),t.lineTo(Pn*n-qn*i,qn*n+Pn*i),t.lineTo(Pn*a-qn*s,qn*a+Pn*s),t.lineTo(Pn*o-qn*l,qn*o+Pn*l),t.lineTo(Pn*n+qn*i,Pn*i-qn*n),t.lineTo(Pn*a+qn*s,Pn*s-qn*a),t.lineTo(Pn*o+qn*l,Pn*l-qn*o),t.closePath()}},ek={draw(t,e){const r=He(e-Po(e/6,1.7))*.6189;t.moveTo(-r,-r),t.lineTo(r,r),t.moveTo(-r,r),t.lineTo(r,-r)}},rk=[_f,U7,H7,$7,Z7,Q7,tk],JW=[_f,j7,ek,J7,Y7,X7,G7];function tH(t,e){let r=null;t=typeof t=="function"?t:xe(t||_f),e=typeof e=="function"?e:xe(e===void 0?64:+e);function n(){let i;if(r||(r=i=Ra()),t.apply(this,arguments).draw(r,+e.apply(this,arguments)),i)return r=null,i+""||null}return n.type=function(i){return arguments.length?(t=typeof i=="function"?i:xe(i),n):t},n.size=function(i){return arguments.length?(e=typeof i=="function"?i:xe(+i),n):e},n.context=function(i){return arguments.length?(r=i==null?null:i,n):r},n}function Wa(){}function vf(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function xf(t){this._context=t}xf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:vf(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:vf(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Os(t){return new xf(t)}function nk(t){this._context=t}nk.prototype={areaStart:Wa,areaEnd:Wa,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:vf(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function ik(t){return new nk(t)}function ak(t){this._context=t}ak.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:vf(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function sk(t){return new ak(t)}function ok(t,e){this._basis=new xf(t),this._beta=e}ok.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,o=-1,l;++o<=r;)l=o/r,this._basis.point(this._beta*t[o]+(1-this._beta)*(n+l*a),this._beta*e[o]+(1-this._beta)*(i+l*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const eH=function t(e){function r(n){return e===1?new xf(n):new ok(n,e)}return r.beta=function(n){return t(+n)},r}(.85);function kf(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Dp(t,e){this._context=t,this._k=(1-e)/6}Dp.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:kf(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:kf(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const rH=function t(e){function r(n){return new Dp(n,e)}return r.tension=function(n){return t(+n)},r}(0);function Op(t,e){this._context=t,this._k=(1-e)/6}Op.prototype={areaStart:Wa,areaEnd:Wa,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:kf(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const nH=function t(e){function r(n){return new Op(n,e)}return r.tension=function(n){return t(+n)},r}(0);function Fp(t,e){this._context=t,this._k=(1-e)/6}Fp.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:kf(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const iH=function t(e){function r(n){return new Fp(n,e)}return r.tension=function(n){return t(+n)},r}(0);function Pp(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Vr){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Vr){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/h,s=(s*u+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function lk(t,e){this._context=t,this._alpha=e}lk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Pp(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const aH=function t(e){function r(n){return e?new lk(n,e):new Dp(n,0)}return r.alpha=function(n){return t(+n)},r}(.5);function ck(t,e){this._context=t,this._alpha=e}ck.prototype={areaStart:Wa,areaEnd:Wa,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Pp(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const sH=function t(e){function r(n){return e?new ck(n,e):new Op(n,0)}return r.alpha=function(n){return t(+n)},r}(.5);function uk(t,e){this._context=t,this._alpha=e}uk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Pp(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const oH=function t(e){function r(n){return e?new uk(n,e):new Fp(n,0)}return r.alpha=function(n){return t(+n)},r}(.5);function hk(t){this._context=t}hk.prototype={areaStart:Wa,areaEnd:Wa,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function fk(t){return new hk(t)}function dk(t){return t<0?-1:1}function pk(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),o=(a*i+s*n)/(n+i);return(dk(a)+dk(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function gk(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function qp(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,o=(a-n)/3;t._context.bezierCurveTo(n+o,i+o*e,a-o,s-o*r,a,s)}function wf(t){this._context=t}wf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:qp(this,this._t0,gk(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,qp(this,gk(this,r=pk(this,t,e)),r);break;default:qp(this,this._t0,r=pk(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};function yk(t){this._context=new mk(t)}(yk.prototype=Object.create(wf.prototype)).point=function(t,e){wf.prototype.point.call(this,e,t)};function mk(t){this._context=t}mk.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)}};function bk(t){return new wf(t)}function _k(t){return new yk(t)}function vk(t){this._context=t}vk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=xk(t),i=xk(e),a=0,s=1;s=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e}};function wk(t){return new Tf(t,.5)}function Tk(t){return new Tf(t,0)}function Ek(t){return new Tf(t,1)}function qo(t,e){if((s=t.length)>1)for(var r=1,n,i,a=t[e[0]],s,o=a.length;r=0;)r[e]=e;return r}function lH(t,e){return t[e]}function cH(t){const e=[];return e.key=t,e}function uH(){var t=xe([]),e=Vo,r=qo,n=lH;function i(a){var s=Array.from(t.apply(this,arguments),cH),o,l=s.length,u=-1,h;for(const d of a)for(o=0,++u;o0){for(var r,n,i=0,a=t[0].length,s;i0)for(var r,n=0,i,a,s,o,l,u=t[e[0]].length;n0?(i[0]=s,i[1]=s+=a):a<0?(i[1]=o,i[0]=o+=a):(i[0]=0,i[1]=a)}function dH(t,e){if((i=t.length)>0){for(var r=0,n=t[e[0]],i,a=n.length;r0)||!((a=(i=t[e[0]]).length)>0))){for(var r=0,n=1,i,a,s;na&&(a=i,r=e);return r}function Sk(t){var e=t.map(Ak);return Vo(t).sort(function(r,n){return e[r]-e[n]})}function Ak(t){for(var e=0,r=-1,n=t.length,i;++r()=>t;function _H(t,{sourceEvent:e,target:r,transform:n,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:i}})}function Ri(t,e,r){this.k=t,this.x=e,this.y=r}Ri.prototype={constructor:Ri,scale:function(t){return t===1?this:new Ri(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Ri(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Cf=new Ri(1,0,0);Mk.prototype=Ri.prototype;function Mk(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Cf;return t.__zoom}function Vp(t){t.stopImmediatePropagation()}function wc(t){t.preventDefault(),t.stopImmediatePropagation()}function vH(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function xH(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function Lk(){return this.__zoom||Cf}function kH(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function wH(){return navigator.maxTouchPoints||"ontouchstart"in this}function TH(t,e,r){var n=t.invertX(e[0][0])-r[0][0],i=t.invertX(e[1][0])-r[1][0],a=t.invertY(e[0][1])-r[0][1],s=t.invertY(e[1][1])-r[1][1];return t.translate(i>n?(n+i)/2:Math.min(0,n)||Math.max(0,i),s>a?(a+s)/2:Math.min(0,a)||Math.max(0,s))}function EH(){var t=vH,e=xH,r=TH,n=kH,i=wH,a=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],o=250,l=H5,u=fs("start","zoom","end"),h,d,f,p=500,m=150,_=0,y=10;function b(D){D.property("__zoom",Lk).on("wheel.zoom",R,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",L).filter(i).on("touchstart.zoom",v).on("touchmove.zoom",B).on("touchend.zoom touchcancel.zoom",w).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}b.transform=function(D,N,z,X){var ct=D.selection?D.selection():D;ct.property("__zoom",Lk),D!==ct?C(D,N,z,X):ct.interrupt().each(function(){M(this,arguments).event(X).start().zoom(null,typeof N=="function"?N.apply(this,arguments):N).end()})},b.scaleBy=function(D,N,z,X){b.scaleTo(D,function(){var ct=this.__zoom.k,J=typeof N=="function"?N.apply(this,arguments):N;return ct*J},z,X)},b.scaleTo=function(D,N,z,X){b.transform(D,function(){var ct=e.apply(this,arguments),J=this.__zoom,Y=z==null?T(ct):typeof z=="function"?z.apply(this,arguments):z,$=J.invert(Y),lt=typeof N=="function"?N.apply(this,arguments):N;return r(k(x(J,lt),Y,$),ct,s)},z,X)},b.translateBy=function(D,N,z,X){b.transform(D,function(){return r(this.__zoom.translate(typeof N=="function"?N.apply(this,arguments):N,typeof z=="function"?z.apply(this,arguments):z),e.apply(this,arguments),s)},null,X)},b.translateTo=function(D,N,z,X,ct){b.transform(D,function(){var J=e.apply(this,arguments),Y=this.__zoom,$=X==null?T(J):typeof X=="function"?X.apply(this,arguments):X;return r(Cf.translate($[0],$[1]).scale(Y.k).translate(typeof N=="function"?-N.apply(this,arguments):-N,typeof z=="function"?-z.apply(this,arguments):-z),J,s)},X,ct)};function x(D,N){return N=Math.max(a[0],Math.min(a[1],N)),N===D.k?D:new Ri(N,D.x,D.y)}function k(D,N,z){var X=N[0]-z[0]*D.k,ct=N[1]-z[1]*D.k;return X===D.x&&ct===D.y?D:new Ri(D.k,X,ct)}function T(D){return[(+D[0][0]+ +D[1][0])/2,(+D[0][1]+ +D[1][1])/2]}function C(D,N,z,X){D.on("start.zoom",function(){M(this,arguments).event(X).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(X).end()}).tween("zoom",function(){var ct=this,J=arguments,Y=M(ct,J).event(X),$=e.apply(ct,J),lt=z==null?T($):typeof z=="function"?z.apply(ct,J):z,ut=Math.max($[1][0]-$[0][0],$[1][1]-$[0][1]),W=ct.__zoom,tt=typeof N=="function"?N.apply(ct,J):N,K=l(W.invert(lt).concat(ut/W.k),tt.invert(lt).concat(ut/tt.k));return function(it){if(it===1)it=tt;else{var Z=K(it),V=ut/Z[2];it=new Ri(V,lt[0]-Z[0]*V,lt[1]-Z[1]*V)}Y.zoom(null,it)}})}function M(D,N,z){return!z&&D.__zooming||new S(D,N)}function S(D,N){this.that=D,this.args=N,this.active=0,this.sourceEvent=null,this.extent=e.apply(D,N),this.taps=0}S.prototype={event:function(D){return D&&(this.sourceEvent=D),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(D,N){return this.mouse&&D!=="mouse"&&(this.mouse[1]=N.invert(this.mouse[0])),this.touch0&&D!=="touch"&&(this.touch0[1]=N.invert(this.touch0[0])),this.touch1&&D!=="touch"&&(this.touch1[1]=N.invert(this.touch1[0])),this.that.__zoom=N,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(D){var N=St(this.that).datum();u.call(D,this.that,new _H(D,{sourceEvent:this.sourceEvent,target:b,type:D,transform:this.that.__zoom,dispatch:u}),N)}};function R(D,...N){if(!t.apply(this,arguments))return;var z=M(this,N).event(D),X=this.__zoom,ct=Math.max(a[0],Math.min(a[1],X.k*Math.pow(2,n.apply(this,arguments)))),J=Tn(D);if(z.wheel)(z.mouse[0][0]!==J[0]||z.mouse[0][1]!==J[1])&&(z.mouse[1]=X.invert(z.mouse[0]=J)),clearTimeout(z.wheel);else{if(X.k===ct)return;z.mouse=[J,X.invert(J)],vs(this),z.start()}wc(D),z.wheel=setTimeout(Y,m),z.zoom("mouse",r(k(x(X,ct),z.mouse[0],z.mouse[1]),z.extent,s));function Y(){z.wheel=null,z.end()}}function A(D,...N){if(f||!t.apply(this,arguments))return;var z=D.currentTarget,X=M(this,N,!0).event(D),ct=St(D.view).on("mousemove.zoom",lt,!0).on("mouseup.zoom",ut,!0),J=Tn(D,z),Y=D.clientX,$=D.clientY;Bu(D.view),Vp(D),X.mouse=[J,this.__zoom.invert(J)],vs(this),X.start();function lt(W){if(wc(W),!X.moved){var tt=W.clientX-Y,K=W.clientY-$;X.moved=tt*tt+K*K>_}X.event(W).zoom("mouse",r(k(X.that.__zoom,X.mouse[0]=Tn(W,z),X.mouse[1]),X.extent,s))}function ut(W){ct.on("mousemove.zoom mouseup.zoom",null),Du(W.view,X.moved),wc(W),X.event(W).end()}}function L(D,...N){if(!!t.apply(this,arguments)){var z=this.__zoom,X=Tn(D.changedTouches?D.changedTouches[0]:D,this),ct=z.invert(X),J=z.k*(D.shiftKey?.5:2),Y=r(k(x(z,J),X,ct),e.apply(this,N),s);wc(D),o>0?St(this).transition().duration(o).call(C,Y,X,D):St(this).call(b.transform,Y,X,D)}}function v(D,...N){if(!!t.apply(this,arguments)){var z=D.touches,X=z.length,ct=M(this,N,D.changedTouches.length===X).event(D),J,Y,$,lt;for(Vp(D),Y=0;Y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Sf(t,e,r){return SH()?Sf=Reflect.construct:Sf=function(i,a,s){var o=[null];o.push.apply(o,a);var l=Function.bind.apply(i,o),u=new l;return s&&zp(u,s.prototype),u},Sf.apply(null,arguments)}function ni(t){return AH(t)||MH(t)||LH(t)||RH()}function AH(t){if(Array.isArray(t))return Yp(t)}function MH(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function LH(t,e){if(!!t){if(typeof t=="string")return Yp(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Yp(t,e)}}function Yp(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1?r-1:0),i=1;i/gm),GH=Ii(/^data-[\-\w.\u00B7-\uFFFF]/),jH=Ii(/^aria-[\-\w]+$/),$H=Ii(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),XH=Ii(/^(?:\w+script|data):/i),KH=Ii(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ZH=Ii(/^html$/i),QH=function(){return typeof window>"u"?null:window},JH=function(e,r){if(Ha(e)!=="object"||typeof e.createPolicy!="function")return null;var n=null,i="data-tt-policy-suffix";r.currentScript&&r.currentScript.hasAttribute(i)&&(n=r.currentScript.getAttribute(i));var a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML:function(o){return o},createScriptURL:function(o){return o}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function Pk(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:QH(),e=function(st){return Pk(st)};if(e.version="2.4.0",e.removed=[],!t||!t.document||t.document.nodeType!==9)return e.isSupported=!1,e;var r=t.document,n=t.document,i=t.DocumentFragment,a=t.HTMLTemplateElement,s=t.Node,o=t.Element,l=t.NodeFilter,u=t.NamedNodeMap,h=u===void 0?t.NamedNodeMap||t.MozNamedAttrMap:u,d=t.HTMLFormElement,f=t.DOMParser,p=t.trustedTypes,m=o.prototype,_=Lf(m,"cloneNode"),y=Lf(m,"nextSibling"),b=Lf(m,"childNodes"),x=Lf(m,"parentNode");if(typeof a=="function"){var k=n.createElement("template");k.content&&k.content.ownerDocument&&(n=k.content.ownerDocument)}var T=JH(p,r),C=T?T.createHTML(""):"",M=n,S=M.implementation,R=M.createNodeIterator,A=M.createDocumentFragment,L=M.getElementsByTagName,v=r.importNode,B={};try{B=Fs(n).documentMode?n.documentMode:{}}catch{}var w={};e.isSupported=typeof x=="function"&&S&&typeof S.createHTMLDocument<"u"&&B!==9;var D=WH,N=HH,z=GH,X=jH,ct=XH,J=KH,Y=$H,$=null,lt=Me({},[].concat(ni(Bk),ni(Hp),ni(Gp),ni(jp),ni(Dk))),ut=null,W=Me({},[].concat(ni(Ok),ni($p),ni(Fk),ni(Rf))),tt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),K=null,it=null,Z=!0,V=!0,Q=!1,q=!1,U=!1,F=!1,j=!1,P=!1,et=!1,at=!1,It=!0,Lt=!1,Rt="user-content-",Ct=!0,pt=!1,mt={},vt=null,Tt=Me({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ft=null,le=Me({},["audio","video","img","source","image","track"]),Dt=null,Gt=Me({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),$t="http://www.w3.org/1998/Math/MathML",Qt="http://www.w3.org/2000/svg",we="http://www.w3.org/1999/xhtml",jt=we,Ft=!1,zt,wt=["application/xhtml+xml","text/html"],bt="text/html",Et,kt=null,Ut=n.createElement("form"),gt=function(st){return st instanceof RegExp||st instanceof Function},he=function(st){kt&&kt===st||((!st||Ha(st)!=="object")&&(st={}),st=Fs(st),zt=wt.indexOf(st.PARSER_MEDIA_TYPE)===-1?zt=bt:zt=st.PARSER_MEDIA_TYPE,Et=zt==="application/xhtml+xml"?function(At){return At}:Mf,$="ALLOWED_TAGS"in st?Me({},st.ALLOWED_TAGS,Et):lt,ut="ALLOWED_ATTR"in st?Me({},st.ALLOWED_ATTR,Et):W,Dt="ADD_URI_SAFE_ATTR"in st?Me(Fs(Gt),st.ADD_URI_SAFE_ATTR,Et):Gt,ft="ADD_DATA_URI_TAGS"in st?Me(Fs(le),st.ADD_DATA_URI_TAGS,Et):le,vt="FORBID_CONTENTS"in st?Me({},st.FORBID_CONTENTS,Et):Tt,K="FORBID_TAGS"in st?Me({},st.FORBID_TAGS,Et):{},it="FORBID_ATTR"in st?Me({},st.FORBID_ATTR,Et):{},mt="USE_PROFILES"in st?st.USE_PROFILES:!1,Z=st.ALLOW_ARIA_ATTR!==!1,V=st.ALLOW_DATA_ATTR!==!1,Q=st.ALLOW_UNKNOWN_PROTOCOLS||!1,q=st.SAFE_FOR_TEMPLATES||!1,U=st.WHOLE_DOCUMENT||!1,P=st.RETURN_DOM||!1,et=st.RETURN_DOM_FRAGMENT||!1,at=st.RETURN_TRUSTED_TYPE||!1,j=st.FORCE_BODY||!1,It=st.SANITIZE_DOM!==!1,Lt=st.SANITIZE_NAMED_PROPS||!1,Ct=st.KEEP_CONTENT!==!1,pt=st.IN_PLACE||!1,Y=st.ALLOWED_URI_REGEXP||Y,jt=st.NAMESPACE||we,st.CUSTOM_ELEMENT_HANDLING&>(st.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(tt.tagNameCheck=st.CUSTOM_ELEMENT_HANDLING.tagNameCheck),st.CUSTOM_ELEMENT_HANDLING&>(st.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(tt.attributeNameCheck=st.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),st.CUSTOM_ELEMENT_HANDLING&&typeof st.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(tt.allowCustomizedBuiltInElements=st.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),q&&(V=!1),et&&(P=!0),mt&&($=Me({},ni(Dk)),ut=[],mt.html===!0&&(Me($,Bk),Me(ut,Ok)),mt.svg===!0&&(Me($,Hp),Me(ut,$p),Me(ut,Rf)),mt.svgFilters===!0&&(Me($,Gp),Me(ut,$p),Me(ut,Rf)),mt.mathMl===!0&&(Me($,jp),Me(ut,Fk),Me(ut,Rf))),st.ADD_TAGS&&($===lt&&($=Fs($)),Me($,st.ADD_TAGS,Et)),st.ADD_ATTR&&(ut===W&&(ut=Fs(ut)),Me(ut,st.ADD_ATTR,Et)),st.ADD_URI_SAFE_ATTR&&Me(Dt,st.ADD_URI_SAFE_ATTR,Et),st.FORBID_CONTENTS&&(vt===Tt&&(vt=Fs(vt)),Me(vt,st.FORBID_CONTENTS,Et)),Ct&&($["#text"]=!0),U&&Me($,["html","head","body"]),$.table&&(Me($,["tbody"]),delete K.tbody),sn&&sn(st),kt=st)},yt=Me({},["mi","mo","mn","ms","mtext"]),ne=Me({},["foreignobject","desc","title","annotation-xml"]),ve=Me({},["title","style","font","a","script"]),ye=Me({},Hp);Me(ye,Gp),Me(ye,YH);var be=Me({},jp);Me(be,UH);var Te=function(st){var At=x(st);(!At||!At.tagName)&&(At={namespaceURI:we,tagName:"template"});var Nt=Mf(st.tagName),Jt=Mf(At.tagName);return st.namespaceURI===Qt?At.namespaceURI===we?Nt==="svg":At.namespaceURI===$t?Nt==="svg"&&(Jt==="annotation-xml"||yt[Jt]):Boolean(ye[Nt]):st.namespaceURI===$t?At.namespaceURI===we?Nt==="math":At.namespaceURI===Qt?Nt==="math"&&ne[Jt]:Boolean(be[Nt]):st.namespaceURI===we?At.namespaceURI===Qt&&!ne[Jt]||At.namespaceURI===$t&&!yt[Jt]?!1:!be[Nt]&&(ve[Nt]||!ye[Nt]):!1},Wt=function(st){Tc(e.removed,{element:st});try{st.parentNode.removeChild(st)}catch{try{st.outerHTML=C}catch{st.remove()}}},se=function(st,At){try{Tc(e.removed,{attribute:At.getAttributeNode(st),from:At})}catch{Tc(e.removed,{attribute:null,from:At})}if(At.removeAttribute(st),st==="is"&&!ut[st])if(P||et)try{Wt(At)}catch{}else try{At.setAttribute(st,"")}catch{}},me=function(st){var At,Nt;if(j)st=""+st;else{var Jt=PH(st,/^[\r\n\t ]+/);Nt=Jt&&Jt[0]}zt==="application/xhtml+xml"&&(st=''+st+"");var ze=T?T.createHTML(st):st;if(jt===we)try{At=new f().parseFromString(ze,zt)}catch{}if(!At||!At.documentElement){At=S.createDocument(jt,"template",null);try{At.documentElement.innerHTML=Ft?"":ze}catch{}}var Pe=At.body||At.documentElement;return st&&Nt&&Pe.insertBefore(n.createTextNode(Nt),Pe.childNodes[0]||null),jt===we?L.call(At,U?"html":"body")[0]:U?At.documentElement:Pe},ue=function(st){return R.call(st.ownerDocument||st,st,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},_a=function(st){return st instanceof d&&(typeof st.nodeName!="string"||typeof st.textContent!="string"||typeof st.removeChild!="function"||!(st.attributes instanceof h)||typeof st.removeAttribute!="function"||typeof st.setAttribute!="function"||typeof st.namespaceURI!="string"||typeof st.insertBefore!="function")},Hr=function(st){return Ha(s)==="object"?st instanceof s:st&&Ha(st)==="object"&&typeof st.nodeType=="number"&&typeof st.nodeName=="string"},Ie=function(st,At,Nt){!w[st]||FH(w[st],function(Jt){Jt.call(e,At,Nt,kt)})},oe=function(st){var At;if(Ie("beforeSanitizeElements",st,null),_a(st)||on(/[\u0080-\uFFFF]/,st.nodeName))return Wt(st),!0;var Nt=Et(st.nodeName);if(Ie("uponSanitizeElement",st,{tagName:Nt,allowedTags:$}),st.hasChildNodes()&&!Hr(st.firstElementChild)&&(!Hr(st.content)||!Hr(st.content.firstElementChild))&&on(/<[/\w]/g,st.innerHTML)&&on(/<[/\w]/g,st.textContent)||Nt==="select"&&on(/