diff --git a/.editorconfig b/.editorconfig
index b33efbd87..1ade83fa3 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -4,5 +4,15 @@ root = true
max_line_length = 100
indent_size = 2
+[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mise.lock,mvnm,mvnw.cmd,generate-protobuf.sh,super-linter.env,.gitleaksignore}]
+max_line_length = 200
+
+[{grafana-dashboard-*.json,.editorconfig}]
+max_line_length = 300
+
[pom.xml]
+max_line_length = 110
+
+[*.py]
+# checked by black
indent_size = 4
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 505013ce1..c6485ad12 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,3 +1,4 @@
+---
version: 2
updates:
- package-ecosystem: "github-actions"
@@ -5,8 +6,10 @@ updates:
schedule:
interval: weekly
- package-ecosystem: maven
- # excluding simpleclient_archive from the update is not possible, only includes are supported
- # when we use includes, we run into https://github.com/dependabot/dependabot-core/issues/10415 -
+ # excluding simpleclient_archive from the update is not possible,
+ # only includes are supported
+ # when we use includes,
+ # we run into https://github.com/dependabot/dependabot-core/issues/10415
# even if we limit to 1 PR at a time
# therefore we just rename pom.xml in simpleclient_archive for now
# if this becomes a problem, we can move to renovate
diff --git a/.github/super-linter.env b/.github/super-linter.env
new file mode 100644
index 000000000..8d10a7d3b
--- /dev/null
+++ b/.github/super-linter.env
@@ -0,0 +1,34 @@
+FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml
+IGNORE_GITIGNORED_FILES=true
+JAVA_FILE_NAME=google_checks.xml
+# disable kubernetes linter - complains about resource limits, etc
+VALIDATE_CHECKOV=false
+VALIDATE_CSS=false
+VALIDATE_CSS_PRETTIER=false
+VALIDATE_DOCKERFILE_HADOLINT=false
+VALIDATE_GIT_COMMITLINT=false
+# done by maven
+VALIDATE_GOOGLE_JAVA_FORMAT=false
+# times out
+VALIDATE_GO_MODULES=false
+VALIDATE_HTML=false
+# done by checkstyle
+VALIDATE_JAVA=false
+# contradicting with prettier
+VALIDATE_JAVASCRIPT_STANDARD=false
+# we have many duplicate code in our codebase for demo purposes
+VALIDATE_JSCPD=false
+VALIDATE_PYTHON_PYLINT=false
+
+FIX_ENV=true
+FIX_GO=true
+FIX_JAVASCRIPT_PRETTIER=true
+FIX_JSON=true
+FIX_JSONC=true
+FIX_JSONC_PRETTIER=true
+FIX_JSON_PRETTIER=true
+FIX_MARKDOWN=true
+FIX_MARKDOWN_PRETTIER=true
+FIX_PYTHON_BLACK=true
+FIX_SHELL_SHFMT=true
+FIX_YAML_PRETTIER=true
diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml
index 334602715..c114d177a 100644
--- a/.github/workflows/acceptance-tests.yml
+++ b/.github/workflows/acceptance-tests.yml
@@ -1,10 +1,11 @@
+---
name: OpenTelemetry Acceptance Tests
on:
push:
- branches: [ "main" ]
+ branches: ["main"]
pull_request:
- branches: [ "main" ]
+ branches: ["main"]
permissions: {}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 679ce1752..09cfd7e15 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,10 +1,11 @@
+---
name: Build
on:
push:
- branches: [ "main" ]
+ branches: ["main"]
pull_request:
- branches: [ "main" ]
+ branches: ["main"]
permissions: {}
@@ -25,4 +26,3 @@ jobs:
${{ runner.os }}-maven-
- name: Run the Maven verify phase
run: mise run ci
-
diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml
index 0f1b8ac5c..5cba7fea6 100644
--- a/.github/workflows/github-pages.yaml
+++ b/.github/workflows/github-pages.yaml
@@ -13,8 +13,10 @@ on:
permissions: {}
-# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
-# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+# Allow only one concurrent deployment, skipping runs queued between
+# the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow
+# these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
@@ -32,22 +34,18 @@ jobs:
- uses: actions/checkout@v4
with:
persist-credentials: false
- fetch-tags: 'true'
+ fetch-tags: "true"
fetch-depth: 0
- uses: jdx/mise-action@7a111ead46986ccad89a74ad013ba2a7c08c9e67 # v2.1.1
with:
- cache: 'false'
+ cache: "false"
- name: Prepare GitHub Pages
run: mise run prepare-gh-pages
- with:
- permissions: block
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build GitHub Pages
run: mise run build-gh-pages
- with:
- permissions: block
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint-rest.yml
similarity index 88%
rename from .github/workflows/lint.yml
rename to .github/workflows/lint-rest.yml
index ee3cffab2..8a747cf94 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint-rest.yml
@@ -7,7 +7,6 @@ permissions: {}
jobs:
acceptance-tests:
- permissions: {}
runs-on: ubuntu-24.04
steps:
- name: Check out
@@ -16,5 +15,4 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: jdx/mise-action@7a111ead46986ccad89a74ad013ba2a7c08c9e67 # v2.1.1
- name: Lint
- run: mise run lint-all
-
+ run: mise run lint-rest
diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml
index 6d21a5faa..d5b3927db 100644
--- a/.github/workflows/native-tests.yml
+++ b/.github/workflows/native-tests.yml
@@ -1,10 +1,11 @@
+---
name: GraalVM Native Tests
on:
push:
- branches: [ "main" ]
+ branches: ["main"]
pull_request:
- branches: [ "main" ]
+ branches: ["main"]
permissions: {}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index bf0e60d02..087356453 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,3 +1,4 @@
+---
name: Deploy to Maven Central
on:
@@ -14,10 +15,10 @@ jobs:
steps:
- name: Debug gpg key - remove after debugging
env:
- GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
+ GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
run: |
- echo "$GPG_SIGNING_KEY" | wc -c
- echo "$GPG_SIGNING_KEY" | gpg --batch --import-options import-show --import
+ echo "${#GPG_SIGNING_KEY}"
+ echo "${GPG_SIGNING_KEY}" | gpg --batch --import-options import-show --import
- name: Checkout Plugin Repository
uses: actions/checkout@v4
with:
@@ -37,8 +38,8 @@ jobs:
- name: Set up Apache Maven Central
uses: actions/setup-java@v4
with:
- distribution: 'temurin'
- java-version: '17'
+ distribution: "temurin"
+ java-version: "17"
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_CENTRAL_TOKEN
diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml
new file mode 100644
index 000000000..102695d4b
--- /dev/null
+++ b/.github/workflows/super-linter.yml
@@ -0,0 +1,31 @@
+---
+name: Lint
+
+on:
+ pull_request:
+
+jobs:
+ lint:
+ runs-on: ubuntu-24.04
+
+ permissions:
+ contents: read
+ packages: read
+ # To report GitHub Actions status checks
+ statuses: write
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
+ fetch-depth: 0
+
+ - name: Load super-linter configuration
+ run: grep -v '^#' .github/super-linter.env | grep -v 'FIX_' >> "$GITHUB_ENV"
+
+ - name: Super-linter
+ uses: super-linter/super-linter@4e8a7c2bf106c4c766c816b35ec612638dc9b6b2 # v7.3.0
+ env:
+ # To report GitHub Actions status checks
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index ad343c1bd..b727017a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,5 @@ dependency-reduced-pom.xml
**/.classpath
**.project
**/.settings/
+docs/public
+.lycheecache
diff --git a/.gitleaksignore b/.gitleaksignore
new file mode 100644
index 000000000..605fefa97
--- /dev/null
+++ b/.gitleaksignore
@@ -0,0 +1,2 @@
+/tmp/lint/integration-tests/it-pushgateway/src/test/resources/pushgateway-ssl.yaml:private-key:36
+/github/workspace/integration-tests/it-pushgateway/src/test/resources/pushgateway-ssl.yaml:private-key:36
diff --git a/.yaml-lint.yml b/.yaml-lint.yml
new file mode 100644
index 000000000..a06ffeed5
--- /dev/null
+++ b/.yaml-lint.yml
@@ -0,0 +1,5 @@
+extends: relaxed
+
+rules:
+ line-length:
+ max: 120
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index d325872bd..524d1ab50 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,3 +1,4 @@
# Prometheus Community Code of Conduct
-Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
+Prometheus follows the
+[CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ff9717f67..aaa08ea7d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,18 +2,19 @@
Prometheus uses GitHub to manage reviews of pull requests.
-* If you have a trivial fix or improvement, go ahead and create a pull request,
+- If you have a trivial fix or improvement, go ahead and create a pull request,
addressing (with `@...`) the maintainer of this repository (see
[MAINTAINERS.md](MAINTAINERS.md)) in the description of the pull request.
-* If you plan to do something more involved, first discuss your ideas
+- If you plan to do something more involved, first discuss your ideas
on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
This will avoid unnecessary work and surely give you and us a good deal
of inspiration.
## Formatting
-This repository uses [Google Java Format](https://github.com/google/google-java-format) to format the code.
+This repository uses [Google Java Format](https://github.com/google/google-java-format) to format
+the code.
Run `./mvnw spotless:apply` to format the code (only changed files) before committing.
@@ -21,7 +22,8 @@ Run `./mvnw spotless:apply` to format the code (only changed files) before commi
If you're getting errors when running tests:
-- Make sure that the IDE uses only the "Maven Shade" dependency of "prometheus-metrics-exposition-formats" and the "prometheus-metrics-tracer*" dependencies.
+- Make sure that the IDE uses only the "Maven Shade" dependency of "
+ prometheus-metrics-exposition-formats" and the "prometheus-metrics-tracer\*" dependencies.
### Avoid failures while running tests
@@ -30,7 +32,8 @@ If you're getting errors when running tests:
- Use `-Dcheckstyle.skip=true` to skip the checkstyle check during development.
- Use `-Dwarnings=-nowarn` to skip the warnings during development.
-Combine all with `./mvnw test -DskipTests=true -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn`.
+Combine all with
+`./mvnw test -DskipTests=true -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn`. # editorconfig-checker-disable-line
## Updating the Protobuf Java Classes
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
index dae5c71de..cf0a885eb 100644
--- a/MAINTAINERS.md
+++ b/MAINTAINERS.md
@@ -1,4 +1,6 @@
-* Fabian Stäber @fstab
-* Doug Hoard @dhoard
-* Tom Wilkie @tomwilkie
-* Gregor Zeitlinger @zeitlinger
+# Maintainers
+
+- Fabian Stäber @fstab
+- Doug Hoard @dhoard
+- Tom Wilkie @tomwilkie
+- Gregor Zeitlinger @zeitlinger
diff --git a/README.md b/README.md
index f03a3e2a6..6e62e3577 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,25 @@
# Prometheus Java Metrics Library
-[](https://github.com/prometheus/client_java/actions/workflows/build.yml)
+[](https://github.com/prometheus/client_java/actions/workflows/build.yml) # editorconfig-checker-disable-line
-# Documentation
+## Documentation
[https://prometheus.github.io/client_java](https://prometheus.github.io/client_java)
-# Contributing and community
+## Contributing and community
-See [CONTRIBUTING.md](CONTRIBUTING.md) and the [community section](http://prometheus.io/community/) of the Prometheus homepage.
+See [CONTRIBUTING.md](CONTRIBUTING.md) and the [community section](http://prometheus.io/community/)
+of the Prometheus homepage.
-The Prometheus Java community is present on the [CNCF Slack](https://cloud-native.slack.com) on `#prometheus-java`, and we have a fortnightly community call in the [Prometheus public calendar](https://prometheus.io/community/).
+The Prometheus Java community is present on the [CNCF Slack](https://cloud-native.slack.com) on
+`#prometheus-java`, and we have a fortnightly community call in
+the [Prometheus public calendar](https://prometheus.io/community/).
-# Previous Releases
+## Previous Releases
-The source code for 0.16.0 and older is on the [simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) branch.
+The source code for 0.16.0 and older is on
+the [simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) branch.
-# License
+## License
Apache License 2.0, see [LICENSE](LICENSE).
diff --git a/RELEASING.md b/RELEASING.md
index eadbb8a76..151fae720 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -1,6 +1,7 @@
-## Create a Release
+# Create a Release
-1. Go to https://github.com/prometheus/client_java/releases/new
+1. Go to
2. Click on "Choose a tag", enter the tag name (e.g. `v0.1.0`), and click "Create a new tag".
-3. Click on "Generate release notes" to auto-generate the release notes based on the commits since the last release.
+3. Click on "Generate release notes" to auto-generate the release notes based on the commits since
+ the last release.
4. Click on "Publish release".
diff --git a/benchmarks/README.md b/benchmarks/README.md
index 36300e4d1..cb445c7bf 100644
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -1,15 +1,14 @@
-Benchmarks
-----------
+# Benchmarks
## How to Run
-```
+```shell
java -jar ./benchmarks/target/benchmarks.jar
```
Run only one specific benchmark:
-```
+```shell
java -jar ./benchmarks/target/benchmarks.jar CounterBenchmark
```
@@ -17,16 +16,22 @@ java -jar ./benchmarks/target/benchmarks.jar CounterBenchmark
See Javadoc of the benchmark classes:
-* [CounterBenchmark](https://github.com/prometheus/client_java/blob/1.0.x/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java)
-* [HistogramBenchmark](https://github.com/prometheus/client_java/blob/1.0.x/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java)
+- [CounterBenchmark](https://github.com/prometheus/client_java/blob/1.0.x/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/CounterBenchmark.java)
+- [HistogramBenchmark](https://github.com/prometheus/client_java/blob/1.0.x/benchmarks/src/main/java/io/prometheus/metrics/benchmarks/HistogramBenchmark.java)
## What Prometheus Java client optimizes for
concurrent updates of metrics in multi-threaded applications.
-If your application is single-threaded and uses only one processor core, your application isn't performance critical anyway.
-If your application is designed to use all available processor cores for maximum performance, then you want a metric library that doesn't slow your application down.
-Prometheus client Java metrics support concurrent updates and scrapes. This shows in benchmarks with multiple threads recording data in shared metrics.
+If your application is single-threaded and uses only one processor core, your application isn't
+performance critical anyway.
+If your application is designed to use all available processor cores for maximum performance, then
+you want a metric library that doesn't slow your
+application down.
+Prometheus client Java metrics support concurrent updates and scrapes. This shows in benchmarks with
+multiple threads recording data in shared
+metrics.
## Archive
-The `src/main/archive/` directory contains the old benchmarks from 0.16.0 and earlier. It will be removed as soon as all benchmarks are ported to the 1.0.0 release.
+The `src/main/archive/` directory contains the old benchmarks from 0.16.0 and earlier. It will be
+removed as soon as all benchmarks are ported to the 1.0.0 release.
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index 8e476d5a6..3cdbc09c0 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -1,122 +1,125 @@
-
- 4.0.0
+
+ 4.0.0
-
- io.prometheus
- client_java
- 1.4.0-SNAPSHOT
-
+
+ io.prometheus
+ client_java
+ 1.4.0-SNAPSHOT
+
- benchmarks
+ benchmarks
- Prometheus Java Client Benchmarks
-
- Benchmarks of client performance, and comparison to other systems.
-
+ Prometheus Java Client Benchmarks
+
+ Benchmarks of client performance, and comparison to other systems.
+
-
- 1.37
- 0.16.0
- 3.0.2
- true
-
-
-
-
-
- io.opentelemetry.instrumentation
- opentelemetry-instrumentation-bom-alpha
- ${otel.instrumentation.version}
- pom
- import
-
-
-
+
+ 1.37
+ 0.16.0
+ 3.0.2
+ true
+
+
-
- org.openjdk.jmh
- jmh-core
- ${jmh.version}
-
-
- io.prometheus
- prometheus-metrics-core
- ${project.version}
-
-
- io.prometheus
- prometheus-metrics-exposition-textformats
- ${project.version}
-
-
- io.prometheus
- simpleclient
- ${simpleclient.version}
-
-
- com.codahale.metrics
- metrics-core
- ${codahale.version}
-
-
- io.opentelemetry
- opentelemetry-api
-
-
- io.opentelemetry
- opentelemetry-sdk
-
-
- io.opentelemetry
- opentelemetry-sdk-testing
-
+
+ io.opentelemetry.instrumentation
+ opentelemetry-instrumentation-bom-alpha
+ ${otel.instrumentation.version}
+ pom
+ import
+
-
- ${project.artifactId}
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 1.8
- 1.8
-
-
- -parameters
-
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh.version}
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
-
-
- package
-
- shade
-
-
- benchmarks
-
-
- io.prometheus.metrics.benchmarks.BenchmarkRunner
-
-
-
-
-
-
-
-
+
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+
+
+ io.prometheus
+ prometheus-metrics-core
+ ${project.version}
+
+
+ io.prometheus
+ prometheus-metrics-exposition-textformats
+ ${project.version}
+
+
+ io.prometheus
+ simpleclient
+ ${simpleclient.version}
+
+
+ com.codahale.metrics
+ metrics-core
+ ${codahale.version}
+
+
+ io.opentelemetry
+ opentelemetry-api
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+
+
+ io.opentelemetry
+ opentelemetry-sdk-testing
+
+
+
+ ${project.artifactId}
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+ -parameters
+
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ benchmarks
+
+
+ io.prometheus.metrics.benchmarks.BenchmarkRunner
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java
index 530810481..ab383d327 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/CKMSQuantileBenchmark.java
@@ -1,6 +1,11 @@
package io.prometheus.client;
import io.prometheus.client.CKMSQuantiles.Quantile;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.runner.Runner;
@@ -8,131 +13,120 @@
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
public class CKMSQuantileBenchmark {
- @State(Scope.Benchmark)
- public static class EmptyBenchmarkState {
- @Param({"10000", "100000", "1000000"})
- public int value;
-
- List quantiles;
- Random rand = new Random(0);
-
- List shuffle;
-
- Quantile mean = new Quantile(0.50, 0.050);
- Quantile q90 = new Quantile(0.90, 0.010);
- Quantile q95 = new Quantile(0.95, 0.005);
- Quantile q99 = new Quantile(0.99, 0.001);
-
- @Setup(Level.Trial)
- public void setup() {
- quantiles = new ArrayList();
- quantiles.add(mean);
- quantiles.add(q90);
- quantiles.add(q95);
- quantiles.add(q99);
-
- shuffle = new ArrayList(value);
- for (int i = 0; i < value; i++) {
- shuffle.add((double) i);
- }
- Collections.shuffle(shuffle, rand);
- }
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.MILLISECONDS)
- public void ckmsQuantileInsertBenchmark(EmptyBenchmarkState state) {
- CKMSQuantiles q = new CKMSQuantiles(state.quantiles.toArray(new Quantile[]{}));
- for (Double l : state.shuffle) {
- q.insert(l);
- }
- }
-
- /** prefilled benchmark, means that we already have a filled and compressed samples available */
- @State(Scope.Benchmark)
- public static class PrefilledBenchmarkState {
- @Param({"10000", "100000", "1000000"})
- public int value;
-
-
- CKMSQuantiles ckmsQuantiles;
-
- List quantiles;
- Random rand = new Random(0);
-
- Quantile mean = new Quantile(0.50, 0.050);
- Quantile q90 = new Quantile(0.90, 0.010);
- Quantile q95 = new Quantile(0.95, 0.005);
- Quantile q99 = new Quantile(0.99, 0.001);
- List shuffle;
-
- int rank = (int) (value * q95.quantile);
-
-
- @Setup(Level.Trial)
- public void setup() {
- quantiles = new ArrayList();
- quantiles.add(mean);
- quantiles.add(q90);
- quantiles.add(q95);
- quantiles.add(q99);
-
- shuffle = new ArrayList(value);
- for (int i = 0; i < value; i++) {
- shuffle.add((double) i);
- }
- Collections.shuffle(shuffle, rand);
-
-
- ckmsQuantiles = new CKMSQuantiles(quantiles.toArray(new Quantile[]{}));
- for (Double l : shuffle) {
- ckmsQuantiles.insert(l);
- }
- // make sure we inserted all 'hanging' samples (count % 128)
- ckmsQuantiles.get(0);
- // compress everything so we have a similar samples size regardless of n.
- ckmsQuantiles.compress();
- System.out.println("Sample size is: " + ckmsQuantiles.samples.size());
- }
-
- }
-
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void ckmsQuantileGetBenchmark(Blackhole blackhole, PrefilledBenchmarkState state) {
- blackhole.consume(state.ckmsQuantiles.get(state.q90.quantile));
+ @State(Scope.Benchmark)
+ public static class EmptyBenchmarkState {
+ @Param({"10000", "100000", "1000000"})
+ public int value;
+
+ List quantiles;
+ Random rand = new Random(0);
+
+ List shuffle;
+
+ Quantile mean = new Quantile(0.50, 0.050);
+ Quantile q90 = new Quantile(0.90, 0.010);
+ Quantile q95 = new Quantile(0.95, 0.005);
+ Quantile q99 = new Quantile(0.99, 0.001);
+
+ @Setup(Level.Trial)
+ public void setup() {
+ quantiles = new ArrayList();
+ quantiles.add(mean);
+ quantiles.add(q90);
+ quantiles.add(q95);
+ quantiles.add(q99);
+
+ shuffle = new ArrayList(value);
+ for (int i = 0; i < value; i++) {
+ shuffle.add((double) i);
+ }
+ Collections.shuffle(shuffle, rand);
}
-
- /**
- * benchmark for the f method.
- */
- @Benchmark
- @BenchmarkMode({Mode.AverageTime})
- @OutputTimeUnit(TimeUnit.NANOSECONDS)
- public void ckmsQuantileF(Blackhole blackhole, PrefilledBenchmarkState state) {
- blackhole.consume(state.ckmsQuantiles.f(state.rank));
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.MILLISECONDS)
+ public void ckmsQuantileInsertBenchmark(EmptyBenchmarkState state) {
+ CKMSQuantiles q = new CKMSQuantiles(state.quantiles.toArray(new Quantile[] {}));
+ for (Double l : state.shuffle) {
+ q.insert(l);
}
-
- public static void main(String[] args) throws RunnerException {
-
- Options opt = new OptionsBuilder()
- .include(CKMSQuantileBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(1)
- .forks(1)
- .build();
-
- new Runner(opt).run();
+ }
+
+ /** prefilled benchmark, means that we already have a filled and compressed samples available */
+ @State(Scope.Benchmark)
+ public static class PrefilledBenchmarkState {
+ @Param({"10000", "100000", "1000000"})
+ public int value;
+
+ CKMSQuantiles ckmsQuantiles;
+
+ List quantiles;
+ Random rand = new Random(0);
+
+ Quantile mean = new Quantile(0.50, 0.050);
+ Quantile q90 = new Quantile(0.90, 0.010);
+ Quantile q95 = new Quantile(0.95, 0.005);
+ Quantile q99 = new Quantile(0.99, 0.001);
+ List shuffle;
+
+ int rank = (int) (value * q95.quantile);
+
+ @Setup(Level.Trial)
+ public void setup() {
+ quantiles = new ArrayList();
+ quantiles.add(mean);
+ quantiles.add(q90);
+ quantiles.add(q95);
+ quantiles.add(q99);
+
+ shuffle = new ArrayList(value);
+ for (int i = 0; i < value; i++) {
+ shuffle.add((double) i);
+ }
+ Collections.shuffle(shuffle, rand);
+
+ ckmsQuantiles = new CKMSQuantiles(quantiles.toArray(new Quantile[] {}));
+ for (Double l : shuffle) {
+ ckmsQuantiles.insert(l);
+ }
+ // make sure we inserted all 'hanging' samples (count % 128)
+ ckmsQuantiles.get(0);
+ // compress everything so we have a similar samples size regardless of n.
+ ckmsQuantiles.compress();
+ System.out.println("Sample size is: " + ckmsQuantiles.samples.size());
}
+ }
+
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void ckmsQuantileGetBenchmark(Blackhole blackhole, PrefilledBenchmarkState state) {
+ blackhole.consume(state.ckmsQuantiles.get(state.q90.quantile));
+ }
+
+ /** benchmark for the f method. */
+ @Benchmark
+ @BenchmarkMode({Mode.AverageTime})
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public void ckmsQuantileF(Blackhole blackhole, PrefilledBenchmarkState state) {
+ blackhole.consume(state.ckmsQuantiles.f(state.rank));
+ }
+
+ public static void main(String[] args) throws RunnerException {
+
+ Options opt =
+ new OptionsBuilder()
+ .include(CKMSQuantileBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(1)
+ .forks(1)
+ .build();
+
+ new Runner(opt).run();
+ }
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
index 592efc6f2..c37076156 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/CounterBenchmark.java
@@ -1,6 +1,7 @@
package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
@@ -13,8 +14,6 @@
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
-import java.util.concurrent.TimeUnit;
-
@State(Scope.Benchmark)
public class CounterBenchmark {
@@ -28,16 +27,16 @@ public class CounterBenchmark {
@Setup
public void setup() {
- prometheusSimpleCounter = io.prometheus.client.Counter.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleCounter =
+ io.prometheus.client.Counter.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleCounterChild = prometheusSimpleCounter.labels("test", "group");
- prometheusSimpleCounterNoLabels = io.prometheus.client.Counter.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleCounterNoLabels =
+ io.prometheus.client.Counter.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleCounter = registry.counter("counter");
@@ -48,21 +47,21 @@ public void setup() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterIncBenchmark() {
- prometheusSimpleCounter.labels("test", "group").inc();
+ prometheusSimpleCounter.labels("test", "group").inc();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterChildIncBenchmark() {
- prometheusSimpleCounterChild.inc();
+ prometheusSimpleCounterChild.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterNoLabelsIncBenchmark() {
- prometheusSimpleCounterNoLabels.inc();
+ prometheusSimpleCounterNoLabels.inc();
}
@Benchmark
@@ -81,13 +80,14 @@ public void codahaleMeterMarkBenchmark() {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(CounterBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(CounterBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java
index 7d033afcd..a3fa45ae1 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/ExemplarsBenchmark.java
@@ -3,6 +3,7 @@
import io.prometheus.client.Counter;
import io.prometheus.client.exemplars.DefaultExemplarSampler;
import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
@@ -11,8 +12,6 @@
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
-import java.util.concurrent.TimeUnit;
-
@State(Scope.Benchmark)
public class ExemplarsBenchmark {
@@ -23,25 +22,28 @@ public class ExemplarsBenchmark {
@Setup
public void setup() {
- counter = Counter.build()
- .name("counter_total")
- .help("Total number of requests.")
- .labelNames("path")
- .create();
+ counter =
+ Counter.build()
+ .name("counter_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .create();
- counterWithExemplars = Counter.build()
- .name("counter_with_exemplars_total")
- .help("Total number of requests.")
- .labelNames("path")
- .withExemplarSampler(new DefaultExemplarSampler(new MockSpanContextSupplier()))
- .create();
+ counterWithExemplars =
+ Counter.build()
+ .name("counter_with_exemplars_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .withExemplarSampler(new DefaultExemplarSampler(new MockSpanContextSupplier()))
+ .create();
- counterWithoutExemplars = Counter.build()
- .name("counter_without_exemplars_total")
- .help("Total number of requests.")
- .labelNames("path")
- .withoutExemplars()
- .create();
+ counterWithoutExemplars =
+ Counter.build()
+ .name("counter_without_exemplars_total")
+ .help("Total number of requests.")
+ .labelNames("path")
+ .withoutExemplars()
+ .create();
}
@Benchmark
@@ -79,7 +81,7 @@ public String getSpanId() {
@Override
public boolean isSampled() {
- return true;
+ return true;
}
}
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
index d088d280d..a8eb03c83 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/GaugeBenchmark.java
@@ -1,6 +1,7 @@
package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
@@ -13,8 +14,6 @@
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
-import java.util.concurrent.TimeUnit;
-
@State(Scope.Benchmark)
public class GaugeBenchmark {
@@ -27,16 +26,16 @@ public class GaugeBenchmark {
@Setup
public void setup() {
- prometheusSimpleGauge = io.prometheus.client.Gauge.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleGauge =
+ io.prometheus.client.Gauge.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleGaugeChild = prometheusSimpleGauge.labels("test", "group");
- prometheusSimpleGaugeNoLabels = io.prometheus.client.Gauge.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleGaugeNoLabels =
+ io.prometheus.client.Gauge.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleCounter = registry.counter("name");
@@ -47,21 +46,21 @@ public void setup() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeIncBenchmark() {
- prometheusSimpleGauge.labels("test", "group").inc();
+ prometheusSimpleGauge.labels("test", "group").inc();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeChildIncBenchmark() {
- prometheusSimpleGaugeChild.inc();
+ prometheusSimpleGaugeChild.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsIncBenchmark() {
- prometheusSimpleGaugeNoLabels.inc();
+ prometheusSimpleGaugeNoLabels.inc();
}
@Benchmark
@@ -71,27 +70,26 @@ public void codahaleCounterIncBenchmark() {
codahaleCounter.inc();
}
-
// Decrement.
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeDecBenchmark() {
- prometheusSimpleGauge.labels("test", "group").dec();
+ prometheusSimpleGauge.labels("test", "group").dec();
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeChildDecBenchmark() {
- prometheusSimpleGaugeChild.dec();
+ prometheusSimpleGaugeChild.dec();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsDecBenchmark() {
- prometheusSimpleGaugeNoLabels.dec();
+ prometheusSimpleGaugeNoLabels.dec();
}
@Benchmark
@@ -106,9 +104,9 @@ public void codahaleCounterDecBenchmark() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeSetBenchmark() {
- prometheusSimpleGauge.labels("test", "group").set(42);
+ prometheusSimpleGauge.labels("test", "group").set(42);
}
-
+
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@@ -120,18 +118,19 @@ public void prometheusSimpleGaugeChildSetBenchmark() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleGaugeNoLabelsSetBenchmark() {
- prometheusSimpleGaugeNoLabels.set(42);
+ prometheusSimpleGaugeNoLabels.set(42);
}
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(GaugeBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(GaugeBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java
index d89e676e5..cb5f300ce 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SanitizeMetricNameBenchmark.java
@@ -1,12 +1,12 @@
package io.prometheus.client.benchmark;
-import com.codahale.metrics.MetricRegistry;
+import io.prometheus.client.Collector;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
@@ -14,23 +14,18 @@
import org.openjdk.jmh.runner.options.OptionsBuilder;
import org.openjdk.jmh.runner.options.TimeValue;
-import io.prometheus.client.Collector;
-
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-
@State(Scope.Benchmark)
public class SanitizeMetricNameBenchmark {
@Benchmark
- @BenchmarkMode({ Mode.AverageTime })
+ @BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void sanitizeSanitizedName() {
Collector.sanitizeMetricName("good_name");
}
@Benchmark
- @BenchmarkMode({ Mode.AverageTime })
+ @BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void sanitizeNonSanitizedName() {
Collector.sanitizeMetricName("9not_good_name!");
@@ -38,15 +33,16 @@ public void sanitizeNonSanitizedName() {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(SanitizeMetricNameBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .measurementTime(TimeValue.seconds(1))
- .warmupTime(TimeValue.seconds(1))
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(SanitizeMetricNameBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .measurementTime(TimeValue.seconds(1))
+ .warmupTime(TimeValue.seconds(1))
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
index 973106c68..2964b8ea8 100644
--- a/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
+++ b/benchmarks/src/archive/java/io/prometheus/client/benchmark/SummaryBenchmark.java
@@ -1,6 +1,7 @@
package io.prometheus.client.benchmark;
import com.codahale.metrics.MetricRegistry;
+import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
@@ -13,8 +14,6 @@
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
-import java.util.concurrent.TimeUnit;
-
@State(Scope.Benchmark)
public class SummaryBenchmark {
@@ -30,27 +29,27 @@ public class SummaryBenchmark {
@Setup
public void setup() {
- prometheusSimpleSummary = io.prometheus.client.Summary.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleSummary =
+ io.prometheus.client.Summary.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleSummaryChild = prometheusSimpleSummary.labels("test", "group");
- prometheusSimpleSummaryNoLabels = io.prometheus.client.Summary.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleSummaryNoLabels =
+ io.prometheus.client.Summary.build().name("name").help("some description..").create();
- prometheusSimpleHistogram = io.prometheus.client.Histogram.build()
- .name("name")
- .help("some description..")
- .labelNames("some", "group").create();
+ prometheusSimpleHistogram =
+ io.prometheus.client.Histogram.build()
+ .name("name")
+ .help("some description..")
+ .labelNames("some", "group")
+ .create();
prometheusSimpleHistogramChild = prometheusSimpleHistogram.labels("test", "group");
- prometheusSimpleHistogramNoLabels = io.prometheus.client.Histogram.build()
- .name("name")
- .help("some description..")
- .create();
+ prometheusSimpleHistogramNoLabels =
+ io.prometheus.client.Histogram.build().name("name").help("some description..").create();
registry = new MetricRegistry();
codahaleHistogram = registry.histogram("name");
@@ -60,28 +59,28 @@ public void setup() {
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryBenchmark() {
- prometheusSimpleSummary.labels("test", "group").observe(1) ;
+ prometheusSimpleSummary.labels("test", "group").observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryChildBenchmark() {
- prometheusSimpleSummaryChild.observe(1);
+ prometheusSimpleSummaryChild.observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleSummaryNoLabelsBenchmark() {
- prometheusSimpleSummaryNoLabels.observe(1);
+ prometheusSimpleSummaryNoLabels.observe(1);
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleHistogramBenchmark() {
- prometheusSimpleHistogram.labels("test", "group").observe(1) ;
+ prometheusSimpleHistogram.labels("test", "group").observe(1);
}
@Benchmark
@@ -107,13 +106,14 @@ public void codahaleHistogramBenchmark() {
public static void main(String[] args) throws RunnerException {
- Options opt = new OptionsBuilder()
- .include(SummaryBenchmark.class.getSimpleName())
- .warmupIterations(5)
- .measurementIterations(4)
- .threads(4)
- .forks(1)
- .build();
+ Options opt =
+ new OptionsBuilder()
+ .include(SummaryBenchmark.class.getSimpleName())
+ .warmupIterations(5)
+ .measurementIterations(4)
+ .threads(4)
+ .forks(1)
+ .build();
new Runner(opt).run();
}
diff --git a/checkstyle.xml b/checkstyle.xml
index fd483abfa..cac6be8d3 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -30,7 +30,7 @@
+ default="checkstyle-suppressions.xml"/>
@@ -44,7 +44,7 @@
+ value="^package.*|^import.*|a href|href|http://|https://|ftp://|# HELP.*|jvm_runtime_info\{"/>
@@ -64,9 +64,9 @@
+ value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
+ value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
@@ -81,15 +81,15 @@
+ value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+ value="LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE"/>
@@ -117,7 +117,7 @@
@@ -128,7 +128,7 @@
+ value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may
+ only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
+ value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
@@ -148,7 +149,7 @@
@@ -184,76 +185,76 @@
+ value="Type name ''{0}'' must match pattern ''{1}''."/>
+ value="Member name ''{0}'' must match pattern ''{1}''."/>
+ value="Logger fields must be named ''logger''."/>
+ value="Parameter name ''{0}'' must match pattern ''{1}''."/>
+ value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
+ value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
+ value="Local variable name ''{0}'' must match pattern ''{1}''."/>
+ value="Pattern variable name ''{0}'' must match pattern ''{1}''."/>
+ value="Class type name ''{0}'' must match pattern ''{1}''."/>
+ value="Record type name ''{0}'' must match pattern ''{1}''."/>
+ value="Method type name ''{0}'' must match pattern ''{1}''."/>
+ value="Interface type name ''{0}'' must match pattern ''{1}''."/>
+ value="GenericWhitespace ''{0}'' is followed by whitespace."/>
+ value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
+ value="GenericWhitespace ''{0}'' should followed by whitespace."/>
+ value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
@@ -273,18 +274,18 @@
@@ -321,7 +322,7 @@
+ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
@@ -342,7 +343,7 @@
+ value="Method name ''{0}'' must match pattern ''{1}''."/>
+ default="checkstyle-xpath-suppressions.xml"/>
diff --git a/docs/README.md b/docs/README.md
index 294c9a622..8ca147236 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,59 +1,60 @@
-Docs
-----
+# Docs
-This directory contains [hugo](https://gohugo.io) documentation to be published in Github pages.
+This directory contains [hugo](https://gohugo.io) documentation to be published in GitHub pages.
-Run Locally
------------
+## Run Locally
-```
+```shell
hugo server -D
```
This will serve the docs on [http://localhost:1313](http://localhost:1313).
-Deploy to Github Pages
-----------------------
+## Deploy to GitHub Pages
-Changes to the `main` branch will be deployed automatically with Github actions.
+Changes to the `main` branch will be deployed automatically with GitHub Actions.
-Update Javadoc
---------------
+## Update Javadoc
-Javadoc are not checked-in to the Github repository.
-They are generated on the fly by Github actions when the docs are updated.
+Javadoc are not checked-in to the GitHub repository.
+They are generated on the fly by GitHub Actions when the docs are updated.
To view locally, run the following:
-```
-# note that the 'compile' in the following command is necessary for Javadoc to detect the module structure
+```shell
+# note that the 'compile' in the following command is necessary for
+# Javadoc to detect the module structure
./mvnw clean compile javadoc:javadoc javadoc:aggregate
rm -r ./docs/static/api
mv ./target/site/apidocs ./docs/static/api
```
-Github pages are in the `/client_java/` folder, so we link to `/client_java/api` rather than `/api`.
+GitHub pages are in the `/client_java/` folder, so we link to `/client_java/api` rather than `/api`.
To make JavaDoc work locally, create a link:
-```
+```shell
mkdir ./docs/static/client_java
ln -s ../api ./docs/static/client_java/api
```
-Update Geekdocs
----------------
+## Update Geekdocs
-The docs use the [Geekdocs](https://geekdocs.de/) theme. The theme is checked in to Github in the `./docs/themes/hugo-geekdoc/` folder. To update [Geekdocs](https://geekdocs.de/), remove the current folder and create a new one with the latest [release](https://github.com/thegeeklab/hugo-geekdoc/releases). There are no local modifications in `./docs/themes/hugo-geekdoc/`.
+The docs use the [Geekdocs](https://geekdocs.de/) theme. The theme is checked in to GitHub in the
+`./docs/themes/hugo-geekdoc/` folder. To update [Geekdocs](https://geekdocs.de/), remove the current
+folder and create a new one with the
+latest [release](https://github.com/thegeeklab/hugo-geekdoc/releases). There are no local
+modifications in `./docs/themes/hugo-geekdoc/`.
-Notes
------
+## Notes
Here's how the initial `docs/` folder was set up:
-```
+```shell
hugo new site docs
cd docs/
mkdir -p themes/hugo-geekdoc/
-curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/download/v0.41.1/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1
+curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/download/v0.41.1/hugo-geekdoc.tar.gz \
+ | tar -xz -C themes/hugo-geekdoc/ --strip-components=1
```
-Create the initial `hugo.toml` file as described in [https://geekdocs.de/usage/getting-started/](https://geekdocs.de/usage/getting-started/).
+Create the initial `hugo.toml` file as described
+in [https://geekdocs.de/usage/getting-started/](https://geekdocs.de/usage/getting-started/).
diff --git a/docs/content/_index.md b/docs/content/_index.md
index 9de934995..3b8966cf3 100644
--- a/docs/content/_index.md
+++ b/docs/content/_index.md
@@ -2,32 +2,54 @@
title: "client_java"
---
-This is the documentation for the [Prometheus Java client library](https://github.com/prometheus/client_java) version 1.0.0 and higher.
+This is the documentation for the
+[Prometheus Java client library](https://github.com/prometheus/client_java)
+version 1.0.0 and higher.
The main new features of the 1.0.0 release are:
-* **Prometheus native histograms:** Support for the new Prometheus histogram type.
-* **OpenTelemetry Exporter:** Push metrics in OTLP format to an OpenTelemetry endpoint.
-* **Runtime configuration:** Configure metrics, exporters, and more at runtime using a properties file or system properties.
+- **Prometheus native histograms:** Support for the new Prometheus histogram type.
+- **OpenTelemetry Exporter:** Push metrics in OTLP format to an OpenTelemetry endpoint.
+- **Runtime configuration:** Configure metrics, exporters, and more at runtime using a properties
+ file or system properties.
**Documentation and Examples**
-In addition to this documentation page we created an [examples/](https://github.com/prometheus/client_java/tree/main/examples) directory with end-to-end scenarios (Docker compose) illustrating new features.
+In addition to this documentation page we created an
+[examples/](https://github.com/prometheus/client_java/tree/main/examples) directory with end-to-end
+scenarios (Docker compose) illustrating new features.
**Performance Benchmarks**
-Initial performance benchmarks are looking great: All core metric types (including native histograms) allow concurrent updates, so if you instrument a performance critical Web service that utilizes all processor cores in parallel the metrics library will not introduce additional synchronization. See Javadoc comments in [benchmarks/](https://github.com/prometheus/client_java/tree/main/benchmarks) for benchmark results.
+Initial performance benchmarks are looking great: All core metric types (including native
+histograms) allow concurrent updates, so if you instrument a performance critical Web service
+that utilizes all processor cores in parallel the metrics library will not introduce additional
+synchronization. See Javadoc comments in
+[benchmarks/](https://github.com/prometheus/client_java/tree/main/benchmarks) for benchmark results.
**More Info**
-The Grafana Labs Blog has a post [Introducing the Prometheus Java Client 1.0.0](https://grafana.com/blog/2023/09/27/introducing-the-prometheus-java-client-1.0.0/) with a good overview of the release.
+The Grafana Labs Blog has a post
+[Introducing the Prometheus Java Client 1.0.0](https://grafana.com/blog/2023/09/27/introducing-the-prometheus-java-client-1.0.0/)
+with a good overview of the release.
-There will also be a presentation at the [PromCon](https://promcon.io) conference on 29 Sep 2023. Tune in to the live stream on [https://promcon.io](https://promcon.io) or watch the recording on YouTube.
+There will also be a presentation at the [PromCon](https://promcon.io) conference on 29 Sep 2023.
+Tune in to the live stream on [https://promcon.io](https://promcon.io)
+or watch the recording on YouTube.
**For users of the 0.16.0 version and older**
-Updating to the 1.0.0 version is a breaking change. However, there's a `prometheus-metrics-simpleclient-bridge` module available that allows you to use your existing simpleclient 0.16.0 metrics with the new 1.0.0 `PrometheusRegistry`. So you don't need to upgrade your instrumentation code, you can keep using your existing metrics. See the [compatibility > simpleclient](https://prometheus.github.io/client_java/migration/simpleclient/) in the menu on the left.
+Updating to the 1.0.0 version is a breaking change. However, there's a
+`prometheus-metrics-simpleclient-bridge` module available that allows you to use your existing
+simpleclient 0.16.0 metrics with the new 1.0.0 `PrometheusRegistry`.
+So you don't need to upgrade your instrumentation code, you can keep using your existing metrics.
+See the
+[compatibility > simpleclient](https://prometheus.github.io/client_java/migration/simpleclient/)
+in the menu on the left.
-The pre 1.0.0 code is now maintained on the [simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) feature branch.
+The pre 1.0.0 code is now maintained on the
+[simpleclient](https://github.com/prometheus/client_java/tree/simpleclient) feature branch.
-Not all `simpleclient` modules from 0.16.0 are included in the initial 1.0.0 release. Over the next couple of weeks we will work on porting the remaining modules, starting with `pushgateway` and the Servlet filter.
+Not all `simpleclient` modules from 0.16.0 are included in the initial 1.0.0 release.
+Over the next couple of weeks we will work on porting the remaining modules,
+starting with `pushgateway` and the Servlet filter.
diff --git a/docs/content/config/config.md b/docs/content/config/config.md
index a7e57ac0d..a56b33da2 100644
--- a/docs/content/config/config.md
+++ b/docs/content/config/config.md
@@ -7,67 +7,76 @@ weight: 1
The Prometheus metrics library provides multiple options how to override configuration at runtime:
-* Properties file
-* System properties
+- Properties file
+- System properties
Future releases will add more options, like configuration via environment variables.
Example:
-```
+```properties
io.prometheus.exporter.httpServer.port = 9401
```
-The property above changes the port for the [HTTPServer exporter]({{< relref "/exporters/httpserver.md" >}}) to _9401_.
+The property above changes the port for the
+[HTTPServer exporter]({{< relref "/exporters/httpserver.md" >}}) to _9401_.
-* Properties file: Add the line above to the properties file.
-* System properties: Use the command line parameter `-Dio.prometheus.exporter.httpServer.port=9401` when starting your application.
+- Properties file: Add the line above to the properties file.
+- System properties: Use the command line parameter `-Dio.prometheus.exporter.httpServer.port=9401`
+- when starting your application.
-Location of the Properties File
--------------------------------
+## Location of the Properties File
The properties file is searched in the following locations:
-* `/prometheus.properties` in the classpath. This is for bundling a properties file with your application.
-* System property `-Dprometheus.config=/path/to/prometheus.properties`.
-* Environment variable `PROMETHEUS_CONFIG=/path/to/prometheus.properties`.
-
-Metrics Properties
-------------------
-
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.metrics.exemplarsEnabled | [Counter.Builder.withExemplars()](/client_java/api/io/prometheus/metrics/core/metrics/Counter.Builder.html#withExemplars()) | (1) (2) |
-| io.prometheus.metrics.histogramNativeOnly | [Histogram.Builder.nativeOnly()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeOnly()) | (2) |
-| io.prometheus.metrics.histogramClassicOnly | [Histogram.Builder.classicOnly()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#classicOnly()) | (2) |
-| io.prometheus.metrics.histogramClassicUpperBounds | [Histogram.Builder.classicUpperBounds()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#classicUpperBounds(double...)) | (3) |
-| io.prometheus.metrics.histogramNativeInitialSchema | [Histogram.Builder.nativeInitialSchema()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeInitialSchema(int)) | |
-| io.prometheus.metrics.histogramNativeMinZeroThreshold | [Histogram.Builder.nativeMinZeroThreshold()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeMinZeroThreshold(double)) | |
-| io.prometheus.metrics.histogramNativeMaxZeroThreshold | [Histogram.Builder.nativeMaxZeroThreshold()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeMaxZeroThreshold(double)) | |
-| io.prometheus.metrics.histogramNativeMaxNumberOfBuckets | [Histogram.Builder.nativeMaxNumberOfBuckets()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeMaxNumberOfBuckets(int)) | |
-| io.prometheus.metrics.histogramNativeResetDurationSeconds | [Histogram.Builder.nativeResetDuration()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeResetDuration(long,java.util.concurrent.TimeUnit)) | |
-| io.prometheus.metrics.summaryQuantiles | [Summary.Builder.quantile(double)](/client_java/api/io/prometheus/metrics/core/metrics/Summary.Builder.html#quantile(double)) | (4) |
-| io.prometheus.metrics.summaryQuantileErrors | [Summary.Builder.quantile(double, double)](/client_java/api/io/prometheus/metrics/core/metrics/Summary.Builder.html#quantile(double,double)) | (5) |
-| io.prometheus.metrics.summaryMaxAgeSeconds | [Summary.Builder.maxAgeSeconds()](/client_java/api/io/prometheus/metrics/core/metrics/Summary.Builder.html#maxAgeSeconds(long)) | |
-| io.prometheus.metrics.summaryNumberOfAgeBuckets | [Summary.Builder.numberOfAgeBuckets()](/client_java/api/io/prometheus/metrics/core/metrics/Summary.Builder.html#numberOfAgeBuckets(int)) | |
+- `/prometheus.properties` in the classpath. This is for bundling a properties file
+ with your application.
+- System property `-Dprometheus.config=/path/to/prometheus.properties`.
+- Environment variable `PROMETHEUS_CONFIG=/path/to/prometheus.properties`.
+
+## Metrics Properties
+
+
+
+| Name | Javadoc | Note |
+| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| io.prometheus.metrics.exemplarsEnabled | [Counter.Builder.withExemplars()]() | (1) (2) |
+| io.prometheus.metrics.histogramNativeOnly | [Histogram.Builder.nativeOnly()]() | (2) |
+| io.prometheus.metrics.histogramClassicOnly | [Histogram.Builder.classicOnly()]() | (2) |
+| io.prometheus.metrics.histogramClassicUpperBounds | [Histogram.Builder.classicUpperBounds()]() | (3) |
+| io.prometheus.metrics.histogramNativeInitialSchema | [Histogram.Builder.nativeInitialSchema()]() | |
+| io.prometheus.metrics.histogramNativeMinZeroThreshold | [Histogram.Builder.nativeMinZeroThreshold()]() | |
+| io.prometheus.metrics.histogramNativeMaxZeroThreshold | [Histogram.Builder.nativeMaxZeroThreshold()]() | |
+| io.prometheus.metrics.histogramNativeMaxNumberOfBuckets | [Histogram.Builder.nativeMaxNumberOfBuckets()]() | |
+| io.prometheus.metrics.histogramNativeResetDurationSeconds | [Histogram.Builder.nativeResetDuration()]() | |
+| io.prometheus.metrics.summaryQuantiles | [Summary.Builder.quantile(double)]() | (4) |
+| io.prometheus.metrics.summaryQuantileErrors | [Summary.Builder.quantile(double, double)]() | (5) |
+| io.prometheus.metrics.summaryMaxAgeSeconds | [Summary.Builder.maxAgeSeconds()]() | |
+| io.prometheus.metrics.summaryNumberOfAgeBuckets | [Summary.Builder.numberOfAgeBuckets()]() | |
+
+
**Notes**
-(1) _withExemplars()_ and _withoutExemplars()_ are available for all metric types, not just for counters
+(1) _withExemplars()_ and _withoutExemplars()_ are available for all metric types,
+not just for counters
(2) Boolean value. Format: `property=true` or `property=false`.
(3) Comma-separated list. Example: `.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10`.
(4) Comma-separated list. Example: `0.5, 0.95, 0.99`.
-(5) Comma-separated list. If specified, the list must have the same length as `io.prometheus.metrics.summaryQuantiles`. Example: `0.01, 0.005, 0.005`.
+(5) Comma-separated list. If specified, the list must have the same length as
+`io.prometheus.metrics.summaryQuantiles`. Example: `0.01, 0.005, 0.005`.
-There's one special feature about metric properties: You can set a property for one specific metric only by specifying the metric name. Example: Let's say you have a histogram named `latency_seconds`.
+There's one special feature about metric properties: You can set a property for one specific
+metric only by specifying the metric name. Example:
+Let's say you have a histogram named `latency_seconds`.
-```
+```properties
io.prometheus.metrics.histogramClassicUpperBounds = 0.2, 0.4, 0.8, 1.0
```
The line above sets histogram buckets for all histograms. However:
-```
+```properties
io.prometheus.metrics.latency_seconds.histogramClassicUpperBounds = 0.2, 0.4, 0.8, 1.0
```
@@ -75,75 +84,95 @@ The line above sets histogram buckets only for the histogram named `latency_seco
This works for all Metrics properties.
-Exemplar Properties
--------------------
+## Exemplar Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exemplars.minRetentionPeriodSeconds | [ExemplarsProperties.getMinRetentionPeriodSeconds()]() | |
+| io.prometheus.exemplars.maxRetentionPeriodSeconds | [ExemplarsProperties.getMaxRetentionPeriodSeconds()]() | |
+| io.prometheus.exemplars.sampleIntervalMilliseconds | [ExemplarsProperties.getSampleIntervalMilliseconds()]() | |
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.exemplars.minRetentionPeriodSeconds | [ExemplarsProperties.getMinRetentionPeriodSeconds()](/client_java/api/io/prometheus/metrics/config/ExemplarsProperties.html#getMinRetentionPeriodSeconds()) | |
-| io.prometheus.exemplars.maxRetentionPeriodSeconds | [ExemplarsProperties.getMaxRetentionPeriodSeconds()](/client_java/api/io/prometheus/metrics/config/ExemplarsProperties.html#getMaxRetentionPeriodSeconds()) | |
-| io.prometheus.exemplars.sampleIntervalMilliseconds | [ExemplarsProperties.getSampleIntervalMilliseconds()](/client_java/api/io/prometheus/metrics/config/ExemplarsProperties.html#getSampleIntervalMilliseconds()) | |
+
-Exporter Properties
--------------------
+## Exporter Properties
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.exporter.includeCreatedTimestamps | [ExporterProperties.getIncludeCreatedTimestamps()](/client_java/api/io/prometheus/metrics/config/ExporterProperties.html#getIncludeCreatedTimestamps()) | (1) |
-| io.prometheus.exporter.exemplarsOnAllMetricTypes | [ExporterProperties.getExemplarsOnAllMetricTypes()](/client_java/api/io/prometheus/metrics/config/ExporterProperties.html#getExemplarsOnAllMetricTypes()) | (1) |
+
+
+| Name | Javadoc | Note |
+| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.includeCreatedTimestamps | [ExporterProperties.getIncludeCreatedTimestamps()]() | (1) |
+| io.prometheus.exporter.exemplarsOnAllMetricTypes | [ExporterProperties.getExemplarsOnAllMetricTypes()]() | (1) |
+
+
(1) Boolean value, `true` or `false`. Default see Javadoc.
-Exporter Filter Properties
---------------------------
+## Exporter Filter Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.filter.metricNameMustBeEqualTo | [ExporterFilterProperties.getAllowedMetricNames()]() | (1) |
+| io.prometheus.exporter.filter.metricNameMustNotBeEqualTo | [ExporterFilterProperties.getExcludedMetricNames()]() | (2) |
+| io.prometheus.exporter.filter.metricNameMustStartWith | [ExporterFilterProperties.getAllowedMetricNamePrefixes()]() | (3) |
+| io.prometheus.exporter.filter.metricNameMustNotStartWith | [ExporterFilterProperties.getExcludedMetricNamePrefixes()]() | (4) |
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.exporter.filter.metricNameMustBeEqualTo | [ExporterFilterProperties.getAllowedMetricNames()](/client_java/api/io/prometheus/metrics/config/ExporterFilterProperties.html#getAllowedMetricNames()) | (1) |
-| io.prometheus.exporter.filter.metricNameMustNotBeEqualTo | [ExporterFilterProperties.getExcludedMetricNames()](/client_java/api/io/prometheus/metrics/config/ExporterFilterProperties.html#getExcludedMetricNames()) | (2) |
-| io.prometheus.exporter.filter.metricNameMustStartWith | [ExporterFilterProperties.getAllowedMetricNamePrefixes()](/client_java/api/io/prometheus/metrics/config/ExporterFilterProperties.html#getAllowedMetricNamePrefixes()) | (3) |
-| io.prometheus.exporter.filter.metricNameMustNotStartWith | [ExporterFilterProperties.getExcludedMetricNamePrefixes()](/client_java/api/io/prometheus/metrics/config/ExporterFilterProperties.html#getExcludedMetricNamePrefixes()) | (4) |
+
(1) Comma sparated list of allowed metric names. Only these metrics will be exposed.
(2) Comma sparated list of excluded metric names. These metrics will not be exposed.
(3) Comma sparated list of prefixes. Only metrics starting with these prefixes will be exposed.
(4) Comma sparated list of prefixes. Metrics starting with these prefixes will not be exposed.
-Exporter HTTPServer Properties
-------------------------------
-
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.exporter.httpServer.port | [HTTPServer.Builder.port()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#port(int)) | |
-
-Exporter OpenTelemetry Properties
----------------------------------
-
-| Name | Javadoc | Note |
-| --------------- | --------|------|
-| io.prometheus.exporter.opentelemetry.protocol | [OpenTelemetryExporter.Builder.protocol()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#protocol(java.lang.String)) | (1) |
-| io.prometheus.exporter.opentelemetry.endpoint | [OpenTelemetryExporter.Builder.endpoint()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#endpoint(java.lang.String)) | |
-| io.prometheus.exporter.opentelemetry.headers | [OpenTelemetryExporter.Builder.headers()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#header(java.lang.String,java.lang.String)) | (2) |
-| io.prometheus.exporter.opentelemetry.intervalSeconds | [OpenTelemetryExporter.Builder.intervalSeconds()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#intervalSeconds(int)) | |
-| io.prometheus.exporter.opentelemetry.timeoutSeconds | [OpenTelemetryExporter.Builder.timeoutSeconds()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#timeoutSeconds(int)) | |
-| io.prometheus.exporter.opentelemetry.serviceName | [OpenTelemetryExporter.Builder.serviceName()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#serviceName(java.lang.String)) | |
-| io.prometheus.exporter.opentelemetry.serviceNamespace | [OpenTelemetryExporter.Builder.serviceNamespace()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#serviceNamespace(java.lang.String)) | |
-| io.prometheus.exporter.opentelemetry.serviceInstanceId | [OpenTelemetryExporter.Builder.serviceInstanceId()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#serviceInstanceId(java.lang.String)) | |
-| io.prometheus.exporter.opentelemetry.serviceVersion | [OpenTelemetryExporter.Builder.serviceVersion()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#serviceVersion(java.lang.String)) | |
-| io.prometheus.exporter.opentelemetry.resourceAttributes | [OpenTelemetryExporter.Builder.resourceAttributes()](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html#resourceAttribute(java.lang.String,java.lang.String)) | (3) |
+## Exporter HTTPServer Properties
+
+
+
+| Name | Javadoc | Note |
+| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.httpServer.port | [HTTPServer.Builder.port()]() | |
+
+
+
+## Exporter OpenTelemetry Properties
+
+
+
+| Name | Javadoc | Note |
+| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.opentelemetry.protocol | [OpenTelemetryExporter.Builder.protocol()]() | (1) |
+| io.prometheus.exporter.opentelemetry.endpoint | [OpenTelemetryExporter.Builder.endpoint()]() | |
+| io.prometheus.exporter.opentelemetry.headers | [OpenTelemetryExporter.Builder.headers()]() | (2) |
+| io.prometheus.exporter.opentelemetry.intervalSeconds | [OpenTelemetryExporter.Builder.intervalSeconds()]() | |
+| io.prometheus.exporter.opentelemetry.timeoutSeconds | [OpenTelemetryExporter.Builder.timeoutSeconds()]() | |
+| io.prometheus.exporter.opentelemetry.serviceName | [OpenTelemetryExporter.Builder.serviceName()]() | |
+| io.prometheus.exporter.opentelemetry.serviceNamespace | [OpenTelemetryExporter.Builder.serviceNamespace()]() | |
+| io.prometheus.exporter.opentelemetry.serviceInstanceId | [OpenTelemetryExporter.Builder.serviceInstanceId()]() | |
+| io.prometheus.exporter.opentelemetry.serviceVersion | [OpenTelemetryExporter.Builder.serviceVersion()]() | |
+| io.prometheus.exporter.opentelemetry.resourceAttributes | [OpenTelemetryExporter.Builder.resourceAttributes()]() | (3) |
+
+
(1) Protocol can be `grpc` or `http/protobuf`.
(2) Format: `key1=value1,key2=value2`
(3) Format: `key1=value1,key2=value2`
-Many of these attributes can alternatively be configured via OpenTelemetry environment variables, like `OTEL_EXPORTER_OTLP_ENDPOINT`. The Prometheus metrics library has support for OpenTelemetry environment variables. See Javadoc for details.
+Many of these attributes can alternatively be configured via OpenTelemetry environment variables,
+like `OTEL_EXPORTER_OTLP_ENDPOINT`.
+The Prometheus metrics library has support for OpenTelemetry environment variables.
+See Javadoc for details.
+
+## Exporter PushGateway Properties
-Exporter PushGateway Properties
--------------------------------
+
-| Name | Javadoc | Note |
-|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|------|
-| io.prometheus.exporter.pushgateway.address | [PushGateway.Builder.address()](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.Builder.html#address(java.lang.String)) | |
-| io.prometheus.exporter.pushgateway.scheme | [PushGateway.Builder.scheme()](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.Builder.html#scheme(java.lang.String)) | |
-| io.prometheus.exporter.pushgateway.job | [PushGateway.Builder.job()](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.Builder.html#job(java.lang.String)) | |
+| Name | Javadoc | Note |
+| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
+| io.prometheus.exporter.pushgateway.address | [PushGateway.Builder.address()]() | |
+| io.prometheus.exporter.pushgateway.scheme | [PushGateway.Builder.scheme()]() | |
+| io.prometheus.exporter.pushgateway.job | [PushGateway.Builder.job()]() | |
+
diff --git a/docs/content/exporters/filter.md b/docs/content/exporters/filter.md
index 32dc0a56d..01ac48e69 100644
--- a/docs/content/exporters/filter.md
+++ b/docs/content/exporters/filter.md
@@ -5,14 +5,16 @@ weight: 2
All exporters support a `name[]` URL parameter for querying only specific metric names. Examples:
-* `/metrics?name[]=jvm_threads_current` will query the metric named `jvm_threads_current`.
-* `/metrics?name[]=jvm_threads_current&name[]=jvm_threads_daemon` will query two metrics, `jvm_threads_current` and `jvm_threads_daemon`.
+- `/metrics?name[]=jvm_threads_current` will query the metric named `jvm_threads_current`.
+- `/metrics?name[]=jvm_threads_current&name[]=jvm_threads_daemon` will query two metrics,
+ `jvm_threads_current` and `jvm_threads_daemon`.
-Add the following to the scape job configuration in `prometheus.yml` to make the Prometheus server send the `name[]` parameter:
+Add the following to the scape job configuration in `prometheus.yml`
+to make the Prometheus server send the `name[]` parameter:
```yaml
params:
- name[]:
- - jvm_threads_current
- - jvm_threads_daemon
+ name[]:
+ - jvm_threads_current
+ - jvm_threads_daemon
```
diff --git a/docs/content/exporters/formats.md b/docs/content/exporters/formats.md
index 189d13d56..a6485c84c 100644
--- a/docs/content/exporters/formats.md
+++ b/docs/content/exporters/formats.md
@@ -5,23 +5,28 @@ weight: 1
All exporters the following exposition formats:
-* OpenMetrics text format
-* Prometheus text format
-* Prometheus protobuf format
+- OpenMetrics text format
+- Prometheus text format
+- Prometheus protobuf format
Moreover, gzip encoding is supported for each of these formats.
## Scraping with a Prometheus server
-The Prometheus server sends an `Accept` header to specify which format is requested. By default, the Prometheus server will scrape OpenMetrics text format with gzip encoding. If the Prometheus server is started with `--enable-feature=native-histograms`, it will scrape Prometheus protobuf format instead.
+The Prometheus server sends an `Accept` header to specify which format is requested. By default, the
+Prometheus server will scrape OpenMetrics text format with gzip encoding. If the Prometheus server
+is started with `--enable-feature=native-histograms`, it will scrape Prometheus protobuf format
+instead.
## Viewing with a Web Browser
-If you view the `/metrics` endpoint with your Web browser you will see Prometheus text format. For quick debugging of the other formats, exporters provide a `debug` URL parameter:
+If you view the `/metrics` endpoint with your Web browser you will see Prometheus text format. For
+quick debugging of the other formats, exporters provide a `debug` URL parameter:
-* `/metrics?debug=openmetrics`: View OpenMetrics text format.
-* `/metrics?debug=text`: View Prometheus text format.
-* `/metrics?debug=prometheus-protobuf`: View a text representation of the Prometheus protobuf format.
+- `/metrics?debug=openmetrics`: View OpenMetrics text format.
+- `/metrics?debug=text`: View Prometheus text format.
+- `/metrics?debug=prometheus-protobuf`: View a text representation of the Prometheus protobuf
+ format.
## Exclude protobuf exposition format
diff --git a/docs/content/exporters/httpserver.md b/docs/content/exporters/httpserver.md
index e524b4cd1..4d0aab5f2 100644
--- a/docs/content/exporters/httpserver.md
+++ b/docs/content/exporters/httpserver.md
@@ -3,35 +3,41 @@ title: HTTPServer
weight: 3
---
-The `HTTPServer` is a standalone server for exposing a metric endpoint. A minimal example application for `HTTPServer` can be found in the [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory.
+The `HTTPServer` is a standalone server for exposing a metric endpoint. A minimal example
+application for `HTTPServer` can be found in
+the [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory.
```java
HTTPServer server = HTTPServer.builder()
- .port(9400)
- .buildAndStart();
+ .port(9400)
+ .buildAndStart();
```
-By default, `HTTPServer` binds to any IP address, you can change this with [hostname()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#hostname(java.lang.String)) or [inetAddress()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#inetAddress(java.net.InetAddress)).
+By default, `HTTPServer` binds to any IP address, you can change this with
+[hostname()]()
+or [inetAddress()]().
`HTTPServer` is configured with three endpoints:
-* `/metrics` for Prometheus scraping.
-* `/-/healthy` for simple health checks.
-* `/` the default handler is a static HTML page.
+- `/metrics` for Prometheus scraping.
+- `/-/healthy` for simple health checks.
+- `/` the default handler is a static HTML page.
-The default handler can be changed with [defaultHandler()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#defaultHandler(com.sun.net.httpserver.HttpHandler)).
+The default handler can be changed
+with [defaultHandler()]().
-Authentication and HTTPS
-------------------------
+## Authentication and HTTPS
-* [authenticator()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#authenticator(com.sun.net.httpserver.Authenticator)) is for configuring authentication.
-* [httpsConfigurator()](/client_java/api/io/prometheus/metrics/exporter/httpserver/HTTPServer.Builder.html#httpsConfigurator(com.sun.net.httpserver.HttpsConfigurator)) is for configuring HTTPS.
+- [authenticator()]()
+ is for configuring authentication.
+- [httpsConfigurator()]()
+ is for configuring HTTPS.
-You can find an example of authentication and SSL in the [jmx_exporter](https://github.com/prometheus/jmx_exporter).
+You can find an example of authentication and SSL in the
+[jmx_exporter](https://github.com/prometheus/jmx_exporter).
-Properties
-----------
+## Properties
See _config_ section (_todo_) on runtime configuration options.
-* `io.prometheus.exporter.httpServer.port`: The port to bind to.
+- `io.prometheus.exporter.httpServer.port`: The port to bind to.
diff --git a/docs/content/exporters/pushgateway.md b/docs/content/exporters/pushgateway.md
index 1ca2946b1..b4c531022 100644
--- a/docs/content/exporters/pushgateway.md
+++ b/docs/content/exporters/pushgateway.md
@@ -3,23 +3,28 @@ title: Pushgateway
weight: 5
---
-The [Prometheus Pushgateway](https://github.com/prometheus/pushgateway) exists to allow ephemeral and batch jobs to expose their metrics to Prometheus.
-Since these kinds of jobs may not exist long enough to be scraped, they can instead push their metrics to a Pushgateway.
+The [Prometheus Pushgateway](https://github.com/prometheus/pushgateway) exists to allow ephemeral
+and batch jobs to expose their metrics to Prometheus.
+Since these kinds of jobs may not exist long enough to be scraped, they can instead push their
+metrics to a Pushgateway.
The Pushgateway then exposes these metrics to Prometheus.
-The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) Java class allows you to push metrics to a Prometheus Pushgateway.
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) Java
+class allows you to push metrics to a Prometheus Pushgateway.
-Example
--------
+## Example
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-core:1.3.0'
implementation 'io.prometheus:prometheus-metrics-exporter-pushgateway:1.3.0'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -32,6 +37,7 @@ implementation 'io.prometheus:prometheus-metrics-exporter-pushgateway:1.3.0'
1.3.0
```
+
{{< /tab >}}
{{< /tabs >}}
@@ -66,10 +72,10 @@ public class ExampleBatchJob {
}
```
-Basic Auth
-----------
+## Basic Auth
-The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) supports basic authentication.
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports basic authentication.
```java
PushGateway pushGateway = PushGateway.builder()
@@ -80,10 +86,10 @@ PushGateway pushGateway = PushGateway.builder()
The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
-Bearer token
-----------
+## Bearer token
-The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) supports Bearer token authentication.
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports Bearer token authentication.
```java
PushGateway pushGateway = PushGateway.builder()
@@ -94,11 +100,10 @@ PushGateway pushGateway = PushGateway.builder()
The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
+## SSL
-SSL
----
-
-The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) supports SSL.
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports SSL.
```java
PushGateway pushGateway = PushGateway.builder()
@@ -109,10 +114,12 @@ PushGateway pushGateway = PushGateway.builder()
However, this requires that the JVM can validate the server certificate.
-If you want to skip certificate verification, you need to provide your own [HttpConnectionFactory](/client_java/api/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.html).
+If you want to skip certificate verification, you need to provide your own
+[HttpConnectionFactory](/client_java/api/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.html).
The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this.
-Configuration Properties
-------------------------
+## Configuration Properties
-The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) supports a couple of properties that can be configured at runtime. See [config](../../config/config).
+The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html)
+supports a couple of properties that can be configured at runtime.
+See [config]({{< relref "../config/config.md" >}}).
diff --git a/docs/content/exporters/servlet.md b/docs/content/exporters/servlet.md
index 36a5161cf..93b870b1d 100644
--- a/docs/content/exporters/servlet.md
+++ b/docs/content/exporters/servlet.md
@@ -3,13 +3,16 @@ title: Servlet
weight: 4
---
-The [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html) is a [Jakarta Servlet](https://jakarta.ee/specifications/servlet/) for exposing a metric endpoint.
+The
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+is a [Jakarta Servlet](https://jakarta.ee/specifications/servlet/) for exposing a metric endpoint.
-web.xml
--------
+## web.xml
The old-school way of configuring a servlet is in a `web.xml` file:
+
+
```xml
```
-Programmatic
-------------
-
-Today, most Servlet applications use an embedded Servlet container and configure Servlets programmatically rather than via `web.xml`.
-The API for that depends on the Servlet container.
-The [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory has an example of an embedded [Tomcat](https://tomcat.apache.org/) container with the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html) configured.
+
-Spring
-------
+## Programmatic
-You can use the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html) in Spring applications. See [our Spring doc]({{< relref "spring.md" >}}).
+Today, most Servlet applications use an embedded Servlet container and configure Servlets
+programmatically rather than via `web.xml`.
+The API for that depends on the Servlet container.
+The [examples](https://github.com/prometheus/client_java/tree/1.0.x/examples) directory has an
+example of an embedded
+[Tomcat](https://tomcat.apache.org/) container with the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+configured.
+
+## Spring
+
+You can use
+the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+in Spring applications.
+See [our Spring doc]({{< relref "spring.md" >}}).
diff --git a/docs/content/exporters/spring.md b/docs/content/exporters/spring.md
index 73e4b2549..fc0d946dd 100644
--- a/docs/content/exporters/spring.md
+++ b/docs/content/exporters/spring.md
@@ -3,33 +3,40 @@ title: Spring
weight: 5
---
-Alternative: Use Spring's Built-in Metrics Library
---------------------------------------------------
+## Alternative: Use Spring's Built-in Metrics Library
-[Spring Boot](https://spring.io/projects/spring-boot) has a built-in metric library named [Micrometer](https://micrometer.io/), which supports Prometheus exposition format and can be set up in three simple steps:
+[Spring Boot](https://spring.io/projects/spring-boot) has a built-in metric library named
+[Micrometer](https://micrometer.io/), which supports Prometheus
+exposition format and can be set up in three simple steps:
1. Add the `org.springframework.boot:spring-boot-starter-actuator` dependency.
2. Add the `io.micrometer:micrometer-registry-prometheus` as a _runtime_ dependency.
-3. Enable the Prometheus endpoint by adding the line `management.endpoints.web.exposure.include=prometheus` to `application.properties`.
+3. Enable the Prometheus endpoint by adding the line
+ `management.endpoints.web.exposure.include=prometheus` to `application.properties`.
Note that Spring's default Prometheus endpoint is `/actuator/prometheus`, not `/metrics`.
-In most cases the built-in Spring metrics library will work for you and you don't need the Prometheus Java library in Spring applications.
+In most cases the built-in Spring metrics library will work for you and you don't need the
+Prometheus Java library in Spring applications.
-Use the Prometheus Metrics Library in Spring
---------------------------------------------
+## Use the Prometheus Metrics Library in Spring
-However, you may have your reasons why you want to use the Prometheus metrics library in Spring anyway. Maybe you want full support for all Prometheus metric types, or you want to use the new Prometheus native histograms.
+However, you may have your reasons why you want to use the Prometheus metrics library in
+Spring anyway. Maybe you want full support for all Prometheus metric types,
+or you want to use the new Prometheus native histograms.
-The easiest way to use the Prometheus metrics library in Spring is to configure the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html) to expose metrics.
+The easiest way to use the Prometheus metrics library in Spring is to configure the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+to expose metrics.
Dependencies:
-* `prometheus-metrics-core`: The core metrics library.
-* `prometheus-metrics-exporter-servlet-jakarta`: For providing the `/metrics` endpoint.
-* `prometheus-metrics-instrumentation-jvm`: Optional - JVM metrics
+- `prometheus-metrics-core`: The core metrics library.
+- `prometheus-metrics-exporter-servlet-jakarta`: For providing the `/metrics` endpoint.
+- `prometheus-metrics-instrumentation-jvm`: Optional - JVM metrics
-The following is the complete source code of a Spring Boot REST service using the Prometheus metrics library:
+The following is the complete source code of a Spring Boot REST service using
+the Prometheus metrics library:
```java
import io.prometheus.metrics.core.metrics.Counter;
@@ -46,35 +53,40 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoApplication {
- private static final Counter requestCount = Counter.builder()
- .name("requests_total")
- .register();
-
- public static void main(String[] args) {
- SpringApplication.run(DemoApplication.class, args);
- JvmMetrics.builder().register();
- }
-
- @GetMapping("/")
- public String sayHello() throws InterruptedException {
- requestCount.inc();
- return "Hello, World!\n";
- }
-
- @Bean
- public ServletRegistrationBean createPrometheusMetricsEndpoint() {
- return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
- }
+ private static final Counter requestCount = Counter.builder()
+ .name("requests_total")
+ .register();
+
+ public static void main(String[] args) {
+ SpringApplication.run(DemoApplication.class, args);
+ JvmMetrics.builder().register();
+ }
+
+ @GetMapping("/")
+ public String sayHello() throws InterruptedException {
+ requestCount.inc();
+ return "Hello, World!\n";
+ }
+
+ @Bean
+ public ServletRegistrationBean createPrometheusMetricsEndpoint() {
+ return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
+ }
}
```
-The important part are the last three lines: They configure the [PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html) to expose metrics on `/metrics`:
+The important part are the last three lines: They configure the
+[PrometheusMetricsServlet](/client_java/api/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.html)
+to expose metrics on `/metrics`:
```java
+
@Bean
public ServletRegistrationBean createPrometheusMetricsEndpoint() {
- return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
+ return new ServletRegistrationBean<>(new PrometheusMetricsServlet(), "/metrics/*");
}
```
-The example provides a _Hello, world!_ endpoint on [http://localhost:8080](http://localhost:8080), and Prometheus metrics on [http://localhost:8080/metrics](http://localhost:8080/metrics).
+The example provides a _Hello, world!_ endpoint on
+[http://localhost:8080](http://localhost:8080), and Prometheus metrics on
+[http://localhost:8080/metrics](http://localhost:8080/metrics).
diff --git a/docs/content/getting-started/callbacks.md b/docs/content/getting-started/callbacks.md
index b94033fc5..514d74c2a 100644
--- a/docs/content/getting-started/callbacks.md
+++ b/docs/content/getting-started/callbacks.md
@@ -3,11 +3,14 @@ title: Callbacks
weight: 5
---
-The section on [metric types](../metric-types) showed how to use metrics that actively maintain their state.
+The section on [metric types]({{< relref "metric-types.md" >}})
+showed how to use metrics that actively maintain their state.
-This section shows how to create callback-based metrics, i.e. metrics that invoke a callback at scrape time to get the current values.
+This section shows how to create callback-based metrics, i.e. metrics that invoke a callback
+at scrape time to get the current values.
-For example, let's assume we have two instances of a `Cache`, a `coldCache` and a `hotCache`. The following implements a callback-based `cache_size_bytes` metric:
+For example, let's assume we have two instances of a `Cache`, a `coldCache` and a `hotCache`.
+The following implements a callback-based `cache_size_bytes` metric:
```java
Cache coldCache = new Cache();
@@ -27,7 +30,7 @@ GaugeWithCallback.builder()
The resulting text format looks like this:
-```
+```text
# TYPE cache_size_bytes gauge
# UNIT cache_size_bytes bytes
# HELP cache_size_bytes Size of the cache in Bytes.
@@ -35,15 +38,17 @@ cache_size_bytes{state="cold"} 78.0
cache_size_bytes{state="hot"} 83.0
```
-Better examples of callback metrics can be found in the `prometheus-metrics-instrumentation-jvm` module.
+Better examples of callback metrics can be found in the `prometheus-metrics-instrumentation-jvm`
+module.
The available callback metric types are:
-* `GaugeWithCallback` for gauges.
-* `CounterWithCallback` for counters.
-* `SummaryWithCallback` for summaries.
+- `GaugeWithCallback` for gauges.
+- `CounterWithCallback` for counters.
+- `SummaryWithCallback` for summaries.
-The API for gauges and counters is very similar. For summaries the callback has a few more parameters, because it accepts a count, a sum, and quantiles:
+The API for gauges and counters is very similar. For summaries the callback has a few more
+parameters, because it accepts a count, a sum, and quantiles:
```java
SummaryWithCallback.builder()
diff --git a/docs/content/getting-started/labels.md b/docs/content/getting-started/labels.md
index 5aeb5f215..d056a6ce6 100644
--- a/docs/content/getting-started/labels.md
+++ b/docs/content/getting-started/labels.md
@@ -5,7 +5,7 @@ weight: 3
The following shows an example of a Prometheus metric in text format:
-```
+```text
# HELP payments_total total number of payments
# TYPE payments_total counter
payments_total{status="error",type="paypal"} 1.0
@@ -13,12 +13,14 @@ payments_total{status="success",type="credit card"} 3.0
payments_total{status="success",type="paypal"} 2.0
```
-The example shows a counter metric named `payments_total` with two labels: `status` and `type`. Each individual data point (each line in text format) is identified by the unique combination of its metric name and its label name/value pairs.
+The example shows a counter metric named `payments_total` with two labels: `status` and `type`.
+Each individual data point (each line in text format) is identified by the unique combination of
+its metric name and its label name/value pairs.
-Creating a Metric with Labels
------------------------------
+## Creating a Metric with Labels
-Labels are supported for all metric types. We are using counters in this example, however the `labelNames()` and `labelValues()` methods are the same for other metric types.
+Labels are supported for all metric types. We are using counters in this example, however the
+`labelNames()` and `labelValues()` methods are the same for other metric types.
The following code creates the counter above.
@@ -34,10 +36,10 @@ counter.labelValues("paypal", "success").inc(2.0);
counter.labelValues("paypal", "error").inc(1.0);
```
-The label names have to be specified when the metric is created and cannot change. The label values are created on demand when values are observed.
+The label names have to be specified when the metric is created and cannot change. The label values
+are created on demand when values are observed.
-Creating a Metric without Labels
---------------------------------
+## Creating a Metric without Labels
Labels are optional. The following example shows a metric without labels:
@@ -50,12 +52,13 @@ Counter counter = Counter.builder()
counter.inc(3.0);
```
-Cardinality Explosion
----------------------
+## Cardinality Explosion
-Each combination of label names and values will result in a new data point, i.e. a new line in text format.
+Each combination of label names and values will result in a new data point, i.e. a new line in text
+format.
Therefore, a good label should have only a small number of possible values.
-If you select labels with many possible values, like unique IDs or timestamps, you may end up with an enormous number of data points.
+If you select labels with many possible values, like unique IDs or timestamps,
+you may end up with an enormous number of data points.
This is called cardinality explosion.
Here's a bad example, don't do this:
@@ -73,12 +76,12 @@ String timestamp = Long.toString(System.currentTimeMillis());
loginCount.labelValues(userId, timestamp).inc();
```
-Initializing Label Values
--------------------------
+## Initializing Label Values
If you register a metric without labels, it will show up immediately with initial value of zero.
-However, metrics with labels only show up after the label values are first used. In the example above
+However, metrics with labels only show up after the label values are first used. In the example
+above
```java
counter.labelValues("paypal", "error").inc();
@@ -86,13 +89,14 @@ counter.labelValues("paypal", "error").inc();
The data point
-```
+```text
payments_total{status="error",type="paypal"} 1.0
```
will jump from non-existent to value 1.0. You will never see it with value 0.0.
-This is usually not an issue. However, if you find this annoying and want to see all possible label values from the start, you can initialize label values with `initLabelValues()` like this:
+This is usually not an issue. However, if you find this annoying and want to see all possible label
+values from the start, you can initialize label values with `initLabelValues()` like this:
```java
Counter counter = Counter.builder()
@@ -109,7 +113,7 @@ counter.initLabelValues("paypal", "error");
Now the four combinations will be visible from the start with initial value zero.
-```
+```text
# HELP payments_total total number of payments
# TYPE payments_total counter
payments_total{status="error",type="credit card"} 0.0
@@ -118,10 +122,10 @@ payments_total{status="success",type="credit card"} 0.0
payments_total{status="success",type="paypal"} 0.0
```
-Expiring Unused Label Values
-----------------------------
+## Expiring Unused Label Values
-There is no automatic expiry of unused label values (yet). Once a set of label values is used, it will remain there forever.
+There is no automatic expiry of unused label values (yet). Once a set of label values is used, it
+will remain there forever.
However, you can programmatically remove label values like this:
@@ -130,8 +134,7 @@ counter.remove("paypal", "error");
counter.remove("paypal", "success");
```
-Const Labels
-------------
+## Const Labels
If you have labels values that never change, you can specify them in the builder as `constLabels()`:
@@ -144,6 +147,7 @@ Counter counter = Counter.builder()
.register();
```
-However, most use cases for `constLabels()` are better covered by target labels set by the scraping Prometheus server,
+However, most use cases for `constLabels()` are better covered by target labels set by the scraping
+Prometheus server,
or by one specific metric (e.g. a `build_info` or a `machine_role` metric). See also
-[target labels, not static scraped labels](https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels).
+[target labels, not static scraped labels](https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels).
diff --git a/docs/content/getting-started/metric-types.md b/docs/content/getting-started/metric-types.md
index e10d51e9a..3bcda84fe 100644
--- a/docs/content/getting-started/metric-types.md
+++ b/docs/content/getting-started/metric-types.md
@@ -1,19 +1,25 @@
---
-title: 'Metric Types'
+title: "Metric Types"
weight: 4
---
-The Prometheus Java metrics library implements the metric types defined in the [OpenMetrics](https://openmetrics.io) standard:
+The Prometheus Java metrics library implements the metric types defined in
+the [OpenMetrics](https://openmetrics.io) standard:
{{< toc >}}
-Counter
--------
+## Counter
-Counter is the most common and useful metric type. Counters can only increase, but never decrease. In the Prometheus query language, the [rate()](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate) function is often used for counters to calculate the average increase per second.
+Counter is the most common and useful metric type. Counters can only increase, but never decrease.
+In the Prometheus query language,
+the [rate()](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate) function is
+often used for counters to calculate the average increase per second.
{{< hint type=note >}}
-Counter values do not need to be integers. In many cases counters represent a number of events (like the number of requests), and in that case the counter value is an integer. However, counters can also be used for something like "total time spent doing something" in which case the counter value is a floating point number.
+Counter values do not need to be integers. In many cases counters represent a number of events (like
+the number of requests), and in that case the counter value is an integer. However, counters can
+also be used for something like "total time spent doing something" in which case the counter value
+is a floating point number.
{{< /hint >}}
Here's an example of a counter:
@@ -28,12 +34,14 @@ Counter serviceTimeSeconds = Counter.builder()
serviceTimeSeconds.inc(Unit.millisToSeconds(200));
```
-The resulting counter has the value `0.2`. As `SECONDS` is the standard time unit in Prometheus, the `Unit` utility class has methods to convert other time units to seconds.
+The resulting counter has the value `0.2`. As `SECONDS` is the standard time unit in Prometheus, the
+`Unit` utility class has methods to convert other time units to seconds.
-As defined in [OpenMetrics](https://openmetrics.io/), counter metric names must have the `_total` suffix. If you create a counter without the `_total` suffix the suffix will be appended automatically.
+As defined in [OpenMetrics](https://openmetrics.io/), counter metric names must have the `_total`
+suffix. If you create a counter without the `_total` suffix the suffix will be appended
+automatically.
-Gauge
------
+## Gauge
Gauges are current measurements, such as the current temperature in Celsius.
@@ -48,27 +56,36 @@ Gauge temperature = Gauge.builder()
temperature.labelValues("Berlin").set(22.3);
```
-Histogram
----------
+## Histogram
-Histograms are for observing distributions, like latency distributions for HTTP services or the distribution of request sizes.
-Unlike with counters and gauges, each histogram data point has a complex data structure representing different aspects of the distribution:
+Histograms are for observing distributions, like latency distributions for HTTP services or the
+distribution of request sizes.
+Unlike with counters and gauges, each histogram data point has a complex data structure representing
+different aspects of the distribution:
-* Count: The total number of observations.
-* Sum: The sum of all observed values, e.g. the total time spent serving requests.
-* Buckets: The histogram buckets representing the distribution.
+- Count: The total number of observations.
+- Sum: The sum of all observed values, e.g. the total time spent serving requests.
+- Buckets: The histogram buckets representing the distribution.
Prometheus supports two flavors of histograms:
-* Classic histograms: Bucket boundaries are explicitly defined when the histogram is created.
-* Native histograms (exponential histograms): Infinitely many virtual buckets.
+- Classic histograms: Bucket boundaries are explicitly defined when the histogram is created.
+- Native histograms (exponential histograms): Infinitely many virtual buckets.
-By default, histograms maintain both flavors. Which one is used depends on the scrape request from the Prometheus server.
-* By default, the Prometheus server will scrape metrics in OpenMetrics format and get the classic histogram flavor.
-* If the Prometheus server is started with `--enable-feature=native-histograms`, it will request metrics in Prometheus protobuf format and ingest the native histogram.
-* If the Prometheus server is started with `--enable-feature=native-histogram` and the scrape config has the option `scrape_classic_histograms: true`, it will request metrics in Prometheus protobuf format and ingest both, the classic and the native flavor. This is great for migrating from classic histograms to native histograms.
+By default, histograms maintain both flavors. Which one is used depends on the scrape request from
+the Prometheus server.
-See [examples/example-native-histogram](https://github.com/prometheus/client_java/tree/1.0.x/examples/example-native-histogram) for an example.
+- By default, the Prometheus server will scrape metrics in OpenMetrics format and get the classic
+ histogram flavor.
+- If the Prometheus server is started with `--enable-feature=native-histograms`, it will request
+ metrics in Prometheus protobuf format and ingest the native histogram.
+- If the Prometheus server is started with `--enable-feature=native-histogram` and the scrape config
+ has the option `scrape_classic_histograms: true`, it will request metrics in Prometheus protobuf
+ format and ingest both, the classic and the native flavor. This is great for migrating from
+ classic histograms to native histograms.
+
+See [examples/example-native-histogram](https://github.com/prometheus/client_java/tree/1.0.x/examples/example-native-histogram)
+for an example.
```java
Histogram duration = Histogram.builder()
@@ -83,17 +100,30 @@ long start = System.nanoTime();
duration.labelValues("GET", "/", "200").observe(Unit.nanosToSeconds(System.nanoTime() - start));
```
-Histograms implement the [TimerApi](/client_java/api/io/prometheus/metrics/core/datapoints/TimerApi.html) interface, which provides convenience methods for measuring durations.
+Histograms implement
+the [TimerApi](/client_java/api/io/prometheus/metrics/core/datapoints/TimerApi.html) interface,
+which provides convenience methods for measuring durations.
-The histogram builder provides a lot of configuration for fine-tuning the histogram behavior. In most cases you don't need them, defaults are good. The following is an incomplete list showing the most important options:
+The histogram builder provides a lot of configuration for fine-tuning the histogram behavior. In
+most cases you don't need them, defaults are good. The following is an incomplete list showing the
+most important options:
-* `nativeOnly()` / `classicOnly()`: Create a histogram with one representation only.
-* `classicBuckets(...)`: Set the classic bucket boundaries. Default buckets are `.005`, `.01`, `.025`, `.05`, `.1`, `.25`, `.5`, `1`, `2.5`, `5`, `and 10`. The default bucket boundaries are designed for measuring request durations in seconds.
-* `nativeMaxNumberOfBuckets()`: Upper limit for the number of native histogram buckets. Default is 160. When the maximum is reached, the native histogram automatically reduces resolution to stay below the limit.
+- `nativeOnly()` / `classicOnly()`: Create a histogram with one representation only.
+- `classicBuckets(...)`: Set the classic bucket boundaries. Default buckets are `.005`, `.01`,
+ `.025`, `.05`, `.1`, `.25`, `.5`, `1`, `2.5`, `5`, `and 10`. The default bucket boundaries are
+ designed for measuring request durations in seconds.
+- `nativeMaxNumberOfBuckets()`: Upper limit for the number of native histogram buckets.
+ Default is 160. When the maximum is reached, the native histogram automatically
+ reduces resolution to stay below the limit.
-See Javadoc for [Histogram.Builder](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html) for a complete list of options. Some options can be configured at runtime, see [config](../../config/config).
+See Javadoc
+for [Histogram.Builder](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html)
+for a complete list of options. Some options can be configured at runtime,
+see [config]({{< relref "../config/config.md" >}}).
-Histograms and summaries are both used for observing distributions. Therefore, the both implement the `DistributionDataPoint` interface. Using the `DistributionDataPoint` interface directly gives you the option to switch between histograms and summaries later with minimal code changes.
+Histograms and summaries are both used for observing distributions. Therefore, the both implement
+the `DistributionDataPoint` interface. Using the `DistributionDataPoint` interface directly gives
+you the option to switch between histograms and summaries later with minimal code changes.
Example of using the `DistributionDataPoint` interface for a histogram without labels:
@@ -128,10 +158,10 @@ successfulEvents.observe(0.7);
erroneousEvents.observe(0.2);
```
-Summary
--------
+## Summary
-Like histograms, summaries are for observing distributions. Each summary data point has a count and a sum like a histogram data point.
+Like histograms, summaries are for observing distributions. Each summary data point has a count and
+a sum like a histogram data point.
However, rather than histogram buckets summaries maintain quantiles.
```java
@@ -148,26 +178,37 @@ Summary requestLatency = Summary.builder()
requestLatency.labelValues("ok").observe(2.7);
```
-The example above creates a summary with the 50th percentile (median), the 95th percentile, and the 99th percentile. Quantiles are optional, you can create a summary without quantiles if all you need is the count and the sum.
+The example above creates a summary with the 50th percentile (median), the 95th percentile, and the
+99th percentile. Quantiles are optional, you can create a summary without quantiles if all you need
+is the count and the sum.
{{< hint type=note >}}
-The terms "percentile" and "quantile" mean the same thing. We use percentile when we express it as a number in [0, 100], and we use quantile when we express it as a number in [0.0, 1.0].
+The terms "percentile" and "quantile" mean the same thing. We use percentile when we express it as a
+number in [0, 100], and we use quantile when we express it as a number in [0.0, 1.0].
{{< /hint >}}
-The second parameter to `quantile()` is the maximum acceptable error. The call `.quantile(0.5, 0.01)` means that the actual quantile is somewhere in [0.49, 0.51]. Higher precision means higher memory usage.
+The second parameter to `quantile()` is the maximum acceptable error. The call
+`.quantile(0.5, 0.01)` means that the actual quantile is somewhere in [0.49, 0.51]. Higher precision
+means higher memory usage.
-The 0.0 quantile (min value) and the 1.0 quantile (max value) are special cases because you can get the precise values (error 0.0) with almost no memory overhead.
+The 0.0 quantile (min value) and the 1.0 quantile (max value) are special cases because you can get
+the precise values (error 0.0) with almost no memory overhead.
-Quantile values are calculated based on a 5 minutes moving time window. The default time window can be changed with `maxAgeSeconds()` and `numberOfAgeBuckets()`.
+Quantile values are calculated based on a 5 minutes moving time window. The default time window can
+be changed with `maxAgeSeconds()` and `numberOfAgeBuckets()`.
-Some options can be configured at runtime, see [config](../../config/config).
+Some options can be configured at runtime, see [config]({{< relref "../config/config.md" >}}).
-In general you should prefer histograms over summaries. The Prometheus query language has a function [histogram_quantile()](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile) for calculating quantiles from histograms. The advantage of query-time quantile calculation is that you can aggregate histograms before calculating the quantile. With summaries you must use the quantile with all its labels as it is.
+In general you should prefer histograms over summaries. The Prometheus query language has a
+function [histogram_quantile()](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile)
+for calculating quantiles from histograms. The advantage of query-time quantile calculation is that
+you can aggregate histograms before calculating the quantile. With summaries you must use the
+quantile with all its labels as it is.
-Info
-----
+## Info
-Info metrics are used to expose textual information which should not change during process lifetime. The value of an Info metric is always `1`.
+Info metrics are used to expose textual information which should not change during process lifetime.
+The value of an Info metric is always `1`.
```java
Info info = Info.builder()
@@ -185,20 +226,27 @@ info.setLabelValues(version, vendor, runtime);
The info above looks as follows in OpenMetrics text format:
-```
+
+
+```text
# TYPE jvm_runtime info
# HELP jvm_runtime JVM runtime info
jvm_runtime_info{runtime="OpenJDK Runtime Environment",vendor="Oracle Corporation",version="1.8.0_382-b05"} 1
```
-The example is taken from the `prometheus-metrics-instrumentation-jvm` module, so if you have `JvmMetrics` registered you should have a `jvm_runtime_info` metric out-of-the-box.
+
-As defined in [OpenMetrics](https://openmetrics.io/), info metric names must have the `_info` suffix. If you create a counter without the `_info` suffix the suffix will be appended automatically.
+The example is taken from the `prometheus-metrics-instrumentation-jvm` module, so if you have
+`JvmMetrics` registered you should have a `jvm_runtime_info` metric out-of-the-box.
-StateSet
---------
+As defined in [OpenMetrics](https://openmetrics.io/), info metric names must have the `_info`
+suffix. If you create a counter without the `_info` suffix the suffix will be appended
+automatically.
-StateSet are a niche metric type in the OpenMetrics standard that is rarely used. The main use case is to signal which feature flags are enabled.
+## StateSet
+
+StateSet are a niche metric type in the OpenMetrics standard that is rarely used. The main use case
+is to signal which feature flags are enabled.
```java
StateSet stateSet = StateSet.builder()
@@ -214,16 +262,17 @@ stateSet.labelValues("dev").setTrue("feature2");
The OpenMetrics text format looks like this:
-```
+```text
# TYPE feature_flags stateset
# HELP feature_flags Feature flags
feature_flags{env="dev",feature_flags="feature1"} 0
feature_flags{env="dev",feature_flags="feature2"} 1
```
-GaugeHistogram and Unknown
---------------------------
+## GaugeHistogram and Unknown
-These types are defined in the [OpenMetrics](https://openmetrics.io/) standard but not implemented in the `prometheus-metrics-core` API.
+These types are defined in the [OpenMetrics](https://openmetrics.io/) standard but not implemented
+in the `prometheus-metrics-core` API.
However, `prometheus-metrics-model` implements the underlying data model for these types.
-To use these types, you need to implement your own `Collector` where the `collect()` method returns an `UnknownSnapshot` or a `HistogramSnapshot` with `.gaugeHistogram(true)`.
+To use these types, you need to implement your own `Collector` where the `collect()` method returns
+an `UnknownSnapshot` or a `HistogramSnapshot` with `.gaugeHistogram(true)`.
diff --git a/docs/content/getting-started/multi-target.md b/docs/content/getting-started/multi-target.md
index 93e37d9af..16f85ac40 100644
--- a/docs/content/getting-started/multi-target.md
+++ b/docs/content/getting-started/multi-target.md
@@ -7,108 +7,118 @@ weight: 7
This is for the upcoming release 1.1.0.
{{< /hint >}}
-To support multi-target pattern you can create a custom collector overriding the purposed internal method in ExtendedMultiCollector
+To support multi-target pattern you can create a custom collector overriding the purposed internal
+method in ExtendedMultiCollector
see SampleExtendedMultiCollector in io.prometheus.metrics.examples.httpserver
+
+
```java
public class SampleExtendedMultiCollector extends ExtendedMultiCollector {
- public SampleExtendedMultiCollector() {
- super();
- }
-
- @Override
- protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeRequest) {
-
- GaugeSnapshot.Builder gaugeBuilder = GaugeSnapshot.builder();
- gaugeBuilder.name("x_load").help("process load");
-
- CounterSnapshot.Builder counterBuilder = CounterSnapshot.builder();
- counterBuilder.name(PrometheusNaming.sanitizeMetricName("x_calls_total")).help("invocations");
-
- String[] targetNames = scrapeRequest.getParameterValues("target");
- String targetName;
- String[] procs = scrapeRequest.getParameterValues("proc");
- if (targetNames == null || targetNames.length == 0) {
- targetName = "defaultTarget";
- procs = null; //ignore procs param
- } else {
- targetName = targetNames[0];
- }
- Builder counterDataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder();
- io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot.Builder gaugeDataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder();
- Labels lbls = Labels.of("target", targetName);
-
- if (procs == null || procs.length == 0) {
- counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
- gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
- counterDataPointBuilder.value(70);
- gaugeDataPointBuilder.value(Math.random());
-
- counterBuilder.dataPoint(counterDataPointBuilder.build());
- gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
-
- } else {
- for (int i = 0; i < procs.length; i++) {
- counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
- gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
- counterDataPointBuilder.value(Math.random());
- gaugeDataPointBuilder.value(Math.random());
-
- counterBuilder.dataPoint(counterDataPointBuilder.build());
- gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
- }
- }
- Collection snaps = new ArrayList();
- snaps.add(counterBuilder.build());
- snaps.add(gaugeBuilder.build());
- MetricSnapshots msnaps = new MetricSnapshots(snaps);
- return msnaps;
- }
-
- public List getPrometheusNames() {
- List names = new ArrayList();
- names.add("x_calls_total");
- names.add("x_load");
- return names;
- }
+ public SampleExtendedMultiCollector() {
+ super();
+ }
+
+ @Override
+ protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeRequest) {
+
+ GaugeSnapshot.Builder gaugeBuilder = GaugeSnapshot.builder();
+ gaugeBuilder.name("x_load").help("process load");
+
+ CounterSnapshot.Builder counterBuilder = CounterSnapshot.builder();
+ counterBuilder.name(PrometheusNaming.sanitizeMetricName("x_calls_total")).help("invocations");
+
+ String[] targetNames = scrapeRequest.getParameterValues("target");
+ String targetName;
+ String[] procs = scrapeRequest.getParameterValues("proc");
+ if (targetNames == null || targetNames.length == 0) {
+ targetName = "defaultTarget";
+ procs = null; //ignore procs param
+ } else {
+ targetName = targetNames[0];
+ }
+ Builder counterDataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder();
+ io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot.Builder gaugeDataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder();
+ Labels lbls = Labels.of("target", targetName);
+
+ if (procs == null || procs.length == 0) {
+ counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
+ gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
+ counterDataPointBuilder.value(70);
+ gaugeDataPointBuilder.value(Math.random());
+
+ counterBuilder.dataPoint(counterDataPointBuilder.build());
+ gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
+
+ } else {
+ for (int i = 0; i < procs.length; i++) {
+ counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
+ gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
+ counterDataPointBuilder.value(Math.random());
+ gaugeDataPointBuilder.value(Math.random());
+
+ counterBuilder.dataPoint(counterDataPointBuilder.build());
+ gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
+ }
+ }
+ Collection snaps = new ArrayList();
+ snaps.add(counterBuilder.build());
+ snaps.add(gaugeBuilder.build());
+ MetricSnapshots msnaps = new MetricSnapshots(snaps);
+ return msnaps;
+ }
+
+ public List getPrometheusNames() {
+ List names = new ArrayList();
+ names.add("x_calls_total");
+ names.add("x_load");
+ return names;
+ }
}
```
-`PrometheusScrapeRequest` provides methods to access http-related infos from the request originally received by the endpoint
+
+
+
+`PrometheusScrapeRequest` provides methods to access http-related infos from the request originally
+received by the endpoint
```java
public interface PrometheusScrapeRequest {
- String getRequestURI();
+ String getRequestURI();
- String[] getParameterValues(String name);
+ String[] getParameterValues(String name);
}
```
-
Sample Prometheus scrape_config
+```yaml
+- job_name: "multi-target"
+
+ # metrics_path defaults to '/metrics'
+ # scheme defaults to 'http'.
+ params:
+ proc: [proc1, proc2]
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: localhost:9401
+ static_configs:
+ - targets: ["target1", "target2"]
```
- - job_name: "multi-target"
-
- # metrics_path defaults to '/metrics'
- # scheme defaults to 'http'.
- params:
- proc: [proc1, proc2]
- relabel_configs:
- - source_labels: [__address__]
- target_label: __param_target
- - source_labels: [__param_target]
- target_label: instance
- - target_label: __address__
- replacement: localhost:9401
- static_configs:
- - targets: ["target1", "target2"]
-```
+
It's up to the specific MultiCollector implementation how to interpret the _target_ parameter.
-It might be an explicit real target (i.e. via host name/ip address) or as an alias in some internal configuration.
-The latter is more suitable when the MultiCollector implementation is a proxy (see https://github.com/prometheus/snmp_exporter)
-In this case, invoking real target might require extra parameters (e.g. credentials) that might be complex to manage in Prometheus configuration
+It might be an explicit real target (i.e. via host name/ip address) or as an alias in some internal
+configuration.
+The latter is more suitable when the MultiCollector implementation is a proxy (
+see )
+In this case, invoking real target might require extra parameters (e.g. credentials) that might be
+complex to manage in Prometheus configuration
(not considering the case where the proxy might become an "open relay")
diff --git a/docs/content/getting-started/performance.md b/docs/content/getting-started/performance.md
index 43e95c430..31b8de162 100644
--- a/docs/content/getting-started/performance.md
+++ b/docs/content/getting-started/performance.md
@@ -5,10 +5,10 @@ weight: 6
This section has tips on how to use the Prometheus Java client in high performance applications.
-Specify Label Values Only Once
-------------------------------
+## Specify Label Values Only Once
-For high performance applications, we recommend to specify label values only once, and then use the data point directly.
+For high performance applications, we recommend to specify label values only once, and then use the
+data point directly.
This applies to all metric types. Let's use a counter as an example here:
@@ -26,7 +26,8 @@ You could increment the counter above like this:
requestCount.labelValue("/", "200").inc();
```
-However, the line above does not only increment the counter, it also looks up the label values to find the right data point.
+However, the line above does not only increment the counter, it also looks up the label values to
+find the right data point.
In high performance applications you can optimize this by looking up the data point only once:
@@ -40,16 +41,21 @@ Now, you can increment the data point directly, which is a highly optimized oper
successfulCalls.inc();
```
-Enable Only One Histogram Representation
-----------------------------------------
+## Enable Only One Histogram Representation
-By default, histograms maintain two representations under the hood: The classic histogram representation with static buckets, and the native histogram representation with dynamic buckets.
+By default, histograms maintain two representations under the hood: The classic histogram
+representation with static buckets, and the native histogram representation with dynamic buckets.
-While this default provides the flexibility to scrape different representations at runtime, it comes at a cost, because maintaining multiple representations causes performance overhead.
+While this default provides the flexibility to scrape different representations at runtime, it comes
+at a cost, because maintaining multiple representations causes performance overhead.
-In performance critical applications we recommend to use either the classic representation or the native representation, but not both.
+In performance critical applications we recommend to use either the classic representation or the
+native representation, but not both.
-You can either configure this in code for each histogram by calling [classicOnly()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#classicOnly()) or [nativeOnly()](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.Builder.html#nativeOnly()), or you use the corresponding [config options](../../config/config/).
+You can either configure this in code for each histogram by
+calling [classicOnly()]()
+or [nativeOnly()](),
+or you use the corresponding [config options]({{< relref "../config/config.md" >}}).
One way to do this is with system properties in the command line when you start your application
@@ -63,7 +69,10 @@ or
java -Dio.prometheus.metrics.histogramNativeOnly=true my-app.jar
```
-If you don't want to add a command line parameter every time you start your application, you can add a `prometheus.properties` file to your classpath (put it in the `src/main/resources/` directory so that it gets packed into your JAR file). The `prometheus.properties` file should have the following line:
+If you don't want to add a command line parameter every time you start your application, you can add
+a `prometheus.properties` file to your classpath (put it in the `src/main/resources/` directory so
+that it gets packed into your JAR file). The `prometheus.properties` file should have the following
+line:
```properties
io.prometheus.metrics.histogramClassicOnly=true
@@ -75,4 +84,5 @@ or
io.prometheus.metrics.histogramNativeOnly=true
```
-Future releases will add more configuration options, like support for configuration via environment variable`IO_PROMETHEUS_METRICS_HISTOGRAM_NATIVE_ONLY=true`.
+Future releases will add more configuration options, like support for configuration via environment
+variable`IO_PROMETHEUS_METRICS_HISTOGRAM_NATIVE_ONLY=true`.
diff --git a/docs/content/getting-started/quickstart.md b/docs/content/getting-started/quickstart.md
index 27b7c13f5..7974b26c9 100644
--- a/docs/content/getting-started/quickstart.md
+++ b/docs/content/getting-started/quickstart.md
@@ -7,22 +7,26 @@ This tutorial shows the quickest way to get started with the Prometheus Java met
{{< toc >}}
-# Dependencies
+## Dependencies
We use the following dependencies:
-* `prometheus-metrics-core` is the actual metrics library.
-* `prometheus-metrics-instrumentation-jvm` provides out-of-the-box JVM metrics.
-* `prometheus-metrics-exporter-httpserver` is a standalone HTTP server for exposing Prometheus metrics.
-{{< tabs "deps" >}}
-{{< tab "Gradle" >}}
-```
+- `prometheus-metrics-core` is the actual metrics library.
+- `prometheus-metrics-instrumentation-jvm` provides out-of-the-box JVM metrics.
+- `prometheus-metrics-exporter-httpserver` is a standalone HTTP server for exposing Prometheus
+ metrics.
+ {{< tabs "deps" >}}
+ {{< tab "Gradle" >}}
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-core:$version'
implementation 'io.prometheus:prometheus-metrics-instrumentation-jvm:$version'
implementation 'io.prometheus:prometheus-metrics-exporter-httpserver:$version'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -40,25 +44,29 @@ implementation 'io.prometheus:prometheus-metrics-exporter-httpserver:$version'
$version
```
+
{{< /tab >}}
{{< /tabs >}}
-There are alternative exporters as well, for example if you are using a Servlet container like Tomcat or Undertow you might want to use `prometheus-exporter-servlet-jakarta` rather than a standalone HTTP server.
+There are alternative exporters as well, for example if you are using a Servlet container like
+Tomcat or Undertow you might want to use `prometheus-exporter-servlet-jakarta` rather than a
+standalone HTTP server.
{{< hint type=note >}}
If you do not use the protobuf exposition format, you can
-[exclude](../../exporters/formats#exclude-protobuf-exposition-format)
+[exclude]({{< relref "quickstart.md#exclude-protobuf-exposition-format" >}})
it from the dependencies.
{{< /hint >}}
-# Dependency management
+## Dependency management
A Bill of Material
-([BOM](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms))
+([BOM](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms))
ensures that versions of dependencies (including transitive ones) are aligned.
-This is especially important when using Spring Boot, which manages some of the dependencies of the project.
+This is especially important when using Spring Boot, which manages some of the dependencies of the
+project.
You should omit the version number of the dependencies in your build file if you are using a BOM.
@@ -138,7 +146,7 @@ The following example shows how to import the Prometheus Java metrics BOMs using
{{< /tab >}}
{{< /tabs >}}
-# Example Application
+## Example Application
```java
import io.prometheus.metrics.core.metrics.Counter;
@@ -167,34 +175,38 @@ public class App {
.port(9400)
.buildAndStart();
- System.out.println("HTTPServer listening on port http://localhost:" + server.getPort() + "/metrics");
+ System.out.println("HTTPServer listening on port http://localhost:" +
+ server.getPort() + "/metrics");
Thread.currentThread().join(); // sleep forever
}
}
```
-# Result
+## Result
-Run the application and view [http://localhost:9400/metrics](http://localhost:9400/metrics) with your browser to see the raw metrics. You should see the `my_count_total` metric as shown below plus the `jvm_` and `process_` metrics coming from `JvmMetrics`.
+Run the application and view [http://localhost:9400/metrics](http://localhost:9400/metrics) with
+your browser to see the raw metrics. You should see the `my_count_total` metric as shown below plus
+the `jvm_` and `process_` metrics coming from `JvmMetrics`.
-```
+```text
# HELP my_count_total example counter
# TYPE my_count_total counter
my_count_total{status="error"} 1.0
my_count_total{status="ok"} 2.0
```
-# Prometheus Configuration
+## Prometheus Configuration
-To scrape the metrics with a Prometheus server, download the latest Prometheus server [release](https://github.com/prometheus/prometheus/releases), and configure the `prometheus.yml` file as follows:
+To scrape the metrics with a Prometheus server, download the latest Prometheus
+server [release](https://github.com/prometheus/prometheus/releases), and configure the
+`prometheus.yml` file as follows:
```yaml
global:
scrape_interval: 10s # short interval for manual testing
scrape_configs:
-
- job_name: "java-example"
static_configs:
- targets: ["localhost:9400"]
diff --git a/docs/content/getting-started/registry.md b/docs/content/getting-started/registry.md
index 7ae1bcbff..afebbb304 100644
--- a/docs/content/getting-started/registry.md
+++ b/docs/content/getting-started/registry.md
@@ -3,10 +3,10 @@ title: Registry
weight: 2
---
-In order to expose metrics, you need to register them with a `PrometheusRegistry`. We are using a counter as an example here, but the `register()` method is the same for all metric types.
+In order to expose metrics, you need to register them with a `PrometheusRegistry`. We are using a
+counter as an example here, but the `register()` method is the same for all metric types.
-Registering a Metrics with the Default Registry
------------------------------------------------
+## Registering a Metrics with the Default Registry
```java
Counter eventsTotal = Counter.builder()
@@ -15,10 +15,10 @@ Counter eventsTotal = Counter.builder()
.register(); // <-- implicitly uses PrometheusRegistry.defaultRegistry
```
-The `register()` call above builds the counter and registers it with the global static `PrometheusRegistry.defaultRegistry`. Using the default registry is recommended.
+The `register()` call above builds the counter and registers it with the global static
+`PrometheusRegistry.defaultRegistry`. Using the default registry is recommended.
-Registering a Metrics with a Custom Registry
---------------------------------------------
+## Registering a Metrics with a Custom Registry
You can also register your metric with a custom registry:
@@ -31,10 +31,10 @@ Counter eventsTotal = Counter.builder()
.register(myRegistry);
```
-Registering a Metric with Multiple Registries
----------------------------------------------
+## Registering a Metric with Multiple Registries
-As an alternative to calling `register()` directly, you can `build()` metrics without registering them,
+As an alternative to calling `register()` directly, you can `build()` metrics without registering
+them,
and register them later:
```java
@@ -51,7 +51,7 @@ Counter eventsTotal = Counter.builder()
PrometheusRegistry.defaultRegistry.register(eventsTotal);
// register the counter with a custom registry.
-// This is ok, you can register a metric with multiple registries.
+// This is OK, you can register a metric with multiple registries.
PrometheusRegistry myRegistry = new PrometheusRegistry();
myRegistry.register(eventsTotal);
@@ -60,10 +60,10 @@ myRegistry.register(eventsTotal);
Custom registries are useful if you want to maintain different scopes of metrics, like
a debug registry with a lot of metrics, and a default registry with only a few metrics.
-IllegalArgumentException: Duplicate Metric Name in Registry
------------------------------------------------------------
+## IllegalArgumentException: Duplicate Metric Name in Registry
-While it is ok to register the same metric with multiple registries, it is illegal to register the same metric name multiple times with the same registry.
+While it is OK to register the same metric with multiple registries, it is illegal to register the
+same metric name multiple times with the same registry.
The following code will throw an `IllegalArgumentException`:
```java
@@ -75,13 +75,13 @@ Counter eventsTotal1 = Counter.builder()
Counter eventsTotal2 = Counter.builder()
.name("events_total")
.help("Total number of events")
- .register(); // <-- IllegalArgumentException, because a metric with that name is already registered
+ .register(); // IllegalArgumentException, because a metric with that name is already registered
```
-Unregistering a Metric
-----------------------
+## Unregistering a Metric
-There is no automatic expiry of unused metrics (yet), once a metric is registered it will remain registered forever.
+There is no automatic expiry of unused metrics (yet), once a metric is registered it will remain
+registered forever.
However, you can programmatically unregistered an obsolete metric like this:
diff --git a/docs/content/instrumentation/caffeine.md b/docs/content/instrumentation/caffeine.md
index dde7e561a..104a9b9fa 100644
--- a/docs/content/instrumentation/caffeine.md
+++ b/docs/content/instrumentation/caffeine.md
@@ -8,11 +8,14 @@ provided by caffeine `Cache` objects into prometheus metrics.
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-instrumentation-caffeine:1.3.2'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -20,17 +23,18 @@ implementation 'io.prometheus:prometheus-metrics-instrumentation-caffeine:1.3.2'
1.3.2
```
+
{{< /tab >}}
{{< /tabs >}}
In order to collect metrics:
- * A single `CacheMetricsCollector` instance must be registered with the registry;
- * Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
- * The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
- `CacheMetricsCollector` instance with a unique name, which will be used as the value of the
- `cache` label on the exported metrics;
- * If the `recordStats` option is not set, most metrics will only return zero values;
+- A single `CacheMetricsCollector` instance must be registered with the registry;
+ - Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
+- The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
+ `CacheMetricsCollector` instance with a unique name, which will be used as the value of the
+ `cache` label on the exported metrics;
+ - If the `recordStats` option is not set, most metrics will only return zero values;
```java
var cache = Caffeine.newBuilder().recordStats().build();
@@ -48,12 +52,11 @@ does not exist, i.e. a constructor call `new CacheMetricsCollector()` is the onl
All example metrics on this page will use the `mycache` label value.
-Generic Cache Metrics
----------------------
+## Generic Cache Metrics
For all cache instances, the following metrics will be available:
-```
+```text
# TYPE caffeine_cache_hit counter
# HELP caffeine_cache_hit Cache hit totals
caffeine_cache_hit_total{cache="mycache"} 10.0
@@ -71,14 +74,13 @@ caffeine_cache_eviction_total{cache="mycache"} 1.0
caffeine_cache_estimated_size{cache="mycache"} 5.0
```
-Loading Cache Metrics
----------------------
+## Loading Cache Metrics
If the cache is an instance of `LoadingCache`, i.e. it is built with a `loader` function that is
managed by the cache library, then metrics for observing load time and load failures become
available:
-```
+```text
# TYPE caffeine_cache_load_failure counter
# HELP caffeine_cache_load_failure Cache load failures
caffeine_cache_load_failure_total{cache="mycache"} 10.0
@@ -91,14 +93,14 @@ caffeine_cache_load_duration_seconds_count{cache="mycache"} 7.0
caffeine_cache_load_duration_seconds_sum{cache="mycache"} 0.0034
```
-Weighted Cache Metrics
-----------------------
+## Weighted Cache Metrics
Two metrics exist for observability specifically of caches that define a `weigher`:
-```
+```text
# TYPE caffeine_cache_eviction_weight counter
-# HELP caffeine_cache_eviction_weight Weight of evicted cache entries, doesn't include manually removed entries
+# HELP caffeine_cache_eviction_weight Weight of evicted cache entries, doesn't include manually removed entries // editorconfig-checker-disable-line
+
caffeine_cache_eviction_weight_total{cache="mycache"} 5.0
# TYPE caffeine_cache_weighted_size gauge
# HELP caffeine_cache_weighted_size Approximate accumulated weight of cache entries
@@ -113,14 +115,14 @@ caffeine_cache_weighted_size{cache="mycache"} 30.0
Up to version 1.3.5 and older, the weighted metrics had a different behavior:
- * `caffeine_cache_weighted_size` was not implemented;
- * `caffeine_cache_eviction_weight` was exposed as a `gauge`;
+- `caffeine_cache_weighted_size` was not implemented;
+- `caffeine_cache_eviction_weight` was exposed as a `gauge`;
It is possible to restore the behavior of version 1.3.5 and older, by either:
- * Using the deprecated `new CacheMetricsCollector()` constructor;
- * Using the flags provided on the `CacheMetricsCollector.Builder` object to opt-out of each of the
- elements of the post-1.3.5 behavior:
- * `builder.collectWeightedSize(false)` will disable collection of `caffeine_cache_weighted_size`;
- * `builder.collectEvictionWeightAsCounter(false)` will expose `caffeine_cache_eviction_weight` as
- a `gauge` metric;
+- Using the deprecated `new CacheMetricsCollector()` constructor;
+- Using the flags provided on the `CacheMetricsCollector.Builder` object to opt-out of each of the
+ elements of the post-1.3.5 behavior:
+ - `builder.collectWeightedSize(false)` will disable collection of `caffeine_cache_weighted_size`;
+ - `builder.collectEvictionWeightAsCounter(false)` will expose `caffeine_cache_eviction_weight` as
+ a `gauge` metric;
diff --git a/docs/content/instrumentation/guava.md b/docs/content/instrumentation/guava.md
index 33cadae97..ffc8f0ab2 100644
--- a/docs/content/instrumentation/guava.md
+++ b/docs/content/instrumentation/guava.md
@@ -8,11 +8,14 @@ provided by Guava `Cache` objects into prometheus metrics.
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-instrumentation-guava:1.3.2'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -20,17 +23,18 @@ implementation 'io.prometheus:prometheus-metrics-instrumentation-guava:1.3.2'
1.3.2
```
+
{{< /tab >}}
{{< /tabs >}}
In order to collect metrics:
-* A single `CacheMetricsCollector` instance must be registered with the registry;
- * Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
-* The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
+- A single `CacheMetricsCollector` instance must be registered with the registry;
+ - Multiple `CacheMetricsCollector` instances cannot be registered with the same registry;
+- The `Cache` object must be instantiated with the `recordStats()` option, and then added to the
`CacheMetricsCollector` instance with a unique name, which will be used as the value of the
`cache` label on the exported metrics;
- * If the `recordStats` option is not set, most metrics will only return zero values;
+ - If the `recordStats` option is not set, most metrics will only return zero values;
```java
var cache = CacheBuilder.newBuilder().recordStats().build();
@@ -41,12 +45,11 @@ cacheMetrics.addCache("mycache", cache);
All example metrics on this page will use the `mycache` label value.
-Generic Cache Metrics
----------------------
+## Generic Cache Metrics
For all cache instances, the following metrics will be available:
-```
+```text
# TYPE guava_cache_hit counter
# HELP guava_cache_hit Cache hit totals
guava_cache_hit_total{cache="mycache"} 10.0
@@ -64,14 +67,13 @@ guava_cache_eviction_total{cache="mycache"} 1.0
guava_cache_size{cache="mycache"} 5.0
```
-Loading Cache Metrics
----------------------
+## Loading Cache Metrics
If the cache is an instance of `LoadingCache`, i.e. it is built with a `loader` function that is
managed by the cache library, then metrics for observing load time and load failures become
available:
-```
+```text
# TYPE guava_cache_load_failure counter
# HELP guava_cache_load_failure Cache load failures
guava_cache_load_failure_total{cache="mycache"} 10.0
diff --git a/docs/content/instrumentation/jvm.md b/docs/content/instrumentation/jvm.md
index 4b6f90cc7..804c1b09b 100644
--- a/docs/content/instrumentation/jvm.md
+++ b/docs/content/instrumentation/jvm.md
@@ -3,15 +3,19 @@ title: JVM
weight: 1
---
-The JVM instrumentation module provides a variety of out-of-the-box JVM and process metrics. To use it, add the following dependency:
+The JVM instrumentation module provides a variety of out-of-the-box JVM and process metrics. To use
+it, add the following dependency:
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-instrumentation-jvm:1.0.0'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -19,6 +23,7 @@ implementation 'io.prometheus:prometheus-metrics-instrumentation-jvm:1.0.0'
1.0.0
```
+
{{< /tab >}}
{{< /tabs >}}
@@ -28,16 +33,23 @@ Now, you can register the JVM metrics as follows:
JvmMetrics.builder().register();
```
-The line above will initialize all JVM metrics and register them with the default registry. If you want to register the metrics with a custom `PrometheusRegistry`, you can pass the registry as parameter to the `register()` call.
+The line above will initialize all JVM metrics and register them with the default registry. If you
+want to register the metrics with a custom `PrometheusRegistry`, you can pass the registry as
+parameter to the `register()` call.
-The sections below describe the individual classes providing JVM metrics. If you don't want to register all JVM metrics, you can register each of these classes individually rather than using `JvmMetrics`.
+The sections below describe the individual classes providing JVM metrics. If you don't want to
+register all JVM metrics, you can register each of these classes individually rather than using
+`JvmMetrics`.
-JVM Buffer Pool Metrics
------------------------
+## JVM Buffer Pool Metrics
-JVM buffer pool metrics are provided by the [JvmBufferPoolMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.html) class. The data is coming from the [BufferPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/BufferPoolMXBean.html). Example metrics:
+JVM buffer pool metrics are provided by
+the [JvmBufferPoolMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.html)
+class. The data is coming from
+the [BufferPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/BufferPoolMXBean.html).
+Example metrics:
-```
+```text
# HELP jvm_buffer_pool_capacity_bytes Bytes capacity of a given JVM buffer pool.
# TYPE jvm_buffer_pool_capacity_bytes gauge
jvm_buffer_pool_capacity_bytes{pool="direct"} 8192.0
@@ -52,12 +64,17 @@ jvm_buffer_pool_used_bytes{pool="direct"} 8192.0
jvm_buffer_pool_used_bytes{pool="mapped"} 0.0
```
-JVM Class Loading Metrics
--------------------------
+## JVM Class Loading Metrics
-JVM class loading metrics are provided by the [JvmClassLoadingMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.html) class. The data is coming from the [ClassLoadingMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ClassLoadingMXBean.html). Example metrics:
+JVM class loading metrics are provided by
+the [JvmClassLoadingMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.html)
+class. The data is coming from
+the [ClassLoadingMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ClassLoadingMXBean.html).
+Example metrics:
-```
+
+
+```text
# HELP jvm_classes_currently_loaded The number of classes that are currently loaded in the JVM
# TYPE jvm_classes_currently_loaded gauge
jvm_classes_currently_loaded 1109.0
@@ -69,23 +86,35 @@ jvm_classes_loaded_total 1109.0
jvm_classes_unloaded_total 0.0
```
-JVM Compilation Metrics
------------------------
+
-JVM compilation metrics are provided by the [JvmCompilationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.html) class. The data is coming from the [CompilationMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/CompilationMXBean.html). Example metrics:
+## JVM Compilation Metrics
-```
+JVM compilation metrics are provided by
+the [JvmCompilationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.html)
+class. The data is coming from
+the [CompilationMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/CompilationMXBean.html).
+Example metrics:
+
+
+
+```text
# HELP jvm_compilation_time_seconds_total The total time in seconds taken for HotSpot class compilation
# TYPE jvm_compilation_time_seconds_total counter
jvm_compilation_time_seconds_total 0.152
```
-JVM Garbage Collector Metrics
------------------------------
+
-JVM garbage collector metrics are provided by the [JvmGarbageCollectorMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.html) class. The data is coming from the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html). Example metrics:
+## JVM Garbage Collector Metrics
-```
+JVM garbage collector metrics are provided by
+the [JvmGarbageCollectorMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.html)
+class. The data is coming from
+the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html).
+Example metrics:
+
+```text
# HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds.
# TYPE jvm_gc_collection_seconds summary
jvm_gc_collection_seconds_count{gc="PS MarkSweep"} 0
@@ -94,12 +123,18 @@ jvm_gc_collection_seconds_count{gc="PS Scavenge"} 0
jvm_gc_collection_seconds_sum{gc="PS Scavenge"} 0.0
```
-JVM Memory Metrics
-------------------
+## JVM Memory Metrics
-JVM memory metrics are provided by the [JvmMemoryMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.html) class. The data is coming from the [MemoryMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryMXBean.html) and the [MemoryPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html). Example metrics:
+JVM memory metrics are provided by
+the [JvmMemoryMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.html)
+class. The data is coming from
+the [MemoryMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryMXBean.html)
+and the [MemoryPoolMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html).
+Example metrics:
-```
+
+
+```text
# HELP jvm_memory_committed_bytes Committed (bytes) of a given JVM memory area.
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{area="heap"} 4.98597888E8
@@ -173,12 +208,20 @@ jvm_memory_used_bytes{area="heap"} 9051232.0
jvm_memory_used_bytes{area="nonheap"} 1.1490688E7
```
-JVM Memory Pool Allocation Metrics
-----------------------------------
+
-JVM memory pool allocation metrics are provided by the [JvmMemoryPoolAllocationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.html) class. The data is obtained by adding a [NotificationListener](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/NotificationListener.html) to the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html). Example metrics:
+## JVM Memory Pool Allocation Metrics
-```
+JVM memory pool allocation metrics are provided by
+the [JvmMemoryPoolAllocationMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.html)
+class. The data is obtained by adding
+a [NotificationListener](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/NotificationListener.html)
+to the [GarbageCollectorMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/GarbageCollectorMXBean.html).
+Example metrics:
+
+
+
+```text
# HELP jvm_memory_pool_allocated_bytes_total Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously.
# TYPE jvm_memory_pool_allocated_bytes_total counter
jvm_memory_pool_allocated_bytes_total{pool="Code Cache"} 4336448.0
@@ -189,24 +232,36 @@ jvm_memory_pool_allocated_bytes_total{pool="PS Old Gen"} 1428888.0
jvm_memory_pool_allocated_bytes_total{pool="PS Survivor Space"} 4115280.0
```
-JVM Runtime Info Metric
------------------------
+
+## JVM Runtime Info Metric
-The JVM runtime info metric is provided by the [JvmRuntimeInfoMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.html) class. The data is obtained via system properties and will not change throughout the lifetime of the application. Example metric:
+The JVM runtime info metric is provided by
+the [JvmRuntimeInfoMetric](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.html)
+class. The data is obtained via system properties and will not change throughout the lifetime of the
+application. Example metric:
-```
+
+
+```text
# TYPE jvm_runtime info
# HELP jvm_runtime JVM runtime info
jvm_runtime_info{runtime="OpenJDK Runtime Environment",vendor="Oracle Corporation",version="1.8.0_382-b05"} 1
```
-JVM Thread Metrics
-------------------
+
-JVM thread metrics are provided by the [JvmThreadsMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.html) class. The data is coming from the [ThreadMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ThreadMXBean.html). Example metrics:
+## JVM Thread Metrics
-```
+JVM thread metrics are provided by
+the [JvmThreadsMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.html)
+class. The data is coming from
+the [ThreadMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ThreadMXBean.html).
+Example metrics:
+
+
+
+```text
# HELP jvm_threads_current Current thread count of a JVM
# TYPE jvm_threads_current gauge
jvm_threads_current 10.0
@@ -236,12 +291,23 @@ jvm_threads_state{state="UNKNOWN"} 0.0
jvm_threads_state{state="WAITING"} 3.0
```
-Process Metrics
----------------
+
-Process metrics are provided by the [ProcessMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.html) class. The data is coming from the [OperatingSystemMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/OperatingSystemMXBean.html), the [RuntimeMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/RuntimeMXBean.html), and from the `/proc/self/status` file on Linux. The metrics with prefix `process_` are not specific to Java, but should be provided by every Prometheus client library, see [Process Metrics](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics) in the Prometheus [writing client libraries](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics) documentation. Example metrics:
+## Process Metrics
-```
+Process metrics are provided by
+the [ProcessMetrics](/client_java/api/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.html)
+class. The data is coming from
+the [OperatingSystemMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/OperatingSystemMXBean.html),
+the [RuntimeMXBean](https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/RuntimeMXBean.html),
+and from the `/proc/self/status` file on Linux. The metrics with prefix `process_` are not specific
+to Java, but should be provided by every Prometheus client library,
+see [Process Metrics](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics)
+in the
+Prometheus [writing client libraries](https://prometheus.io/docs/instrumenting/writing_clientlibs/#process-metrics)
+documentation. Example metrics:
+
+```text
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 1.63
diff --git a/docs/content/internals/model.md b/docs/content/internals/model.md
index c1f1e7b6a..c54e79ee3 100644
--- a/docs/content/internals/model.md
+++ b/docs/content/internals/model.md
@@ -9,21 +9,36 @@ The illustration below shows the internal architecture of the Prometheus Java cl
## prometheus-metrics-core
-This is the user facing metrics library, implementing the core metric types, like [Counter](/client_java/api/io/prometheus/metrics/core/metrics/Counter.html), [Gauge](/client_java/api/io/prometheus/metrics/core/metrics/Gauge.html) [Histogram](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.html), and so on.
-
-All metric types implement the [Collector](/client_java/api/io/prometheus/metrics/model/registry/Collector.html) interface, i.e. they provide a [collect()](/client_java/api/io/prometheus/metrics/model/registry/Collector.html#collect()) method to produce snapshots.
+This is the user facing metrics library, implementing the core metric types,
+like [Counter](/client_java/api/io/prometheus/metrics/core/metrics/Counter.html),
+[Gauge](/client_java/api/io/prometheus/metrics/core/metrics/Gauge.html)
+[Histogram](/client_java/api/io/prometheus/metrics/core/metrics/Histogram.html),
+and so on.
+
+All metric types implement
+the [Collector](/client_java/api/io/prometheus/metrics/model/registry/Collector.html) interface,
+i.e. they provide
+a [collect()]()
+method to produce snapshots.
## prometheus-metrics-model
-The model is an internal library, implementing read-only immutable snapshots. These snapshots are returned by the [Collector.collect()](/client_java/api/io/prometheus/metrics/model/registry/Collector.html#collect()) method.
+The model is an internal library, implementing read-only immutable snapshots. These snapshots are
+returned by
+the [Collector.collect()]()
+method.
-There is no need for users to use `prometheus-metrics-model` directly. Users should use the API provided by `prometheus-metrics-core`, which includes the core metrics as well as callback metrics.
+There is no need for users to use `prometheus-metrics-model` directly. Users should use the API
+provided by `prometheus-metrics-core`, which includes the core metrics as well as callback metrics.
-However, maintainers of 3rd party metrics libraries might want to use `prometheus-metrics-model` if they want to add Prometheus exposition formats to their metrics library.
+However, maintainers of third-party metrics libraries might want to use `prometheus-metrics-model`
+if they want to add Prometheus exposition formats to their metrics library.
## Exporters and exposition formats
-The `prometheus-metrics-exposition-formats` module converts snapshots to Prometheus exposition formats, like text format, OpenMetrics text format, or Prometheus protobuf format.
-
-The exporters like `prometheus-metrics-exporter-httpserver` or `prometheus-metrics-exporter-servlet-jakarta` use this to convert snapshots into the right format depending on the `Accept` header in the scrape request.
+The `prometheus-metrics-exposition-formats` module converts snapshots to Prometheus exposition
+formats, like text format, OpenMetrics text format, or Prometheus protobuf format.
+The exporters like `prometheus-metrics-exporter-httpserver` or
+`prometheus-metrics-exporter-servlet-jakarta` use this to convert snapshots into the right format
+depending on the `Accept` header in the scrape request.
diff --git a/docs/content/migration/simpleclient.md b/docs/content/migration/simpleclient.md
index 27606dbb6..6d0580571 100644
--- a/docs/content/migration/simpleclient.md
+++ b/docs/content/migration/simpleclient.md
@@ -3,34 +3,53 @@ title: Simpleclient
weight: 1
---
-The Prometheus Java client library 1.0.0 is a complete rewrite of the underlying data model, and is not backwards compatible with releases 0.16.0 and older for a variety of reasons:
-
-* The old data model was based on [OpenMetrics](https://openmetrics.io). Native histograms don't fit with the OpenMetrics model because they don't follow the "every sample has exactly one double value" paradigm. It was a lot cleaner to implement a dedicated `prometheus-metrics-model` than trying to fit native histograms into the existing OpenMetrics-based model.
-* Version 0.16.0 and older has multiple Maven modules sharing the same Java package name. This is not supported by the Java module system. To support users of Java modules, we renamed all packages and made sure no package is reused across multiple Maven modules.
-
-Migration using the Simpleclient Bridge
----------------------------------------
-
-Good news: Users of version 0.16.0 and older do not need to refactor all their instrumentation code to get started with 1.0.0.
-
-We provide a migration module for bridging the old simpleclient `CollectorRegistry` to the new `PrometheusRegistry`.
+The Prometheus Java client library 1.0.0 is a complete rewrite of the underlying data model, and is
+not backward
+compatible with releases 0.16.0 and older for a variety of reasons:
+
+- The old data model was based on [OpenMetrics](https://openmetrics.io). Native histograms don't fit
+ with the
+ OpenMetrics model because they don't follow the "every sample has exactly one double value"
+ paradigm. It was a lot
+ cleaner to implement a dedicated `prometheus-metrics-model` than trying to fit native histograms
+ into the existing
+ OpenMetrics-based model.
+- Version 0.16.0 and older has multiple Maven modules sharing the same Java package name. This is
+ not supported by the
+ Java module system. To support users of Java modules, we renamed all packages and made sure no
+ package is reused
+ across multiple Maven modules.
+
+## Migration using the Simpleclient Bridge
+
+Good news: Users of version 0.16.0 and older do not need to refactor all their instrumentation code
+to get started with
+1.0.0.
+
+We provide a migration module for bridging the old simpleclient `CollectorRegistry` to the new
+`PrometheusRegistry`.
To use the bridge, add the following dependency:
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-simpleclient-bridge:1.0.0'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
+
- io.prometheus
- prometheus-metrics-simpleclient-bridge
- 1.0.0
+ io.prometheus
+ prometheus-metrics-simpleclient-bridge
+ 1.0.0
```
+
{{< /tab >}}
{{< /tabs >}}
@@ -40,7 +59,9 @@ Then add the following to your code:
SimpleclientCollector.builder().register();
```
-This will make all metrics registered with simpleclient's `CollectorRegistry.defaultRegistry` available in the new `PrometheusRegistry.defaultRegistry`.
+This will make all metrics registered with simpleclient's `CollectorRegistry.defaultRegistry`
+available in the new
+`PrometheusRegistry.defaultRegistry`.
If you are using custom registries, you can specify them like this:
@@ -49,23 +70,27 @@ CollectorRegistry simpleclientRegistry = ...;
PrometheusRegistry prometheusRegistry = ...;
SimpleclientCollector.builder()
- .collectorRegistry(simpleclientRegistry)
- .register(prometheusRegistry);
+ .collectorRegistry(simpleclientRegistry)
+ .register(prometheusRegistry);
```
-Refactoring the Instrumentation Code
-------------------------------------
+## Refactoring the Instrumentation Code
-If you decide to get rid of the old 0.16.0 dependencies and use 1.0.0 only, you need to refactor your code:
+If you decide to get rid of the old 0.16.0 dependencies and use 1.0.0 only, you need to refactor
+your code:
Dependencies:
-* `simpleclient` -> `prometheus-metrics-core`
-* `simpleclient_hotspot` -> `prometheus-metrics-instrumentation-jvm`
-* `simpleclient_httpserver` -> `prometheus-metrics-exporter-httpserver`
-* `simpleclient_servlet_jakarta` -> `prometheus-metrics-exporter-servlet-jakarta`
+- `simpleclient` -> `prometheus-metrics-core`
+- `simpleclient_hotspot` -> `prometheus-metrics-instrumentation-jvm`
+- `simpleclient_httpserver` -> `prometheus-metrics-exporter-httpserver`
+- `simpleclient_servlet_jakarta` -> `prometheus-metrics-exporter-servlet-jakarta`
-As long as you are using high-level metric API like `Counter`, `Gauge`, `Histogram`, and `Summary` converting code to the new API is relatively straightforward. You will need to adapt the package name and apply some minor changes like using `builder()` instead of `build()` or using `labelValues()` instead of `labels()`.
+As long as you are using high-level metric API like `Counter`, `Gauge`, `Histogram`, and `Summary`
+converting code to
+the new API is relatively straightforward. You will need to adapt the package name and apply some
+minor changes like
+using `builder()` instead of `build()` or using `labelValues()` instead of `labels()`.
Example of the old 0.16.0 API:
@@ -73,10 +98,10 @@ Example of the old 0.16.0 API:
import io.prometheus.client.Counter;
Counter counter = Counter.build()
- .name("test")
- .help("test counter")
- .labelNames("path")
- .register();
+ .name("test")
+ .help("test counter")
+ .labelNames("path")
+ .register();
counter.labels("/hello-world").inc();
```
@@ -87,20 +112,31 @@ Example of the new 1.0.0 API:
import io.prometheus.metrics.core.metrics.Counter;
Counter counter = Counter.builder()
- .name("test")
- .help("test counter")
- .labelNames("path")
- .register();
+ .name("test")
+ .help("test counter")
+ .labelNames("path")
+ .register();
counter.labelValues("/hello-world").inc();
```
-Reasons why we changed the API: Changing the package names was a necessity because the previous package names were incompatible with the Java module system. However, renaming packages requires changing code anyway, so we decided to clean up some things. For example, the name `builder()` for a builder method is very common in the Java ecosystem, it's used in Spring, Lombok, and so on. So naming the method `builder()` makes the Prometheus library more aligned with the broader Java ecosystem.
+Reasons why we changed the API: Changing the package names was a necessity because the previous
+package names were
+incompatible with the Java module system. However, renaming packages requires changing code anyway,
+so we decided to
+clean up some things. For example, the name `builder()` for a builder method is very common in the
+Java ecosystem, it's
+used in Spring, Lombok, and so on. So naming the method `builder()` makes the Prometheus library
+more aligned with the
+broader Java ecosystem.
-If you are using the low level `Collector` API directly, you should have a look at the new callback metric types, see [/getting-started/callbacks/](../../getting-started/callbacks/). Chances are good that the new callback metrics have an easier way to achieve what you need than the old 0.16.0 code.
+If you are using the low level `Collector` API directly, you should have a look at the new callback
+metric types,
+see [/getting-started/callbacks/]({{< relref "../getting-started/callbacks.md" >}}). Chances are
+good that the new callback metrics have
+an easier way to achieve what you need than the old 0.16.0 code.
-JVM Metrics
------------
+## JVM Metrics
Version 0.16.0 provided the `simpleclient_hotspot` module for exposing built-in JVM metrics:
@@ -108,25 +144,30 @@ Version 0.16.0 provided the `simpleclient_hotspot` module for exposing built-in
DefaultExports.initialize();
```
-With version 1.0.0 these metrics moved to the `prometheus-metrics-instrumentation-jvm` module and are initialized as follows:
+With version 1.0.0 these metrics moved to the `prometheus-metrics-instrumentation-jvm` module and
+are initialized as follows:
```java
JvmMetrics.builder().register();
```
-A full list of the available JVM metrics can be found on [/instrumentation/jvm](../../instrumentation/jvm/).
-
-Most JVM metric names remained the same, except for a few cases where the old 0.16.0 metric names were not compliant with the [OpenMetrics](https://openmetrics.io) specification. OpenMetrics requires the unit to be a suffix, so we renamed metrics where the unit was in the middle of the metric name and moved the unit to the end of the metric name. The following metric names changed:
-
-* `jvm_memory_bytes_committed` -> `jvm_memory_committed_bytes`
-* `jvm_memory_bytes_init` -> `jvm_memory_init_bytes`
-* `jvm_memory_bytes_max` -> `jvm_memory_max_bytes`
-* `jvm_memory_pool_bytes_committed` -> `jvm_memory_pool_committed_bytes`
-* `jvm_memory_pool_bytes_init` -> `jvm_memory_pool_init_bytes`
-* `jvm_memory_pool_bytes_max` -> `jvm_memory_pool_max_bytes`
-* `jvm_memory_pool_bytes_used` -> `jvm_memory_pool_used_bytes`
-* `jvm_memory_pool_collection_bytes_committed` -> `jvm_memory_pool_collection_committed_bytes`
-* `jvm_memory_pool_collection_bytes_init` -> `jvm_memory_pool_collection_init_bytes`
-* `jvm_memory_pool_collection_bytes_max` -> `jvm_memory_pool_collection_max_bytes`
-* `jvm_memory_pool_collection_bytes_used` -> `jvm_memory_pool_collection_used_bytes`
-* `jvm_info` -> `jvm_runtime_info`
+A full list of the available JVM metrics can be found
+on [/instrumentation/jvm]({{< relref "../instrumentation/jvm.md" >}}).
+
+Most JVM metric names remained the same, except for a few cases where the old 0.16.0 metric names
+were not compliant with the [OpenMetrics](https://openmetrics.io) specification. OpenMetrics
+requires the unit to be a suffix, so we renamed metrics where the unit was in the middle of the
+metric name and moved the unit to the end of the metric name. The following metric names changed:
+
+- `jvm_memory_bytes_committed` -> `jvm_memory_committed_bytes`
+- `jvm_memory_bytes_init` -> `jvm_memory_init_bytes`
+- `jvm_memory_bytes_max` -> `jvm_memory_max_bytes`
+- `jvm_memory_pool_bytes_committed` -> `jvm_memory_pool_committed_bytes`
+- `jvm_memory_pool_bytes_init` -> `jvm_memory_pool_init_bytes`
+- `jvm_memory_pool_bytes_max` -> `jvm_memory_pool_max_bytes`
+- `jvm_memory_pool_bytes_used` -> `jvm_memory_pool_used_bytes`
+- `jvm_memory_pool_collection_bytes_committed` -> `jvm_memory_pool_collection_committed_bytes`
+- `jvm_memory_pool_collection_bytes_init` -> `jvm_memory_pool_collection_init_bytes`
+- `jvm_memory_pool_collection_bytes_max` -> `jvm_memory_pool_collection_max_bytes`
+- `jvm_memory_pool_collection_bytes_used` -> `jvm_memory_pool_collection_used_bytes`
+- `jvm_info` -> `jvm_runtime_info`
diff --git a/docs/content/otel/names.md b/docs/content/otel/names.md
index 3d25dd3d4..2945d70e9 100644
--- a/docs/content/otel/names.md
+++ b/docs/content/otel/names.md
@@ -3,26 +3,40 @@ title: Names
weight: 3
---
-OpenTelemetry naming conventions are different from Prometheus naming conventions. The mapping from OpenTelemetry metric names to Prometheus metric names is well defined in OpenTelemetry's [Prometheus and OpenMetrics Compatibility](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/) spec, and the [OpenTelemetryExporter](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.html) implements that specification.
+OpenTelemetry naming conventions are different from Prometheus naming conventions. The mapping from
+OpenTelemetry metric names to Prometheus metric names is well defined in
+OpenTelemetry's [Prometheus and OpenMetrics Compatibility](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/)
+spec, and
+the [OpenTelemetryExporter](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.html)
+implements that specification.
-The goal is, if you set up a pipeline as illustrated below, you will see the same metric names in the Prometheus server as if you had exposed Prometheus metrics directly.
+The goal is, if you set up a pipeline as illustrated below, you will see the same metric names in
+the Prometheus server as if you had exposed Prometheus metrics directly.
-
+
The main steps when converting OpenTelemetry metric names to Prometheus metric names are:
-* Replace dots with underscores.
-* If the metric has a unit, append the unit to the metric name, like `_seconds`.
-* If the metric type has a suffix, append it, like `_total` for counters.
+- Replace dots with underscores.
+- If the metric has a unit, append the unit to the metric name, like `_seconds`.
+- If the metric type has a suffix, append it, like `_total` for counters.
-Dots in Metric and Label Names
-------------------------------
+## Dots in Metric and Label Names
-OpenTelemetry defines not only a line protocol, but also _semantic conventions_, i.e. standardized metric and label names. For example, OpenTelemetry's [Semantic Conventions for HTTP Metrics](https://opentelemetry.io/docs/specs/otel/metrics/semantic_conventions/http-metrics/) say that if you instrument an HTTP server with OpenTelemetry, you must have a histogram named `http.server.duration`.
+OpenTelemetry defines not only a line protocol, but also _semantic conventions_, i.e. standardized
+metric and label names. For example,
+OpenTelemetry's [Semantic Conventions for HTTP Metrics](https://opentelemetry.io/docs/specs/otel/metrics/semantic_conventions/http-metrics/)
+say that if you instrument an HTTP server with OpenTelemetry, you must have a histogram named
+`http.server.duration`.
-Most names defined in semantic conventions use dots. In the Prometheus server, the dot is an illegal character (this might change in future versions of the Prometheus server).
+Most names defined in semantic conventions use dots. In the Prometheus server, the dot is an illegal
+character (this might change in future versions of the Prometheus server).
-The Prometheus Java client library allows dots, so that you can use metric names and label names as defined in OpenTelemetry's semantic conventions.
-The dots will automatically be replaced with underscores if you expose metrics in Prometheus format, but you will see the original names with dots if you push your metrics in OpenTelemetry format.
+The Prometheus Java client library allows dots, so that you can use metric names and label names as
+defined in OpenTelemetry's semantic conventions.
+The dots will automatically be replaced with underscores if you expose metrics in Prometheus format,
+but you will see the original names with dots if you push your metrics in OpenTelemetry format.
-That way, you can use OTel-compliant metric and label names today when instrumenting your application with the Prometheus Java client, and you are prepared in case your monitoring backend adds features in the future that require OTel-compliant instrumentation.
+That way, you can use OTel-compliant metric and label names today when instrumenting your
+application with the Prometheus Java client, and you are prepared in case your monitoring backend
+adds features in the future that require OTel-compliant instrumentation.
diff --git a/docs/content/otel/otlp.md b/docs/content/otel/otlp.md
index ea39f178f..2a6f8da9b 100644
--- a/docs/content/otel/otlp.md
+++ b/docs/content/otel/otlp.md
@@ -3,19 +3,23 @@ title: OTLP
weight: 1
---
-The Prometheus Java client library allows you to push metrics to an OpenTelemetry endpoint using the OTLP protocol.
+The Prometheus Java client library allows you to push metrics to an OpenTelemetry endpoint using the
+OTLP protocol.
-
+
To implement this, you need to include `prometheus-metrics-exporter` as a dependency
{{< tabs "uniqueid" >}}
{{< tab "Gradle" >}}
-```
+
+```groovy
implementation 'io.prometheus:prometheus-metrics-exporter-opentelemetry:1.0.0'
```
+
{{< /tab >}}
{{< tab "Maven" >}}
+
```xml
io.prometheus
@@ -23,6 +27,7 @@ implementation 'io.prometheus:prometheus-metrics-exporter-opentelemetry:1.0.0'
1.0.0
```
+
{{< /tab >}}
{{< /tabs >}}
@@ -34,8 +39,23 @@ OpenTelemetryExporter.builder()
.buildAndStart();
```
-By default, the `OpenTelemetryExporter` will push metrics every 60 seconds to `localhost:4317` using `grpc` protocol. You can configure this in code using the [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html), or at runtime via [`io.prometheus.exporter.opentelemetry.*`](../../config/config/#exporter-opentelemetry-properties) properties.
-
-In addition to the Prometheus Java client configuration, the exporter also recognizes standard OpenTelemetry configuration. For example, you can set the [OTEL_EXPORTER_OTLP_METRICS_ENDPOINT](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_metrics_endpoint) environment variable to configure the endpoint. The Javadoc for [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html) shows which settings have corresponding OTel configuration. The intended use case is that if you attach the [OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/) for tracing, and use the Prometheus Java client for metrics, it is sufficient to configure the OTel agent because the Prometheus library will pick up the same configuration.
-
-The [examples/example-exporter-opentelemetry](https://github.com/prometheus/client_java/tree/main/examples/example-exporter-opentelemetry) folder has a docker compose with a complete end-to-end example, including a Java app, the OTel collector, and a Prometheus server.
+By default, the `OpenTelemetryExporter` will push metrics every 60 seconds to `localhost:4317` using
+`grpc` protocol. You can configure this in code using
+the [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html),
+or at runtime via [`io.prometheus.exporter.opentelemetry.*`]({{< relref "../config/config.md#exporter-opentelemetry-properties" >}})
+properties.
+
+In addition to the Prometheus Java client configuration, the exporter also recognizes standard
+OpenTelemetry configuration. For example, you can set
+the [OTEL_EXPORTER_OTLP_METRICS_ENDPOINT](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_metrics_endpoint)
+environment variable to configure the endpoint. The Javadoc
+for [OpenTelemetryExporter.Builder](/client_java/api/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.Builder.html)
+shows which settings have corresponding OTel configuration. The intended use case is that if you
+attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+for tracing, and use the Prometheus Java client for metrics, it is sufficient to configure the OTel
+agent because the Prometheus library will pick up the same configuration.
+
+The [examples/example-exporter-opentelemetry](https://github.com/prometheus/client_java/tree/main/examples/example-exporter-opentelemetry)
+folder has a docker compose with a complete end-to-end example, including a Java app, the OTel
+collector, and a Prometheus server.
diff --git a/docs/content/otel/tracing.md b/docs/content/otel/tracing.md
index 406575a63..0e3fb72fa 100644
--- a/docs/content/otel/tracing.md
+++ b/docs/content/otel/tracing.md
@@ -3,9 +3,21 @@ title: Tracing
weight: 2
---
-OpenTelemetry’s [vision statement](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md) says that [telemetry should be loosely coupled](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md#telemetry-should-be-loosely-coupled), allowing end users to pick and choose from the pieces they want without having to bring in the rest of the project, too. In that spirit, you might choose to instrument your Java application with the Prometheus Java client library for metrics, and attach the [OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/) to get distributed tracing.
+OpenTelemetry’s
+[vision statement](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md)
+says that
+[telemetry should be loosely coupled](https://github.com/open-telemetry/community/blob/main/mission-vision-values.md#telemetry-should-be-loosely-coupled),
+allowing end users to pick and choose from the pieces they want without having to bring in the rest
+of the project, too. In that spirit, you might choose to instrument your Java application with the
+Prometheus Java client library for metrics, and attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+to get distributed tracing.
-First, if you attach the [OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/) you might want to turn off OTel's built-in metrics, because otherwise you get metrics from both the Prometheus Java client library and the OpenTelemetry agent (technically it's no problem to get both metrics, it's just not a common use case).
+First, if you attach the
+[OpenTelemetry Java agent](https://github.com/open-telemetry/opentelemetry-java-instrumentation/)
+you might want to turn off OTel's built-in metrics, because otherwise you get metrics from both the
+Prometheus Java client library and the OpenTelemetry agent (technically it's no problem to get both
+metrics, it's just not a common use case).
```bash
# This will tell the OpenTelemetry agent not to send metrics, just traces and logs.
@@ -18,19 +30,34 @@ Now, start your application with the OpenTelemetry Java agent attached for trace
java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar
```
-With the OpenTelemetry Java agent attached, the Prometheus client library will do a lot of magic under the hood.
+With the OpenTelemetry Java agent attached, the Prometheus client library will do a lot of magic
+under the hood.
-* `service.name` and `service.instance.id` are used in OpenTelemetry to uniquely identify a service instance. The Prometheus client library will automatically use the same `service.name` and `service.instance.id` as the agent when pushing metrics in OpenTelemetry format. That way the monitoring backend will see that the metrics and the traces are coming from the same instance.
-* Exemplars are added automatically if a Prometheus metric is updated in the context of a distributed OpenTelemetry trace.
-* If a Span is used as an Exemplar, the Span is marked with the Span attribute `exemplar="true"`. This can be used in the OpenTelemetry's sampling policy to make sure Exemplars are always sampled.
+- `service.name` and `service.instance.id` are used in OpenTelemetry to uniquely identify a service
+ instance. The Prometheus client library will automatically use the same `service.name` and
+ `service.instance.id` as the agent when pushing metrics in OpenTelemetry format. That way the
+ monitoring backend will see that the metrics and the traces are coming from the same instance.
+- Exemplars are added automatically if a Prometheus metric is updated in the context of a
+ distributed OpenTelemetry trace.
+- If a Span is used as an Exemplar, the Span is marked with the Span attribute `exemplar="true"`.
+ This can be used in the OpenTelemetry's sampling policy to make sure Exemplars are always sampled.
-Here's more context on the `exemplar="true"` Span attribute: Many users of tracing libraries don't keep 100% of their trace data, because traces are very repetitive. It is very common to sample only 10% of traces and discard 90%. However, this can be an issue with Exemplars: In 90% of the cases Exemplars would point to a trace that has been thrown away.
+Here's more context on the `exemplar="true"` Span attribute: Many users of tracing libraries don't
+keep 100% of their trace data, because traces are very repetitive. It is very common to sample only
+10% of traces and discard 90%. However, this can be an issue with Exemplars: In 90% of the cases
+Exemplars would point to a trace that has been thrown away.
-To solve this, the Prometheus Java client library annotates each Span that has been used as an Exemplar with the `exemplar="true"` Span attribute.
+To solve this, the Prometheus Java client library annotates each Span that has been used as an
+Exemplar with the `exemplar="true"` Span attribute.
-The sampling policy in the OpenTelemetry collector can be configured to keep traces with this attribute. There's no risk that this results in a significant increase in trace data, because new Exemplars are only selected every [`minRetentionPeriodSeconds`](../../config/config/#exemplar-properties) seconds.
+The sampling policy in the OpenTelemetry collector can be configured to keep traces with this
+attribute. There's no risk that this results in a significant increase in trace data, because new
+Exemplars are only selected every
+[`minRetentionPeriodSeconds`]({{< relref "../config/config.md#exemplar-properties" >}}) seconds.
-Here's an example of how to configure OpenTelemetry's [tail sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/tailsamplingprocessor/) to sample all Spans marked with `exemplar="true"`, and then discard 90% of the traces:
+Here's an example of how to configure OpenTelemetry's
+[tail sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/tailsamplingprocessor/)
+to sample all Spans marked with `exemplar="true"`, and then discard 90% of the traces:
```yaml
policies:
@@ -38,14 +65,13 @@ policies:
{
name: keep-exemplars,
type: string_attribute,
- string_attribute: { key: "exemplar", values: [ "true" ] }
- },
- {
- name: keep-10-percent,
- type: probabilistic,
- probabilistic: { sampling_percentage: 10 }
+ string_attribute: { key: "exemplar", values: ["true"] },
},
+ { name: keep-10-percent, type: probabilistic, probabilistic: { sampling_percentage: 10 } },
]
```
-The [examples/example-exemplar-tail-sampling/](https://github.com/prometheus/client_java/tree/main/examples/example-exemplars-tail-sampling) directory has a complete end-to-end example, with a distributed Java application with two services, an OpenTelemetry collector, Prometheus, Tempo as a trace database, and Grafana dashboards. Use docker-compose as described in the example's README to run the example and explore the results.
+The [examples/example-exemplar-tail-sampling/](https://github.com/prometheus/client_java/tree/main/examples/example-exemplars-tail-sampling)
+directory has a complete end-to-end example, with a distributed Java application with two services,
+an OpenTelemetry collector, Prometheus, Tempo as a trace database, and Grafana dashboards. Use
+docker-compose as described in the example's readme to run the example and explore the results.
diff --git a/docs/themes/hugo-geekdoc/data/assets.json b/docs/themes/hugo-geekdoc/data/assets.json
index 9a34ed54d..81541fbbc 100644
--- a/docs/themes/hugo-geekdoc/data/assets.json
+++ b/docs/themes/hugo-geekdoc/data/assets.json
@@ -155,4 +155,4 @@
"src": "custom.css",
"integrity": "sha512-1kALo+zc1L2u1rvyxPIew+ZDPWhnIA1Ei2rib3eHHbskQW+EMxfI9Ayyva4aV+YRrHvH0zFxvPSFIuZ3mfsbRA=="
}
-}
\ No newline at end of file
+}
diff --git a/docs/themes/hugo-geekdoc/i18n/nl.yaml b/docs/themes/hugo-geekdoc/i18n/nl.yaml
index 8e24d62a4..240bcea5a 100644
--- a/docs/themes/hugo-geekdoc/i18n/nl.yaml
+++ b/docs/themes/hugo-geekdoc/i18n/nl.yaml
@@ -36,7 +36,7 @@ posts_tagged_with: Alle berichten gemarkeerd met '{{ . }}'
footer_build_with: >
Gebouwd met en
-
+
footer_legal_notice: Juridische mededeling
footer_privacy_policy: Privacybeleid
footer_content_license_prefix: >
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/language.html b/docs/themes/hugo-geekdoc/layouts/partials/language.html
index fdcafd2b2..8ad972d07 100644
--- a/docs/themes/hugo-geekdoc/layouts/partials/language.html
+++ b/docs/themes/hugo-geekdoc/layouts/partials/language.html
@@ -1,4 +1,4 @@
-{{ if .Site.IsMultiLingual }}
+{{ if .IsTranslated }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
index 97716ca9e..ea34ba5be 100644
--- a/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
@@ -63,6 +63,6 @@
{{- end }}
{{- /* Facebook Page Admin ID for Domain Insights */}}
-{{- with .Site.Social.facebook_admin }}
+{{- with .Site.Params.Social.facebook_admin }}
{{- end }}
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
index a2cc08c45..603e3f53f 100644
--- a/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
@@ -10,6 +10,6 @@
{{- with partial "utils/description" . }}
{{- end }}
-{{- with .Site.Social.twitter -}}
+{{- with .Site.Params.Social.twitter -}}
{{- end }}
diff --git a/docs/themes/hugo-geekdoc/static/favicon/manifest.json b/docs/themes/hugo-geekdoc/static/favicon/manifest.json
index aada2c128..7f71aa2de 100644
--- a/docs/themes/hugo-geekdoc/static/favicon/manifest.json
+++ b/docs/themes/hugo-geekdoc/static/favicon/manifest.json
@@ -66,4 +66,4 @@
"purpose": "any"
}
]
-}
\ No newline at end of file
+}
diff --git a/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js
index efc09abb1..83829c8fa 100644
--- a/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js
@@ -1 +1,10870 @@
-(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[116],{2116:function(e,t,r){var n;"undefined"!=typeof self&&self,n=function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var a={};return function(){n.d(a,{default:function(){return l}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,a=0,i=e.length;n0&&(a.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var s=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[s].right,e,t[s].left.length)))break;var l=e.slice(0,n+t[s].right.length),h=i.test(l)?l:e.slice(t[s].left.length,n);a.push({type:"math",data:h,rawData:l,display:t[s].display}),e=e.slice(n+t[s].right.length)}return""!==e&&a.push({type:"text",data:e}),a}(e,n.delimiters);if(1===a.length&&"text"===a[0].type)return null;for(var o=document.createDocumentFragment(),s=0;s15?"…"+s.slice(n-15,n):s.slice(0,n))+l+(a+15":">","<":"<",'"':""","'":"'"},o=/[&><"']/g,s=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},l=function(e,t){return-1!==e.indexOf(t)},h=function(e,t){return void 0===e?t:e},c=function(e){return String(e).replace(o,(function(e){return i[e]}))},m=function(e){return e.replace(a,"-$1").toLowerCase()},u=s,p=function(e){var t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},d=function(e){var t=/^\s*([^\\/#]*?)(?::|*58|*3a)/i.exec(e);return null!=t?t[1]:"_relative"},f={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:function(e){return"#"+e}},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:function(e,t){return t.push(e),t}},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:function(e){return Math.max(0,e)},cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:function(e){return Math.max(0,e)},cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:function(e){return Math.max(0,e)},cli:"-e, --max-expand ",cliProcessor:function(e){return"Infinity"===e?1/0:parseInt(e)}},globalGroup:{type:"boolean",cli:!1}};function g(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var v=function(){function e(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},f)if(f.hasOwnProperty(t)){var r=f[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:g(r)}}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new n("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n||!0!==n&&"error"!==n&&("warn"===n?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=d(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),y=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return b[x[this.id]]},t.sub=function(){return b[w[this.id]]},t.fracNum=function(){return b[k[this.id]]},t.fracDen=function(){return b[S[this.id]]},t.cramp=function(){return b[M[this.id]]},t.text=function(){return b[z[this.id]]},t.isTight=function(){return this.size>=2},e}(),b=[new y(0,0,!1),new y(1,0,!0),new y(2,1,!1),new y(3,1,!0),new y(4,2,!1),new y(5,2,!0),new y(6,3,!1),new y(7,3,!0)],x=[4,5,4,5,6,7,6,7],w=[5,5,5,5,7,7,7,7],k=[2,3,4,5,6,7,6,7],S=[3,3,5,5,7,7,7,7],M=[1,1,3,3,5,5,7,7],z=[0,1,2,3,2,3,2,3],A={DISPLAY:b[0],TEXT:b[2],SCRIPT:b[4],SCRIPTSCRIPT:b[6]},T=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}],B=[];function N(e){for(var t=0;t=B[t]&&e<=B[t+1])return!0;return!1}T.forEach((function(e){return e.blocks.forEach((function(e){return B.push.apply(B,e)}))}));var C={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},q=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return l(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t=5?0:e>=3?1:2]){var r=E[t]={cssEmPerMu:R.quad[t]/18};for(var n in R)R.hasOwnProperty(n)&&(r[n]=R[n][t])}return E[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();V.BASESIZE=6;var F=V,G={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},U={ex:!0,em:!0,mu:!0},Y=function(e){return"string"!=typeof e&&(e=e.unit),e in G||e in U||"ex"===e},X=function(e,t){var r;if(e.unit in G)r=G[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},W=function(e){return+e.toFixed(4)+"em"},_=function(e){return e.filter((function(e){return e})).join(" ")},j=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},$=function(e){var t=document.createElement(e);for(var r in t.className=_(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var a=0;a";for(var i=0;i"},K=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,j.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l(this.classes,e)},t.toNode=function(){return $.call(this,"span")},t.toMarkup=function(){return Z.call(this,"span")},e}(),J=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,j.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l(this.classes,e)},t.toNode=function(){return $.call(this,"a")},t.toMarkup=function(){return Z.call(this,"a")},e}(),Q=function(){function e(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}var t=e.prototype;return t.hasClass=function(e){return l(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e=" "},e}(),ee={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},te=function(){function e(e,t,r,n,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=ee[this.text])}var t=e.prototype;return t.hasClass=function(e){return l(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=W(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=_(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(n)&&(r+=m(n)+":"+this.style[n]+";");r&&(e=!0,t+=' style="'+c(r)+'"');var a=c(this.text);return e?(t+=">",t+=a,t+=" "):a},e}(),re=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r";for(var r=0;r"},e}(),ne=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",C[this.pathName]),e},t.toMarkup=function(){return this.alternate?" ":" "},e}(),ae=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e=" "},e}();function ie(e){if(e instanceof te)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var oe={bin:1,close:1,inner:1,open:1,punct:1,rel:1},se={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},le={math:{},text:{}},he=le;function ce(e,t,r,n,a,i){le[e][a]={font:t,group:r,replace:n},i&&n&&(le[e][n]=le[e][a])}var me="math",ue="text",pe="main",de="ams",fe="accent-token",ge="bin",ve="close",ye="inner",be="mathord",xe="op-token",we="open",ke="punct",Se="rel",Me="spacing",ze="textord";ce(me,pe,Se,"≡","\\equiv",!0),ce(me,pe,Se,"≺","\\prec",!0),ce(me,pe,Se,"≻","\\succ",!0),ce(me,pe,Se,"∼","\\sim",!0),ce(me,pe,Se,"⊥","\\perp"),ce(me,pe,Se,"⪯","\\preceq",!0),ce(me,pe,Se,"⪰","\\succeq",!0),ce(me,pe,Se,"≃","\\simeq",!0),ce(me,pe,Se,"∣","\\mid",!0),ce(me,pe,Se,"≪","\\ll",!0),ce(me,pe,Se,"≫","\\gg",!0),ce(me,pe,Se,"≍","\\asymp",!0),ce(me,pe,Se,"∥","\\parallel"),ce(me,pe,Se,"⋈","\\bowtie",!0),ce(me,pe,Se,"⌣","\\smile",!0),ce(me,pe,Se,"⊑","\\sqsubseteq",!0),ce(me,pe,Se,"⊒","\\sqsupseteq",!0),ce(me,pe,Se,"≐","\\doteq",!0),ce(me,pe,Se,"⌢","\\frown",!0),ce(me,pe,Se,"∋","\\ni",!0),ce(me,pe,Se,"∝","\\propto",!0),ce(me,pe,Se,"⊢","\\vdash",!0),ce(me,pe,Se,"⊣","\\dashv",!0),ce(me,pe,Se,"∋","\\owns"),ce(me,pe,ke,".","\\ldotp"),ce(me,pe,ke,"⋅","\\cdotp"),ce(me,pe,ze,"#","\\#"),ce(ue,pe,ze,"#","\\#"),ce(me,pe,ze,"&","\\&"),ce(ue,pe,ze,"&","\\&"),ce(me,pe,ze,"ℵ","\\aleph",!0),ce(me,pe,ze,"∀","\\forall",!0),ce(me,pe,ze,"ℏ","\\hbar",!0),ce(me,pe,ze,"∃","\\exists",!0),ce(me,pe,ze,"∇","\\nabla",!0),ce(me,pe,ze,"♭","\\flat",!0),ce(me,pe,ze,"ℓ","\\ell",!0),ce(me,pe,ze,"♮","\\natural",!0),ce(me,pe,ze,"♣","\\clubsuit",!0),ce(me,pe,ze,"℘","\\wp",!0),ce(me,pe,ze,"♯","\\sharp",!0),ce(me,pe,ze,"♢","\\diamondsuit",!0),ce(me,pe,ze,"ℜ","\\Re",!0),ce(me,pe,ze,"♡","\\heartsuit",!0),ce(me,pe,ze,"ℑ","\\Im",!0),ce(me,pe,ze,"♠","\\spadesuit",!0),ce(me,pe,ze,"§","\\S",!0),ce(ue,pe,ze,"§","\\S"),ce(me,pe,ze,"¶","\\P",!0),ce(ue,pe,ze,"¶","\\P"),ce(me,pe,ze,"†","\\dag"),ce(ue,pe,ze,"†","\\dag"),ce(ue,pe,ze,"†","\\textdagger"),ce(me,pe,ze,"‡","\\ddag"),ce(ue,pe,ze,"‡","\\ddag"),ce(ue,pe,ze,"‡","\\textdaggerdbl"),ce(me,pe,ve,"⎱","\\rmoustache",!0),ce(me,pe,we,"⎰","\\lmoustache",!0),ce(me,pe,ve,"⟯","\\rgroup",!0),ce(me,pe,we,"⟮","\\lgroup",!0),ce(me,pe,ge,"∓","\\mp",!0),ce(me,pe,ge,"⊖","\\ominus",!0),ce(me,pe,ge,"⊎","\\uplus",!0),ce(me,pe,ge,"⊓","\\sqcap",!0),ce(me,pe,ge,"∗","\\ast"),ce(me,pe,ge,"⊔","\\sqcup",!0),ce(me,pe,ge,"◯","\\bigcirc",!0),ce(me,pe,ge,"∙","\\bullet",!0),ce(me,pe,ge,"‡","\\ddagger"),ce(me,pe,ge,"≀","\\wr",!0),ce(me,pe,ge,"⨿","\\amalg"),ce(me,pe,ge,"&","\\And"),ce(me,pe,Se,"⟵","\\longleftarrow",!0),ce(me,pe,Se,"⇐","\\Leftarrow",!0),ce(me,pe,Se,"⟸","\\Longleftarrow",!0),ce(me,pe,Se,"⟶","\\longrightarrow",!0),ce(me,pe,Se,"⇒","\\Rightarrow",!0),ce(me,pe,Se,"⟹","\\Longrightarrow",!0),ce(me,pe,Se,"↔","\\leftrightarrow",!0),ce(me,pe,Se,"⟷","\\longleftrightarrow",!0),ce(me,pe,Se,"⇔","\\Leftrightarrow",!0),ce(me,pe,Se,"⟺","\\Longleftrightarrow",!0),ce(me,pe,Se,"↦","\\mapsto",!0),ce(me,pe,Se,"⟼","\\longmapsto",!0),ce(me,pe,Se,"↗","\\nearrow",!0),ce(me,pe,Se,"↩","\\hookleftarrow",!0),ce(me,pe,Se,"↪","\\hookrightarrow",!0),ce(me,pe,Se,"↘","\\searrow",!0),ce(me,pe,Se,"↼","\\leftharpoonup",!0),ce(me,pe,Se,"⇀","\\rightharpoonup",!0),ce(me,pe,Se,"↙","\\swarrow",!0),ce(me,pe,Se,"↽","\\leftharpoondown",!0),ce(me,pe,Se,"⇁","\\rightharpoondown",!0),ce(me,pe,Se,"↖","\\nwarrow",!0),ce(me,pe,Se,"⇌","\\rightleftharpoons",!0),ce(me,de,Se,"≮","\\nless",!0),ce(me,de,Se,"","\\@nleqslant"),ce(me,de,Se,"","\\@nleqq"),ce(me,de,Se,"⪇","\\lneq",!0),ce(me,de,Se,"≨","\\lneqq",!0),ce(me,de,Se,"","\\@lvertneqq"),ce(me,de,Se,"⋦","\\lnsim",!0),ce(me,de,Se,"⪉","\\lnapprox",!0),ce(me,de,Se,"⊀","\\nprec",!0),ce(me,de,Se,"⋠","\\npreceq",!0),ce(me,de,Se,"⋨","\\precnsim",!0),ce(me,de,Se,"⪹","\\precnapprox",!0),ce(me,de,Se,"≁","\\nsim",!0),ce(me,de,Se,"","\\@nshortmid"),ce(me,de,Se,"∤","\\nmid",!0),ce(me,de,Se,"⊬","\\nvdash",!0),ce(me,de,Se,"⊭","\\nvDash",!0),ce(me,de,Se,"⋪","\\ntriangleleft"),ce(me,de,Se,"⋬","\\ntrianglelefteq",!0),ce(me,de,Se,"⊊","\\subsetneq",!0),ce(me,de,Se,"","\\@varsubsetneq"),ce(me,de,Se,"⫋","\\subsetneqq",!0),ce(me,de,Se,"","\\@varsubsetneqq"),ce(me,de,Se,"≯","\\ngtr",!0),ce(me,de,Se,"","\\@ngeqslant"),ce(me,de,Se,"","\\@ngeqq"),ce(me,de,Se,"⪈","\\gneq",!0),ce(me,de,Se,"≩","\\gneqq",!0),ce(me,de,Se,"","\\@gvertneqq"),ce(me,de,Se,"⋧","\\gnsim",!0),ce(me,de,Se,"⪊","\\gnapprox",!0),ce(me,de,Se,"⊁","\\nsucc",!0),ce(me,de,Se,"⋡","\\nsucceq",!0),ce(me,de,Se,"⋩","\\succnsim",!0),ce(me,de,Se,"⪺","\\succnapprox",!0),ce(me,de,Se,"≆","\\ncong",!0),ce(me,de,Se,"","\\@nshortparallel"),ce(me,de,Se,"∦","\\nparallel",!0),ce(me,de,Se,"⊯","\\nVDash",!0),ce(me,de,Se,"⋫","\\ntriangleright"),ce(me,de,Se,"⋭","\\ntrianglerighteq",!0),ce(me,de,Se,"","\\@nsupseteqq"),ce(me,de,Se,"⊋","\\supsetneq",!0),ce(me,de,Se,"","\\@varsupsetneq"),ce(me,de,Se,"⫌","\\supsetneqq",!0),ce(me,de,Se,"","\\@varsupsetneqq"),ce(me,de,Se,"⊮","\\nVdash",!0),ce(me,de,Se,"⪵","\\precneqq",!0),ce(me,de,Se,"⪶","\\succneqq",!0),ce(me,de,Se,"","\\@nsubseteqq"),ce(me,de,ge,"⊴","\\unlhd"),ce(me,de,ge,"⊵","\\unrhd"),ce(me,de,Se,"↚","\\nleftarrow",!0),ce(me,de,Se,"↛","\\nrightarrow",!0),ce(me,de,Se,"⇍","\\nLeftarrow",!0),ce(me,de,Se,"⇏","\\nRightarrow",!0),ce(me,de,Se,"↮","\\nleftrightarrow",!0),ce(me,de,Se,"⇎","\\nLeftrightarrow",!0),ce(me,de,Se,"△","\\vartriangle"),ce(me,de,ze,"ℏ","\\hslash"),ce(me,de,ze,"▽","\\triangledown"),ce(me,de,ze,"◊","\\lozenge"),ce(me,de,ze,"Ⓢ","\\circledS"),ce(me,de,ze,"®","\\circledR"),ce(ue,de,ze,"®","\\circledR"),ce(me,de,ze,"∡","\\measuredangle",!0),ce(me,de,ze,"∄","\\nexists"),ce(me,de,ze,"℧","\\mho"),ce(me,de,ze,"Ⅎ","\\Finv",!0),ce(me,de,ze,"⅁","\\Game",!0),ce(me,de,ze,"‵","\\backprime"),ce(me,de,ze,"▲","\\blacktriangle"),ce(me,de,ze,"▼","\\blacktriangledown"),ce(me,de,ze,"■","\\blacksquare"),ce(me,de,ze,"⧫","\\blacklozenge"),ce(me,de,ze,"★","\\bigstar"),ce(me,de,ze,"∢","\\sphericalangle",!0),ce(me,de,ze,"∁","\\complement",!0),ce(me,de,ze,"ð","\\eth",!0),ce(ue,pe,ze,"ð","ð"),ce(me,de,ze,"╱","\\diagup"),ce(me,de,ze,"╲","\\diagdown"),ce(me,de,ze,"□","\\square"),ce(me,de,ze,"□","\\Box"),ce(me,de,ze,"◊","\\Diamond"),ce(me,de,ze,"¥","\\yen",!0),ce(ue,de,ze,"¥","\\yen",!0),ce(me,de,ze,"✓","\\checkmark",!0),ce(ue,de,ze,"✓","\\checkmark"),ce(me,de,ze,"ℶ","\\beth",!0),ce(me,de,ze,"ℸ","\\daleth",!0),ce(me,de,ze,"ℷ","\\gimel",!0),ce(me,de,ze,"ϝ","\\digamma",!0),ce(me,de,ze,"ϰ","\\varkappa"),ce(me,de,we,"┌","\\@ulcorner",!0),ce(me,de,ve,"┐","\\@urcorner",!0),ce(me,de,we,"└","\\@llcorner",!0),ce(me,de,ve,"┘","\\@lrcorner",!0),ce(me,de,Se,"≦","\\leqq",!0),ce(me,de,Se,"⩽","\\leqslant",!0),ce(me,de,Se,"⪕","\\eqslantless",!0),ce(me,de,Se,"≲","\\lesssim",!0),ce(me,de,Se,"⪅","\\lessapprox",!0),ce(me,de,Se,"≊","\\approxeq",!0),ce(me,de,ge,"⋖","\\lessdot"),ce(me,de,Se,"⋘","\\lll",!0),ce(me,de,Se,"≶","\\lessgtr",!0),ce(me,de,Se,"⋚","\\lesseqgtr",!0),ce(me,de,Se,"⪋","\\lesseqqgtr",!0),ce(me,de,Se,"≑","\\doteqdot"),ce(me,de,Se,"≓","\\risingdotseq",!0),ce(me,de,Se,"≒","\\fallingdotseq",!0),ce(me,de,Se,"∽","\\backsim",!0),ce(me,de,Se,"⋍","\\backsimeq",!0),ce(me,de,Se,"⫅","\\subseteqq",!0),ce(me,de,Se,"⋐","\\Subset",!0),ce(me,de,Se,"⊏","\\sqsubset",!0),ce(me,de,Se,"≼","\\preccurlyeq",!0),ce(me,de,Se,"⋞","\\curlyeqprec",!0),ce(me,de,Se,"≾","\\precsim",!0),ce(me,de,Se,"⪷","\\precapprox",!0),ce(me,de,Se,"⊲","\\vartriangleleft"),ce(me,de,Se,"⊴","\\trianglelefteq"),ce(me,de,Se,"⊨","\\vDash",!0),ce(me,de,Se,"⊪","\\Vvdash",!0),ce(me,de,Se,"⌣","\\smallsmile"),ce(me,de,Se,"⌢","\\smallfrown"),ce(me,de,Se,"≏","\\bumpeq",!0),ce(me,de,Se,"≎","\\Bumpeq",!0),ce(me,de,Se,"≧","\\geqq",!0),ce(me,de,Se,"⩾","\\geqslant",!0),ce(me,de,Se,"⪖","\\eqslantgtr",!0),ce(me,de,Se,"≳","\\gtrsim",!0),ce(me,de,Se,"⪆","\\gtrapprox",!0),ce(me,de,ge,"⋗","\\gtrdot"),ce(me,de,Se,"⋙","\\ggg",!0),ce(me,de,Se,"≷","\\gtrless",!0),ce(me,de,Se,"⋛","\\gtreqless",!0),ce(me,de,Se,"⪌","\\gtreqqless",!0),ce(me,de,Se,"≖","\\eqcirc",!0),ce(me,de,Se,"≗","\\circeq",!0),ce(me,de,Se,"≜","\\triangleq",!0),ce(me,de,Se,"∼","\\thicksim"),ce(me,de,Se,"≈","\\thickapprox"),ce(me,de,Se,"⫆","\\supseteqq",!0),ce(me,de,Se,"⋑","\\Supset",!0),ce(me,de,Se,"⊐","\\sqsupset",!0),ce(me,de,Se,"≽","\\succcurlyeq",!0),ce(me,de,Se,"⋟","\\curlyeqsucc",!0),ce(me,de,Se,"≿","\\succsim",!0),ce(me,de,Se,"⪸","\\succapprox",!0),ce(me,de,Se,"⊳","\\vartriangleright"),ce(me,de,Se,"⊵","\\trianglerighteq"),ce(me,de,Se,"⊩","\\Vdash",!0),ce(me,de,Se,"∣","\\shortmid"),ce(me,de,Se,"∥","\\shortparallel"),ce(me,de,Se,"≬","\\between",!0),ce(me,de,Se,"⋔","\\pitchfork",!0),ce(me,de,Se,"∝","\\varpropto"),ce(me,de,Se,"◀","\\blacktriangleleft"),ce(me,de,Se,"∴","\\therefore",!0),ce(me,de,Se,"∍","\\backepsilon"),ce(me,de,Se,"▶","\\blacktriangleright"),ce(me,de,Se,"∵","\\because",!0),ce(me,de,Se,"⋘","\\llless"),ce(me,de,Se,"⋙","\\gggtr"),ce(me,de,ge,"⊲","\\lhd"),ce(me,de,ge,"⊳","\\rhd"),ce(me,de,Se,"≂","\\eqsim",!0),ce(me,pe,Se,"⋈","\\Join"),ce(me,de,Se,"≑","\\Doteq",!0),ce(me,de,ge,"∔","\\dotplus",!0),ce(me,de,ge,"∖","\\smallsetminus"),ce(me,de,ge,"⋒","\\Cap",!0),ce(me,de,ge,"⋓","\\Cup",!0),ce(me,de,ge,"⩞","\\doublebarwedge",!0),ce(me,de,ge,"⊟","\\boxminus",!0),ce(me,de,ge,"⊞","\\boxplus",!0),ce(me,de,ge,"⋇","\\divideontimes",!0),ce(me,de,ge,"⋉","\\ltimes",!0),ce(me,de,ge,"⋊","\\rtimes",!0),ce(me,de,ge,"⋋","\\leftthreetimes",!0),ce(me,de,ge,"⋌","\\rightthreetimes",!0),ce(me,de,ge,"⋏","\\curlywedge",!0),ce(me,de,ge,"⋎","\\curlyvee",!0),ce(me,de,ge,"⊝","\\circleddash",!0),ce(me,de,ge,"⊛","\\circledast",!0),ce(me,de,ge,"⋅","\\centerdot"),ce(me,de,ge,"⊺","\\intercal",!0),ce(me,de,ge,"⋒","\\doublecap"),ce(me,de,ge,"⋓","\\doublecup"),ce(me,de,ge,"⊠","\\boxtimes",!0),ce(me,de,Se,"⇢","\\dashrightarrow",!0),ce(me,de,Se,"⇠","\\dashleftarrow",!0),ce(me,de,Se,"⇇","\\leftleftarrows",!0),ce(me,de,Se,"⇆","\\leftrightarrows",!0),ce(me,de,Se,"⇚","\\Lleftarrow",!0),ce(me,de,Se,"↞","\\twoheadleftarrow",!0),ce(me,de,Se,"↢","\\leftarrowtail",!0),ce(me,de,Se,"↫","\\looparrowleft",!0),ce(me,de,Se,"⇋","\\leftrightharpoons",!0),ce(me,de,Se,"↶","\\curvearrowleft",!0),ce(me,de,Se,"↺","\\circlearrowleft",!0),ce(me,de,Se,"↰","\\Lsh",!0),ce(me,de,Se,"⇈","\\upuparrows",!0),ce(me,de,Se,"↿","\\upharpoonleft",!0),ce(me,de,Se,"⇃","\\downharpoonleft",!0),ce(me,pe,Se,"⊶","\\origof",!0),ce(me,pe,Se,"⊷","\\imageof",!0),ce(me,de,Se,"⊸","\\multimap",!0),ce(me,de,Se,"↭","\\leftrightsquigarrow",!0),ce(me,de,Se,"⇉","\\rightrightarrows",!0),ce(me,de,Se,"⇄","\\rightleftarrows",!0),ce(me,de,Se,"↠","\\twoheadrightarrow",!0),ce(me,de,Se,"↣","\\rightarrowtail",!0),ce(me,de,Se,"↬","\\looparrowright",!0),ce(me,de,Se,"↷","\\curvearrowright",!0),ce(me,de,Se,"↻","\\circlearrowright",!0),ce(me,de,Se,"↱","\\Rsh",!0),ce(me,de,Se,"⇊","\\downdownarrows",!0),ce(me,de,Se,"↾","\\upharpoonright",!0),ce(me,de,Se,"⇂","\\downharpoonright",!0),ce(me,de,Se,"⇝","\\rightsquigarrow",!0),ce(me,de,Se,"⇝","\\leadsto"),ce(me,de,Se,"⇛","\\Rrightarrow",!0),ce(me,de,Se,"↾","\\restriction"),ce(me,pe,ze,"‘","`"),ce(me,pe,ze,"$","\\$"),ce(ue,pe,ze,"$","\\$"),ce(ue,pe,ze,"$","\\textdollar"),ce(me,pe,ze,"%","\\%"),ce(ue,pe,ze,"%","\\%"),ce(me,pe,ze,"_","\\_"),ce(ue,pe,ze,"_","\\_"),ce(ue,pe,ze,"_","\\textunderscore"),ce(me,pe,ze,"∠","\\angle",!0),ce(me,pe,ze,"∞","\\infty",!0),ce(me,pe,ze,"′","\\prime"),ce(me,pe,ze,"△","\\triangle"),ce(me,pe,ze,"Γ","\\Gamma",!0),ce(me,pe,ze,"Δ","\\Delta",!0),ce(me,pe,ze,"Θ","\\Theta",!0),ce(me,pe,ze,"Λ","\\Lambda",!0),ce(me,pe,ze,"Ξ","\\Xi",!0),ce(me,pe,ze,"Π","\\Pi",!0),ce(me,pe,ze,"Σ","\\Sigma",!0),ce(me,pe,ze,"Υ","\\Upsilon",!0),ce(me,pe,ze,"Φ","\\Phi",!0),ce(me,pe,ze,"Ψ","\\Psi",!0),ce(me,pe,ze,"Ω","\\Omega",!0),ce(me,pe,ze,"A","Α"),ce(me,pe,ze,"B","Β"),ce(me,pe,ze,"E","Ε"),ce(me,pe,ze,"Z","Ζ"),ce(me,pe,ze,"H","Η"),ce(me,pe,ze,"I","Ι"),ce(me,pe,ze,"K","Κ"),ce(me,pe,ze,"M","Μ"),ce(me,pe,ze,"N","Ν"),ce(me,pe,ze,"O","Ο"),ce(me,pe,ze,"P","Ρ"),ce(me,pe,ze,"T","Τ"),ce(me,pe,ze,"X","Χ"),ce(me,pe,ze,"¬","\\neg",!0),ce(me,pe,ze,"¬","\\lnot"),ce(me,pe,ze,"⊤","\\top"),ce(me,pe,ze,"⊥","\\bot"),ce(me,pe,ze,"∅","\\emptyset"),ce(me,de,ze,"∅","\\varnothing"),ce(me,pe,be,"α","\\alpha",!0),ce(me,pe,be,"β","\\beta",!0),ce(me,pe,be,"γ","\\gamma",!0),ce(me,pe,be,"δ","\\delta",!0),ce(me,pe,be,"ϵ","\\epsilon",!0),ce(me,pe,be,"ζ","\\zeta",!0),ce(me,pe,be,"η","\\eta",!0),ce(me,pe,be,"θ","\\theta",!0),ce(me,pe,be,"ι","\\iota",!0),ce(me,pe,be,"κ","\\kappa",!0),ce(me,pe,be,"λ","\\lambda",!0),ce(me,pe,be,"μ","\\mu",!0),ce(me,pe,be,"ν","\\nu",!0),ce(me,pe,be,"ξ","\\xi",!0),ce(me,pe,be,"ο","\\omicron",!0),ce(me,pe,be,"π","\\pi",!0),ce(me,pe,be,"ρ","\\rho",!0),ce(me,pe,be,"σ","\\sigma",!0),ce(me,pe,be,"τ","\\tau",!0),ce(me,pe,be,"υ","\\upsilon",!0),ce(me,pe,be,"ϕ","\\phi",!0),ce(me,pe,be,"χ","\\chi",!0),ce(me,pe,be,"ψ","\\psi",!0),ce(me,pe,be,"ω","\\omega",!0),ce(me,pe,be,"ε","\\varepsilon",!0),ce(me,pe,be,"ϑ","\\vartheta",!0),ce(me,pe,be,"ϖ","\\varpi",!0),ce(me,pe,be,"ϱ","\\varrho",!0),ce(me,pe,be,"ς","\\varsigma",!0),ce(me,pe,be,"φ","\\varphi",!0),ce(me,pe,ge,"∗","*",!0),ce(me,pe,ge,"+","+"),ce(me,pe,ge,"−","-",!0),ce(me,pe,ge,"⋅","\\cdot",!0),ce(me,pe,ge,"∘","\\circ",!0),ce(me,pe,ge,"÷","\\div",!0),ce(me,pe,ge,"±","\\pm",!0),ce(me,pe,ge,"×","\\times",!0),ce(me,pe,ge,"∩","\\cap",!0),ce(me,pe,ge,"∪","\\cup",!0),ce(me,pe,ge,"∖","\\setminus",!0),ce(me,pe,ge,"∧","\\land"),ce(me,pe,ge,"∨","\\lor"),ce(me,pe,ge,"∧","\\wedge",!0),ce(me,pe,ge,"∨","\\vee",!0),ce(me,pe,ze,"√","\\surd"),ce(me,pe,we,"⟨","\\langle",!0),ce(me,pe,we,"∣","\\lvert"),ce(me,pe,we,"∥","\\lVert"),ce(me,pe,ve,"?","?"),ce(me,pe,ve,"!","!"),ce(me,pe,ve,"⟩","\\rangle",!0),ce(me,pe,ve,"∣","\\rvert"),ce(me,pe,ve,"∥","\\rVert"),ce(me,pe,Se,"=","="),ce(me,pe,Se,":",":"),ce(me,pe,Se,"≈","\\approx",!0),ce(me,pe,Se,"≅","\\cong",!0),ce(me,pe,Se,"≥","\\ge"),ce(me,pe,Se,"≥","\\geq",!0),ce(me,pe,Se,"←","\\gets"),ce(me,pe,Se,">","\\gt",!0),ce(me,pe,Se,"∈","\\in",!0),ce(me,pe,Se,"","\\@not"),ce(me,pe,Se,"⊂","\\subset",!0),ce(me,pe,Se,"⊃","\\supset",!0),ce(me,pe,Se,"⊆","\\subseteq",!0),ce(me,pe,Se,"⊇","\\supseteq",!0),ce(me,de,Se,"⊈","\\nsubseteq",!0),ce(me,de,Se,"⊉","\\nsupseteq",!0),ce(me,pe,Se,"⊨","\\models"),ce(me,pe,Se,"←","\\leftarrow",!0),ce(me,pe,Se,"≤","\\le"),ce(me,pe,Se,"≤","\\leq",!0),ce(me,pe,Se,"<","\\lt",!0),ce(me,pe,Se,"→","\\rightarrow",!0),ce(me,pe,Se,"→","\\to"),ce(me,de,Se,"≱","\\ngeq",!0),ce(me,de,Se,"≰","\\nleq",!0),ce(me,pe,Me," ","\\ "),ce(me,pe,Me," ","\\space"),ce(me,pe,Me," ","\\nobreakspace"),ce(ue,pe,Me," ","\\ "),ce(ue,pe,Me," "," "),ce(ue,pe,Me," ","\\space"),ce(ue,pe,Me," ","\\nobreakspace"),ce(me,pe,Me,null,"\\nobreak"),ce(me,pe,Me,null,"\\allowbreak"),ce(me,pe,ke,",",","),ce(me,pe,ke,";",";"),ce(me,de,ge,"⊼","\\barwedge",!0),ce(me,de,ge,"⊻","\\veebar",!0),ce(me,pe,ge,"⊙","\\odot",!0),ce(me,pe,ge,"⊕","\\oplus",!0),ce(me,pe,ge,"⊗","\\otimes",!0),ce(me,pe,ze,"∂","\\partial",!0),ce(me,pe,ge,"⊘","\\oslash",!0),ce(me,de,ge,"⊚","\\circledcirc",!0),ce(me,de,ge,"⊡","\\boxdot",!0),ce(me,pe,ge,"△","\\bigtriangleup"),ce(me,pe,ge,"▽","\\bigtriangledown"),ce(me,pe,ge,"†","\\dagger"),ce(me,pe,ge,"⋄","\\diamond"),ce(me,pe,ge,"⋆","\\star"),ce(me,pe,ge,"◃","\\triangleleft"),ce(me,pe,ge,"▹","\\triangleright"),ce(me,pe,we,"{","\\{"),ce(ue,pe,ze,"{","\\{"),ce(ue,pe,ze,"{","\\textbraceleft"),ce(me,pe,ve,"}","\\}"),ce(ue,pe,ze,"}","\\}"),ce(ue,pe,ze,"}","\\textbraceright"),ce(me,pe,we,"{","\\lbrace"),ce(me,pe,ve,"}","\\rbrace"),ce(me,pe,we,"[","\\lbrack",!0),ce(ue,pe,ze,"[","\\lbrack",!0),ce(me,pe,ve,"]","\\rbrack",!0),ce(ue,pe,ze,"]","\\rbrack",!0),ce(me,pe,we,"(","\\lparen",!0),ce(me,pe,ve,")","\\rparen",!0),ce(ue,pe,ze,"<","\\textless",!0),ce(ue,pe,ze,">","\\textgreater",!0),ce(me,pe,we,"⌊","\\lfloor",!0),ce(me,pe,ve,"⌋","\\rfloor",!0),ce(me,pe,we,"⌈","\\lceil",!0),ce(me,pe,ve,"⌉","\\rceil",!0),ce(me,pe,ze,"\\","\\backslash"),ce(me,pe,ze,"∣","|"),ce(me,pe,ze,"∣","\\vert"),ce(ue,pe,ze,"|","\\textbar",!0),ce(me,pe,ze,"∥","\\|"),ce(me,pe,ze,"∥","\\Vert"),ce(ue,pe,ze,"∥","\\textbardbl"),ce(ue,pe,ze,"~","\\textasciitilde"),ce(ue,pe,ze,"\\","\\textbackslash"),ce(ue,pe,ze,"^","\\textasciicircum"),ce(me,pe,Se,"↑","\\uparrow",!0),ce(me,pe,Se,"⇑","\\Uparrow",!0),ce(me,pe,Se,"↓","\\downarrow",!0),ce(me,pe,Se,"⇓","\\Downarrow",!0),ce(me,pe,Se,"↕","\\updownarrow",!0),ce(me,pe,Se,"⇕","\\Updownarrow",!0),ce(me,pe,xe,"∐","\\coprod"),ce(me,pe,xe,"⋁","\\bigvee"),ce(me,pe,xe,"⋀","\\bigwedge"),ce(me,pe,xe,"⨄","\\biguplus"),ce(me,pe,xe,"⋂","\\bigcap"),ce(me,pe,xe,"⋃","\\bigcup"),ce(me,pe,xe,"∫","\\int"),ce(me,pe,xe,"∫","\\intop"),ce(me,pe,xe,"∬","\\iint"),ce(me,pe,xe,"∭","\\iiint"),ce(me,pe,xe,"∏","\\prod"),ce(me,pe,xe,"∑","\\sum"),ce(me,pe,xe,"⨂","\\bigotimes"),ce(me,pe,xe,"⨁","\\bigoplus"),ce(me,pe,xe,"⨀","\\bigodot"),ce(me,pe,xe,"∮","\\oint"),ce(me,pe,xe,"∯","\\oiint"),ce(me,pe,xe,"∰","\\oiiint"),ce(me,pe,xe,"⨆","\\bigsqcup"),ce(me,pe,xe,"∫","\\smallint"),ce(ue,pe,ye,"…","\\textellipsis"),ce(me,pe,ye,"…","\\mathellipsis"),ce(ue,pe,ye,"…","\\ldots",!0),ce(me,pe,ye,"…","\\ldots",!0),ce(me,pe,ye,"⋯","\\@cdots",!0),ce(me,pe,ye,"⋱","\\ddots",!0),ce(me,pe,ze,"⋮","\\varvdots"),ce(me,pe,fe,"ˊ","\\acute"),ce(me,pe,fe,"ˋ","\\grave"),ce(me,pe,fe,"¨","\\ddot"),ce(me,pe,fe,"~","\\tilde"),ce(me,pe,fe,"ˉ","\\bar"),ce(me,pe,fe,"˘","\\breve"),ce(me,pe,fe,"ˇ","\\check"),ce(me,pe,fe,"^","\\hat"),ce(me,pe,fe,"⃗","\\vec"),ce(me,pe,fe,"˙","\\dot"),ce(me,pe,fe,"˚","\\mathring"),ce(me,pe,be,"","\\@imath"),ce(me,pe,be,"","\\@jmath"),ce(me,pe,ze,"ı","ı"),ce(me,pe,ze,"ȷ","ȷ"),ce(ue,pe,ze,"ı","\\i",!0),ce(ue,pe,ze,"ȷ","\\j",!0),ce(ue,pe,ze,"ß","\\ss",!0),ce(ue,pe,ze,"æ","\\ae",!0),ce(ue,pe,ze,"œ","\\oe",!0),ce(ue,pe,ze,"ø","\\o",!0),ce(ue,pe,ze,"Æ","\\AE",!0),ce(ue,pe,ze,"Œ","\\OE",!0),ce(ue,pe,ze,"Ø","\\O",!0),ce(ue,pe,fe,"ˊ","\\'"),ce(ue,pe,fe,"ˋ","\\`"),ce(ue,pe,fe,"ˆ","\\^"),ce(ue,pe,fe,"˜","\\~"),ce(ue,pe,fe,"ˉ","\\="),ce(ue,pe,fe,"˘","\\u"),ce(ue,pe,fe,"˙","\\."),ce(ue,pe,fe,"¸","\\c"),ce(ue,pe,fe,"˚","\\r"),ce(ue,pe,fe,"ˇ","\\v"),ce(ue,pe,fe,"¨",'\\"'),ce(ue,pe,fe,"˝","\\H"),ce(ue,pe,fe,"◯","\\textcircled");var Ae={"--":!0,"---":!0,"``":!0,"''":!0};ce(ue,pe,ze,"–","--",!0),ce(ue,pe,ze,"–","\\textendash"),ce(ue,pe,ze,"—","---",!0),ce(ue,pe,ze,"—","\\textemdash"),ce(ue,pe,ze,"‘","`",!0),ce(ue,pe,ze,"‘","\\textquoteleft"),ce(ue,pe,ze,"’","'",!0),ce(ue,pe,ze,"’","\\textquoteright"),ce(ue,pe,ze,"“","``",!0),ce(ue,pe,ze,"“","\\textquotedblleft"),ce(ue,pe,ze,"”","''",!0),ce(ue,pe,ze,"”","\\textquotedblright"),ce(me,pe,ze,"°","\\degree",!0),ce(ue,pe,ze,"°","\\degree"),ce(ue,pe,ze,"°","\\textdegree",!0),ce(me,pe,ze,"£","\\pounds"),ce(me,pe,ze,"£","\\mathsterling",!0),ce(ue,pe,ze,"£","\\pounds"),ce(ue,pe,ze,"£","\\textsterling",!0),ce(me,de,ze,"✠","\\maltese"),ce(ue,de,ze,"✠","\\maltese");for(var Te=0;Te<14;Te++){var Be='0123456789/@."'.charAt(Te);ce(me,pe,ze,Be,Be)}for(var Ne=0;Ne<25;Ne++){var Ce='0123456789!@*()-=+";:?/.,'.charAt(Ne);ce(ue,pe,ze,Ce,Ce)}for(var qe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ie=0;Ie<52;Ie++){var Re=qe.charAt(Ie);ce(me,pe,be,Re,Re),ce(ue,pe,ze,Re,Re)}ce(me,de,ze,"C","ℂ"),ce(ue,de,ze,"C","ℂ"),ce(me,de,ze,"H","ℍ"),ce(ue,de,ze,"H","ℍ"),ce(me,de,ze,"N","ℕ"),ce(ue,de,ze,"N","ℕ"),ce(me,de,ze,"P","ℙ"),ce(ue,de,ze,"P","ℙ"),ce(me,de,ze,"Q","ℚ"),ce(ue,de,ze,"Q","ℚ"),ce(me,de,ze,"R","ℝ"),ce(ue,de,ze,"R","ℝ"),ce(me,de,ze,"Z","ℤ"),ce(ue,de,ze,"Z","ℤ"),ce(me,pe,be,"h","ℎ"),ce(ue,pe,be,"h","ℎ");for(var He="",Oe=0;Oe<52;Oe++){var Ee=qe.charAt(Oe);ce(me,pe,be,Ee,He=String.fromCharCode(55349,56320+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56372+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56424+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56580+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56736+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56788+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56840+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56944+Oe)),ce(ue,pe,ze,Ee,He),Oe<26&&(ce(me,pe,be,Ee,He=String.fromCharCode(55349,56632+Oe)),ce(ue,pe,ze,Ee,He),ce(me,pe,be,Ee,He=String.fromCharCode(55349,56476+Oe)),ce(ue,pe,ze,Ee,He))}ce(me,pe,be,"k",He=String.fromCharCode(55349,56668)),ce(ue,pe,ze,"k",He);for(var Le=0;Le<10;Le++){var De=Le.toString();ce(me,pe,be,De,He=String.fromCharCode(55349,57294+Le)),ce(ue,pe,ze,De,He),ce(me,pe,be,De,He=String.fromCharCode(55349,57314+Le)),ce(ue,pe,ze,De,He),ce(me,pe,be,De,He=String.fromCharCode(55349,57324+Le)),ce(ue,pe,ze,De,He),ce(me,pe,be,De,He=String.fromCharCode(55349,57334+Le)),ce(ue,pe,ze,De,He)}for(var Pe=0;Pe<3;Pe++){var Ve="ÐÞþ".charAt(Pe);ce(me,pe,be,Ve,Ve),ce(ue,pe,ze,Ve,Ve)}var Fe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Ge=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ue=function(e,t,r){return he[r][e]&&he[r][e].replace&&(e=he[r][e].replace),{value:e,metrics:O(e,t,r)}},Ye=function(e,t,r,n,a){var i,o=Ue(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||n&&"mathit"===n.font)&&(l=0),i=new te(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new te(e,0,0,0,0,0,a);if(n){i.maxFontSize=n.sizeMultiplier,n.style.isTight()&&i.classes.push("mtight");var h=n.getColor();h&&(i.style.color=h)}return i},Xe=function(e,t){if(_(e.classes)!==_(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var a in t.style)if(t.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;return!0},We=function(e){for(var t=0,r=0,n=0,a=0;at&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>n&&(n=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},_e=function(e,t,r,n){var a=new K(e,t,r,n);return We(a),a},je=function(e,t,r,n){return new K(e,t,r,n)},$e=function(e){var t=new q(e);return We(t),t},Ze=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ke={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Je={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Qe={fontMap:Ke,makeSymbol:Ye,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Ue(e,"Main-Bold",t).metrics?Ye(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===he[t][e].font?Ye(e,"Main-Regular",t,r,n):Ye(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:_e,makeSvgSpan:je,makeLineSpan:function(e,t,r){var n=_e([e],[],t);return n.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=W(n.height),n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var a=new J(e,t,r,n);return We(a),a},makeFragment:$e,wrapFragment:function(e,t){return e instanceof q?_e([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,a=n,i=1;i0&&(o.push(Mt(s,t)),s=[]),o.push(a[l]));s.length>0&&o.push(Mt(s,t)),r?((i=Mt(vt(r,t,!0))).classes=["tag"],o.push(i)):n&&o.push(n);var c=ut(["katex-html"],o);if(c.setAttribute("aria-hidden","true"),i){var m=i.children[0];m.style.height=W(c.height+c.depth),c.depth&&(m.style.verticalAlign=W(-c.depth))}return c}function At(e){return new q(e)}var Tt=function(){function e(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=_(this.classes));for(var r=0;r0&&(e+=' class ="'+c(_(this.classes))+'"'),e+=">";for(var r=0;r"},t.toText=function(){return this.children.map((function(e){return e.toText()})).join("")},e}(),Bt=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return c(this.toText())},t.toText=function(){return this.text},e}(),Nt={MathNode:Tt,TextNode:Bt,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?" ":e>=-.05556&&e<=-.05555?" ":e>=-.1667&&e<=-.1666?" ":e>=-.2223&&e<=-.2222?" ":e>=-.2778&&e<=-.2777?" ":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",W(this.width)),e},t.toMarkup=function(){return this.character?""+this.character+" ":' '},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:At},Ct=function(e,t,r){return!he[t][e]||!he[t][e].replace||55349===e.charCodeAt(0)||Ae.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=he[t][e].replace),new Nt.TextNode(e)},qt=function(e){return 1===e.length?e[0]:new Nt.MathNode("mrow",e)},It=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var a=e.text;return l(["\\imath","\\jmath"],a)?null:(he[n][a]&&he[n][a].replace&&(a=he[n][a].replace),O(a,Qe.fontMap[r].fontName,n)?Qe.fontMap[r].variant:null)},Rt=function(e,t,r){if(1===e.length){var n=Ot(e[0],t);return r&&n instanceof Tt&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var a,i=[],o=0;o0&&(p.text=p.text.slice(0,1)+"̸"+p.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Ht=function(e,t,r){return qt(Rt(e,t,r))},Ot=function(e,t){if(!e)return new Nt.MathNode("mrow");if(st[e.type])return st[e.type](e,t);throw new n("Got group of unknown type: '"+e.type+"'")};function Et(e,t,r,n,a){var i,o=Rt(e,r);i=1===o.length&&o[0]instanceof Tt&&l(["mrow","mtable"],o[0].type)?o[0]:new Nt.MathNode("mrow",o);var s=new Nt.MathNode("annotation",[new Nt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var h=new Nt.MathNode("semantics",[i,s]),c=new Nt.MathNode("math",[h]);return c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block"),Qe.makeSpan([a?"katex":"katex-mathml"],[c])}var Lt=function(e){return new F({style:e.displayMode?A.DISPLAY:A.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Dt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Qe.makeSpan(r,[e])}return e},Pt={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},Vt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e){var t=new Nt.MathNode("mo",[new Nt.TextNode(Pt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Gt=function(e,t){var r=function(){var r=4e5,n=e.label.slice(1);if(l(["widehat","widecheck","widetilde","utilde"],n)){var a,i,o,s="ordgroup"===(d=e.base).type?d.body.length:1;if(s>5)"widehat"===n||"widecheck"===n?(a=420,r=2364,o=.42,i=n+"4"):(a=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===n||"widecheck"===n?(r=[0,1062,2364,2364,2364][h],a=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=n+h):(r=[0,600,1033,2339,2340][h],a=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var c=new ne(i),m=new re([c],{width:"100%",height:W(o),viewBox:"0 0 "+r+" "+a,preserveAspectRatio:"none"});return{span:Qe.makeSvgSpan([],[m],t),minWidth:0,height:o}}var u,p,d,f=[],g=Vt[n],v=g[0],y=g[1],b=g[2],x=b/1e3,w=v.length;if(1===w)u=["hide-tail"],p=[g[3]];else if(2===w)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==w)throw new Error("Correct katexImagesData or update code here to support\n "+w+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var k=0;k0&&(n.style.minWidth=W(a)),n};function Ut(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Yt(e){var t=Xt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Xt(e){return e&&("atom"===e.type||se.hasOwnProperty(e.type))?e:null}var Wt=function(e,t){var r,n,a;e&&"supsub"===e.type?(r=(n=Ut(e.base,"accent")).base,e.base=r,a=function(e){if(e instanceof K)return e;throw new Error("Expected span but got "+String(e)+".")}(St(e,t)),e.base=n):r=(n=Ut(e,"accent")).base;var i=St(r,t.havingCrampedStyle()),o=0;if(n.isShifty&&p(r)){var s=u(r);o=ie(St(s,t.havingCrampedStyle())).skew}var l,h="\\c"===n.label,c=h?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(n.isStretchy)l=Gt(n,t),l=Qe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+W(2*o)+")",marginLeft:W(2*o)}:void 0}]},t);else{var m,d;"\\vec"===n.label?(m=Qe.staticSvg("vec",t),d=Qe.svgData.vec[1]):((m=ie(m=Qe.makeOrd({mode:n.mode,text:n.label},t,"textord"))).italic=0,d=m.width,h&&(c+=m.depth)),l=Qe.makeSpan(["accent-body"],[m]);var f="\\textcircled"===n.label;f&&(l.classes.push("accent-full"),c=i.height);var g=o;f||(g-=d/2),l.style.left=W(g),"\\textcircled"===n.label&&(l.style.top=".2em"),l=Qe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:l}]},t)}var v=Qe.makeSpan(["mord","accent"],[l],t);return a?(a.children[0]=v,a.height=Math.max(v.height,a.height),a.classes[0]="mord",a):v},_t=function(e,t){var r=e.isStretchy?Ft(e.label):new Nt.MathNode("mo",[Ct(e.label,e.mode)]),n=new Nt.MathNode("mover",[Ot(e.base,t),r]);return n.setAttribute("accent","true"),n},jt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((function(e){return"\\"+e})).join("|"));lt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var r=ct(t[0]),n=!jt.test(e.funcName),a=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),lt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:function(e,t){var r=t[0],n=e.parser.mode;return"math"===n&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),lt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:function(e,t){var r=St(e.base,t),n=Gt(e,t),a="\\utilde"===e.label?.12:0,i=Qe.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]},t);return Qe.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var r=Ft(e.label),n=new Nt.MathNode("munder",[Ot(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var $t=function(e){var t=new Nt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};lt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=e.funcName;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder:function(e,t){var r,n=t.style,a=t.havingStyle(n.sup()),i=Qe.wrapFragment(St(e.body,a,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(a=t.havingStyle(n.sub()),(r=Qe.wrapFragment(St(e.below,a,t),t)).classes.push(o+"-arrow-pad"));var s,l=Gt(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,c=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=i.depth),r){var m=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Qe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:m}]},t)}else s=Qe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Qe.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder:function(e,t){var r,n=Ft(e.label);if(n.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var a=$t(Ot(e.body,t));if(e.below){var i=$t(Ot(e.below,t));r=new Nt.MathNode("munderover",[n,i,a])}else r=new Nt.MathNode("mover",[n,a])}else if(e.below){var o=$t(Ot(e.below,t));r=new Nt.MathNode("munder",[n,o])}else r=$t(),r=new Nt.MathNode("mover",[n,r]);return r}});var Zt=Qe.makeSpan;function Kt(e,t){var r=vt(e.body,t,!0);return Zt([e.mclass],r,t)}function Jt(e,t){var r,n=Rt(e.body,t);return"minner"===e.mclass?r=new Nt.MathNode("mpadded",n):"mord"===e.mclass?e.isCharacterBox?(r=n[0]).type="mi":r=new Nt.MathNode("mi",n):(e.isCharacterBox?(r=n[0]).type="mo":r=new Nt.MathNode("mo",n),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}lt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:mt(a),isCharacterBox:p(a)}},htmlBuilder:Kt,mathmlBuilder:Jt});var Qt=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};lt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:Qt(t[0]),body:mt(t[1]),isCharacterBox:p(t[1])}}}),lt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var r,n=e.parser,a=e.funcName,i=t[1],o=t[0];r="\\stackrel"!==a?Qt(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:mt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:n.mode,mclass:r,body:[l],isCharacterBox:p(l)}},htmlBuilder:Kt,mathmlBuilder:Jt}),lt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"pmb",mode:e.parser.mode,mclass:Qt(t[0]),body:mt(t[0])}},htmlBuilder:function(e,t){var r=vt(e.body,t,!0),n=Qe.makeSpan([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder:function(e,t){var r=Rt(e.body,t),n=new Nt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var er={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},tr=function(e){return"textord"===e.type&&"@"===e.text};function rr(e,t,r){var n=er[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var a={type:"atom",text:n,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[a],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}lt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder:function(e,t){var r=t.havingStyle(t.style.sup()),n=Qe.wrapFragment(St(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=W(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mrow",[Ot(e.label,t)]);return(r=new Nt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Nt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),lt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:function(e,t){return{type:"cdlabelparent",mode:e.parser.mode,fragment:t[0]}},htmlBuilder:function(e,t){var r=Qe.wrapFragment(St(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:function(e,t){return new Nt.MathNode("mrow",[Ot(e.fragment,t)])}}),lt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var r=e.parser,a=Ut(t[0],"ordgroup").body,i="",o=0;o=1114111)throw new n("\\@char with invalid code point "+i);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var nr=function(e,t){var r=vt(e.body,t.withColor(e.color),!1);return Qe.makeFragment(r)},ar=function(e,t){var r=Rt(e.body,t.withColor(e.color)),n=new Nt.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};lt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler:function(e,t){var r=e.parser,n=Ut(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:mt(a)}},htmlBuilder:nr,mathmlBuilder:ar}),lt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,a=Ut(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:nr,mathmlBuilder:ar}),lt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a="["===n.gullet.future().text?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&Ut(a,"size").value}},htmlBuilder:function(e,t){var r=Qe.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=W(X(e.size,t)))),r},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",W(X(e.size,t)))),r}});var ir={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},or=function(e){var t=e.text;if(/^(?:[\\{}$^_]|EOF)$/.test(t))throw new n("Expected a control sequence",e);return t},sr=function(e,t,r,n){var a=e.gullet.macros.get(r.text);null==a&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};lt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler:function(e){var t=e.parser,r=e.funcName;t.consumeSpaces();var a=t.fetch();if(ir[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=ir[a.text]),Ut(t.parseFunction(),"internal");throw new n("Invalid token after macro prefix",a)}}),lt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,a=t.gullet.popToken(),i=a.text;if(/^(?:[\\{}$^_]|EOF)$/.test(i))throw new n("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new n('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new n('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new n("Expected a macro definition");l[s].push(a.text)}var h=t.gullet.consumeArg().tokens;return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(i,{tokens:h,numArgs:s,delimiters:l},r===ir[r]),{type:"internal",mode:t.mode}}}),lt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=or(t.gullet.popToken());t.gullet.consumeSpaces();var a=function(e){var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t}(t);return sr(t,n,a,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),lt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=or(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return sr(t,n,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var lr=function(e,t,r){var n=O(he.math[e]&&he.math[e].replace||e,t,r);if(!n)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return n},hr=function(e,t,r,n){var a=r.havingBaseStyle(t),i=Qe.makeSpan(n.concat(a.sizingClasses(r)),[e],r),o=a.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},cr=function(e,t,r){var n=t.havingBaseStyle(r),a=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=W(a),e.height-=a,e.depth+=a},mr=function(e,t,r,n,a,i){var o=function(e,t,r,n){return Qe.makeSymbol(e,"Size"+t+"-Regular",r,n)}(e,t,a,n),s=hr(Qe.makeSpan(["delimsizing","size"+t],[o],n),A.TEXT,n,i);return r&&cr(s,n,A.TEXT),s},ur=function(e,t,r){return{type:"elem",elem:Qe.makeSpan(["delimsizinginner","Size1-Regular"===t?"delim-size1":"delim-size4"],[Qe.makeSpan([],[Qe.makeSymbol(e,t,r)])])}},pr=function(e,t,r){var n=I["Size4-Regular"][e.charCodeAt(0)]?I["Size4-Regular"][e.charCodeAt(0)][4]:I["Size1-Regular"][e.charCodeAt(0)][4],a=new ne("inner",function(e,t){switch(e){case"⎜":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"∣":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"∥":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"⎟":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"⎢":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"⎥":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"⎪":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"⏐":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"‖":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new re([a],{width:W(n),height:W(t),style:"width:"+W(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Qe.makeSvgSpan([],[i],r);return o.height=t,o.style.height=W(t),o.style.width=W(n),{type:"elem",elem:o}},dr={type:"kern",size:-.008},fr=["|","\\lvert","\\rvert","\\vert"],gr=["\\|","\\lVert","\\rVert","\\Vert"],vr=function(e,t,r,n,a,i){var o,s,h,c,m="",u=0;o=h=c=e,s=null;var p="Size1-Regular";"\\uparrow"===e?h=c="⏐":"\\Uparrow"===e?h=c="‖":"\\downarrow"===e?o=h="⏐":"\\Downarrow"===e?o=h="‖":"\\updownarrow"===e?(o="\\uparrow",h="⏐",c="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",h="‖",c="\\Downarrow"):l(fr,e)?(h="∣",m="vert",u=333):l(gr,e)?(h="∥",m="doublevert",u=556):"["===e||"\\lbrack"===e?(o="⎡",h="⎢",c="⎣",p="Size4-Regular",m="lbrack",u=667):"]"===e||"\\rbrack"===e?(o="⎤",h="⎥",c="⎦",p="Size4-Regular",m="rbrack",u=667):"\\lfloor"===e||"⌊"===e?(h=o="⎢",c="⎣",p="Size4-Regular",m="lfloor",u=667):"\\lceil"===e||"⌈"===e?(o="⎡",h=c="⎢",p="Size4-Regular",m="lceil",u=667):"\\rfloor"===e||"⌋"===e?(h=o="⎥",c="⎦",p="Size4-Regular",m="rfloor",u=667):"\\rceil"===e||"⌉"===e?(o="⎤",h=c="⎥",p="Size4-Regular",m="rceil",u=667):"("===e||"\\lparen"===e?(o="⎛",h="⎜",c="⎝",p="Size4-Regular",m="lparen",u=875):")"===e||"\\rparen"===e?(o="⎞",h="⎟",c="⎠",p="Size4-Regular",m="rparen",u=875):"\\{"===e||"\\lbrace"===e?(o="⎧",s="⎨",c="⎩",h="⎪",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="⎫",s="⎬",c="⎭",h="⎪",p="Size4-Regular"):"\\lgroup"===e||"⟮"===e?(o="⎧",c="⎩",h="⎪",p="Size4-Regular"):"\\rgroup"===e||"⟯"===e?(o="⎫",c="⎭",h="⎪",p="Size4-Regular"):"\\lmoustache"===e||"⎰"===e?(o="⎧",c="⎭",h="⎪",p="Size4-Regular"):"\\rmoustache"!==e&&"⎱"!==e||(o="⎫",c="⎩",h="⎪",p="Size4-Regular");var d=lr(o,p,a),f=d.height+d.depth,g=lr(h,p,a),v=g.height+g.depth,y=lr(c,p,a),b=y.height+y.depth,x=0,w=1;if(null!==s){var k=lr(s,p,a);x=k.height+k.depth,w=2}var S=f+b+x,M=S+Math.max(0,Math.ceil((t-S)/(w*v)))*w*v,z=n.fontMetrics().axisHeight;r&&(z*=n.sizeMultiplier);var T=M/2-z,B=[];if(m.length>0){var N=M-f-b,C=Math.round(1e3*M),q=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(m,Math.round(1e3*N)),I=new ne(m,q),R=(u/1e3).toFixed(3)+"em",H=(C/1e3).toFixed(3)+"em",O=new re([I],{width:R,height:H,viewBox:"0 0 "+u+" "+C}),E=Qe.makeSvgSpan([],[O],n);E.height=C/1e3,E.style.width=R,E.style.height=H,B.push({type:"elem",elem:E})}else{if(B.push(ur(c,p,a)),B.push(dr),null===s){var L=M-f-b+.016;B.push(pr(h,L,n))}else{var D=(M-f-b-x)/2+.016;B.push(pr(h,D,n)),B.push(dr),B.push(ur(s,p,a)),B.push(dr),B.push(pr(h,D,n))}B.push(dr),B.push(ur(o,p,a))}var P=n.havingBaseStyle(A.TEXT),V=Qe.makeVList({positionType:"bottom",positionData:T,children:B},P);return hr(Qe.makeSpan(["delimsizing","mult"],[V],P),A.TEXT,n,i)},yr=.08,br=function(e,t,r,n,a){var i=function(e,t,r){t*=1e3;var n="";switch(e){case"sqrtMain":n=function(e,t){return"M95,"+(622+e+80)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" 80h400000v"+(40+e)+"h-400000z"}(t);break;case"sqrtSize1":n=function(e,t){return"M263,"+(601+e+80)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" 80h400000v"+(40+e)+"h-400000z"}(t);break;case"sqrtSize2":n=function(e,t){return"M983 "+(10+e+80)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" 80h400000v"+(40+e)+"h-400000z"}(t);break;case"sqrtSize3":n=function(e,t){return"M424,"+(2398+e+80)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" 80\nh400000v"+(40+e)+"h-400000z"}(t);break;case"sqrtSize4":n=function(e,t){return"M473,"+(2713+e+80)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" 80h400000v"+(40+e)+"H1017.7z"}(t);break;case"sqrtTall":n=function(e,t,r){return"M702 "+(e+80)+"H400000"+(40+e)+"\nH742v"+(r-54-80-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 80H400000v"+(40+e)+"H742z"}(t,0,r)}return n}(e,n,r),o=new ne(e,i),s=new re([o],{width:"400em",height:W(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Qe.makeSvgSpan(["hide-tail"],[s],a)},xr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],wr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],kr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Sr=[0,1.2,1.8,2.4,3],Mr=[{type:"small",style:A.SCRIPTSCRIPT},{type:"small",style:A.SCRIPT},{type:"small",style:A.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],zr=[{type:"small",style:A.SCRIPTSCRIPT},{type:"small",style:A.SCRIPT},{type:"small",style:A.TEXT},{type:"stack"}],Ar=[{type:"small",style:A.SCRIPTSCRIPT},{type:"small",style:A.SCRIPT},{type:"small",style:A.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Tr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Br=function(e,t,r,n){for(var a=Math.min(2,3-n.style.size);at)return r[a]}return r[r.length-1]},Nr=function(e,t,r,n,a,i){var o;"<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),o=l(kr,e)?Mr:l(xr,e)?Ar:zr;var s=Br(e,t,o,n);return"small"===s.type?function(e,t,r,n,a,i){var o=Qe.makeSymbol(e,"Main-Regular",a,n),s=hr(o,t,n,i);return r&&cr(s,n,t),s}(e,s.style,r,n,a,i):"large"===s.type?mr(e,s.size,r,n,a,i):vr(e,t,r,n,a,i)},Cr={sqrtImage:function(e,t){var r,n,a=t.havingBaseSizing(),i=Br("\\surd",e*a.sizeMultiplier,Ar,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,c=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=br("sqrtMain",l=(1+s+yr)/o,c=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",n=.833/o):"large"===i.type?(c=1080*Sr[i.size],h=(Sr[i.size]+s)/o,l=(Sr[i.size]+s+yr)/o,(r=br("sqrtSize"+i.size,l,c,s,t)).style.minWidth="1.02em",n=1/o):(l=e+s+yr,h=e+s,c=Math.floor(1e3*e+s)+80,(r=br("sqrtTall",l,c,s,t)).style.minWidth="0.742em",n=1.056),r.height=h,r.style.height=W(l),{span:r,advanceWidth:n,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,i){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),l(xr,e)||l(kr,e))return mr(e,t,!1,r,a,i);if(l(wr,e))return vr(e,Sr[t],!1,r,a,i);throw new n("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:Sr,customSizedDelim:Nr,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Nr(e,h,!0,n,a,i)}},qr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Ir=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Rr(e,t){var r=Xt(e);if(r&&l(Ir,r.text))return r;throw new n(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Hr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}lt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:function(e,t){var r=Rr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:qr[e.funcName].size,mclass:qr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?Qe.makeSpan([e.mclass]):Cr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Ct(e.delim,e.mode));var r=new Nt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=W(Cr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}}),lt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new n("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Rr(t[0],e).text,color:r}}}),lt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Rr(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=Ut(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){Hr(e);for(var r,n,a=vt(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l-1?"mpadded":"menclose",[Ot(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};lt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:Or,mathmlBuilder:Er}),lt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=Ut(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Or,mathmlBuilder:Er}),lt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),lt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:Or,mathmlBuilder:Er}),lt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\angl",body:t[0]}}});var Lr={};function Dr(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l1||!m)&&g.pop(),y.length0&&(b+=.25),c.push({pos:b,isDashed:e[t]})}for(x(o[0]),r=0;r0&&(S<(B+=y)&&(S=B),B=0),e.addJot&&(S+=f),M.height=k,M.depth=S,b+=k,M.pos=b,b+=S+B,l[r]=M,x(o[r+1])}var N,C,q=b/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some((function(e){return e})))for(r=0;r=s)){var Y=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(Y=h(P.pregap,p))&&((N=Qe.makeSpan(["arraycolsep"],[])).style.width=W(Y),R.push(N));var _=[];for(r=0;r0){for(var K=Qe.makeLineSpan("hline",t,m),J=Qe.makeLineSpan("hdashline",t,m),Q=[{type:"elem",elem:l,shift:0}];c.length>0;){var ee=c.pop(),te=ee.pos-q;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}l=Qe.makeVList({positionType:"individualShift",children:Q},t)}if(0===H.length)return Qe.makeSpan(["mord"],[l],t);var re=Qe.makeVList({positionType:"individualShift",children:H},t);return re=Qe.makeSpan(["tag"],[re],t),Qe.makeFragment([l,re])},$r={c:"center ",l:"left ",r:"right "},Zr=function(e,t){for(var r=[],n=new Nt.MathNode("mtd",[],["mtr-glue"]),a=new Nt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i0){var p=e.cols,d="",f=!1,g=0,v=p.length;"separator"===p[0].type&&(m+="top ",g=1),"separator"===p[p.length-1].type&&(m+="bottom ",v-=1);for(var y=g;y0?"left ":"",m+=S[S.length-1].length>0?"right ":"";for(var M=1;M-1?"alignat":"align",o="split"===e.envName,s=Wr(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Xr(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var c="",m=0;m0&&u&&(f=1),a[p]={type:"align",align:d,pregap:f,postgap:0}}return s.colSeparationType=u?"align":"alignat",s};Dr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new n("Unknown column alignment: "+t,e)})),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Wr(e.parser,a,_r(e.envName))},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var i=e.parser;if(i.consumeSpaces(),"["===i.fetch().text){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,-1==="lcr".indexOf(r))throw new n("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),a.cols=[{type:"align",align:r}]}}var o=Wr(e.parser,a,_r(e.envName)),s=Math.max.apply(Math,[0].concat(o.body.map((function(e){return e.length}))));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Wr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new n("Unknown column alignment: "+t,e)}));if(r.length>1)throw new n("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=Wr(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new n("{subarray} can contain only one column");return a},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler:function(e){var t=Wr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},_r(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Kr,htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler:function(e){l(["gather","gather*"],e.envName)&&Yr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Xr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Wr(e.parser,t,"display")},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Kr,htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler:function(e){Yr(e);var t={autoTag:Xr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Wr(e.parser,t,"display")},htmlBuilder:jr,mathmlBuilder:Zr}),Dr({type:"array",names:["CD"],props:{numArgs:0},handler:function(e){return Yr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new n("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a,i,o=[],s=[o],l=0;l-1);else{if(!("<>AV".indexOf(u)>-1))throw new n('Expected one of "<>AV=|." after @',h[m]);for(var d=0;d<2;d++){for(var f=!0,g=m+1;g=A.SCRIPT.id?r.text():A.DISPLAY:"text"===e&&r.size===A.DISPLAY.size?r=A.TEXT:"script"===e?r=A.SCRIPT:"scriptscript"===e&&(r=A.SCRIPTSCRIPT),r},nn=function(e,t){var r,n=rn(e.size,t.style),a=n.fracNum(),i=n.fracDen();r=t.havingStyle(a);var o=St(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*m:7*m,d=t.fontMetrics().denom1):(c>0?(u=t.fontMetrics().num2,p=m):(u=t.fontMetrics().num3,p=3*m),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;u-o.depth-(x+.5*c) 0&&(t="."===(t=e)?null:t),t};lt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var r,n=e.parser,a=t[4],i=t[5],o=ct(t[0]),s="atom"===o.type&&"open"===o.family?sn(o.text):null,l=ct(t[1]),h="atom"===l.type&&"close"===l.family?sn(l.text):null,c=Ut(t[2],"size"),m=null;r=!!c.isBlank||(m=c.value).number>0;var u="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Ut(p.body[0],"textord");u=on[Number(d.text)]}}else p=Ut(p,"textord"),u=on[Number(p.text)];return{type:"genfrac",mode:n.mode,numer:a,denom:i,continued:!1,hasBarLine:r,barSize:m,leftDelim:s,rightDelim:h,size:u}},htmlBuilder:nn,mathmlBuilder:an}),lt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ut(t[0],"size").value,token:n}}}),lt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ut(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:nn,mathmlBuilder:an});var ln=function(e,t){var r,n,a=t.style;"supsub"===e.type?(r=e.sup?St(e.sup,t.havingStyle(a.sup()),t):St(e.sub,t.havingStyle(a.sub()),t),n=Ut(e.base,"horizBrace")):n=Ut(e,"horizBrace");var i,o=St(n.base,t.havingBaseStyle(A.DISPLAY)),s=Gt(n,t);if(n.isOver?(i=Qe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Qe.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Qe.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t);i=n.isOver?Qe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Qe.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Qe.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t)};lt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:ln,mathmlBuilder:function(e,t){var r=Ft(e.label);return new Nt.MathNode(e.isOver?"mover":"munder",[Ot(e.base,t),r])}}),lt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],a=Ut(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:mt(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var r=vt(e.body,t,!1);return Qe.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=Ht(e.body,t);return r instanceof Tt||(r=new Tt("mrow",[r])),r.setAttribute("href",e.href),r}}),lt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i0&&(n=X(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=X(e.width,t));var i={height:W(r+n)};a>0&&(i.width=W(a)),n>0&&(i.verticalAlign=W(-n));var o=new Q(e.src,e.alt,i);return o.height=r,o.depth=n,o},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=X(e.height,t),a=0;if(e.totalheight.number>0&&(a=X(e.totalheight,t)-n,r.setAttribute("valign",W(-a))),r.setAttribute("height",W(n+a)),e.width.number>0){var i=X(e.width,t);r.setAttribute("width",W(i))}return r.setAttribute("src",e.src),r}}),lt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=Ut(t[0],"size");if(r.settings.strict){var i="m"===n[1],o="mu"===a.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+a.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder:function(e,t){return Qe.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=X(e.dimension,t);return new Nt.SpaceNode(r)}}),lt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:function(e,t){var r;"clap"===e.alignment?(r=Qe.makeSpan([],[St(e.body,t)]),r=Qe.makeSpan(["inner"],[r],t)):r=Qe.makeSpan(["inner"],[St(e.body,t)]);var n=Qe.makeSpan(["fix"],[]),a=Qe.makeSpan([e.alignment],[r,n],t),i=Qe.makeSpan(["strut"]);return i.style.height=W(a.height+a.depth),a.depth&&(i.style.verticalAlign=W(-a.depth)),a.children.unshift(i),a=Qe.makeSpan(["thinbox"],[a],t),Qe.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mpadded",[Ot(e.body,t)]);if("rlap"!==e.alignment){var n="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}}),lt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=e.funcName,n=e.parser,a=n.mode;n.switchMode("math");var i="\\("===r?"\\)":"$",o=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",body:o}}}),lt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new n("Mismatched "+e.funcName)}});var cn=function(e,t){switch(t.style.size){case A.DISPLAY.size:return e.display;case A.TEXT.size:return e.text;case A.SCRIPT.size:return e.script;case A.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};lt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:function(e,t){var r=cn(e,t),n=vt(r,t,!1);return Qe.makeFragment(n)},mathmlBuilder:function(e,t){var r=cn(e,t);return Ht(r,t)}});var mn=function(e,t,r,n,a,i,o){e=Qe.makeSpan([],[e]);var s,l,h,c=r&&p(r);if(t){var m=St(t,n.havingStyle(a.sup()),n);l={elem:m,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var u=St(r,n.havingStyle(a.sub()),n);s={elem:u,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-u.height)}}if(l&&s){var d=n.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Qe.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:W(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:W(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(s){var f=e.height-o;h=Qe.makeVList({positionType:"top",positionData:f,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:W(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},n)}else{if(!l)return e;var g=e.depth+o;h=Qe.makeVList({positionType:"bottom",positionData:g,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:W(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}var v=[h];if(s&&0!==i&&!c){var y=Qe.makeSpan(["mspace"],[],n);y.style.marginRight=W(i),v.unshift(y)}return Qe.makeSpan(["mop","op-limits"],v,n)},un=["\\smallint"],pn=function(e,t){var r,n,a,i=!1;"supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"op"),i=!0):a=Ut(e,"op");var o,s=t.style,h=!1;if(s.size===A.DISPLAY.size&&a.symbol&&!l(un,a.name)&&(h=!0),a.symbol){var c=h?"Size2-Regular":"Size1-Regular",m="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(m=a.name.slice(1),a.name="oiint"===m?"\\iint":"\\iiint"),o=Qe.makeSymbol(a.name,c,"math",t,["mop","op-symbol",h?"large-op":"small-op"]),m.length>0){var u=o.italic,p=Qe.staticSvg(m+"Size"+(h?"2":"1"),t);o=Qe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:h?.08:0}]},t),a.name="\\"+m,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var d=vt(a.body,t,!0);1===d.length&&d[0]instanceof te?(o=d[0]).classes[0]="mop":o=Qe.makeSpan(["mop"],d,t)}else{for(var f=[],g=1;g0){for(var s=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=vt(s,t.withFont("mathrm"),!0),h=0;h=0?s.setAttribute("height",W(a)):(s.setAttribute("height",W(a)),s.setAttribute("depth",W(-a))),s.setAttribute("voffset",W(a)),s}});var bn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];lt({type:"sizing",names:bn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:bn.indexOf(n)+1,body:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.size);return yn(e.body,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Rt(e.body,r),a=new Nt.MathNode("mstyle",n);return a.setAttribute("mathsize",W(r.sizeMultiplier)),a}}),lt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=!1,i=!1,o=r[0]&&Ut(r[0],"ordgroup");if(o)for(var s="",l=0;lr.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var u=l.height-r.height-i-h;r.style.paddingLeft=W(c);var p=Qe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(A.SCRIPTSCRIPT),f=St(e.index,d,t),g=.6*(p.height-p.depth),v=Qe.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),y=Qe.makeSpan(["root"],[v]);return Qe.makeSpan(["mord","sqrt"],[y,p],t)}return Qe.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Nt.MathNode("mroot",[Ot(r,t),Ot(n,t)]):new Nt.MathNode("msqrt",[Ot(r,t)])}});var xn={display:A.DISPLAY,text:A.TEXT,script:A.SCRIPT,scriptscript:A.SCRIPTSCRIPT};lt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r).withFont("");return yn(e.body,n,t)},mathmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r),a=Rt(e.body,n),i=new Nt.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});ht({type:"supsub",htmlBuilder:function(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===A.DISPLAY.size||r.alwaysHandleSupSub)?pn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===A.DISPLAY.size||r.limits)?vn:null:"accent"===r.type?p(r.base)?Wt:null:"horizBrace"===r.type&&!e.sub===r.isOver?ln:null:null}(e,t);if(r)return r(e,t);var n,a,i,o=e.base,s=e.sup,l=e.sub,h=St(o,t),c=t.fontMetrics(),m=0,u=0,d=o&&p(o);if(s){var f=t.havingStyle(t.style.sup());n=St(s,f,t),d||(m=h.height-f.fontMetrics().supDrop*f.sizeMultiplier/t.sizeMultiplier)}if(l){var g=t.havingStyle(t.style.sub());a=St(l,g,t),d||(u=h.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}i=t.style===A.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,y=t.sizeMultiplier,b=W(.5/c.ptPerEm/y),x=null;if(a){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof te||w)&&(x=W(-h.italic))}if(n&&a){m=Math.max(m,i,n.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var k=4*c.defaultRuleThickness;if(m-n.depth-(a.height-u)0&&(m+=S,u-=S)}v=Qe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:u,marginRight:b,marginLeft:x},{type:"elem",elem:n,shift:-m,marginRight:b}]},t)}else if(a){u=Math.max(u,c.sub1,a.height-.8*c.xHeight),v=Qe.makeVList({positionType:"shift",positionData:u,children:[{type:"elem",elem:a,marginLeft:x,marginRight:b}]},t)}else{if(!n)throw new Error("supsub must have either sup or sub.");m=Math.max(m,i,n.depth+.25*c.xHeight),v=Qe.makeVList({positionType:"shift",positionData:-m,children:[{type:"elem",elem:n,marginRight:b}]},t)}var M=wt(h,"right")||"mord";return Qe.makeSpan([M],[h,Qe.makeSpan(["msupsub"],[v])],t)},mathmlBuilder:function(e,t){var r,n=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(n=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var a,i=[Ot(e.base,t)];if(e.sub&&i.push(Ot(e.sub,t)),e.sup&&i.push(Ot(e.sup,t)),n)a=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;a=o&&"op"===o.type&&o.limits&&t.style===A.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===A.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;a=s&&"op"===s.type&&s.limits&&(t.style===A.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===A.DISPLAY)?"munder":"msub"}else{var l=e.base;a=l&&"op"===l.type&&l.limits&&(t.style===A.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===A.DISPLAY)?"mover":"msup"}return new Nt.MathNode(a,i)}}),ht({type:"atom",htmlBuilder:function(e,t){return Qe.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mo",[Ct(e.text,e.mode)]);if("bin"===e.family){var n=It(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var wn={mi:"italic",mn:"normal",mtext:"normal"};ht({type:"mathord",htmlBuilder:function(e,t){return Qe.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mi",[Ct(e.text,e.mode,t)]),n=It(e,t)||"italic";return n!==wn[r.type]&&r.setAttribute("mathvariant",n),r}}),ht({type:"textord",htmlBuilder:function(e,t){return Qe.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var r,n=Ct(e.text,e.mode,t),a=It(e,t)||"normal";return r="text"===e.mode?new Nt.MathNode("mtext",[n]):/[0-9]/.test(e.text)?new Nt.MathNode("mn",[n]):"\\prime"===e.text?new Nt.MathNode("mo",[n]):new Nt.MathNode("mi",[n]),a!==wn[r.type]&&r.setAttribute("mathvariant",a),r}});var kn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Sn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};ht({type:"spacing",htmlBuilder:function(e,t){if(Sn.hasOwnProperty(e.text)){var r=Sn[e.text].className||"";if("text"===e.mode){var a=Qe.makeOrd(e,t,"textord");return a.classes.push(r),a}return Qe.makeSpan(["mspace",r],[Qe.mathsym(e.text,e.mode,t)],t)}if(kn.hasOwnProperty(e.text))return Qe.makeSpan(["mspace",kn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Sn.hasOwnProperty(e.text)){if(kn.hasOwnProperty(e.text))return new Nt.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return new Nt.MathNode("mtext",[new Nt.TextNode(" ")])}});var Mn=function(){var e=new Nt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};ht({type:"tag",mathmlBuilder:function(e,t){var r=new Nt.MathNode("mtable",[new Nt.MathNode("mtr",[Mn(),new Nt.MathNode("mtd",[Ht(e.body,t)]),Mn(),new Nt.MathNode("mtd",[Ht(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var zn={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},An={"\\textbf":"textbf","\\textmd":"textmd"},Tn={"\\textit":"textit","\\textup":"textup"},Bn=function(e,t){var r=e.font;return r?zn[r]?t.withTextFontFamily(zn[r]):An[r]?t.withTextFontWeight(An[r]):t.withTextFontShape(Tn[r]):t};lt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"text",mode:r.mode,body:mt(a),font:n}},htmlBuilder:function(e,t){var r=Bn(e,t),n=vt(e.body,r,!0);return Qe.makeSpan(["mord","text"],n,r)},mathmlBuilder:function(e,t){var r=Bn(e,t);return Ht(e.body,r)}}),lt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=St(e.body,t),n=Qe.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Qe.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]},t);return Qe.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new Nt.MathNode("mo",[new Nt.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new Nt.MathNode("munder",[Ot(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),lt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:function(e,t){return{type:"vcenter",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=St(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Qe.makeVList({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){return new Nt.MathNode("mpadded",[Ot(e.body,t)],["vcenter"])}}),lt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=Nn(e),n=[],a=t.havingStyle(t.style.text()),i=0;i0;)this.endGroup()},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t},e}(),Dn=Pr;Vr("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Vr("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Vr("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Vr("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Vr("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Vr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Vr("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var Pn={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Vr("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=Pn[r.text])||a>=t)throw new n("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=Pn[e.future().text])&&i":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Vr("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Fn?t=Fn[r]:("\\not"===r.slice(0,4)||r in he.math&&l(["bin","rel"],he.math[r].group))&&(t="\\dotsb"),t}));var Gn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Vr("\\dotso",(function(e){return e.future().text in Gn?"\\ldots\\,":"\\ldots"})),Vr("\\dotsc",(function(e){var t=e.future().text;return t in Gn&&","!==t?"\\ldots\\,":"\\ldots"})),Vr("\\cdots",(function(e){return e.future().text in Gn?"\\@cdots\\,":"\\@cdots"})),Vr("\\dotsb","\\cdots"),Vr("\\dotsm","\\cdots"),Vr("\\dotsi","\\!\\cdots"),Vr("\\dotsx","\\ldots\\,"),Vr("\\DOTSI","\\relax"),Vr("\\DOTSB","\\relax"),Vr("\\DOTSX","\\relax"),Vr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Vr("\\,","\\tmspace+{3mu}{.1667em}"),Vr("\\thinspace","\\,"),Vr("\\>","\\mskip{4mu}"),Vr("\\:","\\tmspace+{4mu}{.2222em}"),Vr("\\medspace","\\:"),Vr("\\;","\\tmspace+{5mu}{.2777em}"),Vr("\\thickspace","\\;"),Vr("\\!","\\tmspace-{3mu}{.1667em}"),Vr("\\negthinspace","\\!"),Vr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Vr("\\negthickspace","\\tmspace-{5mu}{.277em}"),Vr("\\enspace","\\kern.5em "),Vr("\\enskip","\\hskip.5em\\relax"),Vr("\\quad","\\hskip1em\\relax"),Vr("\\qquad","\\hskip2em\\relax"),Vr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Vr("\\tag@paren","\\tag@literal{({#1})}"),Vr("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Vr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Vr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Vr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Vr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Vr("\\newline","\\\\\\relax"),Vr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Un=W(I["Main-Regular"]["T".charCodeAt(0)][1]-.7*I["Main-Regular"]["A".charCodeAt(0)][1]);Vr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Un+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Vr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Un+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Vr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Vr("\\@hspace","\\hskip #1\\relax"),Vr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Vr("\\ordinarycolon",":"),Vr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Vr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Vr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Vr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Vr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Vr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Vr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Vr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Vr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Vr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Vr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Vr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Vr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Vr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Vr("∷","\\dblcolon"),Vr("∹","\\eqcolon"),Vr("≔","\\coloneqq"),Vr("≕","\\eqqcolon"),Vr("⩴","\\Coloneqq"),Vr("\\ratio","\\vcentcolon"),Vr("\\coloncolon","\\dblcolon"),Vr("\\colonequals","\\coloneqq"),Vr("\\coloncolonequals","\\Coloneqq"),Vr("\\equalscolon","\\eqqcolon"),Vr("\\equalscoloncolon","\\Eqqcolon"),Vr("\\colonminus","\\coloneq"),Vr("\\coloncolonminus","\\Coloneq"),Vr("\\minuscolon","\\eqcolon"),Vr("\\minuscoloncolon","\\Eqcolon"),Vr("\\coloncolonapprox","\\Colonapprox"),Vr("\\coloncolonsim","\\Colonsim"),Vr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Vr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Vr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Vr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Vr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),Vr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Vr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Vr("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Vr("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Vr("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Vr("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Vr("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Vr("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Vr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),Vr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),Vr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),Vr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),Vr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),Vr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),Vr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),Vr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),Vr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),Vr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),Vr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),Vr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),Vr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),Vr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),Vr("\\imath","\\html@mathml{\\@imath}{ı}"),Vr("\\jmath","\\html@mathml{\\@jmath}{ȷ}"),Vr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),Vr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),Vr("⟦","\\llbracket"),Vr("⟧","\\rrbracket"),Vr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),Vr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),Vr("⦃","\\lBrace"),Vr("⦄","\\rBrace"),Vr("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"),Vr("⦵","\\minuso"),Vr("\\darr","\\downarrow"),Vr("\\dArr","\\Downarrow"),Vr("\\Darr","\\Downarrow"),Vr("\\lang","\\langle"),Vr("\\rang","\\rangle"),Vr("\\uarr","\\uparrow"),Vr("\\uArr","\\Uparrow"),Vr("\\Uarr","\\Uparrow"),Vr("\\N","\\mathbb{N}"),Vr("\\R","\\mathbb{R}"),Vr("\\Z","\\mathbb{Z}"),Vr("\\alef","\\aleph"),Vr("\\alefsym","\\aleph"),Vr("\\Alpha","\\mathrm{A}"),Vr("\\Beta","\\mathrm{B}"),Vr("\\bull","\\bullet"),Vr("\\Chi","\\mathrm{X}"),Vr("\\clubs","\\clubsuit"),Vr("\\cnums","\\mathbb{C}"),Vr("\\Complex","\\mathbb{C}"),Vr("\\Dagger","\\ddagger"),Vr("\\diamonds","\\diamondsuit"),Vr("\\empty","\\emptyset"),Vr("\\Epsilon","\\mathrm{E}"),Vr("\\Eta","\\mathrm{H}"),Vr("\\exist","\\exists"),Vr("\\harr","\\leftrightarrow"),Vr("\\hArr","\\Leftrightarrow"),Vr("\\Harr","\\Leftrightarrow"),Vr("\\hearts","\\heartsuit"),Vr("\\image","\\Im"),Vr("\\infin","\\infty"),Vr("\\Iota","\\mathrm{I}"),Vr("\\isin","\\in"),Vr("\\Kappa","\\mathrm{K}"),Vr("\\larr","\\leftarrow"),Vr("\\lArr","\\Leftarrow"),Vr("\\Larr","\\Leftarrow"),Vr("\\lrarr","\\leftrightarrow"),Vr("\\lrArr","\\Leftrightarrow"),Vr("\\Lrarr","\\Leftrightarrow"),Vr("\\Mu","\\mathrm{M}"),Vr("\\natnums","\\mathbb{N}"),Vr("\\Nu","\\mathrm{N}"),Vr("\\Omicron","\\mathrm{O}"),Vr("\\plusmn","\\pm"),Vr("\\rarr","\\rightarrow"),Vr("\\rArr","\\Rightarrow"),Vr("\\Rarr","\\Rightarrow"),Vr("\\real","\\Re"),Vr("\\reals","\\mathbb{R}"),Vr("\\Reals","\\mathbb{R}"),Vr("\\Rho","\\mathrm{P}"),Vr("\\sdot","\\cdot"),Vr("\\sect","\\S"),Vr("\\spades","\\spadesuit"),Vr("\\sub","\\subset"),Vr("\\sube","\\subseteq"),Vr("\\supe","\\supseteq"),Vr("\\Tau","\\mathrm{T}"),Vr("\\thetasym","\\vartheta"),Vr("\\weierp","\\wp"),Vr("\\Zeta","\\mathrm{Z}"),Vr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Vr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Vr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Vr("\\bra","\\mathinner{\\langle{#1}|}"),Vr("\\ket","\\mathinner{|{#1}\\rangle}"),Vr("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Vr("\\Bra","\\left\\langle#1\\right|"),Vr("\\Ket","\\left|#1\\right\\rangle");var Yn=function(e){return function(t){var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=function(t){return function(r){e&&(r.macros.set("|",o),a.length&&r.macros.set("\\|",s));var i=t;return!t&&a.length&&"|"===r.future().text&&(r.popToken(),i=!0),{tokens:i?a:n,numArgs:0}}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,c=t.expandTokens([].concat(i,h,r));return t.macros.endGroup(),{tokens:c.reverse(),numArgs:0}}};Vr("\\bra@ket",Yn(!1)),Vr("\\bra@set",Yn(!0)),Vr("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Vr("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Vr("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Vr("\\angln","{\\angl n}"),Vr("\\blue","\\textcolor{##6495ed}{#1}"),Vr("\\orange","\\textcolor{##ffa500}{#1}"),Vr("\\pink","\\textcolor{##ff00af}{#1}"),Vr("\\red","\\textcolor{##df0030}{#1}"),Vr("\\green","\\textcolor{##28ae7b}{#1}"),Vr("\\gray","\\textcolor{gray}{#1}"),Vr("\\purple","\\textcolor{##9d38bd}{#1}"),Vr("\\blueA","\\textcolor{##ccfaff}{#1}"),Vr("\\blueB","\\textcolor{##80f6ff}{#1}"),Vr("\\blueC","\\textcolor{##63d9ea}{#1}"),Vr("\\blueD","\\textcolor{##11accd}{#1}"),Vr("\\blueE","\\textcolor{##0c7f99}{#1}"),Vr("\\tealA","\\textcolor{##94fff5}{#1}"),Vr("\\tealB","\\textcolor{##26edd5}{#1}"),Vr("\\tealC","\\textcolor{##01d1c1}{#1}"),Vr("\\tealD","\\textcolor{##01a995}{#1}"),Vr("\\tealE","\\textcolor{##208170}{#1}"),Vr("\\greenA","\\textcolor{##b6ffb0}{#1}"),Vr("\\greenB","\\textcolor{##8af281}{#1}"),Vr("\\greenC","\\textcolor{##74cf70}{#1}"),Vr("\\greenD","\\textcolor{##1fab54}{#1}"),Vr("\\greenE","\\textcolor{##0d923f}{#1}"),Vr("\\goldA","\\textcolor{##ffd0a9}{#1}"),Vr("\\goldB","\\textcolor{##ffbb71}{#1}"),Vr("\\goldC","\\textcolor{##ff9c39}{#1}"),Vr("\\goldD","\\textcolor{##e07d10}{#1}"),Vr("\\goldE","\\textcolor{##a75a05}{#1}"),Vr("\\redA","\\textcolor{##fca9a9}{#1}"),Vr("\\redB","\\textcolor{##ff8482}{#1}"),Vr("\\redC","\\textcolor{##f9685d}{#1}"),Vr("\\redD","\\textcolor{##e84d39}{#1}"),Vr("\\redE","\\textcolor{##bc2612}{#1}"),Vr("\\maroonA","\\textcolor{##ffbde0}{#1}"),Vr("\\maroonB","\\textcolor{##ff92c6}{#1}"),Vr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Vr("\\maroonD","\\textcolor{##ca337c}{#1}"),Vr("\\maroonE","\\textcolor{##9e034e}{#1}"),Vr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Vr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Vr("\\purpleC","\\textcolor{##aa87ff}{#1}"),Vr("\\purpleD","\\textcolor{##7854ab}{#1}"),Vr("\\purpleE","\\textcolor{##543b78}{#1}"),Vr("\\mintA","\\textcolor{##f5f9e8}{#1}"),Vr("\\mintB","\\textcolor{##edf2df}{#1}"),Vr("\\mintC","\\textcolor{##e0e5cc}{#1}"),Vr("\\grayA","\\textcolor{##f6f7f7}{#1}"),Vr("\\grayB","\\textcolor{##f0f1f2}{#1}"),Vr("\\grayC","\\textcolor{##e3e5e6}{#1}"),Vr("\\grayD","\\textcolor{##d6d8da}{#1}"),Vr("\\grayE","\\textcolor{##babec2}{#1}"),Vr("\\grayF","\\textcolor{##888d93}{#1}"),Vr("\\grayG","\\textcolor{##626569}{#1}"),Vr("\\grayH","\\textcolor{##3b3e40}{#1}"),Vr("\\grayI","\\textcolor{##21242c}{#1}"),Vr("\\kaBlue","\\textcolor{##314453}{#1}"),Vr("\\kaGreen","\\textcolor{##71B307}{#1}");var Xn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Wn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Ln(Dn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new En(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.endGroups=function(){this.macros.endGroups()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.scanArgument=function(e){var t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken();var a=this.consumeArg(["]"]);n=a.tokens,r=a.end}else{var i=this.consumeArg();n=i.tokens,t=i.start,r=i.end}return this.pushToken(new Gr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")},t.consumeSpaces=function(){for(;" "===this.future().text;)this.stack.pop()},t.consumeArg=function(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,i=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1==--o)throw new n("Extra }",a)}else if("EOF"===a.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:a}},t.consumeArgs=function(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");var i=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new n("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new n("Not a valid argument number",l);var h;(h=i).splice.apply(h,[s,2].concat(o[+l.text-1]))}}}return this.pushTokens(i),i.length},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error},t.expandMacro=function(e){return this.macros.has(e)?this.expandTokens([new Gr(e)]):void 0},t.expandTokens=function(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(n)}return t},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var n="function"==typeof t?t(this):t;if("string"==typeof n){var a=0;if(-1!==n.indexOf("#"))for(var i=n.replace(/##/g,"");-1!==i.indexOf("#"+(a+1));)++a;for(var o=new En(n,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:a}}return n},t.isDefined=function(e){return this.macros.has(e)||Cn.hasOwnProperty(e)||he.math.hasOwnProperty(e)||he.text.hasOwnProperty(e)||Xn.hasOwnProperty(e)},t.isExpandable=function(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Cn.hasOwnProperty(e)&&!Cn[e].primitive},e}(),_n=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),$n={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Zn={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","ḉ":"ḉ","č":"č","ĉ":"ĉ","ċ":"ċ","ç":"ç","ď":"ď","ḋ":"ḋ","ḑ":"ḑ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ḝ":"ḝ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ȩ":"ȩ","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ģ":"ģ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","ḩ":"ḩ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ķ":"ķ","ĺ":"ĺ","ľ":"ľ","ļ":"ļ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ņ":"ņ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ŗ":"ŗ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ş":"ş","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ţ":"ţ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Ḉ":"Ḉ","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ç":"Ç","Ď":"Ď","Ḋ":"Ḋ","Ḑ":"Ḑ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ḝ":"Ḝ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ȩ":"Ȩ","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ģ":"Ģ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Ḩ":"Ḩ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ķ":"Ķ","Ĺ":"Ĺ","Ľ":"Ľ","Ļ":"Ļ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ņ":"Ņ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ŗ":"Ŗ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ş":"Ş","Ť":"Ť","Ṫ":"Ṫ","Ţ":"Ţ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},Kn=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Wn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}},t.subparse=function(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new Gr("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r},t.parseExpression=function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&Cn[a.text]&&Cn[a.text].infix)break;var i=this.parseAtom(r);if(!i)break;"internal"!==i.type&&n.push(i)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)},t.handleInfixNodes=function(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=he[this.mode][t].group,h=Fr.range(e);if(oe.hasOwnProperty(l)){var c=l;s={type:"atom",mode:this.mode,family:c,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(N(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:Fr.range(e),text:t}}if(this.consume(),o)for(var m=0;m 0 && (a.push({ type: "text", data: e.slice(0, n) }), (e = e.slice(n)));
+ var s = t.findIndex(function (t) {
+ return e.startsWith(t.left);
+ });
+ if (-1 === (n = r(t[s].right, e, t[s].left.length))) break;
+ var l = e.slice(0, n + t[s].right.length),
+ h = i.test(l) ? l : e.slice(t[s].left.length, n);
+ a.push({ type: "math", data: h, rawData: l, display: t[s].display }), (e = e.slice(n + t[s].right.length));
+ }
+ return "" !== e && a.push({ type: "text", data: e }), a;
+ })(e, n.delimiters);
+ if (1 === a.length && "text" === a[0].type) return null;
+ for (var o = document.createDocumentFragment(), s = 0; s < a.length; s++)
+ if ("text" === a[s].type) o.appendChild(document.createTextNode(a[s].data));
+ else {
+ var l = document.createElement("span"),
+ h = a[s].data;
+ n.displayMode = a[s].display;
+ try {
+ n.preProcess && (h = n.preProcess(h)), t().render(h, l, n);
+ } catch (e) {
+ if (!(e instanceof t().ParseError)) throw e;
+ n.errorCallback("KaTeX auto-render: Failed to parse `" + a[s].data + "` with ", e),
+ o.appendChild(document.createTextNode(a[s].rawData));
+ continue;
+ }
+ o.appendChild(l);
+ }
+ return o;
+ },
+ s = function e(t, r) {
+ for (var n = 0; n < t.childNodes.length; n++) {
+ var a = t.childNodes[n];
+ if (3 === a.nodeType) {
+ for (var i = a.textContent, s = a.nextSibling, l = 0; s && s.nodeType === Node.TEXT_NODE; )
+ (i += s.textContent), (s = s.nextSibling), l++;
+ var h = o(i, r);
+ if (h) {
+ for (var c = 0; c < l; c++) a.nextSibling.remove();
+ (n += h.childNodes.length - 1), t.replaceChild(h, a);
+ } else n += l;
+ } else
+ 1 === a.nodeType &&
+ (function () {
+ var t = " " + a.className + " ";
+ -1 === r.ignoredTags.indexOf(a.nodeName.toLowerCase()) &&
+ r.ignoredClasses.every(function (e) {
+ return -1 === t.indexOf(" " + e + " ");
+ }) &&
+ e(a, r);
+ })();
+ }
+ },
+ l = function (e, t) {
+ if (!e) throw new Error("No element provided to render");
+ var r = {};
+ for (var n in t) t.hasOwnProperty(n) && (r[n] = t[n]);
+ (r.delimiters = r.delimiters || [
+ { left: "$$", right: "$$", display: !0 },
+ { left: "\\(", right: "\\)", display: !1 },
+ { left: "\\begin{equation}", right: "\\end{equation}", display: !0 },
+ { left: "\\begin{align}", right: "\\end{align}", display: !0 },
+ { left: "\\begin{alignat}", right: "\\end{alignat}", display: !0 },
+ { left: "\\begin{gather}", right: "\\end{gather}", display: !0 },
+ { left: "\\begin{CD}", right: "\\end{CD}", display: !0 },
+ { left: "\\[", right: "\\]", display: !0 },
+ ]),
+ (r.ignoredTags = r.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code", "option"]),
+ (r.ignoredClasses = r.ignoredClasses || []),
+ (r.errorCallback = r.errorCallback || console.error),
+ (r.macros = r.macros || {}),
+ s(e, r);
+ };
+ })(),
+ a.default
+ );
+ })();
+ }),
+ (e.exports = n(r(527)));
+ },
+ 527: function (e) {
+ var t;
+ "undefined" != typeof self && self,
+ (t = function () {
+ return (function () {
+ "use strict";
+ var e = {
+ d: function (t, r) {
+ for (var n in r) e.o(r, n) && !e.o(t, n) && Object.defineProperty(t, n, { enumerable: !0, get: r[n] });
+ },
+ o: function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t);
+ },
+ },
+ t = {};
+ e.d(t, {
+ default: function () {
+ return ra;
+ },
+ });
+ var r = function e(t, r) {
+ (this.name = void 0), (this.position = void 0), (this.length = void 0), (this.rawMessage = void 0);
+ var n,
+ a,
+ i = "KaTeX parse error: " + t,
+ o = r && r.loc;
+ if (o && o.start <= o.end) {
+ var s = o.lexer.input;
+ (n = o.start), (a = o.end), n === s.length ? (i += " at end of input: ") : (i += " at position " + (n + 1) + ": ");
+ var l = s.slice(n, a).replace(/[^]/g, "$&̲");
+ i += (n > 15 ? "…" + s.slice(n - 15, n) : s.slice(0, n)) + l + (a + 15 < s.length ? s.slice(a, a + 15) + "…" : s.slice(a));
+ }
+ var h = new Error(i);
+ return (
+ (h.name = "ParseError"),
+ (h.__proto__ = e.prototype),
+ (h.position = n),
+ null != n && null != a && (h.length = a - n),
+ (h.rawMessage = t),
+ h
+ );
+ };
+ r.prototype.__proto__ = Error.prototype;
+ var n = r,
+ a = /([A-Z])/g,
+ i = { "&": "&", ">": ">", "<": "<", '"': """, "'": "'" },
+ o = /[&><"']/g,
+ s = function e(t) {
+ return "ordgroup" === t.type || "color" === t.type ? (1 === t.body.length ? e(t.body[0]) : t) : "font" === t.type ? e(t.body) : t;
+ },
+ l = function (e, t) {
+ return -1 !== e.indexOf(t);
+ },
+ h = function (e, t) {
+ return void 0 === e ? t : e;
+ },
+ c = function (e) {
+ return String(e).replace(o, function (e) {
+ return i[e];
+ });
+ },
+ m = function (e) {
+ return e.replace(a, "-$1").toLowerCase();
+ },
+ u = s,
+ p = function (e) {
+ var t = s(e);
+ return "mathord" === t.type || "textord" === t.type || "atom" === t.type;
+ },
+ d = function (e) {
+ var t = /^\s*([^\\/#]*?)(?::|*58|*3a)/i.exec(e);
+ return null != t ? t[1] : "_relative";
+ },
+ f = {
+ displayMode: {
+ type: "boolean",
+ description:
+ "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",
+ cli: "-d, --display-mode",
+ },
+ output: {
+ type: { enum: ["htmlAndMathml", "html", "mathml"] },
+ description: "Determines the markup language of the output.",
+ cli: "-F, --format ",
+ },
+ leqno: {
+ type: "boolean",
+ description: "Render display math in leqno style (left-justified tags).",
+ },
+ fleqn: { type: "boolean", description: "Render display math flush left." },
+ throwOnError: {
+ type: "boolean",
+ default: !0,
+ cli: "-t, --no-throw-on-error",
+ cliDescription:
+ "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error.",
+ },
+ errorColor: {
+ type: "string",
+ default: "#cc0000",
+ cli: "-c, --error-color ",
+ cliDescription:
+ "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",
+ cliProcessor: function (e) {
+ return "#" + e;
+ },
+ },
+ macros: {
+ type: "object",
+ cli: "-m, --macro ",
+ cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",
+ cliDefault: [],
+ cliProcessor: function (e, t) {
+ return t.push(e), t;
+ },
+ },
+ minRuleThickness: {
+ type: "number",
+ description:
+ "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "--min-rule-thickness ",
+ cliProcessor: parseFloat,
+ },
+ colorIsTextColor: {
+ type: "boolean",
+ description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",
+ cli: "-b, --color-is-text-color",
+ },
+ strict: {
+ type: [{ enum: ["warn", "ignore", "error"] }, "boolean", "function"],
+ description:
+ "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",
+ cli: "-S, --strict",
+ cliDefault: !1,
+ },
+ trust: {
+ type: ["boolean", "function"],
+ description: "Trust the input, enabling all HTML features such as \\url.",
+ cli: "-T, --trust",
+ },
+ maxSize: {
+ type: "number",
+ default: 1 / 0,
+ description:
+ "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "-s, --max-size ",
+ cliProcessor: parseInt,
+ },
+ maxExpand: {
+ type: "number",
+ default: 1e3,
+ description:
+ "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",
+ processor: function (e) {
+ return Math.max(0, e);
+ },
+ cli: "-e, --max-expand ",
+ cliProcessor: function (e) {
+ return "Infinity" === e ? 1 / 0 : parseInt(e);
+ },
+ },
+ globalGroup: { type: "boolean", cli: !1 },
+ };
+ function g(e) {
+ if (e.default) return e.default;
+ var t = e.type,
+ r = Array.isArray(t) ? t[0] : t;
+ if ("string" != typeof r) return r.enum[0];
+ switch (r) {
+ case "boolean":
+ return !1;
+ case "string":
+ return "";
+ case "number":
+ return 0;
+ case "object":
+ return {};
+ }
+ }
+ var v = (function () {
+ function e(e) {
+ for (var t in ((this.displayMode = void 0),
+ (this.output = void 0),
+ (this.leqno = void 0),
+ (this.fleqn = void 0),
+ (this.throwOnError = void 0),
+ (this.errorColor = void 0),
+ (this.macros = void 0),
+ (this.minRuleThickness = void 0),
+ (this.colorIsTextColor = void 0),
+ (this.strict = void 0),
+ (this.trust = void 0),
+ (this.maxSize = void 0),
+ (this.maxExpand = void 0),
+ (this.globalGroup = void 0),
+ (e = e || {}),
+ f))
+ if (f.hasOwnProperty(t)) {
+ var r = f[t];
+ this[t] = void 0 !== e[t] ? (r.processor ? r.processor(e[t]) : e[t]) : g(r);
+ }
+ }
+ var t = e.prototype;
+ return (
+ (t.reportNonstrict = function (e, t, r) {
+ var a = this.strict;
+ if (("function" == typeof a && (a = a(e, t, r)), a && "ignore" !== a)) {
+ if (!0 === a || "error" === a)
+ throw new n("LaTeX-incompatible input and strict mode is set to 'error': " + t + " [" + e + "]", r);
+ "warn" === a
+ ? "undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + t + " [" + e + "]")
+ : "undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + a + "': " + t + " [" + e + "]");
+ }
+ }),
+ (t.useStrictBehavior = function (e, t, r) {
+ var n = this.strict;
+ if ("function" == typeof n)
+ try {
+ n = n(e, t, r);
+ } catch (e) {
+ n = "error";
+ }
+ return !(
+ !n ||
+ "ignore" === n ||
+ (!0 !== n &&
+ "error" !== n &&
+ ("warn" === n
+ ? ("undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + t + " [" + e + "]"),
+ 1)
+ : ("undefined" != typeof console &&
+ console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '" + n + "': " + t + " [" + e + "]"),
+ 1)))
+ );
+ }),
+ (t.isTrusted = function (e) {
+ e.url && !e.protocol && (e.protocol = d(e.url));
+ var t = "function" == typeof this.trust ? this.trust(e) : this.trust;
+ return Boolean(t);
+ }),
+ e
+ );
+ })(),
+ y = (function () {
+ function e(e, t, r) {
+ (this.id = void 0), (this.size = void 0), (this.cramped = void 0), (this.id = e), (this.size = t), (this.cramped = r);
+ }
+ var t = e.prototype;
+ return (
+ (t.sup = function () {
+ return b[x[this.id]];
+ }),
+ (t.sub = function () {
+ return b[w[this.id]];
+ }),
+ (t.fracNum = function () {
+ return b[k[this.id]];
+ }),
+ (t.fracDen = function () {
+ return b[S[this.id]];
+ }),
+ (t.cramp = function () {
+ return b[M[this.id]];
+ }),
+ (t.text = function () {
+ return b[z[this.id]];
+ }),
+ (t.isTight = function () {
+ return this.size >= 2;
+ }),
+ e
+ );
+ })(),
+ b = [
+ new y(0, 0, !1),
+ new y(1, 0, !0),
+ new y(2, 1, !1),
+ new y(3, 1, !0),
+ new y(4, 2, !1),
+ new y(5, 2, !0),
+ new y(6, 3, !1),
+ new y(7, 3, !0),
+ ],
+ x = [4, 5, 4, 5, 6, 7, 6, 7],
+ w = [5, 5, 5, 5, 7, 7, 7, 7],
+ k = [2, 3, 4, 5, 6, 7, 6, 7],
+ S = [3, 3, 5, 5, 7, 7, 7, 7],
+ M = [1, 1, 3, 3, 5, 5, 7, 7],
+ z = [0, 1, 2, 3, 2, 3, 2, 3],
+ A = { DISPLAY: b[0], TEXT: b[2], SCRIPT: b[4], SCRIPTSCRIPT: b[6] },
+ T = [
+ {
+ name: "latin",
+ blocks: [
+ [256, 591],
+ [768, 879],
+ ],
+ },
+ { name: "cyrillic", blocks: [[1024, 1279]] },
+ { name: "armenian", blocks: [[1328, 1423]] },
+ { name: "brahmic", blocks: [[2304, 4255]] },
+ { name: "georgian", blocks: [[4256, 4351]] },
+ {
+ name: "cjk",
+ blocks: [
+ [12288, 12543],
+ [19968, 40879],
+ [65280, 65376],
+ ],
+ },
+ { name: "hangul", blocks: [[44032, 55215]] },
+ ],
+ B = [];
+ function N(e) {
+ for (var t = 0; t < B.length; t += 2) if (e >= B[t] && e <= B[t + 1]) return !0;
+ return !1;
+ }
+ T.forEach(function (e) {
+ return e.blocks.forEach(function (e) {
+ return B.push.apply(B, e);
+ });
+ });
+ var C = {
+ doubleleftarrow:
+ "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",
+ doublerightarrow:
+ "M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",
+ leftarrow:
+ "M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",
+ leftbrace:
+ "M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",
+ leftbraceunder:
+ "M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",
+ leftgroup: "M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",
+ leftgroupunder: "M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",
+ leftharpoon:
+ "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",
+ leftharpoonplus:
+ "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",
+ leftharpoondown:
+ "M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",
+ leftharpoondownplus:
+ "M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",
+ lefthook:
+ "M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",
+ leftlinesegment: "M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",
+ leftmapsto: "M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",
+ leftToFrom:
+ "M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",
+ longequal: "M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",
+ midbrace:
+ "M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",
+ midbraceunder:
+ "M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",
+ oiintSize1:
+ "M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",
+ oiintSize2:
+ "M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",
+ oiiintSize1:
+ "M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",
+ oiiintSize2:
+ "M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",
+ rightarrow:
+ "M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",
+ rightbrace:
+ "M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",
+ rightbraceunder:
+ "M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",
+ rightgroup: "M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",
+ rightgroupunder: "M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",
+ rightharpoon:
+ "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",
+ rightharpoonplus:
+ "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",
+ rightharpoondown:
+ "M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",
+ rightharpoondownplus:
+ "M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",
+ righthook:
+ "M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",
+ rightlinesegment: "M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",
+ rightToFrom:
+ "M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",
+ twoheadleftarrow:
+ "M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",
+ twoheadrightarrow:
+ "M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",
+ tilde1:
+ "M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",
+ tilde2:
+ "M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",
+ tilde3:
+ "M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",
+ tilde4:
+ "M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",
+ vec: "M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",
+ widehat1: "M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",
+ widehat2: "M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widehat3: "M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widehat4: "M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
+ widecheck1:
+ "M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",
+ widecheck2:
+ "M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ widecheck3:
+ "M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ widecheck4:
+ "M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
+ baraboveleftarrow:
+ "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",
+ rightarrowabovebar:
+ "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",
+ baraboveshortleftharpoon:
+ "M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",
+ rightharpoonaboveshortbar:
+ "M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",
+ shortbaraboveleftharpoon:
+ "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",
+ shortrightharpoonabovebar:
+ "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z",
+ },
+ q = (function () {
+ function e(e) {
+ (this.children = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ (this.children = e),
+ (this.classes = []),
+ (this.height = 0),
+ (this.depth = 0),
+ (this.maxFontSize = 0),
+ (this.style = {});
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ for (var e = document.createDocumentFragment(), t = 0; t < this.children.length; t++) e.appendChild(this.children[t].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ for (var e = "", t = 0; t < this.children.length; t++) e += this.children[t].toMarkup();
+ return e;
+ }),
+ (t.toText = function () {
+ return this.children
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ }),
+ e
+ );
+ })(),
+ I = {
+ "AMS-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.68889, 0, 0, 0.72222],
+ 66: [0, 0.68889, 0, 0, 0.66667],
+ 67: [0, 0.68889, 0, 0, 0.72222],
+ 68: [0, 0.68889, 0, 0, 0.72222],
+ 69: [0, 0.68889, 0, 0, 0.66667],
+ 70: [0, 0.68889, 0, 0, 0.61111],
+ 71: [0, 0.68889, 0, 0, 0.77778],
+ 72: [0, 0.68889, 0, 0, 0.77778],
+ 73: [0, 0.68889, 0, 0, 0.38889],
+ 74: [0.16667, 0.68889, 0, 0, 0.5],
+ 75: [0, 0.68889, 0, 0, 0.77778],
+ 76: [0, 0.68889, 0, 0, 0.66667],
+ 77: [0, 0.68889, 0, 0, 0.94445],
+ 78: [0, 0.68889, 0, 0, 0.72222],
+ 79: [0.16667, 0.68889, 0, 0, 0.77778],
+ 80: [0, 0.68889, 0, 0, 0.61111],
+ 81: [0.16667, 0.68889, 0, 0, 0.77778],
+ 82: [0, 0.68889, 0, 0, 0.72222],
+ 83: [0, 0.68889, 0, 0, 0.55556],
+ 84: [0, 0.68889, 0, 0, 0.66667],
+ 85: [0, 0.68889, 0, 0, 0.72222],
+ 86: [0, 0.68889, 0, 0, 0.72222],
+ 87: [0, 0.68889, 0, 0, 1],
+ 88: [0, 0.68889, 0, 0, 0.72222],
+ 89: [0, 0.68889, 0, 0, 0.72222],
+ 90: [0, 0.68889, 0, 0, 0.66667],
+ 107: [0, 0.68889, 0, 0, 0.55556],
+ 160: [0, 0, 0, 0, 0.25],
+ 165: [0, 0.675, 0.025, 0, 0.75],
+ 174: [0.15559, 0.69224, 0, 0, 0.94666],
+ 240: [0, 0.68889, 0, 0, 0.55556],
+ 295: [0, 0.68889, 0, 0, 0.54028],
+ 710: [0, 0.825, 0, 0, 2.33334],
+ 732: [0, 0.9, 0, 0, 2.33334],
+ 770: [0, 0.825, 0, 0, 2.33334],
+ 771: [0, 0.9, 0, 0, 2.33334],
+ 989: [0.08167, 0.58167, 0, 0, 0.77778],
+ 1008: [0, 0.43056, 0.04028, 0, 0.66667],
+ 8245: [0, 0.54986, 0, 0, 0.275],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ 8487: [0, 0.68889, 0, 0, 0.72222],
+ 8498: [0, 0.68889, 0, 0, 0.55556],
+ 8502: [0, 0.68889, 0, 0, 0.66667],
+ 8503: [0, 0.68889, 0, 0, 0.44445],
+ 8504: [0, 0.68889, 0, 0, 0.66667],
+ 8513: [0, 0.68889, 0, 0, 0.63889],
+ 8592: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8594: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8602: [-0.13313, 0.36687, 0, 0, 1],
+ 8603: [-0.13313, 0.36687, 0, 0, 1],
+ 8606: [0.01354, 0.52239, 0, 0, 1],
+ 8608: [0.01354, 0.52239, 0, 0, 1],
+ 8610: [0.01354, 0.52239, 0, 0, 1.11111],
+ 8611: [0.01354, 0.52239, 0, 0, 1.11111],
+ 8619: [0, 0.54986, 0, 0, 1],
+ 8620: [0, 0.54986, 0, 0, 1],
+ 8621: [-0.13313, 0.37788, 0, 0, 1.38889],
+ 8622: [-0.13313, 0.36687, 0, 0, 1],
+ 8624: [0, 0.69224, 0, 0, 0.5],
+ 8625: [0, 0.69224, 0, 0, 0.5],
+ 8630: [0, 0.43056, 0, 0, 1],
+ 8631: [0, 0.43056, 0, 0, 1],
+ 8634: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8635: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8638: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8639: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8642: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8643: [0.19444, 0.69224, 0, 0, 0.41667],
+ 8644: [0.1808, 0.675, 0, 0, 1],
+ 8646: [0.1808, 0.675, 0, 0, 1],
+ 8647: [0.1808, 0.675, 0, 0, 1],
+ 8648: [0.19444, 0.69224, 0, 0, 0.83334],
+ 8649: [0.1808, 0.675, 0, 0, 1],
+ 8650: [0.19444, 0.69224, 0, 0, 0.83334],
+ 8651: [0.01354, 0.52239, 0, 0, 1],
+ 8652: [0.01354, 0.52239, 0, 0, 1],
+ 8653: [-0.13313, 0.36687, 0, 0, 1],
+ 8654: [-0.13313, 0.36687, 0, 0, 1],
+ 8655: [-0.13313, 0.36687, 0, 0, 1],
+ 8666: [0.13667, 0.63667, 0, 0, 1],
+ 8667: [0.13667, 0.63667, 0, 0, 1],
+ 8669: [-0.13313, 0.37788, 0, 0, 1],
+ 8672: [-0.064, 0.437, 0, 0, 1.334],
+ 8674: [-0.064, 0.437, 0, 0, 1.334],
+ 8705: [0, 0.825, 0, 0, 0.5],
+ 8708: [0, 0.68889, 0, 0, 0.55556],
+ 8709: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8717: [0, 0.43056, 0, 0, 0.42917],
+ 8722: [-0.03598, 0.46402, 0, 0, 0.5],
+ 8724: [0.08198, 0.69224, 0, 0, 0.77778],
+ 8726: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8733: [0, 0.69224, 0, 0, 0.77778],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8737: [0, 0.69224, 0, 0, 0.72222],
+ 8738: [0.03517, 0.52239, 0, 0, 0.72222],
+ 8739: [0.08167, 0.58167, 0, 0, 0.22222],
+ 8740: [0.25142, 0.74111, 0, 0, 0.27778],
+ 8741: [0.08167, 0.58167, 0, 0, 0.38889],
+ 8742: [0.25142, 0.74111, 0, 0, 0.5],
+ 8756: [0, 0.69224, 0, 0, 0.66667],
+ 8757: [0, 0.69224, 0, 0, 0.66667],
+ 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8765: [-0.13313, 0.37788, 0, 0, 0.77778],
+ 8769: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8770: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8774: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
+ 8778: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8782: [0.06062, 0.54986, 0, 0, 0.77778],
+ 8783: [0.06062, 0.54986, 0, 0, 0.77778],
+ 8785: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8786: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8787: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8790: [0, 0.69224, 0, 0, 0.77778],
+ 8791: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8796: [0.08198, 0.91667, 0, 0, 0.77778],
+ 8806: [0.25583, 0.75583, 0, 0, 0.77778],
+ 8807: [0.25583, 0.75583, 0, 0, 0.77778],
+ 8808: [0.25142, 0.75726, 0, 0, 0.77778],
+ 8809: [0.25142, 0.75726, 0, 0, 0.77778],
+ 8812: [0.25583, 0.75583, 0, 0, 0.5],
+ 8814: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8815: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8816: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8817: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8818: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8819: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8822: [0.1808, 0.675, 0, 0, 0.77778],
+ 8823: [0.1808, 0.675, 0, 0, 0.77778],
+ 8828: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8829: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8830: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8831: [0.22958, 0.72958, 0, 0, 0.77778],
+ 8832: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8833: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8840: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8841: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8842: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8843: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8847: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8848: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8858: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8859: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8861: [0.08198, 0.58198, 0, 0, 0.77778],
+ 8862: [0, 0.675, 0, 0, 0.77778],
+ 8863: [0, 0.675, 0, 0, 0.77778],
+ 8864: [0, 0.675, 0, 0, 0.77778],
+ 8865: [0, 0.675, 0, 0, 0.77778],
+ 8872: [0, 0.69224, 0, 0, 0.61111],
+ 8873: [0, 0.69224, 0, 0, 0.72222],
+ 8874: [0, 0.69224, 0, 0, 0.88889],
+ 8876: [0, 0.68889, 0, 0, 0.61111],
+ 8877: [0, 0.68889, 0, 0, 0.61111],
+ 8878: [0, 0.68889, 0, 0, 0.72222],
+ 8879: [0, 0.68889, 0, 0, 0.72222],
+ 8882: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8883: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8884: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8885: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8888: [0, 0.54986, 0, 0, 1.11111],
+ 8890: [0.19444, 0.43056, 0, 0, 0.55556],
+ 8891: [0.19444, 0.69224, 0, 0, 0.61111],
+ 8892: [0.19444, 0.69224, 0, 0, 0.61111],
+ 8901: [0, 0.54986, 0, 0, 0.27778],
+ 8903: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8905: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8906: [0.08167, 0.58167, 0, 0, 0.77778],
+ 8907: [0, 0.69224, 0, 0, 0.77778],
+ 8908: [0, 0.69224, 0, 0, 0.77778],
+ 8909: [-0.03598, 0.46402, 0, 0, 0.77778],
+ 8910: [0, 0.54986, 0, 0, 0.76042],
+ 8911: [0, 0.54986, 0, 0, 0.76042],
+ 8912: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8913: [0.03517, 0.54986, 0, 0, 0.77778],
+ 8914: [0, 0.54986, 0, 0, 0.66667],
+ 8915: [0, 0.54986, 0, 0, 0.66667],
+ 8916: [0, 0.69224, 0, 0, 0.66667],
+ 8918: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8919: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8920: [0.03517, 0.54986, 0, 0, 1.33334],
+ 8921: [0.03517, 0.54986, 0, 0, 1.33334],
+ 8922: [0.38569, 0.88569, 0, 0, 0.77778],
+ 8923: [0.38569, 0.88569, 0, 0, 0.77778],
+ 8926: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8927: [0.13667, 0.63667, 0, 0, 0.77778],
+ 8928: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8929: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8934: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8935: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8936: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8937: [0.23222, 0.74111, 0, 0, 0.77778],
+ 8938: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8939: [0.20576, 0.70576, 0, 0, 0.77778],
+ 8940: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8941: [0.30274, 0.79383, 0, 0, 0.77778],
+ 8994: [0.19444, 0.69224, 0, 0, 0.77778],
+ 8995: [0.19444, 0.69224, 0, 0, 0.77778],
+ 9416: [0.15559, 0.69224, 0, 0, 0.90222],
+ 9484: [0, 0.69224, 0, 0, 0.5],
+ 9488: [0, 0.69224, 0, 0, 0.5],
+ 9492: [0, 0.37788, 0, 0, 0.5],
+ 9496: [0, 0.37788, 0, 0, 0.5],
+ 9585: [0.19444, 0.68889, 0, 0, 0.88889],
+ 9586: [0.19444, 0.74111, 0, 0, 0.88889],
+ 9632: [0, 0.675, 0, 0, 0.77778],
+ 9633: [0, 0.675, 0, 0, 0.77778],
+ 9650: [0, 0.54986, 0, 0, 0.72222],
+ 9651: [0, 0.54986, 0, 0, 0.72222],
+ 9654: [0.03517, 0.54986, 0, 0, 0.77778],
+ 9660: [0, 0.54986, 0, 0, 0.72222],
+ 9661: [0, 0.54986, 0, 0, 0.72222],
+ 9664: [0.03517, 0.54986, 0, 0, 0.77778],
+ 9674: [0.11111, 0.69224, 0, 0, 0.66667],
+ 9733: [0.19444, 0.69224, 0, 0, 0.94445],
+ 10003: [0, 0.69224, 0, 0, 0.83334],
+ 10016: [0, 0.69224, 0, 0, 0.83334],
+ 10731: [0.11111, 0.69224, 0, 0, 0.66667],
+ 10846: [0.19444, 0.75583, 0, 0, 0.61111],
+ 10877: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10878: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10885: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10886: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10887: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10888: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10889: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10890: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10891: [0.48256, 0.98256, 0, 0, 0.77778],
+ 10892: [0.48256, 0.98256, 0, 0, 0.77778],
+ 10901: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10902: [0.13667, 0.63667, 0, 0, 0.77778],
+ 10933: [0.25142, 0.75726, 0, 0, 0.77778],
+ 10934: [0.25142, 0.75726, 0, 0, 0.77778],
+ 10935: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10936: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10937: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10938: [0.26167, 0.75726, 0, 0, 0.77778],
+ 10949: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10950: [0.25583, 0.75583, 0, 0, 0.77778],
+ 10955: [0.28481, 0.79383, 0, 0, 0.77778],
+ 10956: [0.28481, 0.79383, 0, 0, 0.77778],
+ 57350: [0.08167, 0.58167, 0, 0, 0.22222],
+ 57351: [0.08167, 0.58167, 0, 0, 0.38889],
+ 57352: [0.08167, 0.58167, 0, 0, 0.77778],
+ 57353: [0, 0.43056, 0.04028, 0, 0.66667],
+ 57356: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57357: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57358: [0.41951, 0.91951, 0, 0, 0.77778],
+ 57359: [0.30274, 0.79383, 0, 0, 0.77778],
+ 57360: [0.30274, 0.79383, 0, 0, 0.77778],
+ 57361: [0.41951, 0.91951, 0, 0, 0.77778],
+ 57366: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57367: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57368: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57369: [0.25142, 0.75726, 0, 0, 0.77778],
+ 57370: [0.13597, 0.63597, 0, 0, 0.77778],
+ 57371: [0.13597, 0.63597, 0, 0, 0.77778],
+ },
+ "Caligraphic-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.68333, 0, 0.19445, 0.79847],
+ 66: [0, 0.68333, 0.03041, 0.13889, 0.65681],
+ 67: [0, 0.68333, 0.05834, 0.13889, 0.52653],
+ 68: [0, 0.68333, 0.02778, 0.08334, 0.77139],
+ 69: [0, 0.68333, 0.08944, 0.11111, 0.52778],
+ 70: [0, 0.68333, 0.09931, 0.11111, 0.71875],
+ 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
+ 72: [0, 0.68333, 0.00965, 0.11111, 0.84452],
+ 73: [0, 0.68333, 0.07382, 0, 0.54452],
+ 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
+ 75: [0, 0.68333, 0.01445, 0.05556, 0.76195],
+ 76: [0, 0.68333, 0, 0.13889, 0.68972],
+ 77: [0, 0.68333, 0, 0.13889, 1.2009],
+ 78: [0, 0.68333, 0.14736, 0.08334, 0.82049],
+ 79: [0, 0.68333, 0.02778, 0.11111, 0.79611],
+ 80: [0, 0.68333, 0.08222, 0.08334, 0.69556],
+ 81: [0.09722, 0.68333, 0, 0.11111, 0.81667],
+ 82: [0, 0.68333, 0, 0.08334, 0.8475],
+ 83: [0, 0.68333, 0.075, 0.13889, 0.60556],
+ 84: [0, 0.68333, 0.25417, 0, 0.54464],
+ 85: [0, 0.68333, 0.09931, 0.08334, 0.62583],
+ 86: [0, 0.68333, 0.08222, 0, 0.61278],
+ 87: [0, 0.68333, 0.08222, 0.08334, 0.98778],
+ 88: [0, 0.68333, 0.14643, 0.13889, 0.7133],
+ 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
+ 90: [0, 0.68333, 0.07944, 0.13889, 0.72473],
+ 160: [0, 0, 0, 0, 0.25],
+ },
+ "Fraktur-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69141, 0, 0, 0.29574],
+ 34: [0, 0.69141, 0, 0, 0.21471],
+ 38: [0, 0.69141, 0, 0, 0.73786],
+ 39: [0, 0.69141, 0, 0, 0.21201],
+ 40: [0.24982, 0.74947, 0, 0, 0.38865],
+ 41: [0.24982, 0.74947, 0, 0, 0.38865],
+ 42: [0, 0.62119, 0, 0, 0.27764],
+ 43: [0.08319, 0.58283, 0, 0, 0.75623],
+ 44: [0, 0.10803, 0, 0, 0.27764],
+ 45: [0.08319, 0.58283, 0, 0, 0.75623],
+ 46: [0, 0.10803, 0, 0, 0.27764],
+ 47: [0.24982, 0.74947, 0, 0, 0.50181],
+ 48: [0, 0.47534, 0, 0, 0.50181],
+ 49: [0, 0.47534, 0, 0, 0.50181],
+ 50: [0, 0.47534, 0, 0, 0.50181],
+ 51: [0.18906, 0.47534, 0, 0, 0.50181],
+ 52: [0.18906, 0.47534, 0, 0, 0.50181],
+ 53: [0.18906, 0.47534, 0, 0, 0.50181],
+ 54: [0, 0.69141, 0, 0, 0.50181],
+ 55: [0.18906, 0.47534, 0, 0, 0.50181],
+ 56: [0, 0.69141, 0, 0, 0.50181],
+ 57: [0.18906, 0.47534, 0, 0, 0.50181],
+ 58: [0, 0.47534, 0, 0, 0.21606],
+ 59: [0.12604, 0.47534, 0, 0, 0.21606],
+ 61: [-0.13099, 0.36866, 0, 0, 0.75623],
+ 63: [0, 0.69141, 0, 0, 0.36245],
+ 65: [0, 0.69141, 0, 0, 0.7176],
+ 66: [0, 0.69141, 0, 0, 0.88397],
+ 67: [0, 0.69141, 0, 0, 0.61254],
+ 68: [0, 0.69141, 0, 0, 0.83158],
+ 69: [0, 0.69141, 0, 0, 0.66278],
+ 70: [0.12604, 0.69141, 0, 0, 0.61119],
+ 71: [0, 0.69141, 0, 0, 0.78539],
+ 72: [0.06302, 0.69141, 0, 0, 0.7203],
+ 73: [0, 0.69141, 0, 0, 0.55448],
+ 74: [0.12604, 0.69141, 0, 0, 0.55231],
+ 75: [0, 0.69141, 0, 0, 0.66845],
+ 76: [0, 0.69141, 0, 0, 0.66602],
+ 77: [0, 0.69141, 0, 0, 1.04953],
+ 78: [0, 0.69141, 0, 0, 0.83212],
+ 79: [0, 0.69141, 0, 0, 0.82699],
+ 80: [0.18906, 0.69141, 0, 0, 0.82753],
+ 81: [0.03781, 0.69141, 0, 0, 0.82699],
+ 82: [0, 0.69141, 0, 0, 0.82807],
+ 83: [0, 0.69141, 0, 0, 0.82861],
+ 84: [0, 0.69141, 0, 0, 0.66899],
+ 85: [0, 0.69141, 0, 0, 0.64576],
+ 86: [0, 0.69141, 0, 0, 0.83131],
+ 87: [0, 0.69141, 0, 0, 1.04602],
+ 88: [0, 0.69141, 0, 0, 0.71922],
+ 89: [0.18906, 0.69141, 0, 0, 0.83293],
+ 90: [0.12604, 0.69141, 0, 0, 0.60201],
+ 91: [0.24982, 0.74947, 0, 0, 0.27764],
+ 93: [0.24982, 0.74947, 0, 0, 0.27764],
+ 94: [0, 0.69141, 0, 0, 0.49965],
+ 97: [0, 0.47534, 0, 0, 0.50046],
+ 98: [0, 0.69141, 0, 0, 0.51315],
+ 99: [0, 0.47534, 0, 0, 0.38946],
+ 100: [0, 0.62119, 0, 0, 0.49857],
+ 101: [0, 0.47534, 0, 0, 0.40053],
+ 102: [0.18906, 0.69141, 0, 0, 0.32626],
+ 103: [0.18906, 0.47534, 0, 0, 0.5037],
+ 104: [0.18906, 0.69141, 0, 0, 0.52126],
+ 105: [0, 0.69141, 0, 0, 0.27899],
+ 106: [0, 0.69141, 0, 0, 0.28088],
+ 107: [0, 0.69141, 0, 0, 0.38946],
+ 108: [0, 0.69141, 0, 0, 0.27953],
+ 109: [0, 0.47534, 0, 0, 0.76676],
+ 110: [0, 0.47534, 0, 0, 0.52666],
+ 111: [0, 0.47534, 0, 0, 0.48885],
+ 112: [0.18906, 0.52396, 0, 0, 0.50046],
+ 113: [0.18906, 0.47534, 0, 0, 0.48912],
+ 114: [0, 0.47534, 0, 0, 0.38919],
+ 115: [0, 0.47534, 0, 0, 0.44266],
+ 116: [0, 0.62119, 0, 0, 0.33301],
+ 117: [0, 0.47534, 0, 0, 0.5172],
+ 118: [0, 0.52396, 0, 0, 0.5118],
+ 119: [0, 0.52396, 0, 0, 0.77351],
+ 120: [0.18906, 0.47534, 0, 0, 0.38865],
+ 121: [0.18906, 0.47534, 0, 0, 0.49884],
+ 122: [0.18906, 0.47534, 0, 0, 0.39054],
+ 160: [0, 0, 0, 0, 0.25],
+ 8216: [0, 0.69141, 0, 0, 0.21471],
+ 8217: [0, 0.69141, 0, 0, 0.21471],
+ 58112: [0, 0.62119, 0, 0, 0.49749],
+ 58113: [0, 0.62119, 0, 0, 0.4983],
+ 58114: [0.18906, 0.69141, 0, 0, 0.33328],
+ 58115: [0.18906, 0.69141, 0, 0, 0.32923],
+ 58116: [0.18906, 0.47534, 0, 0, 0.50343],
+ 58117: [0, 0.69141, 0, 0, 0.33301],
+ 58118: [0, 0.62119, 0, 0, 0.33409],
+ 58119: [0, 0.47534, 0, 0, 0.50073],
+ },
+ "Main-Bold": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.35],
+ 34: [0, 0.69444, 0, 0, 0.60278],
+ 35: [0.19444, 0.69444, 0, 0, 0.95833],
+ 36: [0.05556, 0.75, 0, 0, 0.575],
+ 37: [0.05556, 0.75, 0, 0, 0.95833],
+ 38: [0, 0.69444, 0, 0, 0.89444],
+ 39: [0, 0.69444, 0, 0, 0.31944],
+ 40: [0.25, 0.75, 0, 0, 0.44722],
+ 41: [0.25, 0.75, 0, 0, 0.44722],
+ 42: [0, 0.75, 0, 0, 0.575],
+ 43: [0.13333, 0.63333, 0, 0, 0.89444],
+ 44: [0.19444, 0.15556, 0, 0, 0.31944],
+ 45: [0, 0.44444, 0, 0, 0.38333],
+ 46: [0, 0.15556, 0, 0, 0.31944],
+ 47: [0.25, 0.75, 0, 0, 0.575],
+ 48: [0, 0.64444, 0, 0, 0.575],
+ 49: [0, 0.64444, 0, 0, 0.575],
+ 50: [0, 0.64444, 0, 0, 0.575],
+ 51: [0, 0.64444, 0, 0, 0.575],
+ 52: [0, 0.64444, 0, 0, 0.575],
+ 53: [0, 0.64444, 0, 0, 0.575],
+ 54: [0, 0.64444, 0, 0, 0.575],
+ 55: [0, 0.64444, 0, 0, 0.575],
+ 56: [0, 0.64444, 0, 0, 0.575],
+ 57: [0, 0.64444, 0, 0, 0.575],
+ 58: [0, 0.44444, 0, 0, 0.31944],
+ 59: [0.19444, 0.44444, 0, 0, 0.31944],
+ 60: [0.08556, 0.58556, 0, 0, 0.89444],
+ 61: [-0.10889, 0.39111, 0, 0, 0.89444],
+ 62: [0.08556, 0.58556, 0, 0, 0.89444],
+ 63: [0, 0.69444, 0, 0, 0.54305],
+ 64: [0, 0.69444, 0, 0, 0.89444],
+ 65: [0, 0.68611, 0, 0, 0.86944],
+ 66: [0, 0.68611, 0, 0, 0.81805],
+ 67: [0, 0.68611, 0, 0, 0.83055],
+ 68: [0, 0.68611, 0, 0, 0.88194],
+ 69: [0, 0.68611, 0, 0, 0.75555],
+ 70: [0, 0.68611, 0, 0, 0.72361],
+ 71: [0, 0.68611, 0, 0, 0.90416],
+ 72: [0, 0.68611, 0, 0, 0.9],
+ 73: [0, 0.68611, 0, 0, 0.43611],
+ 74: [0, 0.68611, 0, 0, 0.59444],
+ 75: [0, 0.68611, 0, 0, 0.90138],
+ 76: [0, 0.68611, 0, 0, 0.69166],
+ 77: [0, 0.68611, 0, 0, 1.09166],
+ 78: [0, 0.68611, 0, 0, 0.9],
+ 79: [0, 0.68611, 0, 0, 0.86388],
+ 80: [0, 0.68611, 0, 0, 0.78611],
+ 81: [0.19444, 0.68611, 0, 0, 0.86388],
+ 82: [0, 0.68611, 0, 0, 0.8625],
+ 83: [0, 0.68611, 0, 0, 0.63889],
+ 84: [0, 0.68611, 0, 0, 0.8],
+ 85: [0, 0.68611, 0, 0, 0.88472],
+ 86: [0, 0.68611, 0.01597, 0, 0.86944],
+ 87: [0, 0.68611, 0.01597, 0, 1.18888],
+ 88: [0, 0.68611, 0, 0, 0.86944],
+ 89: [0, 0.68611, 0.02875, 0, 0.86944],
+ 90: [0, 0.68611, 0, 0, 0.70277],
+ 91: [0.25, 0.75, 0, 0, 0.31944],
+ 92: [0.25, 0.75, 0, 0, 0.575],
+ 93: [0.25, 0.75, 0, 0, 0.31944],
+ 94: [0, 0.69444, 0, 0, 0.575],
+ 95: [0.31, 0.13444, 0.03194, 0, 0.575],
+ 97: [0, 0.44444, 0, 0, 0.55902],
+ 98: [0, 0.69444, 0, 0, 0.63889],
+ 99: [0, 0.44444, 0, 0, 0.51111],
+ 100: [0, 0.69444, 0, 0, 0.63889],
+ 101: [0, 0.44444, 0, 0, 0.52708],
+ 102: [0, 0.69444, 0.10903, 0, 0.35139],
+ 103: [0.19444, 0.44444, 0.01597, 0, 0.575],
+ 104: [0, 0.69444, 0, 0, 0.63889],
+ 105: [0, 0.69444, 0, 0, 0.31944],
+ 106: [0.19444, 0.69444, 0, 0, 0.35139],
+ 107: [0, 0.69444, 0, 0, 0.60694],
+ 108: [0, 0.69444, 0, 0, 0.31944],
+ 109: [0, 0.44444, 0, 0, 0.95833],
+ 110: [0, 0.44444, 0, 0, 0.63889],
+ 111: [0, 0.44444, 0, 0, 0.575],
+ 112: [0.19444, 0.44444, 0, 0, 0.63889],
+ 113: [0.19444, 0.44444, 0, 0, 0.60694],
+ 114: [0, 0.44444, 0, 0, 0.47361],
+ 115: [0, 0.44444, 0, 0, 0.45361],
+ 116: [0, 0.63492, 0, 0, 0.44722],
+ 117: [0, 0.44444, 0, 0, 0.63889],
+ 118: [0, 0.44444, 0.01597, 0, 0.60694],
+ 119: [0, 0.44444, 0.01597, 0, 0.83055],
+ 120: [0, 0.44444, 0, 0, 0.60694],
+ 121: [0.19444, 0.44444, 0.01597, 0, 0.60694],
+ 122: [0, 0.44444, 0, 0, 0.51111],
+ 123: [0.25, 0.75, 0, 0, 0.575],
+ 124: [0.25, 0.75, 0, 0, 0.31944],
+ 125: [0.25, 0.75, 0, 0, 0.575],
+ 126: [0.35, 0.34444, 0, 0, 0.575],
+ 160: [0, 0, 0, 0, 0.25],
+ 163: [0, 0.69444, 0, 0, 0.86853],
+ 168: [0, 0.69444, 0, 0, 0.575],
+ 172: [0, 0.44444, 0, 0, 0.76666],
+ 176: [0, 0.69444, 0, 0, 0.86944],
+ 177: [0.13333, 0.63333, 0, 0, 0.89444],
+ 184: [0.17014, 0, 0, 0, 0.51111],
+ 198: [0, 0.68611, 0, 0, 1.04166],
+ 215: [0.13333, 0.63333, 0, 0, 0.89444],
+ 216: [0.04861, 0.73472, 0, 0, 0.89444],
+ 223: [0, 0.69444, 0, 0, 0.59722],
+ 230: [0, 0.44444, 0, 0, 0.83055],
+ 247: [0.13333, 0.63333, 0, 0, 0.89444],
+ 248: [0.09722, 0.54167, 0, 0, 0.575],
+ 305: [0, 0.44444, 0, 0, 0.31944],
+ 338: [0, 0.68611, 0, 0, 1.16944],
+ 339: [0, 0.44444, 0, 0, 0.89444],
+ 567: [0.19444, 0.44444, 0, 0, 0.35139],
+ 710: [0, 0.69444, 0, 0, 0.575],
+ 711: [0, 0.63194, 0, 0, 0.575],
+ 713: [0, 0.59611, 0, 0, 0.575],
+ 714: [0, 0.69444, 0, 0, 0.575],
+ 715: [0, 0.69444, 0, 0, 0.575],
+ 728: [0, 0.69444, 0, 0, 0.575],
+ 729: [0, 0.69444, 0, 0, 0.31944],
+ 730: [0, 0.69444, 0, 0, 0.86944],
+ 732: [0, 0.69444, 0, 0, 0.575],
+ 733: [0, 0.69444, 0, 0, 0.575],
+ 915: [0, 0.68611, 0, 0, 0.69166],
+ 916: [0, 0.68611, 0, 0, 0.95833],
+ 920: [0, 0.68611, 0, 0, 0.89444],
+ 923: [0, 0.68611, 0, 0, 0.80555],
+ 926: [0, 0.68611, 0, 0, 0.76666],
+ 928: [0, 0.68611, 0, 0, 0.9],
+ 931: [0, 0.68611, 0, 0, 0.83055],
+ 933: [0, 0.68611, 0, 0, 0.89444],
+ 934: [0, 0.68611, 0, 0, 0.83055],
+ 936: [0, 0.68611, 0, 0, 0.89444],
+ 937: [0, 0.68611, 0, 0, 0.83055],
+ 8211: [0, 0.44444, 0.03194, 0, 0.575],
+ 8212: [0, 0.44444, 0.03194, 0, 1.14999],
+ 8216: [0, 0.69444, 0, 0, 0.31944],
+ 8217: [0, 0.69444, 0, 0, 0.31944],
+ 8220: [0, 0.69444, 0, 0, 0.60278],
+ 8221: [0, 0.69444, 0, 0, 0.60278],
+ 8224: [0.19444, 0.69444, 0, 0, 0.51111],
+ 8225: [0.19444, 0.69444, 0, 0, 0.51111],
+ 8242: [0, 0.55556, 0, 0, 0.34444],
+ 8407: [0, 0.72444, 0.15486, 0, 0.575],
+ 8463: [0, 0.69444, 0, 0, 0.66759],
+ 8465: [0, 0.69444, 0, 0, 0.83055],
+ 8467: [0, 0.69444, 0, 0, 0.47361],
+ 8472: [0.19444, 0.44444, 0, 0, 0.74027],
+ 8476: [0, 0.69444, 0, 0, 0.83055],
+ 8501: [0, 0.69444, 0, 0, 0.70277],
+ 8592: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8593: [0.19444, 0.69444, 0, 0, 0.575],
+ 8594: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8595: [0.19444, 0.69444, 0, 0, 0.575],
+ 8596: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8597: [0.25, 0.75, 0, 0, 0.575],
+ 8598: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8599: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8600: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8601: [0.19444, 0.69444, 0, 0, 1.14999],
+ 8636: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8637: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8640: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8641: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8656: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8657: [0.19444, 0.69444, 0, 0, 0.70277],
+ 8658: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8659: [0.19444, 0.69444, 0, 0, 0.70277],
+ 8660: [-0.10889, 0.39111, 0, 0, 1.14999],
+ 8661: [0.25, 0.75, 0, 0, 0.70277],
+ 8704: [0, 0.69444, 0, 0, 0.63889],
+ 8706: [0, 0.69444, 0.06389, 0, 0.62847],
+ 8707: [0, 0.69444, 0, 0, 0.63889],
+ 8709: [0.05556, 0.75, 0, 0, 0.575],
+ 8711: [0, 0.68611, 0, 0, 0.95833],
+ 8712: [0.08556, 0.58556, 0, 0, 0.76666],
+ 8715: [0.08556, 0.58556, 0, 0, 0.76666],
+ 8722: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8723: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8725: [0.25, 0.75, 0, 0, 0.575],
+ 8726: [0.25, 0.75, 0, 0, 0.575],
+ 8727: [-0.02778, 0.47222, 0, 0, 0.575],
+ 8728: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8729: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8730: [0.18, 0.82, 0, 0, 0.95833],
+ 8733: [0, 0.44444, 0, 0, 0.89444],
+ 8734: [0, 0.44444, 0, 0, 1.14999],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8739: [0.25, 0.75, 0, 0, 0.31944],
+ 8741: [0.25, 0.75, 0, 0, 0.575],
+ 8743: [0, 0.55556, 0, 0, 0.76666],
+ 8744: [0, 0.55556, 0, 0, 0.76666],
+ 8745: [0, 0.55556, 0, 0, 0.76666],
+ 8746: [0, 0.55556, 0, 0, 0.76666],
+ 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875],
+ 8764: [-0.10889, 0.39111, 0, 0, 0.89444],
+ 8768: [0.19444, 0.69444, 0, 0, 0.31944],
+ 8771: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8773: [0.027, 0.638, 0, 0, 0.894],
+ 8776: [0.02444, 0.52444, 0, 0, 0.89444],
+ 8781: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8801: [0.00222, 0.50222, 0, 0, 0.89444],
+ 8804: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8805: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8810: [0.08556, 0.58556, 0, 0, 1.14999],
+ 8811: [0.08556, 0.58556, 0, 0, 1.14999],
+ 8826: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8827: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8834: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8835: [0.08556, 0.58556, 0, 0, 0.89444],
+ 8838: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8839: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8846: [0, 0.55556, 0, 0, 0.76666],
+ 8849: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8850: [0.19667, 0.69667, 0, 0, 0.89444],
+ 8851: [0, 0.55556, 0, 0, 0.76666],
+ 8852: [0, 0.55556, 0, 0, 0.76666],
+ 8853: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8854: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8855: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8856: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8857: [0.13333, 0.63333, 0, 0, 0.89444],
+ 8866: [0, 0.69444, 0, 0, 0.70277],
+ 8867: [0, 0.69444, 0, 0, 0.70277],
+ 8868: [0, 0.69444, 0, 0, 0.89444],
+ 8869: [0, 0.69444, 0, 0, 0.89444],
+ 8900: [-0.02639, 0.47361, 0, 0, 0.575],
+ 8901: [-0.02639, 0.47361, 0, 0, 0.31944],
+ 8902: [-0.02778, 0.47222, 0, 0, 0.575],
+ 8968: [0.25, 0.75, 0, 0, 0.51111],
+ 8969: [0.25, 0.75, 0, 0, 0.51111],
+ 8970: [0.25, 0.75, 0, 0, 0.51111],
+ 8971: [0.25, 0.75, 0, 0, 0.51111],
+ 8994: [-0.13889, 0.36111, 0, 0, 1.14999],
+ 8995: [-0.13889, 0.36111, 0, 0, 1.14999],
+ 9651: [0.19444, 0.69444, 0, 0, 1.02222],
+ 9657: [-0.02778, 0.47222, 0, 0, 0.575],
+ 9661: [0.19444, 0.69444, 0, 0, 1.02222],
+ 9667: [-0.02778, 0.47222, 0, 0, 0.575],
+ 9711: [0.19444, 0.69444, 0, 0, 1.14999],
+ 9824: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9825: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9826: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9827: [0.12963, 0.69444, 0, 0, 0.89444],
+ 9837: [0, 0.75, 0, 0, 0.44722],
+ 9838: [0.19444, 0.69444, 0, 0, 0.44722],
+ 9839: [0.19444, 0.69444, 0, 0, 0.44722],
+ 10216: [0.25, 0.75, 0, 0, 0.44722],
+ 10217: [0.25, 0.75, 0, 0, 0.44722],
+ 10815: [0, 0.68611, 0, 0, 0.9],
+ 10927: [0.19667, 0.69667, 0, 0, 0.89444],
+ 10928: [0.19667, 0.69667, 0, 0, 0.89444],
+ 57376: [0.19444, 0.69444, 0, 0, 0],
+ },
+ "Main-BoldItalic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.11417, 0, 0.38611],
+ 34: [0, 0.69444, 0.07939, 0, 0.62055],
+ 35: [0.19444, 0.69444, 0.06833, 0, 0.94444],
+ 37: [0.05556, 0.75, 0.12861, 0, 0.94444],
+ 38: [0, 0.69444, 0.08528, 0, 0.88555],
+ 39: [0, 0.69444, 0.12945, 0, 0.35555],
+ 40: [0.25, 0.75, 0.15806, 0, 0.47333],
+ 41: [0.25, 0.75, 0.03306, 0, 0.47333],
+ 42: [0, 0.75, 0.14333, 0, 0.59111],
+ 43: [0.10333, 0.60333, 0.03306, 0, 0.88555],
+ 44: [0.19444, 0.14722, 0, 0, 0.35555],
+ 45: [0, 0.44444, 0.02611, 0, 0.41444],
+ 46: [0, 0.14722, 0, 0, 0.35555],
+ 47: [0.25, 0.75, 0.15806, 0, 0.59111],
+ 48: [0, 0.64444, 0.13167, 0, 0.59111],
+ 49: [0, 0.64444, 0.13167, 0, 0.59111],
+ 50: [0, 0.64444, 0.13167, 0, 0.59111],
+ 51: [0, 0.64444, 0.13167, 0, 0.59111],
+ 52: [0.19444, 0.64444, 0.13167, 0, 0.59111],
+ 53: [0, 0.64444, 0.13167, 0, 0.59111],
+ 54: [0, 0.64444, 0.13167, 0, 0.59111],
+ 55: [0.19444, 0.64444, 0.13167, 0, 0.59111],
+ 56: [0, 0.64444, 0.13167, 0, 0.59111],
+ 57: [0, 0.64444, 0.13167, 0, 0.59111],
+ 58: [0, 0.44444, 0.06695, 0, 0.35555],
+ 59: [0.19444, 0.44444, 0.06695, 0, 0.35555],
+ 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555],
+ 63: [0, 0.69444, 0.11472, 0, 0.59111],
+ 64: [0, 0.69444, 0.09208, 0, 0.88555],
+ 65: [0, 0.68611, 0, 0, 0.86555],
+ 66: [0, 0.68611, 0.0992, 0, 0.81666],
+ 67: [0, 0.68611, 0.14208, 0, 0.82666],
+ 68: [0, 0.68611, 0.09062, 0, 0.87555],
+ 69: [0, 0.68611, 0.11431, 0, 0.75666],
+ 70: [0, 0.68611, 0.12903, 0, 0.72722],
+ 71: [0, 0.68611, 0.07347, 0, 0.89527],
+ 72: [0, 0.68611, 0.17208, 0, 0.8961],
+ 73: [0, 0.68611, 0.15681, 0, 0.47166],
+ 74: [0, 0.68611, 0.145, 0, 0.61055],
+ 75: [0, 0.68611, 0.14208, 0, 0.89499],
+ 76: [0, 0.68611, 0, 0, 0.69777],
+ 77: [0, 0.68611, 0.17208, 0, 1.07277],
+ 78: [0, 0.68611, 0.17208, 0, 0.8961],
+ 79: [0, 0.68611, 0.09062, 0, 0.85499],
+ 80: [0, 0.68611, 0.0992, 0, 0.78721],
+ 81: [0.19444, 0.68611, 0.09062, 0, 0.85499],
+ 82: [0, 0.68611, 0.02559, 0, 0.85944],
+ 83: [0, 0.68611, 0.11264, 0, 0.64999],
+ 84: [0, 0.68611, 0.12903, 0, 0.7961],
+ 85: [0, 0.68611, 0.17208, 0, 0.88083],
+ 86: [0, 0.68611, 0.18625, 0, 0.86555],
+ 87: [0, 0.68611, 0.18625, 0, 1.15999],
+ 88: [0, 0.68611, 0.15681, 0, 0.86555],
+ 89: [0, 0.68611, 0.19803, 0, 0.86555],
+ 90: [0, 0.68611, 0.14208, 0, 0.70888],
+ 91: [0.25, 0.75, 0.1875, 0, 0.35611],
+ 93: [0.25, 0.75, 0.09972, 0, 0.35611],
+ 94: [0, 0.69444, 0.06709, 0, 0.59111],
+ 95: [0.31, 0.13444, 0.09811, 0, 0.59111],
+ 97: [0, 0.44444, 0.09426, 0, 0.59111],
+ 98: [0, 0.69444, 0.07861, 0, 0.53222],
+ 99: [0, 0.44444, 0.05222, 0, 0.53222],
+ 100: [0, 0.69444, 0.10861, 0, 0.59111],
+ 101: [0, 0.44444, 0.085, 0, 0.53222],
+ 102: [0.19444, 0.69444, 0.21778, 0, 0.4],
+ 103: [0.19444, 0.44444, 0.105, 0, 0.53222],
+ 104: [0, 0.69444, 0.09426, 0, 0.59111],
+ 105: [0, 0.69326, 0.11387, 0, 0.35555],
+ 106: [0.19444, 0.69326, 0.1672, 0, 0.35555],
+ 107: [0, 0.69444, 0.11111, 0, 0.53222],
+ 108: [0, 0.69444, 0.10861, 0, 0.29666],
+ 109: [0, 0.44444, 0.09426, 0, 0.94444],
+ 110: [0, 0.44444, 0.09426, 0, 0.64999],
+ 111: [0, 0.44444, 0.07861, 0, 0.59111],
+ 112: [0.19444, 0.44444, 0.07861, 0, 0.59111],
+ 113: [0.19444, 0.44444, 0.105, 0, 0.53222],
+ 114: [0, 0.44444, 0.11111, 0, 0.50167],
+ 115: [0, 0.44444, 0.08167, 0, 0.48694],
+ 116: [0, 0.63492, 0.09639, 0, 0.385],
+ 117: [0, 0.44444, 0.09426, 0, 0.62055],
+ 118: [0, 0.44444, 0.11111, 0, 0.53222],
+ 119: [0, 0.44444, 0.11111, 0, 0.76777],
+ 120: [0, 0.44444, 0.12583, 0, 0.56055],
+ 121: [0.19444, 0.44444, 0.105, 0, 0.56166],
+ 122: [0, 0.44444, 0.13889, 0, 0.49055],
+ 126: [0.35, 0.34444, 0.11472, 0, 0.59111],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.69444, 0.11473, 0, 0.59111],
+ 176: [0, 0.69444, 0, 0, 0.94888],
+ 184: [0.17014, 0, 0, 0, 0.53222],
+ 198: [0, 0.68611, 0.11431, 0, 1.02277],
+ 216: [0.04861, 0.73472, 0.09062, 0, 0.88555],
+ 223: [0.19444, 0.69444, 0.09736, 0, 0.665],
+ 230: [0, 0.44444, 0.085, 0, 0.82666],
+ 248: [0.09722, 0.54167, 0.09458, 0, 0.59111],
+ 305: [0, 0.44444, 0.09426, 0, 0.35555],
+ 338: [0, 0.68611, 0.11431, 0, 1.14054],
+ 339: [0, 0.44444, 0.085, 0, 0.82666],
+ 567: [0.19444, 0.44444, 0.04611, 0, 0.385],
+ 710: [0, 0.69444, 0.06709, 0, 0.59111],
+ 711: [0, 0.63194, 0.08271, 0, 0.59111],
+ 713: [0, 0.59444, 0.10444, 0, 0.59111],
+ 714: [0, 0.69444, 0.08528, 0, 0.59111],
+ 715: [0, 0.69444, 0, 0, 0.59111],
+ 728: [0, 0.69444, 0.10333, 0, 0.59111],
+ 729: [0, 0.69444, 0.12945, 0, 0.35555],
+ 730: [0, 0.69444, 0, 0, 0.94888],
+ 732: [0, 0.69444, 0.11472, 0, 0.59111],
+ 733: [0, 0.69444, 0.11472, 0, 0.59111],
+ 915: [0, 0.68611, 0.12903, 0, 0.69777],
+ 916: [0, 0.68611, 0, 0, 0.94444],
+ 920: [0, 0.68611, 0.09062, 0, 0.88555],
+ 923: [0, 0.68611, 0, 0, 0.80666],
+ 926: [0, 0.68611, 0.15092, 0, 0.76777],
+ 928: [0, 0.68611, 0.17208, 0, 0.8961],
+ 931: [0, 0.68611, 0.11431, 0, 0.82666],
+ 933: [0, 0.68611, 0.10778, 0, 0.88555],
+ 934: [0, 0.68611, 0.05632, 0, 0.82666],
+ 936: [0, 0.68611, 0.10778, 0, 0.88555],
+ 937: [0, 0.68611, 0.0992, 0, 0.82666],
+ 8211: [0, 0.44444, 0.09811, 0, 0.59111],
+ 8212: [0, 0.44444, 0.09811, 0, 1.18221],
+ 8216: [0, 0.69444, 0.12945, 0, 0.35555],
+ 8217: [0, 0.69444, 0.12945, 0, 0.35555],
+ 8220: [0, 0.69444, 0.16772, 0, 0.62055],
+ 8221: [0, 0.69444, 0.07939, 0, 0.62055],
+ },
+ "Main-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.12417, 0, 0.30667],
+ 34: [0, 0.69444, 0.06961, 0, 0.51444],
+ 35: [0.19444, 0.69444, 0.06616, 0, 0.81777],
+ 37: [0.05556, 0.75, 0.13639, 0, 0.81777],
+ 38: [0, 0.69444, 0.09694, 0, 0.76666],
+ 39: [0, 0.69444, 0.12417, 0, 0.30667],
+ 40: [0.25, 0.75, 0.16194, 0, 0.40889],
+ 41: [0.25, 0.75, 0.03694, 0, 0.40889],
+ 42: [0, 0.75, 0.14917, 0, 0.51111],
+ 43: [0.05667, 0.56167, 0.03694, 0, 0.76666],
+ 44: [0.19444, 0.10556, 0, 0, 0.30667],
+ 45: [0, 0.43056, 0.02826, 0, 0.35778],
+ 46: [0, 0.10556, 0, 0, 0.30667],
+ 47: [0.25, 0.75, 0.16194, 0, 0.51111],
+ 48: [0, 0.64444, 0.13556, 0, 0.51111],
+ 49: [0, 0.64444, 0.13556, 0, 0.51111],
+ 50: [0, 0.64444, 0.13556, 0, 0.51111],
+ 51: [0, 0.64444, 0.13556, 0, 0.51111],
+ 52: [0.19444, 0.64444, 0.13556, 0, 0.51111],
+ 53: [0, 0.64444, 0.13556, 0, 0.51111],
+ 54: [0, 0.64444, 0.13556, 0, 0.51111],
+ 55: [0.19444, 0.64444, 0.13556, 0, 0.51111],
+ 56: [0, 0.64444, 0.13556, 0, 0.51111],
+ 57: [0, 0.64444, 0.13556, 0, 0.51111],
+ 58: [0, 0.43056, 0.0582, 0, 0.30667],
+ 59: [0.19444, 0.43056, 0.0582, 0, 0.30667],
+ 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666],
+ 63: [0, 0.69444, 0.1225, 0, 0.51111],
+ 64: [0, 0.69444, 0.09597, 0, 0.76666],
+ 65: [0, 0.68333, 0, 0, 0.74333],
+ 66: [0, 0.68333, 0.10257, 0, 0.70389],
+ 67: [0, 0.68333, 0.14528, 0, 0.71555],
+ 68: [0, 0.68333, 0.09403, 0, 0.755],
+ 69: [0, 0.68333, 0.12028, 0, 0.67833],
+ 70: [0, 0.68333, 0.13305, 0, 0.65277],
+ 71: [0, 0.68333, 0.08722, 0, 0.77361],
+ 72: [0, 0.68333, 0.16389, 0, 0.74333],
+ 73: [0, 0.68333, 0.15806, 0, 0.38555],
+ 74: [0, 0.68333, 0.14028, 0, 0.525],
+ 75: [0, 0.68333, 0.14528, 0, 0.76888],
+ 76: [0, 0.68333, 0, 0, 0.62722],
+ 77: [0, 0.68333, 0.16389, 0, 0.89666],
+ 78: [0, 0.68333, 0.16389, 0, 0.74333],
+ 79: [0, 0.68333, 0.09403, 0, 0.76666],
+ 80: [0, 0.68333, 0.10257, 0, 0.67833],
+ 81: [0.19444, 0.68333, 0.09403, 0, 0.76666],
+ 82: [0, 0.68333, 0.03868, 0, 0.72944],
+ 83: [0, 0.68333, 0.11972, 0, 0.56222],
+ 84: [0, 0.68333, 0.13305, 0, 0.71555],
+ 85: [0, 0.68333, 0.16389, 0, 0.74333],
+ 86: [0, 0.68333, 0.18361, 0, 0.74333],
+ 87: [0, 0.68333, 0.18361, 0, 0.99888],
+ 88: [0, 0.68333, 0.15806, 0, 0.74333],
+ 89: [0, 0.68333, 0.19383, 0, 0.74333],
+ 90: [0, 0.68333, 0.14528, 0, 0.61333],
+ 91: [0.25, 0.75, 0.1875, 0, 0.30667],
+ 93: [0.25, 0.75, 0.10528, 0, 0.30667],
+ 94: [0, 0.69444, 0.06646, 0, 0.51111],
+ 95: [0.31, 0.12056, 0.09208, 0, 0.51111],
+ 97: [0, 0.43056, 0.07671, 0, 0.51111],
+ 98: [0, 0.69444, 0.06312, 0, 0.46],
+ 99: [0, 0.43056, 0.05653, 0, 0.46],
+ 100: [0, 0.69444, 0.10333, 0, 0.51111],
+ 101: [0, 0.43056, 0.07514, 0, 0.46],
+ 102: [0.19444, 0.69444, 0.21194, 0, 0.30667],
+ 103: [0.19444, 0.43056, 0.08847, 0, 0.46],
+ 104: [0, 0.69444, 0.07671, 0, 0.51111],
+ 105: [0, 0.65536, 0.1019, 0, 0.30667],
+ 106: [0.19444, 0.65536, 0.14467, 0, 0.30667],
+ 107: [0, 0.69444, 0.10764, 0, 0.46],
+ 108: [0, 0.69444, 0.10333, 0, 0.25555],
+ 109: [0, 0.43056, 0.07671, 0, 0.81777],
+ 110: [0, 0.43056, 0.07671, 0, 0.56222],
+ 111: [0, 0.43056, 0.06312, 0, 0.51111],
+ 112: [0.19444, 0.43056, 0.06312, 0, 0.51111],
+ 113: [0.19444, 0.43056, 0.08847, 0, 0.46],
+ 114: [0, 0.43056, 0.10764, 0, 0.42166],
+ 115: [0, 0.43056, 0.08208, 0, 0.40889],
+ 116: [0, 0.61508, 0.09486, 0, 0.33222],
+ 117: [0, 0.43056, 0.07671, 0, 0.53666],
+ 118: [0, 0.43056, 0.10764, 0, 0.46],
+ 119: [0, 0.43056, 0.10764, 0, 0.66444],
+ 120: [0, 0.43056, 0.12042, 0, 0.46389],
+ 121: [0.19444, 0.43056, 0.08847, 0, 0.48555],
+ 122: [0, 0.43056, 0.12292, 0, 0.40889],
+ 126: [0.35, 0.31786, 0.11585, 0, 0.51111],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.66786, 0.10474, 0, 0.51111],
+ 176: [0, 0.69444, 0, 0, 0.83129],
+ 184: [0.17014, 0, 0, 0, 0.46],
+ 198: [0, 0.68333, 0.12028, 0, 0.88277],
+ 216: [0.04861, 0.73194, 0.09403, 0, 0.76666],
+ 223: [0.19444, 0.69444, 0.10514, 0, 0.53666],
+ 230: [0, 0.43056, 0.07514, 0, 0.71555],
+ 248: [0.09722, 0.52778, 0.09194, 0, 0.51111],
+ 338: [0, 0.68333, 0.12028, 0, 0.98499],
+ 339: [0, 0.43056, 0.07514, 0, 0.71555],
+ 710: [0, 0.69444, 0.06646, 0, 0.51111],
+ 711: [0, 0.62847, 0.08295, 0, 0.51111],
+ 713: [0, 0.56167, 0.10333, 0, 0.51111],
+ 714: [0, 0.69444, 0.09694, 0, 0.51111],
+ 715: [0, 0.69444, 0, 0, 0.51111],
+ 728: [0, 0.69444, 0.10806, 0, 0.51111],
+ 729: [0, 0.66786, 0.11752, 0, 0.30667],
+ 730: [0, 0.69444, 0, 0, 0.83129],
+ 732: [0, 0.66786, 0.11585, 0, 0.51111],
+ 733: [0, 0.69444, 0.1225, 0, 0.51111],
+ 915: [0, 0.68333, 0.13305, 0, 0.62722],
+ 916: [0, 0.68333, 0, 0, 0.81777],
+ 920: [0, 0.68333, 0.09403, 0, 0.76666],
+ 923: [0, 0.68333, 0, 0, 0.69222],
+ 926: [0, 0.68333, 0.15294, 0, 0.66444],
+ 928: [0, 0.68333, 0.16389, 0, 0.74333],
+ 931: [0, 0.68333, 0.12028, 0, 0.71555],
+ 933: [0, 0.68333, 0.11111, 0, 0.76666],
+ 934: [0, 0.68333, 0.05986, 0, 0.71555],
+ 936: [0, 0.68333, 0.11111, 0, 0.76666],
+ 937: [0, 0.68333, 0.10257, 0, 0.71555],
+ 8211: [0, 0.43056, 0.09208, 0, 0.51111],
+ 8212: [0, 0.43056, 0.09208, 0, 1.02222],
+ 8216: [0, 0.69444, 0.12417, 0, 0.30667],
+ 8217: [0, 0.69444, 0.12417, 0, 0.30667],
+ 8220: [0, 0.69444, 0.1685, 0, 0.51444],
+ 8221: [0, 0.69444, 0.06961, 0, 0.51444],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ },
+ "Main-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.27778],
+ 34: [0, 0.69444, 0, 0, 0.5],
+ 35: [0.19444, 0.69444, 0, 0, 0.83334],
+ 36: [0.05556, 0.75, 0, 0, 0.5],
+ 37: [0.05556, 0.75, 0, 0, 0.83334],
+ 38: [0, 0.69444, 0, 0, 0.77778],
+ 39: [0, 0.69444, 0, 0, 0.27778],
+ 40: [0.25, 0.75, 0, 0, 0.38889],
+ 41: [0.25, 0.75, 0, 0, 0.38889],
+ 42: [0, 0.75, 0, 0, 0.5],
+ 43: [0.08333, 0.58333, 0, 0, 0.77778],
+ 44: [0.19444, 0.10556, 0, 0, 0.27778],
+ 45: [0, 0.43056, 0, 0, 0.33333],
+ 46: [0, 0.10556, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0, 0, 0.5],
+ 48: [0, 0.64444, 0, 0, 0.5],
+ 49: [0, 0.64444, 0, 0, 0.5],
+ 50: [0, 0.64444, 0, 0, 0.5],
+ 51: [0, 0.64444, 0, 0, 0.5],
+ 52: [0, 0.64444, 0, 0, 0.5],
+ 53: [0, 0.64444, 0, 0, 0.5],
+ 54: [0, 0.64444, 0, 0, 0.5],
+ 55: [0, 0.64444, 0, 0, 0.5],
+ 56: [0, 0.64444, 0, 0, 0.5],
+ 57: [0, 0.64444, 0, 0, 0.5],
+ 58: [0, 0.43056, 0, 0, 0.27778],
+ 59: [0.19444, 0.43056, 0, 0, 0.27778],
+ 60: [0.0391, 0.5391, 0, 0, 0.77778],
+ 61: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 62: [0.0391, 0.5391, 0, 0, 0.77778],
+ 63: [0, 0.69444, 0, 0, 0.47222],
+ 64: [0, 0.69444, 0, 0, 0.77778],
+ 65: [0, 0.68333, 0, 0, 0.75],
+ 66: [0, 0.68333, 0, 0, 0.70834],
+ 67: [0, 0.68333, 0, 0, 0.72222],
+ 68: [0, 0.68333, 0, 0, 0.76389],
+ 69: [0, 0.68333, 0, 0, 0.68056],
+ 70: [0, 0.68333, 0, 0, 0.65278],
+ 71: [0, 0.68333, 0, 0, 0.78472],
+ 72: [0, 0.68333, 0, 0, 0.75],
+ 73: [0, 0.68333, 0, 0, 0.36111],
+ 74: [0, 0.68333, 0, 0, 0.51389],
+ 75: [0, 0.68333, 0, 0, 0.77778],
+ 76: [0, 0.68333, 0, 0, 0.625],
+ 77: [0, 0.68333, 0, 0, 0.91667],
+ 78: [0, 0.68333, 0, 0, 0.75],
+ 79: [0, 0.68333, 0, 0, 0.77778],
+ 80: [0, 0.68333, 0, 0, 0.68056],
+ 81: [0.19444, 0.68333, 0, 0, 0.77778],
+ 82: [0, 0.68333, 0, 0, 0.73611],
+ 83: [0, 0.68333, 0, 0, 0.55556],
+ 84: [0, 0.68333, 0, 0, 0.72222],
+ 85: [0, 0.68333, 0, 0, 0.75],
+ 86: [0, 0.68333, 0.01389, 0, 0.75],
+ 87: [0, 0.68333, 0.01389, 0, 1.02778],
+ 88: [0, 0.68333, 0, 0, 0.75],
+ 89: [0, 0.68333, 0.025, 0, 0.75],
+ 90: [0, 0.68333, 0, 0, 0.61111],
+ 91: [0.25, 0.75, 0, 0, 0.27778],
+ 92: [0.25, 0.75, 0, 0, 0.5],
+ 93: [0.25, 0.75, 0, 0, 0.27778],
+ 94: [0, 0.69444, 0, 0, 0.5],
+ 95: [0.31, 0.12056, 0.02778, 0, 0.5],
+ 97: [0, 0.43056, 0, 0, 0.5],
+ 98: [0, 0.69444, 0, 0, 0.55556],
+ 99: [0, 0.43056, 0, 0, 0.44445],
+ 100: [0, 0.69444, 0, 0, 0.55556],
+ 101: [0, 0.43056, 0, 0, 0.44445],
+ 102: [0, 0.69444, 0.07778, 0, 0.30556],
+ 103: [0.19444, 0.43056, 0.01389, 0, 0.5],
+ 104: [0, 0.69444, 0, 0, 0.55556],
+ 105: [0, 0.66786, 0, 0, 0.27778],
+ 106: [0.19444, 0.66786, 0, 0, 0.30556],
+ 107: [0, 0.69444, 0, 0, 0.52778],
+ 108: [0, 0.69444, 0, 0, 0.27778],
+ 109: [0, 0.43056, 0, 0, 0.83334],
+ 110: [0, 0.43056, 0, 0, 0.55556],
+ 111: [0, 0.43056, 0, 0, 0.5],
+ 112: [0.19444, 0.43056, 0, 0, 0.55556],
+ 113: [0.19444, 0.43056, 0, 0, 0.52778],
+ 114: [0, 0.43056, 0, 0, 0.39167],
+ 115: [0, 0.43056, 0, 0, 0.39445],
+ 116: [0, 0.61508, 0, 0, 0.38889],
+ 117: [0, 0.43056, 0, 0, 0.55556],
+ 118: [0, 0.43056, 0.01389, 0, 0.52778],
+ 119: [0, 0.43056, 0.01389, 0, 0.72222],
+ 120: [0, 0.43056, 0, 0, 0.52778],
+ 121: [0.19444, 0.43056, 0.01389, 0, 0.52778],
+ 122: [0, 0.43056, 0, 0, 0.44445],
+ 123: [0.25, 0.75, 0, 0, 0.5],
+ 124: [0.25, 0.75, 0, 0, 0.27778],
+ 125: [0.25, 0.75, 0, 0, 0.5],
+ 126: [0.35, 0.31786, 0, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 163: [0, 0.69444, 0, 0, 0.76909],
+ 167: [0.19444, 0.69444, 0, 0, 0.44445],
+ 168: [0, 0.66786, 0, 0, 0.5],
+ 172: [0, 0.43056, 0, 0, 0.66667],
+ 176: [0, 0.69444, 0, 0, 0.75],
+ 177: [0.08333, 0.58333, 0, 0, 0.77778],
+ 182: [0.19444, 0.69444, 0, 0, 0.61111],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 198: [0, 0.68333, 0, 0, 0.90278],
+ 215: [0.08333, 0.58333, 0, 0, 0.77778],
+ 216: [0.04861, 0.73194, 0, 0, 0.77778],
+ 223: [0, 0.69444, 0, 0, 0.5],
+ 230: [0, 0.43056, 0, 0, 0.72222],
+ 247: [0.08333, 0.58333, 0, 0, 0.77778],
+ 248: [0.09722, 0.52778, 0, 0, 0.5],
+ 305: [0, 0.43056, 0, 0, 0.27778],
+ 338: [0, 0.68333, 0, 0, 1.01389],
+ 339: [0, 0.43056, 0, 0, 0.77778],
+ 567: [0.19444, 0.43056, 0, 0, 0.30556],
+ 710: [0, 0.69444, 0, 0, 0.5],
+ 711: [0, 0.62847, 0, 0, 0.5],
+ 713: [0, 0.56778, 0, 0, 0.5],
+ 714: [0, 0.69444, 0, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0, 0, 0.5],
+ 729: [0, 0.66786, 0, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.75],
+ 732: [0, 0.66786, 0, 0, 0.5],
+ 733: [0, 0.69444, 0, 0, 0.5],
+ 915: [0, 0.68333, 0, 0, 0.625],
+ 916: [0, 0.68333, 0, 0, 0.83334],
+ 920: [0, 0.68333, 0, 0, 0.77778],
+ 923: [0, 0.68333, 0, 0, 0.69445],
+ 926: [0, 0.68333, 0, 0, 0.66667],
+ 928: [0, 0.68333, 0, 0, 0.75],
+ 931: [0, 0.68333, 0, 0, 0.72222],
+ 933: [0, 0.68333, 0, 0, 0.77778],
+ 934: [0, 0.68333, 0, 0, 0.72222],
+ 936: [0, 0.68333, 0, 0, 0.77778],
+ 937: [0, 0.68333, 0, 0, 0.72222],
+ 8211: [0, 0.43056, 0.02778, 0, 0.5],
+ 8212: [0, 0.43056, 0.02778, 0, 1],
+ 8216: [0, 0.69444, 0, 0, 0.27778],
+ 8217: [0, 0.69444, 0, 0, 0.27778],
+ 8220: [0, 0.69444, 0, 0, 0.5],
+ 8221: [0, 0.69444, 0, 0, 0.5],
+ 8224: [0.19444, 0.69444, 0, 0, 0.44445],
+ 8225: [0.19444, 0.69444, 0, 0, 0.44445],
+ 8230: [0, 0.123, 0, 0, 1.172],
+ 8242: [0, 0.55556, 0, 0, 0.275],
+ 8407: [0, 0.71444, 0.15382, 0, 0.5],
+ 8463: [0, 0.68889, 0, 0, 0.54028],
+ 8465: [0, 0.69444, 0, 0, 0.72222],
+ 8467: [0, 0.69444, 0, 0.11111, 0.41667],
+ 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646],
+ 8476: [0, 0.69444, 0, 0, 0.72222],
+ 8501: [0, 0.69444, 0, 0, 0.61111],
+ 8592: [-0.13313, 0.36687, 0, 0, 1],
+ 8593: [0.19444, 0.69444, 0, 0, 0.5],
+ 8594: [-0.13313, 0.36687, 0, 0, 1],
+ 8595: [0.19444, 0.69444, 0, 0, 0.5],
+ 8596: [-0.13313, 0.36687, 0, 0, 1],
+ 8597: [0.25, 0.75, 0, 0, 0.5],
+ 8598: [0.19444, 0.69444, 0, 0, 1],
+ 8599: [0.19444, 0.69444, 0, 0, 1],
+ 8600: [0.19444, 0.69444, 0, 0, 1],
+ 8601: [0.19444, 0.69444, 0, 0, 1],
+ 8614: [0.011, 0.511, 0, 0, 1],
+ 8617: [0.011, 0.511, 0, 0, 1.126],
+ 8618: [0.011, 0.511, 0, 0, 1.126],
+ 8636: [-0.13313, 0.36687, 0, 0, 1],
+ 8637: [-0.13313, 0.36687, 0, 0, 1],
+ 8640: [-0.13313, 0.36687, 0, 0, 1],
+ 8641: [-0.13313, 0.36687, 0, 0, 1],
+ 8652: [0.011, 0.671, 0, 0, 1],
+ 8656: [-0.13313, 0.36687, 0, 0, 1],
+ 8657: [0.19444, 0.69444, 0, 0, 0.61111],
+ 8658: [-0.13313, 0.36687, 0, 0, 1],
+ 8659: [0.19444, 0.69444, 0, 0, 0.61111],
+ 8660: [-0.13313, 0.36687, 0, 0, 1],
+ 8661: [0.25, 0.75, 0, 0, 0.61111],
+ 8704: [0, 0.69444, 0, 0, 0.55556],
+ 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309],
+ 8707: [0, 0.69444, 0, 0, 0.55556],
+ 8709: [0.05556, 0.75, 0, 0, 0.5],
+ 8711: [0, 0.68333, 0, 0, 0.83334],
+ 8712: [0.0391, 0.5391, 0, 0, 0.66667],
+ 8715: [0.0391, 0.5391, 0, 0, 0.66667],
+ 8722: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8723: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8725: [0.25, 0.75, 0, 0, 0.5],
+ 8726: [0.25, 0.75, 0, 0, 0.5],
+ 8727: [-0.03472, 0.46528, 0, 0, 0.5],
+ 8728: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8729: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8730: [0.2, 0.8, 0, 0, 0.83334],
+ 8733: [0, 0.43056, 0, 0, 0.77778],
+ 8734: [0, 0.43056, 0, 0, 1],
+ 8736: [0, 0.69224, 0, 0, 0.72222],
+ 8739: [0.25, 0.75, 0, 0, 0.27778],
+ 8741: [0.25, 0.75, 0, 0, 0.5],
+ 8743: [0, 0.55556, 0, 0, 0.66667],
+ 8744: [0, 0.55556, 0, 0, 0.66667],
+ 8745: [0, 0.55556, 0, 0, 0.66667],
+ 8746: [0, 0.55556, 0, 0, 0.66667],
+ 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667],
+ 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
+ 8768: [0.19444, 0.69444, 0, 0, 0.27778],
+ 8771: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8773: [-0.022, 0.589, 0, 0, 0.778],
+ 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
+ 8781: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8784: [-0.133, 0.673, 0, 0, 0.778],
+ 8801: [-0.03625, 0.46375, 0, 0, 0.77778],
+ 8804: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8805: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8810: [0.0391, 0.5391, 0, 0, 1],
+ 8811: [0.0391, 0.5391, 0, 0, 1],
+ 8826: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8827: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8834: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8835: [0.0391, 0.5391, 0, 0, 0.77778],
+ 8838: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8839: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8846: [0, 0.55556, 0, 0, 0.66667],
+ 8849: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8850: [0.13597, 0.63597, 0, 0, 0.77778],
+ 8851: [0, 0.55556, 0, 0, 0.66667],
+ 8852: [0, 0.55556, 0, 0, 0.66667],
+ 8853: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8854: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8855: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8856: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8857: [0.08333, 0.58333, 0, 0, 0.77778],
+ 8866: [0, 0.69444, 0, 0, 0.61111],
+ 8867: [0, 0.69444, 0, 0, 0.61111],
+ 8868: [0, 0.69444, 0, 0, 0.77778],
+ 8869: [0, 0.69444, 0, 0, 0.77778],
+ 8872: [0.249, 0.75, 0, 0, 0.867],
+ 8900: [-0.05555, 0.44445, 0, 0, 0.5],
+ 8901: [-0.05555, 0.44445, 0, 0, 0.27778],
+ 8902: [-0.03472, 0.46528, 0, 0, 0.5],
+ 8904: [0.005, 0.505, 0, 0, 0.9],
+ 8942: [0.03, 0.903, 0, 0, 0.278],
+ 8943: [-0.19, 0.313, 0, 0, 1.172],
+ 8945: [-0.1, 0.823, 0, 0, 1.282],
+ 8968: [0.25, 0.75, 0, 0, 0.44445],
+ 8969: [0.25, 0.75, 0, 0, 0.44445],
+ 8970: [0.25, 0.75, 0, 0, 0.44445],
+ 8971: [0.25, 0.75, 0, 0, 0.44445],
+ 8994: [-0.14236, 0.35764, 0, 0, 1],
+ 8995: [-0.14236, 0.35764, 0, 0, 1],
+ 9136: [0.244, 0.744, 0, 0, 0.412],
+ 9137: [0.244, 0.745, 0, 0, 0.412],
+ 9651: [0.19444, 0.69444, 0, 0, 0.88889],
+ 9657: [-0.03472, 0.46528, 0, 0, 0.5],
+ 9661: [0.19444, 0.69444, 0, 0, 0.88889],
+ 9667: [-0.03472, 0.46528, 0, 0, 0.5],
+ 9711: [0.19444, 0.69444, 0, 0, 1],
+ 9824: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9825: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9826: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9827: [0.12963, 0.69444, 0, 0, 0.77778],
+ 9837: [0, 0.75, 0, 0, 0.38889],
+ 9838: [0.19444, 0.69444, 0, 0, 0.38889],
+ 9839: [0.19444, 0.69444, 0, 0, 0.38889],
+ 10216: [0.25, 0.75, 0, 0, 0.38889],
+ 10217: [0.25, 0.75, 0, 0, 0.38889],
+ 10222: [0.244, 0.744, 0, 0, 0.412],
+ 10223: [0.244, 0.745, 0, 0, 0.412],
+ 10229: [0.011, 0.511, 0, 0, 1.609],
+ 10230: [0.011, 0.511, 0, 0, 1.638],
+ 10231: [0.011, 0.511, 0, 0, 1.859],
+ 10232: [0.024, 0.525, 0, 0, 1.609],
+ 10233: [0.024, 0.525, 0, 0, 1.638],
+ 10234: [0.024, 0.525, 0, 0, 1.858],
+ 10236: [0.011, 0.511, 0, 0, 1.638],
+ 10815: [0, 0.68333, 0, 0, 0.75],
+ 10927: [0.13597, 0.63597, 0, 0, 0.77778],
+ 10928: [0.13597, 0.63597, 0, 0, 0.77778],
+ 57376: [0.19444, 0.69444, 0, 0, 0],
+ },
+ "Math-BoldItalic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 48: [0, 0.44444, 0, 0, 0.575],
+ 49: [0, 0.44444, 0, 0, 0.575],
+ 50: [0, 0.44444, 0, 0, 0.575],
+ 51: [0.19444, 0.44444, 0, 0, 0.575],
+ 52: [0.19444, 0.44444, 0, 0, 0.575],
+ 53: [0.19444, 0.44444, 0, 0, 0.575],
+ 54: [0, 0.64444, 0, 0, 0.575],
+ 55: [0.19444, 0.44444, 0, 0, 0.575],
+ 56: [0, 0.64444, 0, 0, 0.575],
+ 57: [0.19444, 0.44444, 0, 0, 0.575],
+ 65: [0, 0.68611, 0, 0, 0.86944],
+ 66: [0, 0.68611, 0.04835, 0, 0.8664],
+ 67: [0, 0.68611, 0.06979, 0, 0.81694],
+ 68: [0, 0.68611, 0.03194, 0, 0.93812],
+ 69: [0, 0.68611, 0.05451, 0, 0.81007],
+ 70: [0, 0.68611, 0.15972, 0, 0.68889],
+ 71: [0, 0.68611, 0, 0, 0.88673],
+ 72: [0, 0.68611, 0.08229, 0, 0.98229],
+ 73: [0, 0.68611, 0.07778, 0, 0.51111],
+ 74: [0, 0.68611, 0.10069, 0, 0.63125],
+ 75: [0, 0.68611, 0.06979, 0, 0.97118],
+ 76: [0, 0.68611, 0, 0, 0.75555],
+ 77: [0, 0.68611, 0.11424, 0, 1.14201],
+ 78: [0, 0.68611, 0.11424, 0, 0.95034],
+ 79: [0, 0.68611, 0.03194, 0, 0.83666],
+ 80: [0, 0.68611, 0.15972, 0, 0.72309],
+ 81: [0.19444, 0.68611, 0, 0, 0.86861],
+ 82: [0, 0.68611, 0.00421, 0, 0.87235],
+ 83: [0, 0.68611, 0.05382, 0, 0.69271],
+ 84: [0, 0.68611, 0.15972, 0, 0.63663],
+ 85: [0, 0.68611, 0.11424, 0, 0.80027],
+ 86: [0, 0.68611, 0.25555, 0, 0.67778],
+ 87: [0, 0.68611, 0.15972, 0, 1.09305],
+ 88: [0, 0.68611, 0.07778, 0, 0.94722],
+ 89: [0, 0.68611, 0.25555, 0, 0.67458],
+ 90: [0, 0.68611, 0.06979, 0, 0.77257],
+ 97: [0, 0.44444, 0, 0, 0.63287],
+ 98: [0, 0.69444, 0, 0, 0.52083],
+ 99: [0, 0.44444, 0, 0, 0.51342],
+ 100: [0, 0.69444, 0, 0, 0.60972],
+ 101: [0, 0.44444, 0, 0, 0.55361],
+ 102: [0.19444, 0.69444, 0.11042, 0, 0.56806],
+ 103: [0.19444, 0.44444, 0.03704, 0, 0.5449],
+ 104: [0, 0.69444, 0, 0, 0.66759],
+ 105: [0, 0.69326, 0, 0, 0.4048],
+ 106: [0.19444, 0.69326, 0.0622, 0, 0.47083],
+ 107: [0, 0.69444, 0.01852, 0, 0.6037],
+ 108: [0, 0.69444, 0.0088, 0, 0.34815],
+ 109: [0, 0.44444, 0, 0, 1.0324],
+ 110: [0, 0.44444, 0, 0, 0.71296],
+ 111: [0, 0.44444, 0, 0, 0.58472],
+ 112: [0.19444, 0.44444, 0, 0, 0.60092],
+ 113: [0.19444, 0.44444, 0.03704, 0, 0.54213],
+ 114: [0, 0.44444, 0.03194, 0, 0.5287],
+ 115: [0, 0.44444, 0, 0, 0.53125],
+ 116: [0, 0.63492, 0, 0, 0.41528],
+ 117: [0, 0.44444, 0, 0, 0.68102],
+ 118: [0, 0.44444, 0.03704, 0, 0.56666],
+ 119: [0, 0.44444, 0.02778, 0, 0.83148],
+ 120: [0, 0.44444, 0, 0, 0.65903],
+ 121: [0.19444, 0.44444, 0.03704, 0, 0.59028],
+ 122: [0, 0.44444, 0.04213, 0, 0.55509],
+ 160: [0, 0, 0, 0, 0.25],
+ 915: [0, 0.68611, 0.15972, 0, 0.65694],
+ 916: [0, 0.68611, 0, 0, 0.95833],
+ 920: [0, 0.68611, 0.03194, 0, 0.86722],
+ 923: [0, 0.68611, 0, 0, 0.80555],
+ 926: [0, 0.68611, 0.07458, 0, 0.84125],
+ 928: [0, 0.68611, 0.08229, 0, 0.98229],
+ 931: [0, 0.68611, 0.05451, 0, 0.88507],
+ 933: [0, 0.68611, 0.15972, 0, 0.67083],
+ 934: [0, 0.68611, 0, 0, 0.76666],
+ 936: [0, 0.68611, 0.11653, 0, 0.71402],
+ 937: [0, 0.68611, 0.04835, 0, 0.8789],
+ 945: [0, 0.44444, 0, 0, 0.76064],
+ 946: [0.19444, 0.69444, 0.03403, 0, 0.65972],
+ 947: [0.19444, 0.44444, 0.06389, 0, 0.59003],
+ 948: [0, 0.69444, 0.03819, 0, 0.52222],
+ 949: [0, 0.44444, 0, 0, 0.52882],
+ 950: [0.19444, 0.69444, 0.06215, 0, 0.50833],
+ 951: [0.19444, 0.44444, 0.03704, 0, 0.6],
+ 952: [0, 0.69444, 0.03194, 0, 0.5618],
+ 953: [0, 0.44444, 0, 0, 0.41204],
+ 954: [0, 0.44444, 0, 0, 0.66759],
+ 955: [0, 0.69444, 0, 0, 0.67083],
+ 956: [0.19444, 0.44444, 0, 0, 0.70787],
+ 957: [0, 0.44444, 0.06898, 0, 0.57685],
+ 958: [0.19444, 0.69444, 0.03021, 0, 0.50833],
+ 959: [0, 0.44444, 0, 0, 0.58472],
+ 960: [0, 0.44444, 0.03704, 0, 0.68241],
+ 961: [0.19444, 0.44444, 0, 0, 0.6118],
+ 962: [0.09722, 0.44444, 0.07917, 0, 0.42361],
+ 963: [0, 0.44444, 0.03704, 0, 0.68588],
+ 964: [0, 0.44444, 0.13472, 0, 0.52083],
+ 965: [0, 0.44444, 0.03704, 0, 0.63055],
+ 966: [0.19444, 0.44444, 0, 0, 0.74722],
+ 967: [0.19444, 0.44444, 0, 0, 0.71805],
+ 968: [0.19444, 0.69444, 0.03704, 0, 0.75833],
+ 969: [0, 0.44444, 0.03704, 0, 0.71782],
+ 977: [0, 0.69444, 0, 0, 0.69155],
+ 981: [0.19444, 0.69444, 0, 0, 0.7125],
+ 982: [0, 0.44444, 0.03194, 0, 0.975],
+ 1009: [0.19444, 0.44444, 0, 0, 0.6118],
+ 1013: [0, 0.44444, 0, 0, 0.48333],
+ 57649: [0, 0.44444, 0, 0, 0.39352],
+ 57911: [0.19444, 0.44444, 0, 0, 0.43889],
+ },
+ "Math-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 48: [0, 0.43056, 0, 0, 0.5],
+ 49: [0, 0.43056, 0, 0, 0.5],
+ 50: [0, 0.43056, 0, 0, 0.5],
+ 51: [0.19444, 0.43056, 0, 0, 0.5],
+ 52: [0.19444, 0.43056, 0, 0, 0.5],
+ 53: [0.19444, 0.43056, 0, 0, 0.5],
+ 54: [0, 0.64444, 0, 0, 0.5],
+ 55: [0.19444, 0.43056, 0, 0, 0.5],
+ 56: [0, 0.64444, 0, 0, 0.5],
+ 57: [0.19444, 0.43056, 0, 0, 0.5],
+ 65: [0, 0.68333, 0, 0.13889, 0.75],
+ 66: [0, 0.68333, 0.05017, 0.08334, 0.75851],
+ 67: [0, 0.68333, 0.07153, 0.08334, 0.71472],
+ 68: [0, 0.68333, 0.02778, 0.05556, 0.82792],
+ 69: [0, 0.68333, 0.05764, 0.08334, 0.7382],
+ 70: [0, 0.68333, 0.13889, 0.08334, 0.64306],
+ 71: [0, 0.68333, 0, 0.08334, 0.78625],
+ 72: [0, 0.68333, 0.08125, 0.05556, 0.83125],
+ 73: [0, 0.68333, 0.07847, 0.11111, 0.43958],
+ 74: [0, 0.68333, 0.09618, 0.16667, 0.55451],
+ 75: [0, 0.68333, 0.07153, 0.05556, 0.84931],
+ 76: [0, 0.68333, 0, 0.02778, 0.68056],
+ 77: [0, 0.68333, 0.10903, 0.08334, 0.97014],
+ 78: [0, 0.68333, 0.10903, 0.08334, 0.80347],
+ 79: [0, 0.68333, 0.02778, 0.08334, 0.76278],
+ 80: [0, 0.68333, 0.13889, 0.08334, 0.64201],
+ 81: [0.19444, 0.68333, 0, 0.08334, 0.79056],
+ 82: [0, 0.68333, 0.00773, 0.08334, 0.75929],
+ 83: [0, 0.68333, 0.05764, 0.08334, 0.6132],
+ 84: [0, 0.68333, 0.13889, 0.08334, 0.58438],
+ 85: [0, 0.68333, 0.10903, 0.02778, 0.68278],
+ 86: [0, 0.68333, 0.22222, 0, 0.58333],
+ 87: [0, 0.68333, 0.13889, 0, 0.94445],
+ 88: [0, 0.68333, 0.07847, 0.08334, 0.82847],
+ 89: [0, 0.68333, 0.22222, 0, 0.58056],
+ 90: [0, 0.68333, 0.07153, 0.08334, 0.68264],
+ 97: [0, 0.43056, 0, 0, 0.52859],
+ 98: [0, 0.69444, 0, 0, 0.42917],
+ 99: [0, 0.43056, 0, 0.05556, 0.43276],
+ 100: [0, 0.69444, 0, 0.16667, 0.52049],
+ 101: [0, 0.43056, 0, 0.05556, 0.46563],
+ 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
+ 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
+ 104: [0, 0.69444, 0, 0, 0.57616],
+ 105: [0, 0.65952, 0, 0, 0.34451],
+ 106: [0.19444, 0.65952, 0.05724, 0, 0.41181],
+ 107: [0, 0.69444, 0.03148, 0, 0.5206],
+ 108: [0, 0.69444, 0.01968, 0.08334, 0.29838],
+ 109: [0, 0.43056, 0, 0, 0.87801],
+ 110: [0, 0.43056, 0, 0, 0.60023],
+ 111: [0, 0.43056, 0, 0.05556, 0.48472],
+ 112: [0.19444, 0.43056, 0, 0.08334, 0.50313],
+ 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
+ 114: [0, 0.43056, 0.02778, 0.05556, 0.45116],
+ 115: [0, 0.43056, 0, 0.05556, 0.46875],
+ 116: [0, 0.61508, 0, 0.08334, 0.36111],
+ 117: [0, 0.43056, 0, 0.02778, 0.57246],
+ 118: [0, 0.43056, 0.03588, 0.02778, 0.48472],
+ 119: [0, 0.43056, 0.02691, 0.08334, 0.71592],
+ 120: [0, 0.43056, 0, 0.02778, 0.57153],
+ 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
+ 122: [0, 0.43056, 0.04398, 0.05556, 0.46505],
+ 160: [0, 0, 0, 0, 0.25],
+ 915: [0, 0.68333, 0.13889, 0.08334, 0.61528],
+ 916: [0, 0.68333, 0, 0.16667, 0.83334],
+ 920: [0, 0.68333, 0.02778, 0.08334, 0.76278],
+ 923: [0, 0.68333, 0, 0.16667, 0.69445],
+ 926: [0, 0.68333, 0.07569, 0.08334, 0.74236],
+ 928: [0, 0.68333, 0.08125, 0.05556, 0.83125],
+ 931: [0, 0.68333, 0.05764, 0.08334, 0.77986],
+ 933: [0, 0.68333, 0.13889, 0.05556, 0.58333],
+ 934: [0, 0.68333, 0, 0.08334, 0.66667],
+ 936: [0, 0.68333, 0.11, 0.05556, 0.61222],
+ 937: [0, 0.68333, 0.05017, 0.08334, 0.7724],
+ 945: [0, 0.43056, 0.0037, 0.02778, 0.6397],
+ 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
+ 947: [0.19444, 0.43056, 0.05556, 0, 0.51773],
+ 948: [0, 0.69444, 0.03785, 0.05556, 0.44444],
+ 949: [0, 0.43056, 0, 0.08334, 0.46632],
+ 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
+ 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
+ 952: [0, 0.69444, 0.02778, 0.08334, 0.46944],
+ 953: [0, 0.43056, 0, 0.05556, 0.35394],
+ 954: [0, 0.43056, 0, 0, 0.57616],
+ 955: [0, 0.69444, 0, 0, 0.58334],
+ 956: [0.19444, 0.43056, 0, 0.02778, 0.60255],
+ 957: [0, 0.43056, 0.06366, 0.02778, 0.49398],
+ 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
+ 959: [0, 0.43056, 0, 0.05556, 0.48472],
+ 960: [0, 0.43056, 0.03588, 0, 0.57003],
+ 961: [0.19444, 0.43056, 0, 0.08334, 0.51702],
+ 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
+ 963: [0, 0.43056, 0.03588, 0, 0.57141],
+ 964: [0, 0.43056, 0.1132, 0.02778, 0.43715],
+ 965: [0, 0.43056, 0.03588, 0.02778, 0.54028],
+ 966: [0.19444, 0.43056, 0, 0.08334, 0.65417],
+ 967: [0.19444, 0.43056, 0, 0.05556, 0.62569],
+ 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
+ 969: [0, 0.43056, 0.03588, 0, 0.62245],
+ 977: [0, 0.69444, 0, 0.08334, 0.59144],
+ 981: [0.19444, 0.69444, 0, 0.08334, 0.59583],
+ 982: [0, 0.43056, 0.02778, 0, 0.82813],
+ 1009: [0.19444, 0.43056, 0, 0.08334, 0.51702],
+ 1013: [0, 0.43056, 0, 0.05556, 0.4059],
+ 57649: [0, 0.43056, 0, 0.02778, 0.32246],
+ 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403],
+ },
+ "SansSerif-Bold": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.36667],
+ 34: [0, 0.69444, 0, 0, 0.55834],
+ 35: [0.19444, 0.69444, 0, 0, 0.91667],
+ 36: [0.05556, 0.75, 0, 0, 0.55],
+ 37: [0.05556, 0.75, 0, 0, 1.02912],
+ 38: [0, 0.69444, 0, 0, 0.83056],
+ 39: [0, 0.69444, 0, 0, 0.30556],
+ 40: [0.25, 0.75, 0, 0, 0.42778],
+ 41: [0.25, 0.75, 0, 0, 0.42778],
+ 42: [0, 0.75, 0, 0, 0.55],
+ 43: [0.11667, 0.61667, 0, 0, 0.85556],
+ 44: [0.10556, 0.13056, 0, 0, 0.30556],
+ 45: [0, 0.45833, 0, 0, 0.36667],
+ 46: [0, 0.13056, 0, 0, 0.30556],
+ 47: [0.25, 0.75, 0, 0, 0.55],
+ 48: [0, 0.69444, 0, 0, 0.55],
+ 49: [0, 0.69444, 0, 0, 0.55],
+ 50: [0, 0.69444, 0, 0, 0.55],
+ 51: [0, 0.69444, 0, 0, 0.55],
+ 52: [0, 0.69444, 0, 0, 0.55],
+ 53: [0, 0.69444, 0, 0, 0.55],
+ 54: [0, 0.69444, 0, 0, 0.55],
+ 55: [0, 0.69444, 0, 0, 0.55],
+ 56: [0, 0.69444, 0, 0, 0.55],
+ 57: [0, 0.69444, 0, 0, 0.55],
+ 58: [0, 0.45833, 0, 0, 0.30556],
+ 59: [0.10556, 0.45833, 0, 0, 0.30556],
+ 61: [-0.09375, 0.40625, 0, 0, 0.85556],
+ 63: [0, 0.69444, 0, 0, 0.51945],
+ 64: [0, 0.69444, 0, 0, 0.73334],
+ 65: [0, 0.69444, 0, 0, 0.73334],
+ 66: [0, 0.69444, 0, 0, 0.73334],
+ 67: [0, 0.69444, 0, 0, 0.70278],
+ 68: [0, 0.69444, 0, 0, 0.79445],
+ 69: [0, 0.69444, 0, 0, 0.64167],
+ 70: [0, 0.69444, 0, 0, 0.61111],
+ 71: [0, 0.69444, 0, 0, 0.73334],
+ 72: [0, 0.69444, 0, 0, 0.79445],
+ 73: [0, 0.69444, 0, 0, 0.33056],
+ 74: [0, 0.69444, 0, 0, 0.51945],
+ 75: [0, 0.69444, 0, 0, 0.76389],
+ 76: [0, 0.69444, 0, 0, 0.58056],
+ 77: [0, 0.69444, 0, 0, 0.97778],
+ 78: [0, 0.69444, 0, 0, 0.79445],
+ 79: [0, 0.69444, 0, 0, 0.79445],
+ 80: [0, 0.69444, 0, 0, 0.70278],
+ 81: [0.10556, 0.69444, 0, 0, 0.79445],
+ 82: [0, 0.69444, 0, 0, 0.70278],
+ 83: [0, 0.69444, 0, 0, 0.61111],
+ 84: [0, 0.69444, 0, 0, 0.73334],
+ 85: [0, 0.69444, 0, 0, 0.76389],
+ 86: [0, 0.69444, 0.01528, 0, 0.73334],
+ 87: [0, 0.69444, 0.01528, 0, 1.03889],
+ 88: [0, 0.69444, 0, 0, 0.73334],
+ 89: [0, 0.69444, 0.0275, 0, 0.73334],
+ 90: [0, 0.69444, 0, 0, 0.67223],
+ 91: [0.25, 0.75, 0, 0, 0.34306],
+ 93: [0.25, 0.75, 0, 0, 0.34306],
+ 94: [0, 0.69444, 0, 0, 0.55],
+ 95: [0.35, 0.10833, 0.03056, 0, 0.55],
+ 97: [0, 0.45833, 0, 0, 0.525],
+ 98: [0, 0.69444, 0, 0, 0.56111],
+ 99: [0, 0.45833, 0, 0, 0.48889],
+ 100: [0, 0.69444, 0, 0, 0.56111],
+ 101: [0, 0.45833, 0, 0, 0.51111],
+ 102: [0, 0.69444, 0.07639, 0, 0.33611],
+ 103: [0.19444, 0.45833, 0.01528, 0, 0.55],
+ 104: [0, 0.69444, 0, 0, 0.56111],
+ 105: [0, 0.69444, 0, 0, 0.25556],
+ 106: [0.19444, 0.69444, 0, 0, 0.28611],
+ 107: [0, 0.69444, 0, 0, 0.53056],
+ 108: [0, 0.69444, 0, 0, 0.25556],
+ 109: [0, 0.45833, 0, 0, 0.86667],
+ 110: [0, 0.45833, 0, 0, 0.56111],
+ 111: [0, 0.45833, 0, 0, 0.55],
+ 112: [0.19444, 0.45833, 0, 0, 0.56111],
+ 113: [0.19444, 0.45833, 0, 0, 0.56111],
+ 114: [0, 0.45833, 0.01528, 0, 0.37222],
+ 115: [0, 0.45833, 0, 0, 0.42167],
+ 116: [0, 0.58929, 0, 0, 0.40417],
+ 117: [0, 0.45833, 0, 0, 0.56111],
+ 118: [0, 0.45833, 0.01528, 0, 0.5],
+ 119: [0, 0.45833, 0.01528, 0, 0.74445],
+ 120: [0, 0.45833, 0, 0, 0.5],
+ 121: [0.19444, 0.45833, 0.01528, 0, 0.5],
+ 122: [0, 0.45833, 0, 0, 0.47639],
+ 126: [0.35, 0.34444, 0, 0, 0.55],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.69444, 0, 0, 0.55],
+ 176: [0, 0.69444, 0, 0, 0.73334],
+ 180: [0, 0.69444, 0, 0, 0.55],
+ 184: [0.17014, 0, 0, 0, 0.48889],
+ 305: [0, 0.45833, 0, 0, 0.25556],
+ 567: [0.19444, 0.45833, 0, 0, 0.28611],
+ 710: [0, 0.69444, 0, 0, 0.55],
+ 711: [0, 0.63542, 0, 0, 0.55],
+ 713: [0, 0.63778, 0, 0, 0.55],
+ 728: [0, 0.69444, 0, 0, 0.55],
+ 729: [0, 0.69444, 0, 0, 0.30556],
+ 730: [0, 0.69444, 0, 0, 0.73334],
+ 732: [0, 0.69444, 0, 0, 0.55],
+ 733: [0, 0.69444, 0, 0, 0.55],
+ 915: [0, 0.69444, 0, 0, 0.58056],
+ 916: [0, 0.69444, 0, 0, 0.91667],
+ 920: [0, 0.69444, 0, 0, 0.85556],
+ 923: [0, 0.69444, 0, 0, 0.67223],
+ 926: [0, 0.69444, 0, 0, 0.73334],
+ 928: [0, 0.69444, 0, 0, 0.79445],
+ 931: [0, 0.69444, 0, 0, 0.79445],
+ 933: [0, 0.69444, 0, 0, 0.85556],
+ 934: [0, 0.69444, 0, 0, 0.79445],
+ 936: [0, 0.69444, 0, 0, 0.85556],
+ 937: [0, 0.69444, 0, 0, 0.79445],
+ 8211: [0, 0.45833, 0.03056, 0, 0.55],
+ 8212: [0, 0.45833, 0.03056, 0, 1.10001],
+ 8216: [0, 0.69444, 0, 0, 0.30556],
+ 8217: [0, 0.69444, 0, 0, 0.30556],
+ 8220: [0, 0.69444, 0, 0, 0.55834],
+ 8221: [0, 0.69444, 0, 0, 0.55834],
+ },
+ "SansSerif-Italic": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0.05733, 0, 0.31945],
+ 34: [0, 0.69444, 0.00316, 0, 0.5],
+ 35: [0.19444, 0.69444, 0.05087, 0, 0.83334],
+ 36: [0.05556, 0.75, 0.11156, 0, 0.5],
+ 37: [0.05556, 0.75, 0.03126, 0, 0.83334],
+ 38: [0, 0.69444, 0.03058, 0, 0.75834],
+ 39: [0, 0.69444, 0.07816, 0, 0.27778],
+ 40: [0.25, 0.75, 0.13164, 0, 0.38889],
+ 41: [0.25, 0.75, 0.02536, 0, 0.38889],
+ 42: [0, 0.75, 0.11775, 0, 0.5],
+ 43: [0.08333, 0.58333, 0.02536, 0, 0.77778],
+ 44: [0.125, 0.08333, 0, 0, 0.27778],
+ 45: [0, 0.44444, 0.01946, 0, 0.33333],
+ 46: [0, 0.08333, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0.13164, 0, 0.5],
+ 48: [0, 0.65556, 0.11156, 0, 0.5],
+ 49: [0, 0.65556, 0.11156, 0, 0.5],
+ 50: [0, 0.65556, 0.11156, 0, 0.5],
+ 51: [0, 0.65556, 0.11156, 0, 0.5],
+ 52: [0, 0.65556, 0.11156, 0, 0.5],
+ 53: [0, 0.65556, 0.11156, 0, 0.5],
+ 54: [0, 0.65556, 0.11156, 0, 0.5],
+ 55: [0, 0.65556, 0.11156, 0, 0.5],
+ 56: [0, 0.65556, 0.11156, 0, 0.5],
+ 57: [0, 0.65556, 0.11156, 0, 0.5],
+ 58: [0, 0.44444, 0.02502, 0, 0.27778],
+ 59: [0.125, 0.44444, 0.02502, 0, 0.27778],
+ 61: [-0.13, 0.37, 0.05087, 0, 0.77778],
+ 63: [0, 0.69444, 0.11809, 0, 0.47222],
+ 64: [0, 0.69444, 0.07555, 0, 0.66667],
+ 65: [0, 0.69444, 0, 0, 0.66667],
+ 66: [0, 0.69444, 0.08293, 0, 0.66667],
+ 67: [0, 0.69444, 0.11983, 0, 0.63889],
+ 68: [0, 0.69444, 0.07555, 0, 0.72223],
+ 69: [0, 0.69444, 0.11983, 0, 0.59722],
+ 70: [0, 0.69444, 0.13372, 0, 0.56945],
+ 71: [0, 0.69444, 0.11983, 0, 0.66667],
+ 72: [0, 0.69444, 0.08094, 0, 0.70834],
+ 73: [0, 0.69444, 0.13372, 0, 0.27778],
+ 74: [0, 0.69444, 0.08094, 0, 0.47222],
+ 75: [0, 0.69444, 0.11983, 0, 0.69445],
+ 76: [0, 0.69444, 0, 0, 0.54167],
+ 77: [0, 0.69444, 0.08094, 0, 0.875],
+ 78: [0, 0.69444, 0.08094, 0, 0.70834],
+ 79: [0, 0.69444, 0.07555, 0, 0.73611],
+ 80: [0, 0.69444, 0.08293, 0, 0.63889],
+ 81: [0.125, 0.69444, 0.07555, 0, 0.73611],
+ 82: [0, 0.69444, 0.08293, 0, 0.64584],
+ 83: [0, 0.69444, 0.09205, 0, 0.55556],
+ 84: [0, 0.69444, 0.13372, 0, 0.68056],
+ 85: [0, 0.69444, 0.08094, 0, 0.6875],
+ 86: [0, 0.69444, 0.1615, 0, 0.66667],
+ 87: [0, 0.69444, 0.1615, 0, 0.94445],
+ 88: [0, 0.69444, 0.13372, 0, 0.66667],
+ 89: [0, 0.69444, 0.17261, 0, 0.66667],
+ 90: [0, 0.69444, 0.11983, 0, 0.61111],
+ 91: [0.25, 0.75, 0.15942, 0, 0.28889],
+ 93: [0.25, 0.75, 0.08719, 0, 0.28889],
+ 94: [0, 0.69444, 0.0799, 0, 0.5],
+ 95: [0.35, 0.09444, 0.08616, 0, 0.5],
+ 97: [0, 0.44444, 0.00981, 0, 0.48056],
+ 98: [0, 0.69444, 0.03057, 0, 0.51667],
+ 99: [0, 0.44444, 0.08336, 0, 0.44445],
+ 100: [0, 0.69444, 0.09483, 0, 0.51667],
+ 101: [0, 0.44444, 0.06778, 0, 0.44445],
+ 102: [0, 0.69444, 0.21705, 0, 0.30556],
+ 103: [0.19444, 0.44444, 0.10836, 0, 0.5],
+ 104: [0, 0.69444, 0.01778, 0, 0.51667],
+ 105: [0, 0.67937, 0.09718, 0, 0.23889],
+ 106: [0.19444, 0.67937, 0.09162, 0, 0.26667],
+ 107: [0, 0.69444, 0.08336, 0, 0.48889],
+ 108: [0, 0.69444, 0.09483, 0, 0.23889],
+ 109: [0, 0.44444, 0.01778, 0, 0.79445],
+ 110: [0, 0.44444, 0.01778, 0, 0.51667],
+ 111: [0, 0.44444, 0.06613, 0, 0.5],
+ 112: [0.19444, 0.44444, 0.0389, 0, 0.51667],
+ 113: [0.19444, 0.44444, 0.04169, 0, 0.51667],
+ 114: [0, 0.44444, 0.10836, 0, 0.34167],
+ 115: [0, 0.44444, 0.0778, 0, 0.38333],
+ 116: [0, 0.57143, 0.07225, 0, 0.36111],
+ 117: [0, 0.44444, 0.04169, 0, 0.51667],
+ 118: [0, 0.44444, 0.10836, 0, 0.46111],
+ 119: [0, 0.44444, 0.10836, 0, 0.68334],
+ 120: [0, 0.44444, 0.09169, 0, 0.46111],
+ 121: [0.19444, 0.44444, 0.10836, 0, 0.46111],
+ 122: [0, 0.44444, 0.08752, 0, 0.43472],
+ 126: [0.35, 0.32659, 0.08826, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.67937, 0.06385, 0, 0.5],
+ 176: [0, 0.69444, 0, 0, 0.73752],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 305: [0, 0.44444, 0.04169, 0, 0.23889],
+ 567: [0.19444, 0.44444, 0.04169, 0, 0.26667],
+ 710: [0, 0.69444, 0.0799, 0, 0.5],
+ 711: [0, 0.63194, 0.08432, 0, 0.5],
+ 713: [0, 0.60889, 0.08776, 0, 0.5],
+ 714: [0, 0.69444, 0.09205, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0.09483, 0, 0.5],
+ 729: [0, 0.67937, 0.07774, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.73752],
+ 732: [0, 0.67659, 0.08826, 0, 0.5],
+ 733: [0, 0.69444, 0.09205, 0, 0.5],
+ 915: [0, 0.69444, 0.13372, 0, 0.54167],
+ 916: [0, 0.69444, 0, 0, 0.83334],
+ 920: [0, 0.69444, 0.07555, 0, 0.77778],
+ 923: [0, 0.69444, 0, 0, 0.61111],
+ 926: [0, 0.69444, 0.12816, 0, 0.66667],
+ 928: [0, 0.69444, 0.08094, 0, 0.70834],
+ 931: [0, 0.69444, 0.11983, 0, 0.72222],
+ 933: [0, 0.69444, 0.09031, 0, 0.77778],
+ 934: [0, 0.69444, 0.04603, 0, 0.72222],
+ 936: [0, 0.69444, 0.09031, 0, 0.77778],
+ 937: [0, 0.69444, 0.08293, 0, 0.72222],
+ 8211: [0, 0.44444, 0.08616, 0, 0.5],
+ 8212: [0, 0.44444, 0.08616, 0, 1],
+ 8216: [0, 0.69444, 0.07816, 0, 0.27778],
+ 8217: [0, 0.69444, 0.07816, 0, 0.27778],
+ 8220: [0, 0.69444, 0.14205, 0, 0.5],
+ 8221: [0, 0.69444, 0.00316, 0, 0.5],
+ },
+ "SansSerif-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 33: [0, 0.69444, 0, 0, 0.31945],
+ 34: [0, 0.69444, 0, 0, 0.5],
+ 35: [0.19444, 0.69444, 0, 0, 0.83334],
+ 36: [0.05556, 0.75, 0, 0, 0.5],
+ 37: [0.05556, 0.75, 0, 0, 0.83334],
+ 38: [0, 0.69444, 0, 0, 0.75834],
+ 39: [0, 0.69444, 0, 0, 0.27778],
+ 40: [0.25, 0.75, 0, 0, 0.38889],
+ 41: [0.25, 0.75, 0, 0, 0.38889],
+ 42: [0, 0.75, 0, 0, 0.5],
+ 43: [0.08333, 0.58333, 0, 0, 0.77778],
+ 44: [0.125, 0.08333, 0, 0, 0.27778],
+ 45: [0, 0.44444, 0, 0, 0.33333],
+ 46: [0, 0.08333, 0, 0, 0.27778],
+ 47: [0.25, 0.75, 0, 0, 0.5],
+ 48: [0, 0.65556, 0, 0, 0.5],
+ 49: [0, 0.65556, 0, 0, 0.5],
+ 50: [0, 0.65556, 0, 0, 0.5],
+ 51: [0, 0.65556, 0, 0, 0.5],
+ 52: [0, 0.65556, 0, 0, 0.5],
+ 53: [0, 0.65556, 0, 0, 0.5],
+ 54: [0, 0.65556, 0, 0, 0.5],
+ 55: [0, 0.65556, 0, 0, 0.5],
+ 56: [0, 0.65556, 0, 0, 0.5],
+ 57: [0, 0.65556, 0, 0, 0.5],
+ 58: [0, 0.44444, 0, 0, 0.27778],
+ 59: [0.125, 0.44444, 0, 0, 0.27778],
+ 61: [-0.13, 0.37, 0, 0, 0.77778],
+ 63: [0, 0.69444, 0, 0, 0.47222],
+ 64: [0, 0.69444, 0, 0, 0.66667],
+ 65: [0, 0.69444, 0, 0, 0.66667],
+ 66: [0, 0.69444, 0, 0, 0.66667],
+ 67: [0, 0.69444, 0, 0, 0.63889],
+ 68: [0, 0.69444, 0, 0, 0.72223],
+ 69: [0, 0.69444, 0, 0, 0.59722],
+ 70: [0, 0.69444, 0, 0, 0.56945],
+ 71: [0, 0.69444, 0, 0, 0.66667],
+ 72: [0, 0.69444, 0, 0, 0.70834],
+ 73: [0, 0.69444, 0, 0, 0.27778],
+ 74: [0, 0.69444, 0, 0, 0.47222],
+ 75: [0, 0.69444, 0, 0, 0.69445],
+ 76: [0, 0.69444, 0, 0, 0.54167],
+ 77: [0, 0.69444, 0, 0, 0.875],
+ 78: [0, 0.69444, 0, 0, 0.70834],
+ 79: [0, 0.69444, 0, 0, 0.73611],
+ 80: [0, 0.69444, 0, 0, 0.63889],
+ 81: [0.125, 0.69444, 0, 0, 0.73611],
+ 82: [0, 0.69444, 0, 0, 0.64584],
+ 83: [0, 0.69444, 0, 0, 0.55556],
+ 84: [0, 0.69444, 0, 0, 0.68056],
+ 85: [0, 0.69444, 0, 0, 0.6875],
+ 86: [0, 0.69444, 0.01389, 0, 0.66667],
+ 87: [0, 0.69444, 0.01389, 0, 0.94445],
+ 88: [0, 0.69444, 0, 0, 0.66667],
+ 89: [0, 0.69444, 0.025, 0, 0.66667],
+ 90: [0, 0.69444, 0, 0, 0.61111],
+ 91: [0.25, 0.75, 0, 0, 0.28889],
+ 93: [0.25, 0.75, 0, 0, 0.28889],
+ 94: [0, 0.69444, 0, 0, 0.5],
+ 95: [0.35, 0.09444, 0.02778, 0, 0.5],
+ 97: [0, 0.44444, 0, 0, 0.48056],
+ 98: [0, 0.69444, 0, 0, 0.51667],
+ 99: [0, 0.44444, 0, 0, 0.44445],
+ 100: [0, 0.69444, 0, 0, 0.51667],
+ 101: [0, 0.44444, 0, 0, 0.44445],
+ 102: [0, 0.69444, 0.06944, 0, 0.30556],
+ 103: [0.19444, 0.44444, 0.01389, 0, 0.5],
+ 104: [0, 0.69444, 0, 0, 0.51667],
+ 105: [0, 0.67937, 0, 0, 0.23889],
+ 106: [0.19444, 0.67937, 0, 0, 0.26667],
+ 107: [0, 0.69444, 0, 0, 0.48889],
+ 108: [0, 0.69444, 0, 0, 0.23889],
+ 109: [0, 0.44444, 0, 0, 0.79445],
+ 110: [0, 0.44444, 0, 0, 0.51667],
+ 111: [0, 0.44444, 0, 0, 0.5],
+ 112: [0.19444, 0.44444, 0, 0, 0.51667],
+ 113: [0.19444, 0.44444, 0, 0, 0.51667],
+ 114: [0, 0.44444, 0.01389, 0, 0.34167],
+ 115: [0, 0.44444, 0, 0, 0.38333],
+ 116: [0, 0.57143, 0, 0, 0.36111],
+ 117: [0, 0.44444, 0, 0, 0.51667],
+ 118: [0, 0.44444, 0.01389, 0, 0.46111],
+ 119: [0, 0.44444, 0.01389, 0, 0.68334],
+ 120: [0, 0.44444, 0, 0, 0.46111],
+ 121: [0.19444, 0.44444, 0.01389, 0, 0.46111],
+ 122: [0, 0.44444, 0, 0, 0.43472],
+ 126: [0.35, 0.32659, 0, 0, 0.5],
+ 160: [0, 0, 0, 0, 0.25],
+ 168: [0, 0.67937, 0, 0, 0.5],
+ 176: [0, 0.69444, 0, 0, 0.66667],
+ 184: [0.17014, 0, 0, 0, 0.44445],
+ 305: [0, 0.44444, 0, 0, 0.23889],
+ 567: [0.19444, 0.44444, 0, 0, 0.26667],
+ 710: [0, 0.69444, 0, 0, 0.5],
+ 711: [0, 0.63194, 0, 0, 0.5],
+ 713: [0, 0.60889, 0, 0, 0.5],
+ 714: [0, 0.69444, 0, 0, 0.5],
+ 715: [0, 0.69444, 0, 0, 0.5],
+ 728: [0, 0.69444, 0, 0, 0.5],
+ 729: [0, 0.67937, 0, 0, 0.27778],
+ 730: [0, 0.69444, 0, 0, 0.66667],
+ 732: [0, 0.67659, 0, 0, 0.5],
+ 733: [0, 0.69444, 0, 0, 0.5],
+ 915: [0, 0.69444, 0, 0, 0.54167],
+ 916: [0, 0.69444, 0, 0, 0.83334],
+ 920: [0, 0.69444, 0, 0, 0.77778],
+ 923: [0, 0.69444, 0, 0, 0.61111],
+ 926: [0, 0.69444, 0, 0, 0.66667],
+ 928: [0, 0.69444, 0, 0, 0.70834],
+ 931: [0, 0.69444, 0, 0, 0.72222],
+ 933: [0, 0.69444, 0, 0, 0.77778],
+ 934: [0, 0.69444, 0, 0, 0.72222],
+ 936: [0, 0.69444, 0, 0, 0.77778],
+ 937: [0, 0.69444, 0, 0, 0.72222],
+ 8211: [0, 0.44444, 0.02778, 0, 0.5],
+ 8212: [0, 0.44444, 0.02778, 0, 1],
+ 8216: [0, 0.69444, 0, 0, 0.27778],
+ 8217: [0, 0.69444, 0, 0, 0.27778],
+ 8220: [0, 0.69444, 0, 0, 0.5],
+ 8221: [0, 0.69444, 0, 0, 0.5],
+ },
+ "Script-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 65: [0, 0.7, 0.22925, 0, 0.80253],
+ 66: [0, 0.7, 0.04087, 0, 0.90757],
+ 67: [0, 0.7, 0.1689, 0, 0.66619],
+ 68: [0, 0.7, 0.09371, 0, 0.77443],
+ 69: [0, 0.7, 0.18583, 0, 0.56162],
+ 70: [0, 0.7, 0.13634, 0, 0.89544],
+ 71: [0, 0.7, 0.17322, 0, 0.60961],
+ 72: [0, 0.7, 0.29694, 0, 0.96919],
+ 73: [0, 0.7, 0.19189, 0, 0.80907],
+ 74: [0.27778, 0.7, 0.19189, 0, 1.05159],
+ 75: [0, 0.7, 0.31259, 0, 0.91364],
+ 76: [0, 0.7, 0.19189, 0, 0.87373],
+ 77: [0, 0.7, 0.15981, 0, 1.08031],
+ 78: [0, 0.7, 0.3525, 0, 0.9015],
+ 79: [0, 0.7, 0.08078, 0, 0.73787],
+ 80: [0, 0.7, 0.08078, 0, 1.01262],
+ 81: [0, 0.7, 0.03305, 0, 0.88282],
+ 82: [0, 0.7, 0.06259, 0, 0.85],
+ 83: [0, 0.7, 0.19189, 0, 0.86767],
+ 84: [0, 0.7, 0.29087, 0, 0.74697],
+ 85: [0, 0.7, 0.25815, 0, 0.79996],
+ 86: [0, 0.7, 0.27523, 0, 0.62204],
+ 87: [0, 0.7, 0.27523, 0, 0.80532],
+ 88: [0, 0.7, 0.26006, 0, 0.94445],
+ 89: [0, 0.7, 0.2939, 0, 0.70961],
+ 90: [0, 0.7, 0.24037, 0, 0.8212],
+ 160: [0, 0, 0, 0, 0.25],
+ },
+ "Size1-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.35001, 0.85, 0, 0, 0.45834],
+ 41: [0.35001, 0.85, 0, 0, 0.45834],
+ 47: [0.35001, 0.85, 0, 0, 0.57778],
+ 91: [0.35001, 0.85, 0, 0, 0.41667],
+ 92: [0.35001, 0.85, 0, 0, 0.57778],
+ 93: [0.35001, 0.85, 0, 0, 0.41667],
+ 123: [0.35001, 0.85, 0, 0, 0.58334],
+ 125: [0.35001, 0.85, 0, 0, 0.58334],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.72222, 0, 0, 0.55556],
+ 732: [0, 0.72222, 0, 0, 0.55556],
+ 770: [0, 0.72222, 0, 0, 0.55556],
+ 771: [0, 0.72222, 0, 0, 0.55556],
+ 8214: [-99e-5, 0.601, 0, 0, 0.77778],
+ 8593: [1e-5, 0.6, 0, 0, 0.66667],
+ 8595: [1e-5, 0.6, 0, 0, 0.66667],
+ 8657: [1e-5, 0.6, 0, 0, 0.77778],
+ 8659: [1e-5, 0.6, 0, 0, 0.77778],
+ 8719: [0.25001, 0.75, 0, 0, 0.94445],
+ 8720: [0.25001, 0.75, 0, 0, 0.94445],
+ 8721: [0.25001, 0.75, 0, 0, 1.05556],
+ 8730: [0.35001, 0.85, 0, 0, 1],
+ 8739: [-0.00599, 0.606, 0, 0, 0.33333],
+ 8741: [-0.00599, 0.606, 0, 0, 0.55556],
+ 8747: [0.30612, 0.805, 0.19445, 0, 0.47222],
+ 8748: [0.306, 0.805, 0.19445, 0, 0.47222],
+ 8749: [0.306, 0.805, 0.19445, 0, 0.47222],
+ 8750: [0.30612, 0.805, 0.19445, 0, 0.47222],
+ 8896: [0.25001, 0.75, 0, 0, 0.83334],
+ 8897: [0.25001, 0.75, 0, 0, 0.83334],
+ 8898: [0.25001, 0.75, 0, 0, 0.83334],
+ 8899: [0.25001, 0.75, 0, 0, 0.83334],
+ 8968: [0.35001, 0.85, 0, 0, 0.47222],
+ 8969: [0.35001, 0.85, 0, 0, 0.47222],
+ 8970: [0.35001, 0.85, 0, 0, 0.47222],
+ 8971: [0.35001, 0.85, 0, 0, 0.47222],
+ 9168: [-99e-5, 0.601, 0, 0, 0.66667],
+ 10216: [0.35001, 0.85, 0, 0, 0.47222],
+ 10217: [0.35001, 0.85, 0, 0, 0.47222],
+ 10752: [0.25001, 0.75, 0, 0, 1.11111],
+ 10753: [0.25001, 0.75, 0, 0, 1.11111],
+ 10754: [0.25001, 0.75, 0, 0, 1.11111],
+ 10756: [0.25001, 0.75, 0, 0, 0.83334],
+ 10758: [0.25001, 0.75, 0, 0, 0.83334],
+ },
+ "Size2-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.65002, 1.15, 0, 0, 0.59722],
+ 41: [0.65002, 1.15, 0, 0, 0.59722],
+ 47: [0.65002, 1.15, 0, 0, 0.81111],
+ 91: [0.65002, 1.15, 0, 0, 0.47222],
+ 92: [0.65002, 1.15, 0, 0, 0.81111],
+ 93: [0.65002, 1.15, 0, 0, 0.47222],
+ 123: [0.65002, 1.15, 0, 0, 0.66667],
+ 125: [0.65002, 1.15, 0, 0, 0.66667],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.75, 0, 0, 1],
+ 732: [0, 0.75, 0, 0, 1],
+ 770: [0, 0.75, 0, 0, 1],
+ 771: [0, 0.75, 0, 0, 1],
+ 8719: [0.55001, 1.05, 0, 0, 1.27778],
+ 8720: [0.55001, 1.05, 0, 0, 1.27778],
+ 8721: [0.55001, 1.05, 0, 0, 1.44445],
+ 8730: [0.65002, 1.15, 0, 0, 1],
+ 8747: [0.86225, 1.36, 0.44445, 0, 0.55556],
+ 8748: [0.862, 1.36, 0.44445, 0, 0.55556],
+ 8749: [0.862, 1.36, 0.44445, 0, 0.55556],
+ 8750: [0.86225, 1.36, 0.44445, 0, 0.55556],
+ 8896: [0.55001, 1.05, 0, 0, 1.11111],
+ 8897: [0.55001, 1.05, 0, 0, 1.11111],
+ 8898: [0.55001, 1.05, 0, 0, 1.11111],
+ 8899: [0.55001, 1.05, 0, 0, 1.11111],
+ 8968: [0.65002, 1.15, 0, 0, 0.52778],
+ 8969: [0.65002, 1.15, 0, 0, 0.52778],
+ 8970: [0.65002, 1.15, 0, 0, 0.52778],
+ 8971: [0.65002, 1.15, 0, 0, 0.52778],
+ 10216: [0.65002, 1.15, 0, 0, 0.61111],
+ 10217: [0.65002, 1.15, 0, 0, 0.61111],
+ 10752: [0.55001, 1.05, 0, 0, 1.51112],
+ 10753: [0.55001, 1.05, 0, 0, 1.51112],
+ 10754: [0.55001, 1.05, 0, 0, 1.51112],
+ 10756: [0.55001, 1.05, 0, 0, 1.11111],
+ 10758: [0.55001, 1.05, 0, 0, 1.11111],
+ },
+ "Size3-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [0.95003, 1.45, 0, 0, 0.73611],
+ 41: [0.95003, 1.45, 0, 0, 0.73611],
+ 47: [0.95003, 1.45, 0, 0, 1.04445],
+ 91: [0.95003, 1.45, 0, 0, 0.52778],
+ 92: [0.95003, 1.45, 0, 0, 1.04445],
+ 93: [0.95003, 1.45, 0, 0, 0.52778],
+ 123: [0.95003, 1.45, 0, 0, 0.75],
+ 125: [0.95003, 1.45, 0, 0, 0.75],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.75, 0, 0, 1.44445],
+ 732: [0, 0.75, 0, 0, 1.44445],
+ 770: [0, 0.75, 0, 0, 1.44445],
+ 771: [0, 0.75, 0, 0, 1.44445],
+ 8730: [0.95003, 1.45, 0, 0, 1],
+ 8968: [0.95003, 1.45, 0, 0, 0.58334],
+ 8969: [0.95003, 1.45, 0, 0, 0.58334],
+ 8970: [0.95003, 1.45, 0, 0, 0.58334],
+ 8971: [0.95003, 1.45, 0, 0, 0.58334],
+ 10216: [0.95003, 1.45, 0, 0, 0.75],
+ 10217: [0.95003, 1.45, 0, 0, 0.75],
+ },
+ "Size4-Regular": {
+ 32: [0, 0, 0, 0, 0.25],
+ 40: [1.25003, 1.75, 0, 0, 0.79167],
+ 41: [1.25003, 1.75, 0, 0, 0.79167],
+ 47: [1.25003, 1.75, 0, 0, 1.27778],
+ 91: [1.25003, 1.75, 0, 0, 0.58334],
+ 92: [1.25003, 1.75, 0, 0, 1.27778],
+ 93: [1.25003, 1.75, 0, 0, 0.58334],
+ 123: [1.25003, 1.75, 0, 0, 0.80556],
+ 125: [1.25003, 1.75, 0, 0, 0.80556],
+ 160: [0, 0, 0, 0, 0.25],
+ 710: [0, 0.825, 0, 0, 1.8889],
+ 732: [0, 0.825, 0, 0, 1.8889],
+ 770: [0, 0.825, 0, 0, 1.8889],
+ 771: [0, 0.825, 0, 0, 1.8889],
+ 8730: [1.25003, 1.75, 0, 0, 1],
+ 8968: [1.25003, 1.75, 0, 0, 0.63889],
+ 8969: [1.25003, 1.75, 0, 0, 0.63889],
+ 8970: [1.25003, 1.75, 0, 0, 0.63889],
+ 8971: [1.25003, 1.75, 0, 0, 0.63889],
+ 9115: [0.64502, 1.155, 0, 0, 0.875],
+ 9116: [1e-5, 0.6, 0, 0, 0.875],
+ 9117: [0.64502, 1.155, 0, 0, 0.875],
+ 9118: [0.64502, 1.155, 0, 0, 0.875],
+ 9119: [1e-5, 0.6, 0, 0, 0.875],
+ 9120: [0.64502, 1.155, 0, 0, 0.875],
+ 9121: [0.64502, 1.155, 0, 0, 0.66667],
+ 9122: [-99e-5, 0.601, 0, 0, 0.66667],
+ 9123: [0.64502, 1.155, 0, 0, 0.66667],
+ 9124: [0.64502, 1.155, 0, 0, 0.66667],
+ 9125: [-99e-5, 0.601, 0, 0, 0.66667],
+ 9126: [0.64502, 1.155, 0, 0, 0.66667],
+ 9127: [1e-5, 0.9, 0, 0, 0.88889],
+ 9128: [0.65002, 1.15, 0, 0, 0.88889],
+ 9129: [0.90001, 0, 0, 0, 0.88889],
+ 9130: [0, 0.3, 0, 0, 0.88889],
+ 9131: [1e-5, 0.9, 0, 0, 0.88889],
+ 9132: [0.65002, 1.15, 0, 0, 0.88889],
+ 9133: [0.90001, 0, 0, 0, 0.88889],
+ 9143: [0.88502, 0.915, 0, 0, 1.05556],
+ 10216: [1.25003, 1.75, 0, 0, 0.80556],
+ 10217: [1.25003, 1.75, 0, 0, 0.80556],
+ 57344: [-0.00499, 0.605, 0, 0, 1.05556],
+ 57345: [-0.00499, 0.605, 0, 0, 1.05556],
+ 57680: [0, 0.12, 0, 0, 0.45],
+ 57681: [0, 0.12, 0, 0, 0.45],
+ 57682: [0, 0.12, 0, 0, 0.45],
+ 57683: [0, 0.12, 0, 0, 0.45],
+ },
+ "Typewriter-Regular": {
+ 32: [0, 0, 0, 0, 0.525],
+ 33: [0, 0.61111, 0, 0, 0.525],
+ 34: [0, 0.61111, 0, 0, 0.525],
+ 35: [0, 0.61111, 0, 0, 0.525],
+ 36: [0.08333, 0.69444, 0, 0, 0.525],
+ 37: [0.08333, 0.69444, 0, 0, 0.525],
+ 38: [0, 0.61111, 0, 0, 0.525],
+ 39: [0, 0.61111, 0, 0, 0.525],
+ 40: [0.08333, 0.69444, 0, 0, 0.525],
+ 41: [0.08333, 0.69444, 0, 0, 0.525],
+ 42: [0, 0.52083, 0, 0, 0.525],
+ 43: [-0.08056, 0.53055, 0, 0, 0.525],
+ 44: [0.13889, 0.125, 0, 0, 0.525],
+ 45: [-0.08056, 0.53055, 0, 0, 0.525],
+ 46: [0, 0.125, 0, 0, 0.525],
+ 47: [0.08333, 0.69444, 0, 0, 0.525],
+ 48: [0, 0.61111, 0, 0, 0.525],
+ 49: [0, 0.61111, 0, 0, 0.525],
+ 50: [0, 0.61111, 0, 0, 0.525],
+ 51: [0, 0.61111, 0, 0, 0.525],
+ 52: [0, 0.61111, 0, 0, 0.525],
+ 53: [0, 0.61111, 0, 0, 0.525],
+ 54: [0, 0.61111, 0, 0, 0.525],
+ 55: [0, 0.61111, 0, 0, 0.525],
+ 56: [0, 0.61111, 0, 0, 0.525],
+ 57: [0, 0.61111, 0, 0, 0.525],
+ 58: [0, 0.43056, 0, 0, 0.525],
+ 59: [0.13889, 0.43056, 0, 0, 0.525],
+ 60: [-0.05556, 0.55556, 0, 0, 0.525],
+ 61: [-0.19549, 0.41562, 0, 0, 0.525],
+ 62: [-0.05556, 0.55556, 0, 0, 0.525],
+ 63: [0, 0.61111, 0, 0, 0.525],
+ 64: [0, 0.61111, 0, 0, 0.525],
+ 65: [0, 0.61111, 0, 0, 0.525],
+ 66: [0, 0.61111, 0, 0, 0.525],
+ 67: [0, 0.61111, 0, 0, 0.525],
+ 68: [0, 0.61111, 0, 0, 0.525],
+ 69: [0, 0.61111, 0, 0, 0.525],
+ 70: [0, 0.61111, 0, 0, 0.525],
+ 71: [0, 0.61111, 0, 0, 0.525],
+ 72: [0, 0.61111, 0, 0, 0.525],
+ 73: [0, 0.61111, 0, 0, 0.525],
+ 74: [0, 0.61111, 0, 0, 0.525],
+ 75: [0, 0.61111, 0, 0, 0.525],
+ 76: [0, 0.61111, 0, 0, 0.525],
+ 77: [0, 0.61111, 0, 0, 0.525],
+ 78: [0, 0.61111, 0, 0, 0.525],
+ 79: [0, 0.61111, 0, 0, 0.525],
+ 80: [0, 0.61111, 0, 0, 0.525],
+ 81: [0.13889, 0.61111, 0, 0, 0.525],
+ 82: [0, 0.61111, 0, 0, 0.525],
+ 83: [0, 0.61111, 0, 0, 0.525],
+ 84: [0, 0.61111, 0, 0, 0.525],
+ 85: [0, 0.61111, 0, 0, 0.525],
+ 86: [0, 0.61111, 0, 0, 0.525],
+ 87: [0, 0.61111, 0, 0, 0.525],
+ 88: [0, 0.61111, 0, 0, 0.525],
+ 89: [0, 0.61111, 0, 0, 0.525],
+ 90: [0, 0.61111, 0, 0, 0.525],
+ 91: [0.08333, 0.69444, 0, 0, 0.525],
+ 92: [0.08333, 0.69444, 0, 0, 0.525],
+ 93: [0.08333, 0.69444, 0, 0, 0.525],
+ 94: [0, 0.61111, 0, 0, 0.525],
+ 95: [0.09514, 0, 0, 0, 0.525],
+ 96: [0, 0.61111, 0, 0, 0.525],
+ 97: [0, 0.43056, 0, 0, 0.525],
+ 98: [0, 0.61111, 0, 0, 0.525],
+ 99: [0, 0.43056, 0, 0, 0.525],
+ 100: [0, 0.61111, 0, 0, 0.525],
+ 101: [0, 0.43056, 0, 0, 0.525],
+ 102: [0, 0.61111, 0, 0, 0.525],
+ 103: [0.22222, 0.43056, 0, 0, 0.525],
+ 104: [0, 0.61111, 0, 0, 0.525],
+ 105: [0, 0.61111, 0, 0, 0.525],
+ 106: [0.22222, 0.61111, 0, 0, 0.525],
+ 107: [0, 0.61111, 0, 0, 0.525],
+ 108: [0, 0.61111, 0, 0, 0.525],
+ 109: [0, 0.43056, 0, 0, 0.525],
+ 110: [0, 0.43056, 0, 0, 0.525],
+ 111: [0, 0.43056, 0, 0, 0.525],
+ 112: [0.22222, 0.43056, 0, 0, 0.525],
+ 113: [0.22222, 0.43056, 0, 0, 0.525],
+ 114: [0, 0.43056, 0, 0, 0.525],
+ 115: [0, 0.43056, 0, 0, 0.525],
+ 116: [0, 0.55358, 0, 0, 0.525],
+ 117: [0, 0.43056, 0, 0, 0.525],
+ 118: [0, 0.43056, 0, 0, 0.525],
+ 119: [0, 0.43056, 0, 0, 0.525],
+ 120: [0, 0.43056, 0, 0, 0.525],
+ 121: [0.22222, 0.43056, 0, 0, 0.525],
+ 122: [0, 0.43056, 0, 0, 0.525],
+ 123: [0.08333, 0.69444, 0, 0, 0.525],
+ 124: [0.08333, 0.69444, 0, 0, 0.525],
+ 125: [0.08333, 0.69444, 0, 0, 0.525],
+ 126: [0, 0.61111, 0, 0, 0.525],
+ 127: [0, 0.61111, 0, 0, 0.525],
+ 160: [0, 0, 0, 0, 0.525],
+ 176: [0, 0.61111, 0, 0, 0.525],
+ 184: [0.19445, 0, 0, 0, 0.525],
+ 305: [0, 0.43056, 0, 0, 0.525],
+ 567: [0.22222, 0.43056, 0, 0, 0.525],
+ 711: [0, 0.56597, 0, 0, 0.525],
+ 713: [0, 0.56555, 0, 0, 0.525],
+ 714: [0, 0.61111, 0, 0, 0.525],
+ 715: [0, 0.61111, 0, 0, 0.525],
+ 728: [0, 0.61111, 0, 0, 0.525],
+ 730: [0, 0.61111, 0, 0, 0.525],
+ 770: [0, 0.61111, 0, 0, 0.525],
+ 771: [0, 0.61111, 0, 0, 0.525],
+ 776: [0, 0.61111, 0, 0, 0.525],
+ 915: [0, 0.61111, 0, 0, 0.525],
+ 916: [0, 0.61111, 0, 0, 0.525],
+ 920: [0, 0.61111, 0, 0, 0.525],
+ 923: [0, 0.61111, 0, 0, 0.525],
+ 926: [0, 0.61111, 0, 0, 0.525],
+ 928: [0, 0.61111, 0, 0, 0.525],
+ 931: [0, 0.61111, 0, 0, 0.525],
+ 933: [0, 0.61111, 0, 0, 0.525],
+ 934: [0, 0.61111, 0, 0, 0.525],
+ 936: [0, 0.61111, 0, 0, 0.525],
+ 937: [0, 0.61111, 0, 0, 0.525],
+ 8216: [0, 0.61111, 0, 0, 0.525],
+ 8217: [0, 0.61111, 0, 0, 0.525],
+ 8242: [0, 0.61111, 0, 0, 0.525],
+ 9251: [0.11111, 0.21944, 0, 0, 0.525],
+ },
+ },
+ R = {
+ slant: [0.25, 0.25, 0.25],
+ space: [0, 0, 0],
+ stretch: [0, 0, 0],
+ shrink: [0, 0, 0],
+ xHeight: [0.431, 0.431, 0.431],
+ quad: [1, 1.171, 1.472],
+ extraSpace: [0, 0, 0],
+ num1: [0.677, 0.732, 0.925],
+ num2: [0.394, 0.384, 0.387],
+ num3: [0.444, 0.471, 0.504],
+ denom1: [0.686, 0.752, 1.025],
+ denom2: [0.345, 0.344, 0.532],
+ sup1: [0.413, 0.503, 0.504],
+ sup2: [0.363, 0.431, 0.404],
+ sup3: [0.289, 0.286, 0.294],
+ sub1: [0.15, 0.143, 0.2],
+ sub2: [0.247, 0.286, 0.4],
+ supDrop: [0.386, 0.353, 0.494],
+ subDrop: [0.05, 0.071, 0.1],
+ delim1: [2.39, 1.7, 1.98],
+ delim2: [1.01, 1.157, 1.42],
+ axisHeight: [0.25, 0.25, 0.25],
+ defaultRuleThickness: [0.04, 0.049, 0.049],
+ bigOpSpacing1: [0.111, 0.111, 0.111],
+ bigOpSpacing2: [0.166, 0.166, 0.166],
+ bigOpSpacing3: [0.2, 0.2, 0.2],
+ bigOpSpacing4: [0.6, 0.611, 0.611],
+ bigOpSpacing5: [0.1, 0.143, 0.143],
+ sqrtRuleThickness: [0.04, 0.04, 0.04],
+ ptPerEm: [10, 10, 10],
+ doubleRuleSep: [0.2, 0.2, 0.2],
+ arrayRuleWidth: [0.04, 0.04, 0.04],
+ fboxsep: [0.3, 0.3, 0.3],
+ fboxrule: [0.04, 0.04, 0.04],
+ },
+ H = {
+ Å: "A",
+ Ð: "D",
+ Þ: "o",
+ å: "a",
+ ð: "d",
+ þ: "o",
+ А: "A",
+ Б: "B",
+ В: "B",
+ Г: "F",
+ Д: "A",
+ Е: "E",
+ Ж: "K",
+ З: "3",
+ И: "N",
+ Й: "N",
+ К: "K",
+ Л: "N",
+ М: "M",
+ Н: "H",
+ О: "O",
+ П: "N",
+ Р: "P",
+ С: "C",
+ Т: "T",
+ У: "y",
+ Ф: "O",
+ Х: "X",
+ Ц: "U",
+ Ч: "h",
+ Ш: "W",
+ Щ: "W",
+ Ъ: "B",
+ Ы: "X",
+ Ь: "B",
+ Э: "3",
+ Ю: "X",
+ Я: "R",
+ а: "a",
+ б: "b",
+ в: "a",
+ г: "r",
+ д: "y",
+ е: "e",
+ ж: "m",
+ з: "e",
+ и: "n",
+ й: "n",
+ к: "n",
+ л: "n",
+ м: "m",
+ н: "n",
+ о: "o",
+ п: "n",
+ р: "p",
+ с: "c",
+ т: "o",
+ у: "y",
+ ф: "b",
+ х: "x",
+ ц: "n",
+ ч: "n",
+ ш: "w",
+ щ: "w",
+ ъ: "a",
+ ы: "m",
+ ь: "a",
+ э: "e",
+ ю: "m",
+ я: "r",
+ };
+ function O(e, t, r) {
+ if (!I[t]) throw new Error("Font metrics not found for font: " + t + ".");
+ var n = e.charCodeAt(0),
+ a = I[t][n];
+ if ((!a && e[0] in H && ((n = H[e[0]].charCodeAt(0)), (a = I[t][n])), a || "text" !== r || (N(n) && (a = I[t][77])), a))
+ return { depth: a[0], height: a[1], italic: a[2], skew: a[3], width: a[4] };
+ }
+ var E = {},
+ L = [
+ [1, 1, 1],
+ [2, 1, 1],
+ [3, 1, 1],
+ [4, 2, 1],
+ [5, 2, 1],
+ [6, 3, 1],
+ [7, 4, 2],
+ [8, 6, 3],
+ [9, 7, 6],
+ [10, 8, 7],
+ [11, 10, 9],
+ ],
+ D = [0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.44, 1.728, 2.074, 2.488],
+ P = function (e, t) {
+ return t.size < 2 ? e : L[e - 1][t.size - 1];
+ },
+ V = (function () {
+ function e(t) {
+ (this.style = void 0),
+ (this.color = void 0),
+ (this.size = void 0),
+ (this.textSize = void 0),
+ (this.phantom = void 0),
+ (this.font = void 0),
+ (this.fontFamily = void 0),
+ (this.fontWeight = void 0),
+ (this.fontShape = void 0),
+ (this.sizeMultiplier = void 0),
+ (this.maxSize = void 0),
+ (this.minRuleThickness = void 0),
+ (this._fontMetrics = void 0),
+ (this.style = t.style),
+ (this.color = t.color),
+ (this.size = t.size || e.BASESIZE),
+ (this.textSize = t.textSize || this.size),
+ (this.phantom = !!t.phantom),
+ (this.font = t.font || ""),
+ (this.fontFamily = t.fontFamily || ""),
+ (this.fontWeight = t.fontWeight || ""),
+ (this.fontShape = t.fontShape || ""),
+ (this.sizeMultiplier = D[this.size - 1]),
+ (this.maxSize = t.maxSize),
+ (this.minRuleThickness = t.minRuleThickness),
+ (this._fontMetrics = void 0);
+ }
+ var t = e.prototype;
+ return (
+ (t.extend = function (t) {
+ var r = {
+ style: this.style,
+ size: this.size,
+ textSize: this.textSize,
+ color: this.color,
+ phantom: this.phantom,
+ font: this.font,
+ fontFamily: this.fontFamily,
+ fontWeight: this.fontWeight,
+ fontShape: this.fontShape,
+ maxSize: this.maxSize,
+ minRuleThickness: this.minRuleThickness,
+ };
+ for (var n in t) t.hasOwnProperty(n) && (r[n] = t[n]);
+ return new e(r);
+ }),
+ (t.havingStyle = function (e) {
+ return this.style === e ? this : this.extend({ style: e, size: P(this.textSize, e) });
+ }),
+ (t.havingCrampedStyle = function () {
+ return this.havingStyle(this.style.cramp());
+ }),
+ (t.havingSize = function (e) {
+ return this.size === e && this.textSize === e
+ ? this
+ : this.extend({
+ style: this.style.text(),
+ size: e,
+ textSize: e,
+ sizeMultiplier: D[e - 1],
+ });
+ }),
+ (t.havingBaseStyle = function (t) {
+ t = t || this.style.text();
+ var r = P(e.BASESIZE, t);
+ return this.size === r && this.textSize === e.BASESIZE && this.style === t ? this : this.extend({ style: t, size: r });
+ }),
+ (t.havingBaseSizing = function () {
+ var e;
+ switch (this.style.id) {
+ case 4:
+ case 5:
+ e = 3;
+ break;
+ case 6:
+ case 7:
+ e = 1;
+ break;
+ default:
+ e = 6;
+ }
+ return this.extend({ style: this.style.text(), size: e });
+ }),
+ (t.withColor = function (e) {
+ return this.extend({ color: e });
+ }),
+ (t.withPhantom = function () {
+ return this.extend({ phantom: !0 });
+ }),
+ (t.withFont = function (e) {
+ return this.extend({ font: e });
+ }),
+ (t.withTextFontFamily = function (e) {
+ return this.extend({ fontFamily: e, font: "" });
+ }),
+ (t.withTextFontWeight = function (e) {
+ return this.extend({ fontWeight: e, font: "" });
+ }),
+ (t.withTextFontShape = function (e) {
+ return this.extend({ fontShape: e, font: "" });
+ }),
+ (t.sizingClasses = function (e) {
+ return e.size !== this.size ? ["sizing", "reset-size" + e.size, "size" + this.size] : [];
+ }),
+ (t.baseSizingClasses = function () {
+ return this.size !== e.BASESIZE ? ["sizing", "reset-size" + this.size, "size" + e.BASESIZE] : [];
+ }),
+ (t.fontMetrics = function () {
+ return (
+ this._fontMetrics ||
+ (this._fontMetrics = (function (e) {
+ var t;
+ if (!E[(t = e >= 5 ? 0 : e >= 3 ? 1 : 2)]) {
+ var r = (E[t] = { cssEmPerMu: R.quad[t] / 18 });
+ for (var n in R) R.hasOwnProperty(n) && (r[n] = R[n][t]);
+ }
+ return E[t];
+ })(this.size)),
+ this._fontMetrics
+ );
+ }),
+ (t.getColor = function () {
+ return this.phantom ? "transparent" : this.color;
+ }),
+ e
+ );
+ })();
+ V.BASESIZE = 6;
+ var F = V,
+ G = {
+ pt: 1,
+ mm: 7227 / 2540,
+ cm: 7227 / 254,
+ in: 72.27,
+ bp: 1.00375,
+ pc: 12,
+ dd: 1238 / 1157,
+ cc: 14856 / 1157,
+ nd: 685 / 642,
+ nc: 1370 / 107,
+ sp: 1 / 65536,
+ px: 1.00375,
+ },
+ U = { ex: !0, em: !0, mu: !0 },
+ Y = function (e) {
+ return "string" != typeof e && (e = e.unit), e in G || e in U || "ex" === e;
+ },
+ X = function (e, t) {
+ var r;
+ if (e.unit in G) r = G[e.unit] / t.fontMetrics().ptPerEm / t.sizeMultiplier;
+ else if ("mu" === e.unit) r = t.fontMetrics().cssEmPerMu;
+ else {
+ var a;
+ if (((a = t.style.isTight() ? t.havingStyle(t.style.text()) : t), "ex" === e.unit)) r = a.fontMetrics().xHeight;
+ else {
+ if ("em" !== e.unit) throw new n("Invalid unit: '" + e.unit + "'");
+ r = a.fontMetrics().quad;
+ }
+ a !== t && (r *= a.sizeMultiplier / t.sizeMultiplier);
+ }
+ return Math.min(e.number * r, t.maxSize);
+ },
+ W = function (e) {
+ return +e.toFixed(4) + "em";
+ },
+ _ = function (e) {
+ return e
+ .filter(function (e) {
+ return e;
+ })
+ .join(" ");
+ },
+ j = function (e, t, r) {
+ if (
+ ((this.classes = e || []),
+ (this.attributes = {}),
+ (this.height = 0),
+ (this.depth = 0),
+ (this.maxFontSize = 0),
+ (this.style = r || {}),
+ t)
+ ) {
+ t.style.isTight() && this.classes.push("mtight");
+ var n = t.getColor();
+ n && (this.style.color = n);
+ }
+ },
+ $ = function (e) {
+ var t = document.createElement(e);
+ for (var r in ((t.className = _(this.classes)), this.style)) this.style.hasOwnProperty(r) && (t.style[r] = this.style[r]);
+ for (var n in this.attributes) this.attributes.hasOwnProperty(n) && t.setAttribute(n, this.attributes[n]);
+ for (var a = 0; a < this.children.length; a++) t.appendChild(this.children[a].toNode());
+ return t;
+ },
+ Z = function (e) {
+ var t = "<" + e;
+ this.classes.length && (t += ' class="' + c(_(this.classes)) + '"');
+ var r = "";
+ for (var n in this.style) this.style.hasOwnProperty(n) && (r += m(n) + ":" + this.style[n] + ";");
+ for (var a in (r && (t += ' style="' + c(r) + '"'), this.attributes))
+ this.attributes.hasOwnProperty(a) && (t += " " + a + '="' + c(this.attributes[a]) + '"');
+ t += ">";
+ for (var i = 0; i < this.children.length; i++) t += this.children[i].toMarkup();
+ return t + "" + e + ">";
+ },
+ K = (function () {
+ function e(e, t, r, n) {
+ (this.children = void 0),
+ (this.attributes = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.width = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ j.call(this, e, r, n),
+ (this.children = t || []);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ return $.call(this, "span");
+ }),
+ (t.toMarkup = function () {
+ return Z.call(this, "span");
+ }),
+ e
+ );
+ })(),
+ J = (function () {
+ function e(e, t, r, n) {
+ (this.children = void 0),
+ (this.attributes = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ j.call(this, t, n),
+ (this.children = r || []),
+ this.setAttribute("href", e);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ return $.call(this, "a");
+ }),
+ (t.toMarkup = function () {
+ return Z.call(this, "a");
+ }),
+ e
+ );
+ })(),
+ Q = (function () {
+ function e(e, t, r) {
+ (this.src = void 0),
+ (this.alt = void 0),
+ (this.classes = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.maxFontSize = void 0),
+ (this.style = void 0),
+ (this.alt = t),
+ (this.src = e),
+ (this.classes = ["mord"]),
+ (this.style = r);
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ var e = document.createElement("img");
+ for (var t in ((e.src = this.src), (e.alt = this.alt), (e.className = "mord"), this.style))
+ this.style.hasOwnProperty(t) && (e.style[t] = this.style[t]);
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = " ";
+ }),
+ e
+ );
+ })(),
+ ee = { î: "ı̂", ï: "ı̈", í: "ı́", ì: "ı̀" },
+ te = (function () {
+ function e(e, t, r, n, a, i, o, s) {
+ (this.text = void 0),
+ (this.height = void 0),
+ (this.depth = void 0),
+ (this.italic = void 0),
+ (this.skew = void 0),
+ (this.width = void 0),
+ (this.maxFontSize = void 0),
+ (this.classes = void 0),
+ (this.style = void 0),
+ (this.text = e),
+ (this.height = t || 0),
+ (this.depth = r || 0),
+ (this.italic = n || 0),
+ (this.skew = a || 0),
+ (this.width = i || 0),
+ (this.classes = o || []),
+ (this.style = s || {}),
+ (this.maxFontSize = 0);
+ var l = (function (e) {
+ for (var t = 0; t < T.length; t++)
+ for (var r = T[t], n = 0; n < r.blocks.length; n++) {
+ var a = r.blocks[n];
+ if (e >= a[0] && e <= a[1]) return r.name;
+ }
+ return null;
+ })(this.text.charCodeAt(0));
+ l && this.classes.push(l + "_fallback"), /[îïíì]/.test(this.text) && (this.text = ee[this.text]);
+ }
+ var t = e.prototype;
+ return (
+ (t.hasClass = function (e) {
+ return l(this.classes, e);
+ }),
+ (t.toNode = function () {
+ var e = document.createTextNode(this.text),
+ t = null;
+ for (var r in (this.italic > 0 && ((t = document.createElement("span")).style.marginRight = W(this.italic)),
+ this.classes.length > 0 && ((t = t || document.createElement("span")).className = _(this.classes)),
+ this.style))
+ this.style.hasOwnProperty(r) && ((t = t || document.createElement("span")).style[r] = this.style[r]);
+ return t ? (t.appendChild(e), t) : e;
+ }),
+ (t.toMarkup = function () {
+ var e = !1,
+ t = " 0 && (r += "margin-right:" + this.italic + "em;"), this.style))
+ this.style.hasOwnProperty(n) && (r += m(n) + ":" + this.style[n] + ";");
+ r && ((e = !0), (t += ' style="' + c(r) + '"'));
+ var a = c(this.text);
+ return e ? ((t += ">"), (t += a), (t += " ")) : a;
+ }),
+ e
+ );
+ })(),
+ re = (function () {
+ function e(e, t) {
+ (this.children = void 0), (this.attributes = void 0), (this.children = e || []), (this.attributes = t || {});
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ for (var r = 0; r < this.children.length; r++) e.appendChild(this.children[r].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = '";
+ for (var r = 0; r < this.children.length; r++) e += this.children[r].toMarkup();
+ return e + " ";
+ }),
+ e
+ );
+ })(),
+ ne = (function () {
+ function e(e, t) {
+ (this.pathName = void 0), (this.alternate = void 0), (this.pathName = e), (this.alternate = t);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "path");
+ return this.alternate ? e.setAttribute("d", this.alternate) : e.setAttribute("d", C[this.pathName]), e;
+ }),
+ (t.toMarkup = function () {
+ return this.alternate ? " " : " ";
+ }),
+ e
+ );
+ })(),
+ ae = (function () {
+ function e(e) {
+ (this.attributes = void 0), (this.attributes = e || {});
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/2000/svg", "line");
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = " ";
+ }),
+ e
+ );
+ })();
+ function ie(e) {
+ if (e instanceof te) return e;
+ throw new Error("Expected symbolNode but got " + String(e) + ".");
+ }
+ var oe = { bin: 1, close: 1, inner: 1, open: 1, punct: 1, rel: 1 },
+ se = { "accent-token": 1, mathord: 1, "op-token": 1, spacing: 1, textord: 1 },
+ le = { math: {}, text: {} },
+ he = le;
+ function ce(e, t, r, n, a, i) {
+ (le[e][a] = { font: t, group: r, replace: n }), i && n && (le[e][n] = le[e][a]);
+ }
+ var me = "math",
+ ue = "text",
+ pe = "main",
+ de = "ams",
+ fe = "accent-token",
+ ge = "bin",
+ ve = "close",
+ ye = "inner",
+ be = "mathord",
+ xe = "op-token",
+ we = "open",
+ ke = "punct",
+ Se = "rel",
+ Me = "spacing",
+ ze = "textord";
+ ce(me, pe, Se, "≡", "\\equiv", !0),
+ ce(me, pe, Se, "≺", "\\prec", !0),
+ ce(me, pe, Se, "≻", "\\succ", !0),
+ ce(me, pe, Se, "∼", "\\sim", !0),
+ ce(me, pe, Se, "⊥", "\\perp"),
+ ce(me, pe, Se, "⪯", "\\preceq", !0),
+ ce(me, pe, Se, "⪰", "\\succeq", !0),
+ ce(me, pe, Se, "≃", "\\simeq", !0),
+ ce(me, pe, Se, "∣", "\\mid", !0),
+ ce(me, pe, Se, "≪", "\\ll", !0),
+ ce(me, pe, Se, "≫", "\\gg", !0),
+ ce(me, pe, Se, "≍", "\\asymp", !0),
+ ce(me, pe, Se, "∥", "\\parallel"),
+ ce(me, pe, Se, "⋈", "\\bowtie", !0),
+ ce(me, pe, Se, "⌣", "\\smile", !0),
+ ce(me, pe, Se, "⊑", "\\sqsubseteq", !0),
+ ce(me, pe, Se, "⊒", "\\sqsupseteq", !0),
+ ce(me, pe, Se, "≐", "\\doteq", !0),
+ ce(me, pe, Se, "⌢", "\\frown", !0),
+ ce(me, pe, Se, "∋", "\\ni", !0),
+ ce(me, pe, Se, "∝", "\\propto", !0),
+ ce(me, pe, Se, "⊢", "\\vdash", !0),
+ ce(me, pe, Se, "⊣", "\\dashv", !0),
+ ce(me, pe, Se, "∋", "\\owns"),
+ ce(me, pe, ke, ".", "\\ldotp"),
+ ce(me, pe, ke, "⋅", "\\cdotp"),
+ ce(me, pe, ze, "#", "\\#"),
+ ce(ue, pe, ze, "#", "\\#"),
+ ce(me, pe, ze, "&", "\\&"),
+ ce(ue, pe, ze, "&", "\\&"),
+ ce(me, pe, ze, "ℵ", "\\aleph", !0),
+ ce(me, pe, ze, "∀", "\\forall", !0),
+ ce(me, pe, ze, "ℏ", "\\hbar", !0),
+ ce(me, pe, ze, "∃", "\\exists", !0),
+ ce(me, pe, ze, "∇", "\\nabla", !0),
+ ce(me, pe, ze, "♭", "\\flat", !0),
+ ce(me, pe, ze, "ℓ", "\\ell", !0),
+ ce(me, pe, ze, "♮", "\\natural", !0),
+ ce(me, pe, ze, "♣", "\\clubsuit", !0),
+ ce(me, pe, ze, "℘", "\\wp", !0),
+ ce(me, pe, ze, "♯", "\\sharp", !0),
+ ce(me, pe, ze, "♢", "\\diamondsuit", !0),
+ ce(me, pe, ze, "ℜ", "\\Re", !0),
+ ce(me, pe, ze, "♡", "\\heartsuit", !0),
+ ce(me, pe, ze, "ℑ", "\\Im", !0),
+ ce(me, pe, ze, "♠", "\\spadesuit", !0),
+ ce(me, pe, ze, "§", "\\S", !0),
+ ce(ue, pe, ze, "§", "\\S"),
+ ce(me, pe, ze, "¶", "\\P", !0),
+ ce(ue, pe, ze, "¶", "\\P"),
+ ce(me, pe, ze, "†", "\\dag"),
+ ce(ue, pe, ze, "†", "\\dag"),
+ ce(ue, pe, ze, "†", "\\textdagger"),
+ ce(me, pe, ze, "‡", "\\ddag"),
+ ce(ue, pe, ze, "‡", "\\ddag"),
+ ce(ue, pe, ze, "‡", "\\textdaggerdbl"),
+ ce(me, pe, ve, "⎱", "\\rmoustache", !0),
+ ce(me, pe, we, "⎰", "\\lmoustache", !0),
+ ce(me, pe, ve, "⟯", "\\rgroup", !0),
+ ce(me, pe, we, "⟮", "\\lgroup", !0),
+ ce(me, pe, ge, "∓", "\\mp", !0),
+ ce(me, pe, ge, "⊖", "\\ominus", !0),
+ ce(me, pe, ge, "⊎", "\\uplus", !0),
+ ce(me, pe, ge, "⊓", "\\sqcap", !0),
+ ce(me, pe, ge, "∗", "\\ast"),
+ ce(me, pe, ge, "⊔", "\\sqcup", !0),
+ ce(me, pe, ge, "◯", "\\bigcirc", !0),
+ ce(me, pe, ge, "∙", "\\bullet", !0),
+ ce(me, pe, ge, "‡", "\\ddagger"),
+ ce(me, pe, ge, "≀", "\\wr", !0),
+ ce(me, pe, ge, "⨿", "\\amalg"),
+ ce(me, pe, ge, "&", "\\And"),
+ ce(me, pe, Se, "⟵", "\\longleftarrow", !0),
+ ce(me, pe, Se, "⇐", "\\Leftarrow", !0),
+ ce(me, pe, Se, "⟸", "\\Longleftarrow", !0),
+ ce(me, pe, Se, "⟶", "\\longrightarrow", !0),
+ ce(me, pe, Se, "⇒", "\\Rightarrow", !0),
+ ce(me, pe, Se, "⟹", "\\Longrightarrow", !0),
+ ce(me, pe, Se, "↔", "\\leftrightarrow", !0),
+ ce(me, pe, Se, "⟷", "\\longleftrightarrow", !0),
+ ce(me, pe, Se, "⇔", "\\Leftrightarrow", !0),
+ ce(me, pe, Se, "⟺", "\\Longleftrightarrow", !0),
+ ce(me, pe, Se, "↦", "\\mapsto", !0),
+ ce(me, pe, Se, "⟼", "\\longmapsto", !0),
+ ce(me, pe, Se, "↗", "\\nearrow", !0),
+ ce(me, pe, Se, "↩", "\\hookleftarrow", !0),
+ ce(me, pe, Se, "↪", "\\hookrightarrow", !0),
+ ce(me, pe, Se, "↘", "\\searrow", !0),
+ ce(me, pe, Se, "↼", "\\leftharpoonup", !0),
+ ce(me, pe, Se, "⇀", "\\rightharpoonup", !0),
+ ce(me, pe, Se, "↙", "\\swarrow", !0),
+ ce(me, pe, Se, "↽", "\\leftharpoondown", !0),
+ ce(me, pe, Se, "⇁", "\\rightharpoondown", !0),
+ ce(me, pe, Se, "↖", "\\nwarrow", !0),
+ ce(me, pe, Se, "⇌", "\\rightleftharpoons", !0),
+ ce(me, de, Se, "≮", "\\nless", !0),
+ ce(me, de, Se, "", "\\@nleqslant"),
+ ce(me, de, Se, "", "\\@nleqq"),
+ ce(me, de, Se, "⪇", "\\lneq", !0),
+ ce(me, de, Se, "≨", "\\lneqq", !0),
+ ce(me, de, Se, "", "\\@lvertneqq"),
+ ce(me, de, Se, "⋦", "\\lnsim", !0),
+ ce(me, de, Se, "⪉", "\\lnapprox", !0),
+ ce(me, de, Se, "⊀", "\\nprec", !0),
+ ce(me, de, Se, "⋠", "\\npreceq", !0),
+ ce(me, de, Se, "⋨", "\\precnsim", !0),
+ ce(me, de, Se, "⪹", "\\precnapprox", !0),
+ ce(me, de, Se, "≁", "\\nsim", !0),
+ ce(me, de, Se, "", "\\@nshortmid"),
+ ce(me, de, Se, "∤", "\\nmid", !0),
+ ce(me, de, Se, "⊬", "\\nvdash", !0),
+ ce(me, de, Se, "⊭", "\\nvDash", !0),
+ ce(me, de, Se, "⋪", "\\ntriangleleft"),
+ ce(me, de, Se, "⋬", "\\ntrianglelefteq", !0),
+ ce(me, de, Se, "⊊", "\\subsetneq", !0),
+ ce(me, de, Se, "", "\\@varsubsetneq"),
+ ce(me, de, Se, "⫋", "\\subsetneqq", !0),
+ ce(me, de, Se, "", "\\@varsubsetneqq"),
+ ce(me, de, Se, "≯", "\\ngtr", !0),
+ ce(me, de, Se, "", "\\@ngeqslant"),
+ ce(me, de, Se, "", "\\@ngeqq"),
+ ce(me, de, Se, "⪈", "\\gneq", !0),
+ ce(me, de, Se, "≩", "\\gneqq", !0),
+ ce(me, de, Se, "", "\\@gvertneqq"),
+ ce(me, de, Se, "⋧", "\\gnsim", !0),
+ ce(me, de, Se, "⪊", "\\gnapprox", !0),
+ ce(me, de, Se, "⊁", "\\nsucc", !0),
+ ce(me, de, Se, "⋡", "\\nsucceq", !0),
+ ce(me, de, Se, "⋩", "\\succnsim", !0),
+ ce(me, de, Se, "⪺", "\\succnapprox", !0),
+ ce(me, de, Se, "≆", "\\ncong", !0),
+ ce(me, de, Se, "", "\\@nshortparallel"),
+ ce(me, de, Se, "∦", "\\nparallel", !0),
+ ce(me, de, Se, "⊯", "\\nVDash", !0),
+ ce(me, de, Se, "⋫", "\\ntriangleright"),
+ ce(me, de, Se, "⋭", "\\ntrianglerighteq", !0),
+ ce(me, de, Se, "", "\\@nsupseteqq"),
+ ce(me, de, Se, "⊋", "\\supsetneq", !0),
+ ce(me, de, Se, "", "\\@varsupsetneq"),
+ ce(me, de, Se, "⫌", "\\supsetneqq", !0),
+ ce(me, de, Se, "", "\\@varsupsetneqq"),
+ ce(me, de, Se, "⊮", "\\nVdash", !0),
+ ce(me, de, Se, "⪵", "\\precneqq", !0),
+ ce(me, de, Se, "⪶", "\\succneqq", !0),
+ ce(me, de, Se, "", "\\@nsubseteqq"),
+ ce(me, de, ge, "⊴", "\\unlhd"),
+ ce(me, de, ge, "⊵", "\\unrhd"),
+ ce(me, de, Se, "↚", "\\nleftarrow", !0),
+ ce(me, de, Se, "↛", "\\nrightarrow", !0),
+ ce(me, de, Se, "⇍", "\\nLeftarrow", !0),
+ ce(me, de, Se, "⇏", "\\nRightarrow", !0),
+ ce(me, de, Se, "↮", "\\nleftrightarrow", !0),
+ ce(me, de, Se, "⇎", "\\nLeftrightarrow", !0),
+ ce(me, de, Se, "△", "\\vartriangle"),
+ ce(me, de, ze, "ℏ", "\\hslash"),
+ ce(me, de, ze, "▽", "\\triangledown"),
+ ce(me, de, ze, "◊", "\\lozenge"),
+ ce(me, de, ze, "Ⓢ", "\\circledS"),
+ ce(me, de, ze, "®", "\\circledR"),
+ ce(ue, de, ze, "®", "\\circledR"),
+ ce(me, de, ze, "∡", "\\measuredangle", !0),
+ ce(me, de, ze, "∄", "\\nexists"),
+ ce(me, de, ze, "℧", "\\mho"),
+ ce(me, de, ze, "Ⅎ", "\\Finv", !0),
+ ce(me, de, ze, "⅁", "\\Game", !0),
+ ce(me, de, ze, "‵", "\\backprime"),
+ ce(me, de, ze, "▲", "\\blacktriangle"),
+ ce(me, de, ze, "▼", "\\blacktriangledown"),
+ ce(me, de, ze, "■", "\\blacksquare"),
+ ce(me, de, ze, "⧫", "\\blacklozenge"),
+ ce(me, de, ze, "★", "\\bigstar"),
+ ce(me, de, ze, "∢", "\\sphericalangle", !0),
+ ce(me, de, ze, "∁", "\\complement", !0),
+ ce(me, de, ze, "ð", "\\eth", !0),
+ ce(ue, pe, ze, "ð", "ð"),
+ ce(me, de, ze, "╱", "\\diagup"),
+ ce(me, de, ze, "╲", "\\diagdown"),
+ ce(me, de, ze, "□", "\\square"),
+ ce(me, de, ze, "□", "\\Box"),
+ ce(me, de, ze, "◊", "\\Diamond"),
+ ce(me, de, ze, "¥", "\\yen", !0),
+ ce(ue, de, ze, "¥", "\\yen", !0),
+ ce(me, de, ze, "✓", "\\checkmark", !0),
+ ce(ue, de, ze, "✓", "\\checkmark"),
+ ce(me, de, ze, "ℶ", "\\beth", !0),
+ ce(me, de, ze, "ℸ", "\\daleth", !0),
+ ce(me, de, ze, "ℷ", "\\gimel", !0),
+ ce(me, de, ze, "ϝ", "\\digamma", !0),
+ ce(me, de, ze, "ϰ", "\\varkappa"),
+ ce(me, de, we, "┌", "\\@ulcorner", !0),
+ ce(me, de, ve, "┐", "\\@urcorner", !0),
+ ce(me, de, we, "└", "\\@llcorner", !0),
+ ce(me, de, ve, "┘", "\\@lrcorner", !0),
+ ce(me, de, Se, "≦", "\\leqq", !0),
+ ce(me, de, Se, "⩽", "\\leqslant", !0),
+ ce(me, de, Se, "⪕", "\\eqslantless", !0),
+ ce(me, de, Se, "≲", "\\lesssim", !0),
+ ce(me, de, Se, "⪅", "\\lessapprox", !0),
+ ce(me, de, Se, "≊", "\\approxeq", !0),
+ ce(me, de, ge, "⋖", "\\lessdot"),
+ ce(me, de, Se, "⋘", "\\lll", !0),
+ ce(me, de, Se, "≶", "\\lessgtr", !0),
+ ce(me, de, Se, "⋚", "\\lesseqgtr", !0),
+ ce(me, de, Se, "⪋", "\\lesseqqgtr", !0),
+ ce(me, de, Se, "≑", "\\doteqdot"),
+ ce(me, de, Se, "≓", "\\risingdotseq", !0),
+ ce(me, de, Se, "≒", "\\fallingdotseq", !0),
+ ce(me, de, Se, "∽", "\\backsim", !0),
+ ce(me, de, Se, "⋍", "\\backsimeq", !0),
+ ce(me, de, Se, "⫅", "\\subseteqq", !0),
+ ce(me, de, Se, "⋐", "\\Subset", !0),
+ ce(me, de, Se, "⊏", "\\sqsubset", !0),
+ ce(me, de, Se, "≼", "\\preccurlyeq", !0),
+ ce(me, de, Se, "⋞", "\\curlyeqprec", !0),
+ ce(me, de, Se, "≾", "\\precsim", !0),
+ ce(me, de, Se, "⪷", "\\precapprox", !0),
+ ce(me, de, Se, "⊲", "\\vartriangleleft"),
+ ce(me, de, Se, "⊴", "\\trianglelefteq"),
+ ce(me, de, Se, "⊨", "\\vDash", !0),
+ ce(me, de, Se, "⊪", "\\Vvdash", !0),
+ ce(me, de, Se, "⌣", "\\smallsmile"),
+ ce(me, de, Se, "⌢", "\\smallfrown"),
+ ce(me, de, Se, "≏", "\\bumpeq", !0),
+ ce(me, de, Se, "≎", "\\Bumpeq", !0),
+ ce(me, de, Se, "≧", "\\geqq", !0),
+ ce(me, de, Se, "⩾", "\\geqslant", !0),
+ ce(me, de, Se, "⪖", "\\eqslantgtr", !0),
+ ce(me, de, Se, "≳", "\\gtrsim", !0),
+ ce(me, de, Se, "⪆", "\\gtrapprox", !0),
+ ce(me, de, ge, "⋗", "\\gtrdot"),
+ ce(me, de, Se, "⋙", "\\ggg", !0),
+ ce(me, de, Se, "≷", "\\gtrless", !0),
+ ce(me, de, Se, "⋛", "\\gtreqless", !0),
+ ce(me, de, Se, "⪌", "\\gtreqqless", !0),
+ ce(me, de, Se, "≖", "\\eqcirc", !0),
+ ce(me, de, Se, "≗", "\\circeq", !0),
+ ce(me, de, Se, "≜", "\\triangleq", !0),
+ ce(me, de, Se, "∼", "\\thicksim"),
+ ce(me, de, Se, "≈", "\\thickapprox"),
+ ce(me, de, Se, "⫆", "\\supseteqq", !0),
+ ce(me, de, Se, "⋑", "\\Supset", !0),
+ ce(me, de, Se, "⊐", "\\sqsupset", !0),
+ ce(me, de, Se, "≽", "\\succcurlyeq", !0),
+ ce(me, de, Se, "⋟", "\\curlyeqsucc", !0),
+ ce(me, de, Se, "≿", "\\succsim", !0),
+ ce(me, de, Se, "⪸", "\\succapprox", !0),
+ ce(me, de, Se, "⊳", "\\vartriangleright"),
+ ce(me, de, Se, "⊵", "\\trianglerighteq"),
+ ce(me, de, Se, "⊩", "\\Vdash", !0),
+ ce(me, de, Se, "∣", "\\shortmid"),
+ ce(me, de, Se, "∥", "\\shortparallel"),
+ ce(me, de, Se, "≬", "\\between", !0),
+ ce(me, de, Se, "⋔", "\\pitchfork", !0),
+ ce(me, de, Se, "∝", "\\varpropto"),
+ ce(me, de, Se, "◀", "\\blacktriangleleft"),
+ ce(me, de, Se, "∴", "\\therefore", !0),
+ ce(me, de, Se, "∍", "\\backepsilon"),
+ ce(me, de, Se, "▶", "\\blacktriangleright"),
+ ce(me, de, Se, "∵", "\\because", !0),
+ ce(me, de, Se, "⋘", "\\llless"),
+ ce(me, de, Se, "⋙", "\\gggtr"),
+ ce(me, de, ge, "⊲", "\\lhd"),
+ ce(me, de, ge, "⊳", "\\rhd"),
+ ce(me, de, Se, "≂", "\\eqsim", !0),
+ ce(me, pe, Se, "⋈", "\\Join"),
+ ce(me, de, Se, "≑", "\\Doteq", !0),
+ ce(me, de, ge, "∔", "\\dotplus", !0),
+ ce(me, de, ge, "∖", "\\smallsetminus"),
+ ce(me, de, ge, "⋒", "\\Cap", !0),
+ ce(me, de, ge, "⋓", "\\Cup", !0),
+ ce(me, de, ge, "⩞", "\\doublebarwedge", !0),
+ ce(me, de, ge, "⊟", "\\boxminus", !0),
+ ce(me, de, ge, "⊞", "\\boxplus", !0),
+ ce(me, de, ge, "⋇", "\\divideontimes", !0),
+ ce(me, de, ge, "⋉", "\\ltimes", !0),
+ ce(me, de, ge, "⋊", "\\rtimes", !0),
+ ce(me, de, ge, "⋋", "\\leftthreetimes", !0),
+ ce(me, de, ge, "⋌", "\\rightthreetimes", !0),
+ ce(me, de, ge, "⋏", "\\curlywedge", !0),
+ ce(me, de, ge, "⋎", "\\curlyvee", !0),
+ ce(me, de, ge, "⊝", "\\circleddash", !0),
+ ce(me, de, ge, "⊛", "\\circledast", !0),
+ ce(me, de, ge, "⋅", "\\centerdot"),
+ ce(me, de, ge, "⊺", "\\intercal", !0),
+ ce(me, de, ge, "⋒", "\\doublecap"),
+ ce(me, de, ge, "⋓", "\\doublecup"),
+ ce(me, de, ge, "⊠", "\\boxtimes", !0),
+ ce(me, de, Se, "⇢", "\\dashrightarrow", !0),
+ ce(me, de, Se, "⇠", "\\dashleftarrow", !0),
+ ce(me, de, Se, "⇇", "\\leftleftarrows", !0),
+ ce(me, de, Se, "⇆", "\\leftrightarrows", !0),
+ ce(me, de, Se, "⇚", "\\Lleftarrow", !0),
+ ce(me, de, Se, "↞", "\\twoheadleftarrow", !0),
+ ce(me, de, Se, "↢", "\\leftarrowtail", !0),
+ ce(me, de, Se, "↫", "\\looparrowleft", !0),
+ ce(me, de, Se, "⇋", "\\leftrightharpoons", !0),
+ ce(me, de, Se, "↶", "\\curvearrowleft", !0),
+ ce(me, de, Se, "↺", "\\circlearrowleft", !0),
+ ce(me, de, Se, "↰", "\\Lsh", !0),
+ ce(me, de, Se, "⇈", "\\upuparrows", !0),
+ ce(me, de, Se, "↿", "\\upharpoonleft", !0),
+ ce(me, de, Se, "⇃", "\\downharpoonleft", !0),
+ ce(me, pe, Se, "⊶", "\\origof", !0),
+ ce(me, pe, Se, "⊷", "\\imageof", !0),
+ ce(me, de, Se, "⊸", "\\multimap", !0),
+ ce(me, de, Se, "↭", "\\leftrightsquigarrow", !0),
+ ce(me, de, Se, "⇉", "\\rightrightarrows", !0),
+ ce(me, de, Se, "⇄", "\\rightleftarrows", !0),
+ ce(me, de, Se, "↠", "\\twoheadrightarrow", !0),
+ ce(me, de, Se, "↣", "\\rightarrowtail", !0),
+ ce(me, de, Se, "↬", "\\looparrowright", !0),
+ ce(me, de, Se, "↷", "\\curvearrowright", !0),
+ ce(me, de, Se, "↻", "\\circlearrowright", !0),
+ ce(me, de, Se, "↱", "\\Rsh", !0),
+ ce(me, de, Se, "⇊", "\\downdownarrows", !0),
+ ce(me, de, Se, "↾", "\\upharpoonright", !0),
+ ce(me, de, Se, "⇂", "\\downharpoonright", !0),
+ ce(me, de, Se, "⇝", "\\rightsquigarrow", !0),
+ ce(me, de, Se, "⇝", "\\leadsto"),
+ ce(me, de, Se, "⇛", "\\Rrightarrow", !0),
+ ce(me, de, Se, "↾", "\\restriction"),
+ ce(me, pe, ze, "‘", "`"),
+ ce(me, pe, ze, "$", "\\$"),
+ ce(ue, pe, ze, "$", "\\$"),
+ ce(ue, pe, ze, "$", "\\textdollar"),
+ ce(me, pe, ze, "%", "\\%"),
+ ce(ue, pe, ze, "%", "\\%"),
+ ce(me, pe, ze, "_", "\\_"),
+ ce(ue, pe, ze, "_", "\\_"),
+ ce(ue, pe, ze, "_", "\\textunderscore"),
+ ce(me, pe, ze, "∠", "\\angle", !0),
+ ce(me, pe, ze, "∞", "\\infty", !0),
+ ce(me, pe, ze, "′", "\\prime"),
+ ce(me, pe, ze, "△", "\\triangle"),
+ ce(me, pe, ze, "Γ", "\\Gamma", !0),
+ ce(me, pe, ze, "Δ", "\\Delta", !0),
+ ce(me, pe, ze, "Θ", "\\Theta", !0),
+ ce(me, pe, ze, "Λ", "\\Lambda", !0),
+ ce(me, pe, ze, "Ξ", "\\Xi", !0),
+ ce(me, pe, ze, "Π", "\\Pi", !0),
+ ce(me, pe, ze, "Σ", "\\Sigma", !0),
+ ce(me, pe, ze, "Υ", "\\Upsilon", !0),
+ ce(me, pe, ze, "Φ", "\\Phi", !0),
+ ce(me, pe, ze, "Ψ", "\\Psi", !0),
+ ce(me, pe, ze, "Ω", "\\Omega", !0),
+ ce(me, pe, ze, "A", "Α"),
+ ce(me, pe, ze, "B", "Β"),
+ ce(me, pe, ze, "E", "Ε"),
+ ce(me, pe, ze, "Z", "Ζ"),
+ ce(me, pe, ze, "H", "Η"),
+ ce(me, pe, ze, "I", "Ι"),
+ ce(me, pe, ze, "K", "Κ"),
+ ce(me, pe, ze, "M", "Μ"),
+ ce(me, pe, ze, "N", "Ν"),
+ ce(me, pe, ze, "O", "Ο"),
+ ce(me, pe, ze, "P", "Ρ"),
+ ce(me, pe, ze, "T", "Τ"),
+ ce(me, pe, ze, "X", "Χ"),
+ ce(me, pe, ze, "¬", "\\neg", !0),
+ ce(me, pe, ze, "¬", "\\lnot"),
+ ce(me, pe, ze, "⊤", "\\top"),
+ ce(me, pe, ze, "⊥", "\\bot"),
+ ce(me, pe, ze, "∅", "\\emptyset"),
+ ce(me, de, ze, "∅", "\\varnothing"),
+ ce(me, pe, be, "α", "\\alpha", !0),
+ ce(me, pe, be, "β", "\\beta", !0),
+ ce(me, pe, be, "γ", "\\gamma", !0),
+ ce(me, pe, be, "δ", "\\delta", !0),
+ ce(me, pe, be, "ϵ", "\\epsilon", !0),
+ ce(me, pe, be, "ζ", "\\zeta", !0),
+ ce(me, pe, be, "η", "\\eta", !0),
+ ce(me, pe, be, "θ", "\\theta", !0),
+ ce(me, pe, be, "ι", "\\iota", !0),
+ ce(me, pe, be, "κ", "\\kappa", !0),
+ ce(me, pe, be, "λ", "\\lambda", !0),
+ ce(me, pe, be, "μ", "\\mu", !0),
+ ce(me, pe, be, "ν", "\\nu", !0),
+ ce(me, pe, be, "ξ", "\\xi", !0),
+ ce(me, pe, be, "ο", "\\omicron", !0),
+ ce(me, pe, be, "π", "\\pi", !0),
+ ce(me, pe, be, "ρ", "\\rho", !0),
+ ce(me, pe, be, "σ", "\\sigma", !0),
+ ce(me, pe, be, "τ", "\\tau", !0),
+ ce(me, pe, be, "υ", "\\upsilon", !0),
+ ce(me, pe, be, "ϕ", "\\phi", !0),
+ ce(me, pe, be, "χ", "\\chi", !0),
+ ce(me, pe, be, "ψ", "\\psi", !0),
+ ce(me, pe, be, "ω", "\\omega", !0),
+ ce(me, pe, be, "ε", "\\varepsilon", !0),
+ ce(me, pe, be, "ϑ", "\\vartheta", !0),
+ ce(me, pe, be, "ϖ", "\\varpi", !0),
+ ce(me, pe, be, "ϱ", "\\varrho", !0),
+ ce(me, pe, be, "ς", "\\varsigma", !0),
+ ce(me, pe, be, "φ", "\\varphi", !0),
+ ce(me, pe, ge, "∗", "*", !0),
+ ce(me, pe, ge, "+", "+"),
+ ce(me, pe, ge, "−", "-", !0),
+ ce(me, pe, ge, "⋅", "\\cdot", !0),
+ ce(me, pe, ge, "∘", "\\circ", !0),
+ ce(me, pe, ge, "÷", "\\div", !0),
+ ce(me, pe, ge, "±", "\\pm", !0),
+ ce(me, pe, ge, "×", "\\times", !0),
+ ce(me, pe, ge, "∩", "\\cap", !0),
+ ce(me, pe, ge, "∪", "\\cup", !0),
+ ce(me, pe, ge, "∖", "\\setminus", !0),
+ ce(me, pe, ge, "∧", "\\land"),
+ ce(me, pe, ge, "∨", "\\lor"),
+ ce(me, pe, ge, "∧", "\\wedge", !0),
+ ce(me, pe, ge, "∨", "\\vee", !0),
+ ce(me, pe, ze, "√", "\\surd"),
+ ce(me, pe, we, "⟨", "\\langle", !0),
+ ce(me, pe, we, "∣", "\\lvert"),
+ ce(me, pe, we, "∥", "\\lVert"),
+ ce(me, pe, ve, "?", "?"),
+ ce(me, pe, ve, "!", "!"),
+ ce(me, pe, ve, "⟩", "\\rangle", !0),
+ ce(me, pe, ve, "∣", "\\rvert"),
+ ce(me, pe, ve, "∥", "\\rVert"),
+ ce(me, pe, Se, "=", "="),
+ ce(me, pe, Se, ":", ":"),
+ ce(me, pe, Se, "≈", "\\approx", !0),
+ ce(me, pe, Se, "≅", "\\cong", !0),
+ ce(me, pe, Se, "≥", "\\ge"),
+ ce(me, pe, Se, "≥", "\\geq", !0),
+ ce(me, pe, Se, "←", "\\gets"),
+ ce(me, pe, Se, ">", "\\gt", !0),
+ ce(me, pe, Se, "∈", "\\in", !0),
+ ce(me, pe, Se, "", "\\@not"),
+ ce(me, pe, Se, "⊂", "\\subset", !0),
+ ce(me, pe, Se, "⊃", "\\supset", !0),
+ ce(me, pe, Se, "⊆", "\\subseteq", !0),
+ ce(me, pe, Se, "⊇", "\\supseteq", !0),
+ ce(me, de, Se, "⊈", "\\nsubseteq", !0),
+ ce(me, de, Se, "⊉", "\\nsupseteq", !0),
+ ce(me, pe, Se, "⊨", "\\models"),
+ ce(me, pe, Se, "←", "\\leftarrow", !0),
+ ce(me, pe, Se, "≤", "\\le"),
+ ce(me, pe, Se, "≤", "\\leq", !0),
+ ce(me, pe, Se, "<", "\\lt", !0),
+ ce(me, pe, Se, "→", "\\rightarrow", !0),
+ ce(me, pe, Se, "→", "\\to"),
+ ce(me, de, Se, "≱", "\\ngeq", !0),
+ ce(me, de, Se, "≰", "\\nleq", !0),
+ ce(me, pe, Me, " ", "\\ "),
+ ce(me, pe, Me, " ", "\\space"),
+ ce(me, pe, Me, " ", "\\nobreakspace"),
+ ce(ue, pe, Me, " ", "\\ "),
+ ce(ue, pe, Me, " ", " "),
+ ce(ue, pe, Me, " ", "\\space"),
+ ce(ue, pe, Me, " ", "\\nobreakspace"),
+ ce(me, pe, Me, null, "\\nobreak"),
+ ce(me, pe, Me, null, "\\allowbreak"),
+ ce(me, pe, ke, ",", ","),
+ ce(me, pe, ke, ";", ";"),
+ ce(me, de, ge, "⊼", "\\barwedge", !0),
+ ce(me, de, ge, "⊻", "\\veebar", !0),
+ ce(me, pe, ge, "⊙", "\\odot", !0),
+ ce(me, pe, ge, "⊕", "\\oplus", !0),
+ ce(me, pe, ge, "⊗", "\\otimes", !0),
+ ce(me, pe, ze, "∂", "\\partial", !0),
+ ce(me, pe, ge, "⊘", "\\oslash", !0),
+ ce(me, de, ge, "⊚", "\\circledcirc", !0),
+ ce(me, de, ge, "⊡", "\\boxdot", !0),
+ ce(me, pe, ge, "△", "\\bigtriangleup"),
+ ce(me, pe, ge, "▽", "\\bigtriangledown"),
+ ce(me, pe, ge, "†", "\\dagger"),
+ ce(me, pe, ge, "⋄", "\\diamond"),
+ ce(me, pe, ge, "⋆", "\\star"),
+ ce(me, pe, ge, "◃", "\\triangleleft"),
+ ce(me, pe, ge, "▹", "\\triangleright"),
+ ce(me, pe, we, "{", "\\{"),
+ ce(ue, pe, ze, "{", "\\{"),
+ ce(ue, pe, ze, "{", "\\textbraceleft"),
+ ce(me, pe, ve, "}", "\\}"),
+ ce(ue, pe, ze, "}", "\\}"),
+ ce(ue, pe, ze, "}", "\\textbraceright"),
+ ce(me, pe, we, "{", "\\lbrace"),
+ ce(me, pe, ve, "}", "\\rbrace"),
+ ce(me, pe, we, "[", "\\lbrack", !0),
+ ce(ue, pe, ze, "[", "\\lbrack", !0),
+ ce(me, pe, ve, "]", "\\rbrack", !0),
+ ce(ue, pe, ze, "]", "\\rbrack", !0),
+ ce(me, pe, we, "(", "\\lparen", !0),
+ ce(me, pe, ve, ")", "\\rparen", !0),
+ ce(ue, pe, ze, "<", "\\textless", !0),
+ ce(ue, pe, ze, ">", "\\textgreater", !0),
+ ce(me, pe, we, "⌊", "\\lfloor", !0),
+ ce(me, pe, ve, "⌋", "\\rfloor", !0),
+ ce(me, pe, we, "⌈", "\\lceil", !0),
+ ce(me, pe, ve, "⌉", "\\rceil", !0),
+ ce(me, pe, ze, "\\", "\\backslash"),
+ ce(me, pe, ze, "∣", "|"),
+ ce(me, pe, ze, "∣", "\\vert"),
+ ce(ue, pe, ze, "|", "\\textbar", !0),
+ ce(me, pe, ze, "∥", "\\|"),
+ ce(me, pe, ze, "∥", "\\Vert"),
+ ce(ue, pe, ze, "∥", "\\textbardbl"),
+ ce(ue, pe, ze, "~", "\\textasciitilde"),
+ ce(ue, pe, ze, "\\", "\\textbackslash"),
+ ce(ue, pe, ze, "^", "\\textasciicircum"),
+ ce(me, pe, Se, "↑", "\\uparrow", !0),
+ ce(me, pe, Se, "⇑", "\\Uparrow", !0),
+ ce(me, pe, Se, "↓", "\\downarrow", !0),
+ ce(me, pe, Se, "⇓", "\\Downarrow", !0),
+ ce(me, pe, Se, "↕", "\\updownarrow", !0),
+ ce(me, pe, Se, "⇕", "\\Updownarrow", !0),
+ ce(me, pe, xe, "∐", "\\coprod"),
+ ce(me, pe, xe, "⋁", "\\bigvee"),
+ ce(me, pe, xe, "⋀", "\\bigwedge"),
+ ce(me, pe, xe, "⨄", "\\biguplus"),
+ ce(me, pe, xe, "⋂", "\\bigcap"),
+ ce(me, pe, xe, "⋃", "\\bigcup"),
+ ce(me, pe, xe, "∫", "\\int"),
+ ce(me, pe, xe, "∫", "\\intop"),
+ ce(me, pe, xe, "∬", "\\iint"),
+ ce(me, pe, xe, "∭", "\\iiint"),
+ ce(me, pe, xe, "∏", "\\prod"),
+ ce(me, pe, xe, "∑", "\\sum"),
+ ce(me, pe, xe, "⨂", "\\bigotimes"),
+ ce(me, pe, xe, "⨁", "\\bigoplus"),
+ ce(me, pe, xe, "⨀", "\\bigodot"),
+ ce(me, pe, xe, "∮", "\\oint"),
+ ce(me, pe, xe, "∯", "\\oiint"),
+ ce(me, pe, xe, "∰", "\\oiiint"),
+ ce(me, pe, xe, "⨆", "\\bigsqcup"),
+ ce(me, pe, xe, "∫", "\\smallint"),
+ ce(ue, pe, ye, "…", "\\textellipsis"),
+ ce(me, pe, ye, "…", "\\mathellipsis"),
+ ce(ue, pe, ye, "…", "\\ldots", !0),
+ ce(me, pe, ye, "…", "\\ldots", !0),
+ ce(me, pe, ye, "⋯", "\\@cdots", !0),
+ ce(me, pe, ye, "⋱", "\\ddots", !0),
+ ce(me, pe, ze, "⋮", "\\varvdots"),
+ ce(me, pe, fe, "ˊ", "\\acute"),
+ ce(me, pe, fe, "ˋ", "\\grave"),
+ ce(me, pe, fe, "¨", "\\ddot"),
+ ce(me, pe, fe, "~", "\\tilde"),
+ ce(me, pe, fe, "ˉ", "\\bar"),
+ ce(me, pe, fe, "˘", "\\breve"),
+ ce(me, pe, fe, "ˇ", "\\check"),
+ ce(me, pe, fe, "^", "\\hat"),
+ ce(me, pe, fe, "⃗", "\\vec"),
+ ce(me, pe, fe, "˙", "\\dot"),
+ ce(me, pe, fe, "˚", "\\mathring"),
+ ce(me, pe, be, "", "\\@imath"),
+ ce(me, pe, be, "", "\\@jmath"),
+ ce(me, pe, ze, "ı", "ı"),
+ ce(me, pe, ze, "ȷ", "ȷ"),
+ ce(ue, pe, ze, "ı", "\\i", !0),
+ ce(ue, pe, ze, "ȷ", "\\j", !0),
+ ce(ue, pe, ze, "ß", "\\ss", !0),
+ ce(ue, pe, ze, "æ", "\\ae", !0),
+ ce(ue, pe, ze, "œ", "\\oe", !0),
+ ce(ue, pe, ze, "ø", "\\o", !0),
+ ce(ue, pe, ze, "Æ", "\\AE", !0),
+ ce(ue, pe, ze, "Œ", "\\OE", !0),
+ ce(ue, pe, ze, "Ø", "\\O", !0),
+ ce(ue, pe, fe, "ˊ", "\\'"),
+ ce(ue, pe, fe, "ˋ", "\\`"),
+ ce(ue, pe, fe, "ˆ", "\\^"),
+ ce(ue, pe, fe, "˜", "\\~"),
+ ce(ue, pe, fe, "ˉ", "\\="),
+ ce(ue, pe, fe, "˘", "\\u"),
+ ce(ue, pe, fe, "˙", "\\."),
+ ce(ue, pe, fe, "¸", "\\c"),
+ ce(ue, pe, fe, "˚", "\\r"),
+ ce(ue, pe, fe, "ˇ", "\\v"),
+ ce(ue, pe, fe, "¨", '\\"'),
+ ce(ue, pe, fe, "˝", "\\H"),
+ ce(ue, pe, fe, "◯", "\\textcircled");
+ var Ae = { "--": !0, "---": !0, "``": !0, "''": !0 };
+ ce(ue, pe, ze, "–", "--", !0),
+ ce(ue, pe, ze, "–", "\\textendash"),
+ ce(ue, pe, ze, "—", "---", !0),
+ ce(ue, pe, ze, "—", "\\textemdash"),
+ ce(ue, pe, ze, "‘", "`", !0),
+ ce(ue, pe, ze, "‘", "\\textquoteleft"),
+ ce(ue, pe, ze, "’", "'", !0),
+ ce(ue, pe, ze, "’", "\\textquoteright"),
+ ce(ue, pe, ze, "“", "``", !0),
+ ce(ue, pe, ze, "“", "\\textquotedblleft"),
+ ce(ue, pe, ze, "”", "''", !0),
+ ce(ue, pe, ze, "”", "\\textquotedblright"),
+ ce(me, pe, ze, "°", "\\degree", !0),
+ ce(ue, pe, ze, "°", "\\degree"),
+ ce(ue, pe, ze, "°", "\\textdegree", !0),
+ ce(me, pe, ze, "£", "\\pounds"),
+ ce(me, pe, ze, "£", "\\mathsterling", !0),
+ ce(ue, pe, ze, "£", "\\pounds"),
+ ce(ue, pe, ze, "£", "\\textsterling", !0),
+ ce(me, de, ze, "✠", "\\maltese"),
+ ce(ue, de, ze, "✠", "\\maltese");
+ for (var Te = 0; Te < 14; Te++) {
+ var Be = '0123456789/@."'.charAt(Te);
+ ce(me, pe, ze, Be, Be);
+ }
+ for (var Ne = 0; Ne < 25; Ne++) {
+ var Ce = '0123456789!@*()-=+";:?/.,'.charAt(Ne);
+ ce(ue, pe, ze, Ce, Ce);
+ }
+ for (var qe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", Ie = 0; Ie < 52; Ie++) {
+ var Re = qe.charAt(Ie);
+ ce(me, pe, be, Re, Re), ce(ue, pe, ze, Re, Re);
+ }
+ ce(me, de, ze, "C", "ℂ"),
+ ce(ue, de, ze, "C", "ℂ"),
+ ce(me, de, ze, "H", "ℍ"),
+ ce(ue, de, ze, "H", "ℍ"),
+ ce(me, de, ze, "N", "ℕ"),
+ ce(ue, de, ze, "N", "ℕ"),
+ ce(me, de, ze, "P", "ℙ"),
+ ce(ue, de, ze, "P", "ℙ"),
+ ce(me, de, ze, "Q", "ℚ"),
+ ce(ue, de, ze, "Q", "ℚ"),
+ ce(me, de, ze, "R", "ℝ"),
+ ce(ue, de, ze, "R", "ℝ"),
+ ce(me, de, ze, "Z", "ℤ"),
+ ce(ue, de, ze, "Z", "ℤ"),
+ ce(me, pe, be, "h", "ℎ"),
+ ce(ue, pe, be, "h", "ℎ");
+ for (var He = "", Oe = 0; Oe < 52; Oe++) {
+ var Ee = qe.charAt(Oe);
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56320 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56372 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56424 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56580 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56736 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56788 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56840 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56944 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ Oe < 26 &&
+ (ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56632 + Oe))),
+ ce(ue, pe, ze, Ee, He),
+ ce(me, pe, be, Ee, (He = String.fromCharCode(55349, 56476 + Oe))),
+ ce(ue, pe, ze, Ee, He));
+ }
+ ce(me, pe, be, "k", (He = String.fromCharCode(55349, 56668))), ce(ue, pe, ze, "k", He);
+ for (var Le = 0; Le < 10; Le++) {
+ var De = Le.toString();
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57294 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57314 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57324 + Le))),
+ ce(ue, pe, ze, De, He),
+ ce(me, pe, be, De, (He = String.fromCharCode(55349, 57334 + Le))),
+ ce(ue, pe, ze, De, He);
+ }
+ for (var Pe = 0; Pe < 3; Pe++) {
+ var Ve = "ÐÞþ".charAt(Pe);
+ ce(me, pe, be, Ve, Ve), ce(ue, pe, ze, Ve, Ve);
+ }
+ var Fe = [
+ ["mathbf", "textbf", "Main-Bold"],
+ ["mathbf", "textbf", "Main-Bold"],
+ ["mathnormal", "textit", "Math-Italic"],
+ ["mathnormal", "textit", "Math-Italic"],
+ ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
+ ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
+ ["mathscr", "textscr", "Script-Regular"],
+ ["", "", ""],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathfrak", "textfrak", "Fraktur-Regular"],
+ ["mathfrak", "textfrak", "Fraktur-Regular"],
+ ["mathbb", "textbb", "AMS-Regular"],
+ ["mathbb", "textbb", "AMS-Regular"],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathitsf", "textitsf", "SansSerif-Italic"],
+ ["mathitsf", "textitsf", "SansSerif-Italic"],
+ ["", "", ""],
+ ["", "", ""],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ],
+ Ge = [
+ ["mathbf", "textbf", "Main-Bold"],
+ ["", "", ""],
+ ["mathsf", "textsf", "SansSerif-Regular"],
+ ["mathboldsf", "textboldsf", "SansSerif-Bold"],
+ ["mathtt", "texttt", "Typewriter-Regular"],
+ ],
+ Ue = function (e, t, r) {
+ return he[r][e] && he[r][e].replace && (e = he[r][e].replace), { value: e, metrics: O(e, t, r) };
+ },
+ Ye = function (e, t, r, n, a) {
+ var i,
+ o = Ue(e, t, r),
+ s = o.metrics;
+ if (((e = o.value), s)) {
+ var l = s.italic;
+ ("text" === r || (n && "mathit" === n.font)) && (l = 0), (i = new te(e, s.height, s.depth, l, s.skew, s.width, a));
+ } else
+ "undefined" != typeof console && console.warn("No character metrics for '" + e + "' in style '" + t + "' and mode '" + r + "'"),
+ (i = new te(e, 0, 0, 0, 0, 0, a));
+ if (n) {
+ (i.maxFontSize = n.sizeMultiplier), n.style.isTight() && i.classes.push("mtight");
+ var h = n.getColor();
+ h && (i.style.color = h);
+ }
+ return i;
+ },
+ Xe = function (e, t) {
+ if (_(e.classes) !== _(t.classes) || e.skew !== t.skew || e.maxFontSize !== t.maxFontSize) return !1;
+ if (1 === e.classes.length) {
+ var r = e.classes[0];
+ if ("mbin" === r || "mord" === r) return !1;
+ }
+ for (var n in e.style) if (e.style.hasOwnProperty(n) && e.style[n] !== t.style[n]) return !1;
+ for (var a in t.style) if (t.style.hasOwnProperty(a) && e.style[a] !== t.style[a]) return !1;
+ return !0;
+ },
+ We = function (e) {
+ for (var t = 0, r = 0, n = 0, a = 0; a < e.children.length; a++) {
+ var i = e.children[a];
+ i.height > t && (t = i.height), i.depth > r && (r = i.depth), i.maxFontSize > n && (n = i.maxFontSize);
+ }
+ (e.height = t), (e.depth = r), (e.maxFontSize = n);
+ },
+ _e = function (e, t, r, n) {
+ var a = new K(e, t, r, n);
+ return We(a), a;
+ },
+ je = function (e, t, r, n) {
+ return new K(e, t, r, n);
+ },
+ $e = function (e) {
+ var t = new q(e);
+ return We(t), t;
+ },
+ Ze = function (e, t, r) {
+ var n = "";
+ switch (e) {
+ case "amsrm":
+ n = "AMS";
+ break;
+ case "textrm":
+ n = "Main";
+ break;
+ case "textsf":
+ n = "SansSerif";
+ break;
+ case "texttt":
+ n = "Typewriter";
+ break;
+ default:
+ n = e;
+ }
+ return n + "-" + ("textbf" === t && "textit" === r ? "BoldItalic" : "textbf" === t ? "Bold" : "textit" === t ? "Italic" : "Regular");
+ },
+ Ke = {
+ mathbf: { variant: "bold", fontName: "Main-Bold" },
+ mathrm: { variant: "normal", fontName: "Main-Regular" },
+ textit: { variant: "italic", fontName: "Main-Italic" },
+ mathit: { variant: "italic", fontName: "Main-Italic" },
+ mathnormal: { variant: "italic", fontName: "Math-Italic" },
+ mathbb: { variant: "double-struck", fontName: "AMS-Regular" },
+ mathcal: { variant: "script", fontName: "Caligraphic-Regular" },
+ mathfrak: { variant: "fraktur", fontName: "Fraktur-Regular" },
+ mathscr: { variant: "script", fontName: "Script-Regular" },
+ mathsf: { variant: "sans-serif", fontName: "SansSerif-Regular" },
+ mathtt: { variant: "monospace", fontName: "Typewriter-Regular" },
+ },
+ Je = {
+ vec: ["vec", 0.471, 0.714],
+ oiintSize1: ["oiintSize1", 0.957, 0.499],
+ oiintSize2: ["oiintSize2", 1.472, 0.659],
+ oiiintSize1: ["oiiintSize1", 1.304, 0.499],
+ oiiintSize2: ["oiiintSize2", 1.98, 0.659],
+ },
+ Qe = {
+ fontMap: Ke,
+ makeSymbol: Ye,
+ mathsym: function (e, t, r, n) {
+ return (
+ void 0 === n && (n = []),
+ "boldsymbol" === r.font && Ue(e, "Main-Bold", t).metrics
+ ? Ye(e, "Main-Bold", t, r, n.concat(["mathbf"]))
+ : "\\" === e || "main" === he[t][e].font
+ ? Ye(e, "Main-Regular", t, r, n)
+ : Ye(e, "AMS-Regular", t, r, n.concat(["amsrm"]))
+ );
+ },
+ makeSpan: _e,
+ makeSvgSpan: je,
+ makeLineSpan: function (e, t, r) {
+ var n = _e([e], [], t);
+ return (
+ (n.height = Math.max(r || t.fontMetrics().defaultRuleThickness, t.minRuleThickness)),
+ (n.style.borderBottomWidth = W(n.height)),
+ (n.maxFontSize = 1),
+ n
+ );
+ },
+ makeAnchor: function (e, t, r, n) {
+ var a = new J(e, t, r, n);
+ return We(a), a;
+ },
+ makeFragment: $e,
+ wrapFragment: function (e, t) {
+ return e instanceof q ? _e([], [e], t) : e;
+ },
+ makeVList: function (e, t) {
+ for (
+ var r = (function (e) {
+ if ("individualShift" === e.positionType) {
+ for (var t = e.children, r = [t[0]], n = -t[0].shift - t[0].elem.depth, a = n, i = 1; i < t.length; i++) {
+ var o = -t[i].shift - a - t[i].elem.depth,
+ s = o - (t[i - 1].elem.height + t[i - 1].elem.depth);
+ (a += o), r.push({ type: "kern", size: s }), r.push(t[i]);
+ }
+ return { children: r, depth: n };
+ }
+ var l;
+ if ("top" === e.positionType) {
+ for (var h = e.positionData, c = 0; c < e.children.length; c++) {
+ var m = e.children[c];
+ h -= "kern" === m.type ? m.size : m.elem.height + m.elem.depth;
+ }
+ l = h;
+ } else if ("bottom" === e.positionType) l = -e.positionData;
+ else {
+ var u = e.children[0];
+ if ("elem" !== u.type) throw new Error('First child must have type "elem".');
+ if ("shift" === e.positionType) l = -u.elem.depth - e.positionData;
+ else {
+ if ("firstBaseline" !== e.positionType) throw new Error("Invalid positionType " + e.positionType + ".");
+ l = -u.elem.depth;
+ }
+ }
+ return { children: e.children, depth: l };
+ })(e),
+ n = r.children,
+ a = r.depth,
+ i = 0,
+ o = 0;
+ o < n.length;
+ o++
+ ) {
+ var s = n[o];
+ if ("elem" === s.type) {
+ var l = s.elem;
+ i = Math.max(i, l.maxFontSize, l.height);
+ }
+ }
+ i += 2;
+ var h = _e(["pstrut"], []);
+ h.style.height = W(i);
+ for (var c = [], m = a, u = a, p = a, d = 0; d < n.length; d++) {
+ var f = n[d];
+ if ("kern" === f.type) p += f.size;
+ else {
+ var g = f.elem,
+ v = f.wrapperClasses || [],
+ y = f.wrapperStyle || {},
+ b = _e(v, [h, g], void 0, y);
+ (b.style.top = W(-i - p - g.depth)),
+ f.marginLeft && (b.style.marginLeft = f.marginLeft),
+ f.marginRight && (b.style.marginRight = f.marginRight),
+ c.push(b),
+ (p += g.height + g.depth);
+ }
+ (m = Math.min(m, p)), (u = Math.max(u, p));
+ }
+ var x,
+ w = _e(["vlist"], c);
+ if (((w.style.height = W(u)), m < 0)) {
+ var k = _e([], []),
+ S = _e(["vlist"], [k]);
+ S.style.height = W(-m);
+ var M = _e(["vlist-s"], [new te("")]);
+ x = [_e(["vlist-r"], [w, M]), _e(["vlist-r"], [S])];
+ } else x = [_e(["vlist-r"], [w])];
+ var z = _e(["vlist-t"], x);
+ return 2 === x.length && z.classes.push("vlist-t2"), (z.height = u), (z.depth = -m), z;
+ },
+ makeOrd: function (e, t, r) {
+ var a = e.mode,
+ i = e.text,
+ o = ["mord"],
+ s = "math" === a || ("text" === a && t.font),
+ l = s ? t.font : t.fontFamily;
+ if (55349 === i.charCodeAt(0)) {
+ var h = (function (e, t) {
+ var r = 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536,
+ a = "math" === t ? 0 : 1;
+ if (119808 <= r && r < 120484) {
+ var i = Math.floor((r - 119808) / 26);
+ return [Fe[i][2], Fe[i][a]];
+ }
+ if (120782 <= r && r <= 120831) {
+ var o = Math.floor((r - 120782) / 10);
+ return [Ge[o][2], Ge[o][a]];
+ }
+ if (120485 === r || 120486 === r) return [Fe[0][2], Fe[0][a]];
+ if (120486 < r && r < 120782) return ["", ""];
+ throw new n("Unsupported character: " + e);
+ })(i, a),
+ c = h[0],
+ m = h[1];
+ return Ye(i, c, a, t, o.concat(m));
+ }
+ if (l) {
+ var u, p;
+ if ("boldsymbol" === l) {
+ var d = (function (e, t, r, n, a) {
+ return "textord" !== a && Ue(e, "Math-BoldItalic", t).metrics
+ ? { fontName: "Math-BoldItalic", fontClass: "boldsymbol" }
+ : { fontName: "Main-Bold", fontClass: "mathbf" };
+ })(i, a, 0, 0, r);
+ (u = d.fontName), (p = [d.fontClass]);
+ } else s ? ((u = Ke[l].fontName), (p = [l])) : ((u = Ze(l, t.fontWeight, t.fontShape)), (p = [l, t.fontWeight, t.fontShape]));
+ if (Ue(i, u, a).metrics) return Ye(i, u, a, t, o.concat(p));
+ if (Ae.hasOwnProperty(i) && "Typewriter" === u.slice(0, 10)) {
+ for (var f = [], g = 0; g < i.length; g++) f.push(Ye(i[g], u, a, t, o.concat(p)));
+ return $e(f);
+ }
+ }
+ if ("mathord" === r) return Ye(i, "Math-Italic", a, t, o.concat(["mathnormal"]));
+ if ("textord" === r) {
+ var v = he[a][i] && he[a][i].font;
+ if ("ams" === v) {
+ var y = Ze("amsrm", t.fontWeight, t.fontShape);
+ return Ye(i, y, a, t, o.concat("amsrm", t.fontWeight, t.fontShape));
+ }
+ if ("main" !== v && v) {
+ var b = Ze(v, t.fontWeight, t.fontShape);
+ return Ye(i, b, a, t, o.concat(b, t.fontWeight, t.fontShape));
+ }
+ var x = Ze("textrm", t.fontWeight, t.fontShape);
+ return Ye(i, x, a, t, o.concat(t.fontWeight, t.fontShape));
+ }
+ throw new Error("unexpected type: " + r + " in makeOrd");
+ },
+ makeGlue: function (e, t) {
+ var r = _e(["mspace"], [], t),
+ n = X(e, t);
+ return (r.style.marginRight = W(n)), r;
+ },
+ staticSvg: function (e, t) {
+ var r = Je[e],
+ n = r[0],
+ a = r[1],
+ i = r[2],
+ o = new ne(n),
+ s = new re([o], {
+ width: W(a),
+ height: W(i),
+ style: "width:" + W(a),
+ viewBox: "0 0 " + 1e3 * a + " " + 1e3 * i,
+ preserveAspectRatio: "xMinYMin",
+ }),
+ l = je(["overlay"], [s], t);
+ return (l.height = i), (l.style.height = W(i)), (l.style.width = W(a)), l;
+ },
+ svgData: Je,
+ tryCombineChars: function (e) {
+ for (var t = 0; t < e.length - 1; t++) {
+ var r = e[t],
+ n = e[t + 1];
+ r instanceof te &&
+ n instanceof te &&
+ Xe(r, n) &&
+ ((r.text += n.text),
+ (r.height = Math.max(r.height, n.height)),
+ (r.depth = Math.max(r.depth, n.depth)),
+ (r.italic = n.italic),
+ e.splice(t + 1, 1),
+ t--);
+ }
+ return e;
+ },
+ },
+ et = { number: 3, unit: "mu" },
+ tt = { number: 4, unit: "mu" },
+ rt = { number: 5, unit: "mu" },
+ nt = {
+ mord: { mop: et, mbin: tt, mrel: rt, minner: et },
+ mop: { mord: et, mop: et, mrel: rt, minner: et },
+ mbin: { mord: tt, mop: tt, mopen: tt, minner: tt },
+ mrel: { mord: rt, mop: rt, mopen: rt, minner: rt },
+ mopen: {},
+ mclose: { mop: et, mbin: tt, mrel: rt, minner: et },
+ mpunct: {
+ mord: et,
+ mop: et,
+ mrel: rt,
+ mopen: et,
+ mclose: et,
+ mpunct: et,
+ minner: et,
+ },
+ minner: {
+ mord: et,
+ mop: et,
+ mbin: tt,
+ mrel: rt,
+ mopen: et,
+ mpunct: et,
+ minner: et,
+ },
+ },
+ at = {
+ mord: { mop: et },
+ mop: { mord: et, mop: et },
+ mbin: {},
+ mrel: {},
+ mopen: {},
+ mclose: { mop: et },
+ mpunct: {},
+ minner: { mop: et },
+ },
+ it = {},
+ ot = {},
+ st = {};
+ function lt(e) {
+ for (
+ var t = e.type,
+ r = e.names,
+ n = e.props,
+ a = e.handler,
+ i = e.htmlBuilder,
+ o = e.mathmlBuilder,
+ s = {
+ type: t,
+ numArgs: n.numArgs,
+ argTypes: n.argTypes,
+ allowedInArgument: !!n.allowedInArgument,
+ allowedInText: !!n.allowedInText,
+ allowedInMath: void 0 === n.allowedInMath || n.allowedInMath,
+ numOptionalArgs: n.numOptionalArgs || 0,
+ infix: !!n.infix,
+ primitive: !!n.primitive,
+ handler: a,
+ },
+ l = 0;
+ l < r.length;
+ ++l
+ )
+ it[r[l]] = s;
+ t && (i && (ot[t] = i), o && (st[t] = o));
+ }
+ function ht(e) {
+ lt({
+ type: e.type,
+ names: [],
+ props: { numArgs: 0 },
+ handler: function () {
+ throw new Error("Should never be called.");
+ },
+ htmlBuilder: e.htmlBuilder,
+ mathmlBuilder: e.mathmlBuilder,
+ });
+ }
+ var ct = function (e) {
+ return "ordgroup" === e.type && 1 === e.body.length ? e.body[0] : e;
+ },
+ mt = function (e) {
+ return "ordgroup" === e.type ? e.body : [e];
+ },
+ ut = Qe.makeSpan,
+ pt = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"],
+ dt = ["rightmost", "mrel", "mclose", "mpunct"],
+ ft = {
+ display: A.DISPLAY,
+ text: A.TEXT,
+ script: A.SCRIPT,
+ scriptscript: A.SCRIPTSCRIPT,
+ },
+ gt = {
+ mord: "mord",
+ mop: "mop",
+ mbin: "mbin",
+ mrel: "mrel",
+ mopen: "mopen",
+ mclose: "mclose",
+ mpunct: "mpunct",
+ minner: "minner",
+ },
+ vt = function (e, t, r, n) {
+ void 0 === n && (n = [null, null]);
+ for (var a = [], i = 0; i < e.length; i++) {
+ var o = St(e[i], t);
+ if (o instanceof q) {
+ var s = o.children;
+ a.push.apply(a, s);
+ } else a.push(o);
+ }
+ if ((Qe.tryCombineChars(a), !r)) return a;
+ var h = t;
+ if (1 === e.length) {
+ var c = e[0];
+ "sizing" === c.type ? (h = t.havingSize(c.size)) : "styling" === c.type && (h = t.havingStyle(ft[c.style]));
+ }
+ var m = ut([n[0] || "leftmost"], [], t),
+ u = ut([n[1] || "rightmost"], [], t),
+ p = "root" === r;
+ return (
+ yt(
+ a,
+ function (e, t) {
+ var r = t.classes[0],
+ n = e.classes[0];
+ "mbin" === r && l(dt, n) ? (t.classes[0] = "mord") : "mbin" === n && l(pt, r) && (e.classes[0] = "mord");
+ },
+ { node: m },
+ u,
+ p,
+ ),
+ yt(
+ a,
+ function (e, t) {
+ var r = wt(t),
+ n = wt(e),
+ a = r && n ? (e.hasClass("mtight") ? at[r][n] : nt[r][n]) : null;
+ if (a) return Qe.makeGlue(a, h);
+ },
+ { node: m },
+ u,
+ p,
+ ),
+ a
+ );
+ },
+ yt = function e(t, r, n, a, i) {
+ a && t.push(a);
+ for (var o = 0; o < t.length; o++) {
+ var s = t[o],
+ l = bt(s);
+ if (l) e(l.children, r, n, null, i);
+ else {
+ var h = !s.hasClass("mspace");
+ if (h) {
+ var c = r(s, n.node);
+ c && (n.insertAfter ? n.insertAfter(c) : (t.unshift(c), o++));
+ }
+ h ? (n.node = s) : i && s.hasClass("newline") && (n.node = ut(["leftmost"])),
+ (n.insertAfter = (function (e) {
+ return function (r) {
+ t.splice(e + 1, 0, r), o++;
+ };
+ })(o));
+ }
+ }
+ a && t.pop();
+ },
+ bt = function (e) {
+ return e instanceof q || e instanceof J || (e instanceof K && e.hasClass("enclosing")) ? e : null;
+ },
+ xt = function e(t, r) {
+ var n = bt(t);
+ if (n) {
+ var a = n.children;
+ if (a.length) {
+ if ("right" === r) return e(a[a.length - 1], "right");
+ if ("left" === r) return e(a[0], "left");
+ }
+ }
+ return t;
+ },
+ wt = function (e, t) {
+ return e ? (t && (e = xt(e, t)), gt[e.classes[0]] || null) : null;
+ },
+ kt = function (e, t) {
+ var r = ["nulldelimiter"].concat(e.baseSizingClasses());
+ return ut(t.concat(r));
+ },
+ St = function (e, t, r) {
+ if (!e) return ut();
+ if (ot[e.type]) {
+ var a = ot[e.type](e, t);
+ if (r && t.size !== r.size) {
+ a = ut(t.sizingClasses(r), [a], t);
+ var i = t.sizeMultiplier / r.sizeMultiplier;
+ (a.height *= i), (a.depth *= i);
+ }
+ return a;
+ }
+ throw new n("Got group of unknown type: '" + e.type + "'");
+ };
+ function Mt(e, t) {
+ var r = ut(["base"], e, t),
+ n = ut(["strut"]);
+ return (n.style.height = W(r.height + r.depth)), r.depth && (n.style.verticalAlign = W(-r.depth)), r.children.unshift(n), r;
+ }
+ function zt(e, t) {
+ var r = null;
+ 1 === e.length && "tag" === e[0].type && ((r = e[0].tag), (e = e[0].body));
+ var n,
+ a = vt(e, t, "root");
+ 2 === a.length && a[1].hasClass("tag") && (n = a.pop());
+ for (var i, o = [], s = [], l = 0; l < a.length; l++)
+ if ((s.push(a[l]), a[l].hasClass("mbin") || a[l].hasClass("mrel") || a[l].hasClass("allowbreak"))) {
+ for (var h = !1; l < a.length - 1 && a[l + 1].hasClass("mspace") && !a[l + 1].hasClass("newline"); )
+ l++, s.push(a[l]), a[l].hasClass("nobreak") && (h = !0);
+ h || (o.push(Mt(s, t)), (s = []));
+ } else a[l].hasClass("newline") && (s.pop(), s.length > 0 && (o.push(Mt(s, t)), (s = [])), o.push(a[l]));
+ s.length > 0 && o.push(Mt(s, t)), r ? (((i = Mt(vt(r, t, !0))).classes = ["tag"]), o.push(i)) : n && o.push(n);
+ var c = ut(["katex-html"], o);
+ if ((c.setAttribute("aria-hidden", "true"), i)) {
+ var m = i.children[0];
+ (m.style.height = W(c.height + c.depth)), c.depth && (m.style.verticalAlign = W(-c.depth));
+ }
+ return c;
+ }
+ function At(e) {
+ return new q(e);
+ }
+ var Tt = (function () {
+ function e(e, t, r) {
+ (this.type = void 0),
+ (this.attributes = void 0),
+ (this.children = void 0),
+ (this.classes = void 0),
+ (this.type = e),
+ (this.attributes = {}),
+ (this.children = t || []),
+ (this.classes = r || []);
+ }
+ var t = e.prototype;
+ return (
+ (t.setAttribute = function (e, t) {
+ this.attributes[e] = t;
+ }),
+ (t.getAttribute = function (e) {
+ return this.attributes[e];
+ }),
+ (t.toNode = function () {
+ var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
+ for (var t in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
+ this.classes.length > 0 && (e.className = _(this.classes));
+ for (var r = 0; r < this.children.length; r++) e.appendChild(this.children[r].toNode());
+ return e;
+ }),
+ (t.toMarkup = function () {
+ var e = "<" + this.type;
+ for (var t in this.attributes)
+ Object.prototype.hasOwnProperty.call(this.attributes, t) && ((e += " " + t + '="'), (e += c(this.attributes[t])), (e += '"'));
+ this.classes.length > 0 && (e += ' class ="' + c(_(this.classes)) + '"'), (e += ">");
+ for (var r = 0; r < this.children.length; r++) e += this.children[r].toMarkup();
+ return e + "" + this.type + ">";
+ }),
+ (t.toText = function () {
+ return this.children
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ }),
+ e
+ );
+ })(),
+ Bt = (function () {
+ function e(e) {
+ (this.text = void 0), (this.text = e);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ return document.createTextNode(this.text);
+ }),
+ (t.toMarkup = function () {
+ return c(this.toText());
+ }),
+ (t.toText = function () {
+ return this.text;
+ }),
+ e
+ );
+ })(),
+ Nt = {
+ MathNode: Tt,
+ TextNode: Bt,
+ SpaceNode: (function () {
+ function e(e) {
+ (this.width = void 0),
+ (this.character = void 0),
+ (this.width = e),
+ (this.character =
+ e >= 0.05555 && e <= 0.05556
+ ? " "
+ : e >= 0.1666 && e <= 0.1667
+ ? " "
+ : e >= 0.2222 && e <= 0.2223
+ ? " "
+ : e >= 0.2777 && e <= 0.2778
+ ? " "
+ : e >= -0.05556 && e <= -0.05555
+ ? " "
+ : e >= -0.1667 && e <= -0.1666
+ ? " "
+ : e >= -0.2223 && e <= -0.2222
+ ? " "
+ : e >= -0.2778 && e <= -0.2777
+ ? " "
+ : null);
+ }
+ var t = e.prototype;
+ return (
+ (t.toNode = function () {
+ if (this.character) return document.createTextNode(this.character);
+ var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace");
+ return e.setAttribute("width", W(this.width)), e;
+ }),
+ (t.toMarkup = function () {
+ return this.character ? "" + this.character + " " : ' ';
+ }),
+ (t.toText = function () {
+ return this.character ? this.character : " ";
+ }),
+ e
+ );
+ })(),
+ newDocumentFragment: At,
+ },
+ Ct = function (e, t, r) {
+ return (
+ !he[t][e] ||
+ !he[t][e].replace ||
+ 55349 === e.charCodeAt(0) ||
+ (Ae.hasOwnProperty(e) && r && ((r.fontFamily && "tt" === r.fontFamily.slice(4, 6)) || (r.font && "tt" === r.font.slice(4, 6)))) ||
+ (e = he[t][e].replace),
+ new Nt.TextNode(e)
+ );
+ },
+ qt = function (e) {
+ return 1 === e.length ? e[0] : new Nt.MathNode("mrow", e);
+ },
+ It = function (e, t) {
+ if ("texttt" === t.fontFamily) return "monospace";
+ if ("textsf" === t.fontFamily)
+ return "textit" === t.fontShape && "textbf" === t.fontWeight
+ ? "sans-serif-bold-italic"
+ : "textit" === t.fontShape
+ ? "sans-serif-italic"
+ : "textbf" === t.fontWeight
+ ? "bold-sans-serif"
+ : "sans-serif";
+ if ("textit" === t.fontShape && "textbf" === t.fontWeight) return "bold-italic";
+ if ("textit" === t.fontShape) return "italic";
+ if ("textbf" === t.fontWeight) return "bold";
+ var r = t.font;
+ if (!r || "mathnormal" === r) return null;
+ var n = e.mode;
+ if ("mathit" === r) return "italic";
+ if ("boldsymbol" === r) return "textord" === e.type ? "bold" : "bold-italic";
+ if ("mathbf" === r) return "bold";
+ if ("mathbb" === r) return "double-struck";
+ if ("mathfrak" === r) return "fraktur";
+ if ("mathscr" === r || "mathcal" === r) return "script";
+ if ("mathsf" === r) return "sans-serif";
+ if ("mathtt" === r) return "monospace";
+ var a = e.text;
+ return l(["\\imath", "\\jmath"], a)
+ ? null
+ : (he[n][a] && he[n][a].replace && (a = he[n][a].replace), O(a, Qe.fontMap[r].fontName, n) ? Qe.fontMap[r].variant : null);
+ },
+ Rt = function (e, t, r) {
+ if (1 === e.length) {
+ var n = Ot(e[0], t);
+ return r && n instanceof Tt && "mo" === n.type && (n.setAttribute("lspace", "0em"), n.setAttribute("rspace", "0em")), [n];
+ }
+ for (var a, i = [], o = 0; o < e.length; o++) {
+ var s = Ot(e[o], t);
+ if (s instanceof Tt && a instanceof Tt) {
+ if ("mtext" === s.type && "mtext" === a.type && s.getAttribute("mathvariant") === a.getAttribute("mathvariant")) {
+ var l;
+ (l = a.children).push.apply(l, s.children);
+ continue;
+ }
+ if ("mn" === s.type && "mn" === a.type) {
+ var h;
+ (h = a.children).push.apply(h, s.children);
+ continue;
+ }
+ if ("mi" === s.type && 1 === s.children.length && "mn" === a.type) {
+ var c = s.children[0];
+ if (c instanceof Bt && "." === c.text) {
+ var m;
+ (m = a.children).push.apply(m, s.children);
+ continue;
+ }
+ } else if ("mi" === a.type && 1 === a.children.length) {
+ var u = a.children[0];
+ if (u instanceof Bt && "̸" === u.text && ("mo" === s.type || "mi" === s.type || "mn" === s.type)) {
+ var p = s.children[0];
+ p instanceof Bt && p.text.length > 0 && ((p.text = p.text.slice(0, 1) + "̸" + p.text.slice(1)), i.pop());
+ }
+ }
+ }
+ i.push(s), (a = s);
+ }
+ return i;
+ },
+ Ht = function (e, t, r) {
+ return qt(Rt(e, t, r));
+ },
+ Ot = function (e, t) {
+ if (!e) return new Nt.MathNode("mrow");
+ if (st[e.type]) return st[e.type](e, t);
+ throw new n("Got group of unknown type: '" + e.type + "'");
+ };
+ function Et(e, t, r, n, a) {
+ var i,
+ o = Rt(e, r);
+ i = 1 === o.length && o[0] instanceof Tt && l(["mrow", "mtable"], o[0].type) ? o[0] : new Nt.MathNode("mrow", o);
+ var s = new Nt.MathNode("annotation", [new Nt.TextNode(t)]);
+ s.setAttribute("encoding", "application/x-tex");
+ var h = new Nt.MathNode("semantics", [i, s]),
+ c = new Nt.MathNode("math", [h]);
+ return (
+ c.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"),
+ n && c.setAttribute("display", "block"),
+ Qe.makeSpan([a ? "katex" : "katex-mathml"], [c])
+ );
+ }
+ var Lt = function (e) {
+ return new F({
+ style: e.displayMode ? A.DISPLAY : A.TEXT,
+ maxSize: e.maxSize,
+ minRuleThickness: e.minRuleThickness,
+ });
+ },
+ Dt = function (e, t) {
+ if (t.displayMode) {
+ var r = ["katex-display"];
+ t.leqno && r.push("leqno"), t.fleqn && r.push("fleqn"), (e = Qe.makeSpan(r, [e]));
+ }
+ return e;
+ },
+ Pt = {
+ widehat: "^",
+ widecheck: "ˇ",
+ widetilde: "~",
+ utilde: "~",
+ overleftarrow: "←",
+ underleftarrow: "←",
+ xleftarrow: "←",
+ overrightarrow: "→",
+ underrightarrow: "→",
+ xrightarrow: "→",
+ underbrace: "⏟",
+ overbrace: "⏞",
+ overgroup: "⏠",
+ undergroup: "⏡",
+ overleftrightarrow: "↔",
+ underleftrightarrow: "↔",
+ xleftrightarrow: "↔",
+ Overrightarrow: "⇒",
+ xRightarrow: "⇒",
+ overleftharpoon: "↼",
+ xleftharpoonup: "↼",
+ overrightharpoon: "⇀",
+ xrightharpoonup: "⇀",
+ xLeftarrow: "⇐",
+ xLeftrightarrow: "⇔",
+ xhookleftarrow: "↩",
+ xhookrightarrow: "↪",
+ xmapsto: "↦",
+ xrightharpoondown: "⇁",
+ xleftharpoondown: "↽",
+ xrightleftharpoons: "⇌",
+ xleftrightharpoons: "⇋",
+ xtwoheadleftarrow: "↞",
+ xtwoheadrightarrow: "↠",
+ xlongequal: "=",
+ xtofrom: "⇄",
+ xrightleftarrows: "⇄",
+ xrightequilibrium: "⇌",
+ xleftequilibrium: "⇋",
+ "\\cdrightarrow": "→",
+ "\\cdleftarrow": "←",
+ "\\cdlongequal": "=",
+ },
+ Vt = {
+ overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+ overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+ underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+ underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+ xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"],
+ "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"],
+ xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"],
+ "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"],
+ Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"],
+ xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"],
+ xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"],
+ overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+ xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+ xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"],
+ overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+ xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+ xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"],
+ xlongequal: [["longequal"], 0.888, 334, "xMinYMin"],
+ "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"],
+ xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"],
+ xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"],
+ overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+ overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548],
+ underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548],
+ underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+ xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522],
+ xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560],
+ xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716],
+ xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716],
+ xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522],
+ xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522],
+ overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+ underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+ overgroup: [["leftgroup", "rightgroup"], 0.888, 342],
+ undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342],
+ xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522],
+ xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528],
+ xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901],
+ xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716],
+ xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716],
+ },
+ Ft = function (e) {
+ var t = new Nt.MathNode("mo", [new Nt.TextNode(Pt[e.replace(/^\\/, "")])]);
+ return t.setAttribute("stretchy", "true"), t;
+ },
+ Gt = function (e, t) {
+ var r = (function () {
+ var r = 4e5,
+ n = e.label.slice(1);
+ if (l(["widehat", "widecheck", "widetilde", "utilde"], n)) {
+ var a,
+ i,
+ o,
+ s = "ordgroup" === (d = e.base).type ? d.body.length : 1;
+ if (s > 5)
+ "widehat" === n || "widecheck" === n
+ ? ((a = 420), (r = 2364), (o = 0.42), (i = n + "4"))
+ : ((a = 312), (r = 2340), (o = 0.34), (i = "tilde4"));
+ else {
+ var h = [1, 1, 2, 2, 3, 3][s];
+ "widehat" === n || "widecheck" === n
+ ? ((r = [0, 1062, 2364, 2364, 2364][h]),
+ (a = [0, 239, 300, 360, 420][h]),
+ (o = [0, 0.24, 0.3, 0.3, 0.36, 0.42][h]),
+ (i = n + h))
+ : ((r = [0, 600, 1033, 2339, 2340][h]),
+ (a = [0, 260, 286, 306, 312][h]),
+ (o = [0, 0.26, 0.286, 0.3, 0.306, 0.34][h]),
+ (i = "tilde" + h));
+ }
+ var c = new ne(i),
+ m = new re([c], {
+ width: "100%",
+ height: W(o),
+ viewBox: "0 0 " + r + " " + a,
+ preserveAspectRatio: "none",
+ });
+ return { span: Qe.makeSvgSpan([], [m], t), minWidth: 0, height: o };
+ }
+ var u,
+ p,
+ d,
+ f = [],
+ g = Vt[n],
+ v = g[0],
+ y = g[1],
+ b = g[2],
+ x = b / 1e3,
+ w = v.length;
+ if (1 === w) (u = ["hide-tail"]), (p = [g[3]]);
+ else if (2 === w) (u = ["halfarrow-left", "halfarrow-right"]), (p = ["xMinYMin", "xMaxYMin"]);
+ else {
+ if (3 !== w) throw new Error("Correct katexImagesData or update code here to support\n " + w + " children.");
+ (u = ["brace-left", "brace-center", "brace-right"]), (p = ["xMinYMin", "xMidYMin", "xMaxYMin"]);
+ }
+ for (var k = 0; k < w; k++) {
+ var S = new ne(v[k]),
+ M = new re([S], {
+ width: "400em",
+ height: W(x),
+ viewBox: "0 0 " + r + " " + b,
+ preserveAspectRatio: p[k] + " slice",
+ }),
+ z = Qe.makeSvgSpan([u[k]], [M], t);
+ if (1 === w) return { span: z, minWidth: y, height: x };
+ (z.style.height = W(x)), f.push(z);
+ }
+ return { span: Qe.makeSpan(["stretchy"], f, t), minWidth: y, height: x };
+ })(),
+ n = r.span,
+ a = r.minWidth,
+ i = r.height;
+ return (n.height = i), (n.style.height = W(i)), a > 0 && (n.style.minWidth = W(a)), n;
+ };
+ function Ut(e, t) {
+ if (!e || e.type !== t) throw new Error("Expected node of type " + t + ", but got " + (e ? "node of type " + e.type : String(e)));
+ return e;
+ }
+ function Yt(e) {
+ var t = Xt(e);
+ if (!t) throw new Error("Expected node of symbol group type, but got " + (e ? "node of type " + e.type : String(e)));
+ return t;
+ }
+ function Xt(e) {
+ return e && ("atom" === e.type || se.hasOwnProperty(e.type)) ? e : null;
+ }
+ var Wt = function (e, t) {
+ var r, n, a;
+ e && "supsub" === e.type
+ ? ((r = (n = Ut(e.base, "accent")).base),
+ (e.base = r),
+ (a = (function (e) {
+ if (e instanceof K) return e;
+ throw new Error("Expected span but got " + String(e) + ".");
+ })(St(e, t))),
+ (e.base = n))
+ : (r = (n = Ut(e, "accent")).base);
+ var i = St(r, t.havingCrampedStyle()),
+ o = 0;
+ if (n.isShifty && p(r)) {
+ var s = u(r);
+ o = ie(St(s, t.havingCrampedStyle())).skew;
+ }
+ var l,
+ h = "\\c" === n.label,
+ c = h ? i.height + i.depth : Math.min(i.height, t.fontMetrics().xHeight);
+ if (n.isStretchy)
+ (l = Gt(n, t)),
+ (l = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: i },
+ {
+ type: "elem",
+ elem: l,
+ wrapperClasses: ["svg-align"],
+ wrapperStyle: o > 0 ? { width: "calc(100% - " + W(2 * o) + ")", marginLeft: W(2 * o) } : void 0,
+ },
+ ],
+ },
+ t,
+ ));
+ else {
+ var m, d;
+ "\\vec" === n.label
+ ? ((m = Qe.staticSvg("vec", t)), (d = Qe.svgData.vec[1]))
+ : (((m = ie((m = Qe.makeOrd({ mode: n.mode, text: n.label }, t, "textord")))).italic = 0), (d = m.width), h && (c += m.depth)),
+ (l = Qe.makeSpan(["accent-body"], [m]));
+ var f = "\\textcircled" === n.label;
+ f && (l.classes.push("accent-full"), (c = i.height));
+ var g = o;
+ f || (g -= d / 2),
+ (l.style.left = W(g)),
+ "\\textcircled" === n.label && (l.style.top = ".2em"),
+ (l = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: i },
+ { type: "kern", size: -c },
+ { type: "elem", elem: l },
+ ],
+ },
+ t,
+ ));
+ }
+ var v = Qe.makeSpan(["mord", "accent"], [l], t);
+ return a ? ((a.children[0] = v), (a.height = Math.max(v.height, a.height)), (a.classes[0] = "mord"), a) : v;
+ },
+ _t = function (e, t) {
+ var r = e.isStretchy ? Ft(e.label) : new Nt.MathNode("mo", [Ct(e.label, e.mode)]),
+ n = new Nt.MathNode("mover", [Ot(e.base, t), r]);
+ return n.setAttribute("accent", "true"), n;
+ },
+ jt = new RegExp(
+ ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"]
+ .map(function (e) {
+ return "\\" + e;
+ })
+ .join("|"),
+ );
+ lt({
+ type: "accent",
+ names: [
+ "\\acute",
+ "\\grave",
+ "\\ddot",
+ "\\tilde",
+ "\\bar",
+ "\\breve",
+ "\\check",
+ "\\hat",
+ "\\vec",
+ "\\dot",
+ "\\mathring",
+ "\\widecheck",
+ "\\widehat",
+ "\\widetilde",
+ "\\overrightarrow",
+ "\\overleftarrow",
+ "\\Overrightarrow",
+ "\\overleftrightarrow",
+ "\\overgroup",
+ "\\overlinesegment",
+ "\\overleftharpoon",
+ "\\overrightharpoon",
+ ],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = ct(t[0]),
+ n = !jt.test(e.funcName),
+ a = !n || "\\widehat" === e.funcName || "\\widetilde" === e.funcName || "\\widecheck" === e.funcName;
+ return {
+ type: "accent",
+ mode: e.parser.mode,
+ label: e.funcName,
+ isStretchy: n,
+ isShifty: a,
+ base: r,
+ };
+ },
+ htmlBuilder: Wt,
+ mathmlBuilder: _t,
+ }),
+ lt({
+ type: "accent",
+ names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"],
+ props: {
+ numArgs: 1,
+ allowedInText: !0,
+ allowedInMath: !0,
+ argTypes: ["primitive"],
+ },
+ handler: function (e, t) {
+ var r = t[0],
+ n = e.parser.mode;
+ return (
+ "math" === n &&
+ (e.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + e.funcName + " works only in text mode"),
+ (n = "text")),
+ {
+ type: "accent",
+ mode: n,
+ label: e.funcName,
+ isStretchy: !1,
+ isShifty: !0,
+ base: r,
+ }
+ );
+ },
+ htmlBuilder: Wt,
+ mathmlBuilder: _t,
+ }),
+ lt({
+ type: "accentUnder",
+ names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "accentUnder", mode: r.mode, label: n, base: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.base, t),
+ n = Gt(e, t),
+ a = "\\utilde" === e.label ? 0.12 : 0,
+ i = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: r.height,
+ children: [
+ { type: "elem", elem: n, wrapperClasses: ["svg-align"] },
+ { type: "kern", size: a },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "accentunder"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Ft(e.label),
+ n = new Nt.MathNode("munder", [Ot(e.base, t), r]);
+ return n.setAttribute("accentunder", "true"), n;
+ },
+ });
+ var $t = function (e) {
+ var t = new Nt.MathNode("mpadded", e ? [e] : []);
+ return t.setAttribute("width", "+0.6em"), t.setAttribute("lspace", "0.3em"), t;
+ };
+ lt({
+ type: "xArrow",
+ names: [
+ "\\xleftarrow",
+ "\\xrightarrow",
+ "\\xLeftarrow",
+ "\\xRightarrow",
+ "\\xleftrightarrow",
+ "\\xLeftrightarrow",
+ "\\xhookleftarrow",
+ "\\xhookrightarrow",
+ "\\xmapsto",
+ "\\xrightharpoondown",
+ "\\xrightharpoonup",
+ "\\xleftharpoondown",
+ "\\xleftharpoonup",
+ "\\xrightleftharpoons",
+ "\\xleftrightharpoons",
+ "\\xlongequal",
+ "\\xtwoheadrightarrow",
+ "\\xtwoheadleftarrow",
+ "\\xtofrom",
+ "\\xrightleftarrows",
+ "\\xrightequilibrium",
+ "\\xleftequilibrium",
+ "\\\\cdrightarrow",
+ "\\\\cdleftarrow",
+ "\\\\cdlongequal",
+ ],
+ props: { numArgs: 1, numOptionalArgs: 1 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName;
+ return { type: "xArrow", mode: n.mode, label: a, body: t[0], below: r[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r,
+ n = t.style,
+ a = t.havingStyle(n.sup()),
+ i = Qe.wrapFragment(St(e.body, a, t), t),
+ o = "\\x" === e.label.slice(0, 2) ? "x" : "cd";
+ i.classes.push(o + "-arrow-pad"),
+ e.below && ((a = t.havingStyle(n.sub())), (r = Qe.wrapFragment(St(e.below, a, t), t)).classes.push(o + "-arrow-pad"));
+ var s,
+ l = Gt(e, t),
+ h = -t.fontMetrics().axisHeight + 0.5 * l.height,
+ c = -t.fontMetrics().axisHeight - 0.5 * l.height - 0.111;
+ if (((i.depth > 0.25 || "\\xleftequilibrium" === e.label) && (c -= i.depth), r)) {
+ var m = -t.fontMetrics().axisHeight + r.height + 0.5 * l.height + 0.111;
+ s = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: c },
+ { type: "elem", elem: l, shift: h },
+ { type: "elem", elem: r, shift: m },
+ ],
+ },
+ t,
+ );
+ } else
+ s = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: c },
+ { type: "elem", elem: l, shift: h },
+ ],
+ },
+ t,
+ );
+ return s.children[0].children[0].children[1].classes.push("svg-align"), Qe.makeSpan(["mrel", "x-arrow"], [s], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = Ft(e.label);
+ if ((n.setAttribute("minsize", "x" === e.label.charAt(0) ? "1.75em" : "3.0em"), e.body)) {
+ var a = $t(Ot(e.body, t));
+ if (e.below) {
+ var i = $t(Ot(e.below, t));
+ r = new Nt.MathNode("munderover", [n, i, a]);
+ } else r = new Nt.MathNode("mover", [n, a]);
+ } else if (e.below) {
+ var o = $t(Ot(e.below, t));
+ r = new Nt.MathNode("munder", [n, o]);
+ } else (r = $t()), (r = new Nt.MathNode("mover", [n, r]));
+ return r;
+ },
+ });
+ var Zt = Qe.makeSpan;
+ function Kt(e, t) {
+ var r = vt(e.body, t, !0);
+ return Zt([e.mclass], r, t);
+ }
+ function Jt(e, t) {
+ var r,
+ n = Rt(e.body, t);
+ return (
+ "minner" === e.mclass
+ ? (r = new Nt.MathNode("mpadded", n))
+ : "mord" === e.mclass
+ ? e.isCharacterBox
+ ? ((r = n[0]).type = "mi")
+ : (r = new Nt.MathNode("mi", n))
+ : (e.isCharacterBox ? ((r = n[0]).type = "mo") : (r = new Nt.MathNode("mo", n)),
+ "mbin" === e.mclass
+ ? ((r.attributes.lspace = "0.22em"), (r.attributes.rspace = "0.22em"))
+ : "mpunct" === e.mclass
+ ? ((r.attributes.lspace = "0em"), (r.attributes.rspace = "0.17em"))
+ : "mopen" === e.mclass || "mclose" === e.mclass
+ ? ((r.attributes.lspace = "0em"), (r.attributes.rspace = "0em"))
+ : "minner" === e.mclass && ((r.attributes.lspace = "0.0556em"), (r.attributes.width = "+0.1111em"))),
+ r
+ );
+ }
+ lt({
+ type: "mclass",
+ names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return {
+ type: "mclass",
+ mode: r.mode,
+ mclass: "m" + n.slice(5),
+ body: mt(a),
+ isCharacterBox: p(a),
+ };
+ },
+ htmlBuilder: Kt,
+ mathmlBuilder: Jt,
+ });
+ var Qt = function (e) {
+ var t = "ordgroup" === e.type && e.body.length ? e.body[0] : e;
+ return "atom" !== t.type || ("bin" !== t.family && "rel" !== t.family) ? "mord" : "m" + t.family;
+ };
+ lt({
+ type: "mclass",
+ names: ["\\@binrel"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ return {
+ type: "mclass",
+ mode: e.parser.mode,
+ mclass: Qt(t[0]),
+ body: mt(t[1]),
+ isCharacterBox: p(t[1]),
+ };
+ },
+ }),
+ lt({
+ type: "mclass",
+ names: ["\\stackrel", "\\overset", "\\underset"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = e.funcName,
+ i = t[1],
+ o = t[0];
+ r = "\\stackrel" !== a ? Qt(i) : "mrel";
+ var s = {
+ type: "op",
+ mode: i.mode,
+ limits: !0,
+ alwaysHandleSupSub: !0,
+ parentIsSupSub: !1,
+ symbol: !1,
+ suppressBaseShift: "\\stackrel" !== a,
+ body: mt(i),
+ },
+ l = {
+ type: "supsub",
+ mode: o.mode,
+ base: s,
+ sup: "\\underset" === a ? null : o,
+ sub: "\\underset" === a ? o : null,
+ };
+ return {
+ type: "mclass",
+ mode: n.mode,
+ mclass: r,
+ body: [l],
+ isCharacterBox: p(l),
+ };
+ },
+ htmlBuilder: Kt,
+ mathmlBuilder: Jt,
+ }),
+ lt({
+ type: "pmb",
+ names: ["\\pmb"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "pmb", mode: e.parser.mode, mclass: Qt(t[0]), body: mt(t[0]) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !0),
+ n = Qe.makeSpan([e.mclass], r, t);
+ return (n.style.textShadow = "0.02em 0.01em 0.04px"), n;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(e.body, t),
+ n = new Nt.MathNode("mstyle", r);
+ return n.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"), n;
+ },
+ });
+ var er = {
+ ">": "\\\\cdrightarrow",
+ "<": "\\\\cdleftarrow",
+ "=": "\\\\cdlongequal",
+ A: "\\uparrow",
+ V: "\\downarrow",
+ "|": "\\Vert",
+ ".": "no arrow",
+ },
+ tr = function (e) {
+ return "textord" === e.type && "@" === e.text;
+ };
+ function rr(e, t, r) {
+ var n = er[e];
+ switch (n) {
+ case "\\\\cdrightarrow":
+ case "\\\\cdleftarrow":
+ return r.callFunction(n, [t[0]], [t[1]]);
+ case "\\uparrow":
+ case "\\downarrow":
+ var a = { type: "atom", text: n, mode: "math", family: "rel" },
+ i = {
+ type: "ordgroup",
+ mode: "math",
+ body: [r.callFunction("\\\\cdleft", [t[0]], []), r.callFunction("\\Big", [a], []), r.callFunction("\\\\cdright", [t[1]], [])],
+ };
+ return r.callFunction("\\\\cdparent", [i], []);
+ case "\\\\cdlongequal":
+ return r.callFunction("\\\\cdlongequal", [], []);
+ case "\\Vert":
+ return r.callFunction("\\Big", [{ type: "textord", text: "\\Vert", mode: "math" }], []);
+ default:
+ return { type: "textord", text: " ", mode: "math" };
+ }
+ }
+ lt({
+ type: "cdlabel",
+ names: ["\\\\cdleft", "\\\\cdright"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return { type: "cdlabel", mode: r.mode, side: n.slice(4), label: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = t.havingStyle(t.style.sup()),
+ n = Qe.wrapFragment(St(e.label, r, t), t);
+ return n.classes.push("cd-label-" + e.side), (n.style.bottom = W(0.8 - n.depth)), (n.height = 0), (n.depth = 0), n;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mrow", [Ot(e.label, t)]);
+ return (
+ (r = new Nt.MathNode("mpadded", [r])).setAttribute("width", "0"),
+ "left" === e.side && r.setAttribute("lspace", "-1width"),
+ r.setAttribute("voffset", "0.7em"),
+ (r = new Nt.MathNode("mstyle", [r])).setAttribute("displaystyle", "false"),
+ r.setAttribute("scriptlevel", "1"),
+ r
+ );
+ },
+ }),
+ lt({
+ type: "cdlabelparent",
+ names: ["\\\\cdparent"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ return { type: "cdlabelparent", mode: e.parser.mode, fragment: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.wrapFragment(St(e.fragment, t), t);
+ return r.classes.push("cd-vert-arrow"), r;
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mrow", [Ot(e.fragment, t)]);
+ },
+ }),
+ lt({
+ type: "textord",
+ names: ["\\@char"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ for (var r = e.parser, a = Ut(t[0], "ordgroup").body, i = "", o = 0; o < a.length; o++) i += Ut(a[o], "textord").text;
+ var s,
+ l = parseInt(i);
+ if (isNaN(l)) throw new n("\\@char has non-numeric argument " + i);
+ if (l < 0 || l >= 1114111) throw new n("\\@char with invalid code point " + i);
+ return (
+ l <= 65535 ? (s = String.fromCharCode(l)) : ((l -= 65536), (s = String.fromCharCode(55296 + (l >> 10), 56320 + (1023 & l)))),
+ { type: "textord", mode: r.mode, text: s }
+ );
+ },
+ });
+ var nr = function (e, t) {
+ var r = vt(e.body, t.withColor(e.color), !1);
+ return Qe.makeFragment(r);
+ },
+ ar = function (e, t) {
+ var r = Rt(e.body, t.withColor(e.color)),
+ n = new Nt.MathNode("mstyle", r);
+ return n.setAttribute("mathcolor", e.color), n;
+ };
+ lt({
+ type: "color",
+ names: ["\\textcolor"],
+ props: { numArgs: 2, allowedInText: !0, argTypes: ["color", "original"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "color-token").color,
+ a = t[1];
+ return { type: "color", mode: r.mode, color: n, body: mt(a) };
+ },
+ htmlBuilder: nr,
+ mathmlBuilder: ar,
+ }),
+ lt({
+ type: "color",
+ names: ["\\color"],
+ props: { numArgs: 1, allowedInText: !0, argTypes: ["color"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.breakOnTokenText,
+ a = Ut(t[0], "color-token").color;
+ r.gullet.macros.set("\\current@color", a);
+ var i = r.parseExpression(!0, n);
+ return { type: "color", mode: r.mode, color: a, body: i };
+ },
+ htmlBuilder: nr,
+ mathmlBuilder: ar,
+ }),
+ lt({
+ type: "cr",
+ names: ["\\\\"],
+ props: { numArgs: 0, numOptionalArgs: 0, allowedInText: !0 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = "[" === n.gullet.future().text ? n.parseSizeGroup(!0) : null,
+ i =
+ !n.settings.displayMode ||
+ !n.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode");
+ return { type: "cr", mode: n.mode, newLine: i, size: a && Ut(a, "size").value };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["mspace"], [], t);
+ return e.newLine && (r.classes.push("newline"), e.size && (r.style.marginTop = W(X(e.size, t)))), r;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mspace");
+ return e.newLine && (r.setAttribute("linebreak", "newline"), e.size && r.setAttribute("height", W(X(e.size, t)))), r;
+ },
+ });
+ var ir = {
+ "\\global": "\\global",
+ "\\long": "\\\\globallong",
+ "\\\\globallong": "\\\\globallong",
+ "\\def": "\\gdef",
+ "\\gdef": "\\gdef",
+ "\\edef": "\\xdef",
+ "\\xdef": "\\xdef",
+ "\\let": "\\\\globallet",
+ "\\futurelet": "\\\\globalfuture",
+ },
+ or = function (e) {
+ var t = e.text;
+ if (/^(?:[\\{}$^_]|EOF)$/.test(t)) throw new n("Expected a control sequence", e);
+ return t;
+ },
+ sr = function (e, t, r, n) {
+ var a = e.gullet.macros.get(r.text);
+ null == a && ((r.noexpand = !0), (a = { tokens: [r], numArgs: 0, unexpandable: !e.gullet.isExpandable(r.text) })),
+ e.gullet.macros.set(t, a, n);
+ };
+ lt({
+ type: "internal",
+ names: ["\\global", "\\long", "\\\\globallong"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ t.consumeSpaces();
+ var a = t.fetch();
+ if (ir[a.text]) return ("\\global" !== r && "\\\\globallong" !== r) || (a.text = ir[a.text]), Ut(t.parseFunction(), "internal");
+ throw new n("Invalid token after macro prefix", a);
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\def", "\\gdef", "\\edef", "\\xdef"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ a = t.gullet.popToken(),
+ i = a.text;
+ if (/^(?:[\\{}$^_]|EOF)$/.test(i)) throw new n("Expected a control sequence", a);
+ for (var o, s = 0, l = [[]]; "{" !== t.gullet.future().text; )
+ if ("#" === (a = t.gullet.popToken()).text) {
+ if ("{" === t.gullet.future().text) {
+ (o = t.gullet.future()), l[s].push("{");
+ break;
+ }
+ if (((a = t.gullet.popToken()), !/^[1-9]$/.test(a.text))) throw new n('Invalid argument number "' + a.text + '"');
+ if (parseInt(a.text) !== s + 1) throw new n('Argument number "' + a.text + '" out of order');
+ s++, l.push([]);
+ } else {
+ if ("EOF" === a.text) throw new n("Expected a macro definition");
+ l[s].push(a.text);
+ }
+ var h = t.gullet.consumeArg().tokens;
+ return (
+ o && h.unshift(o),
+ ("\\edef" !== r && "\\xdef" !== r) || (h = t.gullet.expandTokens(h)).reverse(),
+ t.gullet.macros.set(i, { tokens: h, numArgs: s, delimiters: l }, r === ir[r]),
+ { type: "internal", mode: t.mode }
+ );
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\let", "\\\\globallet"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ n = or(t.gullet.popToken());
+ t.gullet.consumeSpaces();
+ var a = (function (e) {
+ var t = e.gullet.popToken();
+ return "=" === t.text && " " === (t = e.gullet.popToken()).text && (t = e.gullet.popToken()), t;
+ })(t);
+ return sr(t, n, a, "\\\\globallet" === r), { type: "internal", mode: t.mode };
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\futurelet", "\\\\globalfuture"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName,
+ n = or(t.gullet.popToken()),
+ a = t.gullet.popToken(),
+ i = t.gullet.popToken();
+ return sr(t, n, i, "\\\\globalfuture" === r), t.gullet.pushToken(i), t.gullet.pushToken(a), { type: "internal", mode: t.mode };
+ },
+ });
+ var lr = function (e, t, r) {
+ var n = O((he.math[e] && he.math[e].replace) || e, t, r);
+ if (!n) throw new Error("Unsupported symbol " + e + " and font size " + t + ".");
+ return n;
+ },
+ hr = function (e, t, r, n) {
+ var a = r.havingBaseStyle(t),
+ i = Qe.makeSpan(n.concat(a.sizingClasses(r)), [e], r),
+ o = a.sizeMultiplier / r.sizeMultiplier;
+ return (i.height *= o), (i.depth *= o), (i.maxFontSize = a.sizeMultiplier), i;
+ },
+ cr = function (e, t, r) {
+ var n = t.havingBaseStyle(r),
+ a = (1 - t.sizeMultiplier / n.sizeMultiplier) * t.fontMetrics().axisHeight;
+ e.classes.push("delimcenter"), (e.style.top = W(a)), (e.height -= a), (e.depth += a);
+ },
+ mr = function (e, t, r, n, a, i) {
+ var o = (function (e, t, r, n) {
+ return Qe.makeSymbol(e, "Size" + t + "-Regular", r, n);
+ })(e, t, a, n),
+ s = hr(Qe.makeSpan(["delimsizing", "size" + t], [o], n), A.TEXT, n, i);
+ return r && cr(s, n, A.TEXT), s;
+ },
+ ur = function (e, t, r) {
+ return {
+ type: "elem",
+ elem: Qe.makeSpan(
+ ["delimsizinginner", "Size1-Regular" === t ? "delim-size1" : "delim-size4"],
+ [Qe.makeSpan([], [Qe.makeSymbol(e, t, r)])],
+ ),
+ };
+ },
+ pr = function (e, t, r) {
+ var n = I["Size4-Regular"][e.charCodeAt(0)] ? I["Size4-Regular"][e.charCodeAt(0)][4] : I["Size1-Regular"][e.charCodeAt(0)][4],
+ a = new ne(
+ "inner",
+ (function (e, t) {
+ switch (e) {
+ case "⎜":
+ return "M291 0 H417 V" + t + " H291z M291 0 H417 V" + t + " H291z";
+ case "∣":
+ return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z";
+ case "∥":
+ return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145zM367 0 H410 V" + t + " H367z M367 0 H410 V" + t + " H367z";
+ case "⎟":
+ return "M457 0 H583 V" + t + " H457z M457 0 H583 V" + t + " H457z";
+ case "⎢":
+ return "M319 0 H403 V" + t + " H319z M319 0 H403 V" + t + " H319z";
+ case "⎥":
+ return "M263 0 H347 V" + t + " H263z M263 0 H347 V" + t + " H263z";
+ case "⎪":
+ return "M384 0 H504 V" + t + " H384z M384 0 H504 V" + t + " H384z";
+ case "⏐":
+ return "M312 0 H355 V" + t + " H312z M312 0 H355 V" + t + " H312z";
+ case "‖":
+ return "M257 0 H300 V" + t + " H257z M257 0 H300 V" + t + " H257zM478 0 H521 V" + t + " H478z M478 0 H521 V" + t + " H478z";
+ default:
+ return "";
+ }
+ })(e, Math.round(1e3 * t)),
+ ),
+ i = new re([a], {
+ width: W(n),
+ height: W(t),
+ style: "width:" + W(n),
+ viewBox: "0 0 " + 1e3 * n + " " + Math.round(1e3 * t),
+ preserveAspectRatio: "xMinYMin",
+ }),
+ o = Qe.makeSvgSpan([], [i], r);
+ return (o.height = t), (o.style.height = W(t)), (o.style.width = W(n)), { type: "elem", elem: o };
+ },
+ dr = { type: "kern", size: -0.008 },
+ fr = ["|", "\\lvert", "\\rvert", "\\vert"],
+ gr = ["\\|", "\\lVert", "\\rVert", "\\Vert"],
+ vr = function (e, t, r, n, a, i) {
+ var o,
+ s,
+ h,
+ c,
+ m = "",
+ u = 0;
+ (o = h = c = e), (s = null);
+ var p = "Size1-Regular";
+ "\\uparrow" === e
+ ? (h = c = "⏐")
+ : "\\Uparrow" === e
+ ? (h = c = "‖")
+ : "\\downarrow" === e
+ ? (o = h = "⏐")
+ : "\\Downarrow" === e
+ ? (o = h = "‖")
+ : "\\updownarrow" === e
+ ? ((o = "\\uparrow"), (h = "⏐"), (c = "\\downarrow"))
+ : "\\Updownarrow" === e
+ ? ((o = "\\Uparrow"), (h = "‖"), (c = "\\Downarrow"))
+ : l(fr, e)
+ ? ((h = "∣"), (m = "vert"), (u = 333))
+ : l(gr, e)
+ ? ((h = "∥"), (m = "doublevert"), (u = 556))
+ : "[" === e || "\\lbrack" === e
+ ? ((o = "⎡"), (h = "⎢"), (c = "⎣"), (p = "Size4-Regular"), (m = "lbrack"), (u = 667))
+ : "]" === e || "\\rbrack" === e
+ ? ((o = "⎤"), (h = "⎥"), (c = "⎦"), (p = "Size4-Regular"), (m = "rbrack"), (u = 667))
+ : "\\lfloor" === e || "⌊" === e
+ ? ((h = o = "⎢"), (c = "⎣"), (p = "Size4-Regular"), (m = "lfloor"), (u = 667))
+ : "\\lceil" === e || "⌈" === e
+ ? ((o = "⎡"), (h = c = "⎢"), (p = "Size4-Regular"), (m = "lceil"), (u = 667))
+ : "\\rfloor" === e || "⌋" === e
+ ? ((h = o = "⎥"), (c = "⎦"), (p = "Size4-Regular"), (m = "rfloor"), (u = 667))
+ : "\\rceil" === e || "⌉" === e
+ ? ((o = "⎤"), (h = c = "⎥"), (p = "Size4-Regular"), (m = "rceil"), (u = 667))
+ : "(" === e || "\\lparen" === e
+ ? ((o = "⎛"), (h = "⎜"), (c = "⎝"), (p = "Size4-Regular"), (m = "lparen"), (u = 875))
+ : ")" === e || "\\rparen" === e
+ ? ((o = "⎞"), (h = "⎟"), (c = "⎠"), (p = "Size4-Regular"), (m = "rparen"), (u = 875))
+ : "\\{" === e || "\\lbrace" === e
+ ? ((o = "⎧"), (s = "⎨"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\}" === e || "\\rbrace" === e
+ ? ((o = "⎫"), (s = "⎬"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\lgroup" === e || "⟮" === e
+ ? ((o = "⎧"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\rgroup" === e || "⟯" === e
+ ? ((o = "⎫"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : "\\lmoustache" === e || "⎰" === e
+ ? ((o = "⎧"), (c = "⎭"), (h = "⎪"), (p = "Size4-Regular"))
+ : ("\\rmoustache" !== e && "⎱" !== e) ||
+ ((o = "⎫"), (c = "⎩"), (h = "⎪"), (p = "Size4-Regular"));
+ var d = lr(o, p, a),
+ f = d.height + d.depth,
+ g = lr(h, p, a),
+ v = g.height + g.depth,
+ y = lr(c, p, a),
+ b = y.height + y.depth,
+ x = 0,
+ w = 1;
+ if (null !== s) {
+ var k = lr(s, p, a);
+ (x = k.height + k.depth), (w = 2);
+ }
+ var S = f + b + x,
+ M = S + Math.max(0, Math.ceil((t - S) / (w * v))) * w * v,
+ z = n.fontMetrics().axisHeight;
+ r && (z *= n.sizeMultiplier);
+ var T = M / 2 - z,
+ B = [];
+ if (m.length > 0) {
+ var N = M - f - b,
+ C = Math.round(1e3 * M),
+ q = (function (e, t) {
+ switch (e) {
+ case "lbrack":
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + t + " v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v" + t + " v1759 h84z";
+ case "rbrack":
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + t + " v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v" + t + " v1759 h84z";
+ case "vert":
+ return (
+ "M145 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" +
+ t +
+ " v585 h43z"
+ );
+ case "doublevert":
+ return (
+ "M145 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" +
+ t +
+ " v585 h43z\nM367 15 v585 v" +
+ t +
+ " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" +
+ -t +
+ " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v" +
+ t +
+ " v585 h43z"
+ );
+ case "lfloor":
+ return "M319 602 V0 H403 V602 v" + t + " v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v" + t + " v1715 H319z";
+ case "rfloor":
+ return "M319 602 V0 H403 V602 v" + t + " v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v" + t + " v1715 H319z";
+ case "lceil":
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + t + " v602 h84z\nM403 1759 V0 H319 V1759 v" + t + " v602 h84z";
+ case "rceil":
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + t + " v602 h84z\nM347 1759 V0 h-84 V1759 v" + t + " v602 h84z";
+ case "lparen":
+ return (
+ "M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0," +
+ (t + 84) +
+ "c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-" +
+ (t + 92) +
+ "c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z"
+ );
+ case "rparen":
+ return (
+ "M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0," +
+ (t + 9) +
+ "\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-" +
+ (t + 144) +
+ "c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z"
+ );
+ default:
+ throw new Error("Unknown stretchy delimiter.");
+ }
+ })(m, Math.round(1e3 * N)),
+ I = new ne(m, q),
+ R = (u / 1e3).toFixed(3) + "em",
+ H = (C / 1e3).toFixed(3) + "em",
+ O = new re([I], { width: R, height: H, viewBox: "0 0 " + u + " " + C }),
+ E = Qe.makeSvgSpan([], [O], n);
+ (E.height = C / 1e3), (E.style.width = R), (E.style.height = H), B.push({ type: "elem", elem: E });
+ } else {
+ if ((B.push(ur(c, p, a)), B.push(dr), null === s)) {
+ var L = M - f - b + 0.016;
+ B.push(pr(h, L, n));
+ } else {
+ var D = (M - f - b - x) / 2 + 0.016;
+ B.push(pr(h, D, n)), B.push(dr), B.push(ur(s, p, a)), B.push(dr), B.push(pr(h, D, n));
+ }
+ B.push(dr), B.push(ur(o, p, a));
+ }
+ var P = n.havingBaseStyle(A.TEXT),
+ V = Qe.makeVList({ positionType: "bottom", positionData: T, children: B }, P);
+ return hr(Qe.makeSpan(["delimsizing", "mult"], [V], P), A.TEXT, n, i);
+ },
+ yr = 0.08,
+ br = function (e, t, r, n, a) {
+ var i = (function (e, t, r) {
+ t *= 1e3;
+ var n = "";
+ switch (e) {
+ case "sqrtMain":
+ n = (function (e, t) {
+ return (
+ "M95," +
+ (622 + e + 80) +
+ "\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl" +
+ e / 2.075 +
+ " -" +
+ e +
+ "\nc5.3,-9.3,12,-14,20,-14\nH400000v" +
+ (40 + e) +
+ "H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM" +
+ (834 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize1":
+ n = (function (e, t) {
+ return (
+ "M263," +
+ (601 + e + 80) +
+ "c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl" +
+ e / 2.084 +
+ " -" +
+ e +
+ "\nc4.7,-7.3,11,-11,19,-11\nH40000v" +
+ (40 + e) +
+ "H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize2":
+ n = (function (e, t) {
+ return (
+ "M983 " +
+ (10 + e + 80) +
+ "\nl" +
+ e / 3.13 +
+ " -" +
+ e +
+ "\nc4,-6.7,10,-10,18,-10 H400000v" +
+ (40 + e) +
+ "\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize3":
+ n = (function (e, t) {
+ return (
+ "M424," +
+ (2398 + e + 80) +
+ "\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl" +
+ e / 4.223 +
+ " -" +
+ e +
+ "c4,-6.7,10,-10,18,-10 H400000\nv" +
+ (40 + e) +
+ "H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M" +
+ (1001 + e) +
+ " 80\nh400000v" +
+ (40 + e) +
+ "h-400000z"
+ );
+ })(t);
+ break;
+ case "sqrtSize4":
+ n = (function (e, t) {
+ return (
+ "M473," +
+ (2713 + e + 80) +
+ "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" +
+ e / 5.298 +
+ " -" +
+ e +
+ "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" +
+ (40 + e) +
+ "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" +
+ (1001 + e) +
+ " 80h400000v" +
+ (40 + e) +
+ "H1017.7z"
+ );
+ })(t);
+ break;
+ case "sqrtTall":
+ n = (function (e, t, r) {
+ return (
+ "M702 " +
+ (e + 80) +
+ "H400000" +
+ (40 + e) +
+ "\nH742v" +
+ (r - 54 - 80 - e) +
+ "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 80H400000v" +
+ (40 + e) +
+ "H742z"
+ );
+ })(t, 0, r);
+ }
+ return n;
+ })(e, n, r),
+ o = new ne(e, i),
+ s = new re([o], {
+ width: "400em",
+ height: W(t),
+ viewBox: "0 0 400000 " + r,
+ preserveAspectRatio: "xMinYMin slice",
+ });
+ return Qe.makeSvgSpan(["hide-tail"], [s], a);
+ },
+ xr = [
+ "(",
+ "\\lparen",
+ ")",
+ "\\rparen",
+ "[",
+ "\\lbrack",
+ "]",
+ "\\rbrack",
+ "\\{",
+ "\\lbrace",
+ "\\}",
+ "\\rbrace",
+ "\\lfloor",
+ "\\rfloor",
+ "⌊",
+ "⌋",
+ "\\lceil",
+ "\\rceil",
+ "⌈",
+ "⌉",
+ "\\surd",
+ ],
+ wr = [
+ "\\uparrow",
+ "\\downarrow",
+ "\\updownarrow",
+ "\\Uparrow",
+ "\\Downarrow",
+ "\\Updownarrow",
+ "|",
+ "\\|",
+ "\\vert",
+ "\\Vert",
+ "\\lvert",
+ "\\rvert",
+ "\\lVert",
+ "\\rVert",
+ "\\lgroup",
+ "\\rgroup",
+ "⟮",
+ "⟯",
+ "\\lmoustache",
+ "\\rmoustache",
+ "⎰",
+ "⎱",
+ ],
+ kr = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"],
+ Sr = [0, 1.2, 1.8, 2.4, 3],
+ Mr = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "large", size: 1 },
+ { type: "large", size: 2 },
+ { type: "large", size: 3 },
+ { type: "large", size: 4 },
+ ],
+ zr = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "stack" },
+ ],
+ Ar = [
+ { type: "small", style: A.SCRIPTSCRIPT },
+ { type: "small", style: A.SCRIPT },
+ { type: "small", style: A.TEXT },
+ { type: "large", size: 1 },
+ { type: "large", size: 2 },
+ { type: "large", size: 3 },
+ { type: "large", size: 4 },
+ { type: "stack" },
+ ],
+ Tr = function (e) {
+ if ("small" === e.type) return "Main-Regular";
+ if ("large" === e.type) return "Size" + e.size + "-Regular";
+ if ("stack" === e.type) return "Size4-Regular";
+ throw new Error("Add support for delim type '" + e.type + "' here.");
+ },
+ Br = function (e, t, r, n) {
+ for (var a = Math.min(2, 3 - n.style.size); a < r.length && "stack" !== r[a].type; a++) {
+ var i = lr(e, Tr(r[a]), "math"),
+ o = i.height + i.depth;
+ if (("small" === r[a].type && (o *= n.havingBaseStyle(r[a].style).sizeMultiplier), o > t)) return r[a];
+ }
+ return r[r.length - 1];
+ },
+ Nr = function (e, t, r, n, a, i) {
+ var o;
+ "<" === e || "\\lt" === e || "⟨" === e ? (e = "\\langle") : (">" !== e && "\\gt" !== e && "⟩" !== e) || (e = "\\rangle"),
+ (o = l(kr, e) ? Mr : l(xr, e) ? Ar : zr);
+ var s = Br(e, t, o, n);
+ return "small" === s.type
+ ? (function (e, t, r, n, a, i) {
+ var o = Qe.makeSymbol(e, "Main-Regular", a, n),
+ s = hr(o, t, n, i);
+ return r && cr(s, n, t), s;
+ })(e, s.style, r, n, a, i)
+ : "large" === s.type
+ ? mr(e, s.size, r, n, a, i)
+ : vr(e, t, r, n, a, i);
+ },
+ Cr = {
+ sqrtImage: function (e, t) {
+ var r,
+ n,
+ a = t.havingBaseSizing(),
+ i = Br("\\surd", e * a.sizeMultiplier, Ar, a),
+ o = a.sizeMultiplier,
+ s = Math.max(0, t.minRuleThickness - t.fontMetrics().sqrtRuleThickness),
+ l = 0,
+ h = 0,
+ c = 0;
+ return (
+ "small" === i.type
+ ? (e < 1 ? (o = 1) : e < 1.4 && (o = 0.7),
+ (h = (1 + s) / o),
+ ((r = br("sqrtMain", (l = (1 + s + yr) / o), (c = 1e3 + 1e3 * s + 80), s, t)).style.minWidth = "0.853em"),
+ (n = 0.833 / o))
+ : "large" === i.type
+ ? ((c = 1080 * Sr[i.size]),
+ (h = (Sr[i.size] + s) / o),
+ (l = (Sr[i.size] + s + yr) / o),
+ ((r = br("sqrtSize" + i.size, l, c, s, t)).style.minWidth = "1.02em"),
+ (n = 1 / o))
+ : ((l = e + s + yr),
+ (h = e + s),
+ (c = Math.floor(1e3 * e + s) + 80),
+ ((r = br("sqrtTall", l, c, s, t)).style.minWidth = "0.742em"),
+ (n = 1.056)),
+ (r.height = h),
+ (r.style.height = W(l)),
+ {
+ span: r,
+ advanceWidth: n,
+ ruleWidth: (t.fontMetrics().sqrtRuleThickness + s) * o,
+ }
+ );
+ },
+ sizedDelim: function (e, t, r, a, i) {
+ if (
+ ("<" === e || "\\lt" === e || "⟨" === e ? (e = "\\langle") : (">" !== e && "\\gt" !== e && "⟩" !== e) || (e = "\\rangle"),
+ l(xr, e) || l(kr, e))
+ )
+ return mr(e, t, !1, r, a, i);
+ if (l(wr, e)) return vr(e, Sr[t], !1, r, a, i);
+ throw new n("Illegal delimiter: '" + e + "'");
+ },
+ sizeToMaxHeight: Sr,
+ customSizedDelim: Nr,
+ leftRightDelim: function (e, t, r, n, a, i) {
+ var o = n.fontMetrics().axisHeight * n.sizeMultiplier,
+ s = 5 / n.fontMetrics().ptPerEm,
+ l = Math.max(t - o, r + o),
+ h = Math.max((l / 500) * 901, 2 * l - s);
+ return Nr(e, h, !0, n, a, i);
+ },
+ },
+ qr = {
+ "\\bigl": { mclass: "mopen", size: 1 },
+ "\\Bigl": { mclass: "mopen", size: 2 },
+ "\\biggl": { mclass: "mopen", size: 3 },
+ "\\Biggl": { mclass: "mopen", size: 4 },
+ "\\bigr": { mclass: "mclose", size: 1 },
+ "\\Bigr": { mclass: "mclose", size: 2 },
+ "\\biggr": { mclass: "mclose", size: 3 },
+ "\\Biggr": { mclass: "mclose", size: 4 },
+ "\\bigm": { mclass: "mrel", size: 1 },
+ "\\Bigm": { mclass: "mrel", size: 2 },
+ "\\biggm": { mclass: "mrel", size: 3 },
+ "\\Biggm": { mclass: "mrel", size: 4 },
+ "\\big": { mclass: "mord", size: 1 },
+ "\\Big": { mclass: "mord", size: 2 },
+ "\\bigg": { mclass: "mord", size: 3 },
+ "\\Bigg": { mclass: "mord", size: 4 },
+ },
+ Ir = [
+ "(",
+ "\\lparen",
+ ")",
+ "\\rparen",
+ "[",
+ "\\lbrack",
+ "]",
+ "\\rbrack",
+ "\\{",
+ "\\lbrace",
+ "\\}",
+ "\\rbrace",
+ "\\lfloor",
+ "\\rfloor",
+ "⌊",
+ "⌋",
+ "\\lceil",
+ "\\rceil",
+ "⌈",
+ "⌉",
+ "<",
+ ">",
+ "\\langle",
+ "⟨",
+ "\\rangle",
+ "⟩",
+ "\\lt",
+ "\\gt",
+ "\\lvert",
+ "\\rvert",
+ "\\lVert",
+ "\\rVert",
+ "\\lgroup",
+ "\\rgroup",
+ "⟮",
+ "⟯",
+ "\\lmoustache",
+ "\\rmoustache",
+ "⎰",
+ "⎱",
+ "/",
+ "\\backslash",
+ "|",
+ "\\vert",
+ "\\|",
+ "\\Vert",
+ "\\uparrow",
+ "\\Uparrow",
+ "\\downarrow",
+ "\\Downarrow",
+ "\\updownarrow",
+ "\\Updownarrow",
+ ".",
+ ];
+ function Rr(e, t) {
+ var r = Xt(e);
+ if (r && l(Ir, r.text)) return r;
+ throw new n(r ? "Invalid delimiter '" + r.text + "' after '" + t.funcName + "'" : "Invalid delimiter type '" + e.type + "'", e);
+ }
+ function Hr(e) {
+ if (!e.body) throw new Error("Bug: The leftright ParseNode wasn't fully parsed.");
+ }
+ lt({
+ type: "delimsizing",
+ names: [
+ "\\bigl",
+ "\\Bigl",
+ "\\biggl",
+ "\\Biggl",
+ "\\bigr",
+ "\\Bigr",
+ "\\biggr",
+ "\\Biggr",
+ "\\bigm",
+ "\\Bigm",
+ "\\biggm",
+ "\\Biggm",
+ "\\big",
+ "\\Big",
+ "\\bigg",
+ "\\Bigg",
+ ],
+ props: { numArgs: 1, argTypes: ["primitive"] },
+ handler: function (e, t) {
+ var r = Rr(t[0], e);
+ return {
+ type: "delimsizing",
+ mode: e.parser.mode,
+ size: qr[e.funcName].size,
+ mclass: qr[e.funcName].mclass,
+ delim: r.text,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ return "." === e.delim ? Qe.makeSpan([e.mclass]) : Cr.sizedDelim(e.delim, e.size, t, e.mode, [e.mclass]);
+ },
+ mathmlBuilder: function (e) {
+ var t = [];
+ "." !== e.delim && t.push(Ct(e.delim, e.mode));
+ var r = new Nt.MathNode("mo", t);
+ "mopen" === e.mclass || "mclose" === e.mclass ? r.setAttribute("fence", "true") : r.setAttribute("fence", "false"),
+ r.setAttribute("stretchy", "true");
+ var n = W(Cr.sizeToMaxHeight[e.size]);
+ return r.setAttribute("minsize", n), r.setAttribute("maxsize", n), r;
+ },
+ }),
+ lt({
+ type: "leftright-right",
+ names: ["\\right"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser.gullet.macros.get("\\current@color");
+ if (r && "string" != typeof r) throw new n("\\current@color set to non-string in \\right");
+ return {
+ type: "leftright-right",
+ mode: e.parser.mode,
+ delim: Rr(t[0], e).text,
+ color: r,
+ };
+ },
+ }),
+ lt({
+ type: "leftright",
+ names: ["\\left"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = Rr(t[0], e),
+ n = e.parser;
+ ++n.leftrightDepth;
+ var a = n.parseExpression(!1);
+ --n.leftrightDepth, n.expect("\\right", !1);
+ var i = Ut(n.parseFunction(), "leftright-right");
+ return {
+ type: "leftright",
+ mode: n.mode,
+ body: a,
+ left: r.text,
+ right: i.delim,
+ rightColor: i.color,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ Hr(e);
+ for (var r, n, a = vt(e.body, t, !0, ["mopen", "mclose"]), i = 0, o = 0, s = !1, l = 0; l < a.length; l++)
+ a[l].isMiddle ? (s = !0) : ((i = Math.max(a[l].height, i)), (o = Math.max(a[l].depth, o)));
+ if (
+ ((i *= t.sizeMultiplier),
+ (o *= t.sizeMultiplier),
+ (r = "." === e.left ? kt(t, ["mopen"]) : Cr.leftRightDelim(e.left, i, o, t, e.mode, ["mopen"])),
+ a.unshift(r),
+ s)
+ )
+ for (var h = 1; h < a.length; h++) {
+ var c = a[h].isMiddle;
+ c && (a[h] = Cr.leftRightDelim(c.delim, i, o, c.options, e.mode, []));
+ }
+ if ("." === e.right) n = kt(t, ["mclose"]);
+ else {
+ var m = e.rightColor ? t.withColor(e.rightColor) : t;
+ n = Cr.leftRightDelim(e.right, i, o, m, e.mode, ["mclose"]);
+ }
+ return a.push(n), Qe.makeSpan(["minner"], a, t);
+ },
+ mathmlBuilder: function (e, t) {
+ Hr(e);
+ var r = Rt(e.body, t);
+ if ("." !== e.left) {
+ var n = new Nt.MathNode("mo", [Ct(e.left, e.mode)]);
+ n.setAttribute("fence", "true"), r.unshift(n);
+ }
+ if ("." !== e.right) {
+ var a = new Nt.MathNode("mo", [Ct(e.right, e.mode)]);
+ a.setAttribute("fence", "true"), e.rightColor && a.setAttribute("mathcolor", e.rightColor), r.push(a);
+ }
+ return qt(r);
+ },
+ }),
+ lt({
+ type: "middle",
+ names: ["\\middle"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = Rr(t[0], e);
+ if (!e.parser.leftrightDepth) throw new n("\\middle without preceding \\left", r);
+ return { type: "middle", mode: e.parser.mode, delim: r.text };
+ },
+ htmlBuilder: function (e, t) {
+ var r;
+ if ("." === e.delim) r = kt(t, []);
+ else {
+ r = Cr.sizedDelim(e.delim, 1, t, e.mode, []);
+ var n = { delim: e.delim, options: t };
+ r.isMiddle = n;
+ }
+ return r;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = "\\vert" === e.delim || "|" === e.delim ? Ct("|", "text") : Ct(e.delim, e.mode),
+ n = new Nt.MathNode("mo", [r]);
+ return n.setAttribute("fence", "true"), n.setAttribute("lspace", "0.05em"), n.setAttribute("rspace", "0.05em"), n;
+ },
+ });
+ var Or = function (e, t) {
+ var r,
+ n,
+ a,
+ i = Qe.wrapFragment(St(e.body, t), t),
+ o = e.label.slice(1),
+ s = t.sizeMultiplier,
+ l = 0,
+ h = p(e.body);
+ if ("sout" === o)
+ ((r = Qe.makeSpan(["stretchy", "sout"])).height = t.fontMetrics().defaultRuleThickness / s), (l = -0.5 * t.fontMetrics().xHeight);
+ else if ("phase" === o) {
+ var c = X({ number: 0.6, unit: "pt" }, t),
+ m = X({ number: 0.35, unit: "ex" }, t);
+ s /= t.havingBaseSizing().sizeMultiplier;
+ var u = i.height + i.depth + c + m;
+ i.style.paddingLeft = W(u / 2 + c);
+ var d = Math.floor(1e3 * u * s),
+ f = "M400000 " + (n = d) + " H0 L" + n / 2 + " 0 l65 45 L145 " + (n - 80) + " H400000z",
+ g = new re([new ne("phase", f)], {
+ width: "400em",
+ height: W(d / 1e3),
+ viewBox: "0 0 400000 " + d,
+ preserveAspectRatio: "xMinYMin slice",
+ });
+ ((r = Qe.makeSvgSpan(["hide-tail"], [g], t)).style.height = W(u)), (l = i.depth + c + m);
+ } else {
+ /cancel/.test(o) ? h || i.classes.push("cancel-pad") : "angl" === o ? i.classes.push("anglpad") : i.classes.push("boxpad");
+ var v = 0,
+ y = 0,
+ b = 0;
+ /box/.test(o)
+ ? ((b = Math.max(t.fontMetrics().fboxrule, t.minRuleThickness)), (y = v = t.fontMetrics().fboxsep + ("colorbox" === o ? 0 : b)))
+ : "angl" === o
+ ? ((v = 4 * (b = Math.max(t.fontMetrics().defaultRuleThickness, t.minRuleThickness))), (y = Math.max(0, 0.25 - i.depth)))
+ : (y = v = h ? 0.2 : 0),
+ (r = (function (e, t, r, n, a) {
+ var i,
+ o = e.height + e.depth + r + n;
+ if (/fbox|color|angl/.test(t)) {
+ if (((i = Qe.makeSpan(["stretchy", t], [], a)), "fbox" === t)) {
+ var s = a.color && a.getColor();
+ s && (i.style.borderColor = s);
+ }
+ } else {
+ var l = [];
+ /^[bx]cancel$/.test(t) &&
+ l.push(
+ new ae({
+ x1: "0",
+ y1: "0",
+ x2: "100%",
+ y2: "100%",
+ "stroke-width": "0.046em",
+ }),
+ ),
+ /^x?cancel$/.test(t) &&
+ l.push(
+ new ae({
+ x1: "0",
+ y1: "100%",
+ x2: "100%",
+ y2: "0",
+ "stroke-width": "0.046em",
+ }),
+ );
+ var h = new re(l, { width: "100%", height: W(o) });
+ i = Qe.makeSvgSpan([], [h], a);
+ }
+ return (i.height = o), (i.style.height = W(o)), i;
+ })(i, o, v, y, t)),
+ /fbox|boxed|fcolorbox/.test(o)
+ ? ((r.style.borderStyle = "solid"), (r.style.borderWidth = W(b)))
+ : "angl" === o && 0.049 !== b && ((r.style.borderTopWidth = W(b)), (r.style.borderRightWidth = W(b))),
+ (l = i.depth + y),
+ e.backgroundColor && ((r.style.backgroundColor = e.backgroundColor), e.borderColor && (r.style.borderColor = e.borderColor));
+ }
+ if (e.backgroundColor)
+ a = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: r, shift: l },
+ { type: "elem", elem: i, shift: 0 },
+ ],
+ },
+ t,
+ );
+ else {
+ var x = /cancel|phase/.test(o) ? ["svg-align"] : [];
+ a = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: i, shift: 0 },
+ { type: "elem", elem: r, shift: l, wrapperClasses: x },
+ ],
+ },
+ t,
+ );
+ }
+ return (
+ /cancel/.test(o) && ((a.height = i.height), (a.depth = i.depth)),
+ /cancel/.test(o) && !h ? Qe.makeSpan(["mord", "cancel-lap"], [a], t) : Qe.makeSpan(["mord"], [a], t)
+ );
+ },
+ Er = function (e, t) {
+ var r = 0,
+ n = new Nt.MathNode(e.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [Ot(e.body, t)]);
+ switch (e.label) {
+ case "\\cancel":
+ n.setAttribute("notation", "updiagonalstrike");
+ break;
+ case "\\bcancel":
+ n.setAttribute("notation", "downdiagonalstrike");
+ break;
+ case "\\phase":
+ n.setAttribute("notation", "phasorangle");
+ break;
+ case "\\sout":
+ n.setAttribute("notation", "horizontalstrike");
+ break;
+ case "\\fbox":
+ n.setAttribute("notation", "box");
+ break;
+ case "\\angl":
+ n.setAttribute("notation", "actuarial");
+ break;
+ case "\\fcolorbox":
+ case "\\colorbox":
+ if (
+ ((r = t.fontMetrics().fboxsep * t.fontMetrics().ptPerEm),
+ n.setAttribute("width", "+" + 2 * r + "pt"),
+ n.setAttribute("height", "+" + 2 * r + "pt"),
+ n.setAttribute("lspace", r + "pt"),
+ n.setAttribute("voffset", r + "pt"),
+ "\\fcolorbox" === e.label)
+ ) {
+ var a = Math.max(t.fontMetrics().fboxrule, t.minRuleThickness);
+ n.setAttribute("style", "border: " + a + "em solid " + String(e.borderColor));
+ }
+ break;
+ case "\\xcancel":
+ n.setAttribute("notation", "updiagonalstrike downdiagonalstrike");
+ }
+ return e.backgroundColor && n.setAttribute("mathbackground", e.backgroundColor), n;
+ };
+ lt({
+ type: "enclose",
+ names: ["\\colorbox"],
+ props: { numArgs: 2, allowedInText: !0, argTypes: ["color", "text"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName,
+ i = Ut(t[0], "color-token").color,
+ o = t[1];
+ return { type: "enclose", mode: n.mode, label: a, backgroundColor: i, body: o };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\fcolorbox"],
+ props: { numArgs: 3, allowedInText: !0, argTypes: ["color", "color", "text"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = e.funcName,
+ i = Ut(t[0], "color-token").color,
+ o = Ut(t[1], "color-token").color,
+ s = t[2];
+ return {
+ type: "enclose",
+ mode: n.mode,
+ label: a,
+ backgroundColor: o,
+ borderColor: i,
+ body: s,
+ };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\fbox"],
+ props: { numArgs: 1, argTypes: ["hbox"], allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "enclose", mode: e.parser.mode, label: "\\fbox", body: t[0] };
+ },
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "enclose", mode: r.mode, label: n, body: a };
+ },
+ htmlBuilder: Or,
+ mathmlBuilder: Er,
+ }),
+ lt({
+ type: "enclose",
+ names: ["\\angl"],
+ props: { numArgs: 1, argTypes: ["hbox"], allowedInText: !1 },
+ handler: function (e, t) {
+ return { type: "enclose", mode: e.parser.mode, label: "\\angl", body: t[0] };
+ },
+ });
+ var Lr = {};
+ function Dr(e) {
+ for (
+ var t = e.type,
+ r = e.names,
+ n = e.props,
+ a = e.handler,
+ i = e.htmlBuilder,
+ o = e.mathmlBuilder,
+ s = {
+ type: t,
+ numArgs: n.numArgs || 0,
+ allowedInText: !1,
+ numOptionalArgs: 0,
+ handler: a,
+ },
+ l = 0;
+ l < r.length;
+ ++l
+ )
+ Lr[r[l]] = s;
+ i && (ot[t] = i), o && (st[t] = o);
+ }
+ var Pr = {};
+ function Vr(e, t) {
+ Pr[e] = t;
+ }
+ var Fr = (function () {
+ function e(e, t, r) {
+ (this.lexer = void 0), (this.start = void 0), (this.end = void 0), (this.lexer = e), (this.start = t), (this.end = r);
+ }
+ return (
+ (e.range = function (t, r) {
+ return r ? (t && t.loc && r.loc && t.loc.lexer === r.loc.lexer ? new e(t.loc.lexer, t.loc.start, r.loc.end) : null) : t && t.loc;
+ }),
+ e
+ );
+ })(),
+ Gr = (function () {
+ function e(e, t) {
+ (this.text = void 0), (this.loc = void 0), (this.noexpand = void 0), (this.treatAsRelax = void 0), (this.text = e), (this.loc = t);
+ }
+ return (
+ (e.prototype.range = function (t, r) {
+ return new e(r, Fr.range(this, t));
+ }),
+ e
+ );
+ })();
+ function Ur(e) {
+ var t = [];
+ e.consumeSpaces();
+ var r = e.fetch().text;
+ for ("\\relax" === r && (e.consume(), e.consumeSpaces(), (r = e.fetch().text)); "\\hline" === r || "\\hdashline" === r; )
+ e.consume(), t.push("\\hdashline" === r), e.consumeSpaces(), (r = e.fetch().text);
+ return t;
+ }
+ var Yr = function (e) {
+ if (!e.parser.settings.displayMode) throw new n("{" + e.envName + "} can be used only in display mode.");
+ };
+ function Xr(e) {
+ if (-1 === e.indexOf("ed")) return -1 === e.indexOf("*");
+ }
+ function Wr(e, t, r) {
+ var a = t.hskipBeforeAndAfter,
+ i = t.addJot,
+ o = t.cols,
+ s = t.arraystretch,
+ l = t.colSeparationType,
+ h = t.autoTag,
+ c = t.singleRow,
+ m = t.emptySingleRow,
+ u = t.maxNumCols,
+ p = t.leqno;
+ if ((e.gullet.beginGroup(), c || e.gullet.macros.set("\\cr", "\\\\\\relax"), !s)) {
+ var d = e.gullet.expandMacroAsText("\\arraystretch");
+ if (null == d) s = 1;
+ else if (!(s = parseFloat(d)) || s < 0) throw new n("Invalid \\arraystretch: " + d);
+ }
+ e.gullet.beginGroup();
+ var f = [],
+ g = [f],
+ v = [],
+ y = [],
+ b = null != h ? [] : void 0;
+ function x() {
+ h && e.gullet.macros.set("\\@eqnsw", "1", !0);
+ }
+ function w() {
+ b &&
+ (e.gullet.macros.get("\\df@tag")
+ ? (b.push(e.subparse([new Gr("\\df@tag")])), e.gullet.macros.set("\\df@tag", void 0, !0))
+ : b.push(Boolean(h) && "1" === e.gullet.macros.get("\\@eqnsw")));
+ }
+ for (x(), y.push(Ur(e)); ; ) {
+ var k = e.parseExpression(!1, c ? "\\end" : "\\\\");
+ e.gullet.endGroup(),
+ e.gullet.beginGroup(),
+ (k = { type: "ordgroup", mode: e.mode, body: k }),
+ r && (k = { type: "styling", mode: e.mode, style: r, body: [k] }),
+ f.push(k);
+ var S = e.fetch().text;
+ if ("&" === S) {
+ if (u && f.length === u) {
+ if (c || l) throw new n("Too many tab characters: &", e.nextToken);
+ e.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument.");
+ }
+ e.consume();
+ } else {
+ if ("\\end" === S) {
+ w(),
+ 1 === f.length && "styling" === k.type && 0 === k.body[0].body.length && (g.length > 1 || !m) && g.pop(),
+ y.length < g.length + 1 && y.push([]);
+ break;
+ }
+ if ("\\\\" !== S) throw new n("Expected & or \\\\ or \\cr or \\end", e.nextToken);
+ e.consume();
+ var M = void 0;
+ " " !== e.gullet.future().text && (M = e.parseSizeGroup(!0)),
+ v.push(M ? M.value : null),
+ w(),
+ y.push(Ur(e)),
+ (f = []),
+ g.push(f),
+ x();
+ }
+ }
+ return (
+ e.gullet.endGroup(),
+ e.gullet.endGroup(),
+ {
+ type: "array",
+ mode: e.mode,
+ addJot: i,
+ arraystretch: s,
+ body: g,
+ cols: o,
+ rowGaps: v,
+ hskipBeforeAndAfter: a,
+ hLinesBeforeRow: y,
+ colSeparationType: l,
+ tags: b,
+ leqno: p,
+ }
+ );
+ }
+ function _r(e) {
+ return "d" === e.slice(0, 1) ? "display" : "text";
+ }
+ var jr = function (e, t) {
+ var r,
+ a,
+ i = e.body.length,
+ o = e.hLinesBeforeRow,
+ s = 0,
+ l = new Array(i),
+ c = [],
+ m = Math.max(t.fontMetrics().arrayRuleWidth, t.minRuleThickness),
+ u = 1 / t.fontMetrics().ptPerEm,
+ p = 5 * u;
+ e.colSeparationType && "small" === e.colSeparationType && (p = (t.havingStyle(A.SCRIPT).sizeMultiplier / t.sizeMultiplier) * 0.2778);
+ var d = "CD" === e.colSeparationType ? X({ number: 3, unit: "ex" }, t) : 12 * u,
+ f = 3 * u,
+ g = e.arraystretch * d,
+ v = 0.7 * g,
+ y = 0.3 * g,
+ b = 0;
+ function x(e) {
+ for (var t = 0; t < e.length; ++t) t > 0 && (b += 0.25), c.push({ pos: b, isDashed: e[t] });
+ }
+ for (x(o[0]), r = 0; r < e.body.length; ++r) {
+ var w = e.body[r],
+ k = v,
+ S = y;
+ s < w.length && (s = w.length);
+ var M = new Array(w.length);
+ for (a = 0; a < w.length; ++a) {
+ var z = St(w[a], t);
+ S < z.depth && (S = z.depth), k < z.height && (k = z.height), (M[a] = z);
+ }
+ var T = e.rowGaps[r],
+ B = 0;
+ T && (B = X(T, t)) > 0 && (S < (B += y) && (S = B), (B = 0)),
+ e.addJot && (S += f),
+ (M.height = k),
+ (M.depth = S),
+ (b += k),
+ (M.pos = b),
+ (b += S + B),
+ (l[r] = M),
+ x(o[r + 1]);
+ }
+ var N,
+ C,
+ q = b / 2 + t.fontMetrics().axisHeight,
+ I = e.cols || [],
+ R = [],
+ H = [];
+ if (
+ e.tags &&
+ e.tags.some(function (e) {
+ return e;
+ })
+ )
+ for (r = 0; r < i; ++r) {
+ var O = l[r],
+ E = O.pos - q,
+ L = e.tags[r],
+ D = void 0;
+ ((D = !0 === L ? Qe.makeSpan(["eqn-num"], [], t) : Qe.makeSpan([], !1 === L ? [] : vt(L, t, !0), t)).depth = O.depth),
+ (D.height = O.height),
+ H.push({ type: "elem", elem: D, shift: E });
+ }
+ for (a = 0, C = 0; a < s || C < I.length; ++a, ++C) {
+ for (var P = I[C] || {}, V = !0; "separator" === P.type; ) {
+ if (
+ (V || (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(t.fontMetrics().doubleRuleSep)), R.push(N)),
+ "|" !== P.separator && ":" !== P.separator)
+ )
+ throw new n("Invalid separator type: " + P.separator);
+ var F = "|" === P.separator ? "solid" : "dashed",
+ G = Qe.makeSpan(["vertical-separator"], [], t);
+ (G.style.height = W(b)), (G.style.borderRightWidth = W(m)), (G.style.borderRightStyle = F), (G.style.margin = "0 " + W(-m / 2));
+ var U = b - q;
+ U && (G.style.verticalAlign = W(-U)), R.push(G), (P = I[++C] || {}), (V = !1);
+ }
+ if (!(a >= s)) {
+ var Y = void 0;
+ (a > 0 || e.hskipBeforeAndAfter) &&
+ 0 !== (Y = h(P.pregap, p)) &&
+ (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(Y)), R.push(N));
+ var _ = [];
+ for (r = 0; r < i; ++r) {
+ var j = l[r],
+ $ = j[a];
+ if ($) {
+ var Z = j.pos - q;
+ ($.depth = j.depth), ($.height = j.height), _.push({ type: "elem", elem: $, shift: Z });
+ }
+ }
+ (_ = Qe.makeVList({ positionType: "individualShift", children: _ }, t)),
+ (_ = Qe.makeSpan(["col-align-" + (P.align || "c")], [_])),
+ R.push(_),
+ (a < s - 1 || e.hskipBeforeAndAfter) &&
+ 0 !== (Y = h(P.postgap, p)) &&
+ (((N = Qe.makeSpan(["arraycolsep"], [])).style.width = W(Y)), R.push(N));
+ }
+ }
+ if (((l = Qe.makeSpan(["mtable"], R)), c.length > 0)) {
+ for (
+ var K = Qe.makeLineSpan("hline", t, m), J = Qe.makeLineSpan("hdashline", t, m), Q = [{ type: "elem", elem: l, shift: 0 }];
+ c.length > 0;
+
+ ) {
+ var ee = c.pop(),
+ te = ee.pos - q;
+ ee.isDashed ? Q.push({ type: "elem", elem: J, shift: te }) : Q.push({ type: "elem", elem: K, shift: te });
+ }
+ l = Qe.makeVList({ positionType: "individualShift", children: Q }, t);
+ }
+ if (0 === H.length) return Qe.makeSpan(["mord"], [l], t);
+ var re = Qe.makeVList({ positionType: "individualShift", children: H }, t);
+ return (re = Qe.makeSpan(["tag"], [re], t)), Qe.makeFragment([l, re]);
+ },
+ $r = { c: "center ", l: "left ", r: "right " },
+ Zr = function (e, t) {
+ for (
+ var r = [], n = new Nt.MathNode("mtd", [], ["mtr-glue"]), a = new Nt.MathNode("mtd", [], ["mml-eqn-num"]), i = 0;
+ i < e.body.length;
+ i++
+ ) {
+ for (var o = e.body[i], s = [], l = 0; l < o.length; l++) s.push(new Nt.MathNode("mtd", [Ot(o[l], t)]));
+ e.tags && e.tags[i] && (s.unshift(n), s.push(n), e.leqno ? s.unshift(a) : s.push(a)), r.push(new Nt.MathNode("mtr", s));
+ }
+ var h = new Nt.MathNode("mtable", r),
+ c = 0.5 === e.arraystretch ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0);
+ h.setAttribute("rowspacing", W(c));
+ var m = "",
+ u = "";
+ if (e.cols && e.cols.length > 0) {
+ var p = e.cols,
+ d = "",
+ f = !1,
+ g = 0,
+ v = p.length;
+ "separator" === p[0].type && ((m += "top "), (g = 1)), "separator" === p[p.length - 1].type && ((m += "bottom "), (v -= 1));
+ for (var y = g; y < v; y++)
+ "align" === p[y].type
+ ? ((u += $r[p[y].align]), f && (d += "none "), (f = !0))
+ : "separator" === p[y].type && f && ((d += "|" === p[y].separator ? "solid " : "dashed "), (f = !1));
+ h.setAttribute("columnalign", u.trim()), /[sd]/.test(d) && h.setAttribute("columnlines", d.trim());
+ }
+ if ("align" === e.colSeparationType) {
+ for (var b = e.cols || [], x = "", w = 1; w < b.length; w++) x += w % 2 ? "0em " : "1em ";
+ h.setAttribute("columnspacing", x.trim());
+ } else
+ "alignat" === e.colSeparationType || "gather" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0em")
+ : "small" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0.2778em")
+ : "CD" === e.colSeparationType
+ ? h.setAttribute("columnspacing", "0.5em")
+ : h.setAttribute("columnspacing", "1em");
+ var k = "",
+ S = e.hLinesBeforeRow;
+ (m += S[0].length > 0 ? "left " : ""), (m += S[S.length - 1].length > 0 ? "right " : "");
+ for (var M = 1; M < S.length - 1; M++) k += 0 === S[M].length ? "none " : S[M][0] ? "dashed " : "solid ";
+ return (
+ /[sd]/.test(k) && h.setAttribute("rowlines", k.trim()),
+ "" !== m && (h = new Nt.MathNode("menclose", [h])).setAttribute("notation", m.trim()),
+ e.arraystretch && e.arraystretch < 1 && (h = new Nt.MathNode("mstyle", [h])).setAttribute("scriptlevel", "1"),
+ h
+ );
+ },
+ Kr = function (e, t) {
+ -1 === e.envName.indexOf("ed") && Yr(e);
+ var r,
+ a = [],
+ i = e.envName.indexOf("at") > -1 ? "alignat" : "align",
+ o = "split" === e.envName,
+ s = Wr(
+ e.parser,
+ {
+ cols: a,
+ addJot: !0,
+ autoTag: o ? void 0 : Xr(e.envName),
+ emptySingleRow: !0,
+ colSeparationType: i,
+ maxNumCols: o ? 2 : void 0,
+ leqno: e.parser.settings.leqno,
+ },
+ "display",
+ ),
+ l = 0,
+ h = { type: "ordgroup", mode: e.mode, body: [] };
+ if (t[0] && "ordgroup" === t[0].type) {
+ for (var c = "", m = 0; m < t[0].body.length; m++) c += Ut(t[0].body[m], "textord").text;
+ (r = Number(c)), (l = 2 * r);
+ }
+ var u = !l;
+ s.body.forEach(function (e) {
+ for (var t = 1; t < e.length; t += 2) {
+ var a = Ut(e[t], "styling");
+ Ut(a.body[0], "ordgroup").body.unshift(h);
+ }
+ if (u) l < e.length && (l = e.length);
+ else {
+ var i = e.length / 2;
+ if (r < i) throw new n("Too many math in a row: expected " + r + ", but got " + i, e[0]);
+ }
+ });
+ for (var p = 0; p < l; ++p) {
+ var d = "r",
+ f = 0;
+ p % 2 == 1 ? (d = "l") : p > 0 && u && (f = 1), (a[p] = { type: "align", align: d, pregap: f, postgap: 0 });
+ }
+ return (s.colSeparationType = u ? "align" : "alignat"), s;
+ };
+ Dr({
+ type: "array",
+ names: ["array", "darray"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = (Xt(t[0]) ? [t[0]] : Ut(t[0], "ordgroup").body).map(function (e) {
+ var t = Yt(e).text;
+ if (-1 !== "lcr".indexOf(t)) return { type: "align", align: t };
+ if ("|" === t) return { type: "separator", separator: "|" };
+ if (":" === t) return { type: "separator", separator: ":" };
+ throw new n("Unknown column alignment: " + t, e);
+ }),
+ a = { cols: r, hskipBeforeAndAfter: !0, maxNumCols: r.length };
+ return Wr(e.parser, a, _r(e.envName));
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: [
+ "matrix",
+ "pmatrix",
+ "bmatrix",
+ "Bmatrix",
+ "vmatrix",
+ "Vmatrix",
+ "matrix*",
+ "pmatrix*",
+ "bmatrix*",
+ "Bmatrix*",
+ "vmatrix*",
+ "Vmatrix*",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = {
+ matrix: null,
+ pmatrix: ["(", ")"],
+ bmatrix: ["[", "]"],
+ Bmatrix: ["\\{", "\\}"],
+ vmatrix: ["|", "|"],
+ Vmatrix: ["\\Vert", "\\Vert"],
+ }[e.envName.replace("*", "")],
+ r = "c",
+ a = { hskipBeforeAndAfter: !1, cols: [{ type: "align", align: r }] };
+ if ("*" === e.envName.charAt(e.envName.length - 1)) {
+ var i = e.parser;
+ if ((i.consumeSpaces(), "[" === i.fetch().text)) {
+ if ((i.consume(), i.consumeSpaces(), (r = i.fetch().text), -1 === "lcr".indexOf(r)))
+ throw new n("Expected l or c or r", i.nextToken);
+ i.consume(), i.consumeSpaces(), i.expect("]"), i.consume(), (a.cols = [{ type: "align", align: r }]);
+ }
+ }
+ var o = Wr(e.parser, a, _r(e.envName)),
+ s = Math.max.apply(
+ Math,
+ [0].concat(
+ o.body.map(function (e) {
+ return e.length;
+ }),
+ ),
+ );
+ return (
+ (o.cols = new Array(s).fill({ type: "align", align: r })),
+ t
+ ? {
+ type: "leftright",
+ mode: e.mode,
+ body: [o],
+ left: t[0],
+ right: t[1],
+ rightColor: void 0,
+ }
+ : o
+ );
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["smallmatrix"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = Wr(e.parser, { arraystretch: 0.5 }, "script");
+ return (t.colSeparationType = "small"), t;
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["subarray"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = (Xt(t[0]) ? [t[0]] : Ut(t[0], "ordgroup").body).map(function (e) {
+ var t = Yt(e).text;
+ if (-1 !== "lc".indexOf(t)) return { type: "align", align: t };
+ throw new n("Unknown column alignment: " + t, e);
+ });
+ if (r.length > 1) throw new n("{subarray} can contain only one column");
+ var a = { cols: r, hskipBeforeAndAfter: !1, arraystretch: 0.5 };
+ if ((a = Wr(e.parser, a, "script")).body.length > 0 && a.body[0].length > 1) throw new n("{subarray} can contain only one column");
+ return a;
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["cases", "dcases", "rcases", "drcases"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = Wr(
+ e.parser,
+ {
+ arraystretch: 1.2,
+ cols: [
+ { type: "align", align: "l", pregap: 0, postgap: 1 },
+ { type: "align", align: "l", pregap: 0, postgap: 0 },
+ ],
+ },
+ _r(e.envName),
+ );
+ return {
+ type: "leftright",
+ mode: e.mode,
+ body: [t],
+ left: e.envName.indexOf("r") > -1 ? "." : "\\{",
+ right: e.envName.indexOf("r") > -1 ? "\\}" : ".",
+ rightColor: void 0,
+ };
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["align", "align*", "aligned", "split"],
+ props: { numArgs: 0 },
+ handler: Kr,
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["gathered", "gather", "gather*"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ l(["gather", "gather*"], e.envName) && Yr(e);
+ var t = {
+ cols: [{ type: "align", align: "c" }],
+ addJot: !0,
+ colSeparationType: "gather",
+ autoTag: Xr(e.envName),
+ emptySingleRow: !0,
+ leqno: e.parser.settings.leqno,
+ };
+ return Wr(e.parser, t, "display");
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["alignat", "alignat*", "alignedat"],
+ props: { numArgs: 1 },
+ handler: Kr,
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["equation", "equation*"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ Yr(e);
+ var t = {
+ autoTag: Xr(e.envName),
+ emptySingleRow: !0,
+ singleRow: !0,
+ maxNumCols: 1,
+ leqno: e.parser.settings.leqno,
+ };
+ return Wr(e.parser, t, "display");
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Dr({
+ type: "array",
+ names: ["CD"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ return (
+ Yr(e),
+ (function (e) {
+ var t = [];
+ for (e.gullet.beginGroup(), e.gullet.macros.set("\\cr", "\\\\\\relax"), e.gullet.beginGroup(); ; ) {
+ t.push(e.parseExpression(!1, "\\\\")), e.gullet.endGroup(), e.gullet.beginGroup();
+ var r = e.fetch().text;
+ if ("&" !== r && "\\\\" !== r) {
+ if ("\\end" === r) {
+ 0 === t[t.length - 1].length && t.pop();
+ break;
+ }
+ throw new n("Expected \\\\ or \\cr or \\end", e.nextToken);
+ }
+ e.consume();
+ }
+ for (var a, i, o = [], s = [o], l = 0; l < t.length; l++) {
+ for (var h = t[l], c = { type: "styling", body: [], mode: "math", style: "display" }, m = 0; m < h.length; m++)
+ if (tr(h[m])) {
+ o.push(c);
+ var u = Yt(h[(m += 1)]).text,
+ p = new Array(2);
+ if (
+ ((p[0] = { type: "ordgroup", mode: "math", body: [] }),
+ (p[1] = { type: "ordgroup", mode: "math", body: [] }),
+ "=|.".indexOf(u) > -1)
+ );
+ else {
+ if (!("<>AV".indexOf(u) > -1)) throw new n('Expected one of "<>AV=|." after @', h[m]);
+ for (var d = 0; d < 2; d++) {
+ for (var f = !0, g = m + 1; g < h.length; g++) {
+ if (((i = u), ("mathord" === (a = h[g]).type || "atom" === a.type) && a.text === i)) {
+ (f = !1), (m = g);
+ break;
+ }
+ if (tr(h[g])) throw new n("Missing a " + u + " character to complete a CD arrow.", h[g]);
+ p[d].body.push(h[g]);
+ }
+ if (f) throw new n("Missing a " + u + " character to complete a CD arrow.", h[m]);
+ }
+ }
+ var v = {
+ type: "styling",
+ body: [rr(u, p, e)],
+ mode: "math",
+ style: "display",
+ };
+ o.push(v), (c = { type: "styling", body: [], mode: "math", style: "display" });
+ } else c.body.push(h[m]);
+ l % 2 == 0 ? o.push(c) : o.shift(), (o = []), s.push(o);
+ }
+ return (
+ e.gullet.endGroup(),
+ e.gullet.endGroup(),
+ {
+ type: "array",
+ mode: "math",
+ body: s,
+ arraystretch: 1,
+ addJot: !0,
+ rowGaps: [null],
+ cols: new Array(s[0].length).fill({
+ type: "align",
+ align: "c",
+ pregap: 0.25,
+ postgap: 0.25,
+ }),
+ colSeparationType: "CD",
+ hLinesBeforeRow: new Array(s.length + 1).fill([]),
+ }
+ );
+ })(e.parser)
+ );
+ },
+ htmlBuilder: jr,
+ mathmlBuilder: Zr,
+ }),
+ Vr("\\nonumber", "\\gdef\\@eqnsw{0}"),
+ Vr("\\notag", "\\nonumber"),
+ lt({
+ type: "text",
+ names: ["\\hline", "\\hdashline"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !0 },
+ handler: function (e, t) {
+ throw new n(e.funcName + " valid only within array environment");
+ },
+ });
+ var Jr = Lr;
+ lt({
+ type: "environment",
+ names: ["\\begin", "\\end"],
+ props: { numArgs: 1, argTypes: ["text"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ a = e.funcName,
+ i = t[0];
+ if ("ordgroup" !== i.type) throw new n("Invalid environment name", i);
+ for (var o = "", s = 0; s < i.body.length; ++s) o += Ut(i.body[s], "textord").text;
+ if ("\\begin" === a) {
+ if (!Jr.hasOwnProperty(o)) throw new n("No such environment: " + o, i);
+ var l = Jr[o],
+ h = r.parseArguments("\\begin{" + o + "}", l),
+ c = h.args,
+ m = h.optArgs,
+ u = { mode: r.mode, envName: o, parser: r },
+ p = l.handler(u, c, m);
+ r.expect("\\end", !1);
+ var d = r.nextToken,
+ f = Ut(r.parseFunction(), "environment");
+ if (f.name !== o) throw new n("Mismatch: \\begin{" + o + "} matched by \\end{" + f.name + "}", d);
+ return p;
+ }
+ return { type: "environment", mode: r.mode, name: o, nameGroup: i };
+ },
+ });
+ var Qr = function (e, t) {
+ var r = e.font,
+ n = t.withFont(r);
+ return St(e.body, n);
+ },
+ en = function (e, t) {
+ var r = e.font,
+ n = t.withFont(r);
+ return Ot(e.body, n);
+ },
+ tn = {
+ "\\Bbb": "\\mathbb",
+ "\\bold": "\\mathbf",
+ "\\frak": "\\mathfrak",
+ "\\bm": "\\boldsymbol",
+ };
+ lt({
+ type: "font",
+ names: [
+ "\\mathrm",
+ "\\mathit",
+ "\\mathbf",
+ "\\mathnormal",
+ "\\mathbb",
+ "\\mathcal",
+ "\\mathfrak",
+ "\\mathscr",
+ "\\mathsf",
+ "\\mathtt",
+ "\\Bbb",
+ "\\bold",
+ "\\frak",
+ ],
+ props: { numArgs: 1, allowedInArgument: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = ct(t[0]),
+ i = n;
+ return i in tn && (i = tn[i]), { type: "font", mode: r.mode, font: i.slice(1), body: a };
+ },
+ htmlBuilder: Qr,
+ mathmlBuilder: en,
+ }),
+ lt({
+ type: "mclass",
+ names: ["\\boldsymbol", "\\bm"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0],
+ a = p(n);
+ return {
+ type: "mclass",
+ mode: r.mode,
+ mclass: Qt(n),
+ body: [{ type: "font", mode: r.mode, font: "boldsymbol", body: n }],
+ isCharacterBox: a,
+ };
+ },
+ }),
+ lt({
+ type: "font",
+ names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = e.breakOnTokenText,
+ i = r.mode,
+ o = r.parseExpression(!0, a);
+ return {
+ type: "font",
+ mode: i,
+ font: "math" + n.slice(1),
+ body: { type: "ordgroup", mode: r.mode, body: o },
+ };
+ },
+ htmlBuilder: Qr,
+ mathmlBuilder: en,
+ });
+ var rn = function (e, t) {
+ var r = t;
+ return (
+ "display" === e
+ ? (r = r.id >= A.SCRIPT.id ? r.text() : A.DISPLAY)
+ : "text" === e && r.size === A.DISPLAY.size
+ ? (r = A.TEXT)
+ : "script" === e
+ ? (r = A.SCRIPT)
+ : "scriptscript" === e && (r = A.SCRIPTSCRIPT),
+ r
+ );
+ },
+ nn = function (e, t) {
+ var r,
+ n = rn(e.size, t.style),
+ a = n.fracNum(),
+ i = n.fracDen();
+ r = t.havingStyle(a);
+ var o = St(e.numer, r, t);
+ if (e.continued) {
+ var s = 8.5 / t.fontMetrics().ptPerEm,
+ l = 3.5 / t.fontMetrics().ptPerEm;
+ (o.height = o.height < s ? s : o.height), (o.depth = o.depth < l ? l : o.depth);
+ }
+ r = t.havingStyle(i);
+ var h,
+ c,
+ m,
+ u,
+ p,
+ d,
+ f,
+ g,
+ v,
+ y,
+ b = St(e.denom, r, t);
+ if (
+ (e.hasBarLine
+ ? (e.barSize ? ((c = X(e.barSize, t)), (h = Qe.makeLineSpan("frac-line", t, c))) : (h = Qe.makeLineSpan("frac-line", t)),
+ (c = h.height),
+ (m = h.height))
+ : ((h = null), (c = 0), (m = t.fontMetrics().defaultRuleThickness)),
+ n.size === A.DISPLAY.size || "display" === e.size
+ ? ((u = t.fontMetrics().num1), (p = c > 0 ? 3 * m : 7 * m), (d = t.fontMetrics().denom1))
+ : (c > 0 ? ((u = t.fontMetrics().num2), (p = m)) : ((u = t.fontMetrics().num3), (p = 3 * m)), (d = t.fontMetrics().denom2)),
+ h)
+ ) {
+ var x = t.fontMetrics().axisHeight;
+ u - o.depth - (x + 0.5 * c) < p && (u += p - (u - o.depth - (x + 0.5 * c))),
+ x - 0.5 * c - (b.height - d) < p && (d += p - (x - 0.5 * c - (b.height - d))),
+ (f = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: b, shift: d },
+ { type: "elem", elem: h, shift: -(x - 0.5 * c) },
+ { type: "elem", elem: o, shift: -u },
+ ],
+ },
+ t,
+ ));
+ } else {
+ var w = u - o.depth - (b.height - d);
+ w < p && ((u += 0.5 * (p - w)), (d += 0.5 * (p - w))),
+ (f = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: b, shift: d },
+ { type: "elem", elem: o, shift: -u },
+ ],
+ },
+ t,
+ ));
+ }
+ return (
+ (r = t.havingStyle(n)),
+ (f.height *= r.sizeMultiplier / t.sizeMultiplier),
+ (f.depth *= r.sizeMultiplier / t.sizeMultiplier),
+ (g =
+ n.size === A.DISPLAY.size
+ ? t.fontMetrics().delim1
+ : n.size === A.SCRIPTSCRIPT.size
+ ? t.havingStyle(A.SCRIPT).fontMetrics().delim2
+ : t.fontMetrics().delim2),
+ (v = null == e.leftDelim ? kt(t, ["mopen"]) : Cr.customSizedDelim(e.leftDelim, g, !0, t.havingStyle(n), e.mode, ["mopen"])),
+ (y = e.continued
+ ? Qe.makeSpan([])
+ : null == e.rightDelim
+ ? kt(t, ["mclose"])
+ : Cr.customSizedDelim(e.rightDelim, g, !0, t.havingStyle(n), e.mode, ["mclose"])),
+ Qe.makeSpan(["mord"].concat(r.sizingClasses(t)), [v, Qe.makeSpan(["mfrac"], [f]), y], t)
+ );
+ },
+ an = function (e, t) {
+ var r = new Nt.MathNode("mfrac", [Ot(e.numer, t), Ot(e.denom, t)]);
+ if (e.hasBarLine) {
+ if (e.barSize) {
+ var n = X(e.barSize, t);
+ r.setAttribute("linethickness", W(n));
+ }
+ } else r.setAttribute("linethickness", "0px");
+ var a = rn(e.size, t.style);
+ if (a.size !== t.style.size) {
+ r = new Nt.MathNode("mstyle", [r]);
+ var i = a.size === A.DISPLAY.size ? "true" : "false";
+ r.setAttribute("displaystyle", i), r.setAttribute("scriptlevel", "0");
+ }
+ if (null != e.leftDelim || null != e.rightDelim) {
+ var o = [];
+ if (null != e.leftDelim) {
+ var s = new Nt.MathNode("mo", [new Nt.TextNode(e.leftDelim.replace("\\", ""))]);
+ s.setAttribute("fence", "true"), o.push(s);
+ }
+ if ((o.push(r), null != e.rightDelim)) {
+ var l = new Nt.MathNode("mo", [new Nt.TextNode(e.rightDelim.replace("\\", ""))]);
+ l.setAttribute("fence", "true"), o.push(l);
+ }
+ return qt(o);
+ }
+ return r;
+ };
+ lt({
+ type: "genfrac",
+ names: ["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac", "\\\\bracefrac", "\\\\brackfrac"],
+ props: { numArgs: 2, allowedInArgument: !0 },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = e.funcName,
+ i = t[0],
+ o = t[1],
+ s = null,
+ l = null,
+ h = "auto";
+ switch (a) {
+ case "\\dfrac":
+ case "\\frac":
+ case "\\tfrac":
+ r = !0;
+ break;
+ case "\\\\atopfrac":
+ r = !1;
+ break;
+ case "\\dbinom":
+ case "\\binom":
+ case "\\tbinom":
+ (r = !1), (s = "("), (l = ")");
+ break;
+ case "\\\\bracefrac":
+ (r = !1), (s = "\\{"), (l = "\\}");
+ break;
+ case "\\\\brackfrac":
+ (r = !1), (s = "["), (l = "]");
+ break;
+ default:
+ throw new Error("Unrecognized genfrac command");
+ }
+ switch (a) {
+ case "\\dfrac":
+ case "\\dbinom":
+ h = "display";
+ break;
+ case "\\tfrac":
+ case "\\tbinom":
+ h = "text";
+ }
+ return {
+ type: "genfrac",
+ mode: n.mode,
+ continued: !1,
+ numer: i,
+ denom: o,
+ hasBarLine: r,
+ leftDelim: s,
+ rightDelim: l,
+ size: h,
+ barSize: null,
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ }),
+ lt({
+ type: "genfrac",
+ names: ["\\cfrac"],
+ props: { numArgs: 2 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, t[0]),
+ a = t[1];
+ return {
+ type: "genfrac",
+ mode: r.mode,
+ continued: !0,
+ numer: n,
+ denom: a,
+ hasBarLine: !0,
+ leftDelim: null,
+ rightDelim: null,
+ size: "display",
+ barSize: null,
+ };
+ },
+ }),
+ lt({
+ type: "infix",
+ names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"],
+ props: { numArgs: 0, infix: !0 },
+ handler: function (e) {
+ var t,
+ r = e.parser,
+ n = e.funcName,
+ a = e.token;
+ switch (n) {
+ case "\\over":
+ t = "\\frac";
+ break;
+ case "\\choose":
+ t = "\\binom";
+ break;
+ case "\\atop":
+ t = "\\\\atopfrac";
+ break;
+ case "\\brace":
+ t = "\\\\bracefrac";
+ break;
+ case "\\brack":
+ t = "\\\\brackfrac";
+ break;
+ default:
+ throw new Error("Unrecognized infix genfrac command");
+ }
+ return { type: "infix", mode: r.mode, replaceWith: t, token: a };
+ },
+ });
+ var on = ["display", "text", "script", "scriptscript"],
+ sn = function (e) {
+ var t = null;
+ return e.length > 0 && (t = "." === (t = e) ? null : t), t;
+ };
+ lt({
+ type: "genfrac",
+ names: ["\\genfrac"],
+ props: {
+ numArgs: 6,
+ allowedInArgument: !0,
+ argTypes: ["math", "math", "size", "text", "math", "math"],
+ },
+ handler: function (e, t) {
+ var r,
+ n = e.parser,
+ a = t[4],
+ i = t[5],
+ o = ct(t[0]),
+ s = "atom" === o.type && "open" === o.family ? sn(o.text) : null,
+ l = ct(t[1]),
+ h = "atom" === l.type && "close" === l.family ? sn(l.text) : null,
+ c = Ut(t[2], "size"),
+ m = null;
+ r = !!c.isBlank || (m = c.value).number > 0;
+ var u = "auto",
+ p = t[3];
+ if ("ordgroup" === p.type) {
+ if (p.body.length > 0) {
+ var d = Ut(p.body[0], "textord");
+ u = on[Number(d.text)];
+ }
+ } else (p = Ut(p, "textord")), (u = on[Number(p.text)]);
+ return {
+ type: "genfrac",
+ mode: n.mode,
+ numer: a,
+ denom: i,
+ continued: !1,
+ hasBarLine: r,
+ barSize: m,
+ leftDelim: s,
+ rightDelim: h,
+ size: u,
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ }),
+ lt({
+ type: "infix",
+ names: ["\\above"],
+ props: { numArgs: 1, argTypes: ["size"], infix: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, e.token);
+ return {
+ type: "infix",
+ mode: r.mode,
+ replaceWith: "\\\\abovefrac",
+ size: Ut(t[0], "size").value,
+ token: n,
+ };
+ },
+ }),
+ lt({
+ type: "genfrac",
+ names: ["\\\\abovefrac"],
+ props: { numArgs: 3, argTypes: ["math", "size", "math"] },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = (e.funcName, t[0]),
+ a = (function (e) {
+ if (!e) throw new Error("Expected non-null, but got " + String(e));
+ return e;
+ })(Ut(t[1], "infix").size),
+ i = t[2],
+ o = a.number > 0;
+ return {
+ type: "genfrac",
+ mode: r.mode,
+ numer: n,
+ denom: i,
+ continued: !1,
+ hasBarLine: o,
+ barSize: a,
+ leftDelim: null,
+ rightDelim: null,
+ size: "auto",
+ };
+ },
+ htmlBuilder: nn,
+ mathmlBuilder: an,
+ });
+ var ln = function (e, t) {
+ var r,
+ n,
+ a = t.style;
+ "supsub" === e.type
+ ? ((r = e.sup ? St(e.sup, t.havingStyle(a.sup()), t) : St(e.sub, t.havingStyle(a.sub()), t)), (n = Ut(e.base, "horizBrace")))
+ : (n = Ut(e, "horizBrace"));
+ var i,
+ o = St(n.base, t.havingBaseStyle(A.DISPLAY)),
+ s = Gt(n, t);
+ if (
+ (n.isOver
+ ? (i = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: o },
+ { type: "kern", size: 0.1 },
+ { type: "elem", elem: s },
+ ],
+ },
+ t,
+ )).children[0].children[0].children[1].classes.push("svg-align")
+ : (i = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: o.depth + 0.1 + s.height,
+ children: [
+ { type: "elem", elem: s },
+ { type: "kern", size: 0.1 },
+ { type: "elem", elem: o },
+ ],
+ },
+ t,
+ )).children[0].children[0].children[0].classes.push("svg-align"),
+ r)
+ ) {
+ var l = Qe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [i], t);
+ i = n.isOver
+ ? Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: l },
+ { type: "kern", size: 0.2 },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ )
+ : Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: l.depth + 0.2 + r.height + r.depth,
+ children: [
+ { type: "elem", elem: r },
+ { type: "kern", size: 0.2 },
+ { type: "elem", elem: l },
+ ],
+ },
+ t,
+ );
+ }
+ return Qe.makeSpan(["mord", n.isOver ? "mover" : "munder"], [i], t);
+ };
+ lt({
+ type: "horizBrace",
+ names: ["\\overbrace", "\\underbrace"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return {
+ type: "horizBrace",
+ mode: r.mode,
+ label: n,
+ isOver: /^\\over/.test(n),
+ base: t[0],
+ };
+ },
+ htmlBuilder: ln,
+ mathmlBuilder: function (e, t) {
+ var r = Ft(e.label);
+ return new Nt.MathNode(e.isOver ? "mover" : "munder", [Ot(e.base, t), r]);
+ },
+ }),
+ lt({
+ type: "href",
+ names: ["\\href"],
+ props: { numArgs: 2, argTypes: ["url", "original"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[1],
+ a = Ut(t[0], "url").url;
+ return r.settings.isTrusted({ command: "\\href", url: a })
+ ? { type: "href", mode: r.mode, href: a, body: mt(n) }
+ : r.formatUnsupportedCmd("\\href");
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1);
+ return Qe.makeAnchor(e.href, [], r, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Ht(e.body, t);
+ return r instanceof Tt || (r = new Tt("mrow", [r])), r.setAttribute("href", e.href), r;
+ },
+ }),
+ lt({
+ type: "href",
+ names: ["\\url"],
+ props: { numArgs: 1, argTypes: ["url"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "url").url;
+ if (!r.settings.isTrusted({ command: "\\url", url: n })) return r.formatUnsupportedCmd("\\url");
+ for (var a = [], i = 0; i < n.length; i++) {
+ var o = n[i];
+ "~" === o && (o = "\\textasciitilde"), a.push({ type: "textord", mode: "text", text: o });
+ }
+ var s = { type: "text", mode: r.mode, font: "\\texttt", body: a };
+ return { type: "href", mode: r.mode, href: n, body: mt(s) };
+ },
+ }),
+ lt({
+ type: "hbox",
+ names: ["\\hbox"],
+ props: { numArgs: 1, argTypes: ["text"], allowedInText: !0, primitive: !0 },
+ handler: function (e, t) {
+ return { type: "hbox", mode: e.parser.mode, body: mt(t[0]) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mrow", Rt(e.body, t));
+ },
+ }),
+ lt({
+ type: "html",
+ names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"],
+ props: { numArgs: 2, argTypes: ["raw", "original"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r,
+ a = e.parser,
+ i = e.funcName,
+ o = (e.token, Ut(t[0], "raw").string),
+ s = t[1];
+ a.settings.strict && a.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode");
+ var l = {};
+ switch (i) {
+ case "\\htmlClass":
+ (l.class = o), (r = { command: "\\htmlClass", class: o });
+ break;
+ case "\\htmlId":
+ (l.id = o), (r = { command: "\\htmlId", id: o });
+ break;
+ case "\\htmlStyle":
+ (l.style = o), (r = { command: "\\htmlStyle", style: o });
+ break;
+ case "\\htmlData":
+ for (var h = o.split(","), c = 0; c < h.length; c++) {
+ var m = h[c].split("=");
+ if (2 !== m.length) throw new n("Error parsing key-value for \\htmlData");
+ l["data-" + m[0].trim()] = m[1].trim();
+ }
+ r = { command: "\\htmlData", attributes: l };
+ break;
+ default:
+ throw new Error("Unrecognized html command");
+ }
+ return a.settings.isTrusted(r) ? { type: "html", mode: a.mode, attributes: l, body: mt(s) } : a.formatUnsupportedCmd(i);
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t, !1),
+ n = ["enclosing"];
+ e.attributes.class && n.push.apply(n, e.attributes.class.trim().split(/\s+/));
+ var a = Qe.makeSpan(n, r, t);
+ for (var i in e.attributes) "class" !== i && e.attributes.hasOwnProperty(i) && a.setAttribute(i, e.attributes[i]);
+ return a;
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.body, t);
+ },
+ }),
+ lt({
+ type: "htmlmathml",
+ names: ["\\html@mathml"],
+ props: { numArgs: 2, allowedInText: !0 },
+ handler: function (e, t) {
+ return {
+ type: "htmlmathml",
+ mode: e.parser.mode,
+ html: mt(t[0]),
+ mathml: mt(t[1]),
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.html, t, !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.mathml, t);
+ },
+ });
+ var hn = function (e) {
+ if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e)) return { number: +e, unit: "bp" };
+ var t = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);
+ if (!t) throw new n("Invalid size: '" + e + "' in \\includegraphics");
+ var r = { number: +(t[1] + t[2]), unit: t[3] };
+ if (!Y(r)) throw new n("Invalid unit: '" + r.unit + "' in \\includegraphics.");
+ return r;
+ };
+ lt({
+ type: "includegraphics",
+ names: ["\\includegraphics"],
+ props: {
+ numArgs: 1,
+ numOptionalArgs: 1,
+ argTypes: ["raw", "url"],
+ allowedInText: !1,
+ },
+ handler: function (e, t, r) {
+ var a = e.parser,
+ i = { number: 0, unit: "em" },
+ o = { number: 0.9, unit: "em" },
+ s = { number: 0, unit: "em" },
+ l = "";
+ if (r[0])
+ for (var h = Ut(r[0], "raw").string.split(","), c = 0; c < h.length; c++) {
+ var m = h[c].split("=");
+ if (2 === m.length) {
+ var u = m[1].trim();
+ switch (m[0].trim()) {
+ case "alt":
+ l = u;
+ break;
+ case "width":
+ i = hn(u);
+ break;
+ case "height":
+ o = hn(u);
+ break;
+ case "totalheight":
+ s = hn(u);
+ break;
+ default:
+ throw new n("Invalid key: '" + m[0] + "' in \\includegraphics.");
+ }
+ }
+ }
+ var p = Ut(t[0], "url").url;
+ return (
+ "" === l && (l = (l = (l = p).replace(/^.*[\\/]/, "")).substring(0, l.lastIndexOf("."))),
+ a.settings.isTrusted({ command: "\\includegraphics", url: p })
+ ? {
+ type: "includegraphics",
+ mode: a.mode,
+ alt: l,
+ width: i,
+ height: o,
+ totalheight: s,
+ src: p,
+ }
+ : a.formatUnsupportedCmd("\\includegraphics")
+ );
+ },
+ htmlBuilder: function (e, t) {
+ var r = X(e.height, t),
+ n = 0;
+ e.totalheight.number > 0 && (n = X(e.totalheight, t) - r);
+ var a = 0;
+ e.width.number > 0 && (a = X(e.width, t));
+ var i = { height: W(r + n) };
+ a > 0 && (i.width = W(a)), n > 0 && (i.verticalAlign = W(-n));
+ var o = new Q(e.src, e.alt, i);
+ return (o.height = r), (o.depth = n), o;
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mglyph", []);
+ r.setAttribute("alt", e.alt);
+ var n = X(e.height, t),
+ a = 0;
+ if (
+ (e.totalheight.number > 0 && ((a = X(e.totalheight, t) - n), r.setAttribute("valign", W(-a))),
+ r.setAttribute("height", W(n + a)),
+ e.width.number > 0)
+ ) {
+ var i = X(e.width, t);
+ r.setAttribute("width", W(i));
+ }
+ return r.setAttribute("src", e.src), r;
+ },
+ }),
+ lt({
+ type: "kern",
+ names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"],
+ props: { numArgs: 1, argTypes: ["size"], primitive: !0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = Ut(t[0], "size");
+ if (r.settings.strict) {
+ var i = "m" === n[1],
+ o = "mu" === a.value.unit;
+ i
+ ? (o ||
+ r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " supports only mu units, not " + a.value.unit + " units"),
+ "math" !== r.mode && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " works only in math mode"))
+ : o && r.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + n + " doesn't support mu units");
+ }
+ return { type: "kern", mode: r.mode, dimension: a.value };
+ },
+ htmlBuilder: function (e, t) {
+ return Qe.makeGlue(e.dimension, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = X(e.dimension, t);
+ return new Nt.SpaceNode(r);
+ },
+ }),
+ lt({
+ type: "lap",
+ names: ["\\mathllap", "\\mathrlap", "\\mathclap"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "lap", mode: r.mode, alignment: n.slice(5), body: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r;
+ "clap" === e.alignment
+ ? ((r = Qe.makeSpan([], [St(e.body, t)])), (r = Qe.makeSpan(["inner"], [r], t)))
+ : (r = Qe.makeSpan(["inner"], [St(e.body, t)]));
+ var n = Qe.makeSpan(["fix"], []),
+ a = Qe.makeSpan([e.alignment], [r, n], t),
+ i = Qe.makeSpan(["strut"]);
+ return (
+ (i.style.height = W(a.height + a.depth)),
+ a.depth && (i.style.verticalAlign = W(-a.depth)),
+ a.children.unshift(i),
+ (a = Qe.makeSpan(["thinbox"], [a], t)),
+ Qe.makeSpan(["mord", "vbox"], [a], t)
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]);
+ if ("rlap" !== e.alignment) {
+ var n = "llap" === e.alignment ? "-1" : "-0.5";
+ r.setAttribute("lspace", n + "width");
+ }
+ return r.setAttribute("width", "0px"), r;
+ },
+ }),
+ lt({
+ type: "styling",
+ names: ["\\(", "$"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
+ handler: function (e, t) {
+ var r = e.funcName,
+ n = e.parser,
+ a = n.mode;
+ n.switchMode("math");
+ var i = "\\(" === r ? "\\)" : "$",
+ o = n.parseExpression(!1, i);
+ return n.expect(i), n.switchMode(a), { type: "styling", mode: n.mode, style: "text", body: o };
+ },
+ }),
+ lt({
+ type: "text",
+ names: ["\\)", "\\]"],
+ props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
+ handler: function (e, t) {
+ throw new n("Mismatched " + e.funcName);
+ },
+ });
+ var cn = function (e, t) {
+ switch (t.style.size) {
+ case A.DISPLAY.size:
+ return e.display;
+ case A.TEXT.size:
+ return e.text;
+ case A.SCRIPT.size:
+ return e.script;
+ case A.SCRIPTSCRIPT.size:
+ return e.scriptscript;
+ default:
+ return e.text;
+ }
+ };
+ lt({
+ type: "mathchoice",
+ names: ["\\mathchoice"],
+ props: { numArgs: 4, primitive: !0 },
+ handler: function (e, t) {
+ return {
+ type: "mathchoice",
+ mode: e.parser.mode,
+ display: mt(t[0]),
+ text: mt(t[1]),
+ script: mt(t[2]),
+ scriptscript: mt(t[3]),
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = cn(e, t),
+ n = vt(r, t, !1);
+ return Qe.makeFragment(n);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = cn(e, t);
+ return Ht(r, t);
+ },
+ });
+ var mn = function (e, t, r, n, a, i, o) {
+ e = Qe.makeSpan([], [e]);
+ var s,
+ l,
+ h,
+ c = r && p(r);
+ if (t) {
+ var m = St(t, n.havingStyle(a.sup()), n);
+ l = {
+ elem: m,
+ kern: Math.max(n.fontMetrics().bigOpSpacing1, n.fontMetrics().bigOpSpacing3 - m.depth),
+ };
+ }
+ if (r) {
+ var u = St(r, n.havingStyle(a.sub()), n);
+ s = {
+ elem: u,
+ kern: Math.max(n.fontMetrics().bigOpSpacing2, n.fontMetrics().bigOpSpacing4 - u.height),
+ };
+ }
+ if (l && s) {
+ var d = n.fontMetrics().bigOpSpacing5 + s.elem.height + s.elem.depth + s.kern + e.depth + o;
+ h = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: d,
+ children: [
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ { type: "elem", elem: s.elem, marginLeft: W(-i) },
+ { type: "kern", size: s.kern },
+ { type: "elem", elem: e },
+ { type: "kern", size: l.kern },
+ { type: "elem", elem: l.elem, marginLeft: W(i) },
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ ],
+ },
+ n,
+ );
+ } else if (s) {
+ var f = e.height - o;
+ h = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: f,
+ children: [
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ { type: "elem", elem: s.elem, marginLeft: W(-i) },
+ { type: "kern", size: s.kern },
+ { type: "elem", elem: e },
+ ],
+ },
+ n,
+ );
+ } else {
+ if (!l) return e;
+ var g = e.depth + o;
+ h = Qe.makeVList(
+ {
+ positionType: "bottom",
+ positionData: g,
+ children: [
+ { type: "elem", elem: e },
+ { type: "kern", size: l.kern },
+ { type: "elem", elem: l.elem, marginLeft: W(i) },
+ { type: "kern", size: n.fontMetrics().bigOpSpacing5 },
+ ],
+ },
+ n,
+ );
+ }
+ var v = [h];
+ if (s && 0 !== i && !c) {
+ var y = Qe.makeSpan(["mspace"], [], n);
+ (y.style.marginRight = W(i)), v.unshift(y);
+ }
+ return Qe.makeSpan(["mop", "op-limits"], v, n);
+ },
+ un = ["\\smallint"],
+ pn = function (e, t) {
+ var r,
+ n,
+ a,
+ i = !1;
+ "supsub" === e.type ? ((r = e.sup), (n = e.sub), (a = Ut(e.base, "op")), (i = !0)) : (a = Ut(e, "op"));
+ var o,
+ s = t.style,
+ h = !1;
+ if ((s.size === A.DISPLAY.size && a.symbol && !l(un, a.name) && (h = !0), a.symbol)) {
+ var c = h ? "Size2-Regular" : "Size1-Regular",
+ m = "";
+ if (
+ (("\\oiint" !== a.name && "\\oiiint" !== a.name) || ((m = a.name.slice(1)), (a.name = "oiint" === m ? "\\iint" : "\\iiint")),
+ (o = Qe.makeSymbol(a.name, c, "math", t, ["mop", "op-symbol", h ? "large-op" : "small-op"])),
+ m.length > 0)
+ ) {
+ var u = o.italic,
+ p = Qe.staticSvg(m + "Size" + (h ? "2" : "1"), t);
+ (o = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: o, shift: 0 },
+ { type: "elem", elem: p, shift: h ? 0.08 : 0 },
+ ],
+ },
+ t,
+ )),
+ (a.name = "\\" + m),
+ o.classes.unshift("mop"),
+ (o.italic = u);
+ }
+ } else if (a.body) {
+ var d = vt(a.body, t, !0);
+ 1 === d.length && d[0] instanceof te ? ((o = d[0]).classes[0] = "mop") : (o = Qe.makeSpan(["mop"], d, t));
+ } else {
+ for (var f = [], g = 1; g < a.name.length; g++) f.push(Qe.mathsym(a.name[g], a.mode, t));
+ o = Qe.makeSpan(["mop"], f, t);
+ }
+ var v = 0,
+ y = 0;
+ return (
+ (o instanceof te || "\\oiint" === a.name || "\\oiiint" === a.name) &&
+ !a.suppressBaseShift &&
+ ((v = (o.height - o.depth) / 2 - t.fontMetrics().axisHeight), (y = o.italic)),
+ i ? mn(o, r, n, t, s, y, v) : (v && ((o.style.position = "relative"), (o.style.top = W(v))), o)
+ );
+ },
+ dn = function (e, t) {
+ var r;
+ if (e.symbol) (r = new Tt("mo", [Ct(e.name, e.mode)])), l(un, e.name) && r.setAttribute("largeop", "false");
+ else if (e.body) r = new Tt("mo", Rt(e.body, t));
+ else {
+ r = new Tt("mi", [new Bt(e.name.slice(1))]);
+ var n = new Tt("mo", [Ct("", "text")]);
+ r = e.parentIsSupSub ? new Tt("mrow", [r, n]) : At([r, n]);
+ }
+ return r;
+ },
+ fn = {
+ "∏": "\\prod",
+ "∐": "\\coprod",
+ "∑": "\\sum",
+ "⋀": "\\bigwedge",
+ "⋁": "\\bigvee",
+ "⋂": "\\bigcap",
+ "⋃": "\\bigcup",
+ "⨀": "\\bigodot",
+ "⨁": "\\bigoplus",
+ "⨂": "\\bigotimes",
+ "⨄": "\\biguplus",
+ "⨆": "\\bigsqcup",
+ };
+ lt({
+ type: "op",
+ names: [
+ "\\coprod",
+ "\\bigvee",
+ "\\bigwedge",
+ "\\biguplus",
+ "\\bigcap",
+ "\\bigcup",
+ "\\intop",
+ "\\prod",
+ "\\sum",
+ "\\bigotimes",
+ "\\bigoplus",
+ "\\bigodot",
+ "\\bigsqcup",
+ "\\smallint",
+ "∏",
+ "∐",
+ "∑",
+ "⋀",
+ "⋁",
+ "⋂",
+ "⋃",
+ "⨀",
+ "⨁",
+ "⨂",
+ "⨄",
+ "⨆",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName;
+ return 1 === n.length && (n = fn[n]), { type: "op", mode: r.mode, limits: !0, parentIsSupSub: !1, symbol: !0, name: n };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\mathop"],
+ props: { numArgs: 1, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return {
+ type: "op",
+ mode: r.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !1,
+ body: mt(n),
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ });
+ var gn = {
+ "∫": "\\int",
+ "∬": "\\iint",
+ "∭": "\\iiint",
+ "∮": "\\oint",
+ "∯": "\\oiint",
+ "∰": "\\oiiint",
+ };
+ lt({
+ type: "op",
+ names: [
+ "\\arcsin",
+ "\\arccos",
+ "\\arctan",
+ "\\arctg",
+ "\\arcctg",
+ "\\arg",
+ "\\ch",
+ "\\cos",
+ "\\cosec",
+ "\\cosh",
+ "\\cot",
+ "\\cotg",
+ "\\coth",
+ "\\csc",
+ "\\ctg",
+ "\\cth",
+ "\\deg",
+ "\\dim",
+ "\\exp",
+ "\\hom",
+ "\\ker",
+ "\\lg",
+ "\\ln",
+ "\\log",
+ "\\sec",
+ "\\sin",
+ "\\sinh",
+ "\\sh",
+ "\\tan",
+ "\\tanh",
+ "\\tg",
+ "\\th",
+ ],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return {
+ type: "op",
+ mode: t.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !1,
+ name: r,
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return {
+ type: "op",
+ mode: t.mode,
+ limits: !0,
+ parentIsSupSub: !1,
+ symbol: !1,
+ name: r,
+ };
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ }),
+ lt({
+ type: "op",
+ names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "∫", "∬", "∭", "∮", "∯", "∰"],
+ props: { numArgs: 0 },
+ handler: function (e) {
+ var t = e.parser,
+ r = e.funcName;
+ return (
+ 1 === r.length && (r = gn[r]),
+ {
+ type: "op",
+ mode: t.mode,
+ limits: !1,
+ parentIsSupSub: !1,
+ symbol: !0,
+ name: r,
+ }
+ );
+ },
+ htmlBuilder: pn,
+ mathmlBuilder: dn,
+ });
+ var vn = function (e, t) {
+ var r,
+ n,
+ a,
+ i,
+ o = !1;
+ if (
+ ("supsub" === e.type ? ((r = e.sup), (n = e.sub), (a = Ut(e.base, "operatorname")), (o = !0)) : (a = Ut(e, "operatorname")),
+ a.body.length > 0)
+ ) {
+ for (
+ var s = a.body.map(function (e) {
+ var t = e.text;
+ return "string" == typeof t ? { type: "textord", mode: e.mode, text: t } : e;
+ }),
+ l = vt(s, t.withFont("mathrm"), !0),
+ h = 0;
+ h < l.length;
+ h++
+ ) {
+ var c = l[h];
+ c instanceof te && (c.text = c.text.replace(/\u2212/, "-").replace(/\u2217/, "*"));
+ }
+ i = Qe.makeSpan(["mop"], l, t);
+ } else i = Qe.makeSpan(["mop"], [], t);
+ return o ? mn(i, r, n, t, t.style, 0, 0) : i;
+ };
+ function yn(e, t, r) {
+ for (var n = vt(e, t, !1), a = t.sizeMultiplier / r.sizeMultiplier, i = 0; i < n.length; i++) {
+ var o = n[i].classes.indexOf("sizing");
+ o < 0
+ ? Array.prototype.push.apply(n[i].classes, t.sizingClasses(r))
+ : n[i].classes[o + 1] === "reset-size" + t.size && (n[i].classes[o + 1] = "reset-size" + r.size),
+ (n[i].height *= a),
+ (n[i].depth *= a);
+ }
+ return Qe.makeFragment(n);
+ }
+ lt({
+ type: "operatorname",
+ names: ["\\operatorname@", "\\operatornamewithlimits"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return {
+ type: "operatorname",
+ mode: r.mode,
+ body: mt(a),
+ alwaysHandleSupSub: "\\operatornamewithlimits" === n,
+ limits: !1,
+ parentIsSupSub: !1,
+ };
+ },
+ htmlBuilder: vn,
+ mathmlBuilder: function (e, t) {
+ for (var r = Rt(e.body, t.withFont("mathrm")), n = !0, a = 0; a < r.length; a++) {
+ var i = r[a];
+ if (i instanceof Nt.SpaceNode);
+ else if (i instanceof Nt.MathNode)
+ switch (i.type) {
+ case "mi":
+ case "mn":
+ case "ms":
+ case "mspace":
+ case "mtext":
+ break;
+ case "mo":
+ var o = i.children[0];
+ 1 === i.children.length && o instanceof Nt.TextNode
+ ? (o.text = o.text.replace(/\u2212/, "-").replace(/\u2217/, "*"))
+ : (n = !1);
+ break;
+ default:
+ n = !1;
+ }
+ else n = !1;
+ }
+ if (n) {
+ var s = r
+ .map(function (e) {
+ return e.toText();
+ })
+ .join("");
+ r = [new Nt.TextNode(s)];
+ }
+ var l = new Nt.MathNode("mi", r);
+ l.setAttribute("mathvariant", "normal");
+ var h = new Nt.MathNode("mo", [Ct("", "text")]);
+ return e.parentIsSupSub ? new Nt.MathNode("mrow", [l, h]) : Nt.newDocumentFragment([l, h]);
+ },
+ }),
+ Vr("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"),
+ ht({
+ type: "ordgroup",
+ htmlBuilder: function (e, t) {
+ return e.semisimple ? Qe.makeFragment(vt(e.body, t, !1)) : Qe.makeSpan(["mord"], vt(e.body, t, !0), t);
+ },
+ mathmlBuilder: function (e, t) {
+ return Ht(e.body, t, !0);
+ },
+ }),
+ lt({
+ type: "overline",
+ names: ["\\overline"],
+ props: { numArgs: 1 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "overline", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t.havingCrampedStyle()),
+ n = Qe.makeLineSpan("overline-line", t),
+ a = t.fontMetrics().defaultRuleThickness,
+ i = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: r },
+ { type: "kern", size: 3 * a },
+ { type: "elem", elem: n },
+ { type: "kern", size: a },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "overline"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [new Nt.TextNode("‾")]);
+ r.setAttribute("stretchy", "true");
+ var n = new Nt.MathNode("mover", [Ot(e.body, t), r]);
+ return n.setAttribute("accent", "true"), n;
+ },
+ }),
+ lt({
+ type: "phantom",
+ names: ["\\phantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "phantom", mode: r.mode, body: mt(n) };
+ },
+ htmlBuilder: function (e, t) {
+ var r = vt(e.body, t.withPhantom(), !1);
+ return Qe.makeFragment(r);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(e.body, t);
+ return new Nt.MathNode("mphantom", r);
+ },
+ }),
+ lt({
+ type: "hphantom",
+ names: ["\\hphantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "hphantom", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan([], [St(e.body, t.withPhantom())]);
+ if (((r.height = 0), (r.depth = 0), r.children))
+ for (var n = 0; n < r.children.length; n++) (r.children[n].height = 0), (r.children[n].depth = 0);
+ return (
+ (r = Qe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, t)), Qe.makeSpan(["mord"], [r], t)
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(mt(e.body), t),
+ n = new Nt.MathNode("mphantom", r),
+ a = new Nt.MathNode("mpadded", [n]);
+ return a.setAttribute("height", "0px"), a.setAttribute("depth", "0px"), a;
+ },
+ }),
+ lt({
+ type: "vphantom",
+ names: ["\\vphantom"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = t[0];
+ return { type: "vphantom", mode: r.mode, body: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["inner"], [St(e.body, t.withPhantom())]),
+ n = Qe.makeSpan(["fix"], []);
+ return Qe.makeSpan(["mord", "rlap"], [r, n], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Rt(mt(e.body), t),
+ n = new Nt.MathNode("mphantom", r),
+ a = new Nt.MathNode("mpadded", [n]);
+ return a.setAttribute("width", "0px"), a;
+ },
+ }),
+ lt({
+ type: "raisebox",
+ names: ["\\raisebox"],
+ props: { numArgs: 2, argTypes: ["size", "hbox"], allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = Ut(t[0], "size").value,
+ a = t[1];
+ return { type: "raisebox", mode: r.mode, dy: n, body: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = X(e.dy, t);
+ return Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -n,
+ children: [{ type: "elem", elem: r }],
+ },
+ t,
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]),
+ n = e.dy.number + e.dy.unit;
+ return r.setAttribute("voffset", n), r;
+ },
+ }),
+ lt({
+ type: "internal",
+ names: ["\\relax"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e) {
+ return { type: "internal", mode: e.parser.mode };
+ },
+ }),
+ lt({
+ type: "rule",
+ names: ["\\rule"],
+ props: { numArgs: 2, numOptionalArgs: 1, argTypes: ["size", "size", "size"] },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = r[0],
+ i = Ut(t[0], "size"),
+ o = Ut(t[1], "size");
+ return {
+ type: "rule",
+ mode: n.mode,
+ shift: a && Ut(a, "size").value,
+ width: i.value,
+ height: o.value,
+ };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan(["mord", "rule"], [], t),
+ n = X(e.width, t),
+ a = X(e.height, t),
+ i = e.shift ? X(e.shift, t) : 0;
+ return (
+ (r.style.borderRightWidth = W(n)),
+ (r.style.borderTopWidth = W(a)),
+ (r.style.bottom = W(i)),
+ (r.width = n),
+ (r.height = a + i),
+ (r.depth = -i),
+ (r.maxFontSize = 1.125 * a * t.sizeMultiplier),
+ r
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ var r = X(e.width, t),
+ n = X(e.height, t),
+ a = e.shift ? X(e.shift, t) : 0,
+ i = (t.color && t.getColor()) || "black",
+ o = new Nt.MathNode("mspace");
+ o.setAttribute("mathbackground", i), o.setAttribute("width", W(r)), o.setAttribute("height", W(n));
+ var s = new Nt.MathNode("mpadded", [o]);
+ return (
+ a >= 0 ? s.setAttribute("height", W(a)) : (s.setAttribute("height", W(a)), s.setAttribute("depth", W(-a))),
+ s.setAttribute("voffset", W(a)),
+ s
+ );
+ },
+ });
+ var bn = [
+ "\\tiny",
+ "\\sixptsize",
+ "\\scriptsize",
+ "\\footnotesize",
+ "\\small",
+ "\\normalsize",
+ "\\large",
+ "\\Large",
+ "\\LARGE",
+ "\\huge",
+ "\\Huge",
+ ];
+ lt({
+ type: "sizing",
+ names: bn,
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.breakOnTokenText,
+ n = e.funcName,
+ a = e.parser,
+ i = a.parseExpression(!1, r);
+ return { type: "sizing", mode: a.mode, size: bn.indexOf(n) + 1, body: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = t.havingSize(e.size);
+ return yn(e.body, r, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = t.havingSize(e.size),
+ n = Rt(e.body, r),
+ a = new Nt.MathNode("mstyle", n);
+ return a.setAttribute("mathsize", W(r.sizeMultiplier)), a;
+ },
+ }),
+ lt({
+ type: "smash",
+ names: ["\\smash"],
+ props: { numArgs: 1, numOptionalArgs: 1, allowedInText: !0 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = !1,
+ i = !1,
+ o = r[0] && Ut(r[0], "ordgroup");
+ if (o)
+ for (var s = "", l = 0; l < o.body.length; ++l)
+ if ("t" === (s = o.body[l].text)) a = !0;
+ else {
+ if ("b" !== s) {
+ (a = !1), (i = !1);
+ break;
+ }
+ i = !0;
+ }
+ else (a = !0), (i = !0);
+ var h = t[0];
+ return { type: "smash", mode: n.mode, body: h, smashHeight: a, smashDepth: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Qe.makeSpan([], [St(e.body, t)]);
+ if (!e.smashHeight && !e.smashDepth) return r;
+ if (e.smashHeight && ((r.height = 0), r.children)) for (var n = 0; n < r.children.length; n++) r.children[n].height = 0;
+ if (e.smashDepth && ((r.depth = 0), r.children)) for (var a = 0; a < r.children.length; a++) r.children[a].depth = 0;
+ var i = Qe.makeVList({ positionType: "firstBaseline", children: [{ type: "elem", elem: r }] }, t);
+ return Qe.makeSpan(["mord"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mpadded", [Ot(e.body, t)]);
+ return e.smashHeight && r.setAttribute("height", "0px"), e.smashDepth && r.setAttribute("depth", "0px"), r;
+ },
+ }),
+ lt({
+ type: "sqrt",
+ names: ["\\sqrt"],
+ props: { numArgs: 1, numOptionalArgs: 1 },
+ handler: function (e, t, r) {
+ var n = e.parser,
+ a = r[0],
+ i = t[0];
+ return { type: "sqrt", mode: n.mode, body: i, index: a };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t.havingCrampedStyle());
+ 0 === r.height && (r.height = t.fontMetrics().xHeight), (r = Qe.wrapFragment(r, t));
+ var n = t.fontMetrics().defaultRuleThickness,
+ a = n;
+ t.style.id < A.TEXT.id && (a = t.fontMetrics().xHeight);
+ var i = n + a / 4,
+ o = r.height + r.depth + i + n,
+ s = Cr.sqrtImage(o, t),
+ l = s.span,
+ h = s.ruleWidth,
+ c = s.advanceWidth,
+ m = l.height - h;
+ m > r.height + r.depth + i && (i = (i + m - r.height - r.depth) / 2);
+ var u = l.height - r.height - i - h;
+ r.style.paddingLeft = W(c);
+ var p = Qe.makeVList(
+ {
+ positionType: "firstBaseline",
+ children: [
+ { type: "elem", elem: r, wrapperClasses: ["svg-align"] },
+ { type: "kern", size: -(r.height + u) },
+ { type: "elem", elem: l },
+ { type: "kern", size: h },
+ ],
+ },
+ t,
+ );
+ if (e.index) {
+ var d = t.havingStyle(A.SCRIPTSCRIPT),
+ f = St(e.index, d, t),
+ g = 0.6 * (p.height - p.depth),
+ v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -g,
+ children: [{ type: "elem", elem: f }],
+ },
+ t,
+ ),
+ y = Qe.makeSpan(["root"], [v]);
+ return Qe.makeSpan(["mord", "sqrt"], [y, p], t);
+ }
+ return Qe.makeSpan(["mord", "sqrt"], [p], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = e.body,
+ n = e.index;
+ return n ? new Nt.MathNode("mroot", [Ot(r, t), Ot(n, t)]) : new Nt.MathNode("msqrt", [Ot(r, t)]);
+ },
+ });
+ var xn = {
+ display: A.DISPLAY,
+ text: A.TEXT,
+ script: A.SCRIPT,
+ scriptscript: A.SCRIPTSCRIPT,
+ };
+ lt({
+ type: "styling",
+ names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"],
+ props: { numArgs: 0, allowedInText: !0, primitive: !0 },
+ handler: function (e, t) {
+ var r = e.breakOnTokenText,
+ n = e.funcName,
+ a = e.parser,
+ i = a.parseExpression(!0, r),
+ o = n.slice(1, n.length - 5);
+ return { type: "styling", mode: a.mode, style: o, body: i };
+ },
+ htmlBuilder: function (e, t) {
+ var r = xn[e.style],
+ n = t.havingStyle(r).withFont("");
+ return yn(e.body, n, t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = xn[e.style],
+ n = t.havingStyle(r),
+ a = Rt(e.body, n),
+ i = new Nt.MathNode("mstyle", a),
+ o = {
+ display: ["0", "true"],
+ text: ["0", "false"],
+ script: ["1", "false"],
+ scriptscript: ["2", "false"],
+ }[e.style];
+ return i.setAttribute("scriptlevel", o[0]), i.setAttribute("displaystyle", o[1]), i;
+ },
+ });
+ ht({
+ type: "supsub",
+ htmlBuilder: function (e, t) {
+ var r = (function (e, t) {
+ var r = e.base;
+ return r
+ ? "op" === r.type
+ ? r.limits && (t.style.size === A.DISPLAY.size || r.alwaysHandleSupSub)
+ ? pn
+ : null
+ : "operatorname" === r.type
+ ? r.alwaysHandleSupSub && (t.style.size === A.DISPLAY.size || r.limits)
+ ? vn
+ : null
+ : "accent" === r.type
+ ? p(r.base)
+ ? Wt
+ : null
+ : "horizBrace" === r.type && !e.sub === r.isOver
+ ? ln
+ : null
+ : null;
+ })(e, t);
+ if (r) return r(e, t);
+ var n,
+ a,
+ i,
+ o = e.base,
+ s = e.sup,
+ l = e.sub,
+ h = St(o, t),
+ c = t.fontMetrics(),
+ m = 0,
+ u = 0,
+ d = o && p(o);
+ if (s) {
+ var f = t.havingStyle(t.style.sup());
+ (n = St(s, f, t)), d || (m = h.height - (f.fontMetrics().supDrop * f.sizeMultiplier) / t.sizeMultiplier);
+ }
+ if (l) {
+ var g = t.havingStyle(t.style.sub());
+ (a = St(l, g, t)), d || (u = h.depth + (g.fontMetrics().subDrop * g.sizeMultiplier) / t.sizeMultiplier);
+ }
+ i = t.style === A.DISPLAY ? c.sup1 : t.style.cramped ? c.sup3 : c.sup2;
+ var v,
+ y = t.sizeMultiplier,
+ b = W(0.5 / c.ptPerEm / y),
+ x = null;
+ if (a) {
+ var w = e.base && "op" === e.base.type && e.base.name && ("\\oiint" === e.base.name || "\\oiiint" === e.base.name);
+ (h instanceof te || w) && (x = W(-h.italic));
+ }
+ if (n && a) {
+ (m = Math.max(m, i, n.depth + 0.25 * c.xHeight)), (u = Math.max(u, c.sub2));
+ var k = 4 * c.defaultRuleThickness;
+ if (m - n.depth - (a.height - u) < k) {
+ u = k - (m - n.depth) + a.height;
+ var S = 0.8 * c.xHeight - (m - n.depth);
+ S > 0 && ((m += S), (u -= S));
+ }
+ v = Qe.makeVList(
+ {
+ positionType: "individualShift",
+ children: [
+ { type: "elem", elem: a, shift: u, marginRight: b, marginLeft: x },
+ { type: "elem", elem: n, shift: -m, marginRight: b },
+ ],
+ },
+ t,
+ );
+ } else if (a) {
+ (u = Math.max(u, c.sub1, a.height - 0.8 * c.xHeight)),
+ (v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: u,
+ children: [{ type: "elem", elem: a, marginLeft: x, marginRight: b }],
+ },
+ t,
+ ));
+ } else {
+ if (!n) throw new Error("supsub must have either sup or sub.");
+ (m = Math.max(m, i, n.depth + 0.25 * c.xHeight)),
+ (v = Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: -m,
+ children: [{ type: "elem", elem: n, marginRight: b }],
+ },
+ t,
+ ));
+ }
+ var M = wt(h, "right") || "mord";
+ return Qe.makeSpan([M], [h, Qe.makeSpan(["msupsub"], [v])], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = !1;
+ e.base && "horizBrace" === e.base.type && !!e.sup === e.base.isOver && ((n = !0), (r = e.base.isOver)),
+ !e.base || ("op" !== e.base.type && "operatorname" !== e.base.type) || (e.base.parentIsSupSub = !0);
+ var a,
+ i = [Ot(e.base, t)];
+ if ((e.sub && i.push(Ot(e.sub, t)), e.sup && i.push(Ot(e.sup, t)), n)) a = r ? "mover" : "munder";
+ else if (e.sub)
+ if (e.sup) {
+ var o = e.base;
+ a =
+ (o && "op" === o.type && o.limits && t.style === A.DISPLAY) ||
+ (o && "operatorname" === o.type && o.alwaysHandleSupSub && (t.style === A.DISPLAY || o.limits))
+ ? "munderover"
+ : "msubsup";
+ } else {
+ var s = e.base;
+ a =
+ (s && "op" === s.type && s.limits && (t.style === A.DISPLAY || s.alwaysHandleSupSub)) ||
+ (s && "operatorname" === s.type && s.alwaysHandleSupSub && (s.limits || t.style === A.DISPLAY))
+ ? "munder"
+ : "msub";
+ }
+ else {
+ var l = e.base;
+ a =
+ (l && "op" === l.type && l.limits && (t.style === A.DISPLAY || l.alwaysHandleSupSub)) ||
+ (l && "operatorname" === l.type && l.alwaysHandleSupSub && (l.limits || t.style === A.DISPLAY))
+ ? "mover"
+ : "msup";
+ }
+ return new Nt.MathNode(a, i);
+ },
+ }),
+ ht({
+ type: "atom",
+ htmlBuilder: function (e, t) {
+ return Qe.mathsym(e.text, e.mode, t, ["m" + e.family]);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [Ct(e.text, e.mode)]);
+ if ("bin" === e.family) {
+ var n = It(e, t);
+ "bold-italic" === n && r.setAttribute("mathvariant", n);
+ } else
+ "punct" === e.family
+ ? r.setAttribute("separator", "true")
+ : ("open" !== e.family && "close" !== e.family) || r.setAttribute("stretchy", "false");
+ return r;
+ },
+ });
+ var wn = { mi: "italic", mn: "normal", mtext: "normal" };
+ ht({
+ type: "mathord",
+ htmlBuilder: function (e, t) {
+ return Qe.makeOrd(e, t, "mathord");
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mi", [Ct(e.text, e.mode, t)]),
+ n = It(e, t) || "italic";
+ return n !== wn[r.type] && r.setAttribute("mathvariant", n), r;
+ },
+ }),
+ ht({
+ type: "textord",
+ htmlBuilder: function (e, t) {
+ return Qe.makeOrd(e, t, "textord");
+ },
+ mathmlBuilder: function (e, t) {
+ var r,
+ n = Ct(e.text, e.mode, t),
+ a = It(e, t) || "normal";
+ return (
+ (r =
+ "text" === e.mode
+ ? new Nt.MathNode("mtext", [n])
+ : /[0-9]/.test(e.text)
+ ? new Nt.MathNode("mn", [n])
+ : "\\prime" === e.text
+ ? new Nt.MathNode("mo", [n])
+ : new Nt.MathNode("mi", [n])),
+ a !== wn[r.type] && r.setAttribute("mathvariant", a),
+ r
+ );
+ },
+ });
+ var kn = { "\\nobreak": "nobreak", "\\allowbreak": "allowbreak" },
+ Sn = {
+ " ": {},
+ "\\ ": {},
+ "~": { className: "nobreak" },
+ "\\space": {},
+ "\\nobreakspace": { className: "nobreak" },
+ };
+ ht({
+ type: "spacing",
+ htmlBuilder: function (e, t) {
+ if (Sn.hasOwnProperty(e.text)) {
+ var r = Sn[e.text].className || "";
+ if ("text" === e.mode) {
+ var a = Qe.makeOrd(e, t, "textord");
+ return a.classes.push(r), a;
+ }
+ return Qe.makeSpan(["mspace", r], [Qe.mathsym(e.text, e.mode, t)], t);
+ }
+ if (kn.hasOwnProperty(e.text)) return Qe.makeSpan(["mspace", kn[e.text]], [], t);
+ throw new n('Unknown type of space "' + e.text + '"');
+ },
+ mathmlBuilder: function (e, t) {
+ if (!Sn.hasOwnProperty(e.text)) {
+ if (kn.hasOwnProperty(e.text)) return new Nt.MathNode("mspace");
+ throw new n('Unknown type of space "' + e.text + '"');
+ }
+ return new Nt.MathNode("mtext", [new Nt.TextNode(" ")]);
+ },
+ });
+ var Mn = function () {
+ var e = new Nt.MathNode("mtd", []);
+ return e.setAttribute("width", "50%"), e;
+ };
+ ht({
+ type: "tag",
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mtable", [
+ new Nt.MathNode("mtr", [Mn(), new Nt.MathNode("mtd", [Ht(e.body, t)]), Mn(), new Nt.MathNode("mtd", [Ht(e.tag, t)])]),
+ ]);
+ return r.setAttribute("width", "100%"), r;
+ },
+ });
+ var zn = {
+ "\\text": void 0,
+ "\\textrm": "textrm",
+ "\\textsf": "textsf",
+ "\\texttt": "texttt",
+ "\\textnormal": "textrm",
+ },
+ An = { "\\textbf": "textbf", "\\textmd": "textmd" },
+ Tn = { "\\textit": "textit", "\\textup": "textup" },
+ Bn = function (e, t) {
+ var r = e.font;
+ return r ? (zn[r] ? t.withTextFontFamily(zn[r]) : An[r] ? t.withTextFontWeight(An[r]) : t.withTextFontShape(Tn[r])) : t;
+ };
+ lt({
+ type: "text",
+ names: ["\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", "\\textbf", "\\textmd", "\\textit", "\\textup"],
+ props: { numArgs: 1, argTypes: ["text"], allowedInArgument: !0, allowedInText: !0 },
+ handler: function (e, t) {
+ var r = e.parser,
+ n = e.funcName,
+ a = t[0];
+ return { type: "text", mode: r.mode, body: mt(a), font: n };
+ },
+ htmlBuilder: function (e, t) {
+ var r = Bn(e, t),
+ n = vt(e.body, r, !0);
+ return Qe.makeSpan(["mord", "text"], n, r);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = Bn(e, t);
+ return Ht(e.body, r);
+ },
+ }),
+ lt({
+ type: "underline",
+ names: ["\\underline"],
+ props: { numArgs: 1, allowedInText: !0 },
+ handler: function (e, t) {
+ return { type: "underline", mode: e.parser.mode, body: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = Qe.makeLineSpan("underline-line", t),
+ a = t.fontMetrics().defaultRuleThickness,
+ i = Qe.makeVList(
+ {
+ positionType: "top",
+ positionData: r.height,
+ children: [
+ { type: "kern", size: a },
+ { type: "elem", elem: n },
+ { type: "kern", size: 3 * a },
+ { type: "elem", elem: r },
+ ],
+ },
+ t,
+ );
+ return Qe.makeSpan(["mord", "underline"], [i], t);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.MathNode("mo", [new Nt.TextNode("‾")]);
+ r.setAttribute("stretchy", "true");
+ var n = new Nt.MathNode("munder", [Ot(e.body, t), r]);
+ return n.setAttribute("accentunder", "true"), n;
+ },
+ }),
+ lt({
+ type: "vcenter",
+ names: ["\\vcenter"],
+ props: { numArgs: 1, argTypes: ["original"], allowedInText: !1 },
+ handler: function (e, t) {
+ return { type: "vcenter", mode: e.parser.mode, body: t[0] };
+ },
+ htmlBuilder: function (e, t) {
+ var r = St(e.body, t),
+ n = t.fontMetrics().axisHeight,
+ a = 0.5 * (r.height - n - (r.depth + n));
+ return Qe.makeVList(
+ {
+ positionType: "shift",
+ positionData: a,
+ children: [{ type: "elem", elem: r }],
+ },
+ t,
+ );
+ },
+ mathmlBuilder: function (e, t) {
+ return new Nt.MathNode("mpadded", [Ot(e.body, t)], ["vcenter"]);
+ },
+ }),
+ lt({
+ type: "verb",
+ names: ["\\verb"],
+ props: { numArgs: 0, allowedInText: !0 },
+ handler: function (e, t, r) {
+ throw new n("\\verb ended by end of line instead of matching delimiter");
+ },
+ htmlBuilder: function (e, t) {
+ for (var r = Nn(e), n = [], a = t.havingStyle(t.style.text()), i = 0; i < r.length; i++) {
+ var o = r[i];
+ "~" === o && (o = "\\textasciitilde"), n.push(Qe.makeSymbol(o, "Typewriter-Regular", e.mode, a, ["mord", "texttt"]));
+ }
+ return Qe.makeSpan(["mord", "text"].concat(a.sizingClasses(t)), Qe.tryCombineChars(n), a);
+ },
+ mathmlBuilder: function (e, t) {
+ var r = new Nt.TextNode(Nn(e)),
+ n = new Nt.MathNode("mtext", [r]);
+ return n.setAttribute("mathvariant", "monospace"), n;
+ },
+ });
+ var Nn = function (e) {
+ return e.body.replace(/ /g, e.star ? "␣" : " ");
+ },
+ Cn = it,
+ qn = "[ \r\n\t]",
+ In = "(\\\\[a-zA-Z@]+)" + qn + "*",
+ Rn = "[̀-ͯ]",
+ Hn = new RegExp(Rn + "+$"),
+ On =
+ "(" +
+ qn +
+ "+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧-豈-]" +
+ Rn +
+ "*|[\ud800-\udbff][\udc00-\udfff]" +
+ Rn +
+ "*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|" +
+ In +
+ "|\\\\[^\ud800-\udfff])",
+ En = (function () {
+ function e(e, t) {
+ (this.input = void 0),
+ (this.settings = void 0),
+ (this.tokenRegex = void 0),
+ (this.catcodes = void 0),
+ (this.input = e),
+ (this.settings = t),
+ (this.tokenRegex = new RegExp(On, "g")),
+ (this.catcodes = { "%": 14, "~": 13 });
+ }
+ var t = e.prototype;
+ return (
+ (t.setCatcode = function (e, t) {
+ this.catcodes[e] = t;
+ }),
+ (t.lex = function () {
+ var e = this.input,
+ t = this.tokenRegex.lastIndex;
+ if (t === e.length) return new Gr("EOF", new Fr(this, t, t));
+ var r = this.tokenRegex.exec(e);
+ if (null === r || r.index !== t) throw new n("Unexpected character: '" + e[t] + "'", new Gr(e[t], new Fr(this, t, t + 1)));
+ var a = r[6] || r[3] || (r[2] ? "\\ " : " ");
+ if (14 === this.catcodes[a]) {
+ var i = e.indexOf("\n", this.tokenRegex.lastIndex);
+ return (
+ -1 === i
+ ? ((this.tokenRegex.lastIndex = e.length),
+ this.settings.reportNonstrict(
+ "commentAtEnd",
+ "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)",
+ ))
+ : (this.tokenRegex.lastIndex = i + 1),
+ this.lex()
+ );
+ }
+ return new Gr(a, new Fr(this, t, this.tokenRegex.lastIndex));
+ }),
+ e
+ );
+ })(),
+ Ln = (function () {
+ function e(e, t) {
+ void 0 === e && (e = {}),
+ void 0 === t && (t = {}),
+ (this.current = void 0),
+ (this.builtins = void 0),
+ (this.undefStack = void 0),
+ (this.current = t),
+ (this.builtins = e),
+ (this.undefStack = []);
+ }
+ var t = e.prototype;
+ return (
+ (t.beginGroup = function () {
+ this.undefStack.push({});
+ }),
+ (t.endGroup = function () {
+ if (0 === this.undefStack.length)
+ throw new n("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");
+ var e = this.undefStack.pop();
+ for (var t in e) e.hasOwnProperty(t) && (null == e[t] ? delete this.current[t] : (this.current[t] = e[t]));
+ }),
+ (t.endGroups = function () {
+ for (; this.undefStack.length > 0; ) this.endGroup();
+ }),
+ (t.has = function (e) {
+ return this.current.hasOwnProperty(e) || this.builtins.hasOwnProperty(e);
+ }),
+ (t.get = function (e) {
+ return this.current.hasOwnProperty(e) ? this.current[e] : this.builtins[e];
+ }),
+ (t.set = function (e, t, r) {
+ if ((void 0 === r && (r = !1), r)) {
+ for (var n = 0; n < this.undefStack.length; n++) delete this.undefStack[n][e];
+ this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][e] = t);
+ } else {
+ var a = this.undefStack[this.undefStack.length - 1];
+ a && !a.hasOwnProperty(e) && (a[e] = this.current[e]);
+ }
+ null == t ? delete this.current[e] : (this.current[e] = t);
+ }),
+ e
+ );
+ })(),
+ Dn = Pr;
+ Vr("\\noexpand", function (e) {
+ var t = e.popToken();
+ return e.isExpandable(t.text) && ((t.noexpand = !0), (t.treatAsRelax = !0)), { tokens: [t], numArgs: 0 };
+ }),
+ Vr("\\expandafter", function (e) {
+ var t = e.popToken();
+ return e.expandOnce(!0), { tokens: [t], numArgs: 0 };
+ }),
+ Vr("\\@firstoftwo", function (e) {
+ return { tokens: e.consumeArgs(2)[0], numArgs: 0 };
+ }),
+ Vr("\\@secondoftwo", function (e) {
+ return { tokens: e.consumeArgs(2)[1], numArgs: 0 };
+ }),
+ Vr("\\@ifnextchar", function (e) {
+ var t = e.consumeArgs(3);
+ e.consumeSpaces();
+ var r = e.future();
+ return 1 === t[0].length && t[0][0].text === r.text ? { tokens: t[1], numArgs: 0 } : { tokens: t[2], numArgs: 0 };
+ }),
+ Vr("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"),
+ Vr("\\TextOrMath", function (e) {
+ var t = e.consumeArgs(2);
+ return "text" === e.mode ? { tokens: t[0], numArgs: 0 } : { tokens: t[1], numArgs: 0 };
+ });
+ var Pn = {
+ 0: 0,
+ 1: 1,
+ 2: 2,
+ 3: 3,
+ 4: 4,
+ 5: 5,
+ 6: 6,
+ 7: 7,
+ 8: 8,
+ 9: 9,
+ a: 10,
+ A: 10,
+ b: 11,
+ B: 11,
+ c: 12,
+ C: 12,
+ d: 13,
+ D: 13,
+ e: 14,
+ E: 14,
+ f: 15,
+ F: 15,
+ };
+ Vr("\\char", function (e) {
+ var t,
+ r = e.popToken(),
+ a = "";
+ if ("'" === r.text) (t = 8), (r = e.popToken());
+ else if ('"' === r.text) (t = 16), (r = e.popToken());
+ else if ("`" === r.text)
+ if ("\\" === (r = e.popToken()).text[0]) a = r.text.charCodeAt(1);
+ else {
+ if ("EOF" === r.text) throw new n("\\char` missing argument");
+ a = r.text.charCodeAt(0);
+ }
+ else t = 10;
+ if (t) {
+ if (null == (a = Pn[r.text]) || a >= t) throw new n("Invalid base-" + t + " digit " + r.text);
+ for (var i; null != (i = Pn[e.future().text]) && i < t; ) (a *= t), (a += i), e.popToken();
+ }
+ return "\\@char{" + a + "}";
+ });
+ var Vn = function (e, t, r) {
+ var a = e.consumeArg().tokens;
+ if (1 !== a.length) throw new n("\\newcommand's first argument must be a macro name");
+ var i = a[0].text,
+ o = e.isDefined(i);
+ if (o && !t) throw new n("\\newcommand{" + i + "} attempting to redefine " + i + "; use \\renewcommand");
+ if (!o && !r) throw new n("\\renewcommand{" + i + "} when command " + i + " does not yet exist; use \\newcommand");
+ var s = 0;
+ if (1 === (a = e.consumeArg().tokens).length && "[" === a[0].text) {
+ for (var l = "", h = e.expandNextToken(); "]" !== h.text && "EOF" !== h.text; ) (l += h.text), (h = e.expandNextToken());
+ if (!l.match(/^\s*[0-9]+\s*$/)) throw new n("Invalid number of arguments: " + l);
+ (s = parseInt(l)), (a = e.consumeArg().tokens);
+ }
+ return e.macros.set(i, { tokens: a, numArgs: s }), "";
+ };
+ Vr("\\newcommand", function (e) {
+ return Vn(e, !1, !0);
+ }),
+ Vr("\\renewcommand", function (e) {
+ return Vn(e, !0, !1);
+ }),
+ Vr("\\providecommand", function (e) {
+ return Vn(e, !0, !0);
+ }),
+ Vr("\\message", function (e) {
+ var t = e.consumeArgs(1)[0];
+ return (
+ console.log(
+ t
+ .reverse()
+ .map(function (e) {
+ return e.text;
+ })
+ .join(""),
+ ),
+ ""
+ );
+ }),
+ Vr("\\errmessage", function (e) {
+ var t = e.consumeArgs(1)[0];
+ return (
+ console.error(
+ t
+ .reverse()
+ .map(function (e) {
+ return e.text;
+ })
+ .join(""),
+ ),
+ ""
+ );
+ }),
+ Vr("\\show", function (e) {
+ var t = e.popToken(),
+ r = t.text;
+ return console.log(t, e.macros.get(r), Cn[r], he.math[r], he.text[r]), "";
+ }),
+ Vr("\\bgroup", "{"),
+ Vr("\\egroup", "}"),
+ Vr("~", "\\nobreakspace"),
+ Vr("\\lq", "`"),
+ Vr("\\rq", "'"),
+ Vr("\\aa", "\\r a"),
+ Vr("\\AA", "\\r A"),
+ Vr("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}"),
+ Vr("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),
+ Vr("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),
+ Vr("ℬ", "\\mathscr{B}"),
+ Vr("ℰ", "\\mathscr{E}"),
+ Vr("ℱ", "\\mathscr{F}"),
+ Vr("ℋ", "\\mathscr{H}"),
+ Vr("ℐ", "\\mathscr{I}"),
+ Vr("ℒ", "\\mathscr{L}"),
+ Vr("ℳ", "\\mathscr{M}"),
+ Vr("ℛ", "\\mathscr{R}"),
+ Vr("ℭ", "\\mathfrak{C}"),
+ Vr("ℌ", "\\mathfrak{H}"),
+ Vr("ℨ", "\\mathfrak{Z}"),
+ Vr("\\Bbbk", "\\Bbb{k}"),
+ Vr("·", "\\cdotp"),
+ Vr("\\llap", "\\mathllap{\\textrm{#1}}"),
+ Vr("\\rlap", "\\mathrlap{\\textrm{#1}}"),
+ Vr("\\clap", "\\mathclap{\\textrm{#1}}"),
+ Vr("\\mathstrut", "\\vphantom{(}"),
+ Vr("\\underbar", "\\underline{\\text{#1}}"),
+ Vr("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),
+ Vr("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),
+ Vr("\\ne", "\\neq"),
+ Vr("≠", "\\neq"),
+ Vr("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),
+ Vr("∉", "\\notin"),
+ Vr("≘", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),
+ Vr("≙", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),
+ Vr("≚", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),
+ Vr("≛", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),
+ Vr("≝", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),
+ Vr("≞", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),
+ Vr("≟", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),
+ Vr("⟂", "\\perp"),
+ Vr("‼", "\\mathclose{!\\mkern-0.8mu!}"),
+ Vr("∌", "\\notni"),
+ Vr("⌜", "\\ulcorner"),
+ Vr("⌝", "\\urcorner"),
+ Vr("⌞", "\\llcorner"),
+ Vr("⌟", "\\lrcorner"),
+ Vr("©", "\\copyright"),
+ Vr("®", "\\textregistered"),
+ Vr("️", "\\textregistered"),
+ Vr("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),
+ Vr("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),
+ Vr("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),
+ Vr("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),
+ Vr("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"),
+ Vr("⋮", "\\vdots"),
+ Vr("\\varGamma", "\\mathit{\\Gamma}"),
+ Vr("\\varDelta", "\\mathit{\\Delta}"),
+ Vr("\\varTheta", "\\mathit{\\Theta}"),
+ Vr("\\varLambda", "\\mathit{\\Lambda}"),
+ Vr("\\varXi", "\\mathit{\\Xi}"),
+ Vr("\\varPi", "\\mathit{\\Pi}"),
+ Vr("\\varSigma", "\\mathit{\\Sigma}"),
+ Vr("\\varUpsilon", "\\mathit{\\Upsilon}"),
+ Vr("\\varPhi", "\\mathit{\\Phi}"),
+ Vr("\\varPsi", "\\mathit{\\Psi}"),
+ Vr("\\varOmega", "\\mathit{\\Omega}"),
+ Vr("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"),
+ Vr("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),
+ Vr("\\boxed", "\\fbox{$\\displaystyle{#1}$}"),
+ Vr("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"),
+ Vr("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"),
+ Vr("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;");
+ var Fn = {
+ ",": "\\dotsc",
+ "\\not": "\\dotsb",
+ "+": "\\dotsb",
+ "=": "\\dotsb",
+ "<": "\\dotsb",
+ ">": "\\dotsb",
+ "-": "\\dotsb",
+ "*": "\\dotsb",
+ ":": "\\dotsb",
+ "\\DOTSB": "\\dotsb",
+ "\\coprod": "\\dotsb",
+ "\\bigvee": "\\dotsb",
+ "\\bigwedge": "\\dotsb",
+ "\\biguplus": "\\dotsb",
+ "\\bigcap": "\\dotsb",
+ "\\bigcup": "\\dotsb",
+ "\\prod": "\\dotsb",
+ "\\sum": "\\dotsb",
+ "\\bigotimes": "\\dotsb",
+ "\\bigoplus": "\\dotsb",
+ "\\bigodot": "\\dotsb",
+ "\\bigsqcup": "\\dotsb",
+ "\\And": "\\dotsb",
+ "\\longrightarrow": "\\dotsb",
+ "\\Longrightarrow": "\\dotsb",
+ "\\longleftarrow": "\\dotsb",
+ "\\Longleftarrow": "\\dotsb",
+ "\\longleftrightarrow": "\\dotsb",
+ "\\Longleftrightarrow": "\\dotsb",
+ "\\mapsto": "\\dotsb",
+ "\\longmapsto": "\\dotsb",
+ "\\hookrightarrow": "\\dotsb",
+ "\\doteq": "\\dotsb",
+ "\\mathbin": "\\dotsb",
+ "\\mathrel": "\\dotsb",
+ "\\relbar": "\\dotsb",
+ "\\Relbar": "\\dotsb",
+ "\\xrightarrow": "\\dotsb",
+ "\\xleftarrow": "\\dotsb",
+ "\\DOTSI": "\\dotsi",
+ "\\int": "\\dotsi",
+ "\\oint": "\\dotsi",
+ "\\iint": "\\dotsi",
+ "\\iiint": "\\dotsi",
+ "\\iiiint": "\\dotsi",
+ "\\idotsint": "\\dotsi",
+ "\\DOTSX": "\\dotsx",
+ };
+ Vr("\\dots", function (e) {
+ var t = "\\dotso",
+ r = e.expandAfterFuture().text;
+ return (
+ r in Fn ? (t = Fn[r]) : ("\\not" === r.slice(0, 4) || (r in he.math && l(["bin", "rel"], he.math[r].group))) && (t = "\\dotsb"), t
+ );
+ });
+ var Gn = {
+ ")": !0,
+ "]": !0,
+ "\\rbrack": !0,
+ "\\}": !0,
+ "\\rbrace": !0,
+ "\\rangle": !0,
+ "\\rceil": !0,
+ "\\rfloor": !0,
+ "\\rgroup": !0,
+ "\\rmoustache": !0,
+ "\\right": !0,
+ "\\bigr": !0,
+ "\\biggr": !0,
+ "\\Bigr": !0,
+ "\\Biggr": !0,
+ $: !0,
+ ";": !0,
+ ".": !0,
+ ",": !0,
+ };
+ Vr("\\dotso", function (e) {
+ return e.future().text in Gn ? "\\ldots\\," : "\\ldots";
+ }),
+ Vr("\\dotsc", function (e) {
+ var t = e.future().text;
+ return t in Gn && "," !== t ? "\\ldots\\," : "\\ldots";
+ }),
+ Vr("\\cdots", function (e) {
+ return e.future().text in Gn ? "\\@cdots\\," : "\\@cdots";
+ }),
+ Vr("\\dotsb", "\\cdots"),
+ Vr("\\dotsm", "\\cdots"),
+ Vr("\\dotsi", "\\!\\cdots"),
+ Vr("\\dotsx", "\\ldots\\,"),
+ Vr("\\DOTSI", "\\relax"),
+ Vr("\\DOTSB", "\\relax"),
+ Vr("\\DOTSX", "\\relax"),
+ Vr("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),
+ Vr("\\,", "\\tmspace+{3mu}{.1667em}"),
+ Vr("\\thinspace", "\\,"),
+ Vr("\\>", "\\mskip{4mu}"),
+ Vr("\\:", "\\tmspace+{4mu}{.2222em}"),
+ Vr("\\medspace", "\\:"),
+ Vr("\\;", "\\tmspace+{5mu}{.2777em}"),
+ Vr("\\thickspace", "\\;"),
+ Vr("\\!", "\\tmspace-{3mu}{.1667em}"),
+ Vr("\\negthinspace", "\\!"),
+ Vr("\\negmedspace", "\\tmspace-{4mu}{.2222em}"),
+ Vr("\\negthickspace", "\\tmspace-{5mu}{.277em}"),
+ Vr("\\enspace", "\\kern.5em "),
+ Vr("\\enskip", "\\hskip.5em\\relax"),
+ Vr("\\quad", "\\hskip1em\\relax"),
+ Vr("\\qquad", "\\hskip2em\\relax"),
+ Vr("\\tag", "\\@ifstar\\tag@literal\\tag@paren"),
+ Vr("\\tag@paren", "\\tag@literal{({#1})}"),
+ Vr("\\tag@literal", function (e) {
+ if (e.macros.get("\\df@tag")) throw new n("Multiple \\tag");
+ return "\\gdef\\df@tag{\\text{#1}}";
+ }),
+ Vr(
+ "\\bmod",
+ "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}",
+ ),
+ Vr("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),
+ Vr("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"),
+ Vr("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),
+ Vr("\\newline", "\\\\\\relax"),
+ Vr("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");
+ var Un = W(I["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * I["Main-Regular"]["A".charCodeAt(0)][1]);
+ Vr("\\LaTeX", "\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{" + Un + "}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),
+ Vr("\\KaTeX", "\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{" + Un + "}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),
+ Vr("\\hspace", "\\@ifstar\\@hspacer\\@hspace"),
+ Vr("\\@hspace", "\\hskip #1\\relax"),
+ Vr("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"),
+ Vr("\\ordinarycolon", ":"),
+ Vr("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"),
+ Vr("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),
+ Vr("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),
+ Vr("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),
+ Vr("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),
+ Vr("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),
+ Vr("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),
+ Vr("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),
+ Vr("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),
+ Vr("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),
+ Vr("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),
+ Vr("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),
+ Vr("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),
+ Vr("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),
+ Vr("∷", "\\dblcolon"),
+ Vr("∹", "\\eqcolon"),
+ Vr("≔", "\\coloneqq"),
+ Vr("≕", "\\eqqcolon"),
+ Vr("⩴", "\\Coloneqq"),
+ Vr("\\ratio", "\\vcentcolon"),
+ Vr("\\coloncolon", "\\dblcolon"),
+ Vr("\\colonequals", "\\coloneqq"),
+ Vr("\\coloncolonequals", "\\Coloneqq"),
+ Vr("\\equalscolon", "\\eqqcolon"),
+ Vr("\\equalscoloncolon", "\\Eqqcolon"),
+ Vr("\\colonminus", "\\coloneq"),
+ Vr("\\coloncolonminus", "\\Coloneq"),
+ Vr("\\minuscolon", "\\eqcolon"),
+ Vr("\\minuscoloncolon", "\\Eqcolon"),
+ Vr("\\coloncolonapprox", "\\Colonapprox"),
+ Vr("\\coloncolonsim", "\\Colonsim"),
+ Vr("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),
+ Vr("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),
+ Vr("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),
+ Vr("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),
+ Vr("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),
+ Vr("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"),
+ Vr("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"),
+ Vr("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}"),
+ Vr("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}"),
+ Vr("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}"),
+ Vr("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}"),
+ Vr("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),
+ Vr("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),
+ Vr("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{≩}"),
+ Vr("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{≨}"),
+ Vr("\\ngeqq", "\\html@mathml{\\@ngeqq}{≱}"),
+ Vr("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{≱}"),
+ Vr("\\nleqq", "\\html@mathml{\\@nleqq}{≰}"),
+ Vr("\\nleqslant", "\\html@mathml{\\@nleqslant}{≰}"),
+ Vr("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}"),
+ Vr("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}"),
+ Vr("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{⊈}"),
+ Vr("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{⊉}"),
+ Vr("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}"),
+ Vr("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}"),
+ Vr("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}"),
+ Vr("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"),
+ Vr("\\imath", "\\html@mathml{\\@imath}{ı}"),
+ Vr("\\jmath", "\\html@mathml{\\@jmath}{ȷ}"),
+ Vr("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),
+ Vr("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),
+ Vr("⟦", "\\llbracket"),
+ Vr("⟧", "\\rrbracket"),
+ Vr("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),
+ Vr("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),
+ Vr("⦃", "\\lBrace"),
+ Vr("⦄", "\\rBrace"),
+ Vr(
+ "\\minuso",
+ "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}",
+ ),
+ Vr("⦵", "\\minuso"),
+ Vr("\\darr", "\\downarrow"),
+ Vr("\\dArr", "\\Downarrow"),
+ Vr("\\Darr", "\\Downarrow"),
+ Vr("\\lang", "\\langle"),
+ Vr("\\rang", "\\rangle"),
+ Vr("\\uarr", "\\uparrow"),
+ Vr("\\uArr", "\\Uparrow"),
+ Vr("\\Uarr", "\\Uparrow"),
+ Vr("\\N", "\\mathbb{N}"),
+ Vr("\\R", "\\mathbb{R}"),
+ Vr("\\Z", "\\mathbb{Z}"),
+ Vr("\\alef", "\\aleph"),
+ Vr("\\alefsym", "\\aleph"),
+ Vr("\\Alpha", "\\mathrm{A}"),
+ Vr("\\Beta", "\\mathrm{B}"),
+ Vr("\\bull", "\\bullet"),
+ Vr("\\Chi", "\\mathrm{X}"),
+ Vr("\\clubs", "\\clubsuit"),
+ Vr("\\cnums", "\\mathbb{C}"),
+ Vr("\\Complex", "\\mathbb{C}"),
+ Vr("\\Dagger", "\\ddagger"),
+ Vr("\\diamonds", "\\diamondsuit"),
+ Vr("\\empty", "\\emptyset"),
+ Vr("\\Epsilon", "\\mathrm{E}"),
+ Vr("\\Eta", "\\mathrm{H}"),
+ Vr("\\exist", "\\exists"),
+ Vr("\\harr", "\\leftrightarrow"),
+ Vr("\\hArr", "\\Leftrightarrow"),
+ Vr("\\Harr", "\\Leftrightarrow"),
+ Vr("\\hearts", "\\heartsuit"),
+ Vr("\\image", "\\Im"),
+ Vr("\\infin", "\\infty"),
+ Vr("\\Iota", "\\mathrm{I}"),
+ Vr("\\isin", "\\in"),
+ Vr("\\Kappa", "\\mathrm{K}"),
+ Vr("\\larr", "\\leftarrow"),
+ Vr("\\lArr", "\\Leftarrow"),
+ Vr("\\Larr", "\\Leftarrow"),
+ Vr("\\lrarr", "\\leftrightarrow"),
+ Vr("\\lrArr", "\\Leftrightarrow"),
+ Vr("\\Lrarr", "\\Leftrightarrow"),
+ Vr("\\Mu", "\\mathrm{M}"),
+ Vr("\\natnums", "\\mathbb{N}"),
+ Vr("\\Nu", "\\mathrm{N}"),
+ Vr("\\Omicron", "\\mathrm{O}"),
+ Vr("\\plusmn", "\\pm"),
+ Vr("\\rarr", "\\rightarrow"),
+ Vr("\\rArr", "\\Rightarrow"),
+ Vr("\\Rarr", "\\Rightarrow"),
+ Vr("\\real", "\\Re"),
+ Vr("\\reals", "\\mathbb{R}"),
+ Vr("\\Reals", "\\mathbb{R}"),
+ Vr("\\Rho", "\\mathrm{P}"),
+ Vr("\\sdot", "\\cdot"),
+ Vr("\\sect", "\\S"),
+ Vr("\\spades", "\\spadesuit"),
+ Vr("\\sub", "\\subset"),
+ Vr("\\sube", "\\subseteq"),
+ Vr("\\supe", "\\supseteq"),
+ Vr("\\Tau", "\\mathrm{T}"),
+ Vr("\\thetasym", "\\vartheta"),
+ Vr("\\weierp", "\\wp"),
+ Vr("\\Zeta", "\\mathrm{Z}"),
+ Vr("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"),
+ Vr("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"),
+ Vr("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),
+ Vr("\\bra", "\\mathinner{\\langle{#1}|}"),
+ Vr("\\ket", "\\mathinner{|{#1}\\rangle}"),
+ Vr("\\braket", "\\mathinner{\\langle{#1}\\rangle}"),
+ Vr("\\Bra", "\\left\\langle#1\\right|"),
+ Vr("\\Ket", "\\left|#1\\right\\rangle");
+ var Yn = function (e) {
+ return function (t) {
+ var r = t.consumeArg().tokens,
+ n = t.consumeArg().tokens,
+ a = t.consumeArg().tokens,
+ i = t.consumeArg().tokens,
+ o = t.macros.get("|"),
+ s = t.macros.get("\\|");
+ t.macros.beginGroup();
+ var l = function (t) {
+ return function (r) {
+ e && (r.macros.set("|", o), a.length && r.macros.set("\\|", s));
+ var i = t;
+ return !t && a.length && "|" === r.future().text && (r.popToken(), (i = !0)), { tokens: i ? a : n, numArgs: 0 };
+ };
+ };
+ t.macros.set("|", l(!1)), a.length && t.macros.set("\\|", l(!0));
+ var h = t.consumeArg().tokens,
+ c = t.expandTokens([].concat(i, h, r));
+ return t.macros.endGroup(), { tokens: c.reverse(), numArgs: 0 };
+ };
+ };
+ Vr("\\bra@ket", Yn(!1)),
+ Vr("\\bra@set", Yn(!0)),
+ Vr("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),
+ Vr("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),
+ Vr("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),
+ Vr("\\angln", "{\\angl n}"),
+ Vr("\\blue", "\\textcolor{##6495ed}{#1}"),
+ Vr("\\orange", "\\textcolor{##ffa500}{#1}"),
+ Vr("\\pink", "\\textcolor{##ff00af}{#1}"),
+ Vr("\\red", "\\textcolor{##df0030}{#1}"),
+ Vr("\\green", "\\textcolor{##28ae7b}{#1}"),
+ Vr("\\gray", "\\textcolor{gray}{#1}"),
+ Vr("\\purple", "\\textcolor{##9d38bd}{#1}"),
+ Vr("\\blueA", "\\textcolor{##ccfaff}{#1}"),
+ Vr("\\blueB", "\\textcolor{##80f6ff}{#1}"),
+ Vr("\\blueC", "\\textcolor{##63d9ea}{#1}"),
+ Vr("\\blueD", "\\textcolor{##11accd}{#1}"),
+ Vr("\\blueE", "\\textcolor{##0c7f99}{#1}"),
+ Vr("\\tealA", "\\textcolor{##94fff5}{#1}"),
+ Vr("\\tealB", "\\textcolor{##26edd5}{#1}"),
+ Vr("\\tealC", "\\textcolor{##01d1c1}{#1}"),
+ Vr("\\tealD", "\\textcolor{##01a995}{#1}"),
+ Vr("\\tealE", "\\textcolor{##208170}{#1}"),
+ Vr("\\greenA", "\\textcolor{##b6ffb0}{#1}"),
+ Vr("\\greenB", "\\textcolor{##8af281}{#1}"),
+ Vr("\\greenC", "\\textcolor{##74cf70}{#1}"),
+ Vr("\\greenD", "\\textcolor{##1fab54}{#1}"),
+ Vr("\\greenE", "\\textcolor{##0d923f}{#1}"),
+ Vr("\\goldA", "\\textcolor{##ffd0a9}{#1}"),
+ Vr("\\goldB", "\\textcolor{##ffbb71}{#1}"),
+ Vr("\\goldC", "\\textcolor{##ff9c39}{#1}"),
+ Vr("\\goldD", "\\textcolor{##e07d10}{#1}"),
+ Vr("\\goldE", "\\textcolor{##a75a05}{#1}"),
+ Vr("\\redA", "\\textcolor{##fca9a9}{#1}"),
+ Vr("\\redB", "\\textcolor{##ff8482}{#1}"),
+ Vr("\\redC", "\\textcolor{##f9685d}{#1}"),
+ Vr("\\redD", "\\textcolor{##e84d39}{#1}"),
+ Vr("\\redE", "\\textcolor{##bc2612}{#1}"),
+ Vr("\\maroonA", "\\textcolor{##ffbde0}{#1}"),
+ Vr("\\maroonB", "\\textcolor{##ff92c6}{#1}"),
+ Vr("\\maroonC", "\\textcolor{##ed5fa6}{#1}"),
+ Vr("\\maroonD", "\\textcolor{##ca337c}{#1}"),
+ Vr("\\maroonE", "\\textcolor{##9e034e}{#1}"),
+ Vr("\\purpleA", "\\textcolor{##ddd7ff}{#1}"),
+ Vr("\\purpleB", "\\textcolor{##c6b9fc}{#1}"),
+ Vr("\\purpleC", "\\textcolor{##aa87ff}{#1}"),
+ Vr("\\purpleD", "\\textcolor{##7854ab}{#1}"),
+ Vr("\\purpleE", "\\textcolor{##543b78}{#1}"),
+ Vr("\\mintA", "\\textcolor{##f5f9e8}{#1}"),
+ Vr("\\mintB", "\\textcolor{##edf2df}{#1}"),
+ Vr("\\mintC", "\\textcolor{##e0e5cc}{#1}"),
+ Vr("\\grayA", "\\textcolor{##f6f7f7}{#1}"),
+ Vr("\\grayB", "\\textcolor{##f0f1f2}{#1}"),
+ Vr("\\grayC", "\\textcolor{##e3e5e6}{#1}"),
+ Vr("\\grayD", "\\textcolor{##d6d8da}{#1}"),
+ Vr("\\grayE", "\\textcolor{##babec2}{#1}"),
+ Vr("\\grayF", "\\textcolor{##888d93}{#1}"),
+ Vr("\\grayG", "\\textcolor{##626569}{#1}"),
+ Vr("\\grayH", "\\textcolor{##3b3e40}{#1}"),
+ Vr("\\grayI", "\\textcolor{##21242c}{#1}"),
+ Vr("\\kaBlue", "\\textcolor{##314453}{#1}"),
+ Vr("\\kaGreen", "\\textcolor{##71B307}{#1}");
+ var Xn = { "^": !0, _: !0, "\\limits": !0, "\\nolimits": !0 },
+ Wn = (function () {
+ function e(e, t, r) {
+ (this.settings = void 0),
+ (this.expansionCount = void 0),
+ (this.lexer = void 0),
+ (this.macros = void 0),
+ (this.stack = void 0),
+ (this.mode = void 0),
+ (this.settings = t),
+ (this.expansionCount = 0),
+ this.feed(e),
+ (this.macros = new Ln(Dn, t.macros)),
+ (this.mode = r),
+ (this.stack = []);
+ }
+ var t = e.prototype;
+ return (
+ (t.feed = function (e) {
+ this.lexer = new En(e, this.settings);
+ }),
+ (t.switchMode = function (e) {
+ this.mode = e;
+ }),
+ (t.beginGroup = function () {
+ this.macros.beginGroup();
+ }),
+ (t.endGroup = function () {
+ this.macros.endGroup();
+ }),
+ (t.endGroups = function () {
+ this.macros.endGroups();
+ }),
+ (t.future = function () {
+ return 0 === this.stack.length && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1];
+ }),
+ (t.popToken = function () {
+ return this.future(), this.stack.pop();
+ }),
+ (t.pushToken = function (e) {
+ this.stack.push(e);
+ }),
+ (t.pushTokens = function (e) {
+ var t;
+ (t = this.stack).push.apply(t, e);
+ }),
+ (t.scanArgument = function (e) {
+ var t, r, n;
+ if (e) {
+ if ((this.consumeSpaces(), "[" !== this.future().text)) return null;
+ t = this.popToken();
+ var a = this.consumeArg(["]"]);
+ (n = a.tokens), (r = a.end);
+ } else {
+ var i = this.consumeArg();
+ (n = i.tokens), (t = i.start), (r = i.end);
+ }
+ return this.pushToken(new Gr("EOF", r.loc)), this.pushTokens(n), t.range(r, "");
+ }),
+ (t.consumeSpaces = function () {
+ for (; " " === this.future().text; ) this.stack.pop();
+ }),
+ (t.consumeArg = function (e) {
+ var t = [],
+ r = e && e.length > 0;
+ r || this.consumeSpaces();
+ var a,
+ i = this.future(),
+ o = 0,
+ s = 0;
+ do {
+ if (((a = this.popToken()), t.push(a), "{" === a.text)) ++o;
+ else if ("}" === a.text) {
+ if (-1 == --o) throw new n("Extra }", a);
+ } else if ("EOF" === a.text)
+ throw new n("Unexpected end of input in a macro argument, expected '" + (e && r ? e[s] : "}") + "'", a);
+ if (e && r)
+ if ((0 === o || (1 === o && "{" === e[s])) && a.text === e[s]) {
+ if (++s === e.length) {
+ t.splice(-s, s);
+ break;
+ }
+ } else s = 0;
+ } while (0 !== o || r);
+ return "{" === i.text && "}" === t[t.length - 1].text && (t.pop(), t.shift()), t.reverse(), { tokens: t, start: i, end: a };
+ }),
+ (t.consumeArgs = function (e, t) {
+ if (t) {
+ if (t.length !== e + 1) throw new n("The length of delimiters doesn't match the number of args!");
+ for (var r = t[0], a = 0; a < r.length; a++) {
+ var i = this.popToken();
+ if (r[a] !== i.text) throw new n("Use of the macro doesn't match its definition", i);
+ }
+ }
+ for (var o = [], s = 0; s < e; s++) o.push(this.consumeArg(t && t[s + 1]).tokens);
+ return o;
+ }),
+ (t.expandOnce = function (e) {
+ var t = this.popToken(),
+ r = t.text,
+ a = t.noexpand ? null : this._getExpansion(r);
+ if (null == a || (e && a.unexpandable)) {
+ if (e && null == a && "\\" === r[0] && !this.isDefined(r)) throw new n("Undefined control sequence: " + r);
+ return this.pushToken(t), !1;
+ }
+ if ((this.expansionCount++, this.expansionCount > this.settings.maxExpand))
+ throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");
+ var i = a.tokens,
+ o = this.consumeArgs(a.numArgs, a.delimiters);
+ if (a.numArgs)
+ for (var s = (i = i.slice()).length - 1; s >= 0; --s) {
+ var l = i[s];
+ if ("#" === l.text) {
+ if (0 === s) throw new n("Incomplete placeholder at end of macro body", l);
+ if ("#" === (l = i[--s]).text) i.splice(s + 1, 1);
+ else {
+ if (!/^[1-9]$/.test(l.text)) throw new n("Not a valid argument number", l);
+ var h;
+ (h = i).splice.apply(h, [s, 2].concat(o[+l.text - 1]));
+ }
+ }
+ }
+ return this.pushTokens(i), i.length;
+ }),
+ (t.expandAfterFuture = function () {
+ return this.expandOnce(), this.future();
+ }),
+ (t.expandNextToken = function () {
+ for (;;)
+ if (!1 === this.expandOnce()) {
+ var e = this.stack.pop();
+ return e.treatAsRelax && (e.text = "\\relax"), e;
+ }
+ throw new Error();
+ }),
+ (t.expandMacro = function (e) {
+ return this.macros.has(e) ? this.expandTokens([new Gr(e)]) : void 0;
+ }),
+ (t.expandTokens = function (e) {
+ var t = [],
+ r = this.stack.length;
+ for (this.pushTokens(e); this.stack.length > r; )
+ if (!1 === this.expandOnce(!0)) {
+ var n = this.stack.pop();
+ n.treatAsRelax && ((n.noexpand = !1), (n.treatAsRelax = !1)), t.push(n);
+ }
+ return t;
+ }),
+ (t.expandMacroAsText = function (e) {
+ var t = this.expandMacro(e);
+ return t
+ ? t
+ .map(function (e) {
+ return e.text;
+ })
+ .join("")
+ : t;
+ }),
+ (t._getExpansion = function (e) {
+ var t = this.macros.get(e);
+ if (null == t) return t;
+ if (1 === e.length) {
+ var r = this.lexer.catcodes[e];
+ if (null != r && 13 !== r) return;
+ }
+ var n = "function" == typeof t ? t(this) : t;
+ if ("string" == typeof n) {
+ var a = 0;
+ if (-1 !== n.indexOf("#")) for (var i = n.replace(/##/g, ""); -1 !== i.indexOf("#" + (a + 1)); ) ++a;
+ for (var o = new En(n, this.settings), s = [], l = o.lex(); "EOF" !== l.text; ) s.push(l), (l = o.lex());
+ return s.reverse(), { tokens: s, numArgs: a };
+ }
+ return n;
+ }),
+ (t.isDefined = function (e) {
+ return (
+ this.macros.has(e) || Cn.hasOwnProperty(e) || he.math.hasOwnProperty(e) || he.text.hasOwnProperty(e) || Xn.hasOwnProperty(e)
+ );
+ }),
+ (t.isExpandable = function (e) {
+ var t = this.macros.get(e);
+ return null != t ? "string" == typeof t || "function" == typeof t || !t.unexpandable : Cn.hasOwnProperty(e) && !Cn[e].primitive;
+ }),
+ e
+ );
+ })(),
+ _n = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,
+ jn = Object.freeze({
+ "₊": "+",
+ "₋": "-",
+ "₌": "=",
+ "₍": "(",
+ "₎": ")",
+ "₀": "0",
+ "₁": "1",
+ "₂": "2",
+ "₃": "3",
+ "₄": "4",
+ "₅": "5",
+ "₆": "6",
+ "₇": "7",
+ "₈": "8",
+ "₉": "9",
+ ₐ: "a",
+ ₑ: "e",
+ ₕ: "h",
+ ᵢ: "i",
+ ⱼ: "j",
+ ₖ: "k",
+ ₗ: "l",
+ ₘ: "m",
+ ₙ: "n",
+ ₒ: "o",
+ ₚ: "p",
+ ᵣ: "r",
+ ₛ: "s",
+ ₜ: "t",
+ ᵤ: "u",
+ ᵥ: "v",
+ ₓ: "x",
+ ᵦ: "β",
+ ᵧ: "γ",
+ ᵨ: "ρ",
+ ᵩ: "ϕ",
+ ᵪ: "χ",
+ "⁺": "+",
+ "⁻": "-",
+ "⁼": "=",
+ "⁽": "(",
+ "⁾": ")",
+ "⁰": "0",
+ "¹": "1",
+ "²": "2",
+ "³": "3",
+ "⁴": "4",
+ "⁵": "5",
+ "⁶": "6",
+ "⁷": "7",
+ "⁸": "8",
+ "⁹": "9",
+ ᴬ: "A",
+ ᴮ: "B",
+ ᴰ: "D",
+ ᴱ: "E",
+ ᴳ: "G",
+ ᴴ: "H",
+ ᴵ: "I",
+ ᴶ: "J",
+ ᴷ: "K",
+ ᴸ: "L",
+ ᴹ: "M",
+ ᴺ: "N",
+ ᴼ: "O",
+ ᴾ: "P",
+ ᴿ: "R",
+ ᵀ: "T",
+ ᵁ: "U",
+ ⱽ: "V",
+ ᵂ: "W",
+ ᵃ: "a",
+ ᵇ: "b",
+ ᶜ: "c",
+ ᵈ: "d",
+ ᵉ: "e",
+ ᶠ: "f",
+ ᵍ: "g",
+ ʰ: "h",
+ ⁱ: "i",
+ ʲ: "j",
+ ᵏ: "k",
+ ˡ: "l",
+ ᵐ: "m",
+ ⁿ: "n",
+ ᵒ: "o",
+ ᵖ: "p",
+ ʳ: "r",
+ ˢ: "s",
+ ᵗ: "t",
+ ᵘ: "u",
+ ᵛ: "v",
+ ʷ: "w",
+ ˣ: "x",
+ ʸ: "y",
+ ᶻ: "z",
+ ᵝ: "β",
+ ᵞ: "γ",
+ ᵟ: "δ",
+ ᵠ: "ϕ",
+ ᵡ: "χ",
+ ᶿ: "θ",
+ }),
+ $n = {
+ "́": { text: "\\'", math: "\\acute" },
+ "̀": { text: "\\`", math: "\\grave" },
+ "̈": { text: '\\"', math: "\\ddot" },
+ "̃": { text: "\\~", math: "\\tilde" },
+ "̄": { text: "\\=", math: "\\bar" },
+ "̆": { text: "\\u", math: "\\breve" },
+ "̌": { text: "\\v", math: "\\check" },
+ "̂": { text: "\\^", math: "\\hat" },
+ "̇": { text: "\\.", math: "\\dot" },
+ "̊": { text: "\\r", math: "\\mathring" },
+ "̋": { text: "\\H" },
+ "̧": { text: "\\c" },
+ },
+ Zn = {
+ á: "á",
+ à: "à",
+ ä: "ä",
+ ǟ: "ǟ",
+ ã: "ã",
+ ā: "ā",
+ ă: "ă",
+ ắ: "ắ",
+ ằ: "ằ",
+ ẵ: "ẵ",
+ ǎ: "ǎ",
+ â: "â",
+ ấ: "ấ",
+ ầ: "ầ",
+ ẫ: "ẫ",
+ ȧ: "ȧ",
+ ǡ: "ǡ",
+ å: "å",
+ ǻ: "ǻ",
+ ḃ: "ḃ",
+ ć: "ć",
+ ḉ: "ḉ",
+ č: "č",
+ ĉ: "ĉ",
+ ċ: "ċ",
+ ç: "ç",
+ ď: "ď",
+ ḋ: "ḋ",
+ ḑ: "ḑ",
+ é: "é",
+ è: "è",
+ ë: "ë",
+ ẽ: "ẽ",
+ ē: "ē",
+ ḗ: "ḗ",
+ ḕ: "ḕ",
+ ĕ: "ĕ",
+ ḝ: "ḝ",
+ ě: "ě",
+ ê: "ê",
+ ế: "ế",
+ ề: "ề",
+ ễ: "ễ",
+ ė: "ė",
+ ȩ: "ȩ",
+ ḟ: "ḟ",
+ ǵ: "ǵ",
+ ḡ: "ḡ",
+ ğ: "ğ",
+ ǧ: "ǧ",
+ ĝ: "ĝ",
+ ġ: "ġ",
+ ģ: "ģ",
+ ḧ: "ḧ",
+ ȟ: "ȟ",
+ ĥ: "ĥ",
+ ḣ: "ḣ",
+ ḩ: "ḩ",
+ í: "í",
+ ì: "ì",
+ ï: "ï",
+ ḯ: "ḯ",
+ ĩ: "ĩ",
+ ī: "ī",
+ ĭ: "ĭ",
+ ǐ: "ǐ",
+ î: "î",
+ ǰ: "ǰ",
+ ĵ: "ĵ",
+ ḱ: "ḱ",
+ ǩ: "ǩ",
+ ķ: "ķ",
+ ĺ: "ĺ",
+ ľ: "ľ",
+ ļ: "ļ",
+ ḿ: "ḿ",
+ ṁ: "ṁ",
+ ń: "ń",
+ ǹ: "ǹ",
+ ñ: "ñ",
+ ň: "ň",
+ ṅ: "ṅ",
+ ņ: "ņ",
+ ó: "ó",
+ ò: "ò",
+ ö: "ö",
+ ȫ: "ȫ",
+ õ: "õ",
+ ṍ: "ṍ",
+ ṏ: "ṏ",
+ ȭ: "ȭ",
+ ō: "ō",
+ ṓ: "ṓ",
+ ṑ: "ṑ",
+ ŏ: "ŏ",
+ ǒ: "ǒ",
+ ô: "ô",
+ ố: "ố",
+ ồ: "ồ",
+ ỗ: "ỗ",
+ ȯ: "ȯ",
+ ȱ: "ȱ",
+ ő: "ő",
+ ṕ: "ṕ",
+ ṗ: "ṗ",
+ ŕ: "ŕ",
+ ř: "ř",
+ ṙ: "ṙ",
+ ŗ: "ŗ",
+ ś: "ś",
+ ṥ: "ṥ",
+ š: "š",
+ ṧ: "ṧ",
+ ŝ: "ŝ",
+ ṡ: "ṡ",
+ ş: "ş",
+ ẗ: "ẗ",
+ ť: "ť",
+ ṫ: "ṫ",
+ ţ: "ţ",
+ ú: "ú",
+ ù: "ù",
+ ü: "ü",
+ ǘ: "ǘ",
+ ǜ: "ǜ",
+ ǖ: "ǖ",
+ ǚ: "ǚ",
+ ũ: "ũ",
+ ṹ: "ṹ",
+ ū: "ū",
+ ṻ: "ṻ",
+ ŭ: "ŭ",
+ ǔ: "ǔ",
+ û: "û",
+ ů: "ů",
+ ű: "ű",
+ ṽ: "ṽ",
+ ẃ: "ẃ",
+ ẁ: "ẁ",
+ ẅ: "ẅ",
+ ŵ: "ŵ",
+ ẇ: "ẇ",
+ ẘ: "ẘ",
+ ẍ: "ẍ",
+ ẋ: "ẋ",
+ ý: "ý",
+ ỳ: "ỳ",
+ ÿ: "ÿ",
+ ỹ: "ỹ",
+ ȳ: "ȳ",
+ ŷ: "ŷ",
+ ẏ: "ẏ",
+ ẙ: "ẙ",
+ ź: "ź",
+ ž: "ž",
+ ẑ: "ẑ",
+ ż: "ż",
+ Á: "Á",
+ À: "À",
+ Ä: "Ä",
+ Ǟ: "Ǟ",
+ Ã: "Ã",
+ Ā: "Ā",
+ Ă: "Ă",
+ Ắ: "Ắ",
+ Ằ: "Ằ",
+ Ẵ: "Ẵ",
+ Ǎ: "Ǎ",
+ Â: "Â",
+ Ấ: "Ấ",
+ Ầ: "Ầ",
+ Ẫ: "Ẫ",
+ Ȧ: "Ȧ",
+ Ǡ: "Ǡ",
+ Å: "Å",
+ Ǻ: "Ǻ",
+ Ḃ: "Ḃ",
+ Ć: "Ć",
+ Ḉ: "Ḉ",
+ Č: "Č",
+ Ĉ: "Ĉ",
+ Ċ: "Ċ",
+ Ç: "Ç",
+ Ď: "Ď",
+ Ḋ: "Ḋ",
+ Ḑ: "Ḑ",
+ É: "É",
+ È: "È",
+ Ë: "Ë",
+ Ẽ: "Ẽ",
+ Ē: "Ē",
+ Ḗ: "Ḗ",
+ Ḕ: "Ḕ",
+ Ĕ: "Ĕ",
+ Ḝ: "Ḝ",
+ Ě: "Ě",
+ Ê: "Ê",
+ Ế: "Ế",
+ Ề: "Ề",
+ Ễ: "Ễ",
+ Ė: "Ė",
+ Ȩ: "Ȩ",
+ Ḟ: "Ḟ",
+ Ǵ: "Ǵ",
+ Ḡ: "Ḡ",
+ Ğ: "Ğ",
+ Ǧ: "Ǧ",
+ Ĝ: "Ĝ",
+ Ġ: "Ġ",
+ Ģ: "Ģ",
+ Ḧ: "Ḧ",
+ Ȟ: "Ȟ",
+ Ĥ: "Ĥ",
+ Ḣ: "Ḣ",
+ Ḩ: "Ḩ",
+ Í: "Í",
+ Ì: "Ì",
+ Ï: "Ï",
+ Ḯ: "Ḯ",
+ Ĩ: "Ĩ",
+ Ī: "Ī",
+ Ĭ: "Ĭ",
+ Ǐ: "Ǐ",
+ Î: "Î",
+ İ: "İ",
+ Ĵ: "Ĵ",
+ Ḱ: "Ḱ",
+ Ǩ: "Ǩ",
+ Ķ: "Ķ",
+ Ĺ: "Ĺ",
+ Ľ: "Ľ",
+ Ļ: "Ļ",
+ Ḿ: "Ḿ",
+ Ṁ: "Ṁ",
+ Ń: "Ń",
+ Ǹ: "Ǹ",
+ Ñ: "Ñ",
+ Ň: "Ň",
+ Ṅ: "Ṅ",
+ Ņ: "Ņ",
+ Ó: "Ó",
+ Ò: "Ò",
+ Ö: "Ö",
+ Ȫ: "Ȫ",
+ Õ: "Õ",
+ Ṍ: "Ṍ",
+ Ṏ: "Ṏ",
+ Ȭ: "Ȭ",
+ Ō: "Ō",
+ Ṓ: "Ṓ",
+ Ṑ: "Ṑ",
+ Ŏ: "Ŏ",
+ Ǒ: "Ǒ",
+ Ô: "Ô",
+ Ố: "Ố",
+ Ồ: "Ồ",
+ Ỗ: "Ỗ",
+ Ȯ: "Ȯ",
+ Ȱ: "Ȱ",
+ Ő: "Ő",
+ Ṕ: "Ṕ",
+ Ṗ: "Ṗ",
+ Ŕ: "Ŕ",
+ Ř: "Ř",
+ Ṙ: "Ṙ",
+ Ŗ: "Ŗ",
+ Ś: "Ś",
+ Ṥ: "Ṥ",
+ Š: "Š",
+ Ṧ: "Ṧ",
+ Ŝ: "Ŝ",
+ Ṡ: "Ṡ",
+ Ş: "Ş",
+ Ť: "Ť",
+ Ṫ: "Ṫ",
+ Ţ: "Ţ",
+ Ú: "Ú",
+ Ù: "Ù",
+ Ü: "Ü",
+ Ǘ: "Ǘ",
+ Ǜ: "Ǜ",
+ Ǖ: "Ǖ",
+ Ǚ: "Ǚ",
+ Ũ: "Ũ",
+ Ṹ: "Ṹ",
+ Ū: "Ū",
+ Ṻ: "Ṻ",
+ Ŭ: "Ŭ",
+ Ǔ: "Ǔ",
+ Û: "Û",
+ Ů: "Ů",
+ Ű: "Ű",
+ Ṽ: "Ṽ",
+ Ẃ: "Ẃ",
+ Ẁ: "Ẁ",
+ Ẅ: "Ẅ",
+ Ŵ: "Ŵ",
+ Ẇ: "Ẇ",
+ Ẍ: "Ẍ",
+ Ẋ: "Ẋ",
+ Ý: "Ý",
+ Ỳ: "Ỳ",
+ Ÿ: "Ÿ",
+ Ỹ: "Ỹ",
+ Ȳ: "Ȳ",
+ Ŷ: "Ŷ",
+ Ẏ: "Ẏ",
+ Ź: "Ź",
+ Ž: "Ž",
+ Ẑ: "Ẑ",
+ Ż: "Ż",
+ ά: "ά",
+ ὰ: "ὰ",
+ ᾱ: "ᾱ",
+ ᾰ: "ᾰ",
+ έ: "έ",
+ ὲ: "ὲ",
+ ή: "ή",
+ ὴ: "ὴ",
+ ί: "ί",
+ ὶ: "ὶ",
+ ϊ: "ϊ",
+ ΐ: "ΐ",
+ ῒ: "ῒ",
+ ῑ: "ῑ",
+ ῐ: "ῐ",
+ ό: "ό",
+ ὸ: "ὸ",
+ ύ: "ύ",
+ ὺ: "ὺ",
+ ϋ: "ϋ",
+ ΰ: "ΰ",
+ ῢ: "ῢ",
+ ῡ: "ῡ",
+ ῠ: "ῠ",
+ ώ: "ώ",
+ ὼ: "ὼ",
+ Ύ: "Ύ",
+ Ὺ: "Ὺ",
+ Ϋ: "Ϋ",
+ Ῡ: "Ῡ",
+ Ῠ: "Ῠ",
+ Ώ: "Ώ",
+ Ὼ: "Ὼ",
+ },
+ Kn = (function () {
+ function e(e, t) {
+ (this.mode = void 0),
+ (this.gullet = void 0),
+ (this.settings = void 0),
+ (this.leftrightDepth = void 0),
+ (this.nextToken = void 0),
+ (this.mode = "math"),
+ (this.gullet = new Wn(e, t, this.mode)),
+ (this.settings = t),
+ (this.leftrightDepth = 0);
+ }
+ var t = e.prototype;
+ return (
+ (t.expect = function (e, t) {
+ if ((void 0 === t && (t = !0), this.fetch().text !== e))
+ throw new n("Expected '" + e + "', got '" + this.fetch().text + "'", this.fetch());
+ t && this.consume();
+ }),
+ (t.consume = function () {
+ this.nextToken = null;
+ }),
+ (t.fetch = function () {
+ return null == this.nextToken && (this.nextToken = this.gullet.expandNextToken()), this.nextToken;
+ }),
+ (t.switchMode = function (e) {
+ (this.mode = e), this.gullet.switchMode(e);
+ }),
+ (t.parse = function () {
+ this.settings.globalGroup || this.gullet.beginGroup(),
+ this.settings.colorIsTextColor && this.gullet.macros.set("\\color", "\\textcolor");
+ try {
+ var e = this.parseExpression(!1);
+ return this.expect("EOF"), this.settings.globalGroup || this.gullet.endGroup(), e;
+ } finally {
+ this.gullet.endGroups();
+ }
+ }),
+ (t.subparse = function (e) {
+ var t = this.nextToken;
+ this.consume(), this.gullet.pushToken(new Gr("}")), this.gullet.pushTokens(e);
+ var r = this.parseExpression(!1);
+ return this.expect("}"), (this.nextToken = t), r;
+ }),
+ (t.parseExpression = function (t, r) {
+ for (var n = []; ; ) {
+ "math" === this.mode && this.consumeSpaces();
+ var a = this.fetch();
+ if (-1 !== e.endOfExpression.indexOf(a.text)) break;
+ if (r && a.text === r) break;
+ if (t && Cn[a.text] && Cn[a.text].infix) break;
+ var i = this.parseAtom(r);
+ if (!i) break;
+ "internal" !== i.type && n.push(i);
+ }
+ return "text" === this.mode && this.formLigatures(n), this.handleInfixNodes(n);
+ }),
+ (t.handleInfixNodes = function (e) {
+ for (var t, r = -1, a = 0; a < e.length; a++)
+ if ("infix" === e[a].type) {
+ if (-1 !== r) throw new n("only one infix operator per group", e[a].token);
+ (r = a), (t = e[a].replaceWith);
+ }
+ if (-1 !== r && t) {
+ var i,
+ o,
+ s = e.slice(0, r),
+ l = e.slice(r + 1);
+ return (
+ (i = 1 === s.length && "ordgroup" === s[0].type ? s[0] : { type: "ordgroup", mode: this.mode, body: s }),
+ (o = 1 === l.length && "ordgroup" === l[0].type ? l[0] : { type: "ordgroup", mode: this.mode, body: l }),
+ ["\\\\abovefrac" === t ? this.callFunction(t, [i, e[r], o], []) : this.callFunction(t, [i, o], [])]
+ );
+ }
+ return e;
+ }),
+ (t.handleSupSubscript = function (e) {
+ var t = this.fetch(),
+ r = t.text;
+ this.consume(), this.consumeSpaces();
+ var a = this.parseGroup(e);
+ if (!a) throw new n("Expected group after '" + r + "'", t);
+ return a;
+ }),
+ (t.formatUnsupportedCmd = function (e) {
+ for (var t = [], r = 0; r < e.length; r++) t.push({ type: "textord", mode: "text", text: e[r] });
+ var n = { type: "text", mode: this.mode, body: t };
+ return {
+ type: "color",
+ mode: this.mode,
+ color: this.settings.errorColor,
+ body: [n],
+ };
+ }),
+ (t.parseAtom = function (t) {
+ var r,
+ a,
+ i = this.parseGroup("atom", t);
+ if ("text" === this.mode) return i;
+ for (;;) {
+ this.consumeSpaces();
+ var o = this.fetch();
+ if ("\\limits" === o.text || "\\nolimits" === o.text) {
+ if (i && "op" === i.type) {
+ var s = "\\limits" === o.text;
+ (i.limits = s), (i.alwaysHandleSupSub = !0);
+ } else {
+ if (!i || "operatorname" !== i.type) throw new n("Limit controls must follow a math operator", o);
+ i.alwaysHandleSupSub && (i.limits = "\\limits" === o.text);
+ }
+ this.consume();
+ } else if ("^" === o.text) {
+ if (r) throw new n("Double superscript", o);
+ r = this.handleSupSubscript("superscript");
+ } else if ("_" === o.text) {
+ if (a) throw new n("Double subscript", o);
+ a = this.handleSupSubscript("subscript");
+ } else if ("'" === o.text) {
+ if (r) throw new n("Double superscript", o);
+ var l = { type: "textord", mode: this.mode, text: "\\prime" },
+ h = [l];
+ for (this.consume(); "'" === this.fetch().text; ) h.push(l), this.consume();
+ "^" === this.fetch().text && h.push(this.handleSupSubscript("superscript")),
+ (r = { type: "ordgroup", mode: this.mode, body: h });
+ } else {
+ if (!jn[o.text]) break;
+ var c = jn[o.text],
+ m = _n.test(o.text);
+ for (this.consume(); ; ) {
+ var u = this.fetch().text;
+ if (!jn[u]) break;
+ if (_n.test(u) !== m) break;
+ this.consume(), (c += jn[u]);
+ }
+ var p = new e(c, this.settings).parse();
+ m ? (a = { type: "ordgroup", mode: "math", body: p }) : (r = { type: "ordgroup", mode: "math", body: p });
+ }
+ }
+ return r || a ? { type: "supsub", mode: this.mode, base: i, sup: r, sub: a } : i;
+ }),
+ (t.parseFunction = function (e, t) {
+ var r = this.fetch(),
+ a = r.text,
+ i = Cn[a];
+ if (!i) return null;
+ if ((this.consume(), t && "atom" !== t && !i.allowedInArgument))
+ throw new n("Got function '" + a + "' with no arguments" + (t ? " as " + t : ""), r);
+ if ("text" === this.mode && !i.allowedInText) throw new n("Can't use function '" + a + "' in text mode", r);
+ if ("math" === this.mode && !1 === i.allowedInMath) throw new n("Can't use function '" + a + "' in math mode", r);
+ var o = this.parseArguments(a, i),
+ s = o.args,
+ l = o.optArgs;
+ return this.callFunction(a, s, l, r, e);
+ }),
+ (t.callFunction = function (e, t, r, a, i) {
+ var o = { funcName: e, parser: this, token: a, breakOnTokenText: i },
+ s = Cn[e];
+ if (s && s.handler) return s.handler(o, t, r);
+ throw new n("No function handler for " + e);
+ }),
+ (t.parseArguments = function (e, t) {
+ var r = t.numArgs + t.numOptionalArgs;
+ if (0 === r) return { args: [], optArgs: [] };
+ for (var a = [], i = [], o = 0; o < r; o++) {
+ var s = t.argTypes && t.argTypes[o],
+ l = o < t.numOptionalArgs;
+ ((t.primitive && null == s) || ("sqrt" === t.type && 1 === o && null == i[0])) && (s = "primitive");
+ var h = this.parseGroupOfType("argument to '" + e + "'", s, l);
+ if (l) i.push(h);
+ else {
+ if (null == h) throw new n("Null argument, please report this as a bug");
+ a.push(h);
+ }
+ }
+ return { args: a, optArgs: i };
+ }),
+ (t.parseGroupOfType = function (e, t, r) {
+ switch (t) {
+ case "color":
+ return this.parseColorGroup(r);
+ case "size":
+ return this.parseSizeGroup(r);
+ case "url":
+ return this.parseUrlGroup(r);
+ case "math":
+ case "text":
+ return this.parseArgumentGroup(r, t);
+ case "hbox":
+ var a = this.parseArgumentGroup(r, "text");
+ return null != a ? { type: "styling", mode: a.mode, body: [a], style: "text" } : null;
+ case "raw":
+ var i = this.parseStringGroup("raw", r);
+ return null != i ? { type: "raw", mode: "text", string: i.text } : null;
+ case "primitive":
+ if (r) throw new n("A primitive argument cannot be optional");
+ var o = this.parseGroup(e);
+ if (null == o) throw new n("Expected group as " + e, this.fetch());
+ return o;
+ case "original":
+ case null:
+ case void 0:
+ return this.parseArgumentGroup(r);
+ default:
+ throw new n("Unknown group type as " + e, this.fetch());
+ }
+ }),
+ (t.consumeSpaces = function () {
+ for (; " " === this.fetch().text; ) this.consume();
+ }),
+ (t.parseStringGroup = function (e, t) {
+ var r = this.gullet.scanArgument(t);
+ if (null == r) return null;
+ for (var n, a = ""; "EOF" !== (n = this.fetch()).text; ) (a += n.text), this.consume();
+ return this.consume(), (r.text = a), r;
+ }),
+ (t.parseRegexGroup = function (e, t) {
+ for (var r, a = this.fetch(), i = a, o = ""; "EOF" !== (r = this.fetch()).text && e.test(o + r.text); )
+ (o += (i = r).text), this.consume();
+ if ("" === o) throw new n("Invalid " + t + ": '" + a.text + "'", a);
+ return a.range(i, o);
+ }),
+ (t.parseColorGroup = function (e) {
+ var t = this.parseStringGroup("color", e);
+ if (null == t) return null;
+ var r = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);
+ if (!r) throw new n("Invalid color: '" + t.text + "'", t);
+ var a = r[0];
+ return /^[0-9a-f]{6}$/i.test(a) && (a = "#" + a), { type: "color-token", mode: this.mode, color: a };
+ }),
+ (t.parseSizeGroup = function (e) {
+ var t,
+ r = !1;
+ if (
+ (this.gullet.consumeSpaces(),
+ !(t =
+ e || "{" === this.gullet.future().text
+ ? this.parseStringGroup("size", e)
+ : this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size")))
+ )
+ return null;
+ e || 0 !== t.text.length || ((t.text = "0pt"), (r = !0));
+ var a = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);
+ if (!a) throw new n("Invalid size: '" + t.text + "'", t);
+ var i = { number: +(a[1] + a[2]), unit: a[3] };
+ if (!Y(i)) throw new n("Invalid unit: '" + i.unit + "'", t);
+ return { type: "size", mode: this.mode, value: i, isBlank: r };
+ }),
+ (t.parseUrlGroup = function (e) {
+ this.gullet.lexer.setCatcode("%", 13), this.gullet.lexer.setCatcode("~", 12);
+ var t = this.parseStringGroup("url", e);
+ if ((this.gullet.lexer.setCatcode("%", 14), this.gullet.lexer.setCatcode("~", 13), null == t)) return null;
+ var r = t.text.replace(/\\([#$%&~_^{}])/g, "$1");
+ return { type: "url", mode: this.mode, url: r };
+ }),
+ (t.parseArgumentGroup = function (e, t) {
+ var r = this.gullet.scanArgument(e);
+ if (null == r) return null;
+ var n = this.mode;
+ t && this.switchMode(t), this.gullet.beginGroup();
+ var a = this.parseExpression(!1, "EOF");
+ this.expect("EOF"), this.gullet.endGroup();
+ var i = { type: "ordgroup", mode: this.mode, loc: r.loc, body: a };
+ return t && this.switchMode(n), i;
+ }),
+ (t.parseGroup = function (e, t) {
+ var r,
+ a = this.fetch(),
+ i = a.text;
+ if ("{" === i || "\\begingroup" === i) {
+ this.consume();
+ var o = "{" === i ? "}" : "\\endgroup";
+ this.gullet.beginGroup();
+ var s = this.parseExpression(!1, o),
+ l = this.fetch();
+ this.expect(o),
+ this.gullet.endGroup(),
+ (r = {
+ type: "ordgroup",
+ mode: this.mode,
+ loc: Fr.range(a, l),
+ body: s,
+ semisimple: "\\begingroup" === i || void 0,
+ });
+ } else if (null == (r = this.parseFunction(t, e) || this.parseSymbol()) && "\\" === i[0] && !Xn.hasOwnProperty(i)) {
+ if (this.settings.throwOnError) throw new n("Undefined control sequence: " + i, a);
+ (r = this.formatUnsupportedCmd(i)), this.consume();
+ }
+ return r;
+ }),
+ (t.formLigatures = function (e) {
+ for (var t = e.length - 1, r = 0; r < t; ++r) {
+ var n = e[r],
+ a = n.text;
+ "-" === a &&
+ "-" === e[r + 1].text &&
+ (r + 1 < t && "-" === e[r + 2].text
+ ? (e.splice(r, 3, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 2]),
+ text: "---",
+ }),
+ (t -= 2))
+ : (e.splice(r, 2, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 1]),
+ text: "--",
+ }),
+ (t -= 1))),
+ ("'" !== a && "`" !== a) ||
+ e[r + 1].text !== a ||
+ (e.splice(r, 2, {
+ type: "textord",
+ mode: "text",
+ loc: Fr.range(n, e[r + 1]),
+ text: a + a,
+ }),
+ (t -= 1));
+ }
+ }),
+ (t.parseSymbol = function () {
+ var e = this.fetch(),
+ t = e.text;
+ if (/^\\verb[^a-zA-Z]/.test(t)) {
+ this.consume();
+ var r = t.slice(5),
+ a = "*" === r.charAt(0);
+ if ((a && (r = r.slice(1)), r.length < 2 || r.charAt(0) !== r.slice(-1)))
+ throw new n("\\verb assertion failed --\n please report what input caused this bug");
+ return { type: "verb", mode: "text", body: (r = r.slice(1, -1)), star: a };
+ }
+ Zn.hasOwnProperty(t[0]) &&
+ !he[this.mode][t[0]] &&
+ (this.settings.strict &&
+ "math" === this.mode &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + t[0] + '" used in math mode', e),
+ (t = Zn[t[0]] + t.slice(1)));
+ var i,
+ o = Hn.exec(t);
+ if ((o && ("i" === (t = t.substring(0, o.index)) ? (t = "ı") : "j" === t && (t = "ȷ")), he[this.mode][t])) {
+ this.settings.strict &&
+ "math" === this.mode &&
+ "ÐÞþ".indexOf(t) >= 0 &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + t[0] + '" used in math mode', e);
+ var s,
+ l = he[this.mode][t].group,
+ h = Fr.range(e);
+ if (oe.hasOwnProperty(l)) {
+ var c = l;
+ s = { type: "atom", mode: this.mode, family: c, loc: h, text: t };
+ } else s = { type: l, mode: this.mode, loc: h, text: t };
+ i = s;
+ } else {
+ if (!(t.charCodeAt(0) >= 128)) return null;
+ this.settings.strict &&
+ (N(t.charCodeAt(0))
+ ? "math" === this.mode &&
+ this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + t[0] + '" used in math mode', e)
+ : this.settings.reportNonstrict(
+ "unknownSymbol",
+ 'Unrecognized Unicode character "' + t[0] + '" (' + t.charCodeAt(0) + ")",
+ e,
+ )),
+ (i = { type: "textord", mode: "text", loc: Fr.range(e), text: t });
+ }
+ if ((this.consume(), o))
+ for (var m = 0; m < o[0].length; m++) {
+ var u = o[0][m];
+ if (!$n[u]) throw new n("Unknown accent ' " + u + "'", e);
+ var p = $n[u][this.mode] || $n[u].text;
+ if (!p) throw new n("Accent " + u + " unsupported in " + this.mode + " mode", e);
+ i = {
+ type: "accent",
+ mode: this.mode,
+ loc: Fr.range(e),
+ label: p,
+ isStretchy: !1,
+ isShifty: !0,
+ base: i,
+ };
+ }
+ return i;
+ }),
+ e
+ );
+ })();
+ Kn.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
+ var Jn = function (e, t) {
+ if (!("string" == typeof e || e instanceof String)) throw new TypeError("KaTeX can only parse string typed expression");
+ var r = new Kn(e, t);
+ delete r.gullet.macros.current["\\df@tag"];
+ var a = r.parse();
+ if ((delete r.gullet.macros.current["\\current@color"], delete r.gullet.macros.current["\\color"], r.gullet.macros.get("\\df@tag"))) {
+ if (!t.displayMode) throw new n("\\tag works only in display equations");
+ a = [{ type: "tag", mode: "text", body: a, tag: r.subparse([new Gr("\\df@tag")]) }];
+ }
+ return a;
+ },
+ Qn = function (e, t, r) {
+ t.textContent = "";
+ var n = ta(e, r).toNode();
+ t.appendChild(n);
+ };
+ "undefined" != typeof document &&
+ "CSS1Compat" !== document.compatMode &&
+ ("undefined" != typeof console &&
+ console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),
+ (Qn = function () {
+ throw new n("KaTeX doesn't work in quirks mode.");
+ }));
+ var ea = function (e, t, r) {
+ if (r.throwOnError || !(e instanceof n)) throw e;
+ var a = Qe.makeSpan(["katex-error"], [new te(t)]);
+ return a.setAttribute("title", e.toString()), a.setAttribute("style", "color:" + r.errorColor), a;
+ },
+ ta = function (e, t) {
+ var r = new v(t);
+ try {
+ return (function (e, t, r) {
+ var n,
+ a = Lt(r);
+ if ("mathml" === r.output) return Et(e, t, a, r.displayMode, !0);
+ if ("html" === r.output) {
+ var i = zt(e, a);
+ n = Qe.makeSpan(["katex"], [i]);
+ } else {
+ var o = Et(e, t, a, r.displayMode, !1),
+ s = zt(e, a);
+ n = Qe.makeSpan(["katex"], [o, s]);
+ }
+ return Dt(n, r);
+ })(Jn(e, r), e, r);
+ } catch (t) {
+ return ea(t, e, r);
+ }
+ },
+ ra = {
+ version: "0.16.8",
+ render: Qn,
+ renderToString: function (e, t) {
+ return ta(e, t).toMarkup();
+ },
+ ParseError: n,
+ SETTINGS_SCHEMA: f,
+ __parse: function (e, t) {
+ var r = new v(t);
+ return Jn(e, r);
+ },
+ __renderToDomTree: ta,
+ __renderToHTMLTree: function (e, t) {
+ var r = new v(t);
+ try {
+ return (function (e, t, r) {
+ var n = zt(e, Lt(r)),
+ a = Qe.makeSpan(["katex"], [n]);
+ return Dt(a, r);
+ })(Jn(e, r), 0, r);
+ } catch (t) {
+ return ea(t, e, r);
+ }
+ },
+ __setFontMetrics: function (e, t) {
+ I[e] = t;
+ },
+ __defineSymbol: ce,
+ __defineFunction: lt,
+ __defineMacro: Vr,
+ __domTree: {
+ Span: K,
+ Anchor: J,
+ SymbolNode: te,
+ SvgNode: re,
+ PathNode: ne,
+ LineNode: ae,
+ },
+ };
+ return t.default;
+ })();
+ }),
+ (e.exports = t());
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js
index d73595773..09ac8e69f 100644
--- a/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js
@@ -1 +1,1787 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[118],{7118:function(t,i,e){e.d(i,{diagram:function(){return d}});var a=e(9339),n=e(7274),r=(e(7484),e(7967),e(7856),function(){var t=function(t,i,e,a){for(e=e||{},a=t.length;a--;e[t[a]]=i);return e},i=[1,3],e=[1,5],a=[1,6],n=[1,7],r=[1,8],s=[1,10],l=[1,5,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],o=[1,5,7,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],h=[38,39,40],c=[2,8],d=[1,19],u=[1,23],x=[1,24],g=[1,25],f=[1,26],y=[1,27],p=[1,29],q=[1,30],T=[1,31],_=[1,32],m=[1,33],A=[1,34],b=[1,37],S=[1,38],k=[1,39],v=[1,40],F=[1,41],P=[1,42],C=[1,43],L=[1,44],D=[1,45],z=[1,46],E=[1,47],I=[1,48],B=[1,49],w=[1,52],R=[1,67],W=[1,68],N=[5,23,27,38,39,40,50,51,52,53,54,55,56,57,58,59,60,61],U=[5,7,38,39,40,41],Q={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,directive:6,QUADRANT:7,document:8,line:9,statement:10,axisDetails:11,quadrantDetails:12,points:13,title:14,title_value:15,acc_title:16,acc_title_value:17,acc_descr:18,acc_descr_value:19,acc_descr_multiline_value:20,section:21,text:22,point_start:23,point_x:24,point_y:25,"X-AXIS":26,"AXIS-TEXT-DELIMITER":27,"Y-AXIS":28,QUADRANT_1:29,QUADRANT_2:30,QUADRANT_3:31,QUADRANT_4:32,openDirective:33,typeDirective:34,closeDirective:35,":":36,argDirective:37,NEWLINE:38,SEMI:39,EOF:40,open_directive:41,type_directive:42,arg_directive:43,close_directive:44,alphaNumToken:45,textNoTagsToken:46,STR:47,MD_STR:48,alphaNum:49,PUNCTUATION:50,AMP:51,NUM:52,ALPHA:53,COMMA:54,PLUS:55,EQUALS:56,MULT:57,DOT:58,BRKT:59,UNDERSCORE:60,MINUS:61,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",7:"QUADRANT",14:"title",15:"title_value",16:"acc_title",17:"acc_title_value",18:"acc_descr",19:"acc_descr_value",20:"acc_descr_multiline_value",21:"section",23:"point_start",24:"point_x",25:"point_y",26:"X-AXIS",27:"AXIS-TEXT-DELIMITER",28:"Y-AXIS",29:"QUADRANT_1",30:"QUADRANT_2",31:"QUADRANT_3",32:"QUADRANT_4",36:":",38:"NEWLINE",39:"SEMI",40:"EOF",41:"open_directive",42:"type_directive",43:"arg_directive",44:"close_directive",47:"STR",48:"MD_STR",50:"PUNCTUATION",51:"AMP",52:"NUM",53:"ALPHA",54:"COMMA",55:"PLUS",56:"EQUALS",57:"MULT",58:"DOT",59:"BRKT",60:"UNDERSCORE",61:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[10,0],[10,2],[10,1],[10,1],[10,1],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[13,4],[11,4],[11,3],[11,2],[11,4],[11,3],[11,2],[12,2],[12,2],[12,2],[12,2],[6,3],[6,5],[4,1],[4,1],[4,1],[33,1],[34,1],[37,1],[35,1],[22,1],[22,2],[22,1],[22,1],[49,1],[49,2],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[46,1],[46,1],[46,1]],performAction:function(t,i,e,a,n,r,s){var l=r.length-1;switch(n){case 13:this.$=r[l].trim(),a.setDiagramTitle(this.$);break;case 14:this.$=r[l].trim(),a.setAccTitle(this.$);break;case 15:case 16:this.$=r[l].trim(),a.setAccDescription(this.$);break;case 17:a.addSection(r[l].substr(8)),this.$=r[l].substr(8);break;case 19:a.addPoint(r[l-3],r[l-1],r[l]);break;case 20:a.setXAxisLeftText(r[l-2]),a.setXAxisRightText(r[l]);break;case 21:r[l-1].text+=" ⟶ ",a.setXAxisLeftText(r[l-1]);break;case 22:a.setXAxisLeftText(r[l]);break;case 23:a.setYAxisBottomText(r[l-2]),a.setYAxisTopText(r[l]);break;case 24:r[l-1].text+=" ⟶ ",a.setYAxisBottomText(r[l-1]);break;case 25:a.setYAxisBottomText(r[l]);break;case 26:a.setQuadrant1Text(r[l]);break;case 27:a.setQuadrant2Text(r[l]);break;case 28:a.setQuadrant3Text(r[l]);break;case 29:a.setQuadrant4Text(r[l]);break;case 35:a.parseDirective("%%{","open_directive");break;case 36:a.parseDirective(r[l],"type_directive");break;case 37:r[l]=r[l].trim().replace(/'/g,'"'),a.parseDirective(r[l],"arg_directive");break;case 38:a.parseDirective("}%%","close_directive","quadrantChart");break;case 39:case 41:this.$={text:r[l],type:"text"};break;case 40:this.$={text:r[l-1].text+""+r[l],type:r[l-1].type};break;case 42:this.$={text:r[l],type:"markdown"};break;case 43:this.$=r[l];break;case 44:this.$=r[l-1]+""+r[l]}},table:[{3:1,4:2,5:i,6:4,7:e,33:9,38:a,39:n,40:r,41:s},{1:[3]},{3:11,4:2,5:i,6:4,7:e,33:9,38:a,39:n,40:r,41:s},{3:12,4:2,5:i,6:4,7:e,33:9,38:a,39:n,40:r,41:s},{3:13,4:2,5:i,6:4,7:e,33:9,38:a,39:n,40:r,41:s},t(l,[2,5],{8:14}),t(o,[2,32]),t(o,[2,33]),t(o,[2,34]),{34:15,42:[1,16]},{42:[2,35]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(h,c,{33:9,9:17,10:18,11:20,12:21,13:22,6:28,22:35,45:36,1:[2,4],5:d,14:u,16:x,18:g,20:f,21:y,26:p,28:q,29:T,30:_,31:m,32:A,41:s,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B}),{35:50,36:[1,51],44:w},t([36,44],[2,36]),t(l,[2,6]),{4:53,38:a,39:n,40:r},t(h,c,{33:9,11:20,12:21,13:22,6:28,22:35,45:36,10:54,5:d,14:u,16:x,18:g,20:f,21:y,26:p,28:q,29:T,30:_,31:m,32:A,41:s,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B}),t(h,[2,10]),t(h,[2,11]),t(h,[2,12]),{15:[1,55]},{17:[1,56]},{19:[1,57]},t(h,[2,16]),t(h,[2,17]),t(h,[2,18]),{22:58,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{22:59,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{22:60,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{22:61,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{22:62,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{22:63,45:36,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B},{5:R,23:[1,64],45:66,46:65,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W},t(N,[2,39]),t(N,[2,41]),t(N,[2,42]),t(N,[2,45]),t(N,[2,46]),t(N,[2,47]),t(N,[2,48]),t(N,[2,49]),t(N,[2,50]),t(N,[2,51]),t(N,[2,52]),t(N,[2,53]),t(N,[2,54]),t(N,[2,55]),t(U,[2,30]),{37:69,43:[1,70]},t(U,[2,38]),t(l,[2,7]),t(h,[2,9]),t(h,[2,13]),t(h,[2,14]),t(h,[2,15]),t(h,[2,22],{46:65,45:66,5:R,27:[1,71],50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,25],{46:65,45:66,5:R,27:[1,72],50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,26],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,27],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,28],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,29],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),{24:[1,73]},t(N,[2,40]),t(N,[2,56]),t(N,[2,57]),t(N,[2,58]),{35:74,44:w},{44:[2,37]},t(h,[2,21],{45:36,22:75,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B}),t(h,[2,24],{45:36,22:76,47:b,48:S,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B}),{25:[1,77]},t(U,[2,31]),t(h,[2,20],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,23],{46:65,45:66,5:R,50:k,51:v,52:F,53:P,54:C,55:L,56:D,57:z,58:E,59:I,60:B,61:W}),t(h,[2,19])],defaultActions:{10:[2,35],11:[2,1],12:[2,2],13:[2,3],70:[2,37]},parseError:function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},parse:function(t){var i=[0],e=[],a=[null],n=[],r=this.table,s="",l=0,o=0,h=n.slice.call(arguments,1),c=Object.create(this.lexer),d={yy:{}};for(var u in this.yy)Object.prototype.hasOwnProperty.call(this.yy,u)&&(d.yy[u]=this.yy[u]);c.setInput(t,d.yy),d.yy.lexer=c,d.yy.parser=this,void 0===c.yylloc&&(c.yylloc={});var x=c.yylloc;n.push(x);var g=c.options&&c.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var f,y,p,q,T,_,m,A,b,S={};;){if(y=i[i.length-1],this.defaultActions[y]?p=this.defaultActions[y]:(null==f&&(b=void 0,"number"!=typeof(b=e.pop()||c.lex()||1)&&(b instanceof Array&&(b=(e=b).pop()),b=this.symbols_[b]||b),f=b),p=r[y]&&r[y][f]),void 0===p||!p.length||!p[0]){var k;for(T in A=[],r[y])this.terminals_[T]&&T>2&&A.push("'"+this.terminals_[T]+"'");k=c.showPosition?"Parse error on line "+(l+1)+":\n"+c.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(k,{text:c.match,token:this.terminals_[f]||f,line:c.yylineno,loc:x,expected:A})}if(p[0]instanceof Array&&p.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+f);switch(p[0]){case 1:i.push(f),a.push(c.yytext),n.push(c.yylloc),i.push(p[1]),f=null,o=c.yyleng,s=c.yytext,l=c.yylineno,x=c.yylloc;break;case 2:if(_=this.productions_[p[1]][1],S.$=a[a.length-_],S._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},g&&(S._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(q=this.performAction.apply(S,[s,o,l,d.yy,p[1],a,n].concat(h))))return q;_&&(i=i.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),i.push(this.productions_[p[1]][0]),a.push(S.$),n.push(S._$),m=r[i[i.length-2]][i[i.length-1]],i.push(m);break;case 3:return!0}}return!0}},H={EOF:1,parseError:function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},setInput:function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===a.length?this.yylloc.first_column:0)+a[a.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},test_match:function(t,i){var e,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,i,e,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;ri[0].length)){if(i=e,a=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,n[r])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,i,e,a){switch(e){case 0:return this.begin("open_directive"),41;case 1:return this.begin("type_directive"),42;case 2:return this.popState(),this.begin("arg_directive"),36;case 3:return this.popState(),this.popState(),44;case 4:return 43;case 5:case 6:case 8:break;case 7:return 38;case 9:return this.begin("title"),14;case 10:return this.popState(),"title_value";case 11:return this.begin("acc_title"),16;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),18;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 27:case 29:case 33:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 26;case 19:return 28;case 20:return 27;case 21:return 29;case 22:return 30;case 23:return 31;case 24:return 32;case 25:this.begin("md_string");break;case 26:return"MD_STR";case 28:this.begin("string");break;case 30:return"STR";case 31:return this.begin("point_start"),23;case 32:return this.begin("point_x"),24;case 34:this.popState(),this.begin("point_y");break;case 35:return this.popState(),25;case 36:return 7;case 37:return 53;case 38:return"COLON";case 39:return 55;case 40:return 54;case 41:case 42:return 56;case 43:return 57;case 44:return 59;case 45:return 60;case 46:return 58;case 47:return 51;case 48:return 61;case 49:return 52;case 50:return 5;case 51:return 39;case 52:return 50;case 53:return 40}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[35],inclusive:!1},point_x:{rules:[34],inclusive:!1},point_start:{rules:[32,33],inclusive:!1},acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[10],inclusive:!1},md_string:{rules:[26,27],inclusive:!1},string:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,11,13,15,18,19,20,21,22,23,24,25,28,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function $(){this.yy={}}return Q.lexer=H,$.prototype=Q,Q.Parser=$,new $}());r.parser=r;const s=r,l=(0,a.G)(),o=(0,a.c)();function h(t){return(0,a.d)(t.trim(),o)}const c=new class{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var t,i,e,n,r,s,l,o,h,c,d,u,x,g,f,y,p,q;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:(null==(t=a.C.quadrantChart)?void 0:t.chartWidth)||500,chartWidth:(null==(i=a.C.quadrantChart)?void 0:i.chartHeight)||500,titlePadding:(null==(e=a.C.quadrantChart)?void 0:e.titlePadding)||10,titleFontSize:(null==(n=a.C.quadrantChart)?void 0:n.titleFontSize)||20,quadrantPadding:(null==(r=a.C.quadrantChart)?void 0:r.quadrantPadding)||5,xAxisLabelPadding:(null==(s=a.C.quadrantChart)?void 0:s.xAxisLabelPadding)||5,yAxisLabelPadding:(null==(l=a.C.quadrantChart)?void 0:l.yAxisLabelPadding)||5,xAxisLabelFontSize:(null==(o=a.C.quadrantChart)?void 0:o.xAxisLabelFontSize)||16,yAxisLabelFontSize:(null==(h=a.C.quadrantChart)?void 0:h.yAxisLabelFontSize)||16,quadrantLabelFontSize:(null==(c=a.C.quadrantChart)?void 0:c.quadrantLabelFontSize)||16,quadrantTextTopPadding:(null==(d=a.C.quadrantChart)?void 0:d.quadrantTextTopPadding)||5,pointTextPadding:(null==(u=a.C.quadrantChart)?void 0:u.pointTextPadding)||5,pointLabelFontSize:(null==(x=a.C.quadrantChart)?void 0:x.pointLabelFontSize)||12,pointRadius:(null==(g=a.C.quadrantChart)?void 0:g.pointRadius)||5,xAxisPosition:(null==(f=a.C.quadrantChart)?void 0:f.xAxisPosition)||"top",yAxisPosition:(null==(y=a.C.quadrantChart)?void 0:y.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:(null==(p=a.C.quadrantChart)?void 0:p.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:(null==(q=a.C.quadrantChart)?void 0:q.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:l.quadrant1Fill,quadrant2Fill:l.quadrant2Fill,quadrant3Fill:l.quadrant3Fill,quadrant4Fill:l.quadrant4Fill,quadrant1TextFill:l.quadrant1TextFill,quadrant2TextFill:l.quadrant2TextFill,quadrant3TextFill:l.quadrant3TextFill,quadrant4TextFill:l.quadrant4TextFill,quadrantPointFill:l.quadrantPointFill,quadrantPointTextFill:l.quadrantPointTextFill,quadrantXAxisTextFill:l.quadrantXAxisTextFill,quadrantYAxisTextFill:l.quadrantYAxisTextFill,quadrantTitleFill:l.quadrantTitleFill,quadrantInternalBorderStrokeFill:l.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:l.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),a.l.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}setConfig(t){a.l.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){a.l.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,i,e,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,r={top:"top"===t&&i?n:0,bottom:"bottom"===t&&i?n:0},s=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,l={left:"left"===this.config.yAxisPosition&&e?s:0,right:"right"===this.config.yAxisPosition&&e?s:0},o=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?o:0},c=this.config.quadrantPadding+l.left,d=this.config.quadrantPadding+r.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-l.left-l.right,x=this.config.chartHeight-2*this.config.quadrantPadding-r.top-r.bottom-h.top;return{xAxisSpace:r,yAxisSpace:l,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,i,e,a){const{quadrantSpace:n,titleSpace:r}=a,{quadrantHalfHeight:s,quadrantHeight:l,quadrantLeft:o,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=0===this.data.points.length,x=[];return this.data.xAxisLeftText&&i&&x.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:o+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+r.top:this.config.xAxisLabelPadding+c+l+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&i&&x.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:o+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+r.top:this.config.xAxisLabelPadding+c+l+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&e&&x.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+o+d+this.config.quadrantPadding,y:c+l-(u?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&e&&x.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+o+d+this.config.quadrantPadding,y:c+s-(u?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:-90}),x}getQuadrants(t){const{quadrantSpace:i}=t,{quadrantHalfHeight:e,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:r}=i,s=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:r,width:n,height:e,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:r,width:n,height:e,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:r+e,width:n,height:e,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:r+e,width:n,height:e,fill:this.themeConfig.quadrant4Fill}];for(const t of s)t.text.x=t.x+t.width/2,0===this.data.points.length?(t.text.y=t.y+t.height/2,t.text.horizontalPos="middle"):(t.text.y=t.y+this.config.quadrantTextTopPadding,t.text.horizontalPos="top");return s}getQuadrantPoints(t){const{quadrantSpace:i}=t,{quadrantHeight:e,quadrantLeft:a,quadrantTop:r,quadrantWidth:s}=i,l=(0,n.BYU)().domain([0,1]).range([a,s+a]),o=(0,n.BYU)().domain([0,1]).range([e+r,r]);return this.data.points.map((t=>({x:l(t.x),y:o(t.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:l(t.x),y:o(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}})))}getBorders(t){const i=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:e}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:r,quadrantHalfWidth:s,quadrantTop:l,quadrantWidth:o}=e;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r-i,y1:l,x2:r+o+i,y2:l},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r+o,y1:l+i,x2:r+o,y2:l+n-i},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r-i,y1:l+n,x2:r+o+i,y2:l+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r,y1:l+i,x2:r,y2:l+n-i},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:r+s,y1:l+i,x2:r+s,y2:l+n-i},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:r+i,y1:l+a,x2:r+o-i,y2:l+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),i=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),e=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,i,e);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,i,n),borderLines:this.getBorders(n),title:this.getTitle(e)}}},d={parser:s,db:{setWidth:function(t){c.setConfig({chartWidth:t})},setHeight:function(t){c.setConfig({chartHeight:t})},setQuadrant1Text:function(t){c.setData({quadrant1Text:h(t.text)})},setQuadrant2Text:function(t){c.setData({quadrant2Text:h(t.text)})},setQuadrant3Text:function(t){c.setData({quadrant3Text:h(t.text)})},setQuadrant4Text:function(t){c.setData({quadrant4Text:h(t.text)})},setXAxisLeftText:function(t){c.setData({xAxisLeftText:h(t.text)})},setXAxisRightText:function(t){c.setData({xAxisRightText:h(t.text)})},setYAxisTopText:function(t){c.setData({yAxisTopText:h(t.text)})},setYAxisBottomText:function(t){c.setData({yAxisBottomText:h(t.text)})},addPoint:function(t,i,e){c.addPoints([{x:i,y:e,text:h(t.text)}])},getQuadrantData:function(){const t=(0,a.c)(),{themeVariables:i,quadrantChart:e}=t;return e&&c.setConfig(e),c.setThemeConfig({quadrant1Fill:i.quadrant1Fill,quadrant2Fill:i.quadrant2Fill,quadrant3Fill:i.quadrant3Fill,quadrant4Fill:i.quadrant4Fill,quadrant1TextFill:i.quadrant1TextFill,quadrant2TextFill:i.quadrant2TextFill,quadrant3TextFill:i.quadrant3TextFill,quadrant4TextFill:i.quadrant4TextFill,quadrantPointFill:i.quadrantPointFill,quadrantPointTextFill:i.quadrantPointTextFill,quadrantXAxisTextFill:i.quadrantXAxisTextFill,quadrantYAxisTextFill:i.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:i.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:i.quadrantInternalBorderStrokeFill,quadrantTitleFill:i.quadrantTitleFill}),c.setData({titleText:(0,a.t)()}),c.build()},parseDirective:function(t,i,e){a.m.parseDirective(this,t,i,e)},clear:function(){c.clear(),(0,a.v)()},setAccTitle:a.s,getAccTitle:a.g,setDiagramTitle:a.r,getDiagramTitle:a.t,getAccDescription:a.a,setAccDescription:a.b},renderer:{draw:(t,i,e,r)=>{var s,l,o;function h(t){return"top"===t?"hanging":"middle"}function c(t){return"left"===t?"start":"middle"}function d(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}const u=(0,a.c)();a.l.debug("Rendering quadrant chart\n"+t);const x=u.securityLevel;let g;"sandbox"===x&&(g=(0,n.Ys)("#i"+i));const f=("sandbox"===x?(0,n.Ys)(g.nodes()[0].contentDocument.body):(0,n.Ys)("body")).select(`[id="${i}"]`),y=f.append("g").attr("class","main"),p=(null==(s=u.quadrantChart)?void 0:s.chartWidth)||500,q=(null==(l=u.quadrantChart)?void 0:l.chartHeight)||500;(0,a.i)(f,q,p,(null==(o=u.quadrantChart)?void 0:o.useMaxWidth)||!0),f.attr("viewBox","0 0 "+p+" "+q),r.db.setHeight(q),r.db.setWidth(p);const T=r.db.getQuadrantData(),_=y.append("g").attr("class","quadrants"),m=y.append("g").attr("class","border"),A=y.append("g").attr("class","data-points"),b=y.append("g").attr("class","labels"),S=y.append("g").attr("class","title");T.title&&S.append("text").attr("x",0).attr("y",0).attr("fill",T.title.fill).attr("font-size",T.title.fontSize).attr("dominant-baseline",h(T.title.horizontalPos)).attr("text-anchor",c(T.title.verticalPos)).attr("transform",d(T.title)).text(T.title.text),T.borderLines&&m.selectAll("line").data(T.borderLines).enter().append("line").attr("x1",(t=>t.x1)).attr("y1",(t=>t.y1)).attr("x2",(t=>t.x2)).attr("y2",(t=>t.y2)).style("stroke",(t=>t.strokeFill)).style("stroke-width",(t=>t.strokeWidth));const k=_.selectAll("g.quadrant").data(T.quadrants).enter().append("g").attr("class","quadrant");k.append("rect").attr("x",(t=>t.x)).attr("y",(t=>t.y)).attr("width",(t=>t.width)).attr("height",(t=>t.height)).attr("fill",(t=>t.fill)),k.append("text").attr("x",0).attr("y",0).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>h(t.text.horizontalPos))).attr("text-anchor",(t=>c(t.text.verticalPos))).attr("transform",(t=>d(t.text))).text((t=>t.text.text)),b.selectAll("g.label").data(T.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text((t=>t.text)).attr("fill",(t=>t.fill)).attr("font-size",(t=>t.fontSize)).attr("dominant-baseline",(t=>h(t.horizontalPos))).attr("text-anchor",(t=>c(t.verticalPos))).attr("transform",(t=>d(t)));const v=A.selectAll("g.data-point").data(T.points).enter().append("g").attr("class","data-point");v.append("circle").attr("cx",(t=>t.x)).attr("cy",(t=>t.y)).attr("r",(t=>t.radius)).attr("fill",(t=>t.fill)),v.append("text").attr("x",0).attr("y",0).text((t=>t.text.text)).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>h(t.text.horizontalPos))).attr("text-anchor",(t=>c(t.text.verticalPos))).attr("transform",(t=>d(t.text)))}},styles:()=>""}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [118],
+ {
+ 7118: function (t, i, e) {
+ e.d(i, {
+ diagram: function () {
+ return d;
+ },
+ });
+ var a = e(9339),
+ n = e(7274),
+ r =
+ (e(7484),
+ e(7967),
+ e(7856),
+ (function () {
+ var t = function (t, i, e, a) {
+ for (e = e || {}, a = t.length; a--; e[t[a]] = i);
+ return e;
+ },
+ i = [1, 3],
+ e = [1, 5],
+ a = [1, 6],
+ n = [1, 7],
+ r = [1, 8],
+ s = [1, 10],
+ l = [1, 5, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
+ o = [1, 5, 7, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
+ h = [38, 39, 40],
+ c = [2, 8],
+ d = [1, 19],
+ u = [1, 23],
+ x = [1, 24],
+ g = [1, 25],
+ f = [1, 26],
+ y = [1, 27],
+ p = [1, 29],
+ q = [1, 30],
+ T = [1, 31],
+ _ = [1, 32],
+ m = [1, 33],
+ A = [1, 34],
+ b = [1, 37],
+ S = [1, 38],
+ k = [1, 39],
+ v = [1, 40],
+ F = [1, 41],
+ P = [1, 42],
+ C = [1, 43],
+ L = [1, 44],
+ D = [1, 45],
+ z = [1, 46],
+ E = [1, 47],
+ I = [1, 48],
+ B = [1, 49],
+ w = [1, 52],
+ R = [1, 67],
+ W = [1, 68],
+ N = [5, 23, 27, 38, 39, 40, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61],
+ U = [5, 7, 38, 39, 40, 41],
+ Q = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ eol: 4,
+ SPACE: 5,
+ directive: 6,
+ QUADRANT: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ axisDetails: 11,
+ quadrantDetails: 12,
+ points: 13,
+ title: 14,
+ title_value: 15,
+ acc_title: 16,
+ acc_title_value: 17,
+ acc_descr: 18,
+ acc_descr_value: 19,
+ acc_descr_multiline_value: 20,
+ section: 21,
+ text: 22,
+ point_start: 23,
+ point_x: 24,
+ point_y: 25,
+ "X-AXIS": 26,
+ "AXIS-TEXT-DELIMITER": 27,
+ "Y-AXIS": 28,
+ QUADRANT_1: 29,
+ QUADRANT_2: 30,
+ QUADRANT_3: 31,
+ QUADRANT_4: 32,
+ openDirective: 33,
+ typeDirective: 34,
+ closeDirective: 35,
+ ":": 36,
+ argDirective: 37,
+ NEWLINE: 38,
+ SEMI: 39,
+ EOF: 40,
+ open_directive: 41,
+ type_directive: 42,
+ arg_directive: 43,
+ close_directive: 44,
+ alphaNumToken: 45,
+ textNoTagsToken: 46,
+ STR: 47,
+ MD_STR: 48,
+ alphaNum: 49,
+ PUNCTUATION: 50,
+ AMP: 51,
+ NUM: 52,
+ ALPHA: 53,
+ COMMA: 54,
+ PLUS: 55,
+ EQUALS: 56,
+ MULT: 57,
+ DOT: 58,
+ BRKT: 59,
+ UNDERSCORE: 60,
+ MINUS: 61,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 5: "SPACE",
+ 7: "QUADRANT",
+ 14: "title",
+ 15: "title_value",
+ 16: "acc_title",
+ 17: "acc_title_value",
+ 18: "acc_descr",
+ 19: "acc_descr_value",
+ 20: "acc_descr_multiline_value",
+ 21: "section",
+ 23: "point_start",
+ 24: "point_x",
+ 25: "point_y",
+ 26: "X-AXIS",
+ 27: "AXIS-TEXT-DELIMITER",
+ 28: "Y-AXIS",
+ 29: "QUADRANT_1",
+ 30: "QUADRANT_2",
+ 31: "QUADRANT_3",
+ 32: "QUADRANT_4",
+ 36: ":",
+ 38: "NEWLINE",
+ 39: "SEMI",
+ 40: "EOF",
+ 41: "open_directive",
+ 42: "type_directive",
+ 43: "arg_directive",
+ 44: "close_directive",
+ 47: "STR",
+ 48: "MD_STR",
+ 50: "PUNCTUATION",
+ 51: "AMP",
+ 52: "NUM",
+ 53: "ALPHA",
+ 54: "COMMA",
+ 55: "PLUS",
+ 56: "EQUALS",
+ 57: "MULT",
+ 58: "DOT",
+ 59: "BRKT",
+ 60: "UNDERSCORE",
+ 61: "MINUS",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [10, 0],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [13, 4],
+ [11, 4],
+ [11, 3],
+ [11, 2],
+ [11, 4],
+ [11, 3],
+ [11, 2],
+ [12, 2],
+ [12, 2],
+ [12, 2],
+ [12, 2],
+ [6, 3],
+ [6, 5],
+ [4, 1],
+ [4, 1],
+ [4, 1],
+ [33, 1],
+ [34, 1],
+ [37, 1],
+ [35, 1],
+ [22, 1],
+ [22, 2],
+ [22, 1],
+ [22, 1],
+ [49, 1],
+ [49, 2],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [45, 1],
+ [46, 1],
+ [46, 1],
+ [46, 1],
+ ],
+ performAction: function (t, i, e, a, n, r, s) {
+ var l = r.length - 1;
+ switch (n) {
+ case 13:
+ (this.$ = r[l].trim()), a.setDiagramTitle(this.$);
+ break;
+ case 14:
+ (this.$ = r[l].trim()), a.setAccTitle(this.$);
+ break;
+ case 15:
+ case 16:
+ (this.$ = r[l].trim()), a.setAccDescription(this.$);
+ break;
+ case 17:
+ a.addSection(r[l].substr(8)), (this.$ = r[l].substr(8));
+ break;
+ case 19:
+ a.addPoint(r[l - 3], r[l - 1], r[l]);
+ break;
+ case 20:
+ a.setXAxisLeftText(r[l - 2]), a.setXAxisRightText(r[l]);
+ break;
+ case 21:
+ (r[l - 1].text += " ⟶ "), a.setXAxisLeftText(r[l - 1]);
+ break;
+ case 22:
+ a.setXAxisLeftText(r[l]);
+ break;
+ case 23:
+ a.setYAxisBottomText(r[l - 2]), a.setYAxisTopText(r[l]);
+ break;
+ case 24:
+ (r[l - 1].text += " ⟶ "), a.setYAxisBottomText(r[l - 1]);
+ break;
+ case 25:
+ a.setYAxisBottomText(r[l]);
+ break;
+ case 26:
+ a.setQuadrant1Text(r[l]);
+ break;
+ case 27:
+ a.setQuadrant2Text(r[l]);
+ break;
+ case 28:
+ a.setQuadrant3Text(r[l]);
+ break;
+ case 29:
+ a.setQuadrant4Text(r[l]);
+ break;
+ case 35:
+ a.parseDirective("%%{", "open_directive");
+ break;
+ case 36:
+ a.parseDirective(r[l], "type_directive");
+ break;
+ case 37:
+ (r[l] = r[l].trim().replace(/'/g, '"')), a.parseDirective(r[l], "arg_directive");
+ break;
+ case 38:
+ a.parseDirective("}%%", "close_directive", "quadrantChart");
+ break;
+ case 39:
+ case 41:
+ this.$ = { text: r[l], type: "text" };
+ break;
+ case 40:
+ this.$ = { text: r[l - 1].text + "" + r[l], type: r[l - 1].type };
+ break;
+ case 42:
+ this.$ = { text: r[l], type: "markdown" };
+ break;
+ case 43:
+ this.$ = r[l];
+ break;
+ case 44:
+ this.$ = r[l - 1] + "" + r[l];
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 1: [3] },
+ { 3: 11, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 3: 12, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ { 3: 13, 4: 2, 5: i, 6: 4, 7: e, 33: 9, 38: a, 39: n, 40: r, 41: s },
+ t(l, [2, 5], { 8: 14 }),
+ t(o, [2, 32]),
+ t(o, [2, 33]),
+ t(o, [2, 34]),
+ { 34: 15, 42: [1, 16] },
+ { 42: [2, 35] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ t(h, c, {
+ 33: 9,
+ 9: 17,
+ 10: 18,
+ 11: 20,
+ 12: 21,
+ 13: 22,
+ 6: 28,
+ 22: 35,
+ 45: 36,
+ 1: [2, 4],
+ 5: d,
+ 14: u,
+ 16: x,
+ 18: g,
+ 20: f,
+ 21: y,
+ 26: p,
+ 28: q,
+ 29: T,
+ 30: _,
+ 31: m,
+ 32: A,
+ 41: s,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ { 35: 50, 36: [1, 51], 44: w },
+ t([36, 44], [2, 36]),
+ t(l, [2, 6]),
+ { 4: 53, 38: a, 39: n, 40: r },
+ t(h, c, {
+ 33: 9,
+ 11: 20,
+ 12: 21,
+ 13: 22,
+ 6: 28,
+ 22: 35,
+ 45: 36,
+ 10: 54,
+ 5: d,
+ 14: u,
+ 16: x,
+ 18: g,
+ 20: f,
+ 21: y,
+ 26: p,
+ 28: q,
+ 29: T,
+ 30: _,
+ 31: m,
+ 32: A,
+ 41: s,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ t(h, [2, 10]),
+ t(h, [2, 11]),
+ t(h, [2, 12]),
+ { 15: [1, 55] },
+ { 17: [1, 56] },
+ { 19: [1, 57] },
+ t(h, [2, 16]),
+ t(h, [2, 17]),
+ t(h, [2, 18]),
+ {
+ 22: 58,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 59,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 60,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 61,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 62,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 22: 63,
+ 45: 36,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ },
+ {
+ 5: R,
+ 23: [1, 64],
+ 45: 66,
+ 46: 65,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ },
+ t(N, [2, 39]),
+ t(N, [2, 41]),
+ t(N, [2, 42]),
+ t(N, [2, 45]),
+ t(N, [2, 46]),
+ t(N, [2, 47]),
+ t(N, [2, 48]),
+ t(N, [2, 49]),
+ t(N, [2, 50]),
+ t(N, [2, 51]),
+ t(N, [2, 52]),
+ t(N, [2, 53]),
+ t(N, [2, 54]),
+ t(N, [2, 55]),
+ t(U, [2, 30]),
+ { 37: 69, 43: [1, 70] },
+ t(U, [2, 38]),
+ t(l, [2, 7]),
+ t(h, [2, 9]),
+ t(h, [2, 13]),
+ t(h, [2, 14]),
+ t(h, [2, 15]),
+ t(h, [2, 22], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 27: [1, 71],
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 25], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 27: [1, 72],
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 26], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 27], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 28], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 29], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ { 24: [1, 73] },
+ t(N, [2, 40]),
+ t(N, [2, 56]),
+ t(N, [2, 57]),
+ t(N, [2, 58]),
+ { 35: 74, 44: w },
+ { 44: [2, 37] },
+ t(h, [2, 21], {
+ 45: 36,
+ 22: 75,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ t(h, [2, 24], {
+ 45: 36,
+ 22: 76,
+ 47: b,
+ 48: S,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ }),
+ { 25: [1, 77] },
+ t(U, [2, 31]),
+ t(h, [2, 20], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 23], {
+ 46: 65,
+ 45: 66,
+ 5: R,
+ 50: k,
+ 51: v,
+ 52: F,
+ 53: P,
+ 54: C,
+ 55: L,
+ 56: D,
+ 57: z,
+ 58: E,
+ 59: I,
+ 60: B,
+ 61: W,
+ }),
+ t(h, [2, 19]),
+ ],
+ defaultActions: { 10: [2, 35], 11: [2, 1], 12: [2, 2], 13: [2, 3], 70: [2, 37] },
+ parseError: function (t, i) {
+ if (!i.recoverable) {
+ var e = new Error(t);
+ throw ((e.hash = i), e);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var i = [0],
+ e = [],
+ a = [null],
+ n = [],
+ r = this.table,
+ s = "",
+ l = 0,
+ o = 0,
+ h = n.slice.call(arguments, 1),
+ c = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ c.setInput(t, d.yy), (d.yy.lexer = c), (d.yy.parser = this), void 0 === c.yylloc && (c.yylloc = {});
+ var x = c.yylloc;
+ n.push(x);
+ var g = c.options && c.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, y, p, q, T, _, m, A, b, S = {}; ; ) {
+ if (
+ ((y = i[i.length - 1]),
+ this.defaultActions[y]
+ ? (p = this.defaultActions[y])
+ : (null == f &&
+ ((b = void 0),
+ "number" != typeof (b = e.pop() || c.lex() || 1) &&
+ (b instanceof Array && (b = (e = b).pop()), (b = this.symbols_[b] || b)),
+ (f = b)),
+ (p = r[y] && r[y][f])),
+ void 0 === p || !p.length || !p[0])
+ ) {
+ var k;
+ for (T in ((A = []), r[y])) this.terminals_[T] && T > 2 && A.push("'" + this.terminals_[T] + "'");
+ (k = c.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ c.showPosition() +
+ "\nExpecting " +
+ A.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(k, {
+ text: c.match,
+ token: this.terminals_[f] || f,
+ line: c.yylineno,
+ loc: x,
+ expected: A,
+ });
+ }
+ if (p[0] instanceof Array && p.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + y + ", token: " + f);
+ switch (p[0]) {
+ case 1:
+ i.push(f),
+ a.push(c.yytext),
+ n.push(c.yylloc),
+ i.push(p[1]),
+ (f = null),
+ (o = c.yyleng),
+ (s = c.yytext),
+ (l = c.yylineno),
+ (x = c.yylloc);
+ break;
+ case 2:
+ if (
+ ((_ = this.productions_[p[1]][1]),
+ (S.$ = a[a.length - _]),
+ (S._$ = {
+ first_line: n[n.length - (_ || 1)].first_line,
+ last_line: n[n.length - 1].last_line,
+ first_column: n[n.length - (_ || 1)].first_column,
+ last_column: n[n.length - 1].last_column,
+ }),
+ g && (S._$.range = [n[n.length - (_ || 1)].range[0], n[n.length - 1].range[1]]),
+ void 0 !== (q = this.performAction.apply(S, [s, o, l, d.yy, p[1], a, n].concat(h))))
+ )
+ return q;
+ _ && ((i = i.slice(0, -1 * _ * 2)), (a = a.slice(0, -1 * _)), (n = n.slice(0, -1 * _))),
+ i.push(this.productions_[p[1]][0]),
+ a.push(S.$),
+ n.push(S._$),
+ (m = r[i[i.length - 2]][i[i.length - 1]]),
+ i.push(m);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ H = {
+ EOF: 1,
+ parseError: function (t, i) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, i);
+ },
+ setInput: function (t, i) {
+ return (
+ (this.yy = i || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var i = t.length,
+ e = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - i)), (this.offset -= i);
+ var a = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ e.length - 1 && (this.yylineno -= e.length - 1);
+ var n = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: e
+ ? (e.length === a.length ? this.yylloc.first_column : 0) + a[a.length - e.length].length - e[0].length
+ : this.yylloc.first_column - i,
+ }),
+ this.options.ranges && (this.yylloc.range = [n[0], n[0] + this.yyleng - i]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ i = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + i + "^";
+ },
+ test_match: function (t, i) {
+ var e, a, n;
+ if (
+ (this.options.backtrack_lexer &&
+ ((n = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (n.yylloc.range = this.yylloc.range.slice(0))),
+ (a = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += a.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: a ? a[a.length - 1].length - a[a.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (e = this.performAction.call(this, this.yy, this, i, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ e)
+ )
+ return e;
+ if (this._backtrack) {
+ for (var r in n) this[r] = n[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, i, e, a;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var n = this._currentRules(), r = 0; r < n.length; r++)
+ if ((e = this._input.match(this.rules[n[r]])) && (!i || e[0].length > i[0].length)) {
+ if (((i = e), (a = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(e, n[r]))) return t;
+ if (this._backtrack) {
+ i = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return i
+ ? !1 !== (t = this.test_match(i, n[a])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, i, e, a) {
+ switch (e) {
+ case 0:
+ return this.begin("open_directive"), 41;
+ case 1:
+ return this.begin("type_directive"), 42;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 36;
+ case 3:
+ return this.popState(), this.popState(), 44;
+ case 4:
+ return 43;
+ case 5:
+ case 6:
+ case 8:
+ break;
+ case 7:
+ return 38;
+ case 9:
+ return this.begin("title"), 14;
+ case 10:
+ return this.popState(), "title_value";
+ case 11:
+ return this.begin("acc_title"), 16;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 18;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 27:
+ case 29:
+ case 33:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ return 26;
+ case 19:
+ return 28;
+ case 20:
+ return 27;
+ case 21:
+ return 29;
+ case 22:
+ return 30;
+ case 23:
+ return 31;
+ case 24:
+ return 32;
+ case 25:
+ this.begin("md_string");
+ break;
+ case 26:
+ return "MD_STR";
+ case 28:
+ this.begin("string");
+ break;
+ case 30:
+ return "STR";
+ case 31:
+ return this.begin("point_start"), 23;
+ case 32:
+ return this.begin("point_x"), 24;
+ case 34:
+ this.popState(), this.begin("point_y");
+ break;
+ case 35:
+ return this.popState(), 25;
+ case 36:
+ return 7;
+ case 37:
+ return 53;
+ case 38:
+ return "COLON";
+ case 39:
+ return 55;
+ case 40:
+ return 54;
+ case 41:
+ case 42:
+ return 56;
+ case 43:
+ return 57;
+ case 44:
+ return 59;
+ case 45:
+ return 60;
+ case 46:
+ return 58;
+ case 47:
+ return 51;
+ case 48:
+ return 61;
+ case 49:
+ return 52;
+ case 50:
+ return 5;
+ case 51:
+ return 39;
+ case 52:
+ return 50;
+ case 53:
+ return 40;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n\r]+)/i,
+ /^(?:%%[^\n]*)/i,
+ /^(?:title\b)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?: *x-axis *)/i,
+ /^(?: *y-axis *)/i,
+ /^(?: *--+> *)/i,
+ /^(?: *quadrant-1 *)/i,
+ /^(?: *quadrant-2 *)/i,
+ /^(?: *quadrant-3 *)/i,
+ /^(?: *quadrant-4 *)/i,
+ /^(?:["][`])/i,
+ /^(?:[^`"]+)/i,
+ /^(?:[`]["])/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:\s*:\s*\[\s*)/i,
+ /^(?:(1)|(0(.\d+)?))/i,
+ /^(?:\s*\] *)/i,
+ /^(?:\s*,\s*)/i,
+ /^(?:(1)|(0(.\d+)?))/i,
+ /^(?: *quadrantChart *)/i,
+ /^(?:[A-Za-z]+)/i,
+ /^(?::)/i,
+ /^(?:\+)/i,
+ /^(?:,)/i,
+ /^(?:=)/i,
+ /^(?:=)/i,
+ /^(?:\*)/i,
+ /^(?:#)/i,
+ /^(?:[\_])/i,
+ /^(?:\.)/i,
+ /^(?:&)/i,
+ /^(?:-)/i,
+ /^(?:[0-9]+)/i,
+ /^(?:\s)/i,
+ /^(?:;)/i,
+ /^(?:[!"#$%&'*+,-.`?\\_/])/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ point_y: { rules: [35], inclusive: !1 },
+ point_x: { rules: [34], inclusive: !1 },
+ point_start: { rules: [32, 33], inclusive: !1 },
+ acc_descr_multiline: { rules: [16, 17], inclusive: !1 },
+ acc_descr: { rules: [14], inclusive: !1 },
+ acc_title: { rules: [12], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ title: { rules: [10], inclusive: !1 },
+ md_string: { rules: [26, 27], inclusive: !1 },
+ string: { rules: [29, 30], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 28, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function $() {
+ this.yy = {};
+ }
+ return (Q.lexer = H), ($.prototype = Q), (Q.Parser = $), new $();
+ })());
+ r.parser = r;
+ const s = r,
+ l = (0, a.G)(),
+ o = (0, a.c)();
+ function h(t) {
+ return (0, a.d)(t.trim(), o);
+ }
+ const c = new (class {
+ constructor() {
+ (this.config = this.getDefaultConfig()), (this.themeConfig = this.getDefaultThemeConfig()), (this.data = this.getDefaultData());
+ }
+ getDefaultData() {
+ return {
+ titleText: "",
+ quadrant1Text: "",
+ quadrant2Text: "",
+ quadrant3Text: "",
+ quadrant4Text: "",
+ xAxisLeftText: "",
+ xAxisRightText: "",
+ yAxisBottomText: "",
+ yAxisTopText: "",
+ points: [],
+ };
+ }
+ getDefaultConfig() {
+ var t, i, e, n, r, s, l, o, h, c, d, u, x, g, f, y, p, q;
+ return {
+ showXAxis: !0,
+ showYAxis: !0,
+ showTitle: !0,
+ chartHeight: (null == (t = a.C.quadrantChart) ? void 0 : t.chartWidth) || 500,
+ chartWidth: (null == (i = a.C.quadrantChart) ? void 0 : i.chartHeight) || 500,
+ titlePadding: (null == (e = a.C.quadrantChart) ? void 0 : e.titlePadding) || 10,
+ titleFontSize: (null == (n = a.C.quadrantChart) ? void 0 : n.titleFontSize) || 20,
+ quadrantPadding: (null == (r = a.C.quadrantChart) ? void 0 : r.quadrantPadding) || 5,
+ xAxisLabelPadding: (null == (s = a.C.quadrantChart) ? void 0 : s.xAxisLabelPadding) || 5,
+ yAxisLabelPadding: (null == (l = a.C.quadrantChart) ? void 0 : l.yAxisLabelPadding) || 5,
+ xAxisLabelFontSize: (null == (o = a.C.quadrantChart) ? void 0 : o.xAxisLabelFontSize) || 16,
+ yAxisLabelFontSize: (null == (h = a.C.quadrantChart) ? void 0 : h.yAxisLabelFontSize) || 16,
+ quadrantLabelFontSize: (null == (c = a.C.quadrantChart) ? void 0 : c.quadrantLabelFontSize) || 16,
+ quadrantTextTopPadding: (null == (d = a.C.quadrantChart) ? void 0 : d.quadrantTextTopPadding) || 5,
+ pointTextPadding: (null == (u = a.C.quadrantChart) ? void 0 : u.pointTextPadding) || 5,
+ pointLabelFontSize: (null == (x = a.C.quadrantChart) ? void 0 : x.pointLabelFontSize) || 12,
+ pointRadius: (null == (g = a.C.quadrantChart) ? void 0 : g.pointRadius) || 5,
+ xAxisPosition: (null == (f = a.C.quadrantChart) ? void 0 : f.xAxisPosition) || "top",
+ yAxisPosition: (null == (y = a.C.quadrantChart) ? void 0 : y.yAxisPosition) || "left",
+ quadrantInternalBorderStrokeWidth: (null == (p = a.C.quadrantChart) ? void 0 : p.quadrantInternalBorderStrokeWidth) || 1,
+ quadrantExternalBorderStrokeWidth: (null == (q = a.C.quadrantChart) ? void 0 : q.quadrantExternalBorderStrokeWidth) || 2,
+ };
+ }
+ getDefaultThemeConfig() {
+ return {
+ quadrant1Fill: l.quadrant1Fill,
+ quadrant2Fill: l.quadrant2Fill,
+ quadrant3Fill: l.quadrant3Fill,
+ quadrant4Fill: l.quadrant4Fill,
+ quadrant1TextFill: l.quadrant1TextFill,
+ quadrant2TextFill: l.quadrant2TextFill,
+ quadrant3TextFill: l.quadrant3TextFill,
+ quadrant4TextFill: l.quadrant4TextFill,
+ quadrantPointFill: l.quadrantPointFill,
+ quadrantPointTextFill: l.quadrantPointTextFill,
+ quadrantXAxisTextFill: l.quadrantXAxisTextFill,
+ quadrantYAxisTextFill: l.quadrantYAxisTextFill,
+ quadrantTitleFill: l.quadrantTitleFill,
+ quadrantInternalBorderStrokeFill: l.quadrantInternalBorderStrokeFill,
+ quadrantExternalBorderStrokeFill: l.quadrantExternalBorderStrokeFill,
+ };
+ }
+ clear() {
+ (this.config = this.getDefaultConfig()),
+ (this.themeConfig = this.getDefaultThemeConfig()),
+ (this.data = this.getDefaultData()),
+ a.l.info("clear called");
+ }
+ setData(t) {
+ this.data = { ...this.data, ...t };
+ }
+ addPoints(t) {
+ this.data.points = [...t, ...this.data.points];
+ }
+ setConfig(t) {
+ a.l.trace("setConfig called with: ", t), (this.config = { ...this.config, ...t });
+ }
+ setThemeConfig(t) {
+ a.l.trace("setThemeConfig called with: ", t), (this.themeConfig = { ...this.themeConfig, ...t });
+ }
+ calculateSpace(t, i, e, a) {
+ const n = 2 * this.config.xAxisLabelPadding + this.config.xAxisLabelFontSize,
+ r = { top: "top" === t && i ? n : 0, bottom: "bottom" === t && i ? n : 0 },
+ s = 2 * this.config.yAxisLabelPadding + this.config.yAxisLabelFontSize,
+ l = {
+ left: "left" === this.config.yAxisPosition && e ? s : 0,
+ right: "right" === this.config.yAxisPosition && e ? s : 0,
+ },
+ o = this.config.titleFontSize + 2 * this.config.titlePadding,
+ h = { top: a ? o : 0 },
+ c = this.config.quadrantPadding + l.left,
+ d = this.config.quadrantPadding + r.top + h.top,
+ u = this.config.chartWidth - 2 * this.config.quadrantPadding - l.left - l.right,
+ x = this.config.chartHeight - 2 * this.config.quadrantPadding - r.top - r.bottom - h.top;
+ return {
+ xAxisSpace: r,
+ yAxisSpace: l,
+ titleSpace: h,
+ quadrantSpace: {
+ quadrantLeft: c,
+ quadrantTop: d,
+ quadrantWidth: u,
+ quadrantHalfWidth: u / 2,
+ quadrantHeight: x,
+ quadrantHalfHeight: x / 2,
+ },
+ };
+ }
+ getAxisLabels(t, i, e, a) {
+ const { quadrantSpace: n, titleSpace: r } = a,
+ { quadrantHalfHeight: s, quadrantHeight: l, quadrantLeft: o, quadrantHalfWidth: h, quadrantTop: c, quadrantWidth: d } = n,
+ u = 0 === this.data.points.length,
+ x = [];
+ return (
+ this.data.xAxisLeftText &&
+ i &&
+ x.push({
+ text: this.data.xAxisLeftText,
+ fill: this.themeConfig.quadrantXAxisTextFill,
+ x: o + (u ? h / 2 : 0),
+ y: "top" === t ? this.config.xAxisLabelPadding + r.top : this.config.xAxisLabelPadding + c + l + this.config.quadrantPadding,
+ fontSize: this.config.xAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: 0,
+ }),
+ this.data.xAxisRightText &&
+ i &&
+ x.push({
+ text: this.data.xAxisRightText,
+ fill: this.themeConfig.quadrantXAxisTextFill,
+ x: o + h + (u ? h / 2 : 0),
+ y: "top" === t ? this.config.xAxisLabelPadding + r.top : this.config.xAxisLabelPadding + c + l + this.config.quadrantPadding,
+ fontSize: this.config.xAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: 0,
+ }),
+ this.data.yAxisBottomText &&
+ e &&
+ x.push({
+ text: this.data.yAxisBottomText,
+ fill: this.themeConfig.quadrantYAxisTextFill,
+ x:
+ "left" === this.config.yAxisPosition
+ ? this.config.yAxisLabelPadding
+ : this.config.yAxisLabelPadding + o + d + this.config.quadrantPadding,
+ y: c + l - (u ? s / 2 : 0),
+ fontSize: this.config.yAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: -90,
+ }),
+ this.data.yAxisTopText &&
+ e &&
+ x.push({
+ text: this.data.yAxisTopText,
+ fill: this.themeConfig.quadrantYAxisTextFill,
+ x:
+ "left" === this.config.yAxisPosition
+ ? this.config.yAxisLabelPadding
+ : this.config.yAxisLabelPadding + o + d + this.config.quadrantPadding,
+ y: c + s - (u ? s / 2 : 0),
+ fontSize: this.config.yAxisLabelFontSize,
+ verticalPos: u ? "center" : "left",
+ horizontalPos: "top",
+ rotation: -90,
+ }),
+ x
+ );
+ }
+ getQuadrants(t) {
+ const { quadrantSpace: i } = t,
+ { quadrantHalfHeight: e, quadrantLeft: a, quadrantHalfWidth: n, quadrantTop: r } = i,
+ s = [
+ {
+ text: {
+ text: this.data.quadrant1Text,
+ fill: this.themeConfig.quadrant1TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a + n,
+ y: r,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant1Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant2Text,
+ fill: this.themeConfig.quadrant2TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a,
+ y: r,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant2Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant3Text,
+ fill: this.themeConfig.quadrant3TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a,
+ y: r + e,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant3Fill,
+ },
+ {
+ text: {
+ text: this.data.quadrant4Text,
+ fill: this.themeConfig.quadrant4TextFill,
+ x: 0,
+ y: 0,
+ fontSize: this.config.quadrantLabelFontSize,
+ verticalPos: "center",
+ horizontalPos: "middle",
+ rotation: 0,
+ },
+ x: a + n,
+ y: r + e,
+ width: n,
+ height: e,
+ fill: this.themeConfig.quadrant4Fill,
+ },
+ ];
+ for (const t of s)
+ (t.text.x = t.x + t.width / 2),
+ 0 === this.data.points.length
+ ? ((t.text.y = t.y + t.height / 2), (t.text.horizontalPos = "middle"))
+ : ((t.text.y = t.y + this.config.quadrantTextTopPadding), (t.text.horizontalPos = "top"));
+ return s;
+ }
+ getQuadrantPoints(t) {
+ const { quadrantSpace: i } = t,
+ { quadrantHeight: e, quadrantLeft: a, quadrantTop: r, quadrantWidth: s } = i,
+ l = (0, n.BYU)()
+ .domain([0, 1])
+ .range([a, s + a]),
+ o = (0, n.BYU)()
+ .domain([0, 1])
+ .range([e + r, r]);
+ return this.data.points.map((t) => ({
+ x: l(t.x),
+ y: o(t.y),
+ fill: this.themeConfig.quadrantPointFill,
+ radius: this.config.pointRadius,
+ text: {
+ text: t.text,
+ fill: this.themeConfig.quadrantPointTextFill,
+ x: l(t.x),
+ y: o(t.y) + this.config.pointTextPadding,
+ verticalPos: "center",
+ horizontalPos: "top",
+ fontSize: this.config.pointLabelFontSize,
+ rotation: 0,
+ },
+ }));
+ }
+ getBorders(t) {
+ const i = this.config.quadrantExternalBorderStrokeWidth / 2,
+ { quadrantSpace: e } = t,
+ { quadrantHalfHeight: a, quadrantHeight: n, quadrantLeft: r, quadrantHalfWidth: s, quadrantTop: l, quadrantWidth: o } = e;
+ return [
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r - i,
+ y1: l,
+ x2: r + o + i,
+ y2: l,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r + o,
+ y1: l + i,
+ x2: r + o,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r - i,
+ y1: l + n,
+ x2: r + o + i,
+ y2: l + n,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
+ x1: r,
+ y1: l + i,
+ x2: r,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
+ x1: r + s,
+ y1: l + i,
+ x2: r + s,
+ y2: l + n - i,
+ },
+ {
+ strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
+ strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
+ x1: r + i,
+ y1: l + a,
+ x2: r + o - i,
+ y2: l + a,
+ },
+ ];
+ }
+ getTitle(t) {
+ if (t)
+ return {
+ text: this.data.titleText,
+ fill: this.themeConfig.quadrantTitleFill,
+ fontSize: this.config.titleFontSize,
+ horizontalPos: "top",
+ verticalPos: "center",
+ rotation: 0,
+ y: this.config.titlePadding,
+ x: this.config.chartWidth / 2,
+ };
+ }
+ build() {
+ const t = this.config.showXAxis && !(!this.data.xAxisLeftText && !this.data.xAxisRightText),
+ i = this.config.showYAxis && !(!this.data.yAxisTopText && !this.data.yAxisBottomText),
+ e = this.config.showTitle && !!this.data.titleText,
+ a = this.data.points.length > 0 ? "bottom" : this.config.xAxisPosition,
+ n = this.calculateSpace(a, t, i, e);
+ return {
+ points: this.getQuadrantPoints(n),
+ quadrants: this.getQuadrants(n),
+ axisLabels: this.getAxisLabels(a, t, i, n),
+ borderLines: this.getBorders(n),
+ title: this.getTitle(e),
+ };
+ }
+ })(),
+ d = {
+ parser: s,
+ db: {
+ setWidth: function (t) {
+ c.setConfig({ chartWidth: t });
+ },
+ setHeight: function (t) {
+ c.setConfig({ chartHeight: t });
+ },
+ setQuadrant1Text: function (t) {
+ c.setData({ quadrant1Text: h(t.text) });
+ },
+ setQuadrant2Text: function (t) {
+ c.setData({ quadrant2Text: h(t.text) });
+ },
+ setQuadrant3Text: function (t) {
+ c.setData({ quadrant3Text: h(t.text) });
+ },
+ setQuadrant4Text: function (t) {
+ c.setData({ quadrant4Text: h(t.text) });
+ },
+ setXAxisLeftText: function (t) {
+ c.setData({ xAxisLeftText: h(t.text) });
+ },
+ setXAxisRightText: function (t) {
+ c.setData({ xAxisRightText: h(t.text) });
+ },
+ setYAxisTopText: function (t) {
+ c.setData({ yAxisTopText: h(t.text) });
+ },
+ setYAxisBottomText: function (t) {
+ c.setData({ yAxisBottomText: h(t.text) });
+ },
+ addPoint: function (t, i, e) {
+ c.addPoints([{ x: i, y: e, text: h(t.text) }]);
+ },
+ getQuadrantData: function () {
+ const t = (0, a.c)(),
+ { themeVariables: i, quadrantChart: e } = t;
+ return (
+ e && c.setConfig(e),
+ c.setThemeConfig({
+ quadrant1Fill: i.quadrant1Fill,
+ quadrant2Fill: i.quadrant2Fill,
+ quadrant3Fill: i.quadrant3Fill,
+ quadrant4Fill: i.quadrant4Fill,
+ quadrant1TextFill: i.quadrant1TextFill,
+ quadrant2TextFill: i.quadrant2TextFill,
+ quadrant3TextFill: i.quadrant3TextFill,
+ quadrant4TextFill: i.quadrant4TextFill,
+ quadrantPointFill: i.quadrantPointFill,
+ quadrantPointTextFill: i.quadrantPointTextFill,
+ quadrantXAxisTextFill: i.quadrantXAxisTextFill,
+ quadrantYAxisTextFill: i.quadrantYAxisTextFill,
+ quadrantExternalBorderStrokeFill: i.quadrantExternalBorderStrokeFill,
+ quadrantInternalBorderStrokeFill: i.quadrantInternalBorderStrokeFill,
+ quadrantTitleFill: i.quadrantTitleFill,
+ }),
+ c.setData({ titleText: (0, a.t)() }),
+ c.build()
+ );
+ },
+ parseDirective: function (t, i, e) {
+ a.m.parseDirective(this, t, i, e);
+ },
+ clear: function () {
+ c.clear(), (0, a.v)();
+ },
+ setAccTitle: a.s,
+ getAccTitle: a.g,
+ setDiagramTitle: a.r,
+ getDiagramTitle: a.t,
+ getAccDescription: a.a,
+ setAccDescription: a.b,
+ },
+ renderer: {
+ draw: (t, i, e, r) => {
+ var s, l, o;
+ function h(t) {
+ return "top" === t ? "hanging" : "middle";
+ }
+ function c(t) {
+ return "left" === t ? "start" : "middle";
+ }
+ function d(t) {
+ return `translate(${t.x}, ${t.y}) rotate(${t.rotation || 0})`;
+ }
+ const u = (0, a.c)();
+ a.l.debug("Rendering quadrant chart\n" + t);
+ const x = u.securityLevel;
+ let g;
+ "sandbox" === x && (g = (0, n.Ys)("#i" + i));
+ const f = ("sandbox" === x ? (0, n.Ys)(g.nodes()[0].contentDocument.body) : (0, n.Ys)("body")).select(`[id="${i}"]`),
+ y = f.append("g").attr("class", "main"),
+ p = (null == (s = u.quadrantChart) ? void 0 : s.chartWidth) || 500,
+ q = (null == (l = u.quadrantChart) ? void 0 : l.chartHeight) || 500;
+ (0, a.i)(f, q, p, (null == (o = u.quadrantChart) ? void 0 : o.useMaxWidth) || !0),
+ f.attr("viewBox", "0 0 " + p + " " + q),
+ r.db.setHeight(q),
+ r.db.setWidth(p);
+ const T = r.db.getQuadrantData(),
+ _ = y.append("g").attr("class", "quadrants"),
+ m = y.append("g").attr("class", "border"),
+ A = y.append("g").attr("class", "data-points"),
+ b = y.append("g").attr("class", "labels"),
+ S = y.append("g").attr("class", "title");
+ T.title &&
+ S.append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("fill", T.title.fill)
+ .attr("font-size", T.title.fontSize)
+ .attr("dominant-baseline", h(T.title.horizontalPos))
+ .attr("text-anchor", c(T.title.verticalPos))
+ .attr("transform", d(T.title))
+ .text(T.title.text),
+ T.borderLines &&
+ m
+ .selectAll("line")
+ .data(T.borderLines)
+ .enter()
+ .append("line")
+ .attr("x1", (t) => t.x1)
+ .attr("y1", (t) => t.y1)
+ .attr("x2", (t) => t.x2)
+ .attr("y2", (t) => t.y2)
+ .style("stroke", (t) => t.strokeFill)
+ .style("stroke-width", (t) => t.strokeWidth);
+ const k = _.selectAll("g.quadrant").data(T.quadrants).enter().append("g").attr("class", "quadrant");
+ k
+ .append("rect")
+ .attr("x", (t) => t.x)
+ .attr("y", (t) => t.y)
+ .attr("width", (t) => t.width)
+ .attr("height", (t) => t.height)
+ .attr("fill", (t) => t.fill),
+ k
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("fill", (t) => t.text.fill)
+ .attr("font-size", (t) => t.text.fontSize)
+ .attr("dominant-baseline", (t) => h(t.text.horizontalPos))
+ .attr("text-anchor", (t) => c(t.text.verticalPos))
+ .attr("transform", (t) => d(t.text))
+ .text((t) => t.text.text),
+ b
+ .selectAll("g.label")
+ .data(T.axisLabels)
+ .enter()
+ .append("g")
+ .attr("class", "label")
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .text((t) => t.text)
+ .attr("fill", (t) => t.fill)
+ .attr("font-size", (t) => t.fontSize)
+ .attr("dominant-baseline", (t) => h(t.horizontalPos))
+ .attr("text-anchor", (t) => c(t.verticalPos))
+ .attr("transform", (t) => d(t));
+ const v = A.selectAll("g.data-point").data(T.points).enter().append("g").attr("class", "data-point");
+ v
+ .append("circle")
+ .attr("cx", (t) => t.x)
+ .attr("cy", (t) => t.y)
+ .attr("r", (t) => t.radius)
+ .attr("fill", (t) => t.fill),
+ v
+ .append("text")
+ .attr("x", 0)
+ .attr("y", 0)
+ .text((t) => t.text.text)
+ .attr("fill", (t) => t.text.fill)
+ .attr("font-size", (t) => t.text.fontSize)
+ .attr("dominant-baseline", (t) => h(t.text.horizontalPos))
+ .attr("text-anchor", (t) => c(t.text.verticalPos))
+ .attr("transform", (t) => d(t.text));
+ },
+ },
+ styles: () => "",
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js
index de649f804..b90763ffa 100644
--- a/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js
@@ -1 +1,1503 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[19],{4019:function(e,t,i){i.d(t,{diagram:function(){return k}});var n=i(9339),r=i(7274),s=i(3771),a=i(5625),c=(i(7484),i(7967),i(7856),function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,3],i=[1,5],n=[1,6],r=[1,7],s=[1,8],a=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],c=[1,22],l=[2,13],o=[1,26],h=[1,27],u=[1,28],d=[1,29],y=[1,30],p=[1,31],_=[1,24],g=[1,32],E=[1,33],R=[1,36],f=[71,72],m=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],I=[1,56],b=[1,57],k=[1,58],S=[1,59],T=[1,60],N=[1,61],v=[1,62],x=[62,63],A=[1,74],q=[1,70],$=[1,71],O=[1,72],w=[1,73],C=[1,75],D=[1,79],L=[1,80],F=[1,77],M=[1,78],P=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],V={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(e,t,i,n,r,s,a){var c=s.length-1;switch(r){case 6:this.$=s[c].trim(),n.setAccTitle(this.$);break;case 7:case 8:this.$=s[c].trim(),n.setAccDescription(this.$);break;case 9:n.parseDirective("%%{","open_directive");break;case 10:n.parseDirective(s[c],"type_directive");break;case 11:s[c]=s[c].trim().replace(/'/g,'"'),n.parseDirective(s[c],"arg_directive");break;case 12:n.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:n.addRequirement(s[c-3],s[c-4]);break;case 20:n.setNewReqId(s[c-2]);break;case 21:n.setNewReqText(s[c-2]);break;case 22:n.setNewReqRisk(s[c-2]);break;case 23:n.setNewReqVerifyMethod(s[c-2]);break;case 26:this.$=n.RequirementType.REQUIREMENT;break;case 27:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=n.RiskLevel.LOW_RISK;break;case 33:this.$=n.RiskLevel.MED_RISK;break;case 34:this.$=n.RiskLevel.HIGH_RISK;break;case 35:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=n.VerifyType.VERIFY_TEST;break;case 39:n.addElement(s[c-3]);break;case 40:n.setNewElementType(s[c-2]);break;case 41:n.setNewElementDocRef(s[c-2]);break;case 44:n.addRelationship(s[c-2],s[c],s[c-4]);break;case 45:n.addRelationship(s[c-2],s[c-4],s[c]);break;case 46:this.$=n.Relationships.CONTAINS;break;case 47:this.$=n.Relationships.COPIES;break;case 48:this.$=n.Relationships.DERIVES;break;case 49:this.$=n.Relationships.SATISFIES;break;case 50:this.$=n.Relationships.VERIFIES;break;case 51:this.$=n.Relationships.REFINES;break;case 52:this.$=n.Relationships.TRACES}},table:[{3:1,4:2,6:t,9:4,14:i,16:n,18:r,19:s},{1:[3]},{3:10,4:2,5:[1,9],6:t,9:4,14:i,16:n,18:r,19:s},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},e(a,[2,8]),{20:[2,9]},{3:16,4:2,6:t,9:4,14:i,16:n,18:r,19:s},{1:[2,2]},{4:21,5:c,7:17,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{11:34,12:[1,35],22:R},e([12,22],[2,10]),e(a,[2,6]),e(a,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:c,7:38,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{4:21,5:c,7:39,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{4:21,5:c,7:40,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{4:21,5:c,7:41,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{4:21,5:c,7:42,8:l,9:4,14:i,16:n,18:r,19:s,23:18,24:19,25:20,26:23,32:25,40:o,41:h,42:u,43:d,44:y,45:p,53:_,71:g,72:E},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},e(f,[2,26]),e(f,[2,27]),e(f,[2,28]),e(f,[2,29]),e(f,[2,30]),e(f,[2,31]),e(m,[2,55]),e(m,[2,56]),e(a,[2,4]),{13:51,21:[1,52]},e(a,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:I,65:b,66:k,67:S,68:T,69:N,70:v},{61:63,64:I,65:b,66:k,67:S,68:T,69:N,70:v},{11:64,22:R},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},e(x,[2,46]),e(x,[2,47]),e(x,[2,48]),e(x,[2,49]),e(x,[2,50]),e(x,[2,51]),e(x,[2,52]),{63:[1,68]},e(a,[2,5]),{5:A,29:69,30:q,33:$,35:O,37:w,39:C},{5:D,39:L,55:76,56:F,58:M},{32:81,71:g,72:E},{32:82,71:g,72:E},e(P,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:A,29:87,30:q,33:$,35:O,37:w,39:C},e(P,[2,25]),e(P,[2,39]),{31:[1,88]},{31:[1,89]},{5:D,39:L,55:90,56:F,58:M},e(P,[2,43]),e(P,[2,44]),e(P,[2,45]),{32:91,71:g,72:E},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},e(P,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},e(P,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:A,29:116,30:q,33:$,35:O,37:w,39:C},{5:A,29:117,30:q,33:$,35:O,37:w,39:C},{5:A,29:118,30:q,33:$,35:O,37:w,39:C},{5:A,29:119,30:q,33:$,35:O,37:w,39:C},{5:D,39:L,55:120,56:F,58:M},{5:D,39:L,55:121,56:F,58:M},e(P,[2,20]),e(P,[2,21]),e(P,[2,22]),e(P,[2,23]),e(P,[2,40]),e(P,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=[0],i=[],n=[null],r=[],s=this.table,a="",c=0,l=0,o=r.slice.call(arguments,1),h=Object.create(this.lexer),u={yy:{}};for(var d in this.yy)Object.prototype.hasOwnProperty.call(this.yy,d)&&(u.yy[d]=this.yy[d]);h.setInput(e,u.yy),u.yy.lexer=h,u.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var y=h.yylloc;r.push(y);var p=h.options&&h.options.ranges;"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,g,E,R,f,m,I,b,k,S={};;){if(g=t[t.length-1],this.defaultActions[g]?E=this.defaultActions[g]:(null==_&&(k=void 0,"number"!=typeof(k=i.pop()||h.lex()||1)&&(k instanceof Array&&(k=(i=k).pop()),k=this.symbols_[k]||k),_=k),E=s[g]&&s[g][_]),void 0===E||!E.length||!E[0]){var T;for(f in b=[],s[g])this.terminals_[f]&&f>2&&b.push("'"+this.terminals_[f]+"'");T=h.showPosition?"Parse error on line "+(c+1)+":\n"+h.showPosition()+"\nExpecting "+b.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(T,{text:h.match,token:this.terminals_[_]||_,line:h.yylineno,loc:y,expected:b})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+_);switch(E[0]){case 1:t.push(_),n.push(h.yytext),r.push(h.yylloc),t.push(E[1]),_=null,l=h.yyleng,a=h.yytext,c=h.yylineno,y=h.yylloc;break;case 2:if(m=this.productions_[E[1]][1],S.$=n[n.length-m],S._$={first_line:r[r.length-(m||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(m||1)].first_column,last_column:r[r.length-1].last_column},p&&(S._$.range=[r[r.length-(m||1)].range[0],r[r.length-1].range[1]]),void 0!==(R=this.performAction.apply(S,[a,l,c,u.yy,E[1],n,r].concat(o))))return R;m&&(t=t.slice(0,-1*m*2),n=n.slice(0,-1*m),r=r.slice(0,-1*m)),t.push(this.productions_[E[1]][0]),n.push(S.$),r.push(S._$),I=s[t[t.length-2]][t[t.length-1]],t.push(I);break;case 3:return!0}}return!0}},Y={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return t.yytext=t.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};function U(){this.yy={}}return V.lexer=Y,U.prototype=V,V.Parser=U,new U}());c.parser=c;const l=c;let o=[],h={},u={},d={},y={};const p={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(e,t,i){n.m.parseDirective(this,e,t,i)},getConfig:()=>(0,n.c)().req,addRequirement:(e,t)=>(void 0===u[e]&&(u[e]={name:e,type:t,id:h.id,text:h.text,risk:h.risk,verifyMethod:h.verifyMethod}),h={},u[e]),getRequirements:()=>u,setNewReqId:e=>{void 0!==h&&(h.id=e)},setNewReqText:e=>{void 0!==h&&(h.text=e)},setNewReqRisk:e=>{void 0!==h&&(h.risk=e)},setNewReqVerifyMethod:e=>{void 0!==h&&(h.verifyMethod=e)},setAccTitle:n.s,getAccTitle:n.g,setAccDescription:n.b,getAccDescription:n.a,addElement:e=>(void 0===y[e]&&(y[e]={name:e,type:d.type,docRef:d.docRef},n.l.info("Added new requirement: ",e)),d={},y[e]),getElements:()=>y,setNewElementType:e=>{void 0!==d&&(d.type=e)},setNewElementDocRef:e=>{void 0!==d&&(d.docRef=e)},addRelationship:(e,t,i)=>{o.push({type:e,src:t,dst:i})},getRelationships:()=>o,clear:()=>{o=[],h={},u={},d={},y={},(0,n.v)()}},_={CONTAINS:"contains",ARROW:"arrow"},g=_;let E={},R=0;const f=(e,t)=>e.insert("rect","#"+t).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",E.rect_min_width+"px").attr("height",E.rect_min_height+"px"),m=(e,t,i)=>{let n=E.rect_min_width/2,r=e.append("text").attr("class","req reqLabel reqTitle").attr("id",t).attr("x",n).attr("y",E.rect_padding).attr("dominant-baseline","hanging"),s=0;i.forEach((e=>{0==s?r.append("tspan").attr("text-anchor","middle").attr("x",E.rect_min_width/2).attr("dy",0).text(e):r.append("tspan").attr("text-anchor","middle").attr("x",E.rect_min_width/2).attr("dy",.75*E.line_height).text(e),s++}));let a=1.5*E.rect_padding+s*E.line_height*.75;return e.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",E.rect_min_width).attr("y1",a).attr("y2",a),{titleNode:r,y:a}},I=(e,t,i,n)=>{let r=e.append("text").attr("class","req reqLabel").attr("id",t).attr("x",E.rect_padding).attr("y",n).attr("dominant-baseline","hanging"),s=0,a=[];return i.forEach((e=>{let t=e.length;for(;t>30&&s<3;){let i=e.substring(0,30);t=(e=e.substring(30,e.length)).length,a[a.length]=i,s++}if(3==s){let e=a[a.length-1];a[a.length-1]=e.substring(0,e.length-4)+"..."}else a[a.length]=e;s=0})),a.forEach((e=>{r.append("tspan").attr("x",E.rect_padding).attr("dy",E.line_height).text(e)})),r},b=e=>e.replace(/\s/g,"").replace(/\./g,"_"),k={parser:l,db:p,renderer:{draw:(e,t,i,c)=>{E=(0,n.c)().requirement;const l=E.securityLevel;let o;"sandbox"===l&&(o=(0,r.Ys)("#i"+t));const h=("sandbox"===l?(0,r.Ys)(o.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select(`[id='${t}']`);((e,t)=>{let i=e.append("defs").append("marker").attr("id",_.CONTAINS+"_line_ending").attr("refX",0).attr("refY",t.line_height/2).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("g");i.append("circle").attr("cx",t.line_height/2).attr("cy",t.line_height/2).attr("r",t.line_height/2).attr("fill","none"),i.append("line").attr("x1",0).attr("x2",t.line_height).attr("y1",t.line_height/2).attr("y2",t.line_height/2).attr("stroke-width",1),i.append("line").attr("y1",0).attr("y2",t.line_height).attr("x1",t.line_height/2).attr("x2",t.line_height/2).attr("stroke-width",1),e.append("defs").append("marker").attr("id",_.ARROW+"_line_ending").attr("refX",t.line_height).attr("refY",.5*t.line_height).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("path").attr("d",`M0,0\n L${t.line_height},${t.line_height/2}\n M${t.line_height},${t.line_height/2}\n L0,${t.line_height}`).attr("stroke-width",1)})(h,E);const u=new a.k({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:E.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));let d=c.db.getRequirements(),y=c.db.getElements(),p=c.db.getRelationships();var k,S,T;k=d,S=u,T=h,Object.keys(k).forEach((e=>{let t=k[e];e=b(e),n.l.info("Added new requirement: ",e);const i=T.append("g").attr("id",e),r=f(i,"req-"+e);let s=m(i,e+"_title",[`<<${t.type}>>`,`${t.name}`]);I(i,e+"_body",[`Id: ${t.id}`,`Text: ${t.text}`,`Risk: ${t.risk}`,`Verification: ${t.verifyMethod}`],s.y);const a=r.node().getBBox();S.setNode(e,{width:a.width,height:a.height,shape:"rect",id:e})})),((e,t,i)=>{Object.keys(e).forEach((n=>{let r=e[n];const s=b(n),a=i.append("g").attr("id",s),c="element-"+s,l=f(a,c);let o=m(a,c+"_title",["<>",`${n}`]);I(a,c+"_body",[`Type: ${r.type||"Not Specified"}`,`Doc Ref: ${r.docRef||"None"}`],o.y);const h=l.node().getBBox();t.setNode(s,{width:h.width,height:h.height,shape:"rect",id:s})}))})(y,u,h),((e,t)=>{e.forEach((function(e){let i=b(e.src),n=b(e.dst);t.setEdge(i,n,{relationship:e})}))})(p,u),(0,s.bK)(u),function(e,t){t.nodes().forEach((function(i){void 0!==i&&void 0!==t.node(i)&&(e.select("#"+i),e.select("#"+i).attr("transform","translate("+(t.node(i).x-t.node(i).width/2)+","+(t.node(i).y-t.node(i).height/2)+" )"))}))}(h,u),p.forEach((function(e){!function(e,t,i,s,a){const c=i.edge(b(t.src),b(t.dst)),l=(0,r.jvg)().x((function(e){return e.x})).y((function(e){return e.y})),o=e.insert("path","#"+s).attr("class","er relationshipLine").attr("d",l(c.points)).attr("fill","none");t.type==a.db.Relationships.CONTAINS?o.attr("marker-start","url("+n.e.getUrl(E.arrowMarkerAbsolute)+"#"+t.type+"_line_ending)"):(o.attr("stroke-dasharray","10,7"),o.attr("marker-end","url("+n.e.getUrl(E.arrowMarkerAbsolute)+"#"+g.ARROW+"_line_ending)")),((e,t,i,n)=>{const r=t.node().getTotalLength(),s=t.node().getPointAtLength(.5*r),a="rel"+R;R++;const c=e.append("text").attr("class","req relationshipLabel").attr("id",a).attr("x",s.x).attr("y",s.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(n).node().getBBox();e.insert("rect","#"+a).attr("class","req reqLabelBox").attr("x",s.x-c.width/2).attr("y",s.y-c.height/2).attr("width",c.width).attr("height",c.height).attr("fill","white").attr("fill-opacity","85%")})(e,o,0,`<<${t.type}>>`)}(h,e,u,t,c)}));const N=E.rect_padding,v=h.node().getBBox(),x=v.width+2*N,A=v.height+2*N;(0,n.i)(h,A,x,E.useMaxWidth),h.attr("viewBox",`${v.x-N} ${v.y-N} ${x} ${A}`)}},styles:e=>`\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n\n`}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [19],
+ {
+ 4019: function (e, t, i) {
+ i.d(t, {
+ diagram: function () {
+ return k;
+ },
+ });
+ var n = i(9339),
+ r = i(7274),
+ s = i(3771),
+ a = i(5625),
+ c =
+ (i(7484),
+ i(7967),
+ i(7856),
+ (function () {
+ var e = function (e, t, i, n) {
+ for (i = i || {}, n = e.length; n--; i[e[n]] = t);
+ return i;
+ },
+ t = [1, 3],
+ i = [1, 5],
+ n = [1, 6],
+ r = [1, 7],
+ s = [1, 8],
+ a = [5, 6, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72],
+ c = [1, 22],
+ l = [2, 13],
+ o = [1, 26],
+ h = [1, 27],
+ u = [1, 28],
+ d = [1, 29],
+ y = [1, 30],
+ p = [1, 31],
+ _ = [1, 24],
+ g = [1, 32],
+ E = [1, 33],
+ R = [1, 36],
+ f = [71, 72],
+ m = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 60, 62, 71, 72],
+ I = [1, 56],
+ b = [1, 57],
+ k = [1, 58],
+ S = [1, 59],
+ T = [1, 60],
+ N = [1, 61],
+ v = [1, 62],
+ x = [62, 63],
+ A = [1, 74],
+ q = [1, 70],
+ $ = [1, 71],
+ O = [1, 72],
+ w = [1, 73],
+ C = [1, 75],
+ D = [1, 79],
+ L = [1, 80],
+ F = [1, 77],
+ M = [1, 78],
+ P = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72],
+ V = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ directive: 4,
+ NEWLINE: 5,
+ RD: 6,
+ diagram: 7,
+ EOF: 8,
+ openDirective: 9,
+ typeDirective: 10,
+ closeDirective: 11,
+ ":": 12,
+ argDirective: 13,
+ acc_title: 14,
+ acc_title_value: 15,
+ acc_descr: 16,
+ acc_descr_value: 17,
+ acc_descr_multiline_value: 18,
+ open_directive: 19,
+ type_directive: 20,
+ arg_directive: 21,
+ close_directive: 22,
+ requirementDef: 23,
+ elementDef: 24,
+ relationshipDef: 25,
+ requirementType: 26,
+ requirementName: 27,
+ STRUCT_START: 28,
+ requirementBody: 29,
+ ID: 30,
+ COLONSEP: 31,
+ id: 32,
+ TEXT: 33,
+ text: 34,
+ RISK: 35,
+ riskLevel: 36,
+ VERIFYMTHD: 37,
+ verifyType: 38,
+ STRUCT_STOP: 39,
+ REQUIREMENT: 40,
+ FUNCTIONAL_REQUIREMENT: 41,
+ INTERFACE_REQUIREMENT: 42,
+ PERFORMANCE_REQUIREMENT: 43,
+ PHYSICAL_REQUIREMENT: 44,
+ DESIGN_CONSTRAINT: 45,
+ LOW_RISK: 46,
+ MED_RISK: 47,
+ HIGH_RISK: 48,
+ VERIFY_ANALYSIS: 49,
+ VERIFY_DEMONSTRATION: 50,
+ VERIFY_INSPECTION: 51,
+ VERIFY_TEST: 52,
+ ELEMENT: 53,
+ elementName: 54,
+ elementBody: 55,
+ TYPE: 56,
+ type: 57,
+ DOCREF: 58,
+ ref: 59,
+ END_ARROW_L: 60,
+ relationship: 61,
+ LINE: 62,
+ END_ARROW_R: 63,
+ CONTAINS: 64,
+ COPIES: 65,
+ DERIVES: 66,
+ SATISFIES: 67,
+ VERIFIES: 68,
+ REFINES: 69,
+ TRACES: 70,
+ unqString: 71,
+ qString: 72,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 5: "NEWLINE",
+ 6: "RD",
+ 8: "EOF",
+ 12: ":",
+ 14: "acc_title",
+ 15: "acc_title_value",
+ 16: "acc_descr",
+ 17: "acc_descr_value",
+ 18: "acc_descr_multiline_value",
+ 19: "open_directive",
+ 20: "type_directive",
+ 21: "arg_directive",
+ 22: "close_directive",
+ 28: "STRUCT_START",
+ 30: "ID",
+ 31: "COLONSEP",
+ 33: "TEXT",
+ 35: "RISK",
+ 37: "VERIFYMTHD",
+ 39: "STRUCT_STOP",
+ 40: "REQUIREMENT",
+ 41: "FUNCTIONAL_REQUIREMENT",
+ 42: "INTERFACE_REQUIREMENT",
+ 43: "PERFORMANCE_REQUIREMENT",
+ 44: "PHYSICAL_REQUIREMENT",
+ 45: "DESIGN_CONSTRAINT",
+ 46: "LOW_RISK",
+ 47: "MED_RISK",
+ 48: "HIGH_RISK",
+ 49: "VERIFY_ANALYSIS",
+ 50: "VERIFY_DEMONSTRATION",
+ 51: "VERIFY_INSPECTION",
+ 52: "VERIFY_TEST",
+ 53: "ELEMENT",
+ 56: "TYPE",
+ 58: "DOCREF",
+ 60: "END_ARROW_L",
+ 62: "LINE",
+ 63: "END_ARROW_R",
+ 64: "CONTAINS",
+ 65: "COPIES",
+ 66: "DERIVES",
+ 67: "SATISFIES",
+ 68: "VERIFIES",
+ 69: "REFINES",
+ 70: "TRACES",
+ 71: "unqString",
+ 72: "qString",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [3, 4],
+ [4, 3],
+ [4, 5],
+ [4, 2],
+ [4, 2],
+ [4, 1],
+ [9, 1],
+ [10, 1],
+ [13, 1],
+ [11, 1],
+ [7, 0],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [7, 2],
+ [23, 5],
+ [29, 5],
+ [29, 5],
+ [29, 5],
+ [29, 5],
+ [29, 2],
+ [29, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [26, 1],
+ [36, 1],
+ [36, 1],
+ [36, 1],
+ [38, 1],
+ [38, 1],
+ [38, 1],
+ [38, 1],
+ [24, 5],
+ [55, 5],
+ [55, 5],
+ [55, 2],
+ [55, 1],
+ [25, 5],
+ [25, 5],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [61, 1],
+ [27, 1],
+ [27, 1],
+ [32, 1],
+ [32, 1],
+ [34, 1],
+ [34, 1],
+ [54, 1],
+ [54, 1],
+ [57, 1],
+ [57, 1],
+ [59, 1],
+ [59, 1],
+ ],
+ performAction: function (e, t, i, n, r, s, a) {
+ var c = s.length - 1;
+ switch (r) {
+ case 6:
+ (this.$ = s[c].trim()), n.setAccTitle(this.$);
+ break;
+ case 7:
+ case 8:
+ (this.$ = s[c].trim()), n.setAccDescription(this.$);
+ break;
+ case 9:
+ n.parseDirective("%%{", "open_directive");
+ break;
+ case 10:
+ n.parseDirective(s[c], "type_directive");
+ break;
+ case 11:
+ (s[c] = s[c].trim().replace(/'/g, '"')), n.parseDirective(s[c], "arg_directive");
+ break;
+ case 12:
+ n.parseDirective("}%%", "close_directive", "pie");
+ break;
+ case 13:
+ this.$ = [];
+ break;
+ case 19:
+ n.addRequirement(s[c - 3], s[c - 4]);
+ break;
+ case 20:
+ n.setNewReqId(s[c - 2]);
+ break;
+ case 21:
+ n.setNewReqText(s[c - 2]);
+ break;
+ case 22:
+ n.setNewReqRisk(s[c - 2]);
+ break;
+ case 23:
+ n.setNewReqVerifyMethod(s[c - 2]);
+ break;
+ case 26:
+ this.$ = n.RequirementType.REQUIREMENT;
+ break;
+ case 27:
+ this.$ = n.RequirementType.FUNCTIONAL_REQUIREMENT;
+ break;
+ case 28:
+ this.$ = n.RequirementType.INTERFACE_REQUIREMENT;
+ break;
+ case 29:
+ this.$ = n.RequirementType.PERFORMANCE_REQUIREMENT;
+ break;
+ case 30:
+ this.$ = n.RequirementType.PHYSICAL_REQUIREMENT;
+ break;
+ case 31:
+ this.$ = n.RequirementType.DESIGN_CONSTRAINT;
+ break;
+ case 32:
+ this.$ = n.RiskLevel.LOW_RISK;
+ break;
+ case 33:
+ this.$ = n.RiskLevel.MED_RISK;
+ break;
+ case 34:
+ this.$ = n.RiskLevel.HIGH_RISK;
+ break;
+ case 35:
+ this.$ = n.VerifyType.VERIFY_ANALYSIS;
+ break;
+ case 36:
+ this.$ = n.VerifyType.VERIFY_DEMONSTRATION;
+ break;
+ case 37:
+ this.$ = n.VerifyType.VERIFY_INSPECTION;
+ break;
+ case 38:
+ this.$ = n.VerifyType.VERIFY_TEST;
+ break;
+ case 39:
+ n.addElement(s[c - 3]);
+ break;
+ case 40:
+ n.setNewElementType(s[c - 2]);
+ break;
+ case 41:
+ n.setNewElementDocRef(s[c - 2]);
+ break;
+ case 44:
+ n.addRelationship(s[c - 2], s[c], s[c - 4]);
+ break;
+ case 45:
+ n.addRelationship(s[c - 2], s[c - 4], s[c]);
+ break;
+ case 46:
+ this.$ = n.Relationships.CONTAINS;
+ break;
+ case 47:
+ this.$ = n.Relationships.COPIES;
+ break;
+ case 48:
+ this.$ = n.Relationships.DERIVES;
+ break;
+ case 49:
+ this.$ = n.Relationships.SATISFIES;
+ break;
+ case 50:
+ this.$ = n.Relationships.VERIFIES;
+ break;
+ case 51:
+ this.$ = n.Relationships.REFINES;
+ break;
+ case 52:
+ this.$ = n.Relationships.TRACES;
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 1: [3] },
+ { 3: 10, 4: 2, 5: [1, 9], 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 5: [1, 11] },
+ { 10: 12, 20: [1, 13] },
+ { 15: [1, 14] },
+ { 17: [1, 15] },
+ e(a, [2, 8]),
+ { 20: [2, 9] },
+ { 3: 16, 4: 2, 6: t, 9: 4, 14: i, 16: n, 18: r, 19: s },
+ { 1: [2, 2] },
+ {
+ 4: 21,
+ 5: c,
+ 7: 17,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ { 11: 34, 12: [1, 35], 22: R },
+ e([12, 22], [2, 10]),
+ e(a, [2, 6]),
+ e(a, [2, 7]),
+ { 1: [2, 1] },
+ { 8: [1, 37] },
+ {
+ 4: 21,
+ 5: c,
+ 7: 38,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 39,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 40,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 41,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ {
+ 4: 21,
+ 5: c,
+ 7: 42,
+ 8: l,
+ 9: 4,
+ 14: i,
+ 16: n,
+ 18: r,
+ 19: s,
+ 23: 18,
+ 24: 19,
+ 25: 20,
+ 26: 23,
+ 32: 25,
+ 40: o,
+ 41: h,
+ 42: u,
+ 43: d,
+ 44: y,
+ 45: p,
+ 53: _,
+ 71: g,
+ 72: E,
+ },
+ { 27: 43, 71: [1, 44], 72: [1, 45] },
+ { 54: 46, 71: [1, 47], 72: [1, 48] },
+ { 60: [1, 49], 62: [1, 50] },
+ e(f, [2, 26]),
+ e(f, [2, 27]),
+ e(f, [2, 28]),
+ e(f, [2, 29]),
+ e(f, [2, 30]),
+ e(f, [2, 31]),
+ e(m, [2, 55]),
+ e(m, [2, 56]),
+ e(a, [2, 4]),
+ { 13: 51, 21: [1, 52] },
+ e(a, [2, 12]),
+ { 1: [2, 3] },
+ { 8: [2, 14] },
+ { 8: [2, 15] },
+ { 8: [2, 16] },
+ { 8: [2, 17] },
+ { 8: [2, 18] },
+ { 28: [1, 53] },
+ { 28: [2, 53] },
+ { 28: [2, 54] },
+ { 28: [1, 54] },
+ { 28: [2, 59] },
+ { 28: [2, 60] },
+ { 61: 55, 64: I, 65: b, 66: k, 67: S, 68: T, 69: N, 70: v },
+ { 61: 63, 64: I, 65: b, 66: k, 67: S, 68: T, 69: N, 70: v },
+ { 11: 64, 22: R },
+ { 22: [2, 11] },
+ { 5: [1, 65] },
+ { 5: [1, 66] },
+ { 62: [1, 67] },
+ e(x, [2, 46]),
+ e(x, [2, 47]),
+ e(x, [2, 48]),
+ e(x, [2, 49]),
+ e(x, [2, 50]),
+ e(x, [2, 51]),
+ e(x, [2, 52]),
+ { 63: [1, 68] },
+ e(a, [2, 5]),
+ { 5: A, 29: 69, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: D, 39: L, 55: 76, 56: F, 58: M },
+ { 32: 81, 71: g, 72: E },
+ { 32: 82, 71: g, 72: E },
+ e(P, [2, 19]),
+ { 31: [1, 83] },
+ { 31: [1, 84] },
+ { 31: [1, 85] },
+ { 31: [1, 86] },
+ { 5: A, 29: 87, 30: q, 33: $, 35: O, 37: w, 39: C },
+ e(P, [2, 25]),
+ e(P, [2, 39]),
+ { 31: [1, 88] },
+ { 31: [1, 89] },
+ { 5: D, 39: L, 55: 90, 56: F, 58: M },
+ e(P, [2, 43]),
+ e(P, [2, 44]),
+ e(P, [2, 45]),
+ { 32: 91, 71: g, 72: E },
+ { 34: 92, 71: [1, 93], 72: [1, 94] },
+ { 36: 95, 46: [1, 96], 47: [1, 97], 48: [1, 98] },
+ { 38: 99, 49: [1, 100], 50: [1, 101], 51: [1, 102], 52: [1, 103] },
+ e(P, [2, 24]),
+ { 57: 104, 71: [1, 105], 72: [1, 106] },
+ { 59: 107, 71: [1, 108], 72: [1, 109] },
+ e(P, [2, 42]),
+ { 5: [1, 110] },
+ { 5: [1, 111] },
+ { 5: [2, 57] },
+ { 5: [2, 58] },
+ { 5: [1, 112] },
+ { 5: [2, 32] },
+ { 5: [2, 33] },
+ { 5: [2, 34] },
+ { 5: [1, 113] },
+ { 5: [2, 35] },
+ { 5: [2, 36] },
+ { 5: [2, 37] },
+ { 5: [2, 38] },
+ { 5: [1, 114] },
+ { 5: [2, 61] },
+ { 5: [2, 62] },
+ { 5: [1, 115] },
+ { 5: [2, 63] },
+ { 5: [2, 64] },
+ { 5: A, 29: 116, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 117, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 118, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: A, 29: 119, 30: q, 33: $, 35: O, 37: w, 39: C },
+ { 5: D, 39: L, 55: 120, 56: F, 58: M },
+ { 5: D, 39: L, 55: 121, 56: F, 58: M },
+ e(P, [2, 20]),
+ e(P, [2, 21]),
+ e(P, [2, 22]),
+ e(P, [2, 23]),
+ e(P, [2, 40]),
+ e(P, [2, 41]),
+ ],
+ defaultActions: {
+ 8: [2, 9],
+ 10: [2, 2],
+ 16: [2, 1],
+ 37: [2, 3],
+ 38: [2, 14],
+ 39: [2, 15],
+ 40: [2, 16],
+ 41: [2, 17],
+ 42: [2, 18],
+ 44: [2, 53],
+ 45: [2, 54],
+ 47: [2, 59],
+ 48: [2, 60],
+ 52: [2, 11],
+ 93: [2, 57],
+ 94: [2, 58],
+ 96: [2, 32],
+ 97: [2, 33],
+ 98: [2, 34],
+ 100: [2, 35],
+ 101: [2, 36],
+ 102: [2, 37],
+ 103: [2, 38],
+ 105: [2, 61],
+ 106: [2, 62],
+ 108: [2, 63],
+ 109: [2, 64],
+ },
+ parseError: function (e, t) {
+ if (!t.recoverable) {
+ var i = new Error(e);
+ throw ((i.hash = t), i);
+ }
+ this.trace(e);
+ },
+ parse: function (e) {
+ var t = [0],
+ i = [],
+ n = [null],
+ r = [],
+ s = this.table,
+ a = "",
+ c = 0,
+ l = 0,
+ o = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var d in this.yy) Object.prototype.hasOwnProperty.call(this.yy, d) && (u.yy[d] = this.yy[d]);
+ h.setInput(e, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var y = h.yylloc;
+ r.push(y);
+ var p = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var _, g, E, R, f, m, I, b, k, S = {}; ; ) {
+ if (
+ ((g = t[t.length - 1]),
+ this.defaultActions[g]
+ ? (E = this.defaultActions[g])
+ : (null == _ &&
+ ((k = void 0),
+ "number" != typeof (k = i.pop() || h.lex() || 1) &&
+ (k instanceof Array && (k = (i = k).pop()), (k = this.symbols_[k] || k)),
+ (_ = k)),
+ (E = s[g] && s[g][_])),
+ void 0 === E || !E.length || !E[0])
+ ) {
+ var T;
+ for (f in ((b = []), s[g])) this.terminals_[f] && f > 2 && b.push("'" + this.terminals_[f] + "'");
+ (T = h.showPosition
+ ? "Parse error on line " +
+ (c + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[_] || _) +
+ "'"
+ : "Parse error on line " + (c + 1) + ": Unexpected " + (1 == _ ? "end of input" : "'" + (this.terminals_[_] || _) + "'")),
+ this.parseError(T, {
+ text: h.match,
+ token: this.terminals_[_] || _,
+ line: h.yylineno,
+ loc: y,
+ expected: b,
+ });
+ }
+ if (E[0] instanceof Array && E.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + _);
+ switch (E[0]) {
+ case 1:
+ t.push(_),
+ n.push(h.yytext),
+ r.push(h.yylloc),
+ t.push(E[1]),
+ (_ = null),
+ (l = h.yyleng),
+ (a = h.yytext),
+ (c = h.yylineno),
+ (y = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[E[1]][1]),
+ (S.$ = n[n.length - m]),
+ (S._$ = {
+ first_line: r[r.length - (m || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (m || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ p && (S._$.range = [r[r.length - (m || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (R = this.performAction.apply(S, [a, l, c, u.yy, E[1], n, r].concat(o))))
+ )
+ return R;
+ m && ((t = t.slice(0, -1 * m * 2)), (n = n.slice(0, -1 * m)), (r = r.slice(0, -1 * m))),
+ t.push(this.productions_[E[1]][0]),
+ n.push(S.$),
+ r.push(S._$),
+ (I = s[t[t.length - 2]][t[t.length - 1]]),
+ t.push(I);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ Y = {
+ EOF: 1,
+ parseError: function (e, t) {
+ if (!this.yy.parser) throw new Error(e);
+ this.yy.parser.parseError(e, t);
+ },
+ setInput: function (e, t) {
+ return (
+ (this.yy = t || this.yy || {}),
+ (this._input = e),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var e = this._input[0];
+ return (
+ (this.yytext += e),
+ this.yyleng++,
+ this.offset++,
+ (this.match += e),
+ (this.matched += e),
+ e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ e
+ );
+ },
+ unput: function (e) {
+ var t = e.length,
+ i = e.split(/(?:\r\n?|\n)/g);
+ (this._input = e + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - t)), (this.offset -= t);
+ var n = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === n.length ? this.yylloc.first_column : 0) + n[n.length - i.length].length - i[0].length
+ : this.yylloc.first_column - t,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - t]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (e) {
+ this.unput(this.match.slice(e));
+ },
+ pastInput: function () {
+ var e = this.matched.substr(0, this.matched.length - this.match.length);
+ return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var e = this.match;
+ return (
+ e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var e = this.pastInput(),
+ t = new Array(e.length + 1).join("-");
+ return e + this.upcomingInput() + "\n" + t + "^";
+ },
+ test_match: function (e, t) {
+ var i, n, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (n = e[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += n.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length,
+ }),
+ (this.yytext += e[0]),
+ (this.match += e[0]),
+ (this.matches = e),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(e[0].length)),
+ (this.matched += e[0]),
+ (i = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var e, t, i, n;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((i = this._input.match(this.rules[r[s]])) && (!t || i[0].length > t[0].length)) {
+ if (((t = i), (n = s), this.options.backtrack_lexer)) {
+ if (!1 !== (e = this.test_match(i, r[s]))) return e;
+ if (this._backtrack) {
+ t = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return t
+ ? !1 !== (e = this.test_match(t, r[n])) && e
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (e) {
+ this.conditionStack.push(e);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (e) {
+ return (e = this.conditionStack.length - 1 - Math.abs(e || 0)) >= 0 ? this.conditionStack[e] : "INITIAL";
+ },
+ pushState: function (e) {
+ this.begin(e);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (e, t, i, n) {
+ switch (i) {
+ case 0:
+ return this.begin("open_directive"), 19;
+ case 1:
+ return this.begin("type_directive"), 20;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 12;
+ case 3:
+ return this.popState(), this.popState(), 22;
+ case 4:
+ return 21;
+ case 5:
+ return "title";
+ case 6:
+ return this.begin("acc_title"), 14;
+ case 7:
+ return this.popState(), "acc_title_value";
+ case 8:
+ return this.begin("acc_descr"), 16;
+ case 9:
+ return this.popState(), "acc_descr_value";
+ case 10:
+ this.begin("acc_descr_multiline");
+ break;
+ case 11:
+ case 53:
+ this.popState();
+ break;
+ case 12:
+ return "acc_descr_multiline_value";
+ case 13:
+ return 5;
+ case 14:
+ case 15:
+ case 16:
+ break;
+ case 17:
+ return 8;
+ case 18:
+ return 6;
+ case 19:
+ return 28;
+ case 20:
+ return 39;
+ case 21:
+ return 31;
+ case 22:
+ return 30;
+ case 23:
+ return 33;
+ case 24:
+ return 35;
+ case 25:
+ return 37;
+ case 26:
+ return 40;
+ case 27:
+ return 41;
+ case 28:
+ return 42;
+ case 29:
+ return 43;
+ case 30:
+ return 44;
+ case 31:
+ return 45;
+ case 32:
+ return 46;
+ case 33:
+ return 47;
+ case 34:
+ return 48;
+ case 35:
+ return 49;
+ case 36:
+ return 50;
+ case 37:
+ return 51;
+ case 38:
+ return 52;
+ case 39:
+ return 53;
+ case 40:
+ return 64;
+ case 41:
+ return 65;
+ case 42:
+ return 66;
+ case 43:
+ return 67;
+ case 44:
+ return 68;
+ case 45:
+ return 69;
+ case 46:
+ return 70;
+ case 47:
+ return 56;
+ case 48:
+ return 58;
+ case 49:
+ return 60;
+ case 50:
+ return 63;
+ case 51:
+ return 62;
+ case 52:
+ this.begin("string");
+ break;
+ case 54:
+ return "qString";
+ case 55:
+ return (t.yytext = t.yytext.trim()), 71;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:(\r?\n)+)/i,
+ /^(?:\s+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%[^\n]*)/i,
+ /^(?:$)/i,
+ /^(?:requirementDiagram\b)/i,
+ /^(?:\{)/i,
+ /^(?:\})/i,
+ /^(?::)/i,
+ /^(?:id\b)/i,
+ /^(?:text\b)/i,
+ /^(?:risk\b)/i,
+ /^(?:verifyMethod\b)/i,
+ /^(?:requirement\b)/i,
+ /^(?:functionalRequirement\b)/i,
+ /^(?:interfaceRequirement\b)/i,
+ /^(?:performanceRequirement\b)/i,
+ /^(?:physicalRequirement\b)/i,
+ /^(?:designConstraint\b)/i,
+ /^(?:low\b)/i,
+ /^(?:medium\b)/i,
+ /^(?:high\b)/i,
+ /^(?:analysis\b)/i,
+ /^(?:demonstration\b)/i,
+ /^(?:inspection\b)/i,
+ /^(?:test\b)/i,
+ /^(?:element\b)/i,
+ /^(?:contains\b)/i,
+ /^(?:copies\b)/i,
+ /^(?:derives\b)/i,
+ /^(?:satisfies\b)/i,
+ /^(?:verifies\b)/i,
+ /^(?:refines\b)/i,
+ /^(?:traces\b)/i,
+ /^(?:type\b)/i,
+ /^(?:docref\b)/i,
+ /^(?:<-)/i,
+ /^(?:->)/i,
+ /^(?:-)/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[\w][^\r\n\{\<\>\-\=]*)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [11, 12], inclusive: !1 },
+ acc_descr: { rules: [9], inclusive: !1 },
+ acc_title: { rules: [7], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ unqString: { rules: [], inclusive: !1 },
+ token: { rules: [], inclusive: !1 },
+ string: { rules: [53, 54], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function U() {
+ this.yy = {};
+ }
+ return (V.lexer = Y), (U.prototype = V), (V.Parser = U), new U();
+ })());
+ c.parser = c;
+ const l = c;
+ let o = [],
+ h = {},
+ u = {},
+ d = {},
+ y = {};
+ const p = {
+ RequirementType: {
+ REQUIREMENT: "Requirement",
+ FUNCTIONAL_REQUIREMENT: "Functional Requirement",
+ INTERFACE_REQUIREMENT: "Interface Requirement",
+ PERFORMANCE_REQUIREMENT: "Performance Requirement",
+ PHYSICAL_REQUIREMENT: "Physical Requirement",
+ DESIGN_CONSTRAINT: "Design Constraint",
+ },
+ RiskLevel: { LOW_RISK: "Low", MED_RISK: "Medium", HIGH_RISK: "High" },
+ VerifyType: {
+ VERIFY_ANALYSIS: "Analysis",
+ VERIFY_DEMONSTRATION: "Demonstration",
+ VERIFY_INSPECTION: "Inspection",
+ VERIFY_TEST: "Test",
+ },
+ Relationships: {
+ CONTAINS: "contains",
+ COPIES: "copies",
+ DERIVES: "derives",
+ SATISFIES: "satisfies",
+ VERIFIES: "verifies",
+ REFINES: "refines",
+ TRACES: "traces",
+ },
+ parseDirective: function (e, t, i) {
+ n.m.parseDirective(this, e, t, i);
+ },
+ getConfig: () => (0, n.c)().req,
+ addRequirement: (e, t) => (
+ void 0 === u[e] &&
+ (u[e] = {
+ name: e,
+ type: t,
+ id: h.id,
+ text: h.text,
+ risk: h.risk,
+ verifyMethod: h.verifyMethod,
+ }),
+ (h = {}),
+ u[e]
+ ),
+ getRequirements: () => u,
+ setNewReqId: (e) => {
+ void 0 !== h && (h.id = e);
+ },
+ setNewReqText: (e) => {
+ void 0 !== h && (h.text = e);
+ },
+ setNewReqRisk: (e) => {
+ void 0 !== h && (h.risk = e);
+ },
+ setNewReqVerifyMethod: (e) => {
+ void 0 !== h && (h.verifyMethod = e);
+ },
+ setAccTitle: n.s,
+ getAccTitle: n.g,
+ setAccDescription: n.b,
+ getAccDescription: n.a,
+ addElement: (e) => (
+ void 0 === y[e] && ((y[e] = { name: e, type: d.type, docRef: d.docRef }), n.l.info("Added new requirement: ", e)), (d = {}), y[e]
+ ),
+ getElements: () => y,
+ setNewElementType: (e) => {
+ void 0 !== d && (d.type = e);
+ },
+ setNewElementDocRef: (e) => {
+ void 0 !== d && (d.docRef = e);
+ },
+ addRelationship: (e, t, i) => {
+ o.push({ type: e, src: t, dst: i });
+ },
+ getRelationships: () => o,
+ clear: () => {
+ (o = []), (h = {}), (u = {}), (d = {}), (y = {}), (0, n.v)();
+ },
+ },
+ _ = { CONTAINS: "contains", ARROW: "arrow" },
+ g = _;
+ let E = {},
+ R = 0;
+ const f = (e, t) =>
+ e
+ .insert("rect", "#" + t)
+ .attr("class", "req reqBox")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", E.rect_min_width + "px")
+ .attr("height", E.rect_min_height + "px"),
+ m = (e, t, i) => {
+ let n = E.rect_min_width / 2,
+ r = e
+ .append("text")
+ .attr("class", "req reqLabel reqTitle")
+ .attr("id", t)
+ .attr("x", n)
+ .attr("y", E.rect_padding)
+ .attr("dominant-baseline", "hanging"),
+ s = 0;
+ i.forEach((e) => {
+ 0 == s
+ ? r
+ .append("tspan")
+ .attr("text-anchor", "middle")
+ .attr("x", E.rect_min_width / 2)
+ .attr("dy", 0)
+ .text(e)
+ : r
+ .append("tspan")
+ .attr("text-anchor", "middle")
+ .attr("x", E.rect_min_width / 2)
+ .attr("dy", 0.75 * E.line_height)
+ .text(e),
+ s++;
+ });
+ let a = 1.5 * E.rect_padding + s * E.line_height * 0.75;
+ return (
+ e.append("line").attr("class", "req-title-line").attr("x1", "0").attr("x2", E.rect_min_width).attr("y1", a).attr("y2", a),
+ { titleNode: r, y: a }
+ );
+ },
+ I = (e, t, i, n) => {
+ let r = e
+ .append("text")
+ .attr("class", "req reqLabel")
+ .attr("id", t)
+ .attr("x", E.rect_padding)
+ .attr("y", n)
+ .attr("dominant-baseline", "hanging"),
+ s = 0,
+ a = [];
+ return (
+ i.forEach((e) => {
+ let t = e.length;
+ for (; t > 30 && s < 3; ) {
+ let i = e.substring(0, 30);
+ (t = (e = e.substring(30, e.length)).length), (a[a.length] = i), s++;
+ }
+ if (3 == s) {
+ let e = a[a.length - 1];
+ a[a.length - 1] = e.substring(0, e.length - 4) + "...";
+ } else a[a.length] = e;
+ s = 0;
+ }),
+ a.forEach((e) => {
+ r.append("tspan").attr("x", E.rect_padding).attr("dy", E.line_height).text(e);
+ }),
+ r
+ );
+ },
+ b = (e) => e.replace(/\s/g, "").replace(/\./g, "_"),
+ k = {
+ parser: l,
+ db: p,
+ renderer: {
+ draw: (e, t, i, c) => {
+ E = (0, n.c)().requirement;
+ const l = E.securityLevel;
+ let o;
+ "sandbox" === l && (o = (0, r.Ys)("#i" + t));
+ const h = ("sandbox" === l ? (0, r.Ys)(o.nodes()[0].contentDocument.body) : (0, r.Ys)("body")).select(`[id='${t}']`);
+ ((e, t) => {
+ let i = e
+ .append("defs")
+ .append("marker")
+ .attr("id", _.CONTAINS + "_line_ending")
+ .attr("refX", 0)
+ .attr("refY", t.line_height / 2)
+ .attr("markerWidth", t.line_height)
+ .attr("markerHeight", t.line_height)
+ .attr("orient", "auto")
+ .append("g");
+ i
+ .append("circle")
+ .attr("cx", t.line_height / 2)
+ .attr("cy", t.line_height / 2)
+ .attr("r", t.line_height / 2)
+ .attr("fill", "none"),
+ i
+ .append("line")
+ .attr("x1", 0)
+ .attr("x2", t.line_height)
+ .attr("y1", t.line_height / 2)
+ .attr("y2", t.line_height / 2)
+ .attr("stroke-width", 1),
+ i
+ .append("line")
+ .attr("y1", 0)
+ .attr("y2", t.line_height)
+ .attr("x1", t.line_height / 2)
+ .attr("x2", t.line_height / 2)
+ .attr("stroke-width", 1),
+ e
+ .append("defs")
+ .append("marker")
+ .attr("id", _.ARROW + "_line_ending")
+ .attr("refX", t.line_height)
+ .attr("refY", 0.5 * t.line_height)
+ .attr("markerWidth", t.line_height)
+ .attr("markerHeight", t.line_height)
+ .attr("orient", "auto")
+ .append("path")
+ .attr(
+ "d",
+ `M0,0\n L${t.line_height},${t.line_height / 2}\n M${t.line_height},${t.line_height / 2}\n L0,${t.line_height}`,
+ )
+ .attr("stroke-width", 1);
+ })(h, E);
+ const u = new a.k({ multigraph: !1, compound: !1, directed: !0 })
+ .setGraph({
+ rankdir: E.layoutDirection,
+ marginx: 20,
+ marginy: 20,
+ nodesep: 100,
+ edgesep: 100,
+ ranksep: 100,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ let d = c.db.getRequirements(),
+ y = c.db.getElements(),
+ p = c.db.getRelationships();
+ var k, S, T;
+ (k = d),
+ (S = u),
+ (T = h),
+ Object.keys(k).forEach((e) => {
+ let t = k[e];
+ (e = b(e)), n.l.info("Added new requirement: ", e);
+ const i = T.append("g").attr("id", e),
+ r = f(i, "req-" + e);
+ let s = m(i, e + "_title", [`<<${t.type}>>`, `${t.name}`]);
+ I(i, e + "_body", [`Id: ${t.id}`, `Text: ${t.text}`, `Risk: ${t.risk}`, `Verification: ${t.verifyMethod}`], s.y);
+ const a = r.node().getBBox();
+ S.setNode(e, { width: a.width, height: a.height, shape: "rect", id: e });
+ }),
+ ((e, t, i) => {
+ Object.keys(e).forEach((n) => {
+ let r = e[n];
+ const s = b(n),
+ a = i.append("g").attr("id", s),
+ c = "element-" + s,
+ l = f(a, c);
+ let o = m(a, c + "_title", ["<>", `${n}`]);
+ I(a, c + "_body", [`Type: ${r.type || "Not Specified"}`, `Doc Ref: ${r.docRef || "None"}`], o.y);
+ const h = l.node().getBBox();
+ t.setNode(s, { width: h.width, height: h.height, shape: "rect", id: s });
+ });
+ })(y, u, h),
+ ((e, t) => {
+ e.forEach(function (e) {
+ let i = b(e.src),
+ n = b(e.dst);
+ t.setEdge(i, n, { relationship: e });
+ });
+ })(p, u),
+ (0, s.bK)(u),
+ (function (e, t) {
+ t.nodes().forEach(function (i) {
+ void 0 !== i &&
+ void 0 !== t.node(i) &&
+ (e.select("#" + i),
+ e
+ .select("#" + i)
+ .attr("transform", "translate(" + (t.node(i).x - t.node(i).width / 2) + "," + (t.node(i).y - t.node(i).height / 2) + " )"));
+ });
+ })(h, u),
+ p.forEach(function (e) {
+ !(function (e, t, i, s, a) {
+ const c = i.edge(b(t.src), b(t.dst)),
+ l = (0, r.jvg)()
+ .x(function (e) {
+ return e.x;
+ })
+ .y(function (e) {
+ return e.y;
+ }),
+ o = e
+ .insert("path", "#" + s)
+ .attr("class", "er relationshipLine")
+ .attr("d", l(c.points))
+ .attr("fill", "none");
+ t.type == a.db.Relationships.CONTAINS
+ ? o.attr("marker-start", "url(" + n.e.getUrl(E.arrowMarkerAbsolute) + "#" + t.type + "_line_ending)")
+ : (o.attr("stroke-dasharray", "10,7"),
+ o.attr("marker-end", "url(" + n.e.getUrl(E.arrowMarkerAbsolute) + "#" + g.ARROW + "_line_ending)")),
+ ((e, t, i, n) => {
+ const r = t.node().getTotalLength(),
+ s = t.node().getPointAtLength(0.5 * r),
+ a = "rel" + R;
+ R++;
+ const c = e
+ .append("text")
+ .attr("class", "req relationshipLabel")
+ .attr("id", a)
+ .attr("x", s.x)
+ .attr("y", s.y)
+ .attr("text-anchor", "middle")
+ .attr("dominant-baseline", "middle")
+ .text(n)
+ .node()
+ .getBBox();
+ e.insert("rect", "#" + a)
+ .attr("class", "req reqLabelBox")
+ .attr("x", s.x - c.width / 2)
+ .attr("y", s.y - c.height / 2)
+ .attr("width", c.width)
+ .attr("height", c.height)
+ .attr("fill", "white")
+ .attr("fill-opacity", "85%");
+ })(e, o, 0, `<<${t.type}>>`);
+ })(h, e, u, t, c);
+ });
+ const N = E.rect_padding,
+ v = h.node().getBBox(),
+ x = v.width + 2 * N,
+ A = v.height + 2 * N;
+ (0, n.i)(h, A, x, E.useMaxWidth), h.attr("viewBox", `${v.x - N} ${v.y - N} ${x} ${A}`);
+ },
+ },
+ styles: (e) =>
+ `\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n\n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js
index 66b7d4746..a623bb503 100644
--- a/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js
@@ -1 +1,3736 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[361],{5510:function(t,e,a){a.d(e,{diagram:function(){return mt}});var i=a(9339),r=a(7274),s=a(8252),n=a(7967),o=(a(7484),a(7856),function(){var t=function(t,e,a,i){for(a=a||{},i=t.length;i--;a[t[i]]=e);return a},e=[1,2],a=[1,3],i=[1,5],r=[1,7],s=[2,5],n=[1,15],o=[1,17],c=[1,19],l=[1,20],h=[1,22],d=[1,23],p=[1,24],g=[1,30],u=[1,31],x=[1,32],y=[1,33],m=[1,34],f=[1,35],b=[1,36],T=[1,37],E=[1,38],w=[1,39],_=[1,40],v=[1,41],P=[1,42],k=[1,44],L=[1,45],I=[1,46],M=[1,48],N=[1,49],A=[1,50],S=[1,51],O=[1,52],D=[1,53],R=[1,56],Y=[1,4,5,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,53,54,55,56,58,59,60,65,66,67,68,76,86],$=[4,5,22,56,58,59],C=[4,5,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,56,58,59,60,65,66,67,68,76,86],V=[4,5,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,55,56,58,59,60,65,66,67,68,76,86],B=[4,5,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,54,56,58,59,60,65,66,67,68,76,86],F=[4,5,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,53,56,58,59,60,65,66,67,68,76,86],W=[74,75,76],q=[1,133],z=[1,4,5,7,19,20,22,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,53,54,55,56,58,59,60,65,66,67,68,76,86],H={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,create:19,box:20,restOfLine:21,end:22,signal:23,autonumber:24,NUM:25,off:26,activate:27,actor:28,deactivate:29,note_statement:30,links_statement:31,link_statement:32,properties_statement:33,details_statement:34,title:35,legacy_title:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,loop:42,rect:43,opt:44,alt:45,else_sections:46,par:47,par_sections:48,par_over:49,critical:50,option_sections:51,break:52,option:53,and:54,else:55,participant:56,AS:57,participant_actor:58,destroy:59,note:60,placement:61,text2:62,over:63,actor_pair:64,links:65,link:66,properties:67,details:68,spaceList:69,",":70,left_of:71,right_of:72,signaltype:73,"+":74,"-":75,ACTOR:76,SOLID_OPEN_ARROW:77,DOTTED_OPEN_ARROW:78,SOLID_ARROW:79,DOTTED_ARROW:80,SOLID_CROSS:81,DOTTED_CROSS:82,SOLID_POINT:83,DOTTED_POINT:84,TXT:85,open_directive:86,type_directive:87,arg_directive:88,close_directive:89,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"create",20:"box",21:"restOfLine",22:"end",24:"autonumber",25:"NUM",26:"off",27:"activate",29:"deactivate",35:"title",36:"legacy_title",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"loop",43:"rect",44:"opt",45:"alt",47:"par",49:"par_over",50:"critical",52:"break",53:"option",54:"and",55:"else",56:"participant",57:"AS",58:"participant_actor",59:"destroy",60:"note",63:"over",65:"links",66:"link",67:"properties",68:"details",70:",",71:"left_of",72:"right_of",74:"+",75:"-",76:"ACTOR",77:"SOLID_OPEN_ARROW",78:"DOTTED_OPEN_ARROW",79:"SOLID_ARROW",80:"DOTTED_ARROW",81:"SOLID_CROSS",82:"DOTTED_CROSS",83:"SOLID_POINT",84:"DOTTED_POINT",85:"TXT",86:"open_directive",87:"type_directive",88:"arg_directive",89:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,2],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[51,1],[51,4],[48,1],[48,4],[46,1],[46,4],[13,5],[13,3],[13,5],[13,3],[13,3],[30,4],[30,4],[31,3],[32,3],[33,3],[34,3],[69,2],[69,1],[64,3],[64,1],[61,1],[61,1],[23,5],[23,5],[23,4],[28,1],[73,1],[73,1],[73,1],[73,1],[73,1],[73,1],[73,1],[73,1],[62,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,a,i,r,s,n){var o=s.length-1;switch(r){case 4:return i.apply(s[o]),s[o];case 5:case 10:case 9:case 14:this.$=[];break;case 6:case 11:s[o-1].push(s[o]),this.$=s[o-1];break;case 7:case 8:case 12:case 13:case 66:this.$=s[o];break;case 18:s[o].type="createParticipant",this.$=s[o];break;case 19:s[o-1].unshift({type:"boxStart",boxData:i.parseBoxData(s[o-2])}),s[o-1].push({type:"boxEnd",boxText:s[o-2]}),this.$=s[o-1];break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(s[o-2]),sequenceIndexStep:Number(s[o-1]),sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceIndex:Number(s[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:i.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 25:this.$={type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:s[o-1]};break;case 26:this.$={type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:s[o-1]};break;case 32:i.setDiagramTitle(s[o].substring(6)),this.$=s[o].substring(6);break;case 33:i.setDiagramTitle(s[o].substring(7)),this.$=s[o].substring(7);break;case 34:this.$=s[o].trim(),i.setAccTitle(this.$);break;case 35:case 36:this.$=s[o].trim(),i.setAccDescription(this.$);break;case 37:s[o-1].unshift({type:"loopStart",loopText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.LOOP_START}),s[o-1].push({type:"loopEnd",loopText:s[o-2],signalType:i.LINETYPE.LOOP_END}),this.$=s[o-1];break;case 38:s[o-1].unshift({type:"rectStart",color:i.parseMessage(s[o-2]),signalType:i.LINETYPE.RECT_START}),s[o-1].push({type:"rectEnd",color:i.parseMessage(s[o-2]),signalType:i.LINETYPE.RECT_END}),this.$=s[o-1];break;case 39:s[o-1].unshift({type:"optStart",optText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.OPT_START}),s[o-1].push({type:"optEnd",optText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.OPT_END}),this.$=s[o-1];break;case 40:s[o-1].unshift({type:"altStart",altText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.ALT_START}),s[o-1].push({type:"altEnd",signalType:i.LINETYPE.ALT_END}),this.$=s[o-1];break;case 41:s[o-1].unshift({type:"parStart",parText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.PAR_START}),s[o-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=s[o-1];break;case 42:s[o-1].unshift({type:"parStart",parText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.PAR_OVER_START}),s[o-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=s[o-1];break;case 43:s[o-1].unshift({type:"criticalStart",criticalText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.CRITICAL_START}),s[o-1].push({type:"criticalEnd",signalType:i.LINETYPE.CRITICAL_END}),this.$=s[o-1];break;case 44:s[o-1].unshift({type:"breakStart",breakText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.BREAK_START}),s[o-1].push({type:"breakEnd",optText:i.parseMessage(s[o-2]),signalType:i.LINETYPE.BREAK_END}),this.$=s[o-1];break;case 47:this.$=s[o-3].concat([{type:"option",optionText:i.parseMessage(s[o-1]),signalType:i.LINETYPE.CRITICAL_OPTION},s[o]]);break;case 49:this.$=s[o-3].concat([{type:"and",parText:i.parseMessage(s[o-1]),signalType:i.LINETYPE.PAR_AND},s[o]]);break;case 51:this.$=s[o-3].concat([{type:"else",altText:i.parseMessage(s[o-1]),signalType:i.LINETYPE.ALT_ELSE},s[o]]);break;case 52:s[o-3].draw="participant",s[o-3].type="addParticipant",s[o-3].description=i.parseMessage(s[o-1]),this.$=s[o-3];break;case 53:s[o-1].draw="participant",s[o-1].type="addParticipant",this.$=s[o-1];break;case 54:s[o-3].draw="actor",s[o-3].type="addParticipant",s[o-3].description=i.parseMessage(s[o-1]),this.$=s[o-3];break;case 55:s[o-1].draw="actor",s[o-1].type="addParticipant",this.$=s[o-1];break;case 56:s[o-1].type="destroyParticipant",this.$=s[o-1];break;case 57:this.$=[s[o-1],{type:"addNote",placement:s[o-2],actor:s[o-1].actor,text:s[o]}];break;case 58:s[o-2]=[].concat(s[o-1],s[o-1]).slice(0,2),s[o-2][0]=s[o-2][0].actor,s[o-2][1]=s[o-2][1].actor,this.$=[s[o-1],{type:"addNote",placement:i.PLACEMENT.OVER,actor:s[o-2].slice(0,2),text:s[o]}];break;case 59:this.$=[s[o-1],{type:"addLinks",actor:s[o-1].actor,text:s[o]}];break;case 60:this.$=[s[o-1],{type:"addALink",actor:s[o-1].actor,text:s[o]}];break;case 61:this.$=[s[o-1],{type:"addProperties",actor:s[o-1].actor,text:s[o]}];break;case 62:this.$=[s[o-1],{type:"addDetails",actor:s[o-1].actor,text:s[o]}];break;case 65:this.$=[s[o-2],s[o]];break;case 67:this.$=i.PLACEMENT.LEFTOF;break;case 68:this.$=i.PLACEMENT.RIGHTOF;break;case 69:this.$=[s[o-4],s[o-1],{type:"addMessage",from:s[o-4].actor,to:s[o-1].actor,signalType:s[o-3],msg:s[o]},{type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:s[o-1]}];break;case 70:this.$=[s[o-4],s[o-1],{type:"addMessage",from:s[o-4].actor,to:s[o-1].actor,signalType:s[o-3],msg:s[o]},{type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:s[o-4]}];break;case 71:this.$=[s[o-3],s[o-1],{type:"addMessage",from:s[o-3].actor,to:s[o-1].actor,signalType:s[o-2],msg:s[o]}];break;case 72:this.$={type:"addParticipant",actor:s[o]};break;case 73:this.$=i.LINETYPE.SOLID_OPEN;break;case 74:this.$=i.LINETYPE.DOTTED_OPEN;break;case 75:this.$=i.LINETYPE.SOLID;break;case 76:this.$=i.LINETYPE.DOTTED;break;case 77:this.$=i.LINETYPE.SOLID_CROSS;break;case 78:this.$=i.LINETYPE.DOTTED_CROSS;break;case 79:this.$=i.LINETYPE.SOLID_POINT;break;case 80:this.$=i.LINETYPE.DOTTED_POINT;break;case 81:this.$=i.parseMessage(s[o].trim().substring(1));break;case 82:i.parseDirective("%%{","open_directive");break;case 83:i.parseDirective(s[o],"type_directive");break;case 84:s[o]=s[o].trim().replace(/'/g,'"'),i.parseDirective(s[o],"arg_directive");break;case 85:i.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:a,6:4,7:i,14:6,86:r},{1:[3]},{3:8,4:e,5:a,6:4,7:i,14:6,86:r},{3:9,4:e,5:a,6:4,7:i,14:6,86:r},{3:10,4:e,5:a,6:4,7:i,14:6,86:r},t([1,4,5,19,20,24,27,29,35,36,37,39,41,42,43,44,45,47,49,50,52,56,58,59,60,65,66,67,68,76,86],s,{8:11}),{15:12,87:[1,13]},{87:[2,82]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{16:54,17:[1,55],89:R},t([17,89],[2,83]),t(Y,[2,6]),{6:43,10:57,13:18,14:6,19:c,20:l,23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},t(Y,[2,8]),t(Y,[2,9]),t(Y,[2,17]),{13:58,56:k,58:L,59:I},{21:[1,59]},{5:[1,60]},{5:[1,63],25:[1,61],26:[1,62]},{28:64,76:D},{28:65,76:D},{5:[1,66]},{5:[1,67]},{5:[1,68]},{5:[1,69]},{5:[1,70]},t(Y,[2,32]),t(Y,[2,33]),{38:[1,71]},{40:[1,72]},t(Y,[2,36]),{21:[1,73]},{21:[1,74]},{21:[1,75]},{21:[1,76]},{21:[1,77]},{21:[1,78]},{21:[1,79]},{21:[1,80]},t(Y,[2,45]),{28:81,76:D},{28:82,76:D},{28:83,76:D},{73:84,77:[1,85],78:[1,86],79:[1,87],80:[1,88],81:[1,89],82:[1,90],83:[1,91],84:[1,92]},{61:93,63:[1,94],71:[1,95],72:[1,96]},{28:97,76:D},{28:98,76:D},{28:99,76:D},{28:100,76:D},t([5,57,70,77,78,79,80,81,82,83,84,85],[2,72]),{5:[1,101]},{18:102,88:[1,103]},{5:[2,85]},t(Y,[2,7]),t(Y,[2,18]),t($,[2,10],{11:104}),t(Y,[2,20]),{5:[1,106],25:[1,105]},{5:[1,107]},t(Y,[2,24]),{5:[1,108]},{5:[1,109]},t(Y,[2,27]),t(Y,[2,28]),t(Y,[2,29]),t(Y,[2,30]),t(Y,[2,31]),t(Y,[2,34]),t(Y,[2,35]),t(C,s,{8:110}),t(C,s,{8:111}),t(C,s,{8:112}),t(V,s,{46:113,8:114}),t(B,s,{48:115,8:116}),t(B,s,{8:116,48:117}),t(F,s,{51:118,8:119}),t(C,s,{8:120}),{5:[1,122],57:[1,121]},{5:[1,124],57:[1,123]},{5:[1,125]},{28:128,74:[1,126],75:[1,127],76:D},t(W,[2,73]),t(W,[2,74]),t(W,[2,75]),t(W,[2,76]),t(W,[2,77]),t(W,[2,78]),t(W,[2,79]),t(W,[2,80]),{28:129,76:D},{28:131,64:130,76:D},{76:[2,67]},{76:[2,68]},{62:132,85:q},{62:134,85:q},{62:135,85:q},{62:136,85:q},t(z,[2,15]),{16:137,89:R},{89:[2,84]},{4:[1,140],5:[1,142],12:139,13:141,22:[1,138],56:k,58:L,59:I},{5:[1,143]},t(Y,[2,22]),t(Y,[2,23]),t(Y,[2,25]),t(Y,[2,26]),{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[1,144],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[1,145],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[1,146],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{22:[1,147]},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[2,50],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,55:[1,148],56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{22:[1,149]},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[2,48],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,54:[1,150],56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{22:[1,151]},{22:[1,152]},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[2,46],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,53:[1,153],56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{4:n,5:o,6:43,9:14,10:16,13:18,14:6,19:c,20:l,22:[1,154],23:21,24:h,27:d,28:47,29:p,30:25,31:26,32:27,33:28,34:29,35:g,36:u,37:x,39:y,41:m,42:f,43:b,44:T,45:E,47:w,49:_,50:v,52:P,56:k,58:L,59:I,60:M,65:N,66:A,67:S,68:O,76:D,86:r},{21:[1,155]},t(Y,[2,53]),{21:[1,156]},t(Y,[2,55]),t(Y,[2,56]),{28:157,76:D},{28:158,76:D},{62:159,85:q},{62:160,85:q},{62:161,85:q},{70:[1,162],85:[2,66]},{5:[2,59]},{5:[2,81]},{5:[2,60]},{5:[2,61]},{5:[2,62]},{5:[1,163]},t(Y,[2,19]),t($,[2,11]),{13:164,56:k,58:L,59:I},t($,[2,13]),t($,[2,14]),t(Y,[2,21]),t(Y,[2,37]),t(Y,[2,38]),t(Y,[2,39]),t(Y,[2,40]),{21:[1,165]},t(Y,[2,41]),{21:[1,166]},t(Y,[2,42]),t(Y,[2,43]),{21:[1,167]},t(Y,[2,44]),{5:[1,168]},{5:[1,169]},{62:170,85:q},{62:171,85:q},{5:[2,71]},{5:[2,57]},{5:[2,58]},{28:172,76:D},t(z,[2,16]),t($,[2,12]),t(V,s,{8:114,46:173}),t(B,s,{8:116,48:174}),t(F,s,{8:119,51:175}),t(Y,[2,52]),t(Y,[2,54]),{5:[2,69]},{5:[2,70]},{85:[2,65]},{22:[2,51]},{22:[2,49]},{22:[2,47]}],defaultActions:{7:[2,82],8:[2,1],9:[2,2],10:[2,3],56:[2,85],95:[2,67],96:[2,68],103:[2,84],132:[2,59],133:[2,81],134:[2,60],135:[2,61],136:[2,62],159:[2,71],160:[2,57],161:[2,58],170:[2,69],171:[2,70],172:[2,65],173:[2,51],174:[2,49],175:[2,47]},parseError:function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},parse:function(t){var e=[0],a=[],i=[null],r=[],s=this.table,n="",o=0,c=0,l=r.slice.call(arguments,1),h=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);h.setInput(t,d.yy),d.yy.lexer=h,d.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var g=h.yylloc;r.push(g);var u=h.options&&h.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,y,m,f,b,T,E,w,_,v={};;){if(y=e[e.length-1],this.defaultActions[y]?m=this.defaultActions[y]:(null==x&&(_=void 0,"number"!=typeof(_=a.pop()||h.lex()||1)&&(_ instanceof Array&&(_=(a=_).pop()),_=this.symbols_[_]||_),x=_),m=s[y]&&s[y][x]),void 0===m||!m.length||!m[0]){var P;for(b in w=[],s[y])this.terminals_[b]&&b>2&&w.push("'"+this.terminals_[b]+"'");P=h.showPosition?"Parse error on line "+(o+1)+":\n"+h.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(P,{text:h.match,token:this.terminals_[x]||x,line:h.yylineno,loc:g,expected:w})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+x);switch(m[0]){case 1:e.push(x),i.push(h.yytext),r.push(h.yylloc),e.push(m[1]),x=null,c=h.yyleng,n=h.yytext,o=h.yylineno,g=h.yylloc;break;case 2:if(T=this.productions_[m[1]][1],v.$=i[i.length-T],v._$={first_line:r[r.length-(T||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(T||1)].first_column,last_column:r[r.length-1].last_column},u&&(v._$.range=[r[r.length-(T||1)].range[0],r[r.length-1].range[1]]),void 0!==(f=this.performAction.apply(v,[n,c,o,d.yy,m[1],i,r].concat(l))))return f;T&&(e=e.slice(0,-1*T*2),i=i.slice(0,-1*T),r=r.slice(0,-1*T)),e.push(this.productions_[m[1]][0]),i.push(v.$),r.push(v._$),E=s[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0}},U={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===i.length?this.yylloc.first_column:0)+i[i.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var a,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,a,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;se[0].length)){if(e=a,i=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,r[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,a,i){switch(a){case 0:return this.begin("open_directive"),86;case 1:return this.begin("type_directive"),87;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),89;case 4:return 88;case 5:case 56:case 69:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 25;case 12:return this.begin("LINE"),20;case 13:return this.begin("ID"),56;case 14:return this.begin("ID"),58;case 15:return 19;case 16:return this.begin("ID"),59;case 17:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),76;case 18:return this.popState(),this.popState(),this.begin("LINE"),57;case 19:return this.popState(),this.popState(),5;case 20:return this.begin("LINE"),42;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),44;case 23:return this.begin("LINE"),45;case 24:return this.begin("LINE"),55;case 25:return this.begin("LINE"),47;case 26:return this.begin("LINE"),49;case 27:return this.begin("LINE"),54;case 28:return this.begin("LINE"),50;case 29:return this.begin("LINE"),53;case 30:return this.begin("LINE"),52;case 31:return this.popState(),21;case 32:return 22;case 33:return 71;case 34:return 72;case 35:return 65;case 36:return 66;case 37:return 67;case 38:return 68;case 39:return 63;case 40:return 60;case 41:return this.begin("ID"),27;case 42:return this.begin("ID"),29;case 43:return 35;case 44:return 36;case 45:return this.begin("acc_title"),37;case 46:return this.popState(),"acc_title_value";case 47:return this.begin("acc_descr"),39;case 48:return this.popState(),"acc_descr_value";case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 7;case 53:return 24;case 54:return 26;case 55:return 70;case 57:return e.yytext=e.yytext.trim(),76;case 58:return 79;case 59:return 80;case 60:return 77;case 61:return 78;case 62:return 81;case 63:return 82;case 64:return 83;case 65:return 84;case 66:return 85;case 67:return 74;case 68:return 75;case 70:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,17],inclusive:!1},ALIAS:{rules:[7,8,18,19],inclusive:!1},LINE:{rules:[7,8,31],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70],inclusive:!0}}};function j(){this.yy={}}return H.lexer=U,j.prototype=H,H.Parser=j,new j}());o.parser=o;const c=o;let l,h,d,p,g,u={},x={},y={},m=[],f=[],b=!1;const T=function(t,e,a,i){let r=d;const s=u[t];if(s){if(d&&s.box&&d!==s.box)throw new Error("A same participant should only be defined in one Box: "+s.name+" can't be in '"+s.box.name+"' and in '"+d.name+"' at the same time.");if(r=s.box?s.box:d,s.box=r,s&&e===s.name&&null==a)return}null!=a&&null!=a.text||(a={text:e,wrap:null,type:i}),null!=i&&null!=a.text||(a={text:e,wrap:null,type:i}),u[t]={box:r,name:e,description:a.text,wrap:void 0===a.wrap&&_()||!!a.wrap,prevActor:l,links:{},properties:{},actorCnt:null,rectData:null,type:i||"participant"},l&&u[l]&&(u[l].nextActor=t),d&&d.actorKeys.push(t),l=t},E=function(t,e,a={text:void 0,wrap:void 0},i){if(i===v.ACTIVE_END&&(t=>{let e,a=0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}return f.push({from:t,to:e,message:a.text,wrap:void 0===a.wrap&&_()||!!a.wrap,type:i}),!0},w=function(t){return u[t]},_=()=>void 0!==h?h:(0,i.c)().sequence.wrap,v={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},P=function(t,e,a){a.text,void 0===a.wrap&&_()||a.wrap;const i=[].concat(t,t);f.push({from:i[0],to:i[1],message:a.text,wrap:void 0===a.wrap&&_()||!!a.wrap,type:v.NOTE,placement:e})},k=function(t,e){const a=w(t);try{let t=(0,i.d)(e.text,(0,i.c)());t=t.replace(/&/g,"&"),t=t.replace(/=/g,"="),L(a,JSON.parse(t))}catch(t){i.l.error("error while parsing actor link text",t)}};function L(t,e){if(null==t.links)t.links=e;else for(let a in e)t.links[a]=e[a]}const I=function(t,e){const a=w(t);try{let t=(0,i.d)(e.text,(0,i.c)());M(a,JSON.parse(t))}catch(t){i.l.error("error while parsing actor properties text",t)}};function M(t,e){if(null==t.properties)t.properties=e;else for(let a in e)t.properties[a]=e[a]}const N=function(t,e){const a=w(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&M(a,e.properties),e.links&&L(a,e.links)}catch(t){i.l.error("error while parsing actor details text",t)}},A=function(t){if(Array.isArray(t))t.forEach((function(t){A(t)}));else switch(t.type){case"sequenceIndex":f.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":T(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if(u[t.actor])throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");p=t.actor,T(t.actor,t.actor,t.description,t.draw),x[t.actor]=f.length;break;case"destroyParticipant":g=t.actor,y[t.actor]=f.length;break;case"activeStart":case"activeEnd":E(t.actor,void 0,void 0,t.signalType);break;case"addNote":P(t.actor,t.placement,t.text);break;case"addLinks":k(t.actor,t.text);break;case"addALink":!function(t,e){const a=w(t);try{const t={};let o=(0,i.d)(e.text,(0,i.c)());var r=o.indexOf("@");o=o.replace(/&/g,"&"),o=o.replace(/=/g,"=");var s=o.slice(0,r-1).trim(),n=o.slice(r+1).trim();t[s]=n,L(a,t)}catch(t){i.l.error("error while parsing actor link text",t)}}(t.actor,t.text);break;case"addProperties":I(t.actor,t.text);break;case"addDetails":N(t.actor,t.text);break;case"addMessage":if(p){if(t.to!==p)throw new Error("The created participant "+p+" does not have an associated creating message after its declaration. Please check the sequence diagram.");p=void 0}else if(g){if(t.to!==g&&t.from!==g)throw new Error("The destroyed participant "+g+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");g=void 0}E(t.from,t.to,t.msg,t.signalType);break;case"boxStart":e=t.boxData,m.push({name:e.text,wrap:void 0===e.wrap&&_()||!!e.wrap,fill:e.color,actorKeys:[]}),d=m.slice(-1)[0];break;case"boxEnd":d=void 0;break;case"loopStart":E(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":E(void 0,void 0,void 0,t.signalType);break;case"rectStart":E(void 0,void 0,t.color,t.signalType);break;case"optStart":E(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":E(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,i.s)(t.text);break;case"parStart":case"and":E(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":E(void 0,void 0,t.criticalText,t.signalType);break;case"option":E(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":E(void 0,void 0,t.breakText,t.signalType)}var e},S={addActor:T,addMessage:function(t,e,a,i){f.push({from:t,to:e,message:a.text,wrap:void 0===a.wrap&&_()||!!a.wrap,answer:i})},addSignal:E,addLinks:k,addDetails:N,addProperties:I,autoWrap:_,setWrap:function(t){h=t},enableSequenceNumbers:function(){b=!0},disableSequenceNumbers:function(){b=!1},showSequenceNumbers:()=>b,getMessages:function(){return f},getActors:function(){return u},getCreatedActors:function(){return x},getDestroyedActors:function(){return y},getActor:w,getActorKeys:function(){return Object.keys(u)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getAccTitle:i.g,getBoxes:function(){return m},getDiagramTitle:i.t,setDiagramTitle:i.r,parseDirective:function(t,e,a){i.m.parseDirective(this,t,e,a)},getConfig:()=>(0,i.c)().sequence,clear:function(){u={},x={},y={},m=[],f=[],b=!1,(0,i.v)()},parseMessage:function(t){const e=t.trim(),a={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^:?wrap:/)||null===e.match(/^:?nowrap:/)&&void 0};return i.l.debug("parseMessage:",a),a},parseBoxData:function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let a=null!=e&&e[1]?e[1].trim():"transparent",r=null!=e&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",a)||(a="transparent",r=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",r=t.trim())}return{color:a,text:void 0!==r?(0,i.d)(r.replace(/^:?(?:no)?wrap:/,""),(0,i.c)()):void 0,wrap:void 0!==r?null!==r.match(/^:?wrap:/)||null===r.match(/^:?nowrap:/)&&void 0:void 0}},LINETYPE:v,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:P,setAccTitle:i.s,apply:A,setAccDescription:i.b,getAccDescription:i.a,hasAtLeastOneBox:function(){return m.length>0},hasAtLeastOneBoxWithTitle:function(){return m.some((t=>t.name))}},O=function(t,e){return(0,s.d)(t,e)},D=(t,e)=>{(0,i.H)((()=>{const a=document.querySelectorAll(t);0!==a.length&&(a[0].addEventListener("mouseover",(function(){R("actor"+e+"_popup")})),a[0].addEventListener("mouseout",(function(){Y("actor"+e+"_popup")})))}))},R=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},Y=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},$=function(t,e){let a=0,r=0;const s=e.text.split(i.e.lineBreakRegex),[n,o]=(0,i.F)(e.fontSize);let c=[],l=0,h=()=>e.y;if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":h=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":h=()=>Math.round(e.y+(a+r+e.textMargin)/2);break;case"bottom":case"end":h=()=>Math.round(e.y+(a+r+2*e.textMargin)-e.textMargin)}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[d,p]of s.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==n&&(l=d*n);const s=t.append("text");s.attr("x",e.x),s.attr("y",h()),void 0!==e.anchor&&s.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&s.style("font-family",e.fontFamily),void 0!==o&&s.style("font-size",o),void 0!==e.fontWeight&&s.style("font-weight",e.fontWeight),void 0!==e.fill&&s.attr("fill",e.fill),void 0!==e.class&&s.attr("class",e.class),void 0!==e.dy?s.attr("dy",e.dy):0!==l&&s.attr("dy",l);const g=p||i.Z;if(e.tspan){const t=s.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(g)}else s.text(g);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(s._groups||s)[0][0].getBBox().height,a=r),c.push(s)}return c},C=function(t,e){const a=t.append("polygon");var i,r,s,n;return a.attr("points",(i=e.x)+","+(r=e.y)+" "+(i+(s=e.width))+","+r+" "+(i+s)+","+(r+(n=e.height)-7)+" "+(i+s-8.4)+","+(r+n)+" "+i+","+(r+n)),a.attr("class","labelBox"),e.y=e.y+e.height/2,$(t,e),a};let V=-1;const B=(t,e,a,i)=>{t.select&&a.forEach((a=>{const r=e[a],s=t.select("#actor"+r.actorCnt);!i.mirrorActors&&r.stopy?s.attr("y2",r.stopy+r.height/2):i.mirrorActors&&s.attr("y2",r.stopy)}))},F=function(t,e){(0,s.a)(t,e)},W=function(){function t(t,e,a,i,s,n,o){r(e.append("text").attr("x",a+s/2).attr("y",i+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,s,n,o,c,l){const{actorFontSize:h,actorFontFamily:d,actorFontWeight:p}=l,[g,u]=(0,i.F)(h),x=t.split(i.e.lineBreakRegex);for(let t=0;ta?c.width:a;const g=h.append("rect");if(g.attr("class","actorPopupMenuPanel"+d),g.attr("x",c.x),g.attr("y",c.height),g.attr("fill",c.fill),g.attr("stroke",c.stroke),g.attr("width",p),g.attr("height",c.height),g.attr("rx",c.rx),g.attr("ry",c.ry),null!=s){var u=20;for(let t in s){var x=h.append("a"),y=(0,n.Nm)(s[t]);x.attr("xlink:href",y),x.attr("target","_blank"),q(i)(t,x,c.x+10,c.height+u,p,20,{class:"actor"},i),u+=30}}return g.attr("height",u),{height:c.height+u,width:p}},K=function(t){return t.append("g")},X=function(t,e,a,i,r){const n=(0,s.g)(),o=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+r%3,n.width=e.stopx-e.startx,n.height=a-e.starty,O(o,n)},G=function(t,e,a,i){const{boxMargin:r,boxTextMargin:n,labelBoxHeight:o,labelBoxWidth:c,messageFontFamily:l,messageFontSize:h,messageFontWeight:d}=i,p=t.append("g"),g=function(t,e,a,i){return p.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",i).attr("class","loopLine")};g(e.startx,e.starty,e.stopx,e.starty),g(e.stopx,e.starty,e.stopx,e.stopy),g(e.startx,e.stopy,e.stopx,e.stopy),g(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){g(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let u=(0,s.e)();u.text=a,u.x=e.startx,u.y=e.starty,u.fontFamily=l,u.fontSize=h,u.fontWeight=d,u.anchor="middle",u.valign="middle",u.tspan=!1,u.width=c||50,u.height=o||20,u.textMargin=n,u.class="labelText",C(p,u),u={x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0},u.text=e.title,u.x=e.startx+c/2+(e.stopx-e.startx)/2,u.y=e.starty+r+n,u.anchor="middle",u.valign="middle",u.textMargin=n,u.class="loopText",u.fontFamily=l,u.fontSize=h,u.fontWeight=d,u.wrap=!0;let x=$(p,u);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,a){if(t.message){u.text=t.message,u.x=e.startx+(e.stopx-e.startx)/2,u.y=e.sections[a].y+r+n,u.class="loopText",u.anchor="middle",u.valign="middle",u.tspan=!1,u.fontFamily=l,u.fontSize=h,u.fontWeight=d,u.wrap=e.wrap,x=$(p,u);let i=Math.round(x.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[a].height+=i-(r+n)}})),e.height=Math.round(e.stopy-e.starty),p},J=F,Z=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},Q=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},tt=function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},et=function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},at=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},it=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},rt=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")};n.Nm;let st={};const nt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((t=>t.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,pt((0,i.c)())},updateVal:function(t,e,a,i){void 0===t[e]?t[e]=a:t[e]=i(a,t[e])},updateBounds:function(t,e,a,i){const r=this;let s=0;function n(n){return function(o){s++;const c=r.sequenceItems.length-s+1;r.updateVal(o,"starty",e-c*st.boxMargin,Math.min),r.updateVal(o,"stopy",i+c*st.boxMargin,Math.max),r.updateVal(nt.data,"startx",t-c*st.boxMargin,Math.min),r.updateVal(nt.data,"stopx",a+c*st.boxMargin,Math.max),"activation"!==n&&(r.updateVal(o,"startx",t-c*st.boxMargin,Math.min),r.updateVal(o,"stopx",a+c*st.boxMargin,Math.max),r.updateVal(nt.data,"starty",e-c*st.boxMargin,Math.min),r.updateVal(nt.data,"stopy",i+c*st.boxMargin,Math.max))}}this.sequenceItems.forEach(n()),this.activations.forEach(n("activation"))},insert:function(t,e,a,r){const s=i.e.getMin(t,a),n=i.e.getMax(t,a),o=i.e.getMin(e,r),c=i.e.getMax(e,r);this.updateVal(nt.data,"startx",s,Math.min),this.updateVal(nt.data,"starty",o,Math.min),this.updateVal(nt.data,"stopx",n,Math.max),this.updateVal(nt.data,"stopy",c,Math.max),this.updateBounds(s,o,n,c)},newActivation:function(t,e,a){const i=a[t.from.actor],r=gt(t.from.actor).length||0,s=i.x+i.width/2+(r-1)*st.activationWidth/2;this.activations.push({startx:s,starty:this.verticalPos+2,stopx:s+st.activationWidth,stopy:void 0,actor:t.from.actor,anchored:K(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:nt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=i.e.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},ot=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),ct=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),lt=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),ht=function(t,e,a,r){if(r){let r=0;nt.bumpVerticalPos(2*st.boxMargin);for(const s of a){const a=e[s];a.stopy||(a.stopy=nt.getVerticalPos());const n=H(t,a,st,!0);r=i.e.getMax(r,n)}nt.bumpVerticalPos(r+st.boxMargin)}else for(const i of a){const a=e[i];H(t,a,st,!1)}},dt=function(t,e,a,i){let r=0,s=0;for(const n of a){const a=e[n],o=yt(a),c=j(t,a,o,st,st.forceMenus,i);c.height>r&&(r=c.height),c.width+a.x>s&&(s=c.width+a.x)}return{maxHeight:r,maxWidth:s}},pt=function(t){(0,i.f)(st,t),t.fontFamily&&(st.actorFontFamily=st.noteFontFamily=st.messageFontFamily=t.fontFamily),t.fontSize&&(st.actorFontSize=st.noteFontSize=st.messageFontSize=t.fontSize),t.fontWeight&&(st.actorFontWeight=st.noteFontWeight=st.messageFontWeight=t.fontWeight)},gt=function(t){return nt.activations.filter((function(e){return e.actor===t}))},ut=function(t,e){const a=e[t],r=gt(t);return[r.reduce((function(t,e){return i.e.getMin(t,e.startx)}),a.x+a.width/2),r.reduce((function(t,e){return i.e.getMax(t,e.stopx)}),a.x+a.width/2)]};function xt(t,e,a,r,s){nt.bumpVerticalPos(a);let n=r;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,s=ot(st);e.message=i.u.wrapLabel(`[${e.message}]`,a-2*st.wrapPadding,s),e.width=a,e.wrap=!0;const o=i.u.calculateTextDimensions(e.message,s),c=i.e.getMax(o.height,st.labelBoxHeight);n=r+c,i.l.debug(`${c} - ${e.message}`)}s(e),nt.bumpVerticalPos(n)}const yt=function(t){let e=0;const a=lt(st);for(const r in t.links){const t=i.u.calculateTextDimensions(r,a).width+2*st.wrapPadding+2*st.boxMargin;e{const a=t[e];a.wrap&&(a.description=i.u.wrapLabel(a.description,st.width-2*st.wrapPadding,lt(st)));const s=i.u.calculateTextDimensions(a.description,lt(st));a.width=a.wrap?st.width:i.e.getMax(st.width,s.width+2*st.wrapPadding),a.height=a.wrap?i.e.getMax(s.height,st.height):st.height,r=i.e.getMax(r,a.height)}));for(const a in e){const r=t[a];if(!r)continue;const s=t[r.nextActor];if(!s){const t=e[a]+st.actorMargin-r.width/2;r.margin=i.e.getMax(t,st.actorMargin);continue}const n=e[a]+st.actorMargin-r.width/2-s.width/2;r.margin=i.e.getMax(n,st.actorMargin)}let s=0;return a.forEach((e=>{const a=ot(st);let r=e.actorKeys.reduce(((e,a)=>e+(t[a].width+(t[a].margin||0))),0);r-=2*st.boxTextMargin,e.wrap&&(e.name=i.u.wrapLabel(e.name,r-2*st.wrapPadding,a));const n=i.u.calculateTextDimensions(e.name,a);s=i.e.getMax(n.height,s);const o=i.e.getMax(r,n.width+2*st.wrapPadding);if(e.margin=st.boxTextMargin,rt.textMaxHeight=s)),i.e.getMax(r,st.height)}(g,w,y),it(p),at(p),rt(p),T&&(nt.bumpVerticalPos(st.boxMargin),E&&nt.bumpVerticalPos(y[0].textMaxHeight)),!0===st.hideUnusedParticipants){const t=new Set;f.forEach((e=>{t.add(e.from),t.add(e.to)})),m=m.filter((e=>t.has(e)))}!function(t,e,a,r,s,n,o){let c,l=0,h=0,d=0;for(const t of r){const r=e[t],s=r.box;c&&c!=s&&(nt.models.addBox(c),h+=st.boxMargin+c.margin),s&&s!=c&&(s.x=l+h,s.y=0,h+=s.margin),r.width=r.width||st.width,r.height=i.e.getMax(r.height||st.height,st.height),r.margin=r.margin||st.actorMargin,d=i.e.getMax(d,r.height),a[r.name]&&(h+=r.width/2),r.x=l+h,r.starty=nt.getVerticalPos(),nt.insert(r.x,0,r.x+r.width,r.height),l+=r.width+h,r.box&&(r.box.width=l+s.margin-r.box.x),h=r.margin,c=r.box,nt.models.addActor(r)}c&&nt.models.addBox(c),nt.bumpVerticalPos(d)}(0,g,u,m);const _=function(t,e,a,r){const s={},n=[];let o,c,l;return t.forEach((function(t){switch(t.id=i.u.random({length:10}),t.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:n.push({id:t.id,msg:t.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:t.message&&(o=n.pop(),s[o.id]=o,s[t.id]=o,n.push(o));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:o=n.pop(),s[o.id]=o;break;case r.db.LINETYPE.ACTIVE_START:{const a=e[t.from?t.from.actor:t.to.actor],i=gt(t.from?t.from.actor:t.to.actor).length,r=a.x+a.width/2+(i-1)*st.activationWidth/2,s={startx:r,stopx:r+st.activationWidth,actor:t.from.actor,enabled:!0};nt.activations.push(s)}break;case r.db.LINETYPE.ACTIVE_END:{const e=nt.activations.map((t=>t.actor)).lastIndexOf(t.from.actor);delete nt.activations.splice(e,1)[0]}}void 0!==t.placement?(c=function(t,e,a){const r=e[t.from].x,s=e[t.to].x,n=t.wrap&&t.message;let o=i.u.calculateTextDimensions(n?i.u.wrapLabel(t.message,st.width,ct(st)):t.message,ct(st));const c={width:n?st.width:i.e.getMax(st.width,o.width+2*st.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(c.width=n?i.e.getMax(st.width,o.width):i.e.getMax(e[t.from].width/2+e[t.to].width/2,o.width+2*st.noteMargin),c.startx=r+(e[t.from].width+st.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(c.width=n?i.e.getMax(st.width,o.width+2*st.noteMargin):i.e.getMax(e[t.from].width/2+e[t.to].width/2,o.width+2*st.noteMargin),c.startx=r-c.width+(e[t.from].width-st.actorMargin)/2):t.to===t.from?(o=i.u.calculateTextDimensions(n?i.u.wrapLabel(t.message,i.e.getMax(st.width,e[t.from].width),ct(st)):t.message,ct(st)),c.width=n?i.e.getMax(st.width,e[t.from].width):i.e.getMax(e[t.from].width,st.width,o.width+2*st.noteMargin),c.startx=r+(e[t.from].width-c.width)/2):(c.width=Math.abs(r+e[t.from].width/2-(s+e[t.to].width/2))+st.actorMargin,c.startx=r{o=t,o.from=i.e.getMin(o.from,c.startx),o.to=i.e.getMax(o.to,c.startx+c.width),o.width=i.e.getMax(o.width,Math.abs(o.from-o.to))-st.labelBoxWidth}))):(l=function(t,e,a){let r=!1;if([a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN,a.db.LINETYPE.SOLID,a.db.LINETYPE.DOTTED,a.db.LINETYPE.SOLID_CROSS,a.db.LINETYPE.DOTTED_CROSS,a.db.LINETYPE.SOLID_POINT,a.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(r=!0),!r)return{};const s=ut(t.from,e),n=ut(t.to,e),o=s[0]<=n[0]?1:0,c=s[0]0&&n.forEach((a=>{if(o=a,l.startx===l.stopx){const a=e[t.from],r=e[t.to];o.from=i.e.getMin(a.x-l.width/2,a.x-a.width/2,o.from),o.to=i.e.getMax(r.x+l.width/2,r.x+a.width/2,o.to),o.width=i.e.getMax(o.width,Math.abs(o.to-o.from))-st.labelBoxWidth}else o.from=i.e.getMin(l.startx,o.from),o.to=i.e.getMax(l.stopx,o.to),o.width=i.e.getMax(o.width,l.width)-st.labelBoxWidth})))})),nt.activations=[],i.l.debug("Loop type widths:",s),s}(f,g,0,n);Z(p),et(p),Q(p),tt(p);let v=1,P=1;const k=[],L=[];f.forEach((function(t,e){let a,r,o;switch(t.type){case n.db.LINETYPE.NOTE:nt.resetVerticalPos(),r=t.noteModel,function(t,e){nt.bumpVerticalPos(st.boxMargin),e.height=st.boxMargin,e.starty=nt.getVerticalPos();const a=(0,s.g)();a.x=e.startx,a.y=e.starty,a.width=e.width||st.width,a.class="note";const i=t.append("g"),r=z(i,a),n=(0,s.e)();n.x=e.startx,n.y=e.starty,n.width=a.width,n.dy="1em",n.text=e.message,n.class="noteText",n.fontFamily=st.noteFontFamily,n.fontSize=st.noteFontSize,n.fontWeight=st.noteFontWeight,n.anchor=st.noteAlign,n.textMargin=st.noteMargin,n.valign="center";const o=$(i,n),c=Math.round(o.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));r.attr("height",c+2*st.noteMargin),e.height+=c+2*st.noteMargin,nt.bumpVerticalPos(c+2*st.noteMargin),e.stopy=e.starty+c+2*st.noteMargin,e.stopx=e.startx+a.width,nt.insert(e.startx,e.starty,e.stopx,e.stopy),nt.models.addNote(e)}(p,r);break;case n.db.LINETYPE.ACTIVE_START:nt.newActivation(t,p,g);break;case n.db.LINETYPE.ACTIVE_END:!function(t,e){const a=nt.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),X(p,a,e,st,gt(t.from.actor).length),nt.insert(a.startx,e-10,a.stopx,e)}(t,nt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t)));break;case n.db.LINETYPE.LOOP_END:a=nt.endLoop(),G(p,a,"loop",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;case n.db.LINETYPE.RECT_START:xt(_,t,st.boxMargin,st.boxMargin,(t=>nt.newLoop(void 0,t.message)));break;case n.db.LINETYPE.RECT_END:a=nt.endLoop(),L.push(a),nt.models.addLoop(a),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t)));break;case n.db.LINETYPE.OPT_END:a=nt.endLoop(),G(p,a,"opt",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;case n.db.LINETYPE.ALT_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t)));break;case n.db.LINETYPE.ALT_ELSE:xt(_,t,st.boxMargin+st.boxTextMargin,st.boxMargin,(t=>nt.addSectionToLoop(t)));break;case n.db.LINETYPE.ALT_END:a=nt.endLoop(),G(p,a,"alt",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t))),nt.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:xt(_,t,st.boxMargin+st.boxTextMargin,st.boxMargin,(t=>nt.addSectionToLoop(t)));break;case n.db.LINETYPE.PAR_END:a=nt.endLoop(),G(p,a,"par",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;case n.db.LINETYPE.AUTONUMBER:v=t.message.start||v,P=t.message.step||P,t.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t)));break;case n.db.LINETYPE.CRITICAL_OPTION:xt(_,t,st.boxMargin+st.boxTextMargin,st.boxMargin,(t=>nt.addSectionToLoop(t)));break;case n.db.LINETYPE.CRITICAL_END:a=nt.endLoop(),G(p,a,"critical",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;case n.db.LINETYPE.BREAK_START:xt(_,t,st.boxMargin,st.boxMargin+st.boxTextMargin,(t=>nt.newLoop(t)));break;case n.db.LINETYPE.BREAK_END:a=nt.endLoop(),G(p,a,"break",st),nt.bumpVerticalPos(a.stopy-nt.getVerticalPos()),nt.models.addLoop(a);break;default:try{o=t.msgModel,o.starty=nt.getVerticalPos(),o.sequenceIndex=v,o.sequenceVisible=n.db.showSequenceNumbers();const a=function(t,e){nt.bumpVerticalPos(10);const{startx:a,stopx:r,message:s}=e,n=i.e.splitBreaks(s).length,o=i.u.calculateTextDimensions(s,ot(st)),c=o.height/n;let l;e.height+=c,nt.bumpVerticalPos(c);let h=o.height-10;const d=o.width;if(a===r){l=nt.getVerticalPos()+h,st.rightAngles||(h+=st.boxMargin,l=nt.getVerticalPos()+h),h+=30;const t=i.e.getMax(d/2,st.width/2);nt.insert(a-t,nt.getVerticalPos()-10+h,r+t,nt.getVerticalPos()+30+h)}else h+=st.boxMargin,l=nt.getVerticalPos()+h,nt.insert(a,l-10,r,l);return nt.bumpVerticalPos(h),e.height+=h,e.stopy=e.starty+e.height,nt.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}(0,o);!function(t,e,a,i,r,s,n){function o(a,i){a.xfunction(t,e,a,r){const{startx:n,stopx:o,starty:c,message:l,type:h,sequenceIndex:d,sequenceVisible:p}=e,g=i.u.calculateTextDimensions(l,ot(st)),u=(0,s.e)();u.x=n,u.y=c+10,u.width=o-n,u.class="messageText",u.dy="1em",u.text=l,u.fontFamily=st.messageFontFamily,u.fontSize=st.messageFontSize,u.fontWeight=st.messageFontWeight,u.anchor=st.messageAlign,u.valign="center",u.textMargin=st.wrapPadding,u.tspan=!1,$(t,u);const x=g.width;let y;n===o?y=st.rightAngles?t.append("path").attr("d",`M ${n},${a} H ${n+i.e.getMax(st.width/2,x/2)} V ${a+25} H ${n}`):t.append("path").attr("d","M "+n+","+a+" C "+(n+60)+","+(a-10)+" "+(n+60)+","+(a+30)+" "+n+","+(a+20)):(y=t.append("line"),y.attr("x1",n),y.attr("y1",a),y.attr("x2",o),y.attr("y2",a)),h===r.db.LINETYPE.DOTTED||h===r.db.LINETYPE.DOTTED_CROSS||h===r.db.LINETYPE.DOTTED_POINT||h===r.db.LINETYPE.DOTTED_OPEN?(y.style("stroke-dasharray","3, 3"),y.attr("class","messageLine1")):y.attr("class","messageLine0");let m="";st.arrowMarkerAbsolute&&(m=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,m=m.replace(/\(/g,"\\("),m=m.replace(/\)/g,"\\)")),y.attr("stroke-width",2),y.attr("stroke","none"),y.style("fill","none"),h!==r.db.LINETYPE.SOLID&&h!==r.db.LINETYPE.DOTTED||y.attr("marker-end","url("+m+"#arrowhead)"),h!==r.db.LINETYPE.SOLID_POINT&&h!==r.db.LINETYPE.DOTTED_POINT||y.attr("marker-end","url("+m+"#filled-head)"),h!==r.db.LINETYPE.SOLID_CROSS&&h!==r.db.LINETYPE.DOTTED_CROSS||y.attr("marker-end","url("+m+"#crosshead)"),(p||st.showSequenceNumbers)&&(y.attr("marker-start","url("+m+"#sequencenumber)"),t.append("text").attr("x",n).attr("y",a+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(d))}(p,t.messageModel,t.lineStartY,n))),st.mirrorActors&&ht(p,g,m,!0),L.forEach((t=>J(p,t))),B(p,g,m,st),nt.models.boxes.forEach((function(t){t.height=nt.getVerticalPos()-t.y,nt.insert(t.x,t.y,t.x+t.width,t.height),t.startx=t.x,t.starty=t.y,t.stopx=t.startx+t.width,t.stopy=t.starty+t.height,t.stroke="rgb(0,0,0, 0.5)",U(p,t,st)})),T&&nt.bumpVerticalPos(st.boxMargin);const I=dt(p,g,m,d),{bounds:M}=nt.getBounds();let N=M.stopy-M.starty;N`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`}},8252:function(t,e,a){a.d(e,{a:function(){return n},b:function(){return l},c:function(){return c},d:function(){return s},e:function(){return d},f:function(){return o},g:function(){return h}});var i=a(7967),r=a(9339);const s=(t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),void 0!==e.rx&&a.attr("rx",e.rx),void 0!==e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const t in e.attrs)a.attr(t,e.attrs[t]);return void 0!==e.class&&a.attr("class",e.class),a},n=(t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,a).lower()},o=(t,e)=>{const a=e.text.replace(r.J," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(a),i},c=(t,e,a,r)=>{const s=t.append("image");s.attr("x",e),s.attr("y",a);const n=(0,i.Nm)(r);s.attr("xlink:href",n)},l=(t,e,a,r)=>{const s=t.append("use");s.attr("x",e),s.attr("y",a);const n=(0,i.Nm)(r);s.attr("xlink:href",`#${n}`)},h=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),d=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [361],
+ {
+ 5510: function (t, e, a) {
+ a.d(e, {
+ diagram: function () {
+ return mt;
+ },
+ });
+ var i = a(9339),
+ r = a(7274),
+ s = a(8252),
+ n = a(7967),
+ o =
+ (a(7484),
+ a(7856),
+ (function () {
+ var t = function (t, e, a, i) {
+ for (a = a || {}, i = t.length; i--; a[t[i]] = e);
+ return a;
+ },
+ e = [1, 2],
+ a = [1, 3],
+ i = [1, 5],
+ r = [1, 7],
+ s = [2, 5],
+ n = [1, 15],
+ o = [1, 17],
+ c = [1, 19],
+ l = [1, 20],
+ h = [1, 22],
+ d = [1, 23],
+ p = [1, 24],
+ g = [1, 30],
+ u = [1, 31],
+ x = [1, 32],
+ y = [1, 33],
+ m = [1, 34],
+ f = [1, 35],
+ b = [1, 36],
+ T = [1, 37],
+ E = [1, 38],
+ w = [1, 39],
+ _ = [1, 40],
+ v = [1, 41],
+ P = [1, 42],
+ k = [1, 44],
+ L = [1, 45],
+ I = [1, 46],
+ M = [1, 48],
+ N = [1, 49],
+ A = [1, 50],
+ S = [1, 51],
+ O = [1, 52],
+ D = [1, 53],
+ R = [1, 56],
+ Y = [
+ 1, 4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 54, 55, 56, 58, 59, 60, 65, 66, 67, 68, 76,
+ 86,
+ ],
+ $ = [4, 5, 22, 56, 58, 59],
+ C = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ V = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 55, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ B = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 54, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ F = [4, 5, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86],
+ W = [74, 75, 76],
+ q = [1, 133],
+ z = [
+ 1, 4, 5, 7, 19, 20, 22, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 53, 54, 55, 56, 58, 59, 60, 65, 66, 67, 68,
+ 76, 86,
+ ],
+ H = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SPACE: 4,
+ NEWLINE: 5,
+ directive: 6,
+ SD: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ box_section: 11,
+ box_line: 12,
+ participant_statement: 13,
+ openDirective: 14,
+ typeDirective: 15,
+ closeDirective: 16,
+ ":": 17,
+ argDirective: 18,
+ create: 19,
+ box: 20,
+ restOfLine: 21,
+ end: 22,
+ signal: 23,
+ autonumber: 24,
+ NUM: 25,
+ off: 26,
+ activate: 27,
+ actor: 28,
+ deactivate: 29,
+ note_statement: 30,
+ links_statement: 31,
+ link_statement: 32,
+ properties_statement: 33,
+ details_statement: 34,
+ title: 35,
+ legacy_title: 36,
+ acc_title: 37,
+ acc_title_value: 38,
+ acc_descr: 39,
+ acc_descr_value: 40,
+ acc_descr_multiline_value: 41,
+ loop: 42,
+ rect: 43,
+ opt: 44,
+ alt: 45,
+ else_sections: 46,
+ par: 47,
+ par_sections: 48,
+ par_over: 49,
+ critical: 50,
+ option_sections: 51,
+ break: 52,
+ option: 53,
+ and: 54,
+ else: 55,
+ participant: 56,
+ AS: 57,
+ participant_actor: 58,
+ destroy: 59,
+ note: 60,
+ placement: 61,
+ text2: 62,
+ over: 63,
+ actor_pair: 64,
+ links: 65,
+ link: 66,
+ properties: 67,
+ details: 68,
+ spaceList: 69,
+ ",": 70,
+ left_of: 71,
+ right_of: 72,
+ signaltype: 73,
+ "+": 74,
+ "-": 75,
+ ACTOR: 76,
+ SOLID_OPEN_ARROW: 77,
+ DOTTED_OPEN_ARROW: 78,
+ SOLID_ARROW: 79,
+ DOTTED_ARROW: 80,
+ SOLID_CROSS: 81,
+ DOTTED_CROSS: 82,
+ SOLID_POINT: 83,
+ DOTTED_POINT: 84,
+ TXT: 85,
+ open_directive: 86,
+ type_directive: 87,
+ arg_directive: 88,
+ close_directive: 89,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SPACE",
+ 5: "NEWLINE",
+ 7: "SD",
+ 17: ":",
+ 19: "create",
+ 20: "box",
+ 21: "restOfLine",
+ 22: "end",
+ 24: "autonumber",
+ 25: "NUM",
+ 26: "off",
+ 27: "activate",
+ 29: "deactivate",
+ 35: "title",
+ 36: "legacy_title",
+ 37: "acc_title",
+ 38: "acc_title_value",
+ 39: "acc_descr",
+ 40: "acc_descr_value",
+ 41: "acc_descr_multiline_value",
+ 42: "loop",
+ 43: "rect",
+ 44: "opt",
+ 45: "alt",
+ 47: "par",
+ 49: "par_over",
+ 50: "critical",
+ 52: "break",
+ 53: "option",
+ 54: "and",
+ 55: "else",
+ 56: "participant",
+ 57: "AS",
+ 58: "participant_actor",
+ 59: "destroy",
+ 60: "note",
+ 63: "over",
+ 65: "links",
+ 66: "link",
+ 67: "properties",
+ 68: "details",
+ 70: ",",
+ 71: "left_of",
+ 72: "right_of",
+ 74: "+",
+ 75: "-",
+ 76: "ACTOR",
+ 77: "SOLID_OPEN_ARROW",
+ 78: "DOTTED_OPEN_ARROW",
+ 79: "SOLID_ARROW",
+ 80: "DOTTED_ARROW",
+ 81: "SOLID_CROSS",
+ 82: "DOTTED_CROSS",
+ 83: "SOLID_POINT",
+ 84: "DOTTED_POINT",
+ 85: "TXT",
+ 86: "open_directive",
+ 87: "type_directive",
+ 88: "arg_directive",
+ 89: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [9, 1],
+ [9, 1],
+ [11, 0],
+ [11, 2],
+ [12, 2],
+ [12, 1],
+ [12, 1],
+ [6, 4],
+ [6, 6],
+ [10, 1],
+ [10, 2],
+ [10, 4],
+ [10, 2],
+ [10, 4],
+ [10, 3],
+ [10, 3],
+ [10, 2],
+ [10, 3],
+ [10, 3],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 4],
+ [10, 1],
+ [51, 1],
+ [51, 4],
+ [48, 1],
+ [48, 4],
+ [46, 1],
+ [46, 4],
+ [13, 5],
+ [13, 3],
+ [13, 5],
+ [13, 3],
+ [13, 3],
+ [30, 4],
+ [30, 4],
+ [31, 3],
+ [32, 3],
+ [33, 3],
+ [34, 3],
+ [69, 2],
+ [69, 1],
+ [64, 3],
+ [64, 1],
+ [61, 1],
+ [61, 1],
+ [23, 5],
+ [23, 5],
+ [23, 4],
+ [28, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [73, 1],
+ [62, 1],
+ [14, 1],
+ [15, 1],
+ [18, 1],
+ [16, 1],
+ ],
+ performAction: function (t, e, a, i, r, s, n) {
+ var o = s.length - 1;
+ switch (r) {
+ case 4:
+ return i.apply(s[o]), s[o];
+ case 5:
+ case 10:
+ case 9:
+ case 14:
+ this.$ = [];
+ break;
+ case 6:
+ case 11:
+ s[o - 1].push(s[o]), (this.$ = s[o - 1]);
+ break;
+ case 7:
+ case 8:
+ case 12:
+ case 13:
+ case 66:
+ this.$ = s[o];
+ break;
+ case 18:
+ (s[o].type = "createParticipant"), (this.$ = s[o]);
+ break;
+ case 19:
+ s[o - 1].unshift({ type: "boxStart", boxData: i.parseBoxData(s[o - 2]) }),
+ s[o - 1].push({ type: "boxEnd", boxText: s[o - 2] }),
+ (this.$ = s[o - 1]);
+ break;
+ case 21:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceIndex: Number(s[o - 2]),
+ sequenceIndexStep: Number(s[o - 1]),
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 22:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceIndex: Number(s[o - 1]),
+ sequenceIndexStep: 1,
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 23:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceVisible: !1,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 24:
+ this.$ = {
+ type: "sequenceIndex",
+ sequenceVisible: !0,
+ signalType: i.LINETYPE.AUTONUMBER,
+ };
+ break;
+ case 25:
+ this.$ = {
+ type: "activeStart",
+ signalType: i.LINETYPE.ACTIVE_START,
+ actor: s[o - 1],
+ };
+ break;
+ case 26:
+ this.$ = {
+ type: "activeEnd",
+ signalType: i.LINETYPE.ACTIVE_END,
+ actor: s[o - 1],
+ };
+ break;
+ case 32:
+ i.setDiagramTitle(s[o].substring(6)), (this.$ = s[o].substring(6));
+ break;
+ case 33:
+ i.setDiagramTitle(s[o].substring(7)), (this.$ = s[o].substring(7));
+ break;
+ case 34:
+ (this.$ = s[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 35:
+ case 36:
+ (this.$ = s[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 37:
+ s[o - 1].unshift({
+ type: "loopStart",
+ loopText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.LOOP_START,
+ }),
+ s[o - 1].push({
+ type: "loopEnd",
+ loopText: s[o - 2],
+ signalType: i.LINETYPE.LOOP_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 38:
+ s[o - 1].unshift({
+ type: "rectStart",
+ color: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.RECT_START,
+ }),
+ s[o - 1].push({
+ type: "rectEnd",
+ color: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.RECT_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 39:
+ s[o - 1].unshift({
+ type: "optStart",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.OPT_START,
+ }),
+ s[o - 1].push({
+ type: "optEnd",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.OPT_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 40:
+ s[o - 1].unshift({
+ type: "altStart",
+ altText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.ALT_START,
+ }),
+ s[o - 1].push({ type: "altEnd", signalType: i.LINETYPE.ALT_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 41:
+ s[o - 1].unshift({
+ type: "parStart",
+ parText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.PAR_START,
+ }),
+ s[o - 1].push({ type: "parEnd", signalType: i.LINETYPE.PAR_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 42:
+ s[o - 1].unshift({
+ type: "parStart",
+ parText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.PAR_OVER_START,
+ }),
+ s[o - 1].push({ type: "parEnd", signalType: i.LINETYPE.PAR_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 43:
+ s[o - 1].unshift({
+ type: "criticalStart",
+ criticalText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.CRITICAL_START,
+ }),
+ s[o - 1].push({ type: "criticalEnd", signalType: i.LINETYPE.CRITICAL_END }),
+ (this.$ = s[o - 1]);
+ break;
+ case 44:
+ s[o - 1].unshift({
+ type: "breakStart",
+ breakText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.BREAK_START,
+ }),
+ s[o - 1].push({
+ type: "breakEnd",
+ optText: i.parseMessage(s[o - 2]),
+ signalType: i.LINETYPE.BREAK_END,
+ }),
+ (this.$ = s[o - 1]);
+ break;
+ case 47:
+ this.$ = s[o - 3].concat([
+ {
+ type: "option",
+ optionText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.CRITICAL_OPTION,
+ },
+ s[o],
+ ]);
+ break;
+ case 49:
+ this.$ = s[o - 3].concat([
+ {
+ type: "and",
+ parText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.PAR_AND,
+ },
+ s[o],
+ ]);
+ break;
+ case 51:
+ this.$ = s[o - 3].concat([
+ {
+ type: "else",
+ altText: i.parseMessage(s[o - 1]),
+ signalType: i.LINETYPE.ALT_ELSE,
+ },
+ s[o],
+ ]);
+ break;
+ case 52:
+ (s[o - 3].draw = "participant"),
+ (s[o - 3].type = "addParticipant"),
+ (s[o - 3].description = i.parseMessage(s[o - 1])),
+ (this.$ = s[o - 3]);
+ break;
+ case 53:
+ (s[o - 1].draw = "participant"), (s[o - 1].type = "addParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 54:
+ (s[o - 3].draw = "actor"),
+ (s[o - 3].type = "addParticipant"),
+ (s[o - 3].description = i.parseMessage(s[o - 1])),
+ (this.$ = s[o - 3]);
+ break;
+ case 55:
+ (s[o - 1].draw = "actor"), (s[o - 1].type = "addParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 56:
+ (s[o - 1].type = "destroyParticipant"), (this.$ = s[o - 1]);
+ break;
+ case 57:
+ this.$ = [s[o - 1], { type: "addNote", placement: s[o - 2], actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 58:
+ (s[o - 2] = [].concat(s[o - 1], s[o - 1]).slice(0, 2)),
+ (s[o - 2][0] = s[o - 2][0].actor),
+ (s[o - 2][1] = s[o - 2][1].actor),
+ (this.$ = [
+ s[o - 1],
+ {
+ type: "addNote",
+ placement: i.PLACEMENT.OVER,
+ actor: s[o - 2].slice(0, 2),
+ text: s[o],
+ },
+ ]);
+ break;
+ case 59:
+ this.$ = [s[o - 1], { type: "addLinks", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 60:
+ this.$ = [s[o - 1], { type: "addALink", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 61:
+ this.$ = [s[o - 1], { type: "addProperties", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 62:
+ this.$ = [s[o - 1], { type: "addDetails", actor: s[o - 1].actor, text: s[o] }];
+ break;
+ case 65:
+ this.$ = [s[o - 2], s[o]];
+ break;
+ case 67:
+ this.$ = i.PLACEMENT.LEFTOF;
+ break;
+ case 68:
+ this.$ = i.PLACEMENT.RIGHTOF;
+ break;
+ case 69:
+ this.$ = [
+ s[o - 4],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 4].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 3],
+ msg: s[o],
+ },
+ {
+ type: "activeStart",
+ signalType: i.LINETYPE.ACTIVE_START,
+ actor: s[o - 1],
+ },
+ ];
+ break;
+ case 70:
+ this.$ = [
+ s[o - 4],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 4].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 3],
+ msg: s[o],
+ },
+ { type: "activeEnd", signalType: i.LINETYPE.ACTIVE_END, actor: s[o - 4] },
+ ];
+ break;
+ case 71:
+ this.$ = [
+ s[o - 3],
+ s[o - 1],
+ {
+ type: "addMessage",
+ from: s[o - 3].actor,
+ to: s[o - 1].actor,
+ signalType: s[o - 2],
+ msg: s[o],
+ },
+ ];
+ break;
+ case 72:
+ this.$ = { type: "addParticipant", actor: s[o] };
+ break;
+ case 73:
+ this.$ = i.LINETYPE.SOLID_OPEN;
+ break;
+ case 74:
+ this.$ = i.LINETYPE.DOTTED_OPEN;
+ break;
+ case 75:
+ this.$ = i.LINETYPE.SOLID;
+ break;
+ case 76:
+ this.$ = i.LINETYPE.DOTTED;
+ break;
+ case 77:
+ this.$ = i.LINETYPE.SOLID_CROSS;
+ break;
+ case 78:
+ this.$ = i.LINETYPE.DOTTED_CROSS;
+ break;
+ case 79:
+ this.$ = i.LINETYPE.SOLID_POINT;
+ break;
+ case 80:
+ this.$ = i.LINETYPE.DOTTED_POINT;
+ break;
+ case 81:
+ this.$ = i.parseMessage(s[o].trim().substring(1));
+ break;
+ case 82:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 83:
+ i.parseDirective(s[o], "type_directive");
+ break;
+ case 84:
+ (s[o] = s[o].trim().replace(/'/g, '"')), i.parseDirective(s[o], "arg_directive");
+ break;
+ case 85:
+ i.parseDirective("}%%", "close_directive", "sequence");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 1: [3] },
+ { 3: 8, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 3: 9, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ { 3: 10, 4: e, 5: a, 6: 4, 7: i, 14: 6, 86: r },
+ t([1, 4, 5, 19, 20, 24, 27, 29, 35, 36, 37, 39, 41, 42, 43, 44, 45, 47, 49, 50, 52, 56, 58, 59, 60, 65, 66, 67, 68, 76, 86], s, {
+ 8: 11,
+ }),
+ { 15: 12, 87: [1, 13] },
+ { 87: [2, 82] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ {
+ 1: [2, 4],
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 16: 54, 17: [1, 55], 89: R },
+ t([17, 89], [2, 83]),
+ t(Y, [2, 6]),
+ {
+ 6: 43,
+ 10: 57,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ t(Y, [2, 8]),
+ t(Y, [2, 9]),
+ t(Y, [2, 17]),
+ { 13: 58, 56: k, 58: L, 59: I },
+ { 21: [1, 59] },
+ { 5: [1, 60] },
+ { 5: [1, 63], 25: [1, 61], 26: [1, 62] },
+ { 28: 64, 76: D },
+ { 28: 65, 76: D },
+ { 5: [1, 66] },
+ { 5: [1, 67] },
+ { 5: [1, 68] },
+ { 5: [1, 69] },
+ { 5: [1, 70] },
+ t(Y, [2, 32]),
+ t(Y, [2, 33]),
+ { 38: [1, 71] },
+ { 40: [1, 72] },
+ t(Y, [2, 36]),
+ { 21: [1, 73] },
+ { 21: [1, 74] },
+ { 21: [1, 75] },
+ { 21: [1, 76] },
+ { 21: [1, 77] },
+ { 21: [1, 78] },
+ { 21: [1, 79] },
+ { 21: [1, 80] },
+ t(Y, [2, 45]),
+ { 28: 81, 76: D },
+ { 28: 82, 76: D },
+ { 28: 83, 76: D },
+ {
+ 73: 84,
+ 77: [1, 85],
+ 78: [1, 86],
+ 79: [1, 87],
+ 80: [1, 88],
+ 81: [1, 89],
+ 82: [1, 90],
+ 83: [1, 91],
+ 84: [1, 92],
+ },
+ { 61: 93, 63: [1, 94], 71: [1, 95], 72: [1, 96] },
+ { 28: 97, 76: D },
+ { 28: 98, 76: D },
+ { 28: 99, 76: D },
+ { 28: 100, 76: D },
+ t([5, 57, 70, 77, 78, 79, 80, 81, 82, 83, 84, 85], [2, 72]),
+ { 5: [1, 101] },
+ { 18: 102, 88: [1, 103] },
+ { 5: [2, 85] },
+ t(Y, [2, 7]),
+ t(Y, [2, 18]),
+ t($, [2, 10], { 11: 104 }),
+ t(Y, [2, 20]),
+ { 5: [1, 106], 25: [1, 105] },
+ { 5: [1, 107] },
+ t(Y, [2, 24]),
+ { 5: [1, 108] },
+ { 5: [1, 109] },
+ t(Y, [2, 27]),
+ t(Y, [2, 28]),
+ t(Y, [2, 29]),
+ t(Y, [2, 30]),
+ t(Y, [2, 31]),
+ t(Y, [2, 34]),
+ t(Y, [2, 35]),
+ t(C, s, { 8: 110 }),
+ t(C, s, { 8: 111 }),
+ t(C, s, { 8: 112 }),
+ t(V, s, { 46: 113, 8: 114 }),
+ t(B, s, { 48: 115, 8: 116 }),
+ t(B, s, { 8: 116, 48: 117 }),
+ t(F, s, { 51: 118, 8: 119 }),
+ t(C, s, { 8: 120 }),
+ { 5: [1, 122], 57: [1, 121] },
+ { 5: [1, 124], 57: [1, 123] },
+ { 5: [1, 125] },
+ { 28: 128, 74: [1, 126], 75: [1, 127], 76: D },
+ t(W, [2, 73]),
+ t(W, [2, 74]),
+ t(W, [2, 75]),
+ t(W, [2, 76]),
+ t(W, [2, 77]),
+ t(W, [2, 78]),
+ t(W, [2, 79]),
+ t(W, [2, 80]),
+ { 28: 129, 76: D },
+ { 28: 131, 64: 130, 76: D },
+ { 76: [2, 67] },
+ { 76: [2, 68] },
+ { 62: 132, 85: q },
+ { 62: 134, 85: q },
+ { 62: 135, 85: q },
+ { 62: 136, 85: q },
+ t(z, [2, 15]),
+ { 16: 137, 89: R },
+ { 89: [2, 84] },
+ { 4: [1, 140], 5: [1, 142], 12: 139, 13: 141, 22: [1, 138], 56: k, 58: L, 59: I },
+ { 5: [1, 143] },
+ t(Y, [2, 22]),
+ t(Y, [2, 23]),
+ t(Y, [2, 25]),
+ t(Y, [2, 26]),
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 144],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 145],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 146],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 147] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 50],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 55: [1, 148],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 149] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 48],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 54: [1, 150],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 22: [1, 151] },
+ { 22: [1, 152] },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [2, 46],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 53: [1, 153],
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ {
+ 4: n,
+ 5: o,
+ 6: 43,
+ 9: 14,
+ 10: 16,
+ 13: 18,
+ 14: 6,
+ 19: c,
+ 20: l,
+ 22: [1, 154],
+ 23: 21,
+ 24: h,
+ 27: d,
+ 28: 47,
+ 29: p,
+ 30: 25,
+ 31: 26,
+ 32: 27,
+ 33: 28,
+ 34: 29,
+ 35: g,
+ 36: u,
+ 37: x,
+ 39: y,
+ 41: m,
+ 42: f,
+ 43: b,
+ 44: T,
+ 45: E,
+ 47: w,
+ 49: _,
+ 50: v,
+ 52: P,
+ 56: k,
+ 58: L,
+ 59: I,
+ 60: M,
+ 65: N,
+ 66: A,
+ 67: S,
+ 68: O,
+ 76: D,
+ 86: r,
+ },
+ { 21: [1, 155] },
+ t(Y, [2, 53]),
+ { 21: [1, 156] },
+ t(Y, [2, 55]),
+ t(Y, [2, 56]),
+ { 28: 157, 76: D },
+ { 28: 158, 76: D },
+ { 62: 159, 85: q },
+ { 62: 160, 85: q },
+ { 62: 161, 85: q },
+ { 70: [1, 162], 85: [2, 66] },
+ { 5: [2, 59] },
+ { 5: [2, 81] },
+ { 5: [2, 60] },
+ { 5: [2, 61] },
+ { 5: [2, 62] },
+ { 5: [1, 163] },
+ t(Y, [2, 19]),
+ t($, [2, 11]),
+ { 13: 164, 56: k, 58: L, 59: I },
+ t($, [2, 13]),
+ t($, [2, 14]),
+ t(Y, [2, 21]),
+ t(Y, [2, 37]),
+ t(Y, [2, 38]),
+ t(Y, [2, 39]),
+ t(Y, [2, 40]),
+ { 21: [1, 165] },
+ t(Y, [2, 41]),
+ { 21: [1, 166] },
+ t(Y, [2, 42]),
+ t(Y, [2, 43]),
+ { 21: [1, 167] },
+ t(Y, [2, 44]),
+ { 5: [1, 168] },
+ { 5: [1, 169] },
+ { 62: 170, 85: q },
+ { 62: 171, 85: q },
+ { 5: [2, 71] },
+ { 5: [2, 57] },
+ { 5: [2, 58] },
+ { 28: 172, 76: D },
+ t(z, [2, 16]),
+ t($, [2, 12]),
+ t(V, s, { 8: 114, 46: 173 }),
+ t(B, s, { 8: 116, 48: 174 }),
+ t(F, s, { 8: 119, 51: 175 }),
+ t(Y, [2, 52]),
+ t(Y, [2, 54]),
+ { 5: [2, 69] },
+ { 5: [2, 70] },
+ { 85: [2, 65] },
+ { 22: [2, 51] },
+ { 22: [2, 49] },
+ { 22: [2, 47] },
+ ],
+ defaultActions: {
+ 7: [2, 82],
+ 8: [2, 1],
+ 9: [2, 2],
+ 10: [2, 3],
+ 56: [2, 85],
+ 95: [2, 67],
+ 96: [2, 68],
+ 103: [2, 84],
+ 132: [2, 59],
+ 133: [2, 81],
+ 134: [2, 60],
+ 135: [2, 61],
+ 136: [2, 62],
+ 159: [2, 71],
+ 160: [2, 57],
+ 161: [2, 58],
+ 170: [2, 69],
+ 171: [2, 70],
+ 172: [2, 65],
+ 173: [2, 51],
+ 174: [2, 49],
+ 175: [2, 47],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var a = new Error(t);
+ throw ((a.hash = e), a);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ a = [],
+ i = [null],
+ r = [],
+ s = this.table,
+ n = "",
+ o = 0,
+ c = 0,
+ l = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var p in this.yy) Object.prototype.hasOwnProperty.call(this.yy, p) && (d.yy[p] = this.yy[p]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var g = h.yylloc;
+ r.push(g);
+ var u = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var x, y, m, f, b, T, E, w, _, v = {}; ; ) {
+ if (
+ ((y = e[e.length - 1]),
+ this.defaultActions[y]
+ ? (m = this.defaultActions[y])
+ : (null == x &&
+ ((_ = void 0),
+ "number" != typeof (_ = a.pop() || h.lex() || 1) &&
+ (_ instanceof Array && (_ = (a = _).pop()), (_ = this.symbols_[_] || _)),
+ (x = _)),
+ (m = s[y] && s[y][x])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var P;
+ for (b in ((w = []), s[y])) this.terminals_[b] && b > 2 && w.push("'" + this.terminals_[b] + "'");
+ (P = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ w.join(", ") +
+ ", got '" +
+ (this.terminals_[x] || x) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == x ? "end of input" : "'" + (this.terminals_[x] || x) + "'")),
+ this.parseError(P, {
+ text: h.match,
+ token: this.terminals_[x] || x,
+ line: h.yylineno,
+ loc: g,
+ expected: w,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + y + ", token: " + x);
+ switch (m[0]) {
+ case 1:
+ e.push(x),
+ i.push(h.yytext),
+ r.push(h.yylloc),
+ e.push(m[1]),
+ (x = null),
+ (c = h.yyleng),
+ (n = h.yytext),
+ (o = h.yylineno),
+ (g = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((T = this.productions_[m[1]][1]),
+ (v.$ = i[i.length - T]),
+ (v._$ = {
+ first_line: r[r.length - (T || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (T || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ u && (v._$.range = [r[r.length - (T || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (f = this.performAction.apply(v, [n, c, o, d.yy, m[1], i, r].concat(l))))
+ )
+ return f;
+ T && ((e = e.slice(0, -1 * T * 2)), (i = i.slice(0, -1 * T)), (r = r.slice(0, -1 * T))),
+ e.push(this.productions_[m[1]][0]),
+ i.push(v.$),
+ r.push(v._$),
+ (E = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(E);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ U = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ a = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ a.length - 1 && (this.yylineno -= a.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: a
+ ? (a.length === i.length ? this.yylloc.first_column : 0) + i[i.length - a.length].length - a[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var a, i, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (a = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ a)
+ )
+ return a;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, a, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((a = this._input.match(this.rules[r[s]])) && (!e || a[0].length > e[0].length)) {
+ if (((e = a), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(a, r[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, r[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, a, i) {
+ switch (a) {
+ case 0:
+ return this.begin("open_directive"), 86;
+ case 1:
+ return this.begin("type_directive"), 87;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 17;
+ case 3:
+ return this.popState(), this.popState(), 89;
+ case 4:
+ return 88;
+ case 5:
+ case 56:
+ case 69:
+ return 5;
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ break;
+ case 11:
+ return 25;
+ case 12:
+ return this.begin("LINE"), 20;
+ case 13:
+ return this.begin("ID"), 56;
+ case 14:
+ return this.begin("ID"), 58;
+ case 15:
+ return 19;
+ case 16:
+ return this.begin("ID"), 59;
+ case 17:
+ return (e.yytext = e.yytext.trim()), this.begin("ALIAS"), 76;
+ case 18:
+ return this.popState(), this.popState(), this.begin("LINE"), 57;
+ case 19:
+ return this.popState(), this.popState(), 5;
+ case 20:
+ return this.begin("LINE"), 42;
+ case 21:
+ return this.begin("LINE"), 43;
+ case 22:
+ return this.begin("LINE"), 44;
+ case 23:
+ return this.begin("LINE"), 45;
+ case 24:
+ return this.begin("LINE"), 55;
+ case 25:
+ return this.begin("LINE"), 47;
+ case 26:
+ return this.begin("LINE"), 49;
+ case 27:
+ return this.begin("LINE"), 54;
+ case 28:
+ return this.begin("LINE"), 50;
+ case 29:
+ return this.begin("LINE"), 53;
+ case 30:
+ return this.begin("LINE"), 52;
+ case 31:
+ return this.popState(), 21;
+ case 32:
+ return 22;
+ case 33:
+ return 71;
+ case 34:
+ return 72;
+ case 35:
+ return 65;
+ case 36:
+ return 66;
+ case 37:
+ return 67;
+ case 38:
+ return 68;
+ case 39:
+ return 63;
+ case 40:
+ return 60;
+ case 41:
+ return this.begin("ID"), 27;
+ case 42:
+ return this.begin("ID"), 29;
+ case 43:
+ return 35;
+ case 44:
+ return 36;
+ case 45:
+ return this.begin("acc_title"), 37;
+ case 46:
+ return this.popState(), "acc_title_value";
+ case 47:
+ return this.begin("acc_descr"), 39;
+ case 48:
+ return this.popState(), "acc_descr_value";
+ case 49:
+ this.begin("acc_descr_multiline");
+ break;
+ case 50:
+ this.popState();
+ break;
+ case 51:
+ return "acc_descr_multiline_value";
+ case 52:
+ return 7;
+ case 53:
+ return 24;
+ case 54:
+ return 26;
+ case 55:
+ return 70;
+ case 57:
+ return (e.yytext = e.yytext.trim()), 76;
+ case 58:
+ return 79;
+ case 59:
+ return 80;
+ case 60:
+ return 77;
+ case 61:
+ return 78;
+ case 62:
+ return 81;
+ case 63:
+ return 82;
+ case 64:
+ return 83;
+ case 65:
+ return 84;
+ case 66:
+ return 85;
+ case 67:
+ return 74;
+ case 68:
+ return 75;
+ case 70:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:((?!\n)\s)+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[0-9]+(?=[ \n]+))/i,
+ /^(?:box\b)/i,
+ /^(?:participant\b)/i,
+ /^(?:actor\b)/i,
+ /^(?:create\b)/i,
+ /^(?:destroy\b)/i,
+ /^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,
+ /^(?:as\b)/i,
+ /^(?:(?:))/i,
+ /^(?:loop\b)/i,
+ /^(?:rect\b)/i,
+ /^(?:opt\b)/i,
+ /^(?:alt\b)/i,
+ /^(?:else\b)/i,
+ /^(?:par\b)/i,
+ /^(?:par_over\b)/i,
+ /^(?:and\b)/i,
+ /^(?:critical\b)/i,
+ /^(?:option\b)/i,
+ /^(?:break\b)/i,
+ /^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,
+ /^(?:end\b)/i,
+ /^(?:left of\b)/i,
+ /^(?:right of\b)/i,
+ /^(?:links\b)/i,
+ /^(?:link\b)/i,
+ /^(?:properties\b)/i,
+ /^(?:details\b)/i,
+ /^(?:over\b)/i,
+ /^(?:note\b)/i,
+ /^(?:activate\b)/i,
+ /^(?:deactivate\b)/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:title:\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:sequenceDiagram\b)/i,
+ /^(?:autonumber\b)/i,
+ /^(?:off\b)/i,
+ /^(?:,)/i,
+ /^(?:;)/i,
+ /^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,
+ /^(?:->>)/i,
+ /^(?:-->>)/i,
+ /^(?:->)/i,
+ /^(?:-->)/i,
+ /^(?:-[x])/i,
+ /^(?:--[x])/i,
+ /^(?:-[\)])/i,
+ /^(?:--[\)])/i,
+ /^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,
+ /^(?:\+)/i,
+ /^(?:-)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [50, 51], inclusive: !1 },
+ acc_descr: { rules: [48], inclusive: !1 },
+ acc_title: { rules: [46], inclusive: !1 },
+ open_directive: { rules: [1, 8], inclusive: !1 },
+ type_directive: { rules: [2, 3, 8], inclusive: !1 },
+ arg_directive: { rules: [3, 4, 8], inclusive: !1 },
+ ID: { rules: [7, 8, 17], inclusive: !1 },
+ ALIAS: { rules: [7, 8, 18, 19], inclusive: !1 },
+ LINE: { rules: [7, 8, 31], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 47, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function j() {
+ this.yy = {};
+ }
+ return (H.lexer = U), (j.prototype = H), (H.Parser = j), new j();
+ })());
+ o.parser = o;
+ const c = o;
+ let l,
+ h,
+ d,
+ p,
+ g,
+ u = {},
+ x = {},
+ y = {},
+ m = [],
+ f = [],
+ b = !1;
+ const T = function (t, e, a, i) {
+ let r = d;
+ const s = u[t];
+ if (s) {
+ if (d && s.box && d !== s.box)
+ throw new Error(
+ "A same participant should only be defined in one Box: " +
+ s.name +
+ " can't be in '" +
+ s.box.name +
+ "' and in '" +
+ d.name +
+ "' at the same time.",
+ );
+ if (((r = s.box ? s.box : d), (s.box = r), s && e === s.name && null == a)) return;
+ }
+ (null != a && null != a.text) || (a = { text: e, wrap: null, type: i }),
+ (null != i && null != a.text) || (a = { text: e, wrap: null, type: i }),
+ (u[t] = {
+ box: r,
+ name: e,
+ description: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ prevActor: l,
+ links: {},
+ properties: {},
+ actorCnt: null,
+ rectData: null,
+ type: i || "participant",
+ }),
+ l && u[l] && (u[l].nextActor = t),
+ d && d.actorKeys.push(t),
+ (l = t);
+ },
+ E = function (t, e, a = { text: void 0, wrap: void 0 }, i) {
+ if (
+ i === v.ACTIVE_END &&
+ ((t) => {
+ let e,
+ a = 0;
+ for (e = 0; e < f.length; e++)
+ f[e].type === v.ACTIVE_START && f[e].from.actor === t && a++, f[e].type === v.ACTIVE_END && f[e].from.actor === t && a--;
+ return a;
+ })(t.actor) < 1
+ ) {
+ let e = new Error("Trying to inactivate an inactive participant (" + t.actor + ")");
+ throw (
+ ((e.hash = {
+ text: "->>-",
+ token: "->>-",
+ line: "1",
+ loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },
+ expected: ["'ACTIVE_PARTICIPANT'"],
+ }),
+ e)
+ );
+ }
+ return (
+ f.push({
+ from: t,
+ to: e,
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ type: i,
+ }),
+ !0
+ );
+ },
+ w = function (t) {
+ return u[t];
+ },
+ _ = () => (void 0 !== h ? h : (0, i.c)().sequence.wrap),
+ v = {
+ SOLID: 0,
+ DOTTED: 1,
+ NOTE: 2,
+ SOLID_CROSS: 3,
+ DOTTED_CROSS: 4,
+ SOLID_OPEN: 5,
+ DOTTED_OPEN: 6,
+ LOOP_START: 10,
+ LOOP_END: 11,
+ ALT_START: 12,
+ ALT_ELSE: 13,
+ ALT_END: 14,
+ OPT_START: 15,
+ OPT_END: 16,
+ ACTIVE_START: 17,
+ ACTIVE_END: 18,
+ PAR_START: 19,
+ PAR_AND: 20,
+ PAR_END: 21,
+ RECT_START: 22,
+ RECT_END: 23,
+ SOLID_POINT: 24,
+ DOTTED_POINT: 25,
+ AUTONUMBER: 26,
+ CRITICAL_START: 27,
+ CRITICAL_OPTION: 28,
+ CRITICAL_END: 29,
+ BREAK_START: 30,
+ BREAK_END: 31,
+ PAR_OVER_START: 32,
+ },
+ P = function (t, e, a) {
+ a.text, (void 0 === a.wrap && _()) || a.wrap;
+ const i = [].concat(t, t);
+ f.push({
+ from: i[0],
+ to: i[1],
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ type: v.NOTE,
+ placement: e,
+ });
+ },
+ k = function (t, e) {
+ const a = w(t);
+ try {
+ let t = (0, i.d)(e.text, (0, i.c)());
+ (t = t.replace(/&/g, "&")), (t = t.replace(/=/g, "=")), L(a, JSON.parse(t));
+ } catch (t) {
+ i.l.error("error while parsing actor link text", t);
+ }
+ };
+ function L(t, e) {
+ if (null == t.links) t.links = e;
+ else for (let a in e) t.links[a] = e[a];
+ }
+ const I = function (t, e) {
+ const a = w(t);
+ try {
+ let t = (0, i.d)(e.text, (0, i.c)());
+ M(a, JSON.parse(t));
+ } catch (t) {
+ i.l.error("error while parsing actor properties text", t);
+ }
+ };
+ function M(t, e) {
+ if (null == t.properties) t.properties = e;
+ else for (let a in e) t.properties[a] = e[a];
+ }
+ const N = function (t, e) {
+ const a = w(t),
+ r = document.getElementById(e.text);
+ try {
+ const t = r.innerHTML,
+ e = JSON.parse(t);
+ e.properties && M(a, e.properties), e.links && L(a, e.links);
+ } catch (t) {
+ i.l.error("error while parsing actor details text", t);
+ }
+ },
+ A = function (t) {
+ if (Array.isArray(t))
+ t.forEach(function (t) {
+ A(t);
+ });
+ else
+ switch (t.type) {
+ case "sequenceIndex":
+ f.push({
+ from: void 0,
+ to: void 0,
+ message: {
+ start: t.sequenceIndex,
+ step: t.sequenceIndexStep,
+ visible: t.sequenceVisible,
+ },
+ wrap: !1,
+ type: t.signalType,
+ });
+ break;
+ case "addParticipant":
+ T(t.actor, t.actor, t.description, t.draw);
+ break;
+ case "createParticipant":
+ if (u[t.actor])
+ throw new Error(
+ "It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior",
+ );
+ (p = t.actor), T(t.actor, t.actor, t.description, t.draw), (x[t.actor] = f.length);
+ break;
+ case "destroyParticipant":
+ (g = t.actor), (y[t.actor] = f.length);
+ break;
+ case "activeStart":
+ case "activeEnd":
+ E(t.actor, void 0, void 0, t.signalType);
+ break;
+ case "addNote":
+ P(t.actor, t.placement, t.text);
+ break;
+ case "addLinks":
+ k(t.actor, t.text);
+ break;
+ case "addALink":
+ !(function (t, e) {
+ const a = w(t);
+ try {
+ const t = {};
+ let o = (0, i.d)(e.text, (0, i.c)());
+ var r = o.indexOf("@");
+ (o = o.replace(/&/g, "&")), (o = o.replace(/=/g, "="));
+ var s = o.slice(0, r - 1).trim(),
+ n = o.slice(r + 1).trim();
+ (t[s] = n), L(a, t);
+ } catch (t) {
+ i.l.error("error while parsing actor link text", t);
+ }
+ })(t.actor, t.text);
+ break;
+ case "addProperties":
+ I(t.actor, t.text);
+ break;
+ case "addDetails":
+ N(t.actor, t.text);
+ break;
+ case "addMessage":
+ if (p) {
+ if (t.to !== p)
+ throw new Error(
+ "The created participant " +
+ p +
+ " does not have an associated creating message after its declaration. Please check the sequence diagram.",
+ );
+ p = void 0;
+ } else if (g) {
+ if (t.to !== g && t.from !== g)
+ throw new Error(
+ "The destroyed participant " +
+ g +
+ " does not have an associated destroying message after its declaration. Please check the sequence diagram.",
+ );
+ g = void 0;
+ }
+ E(t.from, t.to, t.msg, t.signalType);
+ break;
+ case "boxStart":
+ (e = t.boxData),
+ m.push({
+ name: e.text,
+ wrap: (void 0 === e.wrap && _()) || !!e.wrap,
+ fill: e.color,
+ actorKeys: [],
+ }),
+ (d = m.slice(-1)[0]);
+ break;
+ case "boxEnd":
+ d = void 0;
+ break;
+ case "loopStart":
+ E(void 0, void 0, t.loopText, t.signalType);
+ break;
+ case "loopEnd":
+ case "rectEnd":
+ case "optEnd":
+ case "altEnd":
+ case "parEnd":
+ case "criticalEnd":
+ case "breakEnd":
+ E(void 0, void 0, void 0, t.signalType);
+ break;
+ case "rectStart":
+ E(void 0, void 0, t.color, t.signalType);
+ break;
+ case "optStart":
+ E(void 0, void 0, t.optText, t.signalType);
+ break;
+ case "altStart":
+ case "else":
+ E(void 0, void 0, t.altText, t.signalType);
+ break;
+ case "setAccTitle":
+ (0, i.s)(t.text);
+ break;
+ case "parStart":
+ case "and":
+ E(void 0, void 0, t.parText, t.signalType);
+ break;
+ case "criticalStart":
+ E(void 0, void 0, t.criticalText, t.signalType);
+ break;
+ case "option":
+ E(void 0, void 0, t.optionText, t.signalType);
+ break;
+ case "breakStart":
+ E(void 0, void 0, t.breakText, t.signalType);
+ }
+ var e;
+ },
+ S = {
+ addActor: T,
+ addMessage: function (t, e, a, i) {
+ f.push({
+ from: t,
+ to: e,
+ message: a.text,
+ wrap: (void 0 === a.wrap && _()) || !!a.wrap,
+ answer: i,
+ });
+ },
+ addSignal: E,
+ addLinks: k,
+ addDetails: N,
+ addProperties: I,
+ autoWrap: _,
+ setWrap: function (t) {
+ h = t;
+ },
+ enableSequenceNumbers: function () {
+ b = !0;
+ },
+ disableSequenceNumbers: function () {
+ b = !1;
+ },
+ showSequenceNumbers: () => b,
+ getMessages: function () {
+ return f;
+ },
+ getActors: function () {
+ return u;
+ },
+ getCreatedActors: function () {
+ return x;
+ },
+ getDestroyedActors: function () {
+ return y;
+ },
+ getActor: w,
+ getActorKeys: function () {
+ return Object.keys(u);
+ },
+ getActorProperty: function (t, e) {
+ if (void 0 !== t && void 0 !== t.properties) return t.properties[e];
+ },
+ getAccTitle: i.g,
+ getBoxes: function () {
+ return m;
+ },
+ getDiagramTitle: i.t,
+ setDiagramTitle: i.r,
+ parseDirective: function (t, e, a) {
+ i.m.parseDirective(this, t, e, a);
+ },
+ getConfig: () => (0, i.c)().sequence,
+ clear: function () {
+ (u = {}), (x = {}), (y = {}), (m = []), (f = []), (b = !1), (0, i.v)();
+ },
+ parseMessage: function (t) {
+ const e = t.trim(),
+ a = {
+ text: e.replace(/^:?(?:no)?wrap:/, "").trim(),
+ wrap: null !== e.match(/^:?wrap:/) || (null === e.match(/^:?nowrap:/) && void 0),
+ };
+ return i.l.debug("parseMessage:", a), a;
+ },
+ parseBoxData: function (t) {
+ const e = t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);
+ let a = null != e && e[1] ? e[1].trim() : "transparent",
+ r = null != e && e[2] ? e[2].trim() : void 0;
+ if (window && window.CSS) window.CSS.supports("color", a) || ((a = "transparent"), (r = t.trim()));
+ else {
+ const e = new Option().style;
+ (e.color = a), e.color !== a && ((a = "transparent"), (r = t.trim()));
+ }
+ return {
+ color: a,
+ text: void 0 !== r ? (0, i.d)(r.replace(/^:?(?:no)?wrap:/, ""), (0, i.c)()) : void 0,
+ wrap: void 0 !== r ? null !== r.match(/^:?wrap:/) || (null === r.match(/^:?nowrap:/) && void 0) : void 0,
+ };
+ },
+ LINETYPE: v,
+ ARROWTYPE: { FILLED: 0, OPEN: 1 },
+ PLACEMENT: { LEFTOF: 0, RIGHTOF: 1, OVER: 2 },
+ addNote: P,
+ setAccTitle: i.s,
+ apply: A,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ hasAtLeastOneBox: function () {
+ return m.length > 0;
+ },
+ hasAtLeastOneBoxWithTitle: function () {
+ return m.some((t) => t.name);
+ },
+ },
+ O = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ D = (t, e) => {
+ (0, i.H)(() => {
+ const a = document.querySelectorAll(t);
+ 0 !== a.length &&
+ (a[0].addEventListener("mouseover", function () {
+ R("actor" + e + "_popup");
+ }),
+ a[0].addEventListener("mouseout", function () {
+ Y("actor" + e + "_popup");
+ }));
+ });
+ },
+ R = function (t) {
+ var e = document.getElementById(t);
+ null != e && (e.style.display = "block");
+ },
+ Y = function (t) {
+ var e = document.getElementById(t);
+ null != e && (e.style.display = "none");
+ },
+ $ = function (t, e) {
+ let a = 0,
+ r = 0;
+ const s = e.text.split(i.e.lineBreakRegex),
+ [n, o] = (0, i.F)(e.fontSize);
+ let c = [],
+ l = 0,
+ h = () => e.y;
+ if (void 0 !== e.valign && void 0 !== e.textMargin && e.textMargin > 0)
+ switch (e.valign) {
+ case "top":
+ case "start":
+ h = () => Math.round(e.y + e.textMargin);
+ break;
+ case "middle":
+ case "center":
+ h = () => Math.round(e.y + (a + r + e.textMargin) / 2);
+ break;
+ case "bottom":
+ case "end":
+ h = () => Math.round(e.y + (a + r + 2 * e.textMargin) - e.textMargin);
+ }
+ if (void 0 !== e.anchor && void 0 !== e.textMargin && void 0 !== e.width)
+ switch (e.anchor) {
+ case "left":
+ case "start":
+ (e.x = Math.round(e.x + e.textMargin)), (e.anchor = "start"), (e.dominantBaseline = "middle"), (e.alignmentBaseline = "middle");
+ break;
+ case "middle":
+ case "center":
+ (e.x = Math.round(e.x + e.width / 2)), (e.anchor = "middle"), (e.dominantBaseline = "middle"), (e.alignmentBaseline = "middle");
+ break;
+ case "right":
+ case "end":
+ (e.x = Math.round(e.x + e.width - e.textMargin)),
+ (e.anchor = "end"),
+ (e.dominantBaseline = "middle"),
+ (e.alignmentBaseline = "middle");
+ }
+ for (let [d, p] of s.entries()) {
+ void 0 !== e.textMargin && 0 === e.textMargin && void 0 !== n && (l = d * n);
+ const s = t.append("text");
+ s.attr("x", e.x),
+ s.attr("y", h()),
+ void 0 !== e.anchor &&
+ s.attr("text-anchor", e.anchor).attr("dominant-baseline", e.dominantBaseline).attr("alignment-baseline", e.alignmentBaseline),
+ void 0 !== e.fontFamily && s.style("font-family", e.fontFamily),
+ void 0 !== o && s.style("font-size", o),
+ void 0 !== e.fontWeight && s.style("font-weight", e.fontWeight),
+ void 0 !== e.fill && s.attr("fill", e.fill),
+ void 0 !== e.class && s.attr("class", e.class),
+ void 0 !== e.dy ? s.attr("dy", e.dy) : 0 !== l && s.attr("dy", l);
+ const g = p || i.Z;
+ if (e.tspan) {
+ const t = s.append("tspan");
+ t.attr("x", e.x), void 0 !== e.fill && t.attr("fill", e.fill), t.text(g);
+ } else s.text(g);
+ void 0 !== e.valign && void 0 !== e.textMargin && e.textMargin > 0 && ((r += (s._groups || s)[0][0].getBBox().height), (a = r)),
+ c.push(s);
+ }
+ return c;
+ },
+ C = function (t, e) {
+ const a = t.append("polygon");
+ var i, r, s, n;
+ return (
+ a.attr(
+ "points",
+ (i = e.x) +
+ "," +
+ (r = e.y) +
+ " " +
+ (i + (s = e.width)) +
+ "," +
+ r +
+ " " +
+ (i + s) +
+ "," +
+ (r + (n = e.height) - 7) +
+ " " +
+ (i + s - 8.4) +
+ "," +
+ (r + n) +
+ " " +
+ i +
+ "," +
+ (r + n),
+ ),
+ a.attr("class", "labelBox"),
+ (e.y = e.y + e.height / 2),
+ $(t, e),
+ a
+ );
+ };
+ let V = -1;
+ const B = (t, e, a, i) => {
+ t.select &&
+ a.forEach((a) => {
+ const r = e[a],
+ s = t.select("#actor" + r.actorCnt);
+ !i.mirrorActors && r.stopy ? s.attr("y2", r.stopy + r.height / 2) : i.mirrorActors && s.attr("y2", r.stopy);
+ });
+ },
+ F = function (t, e) {
+ (0, s.a)(t, e);
+ },
+ W = (function () {
+ function t(t, e, a, i, s, n, o) {
+ r(
+ e
+ .append("text")
+ .attr("x", a + s / 2)
+ .attr("y", i + n / 2 + 5)
+ .style("text-anchor", "middle")
+ .text(t),
+ o,
+ );
+ }
+ function e(t, e, a, s, n, o, c, l) {
+ const { actorFontSize: h, actorFontFamily: d, actorFontWeight: p } = l,
+ [g, u] = (0, i.F)(h),
+ x = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < x.length; t++) {
+ const i = t * g - (g * (x.length - 1)) / 2,
+ l = e
+ .append("text")
+ .attr("x", a + n / 2)
+ .attr("y", s)
+ .style("text-anchor", "middle")
+ .style("font-size", u)
+ .style("font-weight", p)
+ .style("font-family", d);
+ l
+ .append("tspan")
+ .attr("x", a + n / 2)
+ .attr("dy", i)
+ .text(x[t]),
+ l
+ .attr("y", s + o / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ r(l, c);
+ }
+ }
+ function a(t, a, i, s, n, o, c, l) {
+ const h = a.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", n)
+ .attr("height", o)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, n, o, c, l),
+ r(d, c);
+ }
+ function r(t, e) {
+ for (const a in e) e.hasOwnProperty(a) && t.attr(a, e[a]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? a : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ q = (function () {
+ function t(t, e, a, i, s, n, o) {
+ r(e.append("text").attr("x", a).attr("y", i).style("text-anchor", "start").text(t), o);
+ }
+ function e(t, e, a, s, n, o, c, l) {
+ const { actorFontSize: h, actorFontFamily: d, actorFontWeight: p } = l,
+ g = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < g.length; t++) {
+ const i = t * h - (h * (g.length - 1)) / 2,
+ n = e
+ .append("text")
+ .attr("x", a)
+ .attr("y", s)
+ .style("text-anchor", "start")
+ .style("font-size", h)
+ .style("font-weight", p)
+ .style("font-family", d);
+ n.append("tspan").attr("x", a).attr("dy", i).text(g[t]),
+ n
+ .attr("y", s + o / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ r(n, c);
+ }
+ }
+ function a(t, a, i, s, n, o, c, l) {
+ const h = a.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", n)
+ .attr("height", o)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, 0, o, c, l),
+ r(d, c);
+ }
+ function r(t, e) {
+ for (const a in e) e.hasOwnProperty(a) && t.attr(a, e[a]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? a : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ z = O,
+ H = function (t, e, a, i) {
+ switch (e.type) {
+ case "actor":
+ return (function (t, e, a, i) {
+ const r = i ? e.stopy : e.starty,
+ n = e.x + e.width / 2,
+ o = r + 80;
+ t.lower(),
+ i ||
+ (V++,
+ t
+ .append("line")
+ .attr("id", "actor" + V)
+ .attr("x1", n)
+ .attr("y1", o)
+ .attr("x2", n)
+ .attr("y2", 2e3)
+ .attr("class", "actor-line")
+ .attr("class", "200")
+ .attr("stroke-width", "0.5px")
+ .attr("stroke", "#999"),
+ (e.actorCnt = V));
+ const c = t.append("g");
+ c.attr("class", "actor-man");
+ const l = (0, s.g)();
+ (l.x = e.x),
+ (l.y = r),
+ (l.fill = "#eaeaea"),
+ (l.width = e.width),
+ (l.height = e.height),
+ (l.class = "actor"),
+ (l.rx = 3),
+ (l.ry = 3),
+ c
+ .append("line")
+ .attr("id", "actor-man-torso" + V)
+ .attr("x1", n)
+ .attr("y1", r + 25)
+ .attr("x2", n)
+ .attr("y2", r + 45),
+ c
+ .append("line")
+ .attr("id", "actor-man-arms" + V)
+ .attr("x1", n - 18)
+ .attr("y1", r + 33)
+ .attr("x2", n + 18)
+ .attr("y2", r + 33),
+ c
+ .append("line")
+ .attr("x1", n - 18)
+ .attr("y1", r + 60)
+ .attr("x2", n)
+ .attr("y2", r + 45),
+ c
+ .append("line")
+ .attr("x1", n)
+ .attr("y1", r + 45)
+ .attr("x2", n + 18 - 2)
+ .attr("y2", r + 60);
+ const h = c.append("circle");
+ h.attr("cx", e.x + e.width / 2), h.attr("cy", r + 10), h.attr("r", 15), h.attr("width", e.width), h.attr("height", e.height);
+ const d = c.node().getBBox();
+ return (e.height = d.height), W(a)(e.description, c, l.x, l.y + 35, l.width, l.height, { class: "actor" }, a), e.height;
+ })(t, e, a, i);
+ case "participant":
+ return (function (t, e, a, i) {
+ const r = i ? e.stopy : e.starty,
+ n = e.x + e.width / 2,
+ o = r + 5,
+ c = t.append("g").lower();
+ var l = c;
+ i ||
+ (V++,
+ l
+ .append("line")
+ .attr("id", "actor" + V)
+ .attr("x1", n)
+ .attr("y1", o)
+ .attr("x2", n)
+ .attr("y2", 2e3)
+ .attr("class", "actor-line")
+ .attr("class", "200")
+ .attr("stroke-width", "0.5px")
+ .attr("stroke", "#999"),
+ (l = c.append("g")),
+ (e.actorCnt = V),
+ null != e.links && (l.attr("id", "root-" + V), D("#root-" + V, V)));
+ const h = (0, s.g)();
+ var d = "actor";
+ null != e.properties && e.properties.class ? (d = e.properties.class) : (h.fill = "#eaeaea"),
+ (h.x = e.x),
+ (h.y = r),
+ (h.width = e.width),
+ (h.height = e.height),
+ (h.class = d),
+ (h.rx = 3),
+ (h.ry = 3);
+ const p = O(l, h);
+ if (((e.rectData = h), null != e.properties && e.properties.icon)) {
+ const t = e.properties.icon.trim();
+ "@" === t.charAt(0) ? (0, s.b)(l, h.x + h.width - 20, h.y + 10, t.substr(1)) : (0, s.c)(l, h.x + h.width - 20, h.y + 10, t);
+ }
+ W(a)(e.description, l, h.x, h.y, h.width, h.height, { class: "actor" }, a);
+ let g = e.height;
+ if (p.node) {
+ const t = p.node().getBBox();
+ (e.height = t.height), (g = t.height);
+ }
+ return g;
+ })(t, e, a, i);
+ }
+ },
+ U = function (t, e, a) {
+ const i = t.append("g");
+ F(i, e), e.name && W(a)(e.name, i, e.x, e.y + (e.textMaxHeight || 0) / 2, e.width, 0, { class: "text" }, a), i.lower();
+ },
+ j = function (t, e, a, i, r) {
+ if (void 0 === e.links || null === e.links || 0 === Object.keys(e.links).length) return { height: 0, width: 0 };
+ const s = e.links,
+ o = e.actorCnt,
+ c = e.rectData;
+ var l = "none";
+ r && (l = "block !important");
+ const h = t.append("g");
+ h.attr("id", "actor" + o + "_popup"), h.attr("class", "actorPopupMenu"), h.attr("display", l), D("#actor" + o + "_popup", o);
+ var d = "";
+ void 0 !== c.class && (d = " " + c.class);
+ let p = c.width > a ? c.width : a;
+ const g = h.append("rect");
+ if (
+ (g.attr("class", "actorPopupMenuPanel" + d),
+ g.attr("x", c.x),
+ g.attr("y", c.height),
+ g.attr("fill", c.fill),
+ g.attr("stroke", c.stroke),
+ g.attr("width", p),
+ g.attr("height", c.height),
+ g.attr("rx", c.rx),
+ g.attr("ry", c.ry),
+ null != s)
+ ) {
+ var u = 20;
+ for (let t in s) {
+ var x = h.append("a"),
+ y = (0, n.Nm)(s[t]);
+ x.attr("xlink:href", y), x.attr("target", "_blank"), q(i)(t, x, c.x + 10, c.height + u, p, 20, { class: "actor" }, i), (u += 30);
+ }
+ }
+ return g.attr("height", u), { height: c.height + u, width: p };
+ },
+ K = function (t) {
+ return t.append("g");
+ },
+ X = function (t, e, a, i, r) {
+ const n = (0, s.g)(),
+ o = e.anchored;
+ (n.x = e.startx), (n.y = e.starty), (n.class = "activation" + (r % 3)), (n.width = e.stopx - e.startx), (n.height = a - e.starty), O(o, n);
+ },
+ G = function (t, e, a, i) {
+ const {
+ boxMargin: r,
+ boxTextMargin: n,
+ labelBoxHeight: o,
+ labelBoxWidth: c,
+ messageFontFamily: l,
+ messageFontSize: h,
+ messageFontWeight: d,
+ } = i,
+ p = t.append("g"),
+ g = function (t, e, a, i) {
+ return p.append("line").attr("x1", t).attr("y1", e).attr("x2", a).attr("y2", i).attr("class", "loopLine");
+ };
+ g(e.startx, e.starty, e.stopx, e.starty),
+ g(e.stopx, e.starty, e.stopx, e.stopy),
+ g(e.startx, e.stopy, e.stopx, e.stopy),
+ g(e.startx, e.starty, e.startx, e.stopy),
+ void 0 !== e.sections &&
+ e.sections.forEach(function (t) {
+ g(e.startx, t.y, e.stopx, t.y).style("stroke-dasharray", "3, 3");
+ });
+ let u = (0, s.e)();
+ (u.text = a),
+ (u.x = e.startx),
+ (u.y = e.starty),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.tspan = !1),
+ (u.width = c || 50),
+ (u.height = o || 20),
+ (u.textMargin = n),
+ (u.class = "labelText"),
+ C(p, u),
+ (u = {
+ x: 0,
+ y: 0,
+ fill: void 0,
+ anchor: void 0,
+ style: "#666",
+ width: void 0,
+ height: void 0,
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ valign: void 0,
+ }),
+ (u.text = e.title),
+ (u.x = e.startx + c / 2 + (e.stopx - e.startx) / 2),
+ (u.y = e.starty + r + n),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.textMargin = n),
+ (u.class = "loopText"),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.wrap = !0);
+ let x = $(p, u);
+ return (
+ void 0 !== e.sectionTitles &&
+ e.sectionTitles.forEach(function (t, a) {
+ if (t.message) {
+ (u.text = t.message),
+ (u.x = e.startx + (e.stopx - e.startx) / 2),
+ (u.y = e.sections[a].y + r + n),
+ (u.class = "loopText"),
+ (u.anchor = "middle"),
+ (u.valign = "middle"),
+ (u.tspan = !1),
+ (u.fontFamily = l),
+ (u.fontSize = h),
+ (u.fontWeight = d),
+ (u.wrap = e.wrap),
+ (x = $(p, u));
+ let i = Math.round(x.map((t) => (t._groups || t)[0][0].getBBox().height).reduce((t, e) => t + e));
+ e.sections[a].height += i - (r + n);
+ }
+ }),
+ (e.height = Math.round(e.stopy - e.starty)),
+ p
+ );
+ },
+ J = F,
+ Z = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 9)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0 0 L 10 5 L 0 10 z");
+ },
+ Q = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "filled-head")
+ .attr("refX", 18)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ },
+ tt = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "sequencenumber")
+ .attr("refX", 15)
+ .attr("refY", 15)
+ .attr("markerWidth", 60)
+ .attr("markerHeight", 40)
+ .attr("orient", "auto")
+ .append("circle")
+ .attr("cx", 15)
+ .attr("cy", 15)
+ .attr("r", 6);
+ },
+ et = function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "crosshead")
+ .attr("markerWidth", 15)
+ .attr("markerHeight", 8)
+ .attr("orient", "auto")
+ .attr("refX", 4)
+ .attr("refY", 5)
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1pt")
+ .attr("d", "M 1,2 L 6,7 M 6,2 L 1,7");
+ },
+ at = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "database")
+ .attr("fill-rule", "evenodd")
+ .attr("clip-rule", "evenodd")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z",
+ );
+ },
+ it = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "computer")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z",
+ );
+ },
+ rt = function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "clock")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z",
+ );
+ };
+ n.Nm;
+ let st = {};
+ const nt = {
+ data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
+ verticalPos: 0,
+ sequenceItems: [],
+ activations: [],
+ models: {
+ getHeight: function () {
+ return (
+ Math.max.apply(null, 0 === this.actors.length ? [0] : this.actors.map((t) => t.height || 0)) +
+ (0 === this.loops.length ? 0 : this.loops.map((t) => t.height || 0).reduce((t, e) => t + e)) +
+ (0 === this.messages.length ? 0 : this.messages.map((t) => t.height || 0).reduce((t, e) => t + e)) +
+ (0 === this.notes.length ? 0 : this.notes.map((t) => t.height || 0).reduce((t, e) => t + e))
+ );
+ },
+ clear: function () {
+ (this.actors = []), (this.boxes = []), (this.loops = []), (this.messages = []), (this.notes = []);
+ },
+ addBox: function (t) {
+ this.boxes.push(t);
+ },
+ addActor: function (t) {
+ this.actors.push(t);
+ },
+ addLoop: function (t) {
+ this.loops.push(t);
+ },
+ addMessage: function (t) {
+ this.messages.push(t);
+ },
+ addNote: function (t) {
+ this.notes.push(t);
+ },
+ lastActor: function () {
+ return this.actors[this.actors.length - 1];
+ },
+ lastLoop: function () {
+ return this.loops[this.loops.length - 1];
+ },
+ lastMessage: function () {
+ return this.messages[this.messages.length - 1];
+ },
+ lastNote: function () {
+ return this.notes[this.notes.length - 1];
+ },
+ actors: [],
+ boxes: [],
+ loops: [],
+ messages: [],
+ notes: [],
+ },
+ init: function () {
+ (this.sequenceItems = []),
+ (this.activations = []),
+ this.models.clear(),
+ (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }),
+ (this.verticalPos = 0),
+ pt((0, i.c)());
+ },
+ updateVal: function (t, e, a, i) {
+ void 0 === t[e] ? (t[e] = a) : (t[e] = i(a, t[e]));
+ },
+ updateBounds: function (t, e, a, i) {
+ const r = this;
+ let s = 0;
+ function n(n) {
+ return function (o) {
+ s++;
+ const c = r.sequenceItems.length - s + 1;
+ r.updateVal(o, "starty", e - c * st.boxMargin, Math.min),
+ r.updateVal(o, "stopy", i + c * st.boxMargin, Math.max),
+ r.updateVal(nt.data, "startx", t - c * st.boxMargin, Math.min),
+ r.updateVal(nt.data, "stopx", a + c * st.boxMargin, Math.max),
+ "activation" !== n &&
+ (r.updateVal(o, "startx", t - c * st.boxMargin, Math.min),
+ r.updateVal(o, "stopx", a + c * st.boxMargin, Math.max),
+ r.updateVal(nt.data, "starty", e - c * st.boxMargin, Math.min),
+ r.updateVal(nt.data, "stopy", i + c * st.boxMargin, Math.max));
+ };
+ }
+ this.sequenceItems.forEach(n()), this.activations.forEach(n("activation"));
+ },
+ insert: function (t, e, a, r) {
+ const s = i.e.getMin(t, a),
+ n = i.e.getMax(t, a),
+ o = i.e.getMin(e, r),
+ c = i.e.getMax(e, r);
+ this.updateVal(nt.data, "startx", s, Math.min),
+ this.updateVal(nt.data, "starty", o, Math.min),
+ this.updateVal(nt.data, "stopx", n, Math.max),
+ this.updateVal(nt.data, "stopy", c, Math.max),
+ this.updateBounds(s, o, n, c);
+ },
+ newActivation: function (t, e, a) {
+ const i = a[t.from.actor],
+ r = gt(t.from.actor).length || 0,
+ s = i.x + i.width / 2 + ((r - 1) * st.activationWidth) / 2;
+ this.activations.push({
+ startx: s,
+ starty: this.verticalPos + 2,
+ stopx: s + st.activationWidth,
+ stopy: void 0,
+ actor: t.from.actor,
+ anchored: K(e),
+ });
+ },
+ endActivation: function (t) {
+ const e = this.activations
+ .map(function (t) {
+ return t.actor;
+ })
+ .lastIndexOf(t.from.actor);
+ return this.activations.splice(e, 1)[0];
+ },
+ createLoop: function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
+ return {
+ startx: void 0,
+ starty: this.verticalPos,
+ stopx: void 0,
+ stopy: void 0,
+ title: t.message,
+ wrap: t.wrap,
+ width: t.width,
+ height: 0,
+ fill: e,
+ };
+ },
+ newLoop: function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
+ this.sequenceItems.push(this.createLoop(t, e));
+ },
+ endLoop: function () {
+ return this.sequenceItems.pop();
+ },
+ isLoopOverlap: function () {
+ return !!this.sequenceItems.length && this.sequenceItems[this.sequenceItems.length - 1].overlap;
+ },
+ addSectionToLoop: function (t) {
+ const e = this.sequenceItems.pop();
+ (e.sections = e.sections || []),
+ (e.sectionTitles = e.sectionTitles || []),
+ e.sections.push({ y: nt.getVerticalPos(), height: 0 }),
+ e.sectionTitles.push(t),
+ this.sequenceItems.push(e);
+ },
+ saveVerticalPos: function () {
+ this.isLoopOverlap() && (this.savedVerticalPos = this.verticalPos);
+ },
+ resetVerticalPos: function () {
+ this.isLoopOverlap() && (this.verticalPos = this.savedVerticalPos);
+ },
+ bumpVerticalPos: function (t) {
+ (this.verticalPos = this.verticalPos + t), (this.data.stopy = i.e.getMax(this.data.stopy, this.verticalPos));
+ },
+ getVerticalPos: function () {
+ return this.verticalPos;
+ },
+ getBounds: function () {
+ return { bounds: this.data, models: this.models };
+ },
+ },
+ ot = (t) => ({
+ fontFamily: t.messageFontFamily,
+ fontSize: t.messageFontSize,
+ fontWeight: t.messageFontWeight,
+ }),
+ ct = (t) => ({
+ fontFamily: t.noteFontFamily,
+ fontSize: t.noteFontSize,
+ fontWeight: t.noteFontWeight,
+ }),
+ lt = (t) => ({
+ fontFamily: t.actorFontFamily,
+ fontSize: t.actorFontSize,
+ fontWeight: t.actorFontWeight,
+ }),
+ ht = function (t, e, a, r) {
+ if (r) {
+ let r = 0;
+ nt.bumpVerticalPos(2 * st.boxMargin);
+ for (const s of a) {
+ const a = e[s];
+ a.stopy || (a.stopy = nt.getVerticalPos());
+ const n = H(t, a, st, !0);
+ r = i.e.getMax(r, n);
+ }
+ nt.bumpVerticalPos(r + st.boxMargin);
+ } else
+ for (const i of a) {
+ const a = e[i];
+ H(t, a, st, !1);
+ }
+ },
+ dt = function (t, e, a, i) {
+ let r = 0,
+ s = 0;
+ for (const n of a) {
+ const a = e[n],
+ o = yt(a),
+ c = j(t, a, o, st, st.forceMenus, i);
+ c.height > r && (r = c.height), c.width + a.x > s && (s = c.width + a.x);
+ }
+ return { maxHeight: r, maxWidth: s };
+ },
+ pt = function (t) {
+ (0, i.f)(st, t),
+ t.fontFamily && (st.actorFontFamily = st.noteFontFamily = st.messageFontFamily = t.fontFamily),
+ t.fontSize && (st.actorFontSize = st.noteFontSize = st.messageFontSize = t.fontSize),
+ t.fontWeight && (st.actorFontWeight = st.noteFontWeight = st.messageFontWeight = t.fontWeight);
+ },
+ gt = function (t) {
+ return nt.activations.filter(function (e) {
+ return e.actor === t;
+ });
+ },
+ ut = function (t, e) {
+ const a = e[t],
+ r = gt(t);
+ return [
+ r.reduce(
+ function (t, e) {
+ return i.e.getMin(t, e.startx);
+ },
+ a.x + a.width / 2,
+ ),
+ r.reduce(
+ function (t, e) {
+ return i.e.getMax(t, e.stopx);
+ },
+ a.x + a.width / 2,
+ ),
+ ];
+ };
+ function xt(t, e, a, r, s) {
+ nt.bumpVerticalPos(a);
+ let n = r;
+ if (e.id && e.message && t[e.id]) {
+ const a = t[e.id].width,
+ s = ot(st);
+ (e.message = i.u.wrapLabel(`[${e.message}]`, a - 2 * st.wrapPadding, s)), (e.width = a), (e.wrap = !0);
+ const o = i.u.calculateTextDimensions(e.message, s),
+ c = i.e.getMax(o.height, st.labelBoxHeight);
+ (n = r + c), i.l.debug(`${c} - ${e.message}`);
+ }
+ s(e), nt.bumpVerticalPos(n);
+ }
+ const yt = function (t) {
+ let e = 0;
+ const a = lt(st);
+ for (const r in t.links) {
+ const t = i.u.calculateTextDimensions(r, a).width + 2 * st.wrapPadding + 2 * st.boxMargin;
+ e < t && (e = t);
+ }
+ return e;
+ },
+ mt = {
+ parser: c,
+ db: S,
+ renderer: {
+ bounds: nt,
+ drawActors: ht,
+ drawActorsPopup: dt,
+ setConf: pt,
+ draw: function (t, e, a, n) {
+ const { securityLevel: o, sequence: c } = (0, i.c)();
+ let l;
+ (st = c), "sandbox" === o && (l = (0, r.Ys)("#i" + e));
+ const h = "sandbox" === o ? (0, r.Ys)(l.nodes()[0].contentDocument.body) : (0, r.Ys)("body"),
+ d = "sandbox" === o ? l.nodes()[0].contentDocument : document;
+ nt.init(), i.l.debug(n.db);
+ const p = "sandbox" === o ? h.select(`[id="${e}"]`) : (0, r.Ys)(`[id="${e}"]`),
+ g = n.db.getActors(),
+ u = n.db.getCreatedActors(),
+ x = n.db.getDestroyedActors(),
+ y = n.db.getBoxes();
+ let m = n.db.getActorKeys();
+ const f = n.db.getMessages(),
+ b = n.db.getDiagramTitle(),
+ T = n.db.hasAtLeastOneBox(),
+ E = n.db.hasAtLeastOneBoxWithTitle(),
+ w = (function (t, e, a) {
+ const r = {};
+ return (
+ e.forEach(function (e) {
+ if (t[e.to] && t[e.from]) {
+ const s = t[e.to];
+ if (e.placement === a.db.PLACEMENT.LEFTOF && !s.prevActor) return;
+ if (e.placement === a.db.PLACEMENT.RIGHTOF && !s.nextActor) return;
+ const n = void 0 !== e.placement,
+ o = !n,
+ c = n ? ct(st) : ot(st),
+ l = e.wrap ? i.u.wrapLabel(e.message, st.width - 2 * st.wrapPadding, c) : e.message,
+ h = i.u.calculateTextDimensions(l, c).width + 2 * st.wrapPadding;
+ o && e.from === s.nextActor
+ ? (r[e.to] = i.e.getMax(r[e.to] || 0, h))
+ : o && e.from === s.prevActor
+ ? (r[e.from] = i.e.getMax(r[e.from] || 0, h))
+ : o && e.from === e.to
+ ? ((r[e.from] = i.e.getMax(r[e.from] || 0, h / 2)), (r[e.to] = i.e.getMax(r[e.to] || 0, h / 2)))
+ : e.placement === a.db.PLACEMENT.RIGHTOF
+ ? (r[e.from] = i.e.getMax(r[e.from] || 0, h))
+ : e.placement === a.db.PLACEMENT.LEFTOF
+ ? (r[s.prevActor] = i.e.getMax(r[s.prevActor] || 0, h))
+ : e.placement === a.db.PLACEMENT.OVER &&
+ (s.prevActor && (r[s.prevActor] = i.e.getMax(r[s.prevActor] || 0, h / 2)),
+ s.nextActor && (r[e.from] = i.e.getMax(r[e.from] || 0, h / 2)));
+ }
+ }),
+ i.l.debug("maxMessageWidthPerActor:", r),
+ r
+ );
+ })(g, f, n);
+ if (
+ ((st.height = (function (t, e, a) {
+ let r = 0;
+ Object.keys(t).forEach((e) => {
+ const a = t[e];
+ a.wrap && (a.description = i.u.wrapLabel(a.description, st.width - 2 * st.wrapPadding, lt(st)));
+ const s = i.u.calculateTextDimensions(a.description, lt(st));
+ (a.width = a.wrap ? st.width : i.e.getMax(st.width, s.width + 2 * st.wrapPadding)),
+ (a.height = a.wrap ? i.e.getMax(s.height, st.height) : st.height),
+ (r = i.e.getMax(r, a.height));
+ });
+ for (const a in e) {
+ const r = t[a];
+ if (!r) continue;
+ const s = t[r.nextActor];
+ if (!s) {
+ const t = e[a] + st.actorMargin - r.width / 2;
+ r.margin = i.e.getMax(t, st.actorMargin);
+ continue;
+ }
+ const n = e[a] + st.actorMargin - r.width / 2 - s.width / 2;
+ r.margin = i.e.getMax(n, st.actorMargin);
+ }
+ let s = 0;
+ return (
+ a.forEach((e) => {
+ const a = ot(st);
+ let r = e.actorKeys.reduce((e, a) => e + (t[a].width + (t[a].margin || 0)), 0);
+ (r -= 2 * st.boxTextMargin), e.wrap && (e.name = i.u.wrapLabel(e.name, r - 2 * st.wrapPadding, a));
+ const n = i.u.calculateTextDimensions(e.name, a);
+ s = i.e.getMax(n.height, s);
+ const o = i.e.getMax(r, n.width + 2 * st.wrapPadding);
+ if (((e.margin = st.boxTextMargin), r < o)) {
+ const t = (o - r) / 2;
+ e.margin += t;
+ }
+ }),
+ a.forEach((t) => (t.textMaxHeight = s)),
+ i.e.getMax(r, st.height)
+ );
+ })(g, w, y)),
+ it(p),
+ at(p),
+ rt(p),
+ T && (nt.bumpVerticalPos(st.boxMargin), E && nt.bumpVerticalPos(y[0].textMaxHeight)),
+ !0 === st.hideUnusedParticipants)
+ ) {
+ const t = new Set();
+ f.forEach((e) => {
+ t.add(e.from), t.add(e.to);
+ }),
+ (m = m.filter((e) => t.has(e)));
+ }
+ !(function (t, e, a, r, s, n, o) {
+ let c,
+ l = 0,
+ h = 0,
+ d = 0;
+ for (const t of r) {
+ const r = e[t],
+ s = r.box;
+ c && c != s && (nt.models.addBox(c), (h += st.boxMargin + c.margin)),
+ s && s != c && ((s.x = l + h), (s.y = 0), (h += s.margin)),
+ (r.width = r.width || st.width),
+ (r.height = i.e.getMax(r.height || st.height, st.height)),
+ (r.margin = r.margin || st.actorMargin),
+ (d = i.e.getMax(d, r.height)),
+ a[r.name] && (h += r.width / 2),
+ (r.x = l + h),
+ (r.starty = nt.getVerticalPos()),
+ nt.insert(r.x, 0, r.x + r.width, r.height),
+ (l += r.width + h),
+ r.box && (r.box.width = l + s.margin - r.box.x),
+ (h = r.margin),
+ (c = r.box),
+ nt.models.addActor(r);
+ }
+ c && nt.models.addBox(c), nt.bumpVerticalPos(d);
+ })(0, g, u, m);
+ const _ = (function (t, e, a, r) {
+ const s = {},
+ n = [];
+ let o, c, l;
+ return (
+ t.forEach(function (t) {
+ switch (((t.id = i.u.random({ length: 10 })), t.type)) {
+ case r.db.LINETYPE.LOOP_START:
+ case r.db.LINETYPE.ALT_START:
+ case r.db.LINETYPE.OPT_START:
+ case r.db.LINETYPE.PAR_START:
+ case r.db.LINETYPE.PAR_OVER_START:
+ case r.db.LINETYPE.CRITICAL_START:
+ case r.db.LINETYPE.BREAK_START:
+ n.push({
+ id: t.id,
+ msg: t.message,
+ from: Number.MAX_SAFE_INTEGER,
+ to: Number.MIN_SAFE_INTEGER,
+ width: 0,
+ });
+ break;
+ case r.db.LINETYPE.ALT_ELSE:
+ case r.db.LINETYPE.PAR_AND:
+ case r.db.LINETYPE.CRITICAL_OPTION:
+ t.message && ((o = n.pop()), (s[o.id] = o), (s[t.id] = o), n.push(o));
+ break;
+ case r.db.LINETYPE.LOOP_END:
+ case r.db.LINETYPE.ALT_END:
+ case r.db.LINETYPE.OPT_END:
+ case r.db.LINETYPE.PAR_END:
+ case r.db.LINETYPE.CRITICAL_END:
+ case r.db.LINETYPE.BREAK_END:
+ (o = n.pop()), (s[o.id] = o);
+ break;
+ case r.db.LINETYPE.ACTIVE_START:
+ {
+ const a = e[t.from ? t.from.actor : t.to.actor],
+ i = gt(t.from ? t.from.actor : t.to.actor).length,
+ r = a.x + a.width / 2 + ((i - 1) * st.activationWidth) / 2,
+ s = {
+ startx: r,
+ stopx: r + st.activationWidth,
+ actor: t.from.actor,
+ enabled: !0,
+ };
+ nt.activations.push(s);
+ }
+ break;
+ case r.db.LINETYPE.ACTIVE_END: {
+ const e = nt.activations.map((t) => t.actor).lastIndexOf(t.from.actor);
+ delete nt.activations.splice(e, 1)[0];
+ }
+ }
+ void 0 !== t.placement
+ ? ((c = (function (t, e, a) {
+ const r = e[t.from].x,
+ s = e[t.to].x,
+ n = t.wrap && t.message;
+ let o = i.u.calculateTextDimensions(n ? i.u.wrapLabel(t.message, st.width, ct(st)) : t.message, ct(st));
+ const c = {
+ width: n ? st.width : i.e.getMax(st.width, o.width + 2 * st.noteMargin),
+ height: 0,
+ startx: e[t.from].x,
+ stopx: 0,
+ starty: 0,
+ stopy: 0,
+ message: t.message,
+ };
+ return (
+ t.placement === a.db.PLACEMENT.RIGHTOF
+ ? ((c.width = n
+ ? i.e.getMax(st.width, o.width)
+ : i.e.getMax(e[t.from].width / 2 + e[t.to].width / 2, o.width + 2 * st.noteMargin)),
+ (c.startx = r + (e[t.from].width + st.actorMargin) / 2))
+ : t.placement === a.db.PLACEMENT.LEFTOF
+ ? ((c.width = n
+ ? i.e.getMax(st.width, o.width + 2 * st.noteMargin)
+ : i.e.getMax(e[t.from].width / 2 + e[t.to].width / 2, o.width + 2 * st.noteMargin)),
+ (c.startx = r - c.width + (e[t.from].width - st.actorMargin) / 2))
+ : t.to === t.from
+ ? ((o = i.u.calculateTextDimensions(
+ n ? i.u.wrapLabel(t.message, i.e.getMax(st.width, e[t.from].width), ct(st)) : t.message,
+ ct(st),
+ )),
+ (c.width = n
+ ? i.e.getMax(st.width, e[t.from].width)
+ : i.e.getMax(e[t.from].width, st.width, o.width + 2 * st.noteMargin)),
+ (c.startx = r + (e[t.from].width - c.width) / 2))
+ : ((c.width = Math.abs(r + e[t.from].width / 2 - (s + e[t.to].width / 2)) + st.actorMargin),
+ (c.startx = r < s ? r + e[t.from].width / 2 - st.actorMargin / 2 : s + e[t.to].width / 2 - st.actorMargin / 2)),
+ n && (c.message = i.u.wrapLabel(t.message, c.width - 2 * st.wrapPadding, ct(st))),
+ i.l.debug(`NM:[${c.startx},${c.stopx},${c.starty},${c.stopy}:${c.width},${c.height}=${t.message}]`),
+ c
+ );
+ })(t, e, r)),
+ (t.noteModel = c),
+ n.forEach((t) => {
+ (o = t),
+ (o.from = i.e.getMin(o.from, c.startx)),
+ (o.to = i.e.getMax(o.to, c.startx + c.width)),
+ (o.width = i.e.getMax(o.width, Math.abs(o.from - o.to)) - st.labelBoxWidth);
+ }))
+ : ((l = (function (t, e, a) {
+ let r = !1;
+ if (
+ ([
+ a.db.LINETYPE.SOLID_OPEN,
+ a.db.LINETYPE.DOTTED_OPEN,
+ a.db.LINETYPE.SOLID,
+ a.db.LINETYPE.DOTTED,
+ a.db.LINETYPE.SOLID_CROSS,
+ a.db.LINETYPE.DOTTED_CROSS,
+ a.db.LINETYPE.SOLID_POINT,
+ a.db.LINETYPE.DOTTED_POINT,
+ ].includes(t.type) && (r = !0),
+ !r)
+ )
+ return {};
+ const s = ut(t.from, e),
+ n = ut(t.to, e),
+ o = s[0] <= n[0] ? 1 : 0,
+ c = s[0] < n[0] ? 0 : 1,
+ l = [...s, ...n],
+ h = Math.abs(n[c] - s[o]);
+ t.wrap && t.message && (t.message = i.u.wrapLabel(t.message, i.e.getMax(h + 2 * st.wrapPadding, st.width), ot(st)));
+ const d = i.u.calculateTextDimensions(t.message, ot(st));
+ return {
+ width: i.e.getMax(t.wrap ? 0 : d.width + 2 * st.wrapPadding, h + 2 * st.wrapPadding, st.width),
+ height: 0,
+ startx: s[o],
+ stopx: n[c],
+ starty: 0,
+ stopy: 0,
+ message: t.message,
+ type: t.type,
+ wrap: t.wrap,
+ fromBounds: Math.min.apply(null, l),
+ toBounds: Math.max.apply(null, l),
+ };
+ })(t, e, r)),
+ (t.msgModel = l),
+ l.startx &&
+ l.stopx &&
+ n.length > 0 &&
+ n.forEach((a) => {
+ if (((o = a), l.startx === l.stopx)) {
+ const a = e[t.from],
+ r = e[t.to];
+ (o.from = i.e.getMin(a.x - l.width / 2, a.x - a.width / 2, o.from)),
+ (o.to = i.e.getMax(r.x + l.width / 2, r.x + a.width / 2, o.to)),
+ (o.width = i.e.getMax(o.width, Math.abs(o.to - o.from)) - st.labelBoxWidth);
+ } else
+ (o.from = i.e.getMin(l.startx, o.from)),
+ (o.to = i.e.getMax(l.stopx, o.to)),
+ (o.width = i.e.getMax(o.width, l.width) - st.labelBoxWidth);
+ }));
+ }),
+ (nt.activations = []),
+ i.l.debug("Loop type widths:", s),
+ s
+ );
+ })(f, g, 0, n);
+ Z(p), et(p), Q(p), tt(p);
+ let v = 1,
+ P = 1;
+ const k = [],
+ L = [];
+ f.forEach(function (t, e) {
+ let a, r, o;
+ switch (t.type) {
+ case n.db.LINETYPE.NOTE:
+ nt.resetVerticalPos(),
+ (r = t.noteModel),
+ (function (t, e) {
+ nt.bumpVerticalPos(st.boxMargin), (e.height = st.boxMargin), (e.starty = nt.getVerticalPos());
+ const a = (0, s.g)();
+ (a.x = e.startx), (a.y = e.starty), (a.width = e.width || st.width), (a.class = "note");
+ const i = t.append("g"),
+ r = z(i, a),
+ n = (0, s.e)();
+ (n.x = e.startx),
+ (n.y = e.starty),
+ (n.width = a.width),
+ (n.dy = "1em"),
+ (n.text = e.message),
+ (n.class = "noteText"),
+ (n.fontFamily = st.noteFontFamily),
+ (n.fontSize = st.noteFontSize),
+ (n.fontWeight = st.noteFontWeight),
+ (n.anchor = st.noteAlign),
+ (n.textMargin = st.noteMargin),
+ (n.valign = "center");
+ const o = $(i, n),
+ c = Math.round(o.map((t) => (t._groups || t)[0][0].getBBox().height).reduce((t, e) => t + e));
+ r.attr("height", c + 2 * st.noteMargin),
+ (e.height += c + 2 * st.noteMargin),
+ nt.bumpVerticalPos(c + 2 * st.noteMargin),
+ (e.stopy = e.starty + c + 2 * st.noteMargin),
+ (e.stopx = e.startx + a.width),
+ nt.insert(e.startx, e.starty, e.stopx, e.stopy),
+ nt.models.addNote(e);
+ })(p, r);
+ break;
+ case n.db.LINETYPE.ACTIVE_START:
+ nt.newActivation(t, p, g);
+ break;
+ case n.db.LINETYPE.ACTIVE_END:
+ !(function (t, e) {
+ const a = nt.endActivation(t);
+ a.starty + 18 > e && ((a.starty = e - 6), (e += 12)),
+ X(p, a, e, st, gt(t.from.actor).length),
+ nt.insert(a.startx, e - 10, a.stopx, e);
+ })(t, nt.getVerticalPos());
+ break;
+ case n.db.LINETYPE.LOOP_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.LOOP_END:
+ (a = nt.endLoop()), G(p, a, "loop", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.RECT_START:
+ xt(_, t, st.boxMargin, st.boxMargin, (t) => nt.newLoop(void 0, t.message));
+ break;
+ case n.db.LINETYPE.RECT_END:
+ (a = nt.endLoop()), L.push(a), nt.models.addLoop(a), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos());
+ break;
+ case n.db.LINETYPE.OPT_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.OPT_END:
+ (a = nt.endLoop()), G(p, a, "opt", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.ALT_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.ALT_ELSE:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.ALT_END:
+ (a = nt.endLoop()), G(p, a, "alt", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.PAR_START:
+ case n.db.LINETYPE.PAR_OVER_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t)), nt.saveVerticalPos();
+ break;
+ case n.db.LINETYPE.PAR_AND:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.PAR_END:
+ (a = nt.endLoop()), G(p, a, "par", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.AUTONUMBER:
+ (v = t.message.start || v),
+ (P = t.message.step || P),
+ t.message.visible ? n.db.enableSequenceNumbers() : n.db.disableSequenceNumbers();
+ break;
+ case n.db.LINETYPE.CRITICAL_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.CRITICAL_OPTION:
+ xt(_, t, st.boxMargin + st.boxTextMargin, st.boxMargin, (t) => nt.addSectionToLoop(t));
+ break;
+ case n.db.LINETYPE.CRITICAL_END:
+ (a = nt.endLoop()), G(p, a, "critical", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ case n.db.LINETYPE.BREAK_START:
+ xt(_, t, st.boxMargin, st.boxMargin + st.boxTextMargin, (t) => nt.newLoop(t));
+ break;
+ case n.db.LINETYPE.BREAK_END:
+ (a = nt.endLoop()), G(p, a, "break", st), nt.bumpVerticalPos(a.stopy - nt.getVerticalPos()), nt.models.addLoop(a);
+ break;
+ default:
+ try {
+ (o = t.msgModel), (o.starty = nt.getVerticalPos()), (o.sequenceIndex = v), (o.sequenceVisible = n.db.showSequenceNumbers());
+ const a = (function (t, e) {
+ nt.bumpVerticalPos(10);
+ const { startx: a, stopx: r, message: s } = e,
+ n = i.e.splitBreaks(s).length,
+ o = i.u.calculateTextDimensions(s, ot(st)),
+ c = o.height / n;
+ let l;
+ (e.height += c), nt.bumpVerticalPos(c);
+ let h = o.height - 10;
+ const d = o.width;
+ if (a === r) {
+ (l = nt.getVerticalPos() + h), st.rightAngles || ((h += st.boxMargin), (l = nt.getVerticalPos() + h)), (h += 30);
+ const t = i.e.getMax(d / 2, st.width / 2);
+ nt.insert(a - t, nt.getVerticalPos() - 10 + h, r + t, nt.getVerticalPos() + 30 + h);
+ } else (h += st.boxMargin), (l = nt.getVerticalPos() + h), nt.insert(a, l - 10, r, l);
+ return (
+ nt.bumpVerticalPos(h),
+ (e.height += h),
+ (e.stopy = e.starty + e.height),
+ nt.insert(e.fromBounds, e.starty, e.toBounds, e.stopy),
+ l
+ );
+ })(0, o);
+ !(function (t, e, a, i, r, s, n) {
+ function o(a, i) {
+ a.x < r[t.from].x
+ ? (nt.insert(e.stopx - i, e.starty, e.startx, e.stopy + a.height / 2 + st.noteMargin), (e.stopx = e.stopx + i))
+ : (nt.insert(e.startx, e.starty, e.stopx + i, e.stopy + a.height / 2 + st.noteMargin), (e.stopx = e.stopx - i));
+ }
+ if (s[t.to] == i) {
+ const e = r[t.to];
+ o(e, "actor" == e.type ? 21 : e.width / 2 + 3), (e.starty = a - e.height / 2), nt.bumpVerticalPos(e.height / 2);
+ } else if (n[t.from] == i) {
+ const i = r[t.from];
+ st.mirrorActors &&
+ (function (a, i) {
+ a.x < r[t.to].x
+ ? (nt.insert(e.startx - i, e.starty, e.stopx, e.stopy + a.height / 2 + st.noteMargin), (e.startx = e.startx + i))
+ : (nt.insert(e.stopx, e.starty, e.startx + i, e.stopy + a.height / 2 + st.noteMargin), (e.startx = e.startx - i));
+ })(i, "actor" == i.type ? 18 : i.width / 2),
+ (i.stopy = a - i.height / 2),
+ nt.bumpVerticalPos(i.height / 2);
+ } else if (n[t.to] == i) {
+ const e = r[t.to];
+ st.mirrorActors && o(e, "actor" == e.type ? 21 : e.width / 2 + 3),
+ (e.stopy = a - e.height / 2),
+ nt.bumpVerticalPos(e.height / 2);
+ }
+ })(t, o, a, e, g, u, x),
+ k.push({ messageModel: o, lineStartY: a }),
+ nt.models.addMessage(o);
+ } catch (t) {
+ i.l.error("error while drawing message", t);
+ }
+ }
+ [
+ n.db.LINETYPE.SOLID_OPEN,
+ n.db.LINETYPE.DOTTED_OPEN,
+ n.db.LINETYPE.SOLID,
+ n.db.LINETYPE.DOTTED,
+ n.db.LINETYPE.SOLID_CROSS,
+ n.db.LINETYPE.DOTTED_CROSS,
+ n.db.LINETYPE.SOLID_POINT,
+ n.db.LINETYPE.DOTTED_POINT,
+ ].includes(t.type) && (v += P);
+ }),
+ i.l.debug("createdActors", u),
+ i.l.debug("destroyedActors", x),
+ ht(p, g, m, !1),
+ k.forEach((t) =>
+ (function (t, e, a, r) {
+ const { startx: n, stopx: o, starty: c, message: l, type: h, sequenceIndex: d, sequenceVisible: p } = e,
+ g = i.u.calculateTextDimensions(l, ot(st)),
+ u = (0, s.e)();
+ (u.x = n),
+ (u.y = c + 10),
+ (u.width = o - n),
+ (u.class = "messageText"),
+ (u.dy = "1em"),
+ (u.text = l),
+ (u.fontFamily = st.messageFontFamily),
+ (u.fontSize = st.messageFontSize),
+ (u.fontWeight = st.messageFontWeight),
+ (u.anchor = st.messageAlign),
+ (u.valign = "center"),
+ (u.textMargin = st.wrapPadding),
+ (u.tspan = !1),
+ $(t, u);
+ const x = g.width;
+ let y;
+ n === o
+ ? (y = st.rightAngles
+ ? t.append("path").attr("d", `M ${n},${a} H ${n + i.e.getMax(st.width / 2, x / 2)} V ${a + 25} H ${n}`)
+ : t
+ .append("path")
+ .attr(
+ "d",
+ "M " + n + "," + a + " C " + (n + 60) + "," + (a - 10) + " " + (n + 60) + "," + (a + 30) + " " + n + "," + (a + 20),
+ ))
+ : ((y = t.append("line")), y.attr("x1", n), y.attr("y1", a), y.attr("x2", o), y.attr("y2", a)),
+ h === r.db.LINETYPE.DOTTED ||
+ h === r.db.LINETYPE.DOTTED_CROSS ||
+ h === r.db.LINETYPE.DOTTED_POINT ||
+ h === r.db.LINETYPE.DOTTED_OPEN
+ ? (y.style("stroke-dasharray", "3, 3"), y.attr("class", "messageLine1"))
+ : y.attr("class", "messageLine0");
+ let m = "";
+ st.arrowMarkerAbsolute &&
+ ((m = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (m = m.replace(/\(/g, "\\(")),
+ (m = m.replace(/\)/g, "\\)"))),
+ y.attr("stroke-width", 2),
+ y.attr("stroke", "none"),
+ y.style("fill", "none"),
+ (h !== r.db.LINETYPE.SOLID && h !== r.db.LINETYPE.DOTTED) || y.attr("marker-end", "url(" + m + "#arrowhead)"),
+ (h !== r.db.LINETYPE.SOLID_POINT && h !== r.db.LINETYPE.DOTTED_POINT) || y.attr("marker-end", "url(" + m + "#filled-head)"),
+ (h !== r.db.LINETYPE.SOLID_CROSS && h !== r.db.LINETYPE.DOTTED_CROSS) || y.attr("marker-end", "url(" + m + "#crosshead)"),
+ (p || st.showSequenceNumbers) &&
+ (y.attr("marker-start", "url(" + m + "#sequencenumber)"),
+ t
+ .append("text")
+ .attr("x", n)
+ .attr("y", a + 4)
+ .attr("font-family", "sans-serif")
+ .attr("font-size", "12px")
+ .attr("text-anchor", "middle")
+ .attr("class", "sequenceNumber")
+ .text(d));
+ })(p, t.messageModel, t.lineStartY, n),
+ ),
+ st.mirrorActors && ht(p, g, m, !0),
+ L.forEach((t) => J(p, t)),
+ B(p, g, m, st),
+ nt.models.boxes.forEach(function (t) {
+ (t.height = nt.getVerticalPos() - t.y),
+ nt.insert(t.x, t.y, t.x + t.width, t.height),
+ (t.startx = t.x),
+ (t.starty = t.y),
+ (t.stopx = t.startx + t.width),
+ (t.stopy = t.starty + t.height),
+ (t.stroke = "rgb(0,0,0, 0.5)"),
+ U(p, t, st);
+ }),
+ T && nt.bumpVerticalPos(st.boxMargin);
+ const I = dt(p, g, m, d),
+ { bounds: M } = nt.getBounds();
+ let N = M.stopy - M.starty;
+ N < I.maxHeight && (N = I.maxHeight);
+ let A = N + 2 * st.diagramMarginY;
+ st.mirrorActors && (A = A - st.boxMargin + st.bottomMarginAdj);
+ let S = M.stopx - M.startx;
+ S < I.maxWidth && (S = I.maxWidth);
+ const O = S + 2 * st.diagramMarginX;
+ b &&
+ p
+ .append("text")
+ .text(b)
+ .attr("x", (M.stopx - M.startx) / 2 - 2 * st.diagramMarginX)
+ .attr("y", -25),
+ (0, i.i)(p, A, O, st.useMaxWidth);
+ const D = b ? 40 : 0;
+ p.attr("viewBox", M.startx - st.diagramMarginX + " -" + (st.diagramMarginY + D) + " " + O + " " + (A + D)),
+ i.l.debug("models:", nt.models);
+ },
+ },
+ styles: (t) =>
+ `.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,
+ };
+ },
+ 8252: function (t, e, a) {
+ a.d(e, {
+ a: function () {
+ return n;
+ },
+ b: function () {
+ return l;
+ },
+ c: function () {
+ return c;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return d;
+ },
+ f: function () {
+ return o;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = a(7967),
+ r = a(9339);
+ const s = (t, e) => {
+ const a = t.append("rect");
+ if (
+ (a.attr("x", e.x),
+ a.attr("y", e.y),
+ a.attr("fill", e.fill),
+ a.attr("stroke", e.stroke),
+ a.attr("width", e.width),
+ a.attr("height", e.height),
+ void 0 !== e.rx && a.attr("rx", e.rx),
+ void 0 !== e.ry && a.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) a.attr(t, e.attrs[t]);
+ return void 0 !== e.class && a.attr("class", e.class), a;
+ },
+ n = (t, e) => {
+ const a = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, a).lower();
+ },
+ o = (t, e) => {
+ const a = e.text.replace(r.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(a), i;
+ },
+ c = (t, e, a, r) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", a);
+ const n = (0, i.Nm)(r);
+ s.attr("xlink:href", n);
+ },
+ l = (t, e, a, r) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", a);
+ const n = (0, i.Nm)(r);
+ s.attr("xlink:href", `#${n}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ d = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js
index f430c4228..bb145817c 100644
--- a/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js
@@ -1 +1,1865 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[423],{1423:function(e,t,n){n.d(t,{d:function(){return b},p:function(){return r},s:function(){return D}});var s=n(7274),i=n(9339),u=function(){var e=function(e,t,n,s){for(n=n||{},s=e.length;s--;n[e[s]]=t);return n},t=[1,34],n=[1,35],s=[1,36],i=[1,37],u=[1,9],r=[1,8],a=[1,19],c=[1,20],o=[1,21],l=[1,40],h=[1,41],A=[1,27],p=[1,25],d=[1,26],y=[1,32],E=[1,33],C=[1,28],m=[1,29],k=[1,30],g=[1,31],F=[1,45],f=[1,42],b=[1,43],D=[1,44],_=[1,46],B=[1,24],T=[1,16,24],S=[1,60],N=[1,61],v=[1,62],L=[1,63],$=[1,64],I=[1,65],O=[1,66],x=[1,16,24,52],R=[1,77],P=[1,16,24,27,28,36,50,52,55,68,69,70,71,72,73,74,79,81],w=[1,16,24,27,28,34,36,50,52,55,59,68,69,70,71,72,73,74,79,81,94,96,97,98,99],G=[1,86],M=[28,94,96,97,98,99],U=[28,73,74,94,96,97,98,99],Y=[28,68,69,70,71,72,94,96,97,98,99],K=[1,99],z=[1,16,24,50,52,55],Q=[1,16,24,36],j=[8,9,10,11,19,23,44,46,48,53,57,58,60,61,63,65,75,76,78,82,94,96,97,98,99],X={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,statements:6,direction:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,EOF:24,statement:25,classLabel:26,SQS:27,STR:28,SQE:29,namespaceName:30,alphaNumToken:31,className:32,classLiteralName:33,GENERICTYPE:34,relationStatement:35,LABEL:36,namespaceStatement:37,classStatement:38,methodStatement:39,annotationStatement:40,clickStatement:41,cssClassStatement:42,noteStatement:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,namespaceIdentifier:49,STRUCT_START:50,classStatements:51,STRUCT_STOP:52,NAMESPACE:53,classIdentifier:54,STYLE_SEPARATOR:55,members:56,CLASS:57,ANNOTATION_START:58,ANNOTATION_END:59,MEMBER:60,SEPARATOR:61,relation:62,NOTE_FOR:63,noteText:64,NOTE:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,CSSCLASS:82,commentToken:83,textToken:84,graphCodeTokens:85,textNoTagsToken:86,TAGSTART:87,TAGEND:88,"==":89,"--":90,PCT:91,DEFAULT:92,SPACE:93,MINUS:94,keywords:95,UNICODE_TEXT:96,NUM:97,ALPHA:98,BQUOTE_STR:99,$accept:0,$end:1},terminals_:{2:"error",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",24:"EOF",27:"SQS",28:"STR",29:"SQE",34:"GENERICTYPE",36:"LABEL",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",50:"STRUCT_START",52:"STRUCT_STOP",53:"NAMESPACE",55:"STYLE_SEPARATOR",57:"CLASS",58:"ANNOTATION_START",59:"ANNOTATION_END",60:"MEMBER",61:"SEPARATOR",63:"NOTE_FOR",65:"NOTE",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"CSSCLASS",85:"graphCodeTokens",87:"TAGSTART",88:"TAGEND",89:"==",90:"--",91:"PCT",92:"DEFAULT",93:"SPACE",94:"MINUS",95:"keywords",96:"UNICODE_TEXT",97:"NUM",98:"ALPHA",99:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[3,1],[7,1],[7,1],[7,1],[7,1],[4,1],[5,4],[5,6],[13,1],[14,1],[18,1],[15,1],[12,4],[6,1],[6,2],[6,3],[26,3],[30,1],[30,2],[32,1],[32,1],[32,2],[32,2],[32,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,2],[25,2],[25,1],[37,4],[37,5],[49,2],[51,1],[51,2],[51,3],[38,1],[38,3],[38,4],[38,6],[54,2],[54,3],[40,4],[56,1],[56,2],[39,1],[39,2],[39,1],[39,1],[35,3],[35,4],[35,4],[35,5],[43,3],[43,2],[62,3],[62,2],[62,2],[62,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[41,3],[41,4],[41,3],[41,4],[41,4],[41,5],[41,3],[41,4],[41,4],[41,5],[41,4],[41,5],[41,5],[41,6],[42,3],[83,1],[83,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[86,1],[86,1],[86,1],[86,1],[31,1],[31,1],[31,1],[31,1],[33,1],[64,1]],performAction:function(e,t,n,s,i,u,r){var a=u.length-1;switch(i){case 4:s.setDirection("TB");break;case 5:s.setDirection("BT");break;case 6:s.setDirection("RL");break;case 7:s.setDirection("LR");break;case 11:s.parseDirective("%%{","open_directive");break;case 12:s.parseDirective(u[a],"type_directive");break;case 13:u[a]=u[a].trim().replace(/'/g,'"'),s.parseDirective(u[a],"arg_directive");break;case 14:s.parseDirective("}%%","close_directive","class");break;case 19:this.$=u[a-1];break;case 20:case 22:case 23:this.$=u[a];break;case 21:case 24:this.$=u[a-1]+u[a];break;case 25:case 26:this.$=u[a-1]+"~"+u[a]+"~";break;case 27:s.addRelation(u[a]);break;case 28:u[a-1].title=s.cleanupLabel(u[a]),s.addRelation(u[a-1]);break;case 37:this.$=u[a].trim(),s.setAccTitle(this.$);break;case 38:case 39:this.$=u[a].trim(),s.setAccDescription(this.$);break;case 40:s.addClassesToNamespace(u[a-3],u[a-1]);break;case 41:s.addClassesToNamespace(u[a-4],u[a-1]);break;case 42:this.$=u[a],s.addNamespace(u[a]);break;case 43:case 53:this.$=[u[a]];break;case 44:this.$=[u[a-1]];break;case 45:u[a].unshift(u[a-2]),this.$=u[a];break;case 47:s.setCssClass(u[a-2],u[a]);break;case 48:s.addMembers(u[a-3],u[a-1]);break;case 49:s.setCssClass(u[a-5],u[a-3]),s.addMembers(u[a-5],u[a-1]);break;case 50:this.$=u[a],s.addClass(u[a]);break;case 51:this.$=u[a-1],s.addClass(u[a-1]),s.setClassLabel(u[a-1],u[a]);break;case 52:s.addAnnotation(u[a],u[a-2]);break;case 54:u[a].push(u[a-1]),this.$=u[a];break;case 55:case 57:case 58:break;case 56:s.addMember(u[a-1],s.cleanupLabel(u[a]));break;case 59:this.$={id1:u[a-2],id2:u[a],relation:u[a-1],relationTitle1:"none",relationTitle2:"none"};break;case 60:this.$={id1:u[a-3],id2:u[a],relation:u[a-1],relationTitle1:u[a-2],relationTitle2:"none"};break;case 61:this.$={id1:u[a-3],id2:u[a],relation:u[a-2],relationTitle1:"none",relationTitle2:u[a-1]};break;case 62:this.$={id1:u[a-4],id2:u[a],relation:u[a-2],relationTitle1:u[a-3],relationTitle2:u[a-1]};break;case 63:s.addNote(u[a],u[a-1]);break;case 64:s.addNote(u[a]);break;case 65:this.$={type1:u[a-2],type2:u[a],lineType:u[a-1]};break;case 66:this.$={type1:"none",type2:u[a],lineType:u[a-1]};break;case 67:this.$={type1:u[a-1],type2:"none",lineType:u[a]};break;case 68:this.$={type1:"none",type2:"none",lineType:u[a]};break;case 69:this.$=s.relationType.AGGREGATION;break;case 70:this.$=s.relationType.EXTENSION;break;case 71:this.$=s.relationType.COMPOSITION;break;case 72:this.$=s.relationType.DEPENDENCY;break;case 73:this.$=s.relationType.LOLLIPOP;break;case 74:this.$=s.lineType.LINE;break;case 75:this.$=s.lineType.DOTTED_LINE;break;case 76:case 82:this.$=u[a-2],s.setClickEvent(u[a-1],u[a]);break;case 77:case 83:this.$=u[a-3],s.setClickEvent(u[a-2],u[a-1]),s.setTooltip(u[a-2],u[a]);break;case 78:this.$=u[a-2],s.setLink(u[a-1],u[a]);break;case 79:this.$=u[a-3],s.setLink(u[a-2],u[a-1],u[a]);break;case 80:this.$=u[a-3],s.setLink(u[a-2],u[a-1]),s.setTooltip(u[a-2],u[a]);break;case 81:this.$=u[a-4],s.setLink(u[a-3],u[a-2],u[a]),s.setTooltip(u[a-3],u[a-1]);break;case 84:this.$=u[a-3],s.setClickEvent(u[a-2],u[a-1],u[a]);break;case 85:this.$=u[a-4],s.setClickEvent(u[a-3],u[a-2],u[a-1]),s.setTooltip(u[a-3],u[a]);break;case 86:this.$=u[a-3],s.setLink(u[a-2],u[a]);break;case 87:this.$=u[a-4],s.setLink(u[a-3],u[a-1],u[a]);break;case 88:this.$=u[a-4],s.setLink(u[a-3],u[a-1]),s.setTooltip(u[a-3],u[a]);break;case 89:this.$=u[a-5],s.setLink(u[a-4],u[a-2],u[a]),s.setTooltip(u[a-4],u[a-1]);break;case 90:s.setCssClass(u[a-1],u[a])}},table:[{3:1,4:2,5:3,6:4,7:18,8:t,9:n,10:s,11:i,12:5,13:6,19:u,23:r,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:a,46:c,48:o,49:23,53:l,54:24,57:h,58:A,60:p,61:d,63:y,65:E,75:C,76:m,78:k,82:g,94:F,96:f,97:b,98:D,99:_},{1:[3]},{1:[2,1]},{3:47,4:2,5:3,6:4,7:18,8:t,9:n,10:s,11:i,12:5,13:6,19:u,23:r,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:a,46:c,48:o,49:23,53:l,54:24,57:h,58:A,60:p,61:d,63:y,65:E,75:C,76:m,78:k,82:g,94:F,96:f,97:b,98:D,99:_},{1:[2,3]},{1:[2,8]},{14:48,20:[1,49]},e(B,[2,16],{16:[1,50]}),{16:[1,51]},{20:[2,11]},e(T,[2,27],{36:[1,52]}),e(T,[2,29]),e(T,[2,30]),e(T,[2,31]),e(T,[2,32]),e(T,[2,33]),e(T,[2,34]),e(T,[2,35]),e(T,[2,36]),{45:[1,53]},{47:[1,54]},e(T,[2,39]),e(T,[2,55],{62:55,66:58,67:59,28:[1,56],36:[1,57],68:S,69:N,70:v,71:L,72:$,73:I,74:O}),{50:[1,67]},e(x,[2,46],{50:[1,69],55:[1,68]}),e(T,[2,57]),e(T,[2,58]),{31:70,94:F,96:f,97:b,98:D},{31:38,32:71,33:39,94:F,96:f,97:b,98:D,99:_},{31:38,32:72,33:39,94:F,96:f,97:b,98:D,99:_},{31:38,32:73,33:39,94:F,96:f,97:b,98:D,99:_},{28:[1,74]},{31:38,32:75,33:39,94:F,96:f,97:b,98:D,99:_},{28:R,64:76},e(T,[2,4]),e(T,[2,5]),e(T,[2,6]),e(T,[2,7]),e(P,[2,22],{31:38,33:39,32:78,34:[1,79],94:F,96:f,97:b,98:D,99:_}),e(P,[2,23],{34:[1,80]}),{30:81,31:82,94:F,96:f,97:b,98:D},{31:38,32:83,33:39,94:F,96:f,97:b,98:D,99:_},e(w,[2,104]),e(w,[2,105]),e(w,[2,106]),e(w,[2,107]),e([1,16,24,27,28,34,36,50,52,55,68,69,70,71,72,73,74,79,81],[2,108]),{1:[2,2]},{15:84,17:[1,85],22:G},e([17,22],[2,12]),e(B,[2,17],{25:7,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,7:18,32:22,49:23,54:24,31:38,33:39,6:87,8:t,9:n,10:s,11:i,44:a,46:c,48:o,53:l,57:h,58:A,60:p,61:d,63:y,65:E,75:C,76:m,78:k,82:g,94:F,96:f,97:b,98:D,99:_}),{6:88,7:18,8:t,9:n,10:s,11:i,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:a,46:c,48:o,49:23,53:l,54:24,57:h,58:A,60:p,61:d,63:y,65:E,75:C,76:m,78:k,82:g,94:F,96:f,97:b,98:D,99:_},e(T,[2,28]),e(T,[2,37]),e(T,[2,38]),{28:[1,90],31:38,32:89,33:39,94:F,96:f,97:b,98:D,99:_},{62:91,66:58,67:59,68:S,69:N,70:v,71:L,72:$,73:I,74:O},e(T,[2,56]),{67:92,73:I,74:O},e(M,[2,68],{66:93,68:S,69:N,70:v,71:L,72:$}),e(U,[2,69]),e(U,[2,70]),e(U,[2,71]),e(U,[2,72]),e(U,[2,73]),e(Y,[2,74]),e(Y,[2,75]),{16:[1,95],38:96,51:94,54:24,57:h},{31:97,94:F,96:f,97:b,98:D},{56:98,60:K},{59:[1,100]},{28:[1,101]},{28:[1,102]},{79:[1,103],81:[1,104]},{31:105,94:F,96:f,97:b,98:D},{28:R,64:106},e(T,[2,64]),e(T,[2,109]),e(P,[2,24]),e(P,[2,25]),e(P,[2,26]),{50:[2,42]},{30:107,31:82,50:[2,20],94:F,96:f,97:b,98:D},e(z,[2,50],{26:108,27:[1,109]}),{16:[1,110]},{18:111,21:[1,112]},{16:[2,14]},e(B,[2,18]),{24:[1,113]},e(Q,[2,59]),{31:38,32:114,33:39,94:F,96:f,97:b,98:D,99:_},{28:[1,116],31:38,32:115,33:39,94:F,96:f,97:b,98:D,99:_},e(M,[2,67],{66:117,68:S,69:N,70:v,71:L,72:$}),e(M,[2,66]),{52:[1,118]},{38:96,51:119,54:24,57:h},{16:[1,120],52:[2,43]},e(x,[2,47],{50:[1,121]}),{52:[1,122]},{52:[2,53],56:123,60:K},{31:38,32:124,33:39,94:F,96:f,97:b,98:D,99:_},e(T,[2,76],{28:[1,125]}),e(T,[2,78],{28:[1,127],77:[1,126]}),e(T,[2,82],{28:[1,128],80:[1,129]}),{28:[1,130]},e(T,[2,90]),e(T,[2,63]),{50:[2,21]},e(z,[2,51]),{28:[1,131]},e(j,[2,9]),{15:132,22:G},{22:[2,13]},{1:[2,15]},e(Q,[2,61]),e(Q,[2,60]),{31:38,32:133,33:39,94:F,96:f,97:b,98:D,99:_},e(M,[2,65]),e(T,[2,40]),{52:[1,134]},{38:96,51:135,52:[2,44],54:24,57:h},{56:136,60:K},e(x,[2,48]),{52:[2,54]},e(T,[2,52]),e(T,[2,77]),e(T,[2,79]),e(T,[2,80],{77:[1,137]}),e(T,[2,83]),e(T,[2,84],{28:[1,138]}),e(T,[2,86],{28:[1,140],77:[1,139]}),{29:[1,141]},{16:[1,142]},e(Q,[2,62]),e(T,[2,41]),{52:[2,45]},{52:[1,143]},e(T,[2,81]),e(T,[2,85]),e(T,[2,87]),e(T,[2,88],{77:[1,144]}),e(z,[2,19]),e(j,[2,10]),e(x,[2,49]),e(T,[2,89])],defaultActions:{2:[2,1],4:[2,3],5:[2,8],9:[2,11],47:[2,2],81:[2,42],86:[2,14],107:[2,21],112:[2,13],113:[2,15],123:[2,54],135:[2,45]},parseError:function(e,t){if(!t.recoverable){var n=new Error(e);throw n.hash=t,n}this.trace(e)},parse:function(e){var t=[0],n=[],s=[null],i=[],u=this.table,r="",a=0,c=0,o=i.slice.call(arguments,1),l=Object.create(this.lexer),h={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(h.yy[A]=this.yy[A]);l.setInput(e,h.yy),h.yy.lexer=l,h.yy.parser=this,void 0===l.yylloc&&(l.yylloc={});var p=l.yylloc;i.push(p);var d=l.options&&l.options.ranges;"function"==typeof h.yy.parseError?this.parseError=h.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,E,C,m,k,g,F,f,b,D={};;){if(E=t[t.length-1],this.defaultActions[E]?C=this.defaultActions[E]:(null==y&&(b=void 0,"number"!=typeof(b=n.pop()||l.lex()||1)&&(b instanceof Array&&(b=(n=b).pop()),b=this.symbols_[b]||b),y=b),C=u[E]&&u[E][y]),void 0===C||!C.length||!C[0]){var _;for(k in f=[],u[E])this.terminals_[k]&&k>2&&f.push("'"+this.terminals_[k]+"'");_=l.showPosition?"Parse error on line "+(a+1)+":\n"+l.showPosition()+"\nExpecting "+f.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==y?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(_,{text:l.match,token:this.terminals_[y]||y,line:l.yylineno,loc:p,expected:f})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+y);switch(C[0]){case 1:t.push(y),s.push(l.yytext),i.push(l.yylloc),t.push(C[1]),y=null,c=l.yyleng,r=l.yytext,a=l.yylineno,p=l.yylloc;break;case 2:if(g=this.productions_[C[1]][1],D.$=s[s.length-g],D._$={first_line:i[i.length-(g||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(g||1)].first_column,last_column:i[i.length-1].last_column},d&&(D._$.range=[i[i.length-(g||1)].range[0],i[i.length-1].range[1]]),void 0!==(m=this.performAction.apply(D,[r,c,a,h.yy,C[1],s,i].concat(o))))return m;g&&(t=t.slice(0,-1*g*2),s=s.slice(0,-1*g),i=i.slice(0,-1*g)),t.push(this.productions_[C[1]][0]),s.push(D.$),i.push(D._$),F=u[t[t.length-2]][t[t.length-1]],t.push(F);break;case 3:return!0}}return!0}},W={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,s,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(s=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var u in i)this[u]=i[u];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,n,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),u=0;ut[0].length)){if(t=n,s=u,this.options.backtrack_lexer){if(!1!==(e=this.test_match(n,i[u])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[s]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,n,s){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 34:case 39:case 43:case 50:break;case 11:return this.begin("acc_title"),44;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),46;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 24:case 27:case 29:case 61:case 64:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 38:return 16;case 20:case 21:return 23;case 22:case 40:case 48:return"EDGE_STATE";case 23:this.begin("callback_name");break;case 25:this.popState(),this.begin("callback_args");break;case 26:return 79;case 28:return 80;case 30:return"STR";case 31:this.begin("string");break;case 32:return this.begin("namespace"),53;case 33:case 42:return this.popState(),16;case 35:return this.begin("namespace-body"),50;case 36:case 46:return this.popState(),52;case 37:case 47:return"EOF_IN_STRUCT";case 41:return this.begin("class"),57;case 44:return this.popState(),this.popState(),52;case 45:return this.begin("class-body"),50;case 49:return"OPEN_IN_STRUCT";case 51:return"MEMBER";case 52:return 82;case 53:return 75;case 54:return 76;case 55:return 78;case 56:return 63;case 57:return 65;case 58:return 58;case 59:return 59;case 60:return 81;case 62:return"GENERICTYPE";case 63:this.begin("generic");break;case 65:return"BQUOTE_STR";case 66:this.begin("bqstring");break;case 67:case 68:case 69:case 70:return 77;case 71:case 72:return 69;case 73:case 74:return 71;case 75:return 70;case 76:return 68;case 77:return 72;case 78:return 73;case 79:return 74;case 80:return 36;case 81:return 55;case 82:return 94;case 83:return"DOT";case 84:return"PLUS";case 85:return 91;case 86:case 87:return"EQUALS";case 88:return 98;case 89:return 27;case 90:return 29;case 91:return"PUNCTUATION";case 92:return 97;case 93:return 96;case 94:return 93;case 95:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[31,36,37,38,39,40,41,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},namespace:{rules:[31,32,33,34,35,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},"class-body":{rules:[31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},class:{rules:[31,42,43,44,45,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},acc_descr_multiline:{rules:[16,17,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},acc_descr:{rules:[14,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},acc_title:{rules:[12,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},arg_directive:{rules:[7,8,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},type_directive:{rules:[6,7,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},open_directive:{rules:[5,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},callback_args:{rules:[27,28,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},callback_name:{rules:[24,25,26,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},href:{rules:[31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},struct:{rules:[31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},generic:{rules:[31,52,53,54,55,56,57,58,59,60,61,62,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},bqstring:{rules:[31,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},string:{rules:[29,30,31,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,31,32,41,52,53,54,55,56,57,58,59,60,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],inclusive:!0}}};function H(){this.yy={}}return X.lexer=W,H.prototype=X,X.Parser=H,new H}();u.parser=u;const r=u,a="classId-";let c=[],o={},l=[],h=0,A={},p=0,d=[];const y=e=>i.e.sanitizeText(e,(0,i.c)()),E=function(e){let t="",n=e;if(e.indexOf("~")>0){const s=e.split("~");n=y(s[0]),t=y(s[1])}return{className:n,type:t}},C=function(e){const t=E(e);void 0===o[t.className]&&(o[t.className]={id:t.className,type:t.type,label:t.className,cssClasses:[],methods:[],members:[],annotations:[],domId:a+t.className+"-"+h},h++)},m=function(e){if(e in o)return o[e].domId;throw new Error("Class not found: "+e)},k=function(e,t){const n=E(e).className,s=o[n];if("string"==typeof t){const e=t.trim();e.startsWith("<<")&&e.endsWith(">>")?s.annotations.push(y(e.substring(2,e.length-2))):e.indexOf(")")>0?s.methods.push(y(e)):e&&s.members.push(y(e))}},g=function(e,t){e.split(",").forEach((function(e){let n=e;e[0].match(/\d/)&&(n=a+n),void 0!==o[n]&&o[n].cssClasses.push(t)}))},F=function(e){let t=(0,s.Ys)(".mermaidTooltip");null===(t._groups||t)[0][0]&&(t=(0,s.Ys)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),(0,s.Ys)(e).select("svg").selectAll("g.node").on("mouseover",(function(){const e=(0,s.Ys)(this);if(null===e.attr("title"))return;const n=this.getBoundingClientRect();t.transition().duration(200).style("opacity",".9"),t.text(e.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),t.html(t.html().replace(/<br\/>/g," ")),e.classed("hover",!0)})).on("mouseout",(function(){t.transition().duration(500).style("opacity",0),(0,s.Ys)(this).classed("hover",!1)}))};d.push(F);let f="TB";const b={parseDirective:function(e,t,n){i.m.parseDirective(this,e,t,n)},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,getConfig:()=>(0,i.c)().class,addClass:C,bindFunctions:function(e){d.forEach((function(t){t(e)}))},clear:function(){c=[],o={},l=[],d=[],d.push(F),A={},p=0,(0,i.v)()},getClass:function(e){return o[e]},getClasses:function(){return o},getNotes:function(){return l},addAnnotation:function(e,t){const n=E(e).className;o[n].annotations.push(t)},addNote:function(e,t){const n={id:`note${l.length}`,class:t,text:e};l.push(n)},getRelations:function(){return c},addRelation:function(e){i.l.debug("Adding relation: "+JSON.stringify(e)),C(e.id1),C(e.id2),e.id1=E(e.id1).className,e.id2=E(e.id2).className,e.relationTitle1=i.e.sanitizeText(e.relationTitle1.trim(),(0,i.c)()),e.relationTitle2=i.e.sanitizeText(e.relationTitle2.trim(),(0,i.c)()),c.push(e)},getDirection:()=>f,setDirection:e=>{f=e},addMember:k,addMembers:function(e,t){Array.isArray(t)&&(t.reverse(),t.forEach((t=>k(e,t))))},cleanupLabel:function(e){return e.startsWith(":")&&(e=e.substring(1)),y(e.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},setClickEvent:function(e,t,n){e.split(",").forEach((function(e){(function(e,t,n){if("loose"!==(0,i.c)().securityLevel)return;if(void 0===t)return;const s=e;if(void 0!==o[s]){const e=m(s);let u=[];if("string"==typeof n){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e{o[t].parent=e,A[e].classes[t]=o[t]}))},getNamespace:function(e){return A[e]},getNamespaces:function(){return A}},D=e=>`g.classGroup text {\n fill: ${e.nodeBorder};\n fill: ${e.classText};\n stroke: none;\n font-family: ${e.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${e.classText};\n}\n.edgeLabel .label rect {\n fill: ${e.mainBkg};\n}\n.label text {\n fill: ${e.classText};\n}\n.edgeLabel .label span {\n background: ${e.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${e.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${e.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${e.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${e.textColor};\n}\n`}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [423],
+ {
+ 1423: function (e, t, n) {
+ n.d(t, {
+ d: function () {
+ return b;
+ },
+ p: function () {
+ return r;
+ },
+ s: function () {
+ return D;
+ },
+ });
+ var s = n(7274),
+ i = n(9339),
+ u = (function () {
+ var e = function (e, t, n, s) {
+ for (n = n || {}, s = e.length; s--; n[e[s]] = t);
+ return n;
+ },
+ t = [1, 34],
+ n = [1, 35],
+ s = [1, 36],
+ i = [1, 37],
+ u = [1, 9],
+ r = [1, 8],
+ a = [1, 19],
+ c = [1, 20],
+ o = [1, 21],
+ l = [1, 40],
+ h = [1, 41],
+ A = [1, 27],
+ p = [1, 25],
+ d = [1, 26],
+ y = [1, 32],
+ E = [1, 33],
+ C = [1, 28],
+ m = [1, 29],
+ k = [1, 30],
+ g = [1, 31],
+ F = [1, 45],
+ f = [1, 42],
+ b = [1, 43],
+ D = [1, 44],
+ _ = [1, 46],
+ B = [1, 24],
+ T = [1, 16, 24],
+ S = [1, 60],
+ N = [1, 61],
+ v = [1, 62],
+ L = [1, 63],
+ $ = [1, 64],
+ I = [1, 65],
+ O = [1, 66],
+ x = [1, 16, 24, 52],
+ R = [1, 77],
+ P = [1, 16, 24, 27, 28, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81],
+ w = [1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 59, 68, 69, 70, 71, 72, 73, 74, 79, 81, 94, 96, 97, 98, 99],
+ G = [1, 86],
+ M = [28, 94, 96, 97, 98, 99],
+ U = [28, 73, 74, 94, 96, 97, 98, 99],
+ Y = [28, 68, 69, 70, 71, 72, 94, 96, 97, 98, 99],
+ K = [1, 99],
+ z = [1, 16, 24, 50, 52, 55],
+ Q = [1, 16, 24, 36],
+ j = [8, 9, 10, 11, 19, 23, 44, 46, 48, 53, 57, 58, 60, 61, 63, 65, 75, 76, 78, 82, 94, 96, 97, 98, 99],
+ X = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ mermaidDoc: 4,
+ directive: 5,
+ statements: 6,
+ direction: 7,
+ direction_tb: 8,
+ direction_bt: 9,
+ direction_rl: 10,
+ direction_lr: 11,
+ graphConfig: 12,
+ openDirective: 13,
+ typeDirective: 14,
+ closeDirective: 15,
+ NEWLINE: 16,
+ ":": 17,
+ argDirective: 18,
+ open_directive: 19,
+ type_directive: 20,
+ arg_directive: 21,
+ close_directive: 22,
+ CLASS_DIAGRAM: 23,
+ EOF: 24,
+ statement: 25,
+ classLabel: 26,
+ SQS: 27,
+ STR: 28,
+ SQE: 29,
+ namespaceName: 30,
+ alphaNumToken: 31,
+ className: 32,
+ classLiteralName: 33,
+ GENERICTYPE: 34,
+ relationStatement: 35,
+ LABEL: 36,
+ namespaceStatement: 37,
+ classStatement: 38,
+ methodStatement: 39,
+ annotationStatement: 40,
+ clickStatement: 41,
+ cssClassStatement: 42,
+ noteStatement: 43,
+ acc_title: 44,
+ acc_title_value: 45,
+ acc_descr: 46,
+ acc_descr_value: 47,
+ acc_descr_multiline_value: 48,
+ namespaceIdentifier: 49,
+ STRUCT_START: 50,
+ classStatements: 51,
+ STRUCT_STOP: 52,
+ NAMESPACE: 53,
+ classIdentifier: 54,
+ STYLE_SEPARATOR: 55,
+ members: 56,
+ CLASS: 57,
+ ANNOTATION_START: 58,
+ ANNOTATION_END: 59,
+ MEMBER: 60,
+ SEPARATOR: 61,
+ relation: 62,
+ NOTE_FOR: 63,
+ noteText: 64,
+ NOTE: 65,
+ relationType: 66,
+ lineType: 67,
+ AGGREGATION: 68,
+ EXTENSION: 69,
+ COMPOSITION: 70,
+ DEPENDENCY: 71,
+ LOLLIPOP: 72,
+ LINE: 73,
+ DOTTED_LINE: 74,
+ CALLBACK: 75,
+ LINK: 76,
+ LINK_TARGET: 77,
+ CLICK: 78,
+ CALLBACK_NAME: 79,
+ CALLBACK_ARGS: 80,
+ HREF: 81,
+ CSSCLASS: 82,
+ commentToken: 83,
+ textToken: 84,
+ graphCodeTokens: 85,
+ textNoTagsToken: 86,
+ TAGSTART: 87,
+ TAGEND: 88,
+ "==": 89,
+ "--": 90,
+ PCT: 91,
+ DEFAULT: 92,
+ SPACE: 93,
+ MINUS: 94,
+ keywords: 95,
+ UNICODE_TEXT: 96,
+ NUM: 97,
+ ALPHA: 98,
+ BQUOTE_STR: 99,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 8: "direction_tb",
+ 9: "direction_bt",
+ 10: "direction_rl",
+ 11: "direction_lr",
+ 16: "NEWLINE",
+ 17: ":",
+ 19: "open_directive",
+ 20: "type_directive",
+ 21: "arg_directive",
+ 22: "close_directive",
+ 23: "CLASS_DIAGRAM",
+ 24: "EOF",
+ 27: "SQS",
+ 28: "STR",
+ 29: "SQE",
+ 34: "GENERICTYPE",
+ 36: "LABEL",
+ 44: "acc_title",
+ 45: "acc_title_value",
+ 46: "acc_descr",
+ 47: "acc_descr_value",
+ 48: "acc_descr_multiline_value",
+ 50: "STRUCT_START",
+ 52: "STRUCT_STOP",
+ 53: "NAMESPACE",
+ 55: "STYLE_SEPARATOR",
+ 57: "CLASS",
+ 58: "ANNOTATION_START",
+ 59: "ANNOTATION_END",
+ 60: "MEMBER",
+ 61: "SEPARATOR",
+ 63: "NOTE_FOR",
+ 65: "NOTE",
+ 68: "AGGREGATION",
+ 69: "EXTENSION",
+ 70: "COMPOSITION",
+ 71: "DEPENDENCY",
+ 72: "LOLLIPOP",
+ 73: "LINE",
+ 74: "DOTTED_LINE",
+ 75: "CALLBACK",
+ 76: "LINK",
+ 77: "LINK_TARGET",
+ 78: "CLICK",
+ 79: "CALLBACK_NAME",
+ 80: "CALLBACK_ARGS",
+ 81: "HREF",
+ 82: "CSSCLASS",
+ 85: "graphCodeTokens",
+ 87: "TAGSTART",
+ 88: "TAGEND",
+ 89: "==",
+ 90: "--",
+ 91: "PCT",
+ 92: "DEFAULT",
+ 93: "SPACE",
+ 94: "MINUS",
+ 95: "keywords",
+ 96: "UNICODE_TEXT",
+ 97: "NUM",
+ 98: "ALPHA",
+ 99: "BQUOTE_STR",
+ },
+ productions_: [
+ 0,
+ [3, 1],
+ [3, 2],
+ [3, 1],
+ [7, 1],
+ [7, 1],
+ [7, 1],
+ [7, 1],
+ [4, 1],
+ [5, 4],
+ [5, 6],
+ [13, 1],
+ [14, 1],
+ [18, 1],
+ [15, 1],
+ [12, 4],
+ [6, 1],
+ [6, 2],
+ [6, 3],
+ [26, 3],
+ [30, 1],
+ [30, 2],
+ [32, 1],
+ [32, 1],
+ [32, 2],
+ [32, 2],
+ [32, 2],
+ [25, 1],
+ [25, 2],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 1],
+ [25, 2],
+ [25, 2],
+ [25, 1],
+ [37, 4],
+ [37, 5],
+ [49, 2],
+ [51, 1],
+ [51, 2],
+ [51, 3],
+ [38, 1],
+ [38, 3],
+ [38, 4],
+ [38, 6],
+ [54, 2],
+ [54, 3],
+ [40, 4],
+ [56, 1],
+ [56, 2],
+ [39, 1],
+ [39, 2],
+ [39, 1],
+ [39, 1],
+ [35, 3],
+ [35, 4],
+ [35, 4],
+ [35, 5],
+ [43, 3],
+ [43, 2],
+ [62, 3],
+ [62, 2],
+ [62, 2],
+ [62, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [66, 1],
+ [67, 1],
+ [67, 1],
+ [41, 3],
+ [41, 4],
+ [41, 3],
+ [41, 4],
+ [41, 4],
+ [41, 5],
+ [41, 3],
+ [41, 4],
+ [41, 4],
+ [41, 5],
+ [41, 4],
+ [41, 5],
+ [41, 5],
+ [41, 6],
+ [42, 3],
+ [83, 1],
+ [83, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [84, 1],
+ [86, 1],
+ [86, 1],
+ [86, 1],
+ [86, 1],
+ [31, 1],
+ [31, 1],
+ [31, 1],
+ [31, 1],
+ [33, 1],
+ [64, 1],
+ ],
+ performAction: function (e, t, n, s, i, u, r) {
+ var a = u.length - 1;
+ switch (i) {
+ case 4:
+ s.setDirection("TB");
+ break;
+ case 5:
+ s.setDirection("BT");
+ break;
+ case 6:
+ s.setDirection("RL");
+ break;
+ case 7:
+ s.setDirection("LR");
+ break;
+ case 11:
+ s.parseDirective("%%{", "open_directive");
+ break;
+ case 12:
+ s.parseDirective(u[a], "type_directive");
+ break;
+ case 13:
+ (u[a] = u[a].trim().replace(/'/g, '"')), s.parseDirective(u[a], "arg_directive");
+ break;
+ case 14:
+ s.parseDirective("}%%", "close_directive", "class");
+ break;
+ case 19:
+ this.$ = u[a - 1];
+ break;
+ case 20:
+ case 22:
+ case 23:
+ this.$ = u[a];
+ break;
+ case 21:
+ case 24:
+ this.$ = u[a - 1] + u[a];
+ break;
+ case 25:
+ case 26:
+ this.$ = u[a - 1] + "~" + u[a] + "~";
+ break;
+ case 27:
+ s.addRelation(u[a]);
+ break;
+ case 28:
+ (u[a - 1].title = s.cleanupLabel(u[a])), s.addRelation(u[a - 1]);
+ break;
+ case 37:
+ (this.$ = u[a].trim()), s.setAccTitle(this.$);
+ break;
+ case 38:
+ case 39:
+ (this.$ = u[a].trim()), s.setAccDescription(this.$);
+ break;
+ case 40:
+ s.addClassesToNamespace(u[a - 3], u[a - 1]);
+ break;
+ case 41:
+ s.addClassesToNamespace(u[a - 4], u[a - 1]);
+ break;
+ case 42:
+ (this.$ = u[a]), s.addNamespace(u[a]);
+ break;
+ case 43:
+ case 53:
+ this.$ = [u[a]];
+ break;
+ case 44:
+ this.$ = [u[a - 1]];
+ break;
+ case 45:
+ u[a].unshift(u[a - 2]), (this.$ = u[a]);
+ break;
+ case 47:
+ s.setCssClass(u[a - 2], u[a]);
+ break;
+ case 48:
+ s.addMembers(u[a - 3], u[a - 1]);
+ break;
+ case 49:
+ s.setCssClass(u[a - 5], u[a - 3]), s.addMembers(u[a - 5], u[a - 1]);
+ break;
+ case 50:
+ (this.$ = u[a]), s.addClass(u[a]);
+ break;
+ case 51:
+ (this.$ = u[a - 1]), s.addClass(u[a - 1]), s.setClassLabel(u[a - 1], u[a]);
+ break;
+ case 52:
+ s.addAnnotation(u[a], u[a - 2]);
+ break;
+ case 54:
+ u[a].push(u[a - 1]), (this.$ = u[a]);
+ break;
+ case 55:
+ case 57:
+ case 58:
+ break;
+ case 56:
+ s.addMember(u[a - 1], s.cleanupLabel(u[a]));
+ break;
+ case 59:
+ this.$ = {
+ id1: u[a - 2],
+ id2: u[a],
+ relation: u[a - 1],
+ relationTitle1: "none",
+ relationTitle2: "none",
+ };
+ break;
+ case 60:
+ this.$ = {
+ id1: u[a - 3],
+ id2: u[a],
+ relation: u[a - 1],
+ relationTitle1: u[a - 2],
+ relationTitle2: "none",
+ };
+ break;
+ case 61:
+ this.$ = {
+ id1: u[a - 3],
+ id2: u[a],
+ relation: u[a - 2],
+ relationTitle1: "none",
+ relationTitle2: u[a - 1],
+ };
+ break;
+ case 62:
+ this.$ = {
+ id1: u[a - 4],
+ id2: u[a],
+ relation: u[a - 2],
+ relationTitle1: u[a - 3],
+ relationTitle2: u[a - 1],
+ };
+ break;
+ case 63:
+ s.addNote(u[a], u[a - 1]);
+ break;
+ case 64:
+ s.addNote(u[a]);
+ break;
+ case 65:
+ this.$ = { type1: u[a - 2], type2: u[a], lineType: u[a - 1] };
+ break;
+ case 66:
+ this.$ = { type1: "none", type2: u[a], lineType: u[a - 1] };
+ break;
+ case 67:
+ this.$ = { type1: u[a - 1], type2: "none", lineType: u[a] };
+ break;
+ case 68:
+ this.$ = { type1: "none", type2: "none", lineType: u[a] };
+ break;
+ case 69:
+ this.$ = s.relationType.AGGREGATION;
+ break;
+ case 70:
+ this.$ = s.relationType.EXTENSION;
+ break;
+ case 71:
+ this.$ = s.relationType.COMPOSITION;
+ break;
+ case 72:
+ this.$ = s.relationType.DEPENDENCY;
+ break;
+ case 73:
+ this.$ = s.relationType.LOLLIPOP;
+ break;
+ case 74:
+ this.$ = s.lineType.LINE;
+ break;
+ case 75:
+ this.$ = s.lineType.DOTTED_LINE;
+ break;
+ case 76:
+ case 82:
+ (this.$ = u[a - 2]), s.setClickEvent(u[a - 1], u[a]);
+ break;
+ case 77:
+ case 83:
+ (this.$ = u[a - 3]), s.setClickEvent(u[a - 2], u[a - 1]), s.setTooltip(u[a - 2], u[a]);
+ break;
+ case 78:
+ (this.$ = u[a - 2]), s.setLink(u[a - 1], u[a]);
+ break;
+ case 79:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a - 1], u[a]);
+ break;
+ case 80:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a - 1]), s.setTooltip(u[a - 2], u[a]);
+ break;
+ case 81:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 2], u[a]), s.setTooltip(u[a - 3], u[a - 1]);
+ break;
+ case 84:
+ (this.$ = u[a - 3]), s.setClickEvent(u[a - 2], u[a - 1], u[a]);
+ break;
+ case 85:
+ (this.$ = u[a - 4]), s.setClickEvent(u[a - 3], u[a - 2], u[a - 1]), s.setTooltip(u[a - 3], u[a]);
+ break;
+ case 86:
+ (this.$ = u[a - 3]), s.setLink(u[a - 2], u[a]);
+ break;
+ case 87:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 1], u[a]);
+ break;
+ case 88:
+ (this.$ = u[a - 4]), s.setLink(u[a - 3], u[a - 1]), s.setTooltip(u[a - 3], u[a]);
+ break;
+ case 89:
+ (this.$ = u[a - 5]), s.setLink(u[a - 4], u[a - 2], u[a]), s.setTooltip(u[a - 4], u[a - 1]);
+ break;
+ case 90:
+ s.setCssClass(u[a - 1], u[a]);
+ }
+ },
+ table: [
+ {
+ 3: 1,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 12: 5,
+ 13: 6,
+ 19: u,
+ 23: r,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ { 1: [3] },
+ { 1: [2, 1] },
+ {
+ 3: 47,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 12: 5,
+ 13: 6,
+ 19: u,
+ 23: r,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ { 1: [2, 3] },
+ { 1: [2, 8] },
+ { 14: 48, 20: [1, 49] },
+ e(B, [2, 16], { 16: [1, 50] }),
+ { 16: [1, 51] },
+ { 20: [2, 11] },
+ e(T, [2, 27], { 36: [1, 52] }),
+ e(T, [2, 29]),
+ e(T, [2, 30]),
+ e(T, [2, 31]),
+ e(T, [2, 32]),
+ e(T, [2, 33]),
+ e(T, [2, 34]),
+ e(T, [2, 35]),
+ e(T, [2, 36]),
+ { 45: [1, 53] },
+ { 47: [1, 54] },
+ e(T, [2, 39]),
+ e(T, [2, 55], {
+ 62: 55,
+ 66: 58,
+ 67: 59,
+ 28: [1, 56],
+ 36: [1, 57],
+ 68: S,
+ 69: N,
+ 70: v,
+ 71: L,
+ 72: $,
+ 73: I,
+ 74: O,
+ }),
+ { 50: [1, 67] },
+ e(x, [2, 46], { 50: [1, 69], 55: [1, 68] }),
+ e(T, [2, 57]),
+ e(T, [2, 58]),
+ { 31: 70, 94: F, 96: f, 97: b, 98: D },
+ { 31: 38, 32: 71, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 31: 38, 32: 72, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 31: 38, 32: 73, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: [1, 74] },
+ { 31: 38, 32: 75, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: R, 64: 76 },
+ e(T, [2, 4]),
+ e(T, [2, 5]),
+ e(T, [2, 6]),
+ e(T, [2, 7]),
+ e(P, [2, 22], {
+ 31: 38,
+ 33: 39,
+ 32: 78,
+ 34: [1, 79],
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ }),
+ e(P, [2, 23], { 34: [1, 80] }),
+ { 30: 81, 31: 82, 94: F, 96: f, 97: b, 98: D },
+ { 31: 38, 32: 83, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(w, [2, 104]),
+ e(w, [2, 105]),
+ e(w, [2, 106]),
+ e(w, [2, 107]),
+ e([1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81], [2, 108]),
+ { 1: [2, 2] },
+ { 15: 84, 17: [1, 85], 22: G },
+ e([17, 22], [2, 12]),
+ e(B, [2, 17], {
+ 25: 7,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 7: 18,
+ 32: 22,
+ 49: 23,
+ 54: 24,
+ 31: 38,
+ 33: 39,
+ 6: 87,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 44: a,
+ 46: c,
+ 48: o,
+ 53: l,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ }),
+ {
+ 6: 88,
+ 7: 18,
+ 8: t,
+ 9: n,
+ 10: s,
+ 11: i,
+ 25: 7,
+ 31: 38,
+ 32: 22,
+ 33: 39,
+ 35: 10,
+ 37: 11,
+ 38: 12,
+ 39: 13,
+ 40: 14,
+ 41: 15,
+ 42: 16,
+ 43: 17,
+ 44: a,
+ 46: c,
+ 48: o,
+ 49: 23,
+ 53: l,
+ 54: 24,
+ 57: h,
+ 58: A,
+ 60: p,
+ 61: d,
+ 63: y,
+ 65: E,
+ 75: C,
+ 76: m,
+ 78: k,
+ 82: g,
+ 94: F,
+ 96: f,
+ 97: b,
+ 98: D,
+ 99: _,
+ },
+ e(T, [2, 28]),
+ e(T, [2, 37]),
+ e(T, [2, 38]),
+ { 28: [1, 90], 31: 38, 32: 89, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 62: 91, 66: 58, 67: 59, 68: S, 69: N, 70: v, 71: L, 72: $, 73: I, 74: O },
+ e(T, [2, 56]),
+ { 67: 92, 73: I, 74: O },
+ e(M, [2, 68], { 66: 93, 68: S, 69: N, 70: v, 71: L, 72: $ }),
+ e(U, [2, 69]),
+ e(U, [2, 70]),
+ e(U, [2, 71]),
+ e(U, [2, 72]),
+ e(U, [2, 73]),
+ e(Y, [2, 74]),
+ e(Y, [2, 75]),
+ { 16: [1, 95], 38: 96, 51: 94, 54: 24, 57: h },
+ { 31: 97, 94: F, 96: f, 97: b, 98: D },
+ { 56: 98, 60: K },
+ { 59: [1, 100] },
+ { 28: [1, 101] },
+ { 28: [1, 102] },
+ { 79: [1, 103], 81: [1, 104] },
+ { 31: 105, 94: F, 96: f, 97: b, 98: D },
+ { 28: R, 64: 106 },
+ e(T, [2, 64]),
+ e(T, [2, 109]),
+ e(P, [2, 24]),
+ e(P, [2, 25]),
+ e(P, [2, 26]),
+ { 50: [2, 42] },
+ { 30: 107, 31: 82, 50: [2, 20], 94: F, 96: f, 97: b, 98: D },
+ e(z, [2, 50], { 26: 108, 27: [1, 109] }),
+ { 16: [1, 110] },
+ { 18: 111, 21: [1, 112] },
+ { 16: [2, 14] },
+ e(B, [2, 18]),
+ { 24: [1, 113] },
+ e(Q, [2, 59]),
+ { 31: 38, 32: 114, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ { 28: [1, 116], 31: 38, 32: 115, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(M, [2, 67], { 66: 117, 68: S, 69: N, 70: v, 71: L, 72: $ }),
+ e(M, [2, 66]),
+ { 52: [1, 118] },
+ { 38: 96, 51: 119, 54: 24, 57: h },
+ { 16: [1, 120], 52: [2, 43] },
+ e(x, [2, 47], { 50: [1, 121] }),
+ { 52: [1, 122] },
+ { 52: [2, 53], 56: 123, 60: K },
+ { 31: 38, 32: 124, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(T, [2, 76], { 28: [1, 125] }),
+ e(T, [2, 78], { 28: [1, 127], 77: [1, 126] }),
+ e(T, [2, 82], { 28: [1, 128], 80: [1, 129] }),
+ { 28: [1, 130] },
+ e(T, [2, 90]),
+ e(T, [2, 63]),
+ { 50: [2, 21] },
+ e(z, [2, 51]),
+ { 28: [1, 131] },
+ e(j, [2, 9]),
+ { 15: 132, 22: G },
+ { 22: [2, 13] },
+ { 1: [2, 15] },
+ e(Q, [2, 61]),
+ e(Q, [2, 60]),
+ { 31: 38, 32: 133, 33: 39, 94: F, 96: f, 97: b, 98: D, 99: _ },
+ e(M, [2, 65]),
+ e(T, [2, 40]),
+ { 52: [1, 134] },
+ { 38: 96, 51: 135, 52: [2, 44], 54: 24, 57: h },
+ { 56: 136, 60: K },
+ e(x, [2, 48]),
+ { 52: [2, 54] },
+ e(T, [2, 52]),
+ e(T, [2, 77]),
+ e(T, [2, 79]),
+ e(T, [2, 80], { 77: [1, 137] }),
+ e(T, [2, 83]),
+ e(T, [2, 84], { 28: [1, 138] }),
+ e(T, [2, 86], { 28: [1, 140], 77: [1, 139] }),
+ { 29: [1, 141] },
+ { 16: [1, 142] },
+ e(Q, [2, 62]),
+ e(T, [2, 41]),
+ { 52: [2, 45] },
+ { 52: [1, 143] },
+ e(T, [2, 81]),
+ e(T, [2, 85]),
+ e(T, [2, 87]),
+ e(T, [2, 88], { 77: [1, 144] }),
+ e(z, [2, 19]),
+ e(j, [2, 10]),
+ e(x, [2, 49]),
+ e(T, [2, 89]),
+ ],
+ defaultActions: {
+ 2: [2, 1],
+ 4: [2, 3],
+ 5: [2, 8],
+ 9: [2, 11],
+ 47: [2, 2],
+ 81: [2, 42],
+ 86: [2, 14],
+ 107: [2, 21],
+ 112: [2, 13],
+ 113: [2, 15],
+ 123: [2, 54],
+ 135: [2, 45],
+ },
+ parseError: function (e, t) {
+ if (!t.recoverable) {
+ var n = new Error(e);
+ throw ((n.hash = t), n);
+ }
+ this.trace(e);
+ },
+ parse: function (e) {
+ var t = [0],
+ n = [],
+ s = [null],
+ i = [],
+ u = this.table,
+ r = "",
+ a = 0,
+ c = 0,
+ o = i.slice.call(arguments, 1),
+ l = Object.create(this.lexer),
+ h = { yy: {} };
+ for (var A in this.yy) Object.prototype.hasOwnProperty.call(this.yy, A) && (h.yy[A] = this.yy[A]);
+ l.setInput(e, h.yy), (h.yy.lexer = l), (h.yy.parser = this), void 0 === l.yylloc && (l.yylloc = {});
+ var p = l.yylloc;
+ i.push(p);
+ var d = l.options && l.options.ranges;
+ "function" == typeof h.yy.parseError
+ ? (this.parseError = h.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var y, E, C, m, k, g, F, f, b, D = {}; ; ) {
+ if (
+ ((E = t[t.length - 1]),
+ this.defaultActions[E]
+ ? (C = this.defaultActions[E])
+ : (null == y &&
+ ((b = void 0),
+ "number" != typeof (b = n.pop() || l.lex() || 1) &&
+ (b instanceof Array && (b = (n = b).pop()), (b = this.symbols_[b] || b)),
+ (y = b)),
+ (C = u[E] && u[E][y])),
+ void 0 === C || !C.length || !C[0])
+ ) {
+ var _;
+ for (k in ((f = []), u[E])) this.terminals_[k] && k > 2 && f.push("'" + this.terminals_[k] + "'");
+ (_ = l.showPosition
+ ? "Parse error on line " +
+ (a + 1) +
+ ":\n" +
+ l.showPosition() +
+ "\nExpecting " +
+ f.join(", ") +
+ ", got '" +
+ (this.terminals_[y] || y) +
+ "'"
+ : "Parse error on line " + (a + 1) + ": Unexpected " + (1 == y ? "end of input" : "'" + (this.terminals_[y] || y) + "'")),
+ this.parseError(_, {
+ text: l.match,
+ token: this.terminals_[y] || y,
+ line: l.yylineno,
+ loc: p,
+ expected: f,
+ });
+ }
+ if (C[0] instanceof Array && C.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + E + ", token: " + y);
+ switch (C[0]) {
+ case 1:
+ t.push(y),
+ s.push(l.yytext),
+ i.push(l.yylloc),
+ t.push(C[1]),
+ (y = null),
+ (c = l.yyleng),
+ (r = l.yytext),
+ (a = l.yylineno),
+ (p = l.yylloc);
+ break;
+ case 2:
+ if (
+ ((g = this.productions_[C[1]][1]),
+ (D.$ = s[s.length - g]),
+ (D._$ = {
+ first_line: i[i.length - (g || 1)].first_line,
+ last_line: i[i.length - 1].last_line,
+ first_column: i[i.length - (g || 1)].first_column,
+ last_column: i[i.length - 1].last_column,
+ }),
+ d && (D._$.range = [i[i.length - (g || 1)].range[0], i[i.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(D, [r, c, a, h.yy, C[1], s, i].concat(o))))
+ )
+ return m;
+ g && ((t = t.slice(0, -1 * g * 2)), (s = s.slice(0, -1 * g)), (i = i.slice(0, -1 * g))),
+ t.push(this.productions_[C[1]][0]),
+ s.push(D.$),
+ i.push(D._$),
+ (F = u[t[t.length - 2]][t[t.length - 1]]),
+ t.push(F);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ W = {
+ EOF: 1,
+ parseError: function (e, t) {
+ if (!this.yy.parser) throw new Error(e);
+ this.yy.parser.parseError(e, t);
+ },
+ setInput: function (e, t) {
+ return (
+ (this.yy = t || this.yy || {}),
+ (this._input = e),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var e = this._input[0];
+ return (
+ (this.yytext += e),
+ this.yyleng++,
+ this.offset++,
+ (this.match += e),
+ (this.matched += e),
+ e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ e
+ );
+ },
+ unput: function (e) {
+ var t = e.length,
+ n = e.split(/(?:\r\n?|\n)/g);
+ (this._input = e + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - t)), (this.offset -= t);
+ var s = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var i = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === s.length ? this.yylloc.first_column : 0) + s[s.length - n.length].length - n[0].length
+ : this.yylloc.first_column - t,
+ }),
+ this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - t]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (e) {
+ this.unput(this.match.slice(e));
+ },
+ pastInput: function () {
+ var e = this.matched.substr(0, this.matched.length - this.match.length);
+ return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var e = this.match;
+ return (
+ e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var e = this.pastInput(),
+ t = new Array(e.length + 1).join("-");
+ return e + this.upcomingInput() + "\n" + t + "^";
+ },
+ test_match: function (e, t) {
+ var n, s, i;
+ if (
+ (this.options.backtrack_lexer &&
+ ((i = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))),
+ (s = e[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += s.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length,
+ }),
+ (this.yytext += e[0]),
+ (this.match += e[0]),
+ (this.matches = e),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(e[0].length)),
+ (this.matched += e[0]),
+ (n = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var u in i) this[u] = i[u];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var e, t, n, s;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var i = this._currentRules(), u = 0; u < i.length; u++)
+ if ((n = this._input.match(this.rules[i[u]])) && (!t || n[0].length > t[0].length)) {
+ if (((t = n), (s = u), this.options.backtrack_lexer)) {
+ if (!1 !== (e = this.test_match(n, i[u]))) return e;
+ if (this._backtrack) {
+ t = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return t
+ ? !1 !== (e = this.test_match(t, i[s])) && e
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (e) {
+ this.conditionStack.push(e);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (e) {
+ return (e = this.conditionStack.length - 1 - Math.abs(e || 0)) >= 0 ? this.conditionStack[e] : "INITIAL";
+ },
+ pushState: function (e) {
+ this.begin(e);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: {},
+ performAction: function (e, t, n, s) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 19;
+ case 1:
+ return 8;
+ case 2:
+ return 9;
+ case 3:
+ return 10;
+ case 4:
+ return 11;
+ case 5:
+ return this.begin("type_directive"), 20;
+ case 6:
+ return this.popState(), this.begin("arg_directive"), 17;
+ case 7:
+ return this.popState(), this.popState(), 22;
+ case 8:
+ return 21;
+ case 9:
+ case 10:
+ case 19:
+ case 34:
+ case 39:
+ case 43:
+ case 50:
+ break;
+ case 11:
+ return this.begin("acc_title"), 44;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 46;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 24:
+ case 27:
+ case 29:
+ case 61:
+ case 64:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ case 38:
+ return 16;
+ case 20:
+ case 21:
+ return 23;
+ case 22:
+ case 40:
+ case 48:
+ return "EDGE_STATE";
+ case 23:
+ this.begin("callback_name");
+ break;
+ case 25:
+ this.popState(), this.begin("callback_args");
+ break;
+ case 26:
+ return 79;
+ case 28:
+ return 80;
+ case 30:
+ return "STR";
+ case 31:
+ this.begin("string");
+ break;
+ case 32:
+ return this.begin("namespace"), 53;
+ case 33:
+ case 42:
+ return this.popState(), 16;
+ case 35:
+ return this.begin("namespace-body"), 50;
+ case 36:
+ case 46:
+ return this.popState(), 52;
+ case 37:
+ case 47:
+ return "EOF_IN_STRUCT";
+ case 41:
+ return this.begin("class"), 57;
+ case 44:
+ return this.popState(), this.popState(), 52;
+ case 45:
+ return this.begin("class-body"), 50;
+ case 49:
+ return "OPEN_IN_STRUCT";
+ case 51:
+ return "MEMBER";
+ case 52:
+ return 82;
+ case 53:
+ return 75;
+ case 54:
+ return 76;
+ case 55:
+ return 78;
+ case 56:
+ return 63;
+ case 57:
+ return 65;
+ case 58:
+ return 58;
+ case 59:
+ return 59;
+ case 60:
+ return 81;
+ case 62:
+ return "GENERICTYPE";
+ case 63:
+ this.begin("generic");
+ break;
+ case 65:
+ return "BQUOTE_STR";
+ case 66:
+ this.begin("bqstring");
+ break;
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ return 77;
+ case 71:
+ case 72:
+ return 69;
+ case 73:
+ case 74:
+ return 71;
+ case 75:
+ return 70;
+ case 76:
+ return 68;
+ case 77:
+ return 72;
+ case 78:
+ return 73;
+ case 79:
+ return 74;
+ case 80:
+ return 36;
+ case 81:
+ return 55;
+ case 82:
+ return 94;
+ case 83:
+ return "DOT";
+ case 84:
+ return "PLUS";
+ case 85:
+ return 91;
+ case 86:
+ case 87:
+ return "EQUALS";
+ case 88:
+ return 98;
+ case 89:
+ return 27;
+ case 90:
+ return 29;
+ case 91:
+ return "PUNCTUATION";
+ case 92:
+ return 97;
+ case 93:
+ return 96;
+ case 94:
+ return 93;
+ case 95:
+ return 24;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/,
+ /^(?:.*direction\s+TB[^\n]*)/,
+ /^(?:.*direction\s+BT[^\n]*)/,
+ /^(?:.*direction\s+RL[^\n]*)/,
+ /^(?:.*direction\s+LR[^\n]*)/,
+ /^(?:((?:(?!\}%%)[^:.])*))/,
+ /^(?::)/,
+ /^(?:\}%%)/,
+ /^(?:((?:(?!\}%%).|\n)*))/,
+ /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
+ /^(?:%%[^\n]*(\r?\n)*)/,
+ /^(?:accTitle\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*\{\s*)/,
+ /^(?:[\}])/,
+ /^(?:[^\}]*)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:classDiagram-v2\b)/,
+ /^(?:classDiagram\b)/,
+ /^(?:\[\*\])/,
+ /^(?:call[\s]+)/,
+ /^(?:\([\s]*\))/,
+ /^(?:\()/,
+ /^(?:[^(]*)/,
+ /^(?:\))/,
+ /^(?:[^)]*)/,
+ /^(?:["])/,
+ /^(?:[^"]*)/,
+ /^(?:["])/,
+ /^(?:namespace\b)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:[{])/,
+ /^(?:[}])/,
+ /^(?:$)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:\[\*\])/,
+ /^(?:class\b)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:[}])/,
+ /^(?:[{])/,
+ /^(?:[}])/,
+ /^(?:$)/,
+ /^(?:\[\*\])/,
+ /^(?:[{])/,
+ /^(?:[\n])/,
+ /^(?:[^{}\n]*)/,
+ /^(?:cssClass\b)/,
+ /^(?:callback\b)/,
+ /^(?:link\b)/,
+ /^(?:click\b)/,
+ /^(?:note for\b)/,
+ /^(?:note\b)/,
+ /^(?:<<)/,
+ /^(?:>>)/,
+ /^(?:href\b)/,
+ /^(?:[~])/,
+ /^(?:[^~]*)/,
+ /^(?:~)/,
+ /^(?:[`])/,
+ /^(?:[^`]+)/,
+ /^(?:[`])/,
+ /^(?:_self\b)/,
+ /^(?:_blank\b)/,
+ /^(?:_parent\b)/,
+ /^(?:_top\b)/,
+ /^(?:\s*<\|)/,
+ /^(?:\s*\|>)/,
+ /^(?:\s*>)/,
+ /^(?:\s*<)/,
+ /^(?:\s*\*)/,
+ /^(?:\s*o\b)/,
+ /^(?:\s*\(\))/,
+ /^(?:--)/,
+ /^(?:\.\.)/,
+ /^(?::{1}[^:\n;]+)/,
+ /^(?::{3})/,
+ /^(?:-)/,
+ /^(?:\.)/,
+ /^(?:\+)/,
+ /^(?:%)/,
+ /^(?:=)/,
+ /^(?:=)/,
+ /^(?:\w+)/,
+ /^(?:\[)/,
+ /^(?:\])/,
+ /^(?:[!"#$%&'*+,-.`?\\/])/,
+ /^(?:[0-9]+)/,
+ /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,
+ /^(?:\s)/,
+ /^(?:$)/,
+ ],
+ conditions: {
+ "namespace-body": {
+ rules: [
+ 31, 36, 37, 38, 39, 40, 41, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ namespace: {
+ rules: [
+ 31, 32, 33, 34, 35, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ "class-body": {
+ rules: [
+ 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ class: {
+ rules: [
+ 31, 42, 43, 44, 45, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_descr_multiline: {
+ rules: [
+ 16, 17, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_descr: {
+ rules: [
+ 14, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ acc_title: {
+ rules: [
+ 12, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ arg_directive: {
+ rules: [
+ 7, 8, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ type_directive: {
+ rules: [
+ 6, 7, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ open_directive: {
+ rules: [
+ 5, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ callback_args: {
+ rules: [
+ 27, 28, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ callback_name: {
+ rules: [
+ 24, 25, 26, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ href: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ struct: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ generic: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ bqstring: {
+ rules: [
+ 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ string: {
+ rules: [
+ 29, 30, 31, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !1,
+ },
+ INITIAL: {
+ rules: [
+ 0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 31, 32, 41, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function H() {
+ this.yy = {};
+ }
+ return (X.lexer = W), (H.prototype = X), (X.Parser = H), new H();
+ })();
+ u.parser = u;
+ const r = u,
+ a = "classId-";
+ let c = [],
+ o = {},
+ l = [],
+ h = 0,
+ A = {},
+ p = 0,
+ d = [];
+ const y = (e) => i.e.sanitizeText(e, (0, i.c)()),
+ E = function (e) {
+ let t = "",
+ n = e;
+ if (e.indexOf("~") > 0) {
+ const s = e.split("~");
+ (n = y(s[0])), (t = y(s[1]));
+ }
+ return { className: n, type: t };
+ },
+ C = function (e) {
+ const t = E(e);
+ void 0 === o[t.className] &&
+ ((o[t.className] = {
+ id: t.className,
+ type: t.type,
+ label: t.className,
+ cssClasses: [],
+ methods: [],
+ members: [],
+ annotations: [],
+ domId: a + t.className + "-" + h,
+ }),
+ h++);
+ },
+ m = function (e) {
+ if (e in o) return o[e].domId;
+ throw new Error("Class not found: " + e);
+ },
+ k = function (e, t) {
+ const n = E(e).className,
+ s = o[n];
+ if ("string" == typeof t) {
+ const e = t.trim();
+ e.startsWith("<<") && e.endsWith(">>")
+ ? s.annotations.push(y(e.substring(2, e.length - 2)))
+ : e.indexOf(")") > 0
+ ? s.methods.push(y(e))
+ : e && s.members.push(y(e));
+ }
+ },
+ g = function (e, t) {
+ e.split(",").forEach(function (e) {
+ let n = e;
+ e[0].match(/\d/) && (n = a + n), void 0 !== o[n] && o[n].cssClasses.push(t);
+ });
+ },
+ F = function (e) {
+ let t = (0, s.Ys)(".mermaidTooltip");
+ null === (t._groups || t)[0][0] && (t = (0, s.Ys)("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0)),
+ (0, s.Ys)(e)
+ .select("svg")
+ .selectAll("g.node")
+ .on("mouseover", function () {
+ const e = (0, s.Ys)(this);
+ if (null === e.attr("title")) return;
+ const n = this.getBoundingClientRect();
+ t.transition().duration(200).style("opacity", ".9"),
+ t
+ .text(e.attr("title"))
+ .style("left", window.scrollX + n.left + (n.right - n.left) / 2 + "px")
+ .style("top", window.scrollY + n.top - 14 + document.body.scrollTop + "px"),
+ t.html(t.html().replace(/<br\/>/g, " ")),
+ e.classed("hover", !0);
+ })
+ .on("mouseout", function () {
+ t.transition().duration(500).style("opacity", 0), (0, s.Ys)(this).classed("hover", !1);
+ });
+ };
+ d.push(F);
+ let f = "TB";
+ const b = {
+ parseDirective: function (e, t, n) {
+ i.m.parseDirective(this, e, t, n);
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ getConfig: () => (0, i.c)().class,
+ addClass: C,
+ bindFunctions: function (e) {
+ d.forEach(function (t) {
+ t(e);
+ });
+ },
+ clear: function () {
+ (c = []), (o = {}), (l = []), (d = []), d.push(F), (A = {}), (p = 0), (0, i.v)();
+ },
+ getClass: function (e) {
+ return o[e];
+ },
+ getClasses: function () {
+ return o;
+ },
+ getNotes: function () {
+ return l;
+ },
+ addAnnotation: function (e, t) {
+ const n = E(e).className;
+ o[n].annotations.push(t);
+ },
+ addNote: function (e, t) {
+ const n = { id: `note${l.length}`, class: t, text: e };
+ l.push(n);
+ },
+ getRelations: function () {
+ return c;
+ },
+ addRelation: function (e) {
+ i.l.debug("Adding relation: " + JSON.stringify(e)),
+ C(e.id1),
+ C(e.id2),
+ (e.id1 = E(e.id1).className),
+ (e.id2 = E(e.id2).className),
+ (e.relationTitle1 = i.e.sanitizeText(e.relationTitle1.trim(), (0, i.c)())),
+ (e.relationTitle2 = i.e.sanitizeText(e.relationTitle2.trim(), (0, i.c)())),
+ c.push(e);
+ },
+ getDirection: () => f,
+ setDirection: (e) => {
+ f = e;
+ },
+ addMember: k,
+ addMembers: function (e, t) {
+ Array.isArray(t) && (t.reverse(), t.forEach((t) => k(e, t)));
+ },
+ cleanupLabel: function (e) {
+ return e.startsWith(":") && (e = e.substring(1)), y(e.trim());
+ },
+ lineType: { LINE: 0, DOTTED_LINE: 1 },
+ relationType: {
+ AGGREGATION: 0,
+ EXTENSION: 1,
+ COMPOSITION: 2,
+ DEPENDENCY: 3,
+ LOLLIPOP: 4,
+ },
+ setClickEvent: function (e, t, n) {
+ e.split(",").forEach(function (e) {
+ (function (e, t, n) {
+ if ("loose" !== (0, i.c)().securityLevel) return;
+ if (void 0 === t) return;
+ const s = e;
+ if (void 0 !== o[s]) {
+ const e = m(s);
+ let u = [];
+ if ("string" == typeof n) {
+ u = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
+ for (let e = 0; e < u.length; e++) {
+ let t = u[e].trim();
+ '"' === t.charAt(0) && '"' === t.charAt(t.length - 1) && (t = t.substr(1, t.length - 2)), (u[e] = t);
+ }
+ }
+ 0 === u.length && u.push(e),
+ d.push(function () {
+ const n = document.querySelector(`[id="${e}"]`);
+ null !== n &&
+ n.addEventListener(
+ "click",
+ function () {
+ i.u.runFunc(t, ...u);
+ },
+ !1,
+ );
+ });
+ }
+ })(e, t, n),
+ (o[e].haveCallback = !0);
+ }),
+ g(e, "clickable");
+ },
+ setCssClass: g,
+ setLink: function (e, t, n) {
+ const s = (0, i.c)();
+ e.split(",").forEach(function (e) {
+ let u = e;
+ e[0].match(/\d/) && (u = a + u),
+ void 0 !== o[u] &&
+ ((o[u].link = i.u.formatUrl(t, s)),
+ "sandbox" === s.securityLevel ? (o[u].linkTarget = "_top") : (o[u].linkTarget = "string" == typeof n ? y(n) : "_blank"));
+ }),
+ g(e, "clickable");
+ },
+ getTooltip: function (e, t) {
+ return t ? A[t].classes[e].tooltip : o[e].tooltip;
+ },
+ setTooltip: function (e, t) {
+ e.split(",").forEach(function (e) {
+ void 0 !== t && (o[e].tooltip = y(t));
+ });
+ },
+ lookUpDomId: m,
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ setClassLabel: function (e, t) {
+ t && (t = y(t));
+ const { className: n } = E(e);
+ o[n].label = t;
+ },
+ addNamespace: function (e) {
+ void 0 === A[e] && ((A[e] = { id: e, classes: {}, children: {}, domId: a + e + "-" + p }), p++);
+ },
+ addClassesToNamespace: function (e, t) {
+ void 0 !== A[e] &&
+ t.map((t) => {
+ (o[t].parent = e), (A[e].classes[t] = o[t]);
+ });
+ },
+ getNamespace: function (e) {
+ return A[e];
+ },
+ getNamespaces: function () {
+ return A;
+ },
+ },
+ D = (e) =>
+ `g.classGroup text {\n fill: ${e.nodeBorder};\n fill: ${e.classText};\n stroke: none;\n font-family: ${e.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${e.classText};\n}\n.edgeLabel .label rect {\n fill: ${e.mainBkg};\n}\n.label text {\n fill: ${e.classText};\n}\n.edgeLabel .label span {\n background: ${e.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${e.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${e.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${e.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${e.lineColor} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${e.mainBkg} !important;\n stroke: ${e.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${e.textColor};\n}\n`;
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js
index 86b7da145..d6ac88548 100644
--- a/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js
@@ -1 +1,1566 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[430],{4430:function(t,e,r){r.d(e,{diagram:function(){return v}});var i=r(9339),a=r(5625),n=r(7274),s=r(3771);const o=[];for(let t=0;t<256;++t)o.push((t+256).toString(16).slice(1));var c=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(t){if(!function(t){return"string"==typeof t&&c.test(t)}(t))throw TypeError("Invalid UUID");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=255&e,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=255&e,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=255&e,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=255&e,r};function h(t,e,r,i){switch(t){case 0:return e&r^~e&i;case 1:case 3:return e^r^i;case 2:return e&r^e&i^r&i}}function d(t,e){return t<>>32-e}var u=function(t,e,r){function i(t,e,r,i){var a;if("string"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r>>0;l=c,c=o,o=d(s,30)>>>0,s=a,a=n}r[0]=r[0]+a>>>0,r[1]=r[1]+s>>>0,r[2]=r[2]+o>>>0,r[3]=r[3]+c>>>0,r[4]=r[4]+l>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]}(n),n[6]=15&n[6]|80,n[8]=63&n[8]|128,r){i=i||0;for(let t=0;t<16;++t)r[i+t]=n[t];return r}return function(t,e=0){return(o[t[e+0]]+o[t[e+1]]+o[t[e+2]]+o[t[e+3]]+"-"+o[t[e+4]]+o[t[e+5]]+"-"+o[t[e+6]]+o[t[e+7]]+"-"+o[t[e+8]]+o[t[e+9]]+"-"+o[t[e+10]]+o[t[e+11]]+o[t[e+12]]+o[t[e+13]]+o[t[e+14]]+o[t[e+15]]).toLowerCase()}(n)}try{i.name="v5"}catch(t){}return i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",i}(),y=(r(7484),r(7967),r(7856),function(){var t=function(t,e,r,i){for(r=r||{},i=t.length;i--;r[t[i]]=e);return r},e=[1,2],r=[1,5],i=[6,9,11,23,25,27,29,30,31,52],a=[1,17],n=[1,18],s=[1,19],o=[1,20],c=[1,21],l=[1,22],h=[1,25],d=[1,30],u=[1,31],y=[1,32],p=[1,33],_=[1,34],f=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,48,52],g=[1,46],m=[30,31,49,50],E=[4,6,9,11,23,25,27,29,30,31,52],O=[44,45,46,47,48],b=[22,37],k=[1,66],R=[1,65],N=[22,37,39,41],T={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,MD_PARENT:48,NON_IDENTIFYING:49,IDENTIFYING:50,WORD:51,open_directive:52,type_directive:53,arg_directive:54,close_directive:55,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"MD_PARENT",49:"NON_IDENTIFYING",50:"IDENTIFYING",51:"WORD",52:"open_directive",53:"type_directive",54:"arg_directive",55:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,r,i,a,n,s){var o=n.length-1;switch(a){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:n[o-1].push(n[o]),this.$=n[o-1];break;case 5:case 6:case 20:case 44:case 28:case 29:case 32:this.$=n[o];break;case 12:i.addEntity(n[o-4]),i.addEntity(n[o-2]),i.addRelationship(n[o-4],n[o],n[o-2],n[o-3]);break;case 13:i.addEntity(n[o-3]),i.addAttributes(n[o-3],n[o-1]);break;case 14:i.addEntity(n[o-2]);break;case 15:i.addEntity(n[o]);break;case 16:case 17:this.$=n[o].trim(),i.setAccTitle(this.$);break;case 18:case 19:this.$=n[o].trim(),i.setAccDescription(this.$);break;case 21:case 42:case 43:case 33:this.$=n[o].replace(/"/g,"");break;case 22:case 30:this.$=[n[o]];break;case 23:n[o].push(n[o-1]),this.$=n[o];break;case 24:this.$={attributeType:n[o-1],attributeName:n[o]};break;case 25:this.$={attributeType:n[o-2],attributeName:n[o-1],attributeKeyTypeList:n[o]};break;case 26:this.$={attributeType:n[o-2],attributeName:n[o-1],attributeComment:n[o]};break;case 27:this.$={attributeType:n[o-3],attributeName:n[o-2],attributeKeyTypeList:n[o-1],attributeComment:n[o]};break;case 31:n[o-2].push(n[o]),this.$=n[o-2];break;case 34:this.$={cardA:n[o],relType:n[o-1],cardB:n[o-2]};break;case 35:this.$=i.Cardinality.ZERO_OR_ONE;break;case 36:this.$=i.Cardinality.ZERO_OR_MORE;break;case 37:this.$=i.Cardinality.ONE_OR_MORE;break;case 38:this.$=i.Cardinality.ONLY_ONE;break;case 39:this.$=i.Cardinality.MD_PARENT;break;case 40:this.$=i.Identification.NON_IDENTIFYING;break;case 41:this.$=i.Identification.IDENTIFYING;break;case 45:i.parseDirective("%%{","open_directive");break;case 46:i.parseDirective(n[o],"type_directive");break;case 47:n[o]=n[o].trim().replace(/'/g,'"'),i.parseDirective(n[o],"arg_directive");break;case 48:i.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,52:r},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,52:r},{13:8,53:[1,9]},{53:[2,45]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:a,25:n,27:s,29:o,30:c,31:l,52:r},{1:[2,2]},{14:23,15:[1,24],55:h},t([15,55],[2,46]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:15,10:26,12:4,17:16,23:a,25:n,27:s,29:o,30:c,31:l,52:r},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),t(i,[2,15],{18:27,42:29,20:[1,28],44:d,45:u,46:y,47:p,48:_}),{24:[1,35]},{26:[1,36]},{28:[1,37]},t(i,[2,19]),t(f,[2,20]),t(f,[2,21]),{11:[1,38]},{16:39,54:[1,40]},{11:[2,48]},t(i,[2,5]),{17:41,30:c,31:l},{21:42,22:[1,43],32:44,33:45,37:g},{43:47,49:[1,48],50:[1,49]},t(m,[2,35]),t(m,[2,36]),t(m,[2,37]),t(m,[2,38]),t(m,[2,39]),t(i,[2,16]),t(i,[2,17]),t(i,[2,18]),t(E,[2,9]),{14:50,55:h},{55:[2,47]},{15:[1,51]},{22:[1,52]},t(i,[2,14]),{21:53,22:[2,22],32:44,33:45,37:g},{34:54,37:[1,55]},{37:[2,28]},{42:56,44:d,45:u,46:y,47:p,48:_},t(O,[2,40]),t(O,[2,41]),{11:[1,57]},{19:58,30:[1,61],31:[1,60],51:[1,59]},t(i,[2,13]),{22:[2,23]},t(b,[2,24],{35:62,36:63,38:64,40:k,41:R}),t([22,37,40,41],[2,29]),t([30,31],[2,34]),t(E,[2,10]),t(i,[2,12]),t(i,[2,42]),t(i,[2,43]),t(i,[2,44]),t(b,[2,25],{36:67,39:[1,68],41:R}),t(b,[2,26]),t(N,[2,30]),t(b,[2,33]),t(N,[2,32]),t(b,[2,27]),{38:69,40:k},t(N,[2,31])],defaultActions:{5:[2,45],7:[2,2],25:[2,48],40:[2,47],46:[2,28],53:[2,23]},parseError:function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)},parse:function(t){var e=[0],r=[],i=[null],a=[],n=this.table,s="",o=0,c=0,l=a.slice.call(arguments,1),h=Object.create(this.lexer),d={yy:{}};for(var u in this.yy)Object.prototype.hasOwnProperty.call(this.yy,u)&&(d.yy[u]=this.yy[u]);h.setInput(t,d.yy),d.yy.lexer=h,d.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var y=h.yylloc;a.push(y);var p=h.options&&h.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,f,g,m,E,O,b,k,R,N={};;){if(f=e[e.length-1],this.defaultActions[f]?g=this.defaultActions[f]:(null==_&&(R=void 0,"number"!=typeof(R=r.pop()||h.lex()||1)&&(R instanceof Array&&(R=(r=R).pop()),R=this.symbols_[R]||R),_=R),g=n[f]&&n[f][_]),void 0===g||!g.length||!g[0]){var T;for(E in k=[],n[f])this.terminals_[E]&&E>2&&k.push("'"+this.terminals_[E]+"'");T=h.showPosition?"Parse error on line "+(o+1)+":\n"+h.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(T,{text:h.match,token:this.terminals_[_]||_,line:h.yylineno,loc:y,expected:k})}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+f+", token: "+_);switch(g[0]){case 1:e.push(_),i.push(h.yytext),a.push(h.yylloc),e.push(g[1]),_=null,c=h.yyleng,s=h.yytext,o=h.yylineno,y=h.yylloc;break;case 2:if(O=this.productions_[g[1]][1],N.$=i[i.length-O],N._$={first_line:a[a.length-(O||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(O||1)].first_column,last_column:a[a.length-1].last_column},p&&(N._$.range=[a[a.length-(O||1)].range[0],a[a.length-1].range[1]]),void 0!==(m=this.performAction.apply(N,[s,c,o,d.yy,g[1],i,a].concat(l))))return m;O&&(e=e.slice(0,-1*O*2),i=i.slice(0,-1*O),a=a.slice(0,-1*O)),e.push(this.productions_[g[1]][0]),i.push(N.$),a.push(N._$),b=n[e[e.length-2]][e[e.length-1]],e.push(b);break;case 3:return!0}}return!0}},x={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===i.length?this.yylloc.first_column:0)+i[i.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var r,i,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,r,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;ne[0].length)){if(e=r,i=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,a[n])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,a[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,r,i){switch(r){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),52;case 8:return this.begin("type_directive"),53;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),55;case 11:return 54;case 12:return 11;case 13:case 20:case 25:break;case 14:return 9;case 15:return 31;case 16:return 51;case 17:return 4;case 18:return this.begin("block"),20;case 19:return 39;case 21:return 40;case 22:case 23:return 37;case 24:return 41;case 26:return this.popState(),22;case 27:case 57:return e.yytext[0];case 28:case 32:case 33:case 46:return 44;case 29:case 30:case 31:case 39:case 41:case 48:return 46;case 34:case 35:case 36:case 37:case 38:case 40:case 47:return 45;case 42:case 43:case 44:case 45:return 47;case 49:return 48;case 50:case 53:case 54:case 55:return 49;case 51:case 52:return 50;case 56:return 30;case 58:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[19,20,21,22,23,24,25,26,27],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],inclusive:!0}}};function A(){this.yy={}}return T.lexer=x,A.prototype=T,T.Parser=A,new A}());y.parser=y;const p=y;let _={},f=[];const g=function(t){return void 0===_[t]&&(_[t]={attributes:[]},i.l.info("Added new entity :",t)),_[t]},m={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,r){i.m.parseDirective(this,t,e,r)},getConfig:()=>(0,i.c)().er,addEntity:g,addAttributes:function(t,e){let r,a=g(t);for(r=e.length-1;r>=0;r--)a.attributes.push(e[r]),i.l.debug("Added attribute ",e[r].attributeName)},getEntities:()=>_,addRelationship:function(t,e,r,a){let n={entityA:t,roleA:e,entityB:r,relSpec:a};f.push(n),i.l.debug("Added new relationship :",n)},getRelationships:()=>f,clear:function(){_={},f=[],(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,setDiagramTitle:i.r,getDiagramTitle:i.t},E={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},O=E,b=/[^\dA-Za-z](\W)*/g;let k={},R=new Map;const N=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")};let T=0;const x="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function A(t=""){return t.length>0?`${t}-`:""}const v={parser:p,db:m,renderer:{setConf:function(t){const e=Object.keys(t);for(const r of e)k[r]=t[r]},draw:function(t,e,r,o){k=(0,i.c)().er,i.l.info("Drawing ER diagram");const c=(0,i.c)().securityLevel;let l;"sandbox"===c&&(l=(0,n.Ys)("#i"+e));const h=("sandbox"===c?(0,n.Ys)(l.nodes()[0].contentDocument.body):(0,n.Ys)("body")).select(`[id='${e}']`);let d;(function(t,e){let r;t.append("defs").append("marker").attr("id",E.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",E.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",E.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",E.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",E.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",E.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",E.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",E.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",E.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",E.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")})(h,k),d=new a.k({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:k.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));const y=function(t,e,r){let a;return Object.keys(e).forEach((function(n){const s=function(t="",e=""){const r=t.replace(b,"");return`${A(e)}${A(r)}${u(t,x)}`}(n,"entity");R.set(n,s);const o=t.append("g").attr("id",s);a=void 0===a?s:a;const c="text-"+s,l=o.append("text").classed("er entityLabel",!0).attr("id",c).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",k.fontSize+"px").text(n),{width:h,height:d}=((t,e,r)=>{const a=k.entityPadding/3,n=k.entityPadding/3,s=.85*k.fontSize,o=e.node().getBBox(),c=[];let l=!1,h=!1,d=0,u=0,y=0,p=0,_=o.height+2*a,f=1;r.forEach((t=>{void 0!==t.attributeKeyTypeList&&t.attributeKeyTypeList.length>0&&(l=!0),void 0!==t.attributeComment&&(h=!0)})),r.forEach((r=>{const n=`${e.node().id}-attr-${f}`;let o=0;const g=(0,i.x)(r.attributeType),m=t.append("text").classed("er entityLabel",!0).attr("id",`${n}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",s+"px").text(g),E=t.append("text").classed("er entityLabel",!0).attr("id",`${n}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",s+"px").text(r.attributeName),O={};O.tn=m,O.nn=E;const b=m.node().getBBox(),k=E.node().getBBox();if(d=Math.max(d,b.width),u=Math.max(u,k.width),o=Math.max(b.height,k.height),l){const e=void 0!==r.attributeKeyTypeList?r.attributeKeyTypeList.join(","):"",a=t.append("text").classed("er entityLabel",!0).attr("id",`${n}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",s+"px").text(e);O.kn=a;const c=a.node().getBBox();y=Math.max(y,c.width),o=Math.max(o,c.height)}if(h){const e=t.append("text").classed("er entityLabel",!0).attr("id",`${n}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",s+"px").text(r.attributeComment||"");O.cn=e;const a=e.node().getBBox();p=Math.max(p,a.width),o=Math.max(o,a.height)}O.height=o,c.push(O),_+=o+2*a,f+=1}));let g=4;l&&(g+=2),h&&(g+=2);const m=d+u+y+p,E={width:Math.max(k.minEntityWidth,Math.max(o.width+2*k.entityPadding,m+n*g)),height:r.length>0?_:Math.max(k.minEntityHeight,o.height+2*k.entityPadding)};if(r.length>0){const r=Math.max(0,(E.width-m-n*g)/(g/2));e.attr("transform","translate("+E.width/2+","+(a+o.height/2)+")");let i=o.height+2*a,s="attributeBoxOdd";c.forEach((e=>{const o=i+a+e.height/2;e.tn.attr("transform","translate("+n+","+o+")");const c=t.insert("rect","#"+e.tn.node().id).classed(`er ${s}`,!0).attr("x",0).attr("y",i).attr("width",d+2*n+r).attr("height",e.height+2*a),_=parseFloat(c.attr("x"))+parseFloat(c.attr("width"));e.nn.attr("transform","translate("+(_+n)+","+o+")");const f=t.insert("rect","#"+e.nn.node().id).classed(`er ${s}`,!0).attr("x",_).attr("y",i).attr("width",u+2*n+r).attr("height",e.height+2*a);let g=parseFloat(f.attr("x"))+parseFloat(f.attr("width"));if(l){e.kn.attr("transform","translate("+(g+n)+","+o+")");const c=t.insert("rect","#"+e.kn.node().id).classed(`er ${s}`,!0).attr("x",g).attr("y",i).attr("width",y+2*n+r).attr("height",e.height+2*a);g=parseFloat(c.attr("x"))+parseFloat(c.attr("width"))}h&&(e.cn.attr("transform","translate("+(g+n)+","+o+")"),t.insert("rect","#"+e.cn.node().id).classed(`er ${s}`,"true").attr("x",g).attr("y",i).attr("width",p+2*n+r).attr("height",e.height+2*a)),i+=e.height+2*a,s="attributeBoxOdd"===s?"attributeBoxEven":"attributeBoxOdd"}))}else E.height=Math.max(k.minEntityHeight,_),e.attr("transform","translate("+E.width/2+","+E.height/2+")");return E})(o,l,e[n].attributes),y=o.insert("rect","#"+c).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",h).attr("height",d).node().getBBox();r.setNode(s,{width:y.width,height:y.height,shape:"rect",id:s})})),a}(h,o.db.getEntities(),d),p=function(t,e){return t.forEach((function(t){e.setEdge(R.get(t.entityA),R.get(t.entityB),{relationship:t},N(t))})),t}(o.db.getRelationships(),d);var _,f;(0,s.bK)(d),_=h,(f=d).nodes().forEach((function(t){void 0!==t&&void 0!==f.node(t)&&_.select("#"+t).attr("transform","translate("+(f.node(t).x-f.node(t).width/2)+","+(f.node(t).y-f.node(t).height/2)+" )")})),p.forEach((function(t){!function(t,e,r,a,s){T++;const o=r.edge(R.get(e.entityA),R.get(e.entityB),N(e)),c=(0,n.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(n.$0Z),l=t.insert("path","#"+a).classed("er relationshipLine",!0).attr("d",c(o.points)).style("stroke",k.stroke).style("fill","none");e.relSpec.relType===s.db.Identification.NON_IDENTIFYING&&l.attr("stroke-dasharray","8,8");let h="";switch(k.arrowMarkerAbsolute&&(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,h=h.replace(/\(/g,"\\("),h=h.replace(/\)/g,"\\)")),e.relSpec.cardA){case s.db.Cardinality.ZERO_OR_ONE:l.attr("marker-end","url("+h+"#"+O.ZERO_OR_ONE_END+")");break;case s.db.Cardinality.ZERO_OR_MORE:l.attr("marker-end","url("+h+"#"+O.ZERO_OR_MORE_END+")");break;case s.db.Cardinality.ONE_OR_MORE:l.attr("marker-end","url("+h+"#"+O.ONE_OR_MORE_END+")");break;case s.db.Cardinality.ONLY_ONE:l.attr("marker-end","url("+h+"#"+O.ONLY_ONE_END+")");break;case s.db.Cardinality.MD_PARENT:l.attr("marker-end","url("+h+"#"+O.MD_PARENT_END+")")}switch(e.relSpec.cardB){case s.db.Cardinality.ZERO_OR_ONE:l.attr("marker-start","url("+h+"#"+O.ZERO_OR_ONE_START+")");break;case s.db.Cardinality.ZERO_OR_MORE:l.attr("marker-start","url("+h+"#"+O.ZERO_OR_MORE_START+")");break;case s.db.Cardinality.ONE_OR_MORE:l.attr("marker-start","url("+h+"#"+O.ONE_OR_MORE_START+")");break;case s.db.Cardinality.ONLY_ONE:l.attr("marker-start","url("+h+"#"+O.ONLY_ONE_START+")");break;case s.db.Cardinality.MD_PARENT:l.attr("marker-start","url("+h+"#"+O.MD_PARENT_START+")")}const d=l.node().getTotalLength(),u=l.node().getPointAtLength(.5*d),y="rel"+T,p=t.append("text").classed("er relationshipLabel",!0).attr("id",y).attr("x",u.x).attr("y",u.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",k.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+y).classed("er relationshipLabelBox",!0).attr("x",u.x-p.width/2).attr("y",u.y-p.height/2).attr("width",p.width).attr("height",p.height)}(h,t,d,y,o)}));const g=k.diagramPadding;i.u.insertTitle(h,"entityTitleText",k.titleTopMargin,o.db.getDiagramTitle());const m=h.node().getBBox(),v=m.width+2*g,M=m.height+2*g;(0,i.i)(h,M,v,k.useMaxWidth),h.attr("viewBox",`${m.x-g} ${m.y-g} ${v} ${M}`)}},styles:t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n \n`}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [430],
+ {
+ 4430: function (t, e, r) {
+ r.d(e, {
+ diagram: function () {
+ return v;
+ },
+ });
+ var i = r(9339),
+ a = r(5625),
+ n = r(7274),
+ s = r(3771);
+ const o = [];
+ for (let t = 0; t < 256; ++t) o.push((t + 256).toString(16).slice(1));
+ var c = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,
+ l = function (t) {
+ if (
+ !(function (t) {
+ return "string" == typeof t && c.test(t);
+ })(t)
+ )
+ throw TypeError("Invalid UUID");
+ let e;
+ const r = new Uint8Array(16);
+ return (
+ (r[0] = (e = parseInt(t.slice(0, 8), 16)) >>> 24),
+ (r[1] = (e >>> 16) & 255),
+ (r[2] = (e >>> 8) & 255),
+ (r[3] = 255 & e),
+ (r[4] = (e = parseInt(t.slice(9, 13), 16)) >>> 8),
+ (r[5] = 255 & e),
+ (r[6] = (e = parseInt(t.slice(14, 18), 16)) >>> 8),
+ (r[7] = 255 & e),
+ (r[8] = (e = parseInt(t.slice(19, 23), 16)) >>> 8),
+ (r[9] = 255 & e),
+ (r[10] = ((e = parseInt(t.slice(24, 36), 16)) / 1099511627776) & 255),
+ (r[11] = (e / 4294967296) & 255),
+ (r[12] = (e >>> 24) & 255),
+ (r[13] = (e >>> 16) & 255),
+ (r[14] = (e >>> 8) & 255),
+ (r[15] = 255 & e),
+ r
+ );
+ };
+ function h(t, e, r, i) {
+ switch (t) {
+ case 0:
+ return (e & r) ^ (~e & i);
+ case 1:
+ case 3:
+ return e ^ r ^ i;
+ case 2:
+ return (e & r) ^ (e & i) ^ (r & i);
+ }
+ }
+ function d(t, e) {
+ return (t << e) | (t >>> (32 - e));
+ }
+ var u = (function (t, e, r) {
+ function i(t, e, r, i) {
+ var a;
+ if (
+ ("string" == typeof t &&
+ (t = (function (t) {
+ t = unescape(encodeURIComponent(t));
+ const e = [];
+ for (let r = 0; r < t.length; ++r) e.push(t.charCodeAt(r));
+ return e;
+ })(t)),
+ "string" == typeof e && (e = l(e)),
+ 16 !== (null === (a = e) || void 0 === a ? void 0 : a.length))
+ )
+ throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
+ let n = new Uint8Array(16 + t.length);
+ if (
+ (n.set(e),
+ n.set(t, e.length),
+ (n = (function (t) {
+ const e = [1518500249, 1859775393, 2400959708, 3395469782],
+ r = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];
+ if ("string" == typeof t) {
+ const e = unescape(encodeURIComponent(t));
+ t = [];
+ for (let r = 0; r < e.length; ++r) t.push(e.charCodeAt(r));
+ } else Array.isArray(t) || (t = Array.prototype.slice.call(t));
+ t.push(128);
+ const i = t.length / 4 + 2,
+ a = Math.ceil(i / 16),
+ n = new Array(a);
+ for (let e = 0; e < a; ++e) {
+ const r = new Uint32Array(16);
+ for (let i = 0; i < 16; ++i)
+ r[i] = (t[64 * e + 4 * i] << 24) | (t[64 * e + 4 * i + 1] << 16) | (t[64 * e + 4 * i + 2] << 8) | t[64 * e + 4 * i + 3];
+ n[e] = r;
+ }
+ (n[a - 1][14] = (8 * (t.length - 1)) / Math.pow(2, 32)),
+ (n[a - 1][14] = Math.floor(n[a - 1][14])),
+ (n[a - 1][15] = (8 * (t.length - 1)) & 4294967295);
+ for (let t = 0; t < a; ++t) {
+ const i = new Uint32Array(80);
+ for (let e = 0; e < 16; ++e) i[e] = n[t][e];
+ for (let t = 16; t < 80; ++t) i[t] = d(i[t - 3] ^ i[t - 8] ^ i[t - 14] ^ i[t - 16], 1);
+ let a = r[0],
+ s = r[1],
+ o = r[2],
+ c = r[3],
+ l = r[4];
+ for (let t = 0; t < 80; ++t) {
+ const r = Math.floor(t / 20),
+ n = (d(a, 5) + h(r, s, o, c) + l + e[r] + i[t]) >>> 0;
+ (l = c), (c = o), (o = d(s, 30) >>> 0), (s = a), (a = n);
+ }
+ (r[0] = (r[0] + a) >>> 0),
+ (r[1] = (r[1] + s) >>> 0),
+ (r[2] = (r[2] + o) >>> 0),
+ (r[3] = (r[3] + c) >>> 0),
+ (r[4] = (r[4] + l) >>> 0);
+ }
+ return [
+ (r[0] >> 24) & 255,
+ (r[0] >> 16) & 255,
+ (r[0] >> 8) & 255,
+ 255 & r[0],
+ (r[1] >> 24) & 255,
+ (r[1] >> 16) & 255,
+ (r[1] >> 8) & 255,
+ 255 & r[1],
+ (r[2] >> 24) & 255,
+ (r[2] >> 16) & 255,
+ (r[2] >> 8) & 255,
+ 255 & r[2],
+ (r[3] >> 24) & 255,
+ (r[3] >> 16) & 255,
+ (r[3] >> 8) & 255,
+ 255 & r[3],
+ (r[4] >> 24) & 255,
+ (r[4] >> 16) & 255,
+ (r[4] >> 8) & 255,
+ 255 & r[4],
+ ];
+ })(n)),
+ (n[6] = (15 & n[6]) | 80),
+ (n[8] = (63 & n[8]) | 128),
+ r)
+ ) {
+ i = i || 0;
+ for (let t = 0; t < 16; ++t) r[i + t] = n[t];
+ return r;
+ }
+ return (function (t, e = 0) {
+ return (
+ o[t[e + 0]] +
+ o[t[e + 1]] +
+ o[t[e + 2]] +
+ o[t[e + 3]] +
+ "-" +
+ o[t[e + 4]] +
+ o[t[e + 5]] +
+ "-" +
+ o[t[e + 6]] +
+ o[t[e + 7]] +
+ "-" +
+ o[t[e + 8]] +
+ o[t[e + 9]] +
+ "-" +
+ o[t[e + 10]] +
+ o[t[e + 11]] +
+ o[t[e + 12]] +
+ o[t[e + 13]] +
+ o[t[e + 14]] +
+ o[t[e + 15]]
+ ).toLowerCase();
+ })(n);
+ }
+ try {
+ i.name = "v5";
+ } catch (t) {}
+ return (i.DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"), (i.URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"), i;
+ })(),
+ y =
+ (r(7484),
+ r(7967),
+ r(7856),
+ (function () {
+ var t = function (t, e, r, i) {
+ for (r = r || {}, i = t.length; i--; r[t[i]] = e);
+ return r;
+ },
+ e = [1, 2],
+ r = [1, 5],
+ i = [6, 9, 11, 23, 25, 27, 29, 30, 31, 52],
+ a = [1, 17],
+ n = [1, 18],
+ s = [1, 19],
+ o = [1, 20],
+ c = [1, 21],
+ l = [1, 22],
+ h = [1, 25],
+ d = [1, 30],
+ u = [1, 31],
+ y = [1, 32],
+ p = [1, 33],
+ _ = [1, 34],
+ f = [6, 9, 11, 15, 20, 23, 25, 27, 29, 30, 31, 44, 45, 46, 47, 48, 52],
+ g = [1, 46],
+ m = [30, 31, 49, 50],
+ E = [4, 6, 9, 11, 23, 25, 27, 29, 30, 31, 52],
+ O = [44, 45, 46, 47, 48],
+ b = [22, 37],
+ k = [1, 66],
+ R = [1, 65],
+ N = [22, 37, 39, 41],
+ T = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ ER_DIAGRAM: 4,
+ document: 5,
+ EOF: 6,
+ directive: 7,
+ line: 8,
+ SPACE: 9,
+ statement: 10,
+ NEWLINE: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ ":": 15,
+ argDirective: 16,
+ entityName: 17,
+ relSpec: 18,
+ role: 19,
+ BLOCK_START: 20,
+ attributes: 21,
+ BLOCK_STOP: 22,
+ title: 23,
+ title_value: 24,
+ acc_title: 25,
+ acc_title_value: 26,
+ acc_descr: 27,
+ acc_descr_value: 28,
+ acc_descr_multiline_value: 29,
+ ALPHANUM: 30,
+ ENTITY_NAME: 31,
+ attribute: 32,
+ attributeType: 33,
+ attributeName: 34,
+ attributeKeyTypeList: 35,
+ attributeComment: 36,
+ ATTRIBUTE_WORD: 37,
+ attributeKeyType: 38,
+ COMMA: 39,
+ ATTRIBUTE_KEY: 40,
+ COMMENT: 41,
+ cardinality: 42,
+ relType: 43,
+ ZERO_OR_ONE: 44,
+ ZERO_OR_MORE: 45,
+ ONE_OR_MORE: 46,
+ ONLY_ONE: 47,
+ MD_PARENT: 48,
+ NON_IDENTIFYING: 49,
+ IDENTIFYING: 50,
+ WORD: 51,
+ open_directive: 52,
+ type_directive: 53,
+ arg_directive: 54,
+ close_directive: 55,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "ER_DIAGRAM",
+ 6: "EOF",
+ 9: "SPACE",
+ 11: "NEWLINE",
+ 15: ":",
+ 20: "BLOCK_START",
+ 22: "BLOCK_STOP",
+ 23: "title",
+ 24: "title_value",
+ 25: "acc_title",
+ 26: "acc_title_value",
+ 27: "acc_descr",
+ 28: "acc_descr_value",
+ 29: "acc_descr_multiline_value",
+ 30: "ALPHANUM",
+ 31: "ENTITY_NAME",
+ 37: "ATTRIBUTE_WORD",
+ 39: "COMMA",
+ 40: "ATTRIBUTE_KEY",
+ 41: "COMMENT",
+ 44: "ZERO_OR_ONE",
+ 45: "ZERO_OR_MORE",
+ 46: "ONE_OR_MORE",
+ 47: "ONLY_ONE",
+ 48: "MD_PARENT",
+ 49: "NON_IDENTIFYING",
+ 50: "IDENTIFYING",
+ 51: "WORD",
+ 52: "open_directive",
+ 53: "type_directive",
+ 54: "arg_directive",
+ 55: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [5, 0],
+ [5, 2],
+ [8, 2],
+ [8, 1],
+ [8, 1],
+ [8, 1],
+ [7, 4],
+ [7, 6],
+ [10, 1],
+ [10, 5],
+ [10, 4],
+ [10, 3],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [17, 1],
+ [17, 1],
+ [21, 1],
+ [21, 2],
+ [32, 2],
+ [32, 3],
+ [32, 3],
+ [32, 4],
+ [33, 1],
+ [34, 1],
+ [35, 1],
+ [35, 3],
+ [38, 1],
+ [36, 1],
+ [18, 3],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [42, 1],
+ [43, 1],
+ [43, 1],
+ [19, 1],
+ [19, 1],
+ [19, 1],
+ [12, 1],
+ [13, 1],
+ [16, 1],
+ [14, 1],
+ ],
+ performAction: function (t, e, r, i, a, n, s) {
+ var o = n.length - 1;
+ switch (a) {
+ case 1:
+ break;
+ case 3:
+ case 7:
+ case 8:
+ this.$ = [];
+ break;
+ case 4:
+ n[o - 1].push(n[o]), (this.$ = n[o - 1]);
+ break;
+ case 5:
+ case 6:
+ case 20:
+ case 44:
+ case 28:
+ case 29:
+ case 32:
+ this.$ = n[o];
+ break;
+ case 12:
+ i.addEntity(n[o - 4]), i.addEntity(n[o - 2]), i.addRelationship(n[o - 4], n[o], n[o - 2], n[o - 3]);
+ break;
+ case 13:
+ i.addEntity(n[o - 3]), i.addAttributes(n[o - 3], n[o - 1]);
+ break;
+ case 14:
+ i.addEntity(n[o - 2]);
+ break;
+ case 15:
+ i.addEntity(n[o]);
+ break;
+ case 16:
+ case 17:
+ (this.$ = n[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 18:
+ case 19:
+ (this.$ = n[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 21:
+ case 42:
+ case 43:
+ case 33:
+ this.$ = n[o].replace(/"/g, "");
+ break;
+ case 22:
+ case 30:
+ this.$ = [n[o]];
+ break;
+ case 23:
+ n[o].push(n[o - 1]), (this.$ = n[o]);
+ break;
+ case 24:
+ this.$ = { attributeType: n[o - 1], attributeName: n[o] };
+ break;
+ case 25:
+ this.$ = {
+ attributeType: n[o - 2],
+ attributeName: n[o - 1],
+ attributeKeyTypeList: n[o],
+ };
+ break;
+ case 26:
+ this.$ = {
+ attributeType: n[o - 2],
+ attributeName: n[o - 1],
+ attributeComment: n[o],
+ };
+ break;
+ case 27:
+ this.$ = {
+ attributeType: n[o - 3],
+ attributeName: n[o - 2],
+ attributeKeyTypeList: n[o - 1],
+ attributeComment: n[o],
+ };
+ break;
+ case 31:
+ n[o - 2].push(n[o]), (this.$ = n[o - 2]);
+ break;
+ case 34:
+ this.$ = { cardA: n[o], relType: n[o - 1], cardB: n[o - 2] };
+ break;
+ case 35:
+ this.$ = i.Cardinality.ZERO_OR_ONE;
+ break;
+ case 36:
+ this.$ = i.Cardinality.ZERO_OR_MORE;
+ break;
+ case 37:
+ this.$ = i.Cardinality.ONE_OR_MORE;
+ break;
+ case 38:
+ this.$ = i.Cardinality.ONLY_ONE;
+ break;
+ case 39:
+ this.$ = i.Cardinality.MD_PARENT;
+ break;
+ case 40:
+ this.$ = i.Identification.NON_IDENTIFYING;
+ break;
+ case 41:
+ this.$ = i.Identification.IDENTIFYING;
+ break;
+ case 45:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 46:
+ i.parseDirective(n[o], "type_directive");
+ break;
+ case 47:
+ (n[o] = n[o].trim().replace(/'/g, '"')), i.parseDirective(n[o], "arg_directive");
+ break;
+ case 48:
+ i.parseDirective("}%%", "close_directive", "er");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 7: 3, 12: 4, 52: r },
+ { 1: [3] },
+ t(i, [2, 3], { 5: 6 }),
+ { 3: 7, 4: e, 7: 3, 12: 4, 52: r },
+ { 13: 8, 53: [1, 9] },
+ { 53: [2, 45] },
+ {
+ 6: [1, 10],
+ 7: 15,
+ 8: 11,
+ 9: [1, 12],
+ 10: 13,
+ 11: [1, 14],
+ 12: 4,
+ 17: 16,
+ 23: a,
+ 25: n,
+ 27: s,
+ 29: o,
+ 30: c,
+ 31: l,
+ 52: r,
+ },
+ { 1: [2, 2] },
+ { 14: 23, 15: [1, 24], 55: h },
+ t([15, 55], [2, 46]),
+ t(i, [2, 8], { 1: [2, 1] }),
+ t(i, [2, 4]),
+ { 7: 15, 10: 26, 12: 4, 17: 16, 23: a, 25: n, 27: s, 29: o, 30: c, 31: l, 52: r },
+ t(i, [2, 6]),
+ t(i, [2, 7]),
+ t(i, [2, 11]),
+ t(i, [2, 15], { 18: 27, 42: 29, 20: [1, 28], 44: d, 45: u, 46: y, 47: p, 48: _ }),
+ { 24: [1, 35] },
+ { 26: [1, 36] },
+ { 28: [1, 37] },
+ t(i, [2, 19]),
+ t(f, [2, 20]),
+ t(f, [2, 21]),
+ { 11: [1, 38] },
+ { 16: 39, 54: [1, 40] },
+ { 11: [2, 48] },
+ t(i, [2, 5]),
+ { 17: 41, 30: c, 31: l },
+ { 21: 42, 22: [1, 43], 32: 44, 33: 45, 37: g },
+ { 43: 47, 49: [1, 48], 50: [1, 49] },
+ t(m, [2, 35]),
+ t(m, [2, 36]),
+ t(m, [2, 37]),
+ t(m, [2, 38]),
+ t(m, [2, 39]),
+ t(i, [2, 16]),
+ t(i, [2, 17]),
+ t(i, [2, 18]),
+ t(E, [2, 9]),
+ { 14: 50, 55: h },
+ { 55: [2, 47] },
+ { 15: [1, 51] },
+ { 22: [1, 52] },
+ t(i, [2, 14]),
+ { 21: 53, 22: [2, 22], 32: 44, 33: 45, 37: g },
+ { 34: 54, 37: [1, 55] },
+ { 37: [2, 28] },
+ { 42: 56, 44: d, 45: u, 46: y, 47: p, 48: _ },
+ t(O, [2, 40]),
+ t(O, [2, 41]),
+ { 11: [1, 57] },
+ { 19: 58, 30: [1, 61], 31: [1, 60], 51: [1, 59] },
+ t(i, [2, 13]),
+ { 22: [2, 23] },
+ t(b, [2, 24], { 35: 62, 36: 63, 38: 64, 40: k, 41: R }),
+ t([22, 37, 40, 41], [2, 29]),
+ t([30, 31], [2, 34]),
+ t(E, [2, 10]),
+ t(i, [2, 12]),
+ t(i, [2, 42]),
+ t(i, [2, 43]),
+ t(i, [2, 44]),
+ t(b, [2, 25], { 36: 67, 39: [1, 68], 41: R }),
+ t(b, [2, 26]),
+ t(N, [2, 30]),
+ t(b, [2, 33]),
+ t(N, [2, 32]),
+ t(b, [2, 27]),
+ { 38: 69, 40: k },
+ t(N, [2, 31]),
+ ],
+ defaultActions: {
+ 5: [2, 45],
+ 7: [2, 2],
+ 25: [2, 48],
+ 40: [2, 47],
+ 46: [2, 28],
+ 53: [2, 23],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var r = new Error(t);
+ throw ((r.hash = e), r);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ r = [],
+ i = [null],
+ a = [],
+ n = this.table,
+ s = "",
+ o = 0,
+ c = 0,
+ l = a.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var y = h.yylloc;
+ a.push(y);
+ var p = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var _, f, g, m, E, O, b, k, R, N = {}; ; ) {
+ if (
+ ((f = e[e.length - 1]),
+ this.defaultActions[f]
+ ? (g = this.defaultActions[f])
+ : (null == _ &&
+ ((R = void 0),
+ "number" != typeof (R = r.pop() || h.lex() || 1) &&
+ (R instanceof Array && (R = (r = R).pop()), (R = this.symbols_[R] || R)),
+ (_ = R)),
+ (g = n[f] && n[f][_])),
+ void 0 === g || !g.length || !g[0])
+ ) {
+ var T;
+ for (E in ((k = []), n[f])) this.terminals_[E] && E > 2 && k.push("'" + this.terminals_[E] + "'");
+ (T = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ k.join(", ") +
+ ", got '" +
+ (this.terminals_[_] || _) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == _ ? "end of input" : "'" + (this.terminals_[_] || _) + "'")),
+ this.parseError(T, {
+ text: h.match,
+ token: this.terminals_[_] || _,
+ line: h.yylineno,
+ loc: y,
+ expected: k,
+ });
+ }
+ if (g[0] instanceof Array && g.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + f + ", token: " + _);
+ switch (g[0]) {
+ case 1:
+ e.push(_),
+ i.push(h.yytext),
+ a.push(h.yylloc),
+ e.push(g[1]),
+ (_ = null),
+ (c = h.yyleng),
+ (s = h.yytext),
+ (o = h.yylineno),
+ (y = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((O = this.productions_[g[1]][1]),
+ (N.$ = i[i.length - O]),
+ (N._$ = {
+ first_line: a[a.length - (O || 1)].first_line,
+ last_line: a[a.length - 1].last_line,
+ first_column: a[a.length - (O || 1)].first_column,
+ last_column: a[a.length - 1].last_column,
+ }),
+ p && (N._$.range = [a[a.length - (O || 1)].range[0], a[a.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(N, [s, c, o, d.yy, g[1], i, a].concat(l))))
+ )
+ return m;
+ O && ((e = e.slice(0, -1 * O * 2)), (i = i.slice(0, -1 * O)), (a = a.slice(0, -1 * O))),
+ e.push(this.productions_[g[1]][0]),
+ i.push(N.$),
+ a.push(N._$),
+ (b = n[e[e.length - 2]][e[e.length - 1]]),
+ e.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ x = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ r = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ r.length - 1 && (this.yylineno -= r.length - 1);
+ var a = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: r
+ ? (r.length === i.length ? this.yylloc.first_column : 0) + i[i.length - r.length].length - r[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [a[0], a[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var r, i, a;
+ if (
+ (this.options.backtrack_lexer &&
+ ((a = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (a.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (r = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ r)
+ )
+ return r;
+ if (this._backtrack) {
+ for (var n in a) this[n] = a[n];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, r, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var a = this._currentRules(), n = 0; n < a.length; n++)
+ if ((r = this._input.match(this.rules[a[n]])) && (!e || r[0].length > e[0].length)) {
+ if (((e = r), (i = n), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(r, a[n]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, a[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, r, i) {
+ switch (r) {
+ case 0:
+ return this.begin("acc_title"), 25;
+ case 1:
+ return this.popState(), "acc_title_value";
+ case 2:
+ return this.begin("acc_descr"), 27;
+ case 3:
+ return this.popState(), "acc_descr_value";
+ case 4:
+ this.begin("acc_descr_multiline");
+ break;
+ case 5:
+ this.popState();
+ break;
+ case 6:
+ return "acc_descr_multiline_value";
+ case 7:
+ return this.begin("open_directive"), 52;
+ case 8:
+ return this.begin("type_directive"), 53;
+ case 9:
+ return this.popState(), this.begin("arg_directive"), 15;
+ case 10:
+ return this.popState(), this.popState(), 55;
+ case 11:
+ return 54;
+ case 12:
+ return 11;
+ case 13:
+ case 20:
+ case 25:
+ break;
+ case 14:
+ return 9;
+ case 15:
+ return 31;
+ case 16:
+ return 51;
+ case 17:
+ return 4;
+ case 18:
+ return this.begin("block"), 20;
+ case 19:
+ return 39;
+ case 21:
+ return 40;
+ case 22:
+ case 23:
+ return 37;
+ case 24:
+ return 41;
+ case 26:
+ return this.popState(), 22;
+ case 27:
+ case 57:
+ return e.yytext[0];
+ case 28:
+ case 32:
+ case 33:
+ case 46:
+ return 44;
+ case 29:
+ case 30:
+ case 31:
+ case 39:
+ case 41:
+ case 48:
+ return 46;
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 40:
+ case 47:
+ return 45;
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ return 47;
+ case 49:
+ return 48;
+ case 50:
+ case 53:
+ case 54:
+ case 55:
+ return 49;
+ case 51:
+ case 52:
+ return 50;
+ case 56:
+ return 30;
+ case 58:
+ return 6;
+ }
+ },
+ rules: [
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:[\s]+)/i,
+ /^(?:"[^"%\r\n\v\b\\]+")/i,
+ /^(?:"[^"]*")/i,
+ /^(?:erDiagram\b)/i,
+ /^(?:\{)/i,
+ /^(?:,)/i,
+ /^(?:\s+)/i,
+ /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
+ /^(?:(.*?)[~](.*?)*[~])/i,
+ /^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,
+ /^(?:"[^"]*")/i,
+ /^(?:[\n]+)/i,
+ /^(?:\})/i,
+ /^(?:.)/i,
+ /^(?:one or zero\b)/i,
+ /^(?:one or more\b)/i,
+ /^(?:one or many\b)/i,
+ /^(?:1\+)/i,
+ /^(?:\|o\b)/i,
+ /^(?:zero or one\b)/i,
+ /^(?:zero or more\b)/i,
+ /^(?:zero or many\b)/i,
+ /^(?:0\+)/i,
+ /^(?:\}o\b)/i,
+ /^(?:many\(0\))/i,
+ /^(?:many\(1\))/i,
+ /^(?:many\b)/i,
+ /^(?:\}\|)/i,
+ /^(?:one\b)/i,
+ /^(?:only one\b)/i,
+ /^(?:1\b)/i,
+ /^(?:\|\|)/i,
+ /^(?:o\|)/i,
+ /^(?:o\{)/i,
+ /^(?:\|\{)/i,
+ /^(?:\s*u\b)/i,
+ /^(?:\.\.)/i,
+ /^(?:--)/i,
+ /^(?:to\b)/i,
+ /^(?:optionally to\b)/i,
+ /^(?:\.-)/i,
+ /^(?:-\.)/i,
+ /^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,
+ /^(?:.)/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [5, 6], inclusive: !1 },
+ acc_descr: { rules: [3], inclusive: !1 },
+ acc_title: { rules: [1], inclusive: !1 },
+ open_directive: { rules: [8], inclusive: !1 },
+ type_directive: { rules: [9, 10], inclusive: !1 },
+ arg_directive: { rules: [10, 11], inclusive: !1 },
+ block: { rules: [19, 20, 21, 22, 23, 24, 25, 26, 27], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 2, 4, 7, 12, 13, 14, 15, 16, 17, 18, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function A() {
+ this.yy = {};
+ }
+ return (T.lexer = x), (A.prototype = T), (T.Parser = A), new A();
+ })());
+ y.parser = y;
+ const p = y;
+ let _ = {},
+ f = [];
+ const g = function (t) {
+ return void 0 === _[t] && ((_[t] = { attributes: [] }), i.l.info("Added new entity :", t)), _[t];
+ },
+ m = {
+ Cardinality: {
+ ZERO_OR_ONE: "ZERO_OR_ONE",
+ ZERO_OR_MORE: "ZERO_OR_MORE",
+ ONE_OR_MORE: "ONE_OR_MORE",
+ ONLY_ONE: "ONLY_ONE",
+ MD_PARENT: "MD_PARENT",
+ },
+ Identification: { NON_IDENTIFYING: "NON_IDENTIFYING", IDENTIFYING: "IDENTIFYING" },
+ parseDirective: function (t, e, r) {
+ i.m.parseDirective(this, t, e, r);
+ },
+ getConfig: () => (0, i.c)().er,
+ addEntity: g,
+ addAttributes: function (t, e) {
+ let r,
+ a = g(t);
+ for (r = e.length - 1; r >= 0; r--) a.attributes.push(e[r]), i.l.debug("Added attribute ", e[r].attributeName);
+ },
+ getEntities: () => _,
+ addRelationship: function (t, e, r, a) {
+ let n = { entityA: t, roleA: e, entityB: r, relSpec: a };
+ f.push(n), i.l.debug("Added new relationship :", n);
+ },
+ getRelationships: () => f,
+ clear: function () {
+ (_ = {}), (f = []), (0, i.v)();
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ },
+ E = {
+ ONLY_ONE_START: "ONLY_ONE_START",
+ ONLY_ONE_END: "ONLY_ONE_END",
+ ZERO_OR_ONE_START: "ZERO_OR_ONE_START",
+ ZERO_OR_ONE_END: "ZERO_OR_ONE_END",
+ ONE_OR_MORE_START: "ONE_OR_MORE_START",
+ ONE_OR_MORE_END: "ONE_OR_MORE_END",
+ ZERO_OR_MORE_START: "ZERO_OR_MORE_START",
+ ZERO_OR_MORE_END: "ZERO_OR_MORE_END",
+ MD_PARENT_END: "MD_PARENT_END",
+ MD_PARENT_START: "MD_PARENT_START",
+ },
+ O = E,
+ b = /[^\dA-Za-z](\W)*/g;
+ let k = {},
+ R = new Map();
+ const N = function (t) {
+ return (t.entityA + t.roleA + t.entityB).replace(/\s/g, "");
+ };
+ let T = 0;
+ const x = "28e9f9db-3c8d-5aa5-9faf-44286ae5937c";
+ function A(t = "") {
+ return t.length > 0 ? `${t}-` : "";
+ }
+ const v = {
+ parser: p,
+ db: m,
+ renderer: {
+ setConf: function (t) {
+ const e = Object.keys(t);
+ for (const r of e) k[r] = t[r];
+ },
+ draw: function (t, e, r, o) {
+ (k = (0, i.c)().er), i.l.info("Drawing ER diagram");
+ const c = (0, i.c)().securityLevel;
+ let l;
+ "sandbox" === c && (l = (0, n.Ys)("#i" + e));
+ const h = ("sandbox" === c ? (0, n.Ys)(l.nodes()[0].contentDocument.body) : (0, n.Ys)("body")).select(`[id='${e}']`);
+ let d;
+ (function (t, e) {
+ let r;
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.MD_PARENT_START)
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.MD_PARENT_END)
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONLY_ONE_START)
+ .attr("refX", 0)
+ .attr("refY", 9)
+ .attr("markerWidth", 18)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M9,0 L9,18 M15,0 L15,18"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONLY_ONE_END)
+ .attr("refX", 18)
+ .attr("refY", 9)
+ .attr("markerWidth", 18)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M3,0 L3,18 M9,0 L9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_ONE_START)
+ .attr("refX", 0)
+ .attr("refY", 9)
+ .attr("markerWidth", 30)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M9,0 L9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_ONE_END)
+ .attr("refX", 30)
+ .attr("refY", 9)
+ .attr("markerWidth", 30)
+ .attr("markerHeight", 18)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M21,0 L21,18"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONE_OR_MORE_START)
+ .attr("refX", 18)
+ .attr("refY", 18)
+ .attr("markerWidth", 45)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),
+ t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ONE_OR_MORE_END)
+ .attr("refX", 27)
+ .attr("refY", 18)
+ .attr("markerWidth", 45)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("stroke", e.stroke)
+ .attr("fill", "none")
+ .attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_MORE_START)
+ .attr("refX", 18)
+ .attr("refY", 18)
+ .attr("markerWidth", 57)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18"),
+ (r = t
+ .append("defs")
+ .append("marker")
+ .attr("id", E.ZERO_OR_MORE_END)
+ .attr("refX", 39)
+ .attr("refY", 18)
+ .attr("markerWidth", 57)
+ .attr("markerHeight", 36)
+ .attr("orient", "auto")),
+ r.append("circle").attr("stroke", e.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6),
+ r.append("path").attr("stroke", e.stroke).attr("fill", "none").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18");
+ })(h, k),
+ (d = new a.k({ multigraph: !0, directed: !0, compound: !1 })
+ .setGraph({
+ rankdir: k.layoutDirection,
+ marginx: 20,
+ marginy: 20,
+ nodesep: 100,
+ edgesep: 100,
+ ranksep: 100,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ }));
+ const y = (function (t, e, r) {
+ let a;
+ return (
+ Object.keys(e).forEach(function (n) {
+ const s = (function (t = "", e = "") {
+ const r = t.replace(b, "");
+ return `${A(e)}${A(r)}${u(t, x)}`;
+ })(n, "entity");
+ R.set(n, s);
+ const o = t.append("g").attr("id", s);
+ a = void 0 === a ? s : a;
+ const c = "text-" + s,
+ l = o
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", c)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "middle")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", k.fontSize + "px")
+ .text(n),
+ { width: h, height: d } = ((t, e, r) => {
+ const a = k.entityPadding / 3,
+ n = k.entityPadding / 3,
+ s = 0.85 * k.fontSize,
+ o = e.node().getBBox(),
+ c = [];
+ let l = !1,
+ h = !1,
+ d = 0,
+ u = 0,
+ y = 0,
+ p = 0,
+ _ = o.height + 2 * a,
+ f = 1;
+ r.forEach((t) => {
+ void 0 !== t.attributeKeyTypeList && t.attributeKeyTypeList.length > 0 && (l = !0),
+ void 0 !== t.attributeComment && (h = !0);
+ }),
+ r.forEach((r) => {
+ const n = `${e.node().id}-attr-${f}`;
+ let o = 0;
+ const g = (0, i.x)(r.attributeType),
+ m = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-type`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(g),
+ E = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-name`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(r.attributeName),
+ O = {};
+ (O.tn = m), (O.nn = E);
+ const b = m.node().getBBox(),
+ k = E.node().getBBox();
+ if (((d = Math.max(d, b.width)), (u = Math.max(u, k.width)), (o = Math.max(b.height, k.height)), l)) {
+ const e = void 0 !== r.attributeKeyTypeList ? r.attributeKeyTypeList.join(",") : "",
+ a = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-key`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(e);
+ O.kn = a;
+ const c = a.node().getBBox();
+ (y = Math.max(y, c.width)), (o = Math.max(o, c.height));
+ }
+ if (h) {
+ const e = t
+ .append("text")
+ .classed("er entityLabel", !0)
+ .attr("id", `${n}-comment`)
+ .attr("x", 0)
+ .attr("y", 0)
+ .style("dominant-baseline", "middle")
+ .style("text-anchor", "left")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", s + "px")
+ .text(r.attributeComment || "");
+ O.cn = e;
+ const a = e.node().getBBox();
+ (p = Math.max(p, a.width)), (o = Math.max(o, a.height));
+ }
+ (O.height = o), c.push(O), (_ += o + 2 * a), (f += 1);
+ });
+ let g = 4;
+ l && (g += 2), h && (g += 2);
+ const m = d + u + y + p,
+ E = {
+ width: Math.max(k.minEntityWidth, Math.max(o.width + 2 * k.entityPadding, m + n * g)),
+ height: r.length > 0 ? _ : Math.max(k.minEntityHeight, o.height + 2 * k.entityPadding),
+ };
+ if (r.length > 0) {
+ const r = Math.max(0, (E.width - m - n * g) / (g / 2));
+ e.attr("transform", "translate(" + E.width / 2 + "," + (a + o.height / 2) + ")");
+ let i = o.height + 2 * a,
+ s = "attributeBoxOdd";
+ c.forEach((e) => {
+ const o = i + a + e.height / 2;
+ e.tn.attr("transform", "translate(" + n + "," + o + ")");
+ const c = t
+ .insert("rect", "#" + e.tn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", 0)
+ .attr("y", i)
+ .attr("width", d + 2 * n + r)
+ .attr("height", e.height + 2 * a),
+ _ = parseFloat(c.attr("x")) + parseFloat(c.attr("width"));
+ e.nn.attr("transform", "translate(" + (_ + n) + "," + o + ")");
+ const f = t
+ .insert("rect", "#" + e.nn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", _)
+ .attr("y", i)
+ .attr("width", u + 2 * n + r)
+ .attr("height", e.height + 2 * a);
+ let g = parseFloat(f.attr("x")) + parseFloat(f.attr("width"));
+ if (l) {
+ e.kn.attr("transform", "translate(" + (g + n) + "," + o + ")");
+ const c = t
+ .insert("rect", "#" + e.kn.node().id)
+ .classed(`er ${s}`, !0)
+ .attr("x", g)
+ .attr("y", i)
+ .attr("width", y + 2 * n + r)
+ .attr("height", e.height + 2 * a);
+ g = parseFloat(c.attr("x")) + parseFloat(c.attr("width"));
+ }
+ h &&
+ (e.cn.attr("transform", "translate(" + (g + n) + "," + o + ")"),
+ t
+ .insert("rect", "#" + e.cn.node().id)
+ .classed(`er ${s}`, "true")
+ .attr("x", g)
+ .attr("y", i)
+ .attr("width", p + 2 * n + r)
+ .attr("height", e.height + 2 * a)),
+ (i += e.height + 2 * a),
+ (s = "attributeBoxOdd" === s ? "attributeBoxEven" : "attributeBoxOdd");
+ });
+ } else
+ (E.height = Math.max(k.minEntityHeight, _)), e.attr("transform", "translate(" + E.width / 2 + "," + E.height / 2 + ")");
+ return E;
+ })(o, l, e[n].attributes),
+ y = o
+ .insert("rect", "#" + c)
+ .classed("er entityBox", !0)
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", h)
+ .attr("height", d)
+ .node()
+ .getBBox();
+ r.setNode(s, { width: y.width, height: y.height, shape: "rect", id: s });
+ }),
+ a
+ );
+ })(h, o.db.getEntities(), d),
+ p = (function (t, e) {
+ return (
+ t.forEach(function (t) {
+ e.setEdge(R.get(t.entityA), R.get(t.entityB), { relationship: t }, N(t));
+ }),
+ t
+ );
+ })(o.db.getRelationships(), d);
+ var _, f;
+ (0, s.bK)(d),
+ (_ = h),
+ (f = d).nodes().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== f.node(t) &&
+ _.select("#" + t).attr(
+ "transform",
+ "translate(" + (f.node(t).x - f.node(t).width / 2) + "," + (f.node(t).y - f.node(t).height / 2) + " )",
+ );
+ }),
+ p.forEach(function (t) {
+ !(function (t, e, r, a, s) {
+ T++;
+ const o = r.edge(R.get(e.entityA), R.get(e.entityB), N(e)),
+ c = (0, n.jvg)()
+ .x(function (t) {
+ return t.x;
+ })
+ .y(function (t) {
+ return t.y;
+ })
+ .curve(n.$0Z),
+ l = t
+ .insert("path", "#" + a)
+ .classed("er relationshipLine", !0)
+ .attr("d", c(o.points))
+ .style("stroke", k.stroke)
+ .style("fill", "none");
+ e.relSpec.relType === s.db.Identification.NON_IDENTIFYING && l.attr("stroke-dasharray", "8,8");
+ let h = "";
+ switch (
+ (k.arrowMarkerAbsolute &&
+ ((h = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (h = h.replace(/\(/g, "\\(")),
+ (h = h.replace(/\)/g, "\\)"))),
+ e.relSpec.cardA)
+ ) {
+ case s.db.Cardinality.ZERO_OR_ONE:
+ l.attr("marker-end", "url(" + h + "#" + O.ZERO_OR_ONE_END + ")");
+ break;
+ case s.db.Cardinality.ZERO_OR_MORE:
+ l.attr("marker-end", "url(" + h + "#" + O.ZERO_OR_MORE_END + ")");
+ break;
+ case s.db.Cardinality.ONE_OR_MORE:
+ l.attr("marker-end", "url(" + h + "#" + O.ONE_OR_MORE_END + ")");
+ break;
+ case s.db.Cardinality.ONLY_ONE:
+ l.attr("marker-end", "url(" + h + "#" + O.ONLY_ONE_END + ")");
+ break;
+ case s.db.Cardinality.MD_PARENT:
+ l.attr("marker-end", "url(" + h + "#" + O.MD_PARENT_END + ")");
+ }
+ switch (e.relSpec.cardB) {
+ case s.db.Cardinality.ZERO_OR_ONE:
+ l.attr("marker-start", "url(" + h + "#" + O.ZERO_OR_ONE_START + ")");
+ break;
+ case s.db.Cardinality.ZERO_OR_MORE:
+ l.attr("marker-start", "url(" + h + "#" + O.ZERO_OR_MORE_START + ")");
+ break;
+ case s.db.Cardinality.ONE_OR_MORE:
+ l.attr("marker-start", "url(" + h + "#" + O.ONE_OR_MORE_START + ")");
+ break;
+ case s.db.Cardinality.ONLY_ONE:
+ l.attr("marker-start", "url(" + h + "#" + O.ONLY_ONE_START + ")");
+ break;
+ case s.db.Cardinality.MD_PARENT:
+ l.attr("marker-start", "url(" + h + "#" + O.MD_PARENT_START + ")");
+ }
+ const d = l.node().getTotalLength(),
+ u = l.node().getPointAtLength(0.5 * d),
+ y = "rel" + T,
+ p = t
+ .append("text")
+ .classed("er relationshipLabel", !0)
+ .attr("id", y)
+ .attr("x", u.x)
+ .attr("y", u.y)
+ .style("text-anchor", "middle")
+ .style("dominant-baseline", "middle")
+ .style("font-family", (0, i.c)().fontFamily)
+ .style("font-size", k.fontSize + "px")
+ .text(e.roleA)
+ .node()
+ .getBBox();
+ t.insert("rect", "#" + y)
+ .classed("er relationshipLabelBox", !0)
+ .attr("x", u.x - p.width / 2)
+ .attr("y", u.y - p.height / 2)
+ .attr("width", p.width)
+ .attr("height", p.height);
+ })(h, t, d, y, o);
+ });
+ const g = k.diagramPadding;
+ i.u.insertTitle(h, "entityTitleText", k.titleTopMargin, o.db.getDiagramTitle());
+ const m = h.node().getBBox(),
+ v = m.width + 2 * g,
+ M = m.height + 2 * g;
+ (0, i.i)(h, M, v, k.useMaxWidth), h.attr("viewBox", `${m.x - g} ${m.y - g} ${v} ${M}`);
+ },
+ },
+ styles: (t) =>
+ `\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n \n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js
index 7327eaec2..3ad7d7928 100644
--- a/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js
@@ -1 +1,418 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[433],{6433:function(t,i,n){n.d(i,{diagram:function(){return h}});var e=n(9339),s=(n(7484),n(7967),n(7274),n(7856),function(){var t=function(t,i,n,e){for(n=n||{},e=t.length;e--;n[t[e]]=i);return n},i=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,i,n,e,s,r,h){switch(r.length,s){case 1:return e;case 4:break;case 6:e.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(i,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(i,[2,3]),t(i,[2,4]),t(i,[2,5]),t(i,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,i){if(!i.recoverable){var n=new Error(t);throw n.hash=i,n}this.trace(t)},parse:function(t){var i=[0],n=[],e=[null],s=[],r=this.table,h="",o=0,l=0,c=s.slice.call(arguments,1),a=Object.create(this.lexer),y={yy:{}};for(var u in this.yy)Object.prototype.hasOwnProperty.call(this.yy,u)&&(y.yy[u]=this.yy[u]);a.setInput(t,y.yy),y.yy.lexer=a,y.yy.parser=this,void 0===a.yylloc&&(a.yylloc={});var p=a.yylloc;s.push(p);var f=a.options&&a.options.ranges;"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var g,_,m,d,k,x,b,v,w,I={};;){if(_=i[i.length-1],this.defaultActions[_]?m=this.defaultActions[_]:(null==g&&(w=void 0,"number"!=typeof(w=n.pop()||a.lex()||1)&&(w instanceof Array&&(w=(n=w).pop()),w=this.symbols_[w]||w),g=w),m=r[_]&&r[_][g]),void 0===m||!m.length||!m[0]){var S;for(k in v=[],r[_])this.terminals_[k]&&k>2&&v.push("'"+this.terminals_[k]+"'");S=a.showPosition?"Parse error on line "+(o+1)+":\n"+a.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[g]||g)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==g?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(S,{text:a.match,token:this.terminals_[g]||g,line:a.yylineno,loc:p,expected:v})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+g);switch(m[0]){case 1:i.push(g),e.push(a.yytext),s.push(a.yylloc),i.push(m[1]),g=null,l=a.yyleng,h=a.yytext,o=a.yylineno,p=a.yylloc;break;case 2:if(x=this.productions_[m[1]][1],I.$=e[e.length-x],I._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},f&&(I._$.range=[s[s.length-(x||1)].range[0],s[s.length-1].range[1]]),void 0!==(d=this.performAction.apply(I,[h,l,o,y.yy,m[1],e,s].concat(c))))return d;x&&(i=i.slice(0,-1*x*2),e=e.slice(0,-1*x),s=s.slice(0,-1*x)),i.push(this.productions_[m[1]][0]),e.push(I.$),s.push(I._$),b=r[i[i.length-2]][i[i.length-1]],i.push(b);break;case 3:return!0}}return!0}},e={EOF:1,parseError:function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},setInput:function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var i=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var e=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===e.length?this.yylloc.first_column:0)+e[e.length-n.length].length-n[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},test_match:function(t,i){var n,e,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(e=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,i,n,e;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;ri[0].length)){if(i=n,e=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,s[e]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,i,n,e){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function s(){this.yy={}}return n.lexer=e,s.prototype=n,n.Parser=s,new s}());s.parser=s;let r=false;const h={parser:s,db:{clear:()=>{r=false},setInfo:t=>{r=t},getInfo:()=>r},renderer:{draw:(t,i,n)=>{e.l.debug("rendering info diagram\n"+t);const s=(0,e.B)(i);(0,e.i)(s,100,400,!0),s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${n}`)}}}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [433],
+ {
+ 6433: function (t, i, n) {
+ n.d(i, {
+ diagram: function () {
+ return h;
+ },
+ });
+ var e = n(9339),
+ s =
+ (n(7484),
+ n(7967),
+ n(7274),
+ n(7856),
+ (function () {
+ var t = function (t, i, n, e) {
+ for (n = n || {}, e = t.length; e--; n[t[e]] = i);
+ return n;
+ },
+ i = [6, 9, 10],
+ n = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ info: 4,
+ document: 5,
+ EOF: 6,
+ line: 7,
+ statement: 8,
+ NL: 9,
+ showInfo: 10,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: { 2: "error", 4: "info", 6: "EOF", 9: "NL", 10: "showInfo" },
+ productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]],
+ performAction: function (t, i, n, e, s, r, h) {
+ switch ((r.length, s)) {
+ case 1:
+ return e;
+ case 4:
+ break;
+ case 6:
+ e.setInfo(!0);
+ }
+ },
+ table: [
+ { 3: 1, 4: [1, 2] },
+ { 1: [3] },
+ t(i, [2, 2], { 5: 3 }),
+ { 6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8] },
+ { 1: [2, 1] },
+ t(i, [2, 3]),
+ t(i, [2, 4]),
+ t(i, [2, 5]),
+ t(i, [2, 6]),
+ ],
+ defaultActions: { 4: [2, 1] },
+ parseError: function (t, i) {
+ if (!i.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = i), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var i = [0],
+ n = [],
+ e = [null],
+ s = [],
+ r = this.table,
+ h = "",
+ o = 0,
+ l = 0,
+ c = s.slice.call(arguments, 1),
+ a = Object.create(this.lexer),
+ y = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (y.yy[u] = this.yy[u]);
+ a.setInput(t, y.yy), (y.yy.lexer = a), (y.yy.parser = this), void 0 === a.yylloc && (a.yylloc = {});
+ var p = a.yylloc;
+ s.push(p);
+ var f = a.options && a.options.ranges;
+ "function" == typeof y.yy.parseError
+ ? (this.parseError = y.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var g, _, m, d, k, x, b, v, w, I = {}; ; ) {
+ if (
+ ((_ = i[i.length - 1]),
+ this.defaultActions[_]
+ ? (m = this.defaultActions[_])
+ : (null == g &&
+ ((w = void 0),
+ "number" != typeof (w = n.pop() || a.lex() || 1) &&
+ (w instanceof Array && (w = (n = w).pop()), (w = this.symbols_[w] || w)),
+ (g = w)),
+ (m = r[_] && r[_][g])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var S;
+ for (k in ((v = []), r[_])) this.terminals_[k] && k > 2 && v.push("'" + this.terminals_[k] + "'");
+ (S = a.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ a.showPosition() +
+ "\nExpecting " +
+ v.join(", ") +
+ ", got '" +
+ (this.terminals_[g] || g) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == g ? "end of input" : "'" + (this.terminals_[g] || g) + "'")),
+ this.parseError(S, {
+ text: a.match,
+ token: this.terminals_[g] || g,
+ line: a.yylineno,
+ loc: p,
+ expected: v,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + _ + ", token: " + g);
+ switch (m[0]) {
+ case 1:
+ i.push(g),
+ e.push(a.yytext),
+ s.push(a.yylloc),
+ i.push(m[1]),
+ (g = null),
+ (l = a.yyleng),
+ (h = a.yytext),
+ (o = a.yylineno),
+ (p = a.yylloc);
+ break;
+ case 2:
+ if (
+ ((x = this.productions_[m[1]][1]),
+ (I.$ = e[e.length - x]),
+ (I._$ = {
+ first_line: s[s.length - (x || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (x || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ f && (I._$.range = [s[s.length - (x || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (d = this.performAction.apply(I, [h, l, o, y.yy, m[1], e, s].concat(c))))
+ )
+ return d;
+ x && ((i = i.slice(0, -1 * x * 2)), (e = e.slice(0, -1 * x)), (s = s.slice(0, -1 * x))),
+ i.push(this.productions_[m[1]][0]),
+ e.push(I.$),
+ s.push(I._$),
+ (b = r[i[i.length - 2]][i[i.length - 1]]),
+ i.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ e = {
+ EOF: 1,
+ parseError: function (t, i) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, i);
+ },
+ setInput: function (t, i) {
+ return (
+ (this.yy = i || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var i = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - i)), (this.offset -= i);
+ var e = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === e.length ? this.yylloc.first_column : 0) + e[e.length - n.length].length - n[0].length
+ : this.yylloc.first_column - i,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - i]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ i = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + i + "^";
+ },
+ test_match: function (t, i) {
+ var n, e, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (e = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += e.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: e ? e[e.length - 1].length - e[e.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, i, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, i, n, e;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((n = this._input.match(this.rules[s[r]])) && (!i || n[0].length > i[0].length)) {
+ if (((i = n), (e = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, s[r]))) return t;
+ if (this._backtrack) {
+ i = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return i
+ ? !1 !== (t = this.test_match(i, s[e])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, i, n, e) {
+ switch (n) {
+ case 0:
+ return 4;
+ case 1:
+ return 9;
+ case 2:
+ return "space";
+ case 3:
+ return 10;
+ case 4:
+ return 6;
+ case 5:
+ return "TXT";
+ }
+ },
+ rules: [/^(?:info\b)/i, /^(?:[\s\n\r]+)/i, /^(?:[\s]+)/i, /^(?:showInfo\b)/i, /^(?:$)/i, /^(?:.)/i],
+ conditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: !0 } },
+ };
+ function s() {
+ this.yy = {};
+ }
+ return (n.lexer = e), (s.prototype = n), (n.Parser = s), new s();
+ })());
+ s.parser = s;
+ let r = false;
+ const h = {
+ parser: s,
+ db: {
+ clear: () => {
+ r = false;
+ },
+ setInfo: (t) => {
+ r = t;
+ },
+ getInfo: () => r,
+ },
+ renderer: {
+ draw: (t, i, n) => {
+ e.l.debug("rendering info diagram\n" + t);
+ const s = (0, e.B)(i);
+ (0, e.i)(s, 100, 400, !0),
+ s
+ .append("g")
+ .append("text")
+ .attr("x", 100)
+ .attr("y", 40)
+ .attr("class", "version")
+ .attr("font-size", 32)
+ .style("text-anchor", "middle")
+ .text(`v${n}`);
+ },
+ },
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js
index 6827acc45..a48cfa3f1 100644
--- a/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js
@@ -1 +1,1149 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[438],{2438:function(t,e,n){n.d(e,{diagram:function(){return A}});var i=n(9339),r=n(7274),s=n(8252),a=(n(7484),n(7967),n(7856),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,17,18,20,22,23,24,26],r=[1,15],s=[1,16],a=[1,17],o=[1,18],c=[1,19],l=[1,20],h=[1,24],u=[4,6,9,11,17,18,20,22,23,24,26],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,s,a){var o=s.length-1;switch(r){case 1:return s[o-1];case 3:case 7:case 8:this.$=[];break;case 4:s[o-1].push(s[o]),this.$=s[o-1];break;case 5:case 6:this.$=s[o];break;case 11:i.setDiagramTitle(s[o].substr(6)),this.$=s[o].substr(6);break;case 12:this.$=s[o].trim(),i.setAccTitle(this.$);break;case 13:case 14:this.$=s[o].trim(),i.setAccDescription(this.$);break;case 15:i.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 16:i.addTask(s[o-1],s[o]),this.$="task";break;case 18:i.parseDirective("%%{","open_directive");break;case 19:i.parseDirective(s[o],"type_directive");break;case 20:s[o]=s[o].trim().replace(/'/g,'"'),i.parseDirective(s[o],"arg_directive");break;case 21:i.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,26:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,26:n},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:s,20:a,22:o,23:c,24:l,26:n},{1:[2,2]},{14:22,15:[1,23],29:h},t([15,29],[2,19]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:21,10:25,12:4,17:r,18:s,20:a,22:o,23:c,24:l,26:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),{19:[1,26]},{21:[1,27]},t(i,[2,14]),t(i,[2,15]),{25:[1,28]},t(i,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},t(i,[2,5]),t(i,[2,12]),t(i,[2,13]),t(i,[2,16]),t(u,[2,9]),{14:32,29:h},{29:[2,20]},{11:[1,33]},t(u,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=[0],n=[],i=[null],r=[],s=this.table,a="",o=0,c=0,l=r.slice.call(arguments,1),h=Object.create(this.lexer),u={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(u.yy[y]=this.yy[y]);h.setInput(t,u.yy),u.yy.lexer=h,u.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var p=h.yylloc;r.push(p);var d=h.options&&h.options.ranges;"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var f,g,x,m,k,_,b,v,$,w={};;){if(g=e[e.length-1],this.defaultActions[g]?x=this.defaultActions[g]:(null==f&&($=void 0,"number"!=typeof($=n.pop()||h.lex()||1)&&($ instanceof Array&&($=(n=$).pop()),$=this.symbols_[$]||$),f=$),x=s[g]&&s[g][f]),void 0===x||!x.length||!x[0]){var M;for(k in v=[],s[g])this.terminals_[k]&&k>2&&v.push("'"+this.terminals_[k]+"'");M=h.showPosition?"Parse error on line "+(o+1)+":\n"+h.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(M,{text:h.match,token:this.terminals_[f]||f,line:h.yylineno,loc:p,expected:v})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+f);switch(x[0]){case 1:e.push(f),i.push(h.yytext),r.push(h.yylloc),e.push(x[1]),f=null,c=h.yyleng,a=h.yytext,o=h.yylineno,p=h.yylloc;break;case 2:if(_=this.productions_[x[1]][1],w.$=i[i.length-_],w._$={first_line:r[r.length-(_||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(_||1)].first_column,last_column:r[r.length-1].last_column},d&&(w._$.range=[r[r.length-(_||1)].range[0],r[r.length-1].range[1]]),void 0!==(m=this.performAction.apply(w,[a,c,o,u.yy,x[1],i,r].concat(l))))return m;_&&(e=e.slice(0,-1*_*2),i=i.slice(0,-1*_),r=r.slice(0,-1*_)),e.push(this.productions_[x[1]][0]),i.push(w.$),r.push(w._$),b=s[e[e.length-2]][e[e.length-1]],e.push(b);break;case 3:return!0}}return!0}},p={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;se[0].length)){if(e=n,i=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};function d(){this.yy={}}return y.lexer=p,d.prototype=y,y.Parser=d,new d}());a.parser=a;const o=a;let c="";const l=[],h=[],u=[],y=function(){let t=!0;for(const[e,n]of u.entries())u[e].processed,t=t&&n.processed;return t},p={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().journey,clear:function(){l.length=0,h.length=0,c="",u.length=0,(0,i.v)()},setDiagramTitle:i.r,getDiagramTitle:i.t,setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,addSection:function(t){c=t,l.push(t)},getSections:function(){return l},getTasks:function(){let t=y(),e=0;for(;!t&&e<100;)t=y(),e++;return h.push(...u),h},addTask:function(t,e){const n=e.substr(1).split(":");let i=0,r=[];1===n.length?(i=Number(n[0]),r=[]):(i=Number(n[0]),r=n[1].split(","));const s=r.map((t=>t.trim())),a={section:c,type:c,people:s,task:t,score:i};u.push(a)},addTaskOrg:function(t){const e={section:c,type:c,description:t,task:t,classes:[]};h.push(e)},getActors:function(){return function(){const t=[];return h.forEach((e=>{e.people&&t.push(...e.people)})),[...new Set(t)].sort()}()}},d=function(t,e){return(0,s.d)(t,e)},f=function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n};let g=-1;const x=function(){function t(t,e,n,r,s,a,o,c){i(e.append("text").attr("x",n+s/2).attr("y",r+a/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,r,s,a,o,c,l){const{taskFontSize:h,taskFontFamily:u}=c,y=t.split(/ /gi);for(let t=0;t3?function(t){const n=(0,r.Nb1)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",n).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}(n):e.score<3?function(t){const n=(0,r.Nb1)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",n).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}(n):n.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(a,{cx:i,cy:300+30*(5-e.score),score:e.score});const o=(0,s.g)();o.x=e.x,o.y=e.y,o.fill=e.fill,o.width=n.width,o.height=n.height,o.class="task task-type-"+e.num,o.rx=3,o.ry=3,d(a,o);let c=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,i={cx:c,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};f(a,i),c+=10})),x(n)(e.task,a,o.x,o.y,o.width,o.height,{class:"task"},n,e.colour)},v={},$=(0,i.c)().journey,w=$.leftMargin,M={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},updateBounds:function(t,e,n,r){const s=(0,i.c)().journey,a=this;let o=0;this.sequenceItems.forEach((function(i){o++;const c=a.sequenceItems.length-o+1;a.updateVal(i,"starty",e-c*s.boxMargin,Math.min),a.updateVal(i,"stopy",r+c*s.boxMargin,Math.max),a.updateVal(M.data,"startx",t-c*s.boxMargin,Math.min),a.updateVal(M.data,"stopx",n+c*s.boxMargin,Math.max),a.updateVal(i,"startx",t-c*s.boxMargin,Math.min),a.updateVal(i,"stopx",n+c*s.boxMargin,Math.max),a.updateVal(M.data,"starty",e-c*s.boxMargin,Math.min),a.updateVal(M.data,"stopy",r+c*s.boxMargin,Math.max)}))},insert:function(t,e,n,i){const r=Math.min(t,n),s=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(M.data,"startx",r,Math.min),this.updateVal(M.data,"starty",a,Math.min),this.updateVal(M.data,"stopx",s,Math.max),this.updateVal(M.data,"stopy",o,Math.max),this.updateBounds(r,a,s,o)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},E=$.sectionFills,S=$.sectionColours,T={setConf:function(t){Object.keys(t).forEach((function(e){$[e]=t[e]}))},draw:function(t,e,n,s){const a=(0,i.c)().journey,o=(0,i.c)().securityLevel;let c;"sandbox"===o&&(c=(0,r.Ys)("#i"+e));const l="sandbox"===o?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body");M.init();const h=l.select("#"+e);h.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z");const u=s.db.getTasks(),y=s.db.getDiagramTitle(),p=s.db.getActors();for(const t in v)delete v[t];let d=0;p.forEach((t=>{v[t]={color:a.actorColours[d%a.actorColours.length],position:d},d++})),function(t){const e=(0,i.c)().journey;let n=60;Object.keys(v).forEach((i=>{const r=v[i].color,s={cx:20,cy:n,r:7,fill:r,stroke:"#000",pos:v[i].position};m(t,s);const a={x:40,y:n+7,fill:"#666",text:i,textMargin:5|e.boxTextMargin};_(t,a),n+=20}))}(h),M.insert(0,0,w,50*Object.keys(v).length),function(t,e,n){const r=(0,i.c)().journey;let s="";const a=n+(2*r.height+r.diagramMarginY);let o=0,c="#CCC",l="black",h=0;for(const[n,i]of e.entries()){if(s!==i.section){c=E[o%E.length],h=o%E.length,l=S[o%S.length];let a=0;const u=i.section;for(let t=n;t(v[e]&&(t[e]=v[e]),t)),{});i.x=n*r.taskMargin+n*r.width+w,i.y=a,i.width=r.diagramMarginX,i.height=r.diagramMarginY,i.colour=l,i.fill=c,i.num=h,i.actors=u,b(t,i,r),M.insert(i.x,i.y,i.x+i.width+r.taskMargin,450)}}(h,u,0);const f=M.getBounds();y&&h.append("text").text(y).attr("x",w).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const g=f.stopy-f.starty+2*a.diagramMarginY,x=w+f.stopx+2*a.diagramMarginX;(0,i.i)(h,g,x,a.useMaxWidth),h.append("line").attr("x1",w).attr("y1",4*a.height).attr("x2",x-w-4).attr("y2",4*a.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const $=y?70:0;h.attr("viewBox",`${f.startx} -25 ${x} ${g+$}`),h.attr("preserveAspectRatio","xMinYMin meet"),h.attr("height",g+$+25)}},A={parser:o,db:p,renderer:T,styles:t=>`.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n`,init:t=>{T.setConf(t.journey),p.clear()}}},8252:function(t,e,n){n.d(e,{a:function(){return a},b:function(){return l},c:function(){return c},d:function(){return s},e:function(){return u},f:function(){return o},g:function(){return h}});var i=n(7967),r=n(9339);const s=(t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),void 0!==e.rx&&n.attr("rx",e.rx),void 0!==e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const t in e.attrs)n.attr(t,e.attrs[t]);return void 0!==e.class&&n.attr("class",e.class),n},a=(t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,n).lower()},o=(t,e)=>{const n=e.text.replace(r.J," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i},c=(t,e,n,r)=>{const s=t.append("image");s.attr("x",e),s.attr("y",n);const a=(0,i.Nm)(r);s.attr("xlink:href",a)},l=(t,e,n,r)=>{const s=t.append("use");s.attr("x",e),s.attr("y",n);const a=(0,i.Nm)(r);s.attr("xlink:href",`#${a}`)},h=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),u=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [438],
+ {
+ 2438: function (t, e, n) {
+ n.d(e, {
+ diagram: function () {
+ return A;
+ },
+ });
+ var i = n(9339),
+ r = n(7274),
+ s = n(8252),
+ a =
+ (n(7484),
+ n(7967),
+ n(7856),
+ (function () {
+ var t = function (t, e, n, i) {
+ for (n = n || {}, i = t.length; i--; n[t[i]] = e);
+ return n;
+ },
+ e = [1, 2],
+ n = [1, 5],
+ i = [6, 9, 11, 17, 18, 20, 22, 23, 24, 26],
+ r = [1, 15],
+ s = [1, 16],
+ a = [1, 17],
+ o = [1, 18],
+ c = [1, 19],
+ l = [1, 20],
+ h = [1, 24],
+ u = [4, 6, 9, 11, 17, 18, 20, 22, 23, 24, 26],
+ y = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ journey: 4,
+ document: 5,
+ EOF: 6,
+ directive: 7,
+ line: 8,
+ SPACE: 9,
+ statement: 10,
+ NEWLINE: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ ":": 15,
+ argDirective: 16,
+ title: 17,
+ acc_title: 18,
+ acc_title_value: 19,
+ acc_descr: 20,
+ acc_descr_value: 21,
+ acc_descr_multiline_value: 22,
+ section: 23,
+ taskName: 24,
+ taskData: 25,
+ open_directive: 26,
+ type_directive: 27,
+ arg_directive: 28,
+ close_directive: 29,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "journey",
+ 6: "EOF",
+ 9: "SPACE",
+ 11: "NEWLINE",
+ 15: ":",
+ 17: "title",
+ 18: "acc_title",
+ 19: "acc_title_value",
+ 20: "acc_descr",
+ 21: "acc_descr_value",
+ 22: "acc_descr_multiline_value",
+ 23: "section",
+ 24: "taskName",
+ 25: "taskData",
+ 26: "open_directive",
+ 27: "type_directive",
+ 28: "arg_directive",
+ 29: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 3],
+ [3, 2],
+ [5, 0],
+ [5, 2],
+ [8, 2],
+ [8, 1],
+ [8, 1],
+ [8, 1],
+ [7, 4],
+ [7, 6],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 1],
+ [12, 1],
+ [13, 1],
+ [16, 1],
+ [14, 1],
+ ],
+ performAction: function (t, e, n, i, r, s, a) {
+ var o = s.length - 1;
+ switch (r) {
+ case 1:
+ return s[o - 1];
+ case 3:
+ case 7:
+ case 8:
+ this.$ = [];
+ break;
+ case 4:
+ s[o - 1].push(s[o]), (this.$ = s[o - 1]);
+ break;
+ case 5:
+ case 6:
+ this.$ = s[o];
+ break;
+ case 11:
+ i.setDiagramTitle(s[o].substr(6)), (this.$ = s[o].substr(6));
+ break;
+ case 12:
+ (this.$ = s[o].trim()), i.setAccTitle(this.$);
+ break;
+ case 13:
+ case 14:
+ (this.$ = s[o].trim()), i.setAccDescription(this.$);
+ break;
+ case 15:
+ i.addSection(s[o].substr(8)), (this.$ = s[o].substr(8));
+ break;
+ case 16:
+ i.addTask(s[o - 1], s[o]), (this.$ = "task");
+ break;
+ case 18:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 19:
+ i.parseDirective(s[o], "type_directive");
+ break;
+ case 20:
+ (s[o] = s[o].trim().replace(/'/g, '"')), i.parseDirective(s[o], "arg_directive");
+ break;
+ case 21:
+ i.parseDirective("}%%", "close_directive", "journey");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 7: 3, 12: 4, 26: n },
+ { 1: [3] },
+ t(i, [2, 3], { 5: 6 }),
+ { 3: 7, 4: e, 7: 3, 12: 4, 26: n },
+ { 13: 8, 27: [1, 9] },
+ { 27: [2, 18] },
+ {
+ 6: [1, 10],
+ 7: 21,
+ 8: 11,
+ 9: [1, 12],
+ 10: 13,
+ 11: [1, 14],
+ 12: 4,
+ 17: r,
+ 18: s,
+ 20: a,
+ 22: o,
+ 23: c,
+ 24: l,
+ 26: n,
+ },
+ { 1: [2, 2] },
+ { 14: 22, 15: [1, 23], 29: h },
+ t([15, 29], [2, 19]),
+ t(i, [2, 8], { 1: [2, 1] }),
+ t(i, [2, 4]),
+ { 7: 21, 10: 25, 12: 4, 17: r, 18: s, 20: a, 22: o, 23: c, 24: l, 26: n },
+ t(i, [2, 6]),
+ t(i, [2, 7]),
+ t(i, [2, 11]),
+ { 19: [1, 26] },
+ { 21: [1, 27] },
+ t(i, [2, 14]),
+ t(i, [2, 15]),
+ { 25: [1, 28] },
+ t(i, [2, 17]),
+ { 11: [1, 29] },
+ { 16: 30, 28: [1, 31] },
+ { 11: [2, 21] },
+ t(i, [2, 5]),
+ t(i, [2, 12]),
+ t(i, [2, 13]),
+ t(i, [2, 16]),
+ t(u, [2, 9]),
+ { 14: 32, 29: h },
+ { 29: [2, 20] },
+ { 11: [1, 33] },
+ t(u, [2, 10]),
+ ],
+ defaultActions: { 5: [2, 18], 7: [2, 2], 24: [2, 21], 31: [2, 20] },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = e), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ n = [],
+ i = [null],
+ r = [],
+ s = this.table,
+ a = "",
+ o = 0,
+ c = 0,
+ l = r.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (u.yy[y] = this.yy[y]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ r.push(p);
+ var d = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, g, x, m, k, _, b, v, $, w = {}; ; ) {
+ if (
+ ((g = e[e.length - 1]),
+ this.defaultActions[g]
+ ? (x = this.defaultActions[g])
+ : (null == f &&
+ (($ = void 0),
+ "number" != typeof ($ = n.pop() || h.lex() || 1) &&
+ ($ instanceof Array && ($ = (n = $).pop()), ($ = this.symbols_[$] || $)),
+ (f = $)),
+ (x = s[g] && s[g][f])),
+ void 0 === x || !x.length || !x[0])
+ ) {
+ var M;
+ for (k in ((v = []), s[g])) this.terminals_[k] && k > 2 && v.push("'" + this.terminals_[k] + "'");
+ (M = h.showPosition
+ ? "Parse error on line " +
+ (o + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ v.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (o + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(M, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: v,
+ });
+ }
+ if (x[0] instanceof Array && x.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + f);
+ switch (x[0]) {
+ case 1:
+ e.push(f),
+ i.push(h.yytext),
+ r.push(h.yylloc),
+ e.push(x[1]),
+ (f = null),
+ (c = h.yyleng),
+ (a = h.yytext),
+ (o = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((_ = this.productions_[x[1]][1]),
+ (w.$ = i[i.length - _]),
+ (w._$ = {
+ first_line: r[r.length - (_ || 1)].first_line,
+ last_line: r[r.length - 1].last_line,
+ first_column: r[r.length - (_ || 1)].first_column,
+ last_column: r[r.length - 1].last_column,
+ }),
+ d && (w._$.range = [r[r.length - (_ || 1)].range[0], r[r.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(w, [a, c, o, u.yy, x[1], i, r].concat(l))))
+ )
+ return m;
+ _ && ((e = e.slice(0, -1 * _ * 2)), (i = i.slice(0, -1 * _)), (r = r.slice(0, -1 * _))),
+ e.push(this.productions_[x[1]][0]),
+ i.push(w.$),
+ r.push(w._$),
+ (b = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(b);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ p = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var r = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === i.length ? this.yylloc.first_column : 0) + i[i.length - n.length].length - n[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var n, i, r;
+ if (
+ (this.options.backtrack_lexer &&
+ ((r = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var s in r) this[s] = r[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, n, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var r = this._currentRules(), s = 0; s < r.length; s++)
+ if ((n = this._input.match(this.rules[r[s]])) && (!e || n[0].length > e[0].length)) {
+ if (((e = n), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, r[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, r[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, n, i) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 26;
+ case 1:
+ return this.begin("type_directive"), 27;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 15;
+ case 3:
+ return this.popState(), this.popState(), 29;
+ case 4:
+ return 28;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ break;
+ case 7:
+ return 11;
+ case 10:
+ return 4;
+ case 11:
+ return 17;
+ case 12:
+ return this.begin("acc_title"), 18;
+ case 13:
+ return this.popState(), "acc_title_value";
+ case 14:
+ return this.begin("acc_descr"), 20;
+ case 15:
+ return this.popState(), "acc_descr_value";
+ case 16:
+ this.begin("acc_descr_multiline");
+ break;
+ case 17:
+ this.popState();
+ break;
+ case 18:
+ return "acc_descr_multiline_value";
+ case 19:
+ return 23;
+ case 20:
+ return 24;
+ case 21:
+ return 25;
+ case 22:
+ return 15;
+ case 23:
+ return 6;
+ case 24:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n]+)/i,
+ /^(?:\s+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:journey\b)/i,
+ /^(?:title\s[^#\n;]+)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:section\s[^#:\n;]+)/i,
+ /^(?:[^#:\n;]+)/i,
+ /^(?::[^#\n;]+)/i,
+ /^(?::)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ open_directive: { rules: [1], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ acc_descr_multiline: { rules: [17, 18], inclusive: !1 },
+ acc_descr: { rules: [15], inclusive: !1 },
+ acc_title: { rules: [13], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24],
+ inclusive: !0,
+ },
+ },
+ };
+ function d() {
+ this.yy = {};
+ }
+ return (y.lexer = p), (d.prototype = y), (y.Parser = d), new d();
+ })());
+ a.parser = a;
+ const o = a;
+ let c = "";
+ const l = [],
+ h = [],
+ u = [],
+ y = function () {
+ let t = !0;
+ for (const [e, n] of u.entries()) u[e].processed, (t = t && n.processed);
+ return t;
+ },
+ p = {
+ parseDirective: function (t, e, n) {
+ i.m.parseDirective(this, t, e, n);
+ },
+ getConfig: () => (0, i.c)().journey,
+ clear: function () {
+ (l.length = 0), (h.length = 0), (c = ""), (u.length = 0), (0, i.v)();
+ },
+ setDiagramTitle: i.r,
+ getDiagramTitle: i.t,
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ setAccDescription: i.b,
+ getAccDescription: i.a,
+ addSection: function (t) {
+ (c = t), l.push(t);
+ },
+ getSections: function () {
+ return l;
+ },
+ getTasks: function () {
+ let t = y(),
+ e = 0;
+ for (; !t && e < 100; ) (t = y()), e++;
+ return h.push(...u), h;
+ },
+ addTask: function (t, e) {
+ const n = e.substr(1).split(":");
+ let i = 0,
+ r = [];
+ 1 === n.length ? ((i = Number(n[0])), (r = [])) : ((i = Number(n[0])), (r = n[1].split(",")));
+ const s = r.map((t) => t.trim()),
+ a = { section: c, type: c, people: s, task: t, score: i };
+ u.push(a);
+ },
+ addTaskOrg: function (t) {
+ const e = { section: c, type: c, description: t, task: t, classes: [] };
+ h.push(e);
+ },
+ getActors: function () {
+ return (function () {
+ const t = [];
+ return (
+ h.forEach((e) => {
+ e.people && t.push(...e.people);
+ }),
+ [...new Set(t)].sort()
+ );
+ })();
+ },
+ },
+ d = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ f = function (t, e) {
+ const n = t.append("circle");
+ return (
+ n.attr("cx", e.cx),
+ n.attr("cy", e.cy),
+ n.attr("class", "actor-" + e.pos),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("r", e.r),
+ void 0 !== n.class && n.attr("class", n.class),
+ void 0 !== e.title && n.append("title").text(e.title),
+ n
+ );
+ };
+ let g = -1;
+ const x = (function () {
+ function t(t, e, n, r, s, a, o, c) {
+ i(
+ e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", r + a / 2 + 5)
+ .style("font-color", c)
+ .style("text-anchor", "middle")
+ .text(t),
+ o,
+ );
+ }
+ function e(t, e, n, r, s, a, o, c, l) {
+ const { taskFontSize: h, taskFontFamily: u } = c,
+ y = t.split(/ /gi);
+ for (let t = 0; t < y.length; t++) {
+ const c = t * h - (h * (y.length - 1)) / 2,
+ p = e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", r)
+ .attr("fill", l)
+ .style("text-anchor", "middle")
+ .style("font-size", h)
+ .style("font-family", u);
+ p
+ .append("tspan")
+ .attr("x", n + s / 2)
+ .attr("dy", c)
+ .text(y[t]),
+ p
+ .attr("y", r + a / 2)
+ .attr("dominant-baseline", "central")
+ .attr("alignment-baseline", "central"),
+ i(p, o);
+ }
+ }
+ function n(t, n, r, s, a, o, c, l) {
+ const h = n.append("switch"),
+ u = h
+ .append("foreignObject")
+ .attr("x", r)
+ .attr("y", s)
+ .attr("width", a)
+ .attr("height", o)
+ .attr("position", "fixed")
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ u
+ .append("div")
+ .attr("class", "label")
+ .style("display", "table-cell")
+ .style("text-align", "center")
+ .style("vertical-align", "middle")
+ .text(t),
+ e(t, h, r, s, a, o, c, l),
+ i(u, c);
+ }
+ function i(t, e) {
+ for (const n in e) n in e && t.attr(n, e[n]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? n : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ m = f,
+ k = function (t, e, n) {
+ const i = t.append("g"),
+ r = (0, s.g)();
+ (r.x = e.x),
+ (r.y = e.y),
+ (r.fill = e.fill),
+ (r.width = n.width * e.taskCount + n.diagramMarginX * (e.taskCount - 1)),
+ (r.height = n.height),
+ (r.class = "journey-section section-type-" + e.num),
+ (r.rx = 3),
+ (r.ry = 3),
+ d(i, r),
+ x(n)(e.text, i, r.x, r.y, r.width, r.height, { class: "journey-section section-type-" + e.num }, n, e.colour);
+ },
+ _ = function (t, e) {
+ return (0, s.f)(t, e);
+ },
+ b = function (t, e, n) {
+ const i = e.x + n.width / 2,
+ a = t.append("g");
+ g++,
+ a
+ .append("line")
+ .attr("id", "task" + g)
+ .attr("x1", i)
+ .attr("y1", e.y)
+ .attr("x2", i)
+ .attr("y2", 450)
+ .attr("class", "task-line")
+ .attr("stroke-width", "1px")
+ .attr("stroke-dasharray", "4 2")
+ .attr("stroke", "#666"),
+ (function (t, e) {
+ t.append("circle")
+ .attr("cx", e.cx)
+ .attr("cy", e.cy)
+ .attr("class", "face")
+ .attr("r", 15)
+ .attr("stroke-width", 2)
+ .attr("overflow", "visible");
+ const n = t.append("g");
+ n
+ .append("circle")
+ .attr("cx", e.cx - 5)
+ .attr("cy", e.cy - 5)
+ .attr("r", 1.5)
+ .attr("stroke-width", 2)
+ .attr("fill", "#666")
+ .attr("stroke", "#666"),
+ n
+ .append("circle")
+ .attr("cx", e.cx + 5)
+ .attr("cy", e.cy - 5)
+ .attr("r", 1.5)
+ .attr("stroke-width", 2)
+ .attr("fill", "#666")
+ .attr("stroke", "#666"),
+ e.score > 3
+ ? (function (t) {
+ const n = (0, r.Nb1)()
+ .startAngle(Math.PI / 2)
+ .endAngle((Math.PI / 2) * 3)
+ .innerRadius(7.5)
+ .outerRadius(15 / 2.2);
+ t.append("path")
+ .attr("class", "mouth")
+ .attr("d", n)
+ .attr("transform", "translate(" + e.cx + "," + (e.cy + 2) + ")");
+ })(n)
+ : e.score < 3
+ ? (function (t) {
+ const n = (0, r.Nb1)()
+ .startAngle((3 * Math.PI) / 2)
+ .endAngle((Math.PI / 2) * 5)
+ .innerRadius(7.5)
+ .outerRadius(15 / 2.2);
+ t.append("path")
+ .attr("class", "mouth")
+ .attr("d", n)
+ .attr("transform", "translate(" + e.cx + "," + (e.cy + 7) + ")");
+ })(n)
+ : n
+ .append("line")
+ .attr("class", "mouth")
+ .attr("stroke", 2)
+ .attr("x1", e.cx - 5)
+ .attr("y1", e.cy + 7)
+ .attr("x2", e.cx + 5)
+ .attr("y2", e.cy + 7)
+ .attr("class", "mouth")
+ .attr("stroke-width", "1px")
+ .attr("stroke", "#666");
+ })(a, { cx: i, cy: 300 + 30 * (5 - e.score), score: e.score });
+ const o = (0, s.g)();
+ (o.x = e.x),
+ (o.y = e.y),
+ (o.fill = e.fill),
+ (o.width = n.width),
+ (o.height = n.height),
+ (o.class = "task task-type-" + e.num),
+ (o.rx = 3),
+ (o.ry = 3),
+ d(a, o);
+ let c = e.x + 14;
+ e.people.forEach((t) => {
+ const n = e.actors[t].color,
+ i = {
+ cx: c,
+ cy: e.y,
+ r: 7,
+ fill: n,
+ stroke: "#000",
+ title: t,
+ pos: e.actors[t].position,
+ };
+ f(a, i), (c += 10);
+ }),
+ x(n)(e.task, a, o.x, o.y, o.width, o.height, { class: "task" }, n, e.colour);
+ },
+ v = {},
+ $ = (0, i.c)().journey,
+ w = $.leftMargin,
+ M = {
+ data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
+ verticalPos: 0,
+ sequenceItems: [],
+ init: function () {
+ (this.sequenceItems = []), (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }), (this.verticalPos = 0);
+ },
+ updateVal: function (t, e, n, i) {
+ void 0 === t[e] ? (t[e] = n) : (t[e] = i(n, t[e]));
+ },
+ updateBounds: function (t, e, n, r) {
+ const s = (0, i.c)().journey,
+ a = this;
+ let o = 0;
+ this.sequenceItems.forEach(function (i) {
+ o++;
+ const c = a.sequenceItems.length - o + 1;
+ a.updateVal(i, "starty", e - c * s.boxMargin, Math.min),
+ a.updateVal(i, "stopy", r + c * s.boxMargin, Math.max),
+ a.updateVal(M.data, "startx", t - c * s.boxMargin, Math.min),
+ a.updateVal(M.data, "stopx", n + c * s.boxMargin, Math.max),
+ a.updateVal(i, "startx", t - c * s.boxMargin, Math.min),
+ a.updateVal(i, "stopx", n + c * s.boxMargin, Math.max),
+ a.updateVal(M.data, "starty", e - c * s.boxMargin, Math.min),
+ a.updateVal(M.data, "stopy", r + c * s.boxMargin, Math.max);
+ });
+ },
+ insert: function (t, e, n, i) {
+ const r = Math.min(t, n),
+ s = Math.max(t, n),
+ a = Math.min(e, i),
+ o = Math.max(e, i);
+ this.updateVal(M.data, "startx", r, Math.min),
+ this.updateVal(M.data, "starty", a, Math.min),
+ this.updateVal(M.data, "stopx", s, Math.max),
+ this.updateVal(M.data, "stopy", o, Math.max),
+ this.updateBounds(r, a, s, o);
+ },
+ bumpVerticalPos: function (t) {
+ (this.verticalPos = this.verticalPos + t), (this.data.stopy = this.verticalPos);
+ },
+ getVerticalPos: function () {
+ return this.verticalPos;
+ },
+ getBounds: function () {
+ return this.data;
+ },
+ },
+ E = $.sectionFills,
+ S = $.sectionColours,
+ T = {
+ setConf: function (t) {
+ Object.keys(t).forEach(function (e) {
+ $[e] = t[e];
+ });
+ },
+ draw: function (t, e, n, s) {
+ const a = (0, i.c)().journey,
+ o = (0, i.c)().securityLevel;
+ let c;
+ "sandbox" === o && (c = (0, r.Ys)("#i" + e));
+ const l = "sandbox" === o ? (0, r.Ys)(c.nodes()[0].contentDocument.body) : (0, r.Ys)("body");
+ M.init();
+ const h = l.select("#" + e);
+ h.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 5)
+ .attr("refY", 2)
+ .attr("markerWidth", 6)
+ .attr("markerHeight", 4)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0,0 V 4 L6,2 Z");
+ const u = s.db.getTasks(),
+ y = s.db.getDiagramTitle(),
+ p = s.db.getActors();
+ for (const t in v) delete v[t];
+ let d = 0;
+ p.forEach((t) => {
+ (v[t] = { color: a.actorColours[d % a.actorColours.length], position: d }), d++;
+ }),
+ (function (t) {
+ const e = (0, i.c)().journey;
+ let n = 60;
+ Object.keys(v).forEach((i) => {
+ const r = v[i].color,
+ s = { cx: 20, cy: n, r: 7, fill: r, stroke: "#000", pos: v[i].position };
+ m(t, s);
+ const a = {
+ x: 40,
+ y: n + 7,
+ fill: "#666",
+ text: i,
+ textMargin: 5 | e.boxTextMargin,
+ };
+ _(t, a), (n += 20);
+ });
+ })(h),
+ M.insert(0, 0, w, 50 * Object.keys(v).length),
+ (function (t, e, n) {
+ const r = (0, i.c)().journey;
+ let s = "";
+ const a = n + (2 * r.height + r.diagramMarginY);
+ let o = 0,
+ c = "#CCC",
+ l = "black",
+ h = 0;
+ for (const [n, i] of e.entries()) {
+ if (s !== i.section) {
+ (c = E[o % E.length]), (h = o % E.length), (l = S[o % S.length]);
+ let a = 0;
+ const u = i.section;
+ for (let t = n; t < e.length && e[t].section == u; t++) a += 1;
+ const y = {
+ x: n * r.taskMargin + n * r.width + w,
+ y: 50,
+ text: i.section,
+ fill: c,
+ num: h,
+ colour: l,
+ taskCount: a,
+ };
+ k(t, y, r), (s = i.section), o++;
+ }
+ const u = i.people.reduce((t, e) => (v[e] && (t[e] = v[e]), t), {});
+ (i.x = n * r.taskMargin + n * r.width + w),
+ (i.y = a),
+ (i.width = r.diagramMarginX),
+ (i.height = r.diagramMarginY),
+ (i.colour = l),
+ (i.fill = c),
+ (i.num = h),
+ (i.actors = u),
+ b(t, i, r),
+ M.insert(i.x, i.y, i.x + i.width + r.taskMargin, 450);
+ }
+ })(h, u, 0);
+ const f = M.getBounds();
+ y && h.append("text").text(y).attr("x", w).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 25);
+ const g = f.stopy - f.starty + 2 * a.diagramMarginY,
+ x = w + f.stopx + 2 * a.diagramMarginX;
+ (0, i.i)(h, g, x, a.useMaxWidth),
+ h
+ .append("line")
+ .attr("x1", w)
+ .attr("y1", 4 * a.height)
+ .attr("x2", x - w - 4)
+ .attr("y2", 4 * a.height)
+ .attr("stroke-width", 4)
+ .attr("stroke", "black")
+ .attr("marker-end", "url(#arrowhead)");
+ const $ = y ? 70 : 0;
+ h.attr("viewBox", `${f.startx} -25 ${x} ${g + $}`), h.attr("preserveAspectRatio", "xMinYMin meet"), h.attr("height", g + $ + 25);
+ },
+ },
+ A = {
+ parser: o,
+ db: p,
+ renderer: T,
+ styles: (t) =>
+ `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor ? `fill: ${t.faceColor}` : "fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0 ? `fill: ${t.fillType0}` : ""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0 ? `fill: ${t.fillType1}` : ""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0 ? `fill: ${t.fillType2}` : ""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0 ? `fill: ${t.fillType3}` : ""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0 ? `fill: ${t.fillType4}` : ""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0 ? `fill: ${t.fillType5}` : ""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0 ? `fill: ${t.fillType6}` : ""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0 ? `fill: ${t.fillType7}` : ""};\n }\n\n .actor-0 {\n ${t.actor0 ? `fill: ${t.actor0}` : ""};\n }\n .actor-1 {\n ${t.actor1 ? `fill: ${t.actor1}` : ""};\n }\n .actor-2 {\n ${t.actor2 ? `fill: ${t.actor2}` : ""};\n }\n .actor-3 {\n ${t.actor3 ? `fill: ${t.actor3}` : ""};\n }\n .actor-4 {\n ${t.actor4 ? `fill: ${t.actor4}` : ""};\n }\n .actor-5 {\n ${t.actor5 ? `fill: ${t.actor5}` : ""};\n }\n`,
+ init: (t) => {
+ T.setConf(t.journey), p.clear();
+ },
+ };
+ },
+ 8252: function (t, e, n) {
+ n.d(e, {
+ a: function () {
+ return a;
+ },
+ b: function () {
+ return l;
+ },
+ c: function () {
+ return c;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return u;
+ },
+ f: function () {
+ return o;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = n(7967),
+ r = n(9339);
+ const s = (t, e) => {
+ const n = t.append("rect");
+ if (
+ (n.attr("x", e.x),
+ n.attr("y", e.y),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("width", e.width),
+ n.attr("height", e.height),
+ void 0 !== e.rx && n.attr("rx", e.rx),
+ void 0 !== e.ry && n.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) n.attr(t, e.attrs[t]);
+ return void 0 !== e.class && n.attr("class", e.class), n;
+ },
+ a = (t, e) => {
+ const n = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, n).lower();
+ },
+ o = (t, e) => {
+ const n = e.text.replace(r.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(n), i;
+ },
+ c = (t, e, n, r) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", n);
+ const a = (0, i.Nm)(r);
+ s.attr("xlink:href", a);
+ },
+ l = (t, e, n, r) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", n);
+ const a = (0, i.Nm)(r);
+ s.attr("xlink:href", `#${a}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ u = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js
index 460ee2ebc..133025f0f 100644
--- a/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js
@@ -1 +1,494 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[476],{9368:function(e,t,n){n.d(t,{c:function(){return o}});var r=n(9360),i=n(9103),a=function(e){return(0,i.Z)(e,4)},d=n(3836);function o(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:l(e),edges:s(e)};return r.Z(e.graph())||(t.value=a(e.graph())),t}function l(e){return d.Z(e.nodes(),(function(t){var n=e.node(t),i=e.parent(t),a={v:t};return r.Z(n)||(a.value=n),r.Z(i)||(a.parent=i),a}))}function s(e){return d.Z(e.edges(),(function(t){var n=e.edge(t),i={v:t.v,w:t.w};return r.Z(t.name)||(i.name=t.name),r.Z(n)||(i.value=n),i}))}n(5351)},6476:function(e,t,n){n.d(t,{r:function(){return X}});var r=n(3771),i=n(9368),a=n(6076),d=n(9339),o=n(5625),l=n(3506),s=n(7274);let c={},h={},g={};const f=(e,t)=>(d.l.trace("In isDecendant",t," ",e," = ",h[t].includes(e)),!!h[t].includes(e)),u=(e,t,n,r)=>{d.l.warn("Copying children of ",e,"root",r,"data",t.node(e),r);const i=t.children(e)||[];e!==r&&i.push(e),d.l.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach((i=>{if(t.children(i).length>0)u(i,t,n,r);else{const a=t.node(i);d.l.info("cp ",i," to ",r," with parent ",e),n.setNode(i,a),r!==t.parent(i)&&(d.l.warn("Setting parent",i,t.parent(i)),n.setParent(i,t.parent(i))),e!==r&&i!==e?(d.l.debug("Setting parent",i,e),n.setParent(i,e)):(d.l.info("In copy ",e,"root",r,"data",t.node(e),r),d.l.debug("Not Setting parent for node=",i,"cluster!==rootId",e!==r,"node!==clusterId",i!==e));const o=t.edges(i);d.l.debug("Copying Edges",o),o.forEach((i=>{d.l.info("Edge",i);const a=t.edge(i.v,i.w,i.name);d.l.info("Edge data",a,r);try{((e,t)=>(d.l.info("Decendants of ",t," is ",h[t]),d.l.info("Edge is ",e),e.v!==t&&e.w!==t&&(h[t]?h[t].includes(e.v)||f(e.v,t)||f(e.w,t)||h[t].includes(e.w):(d.l.debug("Tilt, ",t,",not in decendants"),!1))))(i,r)?(d.l.info("Copying as ",i.v,i.w,a,i.name),n.setEdge(i.v,i.w,a,i.name),d.l.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):d.l.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",e)}catch(e){d.l.error(e)}}))}d.l.debug("Removing node",i),t.removeNode(i)}))},w=(e,t)=>{const n=t.children(e);let r=[...n];for(const i of n)g[i]=e,r=[...r,...w(i,t)];return r},p=(e,t)=>{d.l.trace("Searching",e);const n=t.children(e);if(d.l.trace("Searching children of id ",e,n),n.length<1)return d.l.trace("This is a valid node",e),e;for(const r of n){const n=p(r,t);if(n)return d.l.trace("Found replacement for",e," => ",n),n}},v=e=>c[e]&&c[e].externalConnections&&c[e]?c[e].id:e,y=(e,t)=>{if(d.l.warn("extractor - ",t,i.c(e),e.children("D")),t>10)return void d.l.error("Bailing out");let n=e.nodes(),r=!1;for(const t of n){const n=e.children(t);r=r||n.length>0}if(r){d.l.debug("Nodes = ",n,t);for(const r of n)if(d.l.debug("Extracting node",r,c,c[r]&&!c[r].externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",t),c[r])if(!c[r].externalConnections&&e.children(r)&&e.children(r).length>0){d.l.warn("Cluster without external connections, without a parent and with children",r,t);let n="TB"===e.graph().rankdir?"LR":"TB";c[r]&&c[r].clusterData&&c[r].clusterData.dir&&(n=c[r].clusterData.dir,d.l.warn("Fixing dir",c[r].clusterData.dir,n));const a=new o.k({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));d.l.warn("Old graph before copy",i.c(e)),u(r,e,a,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:c[r].clusterData,labelText:c[r].labelText,graph:a}),d.l.warn("New graph after copy node: (",r,")",i.c(a)),d.l.debug("Old graph after copy",i.c(e))}else d.l.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!c[r].externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),t),d.l.debug(c);else d.l.debug("Not a cluster",r,t);n=e.nodes(),d.l.warn("New list of nodes",n);for(const r of n){const n=e.node(r);d.l.warn(" Now next level",r,n),n.clusterNode&&y(n.graph,t+1)}}else d.l.debug("Done, no node has children",e.nodes())},x=(e,t)=>{if(0===t.length)return[];let n=Object.assign(t);return t.forEach((t=>{const r=e.children(t),i=x(e,r);n=[...n,...i]})),n},m={rect:(e,t)=>{d.l.info("Creating subgraph rect for ",t.id,t);const n=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),r=n.insert("rect",":first-child"),i=(0,d.n)((0,d.c)().flowchart.htmlLabels),o=n.insert("g").attr("class","cluster-label"),c="markdown"===t.labelType?(0,l.c)(o,t.labelText,{style:t.labelStyle,useHtmlLabels:i}):o.node().appendChild((0,a.c)(t.labelText,t.labelStyle,void 0,!0));let h=c.getBBox();if((0,d.n)((0,d.c)().flowchart.htmlLabels)){const e=c.children[0],t=(0,s.Ys)(c);h=e.getBoundingClientRect(),t.attr("width",h.width),t.attr("height",h.height)}const g=0*t.padding,f=g/2,u=t.width<=h.width+g?h.width+g:t.width;t.width<=h.width+g?t.diff=(h.width-t.width)/2-t.padding/2:t.diff=-t.padding/2,d.l.trace("Data ",t,JSON.stringify(t)),r.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-u/2).attr("y",t.y-t.height/2-f).attr("width",u).attr("height",t.height+g),i?o.attr("transform","translate("+(t.x-h.width/2)+", "+(t.y-t.height/2)+")"):o.attr("transform","translate("+t.x+", "+(t.y-t.height/2)+")");const w=r.node().getBBox();return t.width=w.width,t.height=w.height,t.intersect=function(e){return(0,a.i)(t,e)},n},roundedWithTitle:(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),o=n.append("rect"),l=i.node().appendChild((0,a.c)(t.labelText,t.labelStyle,void 0,!0));let c=l.getBBox();if((0,d.n)((0,d.c)().flowchart.htmlLabels)){const e=l.children[0],t=(0,s.Ys)(l);c=e.getBoundingClientRect(),t.attr("width",c.width),t.attr("height",c.height)}c=l.getBBox();const h=0*t.padding,g=h/2,f=t.width<=c.width+t.padding?c.width+t.padding:t.width;t.width<=c.width+t.padding?t.diff=(c.width+0*t.padding-t.width)/2:t.diff=-t.padding/2,r.attr("class","outer").attr("x",t.x-f/2-g).attr("y",t.y-t.height/2-g).attr("width",f+h).attr("height",t.height+h),o.attr("class","inner").attr("x",t.x-f/2-g).attr("y",t.y-t.height/2-g+c.height-1).attr("width",f+h).attr("height",t.height+h-c.height-3),i.attr("transform","translate("+(t.x-c.width/2)+", "+(t.y-t.height/2-t.padding/3+((0,d.n)((0,d.c)().flowchart.htmlLabels)?5:3))+")");const u=r.node().getBBox();return t.height=u.height,t.intersect=function(e){return(0,a.i)(t,e)},n},noteGroup:(e,t)=>{const n=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=n.insert("rect",":first-child"),i=0*t.padding,d=i/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-d).attr("y",t.y-t.height/2-d).attr("width",t.width+i).attr("height",t.height+i).attr("fill","none");const o=r.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(e){return(0,a.i)(t,e)},n},divider:(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),i=0*t.padding,d=i/2;r.attr("class","divider").attr("x",t.x-t.width/2-d).attr("y",t.y-t.height/2).attr("width",t.width+i).attr("height",t.height+i);const o=r.node().getBBox();return t.width=o.width,t.height=o.height,t.diff=-t.padding/2,t.intersect=function(e){return(0,a.i)(t,e)},n}};let b={};const N=async(e,t,n,o)=>{d.l.info("Graph in recursive render: XXX",i.c(t),o);const l=t.graph().rankdir;d.l.trace("Dir in recursive render - dir:",l);const s=e.insert("g").attr("class","root");t.nodes()?d.l.info("Recursive render XXX",t.nodes()):d.l.info("No nodes found for",t),t.edges().length>0&&d.l.trace("Recursive edges",t.edge(t.edges()[0]));const h=s.insert("g").attr("class","clusters"),g=s.insert("g").attr("class","edgePaths"),f=s.insert("g").attr("class","edgeLabels"),u=s.insert("g").attr("class","nodes");await Promise.all(t.nodes().map((async function(e){const r=t.node(e);if(void 0!==o){const n=JSON.parse(JSON.stringify(o.clusterData));d.l.info("Setting data for cluster XXX (",e,") ",n,o),t.setNode(o.id,n),t.parent(e)||(d.l.trace("Setting parent",e,o.id),t.setParent(e,o.id,n))}if(d.l.info("(Insert) Node XXX"+e+": "+JSON.stringify(t.node(e))),r&&r.clusterNode){d.l.info("Cluster identified",e,r.width,t.node(e));const i=await N(u,r.graph,n,t.node(e)),o=i.elem;(0,a.u)(r,o),r.diff=i.diff||0,d.l.info("Node bounds (abc123)",e,r,r.width,r.x,r.y),(0,a.s)(o,r),d.l.warn("Recursive render complete ",o,r)}else t.children(e).length>0?(d.l.info("Cluster - the non recursive path XXX",e,r.id,r,t),d.l.info(p(r.id,t)),c[r.id]={id:p(r.id,t),node:r}):(d.l.info("Node - the non recursive path",e,r.id,r),await(0,a.e)(u,t.node(e),l))}))),t.edges().forEach((function(e){const n=t.edge(e.v,e.w,e.name);d.l.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),d.l.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(t.edge(e))),d.l.info("Fix",c,"ids:",e.v,e.w,"Translateing: ",c[e.v],c[e.w]),(0,a.f)(f,n)})),t.edges().forEach((function(e){d.l.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e))})),d.l.info("#############################################"),d.l.info("### Layout ###"),d.l.info("#############################################"),d.l.info(t),(0,r.bK)(t),d.l.info("Graph after layout:",i.c(t));let w=0;return(e=>x(e,e.children()))(t).forEach((function(e){const n=t.node(e);d.l.info("Position "+e+": "+JSON.stringify(t.node(e))),d.l.info("Position "+e+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n&&n.clusterNode?(0,a.p)(n):t.children(e).length>0?(((e,t)=>{d.l.trace("Inserting cluster");const n=t.shape||"rect";b[t.id]=m[n](e,t)})(h,n),c[n.id].node=n):(0,a.p)(n)})),t.edges().forEach((function(e){const r=t.edge(e);d.l.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(r),r);const i=(0,a.g)(g,e,r,c,n,t);(0,a.h)(r,i)})),t.nodes().forEach((function(e){const n=t.node(e);d.l.info(e,n.type,n.diff),"group"===n.type&&(w=n.diff)})),{elem:s,diff:w}},X=async(e,t,n,r,o)=>{(0,a.a)(e,n,r,o),(0,a.b)(),(0,a.d)(),b={},h={},g={},c={},d.l.warn("Graph at first:",i.c(t)),((e,t)=>{e?(d.l.debug("Opting in, graph "),e.nodes().forEach((function(t){e.children(t).length>0&&(d.l.warn("Cluster identified",t," Replacement id in edges: ",p(t,e)),h[t]=w(t,e),c[t]={id:p(t,e),clusterData:e.node(t)})})),e.nodes().forEach((function(t){const n=e.children(t),r=e.edges();n.length>0?(d.l.debug("Cluster identified",t,h),r.forEach((e=>{e.v!==t&&e.w!==t&&f(e.v,t)^f(e.w,t)&&(d.l.warn("Edge: ",e," leaves cluster ",t),d.l.warn("Decendants of XXX ",t,": ",h[t]),c[t].externalConnections=!0)}))):d.l.debug("Not a cluster ",t,h)})),e.edges().forEach((function(t){const n=e.edge(t);d.l.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),d.l.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e.edge(t)));let r=t.v,i=t.w;if(d.l.warn("Fix XXX",c,"ids:",t.v,t.w,"Translating: ",c[t.v]," --- ",c[t.w]),c[t.v]&&c[t.w]&&c[t.v]===c[t.w]){d.l.warn("Fixing and trixing link to self - removing XXX",t.v,t.w,t.name),d.l.warn("Fixing and trixing - removing XXX",t.v,t.w,t.name),r=v(t.v),i=v(t.w),e.removeEdge(t.v,t.w,t.name);const a=t.w+"---"+t.v;e.setNode(a,{domId:a,id:a,labelStyle:"",labelText:n.label,padding:0,shape:"labelRect",style:""});const o=JSON.parse(JSON.stringify(n)),l=JSON.parse(JSON.stringify(n));o.label="",o.arrowTypeEnd="none",l.label="",o.fromCluster=t.v,l.toCluster=t.v,e.setEdge(r,a,o,t.name+"-cyclic-special"),e.setEdge(a,i,l,t.name+"-cyclic-special")}else(c[t.v]||c[t.w])&&(d.l.warn("Fixing and trixing - removing XXX",t.v,t.w,t.name),r=v(t.v),i=v(t.w),e.removeEdge(t.v,t.w,t.name),r!==t.v&&(n.fromCluster=t.v),i!==t.w&&(n.toCluster=t.w),d.l.warn("Fix Replacing with XXX",r,i,t.name),e.setEdge(r,i,n,t.name))})),d.l.warn("Adjusted Graph",i.c(e)),y(e,0),d.l.trace(c)):d.l.debug("Opting out, no graph ")})(t),d.l.warn("Graph after:",i.c(t)),await N(e,t,r)}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [476],
+ {
+ 9368: function (e, t, n) {
+ n.d(t, {
+ c: function () {
+ return o;
+ },
+ });
+ var r = n(9360),
+ i = n(9103),
+ a = function (e) {
+ return (0, i.Z)(e, 4);
+ },
+ d = n(3836);
+ function o(e) {
+ var t = {
+ options: {
+ directed: e.isDirected(),
+ multigraph: e.isMultigraph(),
+ compound: e.isCompound(),
+ },
+ nodes: l(e),
+ edges: s(e),
+ };
+ return r.Z(e.graph()) || (t.value = a(e.graph())), t;
+ }
+ function l(e) {
+ return d.Z(e.nodes(), function (t) {
+ var n = e.node(t),
+ i = e.parent(t),
+ a = { v: t };
+ return r.Z(n) || (a.value = n), r.Z(i) || (a.parent = i), a;
+ });
+ }
+ function s(e) {
+ return d.Z(e.edges(), function (t) {
+ var n = e.edge(t),
+ i = { v: t.v, w: t.w };
+ return r.Z(t.name) || (i.name = t.name), r.Z(n) || (i.value = n), i;
+ });
+ }
+ n(5351);
+ },
+ 6476: function (e, t, n) {
+ n.d(t, {
+ r: function () {
+ return X;
+ },
+ });
+ var r = n(3771),
+ i = n(9368),
+ a = n(6076),
+ d = n(9339),
+ o = n(5625),
+ l = n(3506),
+ s = n(7274);
+ let c = {},
+ h = {},
+ g = {};
+ const f = (e, t) => (d.l.trace("In isDecendant", t, " ", e, " = ", h[t].includes(e)), !!h[t].includes(e)),
+ u = (e, t, n, r) => {
+ d.l.warn("Copying children of ", e, "root", r, "data", t.node(e), r);
+ const i = t.children(e) || [];
+ e !== r && i.push(e),
+ d.l.warn("Copying (nodes) clusterId", e, "nodes", i),
+ i.forEach((i) => {
+ if (t.children(i).length > 0) u(i, t, n, r);
+ else {
+ const a = t.node(i);
+ d.l.info("cp ", i, " to ", r, " with parent ", e),
+ n.setNode(i, a),
+ r !== t.parent(i) && (d.l.warn("Setting parent", i, t.parent(i)), n.setParent(i, t.parent(i))),
+ e !== r && i !== e
+ ? (d.l.debug("Setting parent", i, e), n.setParent(i, e))
+ : (d.l.info("In copy ", e, "root", r, "data", t.node(e), r),
+ d.l.debug("Not Setting parent for node=", i, "cluster!==rootId", e !== r, "node!==clusterId", i !== e));
+ const o = t.edges(i);
+ d.l.debug("Copying Edges", o),
+ o.forEach((i) => {
+ d.l.info("Edge", i);
+ const a = t.edge(i.v, i.w, i.name);
+ d.l.info("Edge data", a, r);
+ try {
+ ((e, t) => (
+ d.l.info("Decendants of ", t, " is ", h[t]),
+ d.l.info("Edge is ", e),
+ e.v !== t &&
+ e.w !== t &&
+ (h[t]
+ ? h[t].includes(e.v) || f(e.v, t) || f(e.w, t) || h[t].includes(e.w)
+ : (d.l.debug("Tilt, ", t, ",not in decendants"), !1))
+ ))(i, r)
+ ? (d.l.info("Copying as ", i.v, i.w, a, i.name),
+ n.setEdge(i.v, i.w, a, i.name),
+ d.l.info("newGraph edges ", n.edges(), n.edge(n.edges()[0])))
+ : d.l.info("Skipping copy of edge ", i.v, "--\x3e", i.w, " rootId: ", r, " clusterId:", e);
+ } catch (e) {
+ d.l.error(e);
+ }
+ });
+ }
+ d.l.debug("Removing node", i), t.removeNode(i);
+ });
+ },
+ w = (e, t) => {
+ const n = t.children(e);
+ let r = [...n];
+ for (const i of n) (g[i] = e), (r = [...r, ...w(i, t)]);
+ return r;
+ },
+ p = (e, t) => {
+ d.l.trace("Searching", e);
+ const n = t.children(e);
+ if ((d.l.trace("Searching children of id ", e, n), n.length < 1)) return d.l.trace("This is a valid node", e), e;
+ for (const r of n) {
+ const n = p(r, t);
+ if (n) return d.l.trace("Found replacement for", e, " => ", n), n;
+ }
+ },
+ v = (e) => (c[e] && c[e].externalConnections && c[e] ? c[e].id : e),
+ y = (e, t) => {
+ if ((d.l.warn("extractor - ", t, i.c(e), e.children("D")), t > 10)) return void d.l.error("Bailing out");
+ let n = e.nodes(),
+ r = !1;
+ for (const t of n) {
+ const n = e.children(t);
+ r = r || n.length > 0;
+ }
+ if (r) {
+ d.l.debug("Nodes = ", n, t);
+ for (const r of n)
+ if (
+ (d.l.debug("Extracting node", r, c, c[r] && !c[r].externalConnections, !e.parent(r), e.node(r), e.children("D"), " Depth ", t), c[r])
+ )
+ if (!c[r].externalConnections && e.children(r) && e.children(r).length > 0) {
+ d.l.warn("Cluster without external connections, without a parent and with children", r, t);
+ let n = "TB" === e.graph().rankdir ? "LR" : "TB";
+ c[r] && c[r].clusterData && c[r].clusterData.dir && ((n = c[r].clusterData.dir), d.l.warn("Fixing dir", c[r].clusterData.dir, n));
+ const a = new o.k({ multigraph: !0, compound: !0 })
+ .setGraph({ rankdir: n, nodesep: 50, ranksep: 50, marginx: 8, marginy: 8 })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ d.l.warn("Old graph before copy", i.c(e)),
+ u(r, e, a, r),
+ e.setNode(r, {
+ clusterNode: !0,
+ id: r,
+ clusterData: c[r].clusterData,
+ labelText: c[r].labelText,
+ graph: a,
+ }),
+ d.l.warn("New graph after copy node: (", r, ")", i.c(a)),
+ d.l.debug("Old graph after copy", i.c(e));
+ } else
+ d.l.warn(
+ "Cluster ** ",
+ r,
+ " **not meeting the criteria !externalConnections:",
+ !c[r].externalConnections,
+ " no parent: ",
+ !e.parent(r),
+ " children ",
+ e.children(r) && e.children(r).length > 0,
+ e.children("D"),
+ t,
+ ),
+ d.l.debug(c);
+ else d.l.debug("Not a cluster", r, t);
+ (n = e.nodes()), d.l.warn("New list of nodes", n);
+ for (const r of n) {
+ const n = e.node(r);
+ d.l.warn(" Now next level", r, n), n.clusterNode && y(n.graph, t + 1);
+ }
+ } else d.l.debug("Done, no node has children", e.nodes());
+ },
+ x = (e, t) => {
+ if (0 === t.length) return [];
+ let n = Object.assign(t);
+ return (
+ t.forEach((t) => {
+ const r = e.children(t),
+ i = x(e, r);
+ n = [...n, ...i];
+ }),
+ n
+ );
+ },
+ m = {
+ rect: (e, t) => {
+ d.l.info("Creating subgraph rect for ", t.id, t);
+ const n = e
+ .insert("g")
+ .attr("class", "cluster" + (t.class ? " " + t.class : ""))
+ .attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = (0, d.n)((0, d.c)().flowchart.htmlLabels),
+ o = n.insert("g").attr("class", "cluster-label"),
+ c =
+ "markdown" === t.labelType
+ ? (0, l.c)(o, t.labelText, { style: t.labelStyle, useHtmlLabels: i })
+ : o.node().appendChild((0, a.c)(t.labelText, t.labelStyle, void 0, !0));
+ let h = c.getBBox();
+ if ((0, d.n)((0, d.c)().flowchart.htmlLabels)) {
+ const e = c.children[0],
+ t = (0, s.Ys)(c);
+ (h = e.getBoundingClientRect()), t.attr("width", h.width), t.attr("height", h.height);
+ }
+ const g = 0 * t.padding,
+ f = g / 2,
+ u = t.width <= h.width + g ? h.width + g : t.width;
+ t.width <= h.width + g ? (t.diff = (h.width - t.width) / 2 - t.padding / 2) : (t.diff = -t.padding / 2),
+ d.l.trace("Data ", t, JSON.stringify(t)),
+ r
+ .attr("style", t.style)
+ .attr("rx", t.rx)
+ .attr("ry", t.ry)
+ .attr("x", t.x - u / 2)
+ .attr("y", t.y - t.height / 2 - f)
+ .attr("width", u)
+ .attr("height", t.height + g),
+ i
+ ? o.attr("transform", "translate(" + (t.x - h.width / 2) + ", " + (t.y - t.height / 2) + ")")
+ : o.attr("transform", "translate(" + t.x + ", " + (t.y - t.height / 2) + ")");
+ const w = r.node().getBBox();
+ return (
+ (t.width = w.width),
+ (t.height = w.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ roundedWithTitle: (e, t) => {
+ const n = e.insert("g").attr("class", t.classes).attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = n.insert("g").attr("class", "cluster-label"),
+ o = n.append("rect"),
+ l = i.node().appendChild((0, a.c)(t.labelText, t.labelStyle, void 0, !0));
+ let c = l.getBBox();
+ if ((0, d.n)((0, d.c)().flowchart.htmlLabels)) {
+ const e = l.children[0],
+ t = (0, s.Ys)(l);
+ (c = e.getBoundingClientRect()), t.attr("width", c.width), t.attr("height", c.height);
+ }
+ c = l.getBBox();
+ const h = 0 * t.padding,
+ g = h / 2,
+ f = t.width <= c.width + t.padding ? c.width + t.padding : t.width;
+ t.width <= c.width + t.padding ? (t.diff = (c.width + 0 * t.padding - t.width) / 2) : (t.diff = -t.padding / 2),
+ r
+ .attr("class", "outer")
+ .attr("x", t.x - f / 2 - g)
+ .attr("y", t.y - t.height / 2 - g)
+ .attr("width", f + h)
+ .attr("height", t.height + h),
+ o
+ .attr("class", "inner")
+ .attr("x", t.x - f / 2 - g)
+ .attr("y", t.y - t.height / 2 - g + c.height - 1)
+ .attr("width", f + h)
+ .attr("height", t.height + h - c.height - 3),
+ i.attr(
+ "transform",
+ "translate(" +
+ (t.x - c.width / 2) +
+ ", " +
+ (t.y - t.height / 2 - t.padding / 3 + ((0, d.n)((0, d.c)().flowchart.htmlLabels) ? 5 : 3)) +
+ ")",
+ );
+ const u = r.node().getBBox();
+ return (
+ (t.height = u.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ noteGroup: (e, t) => {
+ const n = e.insert("g").attr("class", "note-cluster").attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = 0 * t.padding,
+ d = i / 2;
+ r.attr("rx", t.rx)
+ .attr("ry", t.ry)
+ .attr("x", t.x - t.width / 2 - d)
+ .attr("y", t.y - t.height / 2 - d)
+ .attr("width", t.width + i)
+ .attr("height", t.height + i)
+ .attr("fill", "none");
+ const o = r.node().getBBox();
+ return (
+ (t.width = o.width),
+ (t.height = o.height),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ divider: (e, t) => {
+ const n = e.insert("g").attr("class", t.classes).attr("id", t.id),
+ r = n.insert("rect", ":first-child"),
+ i = 0 * t.padding,
+ d = i / 2;
+ r.attr("class", "divider")
+ .attr("x", t.x - t.width / 2 - d)
+ .attr("y", t.y - t.height / 2)
+ .attr("width", t.width + i)
+ .attr("height", t.height + i);
+ const o = r.node().getBBox();
+ return (
+ (t.width = o.width),
+ (t.height = o.height),
+ (t.diff = -t.padding / 2),
+ (t.intersect = function (e) {
+ return (0, a.i)(t, e);
+ }),
+ n
+ );
+ },
+ };
+ let b = {};
+ const N = async (e, t, n, o) => {
+ d.l.info("Graph in recursive render: XXX", i.c(t), o);
+ const l = t.graph().rankdir;
+ d.l.trace("Dir in recursive render - dir:", l);
+ const s = e.insert("g").attr("class", "root");
+ t.nodes() ? d.l.info("Recursive render XXX", t.nodes()) : d.l.info("No nodes found for", t),
+ t.edges().length > 0 && d.l.trace("Recursive edges", t.edge(t.edges()[0]));
+ const h = s.insert("g").attr("class", "clusters"),
+ g = s.insert("g").attr("class", "edgePaths"),
+ f = s.insert("g").attr("class", "edgeLabels"),
+ u = s.insert("g").attr("class", "nodes");
+ await Promise.all(
+ t.nodes().map(async function (e) {
+ const r = t.node(e);
+ if (void 0 !== o) {
+ const n = JSON.parse(JSON.stringify(o.clusterData));
+ d.l.info("Setting data for cluster XXX (", e, ") ", n, o),
+ t.setNode(o.id, n),
+ t.parent(e) || (d.l.trace("Setting parent", e, o.id), t.setParent(e, o.id, n));
+ }
+ if ((d.l.info("(Insert) Node XXX" + e + ": " + JSON.stringify(t.node(e))), r && r.clusterNode)) {
+ d.l.info("Cluster identified", e, r.width, t.node(e));
+ const i = await N(u, r.graph, n, t.node(e)),
+ o = i.elem;
+ (0, a.u)(r, o),
+ (r.diff = i.diff || 0),
+ d.l.info("Node bounds (abc123)", e, r, r.width, r.x, r.y),
+ (0, a.s)(o, r),
+ d.l.warn("Recursive render complete ", o, r);
+ } else
+ t.children(e).length > 0
+ ? (d.l.info("Cluster - the non recursive path XXX", e, r.id, r, t), d.l.info(p(r.id, t)), (c[r.id] = { id: p(r.id, t), node: r }))
+ : (d.l.info("Node - the non recursive path", e, r.id, r), await (0, a.e)(u, t.node(e), l));
+ }),
+ ),
+ t.edges().forEach(function (e) {
+ const n = t.edge(e.v, e.w, e.name);
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e)),
+ d.l.info("Edge " + e.v + " -> " + e.w + ": ", e, " ", JSON.stringify(t.edge(e))),
+ d.l.info("Fix", c, "ids:", e.v, e.w, "Translateing: ", c[e.v], c[e.w]),
+ (0, a.f)(f, n);
+ }),
+ t.edges().forEach(function (e) {
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
+ }),
+ d.l.info("#############################################"),
+ d.l.info("### Layout ###"),
+ d.l.info("#############################################"),
+ d.l.info(t),
+ (0, r.bK)(t),
+ d.l.info("Graph after layout:", i.c(t));
+ let w = 0;
+ return (
+ ((e) => x(e, e.children()))(t).forEach(function (e) {
+ const n = t.node(e);
+ d.l.info("Position " + e + ": " + JSON.stringify(t.node(e))),
+ d.l.info("Position " + e + ": (" + n.x, "," + n.y, ") width: ", n.width, " height: ", n.height),
+ n && n.clusterNode
+ ? (0, a.p)(n)
+ : t.children(e).length > 0
+ ? (((e, t) => {
+ d.l.trace("Inserting cluster");
+ const n = t.shape || "rect";
+ b[t.id] = m[n](e, t);
+ })(h, n),
+ (c[n.id].node = n))
+ : (0, a.p)(n);
+ }),
+ t.edges().forEach(function (e) {
+ const r = t.edge(e);
+ d.l.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(r), r);
+ const i = (0, a.g)(g, e, r, c, n, t);
+ (0, a.h)(r, i);
+ }),
+ t.nodes().forEach(function (e) {
+ const n = t.node(e);
+ d.l.info(e, n.type, n.diff), "group" === n.type && (w = n.diff);
+ }),
+ { elem: s, diff: w }
+ );
+ },
+ X = async (e, t, n, r, o) => {
+ (0, a.a)(e, n, r, o),
+ (0, a.b)(),
+ (0, a.d)(),
+ (b = {}),
+ (h = {}),
+ (g = {}),
+ (c = {}),
+ d.l.warn("Graph at first:", i.c(t)),
+ ((e, t) => {
+ e
+ ? (d.l.debug("Opting in, graph "),
+ e.nodes().forEach(function (t) {
+ e.children(t).length > 0 &&
+ (d.l.warn("Cluster identified", t, " Replacement id in edges: ", p(t, e)),
+ (h[t] = w(t, e)),
+ (c[t] = { id: p(t, e), clusterData: e.node(t) }));
+ }),
+ e.nodes().forEach(function (t) {
+ const n = e.children(t),
+ r = e.edges();
+ n.length > 0
+ ? (d.l.debug("Cluster identified", t, h),
+ r.forEach((e) => {
+ e.v !== t &&
+ e.w !== t &&
+ f(e.v, t) ^ f(e.w, t) &&
+ (d.l.warn("Edge: ", e, " leaves cluster ", t),
+ d.l.warn("Decendants of XXX ", t, ": ", h[t]),
+ (c[t].externalConnections = !0));
+ }))
+ : d.l.debug("Not a cluster ", t, h);
+ }),
+ e.edges().forEach(function (t) {
+ const n = e.edge(t);
+ d.l.warn("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(t)),
+ d.l.warn("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(e.edge(t)));
+ let r = t.v,
+ i = t.w;
+ if ((d.l.warn("Fix XXX", c, "ids:", t.v, t.w, "Translating: ", c[t.v], " --- ", c[t.w]), c[t.v] && c[t.w] && c[t.v] === c[t.w])) {
+ d.l.warn("Fixing and trixing link to self - removing XXX", t.v, t.w, t.name),
+ d.l.warn("Fixing and trixing - removing XXX", t.v, t.w, t.name),
+ (r = v(t.v)),
+ (i = v(t.w)),
+ e.removeEdge(t.v, t.w, t.name);
+ const a = t.w + "---" + t.v;
+ e.setNode(a, {
+ domId: a,
+ id: a,
+ labelStyle: "",
+ labelText: n.label,
+ padding: 0,
+ shape: "labelRect",
+ style: "",
+ });
+ const o = JSON.parse(JSON.stringify(n)),
+ l = JSON.parse(JSON.stringify(n));
+ (o.label = ""),
+ (o.arrowTypeEnd = "none"),
+ (l.label = ""),
+ (o.fromCluster = t.v),
+ (l.toCluster = t.v),
+ e.setEdge(r, a, o, t.name + "-cyclic-special"),
+ e.setEdge(a, i, l, t.name + "-cyclic-special");
+ } else
+ (c[t.v] || c[t.w]) &&
+ (d.l.warn("Fixing and trixing - removing XXX", t.v, t.w, t.name),
+ (r = v(t.v)),
+ (i = v(t.w)),
+ e.removeEdge(t.v, t.w, t.name),
+ r !== t.v && (n.fromCluster = t.v),
+ i !== t.w && (n.toCluster = t.w),
+ d.l.warn("Fix Replacing with XXX", r, i, t.name),
+ e.setEdge(r, i, n, t.name));
+ }),
+ d.l.warn("Adjusted Graph", i.c(e)),
+ y(e, 0),
+ d.l.trace(c))
+ : d.l.debug("Opting out, no graph ");
+ })(t),
+ d.l.warn("Graph after:", i.c(t)),
+ await N(e, t, r);
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js
index 6f9f0e345..d0d6edf25 100644
--- a/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js
@@ -1 +1,2919 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[506],{3506:function(e,n,t){t.d(n,{c:function(){return on}});var r={};t.r(r),t.d(r,{attentionMarkers:function(){return Le},contentInitial:function(){return Ce},disable:function(){return Me},document:function(){return we},flow:function(){return ze},flowInitial:function(){return Te},insideSpan:function(){return _e},string:function(){return De},text:function(){return Be}});var i=t(9339);const u={};function o(e,n,t){if(function(e){return Boolean(e&&"object"==typeof e)}(e)){if("value"in e)return"html"!==e.type||t?e.value:"";if(n&&"alt"in e&&e.alt)return e.alt;if("children"in e)return c(e.children,n,t)}return Array.isArray(e)?c(e,n,t):""}function c(e,n,t){const r=[];let i=-1;for(;++ii?0:i+n:n>i?i:n,t=t>0?t:0,r.length<1e4)u=Array.from(r),u.unshift(n,t),e.splice(...u);else for(t&&e.splice(n,t);o0?(s(e,e.length,0,n),e):n}const a={}.hasOwnProperty;function f(e,n){let t;for(t in n){const r=(a.call(e,t)?e[t]:void 0)||(e[t]={}),i=n[t];let u;if(i)for(u in i){a.call(r,u)||(r[u]=[]);const e=i[u];d(r[u],Array.isArray(e)?e:e?[e]:[])}}}function d(e,n){let t=-1;const r=[];for(;++tu))return;const t=n.events.length;let i,c,l=t;for(;l--;)if("exit"===n.events[l][0]&&"chunkFlow"===n.events[l][1].type){if(i){c=n.events[l][1].end;break}i=!0}for(k(o),e=t;er;){const r=t[i];n.containerState=r[1],r[0].exit.call(n,e)}t.length=r}function y(){r.write([null]),i=void 0,r=void 0,n.containerState._closeFlow=void 0}}},T={tokenize:function(e,n,t){return I(e,e.attempt(this.parser.constructs.document,n,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}},z={tokenize:function(e,n,t){return function(n){return v(n)?I(e,r,"linePrefix")(n):r(n)};function r(e){return null===e||F(e)?n(e):t(e)}},partial:!0};function D(e){const n={};let t,r,i,u,o,c,l,a=-1;for(;++a=4?n(i):e.interrupt(r.parser.constructs.flow,t,n)(i)}},partial:!0},M={tokenize:function(e){const n=this,t=e.attempt(z,(function(r){if(null!==r)return e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),n.currentConstruct=void 0,t;e.consume(r)}),e.attempt(this.parser.constructs.flowInitial,r,I(e,e.attempt(this.parser.constructs.flow,r,e.attempt(_,r)),"linePrefix")));return t;function r(r){if(null!==r)return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),n.currentConstruct=void 0,t;e.consume(r)}}},P={resolveAll:R()},O=H("string"),j=H("text");function H(e){return{tokenize:function(n){const t=this,r=this.parser.constructs[e],i=n.attempt(r,u,o);return u;function u(e){return s(e)?i(e):o(e)}function o(e){if(null!==e)return n.enter("data"),n.consume(e),c;n.consume(e)}function c(e){return s(e)?(n.exit("data"),i(e)):(n.consume(e),c)}function s(e){if(null===e)return!0;const n=r[e];let i=-1;if(n)for(;++i-1){const e=o[0];"string"==typeof e?o[0]=e.slice(r):o.shift()}u>0&&o.push(e[i].slice(0,u))}return o}(o,e)}function g(){const{line:e,column:n,offset:t,_index:i,_bufferIndex:u}=r;return{line:e,column:n,offset:t,_index:i,_bufferIndex:u}}function x(e){a=void 0,h=e,p=p(e)}function k(e,n){n.restore()}function y(e,n){return function(t,i,u){let o,s,l,h;return Array.isArray(t)?m(t):"tokenize"in t?m([t]):(p=t,function(e){const n=null!==e&&p[e],t=null!==e&&p.null;return m([...Array.isArray(n)?n:n?[n]:[],...Array.isArray(t)?t:t?[t]:[]])(e)});var p;function m(e){return o=e,s=0,0===e.length?u:x(e[s])}function x(e){return function(t){return h=function(){const e=g(),n=d.previous,t=d.currentConstruct,i=d.events.length,u=Array.from(c);return{restore:function(){r=e,d.previous=n,d.currentConstruct=t,d.events.length=i,c=u,v()},from:i}}(),l=e,e.partial||(d.currentConstruct=e),e.name&&d.parser.constructs.disable.null.includes(e.name)?y():e.tokenize.call(n?Object.assign(Object.create(d),n):d,f,k,y)(t)}}function k(n){return a=!0,e(l,h),i}function y(e){return a=!0,h.restore(),++s=3&&(null===u||F(u))?(e.exit("thematicBreak"),n(u)):t(u)}function o(n){return n===r?(e.consume(n),i++,o):(e.exit("thematicBreakSequence"),v(n)?I(e,u,"whitespace")(n):u(n))}}},U={name:"list",tokenize:function(e,n,t){const r=this,i=r.events[r.events.length-1];let u=i&&"linePrefix"===i[1].type?i[2].sliceSerialize(i[1],!0).length:0,o=0;return function(n){const i=r.containerState.type||(42===n||43===n||45===n?"listUnordered":"listOrdered");if("listUnordered"===i?!r.containerState.marker||n===r.containerState.marker:x(n)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),"listUnordered"===i)return e.enter("listItemPrefix"),42===n||45===n?e.check(N,t,s)(n):s(n);if(!r.interrupt||49===n)return e.enter("listItemPrefix"),e.enter("listItemValue"),c(n)}return t(n)};function c(n){return x(n)&&++o<10?(e.consume(n),c):(!r.interrupt||o<2)&&(r.containerState.marker?n===r.containerState.marker:41===n||46===n)?(e.exit("listItemValue"),s(n)):t(n)}function s(n){return e.enter("listItemMarker"),e.consume(n),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||n,e.check(z,r.interrupt?t:l,e.attempt($,f,a))}function l(e){return r.containerState.initialBlankLine=!0,u++,f(e)}function a(n){return v(n)?(e.enter("listItemPrefixWhitespace"),e.consume(n),e.exit("listItemPrefixWhitespace"),f):t(n)}function f(t){return r.containerState.size=u+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,n(t)}},continuation:{tokenize:function(e,n,t){const r=this;return r.containerState._closeFlow=void 0,e.check(z,(function(t){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,I(e,n,"listItemIndent",r.containerState.size+1)(t)}),(function(t){return r.containerState.furtherBlankLines||!v(t)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,i(t)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(W,n,i)(t))}));function i(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,I(e,e.attempt(U,n,t),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(i)}}},exit:function(e){e.exit(this.containerState.type)}},$={tokenize:function(e,n,t){const r=this;return I(e,(function(e){const i=r.events[r.events.length-1];return!v(e)&&i&&"listItemPrefixWhitespace"===i[1].type?n(e):t(e)}),"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},W={tokenize:function(e,n,t){const r=this;return I(e,(function(e){const i=r.events[r.events.length-1];return i&&"listItemIndent"===i[1].type&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?n(e):t(e)}),"listItemIndent",r.containerState.size+1)},partial:!0},Z={name:"blockQuote",tokenize:function(e,n,t){const r=this;return function(n){if(62===n){const t=r.containerState;return t.open||(e.enter("blockQuote",{_container:!0}),t.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(n),e.exit("blockQuoteMarker"),i}return t(n)};function i(t){return v(t)?(e.enter("blockQuotePrefixWhitespace"),e.consume(t),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),n):(e.exit("blockQuotePrefix"),n(t))}},continuation:{tokenize:function(e,n,t){const r=this;return function(n){return v(n)?I(e,i,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(n):i(n)};function i(r){return e.attempt(Z,n,t)(r)}}},exit:function(e){e.exit("blockQuote")}};function Y(e,n,t,r,i,u,o,c,s){const l=s||Number.POSITIVE_INFINITY;let a=0;return function(n){return 60===n?(e.enter(r),e.enter(i),e.enter(u),e.consume(n),e.exit(u),f):null===n||32===n||41===n||g(n)?t(n):(e.enter(r),e.enter(o),e.enter(c),e.enter("chunkString",{contentType:"string"}),p(n))};function f(t){return 62===t?(e.enter(u),e.consume(t),e.exit(u),e.exit(i),e.exit(r),n):(e.enter(c),e.enter("chunkString",{contentType:"string"}),d(t))}function d(n){return 62===n?(e.exit("chunkString"),e.exit(c),f(n)):null===n||60===n||F(n)?t(n):(e.consume(n),92===n?h:d)}function h(n){return 60===n||62===n||92===n?(e.consume(n),d):d(n)}function p(i){return a||null!==i&&41!==i&&!b(i)?a999||null===f||91===f||93===f&&!c||94===f&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs?t(f):93===f?(e.exit(u),e.enter(i),e.consume(f),e.exit(i),e.exit(r),n):F(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),l):(e.enter("chunkString",{contentType:"string"}),a(f))}function a(n){return null===n||91===n||93===n||F(n)||s++>999?(e.exit("chunkString"),l(n)):(e.consume(n),c||(c=!v(n)),92===n?f:a)}function f(n){return 91===n||92===n||93===n?(e.consume(n),s++,a):a(n)}}function J(e,n,t,r,i,u){let o;return function(n){return 34===n||39===n||40===n?(e.enter(r),e.enter(i),e.consume(n),e.exit(i),o=40===n?41:n,c):t(n)};function c(t){return t===o?(e.enter(i),e.consume(t),e.exit(i),e.exit(r),n):(e.enter(u),s(t))}function s(n){return n===o?(e.exit(u),c(o)):null===n?t(n):F(n)?(e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),I(e,s,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),l(n))}function l(n){return n===o||null===n||F(n)?(e.exit("chunkString"),s(n)):(e.consume(n),92===n?a:l)}function a(n){return n===o||92===n?(e.consume(n),l):l(n)}}function K(e,n){let t;return function r(i){return F(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t=!0,r):v(i)?I(e,r,t?"linePrefix":"lineSuffix")(i):n(i)}}function X(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ee={name:"definition",tokenize:function(e,n,t){const r=this;let i;return function(n){return e.enter("definition"),function(n){return G.call(r,e,u,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(n)}(n)};function u(n){return i=X(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),58===n?(e.enter("definitionMarker"),e.consume(n),e.exit("definitionMarker"),o):t(n)}function o(n){return b(n)?K(e,c)(n):c(n)}function c(n){return Y(e,s,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(n)}function s(n){return e.attempt(ne,l,l)(n)}function l(n){return v(n)?I(e,a,"whitespace")(n):a(n)}function a(u){return null===u||F(u)?(e.exit("definition"),r.parser.defined.push(i),n(u)):t(u)}}},ne={tokenize:function(e,n,t){return function(n){return b(n)?K(e,r)(n):t(n)};function r(n){return J(e,i,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(n)}function i(n){return v(n)?I(e,u,"whitespace")(n):u(n)}function u(e){return null===e||F(e)?n(e):t(e)}},partial:!0},te={name:"codeIndented",tokenize:function(e,n,t){const r=this;return function(n){return e.enter("codeIndented"),I(e,i,"linePrefix",5)(n)};function i(e){const n=r.events[r.events.length-1];return n&&"linePrefix"===n[1].type&&n[2].sliceSerialize(n[1],!0).length>=4?u(e):t(e)}function u(n){return null===n?c(n):F(n)?e.attempt(re,u,c)(n):(e.enter("codeFlowValue"),o(n))}function o(n){return null===n||F(n)?(e.exit("codeFlowValue"),u(n)):(e.consume(n),o)}function c(t){return e.exit("codeIndented"),n(t)}}},re={tokenize:function(e,n,t){const r=this;return i;function i(n){return r.parser.lazy[r.now().line]?t(n):F(n)?(e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),i):I(e,u,"linePrefix",5)(n)}function u(e){const u=r.events[r.events.length-1];return u&&"linePrefix"===u[1].type&&u[2].sliceSerialize(u[1],!0).length>=4?n(e):F(e)?i(e):t(e)}},partial:!0},ie={name:"headingAtx",tokenize:function(e,n,t){let r=0;return function(n){return e.enter("atxHeading"),function(n){return e.enter("atxHeadingSequence"),i(n)}(n)};function i(n){return 35===n&&r++<6?(e.consume(n),i):null===n||b(n)?(e.exit("atxHeadingSequence"),u(n)):t(n)}function u(t){return 35===t?(e.enter("atxHeadingSequence"),o(t)):null===t||F(t)?(e.exit("atxHeading"),n(t)):v(t)?I(e,u,"whitespace")(t):(e.enter("atxHeadingText"),c(t))}function o(n){return 35===n?(e.consume(n),o):(e.exit("atxHeadingSequence"),u(n))}function c(n){return null===n||35===n||b(n)?(e.exit("atxHeadingText"),u(n)):(e.consume(n),c)}},resolve:function(e,n){let t,r,i=e.length-2,u=3;return"whitespace"===e[u][1].type&&(u+=2),i-2>u&&"whitespace"===e[i][1].type&&(i-=2),"atxHeadingSequence"===e[i][1].type&&(u===i-1||i-4>u&&"whitespace"===e[i-2][1].type)&&(i-=u+1===i?2:4),i>u&&(t={type:"atxHeadingText",start:e[u][1].start,end:e[i][1].end},r={type:"chunkText",start:e[u][1].start,end:e[i][1].end,contentType:"text"},s(e,u,i-u+1,[["enter",t,n],["enter",r,n],["exit",r,n],["exit",t,n]])),e}},ue={name:"setextUnderline",tokenize:function(e,n,t){const r=this;let i;return function(n){let o,c=r.events.length;for(;c--;)if("lineEnding"!==r.events[c][1].type&&"linePrefix"!==r.events[c][1].type&&"content"!==r.events[c][1].type){o="paragraph"===r.events[c][1].type;break}return r.parser.lazy[r.now().line]||!r.interrupt&&!o?t(n):(e.enter("setextHeadingLine"),i=n,function(n){return e.enter("setextHeadingLineSequence"),u(n)}(n))};function u(n){return n===i?(e.consume(n),u):(e.exit("setextHeadingLineSequence"),v(n)?I(e,o,"lineSuffix")(n):o(n))}function o(r){return null===r||F(r)?(e.exit("setextHeadingLine"),n(r)):t(r)}},resolveTo:function(e,n){let t,r,i,u=e.length;for(;u--;)if("enter"===e[u][0]){if("content"===e[u][1].type){t=u;break}"paragraph"===e[u][1].type&&(r=u)}else"content"===e[u][1].type&&e.splice(u,1),i||"definition"!==e[u][1].type||(i=u);const o={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[r][1].type="setextHeadingText",i?(e.splice(r,0,["enter",o,n]),e.splice(i+1,0,["exit",e[t][1],n]),e[t][1].end=Object.assign({},e[i][1].end)):e[t][1]=o,e.push(["exit",o,n]),e}},oe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ce=["pre","script","style","textarea"],se={name:"htmlFlow",tokenize:function(e,n,t){const r=this;let i,u,o,c,s;return function(n){return function(n){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(n),l}(n)};function l(c){return 33===c?(e.consume(c),a):47===c?(e.consume(c),u=!0,m):63===c?(e.consume(c),i=3,r.interrupt?n:H):h(c)?(e.consume(c),o=String.fromCharCode(c),g):t(c)}function a(u){return 45===u?(e.consume(u),i=2,f):91===u?(e.consume(u),i=5,c=0,d):h(u)?(e.consume(u),i=4,r.interrupt?n:H):t(u)}function f(i){return 45===i?(e.consume(i),r.interrupt?n:H):t(i)}function d(i){return i==="CDATA[".charCodeAt(c++)?(e.consume(i),6===c?r.interrupt?n:D:d):t(i)}function m(n){return h(n)?(e.consume(n),o=String.fromCharCode(n),g):t(n)}function g(c){if(null===c||47===c||62===c||b(c)){const s=47===c,l=o.toLowerCase();return s||u||!ce.includes(l)?oe.includes(o.toLowerCase())?(i=6,s?(e.consume(c),x):r.interrupt?n(c):D(c)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?t(c):u?k(c):y(c)):(i=1,r.interrupt?n(c):D(c))}return 45===c||p(c)?(e.consume(c),o+=String.fromCharCode(c),g):t(c)}function x(i){return 62===i?(e.consume(i),r.interrupt?n:D):t(i)}function k(n){return v(n)?(e.consume(n),k):T(n)}function y(n){return 47===n?(e.consume(n),T):58===n||95===n||h(n)?(e.consume(n),S):v(n)?(e.consume(n),y):T(n)}function S(n){return 45===n||46===n||58===n||95===n||p(n)?(e.consume(n),S):E(n)}function E(n){return 61===n?(e.consume(n),A):v(n)?(e.consume(n),E):y(n)}function A(n){return null===n||60===n||61===n||62===n||96===n?t(n):34===n||39===n?(e.consume(n),s=n,I):v(n)?(e.consume(n),A):w(n)}function I(n){return n===s?(e.consume(n),s=null,C):null===n||F(n)?t(n):(e.consume(n),I)}function w(n){return null===n||34===n||39===n||47===n||60===n||61===n||62===n||96===n||b(n)?E(n):(e.consume(n),w)}function C(e){return 47===e||62===e||v(e)?y(e):t(e)}function T(n){return 62===n?(e.consume(n),z):t(n)}function z(n){return null===n||F(n)?D(n):v(n)?(e.consume(n),z):t(n)}function D(n){return 45===n&&2===i?(e.consume(n),M):60===n&&1===i?(e.consume(n),P):62===n&&4===i?(e.consume(n),R):63===n&&3===i?(e.consume(n),H):93===n&&5===i?(e.consume(n),j):!F(n)||6!==i&&7!==i?null===n||F(n)?(e.exit("htmlFlowData"),B(n)):(e.consume(n),D):(e.exit("htmlFlowData"),e.check(le,q,B)(n))}function B(n){return e.check(ae,_,q)(n)}function _(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),L}function L(n){return null===n||F(n)?B(n):(e.enter("htmlFlowData"),D(n))}function M(n){return 45===n?(e.consume(n),H):D(n)}function P(n){return 47===n?(e.consume(n),o="",O):D(n)}function O(n){if(62===n){const t=o.toLowerCase();return ce.includes(t)?(e.consume(n),R):D(n)}return h(n)&&o.length<8?(e.consume(n),o+=String.fromCharCode(n),O):D(n)}function j(n){return 93===n?(e.consume(n),H):D(n)}function H(n){return 62===n?(e.consume(n),R):45===n&&2===i?(e.consume(n),H):D(n)}function R(n){return null===n||F(n)?(e.exit("htmlFlowData"),q(n)):(e.consume(n),R)}function q(t){return e.exit("htmlFlow"),n(t)}},resolveTo:function(e){let n=e.length;for(;n--&&("enter"!==e[n][0]||"htmlFlow"!==e[n][1].type););return n>1&&"linePrefix"===e[n-2][1].type&&(e[n][1].start=e[n-2][1].start,e[n+1][1].start=e[n-2][1].start,e.splice(n-2,2)),e},concrete:!0},le={tokenize:function(e,n,t){return function(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(z,n,t)}},partial:!0},ae={tokenize:function(e,n,t){const r=this;return function(n){return F(n)?(e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),i):t(n)};function i(e){return r.parser.lazy[r.now().line]?t(e):n(e)}},partial:!0},fe={tokenize:function(e,n,t){const r=this;return function(n){return null===n?t(n):(e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),i)};function i(e){return r.parser.lazy[r.now().line]?t(e):n(e)}},partial:!0},de={name:"codeFenced",tokenize:function(e,n,t){const r=this,i={tokenize:function(e,n,t){let i=0;return function(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),o};function o(n){return e.enter("codeFencedFence"),v(n)?I(e,s,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(n):s(n)}function s(n){return n===u?(e.enter("codeFencedFenceSequence"),l(n)):t(n)}function l(n){return n===u?(i++,e.consume(n),l):i>=c?(e.exit("codeFencedFenceSequence"),v(n)?I(e,a,"whitespace")(n):a(n)):t(n)}function a(r){return null===r||F(r)?(e.exit("codeFencedFence"),n(r)):t(r)}},partial:!0};let u,o=0,c=0;return function(n){return function(n){const t=r.events[r.events.length-1];return o=t&&"linePrefix"===t[1].type?t[2].sliceSerialize(t[1],!0).length:0,u=n,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),s(n)}(n)};function s(n){return n===u?(c++,e.consume(n),s):c<3?t(n):(e.exit("codeFencedFenceSequence"),v(n)?I(e,l,"whitespace")(n):l(n))}function l(t){return null===t||F(t)?(e.exit("codeFencedFence"),r.interrupt?n(t):e.check(fe,h,k)(t)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),a(t))}function a(n){return null===n||F(n)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),l(n)):v(n)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),I(e,f,"whitespace")(n)):96===n&&n===u?t(n):(e.consume(n),a)}function f(n){return null===n||F(n)?l(n):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),d(n))}function d(n){return null===n||F(n)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),l(n)):96===n&&n===u?t(n):(e.consume(n),d)}function h(n){return e.attempt(i,k,p)(n)}function p(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),m}function m(n){return o>0&&v(n)?I(e,g,"linePrefix",o+1)(n):g(n)}function g(n){return null===n||F(n)?e.check(fe,h,k)(n):(e.enter("codeFlowValue"),x(n))}function x(n){return null===n||F(n)?(e.exit("codeFlowValue"),g(n)):(e.consume(n),x)}function k(t){return e.exit("codeFenced"),n(t)}},concrete:!0},he=document.createElement("i");function pe(e){const n="&"+e+";";he.innerHTML=n;const t=he.textContent;return(59!==t.charCodeAt(t.length-1)||"semi"===e)&&t!==n&&t}const me={name:"characterReference",tokenize:function(e,n,t){const r=this;let i,u,o=0;return function(n){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(n),e.exit("characterReferenceMarker"),c};function c(n){return 35===n?(e.enter("characterReferenceMarkerNumeric"),e.consume(n),e.exit("characterReferenceMarkerNumeric"),s):(e.enter("characterReferenceValue"),i=31,u=p,l(n))}function s(n){return 88===n||120===n?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(n),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),i=6,u=k,l):(e.enter("characterReferenceValue"),i=7,u=x,l(n))}function l(c){if(59===c&&o){const i=e.exit("characterReferenceValue");return u!==p||pe(r.sliceSerialize(i))?(e.enter("characterReferenceMarker"),e.consume(c),e.exit("characterReferenceMarker"),e.exit("characterReference"),n):t(c)}return u(c)&&o++1&&e[d][1].end.offset-e[d][1].start.offset>1?2:1;const h=Object.assign({},e[t][1].end),p=Object.assign({},e[d][1].start);Ee(h,-c),Ee(p,c),u={type:c>1?"strongSequence":"emphasisSequence",start:h,end:Object.assign({},e[t][1].end)},o={type:c>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[d][1].start),end:p},i={type:c>1?"strongText":"emphasisText",start:Object.assign({},e[t][1].end),end:Object.assign({},e[d][1].start)},r={type:c>1?"strong":"emphasis",start:Object.assign({},u.start),end:Object.assign({},o.end)},e[t][1].end=Object.assign({},u.start),e[d][1].start=Object.assign({},o.end),a=[],e[t][1].end.offset-e[t][1].start.offset&&(a=l(a,[["enter",e[t][1],n],["exit",e[t][1],n]])),a=l(a,[["enter",r,n],["enter",u,n],["exit",u,n],["enter",i,n]]),a=l(a,V(n.parser.constructs.insideSpan.null,e.slice(t+1,d),n)),a=l(a,[["exit",i,n],["enter",o,n],["exit",o,n],["exit",r,n]]),e[d][1].end.offset-e[d][1].start.offset?(f=2,a=l(a,[["enter",e[d][1],n],["exit",e[d][1],n]])):f=0,s(e,t-1,d-t+3,a),d=t+a.length-f-2;break}for(d=-1;++d13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||65535==(65535&t)||65534==(65535&t)||t>1114111?"�":String.fromCharCode(t)}const je=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function He(e,n,t){if(n)return n;if(35===t.charCodeAt(0)){const e=t.charCodeAt(1),n=120===e||88===e;return Oe(t.slice(n?2:1),n?16:10)}return pe(t)||e}function Re(e){return e&&"object"==typeof e?"position"in e||"type"in e?Ve(e.position):"start"in e||"end"in e?Ve(e):"line"in e||"column"in e?qe(e):"":""}function qe(e){return Qe(e&&e.line)+":"+Qe(e&&e.column)}function Ve(e){return qe(e&&e.start)+"-"+qe(e&&e.end)}function Qe(e){return e&&"number"==typeof e?e:1}const Ne={}.hasOwnProperty,Ue=function(e,n,t){return"string"!=typeof n&&(t=n,n=void 0),function(e){const n={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(v),autolinkProtocol:p,autolinkEmail:p,atxHeading:s(y),blockQuote:s((function(){return{type:"blockquote",children:[]}})),characterEscape:p,characterReference:p,codeFenced:s(k),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:s(k,l),codeText:s((function(){return{type:"inlineCode",value:""}}),l),codeTextData:p,data:p,codeFlowValue:p,definition:s((function(){return{type:"definition",identifier:"",label:null,title:null,url:""}})),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:s((function(){return{type:"emphasis",children:[]}})),hardBreakEscape:s(F),hardBreakTrailing:s(F),htmlFlow:s(b,l),htmlFlowData:p,htmlText:s(b,l),htmlTextData:p,image:s((function(){return{type:"image",title:null,url:"",alt:null}})),label:l,link:s(v),listItem:s((function(e){return{type:"listItem",spread:e._spread,checked:null,children:[]}})),listItemValue:function(e){c("expectingFirstListItemValue")&&(this.stack[this.stack.length-2].start=Number.parseInt(this.sliceSerialize(e),10),i("expectingFirstListItemValue"))},listOrdered:s(S,(function(){i("expectingFirstListItemValue",!0)})),listUnordered:s(S),paragraph:s((function(){return{type:"paragraph",children:[]}})),reference:function(){i("referenceType","collapsed")},referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:s(y),strong:s((function(){return{type:"strong",children:[]}})),thematicBreak:s((function(){return{type:"thematicBreak"}}))},exit:{atxHeading:f(),atxHeadingSequence:function(e){const n=this.stack[this.stack.length-1];if(!n.depth){const t=this.sliceSerialize(e).length;n.depth=t}},autolink:f(),autolinkEmail:function(e){m.call(this,e),this.stack[this.stack.length-1].url="mailto:"+this.sliceSerialize(e)},autolinkProtocol:function(e){m.call(this,e),this.stack[this.stack.length-1].url=this.sliceSerialize(e)},blockQuote:f(),characterEscapeValue:m,characterReferenceMarkerHexadecimal:x,characterReferenceMarkerNumeric:x,characterReferenceValue:function(e){const n=this.sliceSerialize(e),t=c("characterReferenceType");let r;t?(r=Oe(n,"characterReferenceMarkerNumeric"===t?10:16),i("characterReferenceType")):r=pe(n);const u=this.stack.pop();u.value+=r,u.position.end=$e(e.end)},codeFenced:f((function(){const e=this.resume();this.stack[this.stack.length-1].value=e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),i("flowCodeInside")})),codeFencedFence:function(){c("flowCodeInside")||(this.buffer(),i("flowCodeInside",!0))},codeFencedFenceInfo:function(){const e=this.resume();this.stack[this.stack.length-1].lang=e},codeFencedFenceMeta:function(){const e=this.resume();this.stack[this.stack.length-1].meta=e},codeFlowValue:m,codeIndented:f((function(){const e=this.resume();this.stack[this.stack.length-1].value=e.replace(/(\r?\n|\r)$/g,"")})),codeText:f((function(){const e=this.resume();this.stack[this.stack.length-1].value=e})),codeTextData:m,data:m,definition:f(),definitionDestinationString:function(){const e=this.resume();this.stack[this.stack.length-1].url=e},definitionLabelString:function(e){const n=this.resume(),t=this.stack[this.stack.length-1];t.label=n,t.identifier=X(this.sliceSerialize(e)).toLowerCase()},definitionTitleString:function(){const e=this.resume();this.stack[this.stack.length-1].title=e},emphasis:f(),hardBreakEscape:f(g),hardBreakTrailing:f(g),htmlFlow:f((function(){const e=this.resume();this.stack[this.stack.length-1].value=e})),htmlFlowData:m,htmlText:f((function(){const e=this.resume();this.stack[this.stack.length-1].value=e})),htmlTextData:m,image:f((function(){const e=this.stack[this.stack.length-1];if(c("inReference")){const n=c("referenceType")||"shortcut";e.type+="Reference",e.referenceType=n,delete e.url,delete e.title}else delete e.identifier,delete e.label;i("referenceType")})),label:function(){const e=this.stack[this.stack.length-1],n=this.resume(),t=this.stack[this.stack.length-1];if(i("inReference",!0),"link"===t.type){const n=e.children;t.children=n}else t.alt=n},labelText:function(e){const n=this.sliceSerialize(e),t=this.stack[this.stack.length-2];t.label=function(e){return e.replace(je,He)}(n),t.identifier=X(n).toLowerCase()},lineEnding:function(e){const t=this.stack[this.stack.length-1];if(c("atHardBreak"))return t.children[t.children.length-1].position.end=$e(e.end),void i("atHardBreak");!c("setextHeadingSlurpLineEnding")&&n.canContainEols.includes(t.type)&&(p.call(this,e),m.call(this,e))},link:f((function(){const e=this.stack[this.stack.length-1];if(c("inReference")){const n=c("referenceType")||"shortcut";e.type+="Reference",e.referenceType=n,delete e.url,delete e.title}else delete e.identifier,delete e.label;i("referenceType")})),listItem:f(),listOrdered:f(),listUnordered:f(),paragraph:f(),referenceString:function(e){const n=this.resume(),t=this.stack[this.stack.length-1];t.label=n,t.identifier=X(this.sliceSerialize(e)).toLowerCase(),i("referenceType","full")},resourceDestinationString:function(){const e=this.resume();this.stack[this.stack.length-1].url=e},resourceTitleString:function(){const e=this.resume();this.stack[this.stack.length-1].title=e},resource:function(){i("inReference")},setextHeading:f((function(){i("setextHeadingSlurpLineEnding")})),setextHeadingLineSequence:function(e){this.stack[this.stack.length-1].depth=61===this.sliceSerialize(e).charCodeAt(0)?1:2},setextHeadingText:function(){i("setextHeadingSlurpLineEnding",!0)},strong:f(),thematicBreak:f()}};We(n,(e||{}).mdastExtensions||[]);const t={};return function(e){let t={type:"root",children:[]};const u={stack:[t],tokenStack:[],config:n,enter:a,exit:d,buffer:l,resume:h,setData:i,getData:c},o=[];let s=-1;for(;++s0){const e=u.tokenStack[u.tokenStack.length-1];(e[1]||Ye).call(u,void 0,e[0])}for(t.position={start:$e(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:$e(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},s=-1;++s{0!==t&&(i++,r.push([])),e.split(" ").forEach((e=>{e&&r[i].push({content:e,type:n})}))})):"strong"!==e.type&&"emphasis"!==e.type||e.children.forEach((n=>{u(n,e.type)}))}return t.forEach((e=>{"paragraph"===e.type&&e.children.forEach((e=>{u(e)}))})),r}function Ke(e,n){var t;return Xe(e,[],(t=n.content,Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map((e=>e.segment)):[...t]),n.type)}function Xe(e,n,t,r){if(0===t.length)return[{content:n.join(""),type:r},{content:"",type:r}];const[i,...u]=t,o=[...n,i];return e([{content:o.join(""),type:r}])?Xe(e,o,u,r):(0===n.length&&i&&(n.push(i),t.shift()),[{content:n.join(""),type:r},{content:t.join(""),type:r}])}function en(e,n){if(e.some((({content:e})=>e.includes("\n"))))throw new Error("splitLineToFitWidth does not support newlines in the line");return nn(e,n)}function nn(e,n,t=[],r=[]){if(0===e.length)return r.length>0&&t.push(r),t.length>0?t:[];let i="";" "===e[0].content&&(i=" ",e.shift());const u=e.shift()??{content:" ",type:"normal"},o=[...r];if(""!==i&&o.push({content:i,type:"normal"}),o.push(u),n(o))return nn(e,n,t,o);if(r.length>0)t.push(r),e.unshift(u);else if(u.content){const[r,i]=Ke(n,u);t.push([r]),i.content&&e.unshift(i)}return nn(e,n,t)}function tn(e,n,t){return e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",n*t-.1+"em").attr("dy",t+"em")}function rn(e,n,t){const r=e.append("text"),i=tn(r,1,n);un(i,t);const u=i.node().getComputedTextLength();return r.remove(),u}function un(e,n){e.text(""),n.forEach(((n,t)=>{const r=e.append("tspan").attr("font-style","emphasis"===n.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===n.type?"bold":"normal");0===t?r.text(n.content):r.text(" "+n.content)}))}const on=(e,n="",{style:t="",isTitle:r=!1,classes:u="",useHtmlLabels:o=!0,isNode:c=!0,width:s=200,addSvgBackground:l=!1}={})=>{if(i.l.info("createText",n,t,r,u,o,c,l),o){const r=function(e){const{children:n}=Ue(e);return n.map((function e(n){return"text"===n.type?n.value.replace(/\n/g," "):"strong"===n.type?`${n.children.map(e).join("")} `:"emphasis"===n.type?`${n.children.map(e).join("")} `:"paragraph"===n.type?`${n.children.map(e).join("")}
`:`Unsupported markdown: ${n.type}`})).join("")}(n),o=function(e,n,t,r,i=!1){const u=e.append("foreignObject"),o=u.append("xhtml:div"),c=n.label,s=n.isNode?"nodeLabel":"edgeLabel";var l,a;o.html(`\n "+c+" "),l=o,(a=n.labelStyle)&&l.attr("style",a),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("max-width",t+"px"),o.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&o.attr("class","labelBkg");let f=o.node().getBoundingClientRect();return f.width===t&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",t+"px"),f=o.node().getBoundingClientRect()),u.style("width",f.width),u.style("height",f.height),u.node()}(e,{isNode:c,label:(0,i.L)(r).replace(/fa[blrs]?:fa-[\w-]+/g,(e=>` `)),labelStyle:t.replace("fill:","color:")},s,u,l);return o}{const t=function(e,n,t,r=!1){const i=n.append("g"),u=i.insert("rect").attr("class","background"),o=i.append("text").attr("y","-10.1");let c=0;for(const n of t){const t=n=>rn(i,1.1,n)<=e,r=t(n)?[n]:en(n,t);for(const e of r)un(tn(o,c,1.1),e),c++}if(r){const e=o.node().getBBox(),n=2;return u.attr("x",-n).attr("y",-n).attr("width",e.width+2*n).attr("height",e.height+2*n),i.node()}return o.node()}(s,e,Je(n),l);return t}}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [506],
+ {
+ 3506: function (e, n, t) {
+ t.d(n, {
+ c: function () {
+ return on;
+ },
+ });
+ var r = {};
+ t.r(r),
+ t.d(r, {
+ attentionMarkers: function () {
+ return Le;
+ },
+ contentInitial: function () {
+ return Ce;
+ },
+ disable: function () {
+ return Me;
+ },
+ document: function () {
+ return we;
+ },
+ flow: function () {
+ return ze;
+ },
+ flowInitial: function () {
+ return Te;
+ },
+ insideSpan: function () {
+ return _e;
+ },
+ string: function () {
+ return De;
+ },
+ text: function () {
+ return Be;
+ },
+ });
+ var i = t(9339);
+ const u = {};
+ function o(e, n, t) {
+ if (
+ (function (e) {
+ return Boolean(e && "object" == typeof e);
+ })(e)
+ ) {
+ if ("value" in e) return "html" !== e.type || t ? e.value : "";
+ if (n && "alt" in e && e.alt) return e.alt;
+ if ("children" in e) return c(e.children, n, t);
+ }
+ return Array.isArray(e) ? c(e, n, t) : "";
+ }
+ function c(e, n, t) {
+ const r = [];
+ let i = -1;
+ for (; ++i < e.length; ) r[i] = o(e[i], n, t);
+ return r.join("");
+ }
+ function s(e, n, t, r) {
+ const i = e.length;
+ let u,
+ o = 0;
+ if (((n = n < 0 ? (-n > i ? 0 : i + n) : n > i ? i : n), (t = t > 0 ? t : 0), r.length < 1e4))
+ (u = Array.from(r)), u.unshift(n, t), e.splice(...u);
+ else for (t && e.splice(n, t); o < r.length; ) (u = r.slice(o, o + 1e4)), u.unshift(n, 0), e.splice(...u), (o += 1e4), (n += 1e4);
+ }
+ function l(e, n) {
+ return e.length > 0 ? (s(e, e.length, 0, n), e) : n;
+ }
+ const a = {}.hasOwnProperty;
+ function f(e, n) {
+ let t;
+ for (t in n) {
+ const r = (a.call(e, t) ? e[t] : void 0) || (e[t] = {}),
+ i = n[t];
+ let u;
+ if (i)
+ for (u in i) {
+ a.call(r, u) || (r[u] = []);
+ const e = i[u];
+ d(r[u], Array.isArray(e) ? e : e ? [e] : []);
+ }
+ }
+ }
+ function d(e, n) {
+ let t = -1;
+ const r = [];
+ for (; ++t < n.length; ) ("after" === n[t].add ? e : r).push(n[t]);
+ s(e, 0, 0, r);
+ }
+ const h = A(/[A-Za-z]/),
+ p = A(/[\dA-Za-z]/),
+ m = A(/[#-'*+\--9=?A-Z^-~]/);
+ function g(e) {
+ return null !== e && (e < 32 || 127 === e);
+ }
+ const x = A(/\d/),
+ k = A(/[\dA-Fa-f]/),
+ y = A(/[!-/:-@[-`{-~]/);
+ function F(e) {
+ return null !== e && e < -2;
+ }
+ function b(e) {
+ return null !== e && (e < 0 || 32 === e);
+ }
+ function v(e) {
+ return -2 === e || -1 === e || 32 === e;
+ }
+ const S = A(
+ /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/,
+ ),
+ E = A(/\s/);
+ function A(e) {
+ return function (n) {
+ return null !== n && e.test(String.fromCharCode(n));
+ };
+ }
+ function I(e, n, t, r) {
+ const i = r ? r - 1 : Number.POSITIVE_INFINITY;
+ let u = 0;
+ return function (r) {
+ return v(r) ? (e.enter(t), o(r)) : n(r);
+ };
+ function o(r) {
+ return v(r) && u++ < i ? (e.consume(r), o) : (e.exit(t), n(r));
+ }
+ }
+ const w = {
+ tokenize: function (e) {
+ const n = e.attempt(
+ this.parser.constructs.contentInitial,
+ function (t) {
+ if (null !== t) return e.enter("lineEnding"), e.consume(t), e.exit("lineEnding"), I(e, n, "linePrefix");
+ e.consume(t);
+ },
+ function (n) {
+ return e.enter("paragraph"), r(n);
+ },
+ );
+ let t;
+ return n;
+ function r(n) {
+ const r = e.enter("chunkText", { contentType: "text", previous: t });
+ return t && (t.next = r), (t = r), i(n);
+ }
+ function i(n) {
+ return null === n
+ ? (e.exit("chunkText"), e.exit("paragraph"), void e.consume(n))
+ : F(n)
+ ? (e.consume(n), e.exit("chunkText"), r)
+ : (e.consume(n), i);
+ }
+ },
+ },
+ C = {
+ tokenize: function (e) {
+ const n = this,
+ t = [];
+ let r,
+ i,
+ u,
+ o = 0;
+ return c;
+ function c(r) {
+ if (o < t.length) {
+ const i = t[o];
+ return (n.containerState = i[1]), e.attempt(i[0].continuation, l, a)(r);
+ }
+ return a(r);
+ }
+ function l(e) {
+ if ((o++, n.containerState._closeFlow)) {
+ (n.containerState._closeFlow = void 0), r && y();
+ const t = n.events.length;
+ let i,
+ u = t;
+ for (; u--; )
+ if ("exit" === n.events[u][0] && "chunkFlow" === n.events[u][1].type) {
+ i = n.events[u][1].end;
+ break;
+ }
+ k(o);
+ let c = t;
+ for (; c < n.events.length; ) (n.events[c][1].end = Object.assign({}, i)), c++;
+ return s(n.events, u + 1, 0, n.events.slice(t)), (n.events.length = c), a(e);
+ }
+ return c(e);
+ }
+ function a(i) {
+ if (o === t.length) {
+ if (!r) return h(i);
+ if (r.currentConstruct && r.currentConstruct.concrete) return m(i);
+ n.interrupt = Boolean(r.currentConstruct && !r._gfmTableDynamicInterruptHack);
+ }
+ return (n.containerState = {}), e.check(T, f, d)(i);
+ }
+ function f(e) {
+ return r && y(), k(o), h(e);
+ }
+ function d(e) {
+ return (n.parser.lazy[n.now().line] = o !== t.length), (u = n.now().offset), m(e);
+ }
+ function h(t) {
+ return (n.containerState = {}), e.attempt(T, p, m)(t);
+ }
+ function p(e) {
+ return o++, t.push([n.currentConstruct, n.containerState]), h(e);
+ }
+ function m(t) {
+ return null === t
+ ? (r && y(), k(0), void e.consume(t))
+ : ((r = r || n.parser.flow(n.now())), e.enter("chunkFlow", { contentType: "flow", previous: i, _tokenizer: r }), g(t));
+ }
+ function g(t) {
+ return null === t
+ ? (x(e.exit("chunkFlow"), !0), k(0), void e.consume(t))
+ : F(t)
+ ? (e.consume(t), x(e.exit("chunkFlow")), (o = 0), (n.interrupt = void 0), c)
+ : (e.consume(t), g);
+ }
+ function x(e, t) {
+ const c = n.sliceStream(e);
+ if ((t && c.push(null), (e.previous = i), i && (i.next = e), (i = e), r.defineSkip(e.start), r.write(c), n.parser.lazy[e.start.line])) {
+ let e = r.events.length;
+ for (; e--; ) if (r.events[e][1].start.offset < u && (!r.events[e][1].end || r.events[e][1].end.offset > u)) return;
+ const t = n.events.length;
+ let i,
+ c,
+ l = t;
+ for (; l--; )
+ if ("exit" === n.events[l][0] && "chunkFlow" === n.events[l][1].type) {
+ if (i) {
+ c = n.events[l][1].end;
+ break;
+ }
+ i = !0;
+ }
+ for (k(o), e = t; e < n.events.length; ) (n.events[e][1].end = Object.assign({}, c)), e++;
+ s(n.events, l + 1, 0, n.events.slice(t)), (n.events.length = e);
+ }
+ }
+ function k(r) {
+ let i = t.length;
+ for (; i-- > r; ) {
+ const r = t[i];
+ (n.containerState = r[1]), r[0].exit.call(n, e);
+ }
+ t.length = r;
+ }
+ function y() {
+ r.write([null]), (i = void 0), (r = void 0), (n.containerState._closeFlow = void 0);
+ }
+ },
+ },
+ T = {
+ tokenize: function (e, n, t) {
+ return I(
+ e,
+ e.attempt(this.parser.constructs.document, n, t),
+ "linePrefix",
+ this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4,
+ );
+ },
+ },
+ z = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return v(n) ? I(e, r, "linePrefix")(n) : r(n);
+ };
+ function r(e) {
+ return null === e || F(e) ? n(e) : t(e);
+ }
+ },
+ partial: !0,
+ };
+ function D(e) {
+ const n = {};
+ let t,
+ r,
+ i,
+ u,
+ o,
+ c,
+ l,
+ a = -1;
+ for (; ++a < e.length; ) {
+ for (; a in n; ) a = n[a];
+ if (
+ ((t = e[a]),
+ a &&
+ "chunkFlow" === t[1].type &&
+ "listItemPrefix" === e[a - 1][1].type &&
+ ((c = t[1]._tokenizer.events),
+ (i = 0),
+ i < c.length && "lineEndingBlank" === c[i][1].type && (i += 2),
+ i < c.length && "content" === c[i][1].type))
+ )
+ for (; ++i < c.length && "content" !== c[i][1].type; ) "chunkText" === c[i][1].type && ((c[i][1]._isInFirstContentOfListItem = !0), i++);
+ if ("enter" === t[0]) t[1].contentType && (Object.assign(n, B(e, a)), (a = n[a]), (l = !0));
+ else if (t[1]._container) {
+ for (i = a, r = void 0; i-- && ((u = e[i]), "lineEnding" === u[1].type || "lineEndingBlank" === u[1].type); )
+ "enter" === u[0] && (r && (e[r][1].type = "lineEndingBlank"), (u[1].type = "lineEnding"), (r = i));
+ r && ((t[1].end = Object.assign({}, e[r][1].start)), (o = e.slice(r, a)), o.unshift(t), s(e, r, a - r + 1, o));
+ }
+ }
+ return !l;
+ }
+ function B(e, n) {
+ const t = e[n][1],
+ r = e[n][2];
+ let i = n - 1;
+ const u = [],
+ o = t._tokenizer || r.parser[t.contentType](t.start),
+ c = o.events,
+ l = [],
+ a = {};
+ let f,
+ d,
+ h = -1,
+ p = t,
+ m = 0,
+ g = 0;
+ const x = [g];
+ for (; p; ) {
+ for (; e[++i][1] !== p; );
+ u.push(i),
+ p._tokenizer ||
+ ((f = r.sliceStream(p)),
+ p.next || f.push(null),
+ d && o.defineSkip(p.start),
+ p._isInFirstContentOfListItem && (o._gfmTasklistFirstContentOfListItem = !0),
+ o.write(f),
+ p._isInFirstContentOfListItem && (o._gfmTasklistFirstContentOfListItem = void 0)),
+ (d = p),
+ (p = p.next);
+ }
+ for (p = t; ++h < c.length; )
+ "exit" === c[h][0] &&
+ "enter" === c[h - 1][0] &&
+ c[h][1].type === c[h - 1][1].type &&
+ c[h][1].start.line !== c[h][1].end.line &&
+ ((g = h + 1), x.push(g), (p._tokenizer = void 0), (p.previous = void 0), (p = p.next));
+ for (o.events = [], p ? ((p._tokenizer = void 0), (p.previous = void 0)) : x.pop(), h = x.length; h--; ) {
+ const n = c.slice(x[h], x[h + 1]),
+ t = u.pop();
+ l.unshift([t, t + n.length - 1]), s(e, t, 2, n);
+ }
+ for (h = -1; ++h < l.length; ) (a[m + l[h][0]] = m + l[h][1]), (m += l[h][1] - l[h][0] - 1);
+ return a;
+ }
+ const _ = {
+ tokenize: function (e, n) {
+ let t;
+ return function (n) {
+ return e.enter("content"), (t = e.enter("chunkContent", { contentType: "content" })), r(n);
+ };
+ function r(n) {
+ return null === n ? i(n) : F(n) ? e.check(L, u, i)(n) : (e.consume(n), r);
+ }
+ function i(t) {
+ return e.exit("chunkContent"), e.exit("content"), n(t);
+ }
+ function u(n) {
+ return (
+ e.consume(n), e.exit("chunkContent"), (t.next = e.enter("chunkContent", { contentType: "content", previous: t })), (t = t.next), r
+ );
+ }
+ },
+ resolve: function (e) {
+ return D(e), e;
+ },
+ },
+ L = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.exit("chunkContent"), e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), I(e, i, "linePrefix");
+ };
+ function i(i) {
+ if (null === i || F(i)) return t(i);
+ const u = r.events[r.events.length - 1];
+ return !r.parser.constructs.disable.null.includes("codeIndented") &&
+ u &&
+ "linePrefix" === u[1].type &&
+ u[2].sliceSerialize(u[1], !0).length >= 4
+ ? n(i)
+ : e.interrupt(r.parser.constructs.flow, t, n)(i);
+ }
+ },
+ partial: !0,
+ },
+ M = {
+ tokenize: function (e) {
+ const n = this,
+ t = e.attempt(
+ z,
+ function (r) {
+ if (null !== r) return e.enter("lineEndingBlank"), e.consume(r), e.exit("lineEndingBlank"), (n.currentConstruct = void 0), t;
+ e.consume(r);
+ },
+ e.attempt(this.parser.constructs.flowInitial, r, I(e, e.attempt(this.parser.constructs.flow, r, e.attempt(_, r)), "linePrefix")),
+ );
+ return t;
+ function r(r) {
+ if (null !== r) return e.enter("lineEnding"), e.consume(r), e.exit("lineEnding"), (n.currentConstruct = void 0), t;
+ e.consume(r);
+ }
+ },
+ },
+ P = { resolveAll: R() },
+ O = H("string"),
+ j = H("text");
+ function H(e) {
+ return {
+ tokenize: function (n) {
+ const t = this,
+ r = this.parser.constructs[e],
+ i = n.attempt(r, u, o);
+ return u;
+ function u(e) {
+ return s(e) ? i(e) : o(e);
+ }
+ function o(e) {
+ if (null !== e) return n.enter("data"), n.consume(e), c;
+ n.consume(e);
+ }
+ function c(e) {
+ return s(e) ? (n.exit("data"), i(e)) : (n.consume(e), c);
+ }
+ function s(e) {
+ if (null === e) return !0;
+ const n = r[e];
+ let i = -1;
+ if (n)
+ for (; ++i < n.length; ) {
+ const e = n[i];
+ if (!e.previous || e.previous.call(t, t.previous)) return !0;
+ }
+ return !1;
+ }
+ },
+ resolveAll: R("text" === e ? q : void 0),
+ };
+ }
+ function R(e) {
+ return function (n, t) {
+ let r,
+ i = -1;
+ for (; ++i <= n.length; )
+ void 0 === r
+ ? n[i] && "data" === n[i][1].type && ((r = i), i++)
+ : (n[i] && "data" === n[i][1].type) ||
+ (i !== r + 2 && ((n[r][1].end = n[i - 1][1].end), n.splice(r + 2, i - r - 2), (i = r + 2)), (r = void 0));
+ return e ? e(n, t) : n;
+ };
+ }
+ function q(e, n) {
+ let t = 0;
+ for (; ++t <= e.length; )
+ if ((t === e.length || "lineEnding" === e[t][1].type) && "data" === e[t - 1][1].type) {
+ const r = e[t - 1][1],
+ i = n.sliceStream(r);
+ let u,
+ o = i.length,
+ c = -1,
+ s = 0;
+ for (; o--; ) {
+ const e = i[o];
+ if ("string" == typeof e) {
+ for (c = e.length; 32 === e.charCodeAt(c - 1); ) s++, c--;
+ if (c) break;
+ c = -1;
+ } else if (-2 === e) (u = !0), s++;
+ else if (-1 !== e) {
+ o++;
+ break;
+ }
+ }
+ if (s) {
+ const i = {
+ type: t === e.length || u || s < 2 ? "lineSuffix" : "hardBreakTrailing",
+ start: {
+ line: r.end.line,
+ column: r.end.column - s,
+ offset: r.end.offset - s,
+ _index: r.start._index + o,
+ _bufferIndex: o ? c : r.start._bufferIndex + c,
+ },
+ end: Object.assign({}, r.end),
+ };
+ (r.end = Object.assign({}, i.start)),
+ r.start.offset === r.end.offset ? Object.assign(r, i) : (e.splice(t, 0, ["enter", i, n], ["exit", i, n]), (t += 2));
+ }
+ t++;
+ }
+ return e;
+ }
+ function V(e, n, t) {
+ const r = [];
+ let i = -1;
+ for (; ++i < e.length; ) {
+ const u = e[i].resolveAll;
+ u && !r.includes(u) && ((n = u(n, t)), r.push(u));
+ }
+ return n;
+ }
+ function Q(e, n, t) {
+ let r = Object.assign(t ? Object.assign({}, t) : { line: 1, column: 1, offset: 0 }, {
+ _index: 0,
+ _bufferIndex: -1,
+ });
+ const i = {},
+ u = [];
+ let o = [],
+ c = [],
+ a = !0;
+ const f = {
+ consume: function (e) {
+ F(e) ? (r.line++, (r.column = 1), (r.offset += -3 === e ? 2 : 1), v()) : -1 !== e && (r.column++, r.offset++),
+ r._bufferIndex < 0 ? r._index++ : (r._bufferIndex++, r._bufferIndex === o[r._index].length && ((r._bufferIndex = -1), r._index++)),
+ (d.previous = e),
+ (a = !0);
+ },
+ enter: function (e, n) {
+ const t = n || {};
+ return (t.type = e), (t.start = g()), d.events.push(["enter", t, d]), c.push(t), t;
+ },
+ exit: function (e) {
+ const n = c.pop();
+ return (n.end = g()), d.events.push(["exit", n, d]), n;
+ },
+ attempt: y(function (e, n) {
+ b(e, n.from);
+ }),
+ check: y(k),
+ interrupt: y(k, { interrupt: !0 }),
+ },
+ d = {
+ previous: null,
+ code: null,
+ containerState: {},
+ events: [],
+ parser: e,
+ sliceStream: m,
+ sliceSerialize: function (e, n) {
+ return (function (e, n) {
+ let t = -1;
+ const r = [];
+ let i;
+ for (; ++t < e.length; ) {
+ const u = e[t];
+ let o;
+ if ("string" == typeof u) o = u;
+ else
+ switch (u) {
+ case -5:
+ o = "\r";
+ break;
+ case -4:
+ o = "\n";
+ break;
+ case -3:
+ o = "\r\n";
+ break;
+ case -2:
+ o = n ? " " : "\t";
+ break;
+ case -1:
+ if (!n && i) continue;
+ o = " ";
+ break;
+ default:
+ o = String.fromCharCode(u);
+ }
+ (i = -2 === u), r.push(o);
+ }
+ return r.join("");
+ })(m(e), n);
+ },
+ now: g,
+ defineSkip: function (e) {
+ (i[e.line] = e.column), v();
+ },
+ write: function (e) {
+ return (
+ (o = l(o, e)),
+ (function () {
+ let e;
+ for (; r._index < o.length; ) {
+ const n = o[r._index];
+ if ("string" == typeof n)
+ for (e = r._index, r._bufferIndex < 0 && (r._bufferIndex = 0); r._index === e && r._bufferIndex < n.length; )
+ x(n.charCodeAt(r._bufferIndex));
+ else x(n);
+ }
+ })(),
+ null !== o[o.length - 1] ? [] : (b(n, 0), (d.events = V(u, d.events, d)), d.events)
+ );
+ },
+ };
+ let h,
+ p = n.tokenize.call(d, f);
+ return n.resolveAll && u.push(n), d;
+ function m(e) {
+ return (function (e, n) {
+ const t = n.start._index,
+ r = n.start._bufferIndex,
+ i = n.end._index,
+ u = n.end._bufferIndex;
+ let o;
+ if (t === i) o = [e[t].slice(r, u)];
+ else {
+ if (((o = e.slice(t, i)), r > -1)) {
+ const e = o[0];
+ "string" == typeof e ? (o[0] = e.slice(r)) : o.shift();
+ }
+ u > 0 && o.push(e[i].slice(0, u));
+ }
+ return o;
+ })(o, e);
+ }
+ function g() {
+ const { line: e, column: n, offset: t, _index: i, _bufferIndex: u } = r;
+ return { line: e, column: n, offset: t, _index: i, _bufferIndex: u };
+ }
+ function x(e) {
+ (a = void 0), (h = e), (p = p(e));
+ }
+ function k(e, n) {
+ n.restore();
+ }
+ function y(e, n) {
+ return function (t, i, u) {
+ let o, s, l, h;
+ return Array.isArray(t)
+ ? m(t)
+ : "tokenize" in t
+ ? m([t])
+ : ((p = t),
+ function (e) {
+ const n = null !== e && p[e],
+ t = null !== e && p.null;
+ return m([...(Array.isArray(n) ? n : n ? [n] : []), ...(Array.isArray(t) ? t : t ? [t] : [])])(e);
+ });
+ var p;
+ function m(e) {
+ return (o = e), (s = 0), 0 === e.length ? u : x(e[s]);
+ }
+ function x(e) {
+ return function (t) {
+ return (
+ (h = (function () {
+ const e = g(),
+ n = d.previous,
+ t = d.currentConstruct,
+ i = d.events.length,
+ u = Array.from(c);
+ return {
+ restore: function () {
+ (r = e), (d.previous = n), (d.currentConstruct = t), (d.events.length = i), (c = u), v();
+ },
+ from: i,
+ };
+ })()),
+ (l = e),
+ e.partial || (d.currentConstruct = e),
+ e.name && d.parser.constructs.disable.null.includes(e.name)
+ ? y()
+ : e.tokenize.call(n ? Object.assign(Object.create(d), n) : d, f, k, y)(t)
+ );
+ };
+ }
+ function k(n) {
+ return (a = !0), e(l, h), i;
+ }
+ function y(e) {
+ return (a = !0), h.restore(), ++s < o.length ? x(o[s]) : u;
+ }
+ };
+ }
+ function b(e, n) {
+ e.resolveAll && !u.includes(e) && u.push(e),
+ e.resolve && s(d.events, n, d.events.length - n, e.resolve(d.events.slice(n), d)),
+ e.resolveTo && (d.events = e.resolveTo(d.events, d));
+ }
+ function v() {
+ r.line in i && r.column < 2 && ((r.column = i[r.line]), (r.offset += i[r.line] - 1));
+ }
+ }
+ const N = {
+ name: "thematicBreak",
+ tokenize: function (e, n, t) {
+ let r,
+ i = 0;
+ return function (n) {
+ return (
+ e.enter("thematicBreak"),
+ (function (e) {
+ return (r = e), u(e);
+ })(n)
+ );
+ };
+ function u(u) {
+ return u === r ? (e.enter("thematicBreakSequence"), o(u)) : i >= 3 && (null === u || F(u)) ? (e.exit("thematicBreak"), n(u)) : t(u);
+ }
+ function o(n) {
+ return n === r ? (e.consume(n), i++, o) : (e.exit("thematicBreakSequence"), v(n) ? I(e, u, "whitespace")(n) : u(n));
+ }
+ },
+ },
+ U = {
+ name: "list",
+ tokenize: function (e, n, t) {
+ const r = this,
+ i = r.events[r.events.length - 1];
+ let u = i && "linePrefix" === i[1].type ? i[2].sliceSerialize(i[1], !0).length : 0,
+ o = 0;
+ return function (n) {
+ const i = r.containerState.type || (42 === n || 43 === n || 45 === n ? "listUnordered" : "listOrdered");
+ if ("listUnordered" === i ? !r.containerState.marker || n === r.containerState.marker : x(n)) {
+ if ((r.containerState.type || ((r.containerState.type = i), e.enter(i, { _container: !0 })), "listUnordered" === i))
+ return e.enter("listItemPrefix"), 42 === n || 45 === n ? e.check(N, t, s)(n) : s(n);
+ if (!r.interrupt || 49 === n) return e.enter("listItemPrefix"), e.enter("listItemValue"), c(n);
+ }
+ return t(n);
+ };
+ function c(n) {
+ return x(n) && ++o < 10
+ ? (e.consume(n), c)
+ : (!r.interrupt || o < 2) && (r.containerState.marker ? n === r.containerState.marker : 41 === n || 46 === n)
+ ? (e.exit("listItemValue"), s(n))
+ : t(n);
+ }
+ function s(n) {
+ return (
+ e.enter("listItemMarker"),
+ e.consume(n),
+ e.exit("listItemMarker"),
+ (r.containerState.marker = r.containerState.marker || n),
+ e.check(z, r.interrupt ? t : l, e.attempt($, f, a))
+ );
+ }
+ function l(e) {
+ return (r.containerState.initialBlankLine = !0), u++, f(e);
+ }
+ function a(n) {
+ return v(n) ? (e.enter("listItemPrefixWhitespace"), e.consume(n), e.exit("listItemPrefixWhitespace"), f) : t(n);
+ }
+ function f(t) {
+ return (r.containerState.size = u + r.sliceSerialize(e.exit("listItemPrefix"), !0).length), n(t);
+ }
+ },
+ continuation: {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return (
+ (r.containerState._closeFlow = void 0),
+ e.check(
+ z,
+ function (t) {
+ return (
+ (r.containerState.furtherBlankLines = r.containerState.furtherBlankLines || r.containerState.initialBlankLine),
+ I(e, n, "listItemIndent", r.containerState.size + 1)(t)
+ );
+ },
+ function (t) {
+ return r.containerState.furtherBlankLines || !v(t)
+ ? ((r.containerState.furtherBlankLines = void 0), (r.containerState.initialBlankLine = void 0), i(t))
+ : ((r.containerState.furtherBlankLines = void 0), (r.containerState.initialBlankLine = void 0), e.attempt(W, n, i)(t));
+ },
+ )
+ );
+ function i(i) {
+ return (
+ (r.containerState._closeFlow = !0),
+ (r.interrupt = void 0),
+ I(e, e.attempt(U, n, t), "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(i)
+ );
+ }
+ },
+ },
+ exit: function (e) {
+ e.exit(this.containerState.type);
+ },
+ },
+ $ = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return I(
+ e,
+ function (e) {
+ const i = r.events[r.events.length - 1];
+ return !v(e) && i && "listItemPrefixWhitespace" === i[1].type ? n(e) : t(e);
+ },
+ "listItemPrefixWhitespace",
+ r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 5,
+ );
+ },
+ partial: !0,
+ },
+ W = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return I(
+ e,
+ function (e) {
+ const i = r.events[r.events.length - 1];
+ return i && "listItemIndent" === i[1].type && i[2].sliceSerialize(i[1], !0).length === r.containerState.size ? n(e) : t(e);
+ },
+ "listItemIndent",
+ r.containerState.size + 1,
+ );
+ },
+ partial: !0,
+ },
+ Z = {
+ name: "blockQuote",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ if (62 === n) {
+ const t = r.containerState;
+ return (
+ t.open || (e.enter("blockQuote", { _container: !0 }), (t.open = !0)),
+ e.enter("blockQuotePrefix"),
+ e.enter("blockQuoteMarker"),
+ e.consume(n),
+ e.exit("blockQuoteMarker"),
+ i
+ );
+ }
+ return t(n);
+ };
+ function i(t) {
+ return v(t)
+ ? (e.enter("blockQuotePrefixWhitespace"), e.consume(t), e.exit("blockQuotePrefixWhitespace"), e.exit("blockQuotePrefix"), n)
+ : (e.exit("blockQuotePrefix"), n(t));
+ }
+ },
+ continuation: {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return v(n) ? I(e, i, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : i(n);
+ };
+ function i(r) {
+ return e.attempt(Z, n, t)(r);
+ }
+ },
+ },
+ exit: function (e) {
+ e.exit("blockQuote");
+ },
+ };
+ function Y(e, n, t, r, i, u, o, c, s) {
+ const l = s || Number.POSITIVE_INFINITY;
+ let a = 0;
+ return function (n) {
+ return 60 === n
+ ? (e.enter(r), e.enter(i), e.enter(u), e.consume(n), e.exit(u), f)
+ : null === n || 32 === n || 41 === n || g(n)
+ ? t(n)
+ : (e.enter(r), e.enter(o), e.enter(c), e.enter("chunkString", { contentType: "string" }), p(n));
+ };
+ function f(t) {
+ return 62 === t
+ ? (e.enter(u), e.consume(t), e.exit(u), e.exit(i), e.exit(r), n)
+ : (e.enter(c), e.enter("chunkString", { contentType: "string" }), d(t));
+ }
+ function d(n) {
+ return 62 === n ? (e.exit("chunkString"), e.exit(c), f(n)) : null === n || 60 === n || F(n) ? t(n) : (e.consume(n), 92 === n ? h : d);
+ }
+ function h(n) {
+ return 60 === n || 62 === n || 92 === n ? (e.consume(n), d) : d(n);
+ }
+ function p(i) {
+ return a || (null !== i && 41 !== i && !b(i))
+ ? a < l && 40 === i
+ ? (e.consume(i), a++, p)
+ : 41 === i
+ ? (e.consume(i), a--, p)
+ : null === i || 32 === i || 40 === i || g(i)
+ ? t(i)
+ : (e.consume(i), 92 === i ? m : p)
+ : (e.exit("chunkString"), e.exit(c), e.exit(o), e.exit(r), n(i));
+ }
+ function m(n) {
+ return 40 === n || 41 === n || 92 === n ? (e.consume(n), p) : p(n);
+ }
+ }
+ function G(e, n, t, r, i, u) {
+ const o = this;
+ let c,
+ s = 0;
+ return function (n) {
+ return e.enter(r), e.enter(i), e.consume(n), e.exit(i), e.enter(u), l;
+ };
+ function l(f) {
+ return s > 999 || null === f || 91 === f || (93 === f && !c) || (94 === f && !s && "_hiddenFootnoteSupport" in o.parser.constructs)
+ ? t(f)
+ : 93 === f
+ ? (e.exit(u), e.enter(i), e.consume(f), e.exit(i), e.exit(r), n)
+ : F(f)
+ ? (e.enter("lineEnding"), e.consume(f), e.exit("lineEnding"), l)
+ : (e.enter("chunkString", { contentType: "string" }), a(f));
+ }
+ function a(n) {
+ return null === n || 91 === n || 93 === n || F(n) || s++ > 999
+ ? (e.exit("chunkString"), l(n))
+ : (e.consume(n), c || (c = !v(n)), 92 === n ? f : a);
+ }
+ function f(n) {
+ return 91 === n || 92 === n || 93 === n ? (e.consume(n), s++, a) : a(n);
+ }
+ }
+ function J(e, n, t, r, i, u) {
+ let o;
+ return function (n) {
+ return 34 === n || 39 === n || 40 === n ? (e.enter(r), e.enter(i), e.consume(n), e.exit(i), (o = 40 === n ? 41 : n), c) : t(n);
+ };
+ function c(t) {
+ return t === o ? (e.enter(i), e.consume(t), e.exit(i), e.exit(r), n) : (e.enter(u), s(t));
+ }
+ function s(n) {
+ return n === o
+ ? (e.exit(u), c(o))
+ : null === n
+ ? t(n)
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), I(e, s, "linePrefix"))
+ : (e.enter("chunkString", { contentType: "string" }), l(n));
+ }
+ function l(n) {
+ return n === o || null === n || F(n) ? (e.exit("chunkString"), s(n)) : (e.consume(n), 92 === n ? a : l);
+ }
+ function a(n) {
+ return n === o || 92 === n ? (e.consume(n), l) : l(n);
+ }
+ }
+ function K(e, n) {
+ let t;
+ return function r(i) {
+ return F(i)
+ ? (e.enter("lineEnding"), e.consume(i), e.exit("lineEnding"), (t = !0), r)
+ : v(i)
+ ? I(e, r, t ? "linePrefix" : "lineSuffix")(i)
+ : n(i);
+ };
+ }
+ function X(e) {
+ return e
+ .replace(/[\t\n\r ]+/g, " ")
+ .replace(/^ | $/g, "")
+ .toLowerCase()
+ .toUpperCase();
+ }
+ const ee = {
+ name: "definition",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i;
+ return function (n) {
+ return (
+ e.enter("definition"),
+ (function (n) {
+ return G.call(r, e, u, t, "definitionLabel", "definitionLabelMarker", "definitionLabelString")(n);
+ })(n)
+ );
+ };
+ function u(n) {
+ return (
+ (i = X(r.sliceSerialize(r.events[r.events.length - 1][1]).slice(1, -1))),
+ 58 === n ? (e.enter("definitionMarker"), e.consume(n), e.exit("definitionMarker"), o) : t(n)
+ );
+ }
+ function o(n) {
+ return b(n) ? K(e, c)(n) : c(n);
+ }
+ function c(n) {
+ return Y(
+ e,
+ s,
+ t,
+ "definitionDestination",
+ "definitionDestinationLiteral",
+ "definitionDestinationLiteralMarker",
+ "definitionDestinationRaw",
+ "definitionDestinationString",
+ )(n);
+ }
+ function s(n) {
+ return e.attempt(ne, l, l)(n);
+ }
+ function l(n) {
+ return v(n) ? I(e, a, "whitespace")(n) : a(n);
+ }
+ function a(u) {
+ return null === u || F(u) ? (e.exit("definition"), r.parser.defined.push(i), n(u)) : t(u);
+ }
+ },
+ },
+ ne = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return b(n) ? K(e, r)(n) : t(n);
+ };
+ function r(n) {
+ return J(e, i, t, "definitionTitle", "definitionTitleMarker", "definitionTitleString")(n);
+ }
+ function i(n) {
+ return v(n) ? I(e, u, "whitespace")(n) : u(n);
+ }
+ function u(e) {
+ return null === e || F(e) ? n(e) : t(e);
+ }
+ },
+ partial: !0,
+ },
+ te = {
+ name: "codeIndented",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("codeIndented"), I(e, i, "linePrefix", 5)(n);
+ };
+ function i(e) {
+ const n = r.events[r.events.length - 1];
+ return n && "linePrefix" === n[1].type && n[2].sliceSerialize(n[1], !0).length >= 4 ? u(e) : t(e);
+ }
+ function u(n) {
+ return null === n ? c(n) : F(n) ? e.attempt(re, u, c)(n) : (e.enter("codeFlowValue"), o(n));
+ }
+ function o(n) {
+ return null === n || F(n) ? (e.exit("codeFlowValue"), u(n)) : (e.consume(n), o);
+ }
+ function c(t) {
+ return e.exit("codeIndented"), n(t);
+ }
+ },
+ },
+ re = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return i;
+ function i(n) {
+ return r.parser.lazy[r.now().line]
+ ? t(n)
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i)
+ : I(e, u, "linePrefix", 5)(n);
+ }
+ function u(e) {
+ const u = r.events[r.events.length - 1];
+ return u && "linePrefix" === u[1].type && u[2].sliceSerialize(u[1], !0).length >= 4 ? n(e) : F(e) ? i(e) : t(e);
+ }
+ },
+ partial: !0,
+ },
+ ie = {
+ name: "headingAtx",
+ tokenize: function (e, n, t) {
+ let r = 0;
+ return function (n) {
+ return (
+ e.enter("atxHeading"),
+ (function (n) {
+ return e.enter("atxHeadingSequence"), i(n);
+ })(n)
+ );
+ };
+ function i(n) {
+ return 35 === n && r++ < 6 ? (e.consume(n), i) : null === n || b(n) ? (e.exit("atxHeadingSequence"), u(n)) : t(n);
+ }
+ function u(t) {
+ return 35 === t
+ ? (e.enter("atxHeadingSequence"), o(t))
+ : null === t || F(t)
+ ? (e.exit("atxHeading"), n(t))
+ : v(t)
+ ? I(e, u, "whitespace")(t)
+ : (e.enter("atxHeadingText"), c(t));
+ }
+ function o(n) {
+ return 35 === n ? (e.consume(n), o) : (e.exit("atxHeadingSequence"), u(n));
+ }
+ function c(n) {
+ return null === n || 35 === n || b(n) ? (e.exit("atxHeadingText"), u(n)) : (e.consume(n), c);
+ }
+ },
+ resolve: function (e, n) {
+ let t,
+ r,
+ i = e.length - 2,
+ u = 3;
+ return (
+ "whitespace" === e[u][1].type && (u += 2),
+ i - 2 > u && "whitespace" === e[i][1].type && (i -= 2),
+ "atxHeadingSequence" === e[i][1].type &&
+ (u === i - 1 || (i - 4 > u && "whitespace" === e[i - 2][1].type)) &&
+ (i -= u + 1 === i ? 2 : 4),
+ i > u &&
+ ((t = { type: "atxHeadingText", start: e[u][1].start, end: e[i][1].end }),
+ (r = {
+ type: "chunkText",
+ start: e[u][1].start,
+ end: e[i][1].end,
+ contentType: "text",
+ }),
+ s(e, u, i - u + 1, [
+ ["enter", t, n],
+ ["enter", r, n],
+ ["exit", r, n],
+ ["exit", t, n],
+ ])),
+ e
+ );
+ },
+ },
+ ue = {
+ name: "setextUnderline",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i;
+ return function (n) {
+ let o,
+ c = r.events.length;
+ for (; c--; )
+ if ("lineEnding" !== r.events[c][1].type && "linePrefix" !== r.events[c][1].type && "content" !== r.events[c][1].type) {
+ o = "paragraph" === r.events[c][1].type;
+ break;
+ }
+ return r.parser.lazy[r.now().line] || (!r.interrupt && !o)
+ ? t(n)
+ : (e.enter("setextHeadingLine"),
+ (i = n),
+ (function (n) {
+ return e.enter("setextHeadingLineSequence"), u(n);
+ })(n));
+ };
+ function u(n) {
+ return n === i ? (e.consume(n), u) : (e.exit("setextHeadingLineSequence"), v(n) ? I(e, o, "lineSuffix")(n) : o(n));
+ }
+ function o(r) {
+ return null === r || F(r) ? (e.exit("setextHeadingLine"), n(r)) : t(r);
+ }
+ },
+ resolveTo: function (e, n) {
+ let t,
+ r,
+ i,
+ u = e.length;
+ for (; u--; )
+ if ("enter" === e[u][0]) {
+ if ("content" === e[u][1].type) {
+ t = u;
+ break;
+ }
+ "paragraph" === e[u][1].type && (r = u);
+ } else "content" === e[u][1].type && e.splice(u, 1), i || "definition" !== e[u][1].type || (i = u);
+ const o = {
+ type: "setextHeading",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[e.length - 1][1].end),
+ };
+ return (
+ (e[r][1].type = "setextHeadingText"),
+ i
+ ? (e.splice(r, 0, ["enter", o, n]), e.splice(i + 1, 0, ["exit", e[t][1], n]), (e[t][1].end = Object.assign({}, e[i][1].end)))
+ : (e[t][1] = o),
+ e.push(["exit", o, n]),
+ e
+ );
+ },
+ },
+ oe = [
+ "address",
+ "article",
+ "aside",
+ "base",
+ "basefont",
+ "blockquote",
+ "body",
+ "caption",
+ "center",
+ "col",
+ "colgroup",
+ "dd",
+ "details",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hr",
+ "html",
+ "iframe",
+ "legend",
+ "li",
+ "link",
+ "main",
+ "menu",
+ "menuitem",
+ "nav",
+ "noframes",
+ "ol",
+ "optgroup",
+ "option",
+ "p",
+ "param",
+ "search",
+ "section",
+ "summary",
+ "table",
+ "tbody",
+ "td",
+ "tfoot",
+ "th",
+ "thead",
+ "title",
+ "tr",
+ "track",
+ "ul",
+ ],
+ ce = ["pre", "script", "style", "textarea"],
+ se = {
+ name: "htmlFlow",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i, u, o, c, s;
+ return function (n) {
+ return (function (n) {
+ return e.enter("htmlFlow"), e.enter("htmlFlowData"), e.consume(n), l;
+ })(n);
+ };
+ function l(c) {
+ return 33 === c
+ ? (e.consume(c), a)
+ : 47 === c
+ ? (e.consume(c), (u = !0), m)
+ : 63 === c
+ ? (e.consume(c), (i = 3), r.interrupt ? n : H)
+ : h(c)
+ ? (e.consume(c), (o = String.fromCharCode(c)), g)
+ : t(c);
+ }
+ function a(u) {
+ return 45 === u
+ ? (e.consume(u), (i = 2), f)
+ : 91 === u
+ ? (e.consume(u), (i = 5), (c = 0), d)
+ : h(u)
+ ? (e.consume(u), (i = 4), r.interrupt ? n : H)
+ : t(u);
+ }
+ function f(i) {
+ return 45 === i ? (e.consume(i), r.interrupt ? n : H) : t(i);
+ }
+ function d(i) {
+ return i === "CDATA[".charCodeAt(c++) ? (e.consume(i), 6 === c ? (r.interrupt ? n : D) : d) : t(i);
+ }
+ function m(n) {
+ return h(n) ? (e.consume(n), (o = String.fromCharCode(n)), g) : t(n);
+ }
+ function g(c) {
+ if (null === c || 47 === c || 62 === c || b(c)) {
+ const s = 47 === c,
+ l = o.toLowerCase();
+ return s || u || !ce.includes(l)
+ ? oe.includes(o.toLowerCase())
+ ? ((i = 6), s ? (e.consume(c), x) : r.interrupt ? n(c) : D(c))
+ : ((i = 7), r.interrupt && !r.parser.lazy[r.now().line] ? t(c) : u ? k(c) : y(c))
+ : ((i = 1), r.interrupt ? n(c) : D(c));
+ }
+ return 45 === c || p(c) ? (e.consume(c), (o += String.fromCharCode(c)), g) : t(c);
+ }
+ function x(i) {
+ return 62 === i ? (e.consume(i), r.interrupt ? n : D) : t(i);
+ }
+ function k(n) {
+ return v(n) ? (e.consume(n), k) : T(n);
+ }
+ function y(n) {
+ return 47 === n ? (e.consume(n), T) : 58 === n || 95 === n || h(n) ? (e.consume(n), S) : v(n) ? (e.consume(n), y) : T(n);
+ }
+ function S(n) {
+ return 45 === n || 46 === n || 58 === n || 95 === n || p(n) ? (e.consume(n), S) : E(n);
+ }
+ function E(n) {
+ return 61 === n ? (e.consume(n), A) : v(n) ? (e.consume(n), E) : y(n);
+ }
+ function A(n) {
+ return null === n || 60 === n || 61 === n || 62 === n || 96 === n
+ ? t(n)
+ : 34 === n || 39 === n
+ ? (e.consume(n), (s = n), I)
+ : v(n)
+ ? (e.consume(n), A)
+ : w(n);
+ }
+ function I(n) {
+ return n === s ? (e.consume(n), (s = null), C) : null === n || F(n) ? t(n) : (e.consume(n), I);
+ }
+ function w(n) {
+ return null === n || 34 === n || 39 === n || 47 === n || 60 === n || 61 === n || 62 === n || 96 === n || b(n)
+ ? E(n)
+ : (e.consume(n), w);
+ }
+ function C(e) {
+ return 47 === e || 62 === e || v(e) ? y(e) : t(e);
+ }
+ function T(n) {
+ return 62 === n ? (e.consume(n), z) : t(n);
+ }
+ function z(n) {
+ return null === n || F(n) ? D(n) : v(n) ? (e.consume(n), z) : t(n);
+ }
+ function D(n) {
+ return 45 === n && 2 === i
+ ? (e.consume(n), M)
+ : 60 === n && 1 === i
+ ? (e.consume(n), P)
+ : 62 === n && 4 === i
+ ? (e.consume(n), R)
+ : 63 === n && 3 === i
+ ? (e.consume(n), H)
+ : 93 === n && 5 === i
+ ? (e.consume(n), j)
+ : !F(n) || (6 !== i && 7 !== i)
+ ? null === n || F(n)
+ ? (e.exit("htmlFlowData"), B(n))
+ : (e.consume(n), D)
+ : (e.exit("htmlFlowData"), e.check(le, q, B)(n));
+ }
+ function B(n) {
+ return e.check(ae, _, q)(n);
+ }
+ function _(n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), L;
+ }
+ function L(n) {
+ return null === n || F(n) ? B(n) : (e.enter("htmlFlowData"), D(n));
+ }
+ function M(n) {
+ return 45 === n ? (e.consume(n), H) : D(n);
+ }
+ function P(n) {
+ return 47 === n ? (e.consume(n), (o = ""), O) : D(n);
+ }
+ function O(n) {
+ if (62 === n) {
+ const t = o.toLowerCase();
+ return ce.includes(t) ? (e.consume(n), R) : D(n);
+ }
+ return h(n) && o.length < 8 ? (e.consume(n), (o += String.fromCharCode(n)), O) : D(n);
+ }
+ function j(n) {
+ return 93 === n ? (e.consume(n), H) : D(n);
+ }
+ function H(n) {
+ return 62 === n ? (e.consume(n), R) : 45 === n && 2 === i ? (e.consume(n), H) : D(n);
+ }
+ function R(n) {
+ return null === n || F(n) ? (e.exit("htmlFlowData"), q(n)) : (e.consume(n), R);
+ }
+ function q(t) {
+ return e.exit("htmlFlow"), n(t);
+ }
+ },
+ resolveTo: function (e) {
+ let n = e.length;
+ for (; n-- && ("enter" !== e[n][0] || "htmlFlow" !== e[n][1].type); );
+ return (
+ n > 1 &&
+ "linePrefix" === e[n - 2][1].type &&
+ ((e[n][1].start = e[n - 2][1].start), (e[n + 1][1].start = e[n - 2][1].start), e.splice(n - 2, 2)),
+ e
+ );
+ },
+ concrete: !0,
+ },
+ le = {
+ tokenize: function (e, n, t) {
+ return function (r) {
+ return e.enter("lineEnding"), e.consume(r), e.exit("lineEnding"), e.attempt(z, n, t);
+ };
+ },
+ partial: !0,
+ },
+ ae = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return F(n) ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i) : t(n);
+ };
+ function i(e) {
+ return r.parser.lazy[r.now().line] ? t(e) : n(e);
+ }
+ },
+ partial: !0,
+ },
+ fe = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return null === n ? t(n) : (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), i);
+ };
+ function i(e) {
+ return r.parser.lazy[r.now().line] ? t(e) : n(e);
+ }
+ },
+ partial: !0,
+ },
+ de = {
+ name: "codeFenced",
+ tokenize: function (e, n, t) {
+ const r = this,
+ i = {
+ tokenize: function (e, n, t) {
+ let i = 0;
+ return function (n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), o;
+ };
+ function o(n) {
+ return (
+ e.enter("codeFencedFence"),
+ v(n) ? I(e, s, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : s(n)
+ );
+ }
+ function s(n) {
+ return n === u ? (e.enter("codeFencedFenceSequence"), l(n)) : t(n);
+ }
+ function l(n) {
+ return n === u
+ ? (i++, e.consume(n), l)
+ : i >= c
+ ? (e.exit("codeFencedFenceSequence"), v(n) ? I(e, a, "whitespace")(n) : a(n))
+ : t(n);
+ }
+ function a(r) {
+ return null === r || F(r) ? (e.exit("codeFencedFence"), n(r)) : t(r);
+ }
+ },
+ partial: !0,
+ };
+ let u,
+ o = 0,
+ c = 0;
+ return function (n) {
+ return (function (n) {
+ const t = r.events[r.events.length - 1];
+ return (
+ (o = t && "linePrefix" === t[1].type ? t[2].sliceSerialize(t[1], !0).length : 0),
+ (u = n),
+ e.enter("codeFenced"),
+ e.enter("codeFencedFence"),
+ e.enter("codeFencedFenceSequence"),
+ s(n)
+ );
+ })(n);
+ };
+ function s(n) {
+ return n === u ? (c++, e.consume(n), s) : c < 3 ? t(n) : (e.exit("codeFencedFenceSequence"), v(n) ? I(e, l, "whitespace")(n) : l(n));
+ }
+ function l(t) {
+ return null === t || F(t)
+ ? (e.exit("codeFencedFence"), r.interrupt ? n(t) : e.check(fe, h, k)(t))
+ : (e.enter("codeFencedFenceInfo"), e.enter("chunkString", { contentType: "string" }), a(t));
+ }
+ function a(n) {
+ return null === n || F(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceInfo"), l(n))
+ : v(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceInfo"), I(e, f, "whitespace")(n))
+ : 96 === n && n === u
+ ? t(n)
+ : (e.consume(n), a);
+ }
+ function f(n) {
+ return null === n || F(n) ? l(n) : (e.enter("codeFencedFenceMeta"), e.enter("chunkString", { contentType: "string" }), d(n));
+ }
+ function d(n) {
+ return null === n || F(n)
+ ? (e.exit("chunkString"), e.exit("codeFencedFenceMeta"), l(n))
+ : 96 === n && n === u
+ ? t(n)
+ : (e.consume(n), d);
+ }
+ function h(n) {
+ return e.attempt(i, k, p)(n);
+ }
+ function p(n) {
+ return e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), m;
+ }
+ function m(n) {
+ return o > 0 && v(n) ? I(e, g, "linePrefix", o + 1)(n) : g(n);
+ }
+ function g(n) {
+ return null === n || F(n) ? e.check(fe, h, k)(n) : (e.enter("codeFlowValue"), x(n));
+ }
+ function x(n) {
+ return null === n || F(n) ? (e.exit("codeFlowValue"), g(n)) : (e.consume(n), x);
+ }
+ function k(t) {
+ return e.exit("codeFenced"), n(t);
+ }
+ },
+ concrete: !0,
+ },
+ he = document.createElement("i");
+ function pe(e) {
+ const n = "&" + e + ";";
+ he.innerHTML = n;
+ const t = he.textContent;
+ return (59 !== t.charCodeAt(t.length - 1) || "semi" === e) && t !== n && t;
+ }
+ const me = {
+ name: "characterReference",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i,
+ u,
+ o = 0;
+ return function (n) {
+ return e.enter("characterReference"), e.enter("characterReferenceMarker"), e.consume(n), e.exit("characterReferenceMarker"), c;
+ };
+ function c(n) {
+ return 35 === n
+ ? (e.enter("characterReferenceMarkerNumeric"), e.consume(n), e.exit("characterReferenceMarkerNumeric"), s)
+ : (e.enter("characterReferenceValue"), (i = 31), (u = p), l(n));
+ }
+ function s(n) {
+ return 88 === n || 120 === n
+ ? (e.enter("characterReferenceMarkerHexadecimal"),
+ e.consume(n),
+ e.exit("characterReferenceMarkerHexadecimal"),
+ e.enter("characterReferenceValue"),
+ (i = 6),
+ (u = k),
+ l)
+ : (e.enter("characterReferenceValue"), (i = 7), (u = x), l(n));
+ }
+ function l(c) {
+ if (59 === c && o) {
+ const i = e.exit("characterReferenceValue");
+ return u !== p || pe(r.sliceSerialize(i))
+ ? (e.enter("characterReferenceMarker"), e.consume(c), e.exit("characterReferenceMarker"), e.exit("characterReference"), n)
+ : t(c);
+ }
+ return u(c) && o++ < i ? (e.consume(c), l) : t(c);
+ }
+ },
+ },
+ ge = {
+ name: "characterEscape",
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("characterEscape"), e.enter("escapeMarker"), e.consume(n), e.exit("escapeMarker"), r;
+ };
+ function r(r) {
+ return y(r) ? (e.enter("characterEscapeValue"), e.consume(r), e.exit("characterEscapeValue"), e.exit("characterEscape"), n) : t(r);
+ }
+ },
+ },
+ xe = {
+ name: "lineEnding",
+ tokenize: function (e, n) {
+ return function (t) {
+ return e.enter("lineEnding"), e.consume(t), e.exit("lineEnding"), I(e, n, "linePrefix");
+ };
+ },
+ },
+ ke = {
+ name: "labelEnd",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i,
+ u,
+ o = r.events.length;
+ for (; o--; )
+ if (("labelImage" === r.events[o][1].type || "labelLink" === r.events[o][1].type) && !r.events[o][1]._balanced) {
+ i = r.events[o][1];
+ break;
+ }
+ return function (n) {
+ return i
+ ? i._inactive
+ ? a(n)
+ : ((u = r.parser.defined.includes(X(r.sliceSerialize({ start: i.end, end: r.now() })))),
+ e.enter("labelEnd"),
+ e.enter("labelMarker"),
+ e.consume(n),
+ e.exit("labelMarker"),
+ e.exit("labelEnd"),
+ c)
+ : t(n);
+ };
+ function c(n) {
+ return 40 === n ? e.attempt(ye, l, u ? l : a)(n) : 91 === n ? e.attempt(Fe, l, u ? s : a)(n) : u ? l(n) : a(n);
+ }
+ function s(n) {
+ return e.attempt(be, l, a)(n);
+ }
+ function l(e) {
+ return n(e);
+ }
+ function a(e) {
+ return (i._balanced = !0), t(e);
+ }
+ },
+ resolveTo: function (e, n) {
+ let t,
+ r,
+ i,
+ u,
+ o = e.length,
+ c = 0;
+ for (; o--; )
+ if (((t = e[o][1]), r)) {
+ if ("link" === t.type || ("labelLink" === t.type && t._inactive)) break;
+ "enter" === e[o][0] && "labelLink" === t.type && (t._inactive = !0);
+ } else if (i) {
+ if ("enter" === e[o][0] && ("labelImage" === t.type || "labelLink" === t.type) && !t._balanced && ((r = o), "labelLink" !== t.type)) {
+ c = 2;
+ break;
+ }
+ } else "labelEnd" === t.type && (i = o);
+ const a = {
+ type: "labelLink" === e[r][1].type ? "link" : "image",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[e.length - 1][1].end),
+ },
+ f = {
+ type: "label",
+ start: Object.assign({}, e[r][1].start),
+ end: Object.assign({}, e[i][1].end),
+ },
+ d = {
+ type: "labelText",
+ start: Object.assign({}, e[r + c + 2][1].end),
+ end: Object.assign({}, e[i - 2][1].start),
+ };
+ return (
+ (u = [
+ ["enter", a, n],
+ ["enter", f, n],
+ ]),
+ (u = l(u, e.slice(r + 1, r + c + 3))),
+ (u = l(u, [["enter", d, n]])),
+ (u = l(u, V(n.parser.constructs.insideSpan.null, e.slice(r + c + 4, i - 3), n))),
+ (u = l(u, [["exit", d, n], e[i - 2], e[i - 1], ["exit", f, n]])),
+ (u = l(u, e.slice(i + 1))),
+ (u = l(u, [["exit", a, n]])),
+ s(e, r, e.length, u),
+ e
+ );
+ },
+ resolveAll: function (e) {
+ let n = -1;
+ for (; ++n < e.length; ) {
+ const t = e[n][1];
+ ("labelImage" !== t.type && "labelLink" !== t.type && "labelEnd" !== t.type) ||
+ (e.splice(n + 1, "labelImage" === t.type ? 4 : 2), (t.type = "data"), n++);
+ }
+ return e;
+ },
+ },
+ ye = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("resource"), e.enter("resourceMarker"), e.consume(n), e.exit("resourceMarker"), r;
+ };
+ function r(n) {
+ return b(n) ? K(e, i)(n) : i(n);
+ }
+ function i(n) {
+ return 41 === n
+ ? l(n)
+ : Y(
+ e,
+ u,
+ o,
+ "resourceDestination",
+ "resourceDestinationLiteral",
+ "resourceDestinationLiteralMarker",
+ "resourceDestinationRaw",
+ "resourceDestinationString",
+ 32,
+ )(n);
+ }
+ function u(n) {
+ return b(n) ? K(e, c)(n) : l(n);
+ }
+ function o(e) {
+ return t(e);
+ }
+ function c(n) {
+ return 34 === n || 39 === n || 40 === n ? J(e, s, t, "resourceTitle", "resourceTitleMarker", "resourceTitleString")(n) : l(n);
+ }
+ function s(n) {
+ return b(n) ? K(e, l)(n) : l(n);
+ }
+ function l(r) {
+ return 41 === r ? (e.enter("resourceMarker"), e.consume(r), e.exit("resourceMarker"), e.exit("resource"), n) : t(r);
+ }
+ },
+ },
+ Fe = {
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return G.call(r, e, i, u, "reference", "referenceMarker", "referenceString")(n);
+ };
+ function i(e) {
+ return r.parser.defined.includes(X(r.sliceSerialize(r.events[r.events.length - 1][1]).slice(1, -1))) ? n(e) : t(e);
+ }
+ function u(e) {
+ return t(e);
+ }
+ },
+ },
+ be = {
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("reference"), e.enter("referenceMarker"), e.consume(n), e.exit("referenceMarker"), r;
+ };
+ function r(r) {
+ return 93 === r ? (e.enter("referenceMarker"), e.consume(r), e.exit("referenceMarker"), e.exit("reference"), n) : t(r);
+ }
+ },
+ };
+ function ve(e) {
+ return null === e || b(e) || E(e) ? 1 : S(e) ? 2 : void 0;
+ }
+ const Se = {
+ name: "attention",
+ tokenize: function (e, n) {
+ const t = this.parser.constructs.attentionMarkers.null,
+ r = this.previous,
+ i = ve(r);
+ let u;
+ return function (n) {
+ return (u = n), e.enter("attentionSequence"), o(n);
+ };
+ function o(c) {
+ if (c === u) return e.consume(c), o;
+ const s = e.exit("attentionSequence"),
+ l = ve(c),
+ a = !l || (2 === l && i) || t.includes(c),
+ f = !i || (2 === i && l) || t.includes(r);
+ return (s._open = Boolean(42 === u ? a : a && (i || !f))), (s._close = Boolean(42 === u ? f : f && (l || !a))), n(c);
+ }
+ },
+ resolveAll: function (e, n) {
+ let t,
+ r,
+ i,
+ u,
+ o,
+ c,
+ a,
+ f,
+ d = -1;
+ for (; ++d < e.length; )
+ if ("enter" === e[d][0] && "attentionSequence" === e[d][1].type && e[d][1]._close)
+ for (t = d; t--; )
+ if (
+ "exit" === e[t][0] &&
+ "attentionSequence" === e[t][1].type &&
+ e[t][1]._open &&
+ n.sliceSerialize(e[t][1]).charCodeAt(0) === n.sliceSerialize(e[d][1]).charCodeAt(0)
+ ) {
+ if (
+ (e[t][1]._close || e[d][1]._open) &&
+ (e[d][1].end.offset - e[d][1].start.offset) % 3 &&
+ !((e[t][1].end.offset - e[t][1].start.offset + e[d][1].end.offset - e[d][1].start.offset) % 3)
+ )
+ continue;
+ c = e[t][1].end.offset - e[t][1].start.offset > 1 && e[d][1].end.offset - e[d][1].start.offset > 1 ? 2 : 1;
+ const h = Object.assign({}, e[t][1].end),
+ p = Object.assign({}, e[d][1].start);
+ Ee(h, -c),
+ Ee(p, c),
+ (u = {
+ type: c > 1 ? "strongSequence" : "emphasisSequence",
+ start: h,
+ end: Object.assign({}, e[t][1].end),
+ }),
+ (o = {
+ type: c > 1 ? "strongSequence" : "emphasisSequence",
+ start: Object.assign({}, e[d][1].start),
+ end: p,
+ }),
+ (i = {
+ type: c > 1 ? "strongText" : "emphasisText",
+ start: Object.assign({}, e[t][1].end),
+ end: Object.assign({}, e[d][1].start),
+ }),
+ (r = {
+ type: c > 1 ? "strong" : "emphasis",
+ start: Object.assign({}, u.start),
+ end: Object.assign({}, o.end),
+ }),
+ (e[t][1].end = Object.assign({}, u.start)),
+ (e[d][1].start = Object.assign({}, o.end)),
+ (a = []),
+ e[t][1].end.offset - e[t][1].start.offset &&
+ (a = l(a, [
+ ["enter", e[t][1], n],
+ ["exit", e[t][1], n],
+ ])),
+ (a = l(a, [
+ ["enter", r, n],
+ ["enter", u, n],
+ ["exit", u, n],
+ ["enter", i, n],
+ ])),
+ (a = l(a, V(n.parser.constructs.insideSpan.null, e.slice(t + 1, d), n))),
+ (a = l(a, [
+ ["exit", i, n],
+ ["enter", o, n],
+ ["exit", o, n],
+ ["exit", r, n],
+ ])),
+ e[d][1].end.offset - e[d][1].start.offset
+ ? ((f = 2),
+ (a = l(a, [
+ ["enter", e[d][1], n],
+ ["exit", e[d][1], n],
+ ])))
+ : (f = 0),
+ s(e, t - 1, d - t + 3, a),
+ (d = t + a.length - f - 2);
+ break;
+ }
+ for (d = -1; ++d < e.length; ) "attentionSequence" === e[d][1].type && (e[d][1].type = "data");
+ return e;
+ },
+ };
+ function Ee(e, n) {
+ (e.column += n), (e.offset += n), (e._bufferIndex += n);
+ }
+ const Ae = {
+ name: "htmlText",
+ tokenize: function (e, n, t) {
+ const r = this;
+ let i, u, o;
+ return function (n) {
+ return e.enter("htmlText"), e.enter("htmlTextData"), e.consume(n), c;
+ };
+ function c(n) {
+ return 33 === n ? (e.consume(n), s) : 47 === n ? (e.consume(n), A) : 63 === n ? (e.consume(n), S) : h(n) ? (e.consume(n), T) : t(n);
+ }
+ function s(n) {
+ return 45 === n ? (e.consume(n), l) : 91 === n ? (e.consume(n), (u = 0), m) : h(n) ? (e.consume(n), y) : t(n);
+ }
+ function l(n) {
+ return 45 === n ? (e.consume(n), d) : t(n);
+ }
+ function a(n) {
+ return null === n ? t(n) : 45 === n ? (e.consume(n), f) : F(n) ? ((o = a), j(n)) : (e.consume(n), a);
+ }
+ function f(n) {
+ return 45 === n ? (e.consume(n), d) : a(n);
+ }
+ function d(e) {
+ return 62 === e ? O(e) : 45 === e ? f(e) : a(e);
+ }
+ function m(n) {
+ return n === "CDATA[".charCodeAt(u++) ? (e.consume(n), 6 === u ? g : m) : t(n);
+ }
+ function g(n) {
+ return null === n ? t(n) : 93 === n ? (e.consume(n), x) : F(n) ? ((o = g), j(n)) : (e.consume(n), g);
+ }
+ function x(n) {
+ return 93 === n ? (e.consume(n), k) : g(n);
+ }
+ function k(n) {
+ return 62 === n ? O(n) : 93 === n ? (e.consume(n), k) : g(n);
+ }
+ function y(n) {
+ return null === n || 62 === n ? O(n) : F(n) ? ((o = y), j(n)) : (e.consume(n), y);
+ }
+ function S(n) {
+ return null === n ? t(n) : 63 === n ? (e.consume(n), E) : F(n) ? ((o = S), j(n)) : (e.consume(n), S);
+ }
+ function E(e) {
+ return 62 === e ? O(e) : S(e);
+ }
+ function A(n) {
+ return h(n) ? (e.consume(n), w) : t(n);
+ }
+ function w(n) {
+ return 45 === n || p(n) ? (e.consume(n), w) : C(n);
+ }
+ function C(n) {
+ return F(n) ? ((o = C), j(n)) : v(n) ? (e.consume(n), C) : O(n);
+ }
+ function T(n) {
+ return 45 === n || p(n) ? (e.consume(n), T) : 47 === n || 62 === n || b(n) ? z(n) : t(n);
+ }
+ function z(n) {
+ return 47 === n
+ ? (e.consume(n), O)
+ : 58 === n || 95 === n || h(n)
+ ? (e.consume(n), D)
+ : F(n)
+ ? ((o = z), j(n))
+ : v(n)
+ ? (e.consume(n), z)
+ : O(n);
+ }
+ function D(n) {
+ return 45 === n || 46 === n || 58 === n || 95 === n || p(n) ? (e.consume(n), D) : B(n);
+ }
+ function B(n) {
+ return 61 === n ? (e.consume(n), _) : F(n) ? ((o = B), j(n)) : v(n) ? (e.consume(n), B) : z(n);
+ }
+ function _(n) {
+ return null === n || 60 === n || 61 === n || 62 === n || 96 === n
+ ? t(n)
+ : 34 === n || 39 === n
+ ? (e.consume(n), (i = n), L)
+ : F(n)
+ ? ((o = _), j(n))
+ : v(n)
+ ? (e.consume(n), _)
+ : (e.consume(n), M);
+ }
+ function L(n) {
+ return n === i ? (e.consume(n), (i = void 0), P) : null === n ? t(n) : F(n) ? ((o = L), j(n)) : (e.consume(n), L);
+ }
+ function M(n) {
+ return null === n || 34 === n || 39 === n || 60 === n || 61 === n || 96 === n
+ ? t(n)
+ : 47 === n || 62 === n || b(n)
+ ? z(n)
+ : (e.consume(n), M);
+ }
+ function P(e) {
+ return 47 === e || 62 === e || b(e) ? z(e) : t(e);
+ }
+ function O(r) {
+ return 62 === r ? (e.consume(r), e.exit("htmlTextData"), e.exit("htmlText"), n) : t(r);
+ }
+ function j(n) {
+ return e.exit("htmlTextData"), e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), H;
+ }
+ function H(n) {
+ return v(n) ? I(e, R, "linePrefix", r.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4)(n) : R(n);
+ }
+ function R(n) {
+ return e.enter("htmlTextData"), o(n);
+ }
+ },
+ },
+ Ie = {
+ name: "codeText",
+ tokenize: function (e, n, t) {
+ let r,
+ i,
+ u = 0;
+ return function (n) {
+ return e.enter("codeText"), e.enter("codeTextSequence"), o(n);
+ };
+ function o(n) {
+ return 96 === n ? (e.consume(n), u++, o) : (e.exit("codeTextSequence"), c(n));
+ }
+ function c(n) {
+ return null === n
+ ? t(n)
+ : 32 === n
+ ? (e.enter("space"), e.consume(n), e.exit("space"), c)
+ : 96 === n
+ ? ((i = e.enter("codeTextSequence")), (r = 0), l(n))
+ : F(n)
+ ? (e.enter("lineEnding"), e.consume(n), e.exit("lineEnding"), c)
+ : (e.enter("codeTextData"), s(n));
+ }
+ function s(n) {
+ return null === n || 32 === n || 96 === n || F(n) ? (e.exit("codeTextData"), c(n)) : (e.consume(n), s);
+ }
+ function l(t) {
+ return 96 === t
+ ? (e.consume(t), r++, l)
+ : r === u
+ ? (e.exit("codeTextSequence"), e.exit("codeText"), n(t))
+ : ((i.type = "codeTextData"), s(t));
+ }
+ },
+ resolve: function (e) {
+ let n,
+ t,
+ r = e.length - 4,
+ i = 3;
+ if (!(("lineEnding" !== e[i][1].type && "space" !== e[i][1].type) || ("lineEnding" !== e[r][1].type && "space" !== e[r][1].type)))
+ for (n = i; ++n < r; )
+ if ("codeTextData" === e[n][1].type) {
+ (e[i][1].type = "codeTextPadding"), (e[r][1].type = "codeTextPadding"), (i += 2), (r -= 2);
+ break;
+ }
+ for (n = i - 1, r++; ++n <= r; )
+ void 0 === t
+ ? n !== r && "lineEnding" !== e[n][1].type && (t = n)
+ : (n !== r && "lineEnding" !== e[n][1].type) ||
+ ((e[t][1].type = "codeTextData"),
+ n !== t + 2 && ((e[t][1].end = e[n - 1][1].end), e.splice(t + 2, n - t - 2), (r -= n - t - 2), (n = t + 2)),
+ (t = void 0));
+ return e;
+ },
+ previous: function (e) {
+ return 96 !== e || "characterEscape" === this.events[this.events.length - 1][1].type;
+ },
+ },
+ we = {
+ 42: U,
+ 43: U,
+ 45: U,
+ 48: U,
+ 49: U,
+ 50: U,
+ 51: U,
+ 52: U,
+ 53: U,
+ 54: U,
+ 55: U,
+ 56: U,
+ 57: U,
+ 62: Z,
+ },
+ Ce = { 91: ee },
+ Te = { [-2]: te, [-1]: te, 32: te },
+ ze = { 35: ie, 42: N, 45: [ue, N], 60: se, 61: ue, 95: N, 96: de, 126: de },
+ De = { 38: me, 92: ge },
+ Be = {
+ [-5]: xe,
+ [-4]: xe,
+ [-3]: xe,
+ 33: {
+ name: "labelStartImage",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("labelImage"), e.enter("labelImageMarker"), e.consume(n), e.exit("labelImageMarker"), i;
+ };
+ function i(n) {
+ return 91 === n ? (e.enter("labelMarker"), e.consume(n), e.exit("labelMarker"), e.exit("labelImage"), u) : t(n);
+ }
+ function u(e) {
+ return 94 === e && "_hiddenFootnoteSupport" in r.parser.constructs ? t(e) : n(e);
+ }
+ },
+ resolveAll: ke.resolveAll,
+ },
+ 38: me,
+ 42: Se,
+ 60: [
+ {
+ name: "autolink",
+ tokenize: function (e, n, t) {
+ let r = 0;
+ return function (n) {
+ return e.enter("autolink"), e.enter("autolinkMarker"), e.consume(n), e.exit("autolinkMarker"), e.enter("autolinkProtocol"), i;
+ };
+ function i(n) {
+ return h(n) ? (e.consume(n), u) : s(n);
+ }
+ function u(e) {
+ return 43 === e || 45 === e || 46 === e || p(e) ? ((r = 1), o(e)) : s(e);
+ }
+ function o(n) {
+ return 58 === n
+ ? (e.consume(n), (r = 0), c)
+ : (43 === n || 45 === n || 46 === n || p(n)) && r++ < 32
+ ? (e.consume(n), o)
+ : ((r = 0), s(n));
+ }
+ function c(r) {
+ return 62 === r
+ ? (e.exit("autolinkProtocol"), e.enter("autolinkMarker"), e.consume(r), e.exit("autolinkMarker"), e.exit("autolink"), n)
+ : null === r || 32 === r || 60 === r || g(r)
+ ? t(r)
+ : (e.consume(r), c);
+ }
+ function s(n) {
+ return 64 === n ? (e.consume(n), l) : m(n) ? (e.consume(n), s) : t(n);
+ }
+ function l(e) {
+ return p(e) ? a(e) : t(e);
+ }
+ function a(t) {
+ return 46 === t
+ ? (e.consume(t), (r = 0), l)
+ : 62 === t
+ ? ((e.exit("autolinkProtocol").type = "autolinkEmail"),
+ e.enter("autolinkMarker"),
+ e.consume(t),
+ e.exit("autolinkMarker"),
+ e.exit("autolink"),
+ n)
+ : f(t);
+ }
+ function f(n) {
+ if ((45 === n || p(n)) && r++ < 63) {
+ const t = 45 === n ? f : a;
+ return e.consume(n), t;
+ }
+ return t(n);
+ }
+ },
+ },
+ Ae,
+ ],
+ 91: {
+ name: "labelStartLink",
+ tokenize: function (e, n, t) {
+ const r = this;
+ return function (n) {
+ return e.enter("labelLink"), e.enter("labelMarker"), e.consume(n), e.exit("labelMarker"), e.exit("labelLink"), i;
+ };
+ function i(e) {
+ return 94 === e && "_hiddenFootnoteSupport" in r.parser.constructs ? t(e) : n(e);
+ }
+ },
+ resolveAll: ke.resolveAll,
+ },
+ 92: [
+ {
+ name: "hardBreakEscape",
+ tokenize: function (e, n, t) {
+ return function (n) {
+ return e.enter("hardBreakEscape"), e.consume(n), r;
+ };
+ function r(r) {
+ return F(r) ? (e.exit("hardBreakEscape"), n(r)) : t(r);
+ }
+ },
+ },
+ ge,
+ ],
+ 93: ke,
+ 95: Se,
+ 96: Ie,
+ },
+ _e = { null: [Se, P] },
+ Le = { null: [42, 95] },
+ Me = { null: [] };
+ const Pe = /[\0\t\n\r]/g;
+ function Oe(e, n) {
+ const t = Number.parseInt(e, n);
+ return t < 9 ||
+ 11 === t ||
+ (t > 13 && t < 32) ||
+ (t > 126 && t < 160) ||
+ (t > 55295 && t < 57344) ||
+ (t > 64975 && t < 65008) ||
+ 65535 == (65535 & t) ||
+ 65534 == (65535 & t) ||
+ t > 1114111
+ ? "�"
+ : String.fromCharCode(t);
+ }
+ const je = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
+ function He(e, n, t) {
+ if (n) return n;
+ if (35 === t.charCodeAt(0)) {
+ const e = t.charCodeAt(1),
+ n = 120 === e || 88 === e;
+ return Oe(t.slice(n ? 2 : 1), n ? 16 : 10);
+ }
+ return pe(t) || e;
+ }
+ function Re(e) {
+ return e && "object" == typeof e
+ ? "position" in e || "type" in e
+ ? Ve(e.position)
+ : "start" in e || "end" in e
+ ? Ve(e)
+ : "line" in e || "column" in e
+ ? qe(e)
+ : ""
+ : "";
+ }
+ function qe(e) {
+ return Qe(e && e.line) + ":" + Qe(e && e.column);
+ }
+ function Ve(e) {
+ return qe(e && e.start) + "-" + qe(e && e.end);
+ }
+ function Qe(e) {
+ return e && "number" == typeof e ? e : 1;
+ }
+ const Ne = {}.hasOwnProperty,
+ Ue = function (e, n, t) {
+ return (
+ "string" != typeof n && ((t = n), (n = void 0)),
+ (function (e) {
+ const n = {
+ transforms: [],
+ canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"],
+ enter: {
+ autolink: s(v),
+ autolinkProtocol: p,
+ autolinkEmail: p,
+ atxHeading: s(y),
+ blockQuote: s(function () {
+ return { type: "blockquote", children: [] };
+ }),
+ characterEscape: p,
+ characterReference: p,
+ codeFenced: s(k),
+ codeFencedFenceInfo: l,
+ codeFencedFenceMeta: l,
+ codeIndented: s(k, l),
+ codeText: s(function () {
+ return { type: "inlineCode", value: "" };
+ }, l),
+ codeTextData: p,
+ data: p,
+ codeFlowValue: p,
+ definition: s(function () {
+ return {
+ type: "definition",
+ identifier: "",
+ label: null,
+ title: null,
+ url: "",
+ };
+ }),
+ definitionDestinationString: l,
+ definitionLabelString: l,
+ definitionTitleString: l,
+ emphasis: s(function () {
+ return { type: "emphasis", children: [] };
+ }),
+ hardBreakEscape: s(F),
+ hardBreakTrailing: s(F),
+ htmlFlow: s(b, l),
+ htmlFlowData: p,
+ htmlText: s(b, l),
+ htmlTextData: p,
+ image: s(function () {
+ return { type: "image", title: null, url: "", alt: null };
+ }),
+ label: l,
+ link: s(v),
+ listItem: s(function (e) {
+ return { type: "listItem", spread: e._spread, checked: null, children: [] };
+ }),
+ listItemValue: function (e) {
+ c("expectingFirstListItemValue") &&
+ ((this.stack[this.stack.length - 2].start = Number.parseInt(this.sliceSerialize(e), 10)), i("expectingFirstListItemValue"));
+ },
+ listOrdered: s(S, function () {
+ i("expectingFirstListItemValue", !0);
+ }),
+ listUnordered: s(S),
+ paragraph: s(function () {
+ return { type: "paragraph", children: [] };
+ }),
+ reference: function () {
+ i("referenceType", "collapsed");
+ },
+ referenceString: l,
+ resourceDestinationString: l,
+ resourceTitleString: l,
+ setextHeading: s(y),
+ strong: s(function () {
+ return { type: "strong", children: [] };
+ }),
+ thematicBreak: s(function () {
+ return { type: "thematicBreak" };
+ }),
+ },
+ exit: {
+ atxHeading: f(),
+ atxHeadingSequence: function (e) {
+ const n = this.stack[this.stack.length - 1];
+ if (!n.depth) {
+ const t = this.sliceSerialize(e).length;
+ n.depth = t;
+ }
+ },
+ autolink: f(),
+ autolinkEmail: function (e) {
+ m.call(this, e), (this.stack[this.stack.length - 1].url = "mailto:" + this.sliceSerialize(e));
+ },
+ autolinkProtocol: function (e) {
+ m.call(this, e), (this.stack[this.stack.length - 1].url = this.sliceSerialize(e));
+ },
+ blockQuote: f(),
+ characterEscapeValue: m,
+ characterReferenceMarkerHexadecimal: x,
+ characterReferenceMarkerNumeric: x,
+ characterReferenceValue: function (e) {
+ const n = this.sliceSerialize(e),
+ t = c("characterReferenceType");
+ let r;
+ t ? ((r = Oe(n, "characterReferenceMarkerNumeric" === t ? 10 : 16)), i("characterReferenceType")) : (r = pe(n));
+ const u = this.stack.pop();
+ (u.value += r), (u.position.end = $e(e.end));
+ },
+ codeFenced: f(function () {
+ const e = this.resume();
+ (this.stack[this.stack.length - 1].value = e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, "")), i("flowCodeInside");
+ }),
+ codeFencedFence: function () {
+ c("flowCodeInside") || (this.buffer(), i("flowCodeInside", !0));
+ },
+ codeFencedFenceInfo: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].lang = e;
+ },
+ codeFencedFenceMeta: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].meta = e;
+ },
+ codeFlowValue: m,
+ codeIndented: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e.replace(/(\r?\n|\r)$/g, "");
+ }),
+ codeText: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ codeTextData: m,
+ data: m,
+ definition: f(),
+ definitionDestinationString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].url = e;
+ },
+ definitionLabelString: function (e) {
+ const n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ (t.label = n), (t.identifier = X(this.sliceSerialize(e)).toLowerCase());
+ },
+ definitionTitleString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].title = e;
+ },
+ emphasis: f(),
+ hardBreakEscape: f(g),
+ hardBreakTrailing: f(g),
+ htmlFlow: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ htmlFlowData: m,
+ htmlText: f(function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].value = e;
+ }),
+ htmlTextData: m,
+ image: f(function () {
+ const e = this.stack[this.stack.length - 1];
+ if (c("inReference")) {
+ const n = c("referenceType") || "shortcut";
+ (e.type += "Reference"), (e.referenceType = n), delete e.url, delete e.title;
+ } else delete e.identifier, delete e.label;
+ i("referenceType");
+ }),
+ label: function () {
+ const e = this.stack[this.stack.length - 1],
+ n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ if ((i("inReference", !0), "link" === t.type)) {
+ const n = e.children;
+ t.children = n;
+ } else t.alt = n;
+ },
+ labelText: function (e) {
+ const n = this.sliceSerialize(e),
+ t = this.stack[this.stack.length - 2];
+ (t.label = (function (e) {
+ return e.replace(je, He);
+ })(n)),
+ (t.identifier = X(n).toLowerCase());
+ },
+ lineEnding: function (e) {
+ const t = this.stack[this.stack.length - 1];
+ if (c("atHardBreak")) return (t.children[t.children.length - 1].position.end = $e(e.end)), void i("atHardBreak");
+ !c("setextHeadingSlurpLineEnding") && n.canContainEols.includes(t.type) && (p.call(this, e), m.call(this, e));
+ },
+ link: f(function () {
+ const e = this.stack[this.stack.length - 1];
+ if (c("inReference")) {
+ const n = c("referenceType") || "shortcut";
+ (e.type += "Reference"), (e.referenceType = n), delete e.url, delete e.title;
+ } else delete e.identifier, delete e.label;
+ i("referenceType");
+ }),
+ listItem: f(),
+ listOrdered: f(),
+ listUnordered: f(),
+ paragraph: f(),
+ referenceString: function (e) {
+ const n = this.resume(),
+ t = this.stack[this.stack.length - 1];
+ (t.label = n), (t.identifier = X(this.sliceSerialize(e)).toLowerCase()), i("referenceType", "full");
+ },
+ resourceDestinationString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].url = e;
+ },
+ resourceTitleString: function () {
+ const e = this.resume();
+ this.stack[this.stack.length - 1].title = e;
+ },
+ resource: function () {
+ i("inReference");
+ },
+ setextHeading: f(function () {
+ i("setextHeadingSlurpLineEnding");
+ }),
+ setextHeadingLineSequence: function (e) {
+ this.stack[this.stack.length - 1].depth = 61 === this.sliceSerialize(e).charCodeAt(0) ? 1 : 2;
+ },
+ setextHeadingText: function () {
+ i("setextHeadingSlurpLineEnding", !0);
+ },
+ strong: f(),
+ thematicBreak: f(),
+ },
+ };
+ We(n, (e || {}).mdastExtensions || []);
+ const t = {};
+ return function (e) {
+ let t = { type: "root", children: [] };
+ const u = {
+ stack: [t],
+ tokenStack: [],
+ config: n,
+ enter: a,
+ exit: d,
+ buffer: l,
+ resume: h,
+ setData: i,
+ getData: c,
+ },
+ o = [];
+ let s = -1;
+ for (; ++s < e.length; )
+ ("listOrdered" !== e[s][1].type && "listUnordered" !== e[s][1].type) || ("enter" === e[s][0] ? o.push(s) : (s = r(e, o.pop(), s)));
+ for (s = -1; ++s < e.length; ) {
+ const t = n[e[s][0]];
+ Ne.call(t, e[s][1].type) && t[e[s][1].type].call(Object.assign({ sliceSerialize: e[s][2].sliceSerialize }, u), e[s][1]);
+ }
+ if (u.tokenStack.length > 0) {
+ const e = u.tokenStack[u.tokenStack.length - 1];
+ (e[1] || Ye).call(u, void 0, e[0]);
+ }
+ for (
+ t.position = {
+ start: $e(e.length > 0 ? e[0][1].start : { line: 1, column: 1, offset: 0 }),
+ end: $e(e.length > 0 ? e[e.length - 2][1].end : { line: 1, column: 1, offset: 0 }),
+ },
+ s = -1;
+ ++s < n.transforms.length;
+
+ )
+ t = n.transforms[s](t) || t;
+ return t;
+ };
+ function r(e, n, t) {
+ let r,
+ i,
+ u,
+ o,
+ c = n - 1,
+ s = -1,
+ l = !1;
+ for (; ++c <= t; ) {
+ const n = e[c];
+ if (
+ ("listUnordered" === n[1].type || "listOrdered" === n[1].type || "blockQuote" === n[1].type
+ ? ("enter" === n[0] ? s++ : s--, (o = void 0))
+ : "lineEndingBlank" === n[1].type
+ ? "enter" === n[0] && (!r || o || s || u || (u = c), (o = void 0))
+ : "linePrefix" === n[1].type ||
+ "listItemValue" === n[1].type ||
+ "listItemMarker" === n[1].type ||
+ "listItemPrefix" === n[1].type ||
+ "listItemPrefixWhitespace" === n[1].type ||
+ (o = void 0),
+ (!s && "enter" === n[0] && "listItemPrefix" === n[1].type) ||
+ (-1 === s && "exit" === n[0] && ("listUnordered" === n[1].type || "listOrdered" === n[1].type)))
+ ) {
+ if (r) {
+ let o = c;
+ for (i = void 0; o--; ) {
+ const n = e[o];
+ if ("lineEnding" === n[1].type || "lineEndingBlank" === n[1].type) {
+ if ("exit" === n[0]) continue;
+ i && ((e[i][1].type = "lineEndingBlank"), (l = !0)), (n[1].type = "lineEnding"), (i = o);
+ } else if (
+ "linePrefix" !== n[1].type &&
+ "blockQuotePrefix" !== n[1].type &&
+ "blockQuotePrefixWhitespace" !== n[1].type &&
+ "blockQuoteMarker" !== n[1].type &&
+ "listItemIndent" !== n[1].type
+ )
+ break;
+ }
+ u && (!i || u < i) && (r._spread = !0),
+ (r.end = Object.assign({}, i ? e[i][1].start : n[1].end)),
+ e.splice(i || c, 0, ["exit", r, n[2]]),
+ c++,
+ t++;
+ }
+ "listItemPrefix" === n[1].type &&
+ ((r = {
+ type: "listItem",
+ _spread: !1,
+ start: Object.assign({}, n[1].start),
+ end: void 0,
+ }),
+ e.splice(c, 0, ["enter", r, n[2]]),
+ c++,
+ t++,
+ (u = void 0),
+ (o = !0));
+ }
+ }
+ return (e[n][1]._spread = l), t;
+ }
+ function i(e, n) {
+ t[e] = n;
+ }
+ function c(e) {
+ return t[e];
+ }
+ function s(e, n) {
+ return function (t) {
+ a.call(this, e(t), t), n && n.call(this, t);
+ };
+ }
+ function l() {
+ this.stack.push({ type: "fragment", children: [] });
+ }
+ function a(e, n, t) {
+ return (
+ this.stack[this.stack.length - 1].children.push(e),
+ this.stack.push(e),
+ this.tokenStack.push([n, t]),
+ (e.position = { start: $e(n.start) }),
+ e
+ );
+ }
+ function f(e) {
+ return function (n) {
+ e && e.call(this, n), d.call(this, n);
+ };
+ }
+ function d(e, n) {
+ const t = this.stack.pop(),
+ r = this.tokenStack.pop();
+ if (!r) throw new Error("Cannot close `" + e.type + "` (" + Re({ start: e.start, end: e.end }) + "): it’s not open");
+ return r[0].type !== e.type && (n ? n.call(this, e, r[0]) : (r[1] || Ye).call(this, e, r[0])), (t.position.end = $e(e.end)), t;
+ }
+ function h() {
+ return (function (e, n) {
+ return o(e, "boolean" != typeof u.includeImageAlt || u.includeImageAlt, "boolean" != typeof u.includeHtml || u.includeHtml);
+ })(this.stack.pop());
+ }
+ function p(e) {
+ const n = this.stack[this.stack.length - 1];
+ let t = n.children[n.children.length - 1];
+ (t && "text" === t.type) || ((t = { type: "text", value: "" }), (t.position = { start: $e(e.start) }), n.children.push(t)),
+ this.stack.push(t);
+ }
+ function m(e) {
+ const n = this.stack.pop();
+ (n.value += this.sliceSerialize(e)), (n.position.end = $e(e.end));
+ }
+ function g() {
+ i("atHardBreak", !0);
+ }
+ function x(e) {
+ i("characterReferenceType", e.type);
+ }
+ function k() {
+ return { type: "code", lang: null, meta: null, value: "" };
+ }
+ function y() {
+ return { type: "heading", depth: void 0, children: [] };
+ }
+ function F() {
+ return { type: "break" };
+ }
+ function b() {
+ return { type: "html", value: "" };
+ }
+ function v() {
+ return { type: "link", title: null, url: "", children: [] };
+ }
+ function S(e) {
+ return {
+ type: "list",
+ ordered: "listOrdered" === e.type,
+ start: null,
+ spread: e._spread,
+ children: [],
+ };
+ }
+ })(t)(
+ (function (e) {
+ for (; !D(e); );
+ return e;
+ })(
+ (function (e) {
+ const n = (function (e) {
+ const n = {};
+ let t = -1;
+ for (; ++t < e.length; ) f(n, e[t]);
+ return n;
+ })([r, ...((e || {}).extensions || [])]),
+ t = {
+ defined: [],
+ lazy: {},
+ constructs: n,
+ content: i(w),
+ document: i(C),
+ flow: i(M),
+ string: i(O),
+ text: i(j),
+ };
+ return t;
+ function i(e) {
+ return function (n) {
+ return Q(t, e, n);
+ };
+ }
+ })(t)
+ .document()
+ .write(
+ (function () {
+ let e,
+ n = 1,
+ t = "",
+ r = !0;
+ return function (i, u, o) {
+ const c = [];
+ let s, l, a, f, d;
+ for (i = t + i.toString(u), a = 0, t = "", r && (65279 === i.charCodeAt(0) && a++, (r = void 0)); a < i.length; ) {
+ if (((Pe.lastIndex = a), (s = Pe.exec(i)), (f = s && void 0 !== s.index ? s.index : i.length), (d = i.charCodeAt(f)), !s)) {
+ t = i.slice(a);
+ break;
+ }
+ if (10 === d && a === f && e) c.push(-3), (e = void 0);
+ else
+ switch ((e && (c.push(-5), (e = void 0)), a < f && (c.push(i.slice(a, f)), (n += f - a)), d)) {
+ case 0:
+ c.push(65533), n++;
+ break;
+ case 9:
+ for (l = 4 * Math.ceil(n / 4), c.push(-2); n++ < l; ) c.push(-1);
+ break;
+ case 10:
+ c.push(-4), (n = 1);
+ break;
+ default:
+ (e = !0), (n = 1);
+ }
+ a = f + 1;
+ }
+ return o && (e && c.push(-5), t && c.push(t), c.push(null)), c;
+ };
+ })()(e, n, !0),
+ ),
+ ),
+ )
+ );
+ };
+ function $e(e) {
+ return { line: e.line, column: e.column, offset: e.offset };
+ }
+ function We(e, n) {
+ let t = -1;
+ for (; ++t < n.length; ) {
+ const r = n[t];
+ Array.isArray(r) ? We(e, r) : Ze(e, r);
+ }
+ }
+ function Ze(e, n) {
+ let t;
+ for (t in n)
+ if (Ne.call(n, t))
+ if ("canContainEols" === t) {
+ const r = n[t];
+ r && e[t].push(...r);
+ } else if ("transforms" === t) {
+ const r = n[t];
+ r && e[t].push(...r);
+ } else if ("enter" === t || "exit" === t) {
+ const r = n[t];
+ r && Object.assign(e[t], r);
+ }
+ }
+ function Ye(e, n) {
+ throw e
+ ? new Error(
+ "Cannot close `" +
+ e.type +
+ "` (" +
+ Re({ start: e.start, end: e.end }) +
+ "): a different token (`" +
+ n.type +
+ "`, " +
+ Re({ start: n.start, end: n.end }) +
+ ") is open",
+ )
+ : new Error("Cannot close document, a token (`" + n.type + "`, " + Re({ start: n.start, end: n.end }) + ") is still open");
+ }
+ var Ge = t(8464);
+ function Je(e) {
+ const n = (function (e) {
+ const n = e.replace(/\n{2,}/g, "\n");
+ return (0, Ge.Z)(n);
+ })(e),
+ { children: t } = Ue(n),
+ r = [[]];
+ let i = 0;
+ function u(e, n = "normal") {
+ "text" === e.type
+ ? e.value.split("\n").forEach((e, t) => {
+ 0 !== t && (i++, r.push([])),
+ e.split(" ").forEach((e) => {
+ e && r[i].push({ content: e, type: n });
+ });
+ })
+ : ("strong" !== e.type && "emphasis" !== e.type) ||
+ e.children.forEach((n) => {
+ u(n, e.type);
+ });
+ }
+ return (
+ t.forEach((e) => {
+ "paragraph" === e.type &&
+ e.children.forEach((e) => {
+ u(e);
+ });
+ }),
+ r
+ );
+ }
+ function Ke(e, n) {
+ var t;
+ return Xe(e, [], ((t = n.content), Intl.Segmenter ? [...new Intl.Segmenter().segment(t)].map((e) => e.segment) : [...t]), n.type);
+ }
+ function Xe(e, n, t, r) {
+ if (0 === t.length)
+ return [
+ { content: n.join(""), type: r },
+ { content: "", type: r },
+ ];
+ const [i, ...u] = t,
+ o = [...n, i];
+ return e([{ content: o.join(""), type: r }])
+ ? Xe(e, o, u, r)
+ : (0 === n.length && i && (n.push(i), t.shift()),
+ [
+ { content: n.join(""), type: r },
+ { content: t.join(""), type: r },
+ ]);
+ }
+ function en(e, n) {
+ if (e.some(({ content: e }) => e.includes("\n"))) throw new Error("splitLineToFitWidth does not support newlines in the line");
+ return nn(e, n);
+ }
+ function nn(e, n, t = [], r = []) {
+ if (0 === e.length) return r.length > 0 && t.push(r), t.length > 0 ? t : [];
+ let i = "";
+ " " === e[0].content && ((i = " "), e.shift());
+ const u = e.shift() ?? { content: " ", type: "normal" },
+ o = [...r];
+ if (("" !== i && o.push({ content: i, type: "normal" }), o.push(u), n(o))) return nn(e, n, t, o);
+ if (r.length > 0) t.push(r), e.unshift(u);
+ else if (u.content) {
+ const [r, i] = Ke(n, u);
+ t.push([r]), i.content && e.unshift(i);
+ }
+ return nn(e, n, t);
+ }
+ function tn(e, n, t) {
+ return e
+ .append("tspan")
+ .attr("class", "text-outer-tspan")
+ .attr("x", 0)
+ .attr("y", n * t - 0.1 + "em")
+ .attr("dy", t + "em");
+ }
+ function rn(e, n, t) {
+ const r = e.append("text"),
+ i = tn(r, 1, n);
+ un(i, t);
+ const u = i.node().getComputedTextLength();
+ return r.remove(), u;
+ }
+ function un(e, n) {
+ e.text(""),
+ n.forEach((n, t) => {
+ const r = e
+ .append("tspan")
+ .attr("font-style", "emphasis" === n.type ? "italic" : "normal")
+ .attr("class", "text-inner-tspan")
+ .attr("font-weight", "strong" === n.type ? "bold" : "normal");
+ 0 === t ? r.text(n.content) : r.text(" " + n.content);
+ });
+ }
+ const on = (
+ e,
+ n = "",
+ { style: t = "", isTitle: r = !1, classes: u = "", useHtmlLabels: o = !0, isNode: c = !0, width: s = 200, addSvgBackground: l = !1 } = {},
+ ) => {
+ if ((i.l.info("createText", n, t, r, u, o, c, l), o)) {
+ const r = (function (e) {
+ const { children: n } = Ue(e);
+ return n
+ .map(function e(n) {
+ return "text" === n.type
+ ? n.value.replace(/\n/g, " ")
+ : "strong" === n.type
+ ? `${n.children.map(e).join("")} `
+ : "emphasis" === n.type
+ ? `${n.children.map(e).join("")} `
+ : "paragraph" === n.type
+ ? `${n.children.map(e).join("")}
`
+ : `Unsupported markdown: ${n.type}`;
+ })
+ .join("");
+ })(n),
+ o = (function (e, n, t, r, i = !1) {
+ const u = e.append("foreignObject"),
+ o = u.append("xhtml:div"),
+ c = n.label,
+ s = n.isNode ? "nodeLabel" : "edgeLabel";
+ var l, a;
+ o.html(`\n " + c + " "),
+ (l = o),
+ (a = n.labelStyle) && l.attr("style", a),
+ o.style("display", "table-cell"),
+ o.style("white-space", "nowrap"),
+ o.style("max-width", t + "px"),
+ o.attr("xmlns", "http://www.w3.org/1999/xhtml"),
+ i && o.attr("class", "labelBkg");
+ let f = o.node().getBoundingClientRect();
+ return (
+ f.width === t &&
+ (o.style("display", "table"),
+ o.style("white-space", "break-spaces"),
+ o.style("width", t + "px"),
+ (f = o.node().getBoundingClientRect())),
+ u.style("width", f.width),
+ u.style("height", f.height),
+ u.node()
+ );
+ })(
+ e,
+ {
+ isNode: c,
+ label: (0, i.L)(r).replace(/fa[blrs]?:fa-[\w-]+/g, (e) => ` `),
+ labelStyle: t.replace("fill:", "color:"),
+ },
+ s,
+ u,
+ l,
+ );
+ return o;
+ }
+ {
+ const t = (function (e, n, t, r = !1) {
+ const i = n.append("g"),
+ u = i.insert("rect").attr("class", "background"),
+ o = i.append("text").attr("y", "-10.1");
+ let c = 0;
+ for (const n of t) {
+ const t = (n) => rn(i, 1.1, n) <= e,
+ r = t(n) ? [n] : en(n, t);
+ for (const e of r) un(tn(o, c, 1.1), e), c++;
+ }
+ if (r) {
+ const e = o.node().getBBox(),
+ n = 2;
+ return (
+ u
+ .attr("x", -n)
+ .attr("y", -n)
+ .attr("width", e.width + 2 * n)
+ .attr("height", e.height + 2 * n),
+ i.node()
+ );
+ }
+ return o.node();
+ })(s, e, Je(n), l);
+ return t;
+ }
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js
index 5762f1020..bee8e3e85 100644
--- a/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js
@@ -1 +1,463 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[519],{9519:function(t,e,a){a.d(e,{diagram:function(){return g}});var r=a(1423),n=a(7274),i=a(3771),d=a(5625),o=a(9339),s=a(7863);a(7484),a(7967),a(7856);let l={};const p=function(t){const e=Object.entries(l).find((e=>e[1].label===t));if(e)return e[0]},c={draw:function(t,e,a,r){const c=(0,o.c)().class;l={},o.l.info("Rendering diagram "+t);const g=(0,o.c)().securityLevel;let h;"sandbox"===g&&(h=(0,n.Ys)("#i"+e));const f="sandbox"===g?(0,n.Ys)(h.nodes()[0].contentDocument.body):(0,n.Ys)("body"),u=f.select(`[id='${e}']`);var x;(x=u).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),x.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),x.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),x.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),x.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),x.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),x.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),x.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");const y=new d.k({multigraph:!0});y.setGraph({isMultiGraph:!0}),y.setDefaultEdgeLabel((function(){return{}}));const b=r.db.getClasses(),m=Object.keys(b);for(const t of m){const e=b[t],a=s.s.drawClass(u,e,c,r);l[a.id]=a,y.setNode(a.id,a),o.l.info("Org height: "+a.height)}r.db.getRelations().forEach((function(t){o.l.info("tjoho"+p(t.id1)+p(t.id2)+JSON.stringify(t)),y.setEdge(p(t.id1),p(t.id2),{relation:t},t.title||"DEFAULT")})),r.db.getNotes().forEach((function(t){o.l.debug(`Adding note: ${JSON.stringify(t)}`);const e=s.s.drawNote(u,t,c,r);l[e.id]=e,y.setNode(e.id,e),t.class&&t.class in b&&y.setEdge(t.id,p(t.class),{relation:{id1:t.id,id2:t.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")})),(0,i.bK)(y),y.nodes().forEach((function(t){void 0!==t&&void 0!==y.node(t)&&(o.l.debug("Node "+t+": "+JSON.stringify(y.node(t))),f.select("#"+(r.db.lookUpDomId(t)||t)).attr("transform","translate("+(y.node(t).x-y.node(t).width/2)+","+(y.node(t).y-y.node(t).height/2)+" )"))})),y.edges().forEach((function(t){void 0!==t&&void 0!==y.edge(t)&&(o.l.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(y.edge(t))),s.s.drawEdge(u,y.edge(t),y.edge(t).relation,c,r))}));const w=u.node().getBBox(),k=w.width+40,E=w.height+40;(0,o.i)(u,E,k,c.useMaxWidth);const L=`${w.x-20} ${w.y-20} ${k} ${E}`;o.l.debug(`viewBox ${L}`),u.attr("viewBox",L)}},g={parser:r.p,db:r.d,renderer:c,styles:r.s,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,r.d.clear()}}},7863:function(t,e,a){a.d(e,{p:function(){return o},s:function(){return p}});var r=a(7274),n=a(9339);let i=0;const d=function(t){let e=t.id;return t.type&&(e+="<"+t.type+">"),e},o=function(t){let e="",a="",r="",i="",d=t.substring(0,1),o=t.substring(t.length-1,t.length);d.match(/[#+~-]/)&&(i=d);let s=/[\s\w)~]/;o.match(s)||(a=l(o));const p=""===i?0:1;let c=""===a?t.length:t.length-1;const g=(t=t.substring(p,c)).indexOf("("),h=t.indexOf(")");if(g>1&&h>g&&h<=t.length){let d=t.substring(0,g).trim();const o=t.substring(g+1,h);if(e=i+d+"("+(0,n.x)(o.trim())+")",h0&&(k+=e.cssClasses.join(" "));const E=l.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",w.width+2*a.padding).attr("height",w.height+a.padding+.5*a.dividerMargin).attr("class",k).node().getBBox().width;return p.node().childNodes.forEach((function(t){t.setAttribute("x",(E-t.getBBox().width)/2)})),e.tooltip&&p.insert("title").text(e.tooltip),u.attr("x2",E),b.attr("x2",E),o.width=E,o.height=w.height+a.padding+.5*a.dividerMargin,o},drawEdge:function(t,e,a,d,o){const s=function(t){switch(t){case o.db.relationType.AGGREGATION:return"aggregation";case o.db.relationType.EXTENSION:return"extension";case o.db.relationType.COMPOSITION:return"composition";case o.db.relationType.DEPENDENCY:return"dependency";case o.db.relationType.LOLLIPOP:return"lollipop"}};e.points=e.points.filter((t=>!Number.isNaN(t.y)));const l=e.points,p=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(r.$0Z),c=t.append("path").attr("d",p(l)).attr("id","edge"+i).attr("class","relation");let g,h,f="";d.arrowMarkerAbsolute&&(f=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,f=f.replace(/\(/g,"\\("),f=f.replace(/\)/g,"\\)")),1==a.relation.lineType&&c.attr("class","relation dashed-line"),10==a.relation.lineType&&c.attr("class","relation dotted-line"),"none"!==a.relation.type1&&c.attr("marker-start","url("+f+"#"+s(a.relation.type1)+"Start)"),"none"!==a.relation.type2&&c.attr("marker-end","url("+f+"#"+s(a.relation.type2)+"End)");const u=e.points.length;let x,y,b,m,w=n.u.calcLabelPosition(e.points);if(g=w.x,h=w.y,u%2!=0&&u>1){let t=n.u.calcCardinalityPosition("none"!==a.relation.type1,e.points,e.points[0]),r=n.u.calcCardinalityPosition("none"!==a.relation.type2,e.points,e.points[u-1]);n.l.debug("cardinality_1_point "+JSON.stringify(t)),n.l.debug("cardinality_2_point "+JSON.stringify(r)),x=t.x,y=t.y,b=r.x,m=r.y}if(void 0!==a.title){const e=t.append("g").attr("class","classLabel"),r=e.append("text").attr("class","label").attr("x",g).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(a.title);window.label=r;const n=r.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",n.x-d.padding/2).attr("y",n.y-d.padding/2).attr("width",n.width+d.padding).attr("height",n.height+d.padding)}n.l.info("Rendering relation "+JSON.stringify(a)),void 0!==a.relationTitle1&&"none"!==a.relationTitle1&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",x).attr("y",y).attr("fill","black").attr("font-size","6").text(a.relationTitle1),void 0!==a.relationTitle2&&"none"!==a.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",b).attr("y",m).attr("fill","black").attr("font-size","6").text(a.relationTitle2),i++},drawNote:function(t,e,a,r){n.l.debug("Rendering note ",e,a);const i=e.id,d={id:i,text:e.text,width:0,height:0},o=t.append("g").attr("id",i).attr("class","classGroup");let s=o.append("text").attr("y",a.textHeight+a.padding).attr("x",0);const l=JSON.parse(`"${e.text}"`).split("\n");l.forEach((function(t){n.l.debug(`Adding line: ${t}`),s.append("tspan").text(t).attr("class","title").attr("dy",a.textHeight)}));const p=o.node().getBBox(),c=o.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",p.width+2*a.padding).attr("height",p.height+l.length*a.textHeight+a.padding+.5*a.dividerMargin).node().getBBox().width;return s.node().childNodes.forEach((function(t){t.setAttribute("x",(c-t.getBBox().width)/2)})),d.width=c,d.height=p.height+l.length*a.textHeight+a.padding+.5*a.dividerMargin,d},parseMember:o}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [519],
+ {
+ 9519: function (t, e, a) {
+ a.d(e, {
+ diagram: function () {
+ return g;
+ },
+ });
+ var r = a(1423),
+ n = a(7274),
+ i = a(3771),
+ d = a(5625),
+ o = a(9339),
+ s = a(7863);
+ a(7484), a(7967), a(7856);
+ let l = {};
+ const p = function (t) {
+ const e = Object.entries(l).find((e) => e[1].label === t);
+ if (e) return e[0];
+ },
+ c = {
+ draw: function (t, e, a, r) {
+ const c = (0, o.c)().class;
+ (l = {}), o.l.info("Rendering diagram " + t);
+ const g = (0, o.c)().securityLevel;
+ let h;
+ "sandbox" === g && (h = (0, n.Ys)("#i" + e));
+ const f = "sandbox" === g ? (0, n.Ys)(h.nodes()[0].contentDocument.body) : (0, n.Ys)("body"),
+ u = f.select(`[id='${e}']`);
+ var x;
+ (x = u)
+ .append("defs")
+ .append("marker")
+ .attr("id", "extensionStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 1,7 L18,13 V 1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "extensionEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 1,1 V 13 L18,7 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "compositionStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "compositionEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "aggregationStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "aggregationEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "dependencyStart")
+ .attr("class", "extension")
+ .attr("refX", 0)
+ .attr("refY", 7)
+ .attr("markerWidth", 190)
+ .attr("markerHeight", 240)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"),
+ x
+ .append("defs")
+ .append("marker")
+ .attr("id", "dependencyEnd")
+ .attr("refX", 19)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ const y = new d.k({ multigraph: !0 });
+ y.setGraph({ isMultiGraph: !0 }),
+ y.setDefaultEdgeLabel(function () {
+ return {};
+ });
+ const b = r.db.getClasses(),
+ m = Object.keys(b);
+ for (const t of m) {
+ const e = b[t],
+ a = s.s.drawClass(u, e, c, r);
+ (l[a.id] = a), y.setNode(a.id, a), o.l.info("Org height: " + a.height);
+ }
+ r.db.getRelations().forEach(function (t) {
+ o.l.info("tjoho" + p(t.id1) + p(t.id2) + JSON.stringify(t)), y.setEdge(p(t.id1), p(t.id2), { relation: t }, t.title || "DEFAULT");
+ }),
+ r.db.getNotes().forEach(function (t) {
+ o.l.debug(`Adding note: ${JSON.stringify(t)}`);
+ const e = s.s.drawNote(u, t, c, r);
+ (l[e.id] = e),
+ y.setNode(e.id, e),
+ t.class &&
+ t.class in b &&
+ y.setEdge(
+ t.id,
+ p(t.class),
+ {
+ relation: {
+ id1: t.id,
+ id2: t.class,
+ relation: { type1: "none", type2: "none", lineType: 10 },
+ },
+ },
+ "DEFAULT",
+ );
+ }),
+ (0, i.bK)(y),
+ y.nodes().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== y.node(t) &&
+ (o.l.debug("Node " + t + ": " + JSON.stringify(y.node(t))),
+ f
+ .select("#" + (r.db.lookUpDomId(t) || t))
+ .attr("transform", "translate(" + (y.node(t).x - y.node(t).width / 2) + "," + (y.node(t).y - y.node(t).height / 2) + " )"));
+ }),
+ y.edges().forEach(function (t) {
+ void 0 !== t &&
+ void 0 !== y.edge(t) &&
+ (o.l.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(y.edge(t))), s.s.drawEdge(u, y.edge(t), y.edge(t).relation, c, r));
+ });
+ const w = u.node().getBBox(),
+ k = w.width + 40,
+ E = w.height + 40;
+ (0, o.i)(u, E, k, c.useMaxWidth);
+ const L = `${w.x - 20} ${w.y - 20} ${k} ${E}`;
+ o.l.debug(`viewBox ${L}`), u.attr("viewBox", L);
+ },
+ },
+ g = {
+ parser: r.p,
+ db: r.d,
+ renderer: c,
+ styles: r.s,
+ init: (t) => {
+ t.class || (t.class = {}), (t.class.arrowMarkerAbsolute = t.arrowMarkerAbsolute), r.d.clear();
+ },
+ };
+ },
+ 7863: function (t, e, a) {
+ a.d(e, {
+ p: function () {
+ return o;
+ },
+ s: function () {
+ return p;
+ },
+ });
+ var r = a(7274),
+ n = a(9339);
+ let i = 0;
+ const d = function (t) {
+ let e = t.id;
+ return t.type && (e += "<" + t.type + ">"), e;
+ },
+ o = function (t) {
+ let e = "",
+ a = "",
+ r = "",
+ i = "",
+ d = t.substring(0, 1),
+ o = t.substring(t.length - 1, t.length);
+ d.match(/[#+~-]/) && (i = d);
+ let s = /[\s\w)~]/;
+ o.match(s) || (a = l(o));
+ const p = "" === i ? 0 : 1;
+ let c = "" === a ? t.length : t.length - 1;
+ const g = (t = t.substring(p, c)).indexOf("("),
+ h = t.indexOf(")");
+ if (g > 1 && h > g && h <= t.length) {
+ let d = t.substring(0, g).trim();
+ const o = t.substring(g + 1, h);
+ if (((e = i + d + "(" + (0, n.x)(o.trim()) + ")"), h < t.length)) {
+ let i = t.substring(h + 1, h + 2);
+ "" !== a || i.match(s) ? (r = t.substring(h + 1).trim()) : ((a = l(i)), (r = t.substring(h + 2).trim())),
+ "" !== r && (":" === r.charAt(0) && (r = r.substring(1).trim()), (r = " : " + (0, n.x)(r)), (e += r));
+ }
+ } else e = i + (0, n.x)(t);
+ return { displayText: e, cssStyle: a };
+ },
+ s = function (t, e, a, r) {
+ let n = o(e);
+ const i = t.append("tspan").attr("x", r.padding).text(n.displayText);
+ "" !== n.cssStyle && i.attr("style", n.cssStyle), a || i.attr("dy", r.textHeight);
+ },
+ l = function (t) {
+ switch (t) {
+ case "*":
+ return "font-style:italic;";
+ case "$":
+ return "text-decoration:underline;";
+ default:
+ return "";
+ }
+ },
+ p = {
+ getClassTitleString: d,
+ drawClass: function (t, e, a, r) {
+ n.l.debug("Rendering class ", e, a);
+ const i = e.id,
+ o = { id: i, label: e.id, width: 0, height: 0 },
+ l = t.append("g").attr("id", r.db.lookUpDomId(i)).attr("class", "classGroup");
+ let p;
+ p = e.link
+ ? l
+ .append("svg:a")
+ .attr("xlink:href", e.link)
+ .attr("target", e.linkTarget)
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0)
+ : l
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0);
+ let c = !0;
+ e.annotations.forEach(function (t) {
+ const e = p.append("tspan").text("«" + t + "»");
+ c || e.attr("dy", a.textHeight), (c = !1);
+ });
+ let g = d(e);
+ const h = p.append("tspan").text(g).attr("class", "title");
+ c || h.attr("dy", a.textHeight);
+ const f = p.node().getBBox().height,
+ u = l
+ .append("line")
+ .attr("x1", 0)
+ .attr("y1", a.padding + f + a.dividerMargin / 2)
+ .attr("y2", a.padding + f + a.dividerMargin / 2),
+ x = l
+ .append("text")
+ .attr("x", a.padding)
+ .attr("y", f + a.dividerMargin + a.textHeight)
+ .attr("fill", "white")
+ .attr("class", "classText");
+ (c = !0),
+ e.members.forEach(function (t) {
+ s(x, t, c, a), (c = !1);
+ });
+ const y = x.node().getBBox(),
+ b = l
+ .append("line")
+ .attr("x1", 0)
+ .attr("y1", a.padding + f + a.dividerMargin + y.height)
+ .attr("y2", a.padding + f + a.dividerMargin + y.height),
+ m = l
+ .append("text")
+ .attr("x", a.padding)
+ .attr("y", f + 2 * a.dividerMargin + y.height + a.textHeight)
+ .attr("fill", "white")
+ .attr("class", "classText");
+ (c = !0),
+ e.methods.forEach(function (t) {
+ s(m, t, c, a), (c = !1);
+ });
+ const w = l.node().getBBox();
+ var k = " ";
+ e.cssClasses.length > 0 && (k += e.cssClasses.join(" "));
+ const E = l
+ .insert("rect", ":first-child")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", w.width + 2 * a.padding)
+ .attr("height", w.height + a.padding + 0.5 * a.dividerMargin)
+ .attr("class", k)
+ .node()
+ .getBBox().width;
+ return (
+ p.node().childNodes.forEach(function (t) {
+ t.setAttribute("x", (E - t.getBBox().width) / 2);
+ }),
+ e.tooltip && p.insert("title").text(e.tooltip),
+ u.attr("x2", E),
+ b.attr("x2", E),
+ (o.width = E),
+ (o.height = w.height + a.padding + 0.5 * a.dividerMargin),
+ o
+ );
+ },
+ drawEdge: function (t, e, a, d, o) {
+ const s = function (t) {
+ switch (t) {
+ case o.db.relationType.AGGREGATION:
+ return "aggregation";
+ case o.db.relationType.EXTENSION:
+ return "extension";
+ case o.db.relationType.COMPOSITION:
+ return "composition";
+ case o.db.relationType.DEPENDENCY:
+ return "dependency";
+ case o.db.relationType.LOLLIPOP:
+ return "lollipop";
+ }
+ };
+ e.points = e.points.filter((t) => !Number.isNaN(t.y));
+ const l = e.points,
+ p = (0, r.jvg)()
+ .x(function (t) {
+ return t.x;
+ })
+ .y(function (t) {
+ return t.y;
+ })
+ .curve(r.$0Z),
+ c = t
+ .append("path")
+ .attr("d", p(l))
+ .attr("id", "edge" + i)
+ .attr("class", "relation");
+ let g,
+ h,
+ f = "";
+ d.arrowMarkerAbsolute &&
+ ((f = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search),
+ (f = f.replace(/\(/g, "\\(")),
+ (f = f.replace(/\)/g, "\\)"))),
+ 1 == a.relation.lineType && c.attr("class", "relation dashed-line"),
+ 10 == a.relation.lineType && c.attr("class", "relation dotted-line"),
+ "none" !== a.relation.type1 && c.attr("marker-start", "url(" + f + "#" + s(a.relation.type1) + "Start)"),
+ "none" !== a.relation.type2 && c.attr("marker-end", "url(" + f + "#" + s(a.relation.type2) + "End)");
+ const u = e.points.length;
+ let x,
+ y,
+ b,
+ m,
+ w = n.u.calcLabelPosition(e.points);
+ if (((g = w.x), (h = w.y), u % 2 != 0 && u > 1)) {
+ let t = n.u.calcCardinalityPosition("none" !== a.relation.type1, e.points, e.points[0]),
+ r = n.u.calcCardinalityPosition("none" !== a.relation.type2, e.points, e.points[u - 1]);
+ n.l.debug("cardinality_1_point " + JSON.stringify(t)),
+ n.l.debug("cardinality_2_point " + JSON.stringify(r)),
+ (x = t.x),
+ (y = t.y),
+ (b = r.x),
+ (m = r.y);
+ }
+ if (void 0 !== a.title) {
+ const e = t.append("g").attr("class", "classLabel"),
+ r = e.append("text").attr("class", "label").attr("x", g).attr("y", h).attr("fill", "red").attr("text-anchor", "middle").text(a.title);
+ window.label = r;
+ const n = r.node().getBBox();
+ e.insert("rect", ":first-child")
+ .attr("class", "box")
+ .attr("x", n.x - d.padding / 2)
+ .attr("y", n.y - d.padding / 2)
+ .attr("width", n.width + d.padding)
+ .attr("height", n.height + d.padding);
+ }
+ n.l.info("Rendering relation " + JSON.stringify(a)),
+ void 0 !== a.relationTitle1 &&
+ "none" !== a.relationTitle1 &&
+ t
+ .append("g")
+ .attr("class", "cardinality")
+ .append("text")
+ .attr("class", "type1")
+ .attr("x", x)
+ .attr("y", y)
+ .attr("fill", "black")
+ .attr("font-size", "6")
+ .text(a.relationTitle1),
+ void 0 !== a.relationTitle2 &&
+ "none" !== a.relationTitle2 &&
+ t
+ .append("g")
+ .attr("class", "cardinality")
+ .append("text")
+ .attr("class", "type2")
+ .attr("x", b)
+ .attr("y", m)
+ .attr("fill", "black")
+ .attr("font-size", "6")
+ .text(a.relationTitle2),
+ i++;
+ },
+ drawNote: function (t, e, a, r) {
+ n.l.debug("Rendering note ", e, a);
+ const i = e.id,
+ d = { id: i, text: e.text, width: 0, height: 0 },
+ o = t.append("g").attr("id", i).attr("class", "classGroup");
+ let s = o
+ .append("text")
+ .attr("y", a.textHeight + a.padding)
+ .attr("x", 0);
+ const l = JSON.parse(`"${e.text}"`).split("\n");
+ l.forEach(function (t) {
+ n.l.debug(`Adding line: ${t}`), s.append("tspan").text(t).attr("class", "title").attr("dy", a.textHeight);
+ });
+ const p = o.node().getBBox(),
+ c = o
+ .insert("rect", ":first-child")
+ .attr("x", 0)
+ .attr("y", 0)
+ .attr("width", p.width + 2 * a.padding)
+ .attr("height", p.height + l.length * a.textHeight + a.padding + 0.5 * a.dividerMargin)
+ .node()
+ .getBBox().width;
+ return (
+ s.node().childNodes.forEach(function (t) {
+ t.setAttribute("x", (c - t.getBBox().width) / 2);
+ }),
+ (d.width = c),
+ (d.height = p.height + l.length * a.textHeight + a.padding + 0.5 * a.dividerMargin),
+ d
+ );
+ },
+ parseMember: o,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js
index ecc1a28a2..64fce02f0 100644
--- a/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js
@@ -1 +1,1379 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[535],{1535:function(t,e,i){i.d(e,{D:function(){return l},S:function(){return c},a:function(){return h},b:function(){return a},c:function(){return o},d:function(){return B},p:function(){return r},s:function(){return P}});var s=i(9339),n=function(){var t=function(t,e,i,s){for(i=i||{},s=t.length;s--;i[t[s]]=e);return i},e=[1,2],i=[1,3],s=[1,5],n=[1,7],r=[2,5],o=[1,15],a=[1,17],c=[1,21],l=[1,22],h=[1,23],u=[1,24],d=[1,37],p=[1,25],y=[1,26],f=[1,27],g=[1,28],m=[1,29],_=[1,32],S=[1,33],k=[1,34],T=[1,35],b=[1,36],E=[1,39],v=[1,40],x=[1,41],D=[1,42],C=[1,38],$=[1,45],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],I=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],O=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],N={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(t,e,i,s,n,r,o){var a=r.length-1;switch(n){case 4:return s.setRootDoc(r[a]),r[a];case 5:this.$=[];break;case 6:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 7:case 8:case 12:this.$=r[a];break;case 9:this.$="nl";break;case 13:const t=r[a-1];t.description=s.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=s.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:s.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 30:this.$=r[a].trim(),s.setAccTitle(this.$);break;case 31:case 32:this.$=r[a].trim(),s.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 35:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:s.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:s.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:s.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:s.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""};break;case 50:s.parseDirective("%%{","open_directive");break;case 51:s.parseDirective(r[a],"type_directive");break;case 52:r[a]=r[a].trim().replace(/'/g,'"'),s.parseDirective(r[a],"arg_directive");break;case 53:s.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:i,6:4,7:s,45:6,60:n},{1:[3]},{3:8,4:e,5:i,6:4,7:s,45:6,60:n},{3:9,4:e,5:i,6:4,7:s,45:6,60:n},{3:10,4:e,5:i,6:4,7:s,45:6,60:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],r,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:a,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:l,19:h,22:u,24:d,25:p,26:y,27:f,28:g,29:m,32:31,33:_,35:S,37:k,38:T,42:b,45:6,50:E,51:v,52:x,53:D,56:C,60:n},{47:43,48:[1,44],63:$},t([48,63],[2,51]),t(A,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:c,17:l,19:h,22:u,24:d,25:p,26:y,27:f,28:g,29:m,32:31,33:_,35:S,37:k,38:T,42:b,45:6,50:E,51:v,52:x,53:D,56:C,60:n},t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,47],15:[1,48]}),t(A,[2,16]),{18:[1,49]},t(A,[2,18],{20:[1,50]}),{23:[1,51]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},t(A,[2,28]),t(A,[2,29]),{34:[1,56]},{36:[1,57]},t(A,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},t(L,[2,44],{57:[1,61]}),t(L,[2,45],{57:[1,62]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(I,[2,36]),{49:63,62:[1,64]},t(I,[2,53]),t(A,[2,7]),t(A,[2,13]),{13:65,24:d,56:C},t(A,[2,17]),t(O,r,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},t(A,[2,30]),t(A,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:$},{63:[2,52]},t(A,[2,14],{14:[1,76]}),{4:o,5:a,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:l,19:h,21:[1,77],22:u,24:d,25:p,26:y,27:f,28:g,29:m,32:31,33:_,35:S,37:k,38:T,42:b,45:6,50:E,51:v,52:x,53:D,56:C,60:n},t(A,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},t(A,[2,33]),t(A,[2,34]),t(A,[2,35]),t(L,[2,46]),t(L,[2,47]),t(I,[2,37]),t(A,[2,15]),t(A,[2,19]),t(O,r,{8:81}),t(A,[2,26]),t(A,[2,27]),{4:o,5:a,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:l,19:h,21:[1,82],22:u,24:d,25:p,26:y,27:f,28:g,29:m,32:31,33:_,35:S,37:k,38:T,42:b,45:6,50:E,51:v,52:x,53:D,56:C,60:n},t(A,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},parse:function(t){var e=[0],i=[],s=[null],n=[],r=this.table,o="",a=0,c=0,l=n.slice.call(arguments,1),h=Object.create(this.lexer),u={yy:{}};for(var d in this.yy)Object.prototype.hasOwnProperty.call(this.yy,d)&&(u.yy[d]=this.yy[d]);h.setInput(t,u.yy),u.yy.lexer=h,u.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var p=h.yylloc;n.push(p);var y=h.options&&h.options.ranges;"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var f,g,m,_,S,k,T,b,E,v={};;){if(g=e[e.length-1],this.defaultActions[g]?m=this.defaultActions[g]:(null==f&&(E=void 0,"number"!=typeof(E=i.pop()||h.lex()||1)&&(E instanceof Array&&(E=(i=E).pop()),E=this.symbols_[E]||E),f=E),m=r[g]&&r[g][f]),void 0===m||!m.length||!m[0]){var x;for(S in b=[],r[g])this.terminals_[S]&&S>2&&b.push("'"+this.terminals_[S]+"'");x=h.showPosition?"Parse error on line "+(a+1)+":\n"+h.showPosition()+"\nExpecting "+b.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(x,{text:h.match,token:this.terminals_[f]||f,line:h.yylineno,loc:p,expected:b})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+f);switch(m[0]){case 1:e.push(f),s.push(h.yytext),n.push(h.yylloc),e.push(m[1]),f=null,c=h.yyleng,o=h.yytext,a=h.yylineno,p=h.yylloc;break;case 2:if(k=this.productions_[m[1]][1],v.$=s[s.length-k],v._$={first_line:n[n.length-(k||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(k||1)].first_column,last_column:n[n.length-1].last_column},y&&(v._$.range=[n[n.length-(k||1)].range[0],n[n.length-1].range[1]]),void 0!==(_=this.performAction.apply(v,[o,c,a,u.yy,m[1],s,n].concat(l))))return _;k&&(e=e.slice(0,-1*k*2),s=s.slice(0,-1*k),n=n.slice(0,-1*k)),e.push(this.productions_[m[1]][0]),s.push(v.$),n.push(v._$),T=r[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0}},R={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===s.length?this.yylloc.first_column:0)+s[s.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var i,s,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,i,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=i,s=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,i,s){switch(i){case 0:return 41;case 1:case 44:return 50;case 2:case 45:return 51;case 3:case 46:return 52;case 4:case 47:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:case 11:case 13:case 14:case 15:case 16:case 56:case 58:case 64:break;case 12:case 79:return 5;case 17:case 34:return this.pushState("SCALE"),17;case 18:case 35:return 18;case 19:case 25:case 36:case 51:case 54:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 37:this.pushState("STATE");break;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:case 66:return this.popState(),"ID";case 52:return"STATE_DESCR";case 53:return 19;case 55:return this.popState(),this.pushState("struct"),20;case 57:return this.popState(),21;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 65:return"NOTE_TEXT";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 69:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 70:case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return e.yytext=e.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};function w(){this.yy={}}return N.lexer=R,w.prototype=N,N.Parser=w,new w}();n.parser=n;const r=n,o="TB",a="state",c="relation",l="default",h="divider",u="[*]",d="start",p=u,y="color",f="fill";let g="LR",m=[],_={},S={root:{relations:[],states:{},documents:{}}},k=S.root,T=0,b=0;const E=t=>JSON.parse(JSON.stringify(t)),v=(t,e,i)=>{if(e.stmt===c)v(t,e.state1,!0),v(t,e.state2,!1);else if(e.stmt===a&&("[*]"===e.id?(e.id=i?t.id+"_start":t.id+"_end",e.start=i):e.id=e.id.trim()),e.doc){const t=[];let i,n=[];for(i=0;i0&&n.length>0){const i={stmt:a,id:(0,s.I)(),type:"divider",doc:E(n)};t.push(E(i)),e.doc=t}e.doc.forEach((t=>v(e,t,!0)))}},x=function(t,e=l,i=null,n=null,r=null,o=null,a=null,c=null){const h=null==t?void 0:t.trim();void 0===k.states[h]?(s.l.info("Adding state ",h,n),k.states[h]={id:h,descriptions:[],type:e,doc:i,note:r,classes:[],styles:[],textStyles:[]}):(k.states[h].doc||(k.states[h].doc=i),k.states[h].type||(k.states[h].type=e)),n&&(s.l.info("Setting state description",h,n),"string"==typeof n&&I(h,n.trim()),"object"==typeof n&&n.forEach((t=>I(h,t.trim())))),r&&(k.states[h].note=r,k.states[h].note.text=s.e.sanitizeText(k.states[h].note.text,(0,s.c)())),o&&(s.l.info("Setting state classes",h,o),("string"==typeof o?[o]:o).forEach((t=>N(h,t.trim())))),a&&(s.l.info("Setting state styles",h,a),("string"==typeof a?[a]:a).forEach((t=>R(h,t.trim())))),c&&(s.l.info("Setting state styles",h,a),("string"==typeof c?[c]:c).forEach((t=>w(h,t.trim()))))},D=function(t){S={root:{relations:[],states:{},documents:{}}},k=S.root,T=0,_={},t||(0,s.v)()},C=function(t){return k.states[t]};function $(t=""){let e=t;return t===u&&(T++,e=`${d}${T}`),e}function A(t="",e=l){return t===u?d:e}const L=function(t,e,i){if("object"==typeof t)!function(t,e,i){let n=$(t.id.trim()),r=A(t.id.trim(),t.type),o=$(e.id.trim()),a=A(e.id.trim(),e.type);x(n,r,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),x(o,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),k.relations.push({id1:n,id2:o,relationTitle:s.e.sanitizeText(i,(0,s.c)())})}(t,e,i);else{const n=$(t.trim()),r=A(t),o=function(t=""){let e=t;return t===p&&(T++,e=`end${T}`),e}(e.trim()),a=function(t="",e=l){return t===p?"end":e}(e);x(n,r),x(o,a),k.relations.push({id1:n,id2:o,title:s.e.sanitizeText(i,(0,s.c)())})}},I=function(t,e){const i=k.states[t],n=e.startsWith(":")?e.replace(":","").trim():e;i.descriptions.push(s.e.sanitizeText(n,(0,s.c)()))},O=function(t,e=""){void 0===_[t]&&(_[t]={id:t,styles:[],textStyles:[]});const i=_[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(y)){const t=e.replace(f,"bgFill").replace(y,f);i.textStyles.push(t)}i.styles.push(e)}))},N=function(t,e){t.split(",").forEach((function(t){let i=C(t);if(void 0===i){const e=t.trim();x(e),i=C(e)}i.classes.push(e)}))},R=function(t,e){const i=C(t);void 0!==i&&i.textStyles.push(e)},w=function(t,e){const i=C(t);void 0!==i&&i.textStyles.push(e)},B={parseDirective:function(t,e,i){s.m.parseDirective(this,t,e,i)},getConfig:()=>(0,s.c)().state,addState:x,clear:D,getState:C,getStates:function(){return k.states},getRelations:function(){return k.relations},getClasses:function(){return _},getDirection:()=>g,addRelation:L,getDividerId:()=>(b++,"divider-id-"+b),setDirection:t=>{g=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){s.l.info("Documents = ",S)},getRootDoc:()=>m,setRootDoc:t=>{s.l.info("Setting root doc",t),m=t},getRootDocV2:()=>(v({id:"root"},{id:"root",doc:m},!0),{id:"root",doc:m}),extract:t=>{let e;e=t.doc?t.doc:t,s.l.info(e),D(!0),s.l.info("Extract",e),e.forEach((t=>{switch(t.stmt){case a:x(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case c:L(t.state1,t.state2,t.description);break;case"classDef":O(t.id.trim(),t.classes);break;case"applyClass":N(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:s.g,setAccTitle:s.s,getAccDescription:s.a,setAccDescription:s.b,addStyleClass:O,setCssClass:N,addDescription:I,setDiagramTitle:s.r,getDiagramTitle:s.t},P=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [535],
+ {
+ 1535: function (t, e, i) {
+ i.d(e, {
+ D: function () {
+ return l;
+ },
+ S: function () {
+ return c;
+ },
+ a: function () {
+ return h;
+ },
+ b: function () {
+ return a;
+ },
+ c: function () {
+ return o;
+ },
+ d: function () {
+ return B;
+ },
+ p: function () {
+ return r;
+ },
+ s: function () {
+ return P;
+ },
+ });
+ var s = i(9339),
+ n = (function () {
+ var t = function (t, e, i, s) {
+ for (i = i || {}, s = t.length; s--; i[t[s]] = e);
+ return i;
+ },
+ e = [1, 2],
+ i = [1, 3],
+ s = [1, 5],
+ n = [1, 7],
+ r = [2, 5],
+ o = [1, 15],
+ a = [1, 17],
+ c = [1, 21],
+ l = [1, 22],
+ h = [1, 23],
+ u = [1, 24],
+ d = [1, 37],
+ p = [1, 25],
+ y = [1, 26],
+ f = [1, 27],
+ g = [1, 28],
+ m = [1, 29],
+ _ = [1, 32],
+ S = [1, 33],
+ k = [1, 34],
+ T = [1, 35],
+ b = [1, 36],
+ E = [1, 39],
+ v = [1, 40],
+ x = [1, 41],
+ D = [1, 42],
+ C = [1, 38],
+ $ = [1, 45],
+ A = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ L = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ I = [1, 4, 5, 7, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ O = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60],
+ N = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SPACE: 4,
+ NL: 5,
+ directive: 6,
+ SD: 7,
+ document: 8,
+ line: 9,
+ statement: 10,
+ classDefStatement: 11,
+ cssClassStatement: 12,
+ idStatement: 13,
+ DESCR: 14,
+ "--\x3e": 15,
+ HIDE_EMPTY: 16,
+ scale: 17,
+ WIDTH: 18,
+ COMPOSIT_STATE: 19,
+ STRUCT_START: 20,
+ STRUCT_STOP: 21,
+ STATE_DESCR: 22,
+ AS: 23,
+ ID: 24,
+ FORK: 25,
+ JOIN: 26,
+ CHOICE: 27,
+ CONCURRENT: 28,
+ note: 29,
+ notePosition: 30,
+ NOTE_TEXT: 31,
+ direction: 32,
+ acc_title: 33,
+ acc_title_value: 34,
+ acc_descr: 35,
+ acc_descr_value: 36,
+ acc_descr_multiline_value: 37,
+ classDef: 38,
+ CLASSDEF_ID: 39,
+ CLASSDEF_STYLEOPTS: 40,
+ DEFAULT: 41,
+ class: 42,
+ CLASSENTITY_IDS: 43,
+ STYLECLASS: 44,
+ openDirective: 45,
+ typeDirective: 46,
+ closeDirective: 47,
+ ":": 48,
+ argDirective: 49,
+ direction_tb: 50,
+ direction_bt: 51,
+ direction_rl: 52,
+ direction_lr: 53,
+ eol: 54,
+ ";": 55,
+ EDGE_STATE: 56,
+ STYLE_SEPARATOR: 57,
+ left_of: 58,
+ right_of: 59,
+ open_directive: 60,
+ type_directive: 61,
+ arg_directive: 62,
+ close_directive: 63,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SPACE",
+ 5: "NL",
+ 7: "SD",
+ 14: "DESCR",
+ 15: "--\x3e",
+ 16: "HIDE_EMPTY",
+ 17: "scale",
+ 18: "WIDTH",
+ 19: "COMPOSIT_STATE",
+ 20: "STRUCT_START",
+ 21: "STRUCT_STOP",
+ 22: "STATE_DESCR",
+ 23: "AS",
+ 24: "ID",
+ 25: "FORK",
+ 26: "JOIN",
+ 27: "CHOICE",
+ 28: "CONCURRENT",
+ 29: "note",
+ 31: "NOTE_TEXT",
+ 33: "acc_title",
+ 34: "acc_title_value",
+ 35: "acc_descr",
+ 36: "acc_descr_value",
+ 37: "acc_descr_multiline_value",
+ 38: "classDef",
+ 39: "CLASSDEF_ID",
+ 40: "CLASSDEF_STYLEOPTS",
+ 41: "DEFAULT",
+ 42: "class",
+ 43: "CLASSENTITY_IDS",
+ 44: "STYLECLASS",
+ 48: ":",
+ 50: "direction_tb",
+ 51: "direction_bt",
+ 52: "direction_rl",
+ 53: "direction_lr",
+ 55: ";",
+ 56: "EDGE_STATE",
+ 57: "STYLE_SEPARATOR",
+ 58: "left_of",
+ 59: "right_of",
+ 60: "open_directive",
+ 61: "type_directive",
+ 62: "arg_directive",
+ 63: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [8, 0],
+ [8, 2],
+ [9, 2],
+ [9, 1],
+ [9, 1],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 3],
+ [10, 4],
+ [10, 1],
+ [10, 2],
+ [10, 1],
+ [10, 4],
+ [10, 3],
+ [10, 6],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [10, 4],
+ [10, 4],
+ [10, 1],
+ [10, 1],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [11, 3],
+ [11, 3],
+ [12, 3],
+ [6, 3],
+ [6, 5],
+ [32, 1],
+ [32, 1],
+ [32, 1],
+ [32, 1],
+ [54, 1],
+ [54, 1],
+ [13, 1],
+ [13, 1],
+ [13, 3],
+ [13, 3],
+ [30, 1],
+ [30, 1],
+ [45, 1],
+ [46, 1],
+ [49, 1],
+ [47, 1],
+ ],
+ performAction: function (t, e, i, s, n, r, o) {
+ var a = r.length - 1;
+ switch (n) {
+ case 4:
+ return s.setRootDoc(r[a]), r[a];
+ case 5:
+ this.$ = [];
+ break;
+ case 6:
+ "nl" != r[a] && (r[a - 1].push(r[a]), (this.$ = r[a - 1]));
+ break;
+ case 7:
+ case 8:
+ case 12:
+ this.$ = r[a];
+ break;
+ case 9:
+ this.$ = "nl";
+ break;
+ case 13:
+ const t = r[a - 1];
+ (t.description = s.trimColon(r[a])), (this.$ = t);
+ break;
+ case 14:
+ this.$ = { stmt: "relation", state1: r[a - 2], state2: r[a] };
+ break;
+ case 15:
+ const e = s.trimColon(r[a]);
+ this.$ = {
+ stmt: "relation",
+ state1: r[a - 3],
+ state2: r[a - 1],
+ description: e,
+ };
+ break;
+ case 19:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 3],
+ type: "default",
+ description: "",
+ doc: r[a - 1],
+ };
+ break;
+ case 20:
+ var c = r[a],
+ l = r[a - 2].trim();
+ if (r[a].match(":")) {
+ var h = r[a].split(":");
+ (c = h[0]), (l = [l, h[1]]);
+ }
+ this.$ = { stmt: "state", id: c, type: "default", description: l };
+ break;
+ case 21:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 3],
+ type: "default",
+ description: r[a - 5],
+ doc: r[a - 1],
+ };
+ break;
+ case 22:
+ this.$ = { stmt: "state", id: r[a], type: "fork" };
+ break;
+ case 23:
+ this.$ = { stmt: "state", id: r[a], type: "join" };
+ break;
+ case 24:
+ this.$ = { stmt: "state", id: r[a], type: "choice" };
+ break;
+ case 25:
+ this.$ = { stmt: "state", id: s.getDividerId(), type: "divider" };
+ break;
+ case 26:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 1].trim(),
+ note: { position: r[a - 2].trim(), text: r[a].trim() },
+ };
+ break;
+ case 30:
+ (this.$ = r[a].trim()), s.setAccTitle(this.$);
+ break;
+ case 31:
+ case 32:
+ (this.$ = r[a].trim()), s.setAccDescription(this.$);
+ break;
+ case 33:
+ case 34:
+ this.$ = { stmt: "classDef", id: r[a - 1].trim(), classes: r[a].trim() };
+ break;
+ case 35:
+ this.$ = { stmt: "applyClass", id: r[a - 1].trim(), styleClass: r[a].trim() };
+ break;
+ case 38:
+ s.setDirection("TB"), (this.$ = { stmt: "dir", value: "TB" });
+ break;
+ case 39:
+ s.setDirection("BT"), (this.$ = { stmt: "dir", value: "BT" });
+ break;
+ case 40:
+ s.setDirection("RL"), (this.$ = { stmt: "dir", value: "RL" });
+ break;
+ case 41:
+ s.setDirection("LR"), (this.$ = { stmt: "dir", value: "LR" });
+ break;
+ case 44:
+ case 45:
+ this.$ = { stmt: "state", id: r[a].trim(), type: "default", description: "" };
+ break;
+ case 46:
+ case 47:
+ this.$ = {
+ stmt: "state",
+ id: r[a - 2].trim(),
+ classes: [r[a].trim()],
+ type: "default",
+ description: "",
+ };
+ break;
+ case 50:
+ s.parseDirective("%%{", "open_directive");
+ break;
+ case 51:
+ s.parseDirective(r[a], "type_directive");
+ break;
+ case 52:
+ (r[a] = r[a].trim().replace(/'/g, '"')), s.parseDirective(r[a], "arg_directive");
+ break;
+ case 53:
+ s.parseDirective("}%%", "close_directive", "state");
+ }
+ },
+ table: [
+ { 3: 1, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 1: [3] },
+ { 3: 8, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 3: 9, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ { 3: 10, 4: e, 5: i, 6: 4, 7: s, 45: 6, 60: n },
+ t([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], r, { 8: 11 }),
+ { 46: 12, 61: [1, 13] },
+ { 61: [2, 50] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ { 1: [2, 3] },
+ {
+ 1: [2, 4],
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ { 47: 43, 48: [1, 44], 63: $ },
+ t([48, 63], [2, 51]),
+ t(A, [2, 6]),
+ {
+ 6: 30,
+ 10: 46,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 8]),
+ t(A, [2, 9]),
+ t(A, [2, 10]),
+ t(A, [2, 11]),
+ t(A, [2, 12], { 14: [1, 47], 15: [1, 48] }),
+ t(A, [2, 16]),
+ { 18: [1, 49] },
+ t(A, [2, 18], { 20: [1, 50] }),
+ { 23: [1, 51] },
+ t(A, [2, 22]),
+ t(A, [2, 23]),
+ t(A, [2, 24]),
+ t(A, [2, 25]),
+ { 30: 52, 31: [1, 53], 58: [1, 54], 59: [1, 55] },
+ t(A, [2, 28]),
+ t(A, [2, 29]),
+ { 34: [1, 56] },
+ { 36: [1, 57] },
+ t(A, [2, 32]),
+ { 39: [1, 58], 41: [1, 59] },
+ { 43: [1, 60] },
+ t(L, [2, 44], { 57: [1, 61] }),
+ t(L, [2, 45], { 57: [1, 62] }),
+ t(A, [2, 38]),
+ t(A, [2, 39]),
+ t(A, [2, 40]),
+ t(A, [2, 41]),
+ t(I, [2, 36]),
+ { 49: 63, 62: [1, 64] },
+ t(I, [2, 53]),
+ t(A, [2, 7]),
+ t(A, [2, 13]),
+ { 13: 65, 24: d, 56: C },
+ t(A, [2, 17]),
+ t(O, r, { 8: 66 }),
+ { 24: [1, 67] },
+ { 24: [1, 68] },
+ { 23: [1, 69] },
+ { 24: [2, 48] },
+ { 24: [2, 49] },
+ t(A, [2, 30]),
+ t(A, [2, 31]),
+ { 40: [1, 70] },
+ { 40: [1, 71] },
+ { 44: [1, 72] },
+ { 24: [1, 73] },
+ { 24: [1, 74] },
+ { 47: 75, 63: $ },
+ { 63: [2, 52] },
+ t(A, [2, 14], { 14: [1, 76] }),
+ {
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 21: [1, 77],
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 20], { 20: [1, 78] }),
+ { 31: [1, 79] },
+ { 24: [1, 80] },
+ t(A, [2, 33]),
+ t(A, [2, 34]),
+ t(A, [2, 35]),
+ t(L, [2, 46]),
+ t(L, [2, 47]),
+ t(I, [2, 37]),
+ t(A, [2, 15]),
+ t(A, [2, 19]),
+ t(O, r, { 8: 81 }),
+ t(A, [2, 26]),
+ t(A, [2, 27]),
+ {
+ 4: o,
+ 5: a,
+ 6: 30,
+ 9: 14,
+ 10: 16,
+ 11: 18,
+ 12: 19,
+ 13: 20,
+ 16: c,
+ 17: l,
+ 19: h,
+ 21: [1, 82],
+ 22: u,
+ 24: d,
+ 25: p,
+ 26: y,
+ 27: f,
+ 28: g,
+ 29: m,
+ 32: 31,
+ 33: _,
+ 35: S,
+ 37: k,
+ 38: T,
+ 42: b,
+ 45: 6,
+ 50: E,
+ 51: v,
+ 52: x,
+ 53: D,
+ 56: C,
+ 60: n,
+ },
+ t(A, [2, 21]),
+ ],
+ defaultActions: {
+ 7: [2, 50],
+ 8: [2, 1],
+ 9: [2, 2],
+ 10: [2, 3],
+ 54: [2, 48],
+ 55: [2, 49],
+ 64: [2, 52],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var i = new Error(t);
+ throw ((i.hash = e), i);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ i = [],
+ s = [null],
+ n = [],
+ r = this.table,
+ o = "",
+ a = 0,
+ c = 0,
+ l = n.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var d in this.yy) Object.prototype.hasOwnProperty.call(this.yy, d) && (u.yy[d] = this.yy[d]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ n.push(p);
+ var y = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, g, m, _, S, k, T, b, E, v = {}; ; ) {
+ if (
+ ((g = e[e.length - 1]),
+ this.defaultActions[g]
+ ? (m = this.defaultActions[g])
+ : (null == f &&
+ ((E = void 0),
+ "number" != typeof (E = i.pop() || h.lex() || 1) &&
+ (E instanceof Array && (E = (i = E).pop()), (E = this.symbols_[E] || E)),
+ (f = E)),
+ (m = r[g] && r[g][f])),
+ void 0 === m || !m.length || !m[0])
+ ) {
+ var x;
+ for (S in ((b = []), r[g])) this.terminals_[S] && S > 2 && b.push("'" + this.terminals_[S] + "'");
+ (x = h.showPosition
+ ? "Parse error on line " +
+ (a + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (a + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(x, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: b,
+ });
+ }
+ if (m[0] instanceof Array && m.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + f);
+ switch (m[0]) {
+ case 1:
+ e.push(f),
+ s.push(h.yytext),
+ n.push(h.yylloc),
+ e.push(m[1]),
+ (f = null),
+ (c = h.yyleng),
+ (o = h.yytext),
+ (a = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((k = this.productions_[m[1]][1]),
+ (v.$ = s[s.length - k]),
+ (v._$ = {
+ first_line: n[n.length - (k || 1)].first_line,
+ last_line: n[n.length - 1].last_line,
+ first_column: n[n.length - (k || 1)].first_column,
+ last_column: n[n.length - 1].last_column,
+ }),
+ y && (v._$.range = [n[n.length - (k || 1)].range[0], n[n.length - 1].range[1]]),
+ void 0 !== (_ = this.performAction.apply(v, [o, c, a, u.yy, m[1], s, n].concat(l))))
+ )
+ return _;
+ k && ((e = e.slice(0, -1 * k * 2)), (s = s.slice(0, -1 * k)), (n = n.slice(0, -1 * k))),
+ e.push(this.productions_[m[1]][0]),
+ s.push(v.$),
+ n.push(v._$),
+ (T = r[e[e.length - 2]][e[e.length - 1]]),
+ e.push(T);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ R = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ i = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var s = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var n = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === s.length ? this.yylloc.first_column : 0) + s[s.length - i.length].length - i[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [n[0], n[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var i, s, n;
+ if (
+ (this.options.backtrack_lexer &&
+ ((n = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (n.yylloc.range = this.yylloc.range.slice(0))),
+ (s = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += s.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (i = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var r in n) this[r] = n[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, i, s;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var n = this._currentRules(), r = 0; r < n.length; r++)
+ if ((i = this._input.match(this.rules[n[r]])) && (!e || i[0].length > e[0].length)) {
+ if (((e = i), (s = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(i, n[r]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, n[s])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, i, s) {
+ switch (i) {
+ case 0:
+ return 41;
+ case 1:
+ case 44:
+ return 50;
+ case 2:
+ case 45:
+ return 51;
+ case 3:
+ case 46:
+ return 52;
+ case 4:
+ case 47:
+ return 53;
+ case 5:
+ return this.begin("open_directive"), 60;
+ case 6:
+ return this.begin("type_directive"), 61;
+ case 7:
+ return this.popState(), this.begin("arg_directive"), 48;
+ case 8:
+ return this.popState(), this.popState(), 63;
+ case 9:
+ return 62;
+ case 10:
+ case 11:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 56:
+ case 58:
+ case 64:
+ break;
+ case 12:
+ case 79:
+ return 5;
+ case 17:
+ case 34:
+ return this.pushState("SCALE"), 17;
+ case 18:
+ case 35:
+ return 18;
+ case 19:
+ case 25:
+ case 36:
+ case 51:
+ case 54:
+ this.popState();
+ break;
+ case 20:
+ return this.begin("acc_title"), 33;
+ case 21:
+ return this.popState(), "acc_title_value";
+ case 22:
+ return this.begin("acc_descr"), 35;
+ case 23:
+ return this.popState(), "acc_descr_value";
+ case 24:
+ this.begin("acc_descr_multiline");
+ break;
+ case 26:
+ return "acc_descr_multiline_value";
+ case 27:
+ return this.pushState("CLASSDEF"), 38;
+ case 28:
+ return this.popState(), this.pushState("CLASSDEFID"), "DEFAULT_CLASSDEF_ID";
+ case 29:
+ return this.popState(), this.pushState("CLASSDEFID"), 39;
+ case 30:
+ return this.popState(), 40;
+ case 31:
+ return this.pushState("CLASS"), 42;
+ case 32:
+ return this.popState(), this.pushState("CLASS_STYLE"), 43;
+ case 33:
+ return this.popState(), 44;
+ case 37:
+ this.pushState("STATE");
+ break;
+ case 38:
+ case 41:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 25;
+ case 39:
+ case 42:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 26;
+ case 40:
+ case 43:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -10).trim()), 27;
+ case 48:
+ this.pushState("STATE_STRING");
+ break;
+ case 49:
+ return this.pushState("STATE_ID"), "AS";
+ case 50:
+ case 66:
+ return this.popState(), "ID";
+ case 52:
+ return "STATE_DESCR";
+ case 53:
+ return 19;
+ case 55:
+ return this.popState(), this.pushState("struct"), 20;
+ case 57:
+ return this.popState(), 21;
+ case 59:
+ return this.begin("NOTE"), 29;
+ case 60:
+ return this.popState(), this.pushState("NOTE_ID"), 58;
+ case 61:
+ return this.popState(), this.pushState("NOTE_ID"), 59;
+ case 62:
+ this.popState(), this.pushState("FLOATING_NOTE");
+ break;
+ case 63:
+ return this.popState(), this.pushState("FLOATING_NOTE_ID"), "AS";
+ case 65:
+ return "NOTE_TEXT";
+ case 67:
+ return this.popState(), this.pushState("NOTE_TEXT"), 24;
+ case 68:
+ return this.popState(), (e.yytext = e.yytext.substr(2).trim()), 31;
+ case 69:
+ return this.popState(), (e.yytext = e.yytext.slice(0, -8).trim()), 31;
+ case 70:
+ case 71:
+ return 7;
+ case 72:
+ return 16;
+ case 73:
+ return 56;
+ case 74:
+ return 24;
+ case 75:
+ return (e.yytext = e.yytext.trim()), 14;
+ case 76:
+ return 15;
+ case 77:
+ return 28;
+ case 78:
+ return 57;
+ case 80:
+ return "INVALID";
+ }
+ },
+ rules: [
+ /^(?:default\b)/i,
+ /^(?:.*direction\s+TB[^\n]*)/i,
+ /^(?:.*direction\s+BT[^\n]*)/i,
+ /^(?:.*direction\s+RL[^\n]*)/i,
+ /^(?:.*direction\s+LR[^\n]*)/i,
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n]+)/i,
+ /^(?:[\s]+)/i,
+ /^(?:((?!\n)\s)+)/i,
+ /^(?:#[^\n]*)/i,
+ /^(?:%[^\n]*)/i,
+ /^(?:scale\s+)/i,
+ /^(?:\d+)/i,
+ /^(?:\s+width\b)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:classDef\s+)/i,
+ /^(?:DEFAULT\s+)/i,
+ /^(?:\w+\s+)/i,
+ /^(?:[^\n]*)/i,
+ /^(?:class\s+)/i,
+ /^(?:(\w+)+((,\s*\w+)*))/i,
+ /^(?:[^\n]*)/i,
+ /^(?:scale\s+)/i,
+ /^(?:\d+)/i,
+ /^(?:\s+width\b)/i,
+ /^(?:state\s+)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*<>)/i,
+ /^(?:.*\[\[fork\]\])/i,
+ /^(?:.*\[\[join\]\])/i,
+ /^(?:.*\[\[choice\]\])/i,
+ /^(?:.*direction\s+TB[^\n]*)/i,
+ /^(?:.*direction\s+BT[^\n]*)/i,
+ /^(?:.*direction\s+RL[^\n]*)/i,
+ /^(?:.*direction\s+LR[^\n]*)/i,
+ /^(?:["])/i,
+ /^(?:\s*as\s+)/i,
+ /^(?:[^\n\{]*)/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[^\n\s\{]+)/i,
+ /^(?:\n)/i,
+ /^(?:\{)/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:\})/i,
+ /^(?:[\n])/i,
+ /^(?:note\s+)/i,
+ /^(?:left of\b)/i,
+ /^(?:right of\b)/i,
+ /^(?:")/i,
+ /^(?:\s*as\s*)/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:[^\n]*)/i,
+ /^(?:\s*[^:\n\s\-]+)/i,
+ /^(?:\s*:[^:\n;]+)/i,
+ /^(?:[\s\S]*?end note\b)/i,
+ /^(?:stateDiagram\s+)/i,
+ /^(?:stateDiagram-v2\s+)/i,
+ /^(?:hide empty description\b)/i,
+ /^(?:\[\*\])/i,
+ /^(?:[^:\n\s\-\{]+)/i,
+ /^(?:\s*:[^:\n;]+)/i,
+ /^(?:-->)/i,
+ /^(?:--)/i,
+ /^(?::::)/i,
+ /^(?:$)/i,
+ /^(?:.)/i,
+ ],
+ conditions: {
+ LINE: { rules: [14, 15], inclusive: !1 },
+ close_directive: { rules: [14, 15], inclusive: !1 },
+ arg_directive: { rules: [8, 9, 14, 15], inclusive: !1 },
+ type_directive: { rules: [7, 8, 14, 15], inclusive: !1 },
+ open_directive: { rules: [6, 14, 15], inclusive: !1 },
+ struct: {
+ rules: [14, 15, 27, 31, 37, 44, 45, 46, 47, 56, 57, 58, 59, 73, 74, 75, 76, 77],
+ inclusive: !1,
+ },
+ FLOATING_NOTE_ID: { rules: [66], inclusive: !1 },
+ FLOATING_NOTE: { rules: [63, 64, 65], inclusive: !1 },
+ NOTE_TEXT: { rules: [68, 69], inclusive: !1 },
+ NOTE_ID: { rules: [67], inclusive: !1 },
+ NOTE: { rules: [60, 61, 62], inclusive: !1 },
+ CLASS_STYLE: { rules: [33], inclusive: !1 },
+ CLASS: { rules: [32], inclusive: !1 },
+ CLASSDEFID: { rules: [30], inclusive: !1 },
+ CLASSDEF: { rules: [28, 29], inclusive: !1 },
+ acc_descr_multiline: { rules: [25, 26], inclusive: !1 },
+ acc_descr: { rules: [23], inclusive: !1 },
+ acc_title: { rules: [21], inclusive: !1 },
+ SCALE: { rules: [18, 19, 35, 36], inclusive: !1 },
+ ALIAS: { rules: [], inclusive: !1 },
+ STATE_ID: { rules: [50], inclusive: !1 },
+ STATE_STRING: { rules: [51, 52], inclusive: !1 },
+ FORK_STATE: { rules: [], inclusive: !1 },
+ STATE: {
+ rules: [14, 15, 38, 39, 40, 41, 42, 43, 48, 49, 53, 54, 55],
+ inclusive: !1,
+ },
+ ID: { rules: [14, 15], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 15, 16, 17, 20, 22, 24, 27, 31, 34, 37, 55, 59, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80],
+ inclusive: !0,
+ },
+ },
+ };
+ function w() {
+ this.yy = {};
+ }
+ return (N.lexer = R), (w.prototype = N), (N.Parser = w), new w();
+ })();
+ n.parser = n;
+ const r = n,
+ o = "TB",
+ a = "state",
+ c = "relation",
+ l = "default",
+ h = "divider",
+ u = "[*]",
+ d = "start",
+ p = u,
+ y = "color",
+ f = "fill";
+ let g = "LR",
+ m = [],
+ _ = {},
+ S = { root: { relations: [], states: {}, documents: {} } },
+ k = S.root,
+ T = 0,
+ b = 0;
+ const E = (t) => JSON.parse(JSON.stringify(t)),
+ v = (t, e, i) => {
+ if (e.stmt === c) v(t, e.state1, !0), v(t, e.state2, !1);
+ else if ((e.stmt === a && ("[*]" === e.id ? ((e.id = i ? t.id + "_start" : t.id + "_end"), (e.start = i)) : (e.id = e.id.trim())), e.doc)) {
+ const t = [];
+ let i,
+ n = [];
+ for (i = 0; i < e.doc.length; i++)
+ if (e.doc[i].type === h) {
+ const s = E(e.doc[i]);
+ (s.doc = E(n)), t.push(s), (n = []);
+ } else n.push(e.doc[i]);
+ if (t.length > 0 && n.length > 0) {
+ const i = { stmt: a, id: (0, s.I)(), type: "divider", doc: E(n) };
+ t.push(E(i)), (e.doc = t);
+ }
+ e.doc.forEach((t) => v(e, t, !0));
+ }
+ },
+ x = function (t, e = l, i = null, n = null, r = null, o = null, a = null, c = null) {
+ const h = null == t ? void 0 : t.trim();
+ void 0 === k.states[h]
+ ? (s.l.info("Adding state ", h, n),
+ (k.states[h] = {
+ id: h,
+ descriptions: [],
+ type: e,
+ doc: i,
+ note: r,
+ classes: [],
+ styles: [],
+ textStyles: [],
+ }))
+ : (k.states[h].doc || (k.states[h].doc = i), k.states[h].type || (k.states[h].type = e)),
+ n &&
+ (s.l.info("Setting state description", h, n),
+ "string" == typeof n && I(h, n.trim()),
+ "object" == typeof n && n.forEach((t) => I(h, t.trim()))),
+ r && ((k.states[h].note = r), (k.states[h].note.text = s.e.sanitizeText(k.states[h].note.text, (0, s.c)()))),
+ o && (s.l.info("Setting state classes", h, o), ("string" == typeof o ? [o] : o).forEach((t) => N(h, t.trim()))),
+ a && (s.l.info("Setting state styles", h, a), ("string" == typeof a ? [a] : a).forEach((t) => R(h, t.trim()))),
+ c && (s.l.info("Setting state styles", h, a), ("string" == typeof c ? [c] : c).forEach((t) => w(h, t.trim())));
+ },
+ D = function (t) {
+ (S = { root: { relations: [], states: {}, documents: {} } }), (k = S.root), (T = 0), (_ = {}), t || (0, s.v)();
+ },
+ C = function (t) {
+ return k.states[t];
+ };
+ function $(t = "") {
+ let e = t;
+ return t === u && (T++, (e = `${d}${T}`)), e;
+ }
+ function A(t = "", e = l) {
+ return t === u ? d : e;
+ }
+ const L = function (t, e, i) {
+ if ("object" == typeof t)
+ !(function (t, e, i) {
+ let n = $(t.id.trim()),
+ r = A(t.id.trim(), t.type),
+ o = $(e.id.trim()),
+ a = A(e.id.trim(), e.type);
+ x(n, r, t.doc, t.description, t.note, t.classes, t.styles, t.textStyles),
+ x(o, a, e.doc, e.description, e.note, e.classes, e.styles, e.textStyles),
+ k.relations.push({
+ id1: n,
+ id2: o,
+ relationTitle: s.e.sanitizeText(i, (0, s.c)()),
+ });
+ })(t, e, i);
+ else {
+ const n = $(t.trim()),
+ r = A(t),
+ o = (function (t = "") {
+ let e = t;
+ return t === p && (T++, (e = `end${T}`)), e;
+ })(e.trim()),
+ a = (function (t = "", e = l) {
+ return t === p ? "end" : e;
+ })(e);
+ x(n, r), x(o, a), k.relations.push({ id1: n, id2: o, title: s.e.sanitizeText(i, (0, s.c)()) });
+ }
+ },
+ I = function (t, e) {
+ const i = k.states[t],
+ n = e.startsWith(":") ? e.replace(":", "").trim() : e;
+ i.descriptions.push(s.e.sanitizeText(n, (0, s.c)()));
+ },
+ O = function (t, e = "") {
+ void 0 === _[t] && (_[t] = { id: t, styles: [], textStyles: [] });
+ const i = _[t];
+ null != e &&
+ e.split(",").forEach((t) => {
+ const e = t.replace(/([^;]*);/, "$1").trim();
+ if (t.match(y)) {
+ const t = e.replace(f, "bgFill").replace(y, f);
+ i.textStyles.push(t);
+ }
+ i.styles.push(e);
+ });
+ },
+ N = function (t, e) {
+ t.split(",").forEach(function (t) {
+ let i = C(t);
+ if (void 0 === i) {
+ const e = t.trim();
+ x(e), (i = C(e));
+ }
+ i.classes.push(e);
+ });
+ },
+ R = function (t, e) {
+ const i = C(t);
+ void 0 !== i && i.textStyles.push(e);
+ },
+ w = function (t, e) {
+ const i = C(t);
+ void 0 !== i && i.textStyles.push(e);
+ },
+ B = {
+ parseDirective: function (t, e, i) {
+ s.m.parseDirective(this, t, e, i);
+ },
+ getConfig: () => (0, s.c)().state,
+ addState: x,
+ clear: D,
+ getState: C,
+ getStates: function () {
+ return k.states;
+ },
+ getRelations: function () {
+ return k.relations;
+ },
+ getClasses: function () {
+ return _;
+ },
+ getDirection: () => g,
+ addRelation: L,
+ getDividerId: () => (b++, "divider-id-" + b),
+ setDirection: (t) => {
+ g = t;
+ },
+ cleanupLabel: function (t) {
+ return ":" === t.substring(0, 1) ? t.substr(2).trim() : t.trim();
+ },
+ lineType: { LINE: 0, DOTTED_LINE: 1 },
+ relationType: { AGGREGATION: 0, EXTENSION: 1, COMPOSITION: 2, DEPENDENCY: 3 },
+ logDocuments: function () {
+ s.l.info("Documents = ", S);
+ },
+ getRootDoc: () => m,
+ setRootDoc: (t) => {
+ s.l.info("Setting root doc", t), (m = t);
+ },
+ getRootDocV2: () => (v({ id: "root" }, { id: "root", doc: m }, !0), { id: "root", doc: m }),
+ extract: (t) => {
+ let e;
+ (e = t.doc ? t.doc : t),
+ s.l.info(e),
+ D(!0),
+ s.l.info("Extract", e),
+ e.forEach((t) => {
+ switch (t.stmt) {
+ case a:
+ x(t.id.trim(), t.type, t.doc, t.description, t.note, t.classes, t.styles, t.textStyles);
+ break;
+ case c:
+ L(t.state1, t.state2, t.description);
+ break;
+ case "classDef":
+ O(t.id.trim(), t.classes);
+ break;
+ case "applyClass":
+ N(t.id.trim(), t.styleClass);
+ }
+ });
+ },
+ trimColon: (t) => (t && ":" === t[0] ? t.substr(1).trim() : t.trim()),
+ getAccTitle: s.g,
+ setAccTitle: s.s,
+ getAccDescription: s.a,
+ setAccDescription: s.b,
+ addStyleClass: O,
+ setCssClass: N,
+ addDescription: I,
+ setDiagramTitle: s.r,
+ getDiagramTitle: s.t,
+ },
+ P = (t) =>
+ `\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor || t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor || t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground || t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg || t.mainBkg};\n stroke: ${t.stateBorder || t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder || t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder || t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder || t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground || t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground ? t.altBackground : "#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground ? t.altBackground : "#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`;
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js
index 349f8418d..aff23f83f 100644
--- a/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js
@@ -1 +1,3019 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[545],{4545:function(t,e,n){n.d(e,{diagram:function(){return Q}});var i=n(9339),a=n(7274),s=n(8252),r=n(7967),l=(n(7484),n(7856),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,6],n=[1,7],i=[1,8],a=[1,9],s=[1,16],r=[1,11],l=[1,12],o=[1,13],h=[1,14],d=[1,15],u=[1,27],p=[1,33],y=[1,34],f=[1,35],b=[1,36],g=[1,37],_=[1,72],x=[1,73],m=[1,74],E=[1,75],A=[1,76],S=[1,77],v=[1,78],C=[1,38],k=[1,39],O=[1,40],T=[1,41],w=[1,42],D=[1,43],R=[1,44],N=[1,45],P=[1,46],M=[1,47],j=[1,48],B=[1,49],Y=[1,50],L=[1,51],I=[1,52],U=[1,53],F=[1,54],X=[1,55],z=[1,56],Q=[1,57],W=[1,59],$=[1,60],q=[1,61],V=[1,62],G=[1,63],H=[1,64],K=[1,65],J=[1,66],Z=[1,67],tt=[1,68],et=[1,69],nt=[24,52],it=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],at=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],st=[1,94],rt=[1,95],lt=[1,96],ot=[1,97],ct=[15,24,52],ht=[7,8,9,10,18,22,25,26,27,28],dt=[15,24,43,52],ut=[15,24,43,52,86,87,89,90],pt=[15,43],yt=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],ft={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"C4_CONTEXT",24:"EOF",25:"C4_CONTAINER",26:"C4_COMPONENT",27:"C4_DYNAMIC",28:"C4_DEPLOYMENT",32:"title",33:"accDescription",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",43:"LBRACE",44:"ENTERPRISE_BOUNDARY",46:"SYSTEM_BOUNDARY",47:"BOUNDARY",48:"CONTAINER_BOUNDARY",49:"NODE",50:"NODE_L",51:"NODE_R",52:"RBRACE",54:"PERSON",55:"PERSON_EXT",56:"SYSTEM",57:"SYSTEM_DB",58:"SYSTEM_QUEUE",59:"SYSTEM_EXT",60:"SYSTEM_EXT_DB",61:"SYSTEM_EXT_QUEUE",62:"CONTAINER",63:"CONTAINER_DB",64:"CONTAINER_QUEUE",65:"CONTAINER_EXT",66:"CONTAINER_EXT_DB",67:"CONTAINER_EXT_QUEUE",68:"COMPONENT",69:"COMPONENT_DB",70:"COMPONENT_QUEUE",71:"COMPONENT_EXT",72:"COMPONENT_EXT_DB",73:"COMPONENT_EXT_QUEUE",74:"REL",75:"BIREL",76:"REL_U",77:"REL_D",78:"REL_L",79:"REL_R",80:"REL_B",81:"REL_INDEX",82:"UPDATE_EL_STYLE",83:"UPDATE_REL_STYLE",84:"UPDATE_LAYOUT_CONFIG",86:"STR",87:"STR_KEY",88:"STR_VALUE",89:"ATTRIBUTE",90:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(t,e,n,i,a,s,r){var l=s.length-1;switch(a){case 4:i.setDirection("TB");break;case 5:i.setDirection("BT");break;case 6:i.setDirection("RL");break;case 7:i.setDirection("LR");break;case 11:i.parseDirective("%%{","open_directive");break;case 12:break;case 13:s[l]=s[l].trim().replace(/'/g,'"'),i.parseDirective(s[l],"arg_directive");break;case 14:i.parseDirective("}%%","close_directive","c4Context");break;case 15:case 16:case 17:case 18:case 19:i.setC4Type(s[l-3]);break;case 26:i.setTitle(s[l].substring(6)),this.$=s[l].substring(6);break;case 27:i.setAccDescription(s[l].substring(15)),this.$=s[l].substring(15);break;case 28:this.$=s[l].trim(),i.setTitle(this.$);break;case 29:case 30:this.$=s[l].trim(),i.setAccDescription(this.$);break;case 35:case 36:s[l].splice(2,0,"ENTERPRISE"),i.addPersonOrSystemBoundary(...s[l]),this.$=s[l];break;case 37:i.addPersonOrSystemBoundary(...s[l]),this.$=s[l];break;case 38:s[l].splice(2,0,"CONTAINER"),i.addContainerBoundary(...s[l]),this.$=s[l];break;case 39:i.addDeploymentNode("node",...s[l]),this.$=s[l];break;case 40:i.addDeploymentNode("nodeL",...s[l]),this.$=s[l];break;case 41:i.addDeploymentNode("nodeR",...s[l]),this.$=s[l];break;case 42:i.popBoundaryParseStack();break;case 46:i.addPersonOrSystem("person",...s[l]),this.$=s[l];break;case 47:i.addPersonOrSystem("external_person",...s[l]),this.$=s[l];break;case 48:i.addPersonOrSystem("system",...s[l]),this.$=s[l];break;case 49:i.addPersonOrSystem("system_db",...s[l]),this.$=s[l];break;case 50:i.addPersonOrSystem("system_queue",...s[l]),this.$=s[l];break;case 51:i.addPersonOrSystem("external_system",...s[l]),this.$=s[l];break;case 52:i.addPersonOrSystem("external_system_db",...s[l]),this.$=s[l];break;case 53:i.addPersonOrSystem("external_system_queue",...s[l]),this.$=s[l];break;case 54:i.addContainer("container",...s[l]),this.$=s[l];break;case 55:i.addContainer("container_db",...s[l]),this.$=s[l];break;case 56:i.addContainer("container_queue",...s[l]),this.$=s[l];break;case 57:i.addContainer("external_container",...s[l]),this.$=s[l];break;case 58:i.addContainer("external_container_db",...s[l]),this.$=s[l];break;case 59:i.addContainer("external_container_queue",...s[l]),this.$=s[l];break;case 60:i.addComponent("component",...s[l]),this.$=s[l];break;case 61:i.addComponent("component_db",...s[l]),this.$=s[l];break;case 62:i.addComponent("component_queue",...s[l]),this.$=s[l];break;case 63:i.addComponent("external_component",...s[l]),this.$=s[l];break;case 64:i.addComponent("external_component_db",...s[l]),this.$=s[l];break;case 65:i.addComponent("external_component_queue",...s[l]),this.$=s[l];break;case 67:i.addRel("rel",...s[l]),this.$=s[l];break;case 68:i.addRel("birel",...s[l]),this.$=s[l];break;case 69:i.addRel("rel_u",...s[l]),this.$=s[l];break;case 70:i.addRel("rel_d",...s[l]),this.$=s[l];break;case 71:i.addRel("rel_l",...s[l]),this.$=s[l];break;case 72:i.addRel("rel_r",...s[l]),this.$=s[l];break;case 73:i.addRel("rel_b",...s[l]),this.$=s[l];break;case 74:s[l].splice(0,1),i.addRel("rel",...s[l]),this.$=s[l];break;case 75:i.updateElStyle("update_el_style",...s[l]),this.$=s[l];break;case 76:i.updateRelStyle("update_rel_style",...s[l]),this.$=s[l];break;case 77:i.updateLayoutConfig("update_layout_config",...s[l]),this.$=s[l];break;case 78:this.$=[s[l]];break;case 79:s[l].unshift(s[l-1]),this.$=s[l];break;case 80:case 82:this.$=s[l].trim();break;case 81:let t={};t[s[l-1].trim()]=s[l].trim(),this.$=t;break;case 83:this.$=""}},table:[{3:1,4:2,5:3,6:4,7:e,8:n,9:i,10:a,11:5,12:10,18:s,22:r,25:l,26:o,27:h,28:d},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:e,8:n,9:i,10:a,11:5,12:10,18:s,22:r,25:l,26:o,27:h,28:d},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:u},t([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:p,33:y,34:f,36:b,38:g,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{23:79,29:29,30:30,31:31,32:p,33:y,34:f,36:b,38:g,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{23:80,29:29,30:30,31:31,32:p,33:y,34:f,36:b,38:g,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{23:81,29:29,30:30,31:31,32:p,33:y,34:f,36:b,38:g,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{23:82,29:29,30:30,31:31,32:p,33:y,34:f,36:b,38:g,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},t(nt,[2,20],{53:32,39:58,40:70,42:71,30:87,44:_,46:x,47:m,48:E,49:A,50:S,51:v,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et}),t(nt,[2,21]),t(it,[2,23],{15:[1,88]}),t(nt,[2,43],{15:[1,89]}),t(at,[2,26]),t(at,[2,27]),{35:[1,90]},{37:[1,91]},t(at,[2,30]),{45:92,85:93,86:st,87:rt,89:lt,90:ot},{45:98,85:93,86:st,87:rt,89:lt,90:ot},{45:99,85:93,86:st,87:rt,89:lt,90:ot},{45:100,85:93,86:st,87:rt,89:lt,90:ot},{45:101,85:93,86:st,87:rt,89:lt,90:ot},{45:102,85:93,86:st,87:rt,89:lt,90:ot},{45:103,85:93,86:st,87:rt,89:lt,90:ot},{45:104,85:93,86:st,87:rt,89:lt,90:ot},{45:105,85:93,86:st,87:rt,89:lt,90:ot},{45:106,85:93,86:st,87:rt,89:lt,90:ot},{45:107,85:93,86:st,87:rt,89:lt,90:ot},{45:108,85:93,86:st,87:rt,89:lt,90:ot},{45:109,85:93,86:st,87:rt,89:lt,90:ot},{45:110,85:93,86:st,87:rt,89:lt,90:ot},{45:111,85:93,86:st,87:rt,89:lt,90:ot},{45:112,85:93,86:st,87:rt,89:lt,90:ot},{45:113,85:93,86:st,87:rt,89:lt,90:ot},{45:114,85:93,86:st,87:rt,89:lt,90:ot},{45:115,85:93,86:st,87:rt,89:lt,90:ot},{45:116,85:93,86:st,87:rt,89:lt,90:ot},t(ct,[2,66]),{45:117,85:93,86:st,87:rt,89:lt,90:ot},{45:118,85:93,86:st,87:rt,89:lt,90:ot},{45:119,85:93,86:st,87:rt,89:lt,90:ot},{45:120,85:93,86:st,87:rt,89:lt,90:ot},{45:121,85:93,86:st,87:rt,89:lt,90:ot},{45:122,85:93,86:st,87:rt,89:lt,90:ot},{45:123,85:93,86:st,87:rt,89:lt,90:ot},{45:124,85:93,86:st,87:rt,89:lt,90:ot},{45:125,85:93,86:st,87:rt,89:lt,90:ot},{45:126,85:93,86:st,87:rt,89:lt,90:ot},{45:127,85:93,86:st,87:rt,89:lt,90:ot},{30:128,39:58,40:70,42:71,44:_,46:x,47:m,48:E,49:A,50:S,51:v,53:32,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et},{15:[1,130],43:[1,129]},{45:131,85:93,86:st,87:rt,89:lt,90:ot},{45:132,85:93,86:st,87:rt,89:lt,90:ot},{45:133,85:93,86:st,87:rt,89:lt,90:ot},{45:134,85:93,86:st,87:rt,89:lt,90:ot},{45:135,85:93,86:st,87:rt,89:lt,90:ot},{45:136,85:93,86:st,87:rt,89:lt,90:ot},{45:137,85:93,86:st,87:rt,89:lt,90:ot},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},t(ht,[2,9]),{14:142,21:u},{21:[2,13]},{1:[2,15]},t(nt,[2,22]),t(it,[2,24],{31:31,29:143,32:p,33:y,34:f,36:b,38:g}),t(nt,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:p,33:y,34:f,36:b,38:g,44:_,46:x,47:m,48:E,49:A,50:S,51:v,54:C,55:k,56:O,57:T,58:w,59:D,60:R,61:N,62:P,63:M,64:j,65:B,66:Y,67:L,68:I,69:U,70:F,71:X,72:z,73:Q,74:W,75:$,76:q,77:V,78:G,79:H,80:K,81:J,82:Z,83:tt,84:et}),t(at,[2,28]),t(at,[2,29]),t(ct,[2,46]),t(dt,[2,78],{85:93,45:145,86:st,87:rt,89:lt,90:ot}),t(ut,[2,80]),{88:[1,146]},t(ut,[2,82]),t(ut,[2,83]),t(ct,[2,47]),t(ct,[2,48]),t(ct,[2,49]),t(ct,[2,50]),t(ct,[2,51]),t(ct,[2,52]),t(ct,[2,53]),t(ct,[2,54]),t(ct,[2,55]),t(ct,[2,56]),t(ct,[2,57]),t(ct,[2,58]),t(ct,[2,59]),t(ct,[2,60]),t(ct,[2,61]),t(ct,[2,62]),t(ct,[2,63]),t(ct,[2,64]),t(ct,[2,65]),t(ct,[2,67]),t(ct,[2,68]),t(ct,[2,69]),t(ct,[2,70]),t(ct,[2,71]),t(ct,[2,72]),t(ct,[2,73]),t(ct,[2,74]),t(ct,[2,75]),t(ct,[2,76]),t(ct,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},t(pt,[2,35]),t(pt,[2,36]),t(pt,[2,37]),t(pt,[2,38]),t(pt,[2,39]),t(pt,[2,40]),t(pt,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},t(it,[2,25]),t(nt,[2,45]),t(dt,[2,79]),t(ut,[2,81]),t(ct,[2,31]),t(ct,[2,42]),t(yt,[2,32]),t(yt,[2,33],{15:[1,152]}),t(ht,[2,10]),t(yt,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=[0],n=[],i=[null],a=[],s=this.table,r="",l=0,o=0,c=a.slice.call(arguments,1),h=Object.create(this.lexer),d={yy:{}};for(var u in this.yy)Object.prototype.hasOwnProperty.call(this.yy,u)&&(d.yy[u]=this.yy[u]);h.setInput(t,d.yy),d.yy.lexer=h,d.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var p=h.yylloc;a.push(p);var y=h.options&&h.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var f,b,g,_,x,m,E,A,S,v={};;){if(b=e[e.length-1],this.defaultActions[b]?g=this.defaultActions[b]:(null==f&&(S=void 0,"number"!=typeof(S=n.pop()||h.lex()||1)&&(S instanceof Array&&(S=(n=S).pop()),S=this.symbols_[S]||S),f=S),g=s[b]&&s[b][f]),void 0===g||!g.length||!g[0]){var C;for(x in A=[],s[b])this.terminals_[x]&&x>2&&A.push("'"+this.terminals_[x]+"'");C=h.showPosition?"Parse error on line "+(l+1)+":\n"+h.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:h.match,token:this.terminals_[f]||f,line:h.yylineno,loc:p,expected:A})}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+f);switch(g[0]){case 1:e.push(f),i.push(h.yytext),a.push(h.yylloc),e.push(g[1]),f=null,o=h.yyleng,r=h.yytext,l=h.yylineno,p=h.yylloc;break;case 2:if(m=this.productions_[g[1]][1],v.$=i[i.length-m],v._$={first_line:a[a.length-(m||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(m||1)].first_column,last_column:a[a.length-1].last_column},y&&(v._$.range=[a[a.length-(m||1)].range[0],a[a.length-1].range[1]]),void 0!==(_=this.performAction.apply(v,[r,o,l,d.yy,g[1],i,a].concat(c))))return _;m&&(e=e.slice(0,-1*m*2),i=i.slice(0,-1*m),a=a.slice(0,-1*m)),e.push(this.productions_[g[1]][0]),i.push(v.$),a.push(v._$),E=s[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0}},bt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in a)this[s]=a[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),s=0;se[0].length)){if(e=n,i=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,a[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,a[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 78:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 21:case 75:break;case 19:c;break;case 20:return 15;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:case 58:return this.begin("rel_u"),76;case 59:case 60:return this.begin("rel_d"),77;case 61:case 62:return this.begin("rel_l"),78;case 63:case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:case 84:this.popState(),this.popState();break;case 74:case 76:return 90;case 77:this.begin("string");break;case 79:case 85:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[70,71,72,73],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};function gt(){this.yy={}}return ft.lexer=bt,gt.prototype=ft,ft.Parser=gt,new gt}());l.parser=l;const o=l;let h=[],d=[""],u="global",p="",y=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],f=[],b="",g=!1,_=4,x=2;var m;const E=function(t){return null==t?h:h.filter((e=>e.parentBoundary===t))},A=function(){return g},S={addPersonOrSystem:function(t,e,n,i,a,s,r){if(null===e||null===n)return;let l={};const o=h.find((t=>t.alias===e));if(o&&e===o.alias?l=o:(l.alias=e,h.push(l)),l.label=null==n?{text:""}:{text:n},null==i)l.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]={text:e}}else l.descr={text:i};if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.sprite=a;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.link=r;l.typeC4Shape={text:t},l.parentBoundary=u,l.wrap=A()},addPersonOrSystemBoundary:function(t,e,n,i,a){if(null===t||null===e)return;let s={};const r=y.find((e=>e.alias===t));if(r&&t===r.alias?s=r:(s.alias=t,y.push(s)),s.label=null==e?{text:""}:{text:e},null==n)s.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];s[t]={text:e}}else s.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.tags=i;if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.link=a;s.parentBoundary=u,s.wrap=A(),p=u,u=t,d.push(p)},addContainer:function(t,e,n,i,a,s,r,l){if(null===e||null===n)return;let o={};const c=h.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,h.push(o)),o.label=null==n?{text:""}:{text:n},null==i)o.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.techn={text:i};if(null==a)o.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.descr={text:a};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.sprite=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=A(),o.typeC4Shape={text:t},o.parentBoundary=u},addContainerBoundary:function(t,e,n,i,a){if(null===t||null===e)return;let s={};const r=y.find((e=>e.alias===t));if(r&&t===r.alias?s=r:(s.alias=t,y.push(s)),s.label=null==e?{text:""}:{text:e},null==n)s.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];s[t]={text:e}}else s.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.tags=i;if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.link=a;s.parentBoundary=u,s.wrap=A(),p=u,u=t,d.push(p)},addComponent:function(t,e,n,i,a,s,r,l){if(null===e||null===n)return;let o={};const c=h.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,h.push(o)),o.label=null==n?{text:""}:{text:n},null==i)o.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.techn={text:i};if(null==a)o.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.descr={text:a};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.sprite=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=A(),o.typeC4Shape={text:t},o.parentBoundary=u},addDeploymentNode:function(t,e,n,i,a,s,r,l){if(null===e||null===n)return;let o={};const c=y.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,y.push(o)),o.label=null==n?{text:""}:{text:n},null==i)o.type={text:"node"};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.type={text:i};if(null==a)o.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.descr={text:a};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=u,o.wrap=A(),p=u,u=e,d.push(p)},popBoundaryParseStack:function(){u=p,d.pop(),p=d.pop(),d.push(p)},addRel:function(t,e,n,i,a,s,r,l,o){if(null==t||null==e||null==n||null==i)return;let c={};const h=f.find((t=>t.from===e&&t.to===n));if(h?c=h:f.push(c),c.type=t,c.from=e,c.to=n,c.label={text:i},null==a)c.techn={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]={text:e}}else c.techn={text:a};if(null==s)c.descr={text:""};else if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]={text:e}}else c.descr={text:s};if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]=e}else c.sprite=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=A()},updateElStyle:function(t,e,n,i,a,s,r,l,o,c,d){let u=h.find((t=>t.alias===e));if(void 0!==u||(u=y.find((t=>t.alias===e)),void 0!==u)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];u[t]=e}else u.bgColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];u[t]=e}else u.fontColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];u[t]=e}else u.borderColor=a;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];u[t]=e}else u.shadowing=s;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];u[t]=e}else u.shape=r;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];u[t]=e}else u.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];u[t]=e}else u.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];u[t]=e}else u.legendText=c;if(null!=d)if("object"==typeof d){let[t,e]=Object.entries(d)[0];u[t]=e}else u.legendSprite=d}},updateRelStyle:function(t,e,n,i,a,s,r){const l=f.find((t=>t.from===e&&t.to===n));if(void 0!==l){if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.textColor=i;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.lineColor=a;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(s);if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(r)}},updateLayoutConfig:function(t,e,n){let i=_,a=x;if("object"==typeof e){const t=Object.values(e)[0];i=parseInt(t)}else i=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];a=parseInt(t)}else a=parseInt(n);i>=1&&(_=i),a>=1&&(x=a)},autoWrap:A,setWrap:function(t){g=t},getC4ShapeArray:E,getC4Shape:function(t){return h.find((e=>e.alias===t))},getC4ShapeKeys:function(t){return Object.keys(E(t))},getBoundarys:function(t){return null==t?y:y.filter((e=>e.parentBoundary===t))},getCurrentBoundaryParse:function(){return u},getParentBoundaryParse:function(){return p},getRels:function(){return f},getTitle:function(){return b},getC4Type:function(){return m},getC4ShapeInRow:function(){return _},getC4BoundaryInRow:function(){return x},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().c4,clear:function(){h=[],y=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],p="",u="global",d=[""],f=[],d=[""],b="",g=!1,_=4,x=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){let e=(0,i.d)(t,(0,i.c)());b=e},setC4Type:function(t){let e=(0,i.d)(t,(0,i.c)());m=e}},v=function(t,e){return(0,s.d)(t,e)},C=function(){function t(t,e,n,i,s,r,l){a(e.append("text").attr("x",n+s/2).attr("y",i+r/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,n,s,r,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:u}=c,p=t.split(i.e.lineBreakRegex);for(let t=0;t>"),e.typeC4Shape.text){case"person":case"external_person":!function(t,e,n,i,a,s){const l=t.append("image");l.attr("width",e),l.attr("height",n),l.attr("x",i),l.attr("y",a);let o=s.startsWith("data:image/png;base64")?s:(0,r.Nm)(s);l.attr("xlink:href",o)}(h,48,48,e.x+e.width/2-24,e.y+e.image.Y,c)}let f=n[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=o,C(n)(e.label.text,h,e.x,e.y+e.label.Y,e.width,e.height,{fill:o},f),f=n[e.typeC4Shape.text+"Font"](),f.fontColor=o,e.techn&&""!==(null==(i=e.techn)?void 0:i.text)?C(n)(e.techn.text,h,e.x,e.y+e.techn.Y,e.width,e.height,{fill:o,"font-style":"italic"},f):e.type&&""!==e.type.text&&C(n)(e.type.text,h,e.x,e.y+e.type.Y,e.width,e.height,{fill:o,"font-style":"italic"},f),e.descr&&""!==e.descr.text&&(f=n.personFont(),f.fontColor=o,C(n)(e.descr.text,h,e.x,e.y+e.descr.Y,e.width,e.height,{fill:o},f)),e.height};let O=0,T=0,w=4,D=2;l.yy=S;let R={};class N{constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,P(t.db.getConfig())}setData(t,e,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,i=this.nextData.starty+2*t.margin,a=i+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>w)&&(e=this.nextData.startx+t.margin+R.nextLinePaddingX,i=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+t.height,this.nextData.cnt=1),t.x=e,t.y=i,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},P(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const P=function(t){(0,i.f)(R,t),t.fontFamily&&(R.personFontFamily=R.systemFontFamily=R.messageFontFamily=t.fontFamily),t.fontSize&&(R.personFontSize=R.systemFontSize=R.messageFontSize=t.fontSize),t.fontWeight&&(R.personFontWeight=R.systemFontWeight=R.messageFontWeight=t.fontWeight)},M=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),j=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight});function B(t,e,n,a,s){if(!e[t].width)if(n)e[t].text=(0,i.w)(e[t].text,s,a),e[t].textLines=e[t].text.split(i.e.lineBreakRegex).length,e[t].width=s,e[t].height=(0,i.j)(e[t].text,a);else{let n=e[t].text.split(i.e.lineBreakRegex);e[t].textLines=n.length;let s=0;e[t].height=0,e[t].width=0;for(const r of n)e[t].width=Math.max((0,i.h)(r,a),e[t].width),s=(0,i.j)(r,a),e[t].height=e[t].height+s}}const Y=function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=R.c4ShapeMargin-35;let a=e.wrap&&R.wrap,s=j(R);s.fontSize=s.fontSize+2,s.fontWeight="bold",B("label",e,a,s,(0,i.h)(e.label.text,s)),function(t,e,n){const i=t.append("g");let a=e.bgColor?e.bgColor:"none",s=e.borderColor?e.borderColor:"#444444",r=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:a,stroke:s,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};v(i,o);let c=n.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=r,C(n)(e.label.text,i,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=n.boundaryFont(),c.fontColor=r,C(n)(e.type.text,i,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=n.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=r,C(n)(e.descr.text,i,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))}(t,e,R)},L=function(t,e,n,a){let s=0;for(const r of a){s=0;const a=n[r];let l=M(R,a.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,a.typeC4Shape.width=(0,i.h)("«"+a.typeC4Shape.text+"»",l),a.typeC4Shape.height=l.fontSize+2,a.typeC4Shape.Y=R.c4ShapePadding,s=a.typeC4Shape.Y+a.typeC4Shape.height-4,a.image={width:0,height:0,Y:0},a.typeC4Shape.text){case"person":case"external_person":a.image.width=48,a.image.height=48,a.image.Y=s,s=a.image.Y+a.image.height}a.sprite&&(a.image.width=48,a.image.height=48,a.image.Y=s,s=a.image.Y+a.image.height);let o=a.wrap&&R.wrap,c=R.width-2*R.c4ShapePadding,h=M(R,a.typeC4Shape.text);h.fontSize=h.fontSize+2,h.fontWeight="bold",B("label",a,o,h,c),a.label.Y=s+8,s=a.label.Y+a.label.height,a.type&&""!==a.type.text?(a.type.text="["+a.type.text+"]",B("type",a,o,M(R,a.typeC4Shape.text),c),a.type.Y=s+5,s=a.type.Y+a.type.height):a.techn&&""!==a.techn.text&&(a.techn.text="["+a.techn.text+"]",B("techn",a,o,M(R,a.techn.text),c),a.techn.Y=s+5,s=a.techn.Y+a.techn.height);let d=s,u=a.label.width;a.descr&&""!==a.descr.text&&(B("descr",a,o,M(R,a.typeC4Shape.text),c),a.descr.Y=s+20,s=a.descr.Y+a.descr.height,u=Math.max(a.label.width,a.descr.width),d=s-5*a.descr.textLines),u+=R.c4ShapePadding,a.width=Math.max(a.width||R.width,u,R.width),a.height=Math.max(a.height||R.height,d,R.height),a.margin=a.margin||R.c4ShapeMargin,t.insert(a),k(e,a,R)}t.bumpLastMargin(R.c4ShapeMargin)};class I{constructor(t,e){this.x=t,this.y=e}}let U=function(t,e){let n=t.x,i=t.y,a=e.x,s=e.y,r=n+t.width/2,l=i+t.height/2,o=Math.abs(n-a),c=Math.abs(i-s),h=c/o,d=t.height/t.width,u=null;return i==s&&na?u=new I(n,l):n==a&&is&&(u=new I(r,i)),n>a&&i=h?new I(n,l+h*t.width/2):new I(r-o/c*t.height/2,i+t.height):n=h?new I(n+t.width,l+h*t.width/2):new I(r+o/c*t.height/2,i+t.height):n s?u=d>=h?new I(n+t.width,l-h*t.width/2):new I(r+t.height/2*o/c,i):n>a&&i>s&&(u=d>=h?new I(n,l-t.width/2*h):new I(r-t.height/2*o/c,i)),u},F=function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let i=U(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:i,endPoint:U(e,n)}};function X(t,e,n,i,a){let s=new N(a);s.data.widthLimit=n.data.widthLimit/Math.min(D,i.length);for(let[r,l]of i.entries()){let i=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=i,i=l.image.Y+l.image.height);let o=l.wrap&&R.wrap,c=j(R);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",B("label",l,o,c,s.data.widthLimit),l.label.Y=i+8,i=l.label.Y+l.label.height,l.type&&""!==l.type.text&&(l.type.text="["+l.type.text+"]",B("type",l,o,j(R),s.data.widthLimit),l.type.Y=i+5,i=l.type.Y+l.type.height),l.descr&&""!==l.descr.text){let t=j(R);t.fontSize=t.fontSize-2,B("descr",l,o,t,s.data.widthLimit),l.descr.Y=i+20,i=l.descr.Y+l.descr.height}if(0==r||r%D==0){let t=n.data.startx+R.diagramMarginX,e=n.data.stopy+R.diagramMarginY+i;s.setData(t,t,e,e)}else{let t=s.data.stopx!==s.data.startx?s.data.stopx+R.diagramMarginX:s.data.startx,e=s.data.starty;s.setData(t,t,e,e)}s.name=l.alias;let h=a.db.getC4ShapeArray(l.alias),d=a.db.getC4ShapeKeys(l.alias);d.length>0&&L(s,t,h,d),e=l.alias;let u=a.db.getBoundarys(e);u.length>0&&X(t,e,s,u,a),"global"!==l.alias&&Y(t,l,s),n.data.stopy=Math.max(s.data.stopy+R.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(s.data.stopx+R.c4ShapeMargin,n.data.stopx),O=Math.max(O,n.data.stopx),T=Math.max(T,n.data.stopy)}}const z={drawPersonOrSystemArray:L,drawBoundary:Y,setConf:P,draw:function(t,e,n,s){R=(0,i.c)().c4;const r=(0,i.c)().securityLevel;let l;"sandbox"===r&&(l=(0,a.Ys)("#i"+e));const o="sandbox"===r?(0,a.Ys)(l.nodes()[0].contentDocument.body):(0,a.Ys)("body");let c=s.db;s.db.setWrap(R.wrap),w=c.getC4ShapeInRow(),D=c.getC4BoundaryInRow(),i.l.debug(`C:${JSON.stringify(R,null,2)}`);const h="sandbox"===r?o.select(`[id="${e}"]`):(0,a.Ys)(`[id="${e}"]`);h.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"),function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")}(h),function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")}(h);let d=new N(s);d.setData(R.diagramMarginX,R.diagramMarginX,R.diagramMarginY,R.diagramMarginY),d.data.widthLimit=screen.availWidth,O=R.diagramMarginX,T=R.diagramMarginY;const u=s.db.getTitle();X(h,"",d,s.db.getBoundarys(""),s),function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")}(h),function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")}(h),function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")}(h),function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")}(h),function(t,e,n,a){let s=0;for(let t of e){s+=1;let e=t.wrap&&R.wrap,l={fontFamily:(r=R).messageFontFamily,fontSize:r.messageFontSize,fontWeight:r.messageFontWeight};"C4Dynamic"===a.db.getC4Type()&&(t.label.text=s+": "+t.label.text);let o=(0,i.h)(t.label.text,l);B("label",t,e,l,o),t.techn&&""!==t.techn.text&&(o=(0,i.h)(t.techn.text,l),B("techn",t,e,l,o)),t.descr&&""!==t.descr.text&&(o=(0,i.h)(t.descr.text,l),B("descr",t,e,l,o));let c=n(t.from),h=n(t.to),d=F(c,h);t.startPoint=d.startPoint,t.endPoint=d.endPoint}var r;((t,e,n)=>{const i=t.append("g");let a=0;for(let t of e){let e=t.textColor?t.textColor:"#444444",s=t.lineColor?t.lineColor:"#444444",r=t.offsetX?parseInt(t.offsetX):0,l=t.offsetY?parseInt(t.offsetY):0,o="";if(0===a){let e=i.append("line");e.attr("x1",t.startPoint.x),e.attr("y1",t.startPoint.y),e.attr("x2",t.endPoint.x),e.attr("y2",t.endPoint.y),e.attr("stroke-width","1"),e.attr("stroke",s),e.style("fill","none"),"rel_b"!==t.type&&e.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+o+"#arrowend)"),a=-1}else{let e=i.append("path");e.attr("fill","none").attr("stroke-width","1").attr("stroke",s).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",t.startPoint.x).replaceAll("starty",t.startPoint.y).replaceAll("controlx",t.startPoint.x+(t.endPoint.x-t.startPoint.x)/2-(t.endPoint.x-t.startPoint.x)/4).replaceAll("controly",t.startPoint.y+(t.endPoint.y-t.startPoint.y)/2).replaceAll("stopx",t.endPoint.x).replaceAll("stopy",t.endPoint.y)),"rel_b"!==t.type&&e.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+o+"#arrowend)")}let c=n.messageFont();C(n)(t.label.text,i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+r,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+l,t.label.width,t.label.height,{fill:e},c),t.techn&&""!==t.techn.text&&(c=n.messageFont(),C(n)("["+t.techn.text+"]",i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+r,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+n.messageFontSize+5+l,Math.max(t.label.width,t.techn.width),t.techn.height,{fill:e,"font-style":"italic"},c))}})(t,e,R)}(h,s.db.getRels(),s.db.getC4Shape,s),d.data.stopx=O,d.data.stopy=T;const p=d.data;let y=p.stopy-p.starty+2*R.diagramMarginY;const f=p.stopx-p.startx+2*R.diagramMarginX;u&&h.append("text").text(u).attr("x",(p.stopx-p.startx)/2-4*R.diagramMarginX).attr("y",p.starty+R.diagramMarginY),(0,i.i)(h,y,f,R.useMaxWidth);const b=u?60:0;h.attr("viewBox",p.startx-R.diagramMarginX+" -"+(R.diagramMarginY+b)+" "+f+" "+(y+b)),i.l.debug("models:",p)}},Q={parser:o,db:S,renderer:z,styles:t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,init:t=>{z.setConf(t.c4)}}},8252:function(t,e,n){n.d(e,{a:function(){return r},b:function(){return c},c:function(){return o},d:function(){return s},e:function(){return d},f:function(){return l},g:function(){return h}});var i=n(7967),a=n(9339);const s=(t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),void 0!==e.rx&&n.attr("rx",e.rx),void 0!==e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const t in e.attrs)n.attr(t,e.attrs[t]);return void 0!==e.class&&n.attr("class",e.class),n},r=(t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,n).lower()},l=(t,e)=>{const n=e.text.replace(a.J," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i},o=(t,e,n,a)=>{const s=t.append("image");s.attr("x",e),s.attr("y",n);const r=(0,i.Nm)(a);s.attr("xlink:href",r)},c=(t,e,n,a)=>{const s=t.append("use");s.attr("x",e),s.attr("y",n);const r=(0,i.Nm)(a);s.attr("xlink:href",`#${r}`)},h=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),d=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [545],
+ {
+ 4545: function (t, e, n) {
+ n.d(e, {
+ diagram: function () {
+ return Q;
+ },
+ });
+ var i = n(9339),
+ a = n(7274),
+ s = n(8252),
+ r = n(7967),
+ l =
+ (n(7484),
+ n(7856),
+ (function () {
+ var t = function (t, e, n, i) {
+ for (n = n || {}, i = t.length; i--; n[t[i]] = e);
+ return n;
+ },
+ e = [1, 6],
+ n = [1, 7],
+ i = [1, 8],
+ a = [1, 9],
+ s = [1, 16],
+ r = [1, 11],
+ l = [1, 12],
+ o = [1, 13],
+ h = [1, 14],
+ d = [1, 15],
+ u = [1, 27],
+ p = [1, 33],
+ y = [1, 34],
+ f = [1, 35],
+ b = [1, 36],
+ g = [1, 37],
+ _ = [1, 72],
+ x = [1, 73],
+ m = [1, 74],
+ E = [1, 75],
+ A = [1, 76],
+ S = [1, 77],
+ v = [1, 78],
+ C = [1, 38],
+ k = [1, 39],
+ O = [1, 40],
+ T = [1, 41],
+ w = [1, 42],
+ D = [1, 43],
+ R = [1, 44],
+ N = [1, 45],
+ P = [1, 46],
+ M = [1, 47],
+ j = [1, 48],
+ B = [1, 49],
+ Y = [1, 50],
+ L = [1, 51],
+ I = [1, 52],
+ U = [1, 53],
+ F = [1, 54],
+ X = [1, 55],
+ z = [1, 56],
+ Q = [1, 57],
+ W = [1, 59],
+ $ = [1, 60],
+ q = [1, 61],
+ V = [1, 62],
+ G = [1, 63],
+ H = [1, 64],
+ K = [1, 65],
+ J = [1, 66],
+ Z = [1, 67],
+ tt = [1, 68],
+ et = [1, 69],
+ nt = [24, 52],
+ it = [
+ 24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84,
+ ],
+ at = [
+ 15, 24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84,
+ ],
+ st = [1, 94],
+ rt = [1, 95],
+ lt = [1, 96],
+ ot = [1, 97],
+ ct = [15, 24, 52],
+ ht = [7, 8, 9, 10, 18, 22, 25, 26, 27, 28],
+ dt = [15, 24, 43, 52],
+ ut = [15, 24, 43, 52, 86, 87, 89, 90],
+ pt = [15, 43],
+ yt = [
+ 44, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84,
+ ],
+ ft = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ mermaidDoc: 4,
+ direction: 5,
+ directive: 6,
+ direction_tb: 7,
+ direction_bt: 8,
+ direction_rl: 9,
+ direction_lr: 10,
+ graphConfig: 11,
+ openDirective: 12,
+ typeDirective: 13,
+ closeDirective: 14,
+ NEWLINE: 15,
+ ":": 16,
+ argDirective: 17,
+ open_directive: 18,
+ type_directive: 19,
+ arg_directive: 20,
+ close_directive: 21,
+ C4_CONTEXT: 22,
+ statements: 23,
+ EOF: 24,
+ C4_CONTAINER: 25,
+ C4_COMPONENT: 26,
+ C4_DYNAMIC: 27,
+ C4_DEPLOYMENT: 28,
+ otherStatements: 29,
+ diagramStatements: 30,
+ otherStatement: 31,
+ title: 32,
+ accDescription: 33,
+ acc_title: 34,
+ acc_title_value: 35,
+ acc_descr: 36,
+ acc_descr_value: 37,
+ acc_descr_multiline_value: 38,
+ boundaryStatement: 39,
+ boundaryStartStatement: 40,
+ boundaryStopStatement: 41,
+ boundaryStart: 42,
+ LBRACE: 43,
+ ENTERPRISE_BOUNDARY: 44,
+ attributes: 45,
+ SYSTEM_BOUNDARY: 46,
+ BOUNDARY: 47,
+ CONTAINER_BOUNDARY: 48,
+ NODE: 49,
+ NODE_L: 50,
+ NODE_R: 51,
+ RBRACE: 52,
+ diagramStatement: 53,
+ PERSON: 54,
+ PERSON_EXT: 55,
+ SYSTEM: 56,
+ SYSTEM_DB: 57,
+ SYSTEM_QUEUE: 58,
+ SYSTEM_EXT: 59,
+ SYSTEM_EXT_DB: 60,
+ SYSTEM_EXT_QUEUE: 61,
+ CONTAINER: 62,
+ CONTAINER_DB: 63,
+ CONTAINER_QUEUE: 64,
+ CONTAINER_EXT: 65,
+ CONTAINER_EXT_DB: 66,
+ CONTAINER_EXT_QUEUE: 67,
+ COMPONENT: 68,
+ COMPONENT_DB: 69,
+ COMPONENT_QUEUE: 70,
+ COMPONENT_EXT: 71,
+ COMPONENT_EXT_DB: 72,
+ COMPONENT_EXT_QUEUE: 73,
+ REL: 74,
+ BIREL: 75,
+ REL_U: 76,
+ REL_D: 77,
+ REL_L: 78,
+ REL_R: 79,
+ REL_B: 80,
+ REL_INDEX: 81,
+ UPDATE_EL_STYLE: 82,
+ UPDATE_REL_STYLE: 83,
+ UPDATE_LAYOUT_CONFIG: 84,
+ attribute: 85,
+ STR: 86,
+ STR_KEY: 87,
+ STR_VALUE: 88,
+ ATTRIBUTE: 89,
+ ATTRIBUTE_EMPTY: 90,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 7: "direction_tb",
+ 8: "direction_bt",
+ 9: "direction_rl",
+ 10: "direction_lr",
+ 15: "NEWLINE",
+ 16: ":",
+ 18: "open_directive",
+ 19: "type_directive",
+ 20: "arg_directive",
+ 21: "close_directive",
+ 22: "C4_CONTEXT",
+ 24: "EOF",
+ 25: "C4_CONTAINER",
+ 26: "C4_COMPONENT",
+ 27: "C4_DYNAMIC",
+ 28: "C4_DEPLOYMENT",
+ 32: "title",
+ 33: "accDescription",
+ 34: "acc_title",
+ 35: "acc_title_value",
+ 36: "acc_descr",
+ 37: "acc_descr_value",
+ 38: "acc_descr_multiline_value",
+ 43: "LBRACE",
+ 44: "ENTERPRISE_BOUNDARY",
+ 46: "SYSTEM_BOUNDARY",
+ 47: "BOUNDARY",
+ 48: "CONTAINER_BOUNDARY",
+ 49: "NODE",
+ 50: "NODE_L",
+ 51: "NODE_R",
+ 52: "RBRACE",
+ 54: "PERSON",
+ 55: "PERSON_EXT",
+ 56: "SYSTEM",
+ 57: "SYSTEM_DB",
+ 58: "SYSTEM_QUEUE",
+ 59: "SYSTEM_EXT",
+ 60: "SYSTEM_EXT_DB",
+ 61: "SYSTEM_EXT_QUEUE",
+ 62: "CONTAINER",
+ 63: "CONTAINER_DB",
+ 64: "CONTAINER_QUEUE",
+ 65: "CONTAINER_EXT",
+ 66: "CONTAINER_EXT_DB",
+ 67: "CONTAINER_EXT_QUEUE",
+ 68: "COMPONENT",
+ 69: "COMPONENT_DB",
+ 70: "COMPONENT_QUEUE",
+ 71: "COMPONENT_EXT",
+ 72: "COMPONENT_EXT_DB",
+ 73: "COMPONENT_EXT_QUEUE",
+ 74: "REL",
+ 75: "BIREL",
+ 76: "REL_U",
+ 77: "REL_D",
+ 78: "REL_L",
+ 79: "REL_R",
+ 80: "REL_B",
+ 81: "REL_INDEX",
+ 82: "UPDATE_EL_STYLE",
+ 83: "UPDATE_REL_STYLE",
+ 84: "UPDATE_LAYOUT_CONFIG",
+ 86: "STR",
+ 87: "STR_KEY",
+ 88: "STR_VALUE",
+ 89: "ATTRIBUTE",
+ 90: "ATTRIBUTE_EMPTY",
+ },
+ productions_: [
+ 0,
+ [3, 1],
+ [3, 1],
+ [3, 2],
+ [5, 1],
+ [5, 1],
+ [5, 1],
+ [5, 1],
+ [4, 1],
+ [6, 4],
+ [6, 6],
+ [12, 1],
+ [13, 1],
+ [17, 1],
+ [14, 1],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [11, 4],
+ [23, 1],
+ [23, 1],
+ [23, 2],
+ [29, 1],
+ [29, 2],
+ [29, 3],
+ [31, 1],
+ [31, 1],
+ [31, 2],
+ [31, 2],
+ [31, 1],
+ [39, 3],
+ [40, 3],
+ [40, 3],
+ [40, 4],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [42, 2],
+ [41, 1],
+ [30, 1],
+ [30, 2],
+ [30, 3],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 1],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [53, 2],
+ [45, 1],
+ [45, 2],
+ [85, 1],
+ [85, 2],
+ [85, 1],
+ [85, 1],
+ ],
+ performAction: function (t, e, n, i, a, s, r) {
+ var l = s.length - 1;
+ switch (a) {
+ case 4:
+ i.setDirection("TB");
+ break;
+ case 5:
+ i.setDirection("BT");
+ break;
+ case 6:
+ i.setDirection("RL");
+ break;
+ case 7:
+ i.setDirection("LR");
+ break;
+ case 11:
+ i.parseDirective("%%{", "open_directive");
+ break;
+ case 12:
+ break;
+ case 13:
+ (s[l] = s[l].trim().replace(/'/g, '"')), i.parseDirective(s[l], "arg_directive");
+ break;
+ case 14:
+ i.parseDirective("}%%", "close_directive", "c4Context");
+ break;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ i.setC4Type(s[l - 3]);
+ break;
+ case 26:
+ i.setTitle(s[l].substring(6)), (this.$ = s[l].substring(6));
+ break;
+ case 27:
+ i.setAccDescription(s[l].substring(15)), (this.$ = s[l].substring(15));
+ break;
+ case 28:
+ (this.$ = s[l].trim()), i.setTitle(this.$);
+ break;
+ case 29:
+ case 30:
+ (this.$ = s[l].trim()), i.setAccDescription(this.$);
+ break;
+ case 35:
+ case 36:
+ s[l].splice(2, 0, "ENTERPRISE"), i.addPersonOrSystemBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 37:
+ i.addPersonOrSystemBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 38:
+ s[l].splice(2, 0, "CONTAINER"), i.addContainerBoundary(...s[l]), (this.$ = s[l]);
+ break;
+ case 39:
+ i.addDeploymentNode("node", ...s[l]), (this.$ = s[l]);
+ break;
+ case 40:
+ i.addDeploymentNode("nodeL", ...s[l]), (this.$ = s[l]);
+ break;
+ case 41:
+ i.addDeploymentNode("nodeR", ...s[l]), (this.$ = s[l]);
+ break;
+ case 42:
+ i.popBoundaryParseStack();
+ break;
+ case 46:
+ i.addPersonOrSystem("person", ...s[l]), (this.$ = s[l]);
+ break;
+ case 47:
+ i.addPersonOrSystem("external_person", ...s[l]), (this.$ = s[l]);
+ break;
+ case 48:
+ i.addPersonOrSystem("system", ...s[l]), (this.$ = s[l]);
+ break;
+ case 49:
+ i.addPersonOrSystem("system_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 50:
+ i.addPersonOrSystem("system_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 51:
+ i.addPersonOrSystem("external_system", ...s[l]), (this.$ = s[l]);
+ break;
+ case 52:
+ i.addPersonOrSystem("external_system_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 53:
+ i.addPersonOrSystem("external_system_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 54:
+ i.addContainer("container", ...s[l]), (this.$ = s[l]);
+ break;
+ case 55:
+ i.addContainer("container_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 56:
+ i.addContainer("container_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 57:
+ i.addContainer("external_container", ...s[l]), (this.$ = s[l]);
+ break;
+ case 58:
+ i.addContainer("external_container_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 59:
+ i.addContainer("external_container_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 60:
+ i.addComponent("component", ...s[l]), (this.$ = s[l]);
+ break;
+ case 61:
+ i.addComponent("component_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 62:
+ i.addComponent("component_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 63:
+ i.addComponent("external_component", ...s[l]), (this.$ = s[l]);
+ break;
+ case 64:
+ i.addComponent("external_component_db", ...s[l]), (this.$ = s[l]);
+ break;
+ case 65:
+ i.addComponent("external_component_queue", ...s[l]), (this.$ = s[l]);
+ break;
+ case 67:
+ i.addRel("rel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 68:
+ i.addRel("birel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 69:
+ i.addRel("rel_u", ...s[l]), (this.$ = s[l]);
+ break;
+ case 70:
+ i.addRel("rel_d", ...s[l]), (this.$ = s[l]);
+ break;
+ case 71:
+ i.addRel("rel_l", ...s[l]), (this.$ = s[l]);
+ break;
+ case 72:
+ i.addRel("rel_r", ...s[l]), (this.$ = s[l]);
+ break;
+ case 73:
+ i.addRel("rel_b", ...s[l]), (this.$ = s[l]);
+ break;
+ case 74:
+ s[l].splice(0, 1), i.addRel("rel", ...s[l]), (this.$ = s[l]);
+ break;
+ case 75:
+ i.updateElStyle("update_el_style", ...s[l]), (this.$ = s[l]);
+ break;
+ case 76:
+ i.updateRelStyle("update_rel_style", ...s[l]), (this.$ = s[l]);
+ break;
+ case 77:
+ i.updateLayoutConfig("update_layout_config", ...s[l]), (this.$ = s[l]);
+ break;
+ case 78:
+ this.$ = [s[l]];
+ break;
+ case 79:
+ s[l].unshift(s[l - 1]), (this.$ = s[l]);
+ break;
+ case 80:
+ case 82:
+ this.$ = s[l].trim();
+ break;
+ case 81:
+ let t = {};
+ (t[s[l - 1].trim()] = s[l].trim()), (this.$ = t);
+ break;
+ case 83:
+ this.$ = "";
+ }
+ },
+ table: [
+ {
+ 3: 1,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: e,
+ 8: n,
+ 9: i,
+ 10: a,
+ 11: 5,
+ 12: 10,
+ 18: s,
+ 22: r,
+ 25: l,
+ 26: o,
+ 27: h,
+ 28: d,
+ },
+ { 1: [3] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ {
+ 3: 17,
+ 4: 2,
+ 5: 3,
+ 6: 4,
+ 7: e,
+ 8: n,
+ 9: i,
+ 10: a,
+ 11: 5,
+ 12: 10,
+ 18: s,
+ 22: r,
+ 25: l,
+ 26: o,
+ 27: h,
+ 28: d,
+ },
+ { 1: [2, 8] },
+ { 1: [2, 4] },
+ { 1: [2, 5] },
+ { 1: [2, 6] },
+ { 1: [2, 7] },
+ { 13: 18, 19: [1, 19] },
+ { 15: [1, 20] },
+ { 15: [1, 21] },
+ { 15: [1, 22] },
+ { 15: [1, 23] },
+ { 15: [1, 24] },
+ { 19: [2, 11] },
+ { 1: [2, 3] },
+ { 14: 25, 16: [1, 26], 21: u },
+ t([16, 21], [2, 12]),
+ {
+ 23: 28,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 79,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 80,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 81,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ {
+ 23: 82,
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ { 15: [1, 83] },
+ { 17: 84, 20: [1, 85] },
+ { 15: [2, 14] },
+ { 24: [1, 86] },
+ t(nt, [2, 20], {
+ 53: 32,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 30: 87,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ }),
+ t(nt, [2, 21]),
+ t(it, [2, 23], { 15: [1, 88] }),
+ t(nt, [2, 43], { 15: [1, 89] }),
+ t(at, [2, 26]),
+ t(at, [2, 27]),
+ { 35: [1, 90] },
+ { 37: [1, 91] },
+ t(at, [2, 30]),
+ { 45: 92, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 98, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 99, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 100, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 101, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 102, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 103, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 104, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 105, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 106, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 107, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 108, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 109, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 110, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 111, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 112, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 113, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 114, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 115, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 116, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ t(ct, [2, 66]),
+ { 45: 117, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 118, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 119, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 120, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 121, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 122, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 123, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 124, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 125, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 126, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 127, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ {
+ 30: 128,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 53: 32,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ },
+ { 15: [1, 130], 43: [1, 129] },
+ { 45: 131, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 132, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 133, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 134, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 135, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 136, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 45: 137, 85: 93, 86: st, 87: rt, 89: lt, 90: ot },
+ { 24: [1, 138] },
+ { 24: [1, 139] },
+ { 24: [1, 140] },
+ { 24: [1, 141] },
+ t(ht, [2, 9]),
+ { 14: 142, 21: u },
+ { 21: [2, 13] },
+ { 1: [2, 15] },
+ t(nt, [2, 22]),
+ t(it, [2, 24], { 31: 31, 29: 143, 32: p, 33: y, 34: f, 36: b, 38: g }),
+ t(nt, [2, 44], {
+ 29: 29,
+ 30: 30,
+ 31: 31,
+ 53: 32,
+ 39: 58,
+ 40: 70,
+ 42: 71,
+ 23: 144,
+ 32: p,
+ 33: y,
+ 34: f,
+ 36: b,
+ 38: g,
+ 44: _,
+ 46: x,
+ 47: m,
+ 48: E,
+ 49: A,
+ 50: S,
+ 51: v,
+ 54: C,
+ 55: k,
+ 56: O,
+ 57: T,
+ 58: w,
+ 59: D,
+ 60: R,
+ 61: N,
+ 62: P,
+ 63: M,
+ 64: j,
+ 65: B,
+ 66: Y,
+ 67: L,
+ 68: I,
+ 69: U,
+ 70: F,
+ 71: X,
+ 72: z,
+ 73: Q,
+ 74: W,
+ 75: $,
+ 76: q,
+ 77: V,
+ 78: G,
+ 79: H,
+ 80: K,
+ 81: J,
+ 82: Z,
+ 83: tt,
+ 84: et,
+ }),
+ t(at, [2, 28]),
+ t(at, [2, 29]),
+ t(ct, [2, 46]),
+ t(dt, [2, 78], { 85: 93, 45: 145, 86: st, 87: rt, 89: lt, 90: ot }),
+ t(ut, [2, 80]),
+ { 88: [1, 146] },
+ t(ut, [2, 82]),
+ t(ut, [2, 83]),
+ t(ct, [2, 47]),
+ t(ct, [2, 48]),
+ t(ct, [2, 49]),
+ t(ct, [2, 50]),
+ t(ct, [2, 51]),
+ t(ct, [2, 52]),
+ t(ct, [2, 53]),
+ t(ct, [2, 54]),
+ t(ct, [2, 55]),
+ t(ct, [2, 56]),
+ t(ct, [2, 57]),
+ t(ct, [2, 58]),
+ t(ct, [2, 59]),
+ t(ct, [2, 60]),
+ t(ct, [2, 61]),
+ t(ct, [2, 62]),
+ t(ct, [2, 63]),
+ t(ct, [2, 64]),
+ t(ct, [2, 65]),
+ t(ct, [2, 67]),
+ t(ct, [2, 68]),
+ t(ct, [2, 69]),
+ t(ct, [2, 70]),
+ t(ct, [2, 71]),
+ t(ct, [2, 72]),
+ t(ct, [2, 73]),
+ t(ct, [2, 74]),
+ t(ct, [2, 75]),
+ t(ct, [2, 76]),
+ t(ct, [2, 77]),
+ { 41: 147, 52: [1, 148] },
+ { 15: [1, 149] },
+ { 43: [1, 150] },
+ t(pt, [2, 35]),
+ t(pt, [2, 36]),
+ t(pt, [2, 37]),
+ t(pt, [2, 38]),
+ t(pt, [2, 39]),
+ t(pt, [2, 40]),
+ t(pt, [2, 41]),
+ { 1: [2, 16] },
+ { 1: [2, 17] },
+ { 1: [2, 18] },
+ { 1: [2, 19] },
+ { 15: [1, 151] },
+ t(it, [2, 25]),
+ t(nt, [2, 45]),
+ t(dt, [2, 79]),
+ t(ut, [2, 81]),
+ t(ct, [2, 31]),
+ t(ct, [2, 42]),
+ t(yt, [2, 32]),
+ t(yt, [2, 33], { 15: [1, 152] }),
+ t(ht, [2, 10]),
+ t(yt, [2, 34]),
+ ],
+ defaultActions: {
+ 2: [2, 1],
+ 3: [2, 2],
+ 5: [2, 8],
+ 6: [2, 4],
+ 7: [2, 5],
+ 8: [2, 6],
+ 9: [2, 7],
+ 16: [2, 11],
+ 17: [2, 3],
+ 27: [2, 14],
+ 85: [2, 13],
+ 86: [2, 15],
+ 138: [2, 16],
+ 139: [2, 17],
+ 140: [2, 18],
+ 141: [2, 19],
+ },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var n = new Error(t);
+ throw ((n.hash = e), n);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ n = [],
+ i = [null],
+ a = [],
+ s = this.table,
+ r = "",
+ l = 0,
+ o = 0,
+ c = a.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ d = { yy: {} };
+ for (var u in this.yy) Object.prototype.hasOwnProperty.call(this.yy, u) && (d.yy[u] = this.yy[u]);
+ h.setInput(t, d.yy), (d.yy.lexer = h), (d.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ a.push(p);
+ var y = h.options && h.options.ranges;
+ "function" == typeof d.yy.parseError
+ ? (this.parseError = d.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var f, b, g, _, x, m, E, A, S, v = {}; ; ) {
+ if (
+ ((b = e[e.length - 1]),
+ this.defaultActions[b]
+ ? (g = this.defaultActions[b])
+ : (null == f &&
+ ((S = void 0),
+ "number" != typeof (S = n.pop() || h.lex() || 1) &&
+ (S instanceof Array && (S = (n = S).pop()), (S = this.symbols_[S] || S)),
+ (f = S)),
+ (g = s[b] && s[b][f])),
+ void 0 === g || !g.length || !g[0])
+ ) {
+ var C;
+ for (x in ((A = []), s[b])) this.terminals_[x] && x > 2 && A.push("'" + this.terminals_[x] + "'");
+ (C = h.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ A.join(", ") +
+ ", got '" +
+ (this.terminals_[f] || f) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == f ? "end of input" : "'" + (this.terminals_[f] || f) + "'")),
+ this.parseError(C, {
+ text: h.match,
+ token: this.terminals_[f] || f,
+ line: h.yylineno,
+ loc: p,
+ expected: A,
+ });
+ }
+ if (g[0] instanceof Array && g.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + b + ", token: " + f);
+ switch (g[0]) {
+ case 1:
+ e.push(f),
+ i.push(h.yytext),
+ a.push(h.yylloc),
+ e.push(g[1]),
+ (f = null),
+ (o = h.yyleng),
+ (r = h.yytext),
+ (l = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[g[1]][1]),
+ (v.$ = i[i.length - m]),
+ (v._$ = {
+ first_line: a[a.length - (m || 1)].first_line,
+ last_line: a[a.length - 1].last_line,
+ first_column: a[a.length - (m || 1)].first_column,
+ last_column: a[a.length - 1].last_column,
+ }),
+ y && (v._$.range = [a[a.length - (m || 1)].range[0], a[a.length - 1].range[1]]),
+ void 0 !== (_ = this.performAction.apply(v, [r, o, l, d.yy, g[1], i, a].concat(c))))
+ )
+ return _;
+ m && ((e = e.slice(0, -1 * m * 2)), (i = i.slice(0, -1 * m)), (a = a.slice(0, -1 * m))),
+ e.push(this.productions_[g[1]][0]),
+ i.push(v.$),
+ a.push(v._$),
+ (E = s[e[e.length - 2]][e[e.length - 1]]),
+ e.push(E);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ bt = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ n = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ n.length - 1 && (this.yylineno -= n.length - 1);
+ var a = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: n
+ ? (n.length === i.length ? this.yylloc.first_column : 0) + i[i.length - n.length].length - n[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [a[0], a[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var n, i, a;
+ if (
+ (this.options.backtrack_lexer &&
+ ((a = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (a.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ n)
+ )
+ return n;
+ if (this._backtrack) {
+ for (var s in a) this[s] = a[s];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, n, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var a = this._currentRules(), s = 0; s < a.length; s++)
+ if ((n = this._input.match(this.rules[a[s]])) && (!e || n[0].length > e[0].length)) {
+ if (((e = n), (i = s), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(n, a[s]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, a[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: {},
+ performAction: function (t, e, n, i) {
+ switch (n) {
+ case 0:
+ return this.begin("open_directive"), 18;
+ case 1:
+ return 7;
+ case 2:
+ return 8;
+ case 3:
+ return 9;
+ case 4:
+ return 10;
+ case 5:
+ return this.begin("type_directive"), 19;
+ case 6:
+ return this.popState(), this.begin("arg_directive"), 16;
+ case 7:
+ return this.popState(), this.popState(), 21;
+ case 8:
+ return 20;
+ case 9:
+ return 32;
+ case 10:
+ return 33;
+ case 11:
+ return this.begin("acc_title"), 34;
+ case 12:
+ return this.popState(), "acc_title_value";
+ case 13:
+ return this.begin("acc_descr"), 36;
+ case 14:
+ return this.popState(), "acc_descr_value";
+ case 15:
+ this.begin("acc_descr_multiline");
+ break;
+ case 16:
+ case 78:
+ this.popState();
+ break;
+ case 17:
+ return "acc_descr_multiline_value";
+ case 18:
+ case 21:
+ case 75:
+ break;
+ case 19:
+ c;
+ break;
+ case 20:
+ return 15;
+ case 22:
+ return 22;
+ case 23:
+ return 25;
+ case 24:
+ return 26;
+ case 25:
+ return 27;
+ case 26:
+ return 28;
+ case 27:
+ return this.begin("person_ext"), 55;
+ case 28:
+ return this.begin("person"), 54;
+ case 29:
+ return this.begin("system_ext_queue"), 61;
+ case 30:
+ return this.begin("system_ext_db"), 60;
+ case 31:
+ return this.begin("system_ext"), 59;
+ case 32:
+ return this.begin("system_queue"), 58;
+ case 33:
+ return this.begin("system_db"), 57;
+ case 34:
+ return this.begin("system"), 56;
+ case 35:
+ return this.begin("boundary"), 47;
+ case 36:
+ return this.begin("enterprise_boundary"), 44;
+ case 37:
+ return this.begin("system_boundary"), 46;
+ case 38:
+ return this.begin("container_ext_queue"), 67;
+ case 39:
+ return this.begin("container_ext_db"), 66;
+ case 40:
+ return this.begin("container_ext"), 65;
+ case 41:
+ return this.begin("container_queue"), 64;
+ case 42:
+ return this.begin("container_db"), 63;
+ case 43:
+ return this.begin("container"), 62;
+ case 44:
+ return this.begin("container_boundary"), 48;
+ case 45:
+ return this.begin("component_ext_queue"), 73;
+ case 46:
+ return this.begin("component_ext_db"), 72;
+ case 47:
+ return this.begin("component_ext"), 71;
+ case 48:
+ return this.begin("component_queue"), 70;
+ case 49:
+ return this.begin("component_db"), 69;
+ case 50:
+ return this.begin("component"), 68;
+ case 51:
+ case 52:
+ return this.begin("node"), 49;
+ case 53:
+ return this.begin("node_l"), 50;
+ case 54:
+ return this.begin("node_r"), 51;
+ case 55:
+ return this.begin("rel"), 74;
+ case 56:
+ return this.begin("birel"), 75;
+ case 57:
+ case 58:
+ return this.begin("rel_u"), 76;
+ case 59:
+ case 60:
+ return this.begin("rel_d"), 77;
+ case 61:
+ case 62:
+ return this.begin("rel_l"), 78;
+ case 63:
+ case 64:
+ return this.begin("rel_r"), 79;
+ case 65:
+ return this.begin("rel_b"), 80;
+ case 66:
+ return this.begin("rel_index"), 81;
+ case 67:
+ return this.begin("update_el_style"), 82;
+ case 68:
+ return this.begin("update_rel_style"), 83;
+ case 69:
+ return this.begin("update_layout_config"), 84;
+ case 70:
+ return "EOF_IN_STRUCT";
+ case 71:
+ return this.begin("attribute"), "ATTRIBUTE_EMPTY";
+ case 72:
+ this.begin("attribute");
+ break;
+ case 73:
+ case 84:
+ this.popState(), this.popState();
+ break;
+ case 74:
+ case 76:
+ return 90;
+ case 77:
+ this.begin("string");
+ break;
+ case 79:
+ case 85:
+ return "STR";
+ case 80:
+ this.begin("string_kv");
+ break;
+ case 81:
+ return this.begin("string_kv_key"), "STR_KEY";
+ case 82:
+ this.popState(), this.begin("string_kv_value");
+ break;
+ case 83:
+ return "STR_VALUE";
+ case 86:
+ return "LBRACE";
+ case 87:
+ return "RBRACE";
+ case 88:
+ return "SPACE";
+ case 89:
+ return "EOL";
+ case 90:
+ return 24;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/,
+ /^(?:.*direction\s+TB[^\n]*)/,
+ /^(?:.*direction\s+BT[^\n]*)/,
+ /^(?:.*direction\s+RL[^\n]*)/,
+ /^(?:.*direction\s+LR[^\n]*)/,
+ /^(?:((?:(?!\}%%)[^:.])*))/,
+ /^(?::)/,
+ /^(?:\}%%)/,
+ /^(?:((?:(?!\}%%).|\n)*))/,
+ /^(?:title\s[^#\n;]+)/,
+ /^(?:accDescription\s[^#\n;]+)/,
+ /^(?:accTitle\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*:\s*)/,
+ /^(?:(?!\n||)*[^\n]*)/,
+ /^(?:accDescr\s*\{\s*)/,
+ /^(?:[\}])/,
+ /^(?:[^\}]*)/,
+ /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
+ /^(?:%%[^\n]*(\r?\n)*)/,
+ /^(?:\s*(\r?\n)+)/,
+ /^(?:\s+)/,
+ /^(?:C4Context\b)/,
+ /^(?:C4Container\b)/,
+ /^(?:C4Component\b)/,
+ /^(?:C4Dynamic\b)/,
+ /^(?:C4Deployment\b)/,
+ /^(?:Person_Ext\b)/,
+ /^(?:Person\b)/,
+ /^(?:SystemQueue_Ext\b)/,
+ /^(?:SystemDb_Ext\b)/,
+ /^(?:System_Ext\b)/,
+ /^(?:SystemQueue\b)/,
+ /^(?:SystemDb\b)/,
+ /^(?:System\b)/,
+ /^(?:Boundary\b)/,
+ /^(?:Enterprise_Boundary\b)/,
+ /^(?:System_Boundary\b)/,
+ /^(?:ContainerQueue_Ext\b)/,
+ /^(?:ContainerDb_Ext\b)/,
+ /^(?:Container_Ext\b)/,
+ /^(?:ContainerQueue\b)/,
+ /^(?:ContainerDb\b)/,
+ /^(?:Container\b)/,
+ /^(?:Container_Boundary\b)/,
+ /^(?:ComponentQueue_Ext\b)/,
+ /^(?:ComponentDb_Ext\b)/,
+ /^(?:Component_Ext\b)/,
+ /^(?:ComponentQueue\b)/,
+ /^(?:ComponentDb\b)/,
+ /^(?:Component\b)/,
+ /^(?:Deployment_Node\b)/,
+ /^(?:Node\b)/,
+ /^(?:Node_L\b)/,
+ /^(?:Node_R\b)/,
+ /^(?:Rel\b)/,
+ /^(?:BiRel\b)/,
+ /^(?:Rel_Up\b)/,
+ /^(?:Rel_U\b)/,
+ /^(?:Rel_Down\b)/,
+ /^(?:Rel_D\b)/,
+ /^(?:Rel_Left\b)/,
+ /^(?:Rel_L\b)/,
+ /^(?:Rel_Right\b)/,
+ /^(?:Rel_R\b)/,
+ /^(?:Rel_Back\b)/,
+ /^(?:RelIndex\b)/,
+ /^(?:UpdateElementStyle\b)/,
+ /^(?:UpdateRelStyle\b)/,
+ /^(?:UpdateLayoutConfig\b)/,
+ /^(?:$)/,
+ /^(?:[(][ ]*[,])/,
+ /^(?:[(])/,
+ /^(?:[)])/,
+ /^(?:,,)/,
+ /^(?:,)/,
+ /^(?:[ ]*["]["])/,
+ /^(?:[ ]*["])/,
+ /^(?:["])/,
+ /^(?:[^"]*)/,
+ /^(?:[ ]*[\$])/,
+ /^(?:[^=]*)/,
+ /^(?:[=][ ]*["])/,
+ /^(?:[^"]+)/,
+ /^(?:["])/,
+ /^(?:[^,]+)/,
+ /^(?:\{)/,
+ /^(?:\})/,
+ /^(?:[\s]+)/,
+ /^(?:[\n\r]+)/,
+ /^(?:$)/,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [16, 17], inclusive: !1 },
+ acc_descr: { rules: [14], inclusive: !1 },
+ acc_title: { rules: [12], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [7, 8], inclusive: !1 },
+ type_directive: { rules: [6, 7], inclusive: !1 },
+ open_directive: { rules: [5], inclusive: !1 },
+ string_kv_value: { rules: [83, 84], inclusive: !1 },
+ string_kv_key: { rules: [82], inclusive: !1 },
+ string_kv: { rules: [81], inclusive: !1 },
+ string: { rules: [78, 79], inclusive: !1 },
+ attribute: { rules: [73, 74, 75, 76, 77, 80, 85], inclusive: !1 },
+ update_layout_config: { rules: [70, 71, 72, 73], inclusive: !1 },
+ update_rel_style: { rules: [70, 71, 72, 73], inclusive: !1 },
+ update_el_style: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_b: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_r: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_l: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_d: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_u: { rules: [70, 71, 72, 73], inclusive: !1 },
+ rel_bi: { rules: [], inclusive: !1 },
+ rel: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node_r: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node_l: { rules: [70, 71, 72, 73], inclusive: !1 },
+ node: { rules: [70, 71, 72, 73], inclusive: !1 },
+ index: { rules: [], inclusive: !1 },
+ rel_index: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_ext_queue: { rules: [], inclusive: !1 },
+ component_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ component: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ container: { rules: [70, 71, 72, 73], inclusive: !1 },
+ birel: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ enterprise_boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ boundary: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_queue: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system_db: { rules: [70, 71, 72, 73], inclusive: !1 },
+ system: { rules: [70, 71, 72, 73], inclusive: !1 },
+ person_ext: { rules: [70, 71, 72, 73], inclusive: !1 },
+ person: { rules: [70, 71, 72, 73], inclusive: !1 },
+ INITIAL: {
+ rules: [
+ 0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 86, 87, 88,
+ 89, 90,
+ ],
+ inclusive: !0,
+ },
+ },
+ };
+ function gt() {
+ this.yy = {};
+ }
+ return (ft.lexer = bt), (gt.prototype = ft), (ft.Parser = gt), new gt();
+ })());
+ l.parser = l;
+ const o = l;
+ let h = [],
+ d = [""],
+ u = "global",
+ p = "",
+ y = [
+ {
+ alias: "global",
+ label: { text: "global" },
+ type: { text: "global" },
+ tags: null,
+ link: null,
+ parentBoundary: "",
+ },
+ ],
+ f = [],
+ b = "",
+ g = !1,
+ _ = 4,
+ x = 2;
+ var m;
+ const E = function (t) {
+ return null == t ? h : h.filter((e) => e.parentBoundary === t);
+ },
+ A = function () {
+ return g;
+ },
+ S = {
+ addPersonOrSystem: function (t, e, n, i, a, s, r) {
+ if (null === e || null === n) return;
+ let l = {};
+ const o = h.find((t) => t.alias === e);
+ if ((o && e === o.alias ? (l = o) : ((l.alias = e), h.push(l)), (l.label = null == n ? { text: "" } : { text: n }), null == i))
+ l.descr = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ l[t] = { text: e };
+ } else l.descr = { text: i };
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ l[t] = e;
+ } else l.sprite = a;
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ l[t] = e;
+ } else l.tags = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ l[t] = e;
+ } else l.link = r;
+ (l.typeC4Shape = { text: t }), (l.parentBoundary = u), (l.wrap = A());
+ },
+ addPersonOrSystemBoundary: function (t, e, n, i, a) {
+ if (null === t || null === e) return;
+ let s = {};
+ const r = y.find((e) => e.alias === t);
+ if ((r && t === r.alias ? (s = r) : ((s.alias = t), y.push(s)), (s.label = null == e ? { text: "" } : { text: e }), null == n))
+ s.type = { text: "system" };
+ else if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ s[t] = { text: e };
+ } else s.type = { text: n };
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ s[t] = e;
+ } else s.tags = i;
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ s[t] = e;
+ } else s.link = a;
+ (s.parentBoundary = u), (s.wrap = A()), (p = u), (u = t), d.push(p);
+ },
+ addContainer: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = h.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), h.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.techn = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.techn = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ o[t] = e;
+ } else o.sprite = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.wrap = A()), (o.typeC4Shape = { text: t }), (o.parentBoundary = u);
+ },
+ addContainerBoundary: function (t, e, n, i, a) {
+ if (null === t || null === e) return;
+ let s = {};
+ const r = y.find((e) => e.alias === t);
+ if ((r && t === r.alias ? (s = r) : ((s.alias = t), y.push(s)), (s.label = null == e ? { text: "" } : { text: e }), null == n))
+ s.type = { text: "container" };
+ else if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ s[t] = { text: e };
+ } else s.type = { text: n };
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ s[t] = e;
+ } else s.tags = i;
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ s[t] = e;
+ } else s.link = a;
+ (s.parentBoundary = u), (s.wrap = A()), (p = u), (u = t), d.push(p);
+ },
+ addComponent: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = h.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), h.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.techn = { text: "" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.techn = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ o[t] = e;
+ } else o.sprite = s;
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.wrap = A()), (o.typeC4Shape = { text: t }), (o.parentBoundary = u);
+ },
+ addDeploymentNode: function (t, e, n, i, a, s, r, l) {
+ if (null === e || null === n) return;
+ let o = {};
+ const c = y.find((t) => t.alias === e);
+ if ((c && e === c.alias ? (o = c) : ((o.alias = e), y.push(o)), (o.label = null == n ? { text: "" } : { text: n }), null == i))
+ o.type = { text: "node" };
+ else if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ o[t] = { text: e };
+ } else o.type = { text: i };
+ if (null == a) o.descr = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ o[t] = { text: e };
+ } else o.descr = { text: a };
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ o[t] = e;
+ } else o.tags = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ o[t] = e;
+ } else o.link = l;
+ (o.nodeType = t), (o.parentBoundary = u), (o.wrap = A()), (p = u), (u = e), d.push(p);
+ },
+ popBoundaryParseStack: function () {
+ (u = p), d.pop(), (p = d.pop()), d.push(p);
+ },
+ addRel: function (t, e, n, i, a, s, r, l, o) {
+ if (null == t || null == e || null == n || null == i) return;
+ let c = {};
+ const h = f.find((t) => t.from === e && t.to === n);
+ if ((h ? (c = h) : f.push(c), (c.type = t), (c.from = e), (c.to = n), (c.label = { text: i }), null == a)) c.techn = { text: "" };
+ else if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ c[t] = { text: e };
+ } else c.techn = { text: a };
+ if (null == s) c.descr = { text: "" };
+ else if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ c[t] = { text: e };
+ } else c.descr = { text: s };
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ c[t] = e;
+ } else c.sprite = r;
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ c[t] = e;
+ } else c.tags = l;
+ if ("object" == typeof o) {
+ let [t, e] = Object.entries(o)[0];
+ c[t] = e;
+ } else c.link = o;
+ c.wrap = A();
+ },
+ updateElStyle: function (t, e, n, i, a, s, r, l, o, c, d) {
+ let u = h.find((t) => t.alias === e);
+ if (void 0 !== u || ((u = y.find((t) => t.alias === e)), void 0 !== u)) {
+ if (null != n)
+ if ("object" == typeof n) {
+ let [t, e] = Object.entries(n)[0];
+ u[t] = e;
+ } else u.bgColor = n;
+ if (null != i)
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ u[t] = e;
+ } else u.fontColor = i;
+ if (null != a)
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ u[t] = e;
+ } else u.borderColor = a;
+ if (null != s)
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ u[t] = e;
+ } else u.shadowing = s;
+ if (null != r)
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ u[t] = e;
+ } else u.shape = r;
+ if (null != l)
+ if ("object" == typeof l) {
+ let [t, e] = Object.entries(l)[0];
+ u[t] = e;
+ } else u.sprite = l;
+ if (null != o)
+ if ("object" == typeof o) {
+ let [t, e] = Object.entries(o)[0];
+ u[t] = e;
+ } else u.techn = o;
+ if (null != c)
+ if ("object" == typeof c) {
+ let [t, e] = Object.entries(c)[0];
+ u[t] = e;
+ } else u.legendText = c;
+ if (null != d)
+ if ("object" == typeof d) {
+ let [t, e] = Object.entries(d)[0];
+ u[t] = e;
+ } else u.legendSprite = d;
+ }
+ },
+ updateRelStyle: function (t, e, n, i, a, s, r) {
+ const l = f.find((t) => t.from === e && t.to === n);
+ if (void 0 !== l) {
+ if (null != i)
+ if ("object" == typeof i) {
+ let [t, e] = Object.entries(i)[0];
+ l[t] = e;
+ } else l.textColor = i;
+ if (null != a)
+ if ("object" == typeof a) {
+ let [t, e] = Object.entries(a)[0];
+ l[t] = e;
+ } else l.lineColor = a;
+ if (null != s)
+ if ("object" == typeof s) {
+ let [t, e] = Object.entries(s)[0];
+ l[t] = parseInt(e);
+ } else l.offsetX = parseInt(s);
+ if (null != r)
+ if ("object" == typeof r) {
+ let [t, e] = Object.entries(r)[0];
+ l[t] = parseInt(e);
+ } else l.offsetY = parseInt(r);
+ }
+ },
+ updateLayoutConfig: function (t, e, n) {
+ let i = _,
+ a = x;
+ if ("object" == typeof e) {
+ const t = Object.values(e)[0];
+ i = parseInt(t);
+ } else i = parseInt(e);
+ if ("object" == typeof n) {
+ const t = Object.values(n)[0];
+ a = parseInt(t);
+ } else a = parseInt(n);
+ i >= 1 && (_ = i), a >= 1 && (x = a);
+ },
+ autoWrap: A,
+ setWrap: function (t) {
+ g = t;
+ },
+ getC4ShapeArray: E,
+ getC4Shape: function (t) {
+ return h.find((e) => e.alias === t);
+ },
+ getC4ShapeKeys: function (t) {
+ return Object.keys(E(t));
+ },
+ getBoundarys: function (t) {
+ return null == t ? y : y.filter((e) => e.parentBoundary === t);
+ },
+ getCurrentBoundaryParse: function () {
+ return u;
+ },
+ getParentBoundaryParse: function () {
+ return p;
+ },
+ getRels: function () {
+ return f;
+ },
+ getTitle: function () {
+ return b;
+ },
+ getC4Type: function () {
+ return m;
+ },
+ getC4ShapeInRow: function () {
+ return _;
+ },
+ getC4BoundaryInRow: function () {
+ return x;
+ },
+ setAccTitle: i.s,
+ getAccTitle: i.g,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ parseDirective: function (t, e, n) {
+ i.m.parseDirective(this, t, e, n);
+ },
+ getConfig: () => (0, i.c)().c4,
+ clear: function () {
+ (h = []),
+ (y = [
+ {
+ alias: "global",
+ label: { text: "global" },
+ type: { text: "global" },
+ tags: null,
+ link: null,
+ parentBoundary: "",
+ },
+ ]),
+ (p = ""),
+ (u = "global"),
+ (d = [""]),
+ (f = []),
+ (d = [""]),
+ (b = ""),
+ (g = !1),
+ (_ = 4),
+ (x = 2);
+ },
+ LINETYPE: {
+ SOLID: 0,
+ DOTTED: 1,
+ NOTE: 2,
+ SOLID_CROSS: 3,
+ DOTTED_CROSS: 4,
+ SOLID_OPEN: 5,
+ DOTTED_OPEN: 6,
+ LOOP_START: 10,
+ LOOP_END: 11,
+ ALT_START: 12,
+ ALT_ELSE: 13,
+ ALT_END: 14,
+ OPT_START: 15,
+ OPT_END: 16,
+ ACTIVE_START: 17,
+ ACTIVE_END: 18,
+ PAR_START: 19,
+ PAR_AND: 20,
+ PAR_END: 21,
+ RECT_START: 22,
+ RECT_END: 23,
+ SOLID_POINT: 24,
+ DOTTED_POINT: 25,
+ },
+ ARROWTYPE: { FILLED: 0, OPEN: 1 },
+ PLACEMENT: { LEFTOF: 0, RIGHTOF: 1, OVER: 2 },
+ setTitle: function (t) {
+ let e = (0, i.d)(t, (0, i.c)());
+ b = e;
+ },
+ setC4Type: function (t) {
+ let e = (0, i.d)(t, (0, i.c)());
+ m = e;
+ },
+ },
+ v = function (t, e) {
+ return (0, s.d)(t, e);
+ },
+ C = (function () {
+ function t(t, e, n, i, s, r, l) {
+ a(
+ e
+ .append("text")
+ .attr("x", n + s / 2)
+ .attr("y", i + r / 2 + 5)
+ .style("text-anchor", "middle")
+ .text(t),
+ l,
+ );
+ }
+ function e(t, e, n, s, r, l, o, c) {
+ const { fontSize: h, fontFamily: d, fontWeight: u } = c,
+ p = t.split(i.e.lineBreakRegex);
+ for (let t = 0; t < p.length; t++) {
+ const i = t * h - (h * (p.length - 1)) / 2,
+ l = e
+ .append("text")
+ .attr("x", n + r / 2)
+ .attr("y", s)
+ .style("text-anchor", "middle")
+ .attr("dominant-baseline", "middle")
+ .style("font-size", h)
+ .style("font-weight", u)
+ .style("font-family", d);
+ l.append("tspan").attr("dy", i).text(p[t]).attr("alignment-baseline", "mathematical"), a(l, o);
+ }
+ }
+ function n(t, n, i, s, r, l, o, c) {
+ const h = n.append("switch"),
+ d = h
+ .append("foreignObject")
+ .attr("x", i)
+ .attr("y", s)
+ .attr("width", r)
+ .attr("height", l)
+ .append("xhtml:div")
+ .style("display", "table")
+ .style("height", "100%")
+ .style("width", "100%");
+ d.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t),
+ e(t, h, i, s, r, 0, o, c),
+ a(d, o);
+ }
+ function a(t, e) {
+ for (const n in e) e.hasOwnProperty(n) && t.attr(n, e[n]);
+ }
+ return function (i) {
+ return "fo" === i.textPlacement ? n : "old" === i.textPlacement ? t : e;
+ };
+ })(),
+ k = function (t, e, n) {
+ var i;
+ let a = e.bgColor ? e.bgColor : n[e.typeC4Shape.text + "_bg_color"],
+ l = e.borderColor ? e.borderColor : n[e.typeC4Shape.text + "_border_color"],
+ o = e.fontColor ? e.fontColor : "#FFFFFF",
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";
+ switch (e.typeC4Shape.text) {
+ case "person":
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";
+ break;
+ case "external_person":
+ c =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";
+ }
+ const h = t.append("g");
+ h.attr("class", "person-man");
+ const d = (0, s.g)();
+ switch (e.typeC4Shape.text) {
+ case "person":
+ case "external_person":
+ case "system":
+ case "external_system":
+ case "container":
+ case "external_container":
+ case "component":
+ case "external_component":
+ (d.x = e.x),
+ (d.y = e.y),
+ (d.fill = a),
+ (d.width = e.width),
+ (d.height = e.height),
+ (d.stroke = l),
+ (d.rx = 2.5),
+ (d.ry = 2.5),
+ (d.attrs = { "stroke-width": 0.5 }),
+ v(h, d);
+ break;
+ case "system_db":
+ case "external_system_db":
+ case "container_db":
+ case "external_container_db":
+ case "component_db":
+ case "external_component_db":
+ h
+ .append("path")
+ .attr("fill", a)
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.width / 2)
+ .replaceAll("height", e.height),
+ ),
+ h
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.width / 2),
+ );
+ break;
+ case "system_queue":
+ case "external_system_queue":
+ case "container_queue":
+ case "external_container_queue":
+ case "component_queue":
+ case "external_component_queue":
+ h
+ .append("path")
+ .attr("fill", a)
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half"
+ .replaceAll("startx", e.x)
+ .replaceAll("starty", e.y)
+ .replaceAll("width", e.width)
+ .replaceAll("half", e.height / 2),
+ ),
+ h
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke-width", "0.5")
+ .attr("stroke", l)
+ .attr(
+ "d",
+ "Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half"
+ .replaceAll("startx", e.x + e.width)
+ .replaceAll("starty", e.y)
+ .replaceAll("half", e.height / 2),
+ );
+ }
+ let u =
+ ((p = n),
+ (y = e.typeC4Shape.text),
+ {
+ fontFamily: p[y + "FontFamily"],
+ fontSize: p[y + "FontSize"],
+ fontWeight: p[y + "FontWeight"],
+ });
+ var p, y;
+ switch (
+ (h
+ .append("text")
+ .attr("fill", o)
+ .attr("font-family", u.fontFamily)
+ .attr("font-size", u.fontSize - 2)
+ .attr("font-style", "italic")
+ .attr("lengthAdjust", "spacing")
+ .attr("textLength", e.typeC4Shape.width)
+ .attr("x", e.x + e.width / 2 - e.typeC4Shape.width / 2)
+ .attr("y", e.y + e.typeC4Shape.Y)
+ .text("<<" + e.typeC4Shape.text + ">>"),
+ e.typeC4Shape.text)
+ ) {
+ case "person":
+ case "external_person":
+ !(function (t, e, n, i, a, s) {
+ const l = t.append("image");
+ l.attr("width", e), l.attr("height", n), l.attr("x", i), l.attr("y", a);
+ let o = s.startsWith("data:image/png;base64") ? s : (0, r.Nm)(s);
+ l.attr("xlink:href", o);
+ })(h, 48, 48, e.x + e.width / 2 - 24, e.y + e.image.Y, c);
+ }
+ let f = n[e.typeC4Shape.text + "Font"]();
+ return (
+ (f.fontWeight = "bold"),
+ (f.fontSize = f.fontSize + 2),
+ (f.fontColor = o),
+ C(n)(e.label.text, h, e.x, e.y + e.label.Y, e.width, e.height, { fill: o }, f),
+ (f = n[e.typeC4Shape.text + "Font"]()),
+ (f.fontColor = o),
+ e.techn && "" !== (null == (i = e.techn) ? void 0 : i.text)
+ ? C(n)(e.techn.text, h, e.x, e.y + e.techn.Y, e.width, e.height, { fill: o, "font-style": "italic" }, f)
+ : e.type && "" !== e.type.text && C(n)(e.type.text, h, e.x, e.y + e.type.Y, e.width, e.height, { fill: o, "font-style": "italic" }, f),
+ e.descr &&
+ "" !== e.descr.text &&
+ ((f = n.personFont()), (f.fontColor = o), C(n)(e.descr.text, h, e.x, e.y + e.descr.Y, e.width, e.height, { fill: o }, f)),
+ e.height
+ );
+ };
+ let O = 0,
+ T = 0,
+ w = 4,
+ D = 2;
+ l.yy = S;
+ let R = {};
+ class N {
+ constructor(t) {
+ (this.name = ""),
+ (this.data = {}),
+ (this.data.startx = void 0),
+ (this.data.stopx = void 0),
+ (this.data.starty = void 0),
+ (this.data.stopy = void 0),
+ (this.data.widthLimit = void 0),
+ (this.nextData = {}),
+ (this.nextData.startx = void 0),
+ (this.nextData.stopx = void 0),
+ (this.nextData.starty = void 0),
+ (this.nextData.stopy = void 0),
+ (this.nextData.cnt = 0),
+ P(t.db.getConfig());
+ }
+ setData(t, e, n, i) {
+ (this.nextData.startx = this.data.startx = t),
+ (this.nextData.stopx = this.data.stopx = e),
+ (this.nextData.starty = this.data.starty = n),
+ (this.nextData.stopy = this.data.stopy = i);
+ }
+ updateVal(t, e, n, i) {
+ void 0 === t[e] ? (t[e] = n) : (t[e] = i(n, t[e]));
+ }
+ insert(t) {
+ this.nextData.cnt = this.nextData.cnt + 1;
+ let e = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + t.margin : this.nextData.stopx + 2 * t.margin,
+ n = e + t.width,
+ i = this.nextData.starty + 2 * t.margin,
+ a = i + t.height;
+ (e >= this.data.widthLimit || n >= this.data.widthLimit || this.nextData.cnt > w) &&
+ ((e = this.nextData.startx + t.margin + R.nextLinePaddingX),
+ (i = this.nextData.stopy + 2 * t.margin),
+ (this.nextData.stopx = n = e + t.width),
+ (this.nextData.starty = this.nextData.stopy),
+ (this.nextData.stopy = a = i + t.height),
+ (this.nextData.cnt = 1)),
+ (t.x = e),
+ (t.y = i),
+ this.updateVal(this.data, "startx", e, Math.min),
+ this.updateVal(this.data, "starty", i, Math.min),
+ this.updateVal(this.data, "stopx", n, Math.max),
+ this.updateVal(this.data, "stopy", a, Math.max),
+ this.updateVal(this.nextData, "startx", e, Math.min),
+ this.updateVal(this.nextData, "starty", i, Math.min),
+ this.updateVal(this.nextData, "stopx", n, Math.max),
+ this.updateVal(this.nextData, "stopy", a, Math.max);
+ }
+ init(t) {
+ (this.name = ""),
+ (this.data = {
+ startx: void 0,
+ stopx: void 0,
+ starty: void 0,
+ stopy: void 0,
+ widthLimit: void 0,
+ }),
+ (this.nextData = {
+ startx: void 0,
+ stopx: void 0,
+ starty: void 0,
+ stopy: void 0,
+ cnt: 0,
+ }),
+ P(t.db.getConfig());
+ }
+ bumpLastMargin(t) {
+ (this.data.stopx += t), (this.data.stopy += t);
+ }
+ }
+ const P = function (t) {
+ (0, i.f)(R, t),
+ t.fontFamily && (R.personFontFamily = R.systemFontFamily = R.messageFontFamily = t.fontFamily),
+ t.fontSize && (R.personFontSize = R.systemFontSize = R.messageFontSize = t.fontSize),
+ t.fontWeight && (R.personFontWeight = R.systemFontWeight = R.messageFontWeight = t.fontWeight);
+ },
+ M = (t, e) => ({
+ fontFamily: t[e + "FontFamily"],
+ fontSize: t[e + "FontSize"],
+ fontWeight: t[e + "FontWeight"],
+ }),
+ j = (t) => ({
+ fontFamily: t.boundaryFontFamily,
+ fontSize: t.boundaryFontSize,
+ fontWeight: t.boundaryFontWeight,
+ });
+ function B(t, e, n, a, s) {
+ if (!e[t].width)
+ if (n)
+ (e[t].text = (0, i.w)(e[t].text, s, a)),
+ (e[t].textLines = e[t].text.split(i.e.lineBreakRegex).length),
+ (e[t].width = s),
+ (e[t].height = (0, i.j)(e[t].text, a));
+ else {
+ let n = e[t].text.split(i.e.lineBreakRegex);
+ e[t].textLines = n.length;
+ let s = 0;
+ (e[t].height = 0), (e[t].width = 0);
+ for (const r of n) (e[t].width = Math.max((0, i.h)(r, a), e[t].width)), (s = (0, i.j)(r, a)), (e[t].height = e[t].height + s);
+ }
+ }
+ const Y = function (t, e, n) {
+ (e.x = n.data.startx),
+ (e.y = n.data.starty),
+ (e.width = n.data.stopx - n.data.startx),
+ (e.height = n.data.stopy - n.data.starty),
+ (e.label.y = R.c4ShapeMargin - 35);
+ let a = e.wrap && R.wrap,
+ s = j(R);
+ (s.fontSize = s.fontSize + 2),
+ (s.fontWeight = "bold"),
+ B("label", e, a, s, (0, i.h)(e.label.text, s)),
+ (function (t, e, n) {
+ const i = t.append("g");
+ let a = e.bgColor ? e.bgColor : "none",
+ s = e.borderColor ? e.borderColor : "#444444",
+ r = e.fontColor ? e.fontColor : "black",
+ l = { "stroke-width": 1, "stroke-dasharray": "7.0,7.0" };
+ e.nodeType && (l = { "stroke-width": 1 });
+ let o = {
+ x: e.x,
+ y: e.y,
+ fill: a,
+ stroke: s,
+ width: e.width,
+ height: e.height,
+ rx: 2.5,
+ ry: 2.5,
+ attrs: l,
+ };
+ v(i, o);
+ let c = n.boundaryFont();
+ (c.fontWeight = "bold"),
+ (c.fontSize = c.fontSize + 2),
+ (c.fontColor = r),
+ C(n)(e.label.text, i, e.x, e.y + e.label.Y, e.width, e.height, { fill: "#444444" }, c),
+ e.type &&
+ "" !== e.type.text &&
+ ((c = n.boundaryFont()), (c.fontColor = r), C(n)(e.type.text, i, e.x, e.y + e.type.Y, e.width, e.height, { fill: "#444444" }, c)),
+ e.descr &&
+ "" !== e.descr.text &&
+ ((c = n.boundaryFont()),
+ (c.fontSize = c.fontSize - 2),
+ (c.fontColor = r),
+ C(n)(e.descr.text, i, e.x, e.y + e.descr.Y, e.width, e.height, { fill: "#444444" }, c));
+ })(t, e, R);
+ },
+ L = function (t, e, n, a) {
+ let s = 0;
+ for (const r of a) {
+ s = 0;
+ const a = n[r];
+ let l = M(R, a.typeC4Shape.text);
+ switch (
+ ((l.fontSize = l.fontSize - 2),
+ (a.typeC4Shape.width = (0, i.h)("«" + a.typeC4Shape.text + "»", l)),
+ (a.typeC4Shape.height = l.fontSize + 2),
+ (a.typeC4Shape.Y = R.c4ShapePadding),
+ (s = a.typeC4Shape.Y + a.typeC4Shape.height - 4),
+ (a.image = { width: 0, height: 0, Y: 0 }),
+ a.typeC4Shape.text)
+ ) {
+ case "person":
+ case "external_person":
+ (a.image.width = 48), (a.image.height = 48), (a.image.Y = s), (s = a.image.Y + a.image.height);
+ }
+ a.sprite && ((a.image.width = 48), (a.image.height = 48), (a.image.Y = s), (s = a.image.Y + a.image.height));
+ let o = a.wrap && R.wrap,
+ c = R.width - 2 * R.c4ShapePadding,
+ h = M(R, a.typeC4Shape.text);
+ (h.fontSize = h.fontSize + 2),
+ (h.fontWeight = "bold"),
+ B("label", a, o, h, c),
+ (a.label.Y = s + 8),
+ (s = a.label.Y + a.label.height),
+ a.type && "" !== a.type.text
+ ? ((a.type.text = "[" + a.type.text + "]"),
+ B("type", a, o, M(R, a.typeC4Shape.text), c),
+ (a.type.Y = s + 5),
+ (s = a.type.Y + a.type.height))
+ : a.techn &&
+ "" !== a.techn.text &&
+ ((a.techn.text = "[" + a.techn.text + "]"),
+ B("techn", a, o, M(R, a.techn.text), c),
+ (a.techn.Y = s + 5),
+ (s = a.techn.Y + a.techn.height));
+ let d = s,
+ u = a.label.width;
+ a.descr &&
+ "" !== a.descr.text &&
+ (B("descr", a, o, M(R, a.typeC4Shape.text), c),
+ (a.descr.Y = s + 20),
+ (s = a.descr.Y + a.descr.height),
+ (u = Math.max(a.label.width, a.descr.width)),
+ (d = s - 5 * a.descr.textLines)),
+ (u += R.c4ShapePadding),
+ (a.width = Math.max(a.width || R.width, u, R.width)),
+ (a.height = Math.max(a.height || R.height, d, R.height)),
+ (a.margin = a.margin || R.c4ShapeMargin),
+ t.insert(a),
+ k(e, a, R);
+ }
+ t.bumpLastMargin(R.c4ShapeMargin);
+ };
+ class I {
+ constructor(t, e) {
+ (this.x = t), (this.y = e);
+ }
+ }
+ let U = function (t, e) {
+ let n = t.x,
+ i = t.y,
+ a = e.x,
+ s = e.y,
+ r = n + t.width / 2,
+ l = i + t.height / 2,
+ o = Math.abs(n - a),
+ c = Math.abs(i - s),
+ h = c / o,
+ d = t.height / t.width,
+ u = null;
+ return (
+ i == s && n < a
+ ? (u = new I(n + t.width, l))
+ : i == s && n > a
+ ? (u = new I(n, l))
+ : n == a && i < s
+ ? (u = new I(r, i + t.height))
+ : n == a && i > s && (u = new I(r, i)),
+ n > a && i < s
+ ? (u = d >= h ? new I(n, l + (h * t.width) / 2) : new I(r - ((o / c) * t.height) / 2, i + t.height))
+ : n < a && i < s
+ ? (u = d >= h ? new I(n + t.width, l + (h * t.width) / 2) : new I(r + ((o / c) * t.height) / 2, i + t.height))
+ : n < a && i > s
+ ? (u = d >= h ? new I(n + t.width, l - (h * t.width) / 2) : new I(r + ((t.height / 2) * o) / c, i))
+ : n > a && i > s && (u = d >= h ? new I(n, l - (t.width / 2) * h) : new I(r - ((t.height / 2) * o) / c, i)),
+ u
+ );
+ },
+ F = function (t, e) {
+ let n = { x: 0, y: 0 };
+ (n.x = e.x + e.width / 2), (n.y = e.y + e.height / 2);
+ let i = U(t, n);
+ return (n.x = t.x + t.width / 2), (n.y = t.y + t.height / 2), { startPoint: i, endPoint: U(e, n) };
+ };
+ function X(t, e, n, i, a) {
+ let s = new N(a);
+ s.data.widthLimit = n.data.widthLimit / Math.min(D, i.length);
+ for (let [r, l] of i.entries()) {
+ let i = 0;
+ (l.image = { width: 0, height: 0, Y: 0 }),
+ l.sprite && ((l.image.width = 48), (l.image.height = 48), (l.image.Y = i), (i = l.image.Y + l.image.height));
+ let o = l.wrap && R.wrap,
+ c = j(R);
+ if (
+ ((c.fontSize = c.fontSize + 2),
+ (c.fontWeight = "bold"),
+ B("label", l, o, c, s.data.widthLimit),
+ (l.label.Y = i + 8),
+ (i = l.label.Y + l.label.height),
+ l.type &&
+ "" !== l.type.text &&
+ ((l.type.text = "[" + l.type.text + "]"), B("type", l, o, j(R), s.data.widthLimit), (l.type.Y = i + 5), (i = l.type.Y + l.type.height)),
+ l.descr && "" !== l.descr.text)
+ ) {
+ let t = j(R);
+ (t.fontSize = t.fontSize - 2), B("descr", l, o, t, s.data.widthLimit), (l.descr.Y = i + 20), (i = l.descr.Y + l.descr.height);
+ }
+ if (0 == r || r % D == 0) {
+ let t = n.data.startx + R.diagramMarginX,
+ e = n.data.stopy + R.diagramMarginY + i;
+ s.setData(t, t, e, e);
+ } else {
+ let t = s.data.stopx !== s.data.startx ? s.data.stopx + R.diagramMarginX : s.data.startx,
+ e = s.data.starty;
+ s.setData(t, t, e, e);
+ }
+ s.name = l.alias;
+ let h = a.db.getC4ShapeArray(l.alias),
+ d = a.db.getC4ShapeKeys(l.alias);
+ d.length > 0 && L(s, t, h, d), (e = l.alias);
+ let u = a.db.getBoundarys(e);
+ u.length > 0 && X(t, e, s, u, a),
+ "global" !== l.alias && Y(t, l, s),
+ (n.data.stopy = Math.max(s.data.stopy + R.c4ShapeMargin, n.data.stopy)),
+ (n.data.stopx = Math.max(s.data.stopx + R.c4ShapeMargin, n.data.stopx)),
+ (O = Math.max(O, n.data.stopx)),
+ (T = Math.max(T, n.data.stopy));
+ }
+ }
+ const z = {
+ drawPersonOrSystemArray: L,
+ drawBoundary: Y,
+ setConf: P,
+ draw: function (t, e, n, s) {
+ R = (0, i.c)().c4;
+ const r = (0, i.c)().securityLevel;
+ let l;
+ "sandbox" === r && (l = (0, a.Ys)("#i" + e));
+ const o = "sandbox" === r ? (0, a.Ys)(l.nodes()[0].contentDocument.body) : (0, a.Ys)("body");
+ let c = s.db;
+ s.db.setWrap(R.wrap), (w = c.getC4ShapeInRow()), (D = c.getC4BoundaryInRow()), i.l.debug(`C:${JSON.stringify(R, null, 2)}`);
+ const h = "sandbox" === r ? o.select(`[id="${e}"]`) : (0, a.Ys)(`[id="${e}"]`);
+ h
+ .append("defs")
+ .append("symbol")
+ .attr("id", "computer")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z",
+ ),
+ (function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "database")
+ .attr("fill-rule", "evenodd")
+ .attr("clip-rule", "evenodd")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z",
+ );
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("symbol")
+ .attr("id", "clock")
+ .attr("width", "24")
+ .attr("height", "24")
+ .append("path")
+ .attr("transform", "scale(.5)")
+ .attr(
+ "d",
+ "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z",
+ );
+ })(h);
+ let d = new N(s);
+ d.setData(R.diagramMarginX, R.diagramMarginX, R.diagramMarginY, R.diagramMarginY),
+ (d.data.widthLimit = screen.availWidth),
+ (O = R.diagramMarginX),
+ (T = R.diagramMarginY);
+ const u = s.db.getTitle();
+ X(h, "", d, s.db.getBoundarys(""), s),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowhead")
+ .attr("refX", 9)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 0 0 L 10 5 L 0 10 z");
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "arrowend")
+ .attr("refX", 1)
+ .attr("refY", 5)
+ .attr("markerUnits", "userSpaceOnUse")
+ .attr("markerWidth", 12)
+ .attr("markerHeight", 12)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 10 0 L 0 5 L 10 10 z");
+ })(h),
+ (function (t) {
+ const e = t
+ .append("defs")
+ .append("marker")
+ .attr("id", "crosshead")
+ .attr("markerWidth", 15)
+ .attr("markerHeight", 8)
+ .attr("orient", "auto")
+ .attr("refX", 16)
+ .attr("refY", 4);
+ e
+ .append("path")
+ .attr("fill", "black")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1px")
+ .attr("d", "M 9,2 V 6 L16,4 Z"),
+ e
+ .append("path")
+ .attr("fill", "none")
+ .attr("stroke", "#000000")
+ .style("stroke-dasharray", "0, 0")
+ .attr("stroke-width", "1px")
+ .attr("d", "M 0,1 L 6,7 M 6,1 L 0,7");
+ })(h),
+ (function (t) {
+ t.append("defs")
+ .append("marker")
+ .attr("id", "filled-head")
+ .attr("refX", 18)
+ .attr("refY", 7)
+ .attr("markerWidth", 20)
+ .attr("markerHeight", 28)
+ .attr("orient", "auto")
+ .append("path")
+ .attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
+ })(h),
+ (function (t, e, n, a) {
+ let s = 0;
+ for (let t of e) {
+ s += 1;
+ let e = t.wrap && R.wrap,
+ l = {
+ fontFamily: (r = R).messageFontFamily,
+ fontSize: r.messageFontSize,
+ fontWeight: r.messageFontWeight,
+ };
+ "C4Dynamic" === a.db.getC4Type() && (t.label.text = s + ": " + t.label.text);
+ let o = (0, i.h)(t.label.text, l);
+ B("label", t, e, l, o),
+ t.techn && "" !== t.techn.text && ((o = (0, i.h)(t.techn.text, l)), B("techn", t, e, l, o)),
+ t.descr && "" !== t.descr.text && ((o = (0, i.h)(t.descr.text, l)), B("descr", t, e, l, o));
+ let c = n(t.from),
+ h = n(t.to),
+ d = F(c, h);
+ (t.startPoint = d.startPoint), (t.endPoint = d.endPoint);
+ }
+ var r;
+ ((t, e, n) => {
+ const i = t.append("g");
+ let a = 0;
+ for (let t of e) {
+ let e = t.textColor ? t.textColor : "#444444",
+ s = t.lineColor ? t.lineColor : "#444444",
+ r = t.offsetX ? parseInt(t.offsetX) : 0,
+ l = t.offsetY ? parseInt(t.offsetY) : 0,
+ o = "";
+ if (0 === a) {
+ let e = i.append("line");
+ e.attr("x1", t.startPoint.x),
+ e.attr("y1", t.startPoint.y),
+ e.attr("x2", t.endPoint.x),
+ e.attr("y2", t.endPoint.y),
+ e.attr("stroke-width", "1"),
+ e.attr("stroke", s),
+ e.style("fill", "none"),
+ "rel_b" !== t.type && e.attr("marker-end", "url(" + o + "#arrowhead)"),
+ ("birel" !== t.type && "rel_b" !== t.type) || e.attr("marker-start", "url(" + o + "#arrowend)"),
+ (a = -1);
+ } else {
+ let e = i.append("path");
+ e
+ .attr("fill", "none")
+ .attr("stroke-width", "1")
+ .attr("stroke", s)
+ .attr(
+ "d",
+ "Mstartx,starty Qcontrolx,controly stopx,stopy "
+ .replaceAll("startx", t.startPoint.x)
+ .replaceAll("starty", t.startPoint.y)
+ .replaceAll("controlx", t.startPoint.x + (t.endPoint.x - t.startPoint.x) / 2 - (t.endPoint.x - t.startPoint.x) / 4)
+ .replaceAll("controly", t.startPoint.y + (t.endPoint.y - t.startPoint.y) / 2)
+ .replaceAll("stopx", t.endPoint.x)
+ .replaceAll("stopy", t.endPoint.y),
+ ),
+ "rel_b" !== t.type && e.attr("marker-end", "url(" + o + "#arrowhead)"),
+ ("birel" !== t.type && "rel_b" !== t.type) || e.attr("marker-start", "url(" + o + "#arrowend)");
+ }
+ let c = n.messageFont();
+ C(n)(
+ t.label.text,
+ i,
+ Math.min(t.startPoint.x, t.endPoint.x) + Math.abs(t.endPoint.x - t.startPoint.x) / 2 + r,
+ Math.min(t.startPoint.y, t.endPoint.y) + Math.abs(t.endPoint.y - t.startPoint.y) / 2 + l,
+ t.label.width,
+ t.label.height,
+ { fill: e },
+ c,
+ ),
+ t.techn &&
+ "" !== t.techn.text &&
+ ((c = n.messageFont()),
+ C(n)(
+ "[" + t.techn.text + "]",
+ i,
+ Math.min(t.startPoint.x, t.endPoint.x) + Math.abs(t.endPoint.x - t.startPoint.x) / 2 + r,
+ Math.min(t.startPoint.y, t.endPoint.y) + Math.abs(t.endPoint.y - t.startPoint.y) / 2 + n.messageFontSize + 5 + l,
+ Math.max(t.label.width, t.techn.width),
+ t.techn.height,
+ { fill: e, "font-style": "italic" },
+ c,
+ ));
+ }
+ })(t, e, R);
+ })(h, s.db.getRels(), s.db.getC4Shape, s),
+ (d.data.stopx = O),
+ (d.data.stopy = T);
+ const p = d.data;
+ let y = p.stopy - p.starty + 2 * R.diagramMarginY;
+ const f = p.stopx - p.startx + 2 * R.diagramMarginX;
+ u &&
+ h
+ .append("text")
+ .text(u)
+ .attr("x", (p.stopx - p.startx) / 2 - 4 * R.diagramMarginX)
+ .attr("y", p.starty + R.diagramMarginY),
+ (0, i.i)(h, y, f, R.useMaxWidth);
+ const b = u ? 60 : 0;
+ h.attr("viewBox", p.startx - R.diagramMarginX + " -" + (R.diagramMarginY + b) + " " + f + " " + (y + b)), i.l.debug("models:", p);
+ },
+ },
+ Q = {
+ parser: o,
+ db: S,
+ renderer: z,
+ styles: (t) => `.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,
+ init: (t) => {
+ z.setConf(t.c4);
+ },
+ };
+ },
+ 8252: function (t, e, n) {
+ n.d(e, {
+ a: function () {
+ return r;
+ },
+ b: function () {
+ return c;
+ },
+ c: function () {
+ return o;
+ },
+ d: function () {
+ return s;
+ },
+ e: function () {
+ return d;
+ },
+ f: function () {
+ return l;
+ },
+ g: function () {
+ return h;
+ },
+ });
+ var i = n(7967),
+ a = n(9339);
+ const s = (t, e) => {
+ const n = t.append("rect");
+ if (
+ (n.attr("x", e.x),
+ n.attr("y", e.y),
+ n.attr("fill", e.fill),
+ n.attr("stroke", e.stroke),
+ n.attr("width", e.width),
+ n.attr("height", e.height),
+ void 0 !== e.rx && n.attr("rx", e.rx),
+ void 0 !== e.ry && n.attr("ry", e.ry),
+ void 0 !== e.attrs)
+ )
+ for (const t in e.attrs) n.attr(t, e.attrs[t]);
+ return void 0 !== e.class && n.attr("class", e.class), n;
+ },
+ r = (t, e) => {
+ const n = {
+ x: e.startx,
+ y: e.starty,
+ width: e.stopx - e.startx,
+ height: e.stopy - e.starty,
+ fill: e.fill,
+ stroke: e.stroke,
+ class: "rect",
+ };
+ s(t, n).lower();
+ },
+ l = (t, e) => {
+ const n = e.text.replace(a.J, " "),
+ i = t.append("text");
+ i.attr("x", e.x),
+ i.attr("y", e.y),
+ i.attr("class", "legend"),
+ i.style("text-anchor", e.anchor),
+ void 0 !== e.class && i.attr("class", e.class);
+ const s = i.append("tspan");
+ return s.attr("x", e.x + 2 * e.textMargin), s.text(n), i;
+ },
+ o = (t, e, n, a) => {
+ const s = t.append("image");
+ s.attr("x", e), s.attr("y", n);
+ const r = (0, i.Nm)(a);
+ s.attr("xlink:href", r);
+ },
+ c = (t, e, n, a) => {
+ const s = t.append("use");
+ s.attr("x", e), s.attr("y", n);
+ const r = (0, i.Nm)(a);
+ s.attr("xlink:href", `#${r}`);
+ },
+ h = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ fill: "#EDF2AE",
+ stroke: "#666",
+ anchor: "start",
+ rx: 0,
+ ry: 0,
+ }),
+ d = () => ({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100,
+ "text-anchor": "start",
+ style: "#666",
+ textMargin: 0,
+ rx: 0,
+ ry: 0,
+ tspan: !0,
+ });
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js
index f1c2fbe83..d2c25727e 100644
--- a/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js
@@ -1 +1,745 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[546],{3546:function(t,e,i){i.d(e,{diagram:function(){return y}});var n=i(9339),s=i(7274),r=(i(7484),i(7967),i(7856),function(){var t=function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},e=[1,4],i=[1,5],n=[1,6],s=[1,7],r=[1,9],c=[1,11,13,15,17,19,20,26,27,28,29],l=[2,5],a=[1,6,11,13,15,17,19,20,26,27,28,29],o=[26,27,28],h=[2,8],u=[1,18],y=[1,19],p=[1,20],d=[1,21],g=[1,22],_=[1,23],f=[1,28],m=[6,26,27,28,29],v={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(t,e,i,n,s,r,c){var l=r.length-1;switch(s){case 4:n.setShowData(!0);break;case 7:this.$=r[l-1];break;case 9:n.addSection(r[l-1],n.cleanupValue(r[l]));break;case 10:this.$=r[l].trim(),n.setDiagramTitle(this.$);break;case 11:this.$=r[l].trim(),n.setAccTitle(this.$);break;case 12:case 13:this.$=r[l].trim(),n.setAccDescription(this.$);break;case 14:n.addSection(r[l].substr(8)),this.$=r[l].substr(8);break;case 21:n.parseDirective("%%{","open_directive");break;case 22:n.parseDirective(r[l],"type_directive");break;case 23:r[l]=r[l].trim().replace(/'/g,'"'),n.parseDirective(r[l],"arg_directive");break;case 24:n.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,21:8,26:i,27:n,28:s,29:r},{1:[3]},{3:10,4:2,5:3,6:e,21:8,26:i,27:n,28:s,29:r},{3:11,4:2,5:3,6:e,21:8,26:i,27:n,28:s,29:r},t(c,l,{7:12,8:[1,13]}),t(a,[2,18]),t(a,[2,19]),t(a,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},t(o,h,{21:8,9:16,10:17,5:24,1:[2,3],11:u,13:y,15:p,17:d,19:g,20:_,29:r}),t(c,l,{7:25}),{23:26,24:[1,27],32:f},t([24,32],[2,22]),t(c,[2,6]),{4:29,26:i,27:n,28:s},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},t(o,[2,13]),t(o,[2,14]),t(o,[2,15]),t(o,h,{21:8,9:16,10:17,5:24,1:[2,4],11:u,13:y,15:p,17:d,19:g,20:_,29:r}),t(m,[2,16]),{25:34,31:[1,35]},t(m,[2,24]),t(c,[2,7]),t(o,[2,9]),t(o,[2,10]),t(o,[2,11]),t(o,[2,12]),{23:36,32:f},{32:[2,23]},t(m,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},parse:function(t){var e=[0],i=[],n=[null],s=[],r=this.table,c="",l=0,a=0,o=s.slice.call(arguments,1),h=Object.create(this.lexer),u={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(u.yy[y]=this.yy[y]);h.setInput(t,u.yy),u.yy.lexer=h,u.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var p=h.yylloc;s.push(p);var d=h.options&&h.options.ranges;"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var g,_,f,m,v,b,k,x,S,w={};;){if(_=e[e.length-1],this.defaultActions[_]?f=this.defaultActions[_]:(null==g&&(S=void 0,"number"!=typeof(S=i.pop()||h.lex()||1)&&(S instanceof Array&&(S=(i=S).pop()),S=this.symbols_[S]||S),g=S),f=r[_]&&r[_][g]),void 0===f||!f.length||!f[0]){var $;for(v in x=[],r[_])this.terminals_[v]&&v>2&&x.push("'"+this.terminals_[v]+"'");$=h.showPosition?"Parse error on line "+(l+1)+":\n"+h.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[g]||g)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==g?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError($,{text:h.match,token:this.terminals_[g]||g,line:h.yylineno,loc:p,expected:x})}if(f[0]instanceof Array&&f.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+g);switch(f[0]){case 1:e.push(g),n.push(h.yytext),s.push(h.yylloc),e.push(f[1]),g=null,a=h.yyleng,c=h.yytext,l=h.yylineno,p=h.yylloc;break;case 2:if(b=this.productions_[f[1]][1],w.$=n[n.length-b],w._$={first_line:s[s.length-(b||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(b||1)].first_column,last_column:s[s.length-1].last_column},d&&(w._$.range=[s[s.length-(b||1)].range[0],s[s.length-1].range[1]]),void 0!==(m=this.performAction.apply(w,[c,a,l,u.yy,f[1],n,s].concat(o))))return m;b&&(e=e.slice(0,-1*b*2),n=n.slice(0,-1*b),s=s.slice(0,-1*b)),e.push(this.productions_[f[1]][0]),n.push(w.$),s.push(w._$),k=r[e[e.length-2]][e[e.length-1]],e.push(k);break;case 3:return!0}}return!0}},b={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var i,n,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=i,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,i,n){switch(i){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};function k(){this.yy={}}return v.lexer=b,k.prototype=v,v.Parser=k,new k}());r.parser=r;const c=r,l=n.C.pie,a={};let o=a,h=false;const u=structuredClone(l),y={parser:c,db:{getConfig:()=>structuredClone(u),parseDirective:(t,e,i)=>{(0,n.D)(void 0,t,e,i)},clear:()=>{o=structuredClone(a),h=false,(0,n.v)()},setDiagramTitle:n.r,getDiagramTitle:n.t,setAccTitle:n.s,getAccTitle:n.g,setAccDescription:n.b,getAccDescription:n.a,addSection:(t,e)=>{t=(0,n.d)(t,(0,n.c)()),void 0===o[t]&&(o[t]=e,n.l.debug(`added new section: ${t}, with value: ${e}`))},getSections:()=>o,cleanupValue:t=>(":"===t.substring(0,1)&&(t=t.substring(1).trim()),Number(t.trim())),setShowData:t=>{h=t},getShowData:()=>h},renderer:{draw:(t,e,i,r)=>{var c,l;n.l.debug("rendering pie chart\n"+t);const a=r.db,o=(0,n.c)(),h=(0,n.E)(a.getConfig(),o.pie),u=(null==(l=null==(c=document.getElementById(e))?void 0:c.parentElement)?void 0:l.offsetWidth)??h.useWidth,y=(0,n.B)(e);y.attr("viewBox",`0 0 ${u} 450`),(0,n.i)(y,450,u,h.useMaxWidth);const p=y.append("g");p.attr("transform","translate("+u/2+",225)");const{themeVariables:d}=o;let[g]=(0,n.F)(d.pieOuterStrokeWidth);g??(g=2);const _=h.textPosition,f=Math.min(u,450)/2-40,m=(0,s.Nb1)().innerRadius(0).outerRadius(f),v=(0,s.Nb1)().innerRadius(f*_).outerRadius(f*_);p.append("circle").attr("cx",0).attr("cy",0).attr("r",f+g/2).attr("class","pieOuterCircle");const b=a.getSections(),k=(t=>{const e=Object.entries(t).map((t=>({label:t[0],value:t[1]})));return(0,s.ve8)().value((t=>t.value))(e)})(b),x=[d.pie1,d.pie2,d.pie3,d.pie4,d.pie5,d.pie6,d.pie7,d.pie8,d.pie9,d.pie10,d.pie11,d.pie12],S=(0,s.PKp)(x);p.selectAll("mySlices").data(k).enter().append("path").attr("d",m).attr("fill",(t=>S(t.data.label))).attr("class","pieCircle");let w=0;Object.keys(b).forEach((t=>{w+=b[t]})),p.selectAll("mySlices").data(k).enter().append("text").text((t=>(t.data.value/w*100).toFixed(0)+"%")).attr("transform",(t=>"translate("+v.centroid(t)+")")).style("text-anchor","middle").attr("class","slice"),p.append("text").text(a.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");const $=p.selectAll(".legend").data(S.domain()).enter().append("g").attr("class","legend").attr("transform",((t,e)=>"translate(216,"+(22*e-22*S.domain().length/2)+")"));$.append("rect").attr("width",18).attr("height",18).style("fill",S).style("stroke",S),$.data(k).append("text").attr("x",22).attr("y",14).text((t=>{const{label:e,value:i}=t.data;return a.getShowData()?`${e} [${i}]`:e}))}},styles:t=>`\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${t.pieOuterStrokeColor};\n stroke-width: ${t.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [546],
+ {
+ 3546: function (t, e, i) {
+ i.d(e, {
+ diagram: function () {
+ return y;
+ },
+ });
+ var n = i(9339),
+ s = i(7274),
+ r =
+ (i(7484),
+ i(7967),
+ i(7856),
+ (function () {
+ var t = function (t, e, i, n) {
+ for (i = i || {}, n = t.length; n--; i[t[n]] = e);
+ return i;
+ },
+ e = [1, 4],
+ i = [1, 5],
+ n = [1, 6],
+ s = [1, 7],
+ r = [1, 9],
+ c = [1, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29],
+ l = [2, 5],
+ a = [1, 6, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29],
+ o = [26, 27, 28],
+ h = [2, 8],
+ u = [1, 18],
+ y = [1, 19],
+ p = [1, 20],
+ d = [1, 21],
+ g = [1, 22],
+ _ = [1, 23],
+ f = [1, 28],
+ m = [6, 26, 27, 28, 29],
+ v = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ eol: 4,
+ directive: 5,
+ PIE: 6,
+ document: 7,
+ showData: 8,
+ line: 9,
+ statement: 10,
+ txt: 11,
+ value: 12,
+ title: 13,
+ title_value: 14,
+ acc_title: 15,
+ acc_title_value: 16,
+ acc_descr: 17,
+ acc_descr_value: 18,
+ acc_descr_multiline_value: 19,
+ section: 20,
+ openDirective: 21,
+ typeDirective: 22,
+ closeDirective: 23,
+ ":": 24,
+ argDirective: 25,
+ NEWLINE: 26,
+ ";": 27,
+ EOF: 28,
+ open_directive: 29,
+ type_directive: 30,
+ arg_directive: 31,
+ close_directive: 32,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 6: "PIE",
+ 8: "showData",
+ 11: "txt",
+ 12: "value",
+ 13: "title",
+ 14: "title_value",
+ 15: "acc_title",
+ 16: "acc_title_value",
+ 17: "acc_descr",
+ 18: "acc_descr_value",
+ 19: "acc_descr_multiline_value",
+ 20: "section",
+ 24: ":",
+ 26: "NEWLINE",
+ 27: ";",
+ 28: "EOF",
+ 29: "open_directive",
+ 30: "type_directive",
+ 31: "arg_directive",
+ 32: "close_directive",
+ },
+ productions_: [
+ 0,
+ [3, 2],
+ [3, 2],
+ [3, 2],
+ [3, 3],
+ [7, 0],
+ [7, 2],
+ [9, 2],
+ [10, 0],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 2],
+ [10, 1],
+ [10, 1],
+ [10, 1],
+ [5, 3],
+ [5, 5],
+ [4, 1],
+ [4, 1],
+ [4, 1],
+ [21, 1],
+ [22, 1],
+ [25, 1],
+ [23, 1],
+ ],
+ performAction: function (t, e, i, n, s, r, c) {
+ var l = r.length - 1;
+ switch (s) {
+ case 4:
+ n.setShowData(!0);
+ break;
+ case 7:
+ this.$ = r[l - 1];
+ break;
+ case 9:
+ n.addSection(r[l - 1], n.cleanupValue(r[l]));
+ break;
+ case 10:
+ (this.$ = r[l].trim()), n.setDiagramTitle(this.$);
+ break;
+ case 11:
+ (this.$ = r[l].trim()), n.setAccTitle(this.$);
+ break;
+ case 12:
+ case 13:
+ (this.$ = r[l].trim()), n.setAccDescription(this.$);
+ break;
+ case 14:
+ n.addSection(r[l].substr(8)), (this.$ = r[l].substr(8));
+ break;
+ case 21:
+ n.parseDirective("%%{", "open_directive");
+ break;
+ case 22:
+ n.parseDirective(r[l], "type_directive");
+ break;
+ case 23:
+ (r[l] = r[l].trim().replace(/'/g, '"')), n.parseDirective(r[l], "arg_directive");
+ break;
+ case 24:
+ n.parseDirective("}%%", "close_directive", "pie");
+ }
+ },
+ table: [
+ { 3: 1, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ { 1: [3] },
+ { 3: 10, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ { 3: 11, 4: 2, 5: 3, 6: e, 21: 8, 26: i, 27: n, 28: s, 29: r },
+ t(c, l, { 7: 12, 8: [1, 13] }),
+ t(a, [2, 18]),
+ t(a, [2, 19]),
+ t(a, [2, 20]),
+ { 22: 14, 30: [1, 15] },
+ { 30: [2, 21] },
+ { 1: [2, 1] },
+ { 1: [2, 2] },
+ t(o, h, {
+ 21: 8,
+ 9: 16,
+ 10: 17,
+ 5: 24,
+ 1: [2, 3],
+ 11: u,
+ 13: y,
+ 15: p,
+ 17: d,
+ 19: g,
+ 20: _,
+ 29: r,
+ }),
+ t(c, l, { 7: 25 }),
+ { 23: 26, 24: [1, 27], 32: f },
+ t([24, 32], [2, 22]),
+ t(c, [2, 6]),
+ { 4: 29, 26: i, 27: n, 28: s },
+ { 12: [1, 30] },
+ { 14: [1, 31] },
+ { 16: [1, 32] },
+ { 18: [1, 33] },
+ t(o, [2, 13]),
+ t(o, [2, 14]),
+ t(o, [2, 15]),
+ t(o, h, {
+ 21: 8,
+ 9: 16,
+ 10: 17,
+ 5: 24,
+ 1: [2, 4],
+ 11: u,
+ 13: y,
+ 15: p,
+ 17: d,
+ 19: g,
+ 20: _,
+ 29: r,
+ }),
+ t(m, [2, 16]),
+ { 25: 34, 31: [1, 35] },
+ t(m, [2, 24]),
+ t(c, [2, 7]),
+ t(o, [2, 9]),
+ t(o, [2, 10]),
+ t(o, [2, 11]),
+ t(o, [2, 12]),
+ { 23: 36, 32: f },
+ { 32: [2, 23] },
+ t(m, [2, 17]),
+ ],
+ defaultActions: { 9: [2, 21], 10: [2, 1], 11: [2, 2], 35: [2, 23] },
+ parseError: function (t, e) {
+ if (!e.recoverable) {
+ var i = new Error(t);
+ throw ((i.hash = e), i);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var e = [0],
+ i = [],
+ n = [null],
+ s = [],
+ r = this.table,
+ c = "",
+ l = 0,
+ a = 0,
+ o = s.slice.call(arguments, 1),
+ h = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (u.yy[y] = this.yy[y]);
+ h.setInput(t, u.yy), (u.yy.lexer = h), (u.yy.parser = this), void 0 === h.yylloc && (h.yylloc = {});
+ var p = h.yylloc;
+ s.push(p);
+ var d = h.options && h.options.ranges;
+ "function" == typeof u.yy.parseError
+ ? (this.parseError = u.yy.parseError)
+ : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var g, _, f, m, v, b, k, x, S, w = {}; ; ) {
+ if (
+ ((_ = e[e.length - 1]),
+ this.defaultActions[_]
+ ? (f = this.defaultActions[_])
+ : (null == g &&
+ ((S = void 0),
+ "number" != typeof (S = i.pop() || h.lex() || 1) &&
+ (S instanceof Array && (S = (i = S).pop()), (S = this.symbols_[S] || S)),
+ (g = S)),
+ (f = r[_] && r[_][g])),
+ void 0 === f || !f.length || !f[0])
+ ) {
+ var $;
+ for (v in ((x = []), r[_])) this.terminals_[v] && v > 2 && x.push("'" + this.terminals_[v] + "'");
+ ($ = h.showPosition
+ ? "Parse error on line " +
+ (l + 1) +
+ ":\n" +
+ h.showPosition() +
+ "\nExpecting " +
+ x.join(", ") +
+ ", got '" +
+ (this.terminals_[g] || g) +
+ "'"
+ : "Parse error on line " + (l + 1) + ": Unexpected " + (1 == g ? "end of input" : "'" + (this.terminals_[g] || g) + "'")),
+ this.parseError($, {
+ text: h.match,
+ token: this.terminals_[g] || g,
+ line: h.yylineno,
+ loc: p,
+ expected: x,
+ });
+ }
+ if (f[0] instanceof Array && f.length > 1)
+ throw new Error("Parse Error: multiple actions possible at state: " + _ + ", token: " + g);
+ switch (f[0]) {
+ case 1:
+ e.push(g),
+ n.push(h.yytext),
+ s.push(h.yylloc),
+ e.push(f[1]),
+ (g = null),
+ (a = h.yyleng),
+ (c = h.yytext),
+ (l = h.yylineno),
+ (p = h.yylloc);
+ break;
+ case 2:
+ if (
+ ((b = this.productions_[f[1]][1]),
+ (w.$ = n[n.length - b]),
+ (w._$ = {
+ first_line: s[s.length - (b || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (b || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ d && (w._$.range = [s[s.length - (b || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (m = this.performAction.apply(w, [c, a, l, u.yy, f[1], n, s].concat(o))))
+ )
+ return m;
+ b && ((e = e.slice(0, -1 * b * 2)), (n = n.slice(0, -1 * b)), (s = s.slice(0, -1 * b))),
+ e.push(this.productions_[f[1]][0]),
+ n.push(w.$),
+ s.push(w._$),
+ (k = r[e[e.length - 2]][e[e.length - 1]]),
+ e.push(k);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ b = {
+ EOF: 1,
+ parseError: function (t, e) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, e);
+ },
+ setInput: function (t, e) {
+ return (
+ (this.yy = e || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0,
+ }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var e = t.length,
+ i = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - e)), (this.offset -= e);
+ var n = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ i.length - 1 && (this.yylineno -= i.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: i
+ ? (i.length === n.length ? this.yylloc.first_column : 0) + n[n.length - i.length].length - i[0].length
+ : this.yylloc.first_column - e,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - e]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ e = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + e + "^";
+ },
+ test_match: function (t, e) {
+ var i, n, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (n = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += n.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (i = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ i)
+ )
+ return i;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, e, i, n;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((i = this._input.match(this.rules[s[r]])) && (!e || i[0].length > e[0].length)) {
+ if (((e = i), (n = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(i, s[r]))) return t;
+ if (this._backtrack) {
+ e = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return e
+ ? !1 !== (t = this.test_match(e, s[n])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { "case-insensitive": !0 },
+ performAction: function (t, e, i, n) {
+ switch (i) {
+ case 0:
+ return this.begin("open_directive"), 29;
+ case 1:
+ return this.begin("type_directive"), 30;
+ case 2:
+ return this.popState(), this.begin("arg_directive"), 24;
+ case 3:
+ return this.popState(), this.popState(), 32;
+ case 4:
+ return 31;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ break;
+ case 7:
+ return 26;
+ case 10:
+ return this.begin("title"), 13;
+ case 11:
+ return this.popState(), "title_value";
+ case 12:
+ return this.begin("acc_title"), 15;
+ case 13:
+ return this.popState(), "acc_title_value";
+ case 14:
+ return this.begin("acc_descr"), 17;
+ case 15:
+ return this.popState(), "acc_descr_value";
+ case 16:
+ this.begin("acc_descr_multiline");
+ break;
+ case 17:
+ case 20:
+ this.popState();
+ break;
+ case 18:
+ return "acc_descr_multiline_value";
+ case 19:
+ this.begin("string");
+ break;
+ case 21:
+ return "txt";
+ case 22:
+ return 6;
+ case 23:
+ return 8;
+ case 24:
+ return "value";
+ case 25:
+ return 28;
+ }
+ },
+ rules: [
+ /^(?:%%\{)/i,
+ /^(?:((?:(?!\}%%)[^:.])*))/i,
+ /^(?::)/i,
+ /^(?:\}%%)/i,
+ /^(?:((?:(?!\}%%).|\n)*))/i,
+ /^(?:%%(?!\{)[^\n]*)/i,
+ /^(?:[^\}]%%[^\n]*)/i,
+ /^(?:[\n\r]+)/i,
+ /^(?:%%[^\n]*)/i,
+ /^(?:[\s]+)/i,
+ /^(?:title\b)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accTitle\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*:\s*)/i,
+ /^(?:(?!\n||)*[^\n]*)/i,
+ /^(?:accDescr\s*\{\s*)/i,
+ /^(?:[\}])/i,
+ /^(?:[^\}]*)/i,
+ /^(?:["])/i,
+ /^(?:["])/i,
+ /^(?:[^"]*)/i,
+ /^(?:pie\b)/i,
+ /^(?:showData\b)/i,
+ /^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,
+ /^(?:$)/i,
+ ],
+ conditions: {
+ acc_descr_multiline: { rules: [17, 18], inclusive: !1 },
+ acc_descr: { rules: [15], inclusive: !1 },
+ acc_title: { rules: [13], inclusive: !1 },
+ close_directive: { rules: [], inclusive: !1 },
+ arg_directive: { rules: [3, 4], inclusive: !1 },
+ type_directive: { rules: [2, 3], inclusive: !1 },
+ open_directive: { rules: [1], inclusive: !1 },
+ title: { rules: [11], inclusive: !1 },
+ string: { rules: [20, 21], inclusive: !1 },
+ INITIAL: {
+ rules: [0, 5, 6, 7, 8, 9, 10, 12, 14, 16, 19, 22, 23, 24, 25],
+ inclusive: !0,
+ },
+ },
+ };
+ function k() {
+ this.yy = {};
+ }
+ return (v.lexer = b), (k.prototype = v), (v.Parser = k), new k();
+ })());
+ r.parser = r;
+ const c = r,
+ l = n.C.pie,
+ a = {};
+ let o = a,
+ h = false;
+ const u = structuredClone(l),
+ y = {
+ parser: c,
+ db: {
+ getConfig: () => structuredClone(u),
+ parseDirective: (t, e, i) => {
+ (0, n.D)(void 0, t, e, i);
+ },
+ clear: () => {
+ (o = structuredClone(a)), (h = false), (0, n.v)();
+ },
+ setDiagramTitle: n.r,
+ getDiagramTitle: n.t,
+ setAccTitle: n.s,
+ getAccTitle: n.g,
+ setAccDescription: n.b,
+ getAccDescription: n.a,
+ addSection: (t, e) => {
+ (t = (0, n.d)(t, (0, n.c)())), void 0 === o[t] && ((o[t] = e), n.l.debug(`added new section: ${t}, with value: ${e}`));
+ },
+ getSections: () => o,
+ cleanupValue: (t) => (":" === t.substring(0, 1) && (t = t.substring(1).trim()), Number(t.trim())),
+ setShowData: (t) => {
+ h = t;
+ },
+ getShowData: () => h,
+ },
+ renderer: {
+ draw: (t, e, i, r) => {
+ var c, l;
+ n.l.debug("rendering pie chart\n" + t);
+ const a = r.db,
+ o = (0, n.c)(),
+ h = (0, n.E)(a.getConfig(), o.pie),
+ u = (null == (l = null == (c = document.getElementById(e)) ? void 0 : c.parentElement) ? void 0 : l.offsetWidth) ?? h.useWidth,
+ y = (0, n.B)(e);
+ y.attr("viewBox", `0 0 ${u} 450`), (0, n.i)(y, 450, u, h.useMaxWidth);
+ const p = y.append("g");
+ p.attr("transform", "translate(" + u / 2 + ",225)");
+ const { themeVariables: d } = o;
+ let [g] = (0, n.F)(d.pieOuterStrokeWidth);
+ g ?? (g = 2);
+ const _ = h.textPosition,
+ f = Math.min(u, 450) / 2 - 40,
+ m = (0, s.Nb1)().innerRadius(0).outerRadius(f),
+ v = (0, s.Nb1)()
+ .innerRadius(f * _)
+ .outerRadius(f * _);
+ p.append("circle")
+ .attr("cx", 0)
+ .attr("cy", 0)
+ .attr("r", f + g / 2)
+ .attr("class", "pieOuterCircle");
+ const b = a.getSections(),
+ k = ((t) => {
+ const e = Object.entries(t).map((t) => ({ label: t[0], value: t[1] }));
+ return (0, s.ve8)().value((t) => t.value)(e);
+ })(b),
+ x = [d.pie1, d.pie2, d.pie3, d.pie4, d.pie5, d.pie6, d.pie7, d.pie8, d.pie9, d.pie10, d.pie11, d.pie12],
+ S = (0, s.PKp)(x);
+ p.selectAll("mySlices")
+ .data(k)
+ .enter()
+ .append("path")
+ .attr("d", m)
+ .attr("fill", (t) => S(t.data.label))
+ .attr("class", "pieCircle");
+ let w = 0;
+ Object.keys(b).forEach((t) => {
+ w += b[t];
+ }),
+ p
+ .selectAll("mySlices")
+ .data(k)
+ .enter()
+ .append("text")
+ .text((t) => ((t.data.value / w) * 100).toFixed(0) + "%")
+ .attr("transform", (t) => "translate(" + v.centroid(t) + ")")
+ .style("text-anchor", "middle")
+ .attr("class", "slice"),
+ p.append("text").text(a.getDiagramTitle()).attr("x", 0).attr("y", -200).attr("class", "pieTitleText");
+ const $ = p
+ .selectAll(".legend")
+ .data(S.domain())
+ .enter()
+ .append("g")
+ .attr("class", "legend")
+ .attr("transform", (t, e) => "translate(216," + (22 * e - (22 * S.domain().length) / 2) + ")");
+ $.append("rect").attr("width", 18).attr("height", 18).style("fill", S).style("stroke", S),
+ $.data(k)
+ .append("text")
+ .attr("x", 22)
+ .attr("y", 14)
+ .text((t) => {
+ const { label: e, value: i } = t.data;
+ return a.getShowData() ? `${e} [${i}]` : e;
+ });
+ },
+ },
+ styles: (t) =>
+ `\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${t.pieOuterStrokeColor};\n stroke-width: ${t.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`,
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js
index 629004ff6..ce91a9c73 100644
--- a/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js
@@ -1 +1,1098 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[579],{8579:function(t,n,e){e.d(n,{diagram:function(){return R}});var i=e(9339),s=e(7274);function r(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function o(t){return t.target.depth}function c(t,n){return t.sourceLinks.length?t.depth:n-1}function l(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let i=-1;for(let s of t)(s=+n(s,++i,t))&&(e+=s)}return e}function h(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e=n)&&(e=n);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e=s)&&(e=s)}return e}function a(t){return function(){return t}}function u(t,n){return y(t.source,n.source)||t.index-n.index}function f(t,n){return y(t.target,n.target)||t.index-n.index}function y(t,n){return t.y0-n.y0}function d(t){return t.value}function p(t){return t.index}function g(t){return t.nodes}function _(t){return t.links}function k(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function x({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const e of n.sourceLinks)e.y0=t+e.width/2,t+=e.width;for(const t of n.targetLinks)t.y1=e+t.width/2,e+=t.width}}var m=Math.PI,v=2*m,b=1e-6,w=v-b;function E(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function L(){return new E}E.prototype=L.prototype={constructor:E,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,s,r){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+s)+","+(this._y1=+r)},arcTo:function(t,n,e,i,s){t=+t,n=+n,e=+e,i=+i,s=+s;var r=this._x1,o=this._y1,c=e-t,l=i-n,h=r-t,a=o-n,u=h*h+a*a;if(s<0)throw new Error("negative radius: "+s);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>b)if(Math.abs(a*c-l*h)>b&&s){var f=e-r,y=i-o,d=c*c+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=s*Math.tan((m-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,v=k/g;Math.abs(x-1)>b&&(this._+="L"+(t+x*h)+","+(n+x*a)),this._+="A"+s+","+s+",0,0,"+ +(a*f>h*y)+","+(this._x1=t+v*c)+","+(this._y1=n+v*l)}else this._+="L"+(this._x1=t)+","+(this._y1=n)},arc:function(t,n,e,i,s,r){t=+t,n=+n,r=!!r;var o=(e=+e)*Math.cos(i),c=e*Math.sin(i),l=t+o,h=n+c,a=1^r,u=r?i-s:s-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+l+","+h:(Math.abs(this._x1-l)>b||Math.abs(this._y1-h)>b)&&(this._+="L"+l+","+h),e&&(u<0&&(u=u%v+v),u>w?this._+="A"+e+","+e+",0,1,"+a+","+(t-o)+","+(n-c)+"A"+e+","+e+",0,1,"+a+","+(this._x1=l)+","+(this._y1=h):u>b&&(this._+="A"+e+","+e+",0,"+ +(u>=m)+","+a+","+(this._x1=t+e*Math.cos(s))+","+(this._y1=n+e*Math.sin(s))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};var A=L,S=Array.prototype.slice;function M(t){return function(){return t}}function I(t){return t[0]}function T(t){return t[1]}function O(t){return t.source}function P(t){return t.target}function C(t,n,e,i,s){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,s,i,s)}function D(t){return[t.source.x1,t.y0]}function N(t){return[t.target.x0,t.y1]}function $(){return function(t){var n=O,e=P,i=I,s=T,r=null;function o(){var o,c=S.call(arguments),l=n.apply(this,c),h=e.apply(this,c);if(r||(r=o=A()),t(r,+i.apply(this,(c[0]=l,c)),+s.apply(this,c),+i.apply(this,(c[0]=h,c)),+s.apply(this,c)),o)return r=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:M(+t),o):i},o.y=function(t){return arguments.length?(s="function"==typeof t?t:M(+t),o):s},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}(C).source(D).target(N)}e(7484),e(7967),e(7856);var j=function(){var t=function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e},n=[1,9],e=[1,10],i=[1,5,10,12],s={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(t,n,e,i,s,r,o){var c=r.length-1;switch(s){case 7:const t=i.findOrCreateNode(r[c-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(r[c-2].trim().replaceAll('""','"')),e=parseFloat(r[c].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=r[c];break;case 10:this.$=r[c-1]}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)},parse:function(t){var n=[0],e=[],i=[null],s=[],r=this.table,o="",c=0,l=0,h=s.slice.call(arguments,1),a=Object.create(this.lexer),u={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(u.yy[f]=this.yy[f]);a.setInput(t,u.yy),u.yy.lexer=a,u.yy.parser=this,void 0===a.yylloc&&(a.yylloc={});var y=a.yylloc;s.push(y);var d=a.options&&a.options.ranges;"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,g,_,k,x,m,v,b,w,E={};;){if(g=n[n.length-1],this.defaultActions[g]?_=this.defaultActions[g]:(null==p&&(w=void 0,"number"!=typeof(w=e.pop()||a.lex()||1)&&(w instanceof Array&&(w=(e=w).pop()),w=this.symbols_[w]||w),p=w),_=r[g]&&r[g][p]),void 0===_||!_.length||!_[0]){var L;for(x in b=[],r[g])this.terminals_[x]&&x>2&&b.push("'"+this.terminals_[x]+"'");L=a.showPosition?"Parse error on line "+(c+1)+":\n"+a.showPosition()+"\nExpecting "+b.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(L,{text:a.match,token:this.terminals_[p]||p,line:a.yylineno,loc:y,expected:b})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(_[0]){case 1:n.push(p),i.push(a.yytext),s.push(a.yylloc),n.push(_[1]),p=null,l=a.yyleng,o=a.yytext,c=a.yylineno,y=a.yylloc;break;case 2:if(m=this.productions_[_[1]][1],E.$=i[i.length-m],E._$={first_line:s[s.length-(m||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(m||1)].first_column,last_column:s[s.length-1].last_column},d&&(E._$.range=[s[s.length-(m||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(E,[o,l,c,u.yy,_[1],i,s].concat(h))))return k;m&&(n=n.slice(0,-1*m*2),i=i.slice(0,-1*m),s=s.slice(0,-1*m)),n.push(this.productions_[_[1]][0]),i.push(E.$),s.push(E._$),v=r[n[n.length-2]][n[n.length-1]],n.push(v);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},setInput:function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},test_match:function(t,n){var e,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;rn[0].length)){if(n=e,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[r])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(t,n,e,i){switch(e){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};function o(){this.yy={}}return s.lexer=r,o.prototype=s,s.Parser=o,new o}();j.parser=j;const z=j;let Y=[],F=[],U={};class W{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}}class K{constructor(t){this.ID=t}}const G={nodesMap:U,getConfig:()=>(0,i.c)().sankey,getNodes:()=>F,getLinks:()=>Y,getGraph:()=>({nodes:F.map((t=>({id:t.ID}))),links:Y.map((t=>({source:t.source.ID,target:t.target.ID,value:t.value})))}),addLink:(t,n,e)=>{Y.push(new W(t,n,e))},findOrCreateNode:t=>(t=i.e.sanitizeText(t,(0,i.c)()),U[t]||(U[t]=new K(t),F.push(U[t])),U[t]),getAccTitle:i.g,setAccTitle:i.s,getAccDescription:i.a,setAccDescription:i.b,getDiagramTitle:i.t,setDiagramTitle:i.r,clear:()=>{Y=[],F=[],U={},(0,i.v)()}},V=class{static next(t){return new V(t+ ++V.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}};let X=V;X.count=0;const q={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?r(t.sourceLinks,o)-1:0},justify:c},Q={draw:function(t,n,e,o){const{securityLevel:m,sankey:v}=(0,i.c)(),b=i.K.sankey;let w;"sandbox"===m&&(w=(0,s.Ys)("#i"+n));const E="sandbox"===m?(0,s.Ys)(w.nodes()[0].contentDocument.body):(0,s.Ys)("body"),L="sandbox"===m?E.select(`[id="${n}"]`):(0,s.Ys)(`[id="${n}"]`),A=(null==v?void 0:v.width)??b.width,S=(null==v?void 0:v.height)??b.width,M=(null==v?void 0:v.useMaxWidth)??b.useMaxWidth,I=(null==v?void 0:v.nodeAlignment)??b.nodeAlignment,T=(null==v?void 0:v.prefix)??b.prefix,O=(null==v?void 0:v.suffix)??b.suffix,P=(null==v?void 0:v.showValues)??b.showValues;(0,i.i)(L,S,A,M);const C=o.db.getGraph(),D=q[I];(function(){let t,n,e,i=0,s=0,o=1,m=1,v=24,b=8,w=p,E=c,L=g,A=_,S=6;function M(){const c={nodes:L.apply(null,arguments),links:A.apply(null,arguments)};return function({nodes:t,links:n}){for(const[n,e]of t.entries())e.index=n,e.sourceLinks=[],e.targetLinks=[];const i=new Map(t.map(((n,e)=>[w(n,e,t),n])));for(const[t,e]of n.entries()){e.index=t;let{source:n,target:s}=e;"object"!=typeof n&&(n=e.source=k(i,n)),"object"!=typeof s&&(s=e.target=k(i,s)),n.sourceLinks.push(e),s.targetLinks.push(e)}if(null!=e)for(const{sourceLinks:n,targetLinks:i}of t)n.sort(e),i.sort(e)}(c),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(l(n.sourceLinks,d),l(n.targetLinks,d)):n.fixedValue}(c),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.depth=s;for(const{target:n}of t.sourceLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(c),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.height=s;for(const{source:n}of t.targetLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(c),function(e){const c=function({nodes:t}){const e=h(t,(t=>t.depth))+1,s=(o-i-v)/(e-1),r=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(E.call(null,n,e))));n.layer=t,n.x0=i+t*s,n.x1=n.x0+v,r[t]?r[t].push(n):r[t]=[n]}if(n)for(const t of r)t.sort(n);return r}(e);t=Math.min(b,(m-s)/(h(c,(t=>t.length))-1)),function(n){const e=r(n,(n=>(m-s-(n.length-1)*t)/l(n,d)));for(const i of n){let n=s;for(const s of i){s.y0=n,s.y1=n+s.value*e,n=s.y1+t;for(const t of s.sourceLinks)t.width=t.value*e}n=(m-n+t)/(i.length+1);for(let t=0;t0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,D(t)}void 0===n&&r.sort(y),O(r,i)}}function T(t,e,i){for(let s=t.length-2;s>=0;--s){const r=t[s];for(const t of r){let n=0,i=0;for(const{target:e,value:s}of t.sourceLinks){let r=s*(e.layer-t.layer);n+=j(t,e)*r,i+=r}if(!(i>0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,D(t)}void 0===n&&r.sort(y),O(r,i)}}function O(n,e){const i=n.length>>1,r=n[i];C(n,r.y0-t,i-1,e),P(n,r.y1+t,i+1,e),C(n,m,n.length-1,e),P(n,s,0,e)}function P(n,e,i,s){for(;i1e-6&&(r.y0+=o,r.y1+=o),e=r.y1+t}}function C(n,e,i,s){for(;i>=0;--i){const r=n[i],o=(r.y1-e)*s;o>1e-6&&(r.y0-=o,r.y1-=o),e=r.y0-t}}function D({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(f);for(const{target:{targetLinks:n}}of t)n.sort(u)}}function N(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(f),e.sort(u)}function $(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:s,width:r}of n.sourceLinks){if(s===e)break;i+=r+t}for(const{source:t,width:s}of e.targetLinks){if(t===n)break;i-=s}return i}function j(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:s,width:r}of e.targetLinks){if(s===n)break;i+=r+t}for(const{target:t,width:s}of n.sourceLinks){if(t===e)break;i-=s}return i}return M.update=function(t){return x(t),t},M.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:a(t),M):w},M.nodeAlign=function(t){return arguments.length?(E="function"==typeof t?t:a(t),M):E},M.nodeSort=function(t){return arguments.length?(n=t,M):n},M.nodeWidth=function(t){return arguments.length?(v=+t,M):v},M.nodePadding=function(n){return arguments.length?(b=t=+n,M):b},M.nodes=function(t){return arguments.length?(L="function"==typeof t?t:a(t),M):L},M.links=function(t){return arguments.length?(A="function"==typeof t?t:a(t),M):A},M.linkSort=function(t){return arguments.length?(e=t,M):e},M.size=function(t){return arguments.length?(i=s=0,o=+t[0],m=+t[1],M):[o-i,m-s]},M.extent=function(t){return arguments.length?(i=+t[0][0],o=+t[1][0],s=+t[0][1],m=+t[1][1],M):[[i,s],[o,m]]},M.iterations=function(t){return arguments.length?(S=+t,M):S},M})().nodeId((t=>t.id)).nodeWidth(10).nodePadding(10+(P?15:0)).nodeAlign(D).extent([[0,0],[A,S]])(C);const N=(0,s.PKp)(s.K2I);L.append("g").attr("class","nodes").selectAll(".node").data(C.nodes).join("g").attr("class","node").attr("id",(t=>(t.uid=X.next("node-")).id)).attr("transform",(function(t){return"translate("+t.x0+","+t.y0+")"})).attr("x",(t=>t.x0)).attr("y",(t=>t.y0)).append("rect").attr("height",(t=>t.y1-t.y0)).attr("width",(t=>t.x1-t.x0)).attr("fill",(t=>N(t.id))),L.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(C.nodes).join("text").attr("x",(t=>t.x0(t.y1+t.y0)/2)).attr("dy",(P?"0":"0.35")+"em").attr("text-anchor",(t=>t.x0 P?`${t}\n${T}${Math.round(100*n)/100}${O}`:t));const j=L.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(C.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),z=(null==v?void 0:v.linkColor)||"gradient";if("gradient"===z){const t=j.append("linearGradient").attr("id",(t=>(t.uid=X.next("linearGradient-")).id)).attr("gradientUnits","userSpaceOnUse").attr("x1",(t=>t.source.x1)).attr("x2",(t=>t.target.x0));t.append("stop").attr("offset","0%").attr("stop-color",(t=>N(t.source.id))),t.append("stop").attr("offset","100%").attr("stop-color",(t=>N(t.target.id)))}let Y;switch(z){case"gradient":Y=t=>t.uid;break;case"source":Y=t=>N(t.source.id);break;case"target":Y=t=>N(t.target.id);break;default:Y=z}j.append("path").attr("d",$()).attr("stroke",Y).attr("stroke-width",(t=>Math.max(1,t.width)))}},B=z.parse.bind(z);z.parse=t=>B((t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim())(t));const R={parser:z,db:G,renderer:Q}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [579],
+ {
+ 8579: function (t, n, e) {
+ e.d(n, {
+ diagram: function () {
+ return R;
+ },
+ });
+ var i = e(9339),
+ s = e(7274);
+ function r(t, n) {
+ let e;
+ if (void 0 === n) for (const n of t) null != n && (e > n || (void 0 === e && n >= n)) && (e = n);
+ else {
+ let i = -1;
+ for (let s of t) null != (s = n(s, ++i, t)) && (e > s || (void 0 === e && s >= s)) && (e = s);
+ }
+ return e;
+ }
+ function o(t) {
+ return t.target.depth;
+ }
+ function c(t, n) {
+ return t.sourceLinks.length ? t.depth : n - 1;
+ }
+ function l(t, n) {
+ let e = 0;
+ if (void 0 === n) for (let n of t) (n = +n) && (e += n);
+ else {
+ let i = -1;
+ for (let s of t) (s = +n(s, ++i, t)) && (e += s);
+ }
+ return e;
+ }
+ function h(t, n) {
+ let e;
+ if (void 0 === n) for (const n of t) null != n && (e < n || (void 0 === e && n >= n)) && (e = n);
+ else {
+ let i = -1;
+ for (let s of t) null != (s = n(s, ++i, t)) && (e < s || (void 0 === e && s >= s)) && (e = s);
+ }
+ return e;
+ }
+ function a(t) {
+ return function () {
+ return t;
+ };
+ }
+ function u(t, n) {
+ return y(t.source, n.source) || t.index - n.index;
+ }
+ function f(t, n) {
+ return y(t.target, n.target) || t.index - n.index;
+ }
+ function y(t, n) {
+ return t.y0 - n.y0;
+ }
+ function d(t) {
+ return t.value;
+ }
+ function p(t) {
+ return t.index;
+ }
+ function g(t) {
+ return t.nodes;
+ }
+ function _(t) {
+ return t.links;
+ }
+ function k(t, n) {
+ const e = t.get(n);
+ if (!e) throw new Error("missing: " + n);
+ return e;
+ }
+ function x({ nodes: t }) {
+ for (const n of t) {
+ let t = n.y0,
+ e = t;
+ for (const e of n.sourceLinks) (e.y0 = t + e.width / 2), (t += e.width);
+ for (const t of n.targetLinks) (t.y1 = e + t.width / 2), (e += t.width);
+ }
+ }
+ var m = Math.PI,
+ v = 2 * m,
+ b = 1e-6,
+ w = v - b;
+ function E() {
+ (this._x0 = this._y0 = this._x1 = this._y1 = null), (this._ = "");
+ }
+ function L() {
+ return new E();
+ }
+ E.prototype = L.prototype = {
+ constructor: E,
+ moveTo: function (t, n) {
+ this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n);
+ },
+ closePath: function () {
+ null !== this._x1 && ((this._x1 = this._x0), (this._y1 = this._y0), (this._ += "Z"));
+ },
+ lineTo: function (t, n) {
+ this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +n);
+ },
+ quadraticCurveTo: function (t, n, e, i) {
+ this._ += "Q" + +t + "," + +n + "," + (this._x1 = +e) + "," + (this._y1 = +i);
+ },
+ bezierCurveTo: function (t, n, e, i, s, r) {
+ this._ += "C" + +t + "," + +n + "," + +e + "," + +i + "," + (this._x1 = +s) + "," + (this._y1 = +r);
+ },
+ arcTo: function (t, n, e, i, s) {
+ (t = +t), (n = +n), (e = +e), (i = +i), (s = +s);
+ var r = this._x1,
+ o = this._y1,
+ c = e - t,
+ l = i - n,
+ h = r - t,
+ a = o - n,
+ u = h * h + a * a;
+ if (s < 0) throw new Error("negative radius: " + s);
+ if (null === this._x1) this._ += "M" + (this._x1 = t) + "," + (this._y1 = n);
+ else if (u > b)
+ if (Math.abs(a * c - l * h) > b && s) {
+ var f = e - r,
+ y = i - o,
+ d = c * c + l * l,
+ p = f * f + y * y,
+ g = Math.sqrt(d),
+ _ = Math.sqrt(u),
+ k = s * Math.tan((m - Math.acos((d + u - p) / (2 * g * _))) / 2),
+ x = k / _,
+ v = k / g;
+ Math.abs(x - 1) > b && (this._ += "L" + (t + x * h) + "," + (n + x * a)),
+ (this._ += "A" + s + "," + s + ",0,0," + +(a * f > h * y) + "," + (this._x1 = t + v * c) + "," + (this._y1 = n + v * l));
+ } else this._ += "L" + (this._x1 = t) + "," + (this._y1 = n);
+ },
+ arc: function (t, n, e, i, s, r) {
+ (t = +t), (n = +n), (r = !!r);
+ var o = (e = +e) * Math.cos(i),
+ c = e * Math.sin(i),
+ l = t + o,
+ h = n + c,
+ a = 1 ^ r,
+ u = r ? i - s : s - i;
+ if (e < 0) throw new Error("negative radius: " + e);
+ null === this._x1
+ ? (this._ += "M" + l + "," + h)
+ : (Math.abs(this._x1 - l) > b || Math.abs(this._y1 - h) > b) && (this._ += "L" + l + "," + h),
+ e &&
+ (u < 0 && (u = (u % v) + v),
+ u > w
+ ? (this._ +=
+ "A" +
+ e +
+ "," +
+ e +
+ ",0,1," +
+ a +
+ "," +
+ (t - o) +
+ "," +
+ (n - c) +
+ "A" +
+ e +
+ "," +
+ e +
+ ",0,1," +
+ a +
+ "," +
+ (this._x1 = l) +
+ "," +
+ (this._y1 = h))
+ : u > b &&
+ (this._ +=
+ "A" +
+ e +
+ "," +
+ e +
+ ",0," +
+ +(u >= m) +
+ "," +
+ a +
+ "," +
+ (this._x1 = t + e * Math.cos(s)) +
+ "," +
+ (this._y1 = n + e * Math.sin(s))));
+ },
+ rect: function (t, n, e, i) {
+ this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n) + "h" + +e + "v" + +i + "h" + -e + "Z";
+ },
+ toString: function () {
+ return this._;
+ },
+ };
+ var A = L,
+ S = Array.prototype.slice;
+ function M(t) {
+ return function () {
+ return t;
+ };
+ }
+ function I(t) {
+ return t[0];
+ }
+ function T(t) {
+ return t[1];
+ }
+ function O(t) {
+ return t.source;
+ }
+ function P(t) {
+ return t.target;
+ }
+ function C(t, n, e, i, s) {
+ t.moveTo(n, e), t.bezierCurveTo((n = (n + i) / 2), e, n, s, i, s);
+ }
+ function D(t) {
+ return [t.source.x1, t.y0];
+ }
+ function N(t) {
+ return [t.target.x0, t.y1];
+ }
+ function $() {
+ return (function (t) {
+ var n = O,
+ e = P,
+ i = I,
+ s = T,
+ r = null;
+ function o() {
+ var o,
+ c = S.call(arguments),
+ l = n.apply(this, c),
+ h = e.apply(this, c);
+ if ((r || (r = o = A()), t(r, +i.apply(this, ((c[0] = l), c)), +s.apply(this, c), +i.apply(this, ((c[0] = h), c)), +s.apply(this, c)), o))
+ return (r = null), o + "" || null;
+ }
+ return (
+ (o.source = function (t) {
+ return arguments.length ? ((n = t), o) : n;
+ }),
+ (o.target = function (t) {
+ return arguments.length ? ((e = t), o) : e;
+ }),
+ (o.x = function (t) {
+ return arguments.length ? ((i = "function" == typeof t ? t : M(+t)), o) : i;
+ }),
+ (o.y = function (t) {
+ return arguments.length ? ((s = "function" == typeof t ? t : M(+t)), o) : s;
+ }),
+ (o.context = function (t) {
+ return arguments.length ? ((r = null == t ? null : t), o) : r;
+ }),
+ o
+ );
+ })(C)
+ .source(D)
+ .target(N);
+ }
+ e(7484), e(7967), e(7856);
+ var j = (function () {
+ var t = function (t, n, e, i) {
+ for (e = e || {}, i = t.length; i--; e[t[i]] = n);
+ return e;
+ },
+ n = [1, 9],
+ e = [1, 10],
+ i = [1, 5, 10, 12],
+ s = {
+ trace: function () {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ SANKEY: 4,
+ NEWLINE: 5,
+ csv: 6,
+ opt_eof: 7,
+ record: 8,
+ csv_tail: 9,
+ EOF: 10,
+ "field[source]": 11,
+ COMMA: 12,
+ "field[target]": 13,
+ "field[value]": 14,
+ field: 15,
+ escaped: 16,
+ non_escaped: 17,
+ DQUOTE: 18,
+ ESCAPED_TEXT: 19,
+ NON_ESCAPED_TEXT: 20,
+ $accept: 0,
+ $end: 1,
+ },
+ terminals_: {
+ 2: "error",
+ 4: "SANKEY",
+ 5: "NEWLINE",
+ 10: "EOF",
+ 11: "field[source]",
+ 12: "COMMA",
+ 13: "field[target]",
+ 14: "field[value]",
+ 18: "DQUOTE",
+ 19: "ESCAPED_TEXT",
+ 20: "NON_ESCAPED_TEXT",
+ },
+ productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]],
+ performAction: function (t, n, e, i, s, r, o) {
+ var c = r.length - 1;
+ switch (s) {
+ case 7:
+ const t = i.findOrCreateNode(r[c - 4].trim().replaceAll('""', '"')),
+ n = i.findOrCreateNode(r[c - 2].trim().replaceAll('""', '"')),
+ e = parseFloat(r[c].trim());
+ i.addLink(t, n, e);
+ break;
+ case 8:
+ case 9:
+ case 11:
+ this.$ = r[c];
+ break;
+ case 10:
+ this.$ = r[c - 1];
+ }
+ },
+ table: [
+ { 3: 1, 4: [1, 2] },
+ { 1: [3] },
+ { 5: [1, 3] },
+ { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: n, 20: e },
+ { 1: [2, 6], 7: 11, 10: [1, 12] },
+ t(e, [2, 4], { 9: 13, 5: [1, 14] }),
+ { 12: [1, 15] },
+ t(i, [2, 8]),
+ t(i, [2, 9]),
+ { 19: [1, 16] },
+ t(i, [2, 11]),
+ { 1: [2, 1] },
+ { 1: [2, 5] },
+ t(e, [2, 2]),
+ { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: n, 20: e },
+ { 15: 18, 16: 7, 17: 8, 18: n, 20: e },
+ { 18: [1, 19] },
+ t(e, [2, 3]),
+ { 12: [1, 20] },
+ t(i, [2, 10]),
+ { 15: 21, 16: 7, 17: 8, 18: n, 20: e },
+ t([1, 5, 10], [2, 7]),
+ ],
+ defaultActions: { 11: [2, 1], 12: [2, 5] },
+ parseError: function (t, n) {
+ if (!n.recoverable) {
+ var e = new Error(t);
+ throw ((e.hash = n), e);
+ }
+ this.trace(t);
+ },
+ parse: function (t) {
+ var n = [0],
+ e = [],
+ i = [null],
+ s = [],
+ r = this.table,
+ o = "",
+ c = 0,
+ l = 0,
+ h = s.slice.call(arguments, 1),
+ a = Object.create(this.lexer),
+ u = { yy: {} };
+ for (var f in this.yy) Object.prototype.hasOwnProperty.call(this.yy, f) && (u.yy[f] = this.yy[f]);
+ a.setInput(t, u.yy), (u.yy.lexer = a), (u.yy.parser = this), void 0 === a.yylloc && (a.yylloc = {});
+ var y = a.yylloc;
+ s.push(y);
+ var d = a.options && a.options.ranges;
+ "function" == typeof u.yy.parseError ? (this.parseError = u.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError);
+ for (var p, g, _, k, x, m, v, b, w, E = {}; ; ) {
+ if (
+ ((g = n[n.length - 1]),
+ this.defaultActions[g]
+ ? (_ = this.defaultActions[g])
+ : (null == p &&
+ ((w = void 0),
+ "number" != typeof (w = e.pop() || a.lex() || 1) && (w instanceof Array && (w = (e = w).pop()), (w = this.symbols_[w] || w)),
+ (p = w)),
+ (_ = r[g] && r[g][p])),
+ void 0 === _ || !_.length || !_[0])
+ ) {
+ var L;
+ for (x in ((b = []), r[g])) this.terminals_[x] && x > 2 && b.push("'" + this.terminals_[x] + "'");
+ (L = a.showPosition
+ ? "Parse error on line " +
+ (c + 1) +
+ ":\n" +
+ a.showPosition() +
+ "\nExpecting " +
+ b.join(", ") +
+ ", got '" +
+ (this.terminals_[p] || p) +
+ "'"
+ : "Parse error on line " + (c + 1) + ": Unexpected " + (1 == p ? "end of input" : "'" + (this.terminals_[p] || p) + "'")),
+ this.parseError(L, {
+ text: a.match,
+ token: this.terminals_[p] || p,
+ line: a.yylineno,
+ loc: y,
+ expected: b,
+ });
+ }
+ if (_[0] instanceof Array && _.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + p);
+ switch (_[0]) {
+ case 1:
+ n.push(p),
+ i.push(a.yytext),
+ s.push(a.yylloc),
+ n.push(_[1]),
+ (p = null),
+ (l = a.yyleng),
+ (o = a.yytext),
+ (c = a.yylineno),
+ (y = a.yylloc);
+ break;
+ case 2:
+ if (
+ ((m = this.productions_[_[1]][1]),
+ (E.$ = i[i.length - m]),
+ (E._$ = {
+ first_line: s[s.length - (m || 1)].first_line,
+ last_line: s[s.length - 1].last_line,
+ first_column: s[s.length - (m || 1)].first_column,
+ last_column: s[s.length - 1].last_column,
+ }),
+ d && (E._$.range = [s[s.length - (m || 1)].range[0], s[s.length - 1].range[1]]),
+ void 0 !== (k = this.performAction.apply(E, [o, l, c, u.yy, _[1], i, s].concat(h))))
+ )
+ return k;
+ m && ((n = n.slice(0, -1 * m * 2)), (i = i.slice(0, -1 * m)), (s = s.slice(0, -1 * m))),
+ n.push(this.productions_[_[1]][0]),
+ i.push(E.$),
+ s.push(E._$),
+ (v = r[n[n.length - 2]][n[n.length - 1]]),
+ n.push(v);
+ break;
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ },
+ },
+ r = {
+ EOF: 1,
+ parseError: function (t, n) {
+ if (!this.yy.parser) throw new Error(t);
+ this.yy.parser.parseError(t, n);
+ },
+ setInput: function (t, n) {
+ return (
+ (this.yy = n || this.yy || {}),
+ (this._input = t),
+ (this._more = this._backtrack = this.done = !1),
+ (this.yylineno = this.yyleng = 0),
+ (this.yytext = this.matched = this.match = ""),
+ (this.conditionStack = ["INITIAL"]),
+ (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
+ this.options.ranges && (this.yylloc.range = [0, 0]),
+ (this.offset = 0),
+ this
+ );
+ },
+ input: function () {
+ var t = this._input[0];
+ return (
+ (this.yytext += t),
+ this.yyleng++,
+ this.offset++,
+ (this.match += t),
+ (this.matched += t),
+ t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++,
+ (this._input = this._input.slice(1)),
+ t
+ );
+ },
+ unput: function (t) {
+ var n = t.length,
+ e = t.split(/(?:\r\n?|\n)/g);
+ (this._input = t + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - n)), (this.offset -= n);
+ var i = this.match.split(/(?:\r\n?|\n)/g);
+ (this.match = this.match.substr(0, this.match.length - 1)),
+ (this.matched = this.matched.substr(0, this.matched.length - 1)),
+ e.length - 1 && (this.yylineno -= e.length - 1);
+ var s = this.yylloc.range;
+ return (
+ (this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: e
+ ? (e.length === i.length ? this.yylloc.first_column : 0) + i[i.length - e.length].length - e[0].length
+ : this.yylloc.first_column - n,
+ }),
+ this.options.ranges && (this.yylloc.range = [s[0], s[0] + this.yyleng - n]),
+ (this.yyleng = this.yytext.length),
+ this
+ );
+ },
+ more: function () {
+ return (this._more = !0), this;
+ },
+ reject: function () {
+ return this.options.backtrack_lexer
+ ? ((this._backtrack = !0), this)
+ : this.parseError(
+ "Lexical error on line " +
+ (this.yylineno + 1) +
+ ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" +
+ this.showPosition(),
+ { text: "", token: null, line: this.yylineno },
+ );
+ },
+ less: function (t) {
+ this.unput(this.match.slice(t));
+ },
+ pastInput: function () {
+ var t = this.matched.substr(0, this.matched.length - this.match.length);
+ return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function () {
+ var t = this.match;
+ return (
+ t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
+ );
+ },
+ showPosition: function () {
+ var t = this.pastInput(),
+ n = new Array(t.length + 1).join("-");
+ return t + this.upcomingInput() + "\n" + n + "^";
+ },
+ test_match: function (t, n) {
+ var e, i, s;
+ if (
+ (this.options.backtrack_lexer &&
+ ((s = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column,
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done,
+ }),
+ this.options.ranges && (s.yylloc.range = this.yylloc.range.slice(0))),
+ (i = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += i.length),
+ (this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: i ? i[i.length - 1].length - i[i.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length,
+ }),
+ (this.yytext += t[0]),
+ (this.match += t[0]),
+ (this.matches = t),
+ (this.yyleng = this.yytext.length),
+ this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
+ (this._more = !1),
+ (this._backtrack = !1),
+ (this._input = this._input.slice(t[0].length)),
+ (this.matched += t[0]),
+ (e = this.performAction.call(this, this.yy, this, n, this.conditionStack[this.conditionStack.length - 1])),
+ this.done && this._input && (this.done = !1),
+ e)
+ )
+ return e;
+ if (this._backtrack) {
+ for (var r in s) this[r] = s[r];
+ return !1;
+ }
+ return !1;
+ },
+ next: function () {
+ if (this.done) return this.EOF;
+ var t, n, e, i;
+ this._input || (this.done = !0), this._more || ((this.yytext = ""), (this.match = ""));
+ for (var s = this._currentRules(), r = 0; r < s.length; r++)
+ if ((e = this._input.match(this.rules[s[r]])) && (!n || e[0].length > n[0].length)) {
+ if (((n = e), (i = r), this.options.backtrack_lexer)) {
+ if (!1 !== (t = this.test_match(e, s[r]))) return t;
+ if (this._backtrack) {
+ n = !1;
+ continue;
+ }
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return n
+ ? !1 !== (t = this.test_match(n, s[i])) && t
+ : "" === this._input
+ ? this.EOF
+ : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno,
+ });
+ },
+ lex: function () {
+ return this.next() || this.lex();
+ },
+ begin: function (t) {
+ this.conditionStack.push(t);
+ },
+ popState: function () {
+ return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ _currentRules: function () {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
+ ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
+ : this.conditions.INITIAL.rules;
+ },
+ topState: function (t) {
+ return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL";
+ },
+ pushState: function (t) {
+ this.begin(t);
+ },
+ stateStackSize: function () {
+ return this.conditionStack.length;
+ },
+ options: { easy_keword_rules: !0 },
+ performAction: function (t, n, e, i) {
+ switch (e) {
+ case 0:
+ return this.pushState("csv"), 4;
+ case 1:
+ return 10;
+ case 2:
+ return 5;
+ case 3:
+ return 12;
+ case 4:
+ return this.pushState("escaped_text"), 18;
+ case 5:
+ return 20;
+ case 6:
+ return this.popState("escaped_text"), 18;
+ case 7:
+ return 19;
+ }
+ },
+ rules: [
+ /^(?:sankey-beta\b)/,
+ /^(?:$)/,
+ /^(?:((\u000D\u000A)|(\u000A)))/,
+ /^(?:(\u002C))/,
+ /^(?:(\u0022))/,
+ /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,
+ /^(?:(\u0022)(?!(\u0022)))/,
+ /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/,
+ ],
+ conditions: {
+ csv: { rules: [1, 2, 3, 4, 5, 6, 7], inclusive: !1 },
+ escaped_text: { rules: [6, 7], inclusive: !1 },
+ INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7], inclusive: !0 },
+ },
+ };
+ function o() {
+ this.yy = {};
+ }
+ return (s.lexer = r), (o.prototype = s), (s.Parser = o), new o();
+ })();
+ j.parser = j;
+ const z = j;
+ let Y = [],
+ F = [],
+ U = {};
+ class W {
+ constructor(t, n, e = 0) {
+ (this.source = t), (this.target = n), (this.value = e);
+ }
+ }
+ class K {
+ constructor(t) {
+ this.ID = t;
+ }
+ }
+ const G = {
+ nodesMap: U,
+ getConfig: () => (0, i.c)().sankey,
+ getNodes: () => F,
+ getLinks: () => Y,
+ getGraph: () => ({
+ nodes: F.map((t) => ({ id: t.ID })),
+ links: Y.map((t) => ({ source: t.source.ID, target: t.target.ID, value: t.value })),
+ }),
+ addLink: (t, n, e) => {
+ Y.push(new W(t, n, e));
+ },
+ findOrCreateNode: (t) => ((t = i.e.sanitizeText(t, (0, i.c)())), U[t] || ((U[t] = new K(t)), F.push(U[t])), U[t]),
+ getAccTitle: i.g,
+ setAccTitle: i.s,
+ getAccDescription: i.a,
+ setAccDescription: i.b,
+ getDiagramTitle: i.t,
+ setDiagramTitle: i.r,
+ clear: () => {
+ (Y = []), (F = []), (U = {}), (0, i.v)();
+ },
+ },
+ V = class {
+ static next(t) {
+ return new V(t + ++V.count);
+ }
+ constructor(t) {
+ (this.id = t), (this.href = `#${t}`);
+ }
+ toString() {
+ return "url(" + this.href + ")";
+ }
+ };
+ let X = V;
+ X.count = 0;
+ const q = {
+ left: function (t) {
+ return t.depth;
+ },
+ right: function (t, n) {
+ return n - 1 - t.height;
+ },
+ center: function (t) {
+ return t.targetLinks.length ? t.depth : t.sourceLinks.length ? r(t.sourceLinks, o) - 1 : 0;
+ },
+ justify: c,
+ },
+ Q = {
+ draw: function (t, n, e, o) {
+ const { securityLevel: m, sankey: v } = (0, i.c)(),
+ b = i.K.sankey;
+ let w;
+ "sandbox" === m && (w = (0, s.Ys)("#i" + n));
+ const E = "sandbox" === m ? (0, s.Ys)(w.nodes()[0].contentDocument.body) : (0, s.Ys)("body"),
+ L = "sandbox" === m ? E.select(`[id="${n}"]`) : (0, s.Ys)(`[id="${n}"]`),
+ A = (null == v ? void 0 : v.width) ?? b.width,
+ S = (null == v ? void 0 : v.height) ?? b.width,
+ M = (null == v ? void 0 : v.useMaxWidth) ?? b.useMaxWidth,
+ I = (null == v ? void 0 : v.nodeAlignment) ?? b.nodeAlignment,
+ T = (null == v ? void 0 : v.prefix) ?? b.prefix,
+ O = (null == v ? void 0 : v.suffix) ?? b.suffix,
+ P = (null == v ? void 0 : v.showValues) ?? b.showValues;
+ (0, i.i)(L, S, A, M);
+ const C = o.db.getGraph(),
+ D = q[I];
+ (function () {
+ let t,
+ n,
+ e,
+ i = 0,
+ s = 0,
+ o = 1,
+ m = 1,
+ v = 24,
+ b = 8,
+ w = p,
+ E = c,
+ L = g,
+ A = _,
+ S = 6;
+ function M() {
+ const c = { nodes: L.apply(null, arguments), links: A.apply(null, arguments) };
+ return (
+ (function ({ nodes: t, links: n }) {
+ for (const [n, e] of t.entries()) (e.index = n), (e.sourceLinks = []), (e.targetLinks = []);
+ const i = new Map(t.map((n, e) => [w(n, e, t), n]));
+ for (const [t, e] of n.entries()) {
+ e.index = t;
+ let { source: n, target: s } = e;
+ "object" != typeof n && (n = e.source = k(i, n)),
+ "object" != typeof s && (s = e.target = k(i, s)),
+ n.sourceLinks.push(e),
+ s.targetLinks.push(e);
+ }
+ if (null != e) for (const { sourceLinks: n, targetLinks: i } of t) n.sort(e), i.sort(e);
+ })(c),
+ (function ({ nodes: t }) {
+ for (const n of t) n.value = void 0 === n.fixedValue ? Math.max(l(n.sourceLinks, d), l(n.targetLinks, d)) : n.fixedValue;
+ })(c),
+ (function ({ nodes: t }) {
+ const n = t.length;
+ let e = new Set(t),
+ i = new Set(),
+ s = 0;
+ for (; e.size; ) {
+ for (const t of e) {
+ t.depth = s;
+ for (const { target: n } of t.sourceLinks) i.add(n);
+ }
+ if (++s > n) throw new Error("circular link");
+ (e = i), (i = new Set());
+ }
+ })(c),
+ (function ({ nodes: t }) {
+ const n = t.length;
+ let e = new Set(t),
+ i = new Set(),
+ s = 0;
+ for (; e.size; ) {
+ for (const t of e) {
+ t.height = s;
+ for (const { source: n } of t.targetLinks) i.add(n);
+ }
+ if (++s > n) throw new Error("circular link");
+ (e = i), (i = new Set());
+ }
+ })(c),
+ (function (e) {
+ const c = (function ({ nodes: t }) {
+ const e = h(t, (t) => t.depth) + 1,
+ s = (o - i - v) / (e - 1),
+ r = new Array(e);
+ for (const n of t) {
+ const t = Math.max(0, Math.min(e - 1, Math.floor(E.call(null, n, e))));
+ (n.layer = t), (n.x0 = i + t * s), (n.x1 = n.x0 + v), r[t] ? r[t].push(n) : (r[t] = [n]);
+ }
+ if (n) for (const t of r) t.sort(n);
+ return r;
+ })(e);
+ (t = Math.min(b, (m - s) / (h(c, (t) => t.length) - 1))),
+ (function (n) {
+ const e = r(n, (n) => (m - s - (n.length - 1) * t) / l(n, d));
+ for (const i of n) {
+ let n = s;
+ for (const s of i) {
+ (s.y0 = n), (s.y1 = n + s.value * e), (n = s.y1 + t);
+ for (const t of s.sourceLinks) t.width = t.value * e;
+ }
+ n = (m - n + t) / (i.length + 1);
+ for (let t = 0; t < i.length; ++t) {
+ const e = i[t];
+ (e.y0 += n * (t + 1)), (e.y1 += n * (t + 1));
+ }
+ N(i);
+ }
+ })(c);
+ for (let t = 0; t < S; ++t) {
+ const n = Math.pow(0.99, t),
+ e = Math.max(1 - n, (t + 1) / S);
+ T(c, n, e), I(c, n, e);
+ }
+ })(c),
+ x(c),
+ c
+ );
+ }
+ function I(t, e, i) {
+ for (let s = 1, r = t.length; s < r; ++s) {
+ const r = t[s];
+ for (const t of r) {
+ let n = 0,
+ i = 0;
+ for (const { source: e, value: s } of t.targetLinks) {
+ let r = s * (t.layer - e.layer);
+ (n += $(e, t) * r), (i += r);
+ }
+ if (!(i > 0)) continue;
+ let s = (n / i - t.y0) * e;
+ (t.y0 += s), (t.y1 += s), D(t);
+ }
+ void 0 === n && r.sort(y), O(r, i);
+ }
+ }
+ function T(t, e, i) {
+ for (let s = t.length - 2; s >= 0; --s) {
+ const r = t[s];
+ for (const t of r) {
+ let n = 0,
+ i = 0;
+ for (const { target: e, value: s } of t.sourceLinks) {
+ let r = s * (e.layer - t.layer);
+ (n += j(t, e) * r), (i += r);
+ }
+ if (!(i > 0)) continue;
+ let s = (n / i - t.y0) * e;
+ (t.y0 += s), (t.y1 += s), D(t);
+ }
+ void 0 === n && r.sort(y), O(r, i);
+ }
+ }
+ function O(n, e) {
+ const i = n.length >> 1,
+ r = n[i];
+ C(n, r.y0 - t, i - 1, e), P(n, r.y1 + t, i + 1, e), C(n, m, n.length - 1, e), P(n, s, 0, e);
+ }
+ function P(n, e, i, s) {
+ for (; i < n.length; ++i) {
+ const r = n[i],
+ o = (e - r.y0) * s;
+ o > 1e-6 && ((r.y0 += o), (r.y1 += o)), (e = r.y1 + t);
+ }
+ }
+ function C(n, e, i, s) {
+ for (; i >= 0; --i) {
+ const r = n[i],
+ o = (r.y1 - e) * s;
+ o > 1e-6 && ((r.y0 -= o), (r.y1 -= o)), (e = r.y0 - t);
+ }
+ }
+ function D({ sourceLinks: t, targetLinks: n }) {
+ if (void 0 === e) {
+ for (const {
+ source: { sourceLinks: t },
+ } of n)
+ t.sort(f);
+ for (const {
+ target: { targetLinks: n },
+ } of t)
+ n.sort(u);
+ }
+ }
+ function N(t) {
+ if (void 0 === e) for (const { sourceLinks: n, targetLinks: e } of t) n.sort(f), e.sort(u);
+ }
+ function $(n, e) {
+ let i = n.y0 - ((n.sourceLinks.length - 1) * t) / 2;
+ for (const { target: s, width: r } of n.sourceLinks) {
+ if (s === e) break;
+ i += r + t;
+ }
+ for (const { source: t, width: s } of e.targetLinks) {
+ if (t === n) break;
+ i -= s;
+ }
+ return i;
+ }
+ function j(n, e) {
+ let i = e.y0 - ((e.targetLinks.length - 1) * t) / 2;
+ for (const { source: s, width: r } of e.targetLinks) {
+ if (s === n) break;
+ i += r + t;
+ }
+ for (const { target: t, width: s } of n.sourceLinks) {
+ if (t === e) break;
+ i -= s;
+ }
+ return i;
+ }
+ return (
+ (M.update = function (t) {
+ return x(t), t;
+ }),
+ (M.nodeId = function (t) {
+ return arguments.length ? ((w = "function" == typeof t ? t : a(t)), M) : w;
+ }),
+ (M.nodeAlign = function (t) {
+ return arguments.length ? ((E = "function" == typeof t ? t : a(t)), M) : E;
+ }),
+ (M.nodeSort = function (t) {
+ return arguments.length ? ((n = t), M) : n;
+ }),
+ (M.nodeWidth = function (t) {
+ return arguments.length ? ((v = +t), M) : v;
+ }),
+ (M.nodePadding = function (n) {
+ return arguments.length ? ((b = t = +n), M) : b;
+ }),
+ (M.nodes = function (t) {
+ return arguments.length ? ((L = "function" == typeof t ? t : a(t)), M) : L;
+ }),
+ (M.links = function (t) {
+ return arguments.length ? ((A = "function" == typeof t ? t : a(t)), M) : A;
+ }),
+ (M.linkSort = function (t) {
+ return arguments.length ? ((e = t), M) : e;
+ }),
+ (M.size = function (t) {
+ return arguments.length ? ((i = s = 0), (o = +t[0]), (m = +t[1]), M) : [o - i, m - s];
+ }),
+ (M.extent = function (t) {
+ return arguments.length
+ ? ((i = +t[0][0]), (o = +t[1][0]), (s = +t[0][1]), (m = +t[1][1]), M)
+ : [
+ [i, s],
+ [o, m],
+ ];
+ }),
+ (M.iterations = function (t) {
+ return arguments.length ? ((S = +t), M) : S;
+ }),
+ M
+ );
+ })()
+ .nodeId((t) => t.id)
+ .nodeWidth(10)
+ .nodePadding(10 + (P ? 15 : 0))
+ .nodeAlign(D)
+ .extent([
+ [0, 0],
+ [A, S],
+ ])(C);
+ const N = (0, s.PKp)(s.K2I);
+ L.append("g")
+ .attr("class", "nodes")
+ .selectAll(".node")
+ .data(C.nodes)
+ .join("g")
+ .attr("class", "node")
+ .attr("id", (t) => (t.uid = X.next("node-")).id)
+ .attr("transform", function (t) {
+ return "translate(" + t.x0 + "," + t.y0 + ")";
+ })
+ .attr("x", (t) => t.x0)
+ .attr("y", (t) => t.y0)
+ .append("rect")
+ .attr("height", (t) => t.y1 - t.y0)
+ .attr("width", (t) => t.x1 - t.x0)
+ .attr("fill", (t) => N(t.id)),
+ L.append("g")
+ .attr("class", "node-labels")
+ .attr("font-family", "sans-serif")
+ .attr("font-size", 14)
+ .selectAll("text")
+ .data(C.nodes)
+ .join("text")
+ .attr("x", (t) => (t.x0 < A / 2 ? t.x1 + 6 : t.x0 - 6))
+ .attr("y", (t) => (t.y1 + t.y0) / 2)
+ .attr("dy", (P ? "0" : "0.35") + "em")
+ .attr("text-anchor", (t) => (t.x0 < A / 2 ? "start" : "end"))
+ .text(({ id: t, value: n }) => (P ? `${t}\n${T}${Math.round(100 * n) / 100}${O}` : t));
+ const j = L.append("g")
+ .attr("class", "links")
+ .attr("fill", "none")
+ .attr("stroke-opacity", 0.5)
+ .selectAll(".link")
+ .data(C.links)
+ .join("g")
+ .attr("class", "link")
+ .style("mix-blend-mode", "multiply"),
+ z = (null == v ? void 0 : v.linkColor) || "gradient";
+ if ("gradient" === z) {
+ const t = j
+ .append("linearGradient")
+ .attr("id", (t) => (t.uid = X.next("linearGradient-")).id)
+ .attr("gradientUnits", "userSpaceOnUse")
+ .attr("x1", (t) => t.source.x1)
+ .attr("x2", (t) => t.target.x0);
+ t
+ .append("stop")
+ .attr("offset", "0%")
+ .attr("stop-color", (t) => N(t.source.id)),
+ t
+ .append("stop")
+ .attr("offset", "100%")
+ .attr("stop-color", (t) => N(t.target.id));
+ }
+ let Y;
+ switch (z) {
+ case "gradient":
+ Y = (t) => t.uid;
+ break;
+ case "source":
+ Y = (t) => N(t.source.id);
+ break;
+ case "target":
+ Y = (t) => N(t.target.id);
+ break;
+ default:
+ Y = z;
+ }
+ j.append("path")
+ .attr("d", $())
+ .attr("stroke", Y)
+ .attr("stroke-width", (t) => Math.max(1, t.width));
+ },
+ },
+ B = z.parse.bind(z);
+ z.parse = (t) =>
+ B(
+ ((t) =>
+ t
+ .replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g, "")
+ .replaceAll(/([\n\r])+/g, "\n")
+ .trim())(t),
+ );
+ const R = { parser: z, db: G, renderer: Q };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js
index 1af186fd5..4feb3951b 100644
--- a/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js
@@ -1 +1,230 @@
-"use strict";(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[626],{1626:function(e,t,s){s.d(t,{diagram:function(){return N}});var o=s(1535),i=s(5625),a=s(7274),r=s(9339),n=s(6476);s(7484),s(7967),s(7856),s(3771),s(9368);const d="rect",c="rectWithTitle",l="statediagram",p=`${l}-state`,g="transition",b=`${g} note-edge`,h=`${l}-note`,u=`${l}-cluster`,y=`${l}-cluster-alt`,f="parent",w="note",x="----",$=`${x}${w}`,m=`${x}${f}`,T="fill:none",k="fill: #333",S="text",D="normal";let A={},v=0;function B(e="",t=0,s="",o=x){return`state-${e}${null!==s&&s.length>0?`${o}${s}`:""}-${t}`}const C=(e,t,s,i,a,n)=>{const l=s.id,g=null==(x=i[l])?"":x.classes?x.classes.join(" "):"";var x;if("root"!==l){let t=d;!0===s.start&&(t="start"),!1===s.start&&(t="end"),s.type!==o.D&&(t=s.type),A[l]||(A[l]={id:l,shape:t,description:r.e.sanitizeText(l,(0,r.c)()),classes:`${g} ${p}`});const i=A[l];s.description&&(Array.isArray(i.description)?(i.shape=c,i.description.push(s.description)):i.description.length>0?(i.shape=c,i.description===l?i.description=[s.description]:i.description=[i.description,s.description]):(i.shape=d,i.description=s.description),i.description=r.e.sanitizeTextOrArray(i.description,(0,r.c)())),1===i.description.length&&i.shape===c&&(i.shape=d),!i.type&&s.doc&&(r.l.info("Setting cluster for ",l,R(s)),i.type="group",i.dir=R(s),i.shape=s.type===o.a?"divider":"roundedWithTitle",i.classes=i.classes+" "+u+" "+(n?y:""));const a={labelStyle:"",shape:i.shape,labelText:i.description,classes:i.classes,style:"",id:l,dir:i.dir,domId:B(l,v),type:i.type,padding:15,centerLabel:!0};if(s.note){const t={labelStyle:"",shape:"note",labelText:s.note.text,classes:h,style:"",id:l+$+"-"+v,domId:B(l,v,w),type:i.type,padding:15},o={labelStyle:"",shape:"noteGroup",labelText:s.note.text,classes:i.classes,style:"",id:l+m,domId:B(l,v,f),type:"group",padding:0};v++;const r=l+m;e.setNode(r,o),e.setNode(t.id,t),e.setNode(l,a),e.setParent(l,r),e.setParent(t.id,r);let n=l,d=t.id;"left of"===s.note.position&&(n=t.id,d=l),e.setEdge(n,d,{arrowhead:"none",arrowType:"",style:T,labelStyle:"",classes:b,arrowheadStyle:k,labelpos:"c",labelType:S,thickness:D})}else e.setNode(l,a)}t&&"root"!==t.id&&(r.l.trace("Setting node ",l," to be child of its parent ",t.id),e.setParent(l,t.id)),s.doc&&(r.l.trace("Adding nodes children "),E(e,s,s.doc,i,a,!n))},E=(e,t,s,i,a,n)=>{r.l.trace("items",s),s.forEach((s=>{switch(s.stmt){case o.b:case o.D:C(e,t,s,i,a,n);break;case o.S:{C(e,t,s.state1,i,a,n),C(e,t,s.state2,i,a,n);const o={id:"edge"+v,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:T,labelStyle:"",label:r.e.sanitizeText(s.description,(0,r.c)()),arrowheadStyle:k,labelpos:"c",labelType:S,thickness:D,classes:g};e.setEdge(s.state1.id,s.state2.id,o,v),v++}}}))},R=(e,t=o.c)=>{let s=t;if(e.doc)for(let t=0;t{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,o.d.clear()}}}}]);
\ No newline at end of file
+"use strict";
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [626],
+ {
+ 1626: function (e, t, s) {
+ s.d(t, {
+ diagram: function () {
+ return N;
+ },
+ });
+ var o = s(1535),
+ i = s(5625),
+ a = s(7274),
+ r = s(9339),
+ n = s(6476);
+ s(7484), s(7967), s(7856), s(3771), s(9368);
+ const d = "rect",
+ c = "rectWithTitle",
+ l = "statediagram",
+ p = `${l}-state`,
+ g = "transition",
+ b = `${g} note-edge`,
+ h = `${l}-note`,
+ u = `${l}-cluster`,
+ y = `${l}-cluster-alt`,
+ f = "parent",
+ w = "note",
+ x = "----",
+ $ = `${x}${w}`,
+ m = `${x}${f}`,
+ T = "fill:none",
+ k = "fill: #333",
+ S = "text",
+ D = "normal";
+ let A = {},
+ v = 0;
+ function B(e = "", t = 0, s = "", o = x) {
+ return `state-${e}${null !== s && s.length > 0 ? `${o}${s}` : ""}-${t}`;
+ }
+ const C = (e, t, s, i, a, n) => {
+ const l = s.id,
+ g = null == (x = i[l]) ? "" : x.classes ? x.classes.join(" ") : "";
+ var x;
+ if ("root" !== l) {
+ let t = d;
+ !0 === s.start && (t = "start"),
+ !1 === s.start && (t = "end"),
+ s.type !== o.D && (t = s.type),
+ A[l] ||
+ (A[l] = {
+ id: l,
+ shape: t,
+ description: r.e.sanitizeText(l, (0, r.c)()),
+ classes: `${g} ${p}`,
+ });
+ const i = A[l];
+ s.description &&
+ (Array.isArray(i.description)
+ ? ((i.shape = c), i.description.push(s.description))
+ : i.description.length > 0
+ ? ((i.shape = c), i.description === l ? (i.description = [s.description]) : (i.description = [i.description, s.description]))
+ : ((i.shape = d), (i.description = s.description)),
+ (i.description = r.e.sanitizeTextOrArray(i.description, (0, r.c)()))),
+ 1 === i.description.length && i.shape === c && (i.shape = d),
+ !i.type &&
+ s.doc &&
+ (r.l.info("Setting cluster for ", l, R(s)),
+ (i.type = "group"),
+ (i.dir = R(s)),
+ (i.shape = s.type === o.a ? "divider" : "roundedWithTitle"),
+ (i.classes = i.classes + " " + u + " " + (n ? y : "")));
+ const a = {
+ labelStyle: "",
+ shape: i.shape,
+ labelText: i.description,
+ classes: i.classes,
+ style: "",
+ id: l,
+ dir: i.dir,
+ domId: B(l, v),
+ type: i.type,
+ padding: 15,
+ centerLabel: !0,
+ };
+ if (s.note) {
+ const t = {
+ labelStyle: "",
+ shape: "note",
+ labelText: s.note.text,
+ classes: h,
+ style: "",
+ id: l + $ + "-" + v,
+ domId: B(l, v, w),
+ type: i.type,
+ padding: 15,
+ },
+ o = {
+ labelStyle: "",
+ shape: "noteGroup",
+ labelText: s.note.text,
+ classes: i.classes,
+ style: "",
+ id: l + m,
+ domId: B(l, v, f),
+ type: "group",
+ padding: 0,
+ };
+ v++;
+ const r = l + m;
+ e.setNode(r, o), e.setNode(t.id, t), e.setNode(l, a), e.setParent(l, r), e.setParent(t.id, r);
+ let n = l,
+ d = t.id;
+ "left of" === s.note.position && ((n = t.id), (d = l)),
+ e.setEdge(n, d, {
+ arrowhead: "none",
+ arrowType: "",
+ style: T,
+ labelStyle: "",
+ classes: b,
+ arrowheadStyle: k,
+ labelpos: "c",
+ labelType: S,
+ thickness: D,
+ });
+ } else e.setNode(l, a);
+ }
+ t && "root" !== t.id && (r.l.trace("Setting node ", l, " to be child of its parent ", t.id), e.setParent(l, t.id)),
+ s.doc && (r.l.trace("Adding nodes children "), E(e, s, s.doc, i, a, !n));
+ },
+ E = (e, t, s, i, a, n) => {
+ r.l.trace("items", s),
+ s.forEach((s) => {
+ switch (s.stmt) {
+ case o.b:
+ case o.D:
+ C(e, t, s, i, a, n);
+ break;
+ case o.S: {
+ C(e, t, s.state1, i, a, n), C(e, t, s.state2, i, a, n);
+ const o = {
+ id: "edge" + v,
+ arrowhead: "normal",
+ arrowTypeEnd: "arrow_barb",
+ style: T,
+ labelStyle: "",
+ label: r.e.sanitizeText(s.description, (0, r.c)()),
+ arrowheadStyle: k,
+ labelpos: "c",
+ labelType: S,
+ thickness: D,
+ classes: g,
+ };
+ e.setEdge(s.state1.id, s.state2.id, o, v), v++;
+ }
+ }
+ });
+ },
+ R = (e, t = o.c) => {
+ let s = t;
+ if (e.doc)
+ for (let t = 0; t < e.doc.length; t++) {
+ const o = e.doc[t];
+ "dir" === o.stmt && (s = o.value);
+ }
+ return s;
+ },
+ V = {
+ setConf: function (e) {
+ const t = Object.keys(e);
+ for (const s of t) e[s];
+ },
+ getClasses: function (e, t) {
+ return t.db.extract(t.db.getRootDocV2()), t.db.getClasses();
+ },
+ draw: async function (e, t, s, o) {
+ r.l.info("Drawing state diagram (v2)", t), (A = {}), o.db.getDirection();
+ const { securityLevel: c, state: p } = (0, r.c)(),
+ g = p.nodeSpacing || 50,
+ b = p.rankSpacing || 50;
+ r.l.info(o.db.getRootDocV2()), o.db.extract(o.db.getRootDocV2()), r.l.info(o.db.getRootDocV2());
+ const h = o.db.getStates(),
+ u = new i.k({ multigraph: !0, compound: !0 })
+ .setGraph({
+ rankdir: R(o.db.getRootDocV2()),
+ nodesep: g,
+ ranksep: b,
+ marginx: 8,
+ marginy: 8,
+ })
+ .setDefaultEdgeLabel(function () {
+ return {};
+ });
+ let y;
+ C(u, void 0, o.db.getRootDocV2(), h, o.db, !0), "sandbox" === c && (y = (0, a.Ys)("#i" + t));
+ const f = "sandbox" === c ? (0, a.Ys)(y.nodes()[0].contentDocument.body) : (0, a.Ys)("body"),
+ w = f.select(`[id="${t}"]`),
+ x = f.select("#" + t + " g");
+ await (0, n.r)(x, u, ["barb"], l, t), r.u.insertTitle(w, "statediagramTitleText", p.titleTopMargin, o.db.getDiagramTitle());
+ const $ = w.node().getBBox(),
+ m = $.width + 16,
+ T = $.height + 16;
+ w.attr("class", l);
+ const k = w.node().getBBox();
+ (0, r.i)(w, T, m, p.useMaxWidth);
+ const S = `${k.x - 8} ${k.y - 8} ${m} ${T}`;
+ r.l.debug(`viewBox ${S}`), w.attr("viewBox", S);
+ const D = document.querySelectorAll('[id="' + t + '"] .edgeLabel .label');
+ for (const e of D) {
+ const t = e.getBBox(),
+ s = document.createElementNS("http://www.w3.org/2000/svg", d);
+ s.setAttribute("rx", 0),
+ s.setAttribute("ry", 0),
+ s.setAttribute("width", t.width),
+ s.setAttribute("height", t.height),
+ e.insertBefore(s, e.firstChild);
+ }
+ },
+ },
+ N = {
+ parser: o.p,
+ db: o.d,
+ renderer: V,
+ styles: o.s,
+ init: (e) => {
+ e.state || (e.state = {}), (e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute), o.d.clear();
+ },
+ };
+ },
+ },
+]);
diff --git a/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js b/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js
index 99160eb49..76f9f0361 100644
--- a/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js
+++ b/docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js
@@ -1,2 +1,13646 @@
/*! For license information please see 637-86fbbecd.chunk.min.js.LICENSE.txt */
-(self.webpackChunkgeekdoc=self.webpackChunkgeekdoc||[]).push([[637],{7967:function(t,e){"use strict";e.Nm=e.Rq=void 0;var i=/^([^\w]*)(javascript|data|vbscript)/im,r=/(\w+)(^\w|;)?/g,n=/&(newline|tab);/gi,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^.+(:|:)/gim,s=[".","/"];e.Rq="about:blank",e.Nm=function(t){if(!t)return e.Rq;var l,h=(l=t,l.replace(o,"").replace(r,(function(t,e){return String.fromCharCode(e)}))).replace(n,"").replace(o,"").trim();if(!h)return e.Rq;if(function(t){return s.indexOf(t[0])>-1}(h))return h;var c=h.match(a);if(!c)return h;var u=c[0];return i.test(u)?e.Rq:h}},7484:function(t){t.exports=function(){"use strict";var t=6e4,e=36e5,i="millisecond",r="second",n="minute",o="hour",a="day",s="week",l="month",h="quarter",c="year",u="date",f="Invalid Date",d=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],i=t%100;return"["+t+(e[(i-20)%10]||e[i]||e[0])+"]"}},m=function(t,e,i){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(i)+t},y={s:m,z:function(t){var e=-t.utcOffset(),i=Math.abs(e),r=Math.floor(i/60),n=i%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(n,2,"0")},m:function t(e,i){if(e.date()1)return t(a[0])}else{var s=e.name;b[s]=e,n=s}return!r&&n&&(_=n),n||!r&&_},v=function(t,e){if(C(t))return t.clone();var i="object"==typeof e?e:{};return i.date=t,i.args=arguments,new T(i)},k=y;k.l=x,k.i=C,k.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t)}var m=g.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,i=t.utc;if(null===e)return new Date(NaN);if(k.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(d);if(r){var n=r[2]-1||0,o=(r[7]||"0").substring(0,3);return i?new Date(Date.UTC(r[1],n,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],n,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return k},m.isValid=function(){return!(this.$d.toString()===f)},m.isSame=function(t,e){var i=v(t);return this.startOf(e)<=i&&i<=this.endOf(e)},m.isAfter=function(t,e){return v(t)1?i-1:0),n=1;n/gm),$=a(/\${[\w\W]*}/gm),z=a(/^data-[\-\w.\u00B7-\uFFFF]/),j=a(/^aria-[\-\w]+$/),P=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),R=a(/^(?:\w+script|data):/i),W=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),U=a(/^html$/i);var H=Object.freeze({__proto__:null,MUSTACHE_EXPR:N,ERB_EXPR:D,TMPLIT_EXPR:$,DATA_ATTR:z,ARIA_ATTR:j,IS_ALLOWED_URI:P,IS_SCRIPT_OR_DATA:R,ATTR_WHITESPACE:W,DOCTYPE_NAME:U});const Y=()=>"undefined"==typeof window?null:window;return function e(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Y();const r=t=>e(t);if(r.version="3.0.5",r.removed=[],!i||!i.document||9!==i.document.nodeType)return r.isSupported=!1,r;const n=i.document,a=n.currentScript;let{document:s}=i;const{DocumentFragment:l,HTMLTemplateElement:h,Node:x,Element:v,NodeFilter:N,NamedNodeMap:D=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:$,DOMParser:z,trustedTypes:j}=i,R=v.prototype,W=w(R,"cloneNode"),V=w(R,"nextSibling"),G=w(R,"childNodes"),X=w(R,"parentNode");if("function"==typeof h){const t=s.createElement("template");t.content&&t.content.ownerDocument&&(s=t.content.ownerDocument)}let J,Q="";const{implementation:K,createNodeIterator:tt,createDocumentFragment:et,getElementsByTagName:it}=s,{importNode:rt}=n;let nt={};r.isSupported="function"==typeof t&&"function"==typeof X&&K&&void 0!==K.createHTMLDocument;const{MUSTACHE_EXPR:ot,ERB_EXPR:at,TMPLIT_EXPR:st,DATA_ATTR:lt,ARIA_ATTR:ht,IS_SCRIPT_OR_DATA:ct,ATTR_WHITESPACE:ut}=H;let{IS_ALLOWED_URI:ft}=H,dt=null;const pt=k({},[...S,...B,...F,...M,...E]);let gt=null;const mt=k({},[...Z,...O,...q,...I]);let yt=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}})),_t=null,bt=null,Ct=!0,xt=!0,vt=!1,kt=!0,Tt=!1,wt=!1,St=!1,Bt=!1,Ft=!1,Lt=!1,Mt=!1,At=!0,Et=!1,Zt=!0,Ot=!1,qt={},It=null;const Nt=k({},["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"]);let Dt=null;const $t=k({},["audio","video","img","source","image","track"]);let zt=null;const jt=k({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Pt="http://www.w3.org/1998/Math/MathML",Rt="http://www.w3.org/2000/svg",Wt="http://www.w3.org/1999/xhtml";let Ut=Wt,Ht=!1,Yt=null;const Vt=k({},[Pt,Rt,Wt],p);let Gt;const Xt=["application/xhtml+xml","text/html"];let Jt,Qt=null;const Kt=s.createElement("form"),te=function(t){return t instanceof RegExp||t instanceof Function},ee=function(t){if(!Qt||Qt!==t){if(t&&"object"==typeof t||(t={}),t=T(t),Gt=Gt=-1===Xt.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,Jt="application/xhtml+xml"===Gt?p:d,dt="ALLOWED_TAGS"in t?k({},t.ALLOWED_TAGS,Jt):pt,gt="ALLOWED_ATTR"in t?k({},t.ALLOWED_ATTR,Jt):mt,Yt="ALLOWED_NAMESPACES"in t?k({},t.ALLOWED_NAMESPACES,p):Vt,zt="ADD_URI_SAFE_ATTR"in t?k(T(jt),t.ADD_URI_SAFE_ATTR,Jt):jt,Dt="ADD_DATA_URI_TAGS"in t?k(T($t),t.ADD_DATA_URI_TAGS,Jt):$t,It="FORBID_CONTENTS"in t?k({},t.FORBID_CONTENTS,Jt):Nt,_t="FORBID_TAGS"in t?k({},t.FORBID_TAGS,Jt):{},bt="FORBID_ATTR"in t?k({},t.FORBID_ATTR,Jt):{},qt="USE_PROFILES"in t&&t.USE_PROFILES,Ct=!1!==t.ALLOW_ARIA_ATTR,xt=!1!==t.ALLOW_DATA_ATTR,vt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,kt=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Tt=t.SAFE_FOR_TEMPLATES||!1,wt=t.WHOLE_DOCUMENT||!1,Ft=t.RETURN_DOM||!1,Lt=t.RETURN_DOM_FRAGMENT||!1,Mt=t.RETURN_TRUSTED_TYPE||!1,Bt=t.FORCE_BODY||!1,At=!1!==t.SANITIZE_DOM,Et=t.SANITIZE_NAMED_PROPS||!1,Zt=!1!==t.KEEP_CONTENT,Ot=t.IN_PLACE||!1,ft=t.ALLOWED_URI_REGEXP||P,Ut=t.NAMESPACE||Wt,yt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&te(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(yt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&te(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(yt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(yt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Tt&&(xt=!1),Lt&&(Ft=!0),qt&&(dt=k({},[...E]),gt=[],!0===qt.html&&(k(dt,S),k(gt,Z)),!0===qt.svg&&(k(dt,B),k(gt,O),k(gt,I)),!0===qt.svgFilters&&(k(dt,F),k(gt,O),k(gt,I)),!0===qt.mathMl&&(k(dt,M),k(gt,q),k(gt,I))),t.ADD_TAGS&&(dt===pt&&(dt=T(dt)),k(dt,t.ADD_TAGS,Jt)),t.ADD_ATTR&&(gt===mt&&(gt=T(gt)),k(gt,t.ADD_ATTR,Jt)),t.ADD_URI_SAFE_ATTR&&k(zt,t.ADD_URI_SAFE_ATTR,Jt),t.FORBID_CONTENTS&&(It===Nt&&(It=T(It)),k(It,t.FORBID_CONTENTS,Jt)),Zt&&(dt["#text"]=!0),wt&&k(dt,["html","head","body"]),dt.table&&(k(dt,["tbody"]),delete _t.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');J=t.TRUSTED_TYPES_POLICY,Q=J.createHTML("")}else void 0===J&&(J=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let i=null;const r="data-tt-policy-suffix";e&&e.hasAttribute(r)&&(i=e.getAttribute(r));const n="dompurify"+(i?"#"+i:"");try{return t.createPolicy(n,{createHTML(t){return t},createScriptURL(t){return t}})}catch(t){return console.warn("TrustedTypes policy "+n+" could not be created."),null}}(j,a)),null!==J&&"string"==typeof Q&&(Q=J.createHTML(""));o&&o(t),Qt=t}},ie=k({},["mi","mo","mn","ms","mtext"]),re=k({},["foreignobject","desc","title","annotation-xml"]),ne=k({},["title","style","font","a","script"]),oe=k({},B);k(oe,F),k(oe,L);const ae=k({},M);k(ae,A);const se=function(t){f(r.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){t.remove()}},le=function(t,e){try{f(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){f(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!gt[t])if(Ft||Lt)try{se(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},he=function(t){let e,i;if(Bt)t=" "+t;else{const e=g(t,/^[\r\n\t ]+/);i=e&&e[0]}"application/xhtml+xml"===Gt&&Ut===Wt&&(t=''+t+"");const r=J?J.createHTML(t):t;if(Ut===Wt)try{e=(new z).parseFromString(r,Gt)}catch(t){}if(!e||!e.documentElement){e=K.createDocument(Ut,"template",null);try{e.documentElement.innerHTML=Ht?Q:r}catch(t){}}const n=e.body||e.documentElement;return t&&i&&n.insertBefore(s.createTextNode(i),n.childNodes[0]||null),Ut===Wt?it.call(e,wt?"html":"body")[0]:wt?e.documentElement:n},ce=function(t){return tt.call(t.ownerDocument||t,t,N.SHOW_ELEMENT|N.SHOW_COMMENT|N.SHOW_TEXT,null,!1)},ue=function(t){return"object"==typeof x?t instanceof x:t&&"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},fe=function(t,e,i){nt[t]&&c(nt[t],(t=>{t.call(r,e,i,Qt)}))},de=function(t){let e;if(fe("beforeSanitizeElements",t,null),(i=t)instanceof $&&("string"!=typeof i.nodeName||"string"!=typeof i.textContent||"function"!=typeof i.removeChild||!(i.attributes instanceof D)||"function"!=typeof i.removeAttribute||"function"!=typeof i.setAttribute||"string"!=typeof i.namespaceURI||"function"!=typeof i.insertBefore||"function"!=typeof i.hasChildNodes))return se(t),!0;var i;const n=Jt(t.nodeName);if(fe("uponSanitizeElement",t,{tagName:n,allowedTags:dt}),t.hasChildNodes()&&!ue(t.firstElementChild)&&(!ue(t.content)||!ue(t.content.firstElementChild))&&b(/<[/\w]/g,t.innerHTML)&&b(/<[/\w]/g,t.textContent))return se(t),!0;if(!dt[n]||_t[n]){if(!_t[n]&&ge(n)){if(yt.tagNameCheck instanceof RegExp&&b(yt.tagNameCheck,n))return!1;if(yt.tagNameCheck instanceof Function&&yt.tagNameCheck(n))return!1}if(Zt&&!It[n]){const e=X(t)||t.parentNode,i=G(t)||t.childNodes;if(i&&e)for(let r=i.length-1;r>=0;--r)e.insertBefore(W(i[r],!0),V(t))}return se(t),!0}return t instanceof v&&!function(t){let e=X(t);e&&e.tagName||(e={namespaceURI:Ut,tagName:"template"});const i=d(t.tagName),r=d(e.tagName);return!!Yt[t.namespaceURI]&&(t.namespaceURI===Rt?e.namespaceURI===Wt?"svg"===i:e.namespaceURI===Pt?"svg"===i&&("annotation-xml"===r||ie[r]):Boolean(oe[i]):t.namespaceURI===Pt?e.namespaceURI===Wt?"math"===i:e.namespaceURI===Rt?"math"===i&&re[r]:Boolean(ae[i]):t.namespaceURI===Wt?!(e.namespaceURI===Rt&&!re[r])&&!(e.namespaceURI===Pt&&!ie[r])&&!ae[i]&&(ne[i]||!oe[i]):!("application/xhtml+xml"!==Gt||!Yt[t.namespaceURI]))}(t)?(se(t),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!b(/<\/no(script|embed|frames)/i,t.innerHTML)?(Tt&&3===t.nodeType&&(e=t.textContent,e=m(e,ot," "),e=m(e,at," "),e=m(e,st," "),t.textContent!==e&&(f(r.removed,{element:t.cloneNode()}),t.textContent=e)),fe("afterSanitizeElements",t,null),!1):(se(t),!0)},pe=function(t,e,i){if(At&&("id"===e||"name"===e)&&(i in s||i in Kt))return!1;if(xt&&!bt[e]&&b(lt,e));else if(Ct&&b(ht,e));else if(!gt[e]||bt[e]){if(!(ge(t)&&(yt.tagNameCheck instanceof RegExp&&b(yt.tagNameCheck,t)||yt.tagNameCheck instanceof Function&&yt.tagNameCheck(t))&&(yt.attributeNameCheck instanceof RegExp&&b(yt.attributeNameCheck,e)||yt.attributeNameCheck instanceof Function&&yt.attributeNameCheck(e))||"is"===e&&yt.allowCustomizedBuiltInElements&&(yt.tagNameCheck instanceof RegExp&&b(yt.tagNameCheck,i)||yt.tagNameCheck instanceof Function&&yt.tagNameCheck(i))))return!1}else if(zt[e]);else if(b(ft,m(i,ut,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==y(i,"data:")||!Dt[t])if(vt&&!b(ct,m(i,ut,"")));else if(i)return!1;return!0},ge=function(t){return t.indexOf("-")>0},me=function(t){let e,i,n,o;fe("beforeSanitizeAttributes",t,null);const{attributes:a}=t;if(!a)return;const s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:gt};for(o=a.length;o--;){e=a[o];const{name:l,namespaceURI:h}=e;if(i="value"===l?e.value:_(e.value),n=Jt(l),s.attrName=n,s.attrValue=i,s.keepAttr=!0,s.forceKeepAttr=void 0,fe("uponSanitizeAttribute",t,s),i=s.attrValue,s.forceKeepAttr)continue;if(le(l,t),!s.keepAttr)continue;if(!kt&&b(/\/>/i,i)){le(l,t);continue}Tt&&(i=m(i,ot," "),i=m(i,at," "),i=m(i,st," "));const c=Jt(t.nodeName);if(pe(c,n,i)){if(!Et||"id"!==n&&"name"!==n||(le(l,t),i="user-content-"+i),J&&"object"==typeof j&&"function"==typeof j.getAttributeType)if(h);else switch(j.getAttributeType(c,n)){case"TrustedHTML":i=J.createHTML(i);break;case"TrustedScriptURL":i=J.createScriptURL(i)}try{h?t.setAttributeNS(h,l,i):t.setAttribute(l,i),u(r.removed)}catch(t){}}}fe("afterSanitizeAttributes",t,null)},ye=function t(e){let i;const r=ce(e);for(fe("beforeSanitizeShadowDOM",e,null);i=r.nextNode();)fe("uponSanitizeShadowNode",i,null),de(i)||(i.content instanceof l&&t(i.content),me(i));fe("afterSanitizeShadowDOM",e,null)};return r.sanitize=function(t){let e,i,o,a,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Ht=!t,Ht&&(t="\x3c!--\x3e"),"string"!=typeof t&&!ue(t)){if("function"!=typeof t.toString)throw C("toString is not a function");if("string"!=typeof(t=t.toString()))throw C("dirty is not a string, aborting")}if(!r.isSupported)return t;if(St||ee(s),r.removed=[],"string"==typeof t&&(Ot=!1),Ot){if(t.nodeName){const e=Jt(t.nodeName);if(!dt[e]||_t[e])throw C("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof x)e=he("\x3c!----\x3e"),i=e.ownerDocument.importNode(t,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?e=i:e.appendChild(i);else{if(!Ft&&!Tt&&!wt&&-1===t.indexOf("<"))return J&&Mt?J.createHTML(t):t;if(e=he(t),!e)return Ft?null:Mt?Q:""}e&&Bt&&se(e.firstChild);const h=ce(Ot?t:e);for(;o=h.nextNode();)de(o)||(o.content instanceof l&&ye(o.content),me(o));if(Ot)return t;if(Ft){if(Lt)for(a=et.call(e.ownerDocument);e.firstChild;)a.appendChild(e.firstChild);else a=e;return(gt.shadowroot||gt.shadowrootmode)&&(a=rt.call(n,a,!0)),a}let c=wt?e.outerHTML:e.innerHTML;return wt&&dt["!doctype"]&&e.ownerDocument&&e.ownerDocument.doctype&&e.ownerDocument.doctype.name&&b(U,e.ownerDocument.doctype.name)&&(c="\n"+c),Tt&&(c=m(c,ot," "),c=m(c,at," "),c=m(c,st," ")),J&&Mt?J.createHTML(c):c},r.setConfig=function(t){ee(t),St=!0},r.clearConfig=function(){Qt=null,St=!1},r.isValidAttribute=function(t,e,i){Qt||ee({});const r=Jt(t),n=Jt(e);return pe(r,n,i)},r.addHook=function(t,e){"function"==typeof e&&(nt[t]=nt[t]||[],f(nt[t],e))},r.removeHook=function(t){if(nt[t])return u(nt[t])},r.removeHooks=function(t){nt[t]&&(nt[t]=[])},r.removeAllHooks=function(){nt={}},r}()}()},8464:function(t,e,i){"use strict";function r(t){for(var e=[],i=1;i=e)&&(i=e);else{let r=-1;for(let n of t)null!=(n=e(n,++r,t))&&(i=n)&&(i=n)}return i}function n(t,e){let i;if(void 0===e)for(const e of t)null!=e&&(i>e||void 0===i&&e>=e)&&(i=e);else{let r=-1;for(let n of t)null!=(n=e(n,++r,t))&&(i>n||void 0===i&&n>=n)&&(i=n)}return i}function o(t){return t}i.d(e,{Nb1:function(){return Ya},LLu:function(){return _},F5q:function(){return y},$0Z:function(){return as},Dts:function(){return ls},WQY:function(){return cs},qpX:function(){return fs},u93:function(){return ds},tFB:function(){return gs},YY7:function(){return _s},OvA:function(){return Cs},dCK:function(){return vs},zgE:function(){return ws},fGX:function(){return Bs},$m7:function(){return Ls},c_6:function(){return Xa},fxm:function(){return As},FdL:function(){return $s},ak_:function(){return zs},SxZ:function(){return Rs},eA_:function(){return Us},jsv:function(){return Ys},iJ:function(){return Hs},JHv:function(){return or},jvg:function(){return Ka},Fp7:function(){return r},VV$:function(){return n},ve8:function(){return is},BYU:function(){return Gr},PKp:function(){return tn},Xf:function(){return ya},K2I:function(){return _a},Ys:function(){return ba},td_:function(){return Ca},YPS:function(){return $i},rr1:function(){return yn},i$Z:function(){return Gn},y2j:function(){return Sn},WQD:function(){return gn},Z_i:function(){return dn},Ox9:function(){return vn},F0B:function(){return In},LqH:function(){return Bn},Zyz:function(){return xn},Igq:function(){return wn},YDX:function(){return kn},EFj:function(){return Tn}});var a=1,s=2,l=3,h=4,c=1e-6;function u(t){return"translate("+t+",0)"}function f(t){return"translate(0,"+t+")"}function d(t){return e=>+t(e)}function p(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),i=>+t(i)+e}function g(){return!this.__axis}function m(t,e){var i=[],r=null,n=null,m=6,y=6,_=3,b="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,C=t===a||t===h?-1:1,x=t===h||t===s?"x":"y",v=t===a||t===l?u:f;function k(u){var f=null==r?e.ticks?e.ticks.apply(e,i):e.domain():r,k=null==n?e.tickFormat?e.tickFormat.apply(e,i):o:n,T=Math.max(m,0)+_,w=e.range(),S=+w[0]+b,B=+w[w.length-1]+b,F=(e.bandwidth?p:d)(e.copy(),b),L=u.selection?u.selection():u,M=L.selectAll(".domain").data([null]),A=L.selectAll(".tick").data(f,e).order(),E=A.exit(),Z=A.enter().append("g").attr("class","tick"),O=A.select("line"),q=A.select("text");M=M.merge(M.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(Z),O=O.merge(Z.append("line").attr("stroke","currentColor").attr(x+"2",C*m)),q=q.merge(Z.append("text").attr("fill","currentColor").attr(x,C*T).attr("dy",t===a?"0em":t===l?"0.71em":"0.32em")),u!==L&&(M=M.transition(u),A=A.transition(u),O=O.transition(u),q=q.transition(u),E=E.transition(u).attr("opacity",c).attr("transform",(function(t){return isFinite(t=F(t))?v(t+b):this.getAttribute("transform")})),Z.attr("opacity",c).attr("transform",(function(t){var e=this.parentNode.__axis;return v((e&&isFinite(e=e(t))?e:F(t))+b)}))),E.remove(),M.attr("d",t===h||t===s?y?"M"+C*y+","+S+"H"+b+"V"+B+"H"+C*y:"M"+b+","+S+"V"+B:y?"M"+S+","+C*y+"V"+b+"H"+B+"V"+C*y:"M"+S+","+b+"H"+B),A.attr("opacity",1).attr("transform",(function(t){return v(F(t)+b)})),O.attr(x+"2",C*m),q.attr(x,C*T).text(k),L.filter(g).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===s?"start":t===h?"end":"middle"),L.each((function(){this.__axis=F}))}return k.scale=function(t){return arguments.length?(e=t,k):e},k.ticks=function(){return i=Array.from(arguments),k},k.tickArguments=function(t){return arguments.length?(i=null==t?[]:Array.from(t),k):i.slice()},k.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),k):r&&r.slice()},k.tickFormat=function(t){return arguments.length?(n=t,k):n},k.tickSize=function(t){return arguments.length?(m=y=+t,k):m},k.tickSizeInner=function(t){return arguments.length?(m=+t,k):m},k.tickSizeOuter=function(t){return arguments.length?(y=+t,k):y},k.tickPadding=function(t){return arguments.length?(_=+t,k):_},k.offset=function(t){return arguments.length?(b=+t,k):b},k}function y(t){return m(a,t)}function _(t){return m(l,t)}function b(){}function C(t){return null==t?b:function(){return this.querySelector(t)}}function x(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function v(){return[]}function k(t){return null==t?v:function(){return this.querySelectorAll(t)}}function T(t){return function(){return this.matches(t)}}function w(t){return function(e){return e.matches(t)}}var S=Array.prototype.find;function B(){return this.firstElementChild}var F=Array.prototype.filter;function L(){return Array.from(this.children)}function M(t){return new Array(t.length)}function A(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function E(t,e,i,r,n,o){for(var a,s=0,l=e.length,h=o.length;se?1:t>=e?0:NaN}A.prototype={constructor:A,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var N="http://www.w3.org/1999/xhtml",D={svg:"http://www.w3.org/2000/svg",xhtml:N,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function $(t){var e=t+="",i=e.indexOf(":");return i>=0&&"xmlns"!==(e=t.slice(0,i))&&(t=t.slice(i+1)),D.hasOwnProperty(e)?{space:D[e],local:t}:t}function z(t){return function(){this.removeAttribute(t)}}function j(t){return function(){this.removeAttributeNS(t.space,t.local)}}function P(t,e){return function(){this.setAttribute(t,e)}}function R(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W(t,e){return function(){var i=e.apply(this,arguments);null==i?this.removeAttribute(t):this.setAttribute(t,i)}}function U(t,e){return function(){var i=e.apply(this,arguments);null==i?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,i)}}function H(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Y(t){return function(){this.style.removeProperty(t)}}function V(t,e,i){return function(){this.style.setProperty(t,e,i)}}function G(t,e,i){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,i)}}function X(t,e){return t.style.getPropertyValue(e)||H(t).getComputedStyle(t,null).getPropertyValue(e)}function J(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function K(t,e){return function(){var i=e.apply(this,arguments);null==i?delete this[t]:this[t]=i}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new it(t)}function it(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function rt(t,e){for(var i=et(t),r=-1,n=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Ft=[null];function Lt(t,e){this._groups=t,this._parents=e}function Mt(){return new Lt([[document.documentElement]],Ft)}Lt.prototype=Mt.prototype={constructor:Lt,select:function(t){"function"!=typeof t&&(t=C(t));for(var e=this._groups,i=e.length,r=new Array(i),n=0;n=x&&(x=C+1);!(b=y[x])&&++x=0;)(r=n[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,i){return e&&i?t(e.__data__,i.__data__):!e-!i}t||(t=I);for(var i=this._groups,r=i.length,n=new Array(r),o=0;o1?this.each((null==e?Y:"function"==typeof e?G:V)(t,e,null==i?"":i)):X(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?J:"function"==typeof e?K:Q)(t,e)):this.node()[t]},classed:function(t,e){var i=tt(t+"");if(arguments.length<2){for(var r=et(this.node()),n=-1,o=i.length;++n=0&&(e=t.slice(i+1),t=t.slice(0,i)),{type:t,name:e}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(s=e?Tt:kt,r=0;r{}};function Zt(){for(var t,e=0,i=arguments.length,r={};e=0&&(e=t.slice(i+1),t=t.slice(0,i)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),a=-1,s=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a0)for(var i,r,n=new Array(i),o=0;o=0&&e._call.call(void 0,t),e=e._next;--zt}()}finally{zt=0,function(){for(var t,e,i=Nt,r=1/0;i;)i._call?(r>i._time&&(r=i._time),t=i,i=i._next):(e=i._next,i._next=null,i=t?t._next=e:Nt=e);Dt=t,ee(r)}(),Ut=0}}function te(){var t=Yt.now(),e=t-Wt;e>Rt&&(Ht-=e,Wt=t)}function ee(t){zt||(jt&&(jt=clearTimeout(jt)),t-Ut>24?(t<1/0&&(jt=setTimeout(Kt,t-Yt.now()-Ht)),Pt&&(Pt=clearInterval(Pt))):(Pt||(Wt=Yt.now(),Pt=setInterval(te,Rt)),zt=1,Vt(Kt)))}function ie(t,e,i){var r=new Jt;return e=null==e?0:+e,r.restart((i=>{r.stop(),t(i+e)}),e,i),r}Jt.prototype=Qt.prototype={constructor:Jt,restart:function(t,e,i){if("function"!=typeof t)throw new TypeError("callback is not a function");i=(null==i?Gt():+i)+(null==e?0:+e),this._next||Dt===this||(Dt?Dt._next=this:Nt=this,Dt=this),this._call=t,this._time=i,ee()},stop:function(){this._call&&(this._call=null,this._time=1/0,ee())}};var re=$t("start","end","cancel","interrupt"),ne=[],oe=0,ae=3;function se(t,e,i,r,n,o){var a=t.__transition;if(a){if(i in a)return}else t.__transition={};!function(t,e,i){var r,n=t.__transition;function o(l){var h,c,u,f;if(1!==i.state)return s();for(h in n)if((f=n[h]).name===i.name){if(f.state===ae)return ie(o);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete n[h]):+hoe)throw new Error("too late; already scheduled");return i}function he(t,e){var i=ce(t,e);if(i.state>ae)throw new Error("too late; already running");return i}function ce(t,e){var i=t.__transition;if(!i||!(i=i[e]))throw new Error("transition not found");return i}function ue(t,e){return t=+t,e=+e,function(i){return t*(1-i)+e*i}}var fe,de=180/Math.PI,pe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ge(t,e,i,r,n,o){var a,s,l;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(l=t*i+e*r)&&(i-=t*l,r-=e*l),(s=Math.sqrt(i*i+r*r))&&(i/=s,r/=s,l/=s),t*r180?e+=360:e-t>180&&(t+=360),o.push({i:i.push(n(i)+"rotate(",null,r)-2,x:ue(t,e)})):e&&i.push(n(i)+"rotate("+e+r)}(o.rotate,a.rotate,s,l),function(t,e,i,o){t!==e?o.push({i:i.push(n(i)+"skewX(",null,r)-2,x:ue(t,e)}):e&&i.push(n(i)+"skewX("+e+r)}(o.skewX,a.skewX,s,l),function(t,e,i,r,o,a){if(t!==i||e!==r){var s=o.push(n(o)+"scale(",null,",",null,")");a.push({i:s-4,x:ue(t,i)},{i:s-2,x:ue(e,r)})}else 1===i&&1===r||o.push(n(o)+"scale("+i+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,s,l),o=a=null,function(t){for(var e,i=-1,r=l.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===i?Pe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===i?Pe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ae.exec(t))?new Ue(e[1],e[2],e[3],1):(e=Ee.exec(t))?new Ue(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ze.exec(t))?Pe(e[1],e[2],e[3],e[4]):(e=Oe.exec(t))?Pe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=qe.exec(t))?Je(e[1],e[2]/100,e[3]/100,1):(e=Ie.exec(t))?Je(e[1],e[2]/100,e[3]/100,e[4]):Ne.hasOwnProperty(t)?je(Ne[t]):"transparent"===t?new Ue(NaN,NaN,NaN,0):null}function je(t){return new Ue(t>>16&255,t>>8&255,255&t,1)}function Pe(t,e,i,r){return r<=0&&(t=e=i=NaN),new Ue(t,e,i,r)}function Re(t){return t instanceof Te||(t=ze(t)),t?new Ue((t=t.rgb()).r,t.g,t.b,t.opacity):new Ue}function We(t,e,i,r){return 1===arguments.length?Re(t):new Ue(t,e,i,null==r?1:r)}function Ue(t,e,i,r){this.r=+t,this.g=+e,this.b=+i,this.opacity=+r}function He(){return`#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}`}function Ye(){const t=Ve(this.opacity);return`${1===t?"rgb(":"rgba("}${Ge(this.r)}, ${Ge(this.g)}, ${Ge(this.b)}${1===t?")":`, ${t})`}`}function Ve(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ge(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Xe(t){return((t=Ge(t))<16?"0":"")+t.toString(16)}function Je(t,e,i,r){return r<=0?t=e=i=NaN:i<=0||i>=1?t=e=NaN:e<=0&&(t=NaN),new Ke(t,e,i,r)}function Qe(t){if(t instanceof Ke)return new Ke(t.h,t.s,t.l,t.opacity);if(t instanceof Te||(t=ze(t)),!t)return new Ke;if(t instanceof Ke)return t;var e=(t=t.rgb()).r/255,i=t.g/255,r=t.b/255,n=Math.min(e,i,r),o=Math.max(e,i,r),a=NaN,s=o-n,l=(o+n)/2;return s?(a=e===o?(i-r)/s+6*(i0&&l<1?0:a,new Ke(a,s,l,t.opacity)}function Ke(t,e,i,r){this.h=+t,this.s=+e,this.l=+i,this.opacity=+r}function ti(t){return(t=(t||0)%360)<0?t+360:t}function ei(t){return Math.max(0,Math.min(1,t||0))}function ii(t,e,i){return 255*(t<60?e+(i-e)*t/60:t<180?i:t<240?e+(i-e)*(240-t)/60:e)}function ri(t,e,i,r,n){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*i+(1+3*t+3*o-3*a)*r+a*n)/6}ve(Te,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:De,formatHex:De,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Qe(this).formatHsl()},formatRgb:$e,toString:$e}),ve(Ue,We,ke(Te,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?we:Math.pow(we,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ue(Ge(this.r),Ge(this.g),Ge(this.b),Ve(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:He,formatHex:He,formatHex8:function(){return`#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}${Xe(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ye,toString:Ye})),ve(Ke,(function(t,e,i,r){return 1===arguments.length?Qe(t):new Ke(t,e,i,null==r?1:r)}),ke(Te,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new Ke(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?we:Math.pow(we,t),new Ke(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,r=i+(i<.5?i:1-i)*e,n=2*i-r;return new Ue(ii(t>=240?t-240:t+120,n,r),ii(t,n,r),ii(t<120?t+240:t-120,n,r),this.opacity)},clamp(){return new Ke(ti(this.h),ei(this.s),ei(this.l),Ve(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=Ve(this.opacity);return`${1===t?"hsl(":"hsla("}${ti(this.h)}, ${100*ei(this.s)}%, ${100*ei(this.l)}%${1===t?")":`, ${t})`}`}}));var ni=t=>()=>t;function oi(t,e){return function(i){return t+i*e}}function ai(t,e){var i=e-t;return i?oi(t,i):ni(isNaN(t)?e:t)}var si=function t(e){var i=function(t){return 1==(t=+t)?ai:function(e,i){return i-e?function(t,e,i){return t=Math.pow(t,i),e=Math.pow(e,i)-t,i=1/i,function(r){return Math.pow(t+r*e,i)}}(e,i,t):ni(isNaN(e)?i:e)}}(e);function r(t,e){var r=i((t=We(t)).r,(e=We(e)).r),n=i(t.g,e.g),o=i(t.b,e.b),a=ai(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=n(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function li(t){return function(e){var i,r,n=e.length,o=new Array(n),a=new Array(n),s=new Array(n);for(i=0;i=1?(i=1,e-1):Math.floor(i*e),n=t[r],o=t[r+1],a=r>0?t[r-1]:2*n-o,s=ro&&(n=e.slice(o,n),s[a]?s[a]+=n:s[++a]=n),(i=i[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,l.push({i:a,x:ue(i,r)})),o=ci.lastIndex;return o=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?le:he;return function(){var a=o(this,t),s=a.on;s!==r&&(n=(r=s).copy()).on(e,i),a.on=n}}(i,t,e))},attr:function(t,e){var i=$(t),r="transform"===i?_e:fi;return this.attrTween(t,"function"==typeof e?(i.local?_i:yi)(i,r,xe(this,"attr."+t,e)):null==e?(i.local?pi:di)(i):(i.local?mi:gi)(i,r,e))},attrTween:function(t,e){var i="attr."+t;if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;var r=$(t);return this.tween(i,(r.local?bi:Ci)(r,e))},style:function(t,e,i){var r="transform"==(t+="")?ye:fi;return null==e?this.styleTween(t,function(t,e){var i,r,n;return function(){var o=X(this,t),a=(this.style.removeProperty(t),X(this,t));return o===a?null:o===i&&a===r?n:n=e(i=o,r=a)}}(t,r)).on("end.style."+t,Si(t)):"function"==typeof e?this.styleTween(t,function(t,e,i){var r,n,o;return function(){var a=X(this,t),s=i(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=X(this,t)),a===l?null:a===r&&l===n?o:(n=l,o=e(r=a,s))}}(t,r,xe(this,"style."+t,e))).each(function(t,e){var i,r,n,o,a="style."+e,s="end."+a;return function(){var l=he(this,t),h=l.on,c=null==l.value[a]?o||(o=Si(e)):void 0;h===i&&n===c||(r=(i=h).copy()).on(s,n=c),l.on=r}}(this._id,t)):this.styleTween(t,function(t,e,i){var r,n,o=i+"";return function(){var a=X(this,t);return a===o?null:a===r?n:n=e(r=a,i)}}(t,r,e),i).on("end.style."+t,null)},styleTween:function(t,e,i){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,i){var r,n;function o(){var o=e.apply(this,arguments);return o!==n&&(r=(n=o)&&function(t,e,i){return function(r){this.style.setProperty(t,e.call(this,r),i)}}(t,o,i)),r}return o._value=e,o}(t,e,null==i?"":i))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(xe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,i;function r(){var r=t.apply(this,arguments);return r!==i&&(e=(i=r)&&function(t){return function(e){this.textContent=t.call(this,e)}}(r)),e}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var i in this.__transition)if(+i!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var i=this._id;if(t+="",arguments.length<2){for(var r,n=ce(this.node(),i).tween,o=0,a=n.length;o2&&i.state<5,i.state=6,i.timer.stop(),i.on.call(r?"interrupt":"cancel",t,t.__data__,i.index,i.group),delete o[n]):a=!1;a&&delete t.__transition}}(this,t)}))},At.prototype.transition=function(t){var e,i;t instanceof Fi?(e=t._id,t=t._name):(e=Li(),(i=Ai).time=Gt(),t=null==t?null:t+"");for(var r=this._groups,n=r.length,o=0;ofunction(t,e){return fetch(t,e).then(Ni)}(e,i).then((e=>(new DOMParser).parseFromString(e,t)))}["w","e"].map(Ii),["n","s"].map(Ii),["n","w","e","s","nw","ne","sw","se"].map(Ii),Di("application/xml"),Di("text/html");var $i=Di("image/svg+xml");const zi=Math.PI/180,ji=180/Math.PI,Pi=.96422,Ri=1,Wi=.82521,Ui=4/29,Hi=6/29,Yi=3*Hi*Hi,Vi=Hi*Hi*Hi;function Gi(t){if(t instanceof Xi)return new Xi(t.l,t.a,t.b,t.opacity);if(t instanceof ir)return rr(t);t instanceof Ue||(t=Re(t));var e,i,r=tr(t.r),n=tr(t.g),o=tr(t.b),a=Ji((.2225045*r+.7168786*n+.0606169*o)/Ri);return r===n&&n===o?e=i=a:(e=Ji((.4360747*r+.3850649*n+.1430804*o)/Pi),i=Ji((.0139322*r+.0971045*n+.7141733*o)/Wi)),new Xi(116*a-16,500*(e-a),200*(a-i),t.opacity)}function Xi(t,e,i,r){this.l=+t,this.a=+e,this.b=+i,this.opacity=+r}function Ji(t){return t>Vi?Math.pow(t,1/3):t/Yi+Ui}function Qi(t){return t>Hi?t*t*t:Yi*(t-Ui)}function Ki(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function tr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function er(t,e,i,r){return 1===arguments.length?function(t){if(t instanceof ir)return new ir(t.h,t.c,t.l,t.opacity);if(t instanceof Xi||(t=Gi(t)),0===t.a&&0===t.b)return new ir(NaN,0180||i<-180?i-360*Math.round(i/360):i):ni(isNaN(t)?e:t)}));nr(ai);const ar=Math.sqrt(50),sr=Math.sqrt(10),lr=Math.sqrt(2);function hr(t,e,i){const r=(e-t)/Math.max(0,i),n=Math.floor(Math.log10(r)),o=r/Math.pow(10,n),a=o>=ar?10:o>=sr?5:o>=lr?2:1;let s,l,h;return n<0?(h=Math.pow(10,-n)/a,s=Math.round(t*h),l=Math.round(e*h),s/he&&--l,h=-h):(h=Math.pow(10,n)*a,s=Math.round(t/h),l=Math.round(e/h),s*he&&--l),le?1:t>=e?0:NaN}function dr(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function pr(t){let e,i,r;function n(t,r,n=0,o=t.length){if(n>>1;i(t[e],r)<0?n=e+1:o=e}while(nfr(t(e),i),r=(e,i)=>t(e)-i):(e=t===fr||t===dr?t:gr,i=t,r=t),{left:n,center:function(t,e,i=0,o=t.length){const a=n(t,e,i,o-1);return a>i&&r(t[a-1],e)>-r(t[a],e)?a-1:a},right:function(t,r,n=0,o=t.length){if(n>>1;i(t[e],r)<=0?n=e+1:o=e}while(ne&&(i=t,t=e,e=i),h=function(i){return Math.max(t,Math.min(e,i))}),r=l>2?Mr:Lr,n=o=null,u}function u(e){return null==e||isNaN(e=+e)?i:(n||(n=r(a.map(t),s,l)))(t(h(e)))}return u.invert=function(i){return h(e((o||(o=r(s,a.map(t),ue)))(i)))},u.domain=function(t){return arguments.length?(a=Array.from(t,wr),c()):a.slice()},u.range=function(t){return arguments.length?(s=Array.from(t),c()):s.slice()},u.rangeRound=function(t){return s=Array.from(t),l=Tr,c()},u.clamp=function(t){return arguments.length?(h=!!t||Br,c()):h!==Br},u.interpolate=function(t){return arguments.length?(l=t,c()):l},u.unknown=function(t){return arguments.length?(i=t,u):i},function(i,r){return t=i,e=r,c()}}()(Br,Br)}function Zr(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Or,qr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ir(t){if(!(e=qr.exec(t)))throw new Error("invalid format: "+t);var e;return new Nr({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]})}function Nr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Dr(t,e){if((i=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var i,r=t.slice(0,i);return[r.length>1?r[0]+r.slice(2):r,+t.slice(i+1)]}function $r(t){return(t=Dr(Math.abs(t)))?t[1]:NaN}function zr(t,e){var i=Dr(t,e);if(!i)return t+"";var r=i[0],n=i[1];return n<0?"0."+new Array(-n).join("0")+r:r.length>n+1?r.slice(0,n+1)+"."+r.slice(n+1):r+new Array(n-r.length+2).join("0")}Ir.prototype=Nr.prototype,Nr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var jr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},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)=>zr(100*t,e),r:zr,s:function(t,e){var i=Dr(t,e);if(!i)return t+"";var r=i[0],n=i[1],o=n-(Or=3*Math.max(-8,Math.min(8,Math.floor(n/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Dr(t,Math.max(0,e+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Pr(t){return t}var Rr,Wr,Ur,Hr=Array.prototype.map,Yr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Vr(t){var e=t.domain;return t.ticks=function(t){var i=e();return function(t,e,i){if(!((i=+i)>0))return[];if((t=+t)==(e=+e))return[t];const r=e=n))return[];const s=o-n+1,l=new Array(s);if(r)if(a<0)for(let t=0;t0;){if((n=cr(l,h,i))===r)return o[a]=l,o[s]=h,e(o);if(n>0)l=Math.floor(l/n)*n,h=Math.ceil(h/n)*n;else{if(!(n<0))break;l=Math.ceil(l*n)/n,h=Math.floor(h*n)/n}r=n}return t},t}function Gr(){var t=Er();return t.copy=function(){return Ar(t,Gr())},Zr.apply(t,arguments),Vr(t)}Rr=function(t){var e,i,r=void 0===t.grouping||void 0===t.thousands?Pr:(e=Hr.call(t.grouping,Number),i=t.thousands+"",function(t,r){for(var n=t.length,o=[],a=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),o.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[a=(a+1)%e.length];return o.reverse().join(i)}),n=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Pr:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Hr.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",h=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Ir(t)).fill,i=t.align,u=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,m=t.precision,y=t.trim,_=t.type;"n"===_?(g=!0,_="g"):jr[_]||(void 0===m&&(m=12),y=!0,_="g"),(d||"0"===e&&"="===i)&&(d=!0,e="0",i="=");var b="$"===f?n:"#"===f&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",C="$"===f?o:/[%p]/.test(_)?l:"",x=jr[_],v=/[defgprs%]/.test(_);function k(t){var n,o,l,f=b,k=C;if("c"===_)k=x(t)+k,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:x(Math.abs(t),m),y&&(t=function(t){t:for(var e,i=t.length,r=1,n=-1;r0&&(n=0)}return n>0?t.slice(0,n)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==u&&(T=!1),f=(T?"("===u?u:h:"-"===u||"("===u?"":u)+f,k=("s"===_?Yr[8+Or/3]:"")+k+(T&&"("===u?")":""),v)for(n=-1,o=t.length;++n(l=t.charCodeAt(n))||l>57){k=(46===l?a+t.slice(n+1):t.slice(n))+k,t=t.slice(0,n);break}}g&&!d&&(t=r(t,1/0));var w=f.length+t.length+k.length,S=w>1)+f+t+k+S.slice(w);break;default:t=S+f+t+k}return s(t)}return m=void 0===m?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),k.toString=function(){return t+""},k}return{format:u,formatPrefix:function(t,e){var i=u(((t=Ir(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($r(e)/3))),n=Math.pow(10,-r),o=Yr[8+r/3];return function(t){return i(n*t)+o}}}}({thousands:",",grouping:[3],currency:["$",""]}),Wr=Rr.format,Ur=Rr.formatPrefix;class Xr extends Map{constructor(t,e=Qr){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,i]of t)this.set(e,i)}get(t){return super.get(Jr(this,t))}has(t){return super.has(Jr(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},i){const r=e(i);return t.has(r)?t.get(r):(t.set(r,i),i)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},i){const r=e(i);return t.has(r)&&(i=t.get(r),t.delete(r)),i}(this,t))}}function Jr({_intern:t,_key:e},i){const r=e(i);return t.has(r)?t.get(r):i}function Qr(t){return null!==t&&"object"==typeof t?t.valueOf():t}const Kr=Symbol("implicit");function tn(){var t=new Xr,e=[],i=[],r=Kr;function n(n){let o=t.get(n);if(void 0===o){if(r!==Kr)return r;t.set(n,o=e.push(n)-1)}return i[o%i.length]}return n.domain=function(i){if(!arguments.length)return e.slice();e=[],t=new Xr;for(const r of i)t.has(r)||t.set(r,e.push(r)-1);return n},n.range=function(t){return arguments.length?(i=Array.from(t),n):i.slice()},n.unknown=function(t){return arguments.length?(r=t,n):r},n.copy=function(){return tn(e,i).unknown(r)},Zr.apply(n,arguments),n}const en=1e3,rn=6e4,nn=36e5,on=864e5,an=6048e5,sn=31536e6,ln=new Date,hn=new Date;function cn(t,e,i,r){function n(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return n.floor=e=>(t(e=new Date(+e)),e),n.ceil=i=>(t(i=new Date(i-1)),e(i,1),t(i),i),n.round=t=>{const e=n(t),i=n.ceil(t);return t-e(e(t=new Date(+t),null==i?1:Math.floor(i)),t),n.range=(i,r,o)=>{const a=[];if(i=n.ceil(i),o=null==o?1:Math.floor(o),!(i0))return a;let s;do{a.push(s=new Date(+i)),e(i,o),t(i)}while(scn((e=>{if(e>=e)for(;t(e),!i(e);)e.setTime(e-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!i(t););else for(;--r>=0;)for(;e(t,1),!i(t););})),i&&(n.count=(e,r)=>(ln.setTime(+e),hn.setTime(+r),t(ln),t(hn),Math.floor(i(ln,hn))),n.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?n.filter(r?e=>r(e)%t==0:e=>n.count(0,e)%t==0):n:null)),n}const un=cn((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));un.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?cn((e=>{e.setTime(Math.floor(e/t)*t)}),((e,i)=>{e.setTime(+e+i*t)}),((e,i)=>(i-e)/t)):un:null),un.range;const fn=cn((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*en)}),((t,e)=>(e-t)/en),(t=>t.getUTCSeconds())),dn=(fn.range,cn((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*en)}),((t,e)=>{t.setTime(+t+e*rn)}),((t,e)=>(e-t)/rn),(t=>t.getMinutes()))),pn=(dn.range,cn((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*rn)}),((t,e)=>(e-t)/rn),(t=>t.getUTCMinutes()))),gn=(pn.range,cn((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*en-t.getMinutes()*rn)}),((t,e)=>{t.setTime(+t+e*nn)}),((t,e)=>(e-t)/nn),(t=>t.getHours()))),mn=(gn.range,cn((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*nn)}),((t,e)=>(e-t)/nn),(t=>t.getUTCHours()))),yn=(mn.range,cn((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rn)/on),(t=>t.getDate()-1))),_n=(yn.range,cn((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/on),(t=>t.getUTCDate()-1))),bn=(_n.range,cn((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/on),(t=>Math.floor(t/on))));function Cn(t){return cn((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rn)/an))}bn.range;const xn=Cn(0),vn=Cn(1),kn=Cn(2),Tn=Cn(3),wn=Cn(4),Sn=Cn(5),Bn=Cn(6);function Fn(t){return cn((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/an))}xn.range,vn.range,kn.range,Tn.range,wn.range,Sn.range,Bn.range;const Ln=Fn(0),Mn=Fn(1),An=Fn(2),En=Fn(3),Zn=Fn(4),On=Fn(5),qn=Fn(6),In=(Ln.range,Mn.range,An.range,En.range,Zn.range,On.range,qn.range,cn((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),Nn=(In.range,cn((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),Dn=(Nn.range,cn((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));Dn.every=t=>isFinite(t=Math.floor(t))&&t>0?cn((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,i)=>{e.setFullYear(e.getFullYear()+i*t)})):null,Dn.range;const $n=cn((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));function zn(t,e,i,r,n,o){const a=[[fn,1,en],[fn,5,5e3],[fn,15,15e3],[fn,30,3e4],[o,1,rn],[o,5,3e5],[o,15,9e5],[o,30,18e5],[n,1,nn],[n,3,108e5],[n,6,216e5],[n,12,432e5],[r,1,on],[r,2,1728e5],[i,1,an],[e,1,2592e6],[e,3,7776e6],[t,1,sn]];function s(e,i,r){const n=Math.abs(i-e)/r,o=pr((([,,t])=>t)).right(a,n);if(o===a.length)return t.every(ur(e/sn,i/sn,r));if(0===o)return un.every(Math.max(ur(e,i,r),1));const[s,l]=a[n/a[o-1][2]isFinite(t=Math.floor(t))&&t>0?cn((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,i)=>{e.setUTCFullYear(e.getUTCFullYear()+i*t)})):null,$n.range;const[jn,Pn]=zn($n,Nn,Ln,bn,mn,pn),[Rn,Wn]=zn(Dn,In,xn,yn,gn,dn);function Un(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Hn(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Yn(t,e,i){return{y:t,m:e,d:i,H:0,M:0,S:0,L:0}}var Vn,Gn,Xn={"-":"",_:" ",0:"0"},Jn=/^\s*\d+/,Qn=/^%/,Kn=/[\\^$*+?|[\]().{}]/g;function to(t,e,i){var r=t<0?"-":"",n=(r?-t:t)+"",o=n.length;return r+(o[t.toLowerCase(),e])))}function no(t,e,i){var r=Jn.exec(e.slice(i,i+1));return r?(t.w=+r[0],i+r[0].length):-1}function oo(t,e,i){var r=Jn.exec(e.slice(i,i+1));return r?(t.u=+r[0],i+r[0].length):-1}function ao(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.U=+r[0],i+r[0].length):-1}function so(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.V=+r[0],i+r[0].length):-1}function lo(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.W=+r[0],i+r[0].length):-1}function ho(t,e,i){var r=Jn.exec(e.slice(i,i+4));return r?(t.y=+r[0],i+r[0].length):-1}function co(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),i+r[0].length):-1}function uo(t,e,i){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(i,i+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),i+r[0].length):-1}function fo(t,e,i){var r=Jn.exec(e.slice(i,i+1));return r?(t.q=3*r[0]-3,i+r[0].length):-1}function po(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.m=r[0]-1,i+r[0].length):-1}function go(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.d=+r[0],i+r[0].length):-1}function mo(t,e,i){var r=Jn.exec(e.slice(i,i+3));return r?(t.m=0,t.d=+r[0],i+r[0].length):-1}function yo(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.H=+r[0],i+r[0].length):-1}function _o(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.M=+r[0],i+r[0].length):-1}function bo(t,e,i){var r=Jn.exec(e.slice(i,i+2));return r?(t.S=+r[0],i+r[0].length):-1}function Co(t,e,i){var r=Jn.exec(e.slice(i,i+3));return r?(t.L=+r[0],i+r[0].length):-1}function xo(t,e,i){var r=Jn.exec(e.slice(i,i+6));return r?(t.L=Math.floor(r[0]/1e3),i+r[0].length):-1}function vo(t,e,i){var r=Qn.exec(e.slice(i,i+1));return r?i+r[0].length:-1}function ko(t,e,i){var r=Jn.exec(e.slice(i));return r?(t.Q=+r[0],i+r[0].length):-1}function To(t,e,i){var r=Jn.exec(e.slice(i));return r?(t.s=+r[0],i+r[0].length):-1}function wo(t,e){return to(t.getDate(),e,2)}function So(t,e){return to(t.getHours(),e,2)}function Bo(t,e){return to(t.getHours()%12||12,e,2)}function Fo(t,e){return to(1+yn.count(Dn(t),t),e,3)}function Lo(t,e){return to(t.getMilliseconds(),e,3)}function Mo(t,e){return Lo(t,e)+"000"}function Ao(t,e){return to(t.getMonth()+1,e,2)}function Eo(t,e){return to(t.getMinutes(),e,2)}function Zo(t,e){return to(t.getSeconds(),e,2)}function Oo(t){var e=t.getDay();return 0===e?7:e}function qo(t,e){return to(xn.count(Dn(t)-1,t),e,2)}function Io(t){var e=t.getDay();return e>=4||0===e?wn(t):wn.ceil(t)}function No(t,e){return t=Io(t),to(wn.count(Dn(t),t)+(4===Dn(t).getDay()),e,2)}function Do(t){return t.getDay()}function $o(t,e){return to(vn.count(Dn(t)-1,t),e,2)}function zo(t,e){return to(t.getFullYear()%100,e,2)}function jo(t,e){return to((t=Io(t)).getFullYear()%100,e,2)}function Po(t,e){return to(t.getFullYear()%1e4,e,4)}function Ro(t,e){var i=t.getDay();return to((t=i>=4||0===i?wn(t):wn.ceil(t)).getFullYear()%1e4,e,4)}function Wo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+to(e/60|0,"0",2)+to(e%60,"0",2)}function Uo(t,e){return to(t.getUTCDate(),e,2)}function Ho(t,e){return to(t.getUTCHours(),e,2)}function Yo(t,e){return to(t.getUTCHours()%12||12,e,2)}function Vo(t,e){return to(1+_n.count($n(t),t),e,3)}function Go(t,e){return to(t.getUTCMilliseconds(),e,3)}function Xo(t,e){return Go(t,e)+"000"}function Jo(t,e){return to(t.getUTCMonth()+1,e,2)}function Qo(t,e){return to(t.getUTCMinutes(),e,2)}function Ko(t,e){return to(t.getUTCSeconds(),e,2)}function ta(t){var e=t.getUTCDay();return 0===e?7:e}function ea(t,e){return to(Ln.count($n(t)-1,t),e,2)}function ia(t){var e=t.getUTCDay();return e>=4||0===e?Zn(t):Zn.ceil(t)}function ra(t,e){return t=ia(t),to(Zn.count($n(t),t)+(4===$n(t).getUTCDay()),e,2)}function na(t){return t.getUTCDay()}function oa(t,e){return to(Mn.count($n(t)-1,t),e,2)}function aa(t,e){return to(t.getUTCFullYear()%100,e,2)}function sa(t,e){return to((t=ia(t)).getUTCFullYear()%100,e,2)}function la(t,e){return to(t.getUTCFullYear()%1e4,e,4)}function ha(t,e){var i=t.getUTCDay();return to((t=i>=4||0===i?Zn(t):Zn.ceil(t)).getUTCFullYear()%1e4,e,4)}function ca(){return"+0000"}function ua(){return"%"}function fa(t){return+t}function da(t){return Math.floor(+t/1e3)}function pa(t){return new Date(t)}function ga(t){return t instanceof Date?+t:+new Date(+t)}function ma(t,e,i,r,n,o,a,s,l,h){var c=Er(),u=c.invert,f=c.domain,d=h(".%L"),p=h(":%S"),g=h("%I:%M"),m=h("%I %p"),y=h("%a %d"),_=h("%b %d"),b=h("%B"),C=h("%Y");function x(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:fa,s:da,S:Zo,u:Oo,U:qo,V:No,w:Do,W:$o,x:null,X:null,y:zo,Y:Po,Z:Wo,"%":ua},C={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Uo,e:Uo,f:Xo,g:sa,G:ha,H:Ho,I:Yo,j:Vo,L:Go,m:Jo,M:Qo,p:function(t){return n[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:fa,s:da,S:Ko,u:ta,U:ea,V:ra,w:na,W:oa,x:null,X:null,y:aa,Y:la,Z:ca,"%":ua},x={a:function(t,e,i){var r=d.exec(e.slice(i));return r?(t.w=p.get(r[0].toLowerCase()),i+r[0].length):-1},A:function(t,e,i){var r=u.exec(e.slice(i));return r?(t.w=f.get(r[0].toLowerCase()),i+r[0].length):-1},b:function(t,e,i){var r=y.exec(e.slice(i));return r?(t.m=_.get(r[0].toLowerCase()),i+r[0].length):-1},B:function(t,e,i){var r=g.exec(e.slice(i));return r?(t.m=m.get(r[0].toLowerCase()),i+r[0].length):-1},c:function(t,i,r){return T(t,e,i,r)},d:go,e:go,f:xo,g:co,G:ho,H:yo,I:yo,j:mo,L:Co,m:po,M:_o,p:function(t,e,i){var r=h.exec(e.slice(i));return r?(t.p=c.get(r[0].toLowerCase()),i+r[0].length):-1},q:fo,Q:ko,s:To,S:bo,u:oo,U:ao,V:so,w:no,W:lo,x:function(t,e,r){return T(t,i,e,r)},X:function(t,e,i){return T(t,r,e,i)},y:co,Y:ho,Z:uo,"%":vo};function v(t,e){return function(i){var r,n,o,a=[],s=-1,l=0,h=t.length;for(i instanceof Date||(i=new Date(+i));++s53)return null;"w"in o||(o.w=1),"Z"in o?(n=(r=Hn(Yn(o.y,0,1))).getUTCDay(),r=n>4||0===n?Mn.ceil(r):Mn(r),r=_n.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(n=(r=Un(Yn(o.y,0,1))).getDay(),r=n>4||0===n?vn.ceil(r):vn(r),r=yn.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),n="Z"in o?Hn(Yn(o.y,0,1)).getUTCDay():Un(Yn(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(n+5)%7:o.w+7*o.U-(n+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Hn(o)):Un(o)}}function T(t,e,i,r){for(var n,o,a=0,s=e.length,l=i.length;a=l)return-1;if(37===(n=e.charCodeAt(a++))){if(n=e.charAt(a++),!(o=x[n in Xn?e.charAt(a++):n])||(r=o(t,i,r))<0)return-1}else if(n!=i.charCodeAt(r++))return-1}return r}return b.x=v(i,b),b.X=v(r,b),b.c=v(e,b),C.x=v(i,C),C.X=v(r,C),C.c=v(e,C),{format:function(t){var e=v(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=v(t+="",C);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}({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"]}),Gn=Vn.format,Vn.parse,Vn.utcFormat,Vn.utcParse;var _a=function(t){for(var e=new Array(10),i=0;i<10;)e[i]="#"+t.slice(6*i,6*++i);return e}("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function ba(t){return"string"==typeof t?new Lt([[document.querySelector(t)]],[document.documentElement]):new Lt([[t]],Ft)}function Ca(t){return"string"==typeof t?new Lt([document.querySelectorAll(t)],[document.documentElement]):new Lt([x(t)],Ft)}function xa(t){return function(){return t}}const va=Math.abs,ka=Math.atan2,Ta=Math.cos,wa=Math.max,Sa=Math.min,Ba=Math.sin,Fa=Math.sqrt,La=1e-12,Ma=Math.PI,Aa=Ma/2,Ea=2*Ma;function Za(t){return t>=1?Aa:t<=-1?-Aa:Math.asin(t)}const Oa=Math.PI,qa=2*Oa,Ia=1e-6,Na=qa-Ia;function Da(t){this._+=t[0];for(let e=1,i=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Da;const i=10**e;return function(t){this._+=t[0];for(let e=1,r=t.length;eIa)if(Math.abs(c*s-l*h)>Ia&&n){let f=i-o,d=r-a,p=s*s+l*l,g=f*f+d*d,m=Math.sqrt(p),y=Math.sqrt(u),_=n*Math.tan((Oa-Math.acos((p+u-g)/(2*m*y)))/2),b=_/y,C=_/m;Math.abs(b-1)>Ia&&this._append`L${t+b*h},${e+b*c}`,this._append`A${n},${n},0,0,${+(c*f>h*d)},${this._x1=t+C*s},${this._y1=e+C*l}`}else this._append`L${this._x1=t},${this._y1=e}`}arc(t,e,i,r,n,o){if(t=+t,e=+e,o=!!o,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=i*Math.cos(r),s=i*Math.sin(r),l=t+a,h=e+s,c=1^o,u=o?r-n:n-r;null===this._x1?this._append`M${l},${h}`:(Math.abs(this._x1-l)>Ia||Math.abs(this._y1-h)>Ia)&&this._append`L${l},${h}`,i&&(u<0&&(u=u%qa+qa),u>Na?this._append`A${i},${i},0,1,${c},${t-a},${e-s}A${i},${i},0,1,${c},${this._x1=l},${this._y1=h}`:u>Ia&&this._append`A${i},${i},0,${+(u>=Oa)},${c},${this._x1=t+i*Math.cos(n)},${this._y1=e+i*Math.sin(n)}`)}rect(t,e,i,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}}function za(t){let e=3;return t.digits=function(i){if(!arguments.length)return e;if(null==i)e=null;else{const t=Math.floor(i);if(!(t>=0))throw new RangeError(`invalid digits: ${i}`);e=t}return t},()=>new $a(e)}function ja(t){return t.innerRadius}function Pa(t){return t.outerRadius}function Ra(t){return t.startAngle}function Wa(t){return t.endAngle}function Ua(t){return t&&t.padAngle}function Ha(t,e,i,r,n,o,a){var s=t-i,l=e-r,h=(a?o:-o)/Fa(s*s+l*l),c=h*l,u=-h*s,f=t+c,d=e+u,p=i+c,g=r+u,m=(f+p)/2,y=(d+g)/2,_=p-f,b=g-d,C=_*_+b*b,x=n-o,v=f*g-p*d,k=(b<0?-1:1)*Fa(wa(0,x*x*C-v*v)),T=(v*b-_*k)/C,w=(-v*_-b*k)/C,S=(v*b+_*k)/C,B=(-v*_+b*k)/C,F=T-m,L=w-y,M=S-m,A=B-y;return F*F+L*L>M*M+A*A&&(T=S,w=B),{cx:T,cy:w,x01:-c,y01:-u,x11:T*(n/x-1),y11:w*(n/x-1)}}function Ya(){var t=ja,e=Pa,i=xa(0),r=null,n=Ra,o=Wa,a=Ua,s=null,l=za(h);function h(){var h,c,u,f=+t.apply(this,arguments),d=+e.apply(this,arguments),p=n.apply(this,arguments)-Aa,g=o.apply(this,arguments)-Aa,m=va(g-p),y=g>p;if(s||(s=h=l()),dLa)if(m>Ea-La)s.moveTo(d*Ta(p),d*Ba(p)),s.arc(0,0,d,p,g,!y),f>La&&(s.moveTo(f*Ta(g),f*Ba(g)),s.arc(0,0,f,g,p,y));else{var _,b,C=p,x=g,v=p,k=g,T=m,w=m,S=a.apply(this,arguments)/2,B=S>La&&(r?+r.apply(this,arguments):Fa(f*f+d*d)),F=Sa(va(d-f)/2,+i.apply(this,arguments)),L=F,M=F;if(B>La){var A=Za(B/f*Ba(S)),E=Za(B/d*Ba(S));(T-=2*A)>La?(v+=A*=y?1:-1,k-=A):(T=0,v=k=(p+g)/2),(w-=2*E)>La?(C+=E*=y?1:-1,x-=E):(w=0,C=x=(p+g)/2)}var Z=d*Ta(C),O=d*Ba(C),q=f*Ta(k),I=f*Ba(k);if(F>La){var N,D=d*Ta(x),$=d*Ba(x),z=f*Ta(v),j=f*Ba(v);if(m1?0:u<-1?Ma:Math.acos(u))/2),Y=Fa(N[0]*N[0]+N[1]*N[1]);L=Sa(F,(f-Y)/(H-1)),M=Sa(F,(d-Y)/(H+1))}else L=M=0}w>La?M>La?(_=Ha(z,j,Z,O,d,M,y),b=Ha(D,$,q,I,d,M,y),s.moveTo(_.cx+_.x01,_.cy+_.y01),MLa&&T>La?L>La?(_=Ha(q,I,D,$,f,-L,y),b=Ha(Z,O,z,j,f,-L,y),s.lineTo(_.cx+_.x01,_.cy+_.y01),Lt?1:e>=t?0:NaN}function es(t){return t}function is(){var t=es,e=ts,i=null,r=xa(0),n=xa(Ea),o=xa(0);function a(a){var s,l,h,c,u,f=(a=Va(a)).length,d=0,p=new Array(f),g=new Array(f),m=+r.apply(this,arguments),y=Math.min(Ea,Math.max(-Ea,n.apply(this,arguments)-m)),_=Math.min(Math.abs(y)/f,o.apply(this,arguments)),b=_*(y<0?-1:1);for(s=0;s0&&(d+=u);for(null!=e?p.sort((function(t,i){return e(g[t],g[i])})):null!=i&&p.sort((function(t,e){return i(a[t],a[e])})),s=0,h=d?(y-f*b)/d:0;s0?u*h:0)+b,g[l]={data:a[l],index:s,value:u,startAngle:m,endAngle:c,padAngle:_};return g}return a.value=function(e){return arguments.length?(t="function"==typeof e?e:xa(+e),a):t},a.sortValues=function(t){return arguments.length?(e=t,i=null,a):e},a.sort=function(t){return arguments.length?(i=t,e=null,a):i},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:xa(+t),a):r},a.endAngle=function(t){return arguments.length?(n="function"==typeof t?t:xa(+t),a):n},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:xa(+t),a):o},a}function rs(){}function ns(t,e,i){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+i)/6)}function os(t){this._context=t}function as(t){return new os(t)}function ss(t){this._context=t}function ls(t){return new ss(t)}function hs(t){this._context=t}function cs(t){return new hs(t)}$a.prototype,Array.prototype.slice,Ga.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&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;default:this._context.lineTo(t,e)}}},os.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:ns(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&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:ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ss.prototype={areaStart:rs,areaEnd:rs,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)}},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:ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},hs.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||0!==this._line&&3===this._point)&&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 i=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(i,r):this._context.moveTo(i,r);break;case 3:this._point=4;default:ns(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class us{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(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:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function fs(t){return new us(t,!0)}function ds(t){return new us(t,!1)}function ps(t,e){this._basis=new os(t),this._beta=e}ps.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,i=t.length-1;if(i>0)for(var r,n=t[0],o=e[0],a=t[i]-n,s=e[i]-o,l=-1;++l<=i;)r=l/i,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+r*a),this._beta*e[l]+(1-this._beta)*(o+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var gs=function t(e){function i(t){return 1===e?new os(t):new ps(t,e)}return i.beta=function(e){return t(+e)},i}(.85);function ms(t,e,i){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-i),t._x2,t._y2)}function ys(t,e){this._context=t,this._k=(1-e)/6}ys.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:ms(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&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:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _s=function t(e){function i(t){return new ys(t,e)}return i.tension=function(e){return t(+e)},i}(0);function bs(t,e){this._context=t,this._k=(1-e)/6}bs.prototype={areaStart:rs,areaEnd:rs,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)}},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:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Cs=function t(e){function i(t){return new bs(t,e)}return i.tension=function(e){return t(+e)},i}(0);function xs(t,e){this._context=t,this._k=(1-e)/6}xs.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||0!==this._line&&3===this._point)&&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:ms(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vs=function t(e){function i(t){return new xs(t,e)}return i.tension=function(e){return t(+e)},i}(0);function ks(t,e,i){var r=t._x1,n=t._y1,o=t._x2,a=t._y2;if(t._l01_a>La){var s=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);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>La){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*h+t._x1*t._l23_2a-e*t._l12_2a)/c,a=(a*h+t._y1*t._l23_2a-i*t._l12_2a)/c}t._context.bezierCurveTo(r,n,o,a,t._x2,t._y2)}function Ts(t,e){this._context=t,this._alpha=e}Ts.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)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,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:ks(this,t,e)}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}};var ws=function t(e){function i(t){return e?new Ts(t,e):new ys(t,0)}return i.alpha=function(e){return t(+e)},i}(.5);function Ss(t,e){this._context=t,this._alpha=e}Ss.prototype={areaStart:rs,areaEnd:rs,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)}},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,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:ks(this,t,e)}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}};var Bs=function t(e){function i(t){return e?new Ss(t,e):new bs(t,0)}return i.alpha=function(e){return t(+e)},i}(.5);function Fs(t,e){this._context=t,this._alpha=e}Fs.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||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,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:ks(this,t,e)}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}};var Ls=function t(e){function i(t){return e?new Fs(t,e):new xs(t,0)}return i.alpha=function(e){return t(+e)},i}(.5);function Ms(t){this._context=t}function As(t){return new Ms(t)}function Es(t){return t<0?-1:1}function Zs(t,e,i){var r=t._x1-t._x0,n=e-t._x1,o=(t._y1-t._y0)/(r||n<0&&-0),a=(i-t._y1)/(n||r<0&&-0),s=(o*n+a*r)/(r+n);return(Es(o)+Es(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function Os(t,e){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-e)/2:e}function qs(t,e,i){var r=t._x0,n=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._context.bezierCurveTo(r+s,n+s*e,o-s,a-s*i,o,a)}function Is(t){this._context=t}function Ns(t){this._context=new Ds(t)}function Ds(t){this._context=t}function $s(t){return new Is(t)}function zs(t){return new Ns(t)}function js(t){this._context=t}function Ps(t){var e,i,r=t.length-1,n=new Array(r),o=new Array(r),a=new Array(r);for(n[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)n[e]=(a[e]-n[e+1])/o[e];for(o[r-1]=(t[r]+n[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 i=this._x*(1-this._t)+t*this._t;this._context.lineTo(i,this._y),this._context.lineTo(i,e)}}this._x=t,this._y=e}},Vs.prototype={constructor:Vs,scale:function(t){return 1===t?this:new Vs(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new Vs(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+")"}},new Vs(1,0,0),Vs.prototype},4549:function(t,e,i){"use strict";i.d(e,{Z:function(){return o}});var r=i(5971),n=i(2142),o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new class{constructor(){this.type=n.w.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=n.w.ALL}is(t){return this.type===t}}}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=n.w.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:i,l:n}=t;void 0===e&&(t.h=r.Z.channel.rgb2hsl(t,"h")),void 0===i&&(t.s=r.Z.channel.rgb2hsl(t,"s")),void 0===n&&(t.l=r.Z.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:i,b:n}=t;void 0===e&&(t.r=r.Z.channel.hsl2rgb(t,"r")),void 0===i&&(t.g=r.Z.channel.hsl2rgb(t,"g")),void 0===n&&(t.b=r.Z.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(n.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(n.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(n.w.HSL)||void 0===e?(this._ensureHSL(),r.Z.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(n.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(n.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(n.w.RGB)||void 0===e?(this._ensureRGB(),r.Z.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(n.w.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(n.w.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(n.w.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(n.w.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(n.w.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(n.w.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},1767:function(t,e,i){"use strict";i.d(e,{Z:function(){return g}});var r=i(4549),n=i(2142);const o={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(o.re);if(!e)return;const i=e[1],n=parseInt(i,16),a=i.length,s=a%4==0,l=a>4,h=l?1:17,c=l?8:4,u=s?0:-1,f=l?255:15;return r.Z.set({r:(n>>c*(u+3)&f)*h,g:(n>>c*(u+2)&f)*h,b:(n>>c*(u+1)&f)*h,a:s?(n&f)*h/255:1},t)},stringify:t=>{const{r:e,g:i,b:r,a:o}=t;return o<1?`#${n.Q[Math.round(e)]}${n.Q[Math.round(i)]}${n.Q[Math.round(r)]}${n.Q[Math.round(255*o)]}`:`#${n.Q[Math.round(e)]}${n.Q[Math.round(i)]}${n.Q[Math.round(r)]}`}};var a=o,s=i(5971);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,i]=e;switch(i){case"grad":return s.Z.channel.clamp.h(.9*parseFloat(t));case"rad":return s.Z.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.Z.channel.clamp.h(360*parseFloat(t))}}return s.Z.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const i=t.match(l.re);if(!i)return;const[,n,o,a,h,c]=i;return r.Z.set({h:l._hue2deg(n),s:s.Z.channel.clamp.s(parseFloat(o)),l:s.Z.channel.clamp.l(parseFloat(a)),a:h?s.Z.channel.clamp.a(c?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{h:e,s:i,l:r,a:n}=t;return n<1?`hsla(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}%, ${s.Z.lang.round(r)}%, ${n})`:`hsl(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}%, ${s.Z.lang.round(r)}%)`}};var h=l;const c={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=c.colors[t];if(e)return a.parse(e)},stringify:t=>{const e=a.stringify(t);for(const t in c.colors)if(c.colors[t]===e)return t}};var u=c;const f={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const i=t.match(f.re);if(!i)return;const[,n,o,a,l,h,c,u,d]=i;return r.Z.set({r:s.Z.channel.clamp.r(o?2.55*parseFloat(n):parseFloat(n)),g:s.Z.channel.clamp.g(l?2.55*parseFloat(a):parseFloat(a)),b:s.Z.channel.clamp.b(c?2.55*parseFloat(h):parseFloat(h)),a:u?s.Z.channel.clamp.a(d?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`rgba(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)}, ${s.Z.lang.round(n)})`:`rgb(${s.Z.lang.round(e)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)})`}};var d=f;const p={format:{keyword:c,hex:a,rgb:f,rgba:f,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=a.parse(t)||d.parse(t)||h.parse(t)||u.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(n.w.HSL)||void 0===t.data.r?h.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?d.stringify(t):a.stringify(t)};var g=p},2142:function(t,e,i){"use strict";i.d(e,{Q:function(){return n},w:function(){return o}});var r=i(5971);const n={};for(let t=0;t<=255;t++)n[t]=r.Z.unit.dec2hex(t);const o={ALL:0,RGB:1,HSL:2}},6174:function(t,e,i){"use strict";var r=i(5971),n=i(1767);e.Z=(t,e,i)=>{const o=n.Z.parse(t),a=o[e],s=r.Z.channel.clamp[e](a+i);return a!==s&&(o[e]=s),n.Z.stringify(o)}},3438:function(t,e,i){"use strict";var r=i(5971),n=i(1767);e.Z=(t,e)=>{const i=n.Z.parse(t);for(const t in e)i[t]=r.Z.channel.clamp[t](e[t]);return n.Z.stringify(i)}},7201:function(t,e,i){"use strict";var r=i(6174);e.Z=(t,e)=>(0,r.Z)(t,"l",-e)},6500:function(t,e,i){"use strict";i.d(e,{Z:function(){return a}});var r=i(5971),n=i(1767),o=t=>(t=>{const{r:e,g:i,b:o}=n.Z.parse(t),a=.2126*r.Z.channel.toLinear(e)+.7152*r.Z.channel.toLinear(i)+.0722*r.Z.channel.toLinear(o);return r.Z.lang.round(a)})(t)>=.5,a=t=>!o(t)},2281:function(t,e,i){"use strict";var r=i(6174);e.Z=(t,e)=>(0,r.Z)(t,"l",e)},1117:function(t,e,i){"use strict";var r=i(5971),n=i(4549),o=i(1767),a=i(3438);e.Z=(t,e,i=0,s=1)=>{if("number"!=typeof t)return(0,a.Z)(t,{a:e});const l=n.Z.set({r:r.Z.channel.clamp.r(t),g:r.Z.channel.clamp.g(e),b:r.Z.channel.clamp.b(i),a:r.Z.channel.clamp.a(s)});return o.Z.stringify(l)}},5971:function(t,e,i){"use strict";i.d(e,{Z:function(){return n}});const r={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t),hsl2rgb:({h:t,s:e,l:i},n)=>{if(!e)return 2.55*i;t/=360,e/=100;const o=(i/=100)<.5?i*(1+e):i+e-i*e,a=2*i-o;switch(n){case"r":return 255*r.hue2rgb(a,o,t+1/3);case"g":return 255*r.hue2rgb(a,o,t);case"b":return 255*r.hue2rgb(a,o,t-1/3)}},rgb2hsl:({r:t,g:e,b:i},r)=>{t/=255,e/=255,i/=255;const n=Math.max(t,e,i),o=Math.min(t,e,i),a=(n+o)/2;if("l"===r)return 100*a;if(n===o)return 0;const s=n-o;if("s"===r)return 100*(a>.5?s/(2-n-o):s/(n+o));switch(n){case t:return 60*((e-i)/s+(ee>i?Math.min(e,Math.max(i,t)):Math.min(i,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},2536:function(t,e,i){"use strict";i.d(e,{Z:function(){return s}});var r=i(9651),n=function(t,e){for(var i=t.length;i--;)if((0,r.Z)(t[i][0],e))return i;return-1},o=Array.prototype.splice;function a(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e-1},a.prototype.set=function(t,e){var i=this.__data__,r=n(i,t);return r<0?(++this.size,i.push([t,e])):i[r][1]=e,this};var s=a},6183:function(t,e,i){"use strict";var r=i(2119),n=i(6092),o=(0,r.Z)(n.Z,"Map");e.Z=o},520:function(t,e,i){"use strict";i.d(e,{Z:function(){return f}});var r=(0,i(2119).Z)(Object,"create"),n=Object.prototype.hasOwnProperty,o=Object.prototype.hasOwnProperty;function a(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t0){if(++n>=800)return arguments[0]}else n=0;return r.apply(void 0,arguments)})},19:function(t,e){"use strict";var i=Function.prototype.toString;e.Z=function(t){if(null!=t){try{return i.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},2002:function(t,e){"use strict";e.Z=function(t){return function(){return t}}},9651:function(t,e){"use strict";e.Z=function(t,e){return t===e||t!=t&&e!=e}},9203:function(t,e){"use strict";e.Z=function(t){return t}},4732:function(t,e,i){"use strict";i.d(e,{Z:function(){return c}});var r=i(1922),n=i(8533),o=function(t){return(0,n.Z)(t)&&"[object Arguments]"==(0,r.Z)(t)},a=Object.prototype,s=a.hasOwnProperty,l=a.propertyIsEnumerable,h=o(function(){return arguments}())?o:function(t){return(0,n.Z)(t)&&s.call(t,"callee")&&!l.call(t,"callee")},c=h},7771:function(t,e){"use strict";var i=Array.isArray;e.Z=i},585:function(t,e,i){"use strict";var r=i(3234),n=i(1656);e.Z=function(t){return null!=t&&(0,n.Z)(t.length)&&!(0,r.Z)(t)}},836:function(t,e,i){"use strict";var r=i(585),n=i(8533);e.Z=function(t){return(0,n.Z)(t)&&(0,r.Z)(t)}},6706:function(t,e,i){"use strict";i.d(e,{Z:function(){return s}});var r=i(6092),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=n&&"object"==typeof module&&module&&!module.nodeType&&module,a=o&&o.exports===n?r.Z.Buffer:void 0,s=(a?a.isBuffer:void 0)||function(){return!1}},9697:function(t,e,i){"use strict";var r=i(8448),n=i(6155),o=i(4732),a=i(7771),s=i(585),l=i(6706),h=i(2764),c=i(7212),u=Object.prototype.hasOwnProperty;e.Z=function(t){if(null==t)return!0;if((0,s.Z)(t)&&((0,a.Z)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.Z)(t)||(0,c.Z)(t)||(0,o.Z)(t)))return!t.length;var e=(0,n.Z)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,h.Z)(t))return!(0,r.Z)(t).length;for(var i in t)if(u.call(t,i))return!1;return!0}},3234:function(t,e,i){"use strict";var r=i(1922),n=i(7226);e.Z=function(t){if(!(0,n.Z)(t))return!1;var e=(0,r.Z)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},1656:function(t,e){"use strict";e.Z=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},7226:function(t,e){"use strict";e.Z=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},8533:function(t,e){"use strict";e.Z=function(t){return null!=t&&"object"==typeof t}},7514:function(t,e,i){"use strict";var r=i(1922),n=i(2513),o=i(8533),a=Function.prototype,s=Object.prototype,l=a.toString,h=s.hasOwnProperty,c=l.call(Object);e.Z=function(t){if(!(0,o.Z)(t)||"[object Object]"!=(0,r.Z)(t))return!1;var e=(0,n.Z)(t);if(null===e)return!0;var i=h.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&l.call(i)==c}},7212:function(t,e,i){"use strict";i.d(e,{Z:function(){return c}});var r=i(1922),n=i(1656),o=i(8533),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1;var s=i(1162),l=i(4254),h=l.Z&&l.Z.isTypedArray,c=h?(0,s.Z)(h):function(t){return(0,o.Z)(t)&&(0,n.Z)(t.length)&&!!a[(0,r.Z)(t)]}},7590:function(t,e,i){"use strict";i.d(e,{Z:function(){return h}});var r=i(9001),n=i(7226),o=i(2764),a=Object.prototype.hasOwnProperty,s=function(t){if(!(0,n.Z)(t))return function(t){var e=[];if(null!=t)for(var i in Object(t))e.push(i);return e}(t);var e=(0,o.Z)(t),i=[];for(var r in t)("constructor"!=r||!e&&a.call(t,r))&&i.push(r);return i},l=i(585),h=function(t){return(0,l.Z)(t)?(0,r.Z)(t,!0):s(t)}},2454:function(t,e,i){"use strict";var r=i(520);function n(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var i=function(){var r=arguments,n=e?e.apply(this,r):r[0],o=i.cache;if(o.has(n))return o.get(n);var a=t.apply(this,r);return i.cache=o.set(n,a)||o,a};return i.cache=new(n.Cache||r.Z),i}n.Cache=r.Z,e.Z=n},6841:function(t,e,i){"use strict";i.d(e,{Z:function(){return F}});var r,n=i(5365),o=i(4752),a=i(9651),s=function(t,e,i){(void 0!==i&&!(0,a.Z)(t[e],i)||void 0===i&&!(e in t))&&(0,o.Z)(t,e,i)},l=i(5381),h=i(1050),c=i(2701),u=i(7215),f=i(5418),d=i(4732),p=i(7771),g=i(836),m=i(6706),y=i(3234),_=i(7226),b=i(7514),C=i(7212),x=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]},v=i(1899),k=i(7590),T=function(t,e,i,r,n,o,a){var l,T=x(t,i),w=x(e,i),S=a.get(w);if(S)s(t,i,S);else{var B=o?o(T,w,i+"",t,e,a):void 0,F=void 0===B;if(F){var L=(0,p.Z)(w),M=!L&&(0,m.Z)(w),A=!L&&!M&&(0,C.Z)(w);B=w,L||M||A?(0,p.Z)(T)?B=T:(0,g.Z)(T)?B=(0,u.Z)(T):M?(F=!1,B=(0,h.Z)(w,!0)):A?(F=!1,B=(0,c.Z)(w,!0)):B=[]:(0,b.Z)(w)||(0,d.Z)(w)?(B=T,(0,d.Z)(T)?(l=T,B=(0,v.Z)(l,(0,k.Z)(l))):(0,_.Z)(T)&&!(0,y.Z)(T)||(B=(0,f.Z)(w))):F=!1}F&&(a.set(w,B),n(B,w,r,o,a),a.delete(w)),s(t,i,B)}},w=function t(e,i,r,o,a){e!==i&&(0,l.Z)(i,(function(l,h){if(a||(a=new n.Z),(0,_.Z)(l))T(e,i,h,r,t,o,a);else{var c=o?o(x(e,h),l,h+"",e,i,a):void 0;void 0===c&&(c=l),s(e,h,c)}}),k.Z)},S=i(9581),B=i(439),F=(r=function(t,e,i){w(t,e,i)},(0,S.Z)((function(t,e){var i=-1,n=e.length,o=n>1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=r.length>3&&"function"==typeof o?(n--,o):void 0,a&&(0,B.Z)(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++i{const i=l.Z.parse(t),r={};for(const t in e)e[t]&&(r[t]=i[t]+e[t]);return(0,h.Z)(t,r)},u=i(1117),f=(t,e=100)=>{const i=l.Z.parse(t);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,((t,e,i=50)=>{const{r:r,g:n,b:o,a:a}=l.Z.parse(t),{r:s,g:h,b:c,a:f}=l.Z.parse(e),d=i/100,p=2*d-1,g=a-f,m=((p*g==-1?p:(p+g)/(1+p*g))+1)/2,y=1-m,_=r*m+s*y,b=n*m+h*y,C=o*m+c*y,x=a*d+f*(1-d);return(0,u.Z)(_,b,C,x)})(i,t,e)},d=i(7201),p=i(2281),g=i(6500),m=i(2454),y=i(6841),_="comm",b="rule",C="decl",x=Math.abs,v=String.fromCharCode;function k(t){return t.trim()}function T(t,e,i){return t.replace(e,i)}function w(t,e){return t.indexOf(e)}function S(t,e){return 0|t.charCodeAt(e)}function B(t,e,i){return t.slice(e,i)}function F(t){return t.length}function L(t,e){return e.push(t),t}function M(t,e){for(var i="",r=0;r0?S(N,--q):0,Z--,10===I&&(Z=1,E--),I}function z(){return I=q2||W(I)>3?"":" "}function Y(t,e){for(;--e&&z()&&!(I<48||I>102||I>57&&I<65||I>70&&I<97););return R(t,P()+(e<6&&32==j()&&32==z()))}function V(t){for(;z();)switch(I){case t:return q;case 34:case 39:34!==t&&39!==t&&V(I);break;case 40:41===t&&V(t);break;case 92:z()}return q}function G(t,e){for(;z()&&t+I!==57&&(t+I!==84||47!==j()););return"/*"+R(e,q-1)+"*"+v(47===t?t:z())}function X(t){for(;!W(j());)z();return R(t,q)}function J(t){return function(t){return N="",t}(Q("",null,null,null,[""],t=function(t){return E=Z=1,O=F(N=t),q=0,[]}(t),0,[0],t))}function Q(t,e,i,r,n,o,a,s,l){for(var h=0,c=0,u=a,f=0,d=0,p=0,g=1,m=1,y=1,_=0,b="",C=n,x=o,k=r,B=b;m;)switch(p=_,_=z()){case 40:if(108!=p&&58==S(B,u-1)){-1!=w(B+=T(U(_),"&","&\f"),"&\f")&&(y=-1);break}case 34:case 39:case 91:B+=U(_);break;case 9:case 10:case 13:case 32:B+=H(p);break;case 92:B+=Y(P()-1,7);continue;case 47:switch(j()){case 42:case 47:L(tt(G(z(),P()),e,i,l),l);break;default:B+="/"}break;case 123*g:s[h++]=F(B)*y;case 125*g:case 59:case 0:switch(_){case 0:case 125:m=0;case 59+c:-1==y&&(B=T(B,/\f/g,"")),d>0&&F(B)-u&&L(d>32?et(B+";",r,i,u-1,l):et(T(B," ","")+";",r,i,u-2,l),l);break;case 59:B+=";";default:if(L(k=K(B,e,i,h,c,n,s,b,C=[],x=[],u,o),o),123===_)if(0===c)Q(B,e,k,k,C,o,u,s,x);else switch(99===f&&110===S(B,3)?100:f){case 100:case 108:case 109:case 115:Q(t,k,k,r&&L(K(t,k,k,0,0,n,s,b,n,C=[],u,x),x),n,x,u,s,r?C:x);break;default:Q(B,k,k,k,[""],x,0,s,x)}}h=c=d=0,g=y=1,b=B="",u=a;break;case 58:u=1+F(B),d=p;default:if(g<1)if(123==_)--g;else if(125==_&&0==g++&&125==$())continue;switch(B+=v(_),_*g){case 38:y=c>0?1:(B+="\f",-1);break;case 44:s[h++]=(F(B)-1)*y,y=1;break;case 64:45===j()&&(B+=U(z())),f=j(),c=u=F(b=B+=X(P())),_++;break;case 45:45===p&&2==F(B)&&(g=0)}}return o}function K(t,e,i,r,n,o,a,s,l,h,c,u){for(var f=n-1,d=0===n?o:[""],p=function(t){return t.length}(d),g=0,m=0,y=0;g0?d[_]+" "+C:T(C,/&\f/g,d[_])))&&(l[y++]=v);return D(t,e,i,0===n?b:s,l,h,c,u)}function tt(t,e,i,r){return D(t,e,i,_,v(I),B(t,2,-2),0,r)}function et(t,e,i,r,n){return D(t,e,i,C,B(t,0,r),B(t,r+1,-1),r,n)}var it=i(9697);const rt={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},nt={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},ot=function(t="fatal"){let e=rt.fatal;"string"==typeof t?(t=t.toLowerCase())in rt&&(e=rt[t]):"number"==typeof t&&(e=t),nt.trace=()=>{},nt.debug=()=>{},nt.info=()=>{},nt.warn=()=>{},nt.error=()=>{},nt.fatal=()=>{},e<=rt.fatal&&(nt.fatal=console.error?console.error.bind(console,at("FATAL"),"color: orange"):console.log.bind(console,"[35m",at("FATAL"))),e<=rt.error&&(nt.error=console.error?console.error.bind(console,at("ERROR"),"color: orange"):console.log.bind(console,"[31m",at("ERROR"))),e<=rt.warn&&(nt.warn=console.warn?console.warn.bind(console,at("WARN"),"color: orange"):console.log.bind(console,"[33m",at("WARN"))),e<=rt.info&&(nt.info=console.info?console.info.bind(console,at("INFO"),"color: lightblue"):console.log.bind(console,"[34m",at("INFO"))),e<=rt.debug&&(nt.debug=console.debug?console.debug.bind(console,at("DEBUG"),"color: lightgreen"):console.log.bind(console,"[32m",at("DEBUG"))),e<=rt.trace&&(nt.trace=console.debug?console.debug.bind(console,at("TRACE"),"color: lightgreen"):console.log.bind(console,"[32m",at("TRACE")))},at=t=>`%c${n().format("ss.SSS")} : ${t} : `,st=/ /gi,lt=t=>s.sanitize(t),ht=(t,e)=>{var i;if(!1!==(null==(i=e.flowchart)?void 0:i.htmlLabels)){const i=e.securityLevel;"antiscript"===i||"strict"===i?t=lt(t):"loose"!==i&&(t=(t=(t=ft(t)).replace(/
/g,">")).replace(/=/g,"="),t=ut(t))}return t},ct=(t,e)=>t?t=e.dompurifyConfig?s.sanitize(ht(t,e),e.dompurifyConfig).toString():s.sanitize(ht(t,e),{FORBID_TAGS:["style"]}).toString():t,ut=t=>t.replace(/#br#/g," "),ft=t=>t.replace(st,"#br#"),dt=t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),pt=function(t){let e=t;if(t.split("~").length-1>=2){let t=e;do{e=t,t=e.replace(/~([^\s,:;]+)~/,"<$1>")}while(t!=e);return pt(t)}return e},gt={getRows:t=>t?ft(t).replace(/\\n/g,"#br#").split("#br#"):[""],sanitizeText:ct,sanitizeTextOrArray:(t,e)=>"string"==typeof t?ct(t,e):t.flat().map((t=>ct(t,e))),hasBreaks:t=>st.test(t),splitBreaks:t=>t.split(st),lineBreakRegex:st,removeScript:lt,getUrl:t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},evaluate:dt,getMax:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.max(...e)},getMin:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.min(...e)}},mt=(t,e)=>c(t,e?{s:-40,l:10}:{s:-40,l:-10}),yt="#ffffff",_t="#f2f2f2",bt=t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=c(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=c(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=f(this.primaryColor),this.secondaryTextColor=f(this.secondaryColor),this.tertiaryTextColor=f(this.tertiaryColor),this.lineColor=f(this.background),this.textColor=f(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=(0,u.Z)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||c(this.primaryColor,{h:30}),this.cScale4=this.cScale4||c(this.primaryColor,{h:60}),this.cScale5=this.cScale5||c(this.primaryColor,{h:90}),this.cScale6=this.cScale6||c(this.primaryColor,{h:120}),this.cScale7=this.cScale7||c(this.primaryColor,{h:150}),this.cScale8=this.cScale8||c(this.primaryColor,{h:210}),this.cScale9=this.cScale9||c(this.primaryColor,{h:270}),this.cScale10=this.cScale10||c(this.primaryColor,{h:300}),this.cScale11=this.cScale11||c(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,d.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,d.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e};class Ct{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,p.Z)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=c(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=f(this.primaryColor),this.secondaryTextColor=f(this.secondaryColor),this.tertiaryTextColor=f(this.tertiaryColor),this.lineColor=f(this.background),this.textColor=f(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,p.Z)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,p.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}}const xt={base:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||c(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||c(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||mt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||mt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||f(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||f(this.tertiaryColor),this.lineColor=this.lineColor||f(this.background),this.arrowheadColor=this.arrowheadColor||f(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.Z)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.Z)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||f(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,p.Z)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||c(this.primaryColor,{h:30}),this.cScale4=this.cScale4||c(this.primaryColor,{h:60}),this.cScale5=this.cScale5||c(this.primaryColor,{h:90}),this.cScale6=this.cScale6||c(this.primaryColor,{h:120}),this.cScale7=this.cScale7||c(this.primaryColor,{h:150}),this.cScale8=this.cScale8||c(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||c(this.primaryColor,{h:270}),this.cScale10=this.cScale10||c(this.primaryColor,{h:300}),this.cScale11=this.cScale11||c(this.primaryColor,{h:330}),this.darkMode)for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},dark:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,p.Z)(this.primaryColor,16),this.tertiaryColor=c(this.primaryColor,{h:-160}),this.primaryBorderColor=f(this.background),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=f(this.primaryColor),this.secondaryTextColor=f(this.secondaryColor),this.tertiaryTextColor=f(this.tertiaryColor),this.lineColor=f(this.background),this.textColor=f(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,p.Z)(f("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=(0,u.Z)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,d.Z)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,d.Z)(this.sectionBkgColor,10),this.taskBorderColor=(0,u.Z)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,u.Z)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,p.Z)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,p.Z)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,p.Z)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=c(this.primaryColor,{h:64}),this.fillType3=c(this.secondaryColor,{h:64}),this.fillType4=c(this.primaryColor,{h:-64}),this.fillType5=c(this.secondaryColor,{h:-64}),this.fillType6=c(this.primaryColor,{h:128}),this.fillType7=c(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||c(this.primaryColor,{h:30}),this.cScale4=this.cScale4||c(this.primaryColor,{h:60}),this.cScale5=this.cScale5||c(this.primaryColor,{h:90}),this.cScale6=this.cScale6||c(this.primaryColor,{h:120}),this.cScale7=this.cScale7||c(this.primaryColor,{h:150}),this.cScale8=this.cScale8||c(this.primaryColor,{h:210}),this.cScale9=this.cScale9||c(this.primaryColor,{h:270}),this.cScale10=this.cScale10||c(this.primaryColor,{h:300}),this.cScale11=this.cScale11||c(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},default:{getThemeVariables:bt},forest:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,p.Z)("#cde498",10),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=f(this.primaryColor),this.secondaryTextColor=f(this.secondaryColor),this.tertiaryTextColor=f(this.primaryColor),this.lineColor=f(this.background),this.textColor=f(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,d.Z)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||c(this.primaryColor,{h:30}),this.cScale4=this.cScale4||c(this.primaryColor,{h:60}),this.cScale5=this.cScale5||c(this.primaryColor,{h:90}),this.cScale6=this.cScale6||c(this.primaryColor,{h:120}),this.cScale7=this.cScale7||c(this.primaryColor,{h:150}),this.cScale8=this.cScale8||c(this.primaryColor,{h:210}),this.cScale9=this.cScale9||c(this.primaryColor,{h:270}),this.cScale10=this.cScale10||c(this.primaryColor,{h:300}),this.cScale11=this.cScale11||c(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,d.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,d.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},neutral:{getThemeVariables:t=>{const e=new Ct;return e.calculate(t),e}}},vt={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},theme:"default",maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,fontSize:16},kt={...vt,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:xt.default.getThemeVariables(),sequence:{...vt.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...vt.gantt,tickInterval:void 0,useWidth:void 0},c4:{...vt.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...vt.pie,useWidth:984},requirement:{...vt.requirement,useWidth:void 0},gitGraph:{...vt.gitGraph,useMaxWidth:!1},sankey:{...vt.sankey,useMaxWidth:!1}},Tt=(t,e="")=>Object.keys(t).reduce(((i,r)=>Array.isArray(t[r])?i:"object"==typeof t[r]&&null!==t[r]?[...i,e+r,...Tt(t[r],"")]:[...i,e+r]),[]),wt=new Set(Tt(kt,"")),St=kt,Bt=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Ft=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Lt=/\s*%%.*\n/gm;class Mt extends Error{constructor(t){super(t),this.name="UnknownDiagramError"}}const At={},Et=function(t,e){t=t.replace(Bt,"").replace(Ft,"").replace(Lt,"\n");for(const[i,{detector:r}]of Object.entries(At))if(r(t,e))return i;throw new Mt(`No diagram type detected matching given configuration for text: ${t}`)},Zt=(...t)=>{for(const{id:e,detector:i,loader:r}of t)Ot(e,i,r)},Ot=(t,e,i)=>{At[t]?nt.error(`Detector with key ${t} already exists`):At[t]={detector:e,loader:i},nt.debug(`Detector with key ${t} added${i?" with loader":""}`)},qt=(t,e,{depth:i=2,clobber:r=!1}={})=>{const n={depth:i,clobber:r};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach((e=>qt(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||i<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(r||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=qt(t[n],e[n],{depth:i-1,clobber:r}))})),t)},It=qt,Nt="",Dt={curveBasis:a.$0Z,curveBasisClosed:a.Dts,curveBasisOpen:a.WQY,curveBumpX:a.qpX,curveBumpY:a.u93,curveBundle:a.tFB,curveCardinalClosed:a.OvA,curveCardinalOpen:a.dCK,curveCardinal:a.YY7,curveCatmullRomClosed:a.fGX,curveCatmullRomOpen:a.$m7,curveCatmullRom:a.zgE,curveLinear:a.c_6,curveLinearClosed:a.fxm,curveMonotoneX:a.FdL,curveMonotoneY:a.ak_,curveNatural:a.SxZ,curveStep:a.eA_,curveStepAfter:a.jsv,curveStepBefore:a.iJ},$t=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,zt=function(t,e=null){try{const i=new RegExp(`[%]{2}(?![{]${$t.source})(?=[}][%]{2}).*\n`,"ig");let r;t=t.trim().replace(i,"").replace(/'/gm,'"'),nt.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const n=[];for(;null!==(r=Ft.exec(t));)if(r.index===Ft.lastIndex&&Ft.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const t=r[1]?r[1]:r[2],e=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;n.push({type:t,args:e})}return 0===n.length&&n.push({type:t,args:null}),1===n.length?n[0]:n}catch(i){return nt.error(`ERROR: ${i.message} - Unable to parse directive\n ${null!==e?" type:"+e:""} based on the text:${t}`),{type:null,args:null}}};function jt(t,e){if(!t)return e;const i=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Dt[i]||e}function Pt(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function Rt(t){let e="",i="";for(const r of t)void 0!==r&&(r.startsWith("color:")||r.startsWith("text-align:")?i=i+r+";":e=e+r+";");return{style:e,labelStyle:i}}let Wt=0;const Ut=()=>(Wt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Wt),Ht=t=>function(t){let e="";for(let i=0;i{if(!t)return t;if(i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:" "},i),gt.lineBreakRegex.test(t))return t;const r=t.split(" "),n=[];let o="";return r.forEach(((t,a)=>{const s=Jt(`${t} `,i),l=Jt(o,i);if(s>e){const{hyphenatedStrings:r,remainingWord:a}=Gt(t,e,"-",i);n.push(o,...r),o=a}else l+s>=e?(n.push(o),o=t):o=[o,t].filter(Boolean).join(" ");a+1===r.length&&n.push(o)})),n.filter((t=>""!==t)).join(i.joinWith)}),((t,e,i)=>`${t}${e}${i.fontSize}${i.fontWeight}${i.fontFamily}${i.joinWith}`)),Gt=(0,m.Z)(((t,e,i="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const n=[...t],o=[];let a="";return n.forEach(((t,s)=>{const l=`${a}${t}`;if(Jt(l,r)>=e){const t=s+1,e=n.length===t,r=`${l}${i}`;o.push(e?l:r),a=""}else a=l})),{hyphenatedStrings:o,remainingWord:a}}),((t,e,i="-",r)=>`${t}${e}${i}${r.fontSize}${r.fontWeight}${r.fontFamily}`));function Xt(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),Qt(t,e).height}function Jt(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),Qt(t,e).width}const Qt=(0,m.Z)(((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e);const{fontSize:i,fontFamily:r,fontWeight:n}=e;if(!t)return{width:0,height:0};const[,o]=re(i),s=["sans-serif",r],l=t.split(gt.lineBreakRegex),h=[],c=(0,a.Ys)("body");if(!c.remove)return{width:0,height:0,lineHeight:0};const u=c.append("svg");for(const t of s){let e=0;const i={width:0,height:0,lineHeight:0};for(const r of l){const a={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};a.text=r||Nt;const s=Yt(u,a).style("font-size",o).style("font-weight",n).style("font-family",t),l=(s._groups||s)[0][0].getBBox();if(0===l.width&&0===l.height)throw new Error("svg element not in render tree");i.width=Math.round(Math.max(i.width,l.width)),e=Math.round(l.height),i.height+=e,i.lineHeight=Math.round(Math.max(i.lineHeight,e))}h.push(i)}return u.remove(),h[isNaN(h[1].height)||isNaN(h[1].width)||isNaN(h[1].lineHeight)||h[0].height>h[1].height&&h[0].width>h[1].width&&h[0].lineHeight>h[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`));let Kt;const te=t=>{if(nt.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach((t=>te(t)));else{for(const e of Object.keys(t)){if(nt.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!wt.has(e)||null==t[e]){nt.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){nt.debug("sanitizing object",e),te(t[e]);continue}const i=["themeCSS","fontFamily","altFontFamily"];for(const r of i)e.includes(r)&&(nt.debug("sanitizing css option",e),t[e]=ee(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const i=t.themeVariables[e];(null==i?void 0:i.match)&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}nt.debug("After sanitization",t)}},ee=t=>{let e=0,i=0;for(const r of t){if(e{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t,10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]};function ne(t,e){return(0,y.Z)({},t,e)}const oe={assignWithDepth:It,wrapLabel:Vt,calculateTextHeight:Xt,calculateTextWidth:Jt,calculateTextDimensions:Qt,cleanAndMerge:ne,detectInit:function(t,e){const i=zt(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(i)){const t=i.map((t=>t.args));te(t),r=It(r,[...t])}else r=i.args;if(!r)return;let n=Et(t,e);return["config"].forEach((t=>{void 0!==r[t]&&("flowchart-v2"===n&&(n="flowchart"),r[n]=r[t],delete r[t])})),r},detectDirective:zt,isSubstringInArray:function(t,e){for(const[i,r]of e.entries())if(r.match(t))return i;return-1},interpolateToCurve:jt,calcLabelPosition:function(t){return 1===t.length?t[0]:function(t){let e,i=0;t.forEach((t=>{i+=Pt(t,e),e=t}));let r,n=i/2;return e=void 0,t.forEach((t=>{if(e&&!r){const i=Pt(t,e);if(i=1&&(r={x:t.x,y:t.y}),o>0&&o<1&&(r={x:(1-o)*e.x+o*t.x,y:(1-o)*e.y+o*t.y})}}e=t})),r}(t)},calcCardinalityPosition:(t,e,i)=>{let r;nt.info(`our points ${JSON.stringify(e)}`),e[0]!==i&&(e=e.reverse());let n,o=25;r=void 0,e.forEach((t=>{if(r&&!n){const e=Pt(t,r);if(e=1&&(n={x:t.x,y:t.y}),i>0&&i<1&&(n={x:(1-i)*r.x+i*t.x,y:(1-i)*r.y+i*t.y})}}r=t}));const a=t?10:5,s=Math.atan2(e[0].y-n.y,e[0].x-n.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+n.x)/2,l.y=-Math.cos(s)*a+(e[0].y+n.y)/2,l},calcTerminalLabelPosition:function(t,e,i){let r,n=JSON.parse(JSON.stringify(i));nt.info("our points",n),"start_left"!==e&&"start_right"!==e&&(n=n.reverse()),n.forEach((t=>{r=t}));let o,a=25+t;r=void 0,n.forEach((t=>{if(r&&!o){const e=Pt(t,r);if(e=1&&(o={x:t.x,y:t.y}),i>0&&i<1&&(o={x:(1-i)*r.x+i*t.x,y:(1-i)*r.y+i*t.y})}}r=t}));const s=10+.5*t,l=Math.atan2(n[0].y-o.y,n[0].x-o.x),h={x:0,y:0};return h.x=Math.sin(l)*s+(n[0].x+o.x)/2,h.y=-Math.cos(l)*s+(n[0].y+o.y)/2,"start_left"===e&&(h.x=Math.sin(l+Math.PI)*s+(n[0].x+o.x)/2,h.y=-Math.cos(l+Math.PI)*s+(n[0].y+o.y)/2),"end_right"===e&&(h.x=Math.sin(l-Math.PI)*s+(n[0].x+o.x)/2-5,h.y=-Math.cos(l-Math.PI)*s+(n[0].y+o.y)/2-5),"end_left"===e&&(h.x=Math.sin(l)*s+(n[0].x+o.x)/2-5,h.y=-Math.cos(l)*s+(n[0].y+o.y)/2-5),h},formatUrl:function(t,e){const i=t.trim();if(i)return"loose"!==e.securityLevel?(0,o.Nm)(i):i},getStylesFromArray:Rt,generateId:Ut,random:Ht,runFunc:(t,...e)=>{const i=t.split("."),r=i.length-1,n=i[r];let o=window;for(let t=0;t{if(!r)return;const n=t.node().getBBox();t.append("text").text(r).attr("x",n.x+n.width/2).attr("y",-i).attr("class",e)},parseFontSize:re},ae="10.4.0",se=Object.freeze(St);let le,he=It({},se),ce=[],ue=It({},se);const fe=(t,e)=>{let i=It({},t),r={};for(const t of e)me(t),r=It(r,t);if(i=It(i,r),r.theme&&r.theme in xt){const t=It({},le),e=It(t.themeVariables||{},r.themeVariables);i.theme&&i.theme in xt&&(i.themeVariables=xt[i.theme].getThemeVariables(e))}return ue=i,xe(ue),ue},de=()=>It({},he),pe=t=>(xe(t),It(ue,t),ge()),ge=()=>It({},ue),me=t=>{t&&(["secure",...he.secure??[]].forEach((e=>{Object.hasOwn(t,e)&&(nt.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{e.startsWith("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&me(t[e])})))},ye=t=>{te(t),!t.fontFamily||t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily}),ce.push(t),fe(he,ce)},_e=(t=he)=>{ce=[],fe(t,ce)},be={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},Ce={},xe=t=>{var e;t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&(Ce[e="LAZY_LOAD_DEPRECATED"]||(nt.warn(be[e]),Ce[e]=!0))},ve={id:"c4",detector:t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),loader:async()=>{const{diagram:t}=await i.e(545).then(i.bind(i,4545));return{id:"c4",diagram:t}}},ke="flowchart",Te={id:ke,detector:(t,e)=>{var i,r;return"dagre-wrapper"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&"elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&/^\s*graph/.test(t)},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(506),i.e(76),i.e(476),i.e(813),i.e(728)]).then(i.bind(i,8728));return{id:ke,diagram:t}}},we="flowchart-v2",Se={id:we,detector:(t,e)=>{var i,r,n;return"dagre-d3"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&"elk"!==(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)&&(!(!/^\s*graph/.test(t)||"dagre-wrapper"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer))||/^\s*flowchart/.test(t))},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(506),i.e(76),i.e(476),i.e(813),i.e(81)]).then(i.bind(i,3081));return{id:we,diagram:t}}},Be={id:"er",detector:t=>/^\s*erDiagram/.test(t),loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(430)]).then(i.bind(i,4430));return{id:"er",diagram:t}}},Fe="gitGraph",Le={id:Fe,detector:t=>/^\s*gitGraph/.test(t),loader:async()=>{const{diagram:t}=await i.e(729).then(i.bind(i,7729));return{id:Fe,diagram:t}}},Me="gantt",Ae={id:Me,detector:t=>/^\s*gantt/.test(t),loader:async()=>{const{diagram:t}=await i.e(773).then(i.bind(i,9773));return{id:Me,diagram:t}}},Ee="info",Ze={id:Ee,detector:t=>/^\s*info/.test(t),loader:async()=>{const{diagram:t}=await i.e(433).then(i.bind(i,6433));return{id:Ee,diagram:t}}},Oe={id:"pie",detector:t=>/^\s*pie/.test(t),loader:async()=>{const{diagram:t}=await i.e(546).then(i.bind(i,3546));return{id:"pie",diagram:t}}},qe="quadrantChart",Ie={id:qe,detector:t=>/^\s*quadrantChart/.test(t),loader:async()=>{const{diagram:t}=await i.e(118).then(i.bind(i,7118));return{id:qe,diagram:t}}},Ne="requirement",De={id:Ne,detector:t=>/^\s*requirement(Diagram)?/.test(t),loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(19)]).then(i.bind(i,4019));return{id:Ne,diagram:t}}},$e="sequence",ze={id:$e,detector:t=>/^\s*sequenceDiagram/.test(t),loader:async()=>{const{diagram:t}=await i.e(361).then(i.bind(i,5510));return{id:$e,diagram:t}}},je="class",Pe={id:je,detector:(t,e)=>{var i;return"dagre-wrapper"!==(null==(i=null==e?void 0:e.class)?void 0:i.defaultRenderer)&&/^\s*classDiagram/.test(t)},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(423),i.e(519)]).then(i.bind(i,9519));return{id:je,diagram:t}}},Re="classDiagram",We={id:Re,detector:(t,e)=>{var i;return!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==(null==(i=null==e?void 0:e.class)?void 0:i.defaultRenderer))||/^\s*classDiagram-v2/.test(t)},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(506),i.e(76),i.e(476),i.e(423),i.e(747)]).then(i.bind(i,6747));return{id:Re,diagram:t}}},Ue="state",He={id:Ue,detector:(t,e)=>{var i;return"dagre-wrapper"!==(null==(i=null==e?void 0:e.state)?void 0:i.defaultRenderer)&&/^\s*stateDiagram/.test(t)},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(535),i.e(642)]).then(i.bind(i,7642));return{id:Ue,diagram:t}}},Ye="stateDiagram",Ve={id:Ye,detector:(t,e)=>{var i;return!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==(null==(i=null==e?void 0:e.state)?void 0:i.defaultRenderer))},loader:async()=>{const{diagram:t}=await Promise.all([i.e(771),i.e(506),i.e(76),i.e(476),i.e(535),i.e(626)]).then(i.bind(i,1626));return{id:Ye,diagram:t}}},Ge="journey",Xe={id:Ge,detector:t=>/^\s*journey/.test(t),loader:async()=>{const{diagram:t}=await i.e(438).then(i.bind(i,2438));return{id:Ge,diagram:t}}},Je=t=>{var e;const{securityLevel:i}=ge();let r=(0,a.Ys)("body");if("sandbox"===i){const i=(null==(e=(0,a.Ys)(`#i${t}`).node())?void 0:e.contentDocument)??document;r=(0,a.Ys)(i.body)}return r.select(`#${t}`)},Qe=function(t,e,i,r){const n=function(t,e,i){let r=new Map;return i?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r}(e,i,r);!function(t,e){for(let i of e)t.attr(i[0],i[1])}(t,n)},Ke=function(t,e,i,r){const n=e.node().getBBox(),o=n.width,a=n.height;nt.info(`SVG bounds: ${o}x${a}`,n);let s=0,l=0;nt.info(`Graph bounds: ${s}x${l}`,t),s=o+2*i,l=a+2*i,nt.info(`Calculated bounds: ${s}x${l}`),Qe(e,l,s,r);const h=`${n.x-i} ${n.y-i} ${n.width+2*i} ${n.height+2*i}`;e.attr("viewBox",h)},ti={draw:(t,e,i)=>{nt.debug("renering svg for syntax error\n");const r=Je(e);r.attr("viewBox","0 0 2412 512"),Qe(r,100,512,!0);const n=r.append("g");n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${i}`)}},ei=ti,ii={db:{},renderer:ti,parser:{parser:{yy:{}},parse:()=>{}}},ri="flowchart-elk",ni={id:ri,detector:(t,e)=>{var i;return!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&"elk"===(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer))},loader:async()=>{const{diagram:t}=await Promise.all([i.e(506),i.e(76),i.e(813),i.e(639)]).then(i.bind(i,1639));return{id:ri,diagram:t}}},oi="timeline",ai={id:oi,detector:t=>/^\s*timeline/.test(t),loader:async()=>{const{diagram:t}=await i.e(940).then(i.bind(i,5940));return{id:oi,diagram:t}}},si="mindmap",li={id:si,detector:t=>/^\s*mindmap/.test(t),loader:async()=>{const{diagram:t}=await Promise.all([i.e(506),i.e(662)]).then(i.bind(i,4662));return{id:si,diagram:t}}},hi="sankey",ci={id:hi,detector:t=>/^\s*sankey-beta/.test(t),loader:async()=>{const{diagram:t}=await i.e(579).then(i.bind(i,8579));return{id:hi,diagram:t}}},ui={};let fi="",di="",pi="";const gi=t=>ct(t,ge()),mi=function(){fi="",pi="",di=""},yi=function(t){fi=gi(t).replace(/^\s+/g,"")},_i=function(){return fi||di},bi=function(t){pi=gi(t).replace(/\n\s+/g,"\n")},Ci=function(){return pi},xi=function(t){di=gi(t)},vi=function(){return di},ki={getAccTitle:_i,setAccTitle:yi,getDiagramTitle:vi,setDiagramTitle:xi,getAccDescription:Ci,setAccDescription:bi,clear:mi},Ti=Object.freeze(Object.defineProperty({__proto__:null,clear:mi,default:ki,getAccDescription:Ci,getAccTitle:_i,getDiagramTitle:vi,setAccDescription:bi,setAccTitle:yi,setDiagramTitle:xi},Symbol.toStringTag,{value:"Module"}));let wi={};const Si=function(t,e,i,r){nt.debug("parseDirective is being called",e,i,r);try{if(void 0!==e)switch(e=e.trim(),i){case"open_directive":wi={};break;case"type_directive":if(!wi)throw new Error("currentDirective is undefined");wi.type=e.toLowerCase();break;case"arg_directive":if(!wi)throw new Error("currentDirective is undefined");wi.args=JSON.parse(e);break;case"close_directive":Bi(t,wi,r),wi=void 0}}catch(t){nt.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${i}`),nt.error(t.message)}},Bi=function(t,e,i){switch(nt.info(`Directive type=${e.type} with args:`,e.args),e.type){case"init":case"initialize":["config"].forEach((t=>{void 0!==e.args[t]&&("flowchart-v2"===i&&(i="flowchart"),e.args[i]=e.args[t],delete e.args[t])})),ye(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":nt.warn("themeCss encountered");break;default:nt.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e)}},Fi=nt,Li=ot,Mi=ge,Ai=t=>ct(t,Mi()),Ei=Ke,Zi=(t,e,i,r)=>Si(t,e,i,r),Oi={},qi=(t,e,i)=>{if(Oi[t])throw new Error(`Diagram ${t} already registered.`);var r,n;Oi[t]=e,i&&Ot(t,i),r=t,void 0!==(n=e.styles)&&(ui[r]=n),e.injectUtils&&e.injectUtils(Fi,Li,Mi,Ai,Ei,Ti,Zi)},Ii=t=>{if(t in Oi)return Oi[t];throw new Ni(t)};class Ni extends Error{constructor(t){super(`Diagram ${t} not found.`)}}let Di=!1;const $i=()=>{Di||(Di=!0,qi("error",ii,(t=>"error"===t.toLowerCase().trim())),qi("---",{db:{clear:()=>{}},styles:{},renderer:{},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},(t=>t.toLowerCase().trimStart().startsWith("---"))),Zt(ve,We,Pe,Be,Ae,Ze,Oe,De,ze,ni,Se,Te,li,ai,Le,Ve,He,Xe,Ie,ci))};function zi(t){return null==t}var ji={isNothing:zi,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:zi(t)?[]:[t]},repeat:function(t,e){var i,r="";for(i=0;is&&(e=r-s+(o=" ... ").length),i-r>s&&(i=r+s-(a=" ...").length),{str:o+t.slice(e,i).replace(/\t/g,"→")+a,pos:r-e+o.length}}function Hi(t,e){return ji.repeat(" ",e-t.length)+t}var Yi=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var i,r=/\r?\n|\r|\0/g,n=[0],o=[],a=-1;i=r.exec(t.buffer);)o.push(i.index),n.push(i.index+i[0].length),t.position<=i.index&&a<0&&(a=n.length-2);a<0&&(a=n.length-1);var s,l,h="",c=Math.min(t.line+e.linesAfter,o.length).toString().length,u=e.maxLength-(e.indent+c+3);for(s=1;s<=e.linesBefore&&!(a-s<0);s++)l=Ui(t.buffer,n[a-s],o[a-s],t.position-(n[a]-n[a-s]),u),h=ji.repeat(" ",e.indent)+Hi((t.line-s+1).toString(),c)+" | "+l.str+"\n"+h;for(l=Ui(t.buffer,n[a],o[a],t.position,u),h+=ji.repeat(" ",e.indent)+Hi((t.line+1).toString(),c)+" | "+l.str+"\n",h+=ji.repeat("-",e.indent+c+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(a+s>=o.length);s++)l=Ui(t.buffer,n[a+s],o[a+s],t.position-(n[a]-n[a+s]),u),h+=ji.repeat(" ",e.indent)+Hi((t.line+s+1).toString(),c)+" | "+l.str+"\n";return h.replace(/\n$/,"")},Vi=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Gi=["scalar","sequence","mapping"],Xi=function(t,e){var i,r;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===Vi.indexOf(e))throw new Wi('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=(i=e.styleAliases||null,r={},null!==i&&Object.keys(i).forEach((function(t){i[t].forEach((function(e){r[String(e)]=t}))})),r),-1===Gi.indexOf(this.kind))throw new Wi('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function Ji(t,e){var i=[];return t[e].forEach((function(t){var e=i.length;i.forEach((function(i,r){i.tag===t.tag&&i.kind===t.kind&&i.multi===t.multi&&(e=r)})),i[e]=t})),i}function Qi(t){return this.extend(t)}Qi.prototype.extend=function(t){var e=[],i=[];if(t instanceof Xi)i.push(t);else if(Array.isArray(t))i=i.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new Wi("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(i=i.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof Xi))throw new Wi("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new Wi("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new Wi("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),i.forEach((function(t){if(!(t instanceof Xi))throw new Wi("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create(Qi.prototype);return r.implicit=(this.implicit||[]).concat(e),r.explicit=(this.explicit||[]).concat(i),r.compiledImplicit=Ji(r,"implicit"),r.compiledExplicit=Ji(r,"explicit"),r.compiledTypeMap=function(){var t,e,i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(t){t.multi?(i.multi[t.kind].push(t),i.multi.fallback.push(t)):i[t.kind][t.tag]=i.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),or=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),ar=/^[-+]?[0-9]+e/,sr=new Xi("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!or.test(t)||"_"===t[t.length-1])},construct:function(t){var e,i;return i="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:i*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||ji.isNegativeZero(t))},represent:function(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(ji.isNegativeZero(t))return"-0.0";return i=t.toString(10),ar.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"}),lr=Ki.extend({implicit:[tr,er,nr,sr]}),hr=lr,cr=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ur=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),fr=new Xi("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==cr.exec(t)||null!==ur.exec(t))},construct:function(t){var e,i,r,n,o,a,s,l,h=0,c=null;if(null===(e=cr.exec(t))&&(e=ur.exec(t)),null===e)throw new Error("Date resolve error");if(i=+e[1],r=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(i,r,n));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(h=e[7].slice(0,3);h.length<3;)h+="0";h=+h}return e[9]&&(c=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(c=-c)),l=new Date(Date.UTC(i,r,n,o,a,s,h)),c&&l.setTime(l.getTime()-c),l},instanceOf:Date,represent:function(t){return t.toISOString()}}),dr=new Xi("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),pr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",gr=new Xi("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,i,r=0,n=t.length,o=pr;for(i=0;i64)){if(e<0)return!1;r+=6}return r%8==0},construct:function(t){var e,i,r=t.replace(/[\r\n=]/g,""),n=r.length,o=pr,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(r.charAt(e));return 0==(i=n%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===i?(s.push(a>>10&255),s.push(a>>2&255)):12===i&&s.push(a>>4&255),new Uint8Array(s)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,i,r="",n=0,o=t.length,a=pr;for(e=0;e>18&63],r+=a[n>>12&63],r+=a[n>>6&63],r+=a[63&n]),n=(n<<8)+t[e];return 0==(i=o%3)?(r+=a[n>>18&63],r+=a[n>>12&63],r+=a[n>>6&63],r+=a[63&n]):2===i?(r+=a[n>>10&63],r+=a[n>>4&63],r+=a[n<<2&63],r+=a[64]):1===i&&(r+=a[n>>2&63],r+=a[n<<4&63],r+=a[64],r+=a[64]),r}}),mr=Object.prototype.hasOwnProperty,yr=Object.prototype.toString,_r=new Xi("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,i,r,n,o,a=[],s=t;for(e=0,i=s.length;e>10),56320+(t-65536&1023))}for(var Ur=new Array(256),Hr=new Array(256),Yr=0;Yr<256;Yr++)Ur[Yr]=Rr(Yr)?1:0,Hr[Yr]=Rr(Yr);function Vr(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||kr,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Gr(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=Yi(i),new Wi(e,i)}function Xr(t,e){throw Gr(t,e)}function Jr(t,e){t.onWarning&&t.onWarning.call(null,Gr(t,e))}var Qr={YAML:function(t,e,i){var r,n,o;null!==t.version&&Xr(t,"duplication of %YAML directive"),1!==i.length&&Xr(t,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(i[0]))&&Xr(t,"ill-formed argument of the YAML directive"),n=parseInt(r[1],10),o=parseInt(r[2],10),1!==n&&Xr(t,"unacceptable YAML version of the document"),t.version=i[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&Jr(t,"unsupported YAML version of the document")},TAG:function(t,e,i){var r,n;2!==i.length&&Xr(t,"TAG directive accepts exactly two arguments"),r=i[0],n=i[1],qr.test(r)||Xr(t,"ill-formed tag handle (first argument) of the TAG directive"),Tr.call(t.tagMap,r)&&Xr(t,'there is a previously declared suffix for "'+r+'" tag handle'),Ir.test(n)||Xr(t,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch(e){Xr(t,"tag prefix is malformed: "+n)}t.tagMap[r]=n}};function Kr(t,e,i,r){var n,o,a,s;if(e1&&(t.result+=ji.repeat("\n",e-1))}function sn(t,e){var i,r,n=t.tag,o=t.anchor,a=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),r=t.input.charCodeAt(t.position);0!==r&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Xr(t,"tab characters must not be used in indentation")),45===r)&&zr(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,nn(t,!0,-1)&&t.lineIndent<=e)a.push(null),r=t.input.charCodeAt(t.position);else if(i=t.line,cn(t,e,Br,!1,!0),a.push(t.result),nn(t,!0,-1),r=t.input.charCodeAt(t.position),(t.line===i||t.lineIndent>e)&&0!==r)Xr(t,"bad indentation of a sequence entry");else if(t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndente)&&(y&&(a=t.line,s=t.lineStart,l=t.position),cn(t,e,Fr,!0,n)&&(y?g=t.result:m=t.result),y||(en(t,f,d,p,g,m,a,s,l),p=g=m=null),nn(t,!0,-1),h=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&0!==h)Xr(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===n?Xr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):h?Xr(t,"repeat of an indentation width identifier"):(c=e+n-1,h=!0)}if($r(o)){do{o=t.input.charCodeAt(++t.position)}while($r(o));if(35===o)do{o=t.input.charCodeAt(++t.position)}while(!Dr(o)&&0!==o)}for(;0!==o;){for(rn(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!h||t.lineIndentc&&(c=t.lineIndent),Dr(o))u++;else{if(t.lineIndent0){for(n=a,o=0;n>0;n--)(a=Pr(s=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+a:Xr(t,"expected hexadecimal character");t.result+=Wr(o),t.position++}else Xr(t,"unknown escape sequence");i=r=t.position}else Dr(s)?(Kr(t,i,r,!0),an(t,nn(t,!1,e)),i=r=t.position):t.position===t.lineStart&&on(t)?Xr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}Xr(t,"unexpected end of the stream within a double quoted scalar")}(t,f)?m=!0:function(t){var e,i,r;if(42!==(r=t.input.charCodeAt(t.position)))return!1;for(r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!zr(r)&&!jr(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Xr(t,"name of an alias node must contain at least one character"),i=t.input.slice(e,t.position),Tr.call(t.anchorMap,i)||Xr(t,'unidentified alias "'+i+'"'),t.result=t.anchorMap[i],nn(t,!0,-1),!0}(t)?(m=!0,null===t.tag&&null===t.anchor||Xr(t,"alias node should not have any properties")):function(t,e,i){var r,n,o,a,s,l,h,c,u=t.kind,f=t.result;if(zr(c=t.input.charCodeAt(t.position))||jr(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c)return!1;if((63===c||45===c)&&(zr(r=t.input.charCodeAt(t.position+1))||i&&jr(r)))return!1;for(t.kind="scalar",t.result="",n=o=t.position,a=!1;0!==c;){if(58===c){if(zr(r=t.input.charCodeAt(t.position+1))||i&&jr(r))break}else if(35===c){if(zr(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&on(t)||i&&jr(c))break;if(Dr(c)){if(s=t.line,l=t.lineStart,h=t.lineIndent,nn(t,!1,-1),t.lineIndent>=e){a=!0,c=t.input.charCodeAt(t.position);continue}t.position=o,t.line=s,t.lineStart=l,t.lineIndent=h;break}}a&&(Kr(t,n,o,!1),an(t,t.line-s),n=o=t.position,a=!1),$r(c)||(o=t.position+1),c=t.input.charCodeAt(++t.position)}return Kr(t,n,o,!1),!!t.result||(t.kind=u,t.result=f,!1)}(t,f,wr===i)&&(m=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===p&&(m=s&&sn(t,d))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Xr(t,'unacceptable node kind for !> tag; it should be "scalar", not "'+t.kind+'"'),l=0,h=t.implicitTypes.length;l"),null!==t.result&&u.kind!==t.kind&&Xr(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Xr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||m}function un(t){var e,i,r,n,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(n=t.input.charCodeAt(t.position))&&(nn(t,!0,-1),n=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==n));){for(a=!0,n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!zr(n);)n=t.input.charCodeAt(++t.position);for(r=[],(i=t.input.slice(e,t.position)).length<1&&Xr(t,"directive name must not be less than one character in length");0!==n;){for(;$r(n);)n=t.input.charCodeAt(++t.position);if(35===n){do{n=t.input.charCodeAt(++t.position)}while(0!==n&&!Dr(n));break}if(Dr(n))break;for(e=t.position;0!==n&&!zr(n);)n=t.input.charCodeAt(++t.position);r.push(t.input.slice(e,t.position))}0!==n&&rn(t),Tr.call(Qr,i)?Qr[i](t,i,r):Jr(t,'unknown document directive "'+i+'"')}nn(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,nn(t,!0,-1)):a&&Xr(t,"directives end mark is expected"),cn(t,t.lineIndent-1,Fr,!1,!0),nn(t,!0,-1),t.checkLineBreaks&&Zr.test(t.input.slice(o,t.position))&&Jr(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&on(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,nn(t,!0,-1)):t.positionr((t=>t.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm,""))(gn(t,this.db,ye))),this.parser.parser.yy=this.db,this.init=i.init,this.parse()}parse(){var t,e,i;if(this.detectError)throw this.detectError;null==(e=(t=this.db).clear)||e.call(t),null==(i=this.init)||i.call(this,ge()),this.parser.parse(this.text)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}}const yn=async t=>{const e=Et(t,ge());try{Ii(e)}catch(t){const i=At[e].loader;if(!i)throw new Mt(`Diagram ${e} not found.`);const{id:r,diagram:n}=await i();qi(r,n)}return new mn(t)};let _n=[];const bn=t=>{_n.push(t)},Cn=["graph","flowchart","flowchart-v2","flowchart-elk","stateDiagram","stateDiagram-v2"],xn=["foreignobject"],vn=["dominant-baseline"],kn=function(t){return t.replace(/fl°°/g,"").replace(/fl°/g,"&").replace(/¶ß/g,";")},Tn=(t,e,i=[])=>`\n.${t} ${e} { ${i.join(" !important; ")} !important; }`,wn=(t,e,i,r)=>{const n=((t,e,i={})=>{var r;let n="";if(void 0!==t.themeCSS&&(n+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(n+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(n+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!(0,it.Z)(i)&&Cn.includes(e)){const e=t.htmlLabels||(null==(r=t.flowchart)?void 0:r.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const t in i){const r=i[t];(0,it.Z)(r.styles)||e.forEach((t=>{n+=Tn(r.id,t,r.styles)})),(0,it.Z)(r.textStyles)||(n+=Tn(r.id,"tspan",r.textStyles))}}return n})(t,e,i);return M(J(`${r}{${((t,e,i)=>{let r="";return t in ui&&ui[t]?r=ui[t](i):nt.warn(`No theme found for ${t}`),` & {\n font-family: ${i.fontFamily};\n font-size: ${i.fontSize};\n fill: ${i.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${i.errorBkgColor};\n }\n & .error-text {\n fill: ${i.errorTextColor};\n stroke: ${i.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${i.lineColor};\n stroke: ${i.lineColor};\n }\n & .marker.cross {\n stroke: ${i.lineColor};\n }\n\n & svg {\n font-family: ${i.fontFamily};\n font-size: ${i.fontSize};\n }\n\n ${r}\n\n ${e}\n`})(e,n,t.themeVariables)}}`),A)},Sn=(t,e,i,r,n)=>{const o=t.append("div");o.attr("id",i),r&&o.attr("style",r);const a=o.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return n&&a.attr("xmlns:xlink",n),a.append("g"),t};function Bn(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const Fn=Object.freeze({render:async function(t,e,i){var r,n,o,l;$i(),_e(),gn(e,{},ye);const h=oe.detectInit(e);h&&ye(h);const c=ge();nt.debug(c),e.length>((null==c?void 0:c.maxTextSize)??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),e=(e=e.replace(/\r\n?/g,"\n")).replace(/<(\w+)([^>]*)>/g,((t,e,i)=>"<"+e+i.replace(/="([^"]*)"/g,"='$1'")+">"));const u="#"+t,f="i"+t,d="#"+f,p="d"+t,g="#"+p;let m=(0,a.Ys)("body");const y="sandbox"===c.securityLevel,_="loose"===c.securityLevel,b=c.fontFamily;if(void 0!==i){if(i&&(i.innerHTML=""),y){const t=Bn((0,a.Ys)(i),f);m=(0,a.Ys)(t.nodes()[0].contentDocument.body),m.node().style.margin=0}else m=(0,a.Ys)(i);Sn(m,t,p,`font-family: ${b}`,"http://www.w3.org/1999/xlink")}else{if(((t,e,i,r)=>{var n,o,a;null==(n=t.getElementById(e))||n.remove(),null==(o=t.getElementById(i))||o.remove(),null==(a=t.getElementById(r))||a.remove()})(document,t,p,f),y){const t=Bn((0,a.Ys)("body"),f);m=(0,a.Ys)(t.nodes()[0].contentDocument.body),m.node().style.margin=0}else m=(0,a.Ys)("body");Sn(m,t,p)}let C,x;e=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"})),e}(e);try{C=await yn(e)}catch(t){C=new mn("error"),x=t}const v=m.select(g).node(),k=C.type,T=v.firstChild,w=T.firstChild,S=Cn.includes(k)?C.renderer.getClasses(e,C):{},B=wn(c,k,S,u),F=document.createElement("style");F.innerHTML=B,T.insertBefore(F,w);try{await C.renderer.draw(e,t,ae,C)}catch(i){throw ei.draw(e,t,ae),i}!function(t,e,i,r){(function(t,e){t.attr("role","graphics-document document"),""!==e&&t.attr("aria-roledescription",e)})(e,t),function(t,e,i,r){if(void 0!==t.insert){if(i){const e=`chart-desc-${r}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(i)}if(e){const i=`chart-title-${r}`;t.attr("aria-labelledby",i),t.insert("title",":first-child").attr("id",i).text(e)}}}(e,i,r,e.attr("id"))}(k,m.select(`${g} svg`),null==(n=(r=C.db).getAccTitle)?void 0:n.call(r),null==(l=(o=C.db).getAccDescription)?void 0:l.call(o)),m.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let L=m.select(g).node().innerHTML;if(nt.debug("config.arrowMarkerAbsolute",c.arrowMarkerAbsolute),L=((t="",e,i)=>{let r=t;return i||e||(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),r=kn(r),r=r.replace(/ /g," "),r})(L,y,dt(c.arrowMarkerAbsolute)),y?L=((t="",e)=>{var i,r;return`
' + t + "")}" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The "iframe" tag is not supported by your browser.\n`})(L,m.select(g+" svg").node()):_||(L=s.sanitize(L,{ADD_TAGS:xn,ADD_ATTR:vn})),_n.forEach((t=>{t()})),_n=[],x)throw x;const M=y?d:g,A=(0,a.Ys)(M).node();return A&&"remove"in A&&A.remove(),{svg:L,bindFunctions:C.db.bindFunctions}},parse:async function(t,e){$i();try{await yn(t)}catch(t){if(null==e?void 0:e.suppressErrors)return!1;throw t}return!0},parseDirective:Si,getDiagramFromText:yn,initialize:function(t={}){var e;(null==t?void 0:t.fontFamily)&&!(null==(e=t.themeVariables)?void 0:e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),le=It({},t),(null==t?void 0:t.theme)&&t.theme in xt?t.themeVariables=xt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=xt.default.getThemeVariables(t.themeVariables));const i="object"==typeof t?(r=t,he=It({},se),he=It(he,r),r.theme&&xt[r.theme]&&(he.themeVariables=xt[r.theme].getThemeVariables(r.themeVariables)),fe(he,ce),he):de();var r;ot(i.logLevel),$i()},getConfig:ge,setConfig:pe,getSiteConfig:de,updateSiteConfig:t=>(he=It(he,t),fe(he,ce),he),reset:()=>{_e()},globalReset:()=>{_e(se)},defaultConfig:se});ot(ge().logLevel),_e(ge());const Ln=(t,e,i)=>{nt.warn(t),ie(t)?(i&&i(t.str,t.hash),e.push({...t,message:t.str,error:t})):(i&&i(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},Mn=async function(t={querySelector:".mermaid"}){try{await An(t)}catch(e){if(ie(e)&&nt.error(e.str),Dn.parseError&&Dn.parseError(e),!t.suppressErrors)throw nt.error("Use the suppressErrors option to suppress these errors"),e}},An=async function({postRenderCallback:t,querySelector:e,nodes:i}={querySelector:".mermaid"}){const n=Fn.getConfig();let o;if(nt.debug((t?"":"No ")+"Callback function found"),i)o=i;else{if(!e)throw new Error("Nodes and querySelector are both undefined");o=document.querySelectorAll(e)}nt.debug(`Found ${o.length} diagrams`),void 0!==(null==n?void 0:n.startOnLoad)&&(nt.debug("Start On Load: "+(null==n?void 0:n.startOnLoad)),Fn.updateSiteConfig({startOnLoad:null==n?void 0:n.startOnLoad}));const a=new oe.initIdGenerator(n.deterministicIds,n.deterministicIDSeed);let s;const l=[];for(const e of Array.from(o)){if(nt.info("Rendering diagram: "+e.id),e.getAttribute("data-processed"))continue;e.setAttribute("data-processed","true");const i=`mermaid-${a.next()}`;s=e.innerHTML,s=(0,r.Z)(oe.entityDecode(s)).trim().replace(/ /gi," ");const n=oe.detectInit(s);n&&nt.debug("Detected early reinit: ",n);try{const{svg:r,bindFunctions:n}=await Nn(i,s,e);e.innerHTML=r,t&&await t(i),n&&n(e)}catch(t){Ln(t,l,Dn.parseError)}}if(l.length>0)throw l[0]},En=function(t){Fn.initialize(t)},Zn=function(){if(Dn.startOnLoad){const{startOnLoad:t}=Fn.getConfig();t&&Dn.run().catch((t=>nt.error("Mermaid failed to initialize",t)))}};"undefined"!=typeof document&&window.addEventListener("load",Zn,!1);const On=[];let qn=!1;const In=async()=>{if(!qn){for(qn=!0;On.length>0;){const t=On.shift();if(t)try{await t()}catch(t){nt.error("Error executing queue",t)}}qn=!1}},Nn=(t,e,i)=>new Promise(((r,n)=>{On.push((()=>new Promise(((o,a)=>{Fn.render(t,e,i).then((t=>{o(t),r(t)}),(t=>{var e;nt.error("Error parsing",t),null==(e=Dn.parseError)||e.call(Dn,t),a(t),n(t)}))})))),In().catch(n)})),Dn={startOnLoad:!0,mermaidAPI:Fn,parse:async(t,e)=>new Promise(((i,r)=>{On.push((()=>new Promise(((n,o)=>{Fn.parse(t,e).then((t=>{n(t),i(t)}),(t=>{var e;nt.error("Error parsing",t),null==(e=Dn.parseError)||e.call(Dn,t),o(t),r(t)}))})))),In().catch(r)})),render:Nn,init:async function(t,e,i){nt.warn("mermaid.init is deprecated. Please use run instead."),t&&En(t);const r={postRenderCallback:i,querySelector:".mermaid"};"string"==typeof e?r.querySelector=e:e&&(e instanceof HTMLElement?r.nodes=[e]:r.nodes=e),await Mn(r)},run:Mn,registerExternalDiagrams:async(t,{lazyLoad:e=!0}={})=>{Zt(...t),!1===e&&await(async()=>{nt.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(At).map((async([t,{detector:e,loader:i}])=>{if(i)try{Ii(t)}catch(r){try{const{diagram:t,id:r}=await i();qi(r,t,e)}catch(e){throw nt.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete At[t],e}}})))).filter((t=>"rejected"===t.status));if(t.length>0){nt.error(`Failed to load ${t.length} external diagrams`);for(const e of t)nt.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}})()},initialize:En,parseError:void 0,contentLoaded:Zn,setParseErrorHandler:function(t){Dn.parseError=t},detectType:Et}},6637:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return r.N}});var r=i(9339);i(7484),i(7967),i(7274),i(7856)}}]);
\ No newline at end of file
+(self.webpackChunkgeekdoc = self.webpackChunkgeekdoc || []).push([
+ [637],
+ {
+ 7967: function (t, e) {
+ "use strict";
+ e.Nm = e.Rq = void 0;
+ var i = /^([^\w]*)(javascript|data|vbscript)/im,
+ r = /(\w+)(^\w|;)?/g,
+ n = /&(newline|tab);/gi,
+ o = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,
+ a = /^.+(:|:)/gim,
+ s = [".", "/"];
+ (e.Rq = "about:blank"),
+ (e.Nm = function (t) {
+ if (!t) return e.Rq;
+ var l,
+ h = ((l = t),
+ l.replace(o, "").replace(r, function (t, e) {
+ return String.fromCharCode(e);
+ }))
+ .replace(n, "")
+ .replace(o, "")
+ .trim();
+ if (!h) return e.Rq;
+ if (
+ (function (t) {
+ return s.indexOf(t[0]) > -1;
+ })(h)
+ )
+ return h;
+ var c = h.match(a);
+ if (!c) return h;
+ var u = c[0];
+ return i.test(u) ? e.Rq : h;
+ });
+ },
+ 7484: function (t) {
+ t.exports = (function () {
+ "use strict";
+ var t = 6e4,
+ e = 36e5,
+ i = "millisecond",
+ r = "second",
+ n = "minute",
+ o = "hour",
+ a = "day",
+ s = "week",
+ l = "month",
+ h = "quarter",
+ c = "year",
+ u = "date",
+ f = "Invalid Date",
+ d = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
+ p = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
+ g = {
+ name: "en",
+ weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ ordinal: function (t) {
+ var e = ["th", "st", "nd", "rd"],
+ i = t % 100;
+ return "[" + t + (e[(i - 20) % 10] || e[i] || e[0]) + "]";
+ },
+ },
+ m = function (t, e, i) {
+ var r = String(t);
+ return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(i) + t;
+ },
+ y = {
+ s: m,
+ z: function (t) {
+ var e = -t.utcOffset(),
+ i = Math.abs(e),
+ r = Math.floor(i / 60),
+ n = i % 60;
+ return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(n, 2, "0");
+ },
+ m: function t(e, i) {
+ if (e.date() < i.date()) return -t(i, e);
+ var r = 12 * (i.year() - e.year()) + (i.month() - e.month()),
+ n = e.clone().add(r, l),
+ o = i - n < 0,
+ a = e.clone().add(r + (o ? -1 : 1), l);
+ return +(-(r + (i - n) / (o ? n - a : a - n)) || 0);
+ },
+ a: function (t) {
+ return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
+ },
+ p: function (t) {
+ return (
+ { M: l, y: c, w: s, d: a, D: u, h: o, m: n, s: r, ms: i, Q: h }[t] ||
+ String(t || "")
+ .toLowerCase()
+ .replace(/s$/, "")
+ );
+ },
+ u: function (t) {
+ return void 0 === t;
+ },
+ },
+ _ = "en",
+ b = {};
+ b[_] = g;
+ var C = function (t) {
+ return t instanceof T;
+ },
+ x = function t(e, i, r) {
+ var n;
+ if (!e) return _;
+ if ("string" == typeof e) {
+ var o = e.toLowerCase();
+ b[o] && (n = o), i && ((b[o] = i), (n = o));
+ var a = e.split("-");
+ if (!n && a.length > 1) return t(a[0]);
+ } else {
+ var s = e.name;
+ (b[s] = e), (n = s);
+ }
+ return !r && n && (_ = n), n || (!r && _);
+ },
+ v = function (t, e) {
+ if (C(t)) return t.clone();
+ var i = "object" == typeof e ? e : {};
+ return (i.date = t), (i.args = arguments), new T(i);
+ },
+ k = y;
+ (k.l = x),
+ (k.i = C),
+ (k.w = function (t, e) {
+ return v(t, { locale: e.$L, utc: e.$u, x: e.$x, $offset: e.$offset });
+ });
+ var T = (function () {
+ function g(t) {
+ (this.$L = x(t.locale, null, !0)), this.parse(t);
+ }
+ var m = g.prototype;
+ return (
+ (m.parse = function (t) {
+ (this.$d = (function (t) {
+ var e = t.date,
+ i = t.utc;
+ if (null === e) return new Date(NaN);
+ if (k.u(e)) return new Date();
+ if (e instanceof Date) return new Date(e);
+ if ("string" == typeof e && !/Z$/i.test(e)) {
+ var r = e.match(d);
+ if (r) {
+ var n = r[2] - 1 || 0,
+ o = (r[7] || "0").substring(0, 3);
+ return i
+ ? new Date(Date.UTC(r[1], n, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, o))
+ : new Date(r[1], n, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, o);
+ }
+ }
+ return new Date(e);
+ })(t)),
+ (this.$x = t.x || {}),
+ this.init();
+ }),
+ (m.init = function () {
+ var t = this.$d;
+ (this.$y = t.getFullYear()),
+ (this.$M = t.getMonth()),
+ (this.$D = t.getDate()),
+ (this.$W = t.getDay()),
+ (this.$H = t.getHours()),
+ (this.$m = t.getMinutes()),
+ (this.$s = t.getSeconds()),
+ (this.$ms = t.getMilliseconds());
+ }),
+ (m.$utils = function () {
+ return k;
+ }),
+ (m.isValid = function () {
+ return !(this.$d.toString() === f);
+ }),
+ (m.isSame = function (t, e) {
+ var i = v(t);
+ return this.startOf(e) <= i && i <= this.endOf(e);
+ }),
+ (m.isAfter = function (t, e) {
+ return v(t) < this.startOf(e);
+ }),
+ (m.isBefore = function (t, e) {
+ return this.endOf(e) < v(t);
+ }),
+ (m.$g = function (t, e, i) {
+ return k.u(t) ? this[e] : this.set(i, t);
+ }),
+ (m.unix = function () {
+ return Math.floor(this.valueOf() / 1e3);
+ }),
+ (m.valueOf = function () {
+ return this.$d.getTime();
+ }),
+ (m.startOf = function (t, e) {
+ var i = this,
+ h = !!k.u(e) || e,
+ f = k.p(t),
+ d = function (t, e) {
+ var r = k.w(i.$u ? Date.UTC(i.$y, e, t) : new Date(i.$y, e, t), i);
+ return h ? r : r.endOf(a);
+ },
+ p = function (t, e) {
+ return k.w(i.toDate()[t].apply(i.toDate("s"), (h ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), i);
+ },
+ g = this.$W,
+ m = this.$M,
+ y = this.$D,
+ _ = "set" + (this.$u ? "UTC" : "");
+ switch (f) {
+ case c:
+ return h ? d(1, 0) : d(31, 11);
+ case l:
+ return h ? d(1, m) : d(0, m + 1);
+ case s:
+ var b = this.$locale().weekStart || 0,
+ C = (g < b ? g + 7 : g) - b;
+ return d(h ? y - C : y + (6 - C), m);
+ case a:
+ case u:
+ return p(_ + "Hours", 0);
+ case o:
+ return p(_ + "Minutes", 1);
+ case n:
+ return p(_ + "Seconds", 2);
+ case r:
+ return p(_ + "Milliseconds", 3);
+ default:
+ return this.clone();
+ }
+ }),
+ (m.endOf = function (t) {
+ return this.startOf(t, !1);
+ }),
+ (m.$set = function (t, e) {
+ var s,
+ h = k.p(t),
+ f = "set" + (this.$u ? "UTC" : ""),
+ d = ((s = {}),
+ (s[a] = f + "Date"),
+ (s[u] = f + "Date"),
+ (s[l] = f + "Month"),
+ (s[c] = f + "FullYear"),
+ (s[o] = f + "Hours"),
+ (s[n] = f + "Minutes"),
+ (s[r] = f + "Seconds"),
+ (s[i] = f + "Milliseconds"),
+ s)[h],
+ p = h === a ? this.$D + (e - this.$W) : e;
+ if (h === l || h === c) {
+ var g = this.clone().set(u, 1);
+ g.$d[d](p), g.init(), (this.$d = g.set(u, Math.min(this.$D, g.daysInMonth())).$d);
+ } else d && this.$d[d](p);
+ return this.init(), this;
+ }),
+ (m.set = function (t, e) {
+ return this.clone().$set(t, e);
+ }),
+ (m.get = function (t) {
+ return this[k.p(t)]();
+ }),
+ (m.add = function (i, h) {
+ var u,
+ f = this;
+ i = Number(i);
+ var d = k.p(h),
+ p = function (t) {
+ var e = v(f);
+ return k.w(e.date(e.date() + Math.round(t * i)), f);
+ };
+ if (d === l) return this.set(l, this.$M + i);
+ if (d === c) return this.set(c, this.$y + i);
+ if (d === a) return p(1);
+ if (d === s) return p(7);
+ var g = ((u = {}), (u[n] = t), (u[o] = e), (u[r] = 1e3), u)[d] || 1,
+ m = this.$d.getTime() + i * g;
+ return k.w(m, this);
+ }),
+ (m.subtract = function (t, e) {
+ return this.add(-1 * t, e);
+ }),
+ (m.format = function (t) {
+ var e = this,
+ i = this.$locale();
+ if (!this.isValid()) return i.invalidDate || f;
+ var r = t || "YYYY-MM-DDTHH:mm:ssZ",
+ n = k.z(this),
+ o = this.$H,
+ a = this.$m,
+ s = this.$M,
+ l = i.weekdays,
+ h = i.months,
+ c = i.meridiem,
+ u = function (t, i, n, o) {
+ return (t && (t[i] || t(e, r))) || n[i].slice(0, o);
+ },
+ d = function (t) {
+ return k.s(o % 12 || 12, t, "0");
+ },
+ g =
+ c ||
+ function (t, e, i) {
+ var r = t < 12 ? "AM" : "PM";
+ return i ? r.toLowerCase() : r;
+ };
+ return r.replace(p, function (t, r) {
+ return (
+ r ||
+ (function (t) {
+ switch (t) {
+ case "YY":
+ return String(e.$y).slice(-2);
+ case "YYYY":
+ return k.s(e.$y, 4, "0");
+ case "M":
+ return s + 1;
+ case "MM":
+ return k.s(s + 1, 2, "0");
+ case "MMM":
+ return u(i.monthsShort, s, h, 3);
+ case "MMMM":
+ return u(h, s);
+ case "D":
+ return e.$D;
+ case "DD":
+ return k.s(e.$D, 2, "0");
+ case "d":
+ return String(e.$W);
+ case "dd":
+ return u(i.weekdaysMin, e.$W, l, 2);
+ case "ddd":
+ return u(i.weekdaysShort, e.$W, l, 3);
+ case "dddd":
+ return l[e.$W];
+ case "H":
+ return String(o);
+ case "HH":
+ return k.s(o, 2, "0");
+ case "h":
+ return d(1);
+ case "hh":
+ return d(2);
+ case "a":
+ return g(o, a, !0);
+ case "A":
+ return g(o, a, !1);
+ case "m":
+ return String(a);
+ case "mm":
+ return k.s(a, 2, "0");
+ case "s":
+ return String(e.$s);
+ case "ss":
+ return k.s(e.$s, 2, "0");
+ case "SSS":
+ return k.s(e.$ms, 3, "0");
+ case "Z":
+ return n;
+ }
+ return null;
+ })(t) ||
+ n.replace(":", "")
+ );
+ });
+ }),
+ (m.utcOffset = function () {
+ return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
+ }),
+ (m.diff = function (i, u, f) {
+ var d,
+ p = this,
+ g = k.p(u),
+ m = v(i),
+ y = (m.utcOffset() - this.utcOffset()) * t,
+ _ = this - m,
+ b = function () {
+ return k.m(p, m);
+ };
+ switch (g) {
+ case c:
+ d = b() / 12;
+ break;
+ case l:
+ d = b();
+ break;
+ case h:
+ d = b() / 3;
+ break;
+ case s:
+ d = (_ - y) / 6048e5;
+ break;
+ case a:
+ d = (_ - y) / 864e5;
+ break;
+ case o:
+ d = _ / e;
+ break;
+ case n:
+ d = _ / t;
+ break;
+ case r:
+ d = _ / 1e3;
+ break;
+ default:
+ d = _;
+ }
+ return f ? d : k.a(d);
+ }),
+ (m.daysInMonth = function () {
+ return this.endOf(l).$D;
+ }),
+ (m.$locale = function () {
+ return b[this.$L];
+ }),
+ (m.locale = function (t, e) {
+ if (!t) return this.$L;
+ var i = this.clone(),
+ r = x(t, e, !0);
+ return r && (i.$L = r), i;
+ }),
+ (m.clone = function () {
+ return k.w(this.$d, this);
+ }),
+ (m.toDate = function () {
+ return new Date(this.valueOf());
+ }),
+ (m.toJSON = function () {
+ return this.isValid() ? this.toISOString() : null;
+ }),
+ (m.toISOString = function () {
+ return this.$d.toISOString();
+ }),
+ (m.toString = function () {
+ return this.$d.toUTCString();
+ }),
+ g
+ );
+ })(),
+ w = T.prototype;
+ return (
+ (v.prototype = w),
+ [
+ ["$ms", i],
+ ["$s", r],
+ ["$m", n],
+ ["$H", o],
+ ["$W", a],
+ ["$M", l],
+ ["$y", c],
+ ["$D", u],
+ ].forEach(function (t) {
+ w[t[1]] = function (e) {
+ return this.$g(e, t[0], t[1]);
+ };
+ }),
+ (v.extend = function (t, e) {
+ return t.$i || (t(e, T, v), (t.$i = !0)), v;
+ }),
+ (v.locale = x),
+ (v.isDayjs = C),
+ (v.unix = function (t) {
+ return v(1e3 * t);
+ }),
+ (v.en = b[_]),
+ (v.Ls = b),
+ (v.p = {}),
+ v
+ );
+ })();
+ },
+ 7856: function (t) {
+ t.exports = (function () {
+ "use strict";
+ const { entries: t, setPrototypeOf: e, isFrozen: i, getPrototypeOf: r, getOwnPropertyDescriptor: n } = Object;
+ let { freeze: o, seal: a, create: s } = Object,
+ { apply: l, construct: h } = "undefined" != typeof Reflect && Reflect;
+ l ||
+ (l = function (t, e, i) {
+ return t.apply(e, i);
+ }),
+ o ||
+ (o = function (t) {
+ return t;
+ }),
+ a ||
+ (a = function (t) {
+ return t;
+ }),
+ h ||
+ (h = function (t, e) {
+ return new t(...e);
+ });
+ const c = v(Array.prototype.forEach),
+ u = v(Array.prototype.pop),
+ f = v(Array.prototype.push),
+ d = v(String.prototype.toLowerCase),
+ p = v(String.prototype.toString),
+ g = v(String.prototype.match),
+ m = v(String.prototype.replace),
+ y = v(String.prototype.indexOf),
+ _ = v(String.prototype.trim),
+ b = v(RegExp.prototype.test),
+ C =
+ ((x = TypeError),
+ function () {
+ for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];
+ return h(x, e);
+ });
+ var x;
+ function v(t) {
+ return function (e) {
+ for (var i = arguments.length, r = new Array(i > 1 ? i - 1 : 0), n = 1; n < i; n++) r[n - 1] = arguments[n];
+ return l(t, e, r);
+ };
+ }
+ function k(t, r, n) {
+ var o;
+ (n = null !== (o = n) && void 0 !== o ? o : d), e && e(t, null);
+ let a = r.length;
+ for (; a--; ) {
+ let e = r[a];
+ if ("string" == typeof e) {
+ const t = n(e);
+ t !== e && (i(r) || (r[a] = t), (e = t));
+ }
+ t[e] = !0;
+ }
+ return t;
+ }
+ function T(e) {
+ const i = s(null);
+ for (const [r, n] of t(e)) i[r] = n;
+ return i;
+ }
+ function w(t, e) {
+ for (; null !== t; ) {
+ const i = n(t, e);
+ if (i) {
+ if (i.get) return v(i.get);
+ if ("function" == typeof i.value) return v(i.value);
+ }
+ t = r(t);
+ }
+ return function (t) {
+ return console.warn("fallback value for", t), null;
+ };
+ }
+ const S = o([
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "bdi",
+ "bdo",
+ "big",
+ "blink",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "content",
+ "data",
+ "datalist",
+ "dd",
+ "decorator",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "element",
+ "em",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "img",
+ "input",
+ "ins",
+ "kbd",
+ "label",
+ "legend",
+ "li",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "menu",
+ "menuitem",
+ "meter",
+ "nav",
+ "nobr",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "picture",
+ "pre",
+ "progress",
+ "q",
+ "rp",
+ "rt",
+ "ruby",
+ "s",
+ "samp",
+ "section",
+ "select",
+ "shadow",
+ "small",
+ "source",
+ "spacer",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ ]),
+ B = o([
+ "svg",
+ "a",
+ "altglyph",
+ "altglyphdef",
+ "altglyphitem",
+ "animatecolor",
+ "animatemotion",
+ "animatetransform",
+ "circle",
+ "clippath",
+ "defs",
+ "desc",
+ "ellipse",
+ "filter",
+ "font",
+ "g",
+ "glyph",
+ "glyphref",
+ "hkern",
+ "image",
+ "line",
+ "lineargradient",
+ "marker",
+ "mask",
+ "metadata",
+ "mpath",
+ "path",
+ "pattern",
+ "polygon",
+ "polyline",
+ "radialgradient",
+ "rect",
+ "stop",
+ "style",
+ "switch",
+ "symbol",
+ "text",
+ "textpath",
+ "title",
+ "tref",
+ "tspan",
+ "view",
+ "vkern",
+ ]),
+ F = o([
+ "feBlend",
+ "feColorMatrix",
+ "feComponentTransfer",
+ "feComposite",
+ "feConvolveMatrix",
+ "feDiffuseLighting",
+ "feDisplacementMap",
+ "feDistantLight",
+ "feDropShadow",
+ "feFlood",
+ "feFuncA",
+ "feFuncB",
+ "feFuncG",
+ "feFuncR",
+ "feGaussianBlur",
+ "feImage",
+ "feMerge",
+ "feMergeNode",
+ "feMorphology",
+ "feOffset",
+ "fePointLight",
+ "feSpecularLighting",
+ "feSpotLight",
+ "feTile",
+ "feTurbulence",
+ ]),
+ L = o([
+ "animate",
+ "color-profile",
+ "cursor",
+ "discard",
+ "font-face",
+ "font-face-format",
+ "font-face-name",
+ "font-face-src",
+ "font-face-uri",
+ "foreignobject",
+ "hatch",
+ "hatchpath",
+ "mesh",
+ "meshgradient",
+ "meshpatch",
+ "meshrow",
+ "missing-glyph",
+ "script",
+ "set",
+ "solidcolor",
+ "unknown",
+ "use",
+ ]),
+ M = o([
+ "math",
+ "menclose",
+ "merror",
+ "mfenced",
+ "mfrac",
+ "mglyph",
+ "mi",
+ "mlabeledtr",
+ "mmultiscripts",
+ "mn",
+ "mo",
+ "mover",
+ "mpadded",
+ "mphantom",
+ "mroot",
+ "mrow",
+ "ms",
+ "mspace",
+ "msqrt",
+ "mstyle",
+ "msub",
+ "msup",
+ "msubsup",
+ "mtable",
+ "mtd",
+ "mtext",
+ "mtr",
+ "munder",
+ "munderover",
+ "mprescripts",
+ ]),
+ A = o([
+ "maction",
+ "maligngroup",
+ "malignmark",
+ "mlongdiv",
+ "mscarries",
+ "mscarry",
+ "msgroup",
+ "mstack",
+ "msline",
+ "msrow",
+ "semantics",
+ "annotation",
+ "annotation-xml",
+ "mprescripts",
+ "none",
+ ]),
+ E = o(["#text"]),
+ Z = o([
+ "accept",
+ "action",
+ "align",
+ "alt",
+ "autocapitalize",
+ "autocomplete",
+ "autopictureinpicture",
+ "autoplay",
+ "background",
+ "bgcolor",
+ "border",
+ "capture",
+ "cellpadding",
+ "cellspacing",
+ "checked",
+ "cite",
+ "class",
+ "clear",
+ "color",
+ "cols",
+ "colspan",
+ "controls",
+ "controlslist",
+ "coords",
+ "crossorigin",
+ "datetime",
+ "decoding",
+ "default",
+ "dir",
+ "disabled",
+ "disablepictureinpicture",
+ "disableremoteplayback",
+ "download",
+ "draggable",
+ "enctype",
+ "enterkeyhint",
+ "face",
+ "for",
+ "headers",
+ "height",
+ "hidden",
+ "high",
+ "href",
+ "hreflang",
+ "id",
+ "inputmode",
+ "integrity",
+ "ismap",
+ "kind",
+ "label",
+ "lang",
+ "list",
+ "loading",
+ "loop",
+ "low",
+ "max",
+ "maxlength",
+ "media",
+ "method",
+ "min",
+ "minlength",
+ "multiple",
+ "muted",
+ "name",
+ "nonce",
+ "noshade",
+ "novalidate",
+ "nowrap",
+ "open",
+ "optimum",
+ "pattern",
+ "placeholder",
+ "playsinline",
+ "poster",
+ "preload",
+ "pubdate",
+ "radiogroup",
+ "readonly",
+ "rel",
+ "required",
+ "rev",
+ "reversed",
+ "role",
+ "rows",
+ "rowspan",
+ "spellcheck",
+ "scope",
+ "selected",
+ "shape",
+ "size",
+ "sizes",
+ "span",
+ "srclang",
+ "start",
+ "src",
+ "srcset",
+ "step",
+ "style",
+ "summary",
+ "tabindex",
+ "title",
+ "translate",
+ "type",
+ "usemap",
+ "valign",
+ "value",
+ "width",
+ "xmlns",
+ "slot",
+ ]),
+ O = o([
+ "accent-height",
+ "accumulate",
+ "additive",
+ "alignment-baseline",
+ "ascent",
+ "attributename",
+ "attributetype",
+ "azimuth",
+ "basefrequency",
+ "baseline-shift",
+ "begin",
+ "bias",
+ "by",
+ "class",
+ "clip",
+ "clippathunits",
+ "clip-path",
+ "clip-rule",
+ "color",
+ "color-interpolation",
+ "color-interpolation-filters",
+ "color-profile",
+ "color-rendering",
+ "cx",
+ "cy",
+ "d",
+ "dx",
+ "dy",
+ "diffuseconstant",
+ "direction",
+ "display",
+ "divisor",
+ "dur",
+ "edgemode",
+ "elevation",
+ "end",
+ "fill",
+ "fill-opacity",
+ "fill-rule",
+ "filter",
+ "filterunits",
+ "flood-color",
+ "flood-opacity",
+ "font-family",
+ "font-size",
+ "font-size-adjust",
+ "font-stretch",
+ "font-style",
+ "font-variant",
+ "font-weight",
+ "fx",
+ "fy",
+ "g1",
+ "g2",
+ "glyph-name",
+ "glyphref",
+ "gradientunits",
+ "gradienttransform",
+ "height",
+ "href",
+ "id",
+ "image-rendering",
+ "in",
+ "in2",
+ "k",
+ "k1",
+ "k2",
+ "k3",
+ "k4",
+ "kerning",
+ "keypoints",
+ "keysplines",
+ "keytimes",
+ "lang",
+ "lengthadjust",
+ "letter-spacing",
+ "kernelmatrix",
+ "kernelunitlength",
+ "lighting-color",
+ "local",
+ "marker-end",
+ "marker-mid",
+ "marker-start",
+ "markerheight",
+ "markerunits",
+ "markerwidth",
+ "maskcontentunits",
+ "maskunits",
+ "max",
+ "mask",
+ "media",
+ "method",
+ "mode",
+ "min",
+ "name",
+ "numoctaves",
+ "offset",
+ "operator",
+ "opacity",
+ "order",
+ "orient",
+ "orientation",
+ "origin",
+ "overflow",
+ "paint-order",
+ "path",
+ "pathlength",
+ "patterncontentunits",
+ "patterntransform",
+ "patternunits",
+ "points",
+ "preservealpha",
+ "preserveaspectratio",
+ "primitiveunits",
+ "r",
+ "rx",
+ "ry",
+ "radius",
+ "refx",
+ "refy",
+ "repeatcount",
+ "repeatdur",
+ "restart",
+ "result",
+ "rotate",
+ "scale",
+ "seed",
+ "shape-rendering",
+ "specularconstant",
+ "specularexponent",
+ "spreadmethod",
+ "startoffset",
+ "stddeviation",
+ "stitchtiles",
+ "stop-color",
+ "stop-opacity",
+ "stroke-dasharray",
+ "stroke-dashoffset",
+ "stroke-linecap",
+ "stroke-linejoin",
+ "stroke-miterlimit",
+ "stroke-opacity",
+ "stroke",
+ "stroke-width",
+ "style",
+ "surfacescale",
+ "systemlanguage",
+ "tabindex",
+ "targetx",
+ "targety",
+ "transform",
+ "transform-origin",
+ "text-anchor",
+ "text-decoration",
+ "text-rendering",
+ "textlength",
+ "type",
+ "u1",
+ "u2",
+ "unicode",
+ "values",
+ "viewbox",
+ "visibility",
+ "version",
+ "vert-adv-y",
+ "vert-origin-x",
+ "vert-origin-y",
+ "width",
+ "word-spacing",
+ "wrap",
+ "writing-mode",
+ "xchannelselector",
+ "ychannelselector",
+ "x",
+ "x1",
+ "x2",
+ "xmlns",
+ "y",
+ "y1",
+ "y2",
+ "z",
+ "zoomandpan",
+ ]),
+ q = o([
+ "accent",
+ "accentunder",
+ "align",
+ "bevelled",
+ "close",
+ "columnsalign",
+ "columnlines",
+ "columnspan",
+ "denomalign",
+ "depth",
+ "dir",
+ "display",
+ "displaystyle",
+ "encoding",
+ "fence",
+ "frame",
+ "height",
+ "href",
+ "id",
+ "largeop",
+ "length",
+ "linethickness",
+ "lspace",
+ "lquote",
+ "mathbackground",
+ "mathcolor",
+ "mathsize",
+ "mathvariant",
+ "maxsize",
+ "minsize",
+ "movablelimits",
+ "notation",
+ "numalign",
+ "open",
+ "rowalign",
+ "rowlines",
+ "rowspacing",
+ "rowspan",
+ "rspace",
+ "rquote",
+ "scriptlevel",
+ "scriptminsize",
+ "scriptsizemultiplier",
+ "selection",
+ "separator",
+ "separators",
+ "stretchy",
+ "subscriptshift",
+ "supscriptshift",
+ "symmetric",
+ "voffset",
+ "width",
+ "xmlns",
+ ]),
+ I = o(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
+ N = a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),
+ D = a(/<%[\w\W]*|[\w\W]*%>/gm),
+ $ = a(/\${[\w\W]*}/gm),
+ z = a(/^data-[\-\w.\u00B7-\uFFFF]/),
+ j = a(/^aria-[\-\w]+$/),
+ P = a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),
+ R = a(/^(?:\w+script|data):/i),
+ W = a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
+ U = a(/^html$/i);
+ var H = Object.freeze({
+ __proto__: null,
+ MUSTACHE_EXPR: N,
+ ERB_EXPR: D,
+ TMPLIT_EXPR: $,
+ DATA_ATTR: z,
+ ARIA_ATTR: j,
+ IS_ALLOWED_URI: P,
+ IS_SCRIPT_OR_DATA: R,
+ ATTR_WHITESPACE: W,
+ DOCTYPE_NAME: U,
+ });
+ const Y = () => ("undefined" == typeof window ? null : window);
+ return (function e() {
+ let i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Y();
+ const r = (t) => e(t);
+ if (((r.version = "3.0.5"), (r.removed = []), !i || !i.document || 9 !== i.document.nodeType)) return (r.isSupported = !1), r;
+ const n = i.document,
+ a = n.currentScript;
+ let { document: s } = i;
+ const {
+ DocumentFragment: l,
+ HTMLTemplateElement: h,
+ Node: x,
+ Element: v,
+ NodeFilter: N,
+ NamedNodeMap: D = i.NamedNodeMap || i.MozNamedAttrMap,
+ HTMLFormElement: $,
+ DOMParser: z,
+ trustedTypes: j,
+ } = i,
+ R = v.prototype,
+ W = w(R, "cloneNode"),
+ V = w(R, "nextSibling"),
+ G = w(R, "childNodes"),
+ X = w(R, "parentNode");
+ if ("function" == typeof h) {
+ const t = s.createElement("template");
+ t.content && t.content.ownerDocument && (s = t.content.ownerDocument);
+ }
+ let J,
+ Q = "";
+ const { implementation: K, createNodeIterator: tt, createDocumentFragment: et, getElementsByTagName: it } = s,
+ { importNode: rt } = n;
+ let nt = {};
+ r.isSupported = "function" == typeof t && "function" == typeof X && K && void 0 !== K.createHTMLDocument;
+ const { MUSTACHE_EXPR: ot, ERB_EXPR: at, TMPLIT_EXPR: st, DATA_ATTR: lt, ARIA_ATTR: ht, IS_SCRIPT_OR_DATA: ct, ATTR_WHITESPACE: ut } = H;
+ let { IS_ALLOWED_URI: ft } = H,
+ dt = null;
+ const pt = k({}, [...S, ...B, ...F, ...M, ...E]);
+ let gt = null;
+ const mt = k({}, [...Z, ...O, ...q, ...I]);
+ let yt = 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,
+ },
+ }),
+ ),
+ _t = null,
+ bt = null,
+ Ct = !0,
+ xt = !0,
+ vt = !1,
+ kt = !0,
+ Tt = !1,
+ wt = !1,
+ St = !1,
+ Bt = !1,
+ Ft = !1,
+ Lt = !1,
+ Mt = !1,
+ At = !0,
+ Et = !1,
+ Zt = !0,
+ Ot = !1,
+ qt = {},
+ It = null;
+ const Nt = k({}, [
+ "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",
+ ]);
+ let Dt = null;
+ const $t = k({}, ["audio", "video", "img", "source", "image", "track"]);
+ let zt = null;
+ const jt = k({}, [
+ "alt",
+ "class",
+ "for",
+ "id",
+ "label",
+ "name",
+ "pattern",
+ "placeholder",
+ "role",
+ "summary",
+ "title",
+ "value",
+ "style",
+ "xmlns",
+ ]),
+ Pt = "http://www.w3.org/1998/Math/MathML",
+ Rt = "http://www.w3.org/2000/svg",
+ Wt = "http://www.w3.org/1999/xhtml";
+ let Ut = Wt,
+ Ht = !1,
+ Yt = null;
+ const Vt = k({}, [Pt, Rt, Wt], p);
+ let Gt;
+ const Xt = ["application/xhtml+xml", "text/html"];
+ let Jt,
+ Qt = null;
+ const Kt = s.createElement("form"),
+ te = function (t) {
+ return t instanceof RegExp || t instanceof Function;
+ },
+ ee = function (t) {
+ if (!Qt || Qt !== t) {
+ if (
+ ((t && "object" == typeof t) || (t = {}),
+ (t = T(t)),
+ (Gt = Gt = -1 === Xt.indexOf(t.PARSER_MEDIA_TYPE) ? "text/html" : t.PARSER_MEDIA_TYPE),
+ (Jt = "application/xhtml+xml" === Gt ? p : d),
+ (dt = "ALLOWED_TAGS" in t ? k({}, t.ALLOWED_TAGS, Jt) : pt),
+ (gt = "ALLOWED_ATTR" in t ? k({}, t.ALLOWED_ATTR, Jt) : mt),
+ (Yt = "ALLOWED_NAMESPACES" in t ? k({}, t.ALLOWED_NAMESPACES, p) : Vt),
+ (zt = "ADD_URI_SAFE_ATTR" in t ? k(T(jt), t.ADD_URI_SAFE_ATTR, Jt) : jt),
+ (Dt = "ADD_DATA_URI_TAGS" in t ? k(T($t), t.ADD_DATA_URI_TAGS, Jt) : $t),
+ (It = "FORBID_CONTENTS" in t ? k({}, t.FORBID_CONTENTS, Jt) : Nt),
+ (_t = "FORBID_TAGS" in t ? k({}, t.FORBID_TAGS, Jt) : {}),
+ (bt = "FORBID_ATTR" in t ? k({}, t.FORBID_ATTR, Jt) : {}),
+ (qt = "USE_PROFILES" in t && t.USE_PROFILES),
+ (Ct = !1 !== t.ALLOW_ARIA_ATTR),
+ (xt = !1 !== t.ALLOW_DATA_ATTR),
+ (vt = t.ALLOW_UNKNOWN_PROTOCOLS || !1),
+ (kt = !1 !== t.ALLOW_SELF_CLOSE_IN_ATTR),
+ (Tt = t.SAFE_FOR_TEMPLATES || !1),
+ (wt = t.WHOLE_DOCUMENT || !1),
+ (Ft = t.RETURN_DOM || !1),
+ (Lt = t.RETURN_DOM_FRAGMENT || !1),
+ (Mt = t.RETURN_TRUSTED_TYPE || !1),
+ (Bt = t.FORCE_BODY || !1),
+ (At = !1 !== t.SANITIZE_DOM),
+ (Et = t.SANITIZE_NAMED_PROPS || !1),
+ (Zt = !1 !== t.KEEP_CONTENT),
+ (Ot = t.IN_PLACE || !1),
+ (ft = t.ALLOWED_URI_REGEXP || P),
+ (Ut = t.NAMESPACE || Wt),
+ (yt = t.CUSTOM_ELEMENT_HANDLING || {}),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ te(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck) &&
+ (yt.tagNameCheck = t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ te(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) &&
+ (yt.attributeNameCheck = t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
+ t.CUSTOM_ELEMENT_HANDLING &&
+ "boolean" == typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&
+ (yt.allowCustomizedBuiltInElements = t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
+ Tt && (xt = !1),
+ Lt && (Ft = !0),
+ qt &&
+ ((dt = k({}, [...E])),
+ (gt = []),
+ !0 === qt.html && (k(dt, S), k(gt, Z)),
+ !0 === qt.svg && (k(dt, B), k(gt, O), k(gt, I)),
+ !0 === qt.svgFilters && (k(dt, F), k(gt, O), k(gt, I)),
+ !0 === qt.mathMl && (k(dt, M), k(gt, q), k(gt, I))),
+ t.ADD_TAGS && (dt === pt && (dt = T(dt)), k(dt, t.ADD_TAGS, Jt)),
+ t.ADD_ATTR && (gt === mt && (gt = T(gt)), k(gt, t.ADD_ATTR, Jt)),
+ t.ADD_URI_SAFE_ATTR && k(zt, t.ADD_URI_SAFE_ATTR, Jt),
+ t.FORBID_CONTENTS && (It === Nt && (It = T(It)), k(It, t.FORBID_CONTENTS, Jt)),
+ Zt && (dt["#text"] = !0),
+ wt && k(dt, ["html", "head", "body"]),
+ dt.table && (k(dt, ["tbody"]), delete _t.tbody),
+ t.TRUSTED_TYPES_POLICY)
+ ) {
+ if ("function" != typeof t.TRUSTED_TYPES_POLICY.createHTML)
+ throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
+ if ("function" != typeof t.TRUSTED_TYPES_POLICY.createScriptURL)
+ throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
+ (J = t.TRUSTED_TYPES_POLICY), (Q = J.createHTML(""));
+ } else
+ void 0 === J &&
+ (J = (function (t, e) {
+ if ("object" != typeof t || "function" != typeof t.createPolicy) return null;
+ let i = null;
+ const r = "data-tt-policy-suffix";
+ e && e.hasAttribute(r) && (i = e.getAttribute(r));
+ const n = "dompurify" + (i ? "#" + i : "");
+ try {
+ return t.createPolicy(n, {
+ createHTML(t) {
+ return t;
+ },
+ createScriptURL(t) {
+ return t;
+ },
+ });
+ } catch (t) {
+ return console.warn("TrustedTypes policy " + n + " could not be created."), null;
+ }
+ })(j, a)),
+ null !== J && "string" == typeof Q && (Q = J.createHTML(""));
+ o && o(t), (Qt = t);
+ }
+ },
+ ie = k({}, ["mi", "mo", "mn", "ms", "mtext"]),
+ re = k({}, ["foreignobject", "desc", "title", "annotation-xml"]),
+ ne = k({}, ["title", "style", "font", "a", "script"]),
+ oe = k({}, B);
+ k(oe, F), k(oe, L);
+ const ae = k({}, M);
+ k(ae, A);
+ const se = function (t) {
+ f(r.removed, { element: t });
+ try {
+ t.parentNode.removeChild(t);
+ } catch (e) {
+ t.remove();
+ }
+ },
+ le = function (t, e) {
+ try {
+ f(r.removed, { attribute: e.getAttributeNode(t), from: e });
+ } catch (t) {
+ f(r.removed, { attribute: null, from: e });
+ }
+ if ((e.removeAttribute(t), "is" === t && !gt[t]))
+ if (Ft || Lt)
+ try {
+ se(e);
+ } catch (t) {}
+ else
+ try {
+ e.setAttribute(t, "");
+ } catch (t) {}
+ },
+ he = function (t) {
+ let e, i;
+ if (Bt) t = " " + t;
+ else {
+ const e = g(t, /^[\r\n\t ]+/);
+ i = e && e[0];
+ }
+ "application/xhtml+xml" === Gt &&
+ Ut === Wt &&
+ (t = '