diff --git a/.git.backup/COMMIT_EDITMSG b/.git.backup/COMMIT_EDITMSG new file mode 100644 index 0000000..062c3ab --- /dev/null +++ b/.git.backup/COMMIT_EDITMSG @@ -0,0 +1 @@ +published: 2026-08-23 19:35:19 diff --git a/.git.backup/FETCH_HEAD b/.git.backup/FETCH_HEAD new file mode 100644 index 0000000..40d2f0c --- /dev/null +++ b/.git.backup/FETCH_HEAD @@ -0,0 +1 @@ +9185d8f4878401ef685ad3597a4dd49bad1e437a branch 'main' of https://github.com/FeydakinJedi/vaardspace-notes diff --git a/.git.backup/HEAD b/.git.backup/HEAD new file mode 100644 index 0000000..b870d82 --- /dev/null +++ b/.git.backup/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/.git.backup/ORIG_HEAD b/.git.backup/ORIG_HEAD new file mode 100644 index 0000000..304e42e --- /dev/null +++ b/.git.backup/ORIG_HEAD @@ -0,0 +1 @@ +9185d8f4878401ef685ad3597a4dd49bad1e437a diff --git a/.git.backup/config b/.git.backup/config new file mode 100644 index 0000000..2a3f80a --- /dev/null +++ b/.git.backup/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = https://github.com/FeydakinJedi/vaardspace-notes.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "main"] + remote = origin + merge = refs/heads/main diff --git a/.git.backup/description b/.git.backup/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/.git.backup/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/.git.backup/hooks/applypatch-msg.sample b/.git.backup/hooks/applypatch-msg.sample new file mode 100755 index 0000000..a5d7b84 --- /dev/null +++ b/.git.backup/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/.git.backup/hooks/commit-msg.sample b/.git.backup/hooks/commit-msg.sample new file mode 100755 index 0000000..b58d118 --- /dev/null +++ b/.git.backup/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/.git.backup/hooks/fsmonitor-watchman.sample b/.git.backup/hooks/fsmonitor-watchman.sample new file mode 100755 index 0000000..14ed0aa --- /dev/null +++ b/.git.backup/hooks/fsmonitor-watchman.sample @@ -0,0 +1,173 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + } + my $query = <<" END"; + ["query", "$git_work_tree", { + "since": $last_update_token, + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/.git.backup/hooks/post-update.sample b/.git.backup/hooks/post-update.sample new file mode 100755 index 0000000..ec17ec1 --- /dev/null +++ b/.git.backup/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/.git.backup/hooks/pre-applypatch.sample b/.git.backup/hooks/pre-applypatch.sample new file mode 100755 index 0000000..4142082 --- /dev/null +++ b/.git.backup/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/.git.backup/hooks/pre-commit.sample b/.git.backup/hooks/pre-commit.sample new file mode 100755 index 0000000..e144712 --- /dev/null +++ b/.git.backup/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/.git.backup/hooks/pre-merge-commit.sample b/.git.backup/hooks/pre-merge-commit.sample new file mode 100755 index 0000000..399eab1 --- /dev/null +++ b/.git.backup/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/.git.backup/hooks/pre-push.sample b/.git.backup/hooks/pre-push.sample new file mode 100755 index 0000000..4ce688d --- /dev/null +++ b/.git.backup/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/.git.backup/hooks/pre-rebase.sample b/.git.backup/hooks/pre-rebase.sample new file mode 100755 index 0000000..6cbef5c --- /dev/null +++ b/.git.backup/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/.git.backup/hooks/pre-receive.sample b/.git.backup/hooks/pre-receive.sample new file mode 100755 index 0000000..a1fd29e --- /dev/null +++ b/.git.backup/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/.git.backup/hooks/prepare-commit-msg.sample b/.git.backup/hooks/prepare-commit-msg.sample new file mode 100755 index 0000000..10fa14c --- /dev/null +++ b/.git.backup/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/.git.backup/hooks/push-to-checkout.sample b/.git.backup/hooks/push-to-checkout.sample new file mode 100755 index 0000000..af5a0c0 --- /dev/null +++ b/.git.backup/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/.git.backup/index b/.git.backup/index new file mode 100644 index 0000000..0616f32 Binary files /dev/null and b/.git.backup/index differ diff --git a/.git.backup/info/exclude b/.git.backup/info/exclude new file mode 100644 index 0000000..db9bf84 --- /dev/null +++ b/.git.backup/info/exclude @@ -0,0 +1,7 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ +.obsidian/plugins/obsidian-git/obsidian_askpass.sh diff --git a/.git.backup/logs/HEAD b/.git.backup/logs/HEAD new file mode 100644 index 0000000..b493555 --- /dev/null +++ b/.git.backup/logs/HEAD @@ -0,0 +1,37 @@ +0000000000000000000000000000000000000000 8593dd4e34b72289144c21208204b9ffb30b0e4e FeydakinJedi 1772682654 -0500 commit (initial): Refactored to Obsidian vault +8593dd4e34b72289144c21208204b9ffb30b0e4e 0000000000000000000000000000000000000000 FeydakinJedi 1772682659 -0500 Branch: renamed refs/heads/main to refs/heads/main +8593dd4e34b72289144c21208204b9ffb30b0e4e 8593dd4e34b72289144c21208204b9ffb30b0e4e FeydakinJedi 1772682659 -0500 Branch: renamed refs/heads/main to refs/heads/main +8593dd4e34b72289144c21208204b9ffb30b0e4e 060863b87533569fe9b5c803f723cd9227e8a95e FeydakinJedi 1772682751 -0500 commit: flatboard 2026-3-4:22:52:31 +060863b87533569fe9b5c803f723cd9227e8a95e 401af458ce7a361461f154364b7a7aeac6980dae FeydakinJedi 1772683261 -0500 commit: flatboard 2026-3-4:23:1:1 +401af458ce7a361461f154364b7a7aeac6980dae 03db23eaa1b6d570b09bc794b8c28c0def59210e FeydakinJedi 1772731144 -0500 pull origin main --no-rebase: Merge made by the 'ort' strategy. +03db23eaa1b6d570b09bc794b8c28c0def59210e 0456b80f18a105dc50becf7466351a6c8f674672 FeydakinJedi 1773419530 -0400 commit: vault backup: 2026-03-13 12:32:10 +0456b80f18a105dc50becf7466351a6c8f674672 cb6172dde3821ba1604f0e9d9085fd5bec393fcd FeydakinJedi 1773419536 -0400 merge origin/main: Merge made by the 'ort' strategy. +cb6172dde3821ba1604f0e9d9085fd5bec393fcd ff23fb450cb94db9a985144988467c7289d24057 FeydakinJedi 1773593712 -0400 commit: vault backup: 2026-03-15 12:55:11 +ff23fb450cb94db9a985144988467c7289d24057 bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 FeydakinJedi 1773593715 -0400 merge origin/main: Merge made by the 'ort' strategy. +bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 b38f4662546af41e71582e22ebf3fe179b65fc3c FeydakinJedi 1773623810 -0400 commit: vault backup: 2026-03-15 21:16:50 +b38f4662546af41e71582e22ebf3fe179b65fc3c cb30171c0e1880d2cc7b3625f9294c7fbab6a81f FeydakinJedi 1773623813 -0400 merge origin/main: Merge made by the 'ort' strategy. +cb30171c0e1880d2cc7b3625f9294c7fbab6a81f 2b340d6e32e09ce5518e3d4fdda33192caae3375 FeydakinJedi 1773623852 -0400 commit: vault backup: 2026-03-15 21:17:32 +2b340d6e32e09ce5518e3d4fdda33192caae3375 4161d0fbd5c3d6c279b838e8f536ef99188f6d04 FeydakinJedi 1774558025 -0400 commit: vault backup: 2026-03-26 16:47:05 +4161d0fbd5c3d6c279b838e8f536ef99188f6d04 58a38a28a5479ed193cb5b32dc83e43c3d30a31b FeydakinJedi 1774558033 -0400 merge origin/main: Merge made by the 'ort' strategy. +58a38a28a5479ed193cb5b32dc83e43c3d30a31b db00edaeb72b19e4ce94970278abb7c052002bc4 FeydakinJedi 1774825445 -0400 commit: vault backup: 2026-03-29 19:04:05 +db00edaeb72b19e4ce94970278abb7c052002bc4 ad4f23addd7ee288fe225629bf9e4f006698ac7d FeydakinJedi 1775245020 -0400 commit: vault backup: 2026-04-03 15:37:00 +ad4f23addd7ee288fe225629bf9e4f006698ac7d d48a91d187e497cf90d5305c53bedd9615bf59d1 FeydakinJedi 1777469044 -0400 merge origin/main: Fast-forward +d48a91d187e497cf90d5305c53bedd9615bf59d1 eb3e0588328a3e607daf45a9a11440fd6f0d7c0c FeydakinJedi 1779288818 -0400 merge origin/main: Fast-forward +eb3e0588328a3e607daf45a9a11440fd6f0d7c0c 60473e89cc2a5518043a2e477f314427740efcba FeydakinJedi 1779288825 -0400 commit: vault backup: 2026-05-20 10:53:45 +60473e89cc2a5518043a2e477f314427740efcba fc2080d218334ce8626d0324b92dd7e4fc038b2c FeydakinJedi 1779288877 -0400 commit: vault backup: 2026-05-20 10:54:37 +fc2080d218334ce8626d0324b92dd7e4fc038b2c 184d0ca0a5cc297e42cab69cd8c956b93b6763d7 FeydakinJedi 1779289291 -0400 merge origin/main: Fast-forward +184d0ca0a5cc297e42cab69cd8c956b93b6763d7 be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 FeydakinJedi 1779309189 -0400 commit: vault backup: 2026-05-20 16:33:09 +be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 9a4704b08f32bdda72646e4dc49d4a88547a65f4 FeydakinJedi 1780772923 -0400 merge origin/main: Fast-forward +9a4704b08f32bdda72646e4dc49d4a88547a65f4 645ab5b171a41b60d29045c85df1395586b3b455 FeydakinJedi 1780773383 -0400 commit: vault backup: 2026-06-06 15:16:23 +645ab5b171a41b60d29045c85df1395586b3b455 31677e27aaec4072f97b2a0060ff1fcb97f8a189 FeydakinJedi 1780929242 -0400 commit: vault backup: 2026-06-08 10:34:02 +31677e27aaec4072f97b2a0060ff1fcb97f8a189 0999a1e6c244eb29cb4e85815ac78201a47746c9 FeydakinJedi 1780930665 -0400 commit: vault backup: 2026-06-08 10:57:45 +0999a1e6c244eb29cb4e85815ac78201a47746c9 fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 FeydakinJedi 1780931266 -0400 merge origin/main: Fast-forward +fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 1eeafc7444e77ca0face809a0be85c1eefe3340d FeydakinJedi 1781286721 -0400 merge origin/main: Fast-forward +1eeafc7444e77ca0face809a0be85c1eefe3340d 64e5a7081bf4b4312d50f75aee263f6dbff15827 FeydakinJedi 1781317787 -0400 commit: vault backup: 2026-06-12 22:29:47 +64e5a7081bf4b4312d50f75aee263f6dbff15827 01d9da3fe892b5a598052de6ae8245b74f527e4b FeydakinJedi 1781453836 -0400 merge origin/main: Fast-forward +01d9da3fe892b5a598052de6ae8245b74f527e4b 23478ffd7bb2f21d6ea04d782e79b2640f2a1739 FeydakinJedi 1781638349 -0400 merge origin/main: Fast-forward +23478ffd7bb2f21d6ea04d782e79b2640f2a1739 ca6dfae20673865f3cdb208d0683f725aa0845e2 FeydakinJedi 1781638491 -0400 commit: vault backup: 2026-06-16 15:34:51 +ca6dfae20673865f3cdb208d0683f725aa0845e2 2609e44107c591b433ef9b26b359fb865c4dc7ab FeydakinJedi 1782394271 -0400 merge origin/main: Fast-forward +2609e44107c591b433ef9b26b359fb865c4dc7ab 790dff500a859387e9b036ca53e1e261e2379c67 FeydakinJedi 1782394278 -0400 commit: vault backup: 2026-06-25 09:31:18 +790dff500a859387e9b036ca53e1e261e2379c67 9185d8f4878401ef685ad3597a4dd49bad1e437a FeydakinJedi 1782397268 -0400 commit: vault backup: 2026-06-25 10:21:08 +9185d8f4878401ef685ad3597a4dd49bad1e437a 6d3e14242df21290c720461d91dc88f8ca2f13be FeydakinJedi 1787528119 -0400 commit: published: 2026-08-23 19:35:19 diff --git a/.git.backup/logs/refs/heads/main b/.git.backup/logs/refs/heads/main new file mode 100644 index 0000000..7d28e79 --- /dev/null +++ b/.git.backup/logs/refs/heads/main @@ -0,0 +1,36 @@ +0000000000000000000000000000000000000000 8593dd4e34b72289144c21208204b9ffb30b0e4e FeydakinJedi 1772682654 -0500 commit (initial): Refactored to Obsidian vault +8593dd4e34b72289144c21208204b9ffb30b0e4e 8593dd4e34b72289144c21208204b9ffb30b0e4e FeydakinJedi 1772682659 -0500 Branch: renamed refs/heads/main to refs/heads/main +8593dd4e34b72289144c21208204b9ffb30b0e4e 060863b87533569fe9b5c803f723cd9227e8a95e FeydakinJedi 1772682751 -0500 commit: flatboard 2026-3-4:22:52:31 +060863b87533569fe9b5c803f723cd9227e8a95e 401af458ce7a361461f154364b7a7aeac6980dae FeydakinJedi 1772683261 -0500 commit: flatboard 2026-3-4:23:1:1 +401af458ce7a361461f154364b7a7aeac6980dae 03db23eaa1b6d570b09bc794b8c28c0def59210e FeydakinJedi 1772731144 -0500 pull origin main --no-rebase: Merge made by the 'ort' strategy. +03db23eaa1b6d570b09bc794b8c28c0def59210e 0456b80f18a105dc50becf7466351a6c8f674672 FeydakinJedi 1773419530 -0400 commit: vault backup: 2026-03-13 12:32:10 +0456b80f18a105dc50becf7466351a6c8f674672 cb6172dde3821ba1604f0e9d9085fd5bec393fcd FeydakinJedi 1773419536 -0400 merge origin/main: Merge made by the 'ort' strategy. +cb6172dde3821ba1604f0e9d9085fd5bec393fcd ff23fb450cb94db9a985144988467c7289d24057 FeydakinJedi 1773593712 -0400 commit: vault backup: 2026-03-15 12:55:11 +ff23fb450cb94db9a985144988467c7289d24057 bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 FeydakinJedi 1773593715 -0400 merge origin/main: Merge made by the 'ort' strategy. +bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 b38f4662546af41e71582e22ebf3fe179b65fc3c FeydakinJedi 1773623810 -0400 commit: vault backup: 2026-03-15 21:16:50 +b38f4662546af41e71582e22ebf3fe179b65fc3c cb30171c0e1880d2cc7b3625f9294c7fbab6a81f FeydakinJedi 1773623813 -0400 merge origin/main: Merge made by the 'ort' strategy. +cb30171c0e1880d2cc7b3625f9294c7fbab6a81f 2b340d6e32e09ce5518e3d4fdda33192caae3375 FeydakinJedi 1773623852 -0400 commit: vault backup: 2026-03-15 21:17:32 +2b340d6e32e09ce5518e3d4fdda33192caae3375 4161d0fbd5c3d6c279b838e8f536ef99188f6d04 FeydakinJedi 1774558025 -0400 commit: vault backup: 2026-03-26 16:47:05 +4161d0fbd5c3d6c279b838e8f536ef99188f6d04 58a38a28a5479ed193cb5b32dc83e43c3d30a31b FeydakinJedi 1774558033 -0400 merge origin/main: Merge made by the 'ort' strategy. +58a38a28a5479ed193cb5b32dc83e43c3d30a31b db00edaeb72b19e4ce94970278abb7c052002bc4 FeydakinJedi 1774825445 -0400 commit: vault backup: 2026-03-29 19:04:05 +db00edaeb72b19e4ce94970278abb7c052002bc4 ad4f23addd7ee288fe225629bf9e4f006698ac7d FeydakinJedi 1775245020 -0400 commit: vault backup: 2026-04-03 15:37:00 +ad4f23addd7ee288fe225629bf9e4f006698ac7d d48a91d187e497cf90d5305c53bedd9615bf59d1 FeydakinJedi 1777469044 -0400 merge origin/main: Fast-forward +d48a91d187e497cf90d5305c53bedd9615bf59d1 eb3e0588328a3e607daf45a9a11440fd6f0d7c0c FeydakinJedi 1779288818 -0400 merge origin/main: Fast-forward +eb3e0588328a3e607daf45a9a11440fd6f0d7c0c 60473e89cc2a5518043a2e477f314427740efcba FeydakinJedi 1779288825 -0400 commit: vault backup: 2026-05-20 10:53:45 +60473e89cc2a5518043a2e477f314427740efcba fc2080d218334ce8626d0324b92dd7e4fc038b2c FeydakinJedi 1779288877 -0400 commit: vault backup: 2026-05-20 10:54:37 +fc2080d218334ce8626d0324b92dd7e4fc038b2c 184d0ca0a5cc297e42cab69cd8c956b93b6763d7 FeydakinJedi 1779289291 -0400 merge origin/main: Fast-forward +184d0ca0a5cc297e42cab69cd8c956b93b6763d7 be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 FeydakinJedi 1779309189 -0400 commit: vault backup: 2026-05-20 16:33:09 +be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 9a4704b08f32bdda72646e4dc49d4a88547a65f4 FeydakinJedi 1780772923 -0400 merge origin/main: Fast-forward +9a4704b08f32bdda72646e4dc49d4a88547a65f4 645ab5b171a41b60d29045c85df1395586b3b455 FeydakinJedi 1780773383 -0400 commit: vault backup: 2026-06-06 15:16:23 +645ab5b171a41b60d29045c85df1395586b3b455 31677e27aaec4072f97b2a0060ff1fcb97f8a189 FeydakinJedi 1780929242 -0400 commit: vault backup: 2026-06-08 10:34:02 +31677e27aaec4072f97b2a0060ff1fcb97f8a189 0999a1e6c244eb29cb4e85815ac78201a47746c9 FeydakinJedi 1780930665 -0400 commit: vault backup: 2026-06-08 10:57:45 +0999a1e6c244eb29cb4e85815ac78201a47746c9 fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 FeydakinJedi 1780931266 -0400 merge origin/main: Fast-forward +fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 1eeafc7444e77ca0face809a0be85c1eefe3340d FeydakinJedi 1781286721 -0400 merge origin/main: Fast-forward +1eeafc7444e77ca0face809a0be85c1eefe3340d 64e5a7081bf4b4312d50f75aee263f6dbff15827 FeydakinJedi 1781317787 -0400 commit: vault backup: 2026-06-12 22:29:47 +64e5a7081bf4b4312d50f75aee263f6dbff15827 01d9da3fe892b5a598052de6ae8245b74f527e4b FeydakinJedi 1781453836 -0400 merge origin/main: Fast-forward +01d9da3fe892b5a598052de6ae8245b74f527e4b 23478ffd7bb2f21d6ea04d782e79b2640f2a1739 FeydakinJedi 1781638349 -0400 merge origin/main: Fast-forward +23478ffd7bb2f21d6ea04d782e79b2640f2a1739 ca6dfae20673865f3cdb208d0683f725aa0845e2 FeydakinJedi 1781638491 -0400 commit: vault backup: 2026-06-16 15:34:51 +ca6dfae20673865f3cdb208d0683f725aa0845e2 2609e44107c591b433ef9b26b359fb865c4dc7ab FeydakinJedi 1782394271 -0400 merge origin/main: Fast-forward +2609e44107c591b433ef9b26b359fb865c4dc7ab 790dff500a859387e9b036ca53e1e261e2379c67 FeydakinJedi 1782394278 -0400 commit: vault backup: 2026-06-25 09:31:18 +790dff500a859387e9b036ca53e1e261e2379c67 9185d8f4878401ef685ad3597a4dd49bad1e437a FeydakinJedi 1782397268 -0400 commit: vault backup: 2026-06-25 10:21:08 +9185d8f4878401ef685ad3597a4dd49bad1e437a 6d3e14242df21290c720461d91dc88f8ca2f13be FeydakinJedi 1787528119 -0400 commit: published: 2026-08-23 19:35:19 diff --git a/.git.backup/logs/refs/remotes/origin/main b/.git.backup/logs/refs/remotes/origin/main new file mode 100644 index 0000000..25adf5b --- /dev/null +++ b/.git.backup/logs/refs/remotes/origin/main @@ -0,0 +1,32 @@ +0000000000000000000000000000000000000000 b506890214c679a0b76cd5add7d0bf4df01e7c60 FeydakinJedi 1772731142 -0500 fetch: storing head +b506890214c679a0b76cd5add7d0bf4df01e7c60 5cbb885ad825665487c8810ec61816ac7cd6314a FeydakinJedi 1773419534 -0400 fetch origin: fast-forward +5cbb885ad825665487c8810ec61816ac7cd6314a cb6172dde3821ba1604f0e9d9085fd5bec393fcd FeydakinJedi 1773419537 -0400 update by push +cb6172dde3821ba1604f0e9d9085fd5bec393fcd 2379aeb89d6c2bb614849c916421d76d962d24fc FeydakinJedi 1773593715 -0400 fetch: fast-forward +2379aeb89d6c2bb614849c916421d76d962d24fc bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 FeydakinJedi 1773593719 -0400 update by push +bb86ca92e9039ef55ed7c4c72a01c2ad49f1b323 edd571e1b4f8ae88e2f7de584526445442002da4 FeydakinJedi 1773623813 -0400 fetch: fast-forward +edd571e1b4f8ae88e2f7de584526445442002da4 cb30171c0e1880d2cc7b3625f9294c7fbab6a81f FeydakinJedi 1773623815 -0400 update by push +cb30171c0e1880d2cc7b3625f9294c7fbab6a81f 2b340d6e32e09ce5518e3d4fdda33192caae3375 FeydakinJedi 1773623857 -0400 update by push +2b340d6e32e09ce5518e3d4fdda33192caae3375 e2ff9040219cc480743a0dc304775d79e1c52f99 FeydakinJedi 1774558033 -0400 fetch: fast-forward +e2ff9040219cc480743a0dc304775d79e1c52f99 58a38a28a5479ed193cb5b32dc83e43c3d30a31b FeydakinJedi 1774558037 -0400 update by push +58a38a28a5479ed193cb5b32dc83e43c3d30a31b db00edaeb72b19e4ce94970278abb7c052002bc4 FeydakinJedi 1774825447 -0400 update by push +db00edaeb72b19e4ce94970278abb7c052002bc4 ad4f23addd7ee288fe225629bf9e4f006698ac7d FeydakinJedi 1775245030 -0400 update by push +ad4f23addd7ee288fe225629bf9e4f006698ac7d d48a91d187e497cf90d5305c53bedd9615bf59d1 FeydakinJedi 1777469044 -0400 fetch: fast-forward +d48a91d187e497cf90d5305c53bedd9615bf59d1 eb3e0588328a3e607daf45a9a11440fd6f0d7c0c FeydakinJedi 1779288818 -0400 fetch: fast-forward +eb3e0588328a3e607daf45a9a11440fd6f0d7c0c 60473e89cc2a5518043a2e477f314427740efcba FeydakinJedi 1779288831 -0400 update by push +60473e89cc2a5518043a2e477f314427740efcba fc2080d218334ce8626d0324b92dd7e4fc038b2c FeydakinJedi 1779288881 -0400 update by push +fc2080d218334ce8626d0324b92dd7e4fc038b2c 184d0ca0a5cc297e42cab69cd8c956b93b6763d7 FeydakinJedi 1779289291 -0400 fetch: fast-forward +184d0ca0a5cc297e42cab69cd8c956b93b6763d7 be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 FeydakinJedi 1779309200 -0400 update by push +be4a16644f914f2f7eed1b96ac17ae469a0c3fa6 9a4704b08f32bdda72646e4dc49d4a88547a65f4 FeydakinJedi 1780772923 -0400 fetch: fast-forward +9a4704b08f32bdda72646e4dc49d4a88547a65f4 645ab5b171a41b60d29045c85df1395586b3b455 FeydakinJedi 1780773385 -0400 update by push +645ab5b171a41b60d29045c85df1395586b3b455 31677e27aaec4072f97b2a0060ff1fcb97f8a189 FeydakinJedi 1780929256 -0400 update by push +31677e27aaec4072f97b2a0060ff1fcb97f8a189 0999a1e6c244eb29cb4e85815ac78201a47746c9 FeydakinJedi 1780930679 -0400 update by push +0999a1e6c244eb29cb4e85815ac78201a47746c9 fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 FeydakinJedi 1780931266 -0400 fetch: fast-forward +fd36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 1eeafc7444e77ca0face809a0be85c1eefe3340d FeydakinJedi 1781286720 -0400 fetch: fast-forward +1eeafc7444e77ca0face809a0be85c1eefe3340d 64e5a7081bf4b4312d50f75aee263f6dbff15827 FeydakinJedi 1781317795 -0400 update by push +64e5a7081bf4b4312d50f75aee263f6dbff15827 01d9da3fe892b5a598052de6ae8245b74f527e4b FeydakinJedi 1781453836 -0400 fetch: fast-forward +01d9da3fe892b5a598052de6ae8245b74f527e4b 23478ffd7bb2f21d6ea04d782e79b2640f2a1739 FeydakinJedi 1781638349 -0400 fetch: fast-forward +23478ffd7bb2f21d6ea04d782e79b2640f2a1739 ca6dfae20673865f3cdb208d0683f725aa0845e2 FeydakinJedi 1781638494 -0400 update by push +ca6dfae20673865f3cdb208d0683f725aa0845e2 2609e44107c591b433ef9b26b359fb865c4dc7ab FeydakinJedi 1782394271 -0400 fetch: fast-forward +2609e44107c591b433ef9b26b359fb865c4dc7ab 790dff500a859387e9b036ca53e1e261e2379c67 FeydakinJedi 1782394283 -0400 update by push +790dff500a859387e9b036ca53e1e261e2379c67 9185d8f4878401ef685ad3597a4dd49bad1e437a FeydakinJedi 1782397272 -0400 update by push +9185d8f4878401ef685ad3597a4dd49bad1e437a 6d3e14242df21290c720461d91dc88f8ca2f13be FeydakinJedi 1787528121 -0400 update by push diff --git a/.git.backup/objects/00/2188b3d2dbe4f77766dffc66fd4116ecd354fa b/.git.backup/objects/00/2188b3d2dbe4f77766dffc66fd4116ecd354fa new file mode 100644 index 0000000..65a31f6 Binary files /dev/null and b/.git.backup/objects/00/2188b3d2dbe4f77766dffc66fd4116ecd354fa differ diff --git a/.git.backup/objects/00/3136ef4384d6b5864f7eb15ba4c78ae1696fd0 b/.git.backup/objects/00/3136ef4384d6b5864f7eb15ba4c78ae1696fd0 new file mode 100644 index 0000000..8fc65d3 Binary files /dev/null and b/.git.backup/objects/00/3136ef4384d6b5864f7eb15ba4c78ae1696fd0 differ diff --git a/.git.backup/objects/00/a99bf7368f28d85dfe76306a17c800c94deb0e b/.git.backup/objects/00/a99bf7368f28d85dfe76306a17c800c94deb0e new file mode 100644 index 0000000..5b95276 Binary files /dev/null and b/.git.backup/objects/00/a99bf7368f28d85dfe76306a17c800c94deb0e differ diff --git a/.git.backup/objects/01/5fe29bc850ec7db65bff94006202faf6b1cbcc b/.git.backup/objects/01/5fe29bc850ec7db65bff94006202faf6b1cbcc new file mode 100644 index 0000000..31bc483 Binary files /dev/null and b/.git.backup/objects/01/5fe29bc850ec7db65bff94006202faf6b1cbcc differ diff --git a/.git.backup/objects/01/cd351acbba257066631251c9ad0c7cfd0c26e7 b/.git.backup/objects/01/cd351acbba257066631251c9ad0c7cfd0c26e7 new file mode 100644 index 0000000..6a867c6 Binary files /dev/null and b/.git.backup/objects/01/cd351acbba257066631251c9ad0c7cfd0c26e7 differ diff --git a/.git.backup/objects/01/d9da3fe892b5a598052de6ae8245b74f527e4b b/.git.backup/objects/01/d9da3fe892b5a598052de6ae8245b74f527e4b new file mode 100644 index 0000000..f0e0d68 Binary files /dev/null and b/.git.backup/objects/01/d9da3fe892b5a598052de6ae8245b74f527e4b differ diff --git a/.git.backup/objects/02/6ae8cc6492882b388f27cd665b3810e964b529 b/.git.backup/objects/02/6ae8cc6492882b388f27cd665b3810e964b529 new file mode 100644 index 0000000..64964b3 Binary files /dev/null and b/.git.backup/objects/02/6ae8cc6492882b388f27cd665b3810e964b529 differ diff --git a/.git.backup/objects/03/4061b8f9b380ed7ff5dde30dcdc9ddc5062ac8 b/.git.backup/objects/03/4061b8f9b380ed7ff5dde30dcdc9ddc5062ac8 new file mode 100644 index 0000000..47d5c32 Binary files /dev/null and b/.git.backup/objects/03/4061b8f9b380ed7ff5dde30dcdc9ddc5062ac8 differ diff --git a/.git.backup/objects/03/6e98c45d22c352e3588d74a0b13edbd21249eb b/.git.backup/objects/03/6e98c45d22c352e3588d74a0b13edbd21249eb new file mode 100644 index 0000000..e4ca95d Binary files /dev/null and b/.git.backup/objects/03/6e98c45d22c352e3588d74a0b13edbd21249eb differ diff --git a/.git.backup/objects/03/db23eaa1b6d570b09bc794b8c28c0def59210e b/.git.backup/objects/03/db23eaa1b6d570b09bc794b8c28c0def59210e new file mode 100644 index 0000000..2923f1e --- /dev/null +++ b/.git.backup/objects/03/db23eaa1b6d570b09bc794b8c28c0def59210e @@ -0,0 +1,4 @@ +x��;NÅ0E©³ +w¯zd&þ%!* +$1�“âDŽ»ÇHԴWçþx߶µ*­á®eœa€,PB +(I{°Ñ8ÀA²†�°î*’«2€”ŒYBH&&@ñ젣[]ö¢^ä+Òûš_%®ê‘8fÀçy£õãž÷íI¡÷ƒ׈ƨk ]Sۡ*ÿ°voRfQ¡PæE]ZI¾¨=©¥Öã|èûy­Ë-üôögõŸD%ž±\ó^åì¾ڻh \ No newline at end of file diff --git a/.git.backup/objects/04/56b80f18a105dc50becf7466351a6c8f674672 b/.git.backup/objects/04/56b80f18a105dc50becf7466351a6c8f674672 new file mode 100644 index 0000000..1f09f24 --- /dev/null +++ b/.git.backup/objects/04/56b80f18a105dc50becf7466351a6c8f674672 @@ -0,0 +1,2 @@ +x�ÎMjÃ0@á®u +]ÀefôoB骋Þb4µ&±ŒÈí›3tûàƒ'ûº.Ò÷oãPµÂ"%Poم„µúbŞ¥*Ĺ'�A5š;º ®Urʌ5¶� B©’НY( 4í¡‚>Çï~Ø/}6¾.۷¶Å^XÚøù³òr{—}ý°˜’óX‚;�0¯úúj|ކ­,×ó>[Џ �EšÍæ}xJ‰ \ No newline at end of file diff --git a/.git.backup/objects/04/f062bd68712fea04d7ac3df75267941318d104 b/.git.backup/objects/04/f062bd68712fea04d7ac3df75267941318d104 new file mode 100644 index 0000000..9275dd8 Binary files /dev/null and b/.git.backup/objects/04/f062bd68712fea04d7ac3df75267941318d104 differ diff --git a/.git.backup/objects/05/31e7634036619bdb58088136c2f777e8e48e7c b/.git.backup/objects/05/31e7634036619bdb58088136c2f777e8e48e7c new file mode 100644 index 0000000..0f27556 Binary files /dev/null and b/.git.backup/objects/05/31e7634036619bdb58088136c2f777e8e48e7c differ diff --git a/.git.backup/objects/05/4d564a3120efd3c7a49dbc9f2967f79f66cd9f b/.git.backup/objects/05/4d564a3120efd3c7a49dbc9f2967f79f66cd9f new file mode 100644 index 0000000..4f806ee Binary files /dev/null and b/.git.backup/objects/05/4d564a3120efd3c7a49dbc9f2967f79f66cd9f differ diff --git a/.git.backup/objects/05/5f1c08ef3550029de9f37a2029e468d4cb16e3 b/.git.backup/objects/05/5f1c08ef3550029de9f37a2029e468d4cb16e3 new file mode 100644 index 0000000..e260ad0 Binary files /dev/null and b/.git.backup/objects/05/5f1c08ef3550029de9f37a2029e468d4cb16e3 differ diff --git a/.git.backup/objects/05/6b866c88f6fe2db0bd7863ad6ad6859b640f4f b/.git.backup/objects/05/6b866c88f6fe2db0bd7863ad6ad6859b640f4f new file mode 100644 index 0000000..5ff49a0 Binary files /dev/null and b/.git.backup/objects/05/6b866c88f6fe2db0bd7863ad6ad6859b640f4f differ diff --git a/.git.backup/objects/05/bec993445444cc45090f50a0ef43cb21ff0b3e b/.git.backup/objects/05/bec993445444cc45090f50a0ef43cb21ff0b3e new file mode 100644 index 0000000..c7d6584 Binary files /dev/null and b/.git.backup/objects/05/bec993445444cc45090f50a0ef43cb21ff0b3e differ diff --git a/.git.backup/objects/06/0863b87533569fe9b5c803f723cd9227e8a95e b/.git.backup/objects/06/0863b87533569fe9b5c803f723cd9227e8a95e new file mode 100644 index 0000000..d68f9c7 Binary files /dev/null and b/.git.backup/objects/06/0863b87533569fe9b5c803f723cd9227e8a95e differ diff --git a/.git.backup/objects/06/559c231df5fd8f1f05726ad698e29bdec4f4d2 b/.git.backup/objects/06/559c231df5fd8f1f05726ad698e29bdec4f4d2 new file mode 100644 index 0000000..c2fb9c7 Binary files /dev/null and b/.git.backup/objects/06/559c231df5fd8f1f05726ad698e29bdec4f4d2 differ diff --git a/.git.backup/objects/06/c7b12d86997e0cc621d34a062e10d84e059c7b b/.git.backup/objects/06/c7b12d86997e0cc621d34a062e10d84e059c7b new file mode 100644 index 0000000..35ce988 Binary files /dev/null and b/.git.backup/objects/06/c7b12d86997e0cc621d34a062e10d84e059c7b differ diff --git a/.git.backup/objects/08/8cd5ea0a76c42c980295fad16639a2178c54aa b/.git.backup/objects/08/8cd5ea0a76c42c980295fad16639a2178c54aa new file mode 100644 index 0000000..08aa238 Binary files /dev/null and b/.git.backup/objects/08/8cd5ea0a76c42c980295fad16639a2178c54aa differ diff --git a/.git.backup/objects/09/99a1e6c244eb29cb4e85815ac78201a47746c9 b/.git.backup/objects/09/99a1e6c244eb29cb4e85815ac78201a47746c9 new file mode 100644 index 0000000..99b737d Binary files /dev/null and b/.git.backup/objects/09/99a1e6c244eb29cb4e85815ac78201a47746c9 differ diff --git a/.git.backup/objects/09/ead3caadbcb47561cb5d028d4a1910a5a3d998 b/.git.backup/objects/09/ead3caadbcb47561cb5d028d4a1910a5a3d998 new file mode 100644 index 0000000..99bec12 Binary files /dev/null and b/.git.backup/objects/09/ead3caadbcb47561cb5d028d4a1910a5a3d998 differ diff --git a/.git.backup/objects/0a/0bf26d7b73b2c1f24fd93851257d874c14f373 b/.git.backup/objects/0a/0bf26d7b73b2c1f24fd93851257d874c14f373 new file mode 100644 index 0000000..aa6bcbc Binary files /dev/null and b/.git.backup/objects/0a/0bf26d7b73b2c1f24fd93851257d874c14f373 differ diff --git a/.git.backup/objects/0a/28bcfc2beff9bddd429f874a2b1cd25cf7ac15 b/.git.backup/objects/0a/28bcfc2beff9bddd429f874a2b1cd25cf7ac15 new file mode 100644 index 0000000..2e4d928 Binary files /dev/null and b/.git.backup/objects/0a/28bcfc2beff9bddd429f874a2b1cd25cf7ac15 differ diff --git a/.git.backup/objects/0b/5a0234075c9e9d25a6d9cdbcefdbb532b68138 b/.git.backup/objects/0b/5a0234075c9e9d25a6d9cdbcefdbb532b68138 new file mode 100644 index 0000000..efc8518 Binary files /dev/null and b/.git.backup/objects/0b/5a0234075c9e9d25a6d9cdbcefdbb532b68138 differ diff --git a/.git.backup/objects/0b/5fb217c6192b916fde3d9a883bc4f6d8113d8f b/.git.backup/objects/0b/5fb217c6192b916fde3d9a883bc4f6d8113d8f new file mode 100644 index 0000000..f9ffd2a Binary files /dev/null and b/.git.backup/objects/0b/5fb217c6192b916fde3d9a883bc4f6d8113d8f differ diff --git a/.git.backup/objects/0b/60148067ee8a341c26e259bd9eba7f3734c75c b/.git.backup/objects/0b/60148067ee8a341c26e259bd9eba7f3734c75c new file mode 100644 index 0000000..6a92ef4 Binary files /dev/null and b/.git.backup/objects/0b/60148067ee8a341c26e259bd9eba7f3734c75c differ diff --git a/.git.backup/objects/0c/5ac7cd871e9a61fc10c01582839d0d878f3a6a b/.git.backup/objects/0c/5ac7cd871e9a61fc10c01582839d0d878f3a6a new file mode 100644 index 0000000..58d3a43 Binary files /dev/null and b/.git.backup/objects/0c/5ac7cd871e9a61fc10c01582839d0d878f3a6a differ diff --git a/.git.backup/objects/0c/896bdd3f7e3c6a0a4c8d53f77b245e2ad3ed7f b/.git.backup/objects/0c/896bdd3f7e3c6a0a4c8d53f77b245e2ad3ed7f new file mode 100644 index 0000000..3ab1238 Binary files /dev/null and b/.git.backup/objects/0c/896bdd3f7e3c6a0a4c8d53f77b245e2ad3ed7f differ diff --git a/.git.backup/objects/0c/b8ae9255a4dd968683e637ffb235b57938a474 b/.git.backup/objects/0c/b8ae9255a4dd968683e637ffb235b57938a474 new file mode 100644 index 0000000..aeb8687 Binary files /dev/null and b/.git.backup/objects/0c/b8ae9255a4dd968683e637ffb235b57938a474 differ diff --git a/.git.backup/objects/0d/26b575d8afae091aafd656e96df3d0c353a52d b/.git.backup/objects/0d/26b575d8afae091aafd656e96df3d0c353a52d new file mode 100644 index 0000000..00dae12 --- /dev/null +++ b/.git.backup/objects/0d/26b575d8afae091aafd656e96df3d0c353a52d @@ -0,0 +1 @@ +x•NÑj1 Ûó}… Ãq.¶sŒ1ú û_ân¥M¯¹}ó !$�„ÊÖڵE|ë»;ä֜$¸¹²ðš80S&ÎÉS¾¨šÕéi»?:¨Ä"^�„fœYk®…VwÔHæ6ìÅãdGÿÝvø>·[„+õ�áë§Ùõþ^¶ö AçYN8#N#Ϻÿ§3ýÙqï°Z¹Ï‰O8�†\P—1û¤ßC_ \ No newline at end of file diff --git a/.git.backup/objects/0e/5f3298f99f6d50dd4b5ee146b600ec1f845d60 b/.git.backup/objects/0e/5f3298f99f6d50dd4b5ee146b600ec1f845d60 new file mode 100644 index 0000000..6b5c82e Binary files /dev/null and b/.git.backup/objects/0e/5f3298f99f6d50dd4b5ee146b600ec1f845d60 differ diff --git a/.git.backup/objects/0e/697b1d7c93eb70675da6574db171756bec31a3 b/.git.backup/objects/0e/697b1d7c93eb70675da6574db171756bec31a3 new file mode 100644 index 0000000..8021128 Binary files /dev/null and b/.git.backup/objects/0e/697b1d7c93eb70675da6574db171756bec31a3 differ diff --git a/.git.backup/objects/0e/76a90ed34ebc54e94bb8a495609a8113865677 b/.git.backup/objects/0e/76a90ed34ebc54e94bb8a495609a8113865677 new file mode 100644 index 0000000..aa0712f Binary files /dev/null and b/.git.backup/objects/0e/76a90ed34ebc54e94bb8a495609a8113865677 differ diff --git a/.git.backup/objects/0e/c611fbc21c3d78f7ac9b557c01da3fd42be678 b/.git.backup/objects/0e/c611fbc21c3d78f7ac9b557c01da3fd42be678 new file mode 100644 index 0000000..173746f Binary files /dev/null and b/.git.backup/objects/0e/c611fbc21c3d78f7ac9b557c01da3fd42be678 differ diff --git a/.git.backup/objects/10/64c33e847617f18db95cbdae7a33095326e80e b/.git.backup/objects/10/64c33e847617f18db95cbdae7a33095326e80e new file mode 100644 index 0000000..de00c23 Binary files /dev/null and b/.git.backup/objects/10/64c33e847617f18db95cbdae7a33095326e80e differ diff --git a/.git.backup/objects/10/9b2cb5bbda0cd64dbe54d326dde275e5841980 b/.git.backup/objects/10/9b2cb5bbda0cd64dbe54d326dde275e5841980 new file mode 100644 index 0000000..219980f Binary files /dev/null and b/.git.backup/objects/10/9b2cb5bbda0cd64dbe54d326dde275e5841980 differ diff --git a/.git.backup/objects/11/d63931fca276959415224cbaddf3f65c68980c b/.git.backup/objects/11/d63931fca276959415224cbaddf3f65c68980c new file mode 100644 index 0000000..a0cb287 Binary files /dev/null and b/.git.backup/objects/11/d63931fca276959415224cbaddf3f65c68980c differ diff --git a/.git.backup/objects/11/e0a815c636a3032a926033183bc011386e2044 b/.git.backup/objects/11/e0a815c636a3032a926033183bc011386e2044 new file mode 100644 index 0000000..817b990 Binary files /dev/null and b/.git.backup/objects/11/e0a815c636a3032a926033183bc011386e2044 differ diff --git a/.git.backup/objects/14/95346df3df403371c779e40851deee668d74b8 b/.git.backup/objects/14/95346df3df403371c779e40851deee668d74b8 new file mode 100644 index 0000000..95f14f9 Binary files /dev/null and b/.git.backup/objects/14/95346df3df403371c779e40851deee668d74b8 differ diff --git a/.git.backup/objects/14/cb3601415e5891baac9ca208d549f20fe3c184 b/.git.backup/objects/14/cb3601415e5891baac9ca208d549f20fe3c184 new file mode 100644 index 0000000..47aa35d Binary files /dev/null and b/.git.backup/objects/14/cb3601415e5891baac9ca208d549f20fe3c184 differ diff --git a/.git.backup/objects/15/4d87fc6e7e283fb6a73ab67fd53a2b6d9f19e5 b/.git.backup/objects/15/4d87fc6e7e283fb6a73ab67fd53a2b6d9f19e5 new file mode 100644 index 0000000..cd8ed1c --- /dev/null +++ b/.git.backup/objects/15/4d87fc6e7e283fb6a73ab67fd53a2b6d9f19e5 @@ -0,0 +1,2 @@ +x•Î[j1 @Ñ~{ÚÀI–J)ÙBW ÛrgÂàéú“-ô÷[·1.ØãÛÜ͠מOôT“Ē8¥‚5p sßbÁ^s÷ÐÝ�ȨHÏj9÷Ô,d E‚#rSqzÌßm‡ïó¸zøÐÚîH_?C/·÷º�O ”|" +$°  ºW}�Mû�qzÜ&­×ã±#ÇýB˜VŸW/î ì/Cs \ No newline at end of file diff --git a/.git.backup/objects/15/68253c658bec01c545ce86544061415c8630a4 b/.git.backup/objects/15/68253c658bec01c545ce86544061415c8630a4 new file mode 100644 index 0000000..e46bb10 Binary files /dev/null and b/.git.backup/objects/15/68253c658bec01c545ce86544061415c8630a4 differ diff --git a/.git.backup/objects/16/456bffe13bd2a76349393f19aaa991d5a6278b b/.git.backup/objects/16/456bffe13bd2a76349393f19aaa991d5a6278b new file mode 100644 index 0000000..d690c5b Binary files /dev/null and b/.git.backup/objects/16/456bffe13bd2a76349393f19aaa991d5a6278b differ diff --git a/.git.backup/objects/16/5b3a5e749eeb867981019837a208570a4459b8 b/.git.backup/objects/16/5b3a5e749eeb867981019837a208570a4459b8 new file mode 100644 index 0000000..7d51aa9 Binary files /dev/null and b/.git.backup/objects/16/5b3a5e749eeb867981019837a208570a4459b8 differ diff --git a/.git.backup/objects/16/ae4961ec809c03bbc369953e8959fdea31e7d5 b/.git.backup/objects/16/ae4961ec809c03bbc369953e8959fdea31e7d5 new file mode 100644 index 0000000..2665006 Binary files /dev/null and b/.git.backup/objects/16/ae4961ec809c03bbc369953e8959fdea31e7d5 differ diff --git a/.git.backup/objects/16/e33682f0c0e133dc9278bfb5b65093a4561adb b/.git.backup/objects/16/e33682f0c0e133dc9278bfb5b65093a4561adb new file mode 100644 index 0000000..89ca08d Binary files /dev/null and b/.git.backup/objects/16/e33682f0c0e133dc9278bfb5b65093a4561adb differ diff --git a/.git.backup/objects/16/f4edee469a5373eeb5dad935e9a8d5f07f8cef b/.git.backup/objects/16/f4edee469a5373eeb5dad935e9a8d5f07f8cef new file mode 100644 index 0000000..c351163 Binary files /dev/null and b/.git.backup/objects/16/f4edee469a5373eeb5dad935e9a8d5f07f8cef differ diff --git a/.git.backup/objects/17/51c0e7dc46fa44bef5a03e54fd0045e8c28f1e b/.git.backup/objects/17/51c0e7dc46fa44bef5a03e54fd0045e8c28f1e new file mode 100644 index 0000000..a35ad0b Binary files /dev/null and b/.git.backup/objects/17/51c0e7dc46fa44bef5a03e54fd0045e8c28f1e differ diff --git a/.git.backup/objects/18/4d0ca0a5cc297e42cab69cd8c956b93b6763d7 b/.git.backup/objects/18/4d0ca0a5cc297e42cab69cd8c956b93b6763d7 new file mode 100644 index 0000000..64ce11c Binary files /dev/null and b/.git.backup/objects/18/4d0ca0a5cc297e42cab69cd8c956b93b6763d7 differ diff --git a/.git.backup/objects/19/178f3bde0e4d7d34c2da04783534051cef8c4f b/.git.backup/objects/19/178f3bde0e4d7d34c2da04783534051cef8c4f new file mode 100644 index 0000000..e740834 Binary files /dev/null and b/.git.backup/objects/19/178f3bde0e4d7d34c2da04783534051cef8c4f differ diff --git a/.git.backup/objects/19/87a8a677e25327ec6bb121a552368f72fefd28 b/.git.backup/objects/19/87a8a677e25327ec6bb121a552368f72fefd28 new file mode 100644 index 0000000..e31436c Binary files /dev/null and b/.git.backup/objects/19/87a8a677e25327ec6bb121a552368f72fefd28 differ diff --git a/.git.backup/objects/19/8d22e8e3e046d1eabe7b6b1cd80ff4fc7c9021 b/.git.backup/objects/19/8d22e8e3e046d1eabe7b6b1cd80ff4fc7c9021 new file mode 100644 index 0000000..243c469 Binary files /dev/null and b/.git.backup/objects/19/8d22e8e3e046d1eabe7b6b1cd80ff4fc7c9021 differ diff --git a/.git.backup/objects/1a/6b9f7e88ae973c24dbf8d7ae7adaa9ed733188 b/.git.backup/objects/1a/6b9f7e88ae973c24dbf8d7ae7adaa9ed733188 new file mode 100644 index 0000000..eeac111 Binary files /dev/null and b/.git.backup/objects/1a/6b9f7e88ae973c24dbf8d7ae7adaa9ed733188 differ diff --git a/.git.backup/objects/1a/76641868680b701bc9dd0641042ee43a81125d b/.git.backup/objects/1a/76641868680b701bc9dd0641042ee43a81125d new file mode 100644 index 0000000..26b5449 Binary files /dev/null and b/.git.backup/objects/1a/76641868680b701bc9dd0641042ee43a81125d differ diff --git a/.git.backup/objects/1a/ab14741c6e543f0c504a3a1a87f463ba6a6c84 b/.git.backup/objects/1a/ab14741c6e543f0c504a3a1a87f463ba6a6c84 new file mode 100644 index 0000000..d2a6057 Binary files /dev/null and b/.git.backup/objects/1a/ab14741c6e543f0c504a3a1a87f463ba6a6c84 differ diff --git a/.git.backup/objects/1a/cf6055f38434c34bfda704eea0d4c592c7a604 b/.git.backup/objects/1a/cf6055f38434c34bfda704eea0d4c592c7a604 new file mode 100644 index 0000000..c1235f7 --- /dev/null +++ b/.git.backup/objects/1a/cf6055f38434c34bfda704eea0d4c592c7a604 @@ -0,0 +1,2 @@ +xޱƒ E»ÂW4o¦-Dª k‡N�:6žB¢…(‰%Æ/2ÝssïpôèõYÜëÓF |½Áԇ²�3  ç¢Zjƒ}ÕT 1<7bn%<ü2ùÑéöœ±‹8¿ƒÅ_]¸®¨C>þ@]¤ä Ò<ÃêL´  +[tƒ�¥씴,ˠŠLK÷?I1/ \ No newline at end of file diff --git a/.git.backup/objects/1a/f5144e002e8256b773e3134a4a51a37c180f39 b/.git.backup/objects/1a/f5144e002e8256b773e3134a4a51a37c180f39 new file mode 100644 index 0000000..5bc6eeb Binary files /dev/null and b/.git.backup/objects/1a/f5144e002e8256b773e3134a4a51a37c180f39 differ diff --git a/.git.backup/objects/1b/0d36b96a3ebab1bae76e054fbb0a68fa158bde b/.git.backup/objects/1b/0d36b96a3ebab1bae76e054fbb0a68fa158bde new file mode 100644 index 0000000..4084283 Binary files /dev/null and b/.git.backup/objects/1b/0d36b96a3ebab1bae76e054fbb0a68fa158bde differ diff --git a/.git.backup/objects/1b/1b77d2a9d36d29f2c50c3703bfd671a1949e58 b/.git.backup/objects/1b/1b77d2a9d36d29f2c50c3703bfd671a1949e58 new file mode 100644 index 0000000..909deeb Binary files /dev/null and b/.git.backup/objects/1b/1b77d2a9d36d29f2c50c3703bfd671a1949e58 differ diff --git a/.git.backup/objects/1c/3d3f26f8c81816a33f304c2826f687406ec2cf b/.git.backup/objects/1c/3d3f26f8c81816a33f304c2826f687406ec2cf new file mode 100644 index 0000000..d27f878 Binary files /dev/null and b/.git.backup/objects/1c/3d3f26f8c81816a33f304c2826f687406ec2cf differ diff --git a/.git.backup/objects/1c/4f189fe3b70275f023e197ab6a31aecf6ca684 b/.git.backup/objects/1c/4f189fe3b70275f023e197ab6a31aecf6ca684 new file mode 100644 index 0000000..3c34e84 Binary files /dev/null and b/.git.backup/objects/1c/4f189fe3b70275f023e197ab6a31aecf6ca684 differ diff --git a/.git.backup/objects/1c/cc3bfd22bf4b88752e01a975674994944497bb b/.git.backup/objects/1c/cc3bfd22bf4b88752e01a975674994944497bb new file mode 100644 index 0000000..e5f2f45 Binary files /dev/null and b/.git.backup/objects/1c/cc3bfd22bf4b88752e01a975674994944497bb differ diff --git a/.git.backup/objects/1d/347c91ef71b8efe4e02e59ed61bd171fc0c341 b/.git.backup/objects/1d/347c91ef71b8efe4e02e59ed61bd171fc0c341 new file mode 100644 index 0000000..c0ad20f Binary files /dev/null and b/.git.backup/objects/1d/347c91ef71b8efe4e02e59ed61bd171fc0c341 differ diff --git a/.git.backup/objects/1d/485057e2c5d7f04ad1fd18c138208ad7ca747a b/.git.backup/objects/1d/485057e2c5d7f04ad1fd18c138208ad7ca747a new file mode 100644 index 0000000..13bebda Binary files /dev/null and b/.git.backup/objects/1d/485057e2c5d7f04ad1fd18c138208ad7ca747a differ diff --git a/.git.backup/objects/1d/4bc18eb9793719bbb5947ed5e28fba97a752ba b/.git.backup/objects/1d/4bc18eb9793719bbb5947ed5e28fba97a752ba new file mode 100644 index 0000000..524f5b1 Binary files /dev/null and b/.git.backup/objects/1d/4bc18eb9793719bbb5947ed5e28fba97a752ba differ diff --git a/.git.backup/objects/1d/4f345c6c5c02e1fbc2af10da4ab61726d8538d b/.git.backup/objects/1d/4f345c6c5c02e1fbc2af10da4ab61726d8538d new file mode 100644 index 0000000..9ee16a5 Binary files /dev/null and b/.git.backup/objects/1d/4f345c6c5c02e1fbc2af10da4ab61726d8538d differ diff --git a/.git.backup/objects/1d/ae1e7adb3b9f326b245314130058f3693903d9 b/.git.backup/objects/1d/ae1e7adb3b9f326b245314130058f3693903d9 new file mode 100644 index 0000000..6128f34 Binary files /dev/null and b/.git.backup/objects/1d/ae1e7adb3b9f326b245314130058f3693903d9 differ diff --git a/.git.backup/objects/1e/87786b3f499699ab6f97898de0194b34c5ea0b b/.git.backup/objects/1e/87786b3f499699ab6f97898de0194b34c5ea0b new file mode 100644 index 0000000..2e6027f Binary files /dev/null and b/.git.backup/objects/1e/87786b3f499699ab6f97898de0194b34c5ea0b differ diff --git a/.git.backup/objects/1e/e5ac1ec965ed594dd4fe3575b70f874f8e34dd b/.git.backup/objects/1e/e5ac1ec965ed594dd4fe3575b70f874f8e34dd new file mode 100644 index 0000000..507b6cd Binary files /dev/null and b/.git.backup/objects/1e/e5ac1ec965ed594dd4fe3575b70f874f8e34dd differ diff --git a/.git.backup/objects/1e/eafc7444e77ca0face809a0be85c1eefe3340d b/.git.backup/objects/1e/eafc7444e77ca0face809a0be85c1eefe3340d new file mode 100644 index 0000000..e5f3488 --- /dev/null +++ b/.git.backup/objects/1e/eafc7444e77ca0face809a0be85c1eefe3340d @@ -0,0 +1,2 @@ +x•ÎÑmÄ €á>3 ¤20‰ªªê +�À6¦=Ýq9E¤ó÷Vèë/}үû—é#ÂË<Ì|դ¡3SM$ëJ&Тaɶ¢¬ ں`ªÍ=ø°ûô½aQ´.’Y‚‚q0)9)e) Dµ“ãsþì‡ÿúWôo¬íáã{ðåöªûx÷�jˆ5B¿@pÏú<›öã~ù¼M/¬×ó±ù±,P–}À-ЖÑý‚E% \ No newline at end of file diff --git a/.git.backup/objects/1f/7535ac1609f1753a780a6c6562c65cd898f241 b/.git.backup/objects/1f/7535ac1609f1753a780a6c6562c65cd898f241 new file mode 100644 index 0000000..73f1188 Binary files /dev/null and b/.git.backup/objects/1f/7535ac1609f1753a780a6c6562c65cd898f241 differ diff --git a/.git.backup/objects/1f/a10f09ac0d4fb777b9da31b3f1a3bb4101b4c8 b/.git.backup/objects/1f/a10f09ac0d4fb777b9da31b3f1a3bb4101b4c8 new file mode 100644 index 0000000..e979f4c Binary files /dev/null and b/.git.backup/objects/1f/a10f09ac0d4fb777b9da31b3f1a3bb4101b4c8 differ diff --git a/.git.backup/objects/1f/e586edec0e02ca54d49564758d8667cb0cbcb7 b/.git.backup/objects/1f/e586edec0e02ca54d49564758d8667cb0cbcb7 new file mode 100644 index 0000000..383e1ef Binary files /dev/null and b/.git.backup/objects/1f/e586edec0e02ca54d49564758d8667cb0cbcb7 differ diff --git a/.git.backup/objects/20/d7a59245993e021e9027dee585115daccbfdb6 b/.git.backup/objects/20/d7a59245993e021e9027dee585115daccbfdb6 new file mode 100644 index 0000000..5e3573b Binary files /dev/null and b/.git.backup/objects/20/d7a59245993e021e9027dee585115daccbfdb6 differ diff --git a/.git.backup/objects/20/fbf564adae612a4014d5dca5f2019b239f6e15 b/.git.backup/objects/20/fbf564adae612a4014d5dca5f2019b239f6e15 new file mode 100644 index 0000000..3da595f Binary files /dev/null and b/.git.backup/objects/20/fbf564adae612a4014d5dca5f2019b239f6e15 differ diff --git a/.git.backup/objects/21/19e7e6ec5c8c0ccf378d6e109722f2259280f3 b/.git.backup/objects/21/19e7e6ec5c8c0ccf378d6e109722f2259280f3 new file mode 100644 index 0000000..39b2398 Binary files /dev/null and b/.git.backup/objects/21/19e7e6ec5c8c0ccf378d6e109722f2259280f3 differ diff --git a/.git.backup/objects/22/0a261ae893199cd26473d8f85694dbc23fb5d2 b/.git.backup/objects/22/0a261ae893199cd26473d8f85694dbc23fb5d2 new file mode 100644 index 0000000..28357b7 Binary files /dev/null and b/.git.backup/objects/22/0a261ae893199cd26473d8f85694dbc23fb5d2 differ diff --git a/.git.backup/objects/23/478ffd7bb2f21d6ea04d782e79b2640f2a1739 b/.git.backup/objects/23/478ffd7bb2f21d6ea04d782e79b2640f2a1739 new file mode 100644 index 0000000..6b93146 Binary files /dev/null and b/.git.backup/objects/23/478ffd7bb2f21d6ea04d782e79b2640f2a1739 differ diff --git a/.git.backup/objects/23/79aeb89d6c2bb614849c916421d76d962d24fc b/.git.backup/objects/23/79aeb89d6c2bb614849c916421d76d962d24fc new file mode 100644 index 0000000..66aff0d Binary files /dev/null and b/.git.backup/objects/23/79aeb89d6c2bb614849c916421d76d962d24fc differ diff --git a/.git.backup/objects/23/e55e456cc813e727d4efaf34540ee927ff56f8 b/.git.backup/objects/23/e55e456cc813e727d4efaf34540ee927ff56f8 new file mode 100644 index 0000000..f32020e Binary files /dev/null and b/.git.backup/objects/23/e55e456cc813e727d4efaf34540ee927ff56f8 differ diff --git a/.git.backup/objects/24/6ac189a74282574549cbc82bc121896bc124b6 b/.git.backup/objects/24/6ac189a74282574549cbc82bc121896bc124b6 new file mode 100644 index 0000000..f240c52 Binary files /dev/null and b/.git.backup/objects/24/6ac189a74282574549cbc82bc121896bc124b6 differ diff --git a/.git.backup/objects/25/c564873f17f9a326d4bea27356c2f5ba0e2b86 b/.git.backup/objects/25/c564873f17f9a326d4bea27356c2f5ba0e2b86 new file mode 100644 index 0000000..3d9751e Binary files /dev/null and b/.git.backup/objects/25/c564873f17f9a326d4bea27356c2f5ba0e2b86 differ diff --git a/.git.backup/objects/25/ccfe18d7890f25061b434c5faba21314091f7c b/.git.backup/objects/25/ccfe18d7890f25061b434c5faba21314091f7c new file mode 100644 index 0000000..0ac7cd9 Binary files /dev/null and b/.git.backup/objects/25/ccfe18d7890f25061b434c5faba21314091f7c differ diff --git a/.git.backup/objects/26/09e44107c591b433ef9b26b359fb865c4dc7ab b/.git.backup/objects/26/09e44107c591b433ef9b26b359fb865c4dc7ab new file mode 100644 index 0000000..fe8bb7c --- /dev/null +++ b/.git.backup/objects/26/09e44107c591b433ef9b26b359fb865c4dc7ab @@ -0,0 +1,5 @@ +x•ÎÛ Â0 @Q¾3…(rì<Ü +!Ä +Là< +BQ•2?¬ÀtóÒڽ1îúZ+$Æ$ɖ˜°Ž±([ë½8ç²c͔Ø«r5o]ë«CÖPf­„!²?s.‰P +á9’WEq¾’ѭߖ.çö`8h./´§kÓûsŸ—v…xt–tˆæWg½þcÌG·g‡¤ù±½' ¤0`ÈŽÉäƒùámC‹ \ No newline at end of file diff --git a/.git.backup/objects/27/6d916594360c36a72d117923d66c5edf9ad010 b/.git.backup/objects/27/6d916594360c36a72d117923d66c5edf9ad010 new file mode 100644 index 0000000..b9a6f67 Binary files /dev/null and b/.git.backup/objects/27/6d916594360c36a72d117923d66c5edf9ad010 differ diff --git a/.git.backup/objects/29/047f629f82fe47adc5b9e0513a47b54b5281f1 b/.git.backup/objects/29/047f629f82fe47adc5b9e0513a47b54b5281f1 new file mode 100644 index 0000000..2bccbd1 Binary files /dev/null and b/.git.backup/objects/29/047f629f82fe47adc5b9e0513a47b54b5281f1 differ diff --git a/.git.backup/objects/29/718096dbc1be648626dfc711f99323ba51e4e0 b/.git.backup/objects/29/718096dbc1be648626dfc711f99323ba51e4e0 new file mode 100644 index 0000000..0fe5e9b Binary files /dev/null and b/.git.backup/objects/29/718096dbc1be648626dfc711f99323ba51e4e0 differ diff --git a/.git.backup/objects/29/82fa94e04775a715d3aecd5a1ba828f6e41263 b/.git.backup/objects/29/82fa94e04775a715d3aecd5a1ba828f6e41263 new file mode 100644 index 0000000..2be458f Binary files /dev/null and b/.git.backup/objects/29/82fa94e04775a715d3aecd5a1ba828f6e41263 differ diff --git a/.git.backup/objects/29/88a14af6204f9d7e0b27846d9b07da5084ef26 b/.git.backup/objects/29/88a14af6204f9d7e0b27846d9b07da5084ef26 new file mode 100644 index 0000000..9553a5a --- /dev/null +++ b/.git.backup/objects/29/88a14af6204f9d7e0b27846d9b07da5084ef26 @@ -0,0 +1,2 @@ +xE�1rÃ0 SûèÒxTeüg&¥ û�‰HhÂ@qôû€²œ” ‹»ë‹ôðv8¼\2Á…®·B #xLÇ,¬{…ÏÙþ{`¥‰¥B%ÔU?ˆþí~(¡“Â'vGe¬p¾e +…gô¤ºJ)” _¶ƒ\’RmN–ç+*­÷ß'©_\S·Ú8æM ãw<q3´ٟ°àφƒÆ ¬ ̕/ PEöWƒ^4ÖÁ©ÆWZOپb…Ä6pt�ðxÌR#j‚i&sƒ+6bKÛZ{âv»VØ6A$�D#Õ{\£½ï(…|iYï¸X'Q±Œ飍±P ۟e¾EWJwJkQƒ ”°„i.¡ÔÏ€¿O©¼ \ No newline at end of file diff --git a/.git.backup/objects/2a/71b46253e3b0556e28918ce97b266a7d07f7ab b/.git.backup/objects/2a/71b46253e3b0556e28918ce97b266a7d07f7ab new file mode 100644 index 0000000..1a4d3fa --- /dev/null +++ b/.git.backup/objects/2a/71b46253e3b0556e28918ce97b266a7d07f7ab @@ -0,0 +1 @@ +x•�;N1D‰ç�mØnf$´BäDœ Ýݞ�=Èkî�€TQ©ꕊÏZ�nŇÑUÁ—‚8%…]ˆÞ! ­lƒdeæD^sˆfù¦®m€ ^ÖT8jÒ )9RBÊ1 H.GيÝ4üå]Fo$*:5kvU_DÑnމ1……~ÆíìðñV?^ˆ¥ûºW:¾žø¬W°)a²6Ø�ƳLw>úŸÎò®}Wȝßàröc?Úói8Ú8¡Ò}—_”W„ \ No newline at end of file diff --git a/.git.backup/objects/2b/2c951280078e78413a054fc41eda80bed474a0 b/.git.backup/objects/2b/2c951280078e78413a054fc41eda80bed474a0 new file mode 100644 index 0000000..19d7240 Binary files /dev/null and b/.git.backup/objects/2b/2c951280078e78413a054fc41eda80bed474a0 differ diff --git a/.git.backup/objects/2b/340d6e32e09ce5518e3d4fdda33192caae3375 b/.git.backup/objects/2b/340d6e32e09ce5518e3d4fdda33192caae3375 new file mode 100644 index 0000000..5f74a6a Binary files /dev/null and b/.git.backup/objects/2b/340d6e32e09ce5518e3d4fdda33192caae3375 differ diff --git a/.git.backup/objects/2b/39a5edaf0f63ec58e4c8123993f61fcd48c1a0 b/.git.backup/objects/2b/39a5edaf0f63ec58e4c8123993f61fcd48c1a0 new file mode 100644 index 0000000..0d6cd50 Binary files /dev/null and b/.git.backup/objects/2b/39a5edaf0f63ec58e4c8123993f61fcd48c1a0 differ diff --git a/.git.backup/objects/2b/995499b7a6de5181a0917f010051d4d052e15d b/.git.backup/objects/2b/995499b7a6de5181a0917f010051d4d052e15d new file mode 100644 index 0000000..116638c Binary files /dev/null and b/.git.backup/objects/2b/995499b7a6de5181a0917f010051d4d052e15d differ diff --git a/.git.backup/objects/2b/eefbe0f27d8f33aa228b03242ab00182efeb7a b/.git.backup/objects/2b/eefbe0f27d8f33aa228b03242ab00182efeb7a new file mode 100644 index 0000000..ee4b4df Binary files /dev/null and b/.git.backup/objects/2b/eefbe0f27d8f33aa228b03242ab00182efeb7a differ diff --git a/.git.backup/objects/2d/2c50f039b0799a79ac72f2fb5979f8d098a882 b/.git.backup/objects/2d/2c50f039b0799a79ac72f2fb5979f8d098a882 new file mode 100644 index 0000000..eaf2498 Binary files /dev/null and b/.git.backup/objects/2d/2c50f039b0799a79ac72f2fb5979f8d098a882 differ diff --git a/.git.backup/objects/2d/f7c7b2e3d27acea7ca425fb7232a393047d2d8 b/.git.backup/objects/2d/f7c7b2e3d27acea7ca425fb7232a393047d2d8 new file mode 100644 index 0000000..93c8d86 Binary files /dev/null and b/.git.backup/objects/2d/f7c7b2e3d27acea7ca425fb7232a393047d2d8 differ diff --git a/.git.backup/objects/2e/1d43f7634944127f3b8d6a12340a7303abb3fe b/.git.backup/objects/2e/1d43f7634944127f3b8d6a12340a7303abb3fe new file mode 100644 index 0000000..ae3175f --- /dev/null +++ b/.git.backup/objects/2e/1d43f7634944127f3b8d6a12340a7303abb3fe @@ -0,0 +1,3 @@ +xuUÁ®Û6ìÙ_±·´€m @moiÑï @‚ö¼¢ÖñH®@RVԯï,i?;zxx–EîÎìΌ‡ ýøóO¿|w:�Õ× ¿ÒçYè%_g?F).û¥zMý�OqöHuæJNSY£< EŸƃUº_?ÓG|Eï’˙~Ëìmš#^R•PŒF¹êšۉ¿8sñջVÙy]K’R(ò(tÁEB�K�2ŸPJœ…hCAzMºº¬ë4ëZ´‰ÙÑôb�8ë i<ø4§�ꦴù0–… �ãDÝÍâ4�¸�q̾TÍ;Ÿœ1Ÿ�€ݨÒû &æ€^hM}<Û,6‡vú�ÑfƒY²I8l3êƒ÷^qZÿ§ü‘†۠{; 1\ÎÁK©Ôcèս癇ϳøܦQèÊyÓj�gÙq"Ý:‹ÎüÊC0f©H®Ĵtñ`¹é†th‚CO&#å�Ø÷ raŸÃN�ó„eØ! ‹p…�¥rԼÌZl ¦óÜßõÒü¬ë#±sk\CÛNš|9@²Ð-ZßPù±­Ž'ržq*išÆÎÿ#ÖÑ ò¼q“5úÛ՝ÆÌüv¦÷Ðë"NjÍÁZIðݡh oȡa8IÃ&«ìfÂ~T��²F¼îU)®ØÒ æÎ:ïV-)ˆ`¾¿k‰0ä­;m³6·5³]8úà9Ã:u¶�GºzÙú'6½͊AÓEòÆÂxí V †÷¦úvM3Q�–ÈGႝ :yXÁS³àïKÌ2Y(vñˆ +ü·R7õê²(RåFùoæÜmޔs§Ñ_ý¸ÚÒ,¯.=¯Î@�MÐq#~ч¾ ˜?M Øà§ÅâÅdýòMOKztó‰ôIÁÒÖ,Wd‚›ق`BfØڔ©™wÚumˆ*¬n™Uâ«Ü5õíx¬àš‚µ@Á61ŒL< ¢Ø»t{£^@XjËîñ§ ?ԜMD°@Ðɂóζ³Hlã5´ì@nôînn˜Ʃˆûž X¿íúªɇX±P Œ±`xN§ª›mh¿²‚ÅV‰xaùk‘æn~ÞÙ=KÚtÚË'3µÑZÿÞ úëô jØVÁô¡I9œés}³~Äì¨v3ÚÐ2R¢%á´â‡éü œN \ No newline at end of file diff --git a/.git.backup/objects/2e/468732e7c3e6ae32a7b511acd87de7e744e8d3 b/.git.backup/objects/2e/468732e7c3e6ae32a7b511acd87de7e744e8d3 new file mode 100644 index 0000000..e9b0ac9 Binary files /dev/null and b/.git.backup/objects/2e/468732e7c3e6ae32a7b511acd87de7e744e8d3 differ diff --git a/.git.backup/objects/2e/4a5f1e3b992c03f4571f80c94053a97b2f2c20 b/.git.backup/objects/2e/4a5f1e3b992c03f4571f80c94053a97b2f2c20 new file mode 100644 index 0000000..969b892 --- /dev/null +++ b/.git.backup/objects/2e/4a5f1e3b992c03f4571f80c94053a97b2f2c20 @@ -0,0 +1,2 @@ +x=�AnÃ0 {Ö+öñ¥@äÖCPôN[´-T! ŠF⼾Œ�$�âwûª=Þ?Îo§Ó)yñÊ|Ù泬5enƒ•ŋÊŸh%󍶆›ZÍÐ|wã+·ôTÿËPÆS!q4'CüYn ܽV`¦ƢËZÉCtÀc¾x|Y_>“cRnè·(�® ‰«CJßÑ8D/¦¾³T@qîáhg<ߒ©Ö U‡ßØ6ÒPd: á³CЌG5Þ{¢æó3é ½‡ë+=B˜Y7jΕ$Dz| t YŒŽ¦Ž(v6¡ +)Óì]Jn•…` \ No newline at end of file diff --git a/.git.backup/objects/2e/adf5c1e0c87d0fd43bc600f99857c365114f5e b/.git.backup/objects/2e/adf5c1e0c87d0fd43bc600f99857c365114f5e new file mode 100644 index 0000000..e71b729 Binary files /dev/null and b/.git.backup/objects/2e/adf5c1e0c87d0fd43bc600f99857c365114f5e differ diff --git a/.git.backup/objects/2f/8b567b07ee189bd23a58b7143efc24439f0269 b/.git.backup/objects/2f/8b567b07ee189bd23a58b7143efc24439f0269 new file mode 100644 index 0000000..176e635 Binary files /dev/null and b/.git.backup/objects/2f/8b567b07ee189bd23a58b7143efc24439f0269 differ diff --git a/.git.backup/objects/2f/8f3f6e20d1cc2b7004a150721ec72d9f5eefec b/.git.backup/objects/2f/8f3f6e20d1cc2b7004a150721ec72d9f5eefec new file mode 100644 index 0000000..abcd737 --- /dev/null +++ b/.git.backup/objects/2f/8f3f6e20d1cc2b7004a150721ec72d9f5eefec @@ -0,0 +1,7 @@ +xmTÁnì6 ì9_Áã+ìKŠü@OEðx +ôHË\Kˆ,¹”´®ûõJ»EÒö&[â�3rŠy¢ǧ§Ÿ~x ÕÇ +1ivïm‘“T + ¦�X*••ÊæE…r¢ê…d^p>ÓoÌ:—��œ蹒çB1ïTÅ՜‚#v5\B=ˆÓ À]8Vo�+2kˆ÷Ä3¯œjh+Îx”¯¸N¢ˉސ횻¥ÊڋMÎg•™& “ü±!l €¢W«w$\›óTVŽ·‡D+ÎèœèF=ëjé¤þ÷XAãœS<þ#’]ŒòP>¸å¶ø6ôr9U {¦òô!·é‘(¸ƒf™)\Ì ôñ嘾§»»Ÿi•*YM±_58Ïѵ•¾<Þ?<<в}ÝrKó�HMN¡xB¸›zäÃâQó…c»j¥5œƒ-÷àâñûÚÑOݿŠ3Ôÿ.K‹\³ô÷"4‰$@_åÿ�·�é9U€vÊé%/¡Ôà@ӌUÄ55Ì-bG J&� ]ßL’JƒÁº |ÆA9•-k5ò[ÞÑ@‡éà��’?ZØVAÏkî‘óÎz‘B»ÏÄ@۳¾ÛCCu‘ÃÕdxý!ݭˆ± $ë?ȍæÌÃþŸ-H›íœÀÜ@?³ ѱ7$E$Œ9֍[ ×n&�—¸¡&aµÛÜ*p¿iÃ@¾C]è\=�‰ê‚/šw{˜0§ž˔ѝ�[ùW6)uŒÆïJø“¢, ²³®°†½B­þ²1l95E:[f‹nVûíÃ$šb7v­­½™ýl^4;až? +Ü6ÖJ3ÎÝûeµOÚm�­ò‹ +À•^»‘Ntw7¦¯¥®…soäM%Xbgµýq³ñUᆍ1It†eLGè�#æÆÃôDêÒ&d…ÝkKIlñ3…¸È0pªªª+d&�rщëüÍ +yý¥Oúë6Æu9ü˜»*ôŽڴz8Š¡’÷9ÛR +s*¤­¤SSó”]´8Ő’£$Nc“îƒd±Ö{ì�;¶X±9æï¶ÃùgÜ|Jm´ߗ!×û©nã lŒ™R¶̰ G4¯ú:›úŽ1rÜ'©·ã¹!ñ‚a!‹kÈ+±ùcÅDL \ No newline at end of file diff --git a/.git.backup/objects/45/0c9748dac33fd24cf6457fcbce5eed578b2a67 b/.git.backup/objects/45/0c9748dac33fd24cf6457fcbce5eed578b2a67 new file mode 100644 index 0000000..c542343 Binary files /dev/null and b/.git.backup/objects/45/0c9748dac33fd24cf6457fcbce5eed578b2a67 differ diff --git a/.git.backup/objects/45/43b43fc272a22fbc7d0d6a687e3ce054c59c67 b/.git.backup/objects/45/43b43fc272a22fbc7d0d6a687e3ce054c59c67 new file mode 100644 index 0000000..9381f69 Binary files /dev/null and b/.git.backup/objects/45/43b43fc272a22fbc7d0d6a687e3ce054c59c67 differ diff --git a/.git.backup/objects/45/6e593ddac51eddaf721504f4e2039838cebf2b b/.git.backup/objects/45/6e593ddac51eddaf721504f4e2039838cebf2b new file mode 100644 index 0000000..6ca3815 Binary files /dev/null and b/.git.backup/objects/45/6e593ddac51eddaf721504f4e2039838cebf2b differ diff --git a/.git.backup/objects/46/4c008050abea1ab1ef3705d4612060f54c6ec3 b/.git.backup/objects/46/4c008050abea1ab1ef3705d4612060f54c6ec3 new file mode 100644 index 0000000..494922a Binary files /dev/null and b/.git.backup/objects/46/4c008050abea1ab1ef3705d4612060f54c6ec3 differ diff --git a/.git.backup/objects/49/0239cd3542877ce2d2ad800fbb5713a5f666a8 b/.git.backup/objects/49/0239cd3542877ce2d2ad800fbb5713a5f666a8 new file mode 100644 index 0000000..6e9df36 Binary files /dev/null and b/.git.backup/objects/49/0239cd3542877ce2d2ad800fbb5713a5f666a8 differ diff --git a/.git.backup/objects/49/04a5f595c3ce2726eb8a4a571ccd4cc4189349 b/.git.backup/objects/49/04a5f595c3ce2726eb8a4a571ccd4cc4189349 new file mode 100644 index 0000000..66de98d Binary files /dev/null and b/.git.backup/objects/49/04a5f595c3ce2726eb8a4a571ccd4cc4189349 differ diff --git a/.git.backup/objects/49/c6bbaa1b900fad774c1fc2ea9828f81aca7010 b/.git.backup/objects/49/c6bbaa1b900fad774c1fc2ea9828f81aca7010 new file mode 100644 index 0000000..fd63e93 Binary files /dev/null and b/.git.backup/objects/49/c6bbaa1b900fad774c1fc2ea9828f81aca7010 differ diff --git a/.git.backup/objects/49/ebaec836ccca6805a31b0a3d60f53b30e3e248 b/.git.backup/objects/49/ebaec836ccca6805a31b0a3d60f53b30e3e248 new file mode 100644 index 0000000..32ec2ca Binary files /dev/null and b/.git.backup/objects/49/ebaec836ccca6805a31b0a3d60f53b30e3e248 differ diff --git a/.git.backup/objects/4b/070f614370dec48ee95a0acc1bbd574c766561 b/.git.backup/objects/4b/070f614370dec48ee95a0acc1bbd574c766561 new file mode 100644 index 0000000..9e83d13 Binary files /dev/null and b/.git.backup/objects/4b/070f614370dec48ee95a0acc1bbd574c766561 differ diff --git a/.git.backup/objects/4b/4cd3d452ed218030c1f8905410e77f289f1110 b/.git.backup/objects/4b/4cd3d452ed218030c1f8905410e77f289f1110 new file mode 100644 index 0000000..9051bf7 Binary files /dev/null and b/.git.backup/objects/4b/4cd3d452ed218030c1f8905410e77f289f1110 differ diff --git a/.git.backup/objects/4b/6ed200712bf33b1aa275598d36c81e3cb7bdf9 b/.git.backup/objects/4b/6ed200712bf33b1aa275598d36c81e3cb7bdf9 new file mode 100644 index 0000000..3d37719 Binary files /dev/null and b/.git.backup/objects/4b/6ed200712bf33b1aa275598d36c81e3cb7bdf9 differ diff --git a/.git.backup/objects/4c/52a25278e3a520d5daaaaee4d450f432ef89c6 b/.git.backup/objects/4c/52a25278e3a520d5daaaaee4d450f432ef89c6 new file mode 100644 index 0000000..526e6cc Binary files /dev/null and b/.git.backup/objects/4c/52a25278e3a520d5daaaaee4d450f432ef89c6 differ diff --git a/.git.backup/objects/4c/736aeeba15f492c8fc2cb4da18f4f11fd850e6 b/.git.backup/objects/4c/736aeeba15f492c8fc2cb4da18f4f11fd850e6 new file mode 100644 index 0000000..a4eb835 Binary files /dev/null and b/.git.backup/objects/4c/736aeeba15f492c8fc2cb4da18f4f11fd850e6 differ diff --git a/.git.backup/objects/4d/74044a742dedb14094985234131e63114f6903 b/.git.backup/objects/4d/74044a742dedb14094985234131e63114f6903 new file mode 100644 index 0000000..0fb4b46 Binary files /dev/null and b/.git.backup/objects/4d/74044a742dedb14094985234131e63114f6903 differ diff --git a/.git.backup/objects/4d/af808ae5917b22e264dad6e4736618ae7aee3a b/.git.backup/objects/4d/af808ae5917b22e264dad6e4736618ae7aee3a new file mode 100644 index 0000000..7f6a18c Binary files /dev/null and b/.git.backup/objects/4d/af808ae5917b22e264dad6e4736618ae7aee3a differ diff --git a/.git.backup/objects/4d/cde3d234a708398c4f78efaa8f32456645d244 b/.git.backup/objects/4d/cde3d234a708398c4f78efaa8f32456645d244 new file mode 100644 index 0000000..68a1059 Binary files /dev/null and b/.git.backup/objects/4d/cde3d234a708398c4f78efaa8f32456645d244 differ diff --git a/.git.backup/objects/4d/dbecbf59bcb818de54940868829ef0b811e1dd b/.git.backup/objects/4d/dbecbf59bcb818de54940868829ef0b811e1dd new file mode 100644 index 0000000..8d256c8 Binary files /dev/null and b/.git.backup/objects/4d/dbecbf59bcb818de54940868829ef0b811e1dd differ diff --git a/.git.backup/objects/4e/625620ed8ffb18da2e8be65365f91cb8b7af57 b/.git.backup/objects/4e/625620ed8ffb18da2e8be65365f91cb8b7af57 new file mode 100644 index 0000000..52070a9 Binary files /dev/null and b/.git.backup/objects/4e/625620ed8ffb18da2e8be65365f91cb8b7af57 differ diff --git a/.git.backup/objects/4f/0b62213260cd980ff81af3368579c662bcc1e8 b/.git.backup/objects/4f/0b62213260cd980ff81af3368579c662bcc1e8 new file mode 100644 index 0000000..4cfc23b Binary files /dev/null and b/.git.backup/objects/4f/0b62213260cd980ff81af3368579c662bcc1e8 differ diff --git a/.git.backup/objects/4f/150d74828b498ea5ba8dfd2c89b89aa1ce7383 b/.git.backup/objects/4f/150d74828b498ea5ba8dfd2c89b89aa1ce7383 new file mode 100644 index 0000000..01f53f7 --- /dev/null +++ b/.git.backup/objects/4f/150d74828b498ea5ba8dfd2c89b89aa1ce7383 @@ -0,0 +1,2 @@ +xmÏ=k„@àk#øë˪ �`'¹öH¼~]'qq¿˜Ù5HÈ?- ¤™æ™÷¦׮gÏUuúɳ‡B Eà +1ÌÂJeDrHÅ9™’¶»²·£΀¤œM áõ–1ʶÞߎV?ñúuÓH¢òaÏuÌD”×ÀöÓ f°Ì8æÝ7àgÔzá[\Ä0:L?&X[äu¡u±C�| ÁSS–_*Œ±çҙòO¤üÿcE )8ÿnõ²öŒ�g¿yv#Ú`‰ \ No newline at end of file diff --git a/.git.backup/objects/4f/29e1b366ce3839f52a8d76195c2321aee8bf09 b/.git.backup/objects/4f/29e1b366ce3839f52a8d76195c2321aee8bf09 new file mode 100644 index 0000000..0c0df3b Binary files /dev/null and b/.git.backup/objects/4f/29e1b366ce3839f52a8d76195c2321aee8bf09 differ diff --git a/.git.backup/objects/4f/421b7decab2835becf364807876bc68508777b b/.git.backup/objects/4f/421b7decab2835becf364807876bc68508777b new file mode 100644 index 0000000..2a5b913 Binary files /dev/null and b/.git.backup/objects/4f/421b7decab2835becf364807876bc68508777b differ diff --git a/.git.backup/objects/4f/5815e1c94674476be4304390d2f641f51e7f06 b/.git.backup/objects/4f/5815e1c94674476be4304390d2f641f51e7f06 new file mode 100644 index 0000000..2c84f49 --- /dev/null +++ b/.git.backup/objects/4f/5815e1c94674476be4304390d2f641f51e7f06 @@ -0,0 +1 @@ +x+)JMU043`040031QpÎ/Ê+MÎ/ÈLÔËMa¸õe—ƒ‡™Ùüôù,µÜçÛËÎïžÉUèZTY’‘WšR¶ý5gÍs»Ï³³‹Z*ó µˆB5ø¥–;•¥§æä@”n¶»¤ɿêÊï)²r¿^u­œûþpOTipIb‘s~:Ø #kœv|țÿ97ô͛ÌÊësluPž \ No newline at end of file diff --git a/.git.backup/objects/50/8c6ea2680d4500fe1b84ddbaa5b00a2693c2d6 b/.git.backup/objects/50/8c6ea2680d4500fe1b84ddbaa5b00a2693c2d6 new file mode 100644 index 0000000..d4a01a5 Binary files /dev/null and b/.git.backup/objects/50/8c6ea2680d4500fe1b84ddbaa5b00a2693c2d6 differ diff --git a/.git.backup/objects/51/0a3d162973c4ae65beaeb86e054e7e4e14fdbb b/.git.backup/objects/51/0a3d162973c4ae65beaeb86e054e7e4e14fdbb new file mode 100644 index 0000000..9511ce2 Binary files /dev/null and b/.git.backup/objects/51/0a3d162973c4ae65beaeb86e054e7e4e14fdbb differ diff --git a/.git.backup/objects/52/2f94d022437bb76d05e897a5767e1fae2c9abb b/.git.backup/objects/52/2f94d022437bb76d05e897a5767e1fae2c9abb new file mode 100644 index 0000000..d91425b --- /dev/null +++ b/.git.backup/objects/52/2f94d022437bb76d05e897a5767e1fae2c9abb @@ -0,0 +1,3 @@ +xUR=oÛ0íì_ñ¶,r†v(�--‚fo ãISéç²MÌ ÅmÁ‘ç¶RâSDW¶_Á'O¼˜'˜cSª2)稜كL´Ms‡è@’i©’:îRkÔ'–�A­I뤉QDÇ„µÆº¡ŽˆfvKÔÅôU÷oÀË*Îg|Ï|ÀJaÇêÖ9�ì¸}<¢;µ'Nі*Éò§2Èc-¬ºoŒµÁZ uæöO¦qÚ\úñÚÿˆoë±ö5dÏ�}Y \ No newline at end of file diff --git a/.git.backup/objects/5f/c1e1b2ff2b578462ed012dfdd1e2c2ec94848a b/.git.backup/objects/5f/c1e1b2ff2b578462ed012dfdd1e2c2ec94848a new file mode 100644 index 0000000..769f52f Binary files /dev/null and b/.git.backup/objects/5f/c1e1b2ff2b578462ed012dfdd1e2c2ec94848a differ diff --git a/.git.backup/objects/60/3c315519047b9844c0feb53d2d8fbc84cb7a06 b/.git.backup/objects/60/3c315519047b9844c0feb53d2d8fbc84cb7a06 new file mode 100644 index 0000000..7187025 Binary files /dev/null and b/.git.backup/objects/60/3c315519047b9844c0feb53d2d8fbc84cb7a06 differ diff --git a/.git.backup/objects/60/473e89cc2a5518043a2e477f314427740efcba b/.git.backup/objects/60/473e89cc2a5518043a2e477f314427740efcba new file mode 100644 index 0000000..4102c16 Binary files /dev/null and b/.git.backup/objects/60/473e89cc2a5518043a2e477f314427740efcba differ diff --git a/.git.backup/objects/60/a5509a03cf16d2b031a27cdd3e66b3f3b31634 b/.git.backup/objects/60/a5509a03cf16d2b031a27cdd3e66b3f3b31634 new file mode 100644 index 0000000..ce84262 Binary files /dev/null and b/.git.backup/objects/60/a5509a03cf16d2b031a27cdd3e66b3f3b31634 differ diff --git a/.git.backup/objects/60/f35025c985b76ada2e2fd8dfb286a73ee7fb90 b/.git.backup/objects/60/f35025c985b76ada2e2fd8dfb286a73ee7fb90 new file mode 100644 index 0000000..339f837 Binary files /dev/null and b/.git.backup/objects/60/f35025c985b76ada2e2fd8dfb286a73ee7fb90 differ diff --git a/.git.backup/objects/61/366dd27676ac12ae194bf3af9547fb46742904 b/.git.backup/objects/61/366dd27676ac12ae194bf3af9547fb46742904 new file mode 100644 index 0000000..8db4478 Binary files /dev/null and b/.git.backup/objects/61/366dd27676ac12ae194bf3af9547fb46742904 differ diff --git a/.git.backup/objects/61/952ccce67fcca770f9f6b63dc79ca9a5d1d888 b/.git.backup/objects/61/952ccce67fcca770f9f6b63dc79ca9a5d1d888 new file mode 100644 index 0000000..f5596fa Binary files /dev/null and b/.git.backup/objects/61/952ccce67fcca770f9f6b63dc79ca9a5d1d888 differ diff --git a/.git.backup/objects/61/f19e535bb4bac5285baeb749f29332f73a5fd6 b/.git.backup/objects/61/f19e535bb4bac5285baeb749f29332f73a5fd6 new file mode 100644 index 0000000..137827a Binary files /dev/null and b/.git.backup/objects/61/f19e535bb4bac5285baeb749f29332f73a5fd6 differ diff --git a/.git.backup/objects/62/5bdad2ad9acd93429cdcaea3f863db1540c1de b/.git.backup/objects/62/5bdad2ad9acd93429cdcaea3f863db1540c1de new file mode 100644 index 0000000..5a5d995 Binary files /dev/null and b/.git.backup/objects/62/5bdad2ad9acd93429cdcaea3f863db1540c1de differ diff --git a/.git.backup/objects/62/8d34c54d69c91b850bcfd9500b3d8d69de0c64 b/.git.backup/objects/62/8d34c54d69c91b850bcfd9500b3d8d69de0c64 new file mode 100644 index 0000000..b70fa87 Binary files /dev/null and b/.git.backup/objects/62/8d34c54d69c91b850bcfd9500b3d8d69de0c64 differ diff --git a/.git.backup/objects/62/cbbfdada7e2c5a4425001bc4c487be19beb40f b/.git.backup/objects/62/cbbfdada7e2c5a4425001bc4c487be19beb40f new file mode 100644 index 0000000..a4ce9e4 --- /dev/null +++ b/.git.backup/objects/62/cbbfdada7e2c5a4425001bc4c487be19beb40f @@ -0,0 +1,5 @@ +x=TMsÛ6홿b›’hXʹ9d&7˲c֩ì‘Ôäàø°$—$*Ë@1ì¯ï¥V� ða÷}°´ZÒo~ÿøÓjõìÕéè*©W«Oô®ýg±–]Y½ÏV«½°¥÷’Žl�k­”âýL÷bcՕ£kÅãܣÓÉэ5$¤³›ѷ Z•à°Ìiƒ×Ku-mQ°’ӽ3}i…žø4tlírú¢¾¦�Öõì´:Ñ'ÄWXæô(gã(vBÜR·Zçô•Ùז]ý6Ð#ðIzÖ—i©ôÍØJúÛ»Árµ ò4FñôÙi/^`‚ޱ£Iµ8|ëMoC�±Ë+Ï;µښ +uŒéi2xÅ) zX蜌«Ô{Ӛ4VËi:t9ã;×2DLu0‘Ä ;’Y¨QOg¶£@ +t¯N"ƒjLGÒk4ŠžÞçd¥EÓigðìN³¬³ì痗�LWÚד”Ãëk–]tIÐ~t.Ôxí©1mý=†H@Z—µXƒ^ӹ“±6ý—V§@Q©OïÌhSš¾¿¡ÃJtgϨ㳐—š«(5õìæ$E«ÆƦK°ßB®„š6ªу}�Ё.!Árè:Â÷WzsQ܂¨YGÚÑ…Î8 ÂooÈ‚¨3n„3:<õ ÊÏëìüèÛÍîx·¥Û}ñg±»ùBŎw_ïöXþñ׾8l‹Ûcñ´;d…«ì˜úú”ýJi°}òÞx¶×RáñÉ{âèå1=G,6¦iè>Íðá=÷bߏ.rˆ¦BÁZn$!ídèÌÉEÌRĊç˜ÄHL->,AKaØ"^Œäl¡³ÂÓcYrŽL¸9_\±—HŒ±´�| Às¼ìlٛ1Сá3 ¦M�,¸V�æÞFÈÂ0~9FêM§ÇEe¤ëÝ  2© +V‘B°\Î ҃x¸ ôþ–~˜™ Í?hg0­¨Ãɾ¸ý?´FøŠV€¦Ap/×!ªZêÆ~Xü�Œ `�&Æg&U +ü¯© î©RÄN†«á ø6 špe–;Ž ì@DA“×(ÔËø:•Féf·E¹áS2霦Ž@=ˆ$¤�\”˜j�¤‹P—# uXÿ JëÌ \ No newline at end of file diff --git a/.git.backup/objects/63/9b90da7172bebbc1a65e30ed0a1c611b5b26dc b/.git.backup/objects/63/9b90da7172bebbc1a65e30ed0a1c611b5b26dc new file mode 100644 index 0000000..924c04d Binary files /dev/null and b/.git.backup/objects/63/9b90da7172bebbc1a65e30ed0a1c611b5b26dc differ diff --git a/.git.backup/objects/63/b7820284a8363de3189b63e3006681a77ad300 b/.git.backup/objects/63/b7820284a8363de3189b63e3006681a77ad300 new file mode 100644 index 0000000..33ab2d2 Binary files /dev/null and b/.git.backup/objects/63/b7820284a8363de3189b63e3006681a77ad300 differ diff --git a/.git.backup/objects/64/5ab5b171a41b60d29045c85df1395586b3b455 b/.git.backup/objects/64/5ab5b171a41b60d29045c85df1395586b3b455 new file mode 100644 index 0000000..fadf321 --- /dev/null +++ b/.git.backup/objects/64/5ab5b171a41b60d29045c85df1395586b3b455 @@ -0,0 +1,2 @@ +x�ŽAnÃ0 {Ö+ø�EQ²=å�_Ð݉íÀ� ô÷q¾`O‹Y̖už§ÄüÑ63°(œRdF‘«˜Ǥ±¤Ñl'£'~Šñí¶ÛLÈ`nÅrÚ'„‚ÂCêLø䵆¦C#æ¡$“±8žëÈi ôņ4†úÖãiÈù%¿&7[JÌ;¥Z*¶ײ ^-fõßq]ü3{í([¹إ7j~‡Zú¬榫׷4‰òsWB<²; MÞÁe¬¾«b¯r4 \ No newline at end of file diff --git a/.git.backup/objects/6a/7543ebeadc012a0b3344647b212e7c72c1453a b/.git.backup/objects/6a/7543ebeadc012a0b3344647b212e7c72c1453a new file mode 100644 index 0000000..cbd6f5a Binary files /dev/null and b/.git.backup/objects/6a/7543ebeadc012a0b3344647b212e7c72c1453a differ diff --git a/.git.backup/objects/6a/be4c134a9c03f65b3c19323a4081ec2782d1af b/.git.backup/objects/6a/be4c134a9c03f65b3c19323a4081ec2782d1af new file mode 100644 index 0000000..7415077 Binary files /dev/null and b/.git.backup/objects/6a/be4c134a9c03f65b3c19323a4081ec2782d1af differ diff --git a/.git.backup/objects/6b/378b58cdb91f3d23cf09d3e753ce9d031b5d72 b/.git.backup/objects/6b/378b58cdb91f3d23cf09d3e753ce9d031b5d72 new file mode 100644 index 0000000..71dc894 Binary files /dev/null and b/.git.backup/objects/6b/378b58cdb91f3d23cf09d3e753ce9d031b5d72 differ diff --git a/.git.backup/objects/6b/415181e921aa3418d6d8caf6da6029d5ce535a b/.git.backup/objects/6b/415181e921aa3418d6d8caf6da6029d5ce535a new file mode 100644 index 0000000..7fc8a97 Binary files /dev/null and b/.git.backup/objects/6b/415181e921aa3418d6d8caf6da6029d5ce535a differ diff --git a/.git.backup/objects/6b/dac6f326b272970f24cc2e73ac14037492c5f8 b/.git.backup/objects/6b/dac6f326b272970f24cc2e73ac14037492c5f8 new file mode 100644 index 0000000..573c7df Binary files /dev/null and b/.git.backup/objects/6b/dac6f326b272970f24cc2e73ac14037492c5f8 differ diff --git a/.git.backup/objects/6c/84648285d41ab103ac1d7842ea628b992310b0 b/.git.backup/objects/6c/84648285d41ab103ac1d7842ea628b992310b0 new file mode 100644 index 0000000..9a62971 Binary files /dev/null and b/.git.backup/objects/6c/84648285d41ab103ac1d7842ea628b992310b0 differ diff --git a/.git.backup/objects/6d/15fba635b57a828e4036cda284796f30c28415 b/.git.backup/objects/6d/15fba635b57a828e4036cda284796f30c28415 new file mode 100644 index 0000000..0d5f907 Binary files /dev/null and b/.git.backup/objects/6d/15fba635b57a828e4036cda284796f30c28415 differ diff --git a/.git.backup/objects/6d/3e14242df21290c720461d91dc88f8ca2f13be b/.git.backup/objects/6d/3e14242df21290c720461d91dc88f8ca2f13be new file mode 100644 index 0000000..c73d0bb Binary files /dev/null and b/.git.backup/objects/6d/3e14242df21290c720461d91dc88f8ca2f13be differ diff --git a/.git.backup/objects/6d/797d0f85da812819c81fb8b5f7357e884bc024 b/.git.backup/objects/6d/797d0f85da812819c81fb8b5f7357e884bc024 new file mode 100644 index 0000000..fb58631 Binary files /dev/null and b/.git.backup/objects/6d/797d0f85da812819c81fb8b5f7357e884bc024 differ diff --git a/.git.backup/objects/6d/c01640d37cb32ea63a4ec86d49323dfd45019d b/.git.backup/objects/6d/c01640d37cb32ea63a4ec86d49323dfd45019d new file mode 100644 index 0000000..009a1f3 Binary files /dev/null and b/.git.backup/objects/6d/c01640d37cb32ea63a4ec86d49323dfd45019d differ diff --git a/.git.backup/objects/6d/efc2c5f4651601bed0125c34af07ee1f15f33b b/.git.backup/objects/6d/efc2c5f4651601bed0125c34af07ee1f15f33b new file mode 100644 index 0000000..079f8bf Binary files /dev/null and b/.git.backup/objects/6d/efc2c5f4651601bed0125c34af07ee1f15f33b differ diff --git a/.git.backup/objects/6e/6c425bc8c5340bf52f0633bdc2649f030deb15 b/.git.backup/objects/6e/6c425bc8c5340bf52f0633bdc2649f030deb15 new file mode 100644 index 0000000..4a4b0ab Binary files /dev/null and b/.git.backup/objects/6e/6c425bc8c5340bf52f0633bdc2649f030deb15 differ diff --git a/.git.backup/objects/6e/ef4e149a7175a580ef2430372deaa13919f552 b/.git.backup/objects/6e/ef4e149a7175a580ef2430372deaa13919f552 new file mode 100644 index 0000000..07f3d72 Binary files /dev/null and b/.git.backup/objects/6e/ef4e149a7175a580ef2430372deaa13919f552 differ diff --git a/.git.backup/objects/6f/50d9cd6902bcab33b7f0a1d155e7a131d363d9 b/.git.backup/objects/6f/50d9cd6902bcab33b7f0a1d155e7a131d363d9 new file mode 100644 index 0000000..17567c7 Binary files /dev/null and b/.git.backup/objects/6f/50d9cd6902bcab33b7f0a1d155e7a131d363d9 differ diff --git a/.git.backup/objects/70/22fe31d0962ae614893c016465f87fc56da02c b/.git.backup/objects/70/22fe31d0962ae614893c016465f87fc56da02c new file mode 100644 index 0000000..833f417 Binary files /dev/null and b/.git.backup/objects/70/22fe31d0962ae614893c016465f87fc56da02c differ diff --git a/.git.backup/objects/70/9860627054c9c6ec931be1f49afcff1c4485cc b/.git.backup/objects/70/9860627054c9c6ec931be1f49afcff1c4485cc new file mode 100644 index 0000000..d98115b Binary files /dev/null and b/.git.backup/objects/70/9860627054c9c6ec931be1f49afcff1c4485cc differ diff --git a/.git.backup/objects/71/1b8b3e31aa827e1d90b652bf3964b30518771d b/.git.backup/objects/71/1b8b3e31aa827e1d90b652bf3964b30518771d new file mode 100644 index 0000000..07f5f50 Binary files /dev/null and b/.git.backup/objects/71/1b8b3e31aa827e1d90b652bf3964b30518771d differ diff --git a/.git.backup/objects/71/c1e7c472954601ec6f6b66b6e97204195da2dc b/.git.backup/objects/71/c1e7c472954601ec6f6b66b6e97204195da2dc new file mode 100644 index 0000000..746e3f9 Binary files /dev/null and b/.git.backup/objects/71/c1e7c472954601ec6f6b66b6e97204195da2dc differ diff --git a/.git.backup/objects/72/2c09b823521b74affd44dd3bf1346d08364348 b/.git.backup/objects/72/2c09b823521b74affd44dd3bf1346d08364348 new file mode 100644 index 0000000..ae71e78 Binary files /dev/null and b/.git.backup/objects/72/2c09b823521b74affd44dd3bf1346d08364348 differ diff --git a/.git.backup/objects/72/d3dc6b169ec2a651f77b64fb14f69dd022d15e b/.git.backup/objects/72/d3dc6b169ec2a651f77b64fb14f69dd022d15e new file mode 100644 index 0000000..e6ca29d Binary files /dev/null and b/.git.backup/objects/72/d3dc6b169ec2a651f77b64fb14f69dd022d15e differ diff --git a/.git.backup/objects/73/290af20801964053c53864d7d789a08341e775 b/.git.backup/objects/73/290af20801964053c53864d7d789a08341e775 new file mode 100644 index 0000000..d7f6afe Binary files /dev/null and b/.git.backup/objects/73/290af20801964053c53864d7d789a08341e775 differ diff --git a/.git.backup/objects/73/678f6bdf0ff2e6f4ee32316a47a035573bd7db b/.git.backup/objects/73/678f6bdf0ff2e6f4ee32316a47a035573bd7db new file mode 100644 index 0000000..0448c09 Binary files /dev/null and b/.git.backup/objects/73/678f6bdf0ff2e6f4ee32316a47a035573bd7db differ diff --git a/.git.backup/objects/74/602b3ece35cf18c052e8206076a28479c56300 b/.git.backup/objects/74/602b3ece35cf18c052e8206076a28479c56300 new file mode 100644 index 0000000..f897f7c Binary files /dev/null and b/.git.backup/objects/74/602b3ece35cf18c052e8206076a28479c56300 differ diff --git a/.git.backup/objects/75/2ad49c4a721d4e780f16e537ba454017183999 b/.git.backup/objects/75/2ad49c4a721d4e780f16e537ba454017183999 new file mode 100644 index 0000000..f01b3fc Binary files /dev/null and b/.git.backup/objects/75/2ad49c4a721d4e780f16e537ba454017183999 differ diff --git a/.git.backup/objects/76/e13b988ade2580780d2cfda1086d12373eb0d3 b/.git.backup/objects/76/e13b988ade2580780d2cfda1086d12373eb0d3 new file mode 100644 index 0000000..79b661a Binary files /dev/null and b/.git.backup/objects/76/e13b988ade2580780d2cfda1086d12373eb0d3 differ diff --git a/.git.backup/objects/77/1aaf48f5e8c131b664073fc4c6f15ef2ad31f9 b/.git.backup/objects/77/1aaf48f5e8c131b664073fc4c6f15ef2ad31f9 new file mode 100644 index 0000000..1684180 Binary files /dev/null and b/.git.backup/objects/77/1aaf48f5e8c131b664073fc4c6f15ef2ad31f9 differ diff --git a/.git.backup/objects/77/5cb8ac2f1cfc0e4882ae0357f4779036b48416 b/.git.backup/objects/77/5cb8ac2f1cfc0e4882ae0357f4779036b48416 new file mode 100644 index 0000000..5f331a1 Binary files /dev/null and b/.git.backup/objects/77/5cb8ac2f1cfc0e4882ae0357f4779036b48416 differ diff --git a/.git.backup/objects/77/738ee7a2543047cdae22d9087231ef950cf76d b/.git.backup/objects/77/738ee7a2543047cdae22d9087231ef950cf76d new file mode 100644 index 0000000..56b72a5 Binary files /dev/null and b/.git.backup/objects/77/738ee7a2543047cdae22d9087231ef950cf76d differ diff --git a/.git.backup/objects/78/0897c6947b1ddb0e64a383d5be30d5d642de3b b/.git.backup/objects/78/0897c6947b1ddb0e64a383d5be30d5d642de3b new file mode 100644 index 0000000..48681fa Binary files /dev/null and b/.git.backup/objects/78/0897c6947b1ddb0e64a383d5be30d5d642de3b differ diff --git a/.git.backup/objects/79/0dff500a859387e9b036ca53e1e261e2379c67 b/.git.backup/objects/79/0dff500a859387e9b036ca53e1e261e2379c67 new file mode 100644 index 0000000..2c85dcb --- /dev/null +++ b/.git.backup/objects/79/0dff500a859387e9b036ca53e1e261e2379c67 @@ -0,0 +1,2 @@ +x�ÎMNÄ0 @aÖ9E.Pd;Î_…+Ü"‰¨fڎª‰ÛS®ÀöIŸôھ®˰Äü4U›±r†")ÁX5xjݩ÷™¥:bó(‡n �•!6ÿg�Ӟ+…ê|î5ßXZ,Քs|í‡}×)·eûPYìKi²¾}®e¹?·}}µ¹Ì“�€ÌU¯Á¡ÿ 滜÷aki·ó1[ +„‰¼…<;œ1™_•4I˜ \ No newline at end of file diff --git a/.git.backup/objects/79/a323f3935988d79e8c9380356bfdfe8febe467 b/.git.backup/objects/79/a323f3935988d79e8c9380356bfdfe8febe467 new file mode 100644 index 0000000..c7650ff Binary files /dev/null and b/.git.backup/objects/79/a323f3935988d79e8c9380356bfdfe8febe467 differ diff --git a/.git.backup/objects/7a/1f68c8b5463b4d0b476d98be0dcbdeeeeb921a b/.git.backup/objects/7a/1f68c8b5463b4d0b476d98be0dcbdeeeeb921a new file mode 100644 index 0000000..7b2a8fd Binary files /dev/null and b/.git.backup/objects/7a/1f68c8b5463b4d0b476d98be0dcbdeeeeb921a differ diff --git a/.git.backup/objects/7a/63f7be57dcdfd9a1736632cb3d8501b5d710e9 b/.git.backup/objects/7a/63f7be57dcdfd9a1736632cb3d8501b5d710e9 new file mode 100644 index 0000000..1855f50 Binary files /dev/null and b/.git.backup/objects/7a/63f7be57dcdfd9a1736632cb3d8501b5d710e9 differ diff --git a/.git.backup/objects/7a/b27c39d41272286eb7874ab8f1d6c83f9302aa b/.git.backup/objects/7a/b27c39d41272286eb7874ab8f1d6c83f9302aa new file mode 100644 index 0000000..3e7ad83 --- /dev/null +++ b/.git.backup/objects/7a/b27c39d41272286eb7874ab8f1d6c83f9302aa @@ -0,0 +1,2 @@ +xU�OOÃ0 Å9ïSX=³”�¿Ú Á Ä÷4uWkI\%N¥ñÝI…‘C"å÷žýìÆrW7—g ȧ¢¶Ú@ÅM¤–´_Z1NÞTçߨk‡E°EÛ-{Ž‚-ö}õÇ‘K‘ïf®Ñ7Žú0Å'6Äqâ8ñ Z렜¾%:=—êîÖÅÅ3:쨔Ac¾4®ÎDi>’/Ð?‚íK6ÃZe<&Ÿä z�N' \ No newline at end of file diff --git a/.git.backup/objects/a7/fc635bca9dfd137c0a893f3b03c7d18edd0595 b/.git.backup/objects/a7/fc635bca9dfd137c0a893f3b03c7d18edd0595 new file mode 100644 index 0000000..638fbf0 Binary files /dev/null and b/.git.backup/objects/a7/fc635bca9dfd137c0a893f3b03c7d18edd0595 differ diff --git a/.git.backup/objects/a8/611229786dc23ca6af768f0602aee6b47aa27e b/.git.backup/objects/a8/611229786dc23ca6af768f0602aee6b47aa27e new file mode 100644 index 0000000..a3339db Binary files /dev/null and b/.git.backup/objects/a8/611229786dc23ca6af768f0602aee6b47aa27e differ diff --git a/.git.backup/objects/a8/980c05483d4eeed606c8724448292ccbc375d4 b/.git.backup/objects/a8/980c05483d4eeed606c8724448292ccbc375d4 new file mode 100644 index 0000000..3665543 Binary files /dev/null and b/.git.backup/objects/a8/980c05483d4eeed606c8724448292ccbc375d4 differ diff --git a/.git.backup/objects/a8/b0aa31f437d0d0a0334760584dbf4fd31c5c84 b/.git.backup/objects/a8/b0aa31f437d0d0a0334760584dbf4fd31c5c84 new file mode 100644 index 0000000..ccb5fc9 Binary files /dev/null and b/.git.backup/objects/a8/b0aa31f437d0d0a0334760584dbf4fd31c5c84 differ diff --git a/.git.backup/objects/a9/8f848a45495c153c4d201882e54018563baf3b b/.git.backup/objects/a9/8f848a45495c153c4d201882e54018563baf3b new file mode 100644 index 0000000..d7c05f8 Binary files /dev/null and b/.git.backup/objects/a9/8f848a45495c153c4d201882e54018563baf3b differ diff --git a/.git.backup/objects/a9/c17f6fd1672077ef1d624c8df3270b1c39abe3 b/.git.backup/objects/a9/c17f6fd1672077ef1d624c8df3270b1c39abe3 new file mode 100644 index 0000000..afc4379 Binary files /dev/null and b/.git.backup/objects/a9/c17f6fd1672077ef1d624c8df3270b1c39abe3 differ diff --git a/.git.backup/objects/a9/cda2fc6f095e30fa0ce22addf474ae70d18b50 b/.git.backup/objects/a9/cda2fc6f095e30fa0ce22addf474ae70d18b50 new file mode 100644 index 0000000..31d3a1c Binary files /dev/null and b/.git.backup/objects/a9/cda2fc6f095e30fa0ce22addf474ae70d18b50 differ diff --git a/.git.backup/objects/aa/56ec7027965d70bff7fd87e5e4ebe3d58cae84 b/.git.backup/objects/aa/56ec7027965d70bff7fd87e5e4ebe3d58cae84 new file mode 100644 index 0000000..3908db0 Binary files /dev/null and b/.git.backup/objects/aa/56ec7027965d70bff7fd87e5e4ebe3d58cae84 differ diff --git a/.git.backup/objects/ad/3f661014f565e5f3c95b20ea37e83bbe13f846 b/.git.backup/objects/ad/3f661014f565e5f3c95b20ea37e83bbe13f846 new file mode 100644 index 0000000..f2b5dff --- /dev/null +++ b/.git.backup/objects/ad/3f661014f565e5f3c95b20ea37e83bbe13f846 @@ -0,0 +1 @@ +xMʱ €aWû ³�b\ìfA÷/ÒîÈA»ß]é¢ëÿý.²ëíiؽº½"H¨Æ^]ɳ :|ӊRf¦V�ÚZ=l5ÍtÉùþ3«­>oK ,íŸ@Ttp“Ø,ԚËhL\< exê®Fuï †+¢ \ No newline at end of file diff --git a/.git.backup/objects/ad/4f23addd7ee288fe225629bf9e4f006698ac7d b/.git.backup/objects/ad/4f23addd7ee288fe225629bf9e4f006698ac7d new file mode 100644 index 0000000..2870a7b Binary files /dev/null and b/.git.backup/objects/ad/4f23addd7ee288fe225629bf9e4f006698ac7d differ diff --git a/.git.backup/objects/ad/a378fcce22cff6afff974cc25c43b032a250d1 b/.git.backup/objects/ad/a378fcce22cff6afff974cc25c43b032a250d1 new file mode 100644 index 0000000..9d9b0e3 Binary files /dev/null and b/.git.backup/objects/ad/a378fcce22cff6afff974cc25c43b032a250d1 differ diff --git a/.git.backup/objects/ad/c3eadf4e870f11334afb9c8deb25bc69a4c013 b/.git.backup/objects/ad/c3eadf4e870f11334afb9c8deb25bc69a4c013 new file mode 100644 index 0000000..73d8f56 Binary files /dev/null and b/.git.backup/objects/ad/c3eadf4e870f11334afb9c8deb25bc69a4c013 differ diff --git a/.git.backup/objects/ae/2748478493abebd90bb84a95d0a76acee08b7d b/.git.backup/objects/ae/2748478493abebd90bb84a95d0a76acee08b7d new file mode 100644 index 0000000..43d530f Binary files /dev/null and b/.git.backup/objects/ae/2748478493abebd90bb84a95d0a76acee08b7d differ diff --git a/.git.backup/objects/ae/77140201c9bf2ec07dcb4e05e19498924051b7 b/.git.backup/objects/ae/77140201c9bf2ec07dcb4e05e19498924051b7 new file mode 100644 index 0000000..99a179b Binary files /dev/null and b/.git.backup/objects/ae/77140201c9bf2ec07dcb4e05e19498924051b7 differ diff --git a/.git.backup/objects/ae/d3f0133bdc36bbb40d568525ab97ba07f6087f b/.git.backup/objects/ae/d3f0133bdc36bbb40d568525ab97ba07f6087f new file mode 100644 index 0000000..5c14d12 Binary files /dev/null and b/.git.backup/objects/ae/d3f0133bdc36bbb40d568525ab97ba07f6087f differ diff --git a/.git.backup/objects/af/ed0a99d88350c0de3f70250cbe180f93acdecd b/.git.backup/objects/af/ed0a99d88350c0de3f70250cbe180f93acdecd new file mode 100644 index 0000000..7a2c1e8 Binary files /dev/null and b/.git.backup/objects/af/ed0a99d88350c0de3f70250cbe180f93acdecd differ diff --git a/.git.backup/objects/b0/0874958f853478d7a46442ddf4a1efa583eef4 b/.git.backup/objects/b0/0874958f853478d7a46442ddf4a1efa583eef4 new file mode 100644 index 0000000..3f131ae Binary files /dev/null and b/.git.backup/objects/b0/0874958f853478d7a46442ddf4a1efa583eef4 differ diff --git a/.git.backup/objects/b0/6ba9756ea9b2697d13d0d1660fc657e37a3972 b/.git.backup/objects/b0/6ba9756ea9b2697d13d0d1660fc657e37a3972 new file mode 100644 index 0000000..3f80196 Binary files /dev/null and b/.git.backup/objects/b0/6ba9756ea9b2697d13d0d1660fc657e37a3972 differ diff --git a/.git.backup/objects/b1/70ef70bbef758a2bb7543488ddfe2c874bba00 b/.git.backup/objects/b1/70ef70bbef758a2bb7543488ddfe2c874bba00 new file mode 100644 index 0000000..af10261 Binary files /dev/null and b/.git.backup/objects/b1/70ef70bbef758a2bb7543488ddfe2c874bba00 differ diff --git a/.git.backup/objects/b1/d7798b65ed72c44036ed55b7ba7e95daba823c b/.git.backup/objects/b1/d7798b65ed72c44036ed55b7ba7e95daba823c new file mode 100644 index 0000000..a5b308b Binary files /dev/null and b/.git.backup/objects/b1/d7798b65ed72c44036ed55b7ba7e95daba823c differ diff --git a/.git.backup/objects/b2/5f6453d2de18113159a385dbebcf277599a5d7 b/.git.backup/objects/b2/5f6453d2de18113159a385dbebcf277599a5d7 new file mode 100644 index 0000000..5673c06 Binary files /dev/null and b/.git.backup/objects/b2/5f6453d2de18113159a385dbebcf277599a5d7 differ diff --git a/.git.backup/objects/b2/720bc42090f74d6a6a0e466a1f34a81dfa2167 b/.git.backup/objects/b2/720bc42090f74d6a6a0e466a1f34a81dfa2167 new file mode 100644 index 0000000..598abf9 Binary files /dev/null and b/.git.backup/objects/b2/720bc42090f74d6a6a0e466a1f34a81dfa2167 differ diff --git a/.git.backup/objects/b2/c3895e3d67376eea6bfa7bb80a8ffab8cfa841 b/.git.backup/objects/b2/c3895e3d67376eea6bfa7bb80a8ffab8cfa841 new file mode 100644 index 0000000..113217a Binary files /dev/null and b/.git.backup/objects/b2/c3895e3d67376eea6bfa7bb80a8ffab8cfa841 differ diff --git a/.git.backup/objects/b3/0b8b1d7b0e97da311558444c43ac2b3423aa3e b/.git.backup/objects/b3/0b8b1d7b0e97da311558444c43ac2b3423aa3e new file mode 100644 index 0000000..13291d6 Binary files /dev/null and b/.git.backup/objects/b3/0b8b1d7b0e97da311558444c43ac2b3423aa3e differ diff --git a/.git.backup/objects/b3/3ed2290faad4fb941d1efaea8aa99defc38c80 b/.git.backup/objects/b3/3ed2290faad4fb941d1efaea8aa99defc38c80 new file mode 100644 index 0000000..33f98bd Binary files /dev/null and b/.git.backup/objects/b3/3ed2290faad4fb941d1efaea8aa99defc38c80 differ diff --git a/.git.backup/objects/b3/4c4ec8a88e8c974c02f334b9b484ebbe794862 b/.git.backup/objects/b3/4c4ec8a88e8c974c02f334b9b484ebbe794862 new file mode 100644 index 0000000..619c319 Binary files /dev/null and b/.git.backup/objects/b3/4c4ec8a88e8c974c02f334b9b484ebbe794862 differ diff --git a/.git.backup/objects/b3/8f4662546af41e71582e22ebf3fe179b65fc3c b/.git.backup/objects/b3/8f4662546af41e71582e22ebf3fe179b65fc3c new file mode 100644 index 0000000..dac53f3 Binary files /dev/null and b/.git.backup/objects/b3/8f4662546af41e71582e22ebf3fe179b65fc3c differ diff --git a/.git.backup/objects/b4/35295c06a731866f1acc87d87ff2b70616f217 b/.git.backup/objects/b4/35295c06a731866f1acc87d87ff2b70616f217 new file mode 100644 index 0000000..2bfa121 Binary files /dev/null and b/.git.backup/objects/b4/35295c06a731866f1acc87d87ff2b70616f217 differ diff --git a/.git.backup/objects/b4/352c0b1221a9e717503b1f9678b377f53b5ccb b/.git.backup/objects/b4/352c0b1221a9e717503b1f9678b377f53b5ccb new file mode 100644 index 0000000..e3b95c9 Binary files /dev/null and b/.git.backup/objects/b4/352c0b1221a9e717503b1f9678b377f53b5ccb differ diff --git a/.git.backup/objects/b4/3ae07d7e2d389ac09b17909c43446310b12f0e b/.git.backup/objects/b4/3ae07d7e2d389ac09b17909c43446310b12f0e new file mode 100644 index 0000000..be8c308 Binary files /dev/null and b/.git.backup/objects/b4/3ae07d7e2d389ac09b17909c43446310b12f0e differ diff --git a/.git.backup/objects/b4/5f475bb025000c4ebf57423038d2d2ef423e8c b/.git.backup/objects/b4/5f475bb025000c4ebf57423038d2d2ef423e8c new file mode 100644 index 0000000..5d02289 Binary files /dev/null and b/.git.backup/objects/b4/5f475bb025000c4ebf57423038d2d2ef423e8c differ diff --git a/.git.backup/objects/b4/9c02b615f58b366294f50354a13bb7c998a1b0 b/.git.backup/objects/b4/9c02b615f58b366294f50354a13bb7c998a1b0 new file mode 100644 index 0000000..2522ccc Binary files /dev/null and b/.git.backup/objects/b4/9c02b615f58b366294f50354a13bb7c998a1b0 differ diff --git a/.git.backup/objects/b4/e6df4769ae3d7a1d0eae5885fa9d737d07ec73 b/.git.backup/objects/b4/e6df4769ae3d7a1d0eae5885fa9d737d07ec73 new file mode 100644 index 0000000..f464026 Binary files /dev/null and b/.git.backup/objects/b4/e6df4769ae3d7a1d0eae5885fa9d737d07ec73 differ diff --git a/.git.backup/objects/b4/eed5fdc3872ed4e2ed8f4a3d174b8f313b58b7 b/.git.backup/objects/b4/eed5fdc3872ed4e2ed8f4a3d174b8f313b58b7 new file mode 100644 index 0000000..715d5b8 Binary files /dev/null and b/.git.backup/objects/b4/eed5fdc3872ed4e2ed8f4a3d174b8f313b58b7 differ diff --git a/.git.backup/objects/b5/06890214c679a0b76cd5add7d0bf4df01e7c60 b/.git.backup/objects/b5/06890214c679a0b76cd5add7d0bf4df01e7c60 new file mode 100644 index 0000000..61cd0d2 --- /dev/null +++ b/.git.backup/objects/b5/06890214c679a0b76cd5add7d0bf4df01e7c60 @@ -0,0 +1,2 @@ +x•Ž[ +Â0EýÎ*fÊd&�FDÄ-¸‚ÉKK+%uýv Âý:p7-­�ˆñÐ×RÀRæZ,rF 2¤¬«.>öÁW‡5ÚlÔGÖòî0 &‹Kä4bt1“M®zS�KŽ̠dë¯e…ǽM Iù�úöl2Χ´´+hïÉ3zàˆQítÖË?ŽúÊ6wˆ’¦ísBrG佚ÎûLP?¹CÖ \ No newline at end of file diff --git a/.git.backup/objects/b5/54db26b1380a9f07a6ddb18c45b9df50525a74 b/.git.backup/objects/b5/54db26b1380a9f07a6ddb18c45b9df50525a74 new file mode 100644 index 0000000..0c621cb Binary files /dev/null and b/.git.backup/objects/b5/54db26b1380a9f07a6ddb18c45b9df50525a74 differ diff --git a/.git.backup/objects/b5/93963c0dc41b09d3e5c202297d32c80197d668 b/.git.backup/objects/b5/93963c0dc41b09d3e5c202297d32c80197d668 new file mode 100644 index 0000000..94e0203 Binary files /dev/null and b/.git.backup/objects/b5/93963c0dc41b09d3e5c202297d32c80197d668 differ diff --git a/.git.backup/objects/b5/dd6234befeec7b77374af37cbf7032fe37bd13 b/.git.backup/objects/b5/dd6234befeec7b77374af37cbf7032fe37bd13 new file mode 100644 index 0000000..5d47520 --- /dev/null +++ b/.git.backup/objects/b5/dd6234befeec7b77374af37cbf7032fe37bd13 @@ -0,0 +1 @@ +xޱƒ E»ÂW4o¶-D« k‡~€cã á $Z’Xbü÷"Ó=7÷GÎN^ù³½ì”À×)\A|(!;X&Æ[.©pª»ºcPALÏÅΘ[ /·.nv:=ÞLj¡uï ¼o(}>þ@ܚ†U�N`6«¢QؠÕ&–rP2TY•.2=þGÛ/ \ No newline at end of file diff --git a/.git.backup/objects/b5/df74d228cbc74fc8fab11011e6c223e80073bc b/.git.backup/objects/b5/df74d228cbc74fc8fab11011e6c223e80073bc new file mode 100644 index 0000000..33d01ee Binary files /dev/null and b/.git.backup/objects/b5/df74d228cbc74fc8fab11011e6c223e80073bc differ diff --git a/.git.backup/objects/b8/7885cfa4e683a3f2722a62d2de7cd196291958 b/.git.backup/objects/b8/7885cfa4e683a3f2722a62d2de7cd196291958 new file mode 100644 index 0000000..9f5d464 Binary files /dev/null and b/.git.backup/objects/b8/7885cfa4e683a3f2722a62d2de7cd196291958 differ diff --git a/.git.backup/objects/b9/26f72360fb43454fa842f0d89b1b908d03c907 b/.git.backup/objects/b9/26f72360fb43454fa842f0d89b1b908d03c907 new file mode 100644 index 0000000..215db8c Binary files /dev/null and b/.git.backup/objects/b9/26f72360fb43454fa842f0d89b1b908d03c907 differ diff --git a/.git.backup/objects/b9/acb5444160eba32df1604d36a615f5bd65ce6b b/.git.backup/objects/b9/acb5444160eba32df1604d36a615f5bd65ce6b new file mode 100644 index 0000000..c721877 Binary files /dev/null and b/.git.backup/objects/b9/acb5444160eba32df1604d36a615f5bd65ce6b differ diff --git a/.git.backup/objects/b9/dfbefa03acaac295648b385daf85fd7411ecf1 b/.git.backup/objects/b9/dfbefa03acaac295648b385daf85fd7411ecf1 new file mode 100644 index 0000000..773c714 Binary files /dev/null and b/.git.backup/objects/b9/dfbefa03acaac295648b385daf85fd7411ecf1 differ diff --git a/.git.backup/objects/ba/1ae9b5a2b65bc9c309d804574ceb37667059f6 b/.git.backup/objects/ba/1ae9b5a2b65bc9c309d804574ceb37667059f6 new file mode 100644 index 0000000..4bda949 Binary files /dev/null and b/.git.backup/objects/ba/1ae9b5a2b65bc9c309d804574ceb37667059f6 differ diff --git a/.git.backup/objects/bb/86ca92e9039ef55ed7c4c72a01c2ad49f1b323 b/.git.backup/objects/bb/86ca92e9039ef55ed7c4c72a01c2ad49f1b323 new file mode 100644 index 0000000..714b654 Binary files /dev/null and b/.git.backup/objects/bb/86ca92e9039ef55ed7c4c72a01c2ad49f1b323 differ diff --git a/.git.backup/objects/bb/d7b1ccac5d5778a16aebfa1454043cda22b542 b/.git.backup/objects/bb/d7b1ccac5d5778a16aebfa1454043cda22b542 new file mode 100644 index 0000000..60a9231 Binary files /dev/null and b/.git.backup/objects/bb/d7b1ccac5d5778a16aebfa1454043cda22b542 differ diff --git a/.git.backup/objects/bc/72340fa689a307a06201ccfe1d8d213db7442c b/.git.backup/objects/bc/72340fa689a307a06201ccfe1d8d213db7442c new file mode 100644 index 0000000..c4e30c7 Binary files /dev/null and b/.git.backup/objects/bc/72340fa689a307a06201ccfe1d8d213db7442c differ diff --git a/.git.backup/objects/bc/9a3cd5c712ee6895f81f72cbf51c667c2b3015 b/.git.backup/objects/bc/9a3cd5c712ee6895f81f72cbf51c667c2b3015 new file mode 100644 index 0000000..d3f32a1 Binary files /dev/null and b/.git.backup/objects/bc/9a3cd5c712ee6895f81f72cbf51c667c2b3015 differ diff --git a/.git.backup/objects/bd/484308bbc64e385d61a5a2fd4a6a181888a3f0 b/.git.backup/objects/bd/484308bbc64e385d61a5a2fd4a6a181888a3f0 new file mode 100644 index 0000000..70f8b95 Binary files /dev/null and b/.git.backup/objects/bd/484308bbc64e385d61a5a2fd4a6a181888a3f0 differ diff --git a/.git.backup/objects/bd/8a7e7c8a7ccdc2954495a69869aa7643714f02 b/.git.backup/objects/bd/8a7e7c8a7ccdc2954495a69869aa7643714f02 new file mode 100644 index 0000000..3146656 Binary files /dev/null and b/.git.backup/objects/bd/8a7e7c8a7ccdc2954495a69869aa7643714f02 differ diff --git a/.git.backup/objects/be/4a16644f914f2f7eed1b96ac17ae469a0c3fa6 b/.git.backup/objects/be/4a16644f914f2f7eed1b96ac17ae469a0c3fa6 new file mode 100644 index 0000000..20d9dc0 --- /dev/null +++ b/.git.backup/objects/be/4a16644f914f2f7eed1b96ac17ae469a0c3fa6 @@ -0,0 +1,2 @@ +x�ÎMjÃ@ @á¬çº€‹Fóg™²ꢷ�¥qcÛÁŒ ½}}†n|ðt[–¹Åxi{­`½¤äUŒ)J �™ò„ч‰LJ1_)&toÙëÚÀ÷ÑP%©—Ie̬Ö+§ë¯És^¿ªÍpµýý{‘ùõ¡Ûr_ +dß3tÝYÏÁVÿAݏ¯£èóx@H¹ÃÔ‚ÏC²ûdíIU \ No newline at end of file diff --git a/.git.backup/objects/bf/7a100a3be1e9ef3ba5a449ba3103d59475b753 b/.git.backup/objects/bf/7a100a3be1e9ef3ba5a449ba3103d59475b753 new file mode 100644 index 0000000..7a32c08 Binary files /dev/null and b/.git.backup/objects/bf/7a100a3be1e9ef3ba5a449ba3103d59475b753 differ diff --git a/.git.backup/objects/bf/afd64329cebbcdc1cd3c4c5c851e6bade0624e b/.git.backup/objects/bf/afd64329cebbcdc1cd3c4c5c851e6bade0624e new file mode 100644 index 0000000..f9df17f Binary files /dev/null and b/.git.backup/objects/bf/afd64329cebbcdc1cd3c4c5c851e6bade0624e differ diff --git a/.git.backup/objects/bf/f57dbcd0b292904215f3dbc25c0f3d9b010925 b/.git.backup/objects/bf/f57dbcd0b292904215f3dbc25c0f3d9b010925 new file mode 100644 index 0000000..2332669 Binary files /dev/null and b/.git.backup/objects/bf/f57dbcd0b292904215f3dbc25c0f3d9b010925 differ diff --git a/.git.backup/objects/c1/07a27034994e3852f9935566992e22ed03ccd1 b/.git.backup/objects/c1/07a27034994e3852f9935566992e22ed03ccd1 new file mode 100644 index 0000000..6ba8092 Binary files /dev/null and b/.git.backup/objects/c1/07a27034994e3852f9935566992e22ed03ccd1 differ diff --git a/.git.backup/objects/c1/49e63d4bfd03bb092c9755cfb0b048a92c0c61 b/.git.backup/objects/c1/49e63d4bfd03bb092c9755cfb0b048a92c0c61 new file mode 100644 index 0000000..9948a92 --- /dev/null +++ b/.git.backup/objects/c1/49e63d4bfd03bb092c9755cfb0b048a92c0c61 @@ -0,0 +1,3 @@ +xeTMoÛ0 Ý9¿‚Èa§Æ@·[oà =¬–aÀŽ´DÛZeÑ¥ºþ÷#í¤M°›-S�ïƒt¹…ûO÷Ÿ?‡] %Ò|e9r¿ì<‰Ëa*�Ó<¦’ÙWgoPÊ@PSx¡,ÜÁoÄìeBG;{… € .Prtè0”„J ©oà;öÁ½)r˜f7Xߢ¾‰‚®ÃÞáhlúÕ"̪>j0—|…Þ~-ºÛYÛú´ºS›¯1tšŸ¬«d—Þ0Í?Ã$µ. \ No newline at end of file diff --git a/.git.backup/objects/c2/0dbbebd3f0c50a446ba273ce82901fc4268072 b/.git.backup/objects/c2/0dbbebd3f0c50a446ba273ce82901fc4268072 new file mode 100644 index 0000000..c0f7da7 Binary files /dev/null and b/.git.backup/objects/c2/0dbbebd3f0c50a446ba273ce82901fc4268072 differ diff --git a/.git.backup/objects/c2/6548720c3ed7654e25947d6c7ea44809e84f71 b/.git.backup/objects/c2/6548720c3ed7654e25947d6c7ea44809e84f71 new file mode 100644 index 0000000..e3e455f Binary files /dev/null and b/.git.backup/objects/c2/6548720c3ed7654e25947d6c7ea44809e84f71 differ diff --git a/.git.backup/objects/c2/f69f2b3dbb559cb9755a7f489f8e30f67966e9 b/.git.backup/objects/c2/f69f2b3dbb559cb9755a7f489f8e30f67966e9 new file mode 100644 index 0000000..d8a7531 Binary files /dev/null and b/.git.backup/objects/c2/f69f2b3dbb559cb9755a7f489f8e30f67966e9 differ diff --git a/.git.backup/objects/c3/1c975832f40aa64c99810853ecfa051ff8c429 b/.git.backup/objects/c3/1c975832f40aa64c99810853ecfa051ff8c429 new file mode 100644 index 0000000..8bc3ece Binary files /dev/null and b/.git.backup/objects/c3/1c975832f40aa64c99810853ecfa051ff8c429 differ diff --git a/.git.backup/objects/c3/d1d7ffa3173cbab963afe1f8ab966f5be1f8c8 b/.git.backup/objects/c3/d1d7ffa3173cbab963afe1f8ab966f5be1f8c8 new file mode 100644 index 0000000..385fe19 Binary files /dev/null and b/.git.backup/objects/c3/d1d7ffa3173cbab963afe1f8ab966f5be1f8c8 differ diff --git a/.git.backup/objects/c4/23b7317bb386376c45b88f7df02f2b7a3c45c5 b/.git.backup/objects/c4/23b7317bb386376c45b88f7df02f2b7a3c45c5 new file mode 100644 index 0000000..10312c1 Binary files /dev/null and b/.git.backup/objects/c4/23b7317bb386376c45b88f7df02f2b7a3c45c5 differ diff --git a/.git.backup/objects/c4/3c72ffc7ccb27a4c6523a89def70affb029979 b/.git.backup/objects/c4/3c72ffc7ccb27a4c6523a89def70affb029979 new file mode 100644 index 0000000..9d5679a Binary files /dev/null and b/.git.backup/objects/c4/3c72ffc7ccb27a4c6523a89def70affb029979 differ diff --git a/.git.backup/objects/c6/6dd3bd4502f4f6e6e33ae5c3718a219e75fbff b/.git.backup/objects/c6/6dd3bd4502f4f6e6e33ae5c3718a219e75fbff new file mode 100644 index 0000000..e0ff31b Binary files /dev/null and b/.git.backup/objects/c6/6dd3bd4502f4f6e6e33ae5c3718a219e75fbff differ diff --git a/.git.backup/objects/c7/a16eaacd7a00f689ff3cb0d65c90d7b49fb2c2 b/.git.backup/objects/c7/a16eaacd7a00f689ff3cb0d65c90d7b49fb2c2 new file mode 100644 index 0000000..2b057e8 Binary files /dev/null and b/.git.backup/objects/c7/a16eaacd7a00f689ff3cb0d65c90d7b49fb2c2 differ diff --git a/.git.backup/objects/c7/fb58a0ca20bb2cfa7b0d8de8654ca6d63da1e7 b/.git.backup/objects/c7/fb58a0ca20bb2cfa7b0d8de8654ca6d63da1e7 new file mode 100644 index 0000000..a2c9002 --- /dev/null +++ b/.git.backup/objects/c7/fb58a0ca20bb2cfa7b0d8de8654ca6d63da1e7 @@ -0,0 +1 @@ +x]Ì1Â0 …aæž"ʌ�*ƒœÄTV�-ÅV¡·/ Yߧ÷±’.·ëé>¥”­87F�]œ"XÏç?œ¿E¬®£5®ÝD¨¯ OÀÓú c�…KëøV¨¨Žeá�|ך§Ç¶$:s \ No newline at end of file diff --git a/.git.backup/objects/c8/841ffc251022607f126f89db639c378f19cd5d b/.git.backup/objects/c8/841ffc251022607f126f89db639c378f19cd5d new file mode 100644 index 0000000..2f73e7d Binary files /dev/null and b/.git.backup/objects/c8/841ffc251022607f126f89db639c378f19cd5d differ diff --git a/.git.backup/objects/ca/23d3c98b29130c3bd436da02f4b9bf228e25be b/.git.backup/objects/ca/23d3c98b29130c3bd436da02f4b9bf228e25be new file mode 100644 index 0000000..cef69f4 Binary files /dev/null and b/.git.backup/objects/ca/23d3c98b29130c3bd436da02f4b9bf228e25be differ diff --git a/.git.backup/objects/ca/280007c04b340bb071331154f6eaf1a60fd073 b/.git.backup/objects/ca/280007c04b340bb071331154f6eaf1a60fd073 new file mode 100644 index 0000000..d5dc77b Binary files /dev/null and b/.git.backup/objects/ca/280007c04b340bb071331154f6eaf1a60fd073 differ diff --git a/.git.backup/objects/ca/6dfae20673865f3cdb208d0683f725aa0845e2 b/.git.backup/objects/ca/6dfae20673865f3cdb208d0683f725aa0845e2 new file mode 100644 index 0000000..3a6b356 Binary files /dev/null and b/.git.backup/objects/ca/6dfae20673865f3cdb208d0683f725aa0845e2 differ diff --git a/.git.backup/objects/ca/cc952fd83571bb4f56b1f8727bc2a8f7e65ee6 b/.git.backup/objects/ca/cc952fd83571bb4f56b1f8727bc2a8f7e65ee6 new file mode 100644 index 0000000..e67d930 Binary files /dev/null and b/.git.backup/objects/ca/cc952fd83571bb4f56b1f8727bc2a8f7e65ee6 differ diff --git a/.git.backup/objects/ca/ee09d826fa010d3c0b30f887ede4c297f5d99b b/.git.backup/objects/ca/ee09d826fa010d3c0b30f887ede4c297f5d99b new file mode 100644 index 0000000..c6d8a2e Binary files /dev/null and b/.git.backup/objects/ca/ee09d826fa010d3c0b30f887ede4c297f5d99b differ diff --git a/.git.backup/objects/cb/30171c0e1880d2cc7b3625f9294c7fbab6a81f b/.git.backup/objects/cb/30171c0e1880d2cc7b3625f9294c7fbab6a81f new file mode 100644 index 0000000..5418fd2 Binary files /dev/null and b/.git.backup/objects/cb/30171c0e1880d2cc7b3625f9294c7fbab6a81f differ diff --git a/.git.backup/objects/cb/6172dde3821ba1604f0e9d9085fd5bec393fcd b/.git.backup/objects/cb/6172dde3821ba1604f0e9d9085fd5bec393fcd new file mode 100644 index 0000000..4342206 Binary files /dev/null and b/.git.backup/objects/cb/6172dde3821ba1604f0e9d9085fd5bec393fcd differ diff --git a/.git.backup/objects/cb/e89c320f409298163b9b3f2580b11ed4e0bec1 b/.git.backup/objects/cb/e89c320f409298163b9b3f2580b11ed4e0bec1 new file mode 100644 index 0000000..b24aa47 Binary files /dev/null and b/.git.backup/objects/cb/e89c320f409298163b9b3f2580b11ed4e0bec1 differ diff --git a/.git.backup/objects/cd/439df2405f8adfdbb1b663d2dc6888469a1d11 b/.git.backup/objects/cd/439df2405f8adfdbb1b663d2dc6888469a1d11 new file mode 100644 index 0000000..9808877 Binary files /dev/null and b/.git.backup/objects/cd/439df2405f8adfdbb1b663d2dc6888469a1d11 differ diff --git a/.git.backup/objects/cd/4c2c09bd039414d3c4d9f9453348803e265e2e b/.git.backup/objects/cd/4c2c09bd039414d3c4d9f9453348803e265e2e new file mode 100644 index 0000000..ab1b4b2 Binary files /dev/null and b/.git.backup/objects/cd/4c2c09bd039414d3c4d9f9453348803e265e2e differ diff --git a/.git.backup/objects/cd/a2aca05249036be88760935f778e7317f3a836 b/.git.backup/objects/cd/a2aca05249036be88760935f778e7317f3a836 new file mode 100644 index 0000000..7cc6198 Binary files /dev/null and b/.git.backup/objects/cd/a2aca05249036be88760935f778e7317f3a836 differ diff --git a/.git.backup/objects/cd/b9bdeb3a95b232aa0fff4fcd6bc9315f212d3d b/.git.backup/objects/cd/b9bdeb3a95b232aa0fff4fcd6bc9315f212d3d new file mode 100644 index 0000000..a44827f Binary files /dev/null and b/.git.backup/objects/cd/b9bdeb3a95b232aa0fff4fcd6bc9315f212d3d differ diff --git a/.git.backup/objects/cd/fa1738ff844d544ed9696dd1399f768dce45ce b/.git.backup/objects/cd/fa1738ff844d544ed9696dd1399f768dce45ce new file mode 100644 index 0000000..21c4f19 --- /dev/null +++ b/.git.backup/objects/cd/fa1738ff844d544ed9696dd1399f768dce45ce @@ -0,0 +1 @@ +x}‘=OÃ0†™ý+n„ªî‚!™˜Ë^Ùñ%>ձ#ûҤ þ;N¢¢VHx!Œl7›½ø¾�+îÒ=$·3cCÏƼ¾ÆÛRpdà¬⣔Z•§:†ÎÙCa”3û´ϱVC¾µípÓydâücs<Ë©¶\Àëu»É|dx‚ÊàB^~vŽSÙtŒfrL‰>±€Ô(ç0΢æ"ç/� ™óò·ò7¶ò ÿÆi:^­Fëõ¬®gÆ ÔÛí´ ÷L Ìe¯éÁ™ꍀo6r¡±Zí Ç +õm¤8d[Rb|˄ %7,@|Ñyã„XÀVé.ÔCv7TãsÊe*õüMk¥ï•åD±è6ç^-+&w>i#¸±Ἴá̭lǸPå!’G\X�ufÁô©×Ðx3—תtß:È"[)êARƒFƒø6ùŸ™ÕxuGD‰T² ÎXU·:6rކYx+EÈä£p<ßâ8I}(³úÎY €$®°N“3‡Â5l5˜*SN°TÒjE~rfà�YšQ뵒o· AÚÎ aÌsYþ5Ë·ºkéiÛj(”©ÊQy˜ߩòé{äØ5Lº¾¼ ¾%ˆ…f²¨N)úê Ø;f,YþQѯ 8*Ótsû…Ó{œrdéAêŽÛ'æ¶ÄK OA:<í q&•ҷr�®RúðƒÃ3]ªxَ–œrh¨Á™=¿CL#¸ ^©œ|"[ѲÁ â�Èw2ržSUÈdy2'ÆMڗQ&wôf\Ú µÇ,øիC‚­B=§j5º€*ã’–ïCua¹!Ȋ£xæ]Í%·Ÿ¾/¤Õ¦°fñûÇ u‡fV٦±\ù"} Cˆ“–þ­ Źܑ óÝw~‹àÓKÃÜ=ŽôX¨W!õ%J(ÂJÙË<ìòÉ!ŠÝû‘†I`>5ìj: ·ñ›DL¦ޝ/ßÜ÷ºãØÚÎäj¸çq¾ ߄ƒ<Ž…t4ê]₧z˜þ8Óé¸vÊO�pô +n՟·`VD‹€4;‹ $Ã~Ä \w wþñ·µ%‚^úžöÑû3î3WïΓÜwqüzF{ \ No newline at end of file diff --git a/.git.backup/objects/d2/8e64a3c30f3fffaa179e054f2179e07557a0c1 b/.git.backup/objects/d2/8e64a3c30f3fffaa179e054f2179e07557a0c1 new file mode 100644 index 0000000..53a412e Binary files /dev/null and b/.git.backup/objects/d2/8e64a3c30f3fffaa179e054f2179e07557a0c1 differ diff --git a/.git.backup/objects/d3/57630feb47b6a430159128d0ad9d2509e684aa b/.git.backup/objects/d3/57630feb47b6a430159128d0ad9d2509e684aa new file mode 100644 index 0000000..1c7dbe3 Binary files /dev/null and b/.git.backup/objects/d3/57630feb47b6a430159128d0ad9d2509e684aa differ diff --git a/.git.backup/objects/d3/9f1f7869c4356b5f6b57d8eb692af216142c5c b/.git.backup/objects/d3/9f1f7869c4356b5f6b57d8eb692af216142c5c new file mode 100644 index 0000000..db60508 Binary files /dev/null and b/.git.backup/objects/d3/9f1f7869c4356b5f6b57d8eb692af216142c5c differ diff --git a/.git.backup/objects/d3/dc360f15c9f3ef45de105d3b7dee842a0c387d b/.git.backup/objects/d3/dc360f15c9f3ef45de105d3b7dee842a0c387d new file mode 100644 index 0000000..a75bd67 Binary files /dev/null and b/.git.backup/objects/d3/dc360f15c9f3ef45de105d3b7dee842a0c387d differ diff --git a/.git.backup/objects/d3/f57d0f8d4bc5b61164bb915acc0191a9bb7e13 b/.git.backup/objects/d3/f57d0f8d4bc5b61164bb915acc0191a9bb7e13 new file mode 100644 index 0000000..eb10c58 Binary files /dev/null and b/.git.backup/objects/d3/f57d0f8d4bc5b61164bb915acc0191a9bb7e13 differ diff --git a/.git.backup/objects/d4/4984a956dfbdef7c1a9c4e1ae368cfe4d93b9e b/.git.backup/objects/d4/4984a956dfbdef7c1a9c4e1ae368cfe4d93b9e new file mode 100644 index 0000000..6e747d1 Binary files /dev/null and b/.git.backup/objects/d4/4984a956dfbdef7c1a9c4e1ae368cfe4d93b9e differ diff --git a/.git.backup/objects/d4/8a91d187e497cf90d5305c53bedd9615bf59d1 b/.git.backup/objects/d4/8a91d187e497cf90d5305c53bedd9615bf59d1 new file mode 100644 index 0000000..5f64026 Binary files /dev/null and b/.git.backup/objects/d4/8a91d187e497cf90d5305c53bedd9615bf59d1 differ diff --git a/.git.backup/objects/d5/1db4c55a4ebb125f1933c74f14112dbf22040e b/.git.backup/objects/d5/1db4c55a4ebb125f1933c74f14112dbf22040e new file mode 100644 index 0000000..4a55849 Binary files /dev/null and b/.git.backup/objects/d5/1db4c55a4ebb125f1933c74f14112dbf22040e differ diff --git a/.git.backup/objects/d5/26561dfb3d8978ef49e22b0aa5f0147db31302 b/.git.backup/objects/d5/26561dfb3d8978ef49e22b0aa5f0147db31302 new file mode 100644 index 0000000..33926b1 Binary files /dev/null and b/.git.backup/objects/d5/26561dfb3d8978ef49e22b0aa5f0147db31302 differ diff --git a/.git.backup/objects/d5/7dc8f6d614dbada2da6b2e0ffdb7267be3362f b/.git.backup/objects/d5/7dc8f6d614dbada2da6b2e0ffdb7267be3362f new file mode 100644 index 0000000..fc8ee95 Binary files /dev/null and b/.git.backup/objects/d5/7dc8f6d614dbada2da6b2e0ffdb7267be3362f differ diff --git a/.git.backup/objects/d6/06e2dba6fd0e9798ca1a8cc4935f8c923a0d8d b/.git.backup/objects/d6/06e2dba6fd0e9798ca1a8cc4935f8c923a0d8d new file mode 100644 index 0000000..8f79c42 Binary files /dev/null and b/.git.backup/objects/d6/06e2dba6fd0e9798ca1a8cc4935f8c923a0d8d differ diff --git a/.git.backup/objects/d7/12d8e9ea6fcdabbcf34fbe74438565e025be5c b/.git.backup/objects/d7/12d8e9ea6fcdabbcf34fbe74438565e025be5c new file mode 100644 index 0000000..fd6c6f5 Binary files /dev/null and b/.git.backup/objects/d7/12d8e9ea6fcdabbcf34fbe74438565e025be5c differ diff --git a/.git.backup/objects/d7/dc45fd4c0eb1d607f89c0310829316a7e202d6 b/.git.backup/objects/d7/dc45fd4c0eb1d607f89c0310829316a7e202d6 new file mode 100644 index 0000000..4aac5c7 Binary files /dev/null and b/.git.backup/objects/d7/dc45fd4c0eb1d607f89c0310829316a7e202d6 differ diff --git a/.git.backup/objects/d7/e02706e10ff9437d042c07b7676cc969f55a5e b/.git.backup/objects/d7/e02706e10ff9437d042c07b7676cc969f55a5e new file mode 100644 index 0000000..d40e2bb Binary files /dev/null and b/.git.backup/objects/d7/e02706e10ff9437d042c07b7676cc969f55a5e differ diff --git a/.git.backup/objects/d8/795a70c7b8e362c42044a50253ba03648b3259 b/.git.backup/objects/d8/795a70c7b8e362c42044a50253ba03648b3259 new file mode 100644 index 0000000..d38f499 --- /dev/null +++ b/.git.backup/objects/d8/795a70c7b8e362c42044a50253ba03648b3259 @@ -0,0 +1,2 @@ +x+)JMU°´`040031QpLÉÕSpÌÉÉ/ÊLÍËKUp,JÌKIÍ,Ê/ÖËMax6÷ÑìM¯9{wk®+�ºqèIOðD¨F÷¢Ҥ¼Ôô¢Ä$\ +C°,~ \ No newline at end of file diff --git a/.git.backup/objects/d8/7cc792f8aa883cbc72d7810c512b6a64e384be b/.git.backup/objects/d8/7cc792f8aa883cbc72d7810c512b6a64e384be new file mode 100644 index 0000000..5a4b670 Binary files /dev/null and b/.git.backup/objects/d8/7cc792f8aa883cbc72d7810c512b6a64e384be differ diff --git a/.git.backup/objects/d8/a551cad924a3236926f0413f2da77d1e002450 b/.git.backup/objects/d8/a551cad924a3236926f0413f2da77d1e002450 new file mode 100644 index 0000000..528ecbe Binary files /dev/null and b/.git.backup/objects/d8/a551cad924a3236926f0413f2da77d1e002450 differ diff --git a/.git.backup/objects/d9/569a0e8c37ff63d0f4b681ca629fe8a009dcf5 b/.git.backup/objects/d9/569a0e8c37ff63d0f4b681ca629fe8a009dcf5 new file mode 100644 index 0000000..4ebbab8 Binary files /dev/null and b/.git.backup/objects/d9/569a0e8c37ff63d0f4b681ca629fe8a009dcf5 differ diff --git a/.git.backup/objects/da/08adc183f7e8018b28e57c55ac42fbd98d8482 b/.git.backup/objects/da/08adc183f7e8018b28e57c55ac42fbd98d8482 new file mode 100644 index 0000000..481f9d0 Binary files /dev/null and b/.git.backup/objects/da/08adc183f7e8018b28e57c55ac42fbd98d8482 differ diff --git a/.git.backup/objects/da/0dc26c8e0cc3ba7313dfa4d81c85a911857c75 b/.git.backup/objects/da/0dc26c8e0cc3ba7313dfa4d81c85a911857c75 new file mode 100644 index 0000000..d1e6212 Binary files /dev/null and b/.git.backup/objects/da/0dc26c8e0cc3ba7313dfa4d81c85a911857c75 differ diff --git a/.git.backup/objects/da/f4ba404836369f679f047d0bcf8776cfbb990f b/.git.backup/objects/da/f4ba404836369f679f047d0bcf8776cfbb990f new file mode 100644 index 0000000..8dd6fd9 Binary files /dev/null and b/.git.backup/objects/da/f4ba404836369f679f047d0bcf8776cfbb990f differ diff --git a/.git.backup/objects/db/00edaeb72b19e4ce94970278abb7c052002bc4 b/.git.backup/objects/db/00edaeb72b19e4ce94970278abb7c052002bc4 new file mode 100644 index 0000000..8c0d1e1 Binary files /dev/null and b/.git.backup/objects/db/00edaeb72b19e4ce94970278abb7c052002bc4 differ diff --git a/.git.backup/objects/dc/13edba148de379236b23d2bd3e7adc8e54fbe2 b/.git.backup/objects/dc/13edba148de379236b23d2bd3e7adc8e54fbe2 new file mode 100644 index 0000000..1ff6777 Binary files /dev/null and b/.git.backup/objects/dc/13edba148de379236b23d2bd3e7adc8e54fbe2 differ diff --git a/.git.backup/objects/dc/d14558c4bf56ec547977827e2e660763f85608 b/.git.backup/objects/dc/d14558c4bf56ec547977827e2e660763f85608 new file mode 100644 index 0000000..11ab79e Binary files /dev/null and b/.git.backup/objects/dc/d14558c4bf56ec547977827e2e660763f85608 differ diff --git a/.git.backup/objects/dd/0774e8c0a83b0db1977ecb95c91486ff38abbb b/.git.backup/objects/dd/0774e8c0a83b0db1977ecb95c91486ff38abbb new file mode 100644 index 0000000..f654080 Binary files /dev/null and b/.git.backup/objects/dd/0774e8c0a83b0db1977ecb95c91486ff38abbb differ diff --git a/.git.backup/objects/dd/346fd67d937bcb10a2cf5677fbc41a7ab66708 b/.git.backup/objects/dd/346fd67d937bcb10a2cf5677fbc41a7ab66708 new file mode 100644 index 0000000..6b6b3d7 Binary files /dev/null and b/.git.backup/objects/dd/346fd67d937bcb10a2cf5677fbc41a7ab66708 differ diff --git a/.git.backup/objects/dd/b7c0c6ba13dd5c86a7f053f4b8afe4e6434a12 b/.git.backup/objects/dd/b7c0c6ba13dd5c86a7f053f4b8afe4e6434a12 new file mode 100644 index 0000000..06a24e5 --- /dev/null +++ b/.git.backup/objects/dd/b7c0c6ba13dd5c86a7f053f4b8afe4e6434a12 @@ -0,0 +1,2 @@ +x5‘±nÜ0DSû+æ×p'R�“Îp±÷Dú(.±¤,è¾>Ãs°!1;ûf8e›ðùññÓï(~“+RƒÀµØ^4`I)ׄš\ºb�†lïÚÐ “Ë™l눜 ª¡�ñC‡É.¥Ó`:Уâûª.9à‹¯䄟jo‰ÊEW+Ǹטò R¾m«ôh©4ürkUçnÞp1Ǭiåj×,=•e0 ®ù8?Ðýt½ÞßëÖ?Á‹Ä8‚ #¢;ëy6ì?ÆýéqP´ގç„Ɖ-‰Oî¿4Ca \ No newline at end of file diff --git a/.git.backup/objects/e3/0f14d26d1fed9987aa6081b9a3d7dbe7410e84 b/.git.backup/objects/e3/0f14d26d1fed9987aa6081b9a3d7dbe7410e84 new file mode 100644 index 0000000..b6eed40 Binary files /dev/null and b/.git.backup/objects/e3/0f14d26d1fed9987aa6081b9a3d7dbe7410e84 differ diff --git a/.git.backup/objects/e3/21a6597066aaf51661a04e32638f77ea8d085e b/.git.backup/objects/e3/21a6597066aaf51661a04e32638f77ea8d085e new file mode 100644 index 0000000..cadfd85 Binary files /dev/null and b/.git.backup/objects/e3/21a6597066aaf51661a04e32638f77ea8d085e differ diff --git a/.git.backup/objects/e3/8b9197e8333d92c0de689fed7d9939c648baa6 b/.git.backup/objects/e3/8b9197e8333d92c0de689fed7d9939c648baa6 new file mode 100644 index 0000000..563052b Binary files /dev/null and b/.git.backup/objects/e3/8b9197e8333d92c0de689fed7d9939c648baa6 differ diff --git a/.git.backup/objects/e4/78615e6e0808a19f3b94b1e3fcb94fb04bd22d b/.git.backup/objects/e4/78615e6e0808a19f3b94b1e3fcb94fb04bd22d new file mode 100644 index 0000000..324aad4 Binary files /dev/null and b/.git.backup/objects/e4/78615e6e0808a19f3b94b1e3fcb94fb04bd22d differ diff --git a/.git.backup/objects/e5/01aea307db32f4432d20028ee810b0ace595d0 b/.git.backup/objects/e5/01aea307db32f4432d20028ee810b0ace595d0 new file mode 100644 index 0000000..1baf98d Binary files /dev/null and b/.git.backup/objects/e5/01aea307db32f4432d20028ee810b0ace595d0 differ diff --git a/.git.backup/objects/e5/162c12491bfbb2a22ed1d03ec8a9057d27c15d b/.git.backup/objects/e5/162c12491bfbb2a22ed1d03ec8a9057d27c15d new file mode 100644 index 0000000..bc22d18 Binary files /dev/null and b/.git.backup/objects/e5/162c12491bfbb2a22ed1d03ec8a9057d27c15d differ diff --git a/.git.backup/objects/e5/6477332ee254bed08f7a5c7fe1052668d996f7 b/.git.backup/objects/e5/6477332ee254bed08f7a5c7fe1052668d996f7 new file mode 100644 index 0000000..30d2b08 Binary files /dev/null and b/.git.backup/objects/e5/6477332ee254bed08f7a5c7fe1052668d996f7 differ diff --git a/.git.backup/objects/e6/5563bfbdcab2218dc0508d5362e7ab644d1b00 b/.git.backup/objects/e6/5563bfbdcab2218dc0508d5362e7ab644d1b00 new file mode 100644 index 0000000..52b1115 Binary files /dev/null and b/.git.backup/objects/e6/5563bfbdcab2218dc0508d5362e7ab644d1b00 differ diff --git a/.git.backup/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/.git.backup/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 new file mode 100644 index 0000000..7112238 Binary files /dev/null and b/.git.backup/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 differ diff --git a/.git.backup/objects/e6/bc9e28adc44b188f8709f3bcb6148a603e5813 b/.git.backup/objects/e6/bc9e28adc44b188f8709f3bcb6148a603e5813 new file mode 100644 index 0000000..ce2dbd6 Binary files /dev/null and b/.git.backup/objects/e6/bc9e28adc44b188f8709f3bcb6148a603e5813 differ diff --git a/.git.backup/objects/e6/d93724597cca1f8c25d2df86fd0ee0c335b695 b/.git.backup/objects/e6/d93724597cca1f8c25d2df86fd0ee0c335b695 new file mode 100644 index 0000000..8f7a35e Binary files /dev/null and b/.git.backup/objects/e6/d93724597cca1f8c25d2df86fd0ee0c335b695 differ diff --git a/.git.backup/objects/e7/dfc7564be1e7e532227eec51e3a558e1b0ad0f b/.git.backup/objects/e7/dfc7564be1e7e532227eec51e3a558e1b0ad0f new file mode 100644 index 0000000..237221a Binary files /dev/null and b/.git.backup/objects/e7/dfc7564be1e7e532227eec51e3a558e1b0ad0f differ diff --git a/.git.backup/objects/e9/672fe382e27e94c4f9402d2fd947bfbeb7ec9a b/.git.backup/objects/e9/672fe382e27e94c4f9402d2fd947bfbeb7ec9a new file mode 100644 index 0000000..2728ada Binary files /dev/null and b/.git.backup/objects/e9/672fe382e27e94c4f9402d2fd947bfbeb7ec9a differ diff --git a/.git.backup/objects/ea/16c34150227f2e40a8658c69f7978a1a534be2 b/.git.backup/objects/ea/16c34150227f2e40a8658c69f7978a1a534be2 new file mode 100644 index 0000000..3b14b7c Binary files /dev/null and b/.git.backup/objects/ea/16c34150227f2e40a8658c69f7978a1a534be2 differ diff --git a/.git.backup/objects/ea/63f978c7c2ab11eea83c70076e7dce04d1a2eb b/.git.backup/objects/ea/63f978c7c2ab11eea83c70076e7dce04d1a2eb new file mode 100644 index 0000000..a9fffda Binary files /dev/null and b/.git.backup/objects/ea/63f978c7c2ab11eea83c70076e7dce04d1a2eb differ diff --git a/.git.backup/objects/eb/3e0588328a3e607daf45a9a11440fd6f0d7c0c b/.git.backup/objects/eb/3e0588328a3e607daf45a9a11440fd6f0d7c0c new file mode 100644 index 0000000..2ec8da9 Binary files /dev/null and b/.git.backup/objects/eb/3e0588328a3e607daf45a9a11440fd6f0d7c0c differ diff --git a/.git.backup/objects/eb/c5de83906440fd8808891a7d8560d978a67783 b/.git.backup/objects/eb/c5de83906440fd8808891a7d8560d978a67783 new file mode 100644 index 0000000..cfeaa05 Binary files /dev/null and b/.git.backup/objects/eb/c5de83906440fd8808891a7d8560d978a67783 differ diff --git a/.git.backup/objects/ec/3428e8dc7c11b885e71ee93631255551372e33 b/.git.backup/objects/ec/3428e8dc7c11b885e71ee93631255551372e33 new file mode 100644 index 0000000..ab4b1d2 Binary files /dev/null and b/.git.backup/objects/ec/3428e8dc7c11b885e71ee93631255551372e33 differ diff --git a/.git.backup/objects/ec/749512e7c3a312813ca06f199c1d4a8c6449df b/.git.backup/objects/ec/749512e7c3a312813ca06f199c1d4a8c6449df new file mode 100644 index 0000000..0964079 Binary files /dev/null and b/.git.backup/objects/ec/749512e7c3a312813ca06f199c1d4a8c6449df differ diff --git a/.git.backup/objects/ec/907abe4425e98f9af557a7ac651b2192651ed6 b/.git.backup/objects/ec/907abe4425e98f9af557a7ac651b2192651ed6 new file mode 100644 index 0000000..c741477 Binary files /dev/null and b/.git.backup/objects/ec/907abe4425e98f9af557a7ac651b2192651ed6 differ diff --git a/.git.backup/objects/ed/8301adffb2fd5b92861c45bd49d1e9ce80acc5 b/.git.backup/objects/ed/8301adffb2fd5b92861c45bd49d1e9ce80acc5 new file mode 100644 index 0000000..867d933 Binary files /dev/null and b/.git.backup/objects/ed/8301adffb2fd5b92861c45bd49d1e9ce80acc5 differ diff --git a/.git.backup/objects/ed/d571e1b4f8ae88e2f7de584526445442002da4 b/.git.backup/objects/ed/d571e1b4f8ae88e2f7de584526445442002da4 new file mode 100644 index 0000000..cdc5f6e --- /dev/null +++ b/.git.backup/objects/ed/d571e1b4f8ae88e2f7de584526445442002da4 @@ -0,0 +1,2 @@ +x•O9N1$žWt¶`wû”Ð +‘ñ‚v۞�=Èkþ�@P*©T‡JÎ֎ èaŽRÀ…‚ÈZY¬ÉdåU&Œ"¬Èi³sÅÛ7�Ò'dŠUW\CÖ%[|%¹ˆ\Q¯Š•?JÁ G,QQ,Õڒ½ñkI r6«.ÒÆ?óvøxkŸ/,¹+ýº7>¾žälWÐޓCòÚÀ£2JmK]OfùOf{/c/�w¹ÁåÇ~ôç5Ò/pôyBãûjÜ~ð�VX \ No newline at end of file diff --git a/.git.backup/objects/ef/368c4759aa29a7f3aecc45f89152d40a082743 b/.git.backup/objects/ef/368c4759aa29a7f3aecc45f89152d40a082743 new file mode 100644 index 0000000..e37f587 Binary files /dev/null and b/.git.backup/objects/ef/368c4759aa29a7f3aecc45f89152d40a082743 differ diff --git a/.git.backup/objects/f1/0903d3e5b43700bb2b8a1f006d1b3d3ae9bd70 b/.git.backup/objects/f1/0903d3e5b43700bb2b8a1f006d1b3d3ae9bd70 new file mode 100644 index 0000000..958beef Binary files /dev/null and b/.git.backup/objects/f1/0903d3e5b43700bb2b8a1f006d1b3d3ae9bd70 differ diff --git a/.git.backup/objects/f1/f8f46b8ffe969a4e8b7c49bf356d9ee9936db0 b/.git.backup/objects/f1/f8f46b8ffe969a4e8b7c49bf356d9ee9936db0 new file mode 100644 index 0000000..645f02a Binary files /dev/null and b/.git.backup/objects/f1/f8f46b8ffe969a4e8b7c49bf356d9ee9936db0 differ diff --git a/.git.backup/objects/f3/4a3b6ffd71b10b5c3fcb777d39e9ae46588571 b/.git.backup/objects/f3/4a3b6ffd71b10b5c3fcb777d39e9ae46588571 new file mode 100644 index 0000000..eda5e5a Binary files /dev/null and b/.git.backup/objects/f3/4a3b6ffd71b10b5c3fcb777d39e9ae46588571 differ diff --git a/.git.backup/objects/f3/726f9ef1355e739443b5317e7aa07a2dd93cc4 b/.git.backup/objects/f3/726f9ef1355e739443b5317e7aa07a2dd93cc4 new file mode 100644 index 0000000..dd594ef Binary files /dev/null and b/.git.backup/objects/f3/726f9ef1355e739443b5317e7aa07a2dd93cc4 differ diff --git a/.git.backup/objects/f3/84879bf4595353f09667247ab6ac24cc73167d b/.git.backup/objects/f3/84879bf4595353f09667247ab6ac24cc73167d new file mode 100644 index 0000000..e0ee649 Binary files /dev/null and b/.git.backup/objects/f3/84879bf4595353f09667247ab6ac24cc73167d differ diff --git a/.git.backup/objects/f3/fd15b60fd54f3159c9cdbe3935b6080ffa17b8 b/.git.backup/objects/f3/fd15b60fd54f3159c9cdbe3935b6080ffa17b8 new file mode 100644 index 0000000..2cfcb96 Binary files /dev/null and b/.git.backup/objects/f3/fd15b60fd54f3159c9cdbe3935b6080ffa17b8 differ diff --git a/.git.backup/objects/f4/5b0e85216d47b42c9e87366efdf26f286bae72 b/.git.backup/objects/f4/5b0e85216d47b42c9e87366efdf26f286bae72 new file mode 100644 index 0000000..edc4870 Binary files /dev/null and b/.git.backup/objects/f4/5b0e85216d47b42c9e87366efdf26f286bae72 differ diff --git a/.git.backup/objects/f4/72bdc9b251deb7cdef4f2ebbcde45c9ed3dbc2 b/.git.backup/objects/f4/72bdc9b251deb7cdef4f2ebbcde45c9ed3dbc2 new file mode 100644 index 0000000..15864ce Binary files /dev/null and b/.git.backup/objects/f4/72bdc9b251deb7cdef4f2ebbcde45c9ed3dbc2 differ diff --git a/.git.backup/objects/f4/b97c2cc2cd76408b19aa47421c204a12a925ba b/.git.backup/objects/f4/b97c2cc2cd76408b19aa47421c204a12a925ba new file mode 100644 index 0000000..376db6f Binary files /dev/null and b/.git.backup/objects/f4/b97c2cc2cd76408b19aa47421c204a12a925ba differ diff --git a/.git.backup/objects/f5/142631828b04a55ae85ba0c0897625555944d4 b/.git.backup/objects/f5/142631828b04a55ae85ba0c0897625555944d4 new file mode 100644 index 0000000..380e521 Binary files /dev/null and b/.git.backup/objects/f5/142631828b04a55ae85ba0c0897625555944d4 differ diff --git a/.git.backup/objects/f5/25152337163a3397aab8239ba94236ad1433b0 b/.git.backup/objects/f5/25152337163a3397aab8239ba94236ad1433b0 new file mode 100644 index 0000000..3ede61a Binary files /dev/null and b/.git.backup/objects/f5/25152337163a3397aab8239ba94236ad1433b0 differ diff --git a/.git.backup/objects/f6/27f3c83cab79382f9928f7091545bf9fa60dc9 b/.git.backup/objects/f6/27f3c83cab79382f9928f7091545bf9fa60dc9 new file mode 100644 index 0000000..13fa230 Binary files /dev/null and b/.git.backup/objects/f6/27f3c83cab79382f9928f7091545bf9fa60dc9 differ diff --git a/.git.backup/objects/f6/7ce7d32b38f72fda1e640c6c8227871431913c b/.git.backup/objects/f6/7ce7d32b38f72fda1e640c6c8227871431913c new file mode 100644 index 0000000..e2d3ded Binary files /dev/null and b/.git.backup/objects/f6/7ce7d32b38f72fda1e640c6c8227871431913c differ diff --git a/.git.backup/objects/f6/b2371c377bb241a16d8e96e30fe516af4d1d46 b/.git.backup/objects/f6/b2371c377bb241a16d8e96e30fe516af4d1d46 new file mode 100644 index 0000000..8bef761 Binary files /dev/null and b/.git.backup/objects/f6/b2371c377bb241a16d8e96e30fe516af4d1d46 differ diff --git a/.git.backup/objects/f6/d519d6fbaf1eb145d9f19772fefc4980e57bca b/.git.backup/objects/f6/d519d6fbaf1eb145d9f19772fefc4980e57bca new file mode 100644 index 0000000..e20a0ec --- /dev/null +++ b/.git.backup/objects/f6/d519d6fbaf1eb145d9f19772fefc4980e57bca @@ -0,0 +1,2 @@ +x•�ÛmÃ0 Eó­)¸€ RJ2Š¢È +™€¢ä&H†Üùãò{�sp®®½ßX‡§±µâÈ'±1Ô&±.ÅQöEýÂ>/­j «nÉÍK¶ö´””‚Ôdsð)jJ„M™±hÔʇRŒìãºnp9÷»ƒoÑúDúýër{|éÚ€btÁsÎ&ôˆæX�²Ñ>a̿ì�Eô¾¿f°hyB7‘?΁g—ÍICÒ \ No newline at end of file diff --git a/.git.backup/objects/f7/f4494f1cc9e61704b2cef1e44e497b94be04b2 b/.git.backup/objects/f7/f4494f1cc9e61704b2cef1e44e497b94be04b2 new file mode 100644 index 0000000..e9234ee Binary files /dev/null and b/.git.backup/objects/f7/f4494f1cc9e61704b2cef1e44e497b94be04b2 differ diff --git a/.git.backup/objects/f8/be6e1afad28cd41894ff249ba69915acc43049 b/.git.backup/objects/f8/be6e1afad28cd41894ff249ba69915acc43049 new file mode 100644 index 0000000..37e488d Binary files /dev/null and b/.git.backup/objects/f8/be6e1afad28cd41894ff249ba69915acc43049 differ diff --git a/.git.backup/objects/fa/1d09cba9b9701170ed2bfe20b96863f2d8bef9 b/.git.backup/objects/fa/1d09cba9b9701170ed2bfe20b96863f2d8bef9 new file mode 100644 index 0000000..962fd0c --- /dev/null +++ b/.git.backup/objects/fa/1d09cba9b9701170ed2bfe20b96863f2d8bef9 @@ -0,0 +1,3 @@ +xU’AoÛ0 …wίà­'@wz늢=ŀv¤%:â&‰%Ç˿%Ù +†!“ï=~Ôe„/·Ÿ?í÷û]åéÞÕGÌ~ç©8干ä;x \Ú9p†2££]뺖 º5VNråL¹b„֗°˜¢ �A2`qdo´r=—VZæ@J‡nø˜H1z¸ׄÁ³‡,0FY¡ž T³ …jK¥Q/=rnvט0YÌd)©€Lp&Բù]|2�LP퍑|W6V‚À¥Šž[[W`\*°=tI¢­\`¤–ѱšL² ݩE¤x¢rAÁlX¨vÿ ÚxkÓj•‡¿)ýïզµ¼÷PR3‘ibG-QkÚ&hÅ|  ¥¾±ÒoáÙäqáè�K?o}ŽkŸêuu*kސ$ü)zùÙ +ÿ³%‘œ)Ú.½ÑÇi‚Uôà(v‹úßYٳmù�+zЬ�]°Û2r-Fx¹ý@áB C²Á~œP™à �—t‰¯‹#ÁwRÿz€GÍ. ס£x&êܯË7“W©8Z+֪èÚÝn \\<Á+–° Á{Yþ,¶åofhhÛlo6úÎrø _Õ"ƒ \ No newline at end of file diff --git a/.git.backup/objects/fa/a489579462ccbfa1acc373eb83d6036c697860 b/.git.backup/objects/fa/a489579462ccbfa1acc373eb83d6036c697860 new file mode 100644 index 0000000..7d08720 Binary files /dev/null and b/.git.backup/objects/fa/a489579462ccbfa1acc373eb83d6036c697860 differ diff --git a/.git.backup/objects/fb/3efb1dd6d31e59ed35760ea9b823bf78b61bb6 b/.git.backup/objects/fb/3efb1dd6d31e59ed35760ea9b823bf78b61bb6 new file mode 100644 index 0000000..88953ad Binary files /dev/null and b/.git.backup/objects/fb/3efb1dd6d31e59ed35760ea9b823bf78b61bb6 differ diff --git a/.git.backup/objects/fb/a4a05b8cea126deb1e537697d7f27ae9b78143 b/.git.backup/objects/fb/a4a05b8cea126deb1e537697d7f27ae9b78143 new file mode 100644 index 0000000..d7514d1 Binary files /dev/null and b/.git.backup/objects/fb/a4a05b8cea126deb1e537697d7f27ae9b78143 differ diff --git a/.git.backup/objects/fc/2080d218334ce8626d0324b92dd7e4fc038b2c b/.git.backup/objects/fc/2080d218334ce8626d0324b92dd7e4fc038b2c new file mode 100644 index 0000000..e872780 --- /dev/null +++ b/.git.backup/objects/fc/2080d218334ce8626d0324b92dd7e4fc038b2c @@ -0,0 +1,2 @@ +x�ÎAjÄ0 @Ѯ} +] E–eËC骋ÞB±•6Ì$‚30·Û~Ý×ué@Ìoý0ƒ)KαÎʖrÐ0“i¢Fͤ6__bvw=l됐%X.µ’Æè3rP2™ƒg&F›ë¤NÏþ»ðeϦ×eû¶¶ÀEkÛÐþ¬ºÜÞë¾~€)”s�ѽêk°Û?¨{èyë0i½ž÷) Bð8Fƒ¸?$èH÷ \ No newline at end of file diff --git a/.git.backup/objects/fc/4d7710bcce04dd39f8a17401266b36c8e59696 b/.git.backup/objects/fc/4d7710bcce04dd39f8a17401266b36c8e59696 new file mode 100644 index 0000000..5e06239 Binary files /dev/null and b/.git.backup/objects/fc/4d7710bcce04dd39f8a17401266b36c8e59696 differ diff --git a/.git.backup/objects/fc/f84a4714287323f55ef82600a9409c8a341643 b/.git.backup/objects/fc/f84a4714287323f55ef82600a9409c8a341643 new file mode 100644 index 0000000..9a7325b Binary files /dev/null and b/.git.backup/objects/fc/f84a4714287323f55ef82600a9409c8a341643 differ diff --git a/.git.backup/objects/fc/f8915a9c746b7277b0c5251f68b43d6b0fc8d4 b/.git.backup/objects/fc/f8915a9c746b7277b0c5251f68b43d6b0fc8d4 new file mode 100644 index 0000000..48d5934 Binary files /dev/null and b/.git.backup/objects/fc/f8915a9c746b7277b0c5251f68b43d6b0fc8d4 differ diff --git a/.git.backup/objects/fd/04aeb7b7787b24b516f29ca64620a3cbbb13d3 b/.git.backup/objects/fd/04aeb7b7787b24b516f29ca64620a3cbbb13d3 new file mode 100644 index 0000000..d2e8bb7 Binary files /dev/null and b/.git.backup/objects/fd/04aeb7b7787b24b516f29ca64620a3cbbb13d3 differ diff --git a/.git.backup/objects/fd/36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 b/.git.backup/objects/fd/36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 new file mode 100644 index 0000000..c07302b --- /dev/null +++ b/.git.backup/objects/fd/36c3efbb5ab1c0ea800eb654c75b60b77f3cf7 @@ -0,0 +1,2 @@ +x•ŽQjÃ0 @÷íSè’]Éqcô +;�äÈ[iݔàìüÍïëÁƒW×ޯb·±¹çj ˂IÙfk5©‹ñ™„)ó„ȴh OÝü1 Y³T£°dáèl×ҲE‰èž1֦êA÷ñ»nð}é·Z—Ò×O×ëý½®ý(OX8á1ö8þŸ&üé~`Zoûs†ˆQNx0ь","airplay":"","alert-circle":"","alert-octagon":"","alert-triangle":"","align-center":"","align-justify":"","align-left":"","align-right":"","anchor":"","aperture":"","archive":"","arrow-down-circle":"","arrow-down-left":"","arrow-down-right":"","arrow-down":"","arrow-left-circle":"","arrow-left":"","arrow-right-circle":"","arrow-right":"","arrow-up-circle":"","arrow-up-left":"","arrow-up-right":"","arrow-up":"","at-sign":"","award":"","bar-chart-2":"","bar-chart":"","battery-charging":"","battery":"","bell-off":"","bell":"","bluetooth":"","bold":"","book-open":"","book":"","bookmark":"","box":"","briefcase":"","calendar":"","camera-off":"","camera":"","cast":"","check-circle":"","check-square":"","check":"","chevron-down":"","chevron-left":"","chevron-right":"","chevron-up":"","chevrons-down":"","chevrons-left":"","chevrons-right":"","chevrons-up":"","chrome":"","circle":"","clipboard":"","clock":"","cloud-drizzle":"","cloud-lightning":"","cloud-off":"","cloud-rain":"","cloud-snow":"","cloud":"","code":"","codepen":"","codesandbox":"","coffee":"","columns":"","command":"","compass":"","copy":"","corner-down-left":"","corner-down-right":"","corner-left-down":"","corner-left-up":"","corner-right-down":"","corner-right-up":"","corner-up-left":"","corner-up-right":"","cpu":"","credit-card":"","crop":"","crosshair":"","database":"","delete":"","disc":"","divide-circle":"","divide-square":"","divide":"","dollar-sign":"","download-cloud":"","download":"","dribbble":"","droplet":"","edit-2":"","edit-3":"","edit":"","external-link":"","eye-off":"","eye":"","facebook":"","fast-forward":"","feather":"","figma":"","file-minus":"","file-plus":"","file-text":"","file":"","film":"","filter":"","flag":"","folder-minus":"","folder-plus":"","folder":"","framer":"","frown":"","gift":"","git-branch":"","git-commit":"","git-merge":"","git-pull-request":"","github":"","gitlab":"","globe":"","grid":"","hard-drive":"","hash":"","headphones":"","heart":"","help-circle":"","hexagon":"","home":"","image":"","inbox":"","info":"","instagram":"","italic":"","key":"","layers":"","layout":"","life-buoy":"","link-2":"","link":"","linkedin":"","list":"","loader":"","lock":"","log-in":"","log-out":"","mail":"","map-pin":"","map":"","maximize-2":"","maximize":"","meh":"","menu":"","message-circle":"","message-square":"","mic-off":"","mic":"","minimize-2":"","minimize":"","minus-circle":"","minus-square":"","minus":"","monitor":"","moon":"","more-horizontal":"","more-vertical":"","mouse-pointer":"","move":"","music":"","navigation-2":"","navigation":"","octagon":"","package":"","paperclip":"","pause-circle":"","pause":"","pen-tool":"","percent":"","phone-call":"","phone-forwarded":"","phone-incoming":"","phone-missed":"","phone-off":"","phone-outgoing":"","phone":"","pie-chart":"","play-circle":"","play":"","plus-circle":"","plus-square":"","plus":"","pocket":"","power":"","printer":"","radio":"","refresh-ccw":"","refresh-cw":"","repeat":"","rewind":"","rotate-ccw":"","rotate-cw":"","rss":"","save":"","scissors":"","search":"","send":"","server":"","settings":"","share-2":"","share":"","shield-off":"","shield":"","shopping-bag":"","shopping-cart":"","shuffle":"","sidebar":"","skip-back":"","skip-forward":"","slack":"","slash":"","sliders":"","smartphone":"","smile":"","speaker":"","square":"","star":"","stop-circle":"","sun":"","sunrise":"","sunset":"","tablet":"","tag":"","target":"","terminal":"","thermometer":"","thumbs-down":"","thumbs-up":"","toggle-left":"","toggle-right":"","tool":"","trash-2":"","trash":"","trello":"","trending-down":"","trending-up":"","triangle":"","truck":"","tv":"","twitch":"","twitter":"","type":"","umbrella":"","underline":"","unlock":"","upload-cloud":"","upload":"","user-check":"","user-minus":"","user-plus":"","user-x":"","user":"","users":"","video-off":"","video":"","voicemail":"","volume-1":"","volume-2":"","volume-x":"","volume":"","watch":"","wifi-off":"","wifi":"","wind":"","x-circle":"","x-octagon":"","x-square":"","x":"","youtube":"","zap-off":"","zap":"","zoom-in":"","zoom-out":""}; + +/***/ }), + +/***/ "./node_modules/classnames/dedupe.js": +/*!*******************************************!*\ + !*** ./node_modules/classnames/dedupe.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/* global define */ + +(function () { + + var classNames = (function () { + // don't inherit from Object so we can skip hasOwnProperty check later + // http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232 + function StorageObject() {} + StorageObject.prototype = Object.create(null); + + function _parseArray (resultSet, array) { + var length = array.length; + + for (var i = 0; i < length; ++i) { + _parse(resultSet, array[i]); + } + } + + var hasOwn = {}.hasOwnProperty; + + function _parseNumber (resultSet, num) { + resultSet[num] = true; + } + + function _parseObject (resultSet, object) { + for (var k in object) { + if (hasOwn.call(object, k)) { + // set value to false instead of deleting it to avoid changing object structure + // https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions + resultSet[k] = !!object[k]; + } + } + } + + var SPACE = /\s+/; + function _parseString (resultSet, str) { + var array = str.split(SPACE); + var length = array.length; + + for (var i = 0; i < length; ++i) { + resultSet[array[i]] = true; + } + } + + function _parse (resultSet, arg) { + if (!arg) return; + var argType = typeof arg; + + // 'foo bar' + if (argType === 'string') { + _parseString(resultSet, arg); + + // ['foo', 'bar', ...] + } else if (Array.isArray(arg)) { + _parseArray(resultSet, arg); + + // { 'foo': true, ... } + } else if (argType === 'object') { + _parseObject(resultSet, arg); + + // '130' + } else if (argType === 'number') { + _parseNumber(resultSet, arg); + } + } + + function _classNames () { + // don't leak arguments + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var len = arguments.length; + var args = Array(len); + for (var i = 0; i < len; i++) { + args[i] = arguments[i]; + } + + var classSet = new StorageObject(); + _parseArray(classSet, args); + + var list = []; + + for (var k in classSet) { + if (classSet[k]) { + list.push(k); + } + } + + return list.join(' '); + } + + return _classNames; + })(); + + if (typeof module !== 'undefined' && module.exports) { + module.exports = classNames; + } else { + // register as 'classnames', consistent with npm package name + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return classNames; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } +}()); + + +/***/ }), + +/***/ "./node_modules/core-js/es/array/from.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/es/array/from.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js"); +__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); + +module.exports = path.Array.from; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-function.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/a-function.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/an-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +module.exports = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-from.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-from.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); + +// `Array.from` method +// https://tc39.github.io/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iteratorMethod = getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + result = new C(); + for (;!(step = iterator.next()).done; index++) { + createProperty(result, index, mapping + ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) + : step.value + ); + } + } else { + length = toLength(O.length); + result = new C(length); + for (;length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-includes.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-includes.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); + +// `Array.prototype.{ indexOf, includes }` methods implementation +// false -> Array#indexOf +// https://tc39.github.io/ecma262/#sec-array.prototype.indexof +// true -> Array#includes +// https://tc39.github.io/ecma262/#sec-array.prototype.includes +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/bind-context.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/bind-context.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); + +// optional / simple context binding +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); + throw error; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line no-throw-literal + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof-raw.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/classof-raw.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/classof.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +module.exports = function (target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/correct-prototype-getter.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-iterator-constructor.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property-descriptor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/create-property.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-iterator.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); + +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { + hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return nativeIterator.call(this); }; + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + hide(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + return methods; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/descriptors.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/descriptors.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// Thank's IE8 for his funny defineProperty +module.exports = !fails(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/document-create-element.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/document-create-element.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var exist = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return exist ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/enum-bug-keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/export.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/export.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + hide(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fails.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/internals/fails.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-to-string.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/function-to-string.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); + +module.exports = shared('native-function-to-string', Function.toString); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator-method.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator-method.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/global.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/global.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var O = 'object'; +var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line no-undef + check(typeof globalThis == O && globalThis) || + check(typeof window == O && window) || + check(typeof self == O && self) || + check(typeof global == O && global) || + // eslint-disable-next-line no-new-func + Function('return this')(); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))); + +/***/ }), + +/***/ "./node_modules/core-js/internals/has.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/internals/has.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; + +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hidden-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/hidden-keys.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hide.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/hide.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/html.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/html.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +var document = global.document; + +module.exports = document && document.documentElement; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ie8-dom-define.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +// Thank's IE8 for his funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/indexed-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/indexed-object.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +var split = ''.split; + +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split.call(it, '') : Object(it); +} : Object; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/internal-state.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/internal-state.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP) { + var store = new WeakMap(); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function (it, metadata) { + wmset.call(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store, it) || {}; + }; + has = function (it) { + return wmhas.call(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + hide(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return objectHas(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array-iterator-method.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-forced.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-forced.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-pure.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/is-pure.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = false; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators-core.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterators-core.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +var returnThis = function () { return this; }; + +// `%IteratorPrototype%` object +// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +if (IteratorPrototype == undefined) IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/iterators.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-symbol.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/native-symbol.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + // eslint-disable-next-line no-undef + return !String(Symbol()); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-weak-map.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/native-weak-map.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); + +var WeakMap = global.WeakMap; + +module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-create.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-create.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var IE_PROTO = sharedKey('IE_PROTO'); + +var PROTOTYPE = 'prototype'; +var Empty = function () { /* empty */ }; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var length = enumBugKeys.length; + var lt = '<'; + var script = 'script'; + var gt = '>'; + var js = 'java' + script + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = String(js); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; + return createDict(); +}; + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : defineProperties(result, Properties); +}; + +hiddenKeys[IE_PROTO] = true; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-properties.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-properties.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); + +module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var i = 0; + var key; + while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-property.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); + +var nativeDefineProperty = Object.defineProperty; + +exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); + +var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); + +var IE_PROTO = sharedKey('IE_PROTO'); +var ObjectPrototype = Object.prototype; + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys-internal.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys-internal.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var arrayIndexOf = arrayIncludes(false); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : nativePropertyIsEnumerable; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-set-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js"); + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var correctSetter = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + correctSetter = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + validateSetPrototypeOfArguments(O, proto); + if (correctSetter) setter.call(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/own-keys.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/own-keys.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +var Reflect = global.Reflect; + +// all object keys, includes non-enumerable and symbols +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/path.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/path.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/redefine.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/redefine.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + +var getInternalState = InternalStateModule.get; +var enforceInternalState = InternalStateModule.enforce; +var TEMPLATE = String(nativeFunctionToString).split('toString'); + +shared('inspectSource', function (it) { + return nativeFunctionToString.call(it); +}); + +(module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); + enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + if (O === global) { + if (simple) O[key] = value; + else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else hide(O, key, value); +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/require-object-coercible.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/require-object-coercible.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// `RequireObjectCoercible` abstract operation +// https://tc39.github.io/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-global.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/set-global.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); + +module.exports = function (key, value) { + try { + hide(global, key, value); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-to-string-tag.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-key.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/shared-key.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/shared.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || setGlobal(SHARED, {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.1.3', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-at.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/string-at.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +// CONVERT_TO_STRING: true -> String#at +// CONVERT_TO_STRING: false -> String#codePointAt +module.exports = function (that, pos, CONVERT_TO_STRING) { + var S = String(requireObjectCoercible(that)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-absolute-index.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-absolute-index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). +module.exports = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-indexed-object.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-indexed-object.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-integer.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/to-integer.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var ceil = Math.ceil; +var floor = Math.floor; + +// `ToInteger` abstract operation +// https://tc39.github.io/ecma262/#sec-tointeger +module.exports = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-length.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-length.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.github.io/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + +// `ToObject` abstract operation +// https://tc39.github.io/ecma262/#sec-toobject +module.exports = function (argument) { + return Object(requireObjectCoercible(argument)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/to-primitive.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/to-primitive.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +// 7.1.1 ToPrimitive(input [, PreferredType]) +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/uid.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/internals/uid.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var id = 0; +var postfix = Math.random(); + +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! + \*******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +module.exports = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) { + throw TypeError("Can't set " + String(proto) + ' as a prototype'); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/well-known-symbol.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); + +var Symbol = global.Symbol; +var store = shared('wks'); + +module.exports = function (name) { + return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] + || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array.from.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.from.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + Array.from(iterable); +}); + +// `Array.from` method +// https://tc39.github.io/ecma262/#sec-array.from +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); + + +/***/ }), + +/***/ "./node_modules/core-js/modules/es.string.iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.iterator.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = codePointAt(string, index, true); + state.index += point.length; + return { value: point, done: false }; +}); + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "./src/default-attrs.json": +/*!********************************!*\ + !*** ./src/default-attrs.json ***! + \********************************/ +/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ +/***/ (function(module) { + +module.exports = {"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}; + +/***/ }), + +/***/ "./src/icon.js": +/*!*********************!*\ + !*** ./src/icon.js ***! + \*********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); + +var _dedupe2 = _interopRequireDefault(_dedupe); + +var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json"); + +var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Icon = function () { + function Icon(name, contents) { + var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + _classCallCheck(this, Icon); + + this.name = name; + this.contents = contents; + this.tags = tags; + this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name }); + } + + /** + * Create an SVG string. + * @param {Object} attrs + * @returns {string} + */ + + + _createClass(Icon, [{ + key: 'toSvg', + value: function toSvg() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); + + return '' + this.contents + ''; + } + + /** + * Return string representation of an `Icon`. + * + * Added for backward compatibility. If old code expects `feather.icons.` + * to be a string, `toString()` will get implicitly called. + * + * @returns {string} + */ + + }, { + key: 'toString', + value: function toString() { + return this.contents; + } + }]); + + return Icon; +}(); + +/** + * Convert attributes object to string of HTML attributes. + * @param {Object} attrs + * @returns {string} + */ + + +function attrsToString(attrs) { + return Object.keys(attrs).map(function (key) { + return key + '="' + attrs[key] + '"'; + }).join(' '); +} + +exports.default = Icon; + +/***/ }), + +/***/ "./src/icons.js": +/*!**********************!*\ + !*** ./src/icons.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js"); + +var _icon2 = _interopRequireDefault(_icon); + +var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json"); + +var _icons2 = _interopRequireDefault(_icons); + +var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json"); + +var _tags2 = _interopRequireDefault(_tags); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = Object.keys(_icons2.default).map(function (key) { + return new _icon2.default(key, _icons2.default[key], _tags2.default[key]); +}).reduce(function (object, icon) { + object[icon.name] = icon; + return object; +}, {}); + +/***/ }), + +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); + +var _icons2 = _interopRequireDefault(_icons); + +var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js"); + +var _toSvg2 = _interopRequireDefault(_toSvg); + +var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js"); + +var _replace2 = _interopRequireDefault(_replace); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; + +/***/ }), + +/***/ "./src/replace.js": +/*!************************!*\ + !*** ./src/replace.js ***! + \************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */ + + +var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); + +var _dedupe2 = _interopRequireDefault(_dedupe); + +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); + +var _icons2 = _interopRequireDefault(_icons); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Replace all HTML elements that have a `data-feather` attribute with SVG markup + * corresponding to the element's `data-feather` attribute value. + * @param {Object} attrs + */ +function replace() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (typeof document === 'undefined') { + throw new Error('`feather.replace()` only works in a browser environment.'); + } + + var elementsToReplace = document.querySelectorAll('[data-feather]'); + + Array.from(elementsToReplace).forEach(function (element) { + return replaceElement(element, attrs); + }); +} + +/** + * Replace a single HTML element with SVG markup + * corresponding to the element's `data-feather` attribute value. + * @param {HTMLElement} element + * @param {Object} attrs + */ +function replaceElement(element) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var elementAttrs = getAttrs(element); + var name = elementAttrs['data-feather']; + delete elementAttrs['data-feather']; + + var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); + var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml'); + var svgElement = svgDocument.querySelector('svg'); + + element.parentNode.replaceChild(svgElement, element); +} + +/** + * Get the attributes of an HTML element. + * @param {HTMLElement} element + * @returns {Object} + */ +function getAttrs(element) { + return Array.from(element.attributes).reduce(function (attrs, attr) { + attrs[attr.name] = attr.value; + return attrs; + }, {}); +} + +exports.default = replace; + +/***/ }), + +/***/ "./src/tags.json": +/*!***********************!*\ + !*** ./src/tags.json ***! + \***********************/ +/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ +/***/ (function(module) { + +module.exports = {"activity":["pulse","health","action","motion"],"airplay":["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],"anchor":[],"archive":["index","box"],"at-sign":["mention","at","email","message"],"award":["achievement","badge"],"aperture":["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],"battery":["power","electricity"],"battery-charging":["power","electricity"],"bell":["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],"bluetooth":["wireless"],"book-open":["read","library"],"book":["read","dictionary","booklet","magazine","library"],"bookmark":["read","clip","marker","tag"],"box":["cube"],"briefcase":["work","bag","baggage","folder"],"calendar":["date"],"camera":["photo"],"cast":["chromecast","airplay"],"circle":["off","zero","record"],"clipboard":["copy"],"clock":["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],"cloud":["weather"],"codepen":["logo"],"codesandbox":["logo"],"code":["source","programming"],"coffee":["drink","cup","mug","tea","cafe","hot","beverage"],"columns":["layout"],"command":["keyboard","cmd","terminal","prompt"],"compass":["navigation","safari","travel","direction"],"copy":["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"cpu":["processor","technology"],"credit-card":["purchase","payment","cc"],"crop":["photo","image"],"crosshair":["aim","target"],"database":["storage","memory"],"delete":["remove"],"disc":["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],"droplet":["water"],"edit":["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],"eye":["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],"facebook":["logo","social"],"fast-forward":["music"],"figma":["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],"film":["movie","video"],"filter":["funnel","hopper"],"flag":["report"],"folder-minus":["directory"],"folder-plus":["directory"],"folder":["directory"],"framer":["logo","design","tool"],"frown":["emoji","face","bad","sad","emotion"],"gift":["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],"github":["logo","version control"],"gitlab":["logo","version control"],"globe":["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],"hash":["hashtag","number","pound"],"headphones":["music","audio","sound"],"heart":["like","love","emotion"],"help-circle":["question mark"],"hexagon":["shape","node.js","logo"],"home":["house","living"],"image":["picture"],"inbox":["email"],"instagram":["logo","camera"],"key":["password","login","authentication","secure"],"layers":["stack"],"layout":["window","webpage"],"life-bouy":["help","life ring","support"],"link":["chain","url"],"link-2":["chain","url"],"linkedin":["logo","social media"],"list":["options"],"lock":["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],"mail":["email","message"],"map-pin":["location","navigation","travel","marker"],"map":["location","navigation","travel"],"maximize":["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],"meh":["emoji","face","neutral","emotion"],"menu":["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],"mic":["record","sound","listen"],"minimize":["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],"minus":["subtract"],"monitor":["tv","screen","display"],"moon":["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],"move":["arrows"],"music":["note"],"navigation":["location","travel"],"navigation-2":["location","travel"],"octagon":["stop"],"package":["box","container"],"paperclip":["attachment"],"pause":["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],"percent":["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],"phone":["call"],"play":["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],"plus":["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],"pocket":["logo","save"],"power":["on","off"],"printer":["fax","office","device"],"radio":["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],"repeat":["loop","arrows"],"rewind":["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],"rss":["feed","subscribe"],"save":["floppy disk"],"scissors":["cut"],"search":["find","magnifier","magnifying glass"],"send":["message","mail","email","paper airplane","paper aeroplane"],"settings":["cog","edit","gear","preferences"],"share-2":["network","connections"],"shield":["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],"shuffle":["music"],"skip-back":["music"],"skip-forward":["music"],"slack":["logo"],"slash":["ban","no"],"sliders":["settings","controls"],"smartphone":["cellphone","device"],"smile":["emoji","face","happy","good","emotion"],"speaker":["audio","music"],"star":["bookmark","favorite","like"],"stop-circle":["media","music"],"sun":["brightness","weather","light"],"sunrise":["weather","time","morning","day"],"sunset":["weather","time","evening","night"],"tablet":["device"],"tag":["label"],"target":["logo","bullseye"],"terminal":["code","command line","prompt"],"thermometer":["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],"tool":["settings","spanner"],"trash":["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],"triangle":["delta"],"truck":["delivery","van","shipping","transport","lorry"],"tv":["television","stream"],"twitch":["logo"],"twitter":["logo","social"],"type":["text"],"umbrella":["rain","weather"],"unlock":["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],"user":["person","account"],"users":["group"],"video-off":["camera","movie","film"],"video":["camera","movie","film"],"voicemail":["phone"],"volume":["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],"watch":["clock","time"],"wifi-off":["disabled"],"wifi":["connection","signal","wireless"],"wind":["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],"x":["cancel","close","delete","remove","times","clear"],"youtube":["logo","video","play"],"zap-off":["flash","camera","lightning"],"zap":["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}; + +/***/ }), + +/***/ "./src/to-svg.js": +/*!***********************!*\ + !*** ./src/to-svg.js ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); + +var _icons2 = _interopRequireDefault(_icons); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Create an SVG string. + * @deprecated + * @param {string} name + * @param {Object} attrs + * @returns {string} + */ +function toSvg(name) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.'); + + if (!name) { + throw new Error('The required `key` (icon name) parameter is missing.'); + } + + if (!_icons2.default[name]) { + throw new Error('No icon matching \'' + name + '\'. See the complete list of icons at https://feathericons.com'); + } + + return _icons2.default[name].toSvg(attrs); +} + +exports.default = toSvg; + +/***/ }), + +/***/ 0: +/*!**************************************************!*\ + !*** multi core-js/es/array/from ./src/index.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js"); +module.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */"./src/index.js"); + + +/***/ }) + +/******/ }); +}); + +}); + +var utils = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitForResolvedLinks = exports.resolvedLinksComplete = exports.addRenderedMarkdownButton = exports.RenderedMarkdownModal = exports.saveViewSide = exports.openView = exports.linkedQ = exports.openOrSwitch = exports.stripMD = exports.addMD = exports.createNewMDNote = exports.hoverPreview = exports.isInVault = exports.getSelectionFromCurrFile = exports.getSelectionFromEditor = exports.copy = exports.getAvailablePathForAttachments = exports.base64ToArrayBuffer = exports.addFeatherIcon = exports.addAllFeatherIcons = exports.wait = void 0; +/** + * This module contains various utility functions commonly used in Obsidian plugins. + * @module obsidian-community-lib + */ + + +/** + * You can await this Function to delay execution + * + * @param delay The delay in ms + */ +async function wait(delay) { + return new Promise((resolve) => setTimeout(resolve, delay)); +} +exports.wait = wait; +/** + * Adds all official Feather Icons to Obsidian. + * https://feathericons.com/ + * + * @param attr SVG Attributes for the Icon. The default should work for most usecases. + */ +function addAllFeatherIcons(attr = { viewBox: "0 0 24 24", width: "100", height: "100" }) { + Object.values(feather.icons).forEach((i) => { + const svg = i.toSvg(attr); + (0, obsidian_1__default["default"].addIcon)(`feather-${i.name}`, svg); + }); +} +exports.addAllFeatherIcons = addAllFeatherIcons; +/** + * Adds a specific Feather Icon to Obsidian. + * + * @param name official Name of the Icon (https://feathericons.com/) + * @param attr SVG Attributes for the Icon. The default should work for most usecases. + * @returns {string} Icon name + */ +function addFeatherIcon(name, attr = { viewBox: "0 0 24 24", width: "100", height: "100" }) { + if (feather.icons[name]) { + const iconName = `feather-${name}`; + (0, obsidian_1__default["default"].addIcon)(iconName, feather.icons[name].toSvg(attr)); + return iconName; + } + else { + throw Error(`This Icon (${name}) doesn't exist in the Feather Library.`); + } +} +exports.addFeatherIcon = addFeatherIcon; +/** + * Convert a base64 String to an ArrayBuffer. + * You can then use the ArrayBuffer to save the asset to disk. + * + * @param base64 base64 string to be converted. + * @returns ArrayBuffer + */ +function base64ToArrayBuffer(base64) { + const binary_string = window.atob(base64); + const len = binary_string.length; + let bytes = new Uint8Array(len); + for (let i = 0; i < len; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes.buffer; +} +exports.base64ToArrayBuffer = base64ToArrayBuffer; +/** + * This is a helper method for an undocumented API of Obsidian. + * + * @param vault You can get this via `this.app.vault` + * @param fileName The Filename for your Attachment + * @param format The Fileformat of your Attachment + * @param sourceFile The Sourcefile from where the Attachment gets added, this is needed because the Attachment Folder might be different based on where it gets inserted. + * @returns The Attachment Path + */ +function getAvailablePathForAttachments(vault, fileName, format, sourceFile) { + //@ts-expect-error + return vault.getAvailablePathForAttachments(fileName, format, sourceFile); +} +exports.getAvailablePathForAttachments = getAvailablePathForAttachments; +/** + * Copy `content` to the users clipboard. + * + * @param {string} content The content to be copied to clipboard. + * @param {() => any} success The callback to run when text is successfully copied. Default throws a new `Notice` + * @param {(reason?) => any} failure The callback to run when text was not able to be copied. Default throws a new `Notice`, and console logs the error.` + */ +async function copy(content, success = () => new obsidian_1__default["default"].Notice("Copied to clipboard"), failure = (reason) => { + new obsidian_1__default["default"].Notice("Could not copy to clipboard"); + console.log({ reason }); +}) { + await navigator.clipboard.writeText(content).then(success, failure); +} +exports.copy = copy; +/** + * Given an editor, check if something is selected and return that selection, otherwise return the entire content of the editor + * @param {Editor} editor + */ +function getSelectionFromEditor(editor) { + if (editor.somethingSelected()) { + return editor.getSelection(); + } + else { + return editor.getValue(); + } +} +exports.getSelectionFromEditor = getSelectionFromEditor; +/** + * Check if something is selected in the current file and return that selection, otherwise return the entire content of the current file. + * @param {App} app + * @param {boolean} [cached=true] Use `cachedRead` or `read`. `cachedRead` by default. + */ +async function getSelectionFromCurrFile(app, cached = true) { + const text = window?.getSelection()?.toString(); + if (text) { + return text; + } + else { + const currFile = app.workspace.getActiveFile(); + if (currFile instanceof obsidian_1__default["default"].TFile) { + if (cached) { + return await app.vault.cachedRead(currFile); + } + else { + return await app.vault.read(currFile); + } + } + else { + new obsidian_1__default["default"].Notice("You must be focused on a markdown file."); + } + } +} +exports.getSelectionFromCurrFile = getSelectionFromCurrFile; +/** + * Check if `noteName` is the name of a note that exists in the vault. + * @param {App} app + * @param {string} noteName Basename of the note to search for. + * @param {string} [sourcePath=""] Optional file path to start searching from. Default is the current file. + * @returns boolean + */ +const isInVault = (app, noteName, sourcePath = "") => !!app.metadataCache.getFirstLinkpathDest(noteName, sourcePath); +exports.isInVault = isInVault; +/** + * When hovering a link going to `to`, show the Obsidian hover-preview of that note. + * + * You probably have to hold down `Ctrl` when hovering the link for the preview to appear! + * @param {MouseEvent} event + * @param {YourView} view The view with the link being hovered + * @param {string} to The basename of the note to preview. Not necessary if the element being hovered has `to` as its `innerText` + * @template YourView The ViewType of your view + * @returns void + */ +function hoverPreview(event, view, to) { + const targetEl = event.target; + const linkText = to ?? targetEl.innerText; + view.app.workspace.trigger("hover-link", { + event, + source: view.getViewType(), + hoverParent: view, + targetEl, + linkText, + }); +} +exports.hoverPreview = hoverPreview; +/** + * Create a new markdown note named `newName` in the user's preffered new-note-folder. + * @param {App} app + * @param {string} newName Name of new note (with or without '.md') + * @param {string} [currFilePath=""] File path of the current note. Use an empty string if there is no active file. + * @returns {Promise} new TFile + */ +async function createNewMDNote(app, newName, currFilePath = "") { + const newFileFolder = app.fileManager.getNewFileParent(currFilePath).path; + if (!newName.endsWith(".md")) { + newName += ".md"; + } + const newFilePath = (0, obsidian_1__default["default"].normalizePath)(`${newFileFolder}${newFileFolder === "/" ? "" : "/"}${newName}.md`); + return await app.vault.create(newFilePath, ""); +} +exports.createNewMDNote = createNewMDNote; +/** + * Add '.md' to a `noteName` if it isn't already there. + * @param {string} noteName with or without '.md' on the end. + * @returns {string} noteName with '.md' on the end. + */ +const addMD = (noteName) => { + let withMD = noteName.slice(); + if (!withMD.endsWith(".md")) { + withMD += ".md"; + } + return withMD; +}; +exports.addMD = addMD; +/** + * Strip '.md' off the end of a note name to get its basename. + * + * Works with the edgecase where a note has '.md' in its basename: `Obsidian.md.md`, for example. + * @param {string} noteName with or without '.md' on the end. + * @returns {string} noteName without '.md' + */ +const stripMD = (noteName) => noteName.split(".md").slice(0, -1).join(".md"); +exports.stripMD = stripMD; +/** + * When clicking a link, check if that note is already open in another leaf, and switch to that leaf, if so. Otherwise, open the note in a new pane. + * @param {App} app + * @param {string} dest Basename of note to open to open + * @param {MouseEvent} event + * @param {{createNewFile:boolean}} [options={createNewFile:true}] Whether or not to create `dest` file if it doesn't exist. If `false`, simply return from the function. + * @returns Promise + */ +async function openOrSwitch(app, dest, event, options = { createNewFile: true }) { + const { workspace } = app; + const destStripped = (0, exports.stripMD)(dest); + let destFile = app.metadataCache.getFirstLinkpathDest(destStripped, ""); + // If dest doesn't exist, make it + if (!destFile) { + if (options.createNewFile) { + destFile = await createNewMDNote(app, destStripped); + } + else + return; + } + // Check if it's already open + const leavesWithDestAlreadyOpen = []; + // For all open leaves, if the leave's basename is equal to the link destination, rather activate that leaf instead of opening it in two panes + workspace.iterateAllLeaves((leaf) => { + if (leaf.view instanceof obsidian_1__default["default"].MarkdownView) { + if (leaf.view?.file?.basename === destStripped) { + leavesWithDestAlreadyOpen.push(leaf); + } + } + }); + // Rather switch to it if it is open + if (leavesWithDestAlreadyOpen.length > 0) { + workspace.setActiveLeaf(leavesWithDestAlreadyOpen[0]); + } + else { + // @ts-ignore + const mode = app.vault.getConfig("defaultViewMode"); + const leaf = event.ctrlKey || event.getModifierState("Meta") + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(destFile, { active: true, mode }); + } +} +exports.openOrSwitch = openOrSwitch; +/** + * Given a list of resolved links from app.metadataCache, check if `from` has a link to `to` + * @param {ResolvedLinks} resolvedLinks + * @param {string} from Note name with link leaving (With or without '.md') + * @param {string} to Note name with link arriving (With or without '.md') + * @param {boolean} [directed=true] Only check if `from` has a link to `to`. If not directed, check in both directions + */ +function linkedQ(resolvedLinks, from, to, directed = true) { + if (!from.endsWith(".md")) { + from += ".md"; + } + if (!to.endsWith(".md")) { + to += ".md"; + } + const fromTo = resolvedLinks[from]?.hasOwnProperty(to); + if (!fromTo && !directed) { + const toFrom = resolvedLinks[to]?.hasOwnProperty(from); + return toFrom; + } + else + return fromTo; +} +exports.linkedQ = linkedQ; +/** + * Open your view on the chosen `side` if it isn't already open + * @param {App} app + * @param {string} viewType + * @param {Constructor} viewClass The class constructor of your view + * @param {"left"|"right"} [side="right"] + * @returns {Promise} + */ +async function openView(app, viewType, viewClass, side = "right") { + let leaf = null; + for (leaf of app.workspace.getLeavesOfType(viewType)) { + if (leaf.view instanceof viewClass) { + return; + } + await leaf.setViewState({ type: "empty" }); + break; + } + leaf = + leaf ?? side === "right" + ? app.workspace.getRightLeaf(false) + : app.workspace.getLeftLeaf(false); + leaf.setViewState({ + type: viewType, + active: true, + }); +} +exports.openView = openView; +/** + * Check which side of the workspace your `viewType` is on, and save it into `plugin.settings[settingName]`. + * + * **Tip**: Run this function on `plugin.unload` to save the last side your view was on when closing, then {@link openView} on the same side it was last. + * @param {App} app + * @param {YourPlugin} plugin + * @param {string} viewType + * @param {string} settingName + * @returns {"left" | "right"} `side` + */ +async function saveViewSide(app, plugin, viewType, settingName) { + const leaf = app.workspace.getLeavesOfType(viewType)[0]; + if (!leaf) { + console.info(`Obsidian-Community-Lib: No instance of '${viewType}' open, cannot save side`); + return; + } + //@ts-ignore + const side = leaf.getRoot().side; + //@ts-ignore + plugin.settings[settingName] = side; + //@ts-ignore + await plugin.saveSettings(); + return side; +} +exports.saveViewSide = saveViewSide; +/** + * A Modal used in {@link addRenderedMarkdownButton} to display rendered markdown from a raw string, or fetched from a provided url. + * + * ![](https://i.imgur.com/NMwM50E.png) + * @param {App} app + * @param {YourPlugin} plugin + * @param {string} source Raw markdown content or url to find raw markdown. + * @param {boolean} fetch True → fetch markdown from `source` as url. False → `source` is already a markdown string. + */ +class RenderedMarkdownModal extends obsidian_1__default["default"].Modal { + constructor(app, plugin, source, fetch) { + super(app); + this.plugin = plugin; + this.source = source; + this.fetch = fetch; + } + async onOpen() { + let { contentEl, source, plugin, fetch } = this; + let content = source; + if (fetch) { + contentEl.createDiv({ text: `Waiting for content from: '${source}'` }); + content = await (0, obsidian_1__default["default"].request)({ url: source }); + contentEl.empty(); + } + const logDiv = contentEl.createDiv({ cls: "OCL-RenderedMarkdownModal" }); + obsidian_1__default["default"].MarkdownRenderer.renderMarkdown(content, logDiv, "", plugin); + } + onClose() { + this.contentEl.empty(); + } +} +exports.RenderedMarkdownModal = RenderedMarkdownModal; +/** + * Add a button to an HTMLELement, which, when clicked, pops up a {@link RenderedMarkdownModal} showing rendered markdown. + * + * Use `fetch` to indicate whether the markdown string needs to be fetched, or if it has been provided as a string already. + * + * ![](https://i.imgur.com/Hi4gyyv.png) + * @param {App} app + * @param {YourPlugin} plugin + * @param {HTMLElement} containerEl HTMLElement to add the button to + * @param {string} source Raw markdown content or url to find raw markdown. + * @param {boolean} fetch True → fetch markdown from `source` as url. False → `source` is already a markdown string. + * @param {string} displayText Text to display in the button. + */ +function addRenderedMarkdownButton(app, plugin, containerEl, source, fetch, displayText) { + containerEl.createEl("button", { text: displayText }, (but) => but.onClickEvent(() => { + new RenderedMarkdownModal(app, plugin, source, fetch).open(); + })); +} +exports.addRenderedMarkdownButton = addRenderedMarkdownButton; +/** + * Check if `app.metadataCache.ResolvedLinks` have fully initalised. + * + * Used with {@link waitForResolvedLinks}. + * @param {App} app + * @param {number} noFiles Number of files in your vault. + * @returns {boolean} + */ +function resolvedLinksComplete(app, noFiles) { + const { resolvedLinks } = app.metadataCache; + return Object.keys(resolvedLinks).length === noFiles; +} +exports.resolvedLinksComplete = resolvedLinksComplete; +/** + * Wait for `app.metadataCache.ResolvedLinks` to have fully initialised. + * @param {App} app + * @param {number} [delay=1000] Number of milliseconds to wait between each check. + * @param {number} [max=50] Maximum number of iterations to check before throwing an error and breaking out of the loop. + */ +async function waitForResolvedLinks(app, delay = 1000, max = 50) { + const noFiles = app.vault.getMarkdownFiles().length; + let i = 0; + while (!resolvedLinksComplete(app, noFiles) && i < max) { + await wait(delay); + i++; + } + if (i === max) { + throw Error("Obsidian-Community-Lib: ResolvedLinks did not finish initialising. `max` iterations was reached first."); + } +} +exports.waitForResolvedLinks = waitForResolvedLinks; +}); + +var dist = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitForResolvedLinks = exports.resolvedLinksComplete = exports.stripMD = exports.addMD = exports.saveViewSide = exports.openView = exports.RenderedMarkdownModal = exports.addRenderedMarkdownButton = exports.linkedQ = exports.openOrSwitch = exports.createNewMDNote = exports.isInVault = exports.hoverPreview = exports.getSelectionFromEditor = exports.getSelectionFromCurrFile = exports.copy = exports.wait = exports.getAvailablePathForAttachments = exports.base64ToArrayBuffer = exports.addFeatherIcon = exports.addAllFeatherIcons = void 0; + +Object.defineProperty(exports, "addAllFeatherIcons", { enumerable: true, get: function () { return utils.addAllFeatherIcons; } }); +Object.defineProperty(exports, "addFeatherIcon", { enumerable: true, get: function () { return utils.addFeatherIcon; } }); +Object.defineProperty(exports, "base64ToArrayBuffer", { enumerable: true, get: function () { return utils.base64ToArrayBuffer; } }); +Object.defineProperty(exports, "getAvailablePathForAttachments", { enumerable: true, get: function () { return utils.getAvailablePathForAttachments; } }); +Object.defineProperty(exports, "wait", { enumerable: true, get: function () { return utils.wait; } }); +Object.defineProperty(exports, "copy", { enumerable: true, get: function () { return utils.copy; } }); +Object.defineProperty(exports, "getSelectionFromCurrFile", { enumerable: true, get: function () { return utils.getSelectionFromCurrFile; } }); +Object.defineProperty(exports, "getSelectionFromEditor", { enumerable: true, get: function () { return utils.getSelectionFromEditor; } }); +Object.defineProperty(exports, "hoverPreview", { enumerable: true, get: function () { return utils.hoverPreview; } }); +Object.defineProperty(exports, "isInVault", { enumerable: true, get: function () { return utils.isInVault; } }); +Object.defineProperty(exports, "createNewMDNote", { enumerable: true, get: function () { return utils.createNewMDNote; } }); +Object.defineProperty(exports, "openOrSwitch", { enumerable: true, get: function () { return utils.openOrSwitch; } }); +Object.defineProperty(exports, "linkedQ", { enumerable: true, get: function () { return utils.linkedQ; } }); +Object.defineProperty(exports, "addRenderedMarkdownButton", { enumerable: true, get: function () { return utils.addRenderedMarkdownButton; } }); +Object.defineProperty(exports, "RenderedMarkdownModal", { enumerable: true, get: function () { return utils.RenderedMarkdownModal; } }); +Object.defineProperty(exports, "openView", { enumerable: true, get: function () { return utils.openView; } }); +Object.defineProperty(exports, "saveViewSide", { enumerable: true, get: function () { return utils.saveViewSide; } }); +Object.defineProperty(exports, "addMD", { enumerable: true, get: function () { return utils.addMD; } }); +Object.defineProperty(exports, "stripMD", { enumerable: true, get: function () { return utils.stripMD; } }); +Object.defineProperty(exports, "resolvedLinksComplete", { enumerable: true, get: function () { return utils.resolvedLinksComplete; } }); +Object.defineProperty(exports, "waitForResolvedLinks", { enumerable: true, get: function () { return utils.waitForResolvedLinks; } }); +}); + +function noop() { } +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} + +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function children(element) { + return Array.from(element.childNodes); +} +function set_data(text, data) { + data = '' + data; + if (text.wholeText !== data) + text.data = data; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +let flushing = false; +const seen_callbacks = new Set(); +function flush() { + if (flushing) + return; + flushing = true; + do { + // first, call beforeUpdate functions + // and update components + for (let i = 0; i < dirty_components.length; i += 1) { + const component = dirty_components[i]; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + flushing = false; + seen_callbacks.clear(); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false + }; + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +/* src\Components\IncrementingIComponent.svelte generated by Svelte v3.35.0 */ + +function create_fragment$2(ctx) { + let div3; + let div0; + let label0; + let t1; + let input0; + let t2; + let div1; + let label1; + let t4; + let input1; + let t5; + let div2; + let button; + let mounted; + let dispose; + + return { + c() { + div3 = element("div"); + div0 = element("div"); + label0 = element("label"); + label0.textContent = "Start:"; + t1 = space(); + input0 = element("input"); + t2 = space(); + div1 = element("div"); + label1 = element("label"); + label1.textContent = "Increment:"; + t4 = space(); + input1 = element("input"); + t5 = space(); + div2 = element("div"); + button = element("button"); + button.textContent = "Submit"; + attr(label0, "for", "start"); + input0.value = 1; + attr(input0, "name", "start"); + attr(input0, "type", "number"); + attr(input0, "placeholder", "Search Query"); + attr(label1, "for", "inc"); + input1.value = 1; + attr(input1, "name", "inc"); + attr(input1, "type", "number"); + attr(input1, "placeholder", "Increment"); + attr(button, "class", "AC-submit-button"); + attr(div3, "class", "inputEls"); + }, + m(target, anchor) { + insert(target, div3, anchor); + append(div3, div0); + append(div0, label0); + append(div0, t1); + append(div0, input0); + /*input0_binding*/ ctx[7](input0); + append(div3, t2); + append(div3, div1); + append(div1, label1); + append(div1, t4); + append(div1, input1); + /*input1_binding*/ ctx[8](input1); + append(div3, t5); + append(div3, div2); + append(div2, button); + /*button_binding*/ ctx[9](button); + + if (!mounted) { + dispose = listen(button, "click", /*onSubmit*/ ctx[3]); + mounted = true; + } + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div3); + /*input0_binding*/ ctx[7](null); + /*input1_binding*/ ctx[8](null); + /*button_binding*/ ctx[9](null); + mounted = false; + dispose(); + } + }; +} + +function instance$2($$self, $$props, $$invalidate) { + + + + let { plugin } = $$props; + let { ed } = $$props; + let { modal } = $$props; + let startInput; + let incInput; + let submitButton; + + function onSubmit() { + const start = Number.parseFloat(startInput.value); + const inc = Number.parseFloat(incInput.value); + plugin.writeIncrementingI(ed, start, inc); + modal.close(); + } + + onMount(() => { + submitButton.focus(); + }); + + function input0_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + startInput = $$value; + $$invalidate(0, startInput); + }); + } + + function input1_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + incInput = $$value; + $$invalidate(1, incInput); + }); + } + + function button_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + submitButton = $$value; + $$invalidate(2, submitButton); + }); + } + + $$self.$$set = $$props => { + if ("plugin" in $$props) $$invalidate(4, plugin = $$props.plugin); + if ("ed" in $$props) $$invalidate(5, ed = $$props.ed); + if ("modal" in $$props) $$invalidate(6, modal = $$props.modal); + }; + + return [ + startInput, + incInput, + submitButton, + onSubmit, + plugin, + ed, + modal, + input0_binding, + input1_binding, + button_binding + ]; +} + +class IncrementingIComponent extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$2, create_fragment$2, safe_not_equal, { plugin: 4, ed: 5, modal: 6 }); + } +} + +class IncrementingIModal extends obsidian_1.Modal { + constructor(app, plugin, ed) { + super(app); + this.ed = ed; + this.plugin = plugin; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + let { contentEl, plugin, ed } = this; + new IncrementingIComponent({ + target: contentEl, + props: { plugin, ed, modal: this }, + }); + }); + } + onClose() { + let { contentEl } = this; + contentEl.empty(); + } +} + +const DEFAULT_SETTINGS = { + savedQueries: [], + savedQViewSide: "right", + lastQ: { name: "", query: "", flags: "", regexQ: true }, + openViewOnload: true, + showFunctionNotifications: true, +}; +const VIEW_TYPE_AC = "Saved Queries View"; +const MODES = ["All", "Next", "Prev"]; +const DECIMALS = 4; + +const cmdId = (q, mode) => `AC-${mode}: ${q.name} -> ${q.query}`; +const cmdName = (q, mode) => `${mode}: ${displayQ(q)}`; +const removeQCmds = (app, q) => { + MODES.forEach((mode) => { + app.commands.removeCommand("advanced-cursors:" + cmdId(q, mode)); + }); +}; +const createRegex = (q) => { + if (q.regexQ) { + let useFlags = q.flags.slice(); + if (!useFlags.includes("g")) { + useFlags += "g"; + } + return new RegExp(q.query, useFlags); + } + else { + return new RegExp(q.query.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"); + } +}; +const displayRegex = (q) => { + let { source, flags } = createRegex(q); + flags = flags.replace("g", ""); + return `/${source}/${flags}`; +}; +const displayQ = (q) => { + return `${q.name} → ${displayRegex(q)}`; +}; +function roundNumber(num, dec = DECIMALS) { + return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); +} +const blankQ = (query = "", regexQ = true) => { + return { name: "", query, flags: "", regexQ }; +}; + +class SavedQView extends obsidian_1.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.icon = dist.addFeatherIcon("mouse-pointer"); + this.plugin = plugin; + } + onload() { + const _super = Object.create(null, { + onload: { get: () => super.onload } + }); + return __awaiter(this, void 0, void 0, function* () { + _super.onload.call(this); + }); + } + getViewType() { + return VIEW_TYPE_AC; + } + getDisplayText() { + return "Saved Queries"; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + yield this.draw(); + }); + } + onClose() { + return Promise.resolve(); + } + draw() { + return __awaiter(this, void 0, void 0, function* () { + const { settings: { savedQueries }, } = this.plugin; + const { contentEl, app: { workspace }, plugin, } = this; + contentEl.empty(); + contentEl.style.padding = "5px 5px 0px 5px"; + const qsDiv = contentEl.createDiv(); + savedQueries.forEach((q) => { + const qDiv = qsDiv.createDiv({ text: q.name, cls: "savedQ-view-q" }); + qDiv.ariaLabel = displayRegex(q); + qDiv.addEventListener("contextmenu", () => { + const view = workspace.getActiveViewOfType(obsidian_1.MarkdownView); + if (view) { + const { editor: ed } = view; + plugin.selectInstance(ed, false, "All", q); + ed.focus(); + } + }); + qDiv.addEventListener("click", () => { + const view = workspace.getActiveViewOfType(obsidian_1.MarkdownView); + if (view) { + const { editor: ed } = view; + plugin.selectInstance(ed, false, "Next", q); + ed.focus(); + } + }); + }); + }); + } +} + +/* src\Components\QueryModal.svelte generated by Svelte v3.35.0 */ + +function add_css() { + var style = element("style"); + style.id = "svelte-1ow3q36-style"; + style.textContent = "button.savedQ-nextOrPrev.svelte-1ow3q36{float:right;width:fit-content;padding:6px}"; + append(document.head, style); +} + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[15] = list[i]; + return child_ctx; +} + +// (66:4) {#each plugin.settings.savedQueries as q} +function create_each_block(ctx) { + let li; + let span3; + let span0; + let t0_value = /*q*/ ctx[15].name + ""; + let t0; + let t1; + let span1; + let t3; + let span2; + let t4_value = displayRegex(/*q*/ ctx[15]) + ""; + let t4; + let t5; + let button0; + let t7; + let button1; + let t9; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[12](/*q*/ ctx[15]); + } + + function click_handler_1() { + return /*click_handler_1*/ ctx[13](/*q*/ ctx[15]); + } + + function click_handler_2() { + return /*click_handler_2*/ ctx[14](/*q*/ ctx[15]); + } + + return { + c() { + li = element("li"); + span3 = element("span"); + span0 = element("span"); + t0 = text(t0_value); + t1 = space(); + span1 = element("span"); + span1.textContent = "→"; + t3 = space(); + span2 = element("span"); + t4 = text(t4_value); + t5 = space(); + button0 = element("button"); + button0.textContent = "→"; + t7 = space(); + button1 = element("button"); + button1.textContent = "←"; + t9 = space(); + attr(span0, "class", "savedQ-name"); + attr(span2, "class", "savedQ-query"); + attr(button0, "aria-label", "Next"); + attr(button0, "class", "savedQ-nextOrPrev svelte-1ow3q36"); + attr(button1, "aria-label", "Previous"); + attr(button1, "class", "savedQ-nextOrPrev svelte-1ow3q36"); + attr(li, "class", "savedQ"); + }, + m(target, anchor) { + insert(target, li, anchor); + append(li, span3); + append(span3, span0); + append(span0, t0); + append(span3, t1); + append(span3, span1); + append(span3, t3); + append(span3, span2); + append(span2, t4); + append(li, t5); + append(li, button0); + append(li, t7); + append(li, button1); + append(li, t9); + + if (!mounted) { + dispose = [ + listen(span3, "click", click_handler), + listen(button0, "click", click_handler_1), + listen(button1, "click", click_handler_2) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*plugin*/ 1 && t0_value !== (t0_value = /*q*/ ctx[15].name + "")) set_data(t0, t0_value); + if (dirty & /*plugin*/ 1 && t4_value !== (t4_value = displayRegex(/*q*/ ctx[15]) + "")) set_data(t4, t4_value); + }, + d(detaching) { + if (detaching) detach(li); + mounted = false; + run_all(dispose); + } + }; +} + +function create_fragment$1(ctx) { + let div0; + let input0; + let t0; + let button; + let t2; + let input1; + let t3; + let input2; + let t4; + let label; + let t6; + let div1; + let ol; + let mounted; + let dispose; + let each_value = /*plugin*/ ctx[0].settings.savedQueries; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + return { + c() { + div0 = element("div"); + input0 = element("input"); + t0 = space(); + button = element("button"); + button.textContent = "Submit"; + t2 = space(); + input1 = element("input"); + t3 = space(); + input2 = element("input"); + t4 = space(); + label = element("label"); + label.textContent = "Regex"; + t6 = space(); + div1 = element("div"); + ol = element("ol"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + input0.value = /*lastQ*/ ctx[4].query; + attr(input0, "type", "text"); + attr(input0, "placeholder", "Search Query"); + attr(button, "class", "AC-submit-button"); + input1.value = /*lastQ*/ ctx[4].flags; + attr(input1, "type", "text"); + attr(input1, "placeholder", "Regex flags"); + attr(input1, "width", "10"); + attr(input2, "type", "checkbox"); + attr(input2, "name", "regexQ"); + input2.checked = /*lastQ*/ ctx[4].regexQ; + attr(label, "for", "regexQ"); + attr(div0, "class", "inputEls"); + attr(div1, "class", "savedQs"); + }, + m(target, anchor) { + insert(target, div0, anchor); + append(div0, input0); + /*input0_binding*/ ctx[9](input0); + append(div0, t0); + append(div0, button); + append(div0, t2); + append(div0, input1); + /*input1_binding*/ ctx[10](input1); + append(div0, t3); + append(div0, input2); + /*input2_binding*/ ctx[11](input2); + append(div0, t4); + append(div0, label); + insert(target, t6, anchor); + insert(target, div1, anchor); + append(div1, ol); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(ol, null); + } + + if (!mounted) { + dispose = listen(button, "click", /*clickSearch*/ ctx[5]); + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*runSavedQ, plugin, displayRegex*/ 65) { + each_value = /*plugin*/ ctx[0].settings.savedQueries; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(ol, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div0); + /*input0_binding*/ ctx[9](null); + /*input1_binding*/ ctx[10](null); + /*input2_binding*/ ctx[11](null); + if (detaching) detach(t6); + if (detaching) detach(div1); + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; +} + +function instance$1($$self, $$props, $$invalidate) { + + + + + let { modal } = $$props; + let { plugin } = $$props; + let { ed } = $$props; + const { lastQ } = plugin.settings; + let queryEl; + let flagsEl; + let regexQEl; + + function clickSearch() { + return __awaiter(this, void 0, void 0, function* () { + const q = { + name: "", + query: queryEl.value, + flags: flagsEl.value, + regexQ: regexQEl.checked + }; + + modal.close(); + plugin.selectInstance(ed, false, "All", q); + $$invalidate(0, plugin.settings.lastQ = q, plugin); + yield plugin.saveSettings(); + }); + } + + function runSavedQ(q, mode) { + plugin.selectInstance(ed, false, mode, q); + modal.close(); + } + + onMount(() => { + queryEl.focus(); + queryEl.select(); + }); + + function input0_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + queryEl = $$value; + $$invalidate(1, queryEl); + }); + } + + function input1_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + flagsEl = $$value; + $$invalidate(2, flagsEl); + }); + } + + function input2_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + regexQEl = $$value; + $$invalidate(3, regexQEl); + }); + } + + const click_handler = q => runSavedQ(q, "All"); + const click_handler_1 = q => runSavedQ(q, "Next"); + const click_handler_2 = q => runSavedQ(q, "Prev"); + + $$self.$$set = $$props => { + if ("modal" in $$props) $$invalidate(7, modal = $$props.modal); + if ("plugin" in $$props) $$invalidate(0, plugin = $$props.plugin); + if ("ed" in $$props) $$invalidate(8, ed = $$props.ed); + }; + + return [ + plugin, + queryEl, + flagsEl, + regexQEl, + lastQ, + clickSearch, + runSavedQ, + modal, + ed, + input0_binding, + input1_binding, + input2_binding, + click_handler, + click_handler_1, + click_handler_2 + ]; +} + +class QueryModal extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-1ow3q36-style")) add_css(); + init(this, options, instance$1, create_fragment$1, safe_not_equal, { modal: 7, plugin: 0, ed: 8 }); + } +} + +class CursorsModal extends obsidian_1.Modal { + constructor(app, ed, plugin) { + super(app); + this.ed = ed; + this.plugin = plugin; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + let { contentEl, plugin, ed } = this; + new QueryModal({ + target: contentEl, + props: { modal: this, plugin, ed }, + }); + }); + } + onClose() { + let { contentEl } = this; + contentEl.empty(); + } +} + +/* src\Components\AddQComponent.svelte generated by Svelte v3.35.0 */ + +function create_fragment(ctx) { + let div0; + let input0; + let input0_value_value; + let t0; + let input1; + let input1_value_value; + let t1; + let input2; + let input2_value_value; + let t2; + let input3; + let input3_checked_value; + let t3; + let label; + let t5; + let div1; + let button; + let t6_value = (/*i*/ ctx[0] === -1 ? "Submit" : "Edit") + ""; + let t6; + let mounted; + let dispose; + + return { + c() { + div0 = element("div"); + input0 = element("input"); + t0 = space(); + input1 = element("input"); + t1 = space(); + input2 = element("input"); + t2 = space(); + input3 = element("input"); + t3 = space(); + label = element("label"); + label.textContent = "Regex"; + t5 = space(); + div1 = element("div"); + button = element("button"); + t6 = text(t6_value); + input0.value = input0_value_value = /*existingQ*/ ctx[1].name; + attr(input0, "type", "text"); + attr(input0, "placeholder", "Name"); + input1.value = input1_value_value = /*existingQ*/ ctx[1].query; + attr(input1, "type", "text"); + attr(input1, "placeholder", "Query"); + input2.value = input2_value_value = /*existingQ*/ ctx[1].flags; + attr(input2, "type", "text"); + attr(input2, "placeholder", "Regex Flags"); + input3.checked = input3_checked_value = /*existingQ*/ ctx[1].regexQ; + attr(input3, "type", "checkbox"); + attr(input3, "name", "regexQ"); + attr(label, "for", "regexQ"); + attr(button, "class", "AC-submit-button"); + }, + m(target, anchor) { + insert(target, div0, anchor); + append(div0, input0); + /*input0_binding*/ ctx[11](input0); + append(div0, t0); + append(div0, input1); + /*input1_binding*/ ctx[12](input1); + append(div0, t1); + append(div0, input2); + /*input2_binding*/ ctx[13](input2); + append(div0, t2); + append(div0, input3); + /*input3_binding*/ ctx[14](input3); + append(div0, t3); + append(div0, label); + insert(target, t5, anchor); + insert(target, div1, anchor); + append(div1, button); + append(button, t6); + + if (!mounted) { + dispose = listen(button, "click", /*click_handler*/ ctx[15]); + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*existingQ*/ 2 && input0_value_value !== (input0_value_value = /*existingQ*/ ctx[1].name) && input0.value !== input0_value_value) { + input0.value = input0_value_value; + } + + if (dirty & /*existingQ*/ 2 && input1_value_value !== (input1_value_value = /*existingQ*/ ctx[1].query) && input1.value !== input1_value_value) { + input1.value = input1_value_value; + } + + if (dirty & /*existingQ*/ 2 && input2_value_value !== (input2_value_value = /*existingQ*/ ctx[1].flags) && input2.value !== input2_value_value) { + input2.value = input2_value_value; + } + + if (dirty & /*existingQ*/ 2 && input3_checked_value !== (input3_checked_value = /*existingQ*/ ctx[1].regexQ)) { + input3.checked = input3_checked_value; + } + + if (dirty & /*i*/ 1 && t6_value !== (t6_value = (/*i*/ ctx[0] === -1 ? "Submit" : "Edit") + "")) set_data(t6, t6_value); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div0); + /*input0_binding*/ ctx[11](null); + /*input1_binding*/ ctx[12](null); + /*input2_binding*/ ctx[13](null); + /*input3_binding*/ ctx[14](null); + if (detaching) detach(t5); + if (detaching) detach(div1); + mounted = false; + dispose(); + } + }; +} + +function instance($$self, $$props, $$invalidate) { + + + let { app } = $$props; + let { plugin } = $$props; + let { modal } = $$props; + let { settingsTab } = $$props; + let { i } = $$props; + let existingQ = blankQ(); + + if (i > -1) { + existingQ = plugin.settings.savedQueries[i]; + } + + let nameEl; + let queryEl; + let regexEl; + let flagsEl; + onMount(() => nameEl.focus()); + + function submitOrEdit(i) { + return __awaiter(this, void 0, void 0, function* () { + const name = nameEl.value; + const query = queryEl.value; + const { savedQueries } = plugin.settings; + + if (name === "" || query === "") { + new obsidian_1.Notice("Both 'name' and 'query' must have a value."); + return; + } + + if (i === -1 && savedQueries.findIndex(q => q.name === name) > -1) { + new obsidian_1.Notice(`A query with named "${name}" already exists`); + return; + } else { + const oldQ = savedQueries[i]; + + // Add new query to settings + const regexQ = regexEl.checked; + + const flags = flagsEl.value; + const newQ = { name, query, regexQ, flags }; + + if (i > -1) { + removeQCmds(app, oldQ); + $$invalidate(7, plugin.settings.savedQueries[i] = newQ, plugin); + new obsidian_1.Notice(`${name} → ${query} updated.`); + } else { + plugin.settings.savedQueries.push(newQ); + new obsidian_1.Notice(`${name} → ${query} added.`); + } + + yield plugin.saveSettings(); + settingsTab.initExistingSavedQs(modal.savedQsDiv); + MODES.forEach(mode => plugin.addCmd(newQ, mode)); + plugin.view.draw(); + modal.close(); + } + }); + } + + function input0_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + nameEl = $$value; + $$invalidate(2, nameEl); + }); + } + + function input1_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + queryEl = $$value; + $$invalidate(3, queryEl); + }); + } + + function input2_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + flagsEl = $$value; + $$invalidate(5, flagsEl); + }); + } + + function input3_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + regexEl = $$value; + $$invalidate(4, regexEl); + }); + } + + const click_handler = () => submitOrEdit(i); + + $$self.$$set = $$props => { + if ("app" in $$props) $$invalidate(8, app = $$props.app); + if ("plugin" in $$props) $$invalidate(7, plugin = $$props.plugin); + if ("modal" in $$props) $$invalidate(9, modal = $$props.modal); + if ("settingsTab" in $$props) $$invalidate(10, settingsTab = $$props.settingsTab); + if ("i" in $$props) $$invalidate(0, i = $$props.i); + }; + + return [ + i, + existingQ, + nameEl, + queryEl, + regexEl, + flagsEl, + submitOrEdit, + plugin, + app, + modal, + settingsTab, + input0_binding, + input1_binding, + input2_binding, + input3_binding, + click_handler + ]; +} + +class AddQComponent extends SvelteComponent { + constructor(options) { + super(); + + init(this, options, instance, create_fragment, safe_not_equal, { + app: 8, + plugin: 7, + modal: 9, + settingsTab: 10, + i: 0 + }); + } +} + +class ACSettingTab extends obsidian_1.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.initExistingSavedQs = (savedQsDiv) => { + savedQsDiv.empty(); + const listEl = savedQsDiv.createEl("ol"); + this.plugin.settings.savedQueries.forEach((savedQ, i) => { + const savedQLi = listEl.createEl("li", { cls: "savedQ" }); + savedQLi.createSpan({ text: savedQ.name, cls: "savedQ-name" }); + savedQLi.createSpan({ text: " → " }); + savedQLi.createSpan({ text: savedQ.query }); + savedQLi.createEl("button", { + text: "❌", + cls: "deleteQButton", + }, (but) => { + but.addEventListener("click", () => __awaiter(this, void 0, void 0, function* () { + savedQLi.remove(); + yield this.removeSavedQ(i); + })); + }); + savedQLi.createEl("button", { + text: "✏️", + cls: "editQButton", + }, (but) => { + but.addEventListener("click", () => { + this.editSavedQ(i); + }); + }); + }); + }; + this.removeSavedQ = (i) => __awaiter(this, void 0, void 0, function* () { + try { + const { settings } = this.plugin; + const copy = [...settings.savedQueries]; + const removedQ = copy.splice(i, 1)[0]; + settings.savedQueries = copy; + yield this.plugin.saveSettings(); + console.log({ savedQs: settings.savedQueries, removedQ }); + this.initExistingSavedQs(this.savedQsDiv); + removeQCmds(this.app, removedQ); + this.plugin.view.draw(); + new obsidian_1.Notice(`${displayQ(removedQ)} removed`); + } + catch (error) { + console.log(error); + new obsidian_1.Notice(`Something went wrong when deleting that query. Check the console for errors.`); + } + }); + this.plugin = plugin; + } + editSavedQ(i) { + new AddQModal(this.app, this.plugin, this, this.savedQsDiv, i).open(); + } + display() { + return __awaiter(this, void 0, void 0, function* () { + let { containerEl, plugin } = this; + containerEl.empty(); + containerEl.createEl("h2", { text: "Advanced Cursors Settings" }); + // SECTION SavedQs + containerEl.createEl("h3", { text: "Saved Queries" }); + containerEl.createEl("button", { text: "Add Query" }, (but) => { + but.addEventListener("click", () => { + new AddQModal(this.app, plugin, this, this.savedQsDiv, -1).open(); + }); + }); + this.savedQsDiv = containerEl.createDiv({ cls: "savedQs" }); + this.initExistingSavedQs(this.savedQsDiv); + containerEl.createEl("hr"); + new obsidian_1.Setting(containerEl) + .setName("Open Saved Query View on Load") + .addToggle((toggle) => { + toggle + .setValue(plugin.settings.openViewOnload) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + plugin.settings.openViewOnload = value; + yield plugin.saveSettings(); + })); + }); + new obsidian_1.Setting(containerEl) + .setName("Show Command Notifications") + .setDesc("If off, disables all notifications that are not caused by errors or changing settings.") + .addToggle((toggle) => { + toggle + .setValue(plugin.settings.showFunctionNotifications) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + plugin.settings.showFunctionNotifications = value; + yield plugin.saveSettings(); + })); + }); + // SECTION Changelog + dist.addRenderedMarkdownButton(this.app, plugin, containerEl, "https://raw.githubusercontent.com/SkepticMystic/advanced-cursors/master/CHANGELOG.md", true, "Changelog"); + dist.addRenderedMarkdownButton(this.app, plugin, containerEl, "https://raw.githubusercontent.com/SkepticMystic/advanced-cursors/master/README.md", true, "Readme"); + }); + } +} +class AddQModal extends obsidian_1.Modal { + constructor(app, plugin, settingsTab, savedQsDiv, i) { + super(app); + this.plugin = plugin; + this.settingsTab = settingsTab; + this.savedQsDiv = savedQsDiv; + this.i = i; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + let { contentEl } = this; + new AddQComponent({ + target: contentEl, + props: { + app: this.app, + plugin: this.plugin, + modal: this, + settingsTab: this.settingsTab, + i: this.i, + }, + }); + }); + } + onClose() { + let { contentEl } = this; + contentEl.empty(); + } +} + +class ACPlugin extends obsidian_1.Plugin { + onload() { + return __awaiter(this, void 0, void 0, function* () { + console.log("Loading advanced cursors"); + yield this.loadSettings(); + // SECTION Commands + this.addCommand({ + id: "open-regex-match-modal", + name: "Open Regex Match Modal", + editorCallback: (ed) => new CursorsModal(this.app, ed, this).open(), + }); + this.settings.savedQueries.forEach((q) => { + MODES.forEach((mode) => this.addCmd(q, mode)); + }); + // SECTION Move to MODE match + this.addCommand({ + id: "move-to-next-match", + name: "Move to next instance of current selection", + editorCallback: (ed) => this.selectInstance(ed, false, "Next"), + }); + this.addCommand({ + id: "move-to-previous-match", + name: "Move to previous instance of current selection", + editorCallback: (ed) => this.selectInstance(ed, false, "Prev"), + }); + // !SECTION Move to MODE match + // SECTION Add MODE match to selections + this.addCommand({ + id: "add-next-match-to-selections", + name: "Add next instance of current selection to selections", + editorCallback: (ed) => this.selectInstance(ed, true, "Next"), + }); + this.addCommand({ + id: "add-prev-match-to-selections", + name: "Add previous instance of current selection to selections", + editorCallback: (ed) => this.selectInstance(ed, true, "Prev"), + }); + // !SECTION Add MODE match to selections + // SECTION Copy Lines + this.addCommand({ + id: "copy-line-up", + name: "Copy Current Line Upwards", + editorCallback: (ed) => this.copyLineUorD(ed, "up"), + }); + this.addCommand({ + id: "copy-line-down", + name: "Copy Current Line Downwards", + editorCallback: (ed) => this.copyLineUorD(ed, "down"), + }); + // !SECTION Copy Lines + this.addCommand({ + id: "add-cursor-above", + name: "Add a cursor on the line above", + editorCallback: (ed) => this.addCursorUpOrDown(ed, "up"), + }); + this.addCommand({ + id: "add-cursor-below", + name: "Add a cursor on the line below", + editorCallback: (ed) => this.addCursorUpOrDown(ed, "down"), + }); + this.addCommand({ + id: "write-incrementing-i", + name: "Insert an incrementing value at each cursor", + editorCallback: (ed) => { + new IncrementingIModal(this.app, this, ed).open(); + }, + }); + this.addCommand({ + id: "open-savedQ-view", + name: "Open Saved Query View", + callback: () => __awaiter(this, void 0, void 0, function* () { + yield dist.openView(this.app, VIEW_TYPE_AC, SavedQView, this.settings.savedQViewSide); + }), + }); + // !SECTION Commands + this.registerView(VIEW_TYPE_AC, (leaf) => (this.view = new SavedQView(leaf, this))); + this.app.workspace.onLayoutReady(() => __awaiter(this, void 0, void 0, function* () { + if (this.settings.openViewOnload) { + yield dist.openView(this.app, VIEW_TYPE_AC, SavedQView, this.settings.savedQViewSide); + } + })); + this.addSettingTab(new ACSettingTab(this.app, this)); + }); + } + addCmd(q, mode) { + this.addCommand({ + id: cmdId(q, mode), + name: cmdName(q, mode), + editorCallback: (ed) => { + this.selectInstance(ed, false, mode, q); + }, + }); + } + linesOfSel(ed) { + const [from, to] = [ed.getCursor("from"), ed.getCursor("to")]; + const [fromLine, toLine] = [from.line, to.line]; + const lines = []; + for (let i = fromLine; i <= toLine; i++) { + lines.push(ed.getLine(i)); + } + return lines; + } + scrollNicely(ed, sel) { + const [A, H] = [sel.anchor, sel.head]; + const lastLine = ed.lastLine(); + const aLine = A.line >= 1 ? A.line - 1 : A.line; + const hLine = H.line <= lastLine - 1 ? H.line + 1 : H.line; + ed.scrollIntoView({ + from: { line: aLine, ch: A.ch }, + to: { line: hLine, ch: H.ch }, + }); + } + copyLineUorD(ed, mode) { + let [cursorFrom, cursorTo] = [ed.getCursor("from"), ed.getCursor("to")]; + const { line } = cursorTo; + const copyLines = this.linesOfSel(ed); + const lines = ed.getValue().split("\n"); + lines.splice(line + (mode === "up" ? 0 : 1), 0, ...copyLines); + ed.setValue(lines.join("\n")); + if (mode === "down") { + cursorFrom.line += copyLines.length; + cursorTo.line += copyLines.length; + } + ed.setSelection(cursorFrom, cursorTo); + this.scrollNicely(ed, { anchor: cursorFrom, head: cursorTo }); + } + addCursorUpOrDown(ed, mode) { + const sels = ed.listSelections(); + const { ch, line } = sels[mode === "up" ? "first" : "last"]().anchor; + const lineTo = line + (mode === "up" ? -1 : 1); + const chTo = Math.min(ch, ed.getLine(lineTo).length); + const anchor = { + line: lineTo, + ch: chTo, + }; + sels.push({ anchor, head: anchor }); + ed.setSelections(this.reconstructSels(sels)); + } + matchToSel(ed, match, offset = 0) { + const fromOff = match.index + offset; + const toOff = fromOff + match[0].length; + const { line: lineA, ch: chA } = ed.offsetToPos(fromOff); + const { line: lineH, ch: chH } = ed.offsetToPos(toOff); + const anchor = { ch: chA, line: lineA }; + const head = { ch: chH, line: lineH }; + return { anchor, head }; + } + reconstructSels(sels) { + return sels.map((sel) => { + const { anchor, head } = sel; + return { anchor, head }; + }); + } + setSels(appendQ, ed, ...newSels) { + if (appendQ) { + const currSelections = ed.listSelections(); + const reconSelections = this.reconstructSels([ + ...currSelections, + ...newSels, + ]); + ed.setSelections(reconSelections); + } + else { + const reconSelections = this.reconstructSels([...newSels]); + ed.setSelections(reconSelections); + } + // FIX doesn't work with CM6, I have to create a mark decorator + // this.clearOldSetNewMSpan(ed, ...newSels); + } + clearOldSetNewMSpan(ed, ...newSels) { + const doc = ed.cm.getDoc(); + // Clear old + const { lines } = doc.children[0]; + lines.forEach((l) => { + var _a; + (_a = l === null || l === void 0 ? void 0 : l.markedSpans) === null || _a === void 0 ? void 0 : _a.forEach((mSpan) => mSpan.marker.clear()); + }); + // Set new + newSels.forEach((newSel) => { + let marker; + if (this.anchorAheadOfHead(ed, newSel)) { + marker = doc.markText(newSel.head, newSel.anchor, { + className: "AC-flashNewSel", + }); + } + else { + marker = doc.markText(newSel.anchor, newSel.head, { + className: "AC-flashNewSel", + }); + } + setTimeout(() => { + marker.clear(); + }, 1000); + }); + } + anchorAheadOfHead(ed, sel) { + return ed.posToOffset(sel.anchor) > ed.posToOffset(sel.head); + } + getToSelect(ed) { + var _a, _b, _c; + let toSelect, wordH, wordA; + const { anchor, head } = ed.listSelections().last(); + // If last selection has something selected + if (!(anchor.line === head.line && anchor.ch === head.ch)) { + toSelect = + ed.posToOffset(anchor) < ed.posToOffset(head) + ? ed.getRange(anchor, head) + : ed.getRange(head, anchor); + return { toSelect, wordA, wordH }; + } + try { + const cursor = ed.getCursor(); + if ((_a = ed.cm) === null || _a === void 0 ? void 0 : _a.findWordAt) { + // CM5 + const wordRange = ed.cm.findWordAt(cursor); + [wordA, wordH] = [wordRange.anchor, wordRange.head]; + toSelect = ed.getRange(wordA, wordH); + } + else if ((_b = ed.cm) === null || _b === void 0 ? void 0 : _b.viewState.state.wordAt) { + // CM6 + const cursorOff = ed.posToOffset(cursor); + const word = ed.cm.viewState.state.wordAt(cursorOff); + if (word !== null) { + const { from, to } = (_c = ed.cm) === null || _c === void 0 ? void 0 : _c.viewState.state.wordAt(ed.posToOffset(cursor)); + [wordA, wordH] = [ed.offsetToPos(from), ed.offsetToPos(to)]; + toSelect = ed.getRange(wordA, wordH); + } + else { + const { length } = ed.getValue(); + if (length === 0) { + // Empty doc + const start = { line: 0, ch: 0 }; + return { toSelect: "", wordA: start, wordH: start }; + } + else if (cursorOff < length) { + [wordA, wordH] = [cursor, ed.offsetToPos(cursorOff + 1)]; + toSelect = ed.getRange(wordA, wordH); + } + else { + // cursor at end of document + [wordA, wordH] = [ed.offsetToPos(cursorOff - 1), cursor]; + toSelect = ed.getRange(wordA, wordH); + } + } + } + else { + throw new Error("Cannot determine if cm5 or cm6"); + } + if (this.anchorAheadOfHead(ed, { anchor: wordA, head: wordH })) { + return { toSelect, wordA: wordH, wordH: wordA }; + } + return { toSelect, wordA, wordH }; + } + catch (error) { + console.log(error); + } + } + isSelected(ed, selection) { + const [offA, offH] = [ + ed.posToOffset(selection.anchor), + ed.posToOffset(selection.head), + ]; + const matchingSels = ed + .listSelections() + .filter((sel) => ed.posToOffset(sel.anchor) === offA && + ed.posToOffset(sel.head) === offH); + return !!matchingSels.length; + } + nextNotSelected(ed, matches, fromOffset, mode) { + var _a, _b; + if (mode === "Next") { + return ((_a = matches.find((m) => m.index > fromOffset)) !== null && _a !== void 0 ? _a : matches.find((m) => { + const sel = this.matchToSel(ed, m); + return m.index < fromOffset && !this.isSelected(ed, sel); + })); + } + else if (mode === "Prev") { + return ((_b = matches.filter((m) => m.index < fromOffset).last()) !== null && _b !== void 0 ? _b : matches + .filter((m) => { + const sel = this.matchToSel(ed, m); + return m.index > fromOffset && !this.isSelected(ed, sel); + }) + .last()); + } + } + selectInstance(ed, appendQ = false, mode, existingQ) { + var _a; + let { toSelect, wordA, wordH } = this.getToSelect(ed); + // Set words under cursor + if (!ed.somethingSelected() && !existingQ) { + ed.setSelection(wordA, wordH); + return; + } + let q = existingQ !== null && existingQ !== void 0 ? existingQ : blankQ(toSelect, false); + let content = ed.getValue(); + const regex = createRegex(q); + let matches = [...content.matchAll(regex)]; + if (mode === "All") { + let offset = 0; + if (ed.somethingSelected()) { + offset = ed.posToOffset(ed.getCursor("from")); + const currSel = ed.getSelection(); + matches = [...currSel.matchAll(regex)]; + } + const nextSels = matches.map((m) => this.matchToSel(ed, m, offset)); + this.setSels(appendQ, ed, ...nextSels); + this.settings.showFunctionNotifications && + new obsidian_1.Notice(`${matches.length} matches found.`); + return; + } + let latestSel = mode === "Next" + ? ed.listSelections().last() + : ed.listSelections().first(); + const lastPos = latestSel[mode === "Next" ? "head" : "anchor"]; + const fromOffset = ed.posToOffset(lastPos); + const match = this.nextNotSelected(ed, matches, fromOffset, mode); + const nextFromOffset = match === null || match === void 0 ? void 0 : match.index; + toSelect = (_a = match === null || match === void 0 ? void 0 : match[0]) !== null && _a !== void 0 ? _a : toSelect; + if (nextFromOffset !== undefined) { + const nextSel = this.matchToSel(ed, match); + this.setSels(appendQ, ed, nextSel); + this.scrollNicely(ed, nextSel); + } + else { + this.settings.showFunctionNotifications && + new obsidian_1.Notice(`No instance of '${toSelect}' found anywhere in note (that isn't already selected).`); + } + } + writeIncrementingI(ed, start, inc) { + const sels = ed.listSelections(); + sels.forEach((sel, n) => { + const i = roundNumber(start + n * inc).toString(); + if (!this.anchorAheadOfHead(ed, sel)) { + ed.replaceRange(i, sel.anchor, sel.head); + } + else { + ed.replaceRange(i, sel.head, sel.anchor); + } + }); + } + onunload() { + return __awaiter(this, void 0, void 0, function* () { + yield dist.saveViewSide(this.app, this, VIEW_TYPE_AC, "savedQViewSide"); + this.app.workspace.detachLeavesOfType(VIEW_TYPE_AC); + }); + } + loadSettings() { + return __awaiter(this, void 0, void 0, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __awaiter(this, void 0, void 0, function* () { + yield this.saveData(this.settings); + }); + } +} + +module.exports = ACPlugin; + + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/advanced-cursors/manifest.json b/.obsidian/plugins/advanced-cursors/manifest.json new file mode 100644 index 0000000..4f150d7 --- /dev/null +++ b/.obsidian/plugins/advanced-cursors/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "advanced-cursors", + "name": "Advanced Cursors", + "version": "0.5.1", + "minAppVersion": "0.12.18", + "description": "Use multiple cursors even more powerfully.", + "author": "SkepticMystic", + "authorUrl": "https://github.com/SkepticMystic/advanced-cursors", + "isDesktopOnly": true +} diff --git a/.obsidian/plugins/advanced-cursors/styles.css b/.obsidian/plugins/advanced-cursors/styles.css new file mode 100644 index 0000000..dd0774e --- /dev/null +++ b/.obsidian/plugins/advanced-cursors/styles.css @@ -0,0 +1,60 @@ +/* Sets all the text color to red! */ +.savedQ { + padding: 5px 5px; +} + +.savedQ-name { + background-color: var(--background-secondary-alt); + padding: 2px 4px; + border-radius: 5px; +} + +.savedQ-view-q { + padding: 2px 4px; + border-radius: 5px; +} + +.editQButton, +.deleteQButton { + float: right; +} + +.savedQ-name:hover, +.editQButton:hover, +.deleteQButton:hover, +.savedQ-query:hover, +.AC-submit-button:hover, +.savedQ-view-q:hover { + background-color: var(--interactive-accent) !important; + cursor: pointer; +} + +.AC-submit-button:focus { + background-color: var(--interactive-accent) !important; +} + +.savedQ-query { + background-color: var(--background-primary-alt); + padding: 2px 4px; + border-radius: 5px; +} + +.AC-flashNewSel { + animation: flashNewSel 1.5s 1; + border-radius: 3px; +} + +@keyframes flashNewSel { + 0% { + background-color: transparent; + } + 10% { + background-color: var(--text-highlight-bg); + } + 80% { + background-color: var(--text-highlight-bg); + } + 100% { + background-color: transparent; + } +} diff --git a/.obsidian/plugins/draw-in-canvas/data.json b/.obsidian/plugins/draw-in-canvas/data.json new file mode 100644 index 0000000..2fdc591 --- /dev/null +++ b/.obsidian/plugins/draw-in-canvas/data.json @@ -0,0 +1,14 @@ +{ + "strokeColor": "#0a9339", + "strokeWidth": 10, + "strokeHardness": 100, + "strokeOpacity": 100, + "beautifulStrokes": false, + "usePenCursorFallback": true, + "allowTinyCanvasElements": false, + "strokeThinning": 0.5, + "strokeStreamline": 0.5, + "strokeSmoothing": 0.5, + "strokeTaperStart": 8, + "strokeTaperEnd": 8 +} \ No newline at end of file diff --git a/.obsidian/plugins/draw-in-canvas/main.js b/.obsidian/plugins/draw-in-canvas/main.js new file mode 100644 index 0000000..b435295 --- /dev/null +++ b/.obsidian/plugins/draw-in-canvas/main.js @@ -0,0 +1,9 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var Pr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var aa=Object.getOwnPropertyNames;var la=Object.prototype.hasOwnProperty;var ca=(r,e)=>{for(var t in e)Pr(r,t,{get:e[t],enumerable:!0})},da=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of aa(e))!la.call(r,o)&&o!==t&&Pr(r,o,{get:()=>e[o],enumerable:!(n=sa(e,o))||n.enumerable});return r};var ua=r=>da(Pr({},"__esModule",{value:!0}),r);var _u={};ca(_u,{default:()=>mr});module.exports=ua(_u);var Y=require("obsidian");var ro=require("obsidian");function no(r){let e=r.workspace.getMostRecentLeaf();if(!e)return null;let t=e.view;if(t.getViewType()!=="canvas")return null;let n=ha(r,t);return!n||n.extension!=="canvas"?null:{leaf:e,view:t,file:n,containerEl:t.containerEl}}function ha(r,e){let t=e.file;if(t instanceof ro.TFile)return t;let n=r.workspace.getActiveFile();return(n==null?void 0:n.extension)==="canvas"?n:null}var I=require("obsidian");var X=require("obsidian");var H={strokeThinning:{label:"Thinning",min:-.99,max:.99,step:.01,defaultValue:.5,ariaLabel:"Stroke thinning"},strokeStreamline:{label:"Streamline",min:.01,max:.99,step:.01,defaultValue:.5,ariaLabel:"Stroke streamline"},strokeSmoothing:{label:"Smoothing",min:.01,max:.99,step:.01,defaultValue:.5,ariaLabel:"Stroke smoothing"},strokeTaperStart:{label:"Taper start",min:0,max:100,step:1,defaultValue:8,ariaLabel:"Stroke taper start"},strokeTaperEnd:{label:"Taper end",min:0,max:100,step:1,defaultValue:8,ariaLabel:"Stroke taper end"}},Ce={strokeColor:"#ff5a5f",strokeWidth:4,strokeHardness:100,strokeOpacity:100,beautifulStrokes:!1,usePenCursorFallback:!0,allowTinyCanvasElements:!1,strokeThinning:.5,strokeStreamline:.5,strokeSmoothing:.5,strokeTaperStart:8,strokeTaperEnd:8};function y(r){let e=typeof r=="number"?r:Number(r);if(!Number.isFinite(e))return 4;let t=Math.round(e/1)*1;return Math.min(32,Math.max(1,t))}function x(r){let e=typeof r=="number"?r:Number(r);if(!Number.isFinite(e))return 100;let t=Math.round(e/1)*1;return Math.min(100,Math.max(0,t))}function f(r){let e=typeof r=="number"?r:Number(r);if(!Number.isFinite(e))return 100;let t=Math.round(e/1)*1;return Math.min(100,Math.max(1,t))}function k(r,e){let t=H[r],n=typeof e=="number"?e:Number(e);if(!Number.isFinite(n))return t.defaultValue;let o=Math.round(n/t.step)*t.step,i=Math.min(t.max,Math.max(t.min,o));return pa(i,t.step)}function oo(r){var t;let e=r!=null?r:{};return{...Ce,...e,strokeColor:((t=e.strokeColor)==null?void 0:t.trim())||Ce.strokeColor,strokeWidth:y(e.strokeWidth),strokeHardness:x(e.strokeHardness),strokeOpacity:f(e.strokeOpacity),beautifulStrokes:e.beautifulStrokes===!0,usePenCursorFallback:e.usePenCursorFallback!==!1,allowTinyCanvasElements:e.allowTinyCanvasElements===!0,strokeThinning:k("strokeThinning",e.strokeThinning),strokeStreamline:k("strokeStreamline",e.strokeStreamline),strokeSmoothing:k("strokeSmoothing",e.strokeSmoothing),strokeTaperStart:k("strokeTaperStart",e.strokeTaperStart),strokeTaperEnd:k("strokeTaperEnd",e.strokeTaperEnd)}}function pa(r,e){var n,o;let t=(o=(n=e.toString().split(".")[1])==null?void 0:n.length)!=null?o:0;return Number(r.toFixed(t))}var kt=class extends X.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){let{containerEl:e}=this;e.empty();let t=activeDocument.createElement("h2");t.textContent="Draw in canvas",e.appendChild(t),new X.Setting(e).setName("Stroke color").setDesc("Any CSS color, such as #ff5a5f, red, or rgb(255, 90, 95).").addText(o=>o.setPlaceholder(Ce.strokeColor).setValue(this.plugin.settings.strokeColor).onChange(async i=>{this.plugin.settings.strokeColor=i.trim()||Ce.strokeColor,this.plugin.refreshActiveLayerSettings(),await this.plugin.saveSettings()})),new X.Setting(e).setName("Stroke width").setDesc("Screen-pixel width for new freehand strokes at the current canvas zoom.").addSlider(o=>o.setLimits(1,32,1).setValue(y(this.plugin.settings.strokeWidth)).setDynamicTooltip().onChange(i=>{this.plugin.setStrokeWidth(i)})),new X.Setting(e).setName("Stroke hardness").setDesc("Softens new stroke edges like brush hardness.").addSlider(o=>o.setLimits(0,100,1).setValue(x(this.plugin.settings.strokeHardness)).setDynamicTooltip().onChange(i=>{this.plugin.setStrokeHardness(i)})),new X.Setting(e).setName("Stroke opacity").setDesc("Controls how transparent new strokes are, like brush opacity.").addSlider(o=>o.setLimits(1,100,1).setValue(f(this.plugin.settings.strokeOpacity)).setDynamicTooltip().onChange(i=>{this.plugin.setStrokeOpacity(i)})),new X.Setting(e).setName("Handwritten strokes").setDesc("Smooth strokes with subtle tapered starts and ends. Pen strokes use real stylus pressure when available.").addToggle(o=>o.setValue(this.plugin.settings.beautifulStrokes).onChange(i=>{this.plugin.setBeautifulStrokes(i)})),new X.Setting(e).setName("Stylus pointer fallback").setDesc("Show a plugin pointer while drawing with a stylus when the native pointer is hidden or unreliable.").addToggle(o=>o.setValue(this.plugin.settings.usePenCursorFallback).onChange(i=>{this.plugin.setPenCursorFallback(i)})),new X.Setting(e).setName("Allow tiny canvas items").setDesc("Lower Obsidian's canvas item size limit so native cards, groups, and plugin strokes can be resized much smaller. Also lets native canvas zoom go past the normal zoom-in limit, adds +/\u2212 size buttons and a layer submenu to the native selection menu, and keeps shift-resizing proportional while this plugin is active.").addToggle(o=>o.setValue(this.plugin.settings.allowTinyCanvasElements).onChange(i=>{this.plugin.setAllowTinyCanvasElements(i)}));let n=activeDocument.createElement("p");n.classList.add("setting-item-description"),n.textContent="Drawings are stored inside each .canvas file as plugin JSON metadata.",e.appendChild(n)}};var ye={beautifulStrokes:!1,strokeThinning:.5,strokeStreamline:.5,strokeSmoothing:.5,strokeTaperStart:8,strokeTaperEnd:8},Sa={strokeThinning:{min:-.99,max:.99,step:.01,defaultValue:ye.strokeThinning},strokeStreamline:{min:.01,max:.99,step:.01,defaultValue:ye.strokeStreamline},strokeSmoothing:{min:.01,max:.99,step:.01,defaultValue:ye.strokeSmoothing},strokeTaperStart:{min:0,max:100,step:1,defaultValue:ye.strokeTaperStart},strokeTaperEnd:{min:0,max:100,step:1,defaultValue:ye.strokeTaperEnd}},va=2;function He(r){return{enabled:r.beautifulStrokes===!0,thinning:j("strokeThinning",r.strokeThinning),streamline:j("strokeStreamline",r.strokeStreamline),smoothing:j("strokeSmoothing",r.strokeSmoothing),taperStart:j("strokeTaperStart",r.strokeTaperStart),taperEnd:j("strokeTaperEnd",r.strokeTaperEnd)}}function Lr(r,e=ye){var n,o,i;let t=He(e);return ao(r)?{enabled:typeof r.enabled=="boolean"?r.enabled:t.enabled,thinning:j("strokeThinning",(n=r.thinning)!=null?n:t.thinning),streamline:j("strokeStreamline",(o=r.streamline)!=null?o:t.streamline),smoothing:j("strokeSmoothing",(i=r.smoothing)!=null?i:t.smoothing),taperStart:io(r.taperStart,t.taperStart),taperEnd:io(r.taperEnd,t.taperEnd)}:t}function ne(r,e=ye){return Dr(r.handwriting)?r.handwriting:Lr(r.handwriting,e)}function Dr(r){return ao(r)&&typeof r.enabled=="boolean"&&Rr("strokeThinning",r.thinning)&&Rr("strokeStreamline",r.streamline)&&Rr("strokeSmoothing",r.smoothing)&&Nr(r.taperStart)&&Nr(r.taperEnd)}function so(r,e){return!Number.isFinite(r)||!Number.isFinite(e)||e<=0?!0:r>=e*va}function j(r,e){let t=Sa[r],n=typeof e=="number"?e:Number(e);if(!Number.isFinite(n))return t.defaultValue;let o=Math.round(n/t.step)*t.step,i=Math.min(t.max,Math.max(t.min,o));return ma(i,t.step)}function io(r,e){return Nr(r)?r:e}function Nr(r){return typeof r=="number"&&Number.isFinite(r)&&r>=0}function Rr(r,e){return typeof e=="number"&&Number.isFinite(e)&&j(r,e)===e}function ma(r,e){var n,o;let t=(o=(n=e.toString().split(".")[1])==null?void 0:n.length)!=null?o:0;return Number(r.toFixed(t))}function ao(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}var Ar="drawInCanvas";function tt(){return{version:2,strokes:[],colorHistory:[]}}function w(){return`stroke-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function v(r){return Math.round(r*1e4)/1e4}function Rt(r){if(typeof r!="number"||!Number.isFinite(r))return;let e=Math.min(1,Math.max(0,r));return Math.round(e*1e3)/1e3}function Mr(r,e={}){return e.smooth?ga(r):lo(r)}function lo(r){let e=r[0];if(!e)return"";let t=[`M ${R(e.x)} ${R(e.y)}`];if(r.length===1)return t.push(`L ${R(e.x+.01)} ${R(e.y+.01)}`),t.join(" ");for(let n=1;nEa(s,e)).filter(vo),o=n.map(s=>s.stroke),i=Ca(r.colorHistory);return{data:{version:2,strokes:o,colorHistory:i},didBackfillStrokeHandwriting:n.some(s=>s.didBackfillStrokeHandwriting)}}function Ca(r){if(!Array.isArray(r))return[];let e=[];for(let t of r){if(typeof t!="string")continue;let n=ya(t);if(!(!n||e.includes(n))&&(e.push(n),e.length>=10))break}return e}function ya(r){let e=/^#?([\da-f]{6})$/i.exec(r.trim()),t=e==null?void 0:e[1];return t?`#${t.toLowerCase()}`:null}function Ea(r,e){if(!Lt(r))return null;let n=(Array.isArray(r.points)?r.points:[]).map(ka).filter(vo);return n.length===0?null:{stroke:{id:typeof r.id=="string"&&r.id.length>0?r.id:w(),color:typeof r.color=="string"&&r.color.length>0?r.color:"#ff5a5f",width:co(r.width,4),hardness:x(r.hardness),opacity:f(r.opacity),handwriting:Lr(r.handwriting,e),points:n,createdAt:co(r.createdAt,Date.now())},didBackfillStrokeHandwriting:!Dr(r.handwriting)}}function ka(r){if(!Lt(r)||typeof r.x!="number"||typeof r.y!="number"||!Number.isFinite(r.x)||!Number.isFinite(r.y))return null;let e=Rt(r.pressure),t={x:r.x,y:r.y};return e!==void 0&&(t.pressure=e),t}function co(r,e){return typeof r=="number"&&Number.isFinite(r)&&r>0?r:e}async function So(r,e){let t=await r.vault.read(e),n=JSON.parse(t||"{}");if(!Lt(n))throw new Error("Canvas file did not contain a JSON object.");return n}async function ba(r,e,t){await r.vault.modify(e,`${JSON.stringify(t,null," ")} +`)}function Lt(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function vo(r){return r!==null}function mo(r){return!Number.isFinite(r)||r<=0?1:Math.min(1,r)}function go(r){return Number.isFinite(r)?Math.min(12,Math.max(-4,r)):r>0?12:-4}function fo(r){return Number.isFinite(r)?Math.min(4096,Math.max(.0625,r)):r>0?4096:.0625}var Hr=20,wa=2**1;function yo(r){if(!Number.isFinite(r))return Hr;if(r>1){let e=Hr/2**(r-1);return Number.isFinite(e)&&e>0?e:Number.EPSILON}return Pa(r)}function Eo(r,e){return Co(r)?Co(e)?e<=wa?Math.ceil(r/e):r/e:Math.ceil(r):0}function Pa(r){return r<-3.3?160:r<-2.16?80:r<-.91?40:Hr}function Co(r){return typeof r=="number"&&Number.isFinite(r)&&r>0}var ko=10,bo=2**1,Be=new WeakMap;function To(r){var t;let e=(t=r.menu)==null?void 0:t.selection;return e?Aa(e):null}function xo(r){let e=Be.get(r);if(e)return e.refCount++,()=>wo(r);let t=r.update,n=Object.prototype.hasOwnProperty.call(r,"update");if(!Br(t))return _a;let o={original:t,patched:Ta(t),hadOwnUpdate:n,refCount:1};return r.update=o.patched,Be.set(r,o),()=>wo(r)}function wo(r){let e=Be.get(r);e&&(e.refCount--,!(e.refCount>0)&&(r.update===e.patched&&(e.hadOwnUpdate?r.update=e.original:delete r.update),Be.delete(r)))}function Ta(r){return function(t){if(!La(this,t)){r.call(this,t);return}try{xa(this,t)}catch(n){r.call(this,t)}}}function xa(r,e){var s,a,l,c;let t=r.selectionEl,n=(s=r.canvas)==null?void 0:s.canvasEl;r.bbox=e,t.parentNode||(a=n.appendChild)==null||a.call(n,t);for(let d of(l=r.resizerEls)!=null?l:[])(c=t.appendChild)==null||c.call(t,d);let o=Ia(r),i=Na(e,o);Ma(t,{transform:`translate(${Dt(i.minX)}, ${Dt(i.minY)})`,width:Dt(i.maxX-i.minX),height:Dt(i.maxY-i.minY)})}function Ia(r){var t;if(Ra(r))return 0;let e=(t=r.canvas)==null?void 0:t.scale;return!Ba(e)||e<=bo?ko:ko*bo/e}function Ra(r){let e=r.selectionEl;return!!e&&!Po(e,"mod-group-selection")&&!Po(e,"mod-node-highlight")}function Na(r,e){return{minX:r.minX-e,minY:r.minY-e,maxX:r.maxX+e,maxY:r.maxY+e}}function La(r,e){var t;return Da(e)&&!!r.selectionEl&&!!((t=r.canvas)!=null&&t.canvasEl)}function Da(r){return rt(r.minX)&&rt(r.minY)&&rt(r.maxX)&&rt(r.maxY)}function Aa(r){let e=Object.getPrototypeOf(r);for(;e&&e!==Object.prototype;){if(Object.prototype.hasOwnProperty.call(e,"update"))return Be.has(e)||Br(e.update)?e:null;e=Object.getPrototypeOf(e)}return Object.prototype.hasOwnProperty.call(r,"update")&&(Be.has(r)||Br(r.update))?r:null}function Br(r){if(typeof r!="function")return!1;let e=Function.prototype.toString.call(r);return e.includes("selectionEl")&&e.includes("resizerEls")&&e.includes("setCssStyles")&&e.includes("10")}function Ma(r,e){var t;if(typeof r.setCssStyles=="function"){r.setCssStyles(e);return}for(let[n,o]of Object.entries(e))typeof((t=r.style)==null?void 0:t.setProperty)=="function"?r.style.setProperty(n,o):r.style&&(r.style[n]=o)}function Po(r,e){var t;return r?typeof((t=r.classList)==null?void 0:t.contains)=="function"&&r.classList.contains(e)?!0:Ha(r).includes(e):!1}function Ha(r){let e=r.className;if(typeof e=="string")return e.split(/\s+/).filter(t=>t.length>0);if(e&&typeof e=="object"&&"baseVal"in e){let t=e.baseVal;return typeof t=="string"?t.split(/\s+/).filter(n=>n.length>0):[]}return[]}function Dt(r){return`${Number(r.toFixed(6)).toString()}px`}function rt(r){return typeof r=="number"&&Number.isFinite(r)}function Ba(r){return rt(r)&&r>0}function _a(){}var Io=1,Ro=1.1,At=class{constructor(e){this.canvas=null;this.hasOriginalMinContainerDimension=!1;this.isRequestFramePatched=!1;this.hadOwnRequestFrame=!1;this.isZoomToBboxPatched=!1;this.hadOwnZoomToBbox=!1;this.isGridSpacingPatched=!1;this.hadOwnGridSpacing=!1;this.isSnapDistancePatched=!1;this.hadOwnSnapDistance=!1;this.selectionOverlayPatchPrototype=null;this.releaseSelectionOverlayPatchCallback=null;this.target=e}setEnabled(e){let t=Va(this.target);if(!e||!t){this.restore();return}this.canvas&&this.canvas!==t&&this.restore(),this.canvas=t,this.applyMinimumDimensionOverride(t),this.applyZoomOverrides(t)}dispose(){this.restore()}applyMinimumDimensionOverride(e){e.config&&(this.hasOriginalMinContainerDimension||(this.originalMinContainerDimension=e.config.minContainerDimension,this.hasOriginalMinContainerDimension=!0),e.config.minContainerDimension=Io)}applyZoomOverrides(e){this.patchRequestFrame(e),this.patchZoomToBbox(e),this.patchGridSpacing(e),this.patchSnapDistance(e),this.patchSelectionOverlay(e)}patchRequestFrame(e){if(this.isRequestFramePatched||typeof e.requestFrame!="function")return;let t=e.requestFrame;this.hadOwnRequestFrame=Object.prototype.hasOwnProperty.call(e,"requestFrame"),this.originalRequestFrame=t;let n=o=>{var l,c;let i=(c=(l=e.canvasEl)==null?void 0:l.win)!=null?c:window,s=Reflect.get(i,"requestAnimationFrame"),a=s.bind(i);Reflect.set(i,"requestAnimationFrame",d=>a(u=>{this.runWithZoomClampBypass(e,()=>d(u))}));try{t.call(e,o)}finally{Reflect.set(i,"requestAnimationFrame",s)}};e.requestFrame=n,this.patchedRequestFrame=n,this.isRequestFramePatched=!0}patchZoomToBbox(e){if(this.isZoomToBboxPatched||typeof e.zoomToBbox!="function")return;let t=e.zoomToBbox;this.hadOwnZoomToBbox=Object.prototype.hasOwnProperty.call(e,"zoomToBbox"),this.originalZoomToBbox=t;let n=o=>{this.zoomToBboxWithoutUpperZoomLimit(e,o)||t.call(e,o)};e.zoomToBbox=n,this.patchedZoomToBbox=n,this.isZoomToBboxPatched=!0}patchGridSpacing(e){var o;if(this.isGridSpacingPatched)return;let t=Object.getOwnPropertyDescriptor(e,"gridSpacing");if(t&&!t.configurable)return;let n=()=>yo(No(e));try{Object.defineProperty(e,"gridSpacing",{configurable:!0,enumerable:(o=t==null?void 0:t.enumerable)!=null?o:!1,get:n})}catch(i){return}this.hadOwnGridSpacing=!!t,this.originalGridSpacingDescriptor=t,this.patchedGridSpacingGetter=n,this.isGridSpacingPatched=!0}patchSnapDistance(e){var o;if(this.isSnapDistancePatched)return;let t=Object.getOwnPropertyDescriptor(e,"snapDistance");if(t&&!t.configurable)return;let n=()=>{var i;return Eo((i=e.config)==null?void 0:i.objectSnapDistance,Fa(e))};try{Object.defineProperty(e,"snapDistance",{configurable:!0,enumerable:(o=t==null?void 0:t.enumerable)!=null?o:!1,get:n})}catch(i){return}this.hadOwnSnapDistance=!!t,this.originalSnapDistanceDescriptor=t,this.patchedSnapDistanceGetter=n,this.isSnapDistancePatched=!0}patchSelectionOverlay(e){let t=To(e);!t||t===this.selectionOverlayPatchPrototype||(this.restoreSelectionOverlayPatch(),this.selectionOverlayPatchPrototype=t,this.releaseSelectionOverlayPatchCallback=xo(t))}zoomToBboxWithoutUpperZoomLimit(e,t){let n=e.canvasRect;if(!n||typeof e.markViewportChanged!="function")return!1;let o=n.width,i=n.height,s=t.maxX-t.minX,a=t.maxY-t.minY;if(!_e(o)||!_e(i)||!_e(s)||!_e(a))return!1;let l=Math.min(o/(Ro*s),i/(Ro*a));if(!_e(l))return!1;let c=fo(l);return e.tx=(t.minX+t.maxX)/2,e.ty=(t.minY+t.maxY)/2,e.zoomCenter=null,e.tZoom=Math.log2(c),e.markViewportChanged(),!0}runWithZoomClampBypass(e,t){let n=Math,o=n.clamp;if(typeof o!="function"||!this.shouldBypassZoomClamp(e)){t();return}n.clamp=(i,s,a)=>s===-4&&a===1&&i>1?go(i):o(i,s,a);try{t()}finally{n.clamp=o}}shouldBypassZoomClamp(e){if(e!==this.canvas)return!1;let t=typeof e.tZoom=="number"?e.tZoom:e.zoom;return typeof t=="number"&&Number.isFinite(t)&&t>1}restore(){let e=this.canvas;e&&(this.restoreMinimumDimensionOverride(e),this.restoreZoomOverrides(e),this.canvas=null)}restoreMinimumDimensionOverride(e){this.hasOriginalMinContainerDimension&&e.config&&e.config.minContainerDimension===Io&&(e.config.minContainerDimension=this.originalMinContainerDimension),this.hasOriginalMinContainerDimension=!1,this.originalMinContainerDimension=void 0}restoreZoomOverrides(e){this.restoreRequestFrame(e),this.restoreZoomToBbox(e),this.restoreGridSpacing(e),this.restoreSnapDistance(e),this.restoreSelectionOverlayPatch(),this.restoreNativeZoomClamp(e)}restoreSelectionOverlayPatch(){var e;(e=this.releaseSelectionOverlayPatchCallback)==null||e.call(this),this.releaseSelectionOverlayPatchCallback=null,this.selectionOverlayPatchPrototype=null}restoreNativeZoomClamp(e){var t;typeof e.tZoom!="number"||e.tZoom<=1||(e.tZoom=1,(t=e.markViewportChanged)==null||t.call(e))}restoreRequestFrame(e){this.isRequestFramePatched&&(e.requestFrame===this.patchedRequestFrame&&(this.hadOwnRequestFrame?e.requestFrame=this.originalRequestFrame:delete e.requestFrame),this.isRequestFramePatched=!1,this.hadOwnRequestFrame=!1,this.originalRequestFrame=void 0,this.patchedRequestFrame=void 0)}restoreZoomToBbox(e){this.isZoomToBboxPatched&&(e.zoomToBbox===this.patchedZoomToBbox&&(this.hadOwnZoomToBbox?e.zoomToBbox=this.originalZoomToBbox:delete e.zoomToBbox),this.isZoomToBboxPatched=!1,this.hadOwnZoomToBbox=!1,this.originalZoomToBbox=void 0,this.patchedZoomToBbox=void 0)}restoreGridSpacing(e){if(!this.isGridSpacingPatched)return;let t=Object.getOwnPropertyDescriptor(e,"gridSpacing");(t==null?void 0:t.get)===this.patchedGridSpacingGetter&&(this.hadOwnGridSpacing&&this.originalGridSpacingDescriptor?Object.defineProperty(e,"gridSpacing",this.originalGridSpacingDescriptor):delete e.gridSpacing),this.isGridSpacingPatched=!1,this.hadOwnGridSpacing=!1,this.originalGridSpacingDescriptor=void 0,this.patchedGridSpacingGetter=void 0}restoreSnapDistance(e){if(!this.isSnapDistancePatched)return;let t=Object.getOwnPropertyDescriptor(e,"snapDistance");(t==null?void 0:t.get)===this.patchedSnapDistanceGetter&&(this.hadOwnSnapDistance&&this.originalSnapDistanceDescriptor?Object.defineProperty(e,"snapDistance",this.originalSnapDistanceDescriptor):delete e.snapDistance),this.isSnapDistancePatched=!1,this.hadOwnSnapDistance=!1,this.originalSnapDistanceDescriptor=void 0,this.patchedSnapDistanceGetter=void 0}};function Va(r){var e;return(e=r.view.canvas)!=null?e:null}function No(r){return typeof r.zoom=="number"&&Number.isFinite(r.zoom)?r.zoom:typeof r.tZoom=="number"?r.tZoom:1}function Fa(r){return _e(r.scale)?r.scale:2**No(r)}function _e(r){return typeof r=="number"&&Number.isFinite(r)&&r>0}var Vt=require("obsidian");var za="drawInCanvasScale",Ht="draw-in-canvas-scaled-node-content";var Bt=class{constructor(e){this.hasSyncedContentScales=!1;this.hasTrackedContentScales=!1;this.contentScaleCanvas=null;this.hasContentScaleNodeMap=!1;this.contentScaleNodeCount=0;this.scaledContentByNodeId=new Map;this.getContainerEl=e}syncForCanvas(e){if(!(e!=null&&e.nodes)){this.clear(),this.contentScaleCanvas=e,this.hasContentScaleNodeMap=!1;return}if(e!==this.contentScaleCanvas||!this.hasContentScaleNodeMap||!this.hasSyncedContentScales||e.nodes.size!==this.contentScaleNodeCount){this.syncFull(e);return}this.hasTrackedContentScales&&this.syncTrackedContentScales(e)}syncChangedNodes(e,t){if(t.length!==0){if(!(e!=null&&e.nodes)){this.syncForCanvas(e);return}if(e!==this.contentScaleCanvas||!this.hasContentScaleNodeMap||!this.hasSyncedContentScales||e.nodes.size!==this.contentScaleNodeCount){this.syncFull(e);return}for(let n of t){let o=Ga(n);!o||e.nodes.get(o)!==n||this.syncNodeContentScale(o,n)}this.hasTrackedContentScales=this.scaledContentByNodeId.size>0}}clear(){for(let e of Array.from(this.getContainerEl().querySelectorAll(`.${Ht}`)))Ee(e);this.scaledContentByNodeId.clear(),this.hasSyncedContentScales=!0,this.hasTrackedContentScales=!1,this.contentScaleCanvas=null,this.hasContentScaleNodeMap=!1,this.contentScaleNodeCount=0}syncFull(e){var n,o,i,s,a;let t=new Set;this.scaledContentByNodeId.clear();for(let[l,c]of(o=(n=e.nodes)==null?void 0:n.entries())!=null?o:[]){let d=(i=c.getData)==null?void 0:i.call(c),u=_r(d),h=u?Or(d):1,p=u&&!_t(h),S=Vr(c);if(!S){p&&this.scaledContentByNodeId.set(l,{contentEl:null});continue}if(!p){Ee(S);continue}Fr(S,h),t.add(S),this.scaledContentByNodeId.set(l,{contentEl:S})}this.clearStaleContentScaleEls(t),this.hasSyncedContentScales=!0,this.hasTrackedContentScales=this.scaledContentByNodeId.size>0,this.contentScaleCanvas=e,this.hasContentScaleNodeMap=!0,this.contentScaleNodeCount=(a=(s=e.nodes)==null?void 0:s.size)!=null?a:0}syncTrackedContentScales(e){var t;for(let[n,o]of Array.from(this.scaledContentByNodeId.entries())){let i=(t=e.nodes)==null?void 0:t.get(n);if(!i){Mt(o,null),this.scaledContentByNodeId.delete(n);continue}this.syncNodeContentScale(n,i)}this.hasTrackedContentScales=this.scaledContentByNodeId.size>0}syncNodeContentScale(e,t){var l;let n=this.scaledContentByNodeId.get(e),o=(l=t.getData)==null?void 0:l.call(t),i=Vr(t),s=_r(o),a=s?Or(o):1;if(!s){Mt(n,i),i&&Ee(i),this.scaledContentByNodeId.delete(e);return}if(_t(a)){Mt(n,i),i&&Ee(i),n?this.scaledContentByNodeId.set(e,{contentEl:i}):this.scaledContentByNodeId.delete(e);return}Mt(n,i),i&&Fr(i,a),this.scaledContentByNodeId.set(e,{contentEl:i})}clearStaleContentScaleEls(e){for(let t of Array.from(this.getContainerEl().querySelectorAll(`.${Ht}`)))e.has(t)||Ee(t)}};function Lo(r,e){return zr(r)?Wa(Do(r)*e):null}function zr(r){var e;return _r((e=r.getData)==null?void 0:e.call(r))}function Do(r){var e;return Or((e=r.getData)==null?void 0:e.call(r))}function Ao(r,e){if(e===null||_t(e)){delete r.drawInCanvasScale;return}r.drawInCanvasScale=e}function Kr(r){let e=Vr(r);if(!e)return;let t=Do(r);if(_t(t)){Ee(e);return}Fr(e,t)}function _r(r){return(r==null?void 0:r.type)==="text"?!0:(r==null?void 0:r.type)==="file"&&Ka(r.file)}function Ka(r){return typeof r=="string"&&r.toLowerCase().endsWith(".md")}function Or(r){let e=r==null?void 0:r[za];return Ya(e)?Math.min(100,Math.max(.01,e)):1}function Vr(r){var e,t;return(t=(e=r.nodeEl)==null?void 0:e.querySelector(".canvas-node-content"))!=null?t:null}function Fr(r,e){r.classList.add(Ht),r.setCssStyles({transform:`scale(${e})`,transformOrigin:"top left",width:`${100/e}%`,height:`${100/e}%`,flex:"0 0 auto"})}function Ee(r){r.classList.remove(Ht),r.setCssStyles({transform:"",transformOrigin:"",width:"",height:"",flex:""})}function Mt(r,e){r!=null&&r.contentEl&&r.contentEl!==e&&Ee(r.contentEl)}function Ga(r){var t;if(typeof r.id=="string"&&r.id.length>0)return r.id;let e=(t=r.getData)==null?void 0:t.call(r).id;return typeof e=="string"&&e.length>0?e:null}function _t(r){return Math.abs(r-1)<.001}function Wa(r){let e=Math.min(100,Math.max(.01,r));return Math.round(e*1e3)/1e3}function Ua(r){return typeof r=="number"&&Number.isFinite(r)}function Ya(r){return Ua(r)&&r>0}function Ho(r){var t;let e=new Set;for(let n of(t=r.selection)!=null?t:[]){let o=qa(r,n);if(!(!o||!Za(o)))for(let i of Xa(o))e.add(i)}return Array.from(e)}function Xa(r){let e=[],t=Object.getPrototypeOf(r);for(;t&&t!==Object.prototype;){let n=t;Object.prototype.hasOwnProperty.call(n,"onResizePointerdown")&&typeof n.onResizePointerdown=="function"&&e.push(n),t=Object.getPrototypeOf(t)}return e}function qa(r,e){var t,n;if(Gr(e)){let o=(t=r.nodes)==null?void 0:t.get(e.id);return Gr(o)?o:null}if(typeof e=="string"){let o=(n=r.nodes)==null?void 0:n.get(e);return Gr(o)?o:null}return null}function Gr(r){if(!r||typeof r!="object")return!1;let e=r;return typeof e.id=="string"&&e.id.length>0}function Za(r){return Mo(r.width)&&Mo(r.height)&&Wr(r.x)&&Wr(r.y)&&(typeof r.moveAndResize=="function"||typeof r.getData=="function"&&typeof r.setData=="function")}function Wr(r){return typeof r=="number"&&Number.isFinite(r)}function Mo(r){return Wr(r)&&r>0}function nt(r,e,t){let n=e instanceof Set?e:new Set(e);switch(t){case"bring-forward":return $a(r,n);case"bring-to-front":return Ja(r,n);case"send-backward":return ja(r,n);case"send-to-back":return Qa(r,n);default:return el(t)}}function oe(r,e,t){let n=nt(r,e,t);return!ot(r,n)}function Bo(r,e){let t=e instanceof Set?e:new Set(e);return{"bring-forward":oe(r,t,"bring-forward"),"bring-to-front":oe(r,t,"bring-to-front"),"send-backward":oe(r,t,"send-backward"),"send-to-back":oe(r,t,"send-to-back")}}function ot(r,e){return r.length!==e.length?!1:r.every((t,n)=>t===e[n])}function Ot(r,e){let t=new Map;for(let i of r)typeof i.id=="string"&&t.set(i.id,i);let n=[],o=new Set;for(let i of e){let s=t.get(i);!s||o.has(i)||(n.push(s),o.add(i))}for(let i of r)(typeof i.id!="string"||!o.has(i.id))&&n.push(i);return n}function $a(r,e){let t=[...r];for(let n=t.length-2;n>=0;n--){let o=t[n],i=t[n+1];o&&i&&e.has(o)&&!e.has(i)&&(t[n]=i,t[n+1]=o)}return t}function ja(r,e){let t=[...r];for(let n=1;nOo(r);let t=r.renderZIndex,n=Object.prototype.hasOwnProperty.call(r,"renderZIndex");if(!zo(t))return ol;let o={original:t,patched:tl(t),hadOwnRenderZIndex:n,refCount:1};return r.renderZIndex=o.patched,it.set(r,o),()=>Oo(r)}function Ur(r){var e,t,n;for(let o of(t=(e=r.nodes)==null?void 0:e.values())!=null?t:[])(n=o.renderZIndex)==null||n.call(o)}function Oo(r){let e=it.get(r);e&&(e.refCount--,!(e.refCount>0)&&(r.renderZIndex===e.patched&&(e.hadOwnRenderZIndex?r.renderZIndex=e.original:delete r.renderZIndex),it.delete(r)))}function tl(r){return function(){if(!this.nodeEl){r.call(this);return}let t=nl(this.zIndex)?this.zIndex:0;this.renderedZIndex!==t&&(this.nodeEl.style.zIndex=t.toString(),this.renderedZIndex=t)}}function rl(r){let e=Object.getPrototypeOf(r);for(;e&&e!==Object.prototype;){if(Object.prototype.hasOwnProperty.call(e,"renderZIndex"))return e;e=Object.getPrototypeOf(e)}return Object.prototype.hasOwnProperty.call(r,"renderZIndex")?r:null}function zo(r){if(typeof r!="function")return!1;let e=Function.prototype.toString.call(r);return e.includes("selection")&&e.includes("zIndexCounter")&&e.includes("renderedZIndex")}function nl(r){return typeof r=="number"&&Number.isFinite(r)}function ol(){}var Ko=1.25,il=1,qr="draw-in-canvas-scale-button",sl="draw-in-canvas-scale-grow-button",al="draw-in-canvas-scale-shrink-button",qo="draw-in-canvas-native-layer-menu",ll="draw-in-canvas-layer-menu",Zo="draw-in-canvas-layer-menu-button",Xr="draw-in-canvas-layer-submenu-button",cl=`.${qr}, .${qo}`,dl=["send-to-back","send-backward","bring-forward","bring-to-front"],ul={"send-to-back":{label:"Send selected canvas item to back",icon:"arrow-down-to-line"},"send-backward":{label:"Send selected canvas item backward",icon:"arrow-down"},"bring-forward":{label:"Bring selected canvas item forward",icon:"arrow-up"},"bring-to-front":{label:"Bring selected canvas item to front",icon:"arrow-up-to-line"}},hl=1e-4,zt=new WeakMap,Kt=class{constructor(e){this.enabled=!1;this.buttonEls=[];this.layerMenuEl=null;this.buttonDisposers=[];this.releaseResizePatches=new Map;this.releaseZIndexPatches=new Map;this.deferredSyncFrameId=null;this.handleButtonPointerDown=e=>{e.preventDefault(),e.stopPropagation()};this.target=e,this.contentScaleSync=new Bt(()=>this.target.containerEl)}setEnabled(e){this.enabled=e;let t=Oe(this.target);if(!e){this.removeControls(),this.releaseAspectRatioResizePatch(),this.releaseZIndexPatch(t),this.cancelDeferredSync(),this.contentScaleSync.syncForCanvas(t);return}this.sync(),this.scheduleDeferredSync()}syncForCanvasDomChange(){if(this.enabled){this.sync();return}this.contentScaleSync.syncForCanvas(Oe(this.target))}sync(e={}){let t=Oe(this.target);if(!t){this.removeControls(),this.contentScaleSync.clear(),this.releaseAspectRatioResizePatch(),this.releaseZIndexPatch();return}if(e.skipContentScaleSync||this.contentScaleSync.syncForCanvas(t),!this.enabled){this.removeControls(),this.releaseAspectRatioResizePatch(),this.releaseZIndexPatch(t);return}this.syncZIndexPatch(t),this.syncAspectRatioResizePatch(t);let n=this.findNativeMenuEl();if(!n||Zr(t).length===0){this.removeControls();return}if(this.removeStaleControls(n),this.areControlsMountedIn(n)){this.syncLayerMenuButtonStates(t);return}this.removeControls();let o=this.createScaleButton("grow"),i=this.createScaleButton("shrink"),s=this.createLayerMenuEl(t);this.buttonEls.push(o,i),this.layerMenuEl=s,this.insertControls(n,o,i,s)}dispose(){let e=Oe(this.target);this.enabled=!1,this.cancelDeferredSync(),this.removeControls(),this.releaseAspectRatioResizePatch(),this.releaseZIndexPatch(e),this.contentScaleSync.clear()}getOwnedElements(){var e;return[...this.buttonEls.filter(t=>t.isConnected),...(e=this.layerMenuEl)!=null&&e.isConnected?[this.layerMenuEl]:[]]}createScaleButton(e){let t=activeDocument.createElement("button");return t.type="button",t.classList.add("clickable-icon",qr),t.classList.add(e==="grow"?sl:al),t.setAttribute("aria-label",e==="grow"?"Make selected canvas item larger":"Make selected canvas item smaller"),t.setAttribute("data-tooltip-position","top"),(0,Vt.setIcon)(t,e==="grow"?"plus":"minus"),this.buttonDisposers.push(this.addListener(t,"pointerdown",this.handleButtonPointerDown),this.addListener(t,"click",n=>this.handleScaleButtonClick(n,e))),t}createLayerMenuEl(e){let t=activeDocument.createElement("div");t.classList.add(ll,qo);let n=activeDocument.createElement("button");n.type="button",n.classList.add("clickable-icon",Zo),n.setAttribute("aria-label","Layer selected canvas item"),n.setAttribute("aria-haspopup","menu"),n.setAttribute("aria-expanded","false"),n.setAttribute("data-tooltip-position","top"),(0,Vt.setIcon)(n,"layers");let o=activeDocument.createElement("div");o.classList.add("canvas-menu","draw-in-canvas-layer-submenu"),o.setAttribute("role","menu");let i=Wo(e);return o.append(...dl.map(s=>this.createLayerActionButton(i,s))),t.append(n,o),this.buttonDisposers.push(this.addListener(n,"pointerdown",this.handleButtonPointerDown),this.addListener(n,"click",s=>this.handleLayerMenuButtonClick(s,t,n))),t}createLayerActionButton(e,t){let n=ul[t],o=activeDocument.createElement("button");return o.type="button",o.classList.add("clickable-icon",Xr),o.dataset.layerAction=t,o.disabled=!e[t],o.setAttribute("aria-label",n.label),o.setAttribute("data-tooltip-position","top"),o.setAttribute("role","menuitem"),(0,Vt.setIcon)(o,n.icon),this.buttonDisposers.push(this.addListener(o,"pointerdown",this.handleButtonPointerDown),this.addListener(o,"click",i=>this.handleLayerActionButtonClick(i,t))),o}insertControls(e,...t){let n=Hl(e);for(let o of t)e.insertBefore(o,n)}areControlsMountedIn(e){var t;return this.buttonEls.length===2&&this.buttonEls.every(n=>n.isConnected&&n.parentElement===e)&&!!((t=this.layerMenuEl)!=null&&t.isConnected&&this.layerMenuEl.parentElement===e)}removeStaleControls(e){let t=new Set([...this.buttonEls]);this.layerMenuEl&&t.add(this.layerMenuEl);let n=Array.from(this.target.containerEl.querySelectorAll(cl));for(let o of n)(!t.has(o)||o.parentElement!==e)&&o.remove()}removeControls(){var e;for(let t of this.buttonDisposers.splice(0))t();for(let t of this.buttonEls.splice(0))t.remove();(e=this.layerMenuEl)==null||e.remove(),this.layerMenuEl=null}findNativeMenuEl(){return this.target.containerEl.querySelector(".canvas-menu:not(.draw-in-canvas-stroke-scale-menu):not(.draw-in-canvas-layer-submenu)")}syncAspectRatioResizePatch(e){let t=new Set(Ho(e));for(let[n,o]of this.releaseResizePatches)t.has(n)||(o(),this.releaseResizePatches.delete(n));for(let n of t)this.releaseResizePatches.has(n)||this.releaseResizePatches.set(n,pl(n))}releaseAspectRatioResizePatch(){for(let e of this.releaseResizePatches.values())e();this.releaseResizePatches.clear()}syncZIndexPatch(e){let t=new Set(Vo(e));for(let[n,o]of this.releaseZIndexPatches)t.has(n)||(o(),this.releaseZIndexPatches.delete(n));for(let n of t)this.releaseZIndexPatches.has(n)||this.releaseZIndexPatches.set(n,Fo(n));Ur(e)}releaseZIndexPatch(e){for(let t of this.releaseZIndexPatches.values())t();this.releaseZIndexPatches.clear(),e&&Ur(e)}scheduleDeferredSync(){this.deferredSyncFrameId===null&&(this.deferredSyncFrameId=window.requestAnimationFrame(()=>{this.deferredSyncFrameId=null,this.enabled&&this.sync()}))}cancelDeferredSync(){this.deferredSyncFrameId!==null&&(window.cancelAnimationFrame(this.deferredSyncFrameId),this.deferredSyncFrameId=null)}handleScaleButtonClick(e,t){var s,a,l,c;e.preventDefault(),e.stopPropagation();let n=Oe(this.target);if(!n){this.removeControls();return}let o=t==="grow"?Ko:1/Ko,i=wl(n,o);if(!i.didScale){this.sync();return}this.contentScaleSync.syncChangedNodes(n,i.contentScaleNodes),(s=n.requestSave)==null||s.call(n,!0),(l=(a=n.menu)==null?void 0:a.render)==null||l.call(a,!0),(c=n.requestFrame)==null||c.call(n),this.sync({skipContentScaleSync:!0})}handleLayerMenuButtonClick(e,t,n){e.preventDefault(),e.stopPropagation();let o=!t.classList.contains("is-open");t.classList.toggle("is-open",o),n.setAttribute("aria-expanded",o.toString())}handleLayerActionButtonClick(e,t){var o,i,s,a;e.preventDefault(),e.stopPropagation();let n=Oe(this.target);if(!n){this.removeControls();return}if(!El(n,t)){this.sync();return}(o=n.requestSave)==null||o.call(n,!0),(s=(i=n.menu)==null?void 0:i.render)==null||s.call(i,!0),(a=n.requestFrame)==null||a.call(n),this.sync()}syncLayerMenuButtonStates(e){var n,o;let t=Wo(e);for(let i of Array.from((o=(n=this.layerMenuEl)==null?void 0:n.querySelectorAll(`.${Xr}`))!=null?o:[])){let s=Bl(i.dataset.layerAction);s&&(i.disabled=!t[s])}}addListener(e,t,n,o){let i=n;return e.addEventListener(t,i,o),()=>e.removeEventListener(t,i,o)}};function pl(r){let e=r.onResizePointerdown,t=Object.prototype.hasOwnProperty.call(r,"onResizePointerdown");if(typeof e!="function")return yl;let n=zt.get(r);if(n)return n.refCount++,()=>Go(r);let o={original:e,patched:Sl(e),hadOwnResizePointerdown:t,refCount:1};return r.onResizePointerdown=o.patched,zt.set(r,o),()=>Go(r)}function Go(r){let e=zt.get(r);e&&(e.refCount--,!(e.refCount>0)&&(r.onResizePointerdown===e.patched&&(e.hadOwnResizePointerdown?r.onResizePointerdown=e.original:delete r.onResizePointerdown),zt.delete(r)))}function Sl(r){return function(t,n){if(!vl(this,t)){r.call(this,t,n);return}let o=this.aspectRatio,i=ml(this);if(!ke(i)){r.call(this,t,n);return}this.aspectRatio=i;let s=gl(this,o,i);try{r.call(this,t,n)}catch(a){throw s(),a}if(t.defaultPrevented){fl(t,s);return}s()}}function vl(r,e){return e.shiftKey&&e.isPrimary&&e.button===0&&!ke(r.aspectRatio)&&ke(r.width)&&ke(r.height)}function ml(r){return r.width/r.height}function gl(r,e,t){let n=!1;return()=>{var o;n||(n=!0,Math.abs(((o=r.aspectRatio)!=null?o:0)-t){for(let i of n.splice(0))i();t.setTimeout(e,0)};n=[Yr(t,"pointerup",o,!0),Yr(t,"pointercancel",o,!0),Yr(t,"blur",o,!0)]}function Yr(r,e,t,n){let o=t;return r.addEventListener(e,o,n),()=>r.removeEventListener(e,o,n)}function Cl(r){var e,t;return(t=(e=r.win)!=null?e:r.view)!=null?t:window}function yl(){}function Wo(r){return Bo($o(r),jo(r))}function El(r,e){let t=jo(r),n=$o(r),o=nt(n,t,e);return t.length===0||!oe(n,t,e)?!1:(kl(r,o),!0)}function kl(r,e){var i,s,a,l;let t=Jo(r),n=Ot(t,e),o=t.map((c,d)=>J(c.zIndex)?c.zIndex:d+1).sort((c,d)=>c-d);for(let c=0;ce.id).filter(Qo)}function jo(r){return Zr(r).map(e=>e.id).filter(Qo)}function Jo(r){var e,t;return Array.from((t=(e=r.nodes)==null?void 0:e.values())!=null?t:[]).filter(Ft).sort(bl)}function bl(r,e){return Uo(r)-Uo(e)}function Uo(r){return J(r.zIndex)?r.zIndex:0}function wl(r,e){let t=Pl(r),n=Rl(t);if(!n)return{didScale:!1,contentScaleNodes:[]};let o=Al(r),i=Dl(n),s=[],a=!1;for(let l of t){let c={x:l.x+l.width/2,y:l.y+l.height/2},d=Yo(l.width,e,o),u=Yo(l.height,e,o),h={x:i.x+(c.x-i.x)*e,y:i.y+(c.y-i.y)*e},p={x:Xo(h.x-d/2),y:Xo(h.y-u/2),width:d,height:u},S=Lo(l,e);Ml(l,p)&&S===null||Il(l,p,S)&&(a=!0,zr(l)&&s.push(l))}return{didScale:a,contentScaleNodes:s}}function Pl(r){return Zr(r).filter(xl)}function Zr(r){let e=r.selection;if(!e)return[];let t=[];for(let n of e){let o=Tl(r,n);o&&t.push(o)}return t}function Tl(r,e){var t,n;if(Ft(e)){let o=(t=r.nodes)==null?void 0:t.get(e.id);return Ft(o)?o:null}if(typeof e=="string"){let o=(n=r.nodes)==null?void 0:n.get(e);return Ft(o)?o:null}return null}function Ft(r){if(!r||typeof r!="object")return!1;let e=r;return typeof e.id=="string"&&e.id.length>0}function xl(r){if(!r||typeof r!="object")return!1;let e=r;return ke(e.width)&&ke(e.height)&&J(e.x)&&J(e.y)&&(typeof e.moveAndResize=="function"||typeof e.getData=="function"&&typeof e.setData=="function")}function Il(r,e,t){var n,o;if(typeof r.getData=="function"&&typeof r.setData=="function"){let i={...r.getData(),...e};return Ao(i,t),r.setData(i),(n=r.render)==null||n.call(r),Kr(r),!0}return typeof r.moveAndResize=="function"?(r.moveAndResize(e),(o=r.render)==null||o.call(r),Kr(r),!0):!1}function Rl(r){let e=null;for(let t of r){let n=Nl(t);e=e?Ll(e,n):n}return e}function Nl(r){var t;let e=(t=r.getBBox)==null?void 0:t.call(r);return e&&_l(e)?e:{minX:r.x,minY:r.y,maxX:r.x+r.width,maxY:r.y+r.height}}function Ll(r,e){return{minX:Math.min(r.minX,e.minX),minY:Math.min(r.minY,e.minY),maxX:Math.max(r.maxX,e.maxX),maxY:Math.max(r.maxY,e.maxY)}}function Dl(r){return{x:(r.minX+r.maxX)/2,y:(r.minY+r.maxY)/2}}function Al(r){var t;let e=(t=r.config)==null?void 0:t.minContainerDimension;return ke(e)?e:il}function Yo(r,e,t){let n=r*e,o=e<1?Math.floor(n):Math.ceil(n);return Math.max(t,o)}function Ml(r,e){return r.x===e.x&&r.y===e.y&&r.width===e.width&&r.height===e.height}function Hl(r){return r.querySelector(`button.clickable-icon:not(.${qr}):not(.${Zo}):not(.${Xr})`)}function Oe(r){var e;return(e=r.view.canvas)!=null?e:null}function Bl(r){return r==="bring-forward"||r==="bring-to-front"||r==="send-backward"||r==="send-to-back"?r:null}function Qo(r){return r!==void 0}function _l(r){return J(r.minX)&&J(r.minY)&&J(r.maxX)&&J(r.maxY)&&r.maxX>=r.minX&&r.maxY>=r.minY}function J(r){return typeof r=="number"&&Number.isFinite(r)}function ke(r){return J(r)&&r>0}function Xo(r){return Math.round(r)}var Q={syncTinyCanvasControls:!1,syncNativeElementControls:!1},K={syncTinyCanvasControls:!0,syncNativeElementControls:!0},ti="draw-in-canvas-",en=["canvas-menu","canvas-node","canvas-node-content","canvas-selection"],Ol=["canvas-menu","canvas-node","canvas-selection"],Ut=["canvas-edges","canvas-display-path","canvas-interaction-path","canvas-path-end","canvas-snaps"],ri=["canvas"],Vl=["canvas","canvas-wrapper","canvas-controls","view-content"],Fl=["canvas-controls","canvas-node-content"];function ni(r){if(r.length===0)return{...K};let e={...Q};for(let t of r)if(e=st(e,zl(t)),$r(e,K))break;return e}function st(r,e){return{syncTinyCanvasControls:r.syncTinyCanvasControls||e.syncTinyCanvasControls,syncNativeElementControls:r.syncNativeElementControls||e.syncNativeElementControls}}function zl(r){let e=r;return e.type==="attributes"?Kl(e):e.type==="childList"?Gl(e):{...K}}function Kl(r){let e=Ve(r.target);return e?Yl(r,e)?{...Q}:_(e,Ut)||Gt(e,["canvas-edges","canvas-snaps"])?{syncTinyCanvasControls:!0,syncNativeElementControls:!1}:_(e,ri)?{syncTinyCanvasControls:!0,syncNativeElementControls:!1}:_(e,en)||Gt(e,["canvas-menu"])?{syncTinyCanvasControls:!1,syncNativeElementControls:!0}:Gt(e,Fl)?{...Q}:{...K}:{...K}}function Gl(r){let e=Ve(r.target);if(!e)return{...K};let t={...Q},n=!1,o=!1,i=!1;for(let a of[...Wt(r.addedNodes),...Wt(r.removedNodes)]){let l=Ve(a);if(!l)continue;if(Jr(l)){o=!0;continue}i=!0;let c=Wl(l);t=st(t,c),$r(c,Q)&&(n=!0)}if(o&&!i&&!n)return{...Q};let s=Ul(e);return t=st(t,s),$r(t,Q)?Jr(e)||_(e,["canvas-node-content"])?{...Q}:n?{...K}:_(e,Vl)?{...Q}:{...K}:t}function Wl(r){return{syncTinyCanvasControls:jr(r,Ut),syncNativeElementControls:jr(r,en)}}function Ul(r){return{syncTinyCanvasControls:_(r,Ut)||Gt(r,["canvas-edges","canvas-snaps"]),syncNativeElementControls:_(r,Ol)}}function $r(r,e){return r.syncTinyCanvasControls===e.syncTinyCanvasControls&&r.syncNativeElementControls===e.syncNativeElementControls}function jr(r,e){if(_(r,e))return!0;let t=e.map(n=>`.${n}`).join(", ");if(typeof r.querySelector=="function")try{if(r.querySelector(t))return!0}catch(n){}for(let n of jl(r)){let o=Ve(n);if(o&&jr(o,e))return!0}return!1}function Gt(r,e){let t=r;for(;t;){if(_(t,e))return!0;t=Ve(t.parentElement)}return!1}function Yl(r,e){return Jr(e)?_(e,en)?r.attributeName==="class"?typeof r.oldValue=="string"&&$l(r.oldValue,ii(e)):r.attributeName==="style":!0:!1}function Jr(r){return _(r,Ut)||_(r,ri)?!1:Xl(r,ti)}function Xl(r,e){let t=r;for(;t;){if(Zl(t,e))return!0;t=Ve(t.parentElement)}return!1}function _(r,e){return e.some(t=>ql(r,t))}function ql(r,e){var t;return typeof((t=r.classList)==null?void 0:t.contains)=="function"&&r.classList.contains(e)?!0:oi(r).includes(e)}function Zl(r,e){return oi(r).some(t=>t.startsWith(e))}function $l(r,e){let t=ei(Qr(r)),n=ei(Qr(e));return t.length!==n.length?!1:t.every((o,i)=>o===n[i])}function ei(r){return r.filter(e=>!e.startsWith(ti)).sort()}function oi(r){return Qr(ii(r))}function ii(r){let e=r.className;if(typeof e=="string")return e;if(e&&typeof e=="object"&&"baseVal"in e){let t=e.baseVal;return typeof t=="string"?t:""}return""}function Qr(r){return r.split(/\s+/).filter(e=>e.length>0)}function jl(r){let e=Wt(r.childNodes);return e.length>0?e:Wt(r.children)}function Wt(r){if(!r)return[];let e=r;return typeof e[Symbol.iterator]=="function"?Array.from(e):typeof r.length=="number"?Array.from(r):[]}function Ve(r){if(!r||typeof r!="object")return null;let e=r;return e.nodeType===1||"classList"in e||"className"in e||"querySelector"in e?e:null}function at(r){return{width:r.width,hardness:r.hardness,opacity:r.opacity,handwriting:{...ne(r)}}}function si(r,e){let t=q(e);return be(at(r),t)?!1:(r.width=t.width,r.hardness=t.hardness,r.opacity=t.opacity,r.handwriting=t.handwriting,!0)}function q(r){return{...r,handwriting:{...r.handwriting}}}function be(r,e){return r.width===e.width&&r.hardness===e.hardness&&r.opacity===e.opacity&&r.handwriting.enabled===e.handwriting.enabled&&r.handwriting.thinning===e.handwriting.thinning&&r.handwriting.streamline===e.handwriting.streamline&&r.handwriting.smoothing===e.handwriting.smoothing&&r.handwriting.taperStart===e.handwriting.taperStart&&r.handwriting.taperEnd===e.handwriting.taperEnd}function tn(r){return r.isDrawingEnabled||r.selectedStrokeCount>0}function ai(r){return!r.isDrawingEnabled&&r.selectedStrokeCount>0?"selection":"brush"}function li(r){return r==="selection"?"Selected stroke size, color, stroke settings, and opacity":"Brush size, color, stroke settings, and opacity"}function ci(r,e){return r==="selection"?e?"Close selected stroke color":"Open selected stroke color":e?"Close stroke color":"Open stroke color"}function di(r,e){return r==="selection"?e?"Close selected stroke and handwriting settings":"Open selected stroke and handwriting settings":e?"Close stroke and handwriting settings":"Open stroke and handwriting settings"}function rn(r){return r==="selection"?"Selected stroke size":"Brush size"}function nn(r){return r==="selection"?"Selected stroke opacity":"Brush opacity"}var{PI:Jl}=Math,pi=.275,Fe=Jl+1e-4,on=13,Si=29,vi=13,ui=3;function mi(r){return!Number.isFinite(r)||r<=0?ui:Math.min(ui,r)}var gi=.15,fi=.85,hi=.01;function Ci(r){return!Number.isFinite(r)||r<=0?hi:Math.min(hi,r/100)}var yi=.25,sn=.5,an=[1,1];function ln(r,e,t,n=o=>o){return r*n(.5-e*(.5-t))}var{min:cn}=Math;function dn(r,e,t){let n=cn(1,e/t),o=cn(1,1-n);return cn(1,r+(o-r)*(n*pi))}function Ei(r){return[-r[0],-r[1]]}function O(r,e){return[r[0]+e[0],r[1]+e[1]]}function un(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function ee(r,e){return[r[0]-e[0],r[1]-e[1]]}function lt(r,e,t){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r}function te(r,e){return[r[0]*e,r[1]*e]}function Yt(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r}function Ql(r,e){return[r[0]/e,r[1]/e]}function hn(r){return[r[1],-r[0]]}function Xt(r,e){let t=e[0];return r[0]=e[1],r[1]=-t,r}function pn(r,e){return r[0]*e[0]+r[1]*e[1]}function ki(r,e){return r[0]===e[0]&&r[1]===e[1]}function ec(r){return Math.hypot(r[0],r[1])}function Sn(r,e){let t=r[0]-e[0],n=r[1]-e[1];return t*t+n*n}function qt(r){return Ql(r,ec(r))}function bi(r,e){return Math.hypot(r[1]-e[1],r[0]-e[0])}function Zt(r,e,t){let n=Math.sin(t),o=Math.cos(t),i=r[0]-e[0],s=r[1]-e[1],a=i*o-s*n,l=i*n+s*o;return[a+e[0],l+e[1]]}function vn(r,e,t,n){let o=Math.sin(n),i=Math.cos(n),s=e[0]-t[0],a=e[1]-t[1],l=s*i-a*o,c=s*o+a*i;return r[0]=l+t[0],r[1]=c+t[1],r}function mn(r,e,t){return O(r,te(ee(e,r),t))}function wi(r,e,t,n){let o=t[0]-e[0],i=t[1]-e[1];return r[0]=e[0]+o*n,r[1]=e[1]+i*n,r}function gn(r,e,t){return O(r,te(e,t))}var b=[0,0],ie=[0,0],se=[0,0];function tc(r,e){let t=O(r,[1,1]),n=gn(r,qt(hn(ee(r,t))),-e),o=[],i=1/on;for(let s=i;s<=1;s+=i)o.push(Zt(n,r,Fe*2*s));return o}function rc(r,e,t){let n=[],o=1/t;for(let i=o;i<=1;i+=o)n.push(Zt(e,r,Fe*i));return n}function nc(r,e,t){let n=ee(e,t),o=te(n,.5),i=te(n,.51);return[ee(r,o),ee(r,i),O(r,i),O(r,o)]}function oc(r,e,t,n){let o=[],i=gn(r,e,t),s=1/n;for(let a=s;a<1;a+=s)o.push(Zt(i,r,Fe*3*a));return o}function ic(r,e,t){return[O(r,te(e,t)),O(r,te(e,t*.99)),ee(r,te(e,t*.99)),ee(r,te(e,t))]}function Pi(r,e,t){return r===!1||r===void 0?0:r===!0?Math.max(e,t):r}function sc(r,e,t){return r.slice(0,10).reduce((n,o)=>{let i=o.pressure;return e&&(i=dn(n,o.distance,t)),(n+i)/2},r[0].pressure)}function Ti(r,e={}){let{size:t=16,smoothing:n=.5,thinning:o=.5,simulatePressure:i=!0,easing:s=C=>C,start:a={},end:l={},last:c=!1}=e,{cap:d=!0,easing:u=C=>C*(2-C)}=a,{cap:h=!0,easing:p=C=>--C*C*C+1}=l;if(r.length===0||t<=0)return[];let S=r[r.length-1].runningLength,g=Pi(a.taper,t,S),D=Pi(l.taper,t,S),me=Math.pow(t*n,2),Qs=mi(t),ea=Ci(t),je=[],Me=[],Qn=sc(r,i,t),z=ln(t,o,r[r.length-1].pressure,s),gr,fr=r[0].vector,Je=r[0].point,ft=Je,ge=Je,fe=ft,Cr=!1;for(let C=0;Cme)&&(je.push(ge),Je=ge),un(se,re,b),fe=[se[0],se[1]],(C<=1||Sn(ft,fe)>me)&&(Me.push(fe),ft=fe),Qn=br,fr=Qe}let yr=[r[0].point[0],r[0].point[1]],Er=r.length>1?[r[r.length-1].point[0],r[r.length-1].point[1]]:O(r[0].point,[1,1]),kr=[],Ct=[];if(r.length===1){if(!(g||D)||c)return tc(yr,gr||z)}else{g||D&&r.length===1||(d?kr.push(...rc(yr,Me[0],on)):kr.push(...nc(yr,je[0],Me[0])));let C=hn(Ei(r[r.length-1].vector));D||g&&r.length===1?Ct.push(Er):h?Ct.push(...oc(Er,C,z,Si)):Ct.push(...ic(Er,C,z))}return je.concat(Ct,Me.reverse(),kr)}var xi=[0,0];function Ii(r){return r!=null&&r>=0}function Ri(r,e={}){var h;let{streamline:t=.5,size:n=16,last:o=!1}=e;if(r.length===0)return[];let i=gi+(1-t)*fi,s=Array.isArray(r[0])?r:r.map(({x:p,y:S,pressure:g=sn})=>[p,S,g]);if(s.length===2){let p=s[1];s=s.slice(0,-1);for(let S=1;S<5;S++)s.push(mn(s[0],p,S/4))}s.length===1&&(s=[...s,[...O(s[0],an),...s[0].slice(2)]]);let a=[{point:[s[0][0],s[0][1]],pressure:Ii(s[0][2])?s[0][2]:yi,vector:[...an],distance:0,runningLength:0}],l=!1,c=0,d=a[0],u=s.length-1;for(let p=1;p{let o=this.recordsById.get(t);o&&(o.order=n)})}queryBounds(e,t="ascending"){if(!yn(e))return[];let n=new Set;for(let o of this.getCellKeys(e)){let i=this.cellIdsByKey.get(o);if(i)for(let s of i){let a=this.recordsById.get(s);a&&Di(e,a.bounds)&&n.add(s)}}return this.sortIds(Array.from(n),t)}forEachBounds(e,t){if(!yn(e))return;let n=new Set;for(let o of this.getCellKeys(e)){let i=this.cellIdsByKey.get(o);if(i)for(let s of i){if(n.has(s))continue;let a=this.recordsById.get(s);if(!(!a||!Di(e,a.bounds))&&(n.add(s),t(s)===!1))return}}}sortIdsByOrder(e,t="ascending"){return this.sortIds([...e],t)}sortIds(e,t){if(t==="none")return e;let n=t==="ascending"?1:-1;return e.sort((o,i)=>n*(this.getOrder(o)-this.getOrder(i))),e}getOrder(e){var t,n;return(n=(t=this.recordsById.get(e))==null?void 0:t.order)!=null?n:Number.MAX_SAFE_INTEGER}getCellKeys(e){let t=this.getCellRange(e),n=[];for(let o=t.minCellX;o<=t.maxCellX;o++)for(let i=t.minCellY;i<=t.maxCellY;i++)n.push(lc(o,i));return n}getCellRange(e){return{minCellX:Math.floor(e.minX/this.cellSize),maxCellX:Math.floor(e.maxX/this.cellSize),minCellY:Math.floor(e.minY/this.cellSize),maxCellY:Math.floor(e.maxY/this.cellSize)}}};function A(r,e){let t=Number.isFinite(e)?Math.max(0,e/2):0;return En(r,t)}function Ai(r,e){return{minX:r.x-e,minY:r.y-e,maxX:r.x+e,maxY:r.y+e}}function En(r,e){return{minX:r.minX-e,minY:r.minY-e,maxX:r.maxX+e,maxY:r.maxY+e}}function Di(r,e){return r.minX<=e.maxX&&r.maxX>=e.minX&&r.minY<=e.maxY&&r.maxY>=e.minY}function yn(r){return Number.isFinite(r.minX)&&Number.isFinite(r.minY)&&Number.isFinite(r.maxX)&&Number.isFinite(r.maxY)&&r.minX<=r.maxX&&r.minY<=r.maxY}function lc(r,e){return`${r},${e}`}function ct(r,e=80){return{minX:r.minX-e,minY:r.minY-e,maxX:r.maxX+e,maxY:r.maxY+e}}function Mi(r,e,t){return r.filter(n=>{let o=t(n);return o!==null&&cc(e,o)})}function cc(r,e){return r.minX<=e.maxX&&r.maxX>=e.minX&&r.minY<=e.maxY&&r.maxY>=e.minY}function dc(r,e){let t=Math.max(0,r.maxX-r.minX),n=Math.max(0,r.maxY-r.minY);return Math.max(t,n)*e}function ze(r,e,t=!1,n=.5){return t||!Number.isFinite(e)||e<=0?!0:dc(r,e)>=n}function Hi(r){return r.opacity!=="1"||r.blurRadius>0?null:r.kind==="handwritten"?["handwritten",r.color].join("|"):typeof r.width!="number"||!Number.isFinite(r.width)?null:["linear",r.color,r.width].join("|")}function Bi(r){let e=[],t=null,n=[],o=()=>{n.length!==0&&(n.length===1||t===null?e.push(...n.map(i=>({type:"single",strokeId:i}))):e.push({type:"batch",strokeIds:n,batchKey:t}),n=[],t=null)};for(let i of r){if(i.isSelected||i.batchKey===null){o(),e.push({type:"single",strokeId:i.id});continue}t!==null&&t!==i.batchKey&&o(),t=i.batchKey,n.push(i.id)}return o(),e}var uc=1e3,hc=3500,kn=8,bn=64,pc=96,Sc=2;function jt(r){return r>uc}function Oi(r){return r>hc}function vc(r){return!Number.isFinite(r)||r<=0?80:Math.min(80,pc/r)}function Ke(r,e,t=vc(e)){return ct(r,t)}function Vi(r){let e=[],t=[],n=()=>{t.length!==0&&(e.push({type:"raster",strokeIds:t}),t=[])};for(let o of r){if(o.isSelected){n(),e.push({type:"single",strokeId:o.id});continue}t.push(o.id)}return n(),e}function Fi(r){return!Number.isFinite(r)||r<=0?1:Math.min(r,Sc)}function Gi(r,e){return!e&&Number.isFinite(r)&&r>1e4}function Wi(r,e=128){return!Number.isFinite(r)||r<=0?e:e/r}function mc(r,e,t,n){return[r,e,Ki(t),Ki(n)].join(",")}function gc(r,e){return{minX:r.tileX*e,minY:r.tileY*e,maxX:r.tileX*e+e,maxY:r.tileY*e+e}}function Ui(r,e,t){if(!Cc(r,e))return[];let n=wn(r,e),o=[];for(let i=n.minTileY;i<=n.maxTileY;i++)for(let s=n.minTileX;s<=n.maxTileX;s++){let a={tileX:s,tileY:i};o.push({...a,key:mc(s,i,e,t),bounds:gc(a,e)})}return o}function wn(r,e){return{minTileX:Math.floor(r.minX/e),maxTileX:Math.floor((r.maxX-Number.EPSILON)/e),minTileY:Math.floor(r.minY/e),maxTileY:Math.floor((r.maxY-Number.EPSILON)/e)}}function Yi(r){let e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY,n=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY;for(let i of r)e=Math.min(e,i.tileX),t=Math.max(t,i.tileX),n=Math.min(n,i.tileY),o=Math.max(o,i.tileY);return{minTileX:e,maxTileX:t,minTileY:n,maxTileY:o}}function Xi(r,e){return zi(r)?e.some(t=>zi(t)&&fc(r,t)):!1}function fc(r,e){return r.minX<=e.maxX&&r.maxX>=e.minX&&r.minY<=e.maxY&&r.maxY>=e.minY}function zi(r){return Number.isFinite(r.minX)&&Number.isFinite(r.minY)&&Number.isFinite(r.maxX)&&Number.isFinite(r.maxY)&&r.minX<=r.maxX&&r.minY<=r.maxY}function Cc(r,e){return Number.isFinite(e)&&e>0&&Number.isFinite(r.minX)&&Number.isFinite(r.minY)&&Number.isFinite(r.maxX)&&Number.isFinite(r.maxY)&&r.minX<=r.maxX&&r.minY<=r.maxY}function Ki(r){return Math.round(r*1e3)/1e3}var yc=2e4,Ec=8192,Jt=class{constructor(e=yc,t=Ec){this.pathDataByKey=new Map;this.rasterPathByKey=new Map;this.pathDataKeysByStrokeId=new Map;this.rasterPathKeysByStrokeId=new Map;this.maxPathDataEntries=e,this.maxRasterPathEntries=t}getPathData(e,t,n){if(this.maxPathDataEntries<=0)return n();let o=this.pathDataByKey.get(t);if(o!==void 0)return o;let i=n();return this.pathDataByKey.set(t,i),Zi(this.pathDataKeysByStrokeId,e,t),this.evictOldestPathDataEntries(),i}getRasterPath(e,t,n){if(this.maxRasterPathEntries<=0)return n();let o=this.rasterPathByKey.get(t);if(o!==void 0)return o;let i=n();return this.rasterPathByKey.set(t,i),Zi(this.rasterPathKeysByStrokeId,e,t),this.evictOldestRasterPathEntries(),i}invalidateStroke(e){ji(this.pathDataByKey,this.pathDataKeysByStrokeId,e),ji(this.rasterPathByKey,this.rasterPathKeysByStrokeId,e)}clear(){this.pathDataByKey.clear(),this.rasterPathByKey.clear(),this.pathDataKeysByStrokeId.clear(),this.rasterPathKeysByStrokeId.clear()}getPathDataEntryCount(){return this.pathDataByKey.size}getRasterPathEntryCount(){return this.rasterPathByKey.size}evictOldestPathDataEntries(){$i(this.pathDataByKey,this.pathDataKeysByStrokeId,this.maxPathDataEntries)}evictOldestRasterPathEntries(){$i(this.rasterPathByKey,this.rasterPathKeysByStrokeId,this.maxRasterPathEntries)}};function Qt(r,e){return[r.id,e.kind,kc(r),bc(r,e)].join("|")}function kc(r){let e=r.points[0],t=r.points[r.points.length-1];return[r.points.length,qi(e),qi(t),r.width].join(":")}function qi(r){var e;return r?[r.x,r.y,(e=r.pressure)!=null?e:""].join(","):""}function bc(r,e){var n,o,i,s;let t=ne(r,e.settings);return e.kind==="linear"?t.enabled?"smooth":"linear":[(n=e.isComplete)!=null?n:!0,(o=e.hasPressure)!=null?o:!1,(i=e.isStart)!=null?i:!0,(s=e.isEnd)!=null?s:!0,t.thinning,t.smoothing,t.streamline,t.taperStart,t.taperEnd].join(":")}function Zi(r,e,t){let n=r.get(e);n||(n=new Set,r.set(e,n)),n.add(t)}function $i(r,e,t){for(;r.size>t;){let n=r.keys().next().value;if(n===void 0)return;r.delete(n),wc(e,n)}}function ji(r,e,t){let n=e.get(t);if(n){for(let o of n)r.delete(o);e.delete(t)}}function wc(r,e){let t=e.split("|",1)[0];if(!t)return;let n=r.get(t);n&&(n.delete(e),n.size===0&&r.delete(t))}function Ji(r,e){return dt(y(r),e)}function dt(r,e){return Pc(r)/Tc(e)}function Qi(r,e){return{...r,taperStart:dt(r.taperStart,e),taperEnd:dt(r.taperEnd,e)}}function Pc(r){return Number.isFinite(r)&&r>0?r:0}function Tc(r){return Number.isFinite(r)&&r>0?r:1}var G="http://www.w3.org/2000/svg",ts="http://www.w3.org/1999/xhtml",Nc=1,rs=1,Lc=10,Dc=12,ns=10,Ac=6,os=4,is=1.5,Mc=6,Hc=4,Bc=4,_c=2,ss=10,ut=10,as=180,ls=42,Oc=["send-to-back","send-backward","bring-forward","bring-to-front"],Vc={"send-to-back":{label:"Send selected drawing to back",icon:"arrow-down-to-line"},"send-backward":{label:"Send selected drawing backward",icon:"arrow-down"},"bring-forward":{label:"Bring selected drawing forward",icon:"arrow-up"},"bring-to-front":{label:"Bring selected drawing to front",icon:"arrow-up-to-line"}},Fc=.05,zc=.001,Pn=.001,Kc=.001,Gc=300,Wc=450,_s=3,Uc=_s+1,Yc=160,cs=96,ds=[{name:"Red",value:"#ef4444"},{name:"Orange",value:"#f97316"},{name:"Amber",value:"#f59e0b"},{name:"Yellow",value:"#eab308"},{name:"Lime",value:"#84cc16"},{name:"Green",value:"#22c55e"},{name:"Emerald",value:"#10b981"},{name:"Teal",value:"#14b8a6"},{name:"Cyan",value:"#06b6d4"},{name:"Blue",value:"#3b82f6"},{name:"Indigo",value:"#6366f1"},{name:"Violet",value:"#8b5cf6"},{name:"Purple",value:"#a855f7"},{name:"Fuchsia",value:"#d946ef"},{name:"Pink",value:"#ec4899"},{name:"Rose",value:"#f43f5e"},{name:"Coral",value:"#fb7185"},{name:"Brown",value:"#92400e"},{name:"Slate",value:"#64748b"},{name:"Black",value:"#111827"},{name:"White",value:"#ffffff"},{name:"Stone",value:"#a8a29e"},{name:"Gray",value:"#9ca3af"},{name:"Charcoal",value:"#374151"},{name:"Maroon",value:"#7f1d1d"},{name:"Ochre",value:"#b45309"},{name:"Olive",value:"#4d7c0f"},{name:"Forest",value:"#166534"},{name:"Navy",value:"#1e3a8a"},{name:"Lavender",value:"#c4b5fd"}],$="#8b5cf6",Xc=6,U=[{id:"disc",label:"Disc"},{id:"palettes",label:"Palettes"}],us=40.25,qc=2,Tn=15,Zc=.02,xn=.1,$c=14,Os=0,$n=359,he=0,Wn=100,vt=1,Un=[{id:"hue",label:"Hue",min:Os,max:$n,step:vt,ariaLabel:"Stroke color HSL hue"},{id:"saturation",label:"Saturation",min:he,max:Wn,step:vt,ariaLabel:"Stroke color HSL saturation"},{id:"lightness",label:"Lightness",min:he,max:Wn,step:vt,ariaLabel:"Stroke color HSL lightness"}],xe=0,$e=255,mt=1,pe=0,gt=100,Se=-128,ve=127,Ie=1,Vs=[{id:"hsl",label:"HSL"},{id:"rgb",label:"RGB"},{id:"lab",label:"Lab"}],jc=[{id:"red",label:"Red",min:xe,max:$e,step:mt,ariaLabel:"Stroke color red channel"},{id:"green",label:"Green",min:xe,max:$e,step:mt,ariaLabel:"Stroke color green channel"},{id:"blue",label:"Blue",min:xe,max:$e,step:mt,ariaLabel:"Stroke color blue channel"}],Jc=[{id:"labLightness",label:"Lightness",min:pe,max:gt,step:Ie,ariaLabel:"Stroke color Lab lightness"},{id:"labA",label:"A",min:Se,max:ve,step:Ie,ariaLabel:"Stroke color Lab a axis"},{id:"labB",label:"B",min:Se,max:ve,step:Ie,ariaLabel:"Stroke color Lab b axis"}],Fs=".draw-in-canvas-control-group, .draw-in-canvas-render-layer, .draw-in-canvas-capture-layer, .draw-in-canvas-brush-controls, .draw-in-canvas-color-palette, .draw-in-canvas-stroke-settings-palette, .draw-in-canvas-brush-preview, .draw-in-canvas-stroke-width-preview, .draw-in-canvas-pen-cursor, .draw-in-canvas-scale-button, .draw-in-canvas-native-layer-menu, .draw-in-canvas-stroke-scale-menu-container",zs="draw-in-canvas-stale",Qc="draw-in-canvas-color-palette-open",hs="draw-in-canvas-tiny-control-scale",ed=1,td=.5,rd=1,nd=.5,od=2,In=20,Rn=20,ps=3,id=2,sd=5.5,ad=24,ld=1,cd=2,dd=3,ud=3,hd=1;function jn(r){let e=Array.from(r.querySelectorAll(Fs));for(let t of e)t.classList.add(zs)}function pd(r,e){let t=Array.from(r.querySelectorAll(Fs));for(let n of t)n.classList.toggle(zs,!e.has(n))}var ur=class{constructor(e,t,n,o,i,s,a,l,c,d){this.drawingData=tt();this.strokeById=new Map;this.strokeGroupById=new Map;this.strokeBatchEls=[];this.strokeRasterEls=[];this.strokeRasterTileEls=[];this.rasterTileCache=new Map;this.rasterTileRenderJobs=[];this.rasterTileSetupJobs=[];this.rasterTileSetupFrameId=null;this.rasterTileRenderFrameId=null;this.rasterTileRenderGeneration=0;this.rasterTileUsageCounter=0;this.rasterRenderFrameIds=new Set;this.rasterRenderGeneration=0;this.strokeBoundsById=new Map;this.strokeSpatialIndex=new $t;this.strokePathCache=new Jt;this.captureEl=null;this.svgEl=null;this.strokeInteractionEl=null;this.toolbarGroupEl=null;this.toolbarButtonEl=null;this.selectButtonEl=null;this.toolbarControlsEl=null;this.toolbarControlsOriginalZIndex=null;this.colorPaletteEl=null;this.strokeSettingsPaletteEl=null;this.brushControlsEl=null;this.brushColorButtonEl=null;this.brushSettingsButtonEl=null;this.colorPaletteTriggerEl=null;this.strokeSettingsPaletteTriggerEl=null;this.colorPaletteTarget="brush";this.strokeSettingsPaletteTarget="brush";this.customColorHex=$;this.colorPaletteTab="disc";this.colorWheelHsv=pt($);this.colorValueMode="hsl";this.colorValueHsl=ce($);this.preserveHslColorValueForHex=null;this.colorValueLab=le($);this.preserveLabColorValueForHex=null;this.shouldSelectCustomColorHexOnClick=!1;this.toolbarPressState=null;this.brushPreviewEl=null;this.brushPreviewState=null;this.penCursorEl=null;this.pendingPenCursorPosition=null;this.penCursorFrameId=null;this.penCursorAppearanceKey="";this.undoButtonEl=null;this.redoButtonEl=null;this.activeStroke=null;this.activeStrokeGroupEl=null;this.activeStrokePathEl=null;this.activeStrokePreviewFrameId=null;this.activeStrokePointerId=null;this.activeStrokeHasPressure=!1;this.activeStrokePreviewCommittedPointIndex=0;this.activeStrokePreviewChunkPathEls=[];this.selectedStrokeIds=new Set;this.selectionBoxEl=null;this.selectionHandleEls=[];this.strokeScaleMenuContainerEl=null;this.pendingSelectedStrokeRecolorChanges=null;this.pendingSelectedStrokeStyleChanges=null;this.dragState=null;this.resizeState=null;this.nativeSelectionDragState=null;this.mutationObserver=null;this.isObservingCanvasAttributes=null;this.domSyncFrameId=null;this.pendingDomSyncFlags=null;this.renderViewportObserver=null;this.renderViewportObservedEl=null;this.renderViewportFrameId=null;this.renderedStrokeIds=[];this.renderedSelectedStrokeIds=[];this.renderedRasterViewportKey="";this.saveTimeoutId=null;this.hasPendingSave=!1;this.positionedEl=null;this.previousPosition="";this.suppressNextNativeUndoClick=!1;this.suppressNextNativeRedoClick=!1;this.isSpaceKeyPressed=!1;this.interactionCursor=null;this.tinyControlScaleWrapperEl=null;this.tinyControlScaleKey="";this.nativeEdgePathOverrides=new Map;this.captureDisposers=[];this.toolbarDisposers=[];this.colorPaletteDisposers=[];this.strokeSettingsPaletteDisposers=[];this.brushControlsDisposers=[];this.brushPreviewDisposers=[];this.renderDisposers=[];this.strokeInteractionDisposers=[];this.canvasHistoryButtonDisposers=[];this.strokeScaleMenuDisposers=[];this.undoStack=[];this.redoStack=[];this.handlePointerDown=e=>{if(e.button!==0||!this.captureEl)return;if(this.isSpaceKeyPressed){this.hidePenCursor();return}this.showPenCursorFromEvent(e),this.mountRenderLayer();let t=this.clientPointToCanvasPoint(e);if(!t||!this.svgEl)return;e.preventDefault(),e.stopPropagation(),Ge(this.captureEl,e.pointerId);let n=this.getCanvasScreenScale(),o={id:w(),color:this.settings.strokeColor,width:Ji(this.settings.strokeWidth,n),hardness:this.settings.strokeHardness,opacity:this.settings.strokeOpacity,handwriting:Qi(He(this.settings),n),points:[t],createdAt:Date.now()},i=activeDocument.createElementNS(G,"g");i.classList.add("draw-in-canvas-active-stroke"),i.setAttribute("pointer-events","none"),i.setAttribute("opacity",Ye(o.opacity));let s=this.createPathEl(o,!1);s.removeAttribute("opacity"),i.appendChild(s),this.activeStroke=o,this.activeStrokeGroupEl=i,this.activeStrokePathEl=s,this.activeStrokePointerId=e.pointerId,this.activeStrokeHasPressure=t.pressure!==void 0,this.initializeActiveStrokePreviewState(),this.addStroke(o),this.svgEl.appendChild(i)};this.handlePointerMove=e=>{this.showPenCursorFromEvent(e),!(!this.activeStroke||!this.activeStrokeGroupEl||e.pointerId!==this.activeStrokePointerId)&&this.appendActiveStrokePointerPoints(e)&&(e.preventDefault(),e.stopPropagation(),this.scheduleActiveStrokePreviewUpdate())};this.handlePointerUp=e=>{var t;if(!this.activeStroke||e.pointerId!==this.activeStrokePointerId){e.type==="pointercancel"&&this.hidePenCursor();return}this.appendActiveStrokePointerPoints(e),e.preventDefault(),e.stopPropagation(),(t=this.captureEl)!=null&&t.hasPointerCapture(e.pointerId)&&this.captureEl.releasePointerCapture(e.pointerId),this.finishActiveStroke(),this.updatePenCursorAfterPointerEnd(e)};this.handlePointerLeave=e=>{cr(e)&&(this.activeStroke&&e.pointerId===this.activeStrokePointerId||this.hidePenCursor())};this.handleCaptureWindowBlur=()=>{this.hidePenCursor()};this.handleKeyDown=e=>{if(this.shouldUseSelectToolShortcut(e)){e.preventDefault(),e.stopPropagation(),this.enableSelectMode();return}e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),this.requestToggleDrawingMode())};this.handleSelectToolbarPointerDown=e=>{e.button!==0||!this.selectButtonEl||(e.preventDefault(),e.stopPropagation(),this.selectButtonEl.focus({preventScroll:!0}),this.enableSelectMode())};this.handleSelectToolbarKeyDown=e=>{tr(e)&&(e.preventDefault(),e.stopPropagation(),this.enableSelectMode())};this.handleToolbarPointerDown=e=>{if(e.button!==0||!this.toolbarButtonEl)return;e.preventDefault(),e.stopPropagation(),this.toolbarButtonEl.focus({preventScroll:!0}),this.clearToolbarPressState(),Ge(this.toolbarButtonEl,e.pointerId);let t={pointerId:e.pointerId,timeoutId:window.setTimeout(()=>{this.toolbarPressState===t&&(t.didOpenPalette=!0,this.toggleColorPalette())},Wc),didOpenPalette:!1};this.toolbarPressState=t};this.handleToolbarPointerUp=e=>{let t=this.toolbarPressState;if(!t||t.pointerId!==e.pointerId)return;e.preventDefault(),e.stopPropagation();let n=!t.didOpenPalette;this.clearToolbarPressState(),n&&(this.closeBrushPopovers(),this.requestToggleDrawingMode())};this.handleToolbarPointerCancel=e=>{let t=this.toolbarPressState;!t||t.pointerId!==e.pointerId||(e.preventDefault(),e.stopPropagation(),this.clearToolbarPressState())};this.handleToolbarKeyDown=e=>{if(e.key==="ArrowDown"){e.preventDefault(),e.stopPropagation(),this.toggleColorPalette();return}tr(e)&&(e.preventDefault(),e.stopPropagation(),this.closeBrushPopovers(),this.requestToggleDrawingMode())};this.handleColorSwatchPointerDown=e=>{e.preventDefault(),e.stopPropagation()};this.handleHistoryColorSwatchPointerDown=e=>{this.getHistoryColorSwatchEventTarget(e)&&(e.preventDefault(),e.stopPropagation())};this.handleHistoryColorSwatchClick=e=>{let t=this.getHistoryColorSwatchEventTarget(e);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.dataset.color;n&&(this.setStrokeColor(n),this.recordColorHistory(n))};this.handlePresetColorSwatchClick=e=>{if(e.preventDefault(),e.stopPropagation(),!(e.currentTarget instanceof HTMLElement))return;let t=e.currentTarget.dataset.color;t&&(this.setStrokeColor(t),this.recordColorHistory(t))};this.handleColorPaletteTabClick=e=>{if(e.preventDefault(),e.stopPropagation(),!(e.currentTarget instanceof HTMLElement))return;let t=rr(e.currentTarget.dataset.colorPaletteTab);t&&(this.colorPaletteTab=t,this.syncColorPaletteTabControls(),this.positionColorPalette())};this.handleColorPaletteTabKeyDown=e=>{var o,i;if(!(e.currentTarget instanceof HTMLElement))return;let t=rr(e.currentTarget.dataset.colorPaletteTab);if(!t)return;let n=xd(t,e);n&&(e.preventDefault(),e.stopPropagation(),this.colorPaletteTab=n,this.syncColorPaletteTabControls(),this.positionColorPalette(),(i=(o=this.colorPaletteEl)==null?void 0:o.querySelector(`[data-color-palette-tab="${n}"]`))==null||i.focus({preventScroll:!0}))};this.handleColorValueModeClick=e=>{if(e.preventDefault(),e.stopPropagation(),!(e.currentTarget instanceof HTMLElement))return;let t=Id(e.currentTarget.dataset.colorValueMode);t&&this.setColorValueMode(t)};this.handleColorWheelPointerDown=e=>{if(e.button!==0||!(e.currentTarget instanceof HTMLElement))return;let t=Dn(e.currentTarget.dataset.colorWheelControl);t&&(e.preventDefault(),e.stopPropagation(),e.currentTarget.focus({preventScroll:!0}),Ge(e.currentTarget,e.pointerId),this.updateColorWheelFromPointer(e.currentTarget,e,t))};this.handleColorWheelPointerMove=e=>{if(!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.hasPointerCapture(e.pointerId))return;let t=Dn(e.currentTarget.dataset.colorWheelControl);t&&(e.preventDefault(),e.stopPropagation(),this.updateColorWheelFromPointer(e.currentTarget,e,t))};this.handleColorWheelPointerUp=e=>{!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.hasPointerCapture(e.pointerId)||(e.preventDefault(),e.stopPropagation(),this.recordColorHistory(this.customColorHex))};this.handleColorWheelKeyDown=e=>{if(!(e.currentTarget instanceof HTMLElement))return;let t=Dn(e.currentTarget.dataset.colorWheelControl),n=t==="hue"?Gd(this.colorWheelHsv,e):t==="disc"?Wd(this.colorWheelHsv,e):null;n&&(e.preventDefault(),e.stopPropagation(),this.setColorWheelHsv(n),this.recordColorHistory(nr(n)))};this.handleHslSliderPointerDown=e=>{e.stopPropagation()};this.handleHslSliderInput=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.updateHslSliderFromInput(e.currentTarget)};this.handleHslSliderChange=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.updateHslSliderFromInput(e.currentTarget)&&this.recordColorHistory(this.customColorHex)};this.handleCurrentColorHslPointerDown=e=>{e.stopPropagation(),!(!(e.currentTarget instanceof HTMLInputElement)||!e.currentTarget.readOnly)&&(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}))};this.handleCurrentColorHslClick=e=>{if(e.stopPropagation(),!(!(e.currentTarget instanceof HTMLInputElement)||!e.currentTarget.readOnly)){if(e.preventDefault(),e.detail>=2){this.beginCurrentColorHslEdit(e.currentTarget);return}this.copyCurrentColorHslToClipboard(e.currentTarget)}};this.handleCurrentColorHslDoubleClick=e=>{e.preventDefault(),e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.beginCurrentColorHslEdit(e.currentTarget)};this.handleCurrentColorHslFocus=e=>{if(!(e.currentTarget instanceof HTMLInputElement)||e.currentTarget.readOnly)return;let t=e.currentTarget;window.requestAnimationFrame(()=>{activeDocument.activeElement===t&&!t.readOnly&&t.select()})};this.handleCurrentColorHslInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement)||e.currentTarget.readOnly)return;let t=Cs(this.colorValueMode,e.currentTarget.value),n=e.currentTarget.value.trim().length===0;we(e.currentTarget,!!t||n),t&&this.setColorValueHex(t.hexColor,t.fallbackHue,t.labColor,t.hslColor)};this.handleCurrentColorHslChange=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.commitCurrentColorHslEdit(e.currentTarget)};this.handleCurrentColorHslKeyDown=e=>{if(e.stopPropagation(),e.currentTarget instanceof HTMLInputElement){if(e.currentTarget.readOnly){if(e.key==="Enter"||e.key==="F2"){e.preventDefault(),this.beginCurrentColorHslEdit(e.currentTarget);return}(e.key===" "||ws(e))&&(e.preventDefault(),this.copyCurrentColorHslToClipboard(e.currentTarget));return}if(e.key==="Enter"){e.preventDefault(),e.currentTarget.blur();return}e.key==="Escape"&&(e.preventDefault(),this.resetCurrentColorHslInput(e.currentTarget),e.currentTarget.blur())}};this.handleCurrentColorHexPointerDown=e=>{e.stopPropagation(),!(!(e.currentTarget instanceof HTMLInputElement)||!e.currentTarget.readOnly)&&(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}))};this.handleCurrentColorHexClick=e=>{if(e.stopPropagation(),!(!(e.currentTarget instanceof HTMLInputElement)||!e.currentTarget.readOnly)){if(e.preventDefault(),e.detail>=2){this.beginCurrentColorHexEdit(e.currentTarget);return}this.copyCurrentColorHexToClipboard(e.currentTarget)}};this.handleCurrentColorHexDoubleClick=e=>{e.preventDefault(),e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.beginCurrentColorHexEdit(e.currentTarget)};this.handleCurrentColorHexFocus=e=>{if(!(e.currentTarget instanceof HTMLInputElement)||e.currentTarget.readOnly)return;let t=e.currentTarget;window.requestAnimationFrame(()=>{activeDocument.activeElement===t&&!t.readOnly&&t.select()})};this.handleCurrentColorHexInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement)||e.currentTarget.readOnly)return;let t=E(e.currentTarget.value),n=e.currentTarget.value.trim().length===0;W(e.currentTarget,!!t||n),t&&(this.customColorHex=t,this.setStrokeColor(t))};this.handleCurrentColorHexChange=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.commitCurrentColorHexEdit(e.currentTarget)};this.handleCurrentColorHexKeyDown=e=>{if(e.stopPropagation(),e.currentTarget instanceof HTMLInputElement){if(e.currentTarget.readOnly){if(e.key==="Enter"||e.key==="F2"){e.preventDefault(),this.beginCurrentColorHexEdit(e.currentTarget);return}(e.key===" "||ws(e))&&(e.preventDefault(),this.copyCurrentColorHexToClipboard(e.currentTarget));return}if(e.key==="Enter"){e.preventDefault(),e.currentTarget.blur();return}e.key==="Escape"&&(e.preventDefault(),this.resetCurrentColorHexInput(e.currentTarget),e.currentTarget.blur())}};this.handleNativeColorPickerInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement))return;let t=E(e.currentTarget.value);t&&(this.customColorHex=t,this.setStrokeColor(t),e.type==="change"&&this.recordColorHistory(t))};this.handleCustomColorHexPointerDown=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&(this.shouldSelectCustomColorHexOnClick=activeDocument.activeElement!==e.currentTarget)};this.handleCustomColorHexClick=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&this.shouldSelectCustomColorHexOnClick&&(e.currentTarget.select(),this.shouldSelectCustomColorHexOnClick=!1)};this.handleCustomColorHexFocus=e=>{if(!(e.currentTarget instanceof HTMLInputElement))return;let t=e.currentTarget;window.requestAnimationFrame(()=>{activeDocument.activeElement===t&&t.select()})};this.handleCustomColorHexInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement))return;let t=E(e.currentTarget.value),n=e.currentTarget.value.trim().length===0;W(e.currentTarget,!!t||n),t&&(this.customColorHex=t,this.setStrokeColor(t))};this.handleCustomColorHexChange=e=>{if(e.stopPropagation(),this.shouldSelectCustomColorHexOnClick=!1,!(e.currentTarget instanceof HTMLInputElement))return;let t=E(e.currentTarget.value);t&&(this.customColorHex=t,this.setStrokeColor(t),this.recordColorHistory(t)),e.currentTarget.value=Z(this.customColorHex),W(e.currentTarget,!0)};this.handleCustomColorHexKeyDown=e=>{e.stopPropagation(),!(e.key!=="Enter"||!(e.currentTarget instanceof HTMLInputElement))&&(e.preventDefault(),e.currentTarget.blur())};this.handleCustomColorShadeClick=e=>{if(e.preventDefault(),e.stopPropagation(),!(e.currentTarget instanceof HTMLElement))return;let t=e.currentTarget.dataset.color;t&&(this.setStrokeColor(t),this.recordColorHistory(t))};this.handleStrokeWidthSliderPointerDown=e=>{e.stopPropagation(),e.currentTarget instanceof HTMLInputElement&&(e.currentTarget.focus({preventScroll:!0}),this.openBrushPreview(e,e.currentTarget,"size"))};this.handleBrushSliderPointerDown=e=>{if(e.button!==0||!(e.currentTarget instanceof HTMLElement))return;let t=Ln(e.currentTarget.dataset.brushSlider);t&&(e.preventDefault(),e.stopPropagation(),e.currentTarget.focus({preventScroll:!0}),this.openBrushPreview(e,e.currentTarget,t),this.updateBrushSliderFromPointer(e.currentTarget,e))};this.handleBrushSliderPointerMove=e=>{!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.hasPointerCapture(e.pointerId)||(e.preventDefault(),e.stopPropagation(),this.updateBrushSliderFromPointer(e.currentTarget,e))};this.handleBrushSliderPointerUp=e=>{e.currentTarget instanceof HTMLElement&&(e.preventDefault(),e.stopPropagation(),this.closeBrushPreview(),this.getBrushControlsTarget()==="selection"&&this.commitPendingSelectedStrokeStyleChanges())};this.handleBrushSliderKeyDown=e=>{if(!(e.currentTarget instanceof HTMLElement))return;let t=Ln(e.currentTarget.dataset.brushSlider);if(!t)return;let n=Pd(t,e,this.getBrushSliderCurrentValue(t));n!==null&&(e.preventDefault(),e.stopPropagation(),this.setBrushSliderValue(t,n),this.getBrushControlsTarget()==="selection"&&this.commitPendingSelectedStrokeStyleChanges())};this.handleBrushButtonPointerDown=e=>{e.stopPropagation()};this.handleBrushButtonKeyDown=e=>{e.key!=="Tab"&&e.stopPropagation()};this.handleBrushColorButtonClick=e=>{e.preventDefault(),e.stopPropagation(),this.toggleColorPalette(this.getBrushControlsTarget())};this.handleBrushSettingsButtonClick=e=>{e.preventDefault(),e.stopPropagation(),this.toggleStrokeSettingsPalette(this.getBrushControlsTarget())};this.handleStrokeWidthSliderKeyDown=e=>{e.stopPropagation()};this.handleStrokeWidthSliderInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement))return;let t=Number(e.currentTarget.value);if(this.strokeSettingsPaletteTarget==="selection"){this.setSelectedStrokeWidth(t);return}this.setStrokeWidth(t),this.updateBrushPreview("size")};this.handleStrokeHardnessSliderInput=e=>{if(e.stopPropagation(),e.currentTarget instanceof HTMLInputElement){if(this.strokeSettingsPaletteTarget==="selection"){this.setSelectedStrokeHardness(Number(e.currentTarget.value));return}this.setStrokeHardness(Number(e.currentTarget.value))}};this.handleStrokeOpacitySliderInput=e=>{if(e.stopPropagation(),e.currentTarget instanceof HTMLInputElement){if(this.strokeSettingsPaletteTarget==="selection"){this.setSelectedStrokeOpacity(Number(e.currentTarget.value));return}this.setStrokeOpacity(Number(e.currentTarget.value)),this.updateBrushPreview("opacity")}};this.handleFreehandSliderInput=e=>{if(e.stopPropagation(),!(e.currentTarget instanceof HTMLInputElement))return;let t=yd(e.currentTarget.dataset.freehandSetting);if(t){if(this.strokeSettingsPaletteTarget==="selection"){this.setSelectedStrokeFreehandSliderValue(t,Number(e.currentTarget.value));return}this.setFreehandSliderValue(t,Number(e.currentTarget.value))}};this.handleHandwritingToggleChange=e=>{if(e.stopPropagation(),e.currentTarget instanceof HTMLInputElement){if(this.strokeSettingsPaletteTarget==="selection"){this.setSelectedStrokeBeautifulStrokes(e.currentTarget.checked);return}this.setBeautifulStrokes(e.currentTarget.checked)}};this.handleFreehandResetClick=e=>{if(e.preventDefault(),e.stopPropagation(),this.strokeSettingsPaletteTarget==="selection"){this.resetSelectedStrokeFreehandSliderValues();return}this.resetFreehandSliderValues()};this.handleBrushPreviewPointerMove=e=>{let t=this.brushPreviewState;!t||t.pointerId!==e.pointerId||(this.positionBrushPreview(e.clientX,e.clientY),this.updateBrushPreview(t.setting))};this.handleBrushPreviewPointerUp=e=>{let t=this.brushPreviewState;!t||t.pointerId!==e.pointerId||this.closeBrushPreview()};this.handleBrushPreviewWindowBlur=()=>{this.closeBrushPreview()};this.handleBrushPopoverDocumentPointerDown=e=>{var n,o,i,s,a;let t=e.target;t instanceof Node&&((n=this.toolbarGroupEl)!=null&&n.contains(t)||(o=this.colorPaletteEl)!=null&&o.contains(t)||(i=this.strokeSettingsPaletteEl)!=null&&i.contains(t)||(s=this.brushControlsEl)!=null&&s.contains(t)||(a=this.strokeScaleMenuContainerEl)!=null&&a.contains(t))||this.closeBrushPopovers()};this.handleColorPaletteDocumentKeyDown=e=>{var n,o;if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation();let t=(o=(n=this.colorPaletteTriggerEl)!=null?n:this.brushColorButtonEl)!=null?o:this.toolbarButtonEl;this.closeColorPalette(),t==null||t.focus({preventScroll:!0})};this.handleStrokeSettingsPaletteDocumentKeyDown=e=>{var n;if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation();let t=(n=this.strokeSettingsPaletteTriggerEl)!=null?n:this.brushSettingsButtonEl;this.closeStrokeSettingsPalette(),t==null||t.focus({preventScroll:!0})};this.handleStrokePointerDown=e=>{if(this.captureEl||e.button!==0||this.isSpaceKeyPressed||Ls(e.target))return;let t=this.clientPointToCanvasPoint(e);if(!t)return;let n=this.findResizeHandleAtPoint(t);if(n&&this.startStrokeResize(e.pointerId,n)){e.preventDefault(),e.stopPropagation();return}let o=this.findStrokeAtPoint(t);if(o){this.handleStrokeHitPointerDown(e,t,o);return}if(this.isPointInSelectionBox(t)){let i=this.getSelectedStrokeIds();i.length>0&&this.startStrokeDrag(e.pointerId,t,i)&&(e.preventDefault(),e.stopPropagation());return}if(Ns(e.target)){Fn(e)||this.selectStrokes([]);return}this.startNativeSelectionDrag(e,t)};this.handleStrokePointerMove=e=>{if(this.resizeState&&e.pointerId===this.resizeState.pointerId){this.handleStrokeResizePointerMove(e,this.resizeState);return}if(this.dragState&&e.pointerId===this.dragState.pointerId){this.handleStrokeDragPointerMove(e,this.dragState);return}if(this.nativeSelectionDragState&&e.pointerId===this.nativeSelectionDragState.pointerId){this.handleNativeSelectionDragPointerMove(e,this.nativeSelectionDragState);return}this.updateInteractionCursorFromEvent(e)};this.handleStrokePointerUp=e=>{if(this.resizeState&&e.pointerId===this.resizeState.pointerId){this.handleStrokeResizePointerUp(e,this.resizeState);return}if(this.dragState&&e.pointerId===this.dragState.pointerId){this.handleStrokeDragPointerUp(e,this.dragState);return}this.nativeSelectionDragState&&e.pointerId===this.nativeSelectionDragState.pointerId&&this.handleNativeSelectionDragPointerUp(e,this.nativeSelectionDragState)};this.handleStrokePointerLeave=()=>{this.resizeState||this.dragState||this.nativeSelectionDragState||this.setInteractionCursor(null)};this.handleWindowKeyDown=e=>{this.handleDrawingHistoryShortcut(e)};this.handleDocumentKeyDown=e=>{var t;if(!this.handleDrawingHistoryShortcut(e)){if(this.shouldUseSelectToolShortcut(e)){e.preventDefault(),e.stopPropagation(),this.enableSelectMode();return}if(!(e.target instanceof Node&&((t=this.brushControlsEl)!=null&&t.contains(e.target)))){if(Rs(e)&&!ir(e.target)){this.isSpaceKeyPressed=!0;return}this.captureEl||this.selectedStrokeIds.size===0||e.key!=="Delete"&&e.key!=="Backspace"||ir(e.target)||(e.preventDefault(),e.stopPropagation(),this.deleteSelectedStrokes())}}};this.handleDocumentKeyUp=e=>{Rs(e)&&(this.isSpaceKeyPressed=!1)};this.handleWindowBlur=()=>{this.isSpaceKeyPressed=!1};this.handleWindowResize=()=>{this.scheduleCanvasDomSync(),this.scheduleRenderViewportSync()};this.handleCanvasUndoPointerDown=e=>{this.undoStack.length!==0&&(e.preventDefault(),e.stopPropagation(),this.suppressNextNativeUndoClick=!0,this.undoLastStroke())};this.handleCanvasRedoPointerDown=e=>{this.redoStack.length!==0&&(e.preventDefault(),e.stopPropagation(),this.redoLastStroke(),this.suppressNextNativeRedoClick=!0)};this.handleCanvasUndoClick=e=>{this.suppressNextNativeUndoClick&&(this.suppressNextNativeUndoClick=!1,e.preventDefault(),e.stopPropagation())};this.handleCanvasRedoClick=e=>{this.suppressNextNativeRedoClick&&(this.suppressNextNativeRedoClick=!1,e.preventDefault(),e.stopPropagation())};this.handleCanvasUndoKeyDown=e=>{!tr(e)||this.undoStack.length===0||(e.preventDefault(),e.stopPropagation(),this.suppressNextNativeUndoClick=!0,this.undoLastStroke())};this.handleCanvasRedoKeyDown=e=>{!tr(e)||this.redoStack.length===0||(e.preventDefault(),e.stopPropagation(),this.suppressNextNativeRedoClick=!0,this.redoLastStroke())};this.handleStrokeScaleButtonPointerDown=e=>{e.preventDefault(),e.stopPropagation()};this.handleSelectedStrokeDeleteButtonClick=e=>{e.preventDefault(),e.stopPropagation(),this.commitPendingSelectedStrokeRecolor(),this.deleteSelectedStrokes()};var u;this.app=e,this.target=t,this.nativeCanvasLimits=new At(t),this.nativeElementScaleControls=new Kt(t),this.settings={...n},this.customColorHex=(u=E(n.strokeColor))!=null?u:$,this.colorWheelHsv=pt(this.customColorHex,this.colorWheelHsv.h),this.colorValueHsl=ce(this.customColorHex,this.colorWheelHsv.h),this.colorValueLab=le(this.customColorHex),this.requestToggleDrawingMode=o,this.requestSetStrokeColor=i,this.requestSetStrokeWidth=s,this.requestSetStrokeHardness=a,this.requestSetStrokeOpacity=l,this.requestSetFreehandSliderValue=c,this.requestSetBeautifulStrokes=d}async start(){let e=await uo(this.app,this.target.file,this.settings);this.drawingData=e.data,this.hasPendingSave=e.didBackfillStrokeHandwriting,this.rebuildStrokeIndex(),this.mountRenderLayer(),this.injectToolbarButton(),this.observeCanvasDom(),this.syncTinyCanvasFeatureState()}async stop(){var e,t;this.disableDrawingMode(),this.closeBrushPopovers(),this.removeToolbarButton(),this.removeCanvasHistoryButtonListeners(),this.removeStrokeInteractionListeners(),(e=this.mutationObserver)==null||e.disconnect(),this.mutationObserver=null,this.isObservingCanvasAttributes=null,this.domSyncFrameId!==null&&(window.cancelAnimationFrame(this.domSyncFrameId),this.domSyncFrameId=null,this.pendingDomSyncFlags=null),this.disconnectRenderViewportObserver(),this.renderViewportFrameId!==null&&(window.cancelAnimationFrame(this.renderViewportFrameId),this.renderViewportFrameId=null),this.cancelActiveStrokePreviewUpdate(),this.cancelPendingRasterRenders(),this.clearRasterTileCache(),this.strokePathCache.clear();for(let n of this.renderDisposers.splice(0))n();this.clearNativeSelectionDrag(),this.resizeState&&(this.clearStrokeResizeTransform(this.resizeState),this.resizeState=null),(t=this.svgEl)==null||t.remove(),this.svgEl=null,this.removeSelectionOverlay(),this.strokeGroupById.clear(),this.saveTimeoutId!==null&&(window.clearTimeout(this.saveTimeoutId),this.saveTimeoutId=null),this.clearTinyControlScale(),this.nativeCanvasLimits.dispose(),this.nativeElementScaleControls.dispose(),await this.saveNow()}isDrawingEnabled(){return this.captureEl!==null}enableDrawingMode(){this.captureEl||(this.dragState=null,this.resizeState=null,this.clearNativeSelectionDrag(),this.selectStrokes([]),this.mountRenderLayer(),this.mountCaptureLayer(),this.syncBrushControlsMountState(),this.syncToolbarButton())}disableDrawingMode(){var e;this.finishActiveStroke(),this.removePenCursor();for(let t of this.captureDisposers.splice(0))t();(e=this.captureEl)==null||e.remove(),this.captureEl=null,this.syncBrushControlsMountState(),this.positionedEl&&(this.positionedEl.setCssStyles({position:this.previousPosition}),this.positionedEl=null,this.previousPosition=""),this.syncToolbarButton()}setSettings(e){let t=Cd(this.settings,e),n=this.settings.allowTinyCanvasElements!==e.allowTinyCanvasElements;this.settings={...e},this.syncCanvasDomObserver();let o=this.syncTinyCanvasFeatureState();(n||o)&&this.selectedStrokeIds.size>0&&this.renderSelectionBox(),this.updateCustomColorFromStrokeColor(),this.syncToolbarButton(),this.syncColorPaletteSelection(),this.syncStrokeSettingsPaletteControls(),this.syncBrushControls(),this.settings.usePenCursorFallback?this.penCursorAppearanceKey="":this.hidePenCursor(),t&&(this.clearRasterTileCache(),this.strokePathCache.clear(),this.activeStroke?(this.resetActiveStrokePreviewState(),this.updateActiveStrokePreview()):this.renderStrokes())}async clear(){this.finishActiveStroke(),this.commitPendingSelectedStrokeRecolor(),this.drawingData.strokes.length!==0&&(this.pushHistory({type:"clear-strokes",strokes:pr(this.drawingData.strokes)}),this.drawingData={...tt(),colorHistory:this.drawingData.colorHistory},this.rebuildStrokeIndex(),this.selectStrokes([]),this.renderStrokes(),this.hasPendingSave=!0,await this.saveNow())}async undoLastStroke(){this.finishActiveStroke(),this.commitPendingSelectedStrokeRecolor();let e=this.undoStack.pop();return e?(this.applyHistoryAction(e,"undo"),this.redoStack.push(Gn(e)),this.hasPendingSave=!0,this.syncCanvasUndoRedoButtons(),await this.saveNow(),!0):!1}async redoLastStroke(){this.finishActiveStroke(),this.commitPendingSelectedStrokeRecolor();let e=this.redoStack.pop();return e?(this.applyHistoryAction(e,"redo"),this.undoStack.push(Gn(e)),this.hasPendingSave=!0,this.syncCanvasUndoRedoButtons(),await this.saveNow(),!0):!1}mountCaptureLayer(){let e=this.findCanvasWrapperEl();this.ensurePositioned(e);let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-capture-layer"),t.tabIndex=0,e.appendChild(t),this.captureEl=t,this.hideStaleElements(),this.captureDisposers.push(this.addListener(t,"pointerdown",this.handlePointerDown),this.addListener(t,"pointermove",this.handlePointerMove),this.addListener(t,"pointerup",this.handlePointerUp),this.addListener(t,"pointercancel",this.handlePointerUp),this.addListener(t,"pointerleave",this.handlePointerLeave),this.addListener(t,"keydown",this.handleKeyDown),this.addListener(window,"blur",this.handleCaptureWindowBlur)),window.requestAnimationFrame(()=>t.focus({preventScroll:!0}))}mountRenderLayer(){let e=this.findCanvasWorldEl(),t=this.svgEl,n=!1;t||(t=activeDocument.createElementNS(G,"svg"),t.classList.add("draw-in-canvas-render-layer"),t.setAttribute("aria-hidden","true"),t.setAttribute("focusable","false"),this.svgEl=t,n=!0),(t.parentElement!==e||e.lastElementChild!==t)&&(e.appendChild(t),n=!0),this.syncRenderViewportObserver(e),n?this.renderStrokes():this.syncVisibleStrokeElements(),this.syncStrokeInteractionListeners(),this.hideStaleElements()}injectToolbarButton(){var i;let e=this.target.containerEl.querySelector(".canvas-controls");if(!e)return;if(this.syncCanvasHistoryButtonListeners(e),(i=this.toolbarGroupEl)!=null&&i.isConnected&&this.toolbarGroupEl.parentElement===e){this.ensureToolbarControlsAboveCaptureLayer(e),this.syncToolbarButton();return}this.removeToolbarButton(),this.ensureToolbarControlsAboveCaptureLayer(e);let t=activeDocument.createElement("div");t.classList.add("canvas-control-group","mod-raised","draw-in-canvas-control-group");let n=activeDocument.createElement("div");n.classList.add("canvas-control-item","draw-in-canvas-control-item","draw-in-canvas-select-control-item"),n.setAttribute("aria-label","Select canvas items (1)"),n.setAttribute("data-tooltip-position","left"),n.setAttribute("role","button"),n.setAttribute("aria-keyshortcuts","1"),n.tabIndex=0,(0,I.setIcon)(n,"mouse-pointer-2");let o=activeDocument.createElement("div");o.classList.add("canvas-control-item","draw-in-canvas-control-item","draw-in-canvas-pencil-control-item"),o.setAttribute("aria-label","Toggle drawing mode. Long press or press the down arrow for stroke color"),o.setAttribute("data-tooltip-position","left"),o.setAttribute("role","button"),o.setAttribute("aria-haspopup","dialog"),o.setAttribute("aria-expanded","false"),o.tabIndex=0,(0,I.setIcon)(o,"pencil"),t.append(n,o),e.insertBefore(t,Td(e)),this.toolbarGroupEl=t,this.selectButtonEl=n,this.toolbarButtonEl=o,this.toolbarDisposers.push(this.addListener(n,"pointerdown",this.handleSelectToolbarPointerDown),this.addListener(n,"keydown",this.handleSelectToolbarKeyDown),this.addListener(o,"pointerdown",this.handleToolbarPointerDown),this.addListener(o,"pointerup",this.handleToolbarPointerUp),this.addListener(o,"pointercancel",this.handleToolbarPointerCancel),this.addListener(o,"keydown",this.handleToolbarKeyDown)),this.syncToolbarButton(),this.hideStaleElements()}removeToolbarButton(){var e;this.closeBrushPopovers(),this.clearToolbarPressState(),this.restoreToolbarControlsZIndex();for(let t of this.toolbarDisposers.splice(0))t();(e=this.toolbarGroupEl)==null||e.remove(),this.toolbarGroupEl=null,this.toolbarButtonEl=null,this.selectButtonEl=null}ensureToolbarControlsAboveCaptureLayer(e){this.toolbarControlsEl&&this.toolbarControlsEl!==e&&this.restoreToolbarControlsZIndex(),this.toolbarControlsEl||(this.toolbarControlsEl=e,this.toolbarControlsOriginalZIndex=e.style.zIndex);let t=Number.parseInt(window.getComputedStyle(e).zIndex,10);(!Number.isFinite(t)||t<=_s)&&(e.style.zIndex=Uc.toString())}restoreToolbarControlsZIndex(){var e;this.toolbarControlsEl&&(this.toolbarControlsEl.style.zIndex=(e=this.toolbarControlsOriginalZIndex)!=null?e:"",this.toolbarControlsEl=null,this.toolbarControlsOriginalZIndex=null)}syncToolbarButton(){var t,n;if(!this.toolbarButtonEl)return;let e=this.isDrawingEnabled();(t=this.selectButtonEl)==null||t.classList.toggle("is-active",!e),(n=this.selectButtonEl)==null||n.setAttribute("aria-pressed",(!e).toString()),this.toolbarButtonEl.classList.toggle("is-active",e),this.toolbarButtonEl.setAttribute("aria-pressed",e.toString()),this.toolbarButtonEl.setCssProps({"--draw-in-canvas-current-color":this.settings.strokeColor}),this.syncColorPaletteExpandedState(),this.syncStrokeSettingsPaletteExpandedState()}syncBrushControlsMountState(){if(!tn(this.getStrokeControlsState())){this.removeBrushControls();return}this.mountBrushControls()}getStrokeControlsState(){return{isDrawingEnabled:this.isDrawingEnabled(),selectedStrokeCount:this.selectedStrokeIds.size}}getBrushControlsTarget(){return ai(this.getStrokeControlsState())}mountBrushControls(){var i;if(!tn(this.getStrokeControlsState())){this.removeBrushControls();return}let e=this.findCanvasWrapperEl();if((i=this.brushControlsEl)!=null&&i.isConnected&&this.brushControlsEl.parentElement===e){this.syncBrushControls(),this.hideStaleElements();return}this.removeBrushControls();let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-brush-controls"),t.setAttribute("role","group");let n=this.createBrushColorButtonEl(),o=this.createBrushSettingsButtonEl();t.append(this.createBrushSizeSliderControlEl(),n,o,this.createBrushOpacitySliderControlEl()),e.appendChild(t),this.brushControlsEl=t,this.syncBrushControls(),this.hideStaleElements()}removeBrushControls(){var e;this.closeBrushPopovers(),this.closeBrushPreview();for(let t of this.brushControlsDisposers.splice(0))t();(e=this.brushControlsEl)==null||e.remove(),this.brushControlsEl=null,this.brushColorButtonEl=null,this.brushSettingsButtonEl=null}createBrushSizeSliderControlEl(){let e=ms("size",rn(this.getBrushControlsTarget()),"draw-in-canvas-brush-size-value",We(y(this.getBrushControlsStyle().width)));return e.classList.add("draw-in-canvas-brush-size-slider"),this.brushControlsDisposers.push(this.addListener(e,"pointerdown",this.handleBrushSliderPointerDown),this.addListener(e,"pointermove",this.handleBrushSliderPointerMove),this.addListener(e,"pointerup",this.handleBrushSliderPointerUp),this.addListener(e,"pointercancel",this.handleBrushSliderPointerUp),this.addListener(e,"keydown",this.handleBrushSliderKeyDown)),e}createBrushColorButtonEl(){var t,n;let e=activeDocument.createElement("button");return e.type="button",e.classList.add("draw-in-canvas-brush-color-button"),e.setAttribute("aria-haspopup","dialog"),e.setAttribute("aria-expanded",((n=(t=this.colorPaletteEl)==null?void 0:t.isConnected)!=null?n:!1).toString()),this.brushColorButtonEl=e,this.brushControlsDisposers.push(this.addListener(e,"pointerdown",this.handleBrushButtonPointerDown),this.addListener(e,"click",this.handleBrushColorButtonClick),this.addListener(e,"keydown",this.handleBrushButtonKeyDown)),e}createBrushSettingsButtonEl(){var t,n;let e=activeDocument.createElement("button");return e.type="button",e.classList.add("draw-in-canvas-brush-settings-button"),e.setAttribute("aria-haspopup","dialog"),e.setAttribute("aria-expanded",((n=(t=this.strokeSettingsPaletteEl)==null?void 0:t.isConnected)!=null?n:!1).toString()),(0,I.setIcon)(e,"sliders-horizontal"),this.brushSettingsButtonEl=e,this.brushControlsDisposers.push(this.addListener(e,"pointerdown",this.handleBrushButtonPointerDown),this.addListener(e,"click",this.handleBrushSettingsButtonClick),this.addListener(e,"keydown",this.handleBrushButtonKeyDown)),e}createBrushOpacitySliderControlEl(){let e=ms("opacity",nn(this.getBrushControlsTarget()),"draw-in-canvas-brush-opacity-value",Ue(f(this.getBrushControlsStyle().opacity)));return e.classList.add("draw-in-canvas-brush-opacity-slider"),this.brushControlsDisposers.push(this.addListener(e,"pointerdown",this.handleBrushSliderPointerDown),this.addListener(e,"pointermove",this.handleBrushSliderPointerMove),this.addListener(e,"pointerup",this.handleBrushSliderPointerUp),this.addListener(e,"pointercancel",this.handleBrushSliderPointerUp),this.addListener(e,"keydown",this.handleBrushSliderKeyDown)),e}syncBrushControls(){if(!this.brushControlsEl)return;let e=this.getBrushControlsTarget(),t=this.getBrushControlsStyle();this.brushControlsEl.setAttribute("aria-label",li(e)),this.brushControlsEl.setCssProps({"--draw-in-canvas-current-color":this.getStrokeColorForTarget(e)}),this.syncColorPaletteExpandedState(),this.syncStrokeSettingsPaletteExpandedState(),this.syncBrushSlider("size",".draw-in-canvas-brush-size-slider",".draw-in-canvas-brush-size-value",y(t.width),We,rn(e)),this.syncBrushSlider("opacity",".draw-in-canvas-brush-opacity-slider",".draw-in-canvas-brush-opacity-value",f(t.opacity),Ue,nn(e))}syncBrushSlider(e,t,n,o,i,s){var h,p;let a=Sr(e),l=i(o),c=(h=this.brushControlsEl)==null?void 0:h.querySelector(t),d=(p=this.brushControlsEl)==null?void 0:p.querySelector(n),u=c==null?void 0:c.querySelector(".draw-in-canvas-brush-slider-label");c&&(c.title=`${s}: ${l}`,c.setCssProps({"--draw-in-canvas-brush-slider-position":bd(e,o)}),c.setAttribute("aria-valuemin",a.min.toString()),c.setAttribute("aria-valuemax",a.max.toString()),c.setAttribute("aria-valuenow",Te(e,o).toString()),c.setAttribute("aria-valuetext",l)),u&&(u.textContent=s),d&&(d.textContent=l)}toggleColorPalette(e="brush"){var t;if((t=this.colorPaletteEl)!=null&&t.isConnected&&this.colorPaletteTarget===e){this.closeColorPalette();return}this.openColorPalette(e)}toggleStrokeSettingsPalette(e="brush"){var t;if((t=this.strokeSettingsPaletteEl)!=null&&t.isConnected&&this.strokeSettingsPaletteTarget===e){this.closeStrokeSettingsPalette();return}this.openStrokeSettingsPalette(e)}openColorPalette(e="brush"){var u,h,p,S,g;if(e==="brush"&&!this.isDrawingEnabled()&&this.enableDrawingMode(),e==="selection"&&this.selectedStrokeIds.size===0)return;(u=this.colorPaletteEl)!=null&&u.isConnected&&this.colorPaletteTarget!==e&&this.closeColorPalette(),this.colorPaletteTarget=e,this.updateCustomColorFromStrokeColor();let t=this.getColorPaletteTriggerEl(e);if(!t){this.colorPaletteTarget="brush";return}if(this.closeStrokeSettingsPalette(),this.colorPaletteTriggerEl=t,(h=this.colorPaletteEl)!=null&&h.isConnected){this.syncColorPaletteSelection(),this.syncColorPaletteTabControls(),this.positionColorPalette(),this.syncColorPaletteExpandedState(),this.syncPopoverOpenBodyClass();return}this.closeColorPalette(),this.colorPaletteTarget=e,this.colorPaletteTriggerEl=t;let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-color-palette"),n.setAttribute("role","dialog");let o=activeDocument.createElement("span");o.id=w(),o.classList.add("draw-in-canvas-visually-hidden"),o.textContent=e==="selection"?"Selected stroke color":"Stroke color",n.setAttribute("aria-labelledby",o.id),n.appendChild(o);let i={disc:w(),palettes:w()},s=[],a=activeDocument.createElement("div");a.classList.add("draw-in-canvas-color-palette-panels"),a.append(this.createColorDiscPanelEl(i.disc),this.createPresetPalettePanelEl(i.palettes,s)),n.append(this.createColorPaletteHeaderEl(),a,this.createColorPaletteTabsEl(i)),activeDocument.body.appendChild(n),this.colorPaletteEl=n,this.syncPopoverOpenBodyClass(),this.syncColorPaletteExpandedState(),this.colorPaletteDisposers.push(this.addListener(activeDocument,"pointerdown",this.handleBrushPopoverDocumentPointerDown,!0),this.addListener(activeDocument,"keydown",this.handleColorPaletteDocumentKeyDown,!0)),this.syncColorPaletteSelection(),this.syncColorPaletteTabControls(),this.positionColorPalette();let l=this.getColorPaletteStrokeColor(),c=s.find(D=>{var me;return V((me=D.dataset.color)!=null?me:"",l)}),d=this.colorPaletteTab==="palettes"?c!=null?c:s[0]:(g=(S=(p=n.querySelector(".draw-in-canvas-color-wheel-disc-field"))!=null?p:n.querySelector(".draw-in-canvas-color-palette-tab.is-active"))!=null?S:c)!=null?g:s[0];window.requestAnimationFrame(()=>d==null?void 0:d.focus({preventScroll:!0}))}getColorPaletteTriggerEl(e=this.colorPaletteTarget){var t,n;return(t=this.brushColorButtonEl)!=null&&t.isConnected&&this.getBrushControlsTarget()===e?this.brushColorButtonEl:e==="brush"&&((n=this.toolbarButtonEl)!=null&&n.isConnected)?this.toolbarButtonEl:null}getColorPaletteAnchorEl(){var e;return(e=this.brushControlsEl)!=null&&e.isConnected&&this.getBrushControlsTarget()===this.colorPaletteTarget?this.brushControlsEl:this.getColorPaletteTriggerEl()}positionColorPalette(){let e=this.getColorPaletteAnchorEl();!this.colorPaletteEl||!e||this.positionBrushPopover(this.colorPaletteEl,e)}openStrokeSettingsPalette(e="brush"){var s,a;if(e==="brush"&&!this.isDrawingEnabled()&&this.enableDrawingMode(),e==="selection"&&this.selectedStrokeIds.size===0)return;(s=this.strokeSettingsPaletteEl)!=null&&s.isConnected&&this.strokeSettingsPaletteTarget!==e&&this.closeStrokeSettingsPalette(),this.strokeSettingsPaletteTarget=e;let t=this.getStrokeSettingsPaletteTriggerEl(e);if(!t){this.strokeSettingsPaletteTarget="brush";return}if(this.closeColorPalette(),this.strokeSettingsPaletteTriggerEl=t,(a=this.strokeSettingsPaletteEl)!=null&&a.isConnected){this.positionStrokeSettingsPalette(),this.syncStrokeSettingsPaletteControls(),this.syncStrokeSettingsPaletteExpandedState(),this.syncPopoverOpenBodyClass();return}this.closeStrokeSettingsPalette(),this.strokeSettingsPaletteTarget=e,this.strokeSettingsPaletteTriggerEl=t;let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-stroke-settings-palette"),n.setAttribute("role","dialog");let o=activeDocument.createElement("span");o.id=w(),o.classList.add("draw-in-canvas-visually-hidden"),o.textContent=e==="selection"?"Selected stroke settings":"Stroke and handwriting settings",n.setAttribute("aria-labelledby",o.id),n.appendChild(o),n.appendChild(this.createStrokeSettingsControlEl()),activeDocument.body.appendChild(n),this.strokeSettingsPaletteEl=n,this.syncPopoverOpenBodyClass(),this.positionStrokeSettingsPalette(),this.syncStrokeSettingsPaletteExpandedState(),this.strokeSettingsPaletteDisposers.push(this.addListener(activeDocument,"pointerdown",this.handleBrushPopoverDocumentPointerDown,!0),this.addListener(activeDocument,"keydown",this.handleStrokeSettingsPaletteDocumentKeyDown,!0)),this.syncStrokeSettingsPaletteControls();let i=n.querySelector("input, button");window.requestAnimationFrame(()=>i==null?void 0:i.focus({preventScroll:!0}))}getStrokeSettingsPaletteTriggerEl(e=this.strokeSettingsPaletteTarget){var t;return(t=this.brushSettingsButtonEl)!=null&&t.isConnected&&this.getBrushControlsTarget()===e?this.brushSettingsButtonEl:null}getStrokeSettingsPaletteAnchorEl(){var e;return(e=this.brushControlsEl)!=null&&e.isConnected&&this.getBrushControlsTarget()===this.strokeSettingsPaletteTarget?this.brushControlsEl:this.getStrokeSettingsPaletteTriggerEl()}positionStrokeSettingsPalette(){let e=this.getStrokeSettingsPaletteAnchorEl();!this.strokeSettingsPaletteEl||!e||this.positionBrushPopover(this.strokeSettingsPaletteEl,e)}positionBrushPopover(e,t){var c;let n=t.getBoundingClientRect(),o=e.getBoundingClientRect(),i=8,s=8,a=Math.max(i,Math.min(n.top,window.innerHeight-o.height-i));if((c=this.brushControlsEl)!=null&&c.isConnected&&t===this.brushControlsEl){let d=Math.max(i,Math.min(n.right+s,window.innerWidth-o.width-i));e.setCssStyles({top:`${a}px`,left:`${d}px`,right:"auto"});return}let l=Math.max(i,window.innerWidth-n.left+s);e.setCssStyles({top:`${a}px`,right:`${l}px`,left:"auto"})}closeBrushPopovers(){this.closeColorPalette(),this.closeStrokeSettingsPalette()}closeColorPalette(){var e;this.commitPendingSelectedStrokeRecolor(),this.closeBrushPreview();for(let t of this.colorPaletteDisposers.splice(0))t();(e=this.colorPaletteEl)==null||e.remove(),this.colorPaletteEl=null,this.colorPaletteTriggerEl=null,this.colorPaletteTarget="brush",this.syncPopoverOpenBodyClass(),this.syncColorPaletteExpandedState()}closeStrokeSettingsPalette(){var e;this.commitPendingSelectedStrokeStyleChanges(),this.closeBrushPreview();for(let t of this.strokeSettingsPaletteDisposers.splice(0))t();(e=this.strokeSettingsPaletteEl)==null||e.remove(),this.strokeSettingsPaletteEl=null,this.strokeSettingsPaletteTriggerEl=null,this.strokeSettingsPaletteTarget="brush",this.syncPopoverOpenBodyClass(),this.syncStrokeSettingsPaletteExpandedState()}syncPopoverOpenBodyClass(){var e,t,n,o;activeDocument.body.classList.toggle(Qc,((t=(e=this.colorPaletteEl)==null?void 0:e.isConnected)!=null?t:!1)||((o=(n=this.strokeSettingsPaletteEl)==null?void 0:n.isConnected)!=null?o:!1))}syncColorPaletteExpandedState(){var i,s,a,l,c;let e=(s=(i=this.colorPaletteEl)==null?void 0:i.isConnected)!=null?s:!1,t=e&&this.colorPaletteTarget==="brush",n=this.getBrushControlsTarget(),o=e&&this.colorPaletteTarget===n;(a=this.toolbarButtonEl)==null||a.setAttribute("aria-expanded",t.toString()),(l=this.brushColorButtonEl)==null||l.setAttribute("aria-expanded",o.toString()),(c=this.brushColorButtonEl)==null||c.setAttribute("aria-label",ci(n,o))}syncStrokeSettingsPaletteExpandedState(){var o,i,s,a;let e=(i=(o=this.strokeSettingsPaletteEl)==null?void 0:o.isConnected)!=null?i:!1,t=this.getBrushControlsTarget(),n=e&&this.strokeSettingsPaletteTarget===t;(s=this.brushSettingsButtonEl)==null||s.setAttribute("aria-expanded",n.toString()),(a=this.brushSettingsButtonEl)==null||a.setAttribute("aria-label",di(t,n))}syncColorPaletteSelection(){var n,o,i;let e=(o=(n=this.colorPaletteEl)==null?void 0:n.querySelectorAll(".draw-in-canvas-preset-color-swatch, .draw-in-canvas-history-color-swatch"))!=null?o:[],t=this.getColorPaletteStrokeColor();for(let s of Array.from(e)){let a=V((i=s.dataset.color)!=null?i:"",t);s.classList.toggle("is-selected",a),s.setAttribute("aria-pressed",a.toString())}this.syncCustomColorControls(),this.syncColorWheelControls(),this.syncHslSliderControls(),this.syncColorPaletteHeader()}recordColorHistory(e){this.commitPendingSelectedStrokeRecolor();let t=E(e);if(!t)return;let n=[t,...this.drawingData.colorHistory.filter(i=>!V(i,t))].slice(0,10);(n.length!==this.drawingData.colorHistory.length||n.some((i,s)=>{var a;return!V(i,(a=this.drawingData.colorHistory[s])!=null?a:"")}))&&(this.drawingData.colorHistory=n,this.renderColorHistorySwatches(),this.scheduleSave())}renderColorHistorySwatches(){var t;let e=(t=this.colorPaletteEl)==null?void 0:t.querySelector(".draw-in-canvas-color-history-swatches");e&&this.populateColorHistorySwatches(e)}populateColorHistorySwatches(e){let t=this.drawingData.colorHistory.slice(0,10);if(e.replaceChildren(),e.classList.toggle("is-empty",t.length===0),e.setAttribute("aria-label",t.length===0?"Color history, empty":"Color history"),t.length===0){let n=activeDocument.createElement("span");n.classList.add("draw-in-canvas-color-history-empty"),n.textContent="No colors yet",e.appendChild(n);return}for(let[n,o]of t.entries()){let i=activeDocument.createElement("button");i.type="button",i.classList.add("draw-in-canvas-color-disc-palette-swatch","draw-in-canvas-history-color-swatch"),i.dataset.color=o,i.setAttribute("aria-label",`Use history color ${n+1} ${Z(o)} stroke color`),i.setCssProps({"--draw-in-canvas-swatch-color":o});let s=V(o,this.getColorPaletteStrokeColor());i.classList.toggle("is-selected",s),i.setAttribute("aria-pressed",s.toString()),e.appendChild(i)}}syncStrokeSettingsPaletteControls(){let e=this.strokeSettingsPaletteEl,t=this.getStrokeSettingsPaletteStyle();if(!t)return;let n=e==null?void 0:e.querySelector(".draw-in-canvas-handwriting-toggle-input"),o=e==null?void 0:e.querySelector(".draw-in-canvas-freehand-controls");n&&(n.checked=t.handwriting.enabled),o==null||o.classList.toggle("is-disabled",!t.handwriting.enabled),o==null||o.setAttribute("aria-disabled",(!t.handwriting.enabled).toString()),this.syncPaletteSlider(e,".draw-in-canvas-stroke-width-slider-control",".draw-in-canvas-stroke-width-slider-value",y(t.width),We),this.syncPaletteSlider(e,".draw-in-canvas-stroke-hardness-slider",".draw-in-canvas-stroke-hardness-value",x(t.hardness),Ts),this.syncPaletteSlider(e,".draw-in-canvas-stroke-opacity-slider",".draw-in-canvas-stroke-opacity-value",f(t.opacity),Ue);for(let i of Nn()){let s=vs(t.handwriting,i),a=`[data-freehand-setting="${i}"]`;this.syncPaletteSlider(e,a,`[data-freehand-value="${i}"]`,s,c=>Ss(i,c));let l=e==null?void 0:e.querySelector(a);l&&(l.disabled=!t.handwriting.enabled)}}syncPaletteSlider(e,t,n,o,i){let s=e==null?void 0:e.querySelector(t),a=e==null?void 0:e.querySelector(n);s&&(s.value=o.toString()),a&&(a.textContent=i(o))}syncCustomColorControls(){var a,l,c,d,u;this.updateCustomColorFromStrokeColor();let e=this.getColorPaletteStrokeColor(),t=(a=this.colorPaletteEl)==null?void 0:a.querySelector(".draw-in-canvas-custom-color-hex-input"),n=(l=this.colorPaletteEl)==null?void 0:l.querySelector(".draw-in-canvas-native-color-picker"),o=(c=this.colorPaletteEl)==null?void 0:c.querySelector(".draw-in-canvas-color-picker-swatch"),i=(u=(d=this.colorPaletteEl)==null?void 0:d.querySelectorAll(".draw-in-canvas-custom-color-shade"))!=null?u:[];t&&activeDocument.activeElement!==t&&(t.value=Z(this.customColorHex),W(t,!0)),n&&(n.value=this.customColorHex),o&&(o.setCssProps({"--draw-in-canvas-swatch-color":this.customColorHex}),o.classList.toggle("is-selected",V(this.customColorHex,e)));let s=Qd(this.customColorHex);for(let h of Array.from(i)){let p=Number(h.dataset.shadeIndex),S=s[p];if(!S)continue;h.dataset.color=S.value,h.setAttribute("aria-label",`Use ${S.name.toLowerCase()} ${Z(S.value)} stroke color`),h.setCssProps({"--draw-in-canvas-custom-shade-color":S.value});let g=V(S.value,e);h.classList.toggle("is-selected",g),h.setAttribute("aria-pressed",g.toString())}}syncColorWheelControls(){var u,h;let e=(u=this.colorPaletteEl)==null?void 0:u.querySelector(".draw-in-canvas-color-disc-picker");if(!e)return;let t=nr({h:this.colorWheelHsv.h,s:1,v:1}),n=(h=E(this.customColorHex))!=null?h:nr(this.colorWheelHsv),o=Ud(this.colorWheelHsv.h),i=Math.round(this.colorWheelHsv.h),s=Math.round(this.colorWheelHsv.s*100),a=Math.round(this.colorWheelHsv.v*100),l=e.querySelector('[data-color-wheel-control="hue"]'),c=e.querySelector('[data-color-wheel-control="disc"]'),d=Kd(this.colorWheelHsv,c);e.setCssProps({"--draw-in-canvas-color-wheel-hue-color":t,"--draw-in-canvas-color-wheel-selected-color":n,"--draw-in-canvas-color-wheel-hue-x":`${o.x}%`,"--draw-in-canvas-color-wheel-hue-y":`${o.y}%`,"--draw-in-canvas-color-wheel-disc-x":`${d.x}%`,"--draw-in-canvas-color-wheel-disc-y":`${d.y}%`}),l&&(l.setAttribute("aria-valuenow",i.toString()),l.setAttribute("aria-valuetext",`${i}\xB0 hue`)),c&&(c.setAttribute("aria-valuenow",s.toString()),c.setAttribute("aria-valuetext",`Saturation ${s}%, brightness ${a}%`))}syncHslSliderControls(){var o,i,s,a;this.syncColorValueModeControls();let e=(i=(o=this.colorPaletteEl)==null?void 0:o.querySelectorAll(".draw-in-canvas-hsl-slider"))!=null?i:[],t=this.getColorValueInputText(),n=(s=this.colorPaletteEl)==null?void 0:s.querySelector(".draw-in-canvas-hsl-value-input");n&&(activeDocument.activeElement!==n||n.readOnly)&&(n.value=t,we(n,!0));for(let l of Array.from(e)){let c=Xn(this.colorValueMode,l.dataset.colorValueSlider);if(!c)continue;let d=this.getColorValueSliderValue(c.id),u=qn(this.colorValueMode,c.id,d),h=(a=l.closest(".draw-in-canvas-hsl-slider-control"))==null?void 0:a.querySelector("output");l.value=d.toString(),l.setAttribute("aria-valuenow",d.toString()),l.setAttribute("aria-valuetext",ys(this.colorValueMode,c.id,d)),l.setCssProps(this.getColorValueSliderCssProps(c.id)),h&&(h.textContent=u)}}syncColorValueModeControls(){var s,a,l,c,d;let e=fs(this.colorValueMode),t=(a=(s=this.colorPaletteEl)==null?void 0:s.querySelectorAll("[data-color-value-mode]"))!=null?a:[],n=(l=this.colorPaletteEl)==null?void 0:l.querySelector(".draw-in-canvas-hsl-value-input"),o=(d=(c=this.colorPaletteEl)==null?void 0:c.querySelectorAll(".draw-in-canvas-hsl-slider"))!=null?d:[],i=Yn(this.colorValueMode);for(let u of Array.from(t)){let h=u.dataset.colorValueMode===this.colorValueMode;u.classList.toggle("is-active",h),u.setAttribute("aria-pressed",h.toString())}n&&(n.placeholder=e.placeholder,n.maxLength=e.maxLength,n.setAttribute("aria-label",e.ariaLabel));for(let[u,h]of Array.from(o).entries()){let p=i[u];if(!p)continue;h.min=p.min.toString(),h.max=p.max.toString(),h.step=p.step.toString(),h.dataset.colorValueSlider=p.id,h.setAttribute("aria-label",p.ariaLabel);let S=h.closest(".draw-in-canvas-hsl-slider-control"),g=S==null?void 0:S.querySelector("label"),D=S==null?void 0:S.querySelector("output");g&&(g.textContent=p.label),D&&D.setAttribute("data-color-value-value",p.id)}}getColorValueInputText(){switch(this.colorValueMode){case"hsl":return Jn(this.colorValueHsl);case"lab":return $s(this.colorValueLab);default:return Bd(this.colorValueMode,this.customColorHex,this.colorWheelHsv.h)}}getColorValueSliderValue(e){switch(this.colorValueMode){case"hsl":{let t=Ne(e);return t?ue(t,this.colorValueHsl):he}case"lab":return Od(e,this.colorValueLab);default:return Rd(this.colorValueMode,e,this.customColorHex,this.colorWheelHsv.h)}}getColorValueSliderCssProps(e){switch(this.colorValueMode){case"hsl":return Dd(e,this.colorValueHsl);case"lab":return Ad(e,this.colorValueLab);default:return Ld(this.colorValueMode,e,this.customColorHex,this.colorWheelHsv.h)}}syncColorValueHslFromHex(e,t=this.colorWheelHsv.h){let n=E(e);!n||n===this.preserveHslColorValueForHex||(this.colorValueHsl=ce(n,t),this.preserveHslColorValueForHex=null)}syncColorValueLabFromHex(e){let t=E(e);!t||t===this.preserveLabColorValueForHex||(this.colorValueLab=le(t),this.preserveLabColorValueForHex=null)}syncColorPaletteHeader(){var i,s,a,l,c,d;let e=(s=(i=this.colorPaletteEl)==null?void 0:i.querySelectorAll(".draw-in-canvas-current-color-preview"))!=null?s:[],t=(l=(a=this.colorPaletteEl)==null?void 0:a.querySelectorAll(".draw-in-canvas-current-color-label"))!=null?l:[],n=this.getColorPaletteStrokeColor(),o=(d=(c=E(n))==null?void 0:c.toUpperCase())!=null?d:n;for(let u of Array.from(e))u.setCssProps({"--draw-in-canvas-current-color":n});for(let u of Array.from(t)){if(u.instanceOf(HTMLInputElement)){(activeDocument.activeElement!==u||u.readOnly)&&(u.value=o,W(u,!0));continue}u.textContent=o}}syncColorPaletteTabControls(){let e=this.colorPaletteEl;if(!e)return;let t=e.querySelectorAll(".draw-in-canvas-color-palette-tab"),n=e.querySelectorAll(".draw-in-canvas-color-palette-panel");for(let o of Array.from(t)){let s=rr(o.dataset.colorPaletteTab)===this.colorPaletteTab;o.classList.toggle("is-active",s),o.tabIndex=s?0:-1,o.setAttribute("aria-selected",s.toString())}for(let o of Array.from(n)){let s=rr(o.dataset.colorPalettePanel)===this.colorPaletteTab;o.hidden=!s,o.classList.toggle("is-active",s),o.setAttribute("aria-hidden",(!s).toString())}}updateCustomColorFromStrokeColor(){let e=E(this.getColorPaletteStrokeColor());e&&(this.customColorHex=e,this.colorWheelHsv=pt(e,this.colorWheelHsv.h),this.syncColorValueHslFromHex(e,this.colorWheelHsv.h),this.syncColorValueLabFromHex(e))}setColorWheelHsv(e){let t=Zs(e),n=nr(t);this.colorWheelHsv=t,this.customColorHex=n,this.syncColorValueHslFromHex(n,t.h),this.syncColorValueLabFromHex(n),this.setStrokeColor(n),this.syncColorWheelControls(),this.syncHslSliderControls(),this.syncColorPaletteHeader()}setHslColor(e){let t=Zn(e);this.setColorValueHex(hr(t),t.h,void 0,t)}setColorValueSliderValue(e,t){if(this.colorValueMode==="hsl"){let o=Ne(e);if(!o)return;let i=Ws(this.colorValueHsl,o,t);this.setColorValueHex(hr(i),i.h,void 0,i);return}if(this.colorValueMode==="lab"){let o=Gs(this.colorValueLab,e,t);if(!o)return;this.setColorValueHex(Re(o),this.colorWheelHsv.h,o);return}let n=Nd(this.colorValueMode,e,t,this.customColorHex,this.colorWheelHsv.h);n&&this.setColorValueHex(n.hexColor,n.fallbackHue,n.labColor,n.hslColor)}setColorValueHex(e,t=this.colorWheelHsv.h,n,o){let i=E(e);i&&(o?(this.colorValueHsl=Zn(o),this.preserveHslColorValueForHex=i):(this.preserveHslColorValueForHex=null,this.syncColorValueHslFromHex(i,t)),n?(this.colorValueLab=Js(n),this.preserveLabColorValueForHex=i):(this.preserveLabColorValueForHex=null,this.syncColorValueLabFromHex(i)),this.colorWheelHsv=pt(i,t),this.customColorHex=i,this.setStrokeColor(i),this.syncColorWheelControls(),this.syncHslSliderControls(),this.syncColorPaletteHeader())}setStrokeColor(e){let t=E(e);if(t&&(this.customColorHex=t,this.colorWheelHsv=pt(t,this.colorWheelHsv.h),this.syncColorValueHslFromHex(t,this.colorWheelHsv.h),this.syncColorValueLabFromHex(t)),this.colorPaletteTarget==="selection"&&this.selectedStrokeIds.size>0&&this.recolorSelectedStrokes(e),V(e,this.settings.strokeColor)){this.syncColorWheelControls(),this.syncHslSliderControls(),this.syncColorPaletteHeader(),this.syncBrushControls();return}this.settings={...this.settings,strokeColor:e},this.requestSetStrokeColor(e),this.syncToolbarButton(),this.syncColorPaletteSelection(),this.syncBrushControls()}getColorPaletteStrokeColor(){return this.getStrokeColorForTarget(this.colorPaletteTarget)}getStrokeColorForTarget(e){var t;return e==="selection"?(t=this.getSelectedStrokePaletteColor())!=null?t:this.settings.strokeColor:this.settings.strokeColor}getSelectedStrokePaletteColor(){for(let e of this.selectedStrokeIds){let t=this.findStroke(e);if(t)return t.color}return null}getBrushControlsStyle(){var e;return(e=this.getStrokeSettingsStyleForTarget(this.getBrushControlsTarget()))!=null?e:this.getDefaultStrokeStyle()}getStrokeSettingsPaletteStyle(){return this.getStrokeSettingsStyleForTarget(this.strokeSettingsPaletteTarget)}getStrokeSettingsStyleForTarget(e){return e==="selection"?this.getSelectedStrokeStyle():this.getDefaultStrokeStyle()}getDefaultStrokeStyle(){return{width:this.settings.strokeWidth,hardness:this.settings.strokeHardness,opacity:this.settings.strokeOpacity,handwriting:He(this.settings)}}getSelectedStrokeStyle(){for(let e of this.selectedStrokeIds){let t=this.findStroke(e);if(t)return at(t)}return null}recolorSelectedStrokes(e){var i,s;let t=Array.from(this.selectedStrokeIds);if(t.length===0)return;let n=new Map;for(let a of(i=this.pendingSelectedStrokeRecolorChanges)!=null?i:[])n.set(a.strokeId,{...a});let o=!1;for(let a of t){let l=this.findStroke(a);if(!l)continue;let c=n.get(a);!c&&V(l.color,e)||(n.set(a,{strokeId:a,previousColor:(s=c==null?void 0:c.previousColor)!=null?s:l.color,nextColor:e}),V(l.color,e)||(l.color=e,this.updateStrokePaintAttributes(l),o=!0))}this.pendingSelectedStrokeRecolorChanges=Array.from(n.values()).filter(a=>!V(a.previousColor,a.nextColor)),!(!o&&this.pendingSelectedStrokeRecolorChanges.length===0)&&(this.syncBrushControls(),this.scheduleSave())}commitPendingSelectedStrokeRecolor(){var t,n;let e=(n=(t=this.pendingSelectedStrokeRecolorChanges)==null?void 0:t.filter(o=>!V(o.previousColor,o.nextColor)))!=null?n:[];this.pendingSelectedStrokeRecolorChanges=null,e.length>0&&(this.pushHistory({type:"recolor-strokes",changes:e}),this.scheduleSave()),this.commitPendingSelectedStrokeStyleChanges()}commitPendingSelectedStrokeStyleChanges(){var t,n;let e=(n=(t=this.pendingSelectedStrokeStyleChanges)==null?void 0:t.filter(o=>!be(o.previousStyle,o.nextStyle)))!=null?n:[];this.pendingSelectedStrokeStyleChanges=null,e.length!==0&&(this.pushHistory({type:"restyle-strokes",changes:e}),this.scheduleSave())}createColorPaletteHeaderEl(){var a,l;let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-color-palette-header");let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-color-palette-title"),t.textContent="Colors";let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-current-color"),n.setAttribute("aria-label","Current stroke color");let o=activeDocument.createElement("span");o.classList.add("draw-in-canvas-current-color-preview"),o.setCssProps({"--draw-in-canvas-current-color":this.settings.strokeColor});let i=activeDocument.createElement("input");i.classList.add("draw-in-canvas-current-color-label"),i.type="text",i.inputMode="text",i.maxLength=7,i.pattern="#?[0-9A-Fa-f]{6}",i.spellcheck=!1,i.readOnly=!0,i.value=(l=(a=E(this.settings.strokeColor))==null?void 0:a.toUpperCase())!=null?l:this.settings.strokeColor,i.title="Click to copy; double-click to edit.",i.setAttribute("aria-label","Current hex stroke color. Click to copy; double-click or press enter to edit."),W(i,!0),this.colorPaletteDisposers.push(this.addListener(i,"pointerdown",this.handleCurrentColorHexPointerDown),this.addListener(i,"click",this.handleCurrentColorHexClick),this.addListener(i,"dblclick",this.handleCurrentColorHexDoubleClick),this.addListener(i,"focus",this.handleCurrentColorHexFocus),this.addListener(i,"input",this.handleCurrentColorHexInput),this.addListener(i,"change",this.handleCurrentColorHexChange),this.addListener(i,"blur",this.handleCurrentColorHexChange),this.addListener(i,"keydown",this.handleCurrentColorHexKeyDown));let s=activeDocument.createElement("div");return s.classList.add("draw-in-canvas-current-color-values"),s.append(i,this.createColorValueInputEl()),n.append(o,s),e.append(t,n),e}createColorValueInputEl(){let e=fs(this.colorValueMode),t=activeDocument.createElement("input");return t.classList.add("draw-in-canvas-hsl-value-input","draw-in-canvas-current-color-value-input"),t.type="text",t.inputMode="text",t.maxLength=e.maxLength,t.placeholder=e.placeholder,t.spellcheck=!1,t.readOnly=!0,t.value=this.getColorValueInputText(),t.title="Click to copy; double-click to edit.",t.setAttribute("aria-label",e.ariaLabel),we(t,!0),this.colorPaletteDisposers.push(this.addListener(t,"pointerdown",this.handleCurrentColorHslPointerDown),this.addListener(t,"click",this.handleCurrentColorHslClick),this.addListener(t,"dblclick",this.handleCurrentColorHslDoubleClick),this.addListener(t,"focus",this.handleCurrentColorHslFocus),this.addListener(t,"input",this.handleCurrentColorHslInput),this.addListener(t,"change",this.handleCurrentColorHslChange),this.addListener(t,"blur",this.handleCurrentColorHslChange),this.addListener(t,"keydown",this.handleCurrentColorHslKeyDown)),t}createColorDiscPanelEl(e){let t=activeDocument.createElement("div");t.id=e,t.classList.add("draw-in-canvas-color-palette-panel","draw-in-canvas-color-disc-panel"),t.dataset.colorPalettePanel="disc",t.setAttribute("role","tabpanel");let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-color-disc-picker"),n.setAttribute("aria-label","Color disc");let o=activeDocument.createElement("div");o.classList.add("draw-in-canvas-color-wheel-hue-control"),o.dataset.colorWheelControl="hue",o.tabIndex=0,o.setAttribute("role","slider"),o.setAttribute("aria-label","Stroke color hue"),o.setAttribute("aria-valuemin","0"),o.setAttribute("aria-valuemax","360");let i=activeDocument.createElement("span");i.classList.add("draw-in-canvas-color-wheel-thumb","draw-in-canvas-color-wheel-hue-thumb"),i.setAttribute("aria-hidden","true"),o.appendChild(i);let s=activeDocument.createElement("div");s.classList.add("draw-in-canvas-color-wheel-disc-field"),s.dataset.colorWheelControl="disc",s.tabIndex=0,s.setAttribute("role","slider"),s.setAttribute("aria-label","Stroke color saturation and brightness"),s.setAttribute("aria-valuemin","0"),s.setAttribute("aria-valuemax","100");let a=activeDocument.createElement("span");a.classList.add("draw-in-canvas-color-wheel-thumb","draw-in-canvas-color-wheel-disc-thumb"),a.setAttribute("aria-hidden","true"),s.appendChild(a);for(let l of[o,s])this.colorPaletteDisposers.push(this.addListener(l,"pointerdown",this.handleColorWheelPointerDown),this.addListener(l,"pointermove",this.handleColorWheelPointerMove),this.addListener(l,"pointerup",this.handleColorWheelPointerUp),this.addListener(l,"pointercancel",this.handleColorWheelPointerUp),this.addListener(l,"keydown",this.handleColorWheelKeyDown));return n.append(o,s),t.append(n,this.createCustomColorShadesEl("Selected color shades"),this.createHslSliderControlsEl(),this.createColorHistorySectionEl(),this.createColorDiscPaletteEl()),t}createHslSliderControlsEl(){let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-color-disc-palette","draw-in-canvas-hsl-controls");let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-hsl-header");let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-color-mode-segmented"),n.setAttribute("role","group"),n.setAttribute("aria-label","Color model");for(let i of Vs){let s=activeDocument.createElement("button"),a=i.id===this.colorValueMode;s.classList.add("draw-in-canvas-color-mode-button"),s.type="button",s.dataset.colorValueMode=i.id,s.textContent=i.label,s.title=`Show ${i.label} color controls`,s.setAttribute("aria-pressed",a.toString()),s.classList.toggle("is-active",a),n.appendChild(s),this.colorPaletteDisposers.push(this.addListener(s,"click",this.handleColorValueModeClick))}t.appendChild(n);let o=activeDocument.createElement("div");o.classList.add("draw-in-canvas-hsl-slider-list");for(let i of Yn(this.colorValueMode))o.appendChild(this.createHslSliderControlEl(i));return e.append(t,o),e}createHslSliderControlEl(e){let t=w(),n=this.getColorValueSliderValue(e.id),o=activeDocument.createElement("input");o.id=t,o.classList.add("draw-in-canvas-stroke-width-slider","draw-in-canvas-hsl-slider"),o.type="range",o.min=e.min.toString(),o.max=e.max.toString(),o.step=e.step.toString(),o.value=n.toString(),o.dataset.colorValueSlider=e.id,o.setAttribute("aria-label",e.ariaLabel),o.setAttribute("aria-valuetext",ys(this.colorValueMode,e.id,n)),o.setCssProps(this.getColorValueSliderCssProps(e.id)),this.colorPaletteDisposers.push(this.addListener(o,"pointerdown",this.handleHslSliderPointerDown),this.addListener(o,"keydown",this.handleStrokeWidthSliderKeyDown),this.addListener(o,"input",this.handleHslSliderInput),this.addListener(o,"change",this.handleHslSliderChange));let i=ht(t,e.label,"draw-in-canvas-stroke-width-value",qn(this.colorValueMode,e.id,n),o),s=i.querySelector("output");return i.classList.add("draw-in-canvas-hsl-slider-control"),s==null||s.classList.add("draw-in-canvas-hsl-slider-value"),s==null||s.setAttribute("data-color-value-value",e.id),i}createColorHistorySectionEl(){let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-color-disc-palette","draw-in-canvas-color-history");let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-color-disc-palette-title"),t.textContent="History";let n=activeDocument.createElement("div");return n.classList.add("draw-in-canvas-color-disc-palette-swatches","draw-in-canvas-color-history-swatches"),this.colorPaletteDisposers.push(this.addListener(n,"pointerdown",this.handleHistoryColorSwatchPointerDown),this.addListener(n,"click",this.handleHistoryColorSwatchClick)),this.populateColorHistorySwatches(n),e.append(t,n),e}createColorDiscPaletteEl(){let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-color-disc-palette");let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-color-disc-palette-title"),t.textContent="Palette";let n=activeDocument.createElement("div");n.classList.add("draw-in-canvas-color-disc-palette-swatches"),n.setAttribute("aria-label","Preset stroke colors");for(let o of ds){let i=activeDocument.createElement("button");i.type="button",i.classList.add("draw-in-canvas-color-disc-palette-swatch","draw-in-canvas-preset-color-swatch"),i.dataset.color=o.value,i.setAttribute("aria-label",`Use ${o.name.toLowerCase()} stroke color`),i.setCssProps({"--draw-in-canvas-swatch-color":o.value}),this.colorPaletteDisposers.push(this.addListener(i,"pointerdown",this.handleColorSwatchPointerDown),this.addListener(i,"click",this.handlePresetColorSwatchClick)),n.appendChild(i)}return e.append(t,n),e}createPresetPalettePanelEl(e,t){let n=activeDocument.createElement("div");n.id=e,n.classList.add("draw-in-canvas-color-palette-panel","draw-in-canvas-presets-panel"),n.dataset.colorPalettePanel="palettes",n.setAttribute("role","tabpanel");let o=activeDocument.createElement("div");o.classList.add("draw-in-canvas-color-palette-swatch-grid"),o.setAttribute("aria-label","Preset stroke colors");for(let i of ds){let s=activeDocument.createElement("button");s.type="button",s.classList.add("draw-in-canvas-color-swatch","draw-in-canvas-preset-color-swatch"),s.dataset.color=i.value,s.setAttribute("aria-label",`Use ${i.name.toLowerCase()} stroke color`),s.setCssProps({"--draw-in-canvas-swatch-color":i.value}),this.colorPaletteDisposers.push(this.addListener(s,"pointerdown",this.handleColorSwatchPointerDown),this.addListener(s,"click",this.handlePresetColorSwatchClick)),o.appendChild(s),t.push(s)}return n.append(o,this.createNativeColorPickerEl(),this.createCustomColorControlEl()),n}createColorPaletteTabsEl(e){let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-color-palette-tabs"),t.setAttribute("role","tablist"),t.setAttribute("aria-label","Color picker views");for(let n of U){let o=activeDocument.createElement("button");o.type="button",o.classList.add("draw-in-canvas-color-palette-tab"),o.dataset.colorPaletteTab=n.id,o.setAttribute("role","tab"),o.setAttribute("aria-controls",e[n.id]),o.textContent=n.label,this.colorPaletteDisposers.push(this.addListener(o,"click",this.handleColorPaletteTabClick),this.addListener(o,"keydown",this.handleColorPaletteTabKeyDown)),t.appendChild(o)}return t}createNativeColorPickerEl(){let e=activeDocument.createElement("label");e.classList.add("draw-in-canvas-color-swatch","draw-in-canvas-color-picker-swatch"),e.setAttribute("title","Choose custom color"),e.setCssProps({"--draw-in-canvas-swatch-color":this.customColorHex});let t=activeDocument.createElement("input");t.classList.add("draw-in-canvas-native-color-picker"),t.type="color",t.value=this.customColorHex,t.setAttribute("aria-label","Choose custom stroke color");let n=activeDocument.createElement("span");n.classList.add("draw-in-canvas-color-picker-icon"),(0,I.setIcon)(n,"palette");let o=activeDocument.createElement("span");return o.classList.add("draw-in-canvas-visually-hidden"),o.textContent="Choose custom stroke color",this.colorPaletteDisposers.push(this.addListener(t,"input",this.handleNativeColorPickerInput),this.addListener(t,"change",this.handleNativeColorPickerInput)),e.append(t,n,o),e}createCustomColorShadesEl(e){let t=activeDocument.createElement("div");t.classList.add("draw-in-canvas-custom-color-shades"),t.setAttribute("aria-label",e);for(let n=0;n({...n,width:t}))}setSelectedStrokeHardness(e){let t=x(e);this.updateSelectedStrokeStyles(n=>({...n,hardness:t}))}setSelectedStrokeOpacity(e){let t=f(e);this.updateSelectedStrokeStyles(n=>({...n,opacity:t}))}setSelectedStrokeFreehandSliderValue(e,t){let n=k(e,t);this.updateSelectedStrokeStyles(o=>({...o,handwriting:Ed(o.handwriting,e,n)}))}resetSelectedStrokeFreehandSliderValues(){this.updateSelectedStrokeStyles(e=>({...e,handwriting:kd(e.handwriting.enabled)}))}setSelectedStrokeBeautifulStrokes(e){this.updateSelectedStrokeStyles(t=>({...t,handwriting:{...t.handwriting,enabled:e}}))}updateSelectedStrokeStyles(e){var i;let t=this.getSelectedStrokeIds();if(t.length===0){this.closeStrokeSettingsPalette();return}let n=new Map;for(let s of(i=this.pendingSelectedStrokeStyleChanges)!=null?i:[])n.set(s.strokeId,{strokeId:s.strokeId,previousStyle:q(s.previousStyle),nextStyle:q(s.nextStyle)});let o=!1;for(let s of t){let a=this.findStroke(s);if(!a)continue;let l=at(a),c=q(e(l)),d=n.get(s),u=d?q(d.previousStyle):l;be(l,c)||(be(u,c)?n.delete(s):n.set(s,{strokeId:s,previousStyle:u,nextStyle:q(c)}),this.applyStrokeStyle(a,c)&&(o=!0))}this.pendingSelectedStrokeStyleChanges=Array.from(n.values()).filter(s=>!be(s.previousStyle,s.nextStyle)),!(!o&&this.pendingSelectedStrokeStyleChanges.length===0)&&(this.syncStrokeSettingsPaletteControls(),this.syncBrushControls(),this.renderSelectionBox(),this.positionStrokeSettingsPalette(),this.scheduleSave())}applyStrokeStyle(e,t){var a;let n=q(t);if(be(at(e),n))return!1;let o=(a=this.strokeBoundsById.get(e.id))!=null?a:this.setStrokeBounds(e),i=e.width;this.strokePathCache.invalidateStroke(e.id),si(e,n);let s=this.setStrokeBounds(e);return s?this.strokeSpatialIndex.updateBounds(e.id,A(s,e.width)):this.strokeSpatialIndex.remove(e.id),this.invalidateRasterTilesForStrokeGeometries([{bounds:o,strokeWidth:i},{bounds:s,strokeWidth:e.width}]),this.updateStrokeElement(e),!0}openBrushPreview(e,t,n){this.closeBrushPreview(),this.brushPreviewState={pointerId:e.pointerId,triggerEl:t,setting:n,x:e.clientX,y:e.clientY},Ge(t,e.pointerId),this.brushPreviewDisposers.push(this.addListener(activeDocument,"pointermove",this.handleBrushPreviewPointerMove,!0),this.addListener(activeDocument,"pointerup",this.handleBrushPreviewPointerUp,!0),this.addListener(activeDocument,"pointercancel",this.handleBrushPreviewPointerUp,!0),this.addListener(window,"blur",this.handleBrushPreviewWindowBlur)),this.positionBrushPreview(e.clientX,e.clientY),this.updateBrushPreview(n)}closeBrushPreview(){var t;for(let n of this.brushPreviewDisposers.splice(0))n();let e=this.brushPreviewState;e!=null&&e.triggerEl.hasPointerCapture(e.pointerId)&&e.triggerEl.releasePointerCapture(e.pointerId),(t=this.brushPreviewEl)==null||t.remove(),this.brushPreviewEl=null,this.brushPreviewState=null}positionBrushPreview(e,t){let n=this.ensureBrushPreviewEl(),o=this.brushPreviewState;o&&(o.x=e,o.y=t);let i=n.getBoundingClientRect(),s=8,a=18,l=i.width||96,c=i.height||56,d=Math.max(s,Math.min(e+a,window.innerWidth-l-s)),u=Math.max(s,Math.min(t-c/2,window.innerHeight-c-s));n.setCssStyles({left:`${d}px`,top:`${u}px`})}updateBrushPreview(e=(n=>(n=(t=>(t=this.brushPreviewState)==null?void 0:t.setting)())!=null?n:"size")()){let o=this.brushPreviewState;if(!o)return;let i=this.getBrushControlsTarget(),s=this.getBrushControlsStyle(),a=y(s.width),l=f(s.opacity),c=this.ensureBrushPreviewEl(),d=c.querySelector(".draw-in-canvas-brush-preview-value"),u=c.querySelector(".draw-in-canvas-brush-preview-detail");c.dataset.brushPreviewSetting=e,c.setCssProps({"--draw-in-canvas-brush-preview-size":`${Math.max(4,a)}px`,"--draw-in-canvas-brush-preview-color":this.getStrokeColorForTarget(i),"--draw-in-canvas-brush-preview-opacity":Ye(l)}),d&&(d.textContent=e==="opacity"?Ue(l):We(a)),u&&(u.textContent=e==="opacity"?`${We(a)} ${i==="selection"?"stroke":"brush"}`:`${Ue(l)} opacity`),this.positionBrushPreview(o.x,o.y)}ensureBrushPreviewEl(){var a;if((a=this.brushPreviewEl)!=null&&a.isConnected)return this.brushPreviewEl;let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-brush-preview"),e.setAttribute("aria-hidden","true");let t=activeDocument.createElement("span");t.classList.add("draw-in-canvas-brush-preview-sample");let n=activeDocument.createElement("span");n.classList.add("draw-in-canvas-brush-preview-dot"),t.appendChild(n);let o=activeDocument.createElement("span");o.classList.add("draw-in-canvas-brush-preview-text");let i=activeDocument.createElement("span");i.classList.add("draw-in-canvas-brush-preview-value");let s=activeDocument.createElement("span");return s.classList.add("draw-in-canvas-brush-preview-detail"),o.append(i,s),e.append(t,o),activeDocument.body.appendChild(e),this.brushPreviewEl=e,e}clearToolbarPressState(){var t;let e=this.toolbarPressState;e&&(window.clearTimeout(e.timeoutId),(t=this.toolbarButtonEl)!=null&&t.hasPointerCapture(e.pointerId)&&this.toolbarButtonEl.releasePointerCapture(e.pointerId),this.toolbarPressState=null)}syncCanvasHistoryButtonListeners(e){let t=gs(e,"Undo"),n=gs(e,"Redo");if(this.undoButtonEl===t&&this.redoButtonEl===n){this.syncCanvasUndoRedoButtons();return}this.removeCanvasHistoryButtonListeners(),this.undoButtonEl=t,this.redoButtonEl=n,t&&this.canvasHistoryButtonDisposers.push(this.addListener(t,"pointerdown",this.handleCanvasUndoPointerDown),this.addListener(t,"click",this.handleCanvasUndoClick),this.addListener(t,"keydown",this.handleCanvasUndoKeyDown)),n&&this.canvasHistoryButtonDisposers.push(this.addListener(n,"pointerdown",this.handleCanvasRedoPointerDown),this.addListener(n,"click",this.handleCanvasRedoClick),this.addListener(n,"keydown",this.handleCanvasRedoKeyDown)),this.syncCanvasUndoRedoButtons()}removeCanvasHistoryButtonListeners(){for(let e of this.canvasHistoryButtonDisposers.splice(0))e();this.undoButtonEl=null,this.suppressNextNativeUndoClick=!1,this.suppressNextNativeRedoClick=!1,this.redoButtonEl=null}syncCanvasUndoRedoButtons(){var e,t;(e=this.undoButtonEl)==null||e.classList.toggle("draw-in-canvas-can-undo",this.undoStack.length>0),(t=this.redoButtonEl)==null||t.classList.toggle("draw-in-canvas-can-redo",this.redoStack.length>0)}syncStrokeInteractionListeners(){let e=this.findCanvasWrapperEl();if(this.strokeInteractionEl!==e&&(this.removeStrokeInteractionListeners(),this.strokeInteractionEl=e,this.strokeInteractionDisposers.push(this.addListener(e,"pointerdown",this.handleStrokePointerDown,!0),this.addListener(e,"pointermove",this.handleStrokePointerMove,!0),this.addListener(e,"pointerup",this.handleStrokePointerUp,!0),this.addListener(e,"pointercancel",this.handleStrokePointerUp,!0),this.addListener(e,"pointerleave",this.handleStrokePointerLeave,!0),this.addListener(window,"keydown",this.handleWindowKeyDown,!0),this.addListener(activeDocument,"keydown",this.handleDocumentKeyDown,!0),this.addListener(activeDocument,"keyup",this.handleDocumentKeyUp,!0),this.addListener(window,"blur",this.handleWindowBlur),this.addListener(window,"resize",this.handleWindowResize)),typeof ResizeObserver!="undefined")){let t=new ResizeObserver(()=>this.handleWindowResize());t.observe(e),this.strokeInteractionDisposers.push(()=>t.disconnect())}}removeStrokeInteractionListeners(){this.setInteractionCursor(null);for(let e of this.strokeInteractionDisposers.splice(0))e();this.isSpaceKeyPressed=!1,this.strokeInteractionEl=null}observeCanvasDom(){this.mutationObserver=new MutationObserver(e=>this.scheduleCanvasDomSync(ni(e))),this.syncCanvasDomObserver()}syncCanvasDomObserver(){if(!this.mutationObserver)return;let e=this.settings.allowTinyCanvasElements;this.isObservingCanvasAttributes!==e&&(this.mutationObserver.disconnect(),this.mutationObserver.observe(this.target.containerEl,e?{attributes:!0,attributeFilter:["class","style"],attributeOldValue:!0,childList:!0,subtree:!0}:{childList:!0,subtree:!0}),this.isObservingCanvasAttributes=e)}scheduleCanvasDomSync(e=K){this.pendingDomSyncFlags=this.pendingDomSyncFlags?st(this.pendingDomSyncFlags,e):e,this.domSyncFrameId===null&&(this.domSyncFrameId=window.requestAnimationFrame(()=>{var o;let t=(o=this.pendingDomSyncFlags)!=null?o:K;this.pendingDomSyncFlags=null,this.domSyncFrameId=null,this.mountRenderLayer(),this.injectToolbarButton();let n=this.syncTinyCanvasFeaturesForDomChange(t);this.selectedStrokeIds.size>0&&!this.dragState&&!this.resizeState&&!this.nativeSelectionDragState&&(n?this.renderSelectionBox():this.syncSelectedStrokeScaleMenuPosition()),this.syncBrushControlsMountState()}))}syncTinyCanvasFeatureState(){let e=this.syncTinyControlScale();return this.nativeCanvasLimits.setEnabled(this.settings.allowTinyCanvasElements),this.nativeElementScaleControls.setEnabled(this.settings.allowTinyCanvasElements),e}syncTinyCanvasFeaturesForDomChange(e){if(this.settings.allowTinyCanvasElements){let t=e.syncTinyCanvasControls?this.syncTinyControlScale():!1;return this.nativeCanvasLimits.setEnabled(!0),e.syncNativeElementControls&&this.nativeElementScaleControls.syncForCanvasDomChange(),t}return e.syncNativeElementControls&&this.nativeElementScaleControls.syncForCanvasDomChange(),!1}renderStrokes(){this.svgEl&&(this.renderVisibleStrokeElements(),this.renderSelectionBox())}syncRenderViewportObserver(e){this.renderViewportObservedEl!==e&&(this.disconnectRenderViewportObserver(),this.renderViewportObserver=new MutationObserver(()=>this.scheduleRenderViewportSync()),this.renderViewportObserver.observe(e,{attributes:!0,attributeFilter:["style"]}),this.renderViewportObservedEl=e)}disconnectRenderViewportObserver(){var e;(e=this.renderViewportObserver)==null||e.disconnect(),this.renderViewportObserver=null,this.renderViewportObservedEl=null}scheduleRenderViewportSync(){this.renderViewportFrameId===null&&(this.renderViewportFrameId=window.requestAnimationFrame(()=>{this.renderViewportFrameId=null,this.syncVisibleStrokeElements(),this.selectedStrokeIds.size>0&&!this.dragState&&!this.resizeState&&!this.nativeSelectionDragState&&this.renderSelectionBox()}))}renderVisibleStrokeElements(){if(!this.svgEl)return;let e=this.getTiledRasterRenderRequest();if(e){this.renderTiledRasterStrokeElements(e);return}this.renderVisibleStrokeIds(this.getVisibleStrokeIds())}renderVisibleStrokeIds(e){if(!this.svgEl)return;this.clearRenderedStrokeElements();let t=this.createStrokeRenderFragment(e);this.svgEl.insertBefore(t.fragment,this.getStrokeRenderAnchor()),this.renderedStrokeIds=[...e],this.renderedSelectedStrokeIds=this.getVisibleSelectedStrokeIds(e),this.renderedRasterViewportKey=t.rasterViewportKey}renderTiledRasterStrokeElements(e){this.svgEl&&(this.clearRenderedStrokeElements(),this.svgEl.insertBefore(this.createStrokeTiledRasterRenderFragment(e),this.getStrokeRenderAnchor()),this.renderedStrokeIds=[],this.renderedSelectedStrokeIds=[],this.renderedRasterViewportKey=e.rasterViewportKey)}syncVisibleStrokeElements(){if(!this.svgEl)return;let e=this.getTiledRasterRenderRequest();if(e){this.areRenderedTiledRasterElementsCurrent(e)||this.renderTiledRasterStrokeElements(e);return}let t=this.getVisibleStrokeIds();this.areRenderedStrokeIdsCurrent(t)||this.renderVisibleStrokeIds(t)}areRenderedTiledRasterElementsCurrent(e){return this.strokeRasterTileEls.length===e.entries.length&&this.strokeRasterTileEls.length>0&&this.strokeGroupById.size===0&&this.strokeBatchEls.length===0&&this.strokeRasterEls.length===0&&this.strokeRasterTileEls.every(t=>t.isConnected)&&this.renderedRasterViewportKey===e.rasterViewportKey}areRenderedStrokeIdsCurrent(e){let t=this.getVisibleSelectedStrokeIds(e),n=this.getCurrentRasterViewportKey();return ot(this.renderedStrokeIds,e)&&ot(this.renderedSelectedStrokeIds,t)&&t.every(o=>!!this.findStrokeGroupEl(o))&&this.strokeBatchEls.every(o=>o.isConnected)&&this.strokeRasterEls.every(o=>o.isConnected)&&this.strokeRasterTileEls.every(o=>o.isConnected)&&this.renderedRasterViewportKey===n}getVisibleSelectedStrokeIds(e){return e.filter(t=>this.selectedStrokeIds.has(t))}getCurrentRasterViewportKey(){let e=this.getRenderViewportBounds();return this.strokeRasterTileEls.length>0?this.getTiledRasterViewportKey(e):this.strokeRasterEls.length>0?this.getRasterViewportKey(e):""}clearRenderedStrokeElements(){this.cancelPendingRasterRenders();for(let e of this.strokeGroupById.values())e.remove();this.strokeGroupById.clear();for(let e of this.strokeBatchEls.splice(0))e.remove();for(let e of this.strokeRasterEls.splice(0))e.remove();for(let e of this.strokeRasterTileEls.splice(0))e.remove();this.renderedStrokeIds=[],this.renderedSelectedStrokeIds=[],this.renderedRasterViewportKey=""}cancelPendingRasterRenders(){this.rasterRenderGeneration++;for(let e of this.rasterRenderFrameIds)window.cancelAnimationFrame(e);this.rasterRenderFrameIds.clear()}requestRasterRenderFrame(e){let t=window.requestAnimationFrame(n=>{this.rasterRenderFrameIds.delete(t),e(n)});this.rasterRenderFrameIds.add(t)}cancelPendingRasterTileRenders(){this.rasterTileRenderGeneration++,this.rasterTileSetupFrameId!==null&&(window.cancelAnimationFrame(this.rasterTileSetupFrameId),this.rasterTileSetupFrameId=null),this.rasterTileRenderFrameId!==null&&(window.cancelAnimationFrame(this.rasterTileRenderFrameId),this.rasterTileRenderFrameId=null);for(let e of this.rasterTileSetupJobs.splice(0))this.cancelRasterTileSetupJob(e);for(let e of this.rasterTileRenderJobs.splice(0))e.context&&this.resetRasterCanvasContext(e.context),e.record.isRendering=!1}clearRasterTileCache(){this.cancelPendingRasterTileRenders();for(let e of this.rasterTileCache.values())e.foreignObjectEl.remove();this.rasterTileCache.clear(),this.strokeRasterTileEls.length=0}invalidateRasterTilesForStroke(e){this.invalidateRasterTilesForStrokeGeometries([{bounds:this.getStrokeBounds(e),strokeWidth:e.width}])}invalidateRasterTilesForStrokeGeometries(e){if(this.rasterTileCache.size===0)return;let t=e.map(n=>n.bounds?A(n.bounds,n.strokeWidth):null).filter(Xe);if(t.length!==0){if(this.hasPendingRasterTileWork()){this.clearRasterTileCache();return}for(let[n,o]of Array.from(this.rasterTileCache.entries()))Xi(o.bounds,t)&&(o.foreignObjectEl.remove(),this.rasterTileCache.delete(n),ku(this.strokeRasterTileEls,o.foreignObjectEl))}}hasPendingRasterTileWork(){return this.rasterTileSetupJobs.length>0||this.rasterTileRenderJobs.length>0||this.rasterTileSetupFrameId!==null||this.rasterTileRenderFrameId!==null}scheduleRasterTileSetupQueue(){this.rasterTileSetupFrameId!==null||this.rasterTileSetupJobs.length===0||(this.rasterTileSetupFrameId=window.requestAnimationFrame(()=>this.processRasterTileSetupQueue()))}processRasterTileSetupQueue(){this.rasterTileSetupFrameId=null;let e=performance.now(),t=0;for(;this.rasterTileSetupJobs.length>0;){let n=this.rasterTileSetupJobs[0];if(!n)break;if(n.renderGeneration!==this.rasterTileRenderGeneration){this.cancelRasterTileSetupJob(n),this.rasterTileSetupJobs.shift();continue}for(;n.strokeIndex=64&&(t=0,performance.now()-e>=7.5)){this.scheduleRasterTileSetupQueue();return}}this.finishRasterTileSetupJob(n),this.rasterTileSetupJobs.shift()}this.scheduleRasterTileSetupQueue()}addStrokeToRasterTileSetupJob(e,t){var s;if(t.id===((s=this.activeStroke)==null?void 0:s.id))return;let n=this.getStrokeBounds(t);if(!n)return;let o=A(n,t.width);if(!zn(e.rasterBounds,o)||!ze(o,e.screenScale,!1))return;let i=wn(o,e.tileWorldSize);for(let a=Math.max(i.minTileY,e.range.minTileY);a<=Math.min(i.maxTileY,e.range.maxTileY);a++){let l=(a-e.range.minTileY)*e.columnCount;for(let c=Math.max(i.minTileX,e.range.minTileX);c<=Math.min(i.maxTileX,e.range.maxTileX);c++){let d=l+c-e.range.minTileX,u=e.entries[d],h=e.records[d];(u==null?void 0:u.tileX)===c&&u.tileY===a&&(h==null?void 0:h.setupGeneration)===e.renderGeneration&&h.isSettingUp&&!h.isSetupComplete&&zn(o,u.bounds)&&h.strokeIds.push(t.id)}}}finishRasterTileSetupJob(e){for(let t of new Set(e.records))if(t.setupGeneration===e.renderGeneration){if(t.isSettingUp=!1,t.setupGeneration=null,e.renderGeneration!==this.rasterTileRenderGeneration||this.rasterTileCache.get(t.key)!==t){t.strokeIds=[],t.strokeCount=0,t.foreignObjectEl.dataset.strokeCount="0";continue}t.isSetupComplete=!0,t.strokeCount=t.strokeIds.length,t.foreignObjectEl.dataset.strokeCount=t.strokeCount.toString(),t.isRendered=t.strokeIds.length===0,this.enqueueRasterTileRender(t)}}cancelRasterTileSetupJob(e){for(let t of new Set(e.records))t.setupGeneration===e.renderGeneration&&(t.isSettingUp=!1,t.setupGeneration=null,t.isSetupComplete||(t.strokeIds=[],t.strokeCount=0,t.foreignObjectEl.dataset.strokeCount="0",t.isRendered=!1))}scheduleRasterTileRenderQueue(){this.rasterTileRenderFrameId!==null||this.rasterTileRenderJobs.length===0||(this.rasterTileRenderFrameId=window.requestAnimationFrame(()=>this.processRasterTileRenderQueue()))}processRasterTileRenderQueue(){this.rasterTileRenderFrameId=null;let e=performance.now(),t=0;for(;this.rasterTileRenderJobs.length>0;){let n=this.rasterTileRenderJobs[0];if(!n)break;if(n.renderGeneration!==this.rasterTileRenderGeneration){this.finishRasterTileRenderJob(n),this.rasterTileRenderJobs.shift();continue}if(!n.context&&(n.context=this.prepareRasterCanvasContext(n.record.canvasEl,n.record.bounds,n.rasterScale),!n.context)){n.record.isRendering=!1,this.rasterTileRenderJobs.shift();continue}for(;n.strokeIndex=bn&&(t=0,performance.now()-e>=kn)){this.scheduleRasterTileRenderQueue();return}}this.finishRasterTileRenderJob(n),this.rasterTileRenderJobs.shift()}this.scheduleRasterTileRenderQueue()}finishRasterTileRenderJob(e){e.context&&(this.resetRasterCanvasContext(e.context),e.context=null),e.record.isRendering=!1,e.record.isRendered=e.renderGeneration===this.rasterTileRenderGeneration}getVisibleStrokeIds(){var i;let e=this.getRenderViewportBounds();if(!e)return this.drawingData.strokes.map(s=>s.id).filter(s=>{var a;return s!==((a=this.activeStroke)==null?void 0:a.id)});let t=ct(e),n=[],o=this.getCanvasScreenScale();for(let s of this.strokeSpatialIndex.queryBounds(t,"ascending")){if(s===((i=this.activeStroke)==null?void 0:i.id))continue;let a=this.findStroke(s),l=a?this.getStrokeBounds(a):null;!a||!l||ze(A(l,a.width),o,this.selectedStrokeIds.has(s))&&n.push(s)}return n}shouldRenderStroke(e){var i;if(e.id===((i=this.activeStroke)==null?void 0:i.id))return!1;let t=this.getRenderViewportBounds();if(!t)return!0;let n=this.getStrokeBounds(e);if(!n)return!1;let o=A(n,e.width);return ze(o,this.getCanvasScreenScale(),this.selectedStrokeIds.has(e.id))?Mi([e.id],ct(t),()=>o).length>0:!1}getRenderViewportBounds(){var n;let e=this.target.view.canvas,t=(n=e==null?void 0:e.getViewportBBox)==null?void 0:n.call(e);return t&&Mu(t)?t:this.getSvgScreenViewportBounds()}getSvgScreenViewportBounds(){if(!this.svgEl)return null;let e=this.svgEl.getScreenCTM();if(!e)return null;let t=this.svgEl.getBoundingClientRect(),n=e.inverse(),o=this.svgEl.createSVGPoint(),i=[{x:t.left,y:t.top},{x:t.right,y:t.top},{x:t.left,y:t.bottom},{x:t.right,y:t.bottom}].map(s=>(o.x=s.x,o.y=s.y,o.matrixTransform(n)));return{minX:Math.min(...i.map(s=>s.x)),minY:Math.min(...i.map(s=>s.y)),maxX:Math.max(...i.map(s=>s.x)),maxY:Math.max(...i.map(s=>s.y))}}getStrokeRenderAnchor(){var e,t,n;return(e=this.activeStrokeGroupEl)!=null&&e.isConnected?this.activeStrokeGroupEl:(t=this.selectionBoxEl)!=null&&t.isConnected?this.selectionBoxEl:(n=this.selectionHandleEls.find(o=>o.isConnected))!=null?n:null}getTiledRasterRenderRequest(){let e=this.getRenderViewportBounds();if(!e||this.selectedStrokeIds.size>0||!this.hasTiledRasterStrokeCount(e))return null;let t=this.getRasterTileEntriesForViewport(e);return t.length===0?null:{viewportBounds:e,entries:t,rasterViewportKey:this.getTiledRasterViewportKeyForEntries(t)}}hasTiledRasterStrokeCount(e){let t=this.getCanvasScreenScale(),n=Ke(e,t),o=0;return this.strokeSpatialIndex.forEachBounds(n,i=>{var l;if(i===((l=this.activeStroke)==null?void 0:l.id))return;let s=this.findStroke(i),a=s?this.getStrokeBounds(s):null;if(!(!s||!a))return ze(A(a,s.width),t,!1)&&o++,o<=1e4}),Gi(o,!1)}createStrokeRenderFragment(e){let t=this.getRenderViewportBounds(),n=t?this.shouldRasterizeVisibleStrokes(e):!1;if(t&&n)return{fragment:this.createStrokeRasterRenderFragment(e,t),rasterViewportKey:this.getRasterViewportKey(t)};let o=Bi(e.map(i=>{let s=this.findStroke(i);return{id:i,batchKey:s?this.getStrokeRenderBatchKey(s):null,isSelected:this.selectedStrokeIds.has(i)}}));return{fragment:this.createStrokeSvgRenderFragment(o),rasterViewportKey:""}}shouldRasterizeVisibleStrokes(e){let t=0,n=null,o=!1,i=()=>o?(t++,n=null,o=!1,jt(t)):!1;for(let s of e){let a=this.findStroke(s),l=a&&!this.selectedStrokeIds.has(s)?this.getStrokeRenderBatchKey(a):null;if(l===null){if(i()||(t++,jt(t)))return!0;continue}if(n!==null&&n!==l&&i())return!0;n=l,o=!0}return i()||jt(t)}createStrokeSvgRenderFragment(e){let t=activeDocument.createDocumentFragment();for(let n of e){if(n.type==="single"){let s=this.findStroke(n.strokeId);s&&t.appendChild(this.createStrokeGroupEl(s));continue}let o=n.strokeIds.map(s=>this.findStroke(s)).filter(Xe);if(o.length===0)continue;let i=o[0];if(o.length===1&&i){t.appendChild(this.createStrokeGroupEl(i));continue}t.appendChild(this.createStrokeBatchPathEl(o))}return t}createStrokeTiledRasterRenderFragment(e){let t=activeDocument.createDocumentFragment(),n=new Set,o=[],i=[];for(let s of e.entries){let a=this.rasterTileCache.get(s.key);a||(a=this.createRasterTileCacheRecord(s,[],!1),this.rasterTileCache.set(a.key,a)),!a.isSetupComplete&&!a.isSettingUp&&i.push(a),o.push(a),a.lastUsedAt=++this.rasterTileUsageCounter,n.add(a.key),t.appendChild(a.foreignObjectEl),this.strokeRasterTileEls.push(a.foreignObjectEl)}return this.setupRasterTileRecords(e,o,i),this.evictRasterTileCache(n),t}setupRasterTileRecords(e,t,n){if(n.length!==0){if(n.length===e.entries.length){this.enqueueRasterTileSetup(e,t);return}for(let o of n)this.completeRasterTileSetupRecord(o,this.getRasterTileStrokeIds(o.bounds))}}enqueueRasterTileSetup(e,t){let n=e.entries[0];if(!n)return;let o=n.bounds.maxX-n.bounds.minX;if(!Number.isFinite(o)||o<=0)return;let i=Yi(e.entries),s=i.maxTileX-i.minTileX+1;if(!(!Number.isFinite(s)||s<=0)){for(let a of t)a.isSetupComplete||a.isSettingUp||(a.strokeIds=[],a.strokeCount=0,a.foreignObjectEl.dataset.strokeCount="0",a.isRendered=!1,a.isRendering=!1,a.isSettingUp=!0,a.setupGeneration=this.rasterTileRenderGeneration);this.rasterTileSetupJobs.push({entries:[...e.entries],records:[...t],range:i,columnCount:s,tileWorldSize:o,rasterBounds:Ke(e.viewportBounds,this.getCanvasScreenScale()),screenScale:this.getCanvasScreenScale(),strokeIndex:0,renderGeneration:this.rasterTileRenderGeneration}),this.scheduleRasterTileSetupQueue()}}getRasterTileEntriesForViewport(e){let t=this.getCanvasScreenScale(),n=this.getRasterBitmapScale(),o=Wi(t),i=Ke(e,t);return Ui(i,o,n)}getTiledRasterViewportKey(e){return e?this.getTiledRasterViewportKeyForEntries(this.getRasterTileEntriesForViewport(e)):""}getTiledRasterViewportKeyForEntries(e){let t=e[0],n=e[e.length-1];return!t||!n?"":["tiles",t.key,n.key,e.length].join("|")}createRasterTileCacheRecord(e,t,n=!0){let o=activeDocument.createElementNS(G,"foreignObject"),i=activeDocument.createElementNS(ts,"canvas"),s=Math.max(1,e.bounds.maxX-e.bounds.minX),a=Math.max(1,e.bounds.maxY-e.bounds.minY),l=this.getRasterBitmapScale(),c=[...t];return o.classList.add("draw-in-canvas-stroke-raster","draw-in-canvas-stroke-raster-tile"),o.setAttribute("x",v(e.bounds.minX).toString()),o.setAttribute("y",v(e.bounds.minY).toString()),o.setAttribute("width",v(s).toString()),o.setAttribute("height",v(a).toString()),o.setAttribute("pointer-events","none"),o.dataset.tileKey=e.key,o.dataset.strokeCount=c.length.toString(),i.classList.add("draw-in-canvas-stroke-raster-canvas"),i.width=Math.max(1,Math.ceil(s*l)),i.height=Math.max(1,Math.ceil(a*l)),i.setAttribute("aria-hidden","true"),o.appendChild(i),{key:e.key,foreignObjectEl:o,canvasEl:i,bounds:e.bounds,strokeIds:c,strokeCount:c.length,lastUsedAt:++this.rasterTileUsageCounter,isSetupComplete:n,isSettingUp:!1,setupGeneration:null,isRendered:n&&c.length===0,isRendering:!1}}completeRasterTileSetupRecord(e,t){e.strokeIds=[...t],e.strokeCount=e.strokeIds.length,e.foreignObjectEl.dataset.strokeCount=e.strokeCount.toString(),e.isSetupComplete=!0,e.isSettingUp=!1,e.setupGeneration=null,e.isRendered=e.strokeIds.length===0,this.enqueueRasterTileRender(e)}getRasterTileStrokeIds(e){let t=this.getCanvasScreenScale();return this.strokeSpatialIndex.queryBounds(e,"ascending").filter(n=>{var s;if(n===((s=this.activeStroke)==null?void 0:s.id))return!1;let o=this.findStroke(n),i=o?this.getStrokeBounds(o):null;return!!(o&&i&&ze(A(i,o.width),t,!1))})}enqueueRasterTileRender(e){!e.isSetupComplete||e.isRendered||e.isRendering||e.strokeIds.length===0||(e.isRendering=!0,this.rasterTileRenderJobs.push({record:e,strokeIndex:0,currentFilter:"none",rasterScale:this.getRasterBitmapScale(),renderGeneration:this.rasterTileRenderGeneration,context:null}),this.scheduleRasterTileRenderQueue())}evictRasterTileCache(e){if(this.rasterTileCache.size<=512)return;let t=Array.from(this.rasterTileCache.values()).filter(n=>!e.has(n.key)&&!n.isRendering&&!n.isSettingUp).sort((n,o)=>n.lastUsedAt-o.lastUsedAt);for(let n of t){if(this.rasterTileCache.size<=512)break;n.foreignObjectEl.remove(),this.rasterTileCache.delete(n.key)}}createStrokeRasterRenderFragment(e,t){let n=activeDocument.createDocumentFragment(),o=Ke(t,this.getCanvasScreenScale()),i=Vi(e.map(s=>({id:s,isSelected:this.selectedStrokeIds.has(s)})));for(let s of i){if(s.type==="single"){let l=this.findStroke(s.strokeId);l&&n.appendChild(this.createStrokeGroupEl(l));continue}let a=s.strokeIds.map(l=>this.findStroke(l)).filter(Xe);a.length>0&&n.appendChild(this.createStrokeRasterForeignObjectEl(a,o))}return n}getRasterViewportKey(e){if(!e)return"";let t=Ke(e,this.getCanvasScreenScale());return[v(t.minX),v(t.minY),v(t.maxX),v(t.maxY),v(this.getRasterBitmapScale())].join("|")}createStrokeRasterForeignObjectEl(e,t){let n=activeDocument.createElementNS(G,"foreignObject"),o=activeDocument.createElementNS(ts,"canvas"),i=Math.max(1,t.maxX-t.minX),s=Math.max(1,t.maxY-t.minY),a=this.getRasterBitmapScale();n.classList.add("draw-in-canvas-stroke-raster"),n.setAttribute("x",v(t.minX).toString()),n.setAttribute("y",v(t.minY).toString()),n.setAttribute("width",v(i).toString()),n.setAttribute("height",v(s).toString()),n.setAttribute("pointer-events","none"),n.dataset.strokeCount=e.length.toString(),o.classList.add("draw-in-canvas-stroke-raster-canvas"),o.width=Math.max(1,Math.ceil(i*a)),o.height=Math.max(1,Math.ceil(s*a)),o.setAttribute("aria-hidden","true"),n.appendChild(o);let l=this.rasterRenderGeneration;return Oi(e.length)?this.renderStrokesToRasterCanvasChunked(o,t,e,a,l):this.renderStrokesToRasterCanvas(o,t,e,a),this.strokeRasterEls.push(n),n}getRasterBitmapScale(){var n;let e=(n=this.svgEl)==null?void 0:n.getScreenCTM(),t=e?Is(e):1;return Fi(window.devicePixelRatio)*t}renderStrokesToRasterCanvas(e,t,n,o){let i=this.prepareRasterCanvasContext(e,t,o);if(!i)return;let s="none";for(let a of n)s=this.drawStrokeOnPreparedRasterCanvas(i,a,s);this.resetRasterCanvasContext(i)}renderStrokesToRasterCanvasChunked(e,t,n,o,i){let s=this.prepareRasterCanvasContext(e,t,o);if(!s)return;let a=0,l="none",c=()=>{if(i!==this.rasterRenderGeneration){this.resetRasterCanvasContext(s);return}if(a>0&&!e.isConnected){this.resetRasterCanvasContext(s);return}let d=performance.now(),u=0;for(;a=bn&&(u=0,performance.now()-d>=kn)){this.requestRasterRenderFrame(c);return}}this.resetRasterCanvasContext(s)};c()}prepareRasterCanvasContext(e,t,n){let o=e.getContext("2d");return o?(o.setTransform(n,0,0,n,0,0),o.clearRect(0,0,t.maxX-t.minX,t.maxY-t.minY),o.translate(-t.minX,-t.minY),o.lineCap="round",o.lineJoin="round",o.filter="none",o):null}drawStrokeOnPreparedRasterCanvas(e,t,n){let o=Vn(t),i=o>0?`blur(${o}px)`:"none";return i!==n&&(e.filter=i),this.drawStrokeOnRasterCanvas(e,t),i}resetRasterCanvasContext(e){e.setTransform(1,0,0,1,0,0),e.globalAlpha=1,e.filter="none"}drawStrokeOnRasterCanvas(e,t){let n=Pe(t),o=this.shouldUseHandwrittenStrokePath(t,n),i=f(t.opacity)/100;e.globalAlpha=o?i*.96:i,o?this.drawHandwrittenStrokeOnRasterCanvas(e,t,n):this.drawLinearStrokeOnRasterCanvas(e,t)}drawHandwrittenStrokeOnRasterCanvas(e,t,n){if(typeof Path2D=="undefined")return;let o=Qt(t,{kind:"handwritten",settings:this.settings,isComplete:!0,hasPressure:n,isStart:!0,isEnd:!0}),i=this.strokePathCache.getRasterPath(t.id,o,()=>{let s=this.strokePathCache.getPathData(t.id,o,()=>this.createHandwrittenStrokeShapePath(t,!0,n,!0,!0));return s.length>0?new Path2D(s):null});i&&(e.fillStyle=t.color,e.fill(i))}drawLinearStrokeOnRasterCanvas(e,t){let n=t.points[0];if(!(!n||t.points.length<2)){e.strokeStyle=t.color,e.lineWidth=t.width,e.beginPath(),e.moveTo(n.x,n.y);for(let o=1;othis.getStrokeRenderPathData(a,!0)).filter(a=>a.length>0).join(" ");return t.classList.toggle("mod-handwritten",i),t.setAttribute("opacity",Ye(n.opacity)),this.applyStrokeHardness(t,n),t.setAttribute("d",s),i?(t.setAttribute("fill",n.color),t.setAttribute("stroke","none"),t.removeAttribute("stroke-width"),t.removeAttribute("stroke-linecap"),t.removeAttribute("stroke-linejoin")):(t.setAttribute("stroke",n.color),t.setAttribute("stroke-width",n.width.toString()),t.setAttribute("fill","none"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round")),this.strokeBatchEls.push(t),t}getStrokeRenderBatchKey(e){let t=Pe(e);return Hi({kind:this.shouldUseHandwrittenStrokePath(e,t)?"handwritten":"linear",color:e.color,opacity:Ye(e.opacity),blurRadius:Vn(e),width:e.width})}getStrokeRenderPathData(e,t){let n=Pe(e);return this.shouldUseHandwrittenStrokePath(e,n)?this.getHandwrittenStrokeShapePath(e,t,n):this.getStrokeCenterPath(e)}createStrokeGroupEl(e){let t=activeDocument.createElementNS(G,"g");return t.classList.add("draw-in-canvas-stroke-wrapper"),t.classList.toggle("is-selected",this.selectedStrokeIds.has(e.id)),t.dataset.strokeId=e.id,t.appendChild(this.createPathEl(e)),this.strokeGroupById.set(e.id,t),t}createPathEl(e,t=!0){let n=activeDocument.createElementNS(G,"path");return n.classList.add("draw-in-canvas-stroke"),this.updateVisibleStrokePathEl(n,e,t),n}updateVisibleStrokePathEl(e,t,n=!0,o={}){var a;let i=(a=o.hasPressure)!=null?a:Pe(t),s=this.shouldUseHandwrittenStrokePath(t,i);if(e.classList.toggle("mod-handwritten",s),e.setAttribute("pointer-events","none"),e.setAttribute("opacity",Ye(t.opacity)),this.applyStrokeHardness(e,t),s){e.setAttribute("d",this.getHandwrittenStrokeShapePath(t,n,i,o)),e.setAttribute("fill",t.color),e.setAttribute("stroke","none"),e.removeAttribute("stroke-width"),e.removeAttribute("stroke-linecap"),e.removeAttribute("stroke-linejoin");return}e.setAttribute("d",this.getStrokeCenterPath(t,n)),e.setAttribute("stroke",t.color),e.setAttribute("stroke-width",t.width.toString()),e.setAttribute("fill","none"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round")}applyStrokeHardness(e,t){let n=Vn(t);e.classList.toggle("mod-soft-edge",n>0),e.setCssStyles({filter:n>0?`blur(${n}px)`:""})}shouldUseHandwrittenStrokePath(e,t=Pe(e)){return!ne(e,this.settings).enabled&&!t?!1:so(vu(e.points),e.width)}getStrokeCenterPath(e,t=!0){let n=ne(e,this.settings);if(!t)return Mr(e.points,{smooth:n.enabled});let o=Qt(e,{kind:"linear",settings:this.settings});return this.strokePathCache.getPathData(e.id,o,()=>Mr(e.points,{smooth:n.enabled}))}getHandwrittenStrokeShapePath(e,t,n=Pe(e),o={}){var l,c;let i=(l=o.isStart)!=null?l:!0,s=(c=o.isEnd)!=null?c:!0;if(!t||!i||!s)return this.createHandwrittenStrokeShapePath(e,t,n,i,s);let a=Qt(e,{kind:"handwritten",settings:this.settings,isComplete:t,hasPressure:n,isStart:i,isEnd:s});return this.strokePathCache.getPathData(e.id,a,()=>this.createHandwrittenStrokeShapePath(e,t,n,i,s))}createHandwrittenStrokeShapePath(e,t,n,o,i){let s=ne(e,this.settings),a=fn(e.points,{size:e.width,thinning:s.thinning,streamline:s.streamline,smoothing:s.smoothing,simulatePressure:!n,start:{cap:o&&s.taperStart===0,taper:o?s.taperStart:0},end:{cap:i&&s.taperEnd===0,taper:i?s.taperEnd:0},last:t&&i});return Sd(a)}showPenCursorFromEvent(e){if(!this.settings.usePenCursorFallback||!cr(e)||!this.captureEl||this.isSpaceKeyPressed){this.hidePenCursor();return}this.ensurePenCursorEl().classList.add("is-visible"),this.captureEl.classList.add("is-pen-cursor-active"),this.pendingPenCursorPosition={x:e.clientX,y:e.clientY},this.schedulePenCursorUpdate()}updatePenCursorAfterPointerEnd(e){if(cr(e)){if(e.type==="pointercancel"||!this.captureEl||!hu(e,this.captureEl)){this.hidePenCursor();return}this.showPenCursorFromEvent(e)}}ensurePenCursorEl(){var t;if((t=this.penCursorEl)!=null&&t.isConnected)return this.penCursorEl;let e=activeDocument.createElement("div");return e.classList.add("draw-in-canvas-pen-cursor"),e.setAttribute("aria-hidden","true"),activeDocument.body.appendChild(e),this.penCursorEl=e,this.penCursorAppearanceKey="",e}schedulePenCursorUpdate(){this.penCursorFrameId===null&&(this.penCursorFrameId=window.requestAnimationFrame(()=>{this.penCursorFrameId=null,this.updatePenCursorFromPendingPosition()}))}updatePenCursorFromPendingPosition(){!this.penCursorEl||!this.pendingPenCursorPosition||(this.syncPenCursorAppearance(this.penCursorEl),this.penCursorEl.setCssStyles({transform:`translate3d(${this.pendingPenCursorPosition.x}px, ${this.pendingPenCursorPosition.y}px, 0) translate(-50%, -50%)`}))}syncPenCursorAppearance(e){let t=this.settings.strokeColor,n=`${this.getPenCursorDiameter()}px`,o=`${t}|${n}`;o!==this.penCursorAppearanceKey&&(e.setCssProps({"--draw-in-canvas-current-color":t,"--draw-in-canvas-pen-cursor-size":n}),this.penCursorAppearanceKey=o)}hidePenCursor(){var e,t;this.cancelPenCursorUpdate(),this.pendingPenCursorPosition=null,(e=this.penCursorEl)==null||e.classList.remove("is-visible"),(t=this.captureEl)==null||t.classList.remove("is-pen-cursor-active")}removePenCursor(){var e;this.hidePenCursor(),(e=this.penCursorEl)==null||e.remove(),this.penCursorEl=null,this.penCursorAppearanceKey=""}cancelPenCursorUpdate(){this.penCursorFrameId!==null&&(window.cancelAnimationFrame(this.penCursorFrameId),this.penCursorFrameId=null)}getPenCursorDiameter(){let e=y(this.settings.strokeWidth);return Math.round(Math.min(96,Math.max(8,e)))}appendActiveStrokePointerPoints(e){let t=this.activeStroke;if(!t)return!1;let n=this.createCanvasPointMapper();if(!n)return!1;let o=dt(Nc,this.getCanvasScreenScale()),i=!1,s=l=>{let c=n(l),d=t.points[t.points.length-1];!d||de(d,c){this.activeStrokePreviewFrameId=null,this.updateActiveStrokePreview()}))}updateActiveStrokePreview(){if(!this.activeStroke||!this.activeStrokePathEl)return;let e=this.activeStrokeHasPressure;if(this.shouldUseHandwrittenStrokePath(this.activeStroke,e)){this.updateHandwrittenActiveStrokePreview(this.activeStroke,e);return}this.updateLinearActiveStrokePreview(this.activeStroke)}initializeActiveStrokePreviewState(){this.resetActiveStrokePreviewState()}resetActiveStrokePreviewState(){for(let e of this.activeStrokePreviewChunkPathEls.splice(0))e.remove();this.activeStrokePreviewCommittedPointIndex=0}updateLinearActiveStrokePreview(e){if(!this.activeStrokePathEl)return;this.flushLinearActiveStrokePreviewChunks(e);let t=Math.max(0,this.activeStrokePreviewCommittedPointIndex-1),n=or(e,t,e.points.length);this.updateLinearStrokePathEl(this.activeStrokePathEl,n),this.activeStrokePathEl.removeAttribute("opacity")}flushLinearActiveStrokePreviewChunks(e){if(!(!this.activeStrokeGroupEl||!this.activeStrokePathEl))for(;e.points.length-this.activeStrokePreviewCommittedPointIndex>Yc+cs;){let t=this.activeStrokePreviewCommittedPointIndex,n=Math.min(t+cs,e.points.length);if(n-t<2)return;let o=or(e,t,n),i=activeDocument.createElementNS(G,"path");i.classList.add("draw-in-canvas-stroke"),this.updateLinearStrokePathEl(i,o),i.removeAttribute("opacity"),this.activeStrokeGroupEl.insertBefore(i,this.activeStrokePathEl),this.activeStrokePreviewChunkPathEls.push(i),this.activeStrokePreviewCommittedPointIndex=n}}updateLinearStrokePathEl(e,t){e.classList.remove("mod-handwritten"),e.setAttribute("pointer-events","none"),e.setAttribute("opacity",Ye(t.opacity)),this.applyStrokeHardness(e,t),e.setAttribute("d",this.getStrokeCenterPath(t,!1)),e.setAttribute("stroke",t.color),e.setAttribute("stroke-width",t.width.toString()),e.setAttribute("fill","none"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round")}updateHandwrittenActiveStrokePreview(e,t){if(!this.activeStrokePathEl)return;this.flushHandwrittenActiveStrokePreviewChunks(e,t);let n=Li(this.activeStrokePreviewCommittedPointIndex),o=or(e,n,e.points.length);this.updateVisibleStrokePathEl(this.activeStrokePathEl,o,!1,{hasPressure:t,isStart:n===0,isEnd:!0}),this.activeStrokePathEl.removeAttribute("opacity")}flushHandwrittenActiveStrokePreviewChunks(e,t){if(!this.activeStrokeGroupEl||!this.activeStrokePathEl)return;let n=Cn(e.points.length,this.activeStrokePreviewCommittedPointIndex);for(;n;){let o=or(e,n.startIndex,n.endIndex),i=activeDocument.createElementNS(G,"path");i.classList.add("draw-in-canvas-stroke"),this.updateVisibleStrokePathEl(i,o,!1,{hasPressure:t,isStart:n.startIndex===0,isEnd:!1}),i.removeAttribute("opacity"),this.activeStrokeGroupEl.insertBefore(i,this.activeStrokePathEl),this.activeStrokePreviewChunkPathEls.push(i),this.activeStrokePreviewCommittedPointIndex=n.nextCommittedPointIndex,n=Cn(e.points.length,this.activeStrokePreviewCommittedPointIndex)}}cancelActiveStrokePreviewUpdate(){this.activeStrokePreviewFrameId!==null&&(window.cancelAnimationFrame(this.activeStrokePreviewFrameId),this.activeStrokePreviewFrameId=null)}enableSelectMode(){if(this.closeBrushPopovers(),this.clearToolbarPressState(),this.isDrawingEnabled()){this.disableDrawingMode();return}this.syncToolbarButton()}shouldUseSelectToolShortcut(e){var t,n,o;return!this.captureEl||!Su(e)||ir(e.target)||e.target instanceof Node&&((t=this.colorPaletteEl)!=null&&t.contains(e.target)||(n=this.strokeSettingsPaletteEl)!=null&&n.contains(e.target)||(o=this.brushControlsEl)!=null&&o.contains(e.target))?!1:this.app.workspace.getMostRecentLeaf()===this.target.leaf}getHistoryColorSwatchEventTarget(e){if(!(e.target instanceof Element)||!(e.currentTarget instanceof HTMLElement))return null;let t=e.target.closest(".draw-in-canvas-history-color-swatch");return t&&e.currentTarget.contains(t)?t:null}setColorValueMode(e){e!==this.colorValueMode&&(this.colorValueMode=e,e==="hsl"?(this.colorValueHsl=ce(this.customColorHex,this.colorWheelHsv.h),this.preserveHslColorValueForHex=null):e==="lab"&&(this.colorValueLab=le(this.customColorHex),this.preserveLabColorValueForHex=null),this.syncHslSliderControls(),this.positionColorPalette())}updateColorWheelFromPointer(e,t,n){let o=n==="hue"?{...this.colorWheelHsv,h:Fd(e,t.clientX,t.clientY)}:{...this.colorWheelHsv,...zd(e,t.clientX,t.clientY)};this.setColorWheelHsv(o)}updateHslSliderFromInput(e){let t=Xn(this.colorValueMode,e.dataset.colorValueSlider);return t?(this.setColorValueSliderValue(t.id,Number(e.value)),!0):!1}beginCurrentColorHslEdit(e){e.readOnly=!1,e.classList.add("is-editing"),e.value=this.getColorValueInputText(),we(e,!0),e.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{activeDocument.activeElement===e&&!e.readOnly&&e.select()})}commitCurrentColorHslEdit(e){let t=!e.readOnly,n=Cs(this.colorValueMode,e.value);n&&t&&(this.setColorValueHex(n.hexColor,n.fallbackHue,n.labColor,n.hslColor),this.recordColorHistory(this.customColorHex)),e.readOnly=!0,e.classList.remove("is-editing"),e.value=this.getColorValueInputText(),we(e,!0)}resetCurrentColorHslInput(e){e.readOnly=!0,e.classList.remove("is-editing"),e.value=this.getColorValueInputText(),we(e,!0)}async copyCurrentColorHslToClipboard(e){let t=this.getColorValueInputText();e.value=t,we(e,!0);try{await bs(t),new I.Notice(`Copied ${t}`)}catch(n){console.error("Draw in canvas could not copy color value",n),new I.Notice("Draw in canvas could not copy color value. See console for details.")}}beginCurrentColorHexEdit(e){e.readOnly=!1,e.classList.add("is-editing"),e.value=Z(this.getColorPaletteStrokeColor()),W(e,!0),e.focus({preventScroll:!0}),window.requestAnimationFrame(()=>{activeDocument.activeElement===e&&!e.readOnly&&e.select()})}commitCurrentColorHexEdit(e){let t=!e.readOnly,n=E(e.value);n&&t&&(this.customColorHex=n,this.setStrokeColor(n),this.recordColorHistory(n)),e.readOnly=!0,e.classList.remove("is-editing"),e.value=Z(this.getColorPaletteStrokeColor()),W(e,!0)}resetCurrentColorHexInput(e){e.readOnly=!0,e.classList.remove("is-editing"),e.value=Z(this.getColorPaletteStrokeColor()),W(e,!0)}async copyCurrentColorHexToClipboard(e){let t=Z(this.getColorPaletteStrokeColor());e.value=t,W(e,!0);try{await bs(t),new I.Notice(`Copied ${t}`)}catch(n){console.error("Draw in canvas could not copy hex color",n),new I.Notice("Draw in canvas could not copy hex color. See console for details.")}}updateBrushSliderFromPointer(e,t){let n=Ln(e.dataset.brushSlider);n&&this.setBrushSliderValue(n,wd(n,e,t.clientY))}getBrushSliderCurrentValue(e){let t=this.getBrushControlsStyle();return e==="size"?y(t.width):f(t.opacity)}setBrushSliderValue(e,t){let n=this.getBrushControlsTarget();if(e==="size"){let i=y(t);n==="selection"?this.setSelectedStrokeWidth(i):this.setStrokeWidth(i),this.updateBrushPreview("size");return}let o=f(t);n==="selection"?this.setSelectedStrokeOpacity(o):this.setStrokeOpacity(o),this.updateBrushPreview("opacity")}updateInteractionCursorFromEvent(e){if(this.captureEl||this.isSpaceKeyPressed||Ns(e.target)||Ls(e.target)){this.setInteractionCursor(null);return}let t=this.clientPointToCanvasPoint(e);if(!t){this.setInteractionCursor(null);return}let n=this.findResizeHandleAtPoint(t);if(n){this.setInteractionCursor(Kn(n));return}this.setInteractionCursor(this.findStrokeAtPoint(t)?"move":null)}setInteractionCursor(e){var t;this.interactionCursor!==e&&(this.interactionCursor=e,(t=this.strokeInteractionEl)==null||t.setCssStyles({cursor:e!=null?e:""}))}handleStrokeHitPointerDown(e,t,n){e.preventDefault(),e.stopPropagation();let o=this.selectedStrokeIds.has(n.id);if(Fn(e)){if(o){this.selectedStrokeIds.delete(n.id),this.syncVisibleStrokeElements(),this.renderSelectionBox();return}this.selectStrokes([...this.selectedStrokeIds,n.id])}else o||this.selectStrokes([n.id]);this.startStrokeDrag(e.pointerId,t,this.getSelectedStrokeIds())}startStrokeDrag(e,t,n){let o=n.map(i=>this.findStrokeGroupEl(i)).filter(Xe);return o.length===0?!1:(this.clearNativeSelectionDrag(),this.dragState={pointerId:e,strokeIds:[...n],startPoint:t,currentDelta:{x:0,y:0},strokeGroupEls:o,hasMoved:!1},this.strokeInteractionEl&&Ge(this.strokeInteractionEl,e),!0)}handleStrokeDragPointerMove(e,t){let n=this.clientPointToCanvasPoint(e);if(!n)return;let o={x:v(n.x-t.startPoint.x),y:v(n.y-t.startPoint.y)};!t.hasMoved&&Math.hypot(o.x,o.y)this.findStrokeGroupEl(d)).filter(Xe);if(!n||i.length===0)return!1;let s=qe(n.bounds,n.padding),a=sr(s,bu(t)),l=sr(s,t),c=Math.max(de(a,l),1);return this.clearNativeSelectionDrag(),this.dragState=null,this.resizeState={pointerId:e,strokeIds:o,handle:t,origin:a,referencePoint:l,referenceDistance:c,currentScale:1,strokeGroupEls:i,hasMoved:!1},this.setInteractionCursor(Kn(t)),this.strokeInteractionEl&&Ge(this.strokeInteractionEl,e),!0}handleStrokeResizePointerMove(e,t){let n=this.clientPointToCanvasPoint(e);if(!n)return;let o=this.settings.allowTinyCanvasElements?zc:Fc,i=Math.max(o,de(t.origin,n)/t.referenceDistance);!t.hasMoved&&Math.abs(i-1)0:this.redoStack.length>0}finishActiveStroke(){if(!this.activeStroke)return;let e=this.activeStroke;this.cancelActiveStrokePreviewUpdate();let t=e.points[0];if(t&&e.points.length===1){let i={x:v(t.x+.01),y:v(t.y+.01)};t.pressure!==void 0&&(i.pressure=t.pressure),e.points.push(i)}this.strokePathCache.invalidateStroke(e.id);let n=this.setStrokeBounds(e);n&&this.strokeSpatialIndex.updateBounds(e.id,A(n,e.width)),this.invalidateRasterTilesForStrokeGeometries([{bounds:n,strokeWidth:e.width}]);let o=this.activeStrokeGroupEl;this.activeStroke=null,this.activeStrokeGroupEl=null,this.activeStrokePathEl=null,this.activeStrokePointerId=null,this.activeStrokeHasPressure=!1,this.resetActiveStrokePreviewState(),o==null||o.remove(),this.renderVisibleStrokeElements(),this.pushHistory({type:"add-stroke",stroke:Ze(e)}),this.scheduleSave()}selectStrokes(e){let t=new Set;for(let o of e)this.findStroke(o)&&t.add(o);(t.size!==this.selectedStrokeIds.size||Array.from(t).some(o=>!this.selectedStrokeIds.has(o)))&&this.commitPendingSelectedStrokeRecolor(),this.selectedStrokeIds.clear();for(let o of t)this.selectedStrokeIds.add(o);this.syncVisibleStrokeElements(),this.renderSelectionBox(),this.syncBrushControlsMountState(),this.colorPaletteTarget==="selection"&&(this.selectedStrokeIds.size===0?this.closeColorPalette():(this.syncColorPaletteSelection(),this.positionColorPalette())),this.strokeSettingsPaletteTarget==="selection"&&(this.selectedStrokeIds.size===0?this.closeStrokeSettingsPalette():(this.syncStrokeSettingsPaletteControls(),this.positionStrokeSettingsPalette()))}getSelectedStrokeIds(){let e=[];for(let t of this.drawingData.strokes)this.selectedStrokeIds.has(t.id)&&e.push(t.id);return e}syncChangedSelectedStrokeElements(e){for(let t of e)this.syncSelectedStrokeElement(t);for(let t of this.selectedStrokeIds)e.has(t)||this.syncSelectedStrokeElement(t)}syncSelectedStrokeElement(e){let t=this.findStrokeGroupEl(e);t==null||t.classList.toggle("is-selected",this.selectedStrokeIds.has(e))}syncSelectedStrokeElements(){for(let[e,t]of this.strokeGroupById){if(!t.isConnected){this.strokeGroupById.delete(e);continue}t.classList.toggle("is-selected",this.selectedStrokeIds.has(e))}}renderSelectionBox(){this.removeSelectionOverlay();let e=this.getSelectedStrokeBounds();if(!this.svgEl||!e)return;this.syncTinyControlScale();let t=qe(e.bounds,e.padding),n=this.getCanvasUnitsForScreenPixels(1),o=activeDocument.createElementNS(G,"rect");o.classList.add("draw-in-canvas-selection-box"),o.setAttribute("x",v(t.minX).toString()),o.setAttribute("y",v(t.minY).toString()),o.setAttribute("width",v(t.maxX-t.minX).toString()),o.setAttribute("height",v(t.maxY-t.minY).toString()),o.setAttribute("rx",P(Bc*n)),o.style.setProperty("stroke-width",P(is*n)),o.style.setProperty("stroke-dasharray",`${P(Mc*n)} ${P(Hc*n)}`),o.setAttribute("pointer-events","none"),this.svgEl.appendChild(o),this.selectionBoxEl=o;for(let i of["nw","ne","se","sw"]){let s=this.createSelectionHandleEl(i,t);this.svgEl.appendChild(s),this.selectionHandleEls.push(s)}this.renderStrokeScaleMenu(t)}removeSelectionOverlay(){var e;this.removeStrokeScaleMenu(),(e=this.selectionBoxEl)==null||e.remove(),this.selectionBoxEl=null;for(let t of this.selectionHandleEls.splice(0))t.remove()}createSelectionHandleEl(e,t){let n=sr(t,e),o=activeDocument.createElementNS(G,"rect");o.classList.add("draw-in-canvas-selection-handle",`mod-${e}`),o.dataset.resizeHandle=e;let i=this.getCanvasUnitsForScreenPixels(ns),s=i/2;return o.setAttribute("x",v(n.x-s).toString()),o.setAttribute("y",v(n.y-s).toString()),o.setAttribute("width",P(i)),o.setAttribute("height",P(i)),o.setAttribute("rx",P(this.getCanvasUnitsForScreenPixels(_c))),o.style.setProperty("stroke-width",P(this.getCanvasUnitsForScreenPixels(is))),o.setAttribute("pointer-events","none"),o}syncSelectedStrokeScaleMenuPosition(){let e=this.getSelectedStrokeBounds();if(!e){this.removeStrokeScaleMenu();return}this.renderStrokeScaleMenu(qe(e.bounds,e.padding))}renderStrokeScaleMenu(e){var n;if(!this.settings.allowTinyCanvasElements||!this.svgEl){this.removeStrokeScaleMenu();return}let t=this.findCanvasWrapperEl();(!((n=this.strokeScaleMenuContainerEl)!=null&&n.isConnected)||this.strokeScaleMenuContainerEl.parentElement!==t)&&(this.removeStrokeScaleMenu(),this.strokeScaleMenuContainerEl=this.createStrokeScaleMenuContainerEl(),t.appendChild(this.strokeScaleMenuContainerEl)),this.positionStrokeScaleMenu(e)}createStrokeScaleMenuContainerEl(){let e=activeDocument.createElement("div");e.classList.add("canvas-menu-container","draw-in-canvas-stroke-scale-menu-container");let t=activeDocument.createElement("div");return t.classList.add("canvas-menu","draw-in-canvas-stroke-scale-menu"),t.append(this.createStrokeScaleButtonEl("grow"),this.createStrokeScaleButtonEl("shrink"),this.createSelectedStrokeLayerMenuEl(),this.createSelectedStrokeDeleteButtonEl()),e.appendChild(t),this.syncColorPaletteExpandedState(),this.syncStrokeSettingsPaletteExpandedState(),e}createStrokeScaleButtonEl(e){let t=activeDocument.createElement("button");return t.type="button",t.classList.add("clickable-icon","draw-in-canvas-stroke-action-button","draw-in-canvas-stroke-scale-button"),t.setAttribute("aria-label",e==="grow"?"Make selected drawing larger":"Make selected drawing smaller"),t.setAttribute("data-tooltip-position","top"),(0,I.setIcon)(t,e==="grow"?"plus":"minus"),this.strokeScaleMenuDisposers.push(this.addListener(t,"pointerdown",this.handleStrokeScaleButtonPointerDown),this.addListener(t,"click",n=>this.handleStrokeScaleButtonClick(n,e))),t}createSelectedStrokeLayerMenuEl(){let e=activeDocument.createElement("div");e.classList.add("draw-in-canvas-layer-menu","draw-in-canvas-stroke-layer-menu");let t=activeDocument.createElement("button");t.type="button",t.classList.add("clickable-icon","draw-in-canvas-stroke-action-button","draw-in-canvas-layer-menu-button"),t.setAttribute("aria-label","Layer selected drawing"),t.setAttribute("aria-haspopup","menu"),t.setAttribute("aria-expanded","false"),t.setAttribute("data-tooltip-position","top"),(0,I.setIcon)(t,"layers");let n=activeDocument.createElement("div");return n.classList.add("canvas-menu","draw-in-canvas-layer-submenu"),n.setAttribute("role","menu"),n.append(...Oc.map(o=>this.createSelectedStrokeLayerButtonEl(o))),e.append(t,n),this.strokeScaleMenuDisposers.push(this.addListener(t,"pointerdown",this.handleStrokeScaleButtonPointerDown),this.addListener(t,"click",o=>this.handleSelectedStrokeLayerMenuButtonClick(o,e,t))),e}createSelectedStrokeLayerButtonEl(e){let t=Vc[e],n=activeDocument.createElement("button");return n.type="button",n.classList.add("clickable-icon","draw-in-canvas-stroke-action-button","draw-in-canvas-layer-submenu-button"),n.disabled=!this.canReorderSelectedStrokes(e),n.setAttribute("aria-label",t.label),n.setAttribute("data-tooltip-position","top"),n.setAttribute("role","menuitem"),(0,I.setIcon)(n,t.icon),this.strokeScaleMenuDisposers.push(this.addListener(n,"pointerdown",this.handleStrokeScaleButtonPointerDown),this.addListener(n,"click",o=>this.handleSelectedStrokeLayerButtonClick(o,e))),n}createSelectedStrokeDeleteButtonEl(){let e=activeDocument.createElement("button");return e.type="button",e.classList.add("clickable-icon","draw-in-canvas-stroke-action-button","draw-in-canvas-stroke-delete-button"),e.setAttribute("aria-label","Delete selected stroke"),e.setAttribute("data-tooltip-position","top"),(0,I.setIcon)(e,"trash-2"),this.strokeScaleMenuDisposers.push(this.addListener(e,"pointerdown",this.handleStrokeScaleButtonPointerDown),this.addListener(e,"click",this.handleSelectedStrokeDeleteButtonClick)),e}positionStrokeScaleMenu(e){if(!this.svgEl||!this.strokeScaleMenuContainerEl)return;let t=this.svgEl.getScreenCTM();if(!t)return;let o=this.findCanvasWrapperEl().getBoundingClientRect();this.strokeScaleMenuContainerEl.style.setProperty("--draw-in-canvas-stroke-scale-menu-max-width",m(Math.max(0,o.width-ut*2)));let i=this.getStrokeScaleMenuSize(),s=this.svgEl.createSVGPoint();s.x=(e.minX+e.maxX)/2,s.y=e.minY;let a=this.svgEl.createSVGPoint();a.x=s.x,a.y=e.maxY;let l=s.matrixTransform(t),c=a.matrixTransform(t),d=ut,u=Math.max(d,o.width-i.width-ut),h=As(l.x-o.left-i.width/2,d,u),p=ut,S=Math.max(p,o.height-i.height-ut),g=l.y-o.top-i.height-ss,D=c.y-o.top+ss,me=g0?o:n.width||as,height:i>0?i:n.height||ls}}setStrokeScaleMenuPosition(e,t){if(!this.strokeScaleMenuContainerEl)return;let n=m(e),o=m(t);this.strokeScaleMenuContainerEl.style.left===n&&this.strokeScaleMenuContainerEl.style.top===o||this.strokeScaleMenuContainerEl.setCssStyles({left:n,top:o})}removeStrokeScaleMenu(){var e;for(let t of this.strokeScaleMenuDisposers.splice(0))t();(e=this.strokeScaleMenuContainerEl)==null||e.remove(),this.strokeScaleMenuContainerEl=null}handleStrokeScaleButtonClick(e,t){if(e.preventDefault(),e.stopPropagation(),!this.settings.allowTinyCanvasElements){this.removeStrokeScaleMenu();return}this.commitPendingSelectedStrokeRecolor(),this.scaleSelectedStrokes(t==="grow"?1.25:.8)}handleSelectedStrokeLayerMenuButtonClick(e,t,n){e.preventDefault(),e.stopPropagation();let o=!t.classList.contains("is-open");t.classList.toggle("is-open",o),n.setAttribute("aria-expanded",o.toString())}handleSelectedStrokeLayerButtonClick(e,t){if(e.preventDefault(),e.stopPropagation(),!this.settings.allowTinyCanvasElements){this.removeStrokeScaleMenu();return}this.reorderSelectedStrokes(t)}canReorderSelectedStrokes(e){return oe(this.getStrokeIds(),this.selectedStrokeIds,e)}reorderSelectedStrokes(e){this.commitPendingSelectedStrokeRecolor();let t=this.getSelectedStrokeIds(),n=this.getStrokeIds(),o=nt(n,t,e);t.length===0||ot(n,o)||(this.applyStrokeOrder(o),this.renderStrokes(),this.selectStrokes(t),this.pushHistory({type:"reorder-strokes",beforeStrokeIds:n,afterStrokeIds:o,selectedStrokeIds:t}),this.hasPendingSave=!0,this.scheduleSave())}scaleSelectedStrokes(e){let t=this.getSelectedStrokeBounds(),n=this.getSelectedStrokeIds();if(!t||n.length===0||Math.abs(e-1)({stroke:t,index:n})).filter(({stroke:t})=>this.selectedStrokeIds.has(t.id));e.length!==0&&(this.pushHistory({type:"delete-strokes",strokes:e.map(({stroke:t})=>Ze(t)),indices:e.map(({index:t})=>t)}),this.removeStrokes(e.map(({stroke:t})=>t.id)),this.selectStrokes([]),this.hasPendingSave=!0,this.scheduleSave())}updateStrokeElement(e){if(!this.svgEl)return;let t=this.findStrokeGroupEl(e.id);if(!this.shouldRenderStroke(e)){t==null||t.remove(),this.strokeGroupById.delete(e.id),this.renderVisibleStrokeElements();return}if(t&&this.selectedStrokeIds.has(e.id)){t.replaceWith(this.createStrokeGroupEl(e));return}this.renderVisibleStrokeElements()}updateStrokePaintAttributes(e){this.invalidateRasterTilesForStroke(e);let t=this.findVisibleStrokePathEl(e.id);if(!t){this.updateStrokeElement(e);return}Ni(t,e.color)}findVisibleStrokePathEl(e){var n;let t=this.findStrokeGroupEl(e);return(n=t==null?void 0:t.querySelector("path.draw-in-canvas-stroke"))!=null?n:null}pushHistory(e){this.undoStack.push(Gn(e)),this.redoStack.length=0,this.syncCanvasUndoRedoButtons()}applyHistoryAction(e,t){switch(e.type){case"add-stroke":if(t==="undo")this.removeStrokes([e.stroke.id]),this.selectStrokes([]);else{let n=Ze(e.stroke);this.addStroke(n),this.updateStrokeElement(n),this.selectStrokes([n.id])}break;case"clear-strokes":this.setStrokes(t==="undo"?pr(e.strokes):[]),this.selectStrokes([]),this.renderStrokes();break;case"delete-strokes":t==="undo"?(this.insertStrokesAtIndices(e.strokes,e.indices),this.selectStrokes(e.strokes.map(n=>n.id)),this.renderStrokes()):(this.removeStrokes(e.strokes.map(n=>n.id)),this.selectStrokes([]));break;case"reorder-strokes":{let n=t==="undo"?e.beforeStrokeIds:e.afterStrokeIds;this.applyStrokeOrder(n),this.renderStrokes(),this.selectStrokes(e.selectedStrokeIds);break}case"move-stroke":{let n=this.findStroke(e.strokeId);n&&(this.translateStroke(n,t==="undo"?Bs(e.delta):e.delta),this.updateStrokeElement(n),this.selectStrokes([e.strokeId]));break}case"move-strokes":{let n=t==="undo"?Bs(e.delta):e.delta,o=[];for(let i of e.strokeIds){let s=this.findStroke(i);s&&(this.translateStroke(s,n),this.updateStrokeElement(s),o.push(i))}this.selectStrokes(o);break}case"resize-strokes":{let n=t==="undo"?1/e.scale:e.scale,o=[];for(let i of e.strokeIds){let s=this.findStroke(i);s&&(this.scaleStroke(s,e.origin,n),this.updateStrokeElement(s),o.push(i))}this.selectStrokes(o);break}case"recolor-strokes":{let n=[];for(let o of e.changes){let i=this.findStroke(o.strokeId);i&&(i.color=t==="undo"?o.previousColor:o.nextColor,this.updateStrokePaintAttributes(i),n.push(o.strokeId))}this.selectStrokes(n);break}case"restyle-strokes":{let n=[];for(let o of e.changes){let i=this.findStroke(o.strokeId);i&&(this.applyStrokeStyle(i,t==="undo"?o.previousStyle:o.nextStyle),n.push(o.strokeId))}this.selectStrokes(n);break}default:Ae(e)}}findStroke(e){var t;return(t=this.strokeById.get(e))!=null?t:null}findStrokeAtPoint(e){let t=this.getCanvasUnitsForScreenPixels(Lc),n=this.getCanvasUnitsForScreenPixels(Dc),o=Math.max(t,n)/2,i=this.strokeSpatialIndex.queryBounds(Ai(e,o),"descending");for(let s of i){let a=this.findStroke(s);if(!a)continue;let l=Math.max(a.width+t,n)/2,c=this.getStrokeBounds(a);if(!(!c||!Ds(e,c,l))&&mu(e,a.points,l)<=l)return a}return null}removeStroke(e){var o;let t=this.findStroke(e);t&&this.invalidateRasterTilesForStroke(t),this.strokePathCache.invalidateStroke(e);let n=this.drawingData.strokes.findIndex(i=>i.id===e);n!==-1&&this.drawingData.strokes.splice(n,1),this.strokeById.delete(e),this.strokeBoundsById.delete(e),this.strokeSpatialIndex.remove(e),this.strokeSpatialIndex.setOrder(this.getStrokeIds()),(o=this.findStrokeGroupEl(e))==null||o.remove(),this.strokeGroupById.delete(e)}findStrokeGroupEl(e){let t=this.strokeGroupById.get(e);return t!=null&&t.isConnected?t:(this.strokeGroupById.delete(e),null)}rebuildStrokeIndex(){this.clearRasterTileCache(),this.strokePathCache.clear(),this.strokeById.clear(),this.strokeBoundsById.clear();let e=[];for(let t=0;te.id)}applyStrokeOrder(e){this.drawingData.strokes=Ot(this.drawingData.strokes,e),this.clearRasterTileCache(),this.strokeSpatialIndex.setOrder(this.getStrokeIds())}addStroke(e){this.strokePathCache.invalidateStroke(e.id),this.drawingData.strokes.push(e),this.strokeById.set(e.id,e);let t=this.setStrokeBounds(e);t&&(this.strokeSpatialIndex.set(e.id,A(t,e.width),this.drawingData.strokes.length-1),e!==this.activeStroke&&this.invalidateRasterTilesForStrokeGeometries([{bounds:t,strokeWidth:e.width}]))}removeStrokes(e){var n;this.invalidateRasterTilesForStrokeGeometries(e.map(o=>{let i=this.findStroke(o);return i?{bounds:this.getStrokeBounds(i),strokeWidth:i.width}:null}).filter(Xe));for(let o of e)this.strokePathCache.invalidateStroke(o);let t=new Set(e);this.drawingData.strokes=this.drawingData.strokes.filter(o=>!t.has(o.id));for(let o of t)this.strokeById.delete(o),this.strokeBoundsById.delete(o),this.strokeSpatialIndex.remove(o),(n=this.findStrokeGroupEl(o))==null||n.remove(),this.strokeGroupById.delete(o),this.selectedStrokeIds.delete(o);this.strokeSpatialIndex.setOrder(this.getStrokeIds()),this.renderSelectionBox()}insertStrokesAtIndices(e,t){var n;for(let o=0;o{o.x=i.clientX,o.y=i.clientY;let s=o.matrixTransform(n);return xs(s.x,s.y,i)}}let t=this.svgEl.getBoundingClientRect();return n=>xs(n.clientX-t.left,n.clientY-t.top,n)}scheduleSave(){this.hasPendingSave=!0,this.saveTimeoutId!==null&&window.clearTimeout(this.saveTimeoutId),this.saveTimeoutId=window.setTimeout(()=>{this.saveTimeoutId=null,this.saveNow()},Gc)}async saveNow(){if(this.hasPendingSave){this.hasPendingSave=!1;try{await ho(this.app,this.target.file,this.drawingData)}catch(e){this.hasPendingSave=!0,console.error("Draw in canvas could not save strokes",e),new I.Notice("Draw in canvas could not save strokes. See console for details.")}}}findViewContentEl(){var e;return(e=this.target.containerEl.querySelector(".view-content"))!=null?e:this.target.containerEl}findCanvasWrapperEl(){var e;return(e=this.target.containerEl.querySelector(".canvas-wrapper"))!=null?e:this.findViewContentEl()}findCanvasWorldEl(){var e;return(e=this.target.containerEl.querySelector(".canvas"))!=null?e:this.findViewContentEl()}syncTinyControlScale(){if(!this.settings.allowTinyCanvasElements){let i=this.tinyControlScaleWrapperEl!==null||this.tinyControlScaleKey!=="";return this.clearTinyControlScale(),i}let e=this.findCanvasWrapperEl();this.tinyControlScaleWrapperEl&&this.tinyControlScaleWrapperEl!==e&&this.clearTinyControlScale();let t=this.getCanvasUnitsForScreenPixels(1),n=mo(t),o=P(t);return e.classList.add(hs),this.tinyControlScaleWrapperEl===e&&this.tinyControlScaleKey===o?(this.syncNativeCanvasEdgeEndpoints(n),!1):(e.setCssProps({"--draw-in-canvas-tiny-border-width":m(ed*t),"--draw-in-canvas-tiny-card-shadow-y":m(td*t),"--draw-in-canvas-tiny-card-shadow-blur":m(rd*t),"--draw-in-canvas-tiny-card-shadow-spread":m(nd*t),"--draw-in-canvas-tiny-focus-spread":m(od*t),"--draw-in-canvas-tiny-resizer-size":m(In*t),"--draw-in-canvas-tiny-resizer-half":m(In*t/2),"--draw-in-canvas-tiny-resizer-offset":m(-In*t/2),"--draw-in-canvas-tiny-connection-border":m(ps*t),"--draw-in-canvas-tiny-connection-native-border":m(ps),"--draw-in-canvas-tiny-connection-native-size":m(Rn),"--draw-in-canvas-tiny-connection-scale":P(t),"--draw-in-canvas-tiny-connection-size":m(Rn*t),"--draw-in-canvas-tiny-connection-half":m(Rn*t/2),"--draw-in-canvas-tiny-edge-width":m(id*n),"--draw-in-canvas-tiny-edge-focus-width":m(sd*n),"--draw-in-canvas-tiny-edge-hit-width":m(ad*t),"--draw-in-canvas-tiny-edge-arrow-scale":P(n),"--draw-in-canvas-tiny-snap-line-width":m(ld*t),"--draw-in-canvas-tiny-snap-point-scale":P(t),"--draw-in-canvas-tiny-selection-border-width":m(cd*t),"--draw-in-canvas-tiny-group-selection-border-width":m(dd*t),"--draw-in-canvas-tiny-group-selection-radius":m(ud*t),"--draw-in-canvas-tiny-label-gap":m(-hd*t),"--draw-in-canvas-tiny-label-scale":P(t)}),this.syncNativeCanvasEdgeEndpoints(n),this.tinyControlScaleWrapperEl=e,this.tinyControlScaleKey=o,!0)}syncNativeCanvasEdgeEndpoints(e){this.pruneNativeEdgePathOverrides();let t=Array.from(this.target.containerEl.querySelectorAll(".canvas-edges g")).filter(i=>i.querySelector("path.canvas-display-path")),n=Array.from(this.target.containerEl.querySelectorAll(".canvas-edges polygon.canvas-path-end")).map(i=>i.parentNode).filter(i=>i instanceof SVGGElement),o=Math.min(t.length,n.length);for(let i=0;ie.removeEventListener(t,i,o)}};function Sd(r,e=!0){let t=r.length;if(t<4)return"";let n=r[0],o=r[1],i=r[2];if(!n||!o||!i)return"";let s=`M${ae(n[0])},${ae(n[1])} Q${ae(o[0])},${ae(o[1])} ${ae(er(o[0],i[0]))},${ae(er(o[1],i[1]))} T`;for(let a=2,l=t-1;a0?n:null}function fd(r,e){if(!r)return null;let t=String.raw`[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?`,n=new RegExp(`(${t})([\\s,]+)(${t})(\\s*)$`,"i"),o=!1,i=r.replace(n,(s,a,l,c,d)=>(o=!0,`${P(e.x)}${l}${P(e.y)}${d}`));return o?i:null}function Cd(r,e){return!1}function Nn(){return Object.keys(H)}function yd(r){return r&&Object.prototype.hasOwnProperty.call(H,r)?r:null}function Ss(r,e){return H[r].step<1?e.toFixed(2):Math.round(e).toString()}function vs(r,e){switch(e){case"strokeThinning":return k(e,r.thinning);case"strokeStreamline":return k(e,r.streamline);case"strokeSmoothing":return k(e,r.smoothing);case"strokeTaperStart":return k(e,r.taperStart);case"strokeTaperEnd":return k(e,r.taperEnd);default:return Ae(e)}}function Ed(r,e,t){let n=k(e,t);switch(e){case"strokeThinning":return{...r,thinning:n};case"strokeStreamline":return{...r,streamline:n};case"strokeSmoothing":return{...r,smoothing:n};case"strokeTaperStart":return{...r,taperStart:n};case"strokeTaperEnd":return{...r,taperEnd:n};default:return Ae(e)}}function kd(r){return{enabled:r,thinning:H.strokeThinning.defaultValue,streamline:H.strokeStreamline.defaultValue,smoothing:H.strokeSmoothing.defaultValue,taperStart:H.strokeTaperStart.defaultValue,taperEnd:H.strokeTaperEnd.defaultValue}}function Ln(r){return r==="size"||r==="opacity"?r:null}function Sr(r){return r==="size"?{min:1,max:32,step:1}:{min:1,max:100,step:1}}function Te(r,e){return r==="size"?y(e):f(e)}function bd(r,e){let t=Sr(r);return`${(1-(Te(r,e)-t.min)/(t.max-t.min))*100}%`}function wd(r,e,t){let n=Sr(r),o=e.getBoundingClientRect(),i=Math.min(1,Math.max(0,(o.bottom-t)/o.height));return Te(r,n.min+i*(n.max-n.min))}function Pd(r,e,t){let n=Sr(r),o=n.step*5;switch(e.key){case"ArrowUp":case"ArrowRight":return Te(r,Math.min(n.max,t+n.step));case"ArrowDown":case"ArrowLeft":return Te(r,Math.max(n.min,t-n.step));case"PageUp":return Te(r,Math.min(n.max,t+o));case"PageDown":return Te(r,Math.max(n.min,t-o));case"Home":return n.min;case"End":return n.max;default:return null}}function ms(r,e,t,n){let o=activeDocument.createElement("div"),i=w();o.classList.add("draw-in-canvas-brush-slider-control","draw-in-canvas-brush-slider"),o.dataset.brushSlider=r,o.tabIndex=0,o.setAttribute("role","slider"),o.setAttribute("aria-labelledby",i),o.setAttribute("aria-orientation","vertical");let s=activeDocument.createElement("span");s.id=i,s.classList.add("draw-in-canvas-brush-slider-label"),s.textContent=e;let a=activeDocument.createElement("span");a.classList.add("draw-in-canvas-brush-slider-track");let l=activeDocument.createElement("span");l.classList.add("draw-in-canvas-brush-slider-thumb"),a.appendChild(l);let c=activeDocument.createElement("output");return c.classList.add("draw-in-canvas-brush-slider-value",t),c.setAttribute("aria-live","polite"),c.textContent=n,o.append(s,a,c),o}function ht(r,e,t,n,o){let i=activeDocument.createElement("div");i.classList.add("draw-in-canvas-stroke-slider-control");let s=activeDocument.createElement("label");s.htmlFor=r,s.classList.add("draw-in-canvas-stroke-width-label"),s.textContent=e;let a=activeDocument.createElement("output");return a.classList.add(t),a.setAttribute("for",r),a.setAttribute("aria-live","polite"),a.textContent=n,i.append(s,o,a),i}function Ge(r,e){try{r.setPointerCapture(e)}catch(t){if(t instanceof DOMException&&t.name==="NotFoundError")return;throw t}}function Td(r){var e,t;return(t=(e=Array.from(r.children).find(n=>n.classList.contains("canvas-control-group")))==null?void 0:e.nextElementSibling)!=null?t:null}function gs(r,e){var t;return(t=Array.from(r.querySelectorAll(".canvas-control-item")).find(n=>{var o;return(o=n.getAttribute("aria-label"))==null?void 0:o.startsWith(e)}))!=null?t:null}function tr(r){return r.key==="Enter"||r.key===" "}function rr(r){return U.some(e=>e.id===r)?r:null}function xd(r,e){var n,o,i,s,a,l,c,d;let t=U.findIndex(u=>u.id===r);if(t===-1)return null;switch(e.key){case"ArrowRight":case"ArrowDown":return(o=(n=U[(t+1)%U.length])==null?void 0:n.id)!=null?o:r;case"ArrowLeft":case"ArrowUp":return(s=(i=U[(t-1+U.length)%U.length])==null?void 0:i.id)!=null?s:r;case"Home":return(l=(a=U[0])==null?void 0:a.id)!=null?l:r;case"End":return(d=(c=U[U.length-1])==null?void 0:c.id)!=null?d:r;default:return null}}function Dn(r){return r==="hue"||r==="disc"?r:null}function Id(r){return Vs.some(e=>e.id===r)?r:null}function fs(r){switch(r){case"hsl":return{placeholder:"0, 0%, 0%",ariaLabel:"Current hsl stroke color. Click to copy; double-click or press enter to edit.",maxLength:32};case"rgb":return{placeholder:"0, 0, 0",ariaLabel:"Current rgb stroke color. Click to copy; double-click or press enter to edit.",maxLength:32};case"lab":return{placeholder:"50% 0 0",ariaLabel:"Current Lab stroke color. Click to copy; double-click or press enter to edit.",maxLength:36};default:return{placeholder:"",ariaLabel:"Current stroke color value. Click to copy; double-click or press enter to edit.",maxLength:36}}}function Yn(r){switch(r){case"hsl":return Un;case"rgb":return jc;case"lab":return Jc;default:return Un}}function Xn(r,e){var t;return(t=Yn(r).find(n=>n.id===e))!=null?t:null}function Rd(r,e,t,n=0){switch(r){case"hsl":{let o=Ne(e);return o?ue(o,ce(t,n)):he}case"rgb":{let o=vr(t);switch(e){case"red":return L(o.r);case"green":return L(o.g);case"blue":return L(o.b);default:return xe}}case"lab":{let o=le(t);switch(e){case"labLightness":return De(o.l);case"labA":return F(o.a);case"labB":return F(o.b);default:return pe}}default:return he}}function Nd(r,e,t,n,o=0){switch(r){case"hsl":{let i=Ne(e);if(!i)return null;let s=Ws(ce(n,o),i,t);return{hexColor:hr(s),fallbackHue:s.h,hslColor:s}}case"rgb":{let i=vr(n);switch(e){case"red":return{hexColor:M({...i,r:L(t)})};case"green":return{hexColor:M({...i,g:L(t)})};case"blue":return{hexColor:M({...i,b:L(t)})};default:return null}}case"lab":{let i=Gs(le(n),e,t);return i?{hexColor:Re(i),labColor:i}:null}default:return null}}function Ld(r,e,t,n=0){var o;return{"--draw-in-canvas-hsl-slider-gradient":Md(r,e,t,n),"--draw-in-canvas-hsl-slider-thumb-color":(o=E(t))!=null?o:$}}function Dd(r,e){let t=Ne(r);return{"--draw-in-canvas-hsl-slider-gradient":t?Ys(t,e):"var(--background-modifier-border)","--draw-in-canvas-hsl-slider-thumb-color":Jn(e)}}function Ad(r,e){return{"--draw-in-canvas-hsl-slider-gradient":Ks(r,e),"--draw-in-canvas-hsl-slider-thumb-color":Re(e)}}function Md(r,e,t,n=0){switch(r){case"hsl":{let o=Ne(e);return o?Ys(o,ce(t,n)):"var(--background-modifier-border)"}case"rgb":return Hd(e,vr(t));case"lab":return Ks(e,le(t));default:return"var(--background-modifier-border)"}}function Hd(r,e){let t=L(e.r),n=L(e.g),o=L(e.b);switch(r){case"red":return`linear-gradient(to right, rgb(0, ${n}, ${o}), rgb(255, ${n}, ${o}))`;case"green":return`linear-gradient(to right, rgb(${t}, 0, ${o}), rgb(${t}, 255, ${o}))`;case"blue":return`linear-gradient(to right, rgb(${t}, ${n}, 0), rgb(${t}, ${n}, 255))`;default:return"var(--background-modifier-border)"}}function Ks(r,e){switch(r){case"labLightness":return An(pe,gt,t=>Re({...e,l:t}));case"labA":return An(Se,ve,t=>Re({...e,a:t}));case"labB":return An(Se,ve,t=>Re({...e,b:t}));default:return"var(--background-modifier-border)"}}function An(r,e,t){let o=[];for(let i=0;i<=6;i++){let s=r+(e-r)*(i/6);o.push(t(s))}return`linear-gradient(to right, ${o.join(", ")})`}function Bd(r,e,t=0){switch(r){case"hsl":return Jn(ce(e,t));case"rgb":return Yd(vr(e));case"lab":return $s(le(e));default:return Z(e)}}function Cs(r,e){switch(r){case"hsl":{let t=Xd(e);return t?{hexColor:hr(t),fallbackHue:t.h,hslColor:t}:null}case"rgb":{let t=qd(e);return t?{hexColor:M(t)}:null}case"lab":{let t=Zd(e);return t?{hexColor:Re(t),labColor:t}:null}default:return null}}function qn(r,e,t){switch(r){case"hsl":{let n=Ne(e);return n?Vd(n,t):Math.round(t).toString()}case"rgb":return L(t).toString();case"lab":return e==="labLightness"?`${De(t)}%`:F(t).toString();default:return Math.round(t).toString()}}function ys(r,e,t){return`${_d(r,e)} ${qn(r,e,t)}`}function _d(r,e){var n;let t=Xn(r,e);return(n=t==null?void 0:t.label)!=null?n:"Color"}function vr(r){var e,t;return(t=(e=Le(r))!=null?e:Le($))!=null?t:{r:0,g:0,b:0}}function le(r){var e,t;return(t=(e=Ps(r))!=null?e:Ps($))!=null?t:{l:0,a:0,b:0}}function Od(r,e){switch(r){case"labLightness":return De(e.l);case"labA":return F(e.a);case"labB":return F(e.b);default:return pe}}function Gs(r,e,t){let n=Js(r);switch(e){case"labLightness":return{...n,l:De(t)};case"labA":return{...n,a:F(t)};case"labB":return{...n,b:F(t)};default:return null}}function Ne(r){return Un.some(e=>e.id===r)?r:null}function ue(r,e){switch(r){case"hue":{let t=Math.round(T(e.h));return Math.min($n,t)}case"saturation":return Math.round(N(e.s)*100);case"lightness":return Math.round(N(e.l)*100);default:return he}}function Ws(r,e,t){let n=Us(e,t);switch(e){case"hue":return{...r,h:n};case"saturation":return{...r,s:n/100};case"lightness":return{...r,l:n/100};default:return r}}function Us(r,e){let t=Number.isFinite(e)?e:he,n=r==="hue"?Os:he,o=r==="hue"?$n:Wn,i=Math.round(t/vt)*vt;return Math.min(o,Math.max(n,i))}function Ys(r,e){let t=ue("hue",e),n=ue("saturation",e),o=ue("lightness",e);switch(r){case"hue":return"linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(360, 100%, 50%))";case"saturation":return`linear-gradient(to right, hsl(${t}, 0%, ${o}%), hsl(${t}, 100%, ${o}%))`;case"lightness":return`linear-gradient(to right, hsl(${t}, ${n}%, 0%), hsl(${t}, ${n}%, 50%), hsl(${t}, ${n}%, 100%))`;default:return"var(--background-modifier-border)"}}function Vd(r,e){let t=Us(r,e);return r==="hue"?`${t}\xB0`:`${t}%`}function Fd(r,e,t){let n=r.getBoundingClientRect(),o=e-(n.left+n.width/2),i=t-(n.top+n.height/2);return T(Math.atan2(i,o)*180/Math.PI)}function zd(r,e,t){let n=r.getBoundingClientRect(),o=Xs({x:N((e-n.left)/n.width),y:N((t-n.top)/n.height)},qs(r));return{s:o.x,v:1-o.y}}function Kd(r,e){let t=Xs({x:r.s,y:1-r.v},qs(e));return{x:t.x*100,y:t.y*100}}function Xs(r,e){let t=Math.max(0,.5-e),n=r.x-.5,o=r.y-.5,i=Math.hypot(n,o);if(i<=t||i===0)return r;let s=t/i;return{x:.5+n*s,y:.5+o*s}}function qs(r){var n,o;let e=r==null?void 0:r.getBoundingClientRect(),t=Math.min((n=e==null?void 0:e.width)!=null?n:0,(o=e==null?void 0:e.height)!=null?o:0);return t<=0?0:Math.min(.5,$c/2/t)}function Gd(r,e){let t=e.shiftKey?Tn:qc;switch(e.key){case"ArrowRight":case"ArrowUp":return{...r,h:T(r.h+t)};case"ArrowLeft":case"ArrowDown":return{...r,h:T(r.h-t)};case"PageUp":return{...r,h:T(r.h+Tn)};case"PageDown":return{...r,h:T(r.h-Tn)};case"Home":return{...r,h:0};case"End":return{...r,h:359};default:return null}}function Wd(r,e){let t=e.shiftKey?xn:Zc;switch(e.key){case"ArrowRight":return{...r,s:N(r.s+t)};case"ArrowLeft":return{...r,s:N(r.s-t)};case"ArrowUp":return{...r,v:N(r.v+t)};case"ArrowDown":return{...r,v:N(r.v-t)};case"PageUp":return{...r,v:N(r.v+xn)};case"PageDown":return{...r,v:N(r.v-xn)};case"Home":return{...r,s:0};case"End":return{...r,s:1};default:return null}}function Ud(r){let e=T(r)*Math.PI/180;return{x:50+Math.cos(e)*us,y:50+Math.sin(e)*us}}function pt(r,e=0){let t=eu(r);return t?{...t,h:t.s===0?T(e):t.h}:{h:T(e),s:0,v:0}}function Zs(r){return{h:T(r.h),s:N(r.s),v:N(r.v)}}function ce(r,e=0){let t=tu(r);return t?{...t,h:t.s===0?T(e):t.h}:{h:T(e),s:0,l:0}}function Zn(r){return{h:T(r.h),s:N(r.s),l:N(r.l)}}function V(r,e){let t=E(r),n=E(e);return t&&n?t===n:r.trim().toLowerCase()===e.trim().toLowerCase()}function E(r){let e=/^#?([\da-f]{6})$/i.exec(r.trim()),t=e==null?void 0:e[1];return t?`#${t.toLowerCase()}`:null}function Z(r){var e;return((e=E(r))!=null?e:$).toUpperCase()}function Jn(r){let e=ue("hue",r),t=ue("saturation",r),n=ue("lightness",r);return`hsl(${e}, ${t}%, ${n}%)`}function Yd(r){return`rgb(${L(r.r)}, ${L(r.g)}, ${L(r.b)})`}function $s(r){return`lab(${De(r.l)}% ${F(r.a)} ${F(r.b)})`}function Xd(r){var h;let e=r.trim();if(!e)return null;let t=/^hsla?\(\s*(.*?)\s*\)$/i.exec(e),o=((h=t==null?void 0:t[1])!=null?h:e).replace(/\s*\/\s*[-+]?(?:\d+\.?\d*|\.\d+)%?\s*$/,"").trim(),i=o.includes(",")?o.split(",").map(p=>p.trim()).filter(p=>p.length>0):o.split(/\s+/).map(p=>p.trim()).filter(p=>p.length>0);if(i.length!==3&&i.length!==4)return null;let[s,a,l]=i;if(s===void 0||a===void 0||l===void 0)return null;let c=jd(s),d=ks(a),u=ks(l);return c===null||d===null||u===null?null:{h:T(c),s:d/100,l:u/100}}function qd(r){let e=js(r,/^rgba?\(\s*(.*?)\s*\)$/i);if(!e)return null;let[t,n,o]=e;if(t===void 0||n===void 0||o===void 0)return null;let i=Mn(t),s=Mn(n),a=Mn(o);return i===null||s===null||a===null?null:{r:i,g:s,b:a}}function Zd(r){let e=js(r,/^lab\(\s*(.*?)\s*\)$/i);if(!e)return null;let[t,n,o]=e;if(t===void 0||n===void 0||o===void 0)return null;let i=$d(t),s=Es(n),a=Es(o);return i===null||s===null||a===null?null:{l:i,a:s,b:a}}function js(r,e){var a;let t=r.trim();if(!t)return null;let n=e.exec(t);if(/^[a-z]+\(/i.test(t)&&!n)return null;let i=((a=n==null?void 0:n[1])!=null?a:t).replace(/\s*\/\s*[-+]?(?:\d+\.?\d*|\.\d+)%?\s*$/,"").trim(),s=i.includes(",")?i.split(",").map(l=>l.trim()).filter(l=>l.length>0):i.split(/\s+/).map(l=>l.trim()).filter(l=>l.length>0);return s.length===3||s.length===4?s:null}function Mn(r){let e=/^([-+]?(?:\d+\.?\d*|\.\d+))(%?)$/.exec(r.trim()),t=e==null?void 0:e[1];if(t===void 0)return null;let n=Number(t);if(!Number.isFinite(n))return null;let o=(e==null?void 0:e[2])==="%"?n/100*$e:n;return o$e?null:L(o)}function $d(r){let e=/^([-+]?(?:\d+\.?\d*|\.\d+))%?$/.exec(r.trim()),t=e==null?void 0:e[1];if(t===void 0)return null;let n=Number(t);return!Number.isFinite(n)||ngt?null:De(n)}function Es(r){let e=/^([-+]?(?:\d+\.?\d*|\.\d+))$/.exec(r.trim()),t=e==null?void 0:e[1];if(t===void 0)return null;let n=Number(t);return!Number.isFinite(n)||nve?null:F(n)}function jd(r){var i,s;let e=/^([-+]?(?:\d+\.?\d*|\.\d+))(deg|°|rad|turn|grad)?$/i.exec(r.trim()),t=e==null?void 0:e[1];if(t===void 0)return null;let n=Number(t);if(!Number.isFinite(n))return null;switch((s=(i=e==null?void 0:e[2])==null?void 0:i.toLowerCase())!=null?s:"deg"){case"turn":return n*360;case"rad":return n*180/Math.PI;case"grad":return n*.9;case"deg":case"\xB0":return n;default:return null}}function ks(r){let e=/^([-+]?(?:\d+\.?\d*|\.\d+))%?$/.exec(r.trim()),t=e==null?void 0:e[1];if(t===void 0)return null;let n=Number(t);return!Number.isFinite(n)||n<0||n>100?null:n}function we(r,e){W(r,e)}function W(r,e){r.classList.toggle("is-invalid",!e),r.setAttribute("aria-invalid",(!e).toString())}async function bs(r){if(!navigator.clipboard)throw new Error("Clipboard API is unavailable");await navigator.clipboard.writeText(r)}function ws(r){return(r.ctrlKey||r.metaKey)&&r.key.toLowerCase()==="c"}function Jd(r){if(r.altKey||!r.ctrlKey&&!r.metaKey)return null;let e=r.key.toLowerCase();return e==="z"?r.shiftKey?"redo":"undo":e==="y"&&r.ctrlKey&&!r.metaKey&&!r.shiftKey?"redo":null}function Qd(r){var t;let e=(t=Le(r))!=null?t:Le($);return e?[{name:"Lightest shade",value:M(St(e,{r:255,g:255,b:255},.72))},{name:"Light shade",value:M(St(e,{r:255,g:255,b:255},.48))},{name:"Soft shade",value:M(St(e,{r:255,g:255,b:255},.24))},{name:"Base shade",value:M(e)},{name:"Deep shade",value:M(St(e,{r:0,g:0,b:0},.18))},{name:"Darkest shade",value:M(St(e,{r:0,g:0,b:0},.36))}]:[]}function Le(r){var t;let e=(t=E(r))==null?void 0:t.slice(1);return e?{r:Number.parseInt(e.slice(0,2),16),g:Number.parseInt(e.slice(2,4),16),b:Number.parseInt(e.slice(4,6),16)}:null}function eu(r){let e=Le(r);return e?ru(e):null}function tu(r){let e=Le(r);return e?nu(e):null}function Ps(r){let e=Le(r);return e?su(e):null}function ru(r){let e=r.r/255,t=r.g/255,n=r.b/255,o=Math.max(e,t,n),i=Math.min(e,t,n),s=o-i,a=0;return s>0&&(o===e?a=60*((t-n)/s%6):o===t?a=60*((n-e)/s+2):a=60*((e-t)/s+4)),{h:T(a),s:o===0?0:s/o,v:o}}function nu(r){let e=r.r/255,t=r.g/255,n=r.b/255,o=Math.max(e,t,n),i=Math.min(e,t,n),s=o-i,a=(o+i)/2,l=0;return s>0&&(o===e?l=60*((t-n)/s%6):o===t?l=60*((n-e)/s+2):l=60*((e-t)/s+4)),{h:T(l),s:s===0?0:s/(1-Math.abs(2*a-1)),l:a}}function nr(r){return M(ou(r))}function ou(r){let e=Zs(r),t=e.h/60,n=e.v*e.s,o=n*(1-Math.abs(t%2-1)),i=e.v-n,s=0,a=0,l=0;return t<1?(s=n,a=o):t<2?(s=o,a=n):t<3?(a=n,l=o):t<4?(a=o,l=n):t<5?(s=o,l=n):(s=n,l=o),{r:(s+i)*255,g:(a+i)*255,b:(l+i)*255}}function hr(r){return M(iu(r))}function iu(r){let e=Zn(r),t=e.h/60,n=(1-Math.abs(2*e.l-1))*e.s,o=n*(1-Math.abs(t%2-1)),i=e.l-n/2,s=0,a=0,l=0;return t<1?(s=n,a=o):t<2?(s=o,a=n):t<3?(a=n,l=o):t<4?(a=o,l=n):t<5?(s=o,l=n):(s=n,l=o),{r:(s+i)*255,g:(a+i)*255,b:(l+i)*255}}function Re(r){return M(au(r))}function su(r){let e=lu(r),t=_n(e.x/.95047),n=_n(e.y),o=_n(e.z/1.08883);return{l:116*n-16,a:500*(t-n),b:200*(n-o)}}function au(r){let e={l:Math.min(gt,Math.max(pe,Number.isFinite(r.l)?r.l:0)),a:Math.min(ve,Math.max(Se,Number.isFinite(r.a)?r.a:0)),b:Math.min(ve,Math.max(Se,Number.isFinite(r.b)?r.b:0))},t=(e.l+16)/116,n=e.a/500+t,o=t-e.b/200,i={x:.95047*On(n),y:On(t),z:1.08883*On(o)};return cu(i)}function lu(r){let e=Hn(lr(r.r)/255),t=Hn(lr(r.g)/255),n=Hn(lr(r.b)/255);return{x:e*.4124564+t*.3575761+n*.1804375,y:e*.2126729+t*.7151522+n*.072175,z:e*.0193339+t*.119192+n*.9503041}}function cu(r){let e=r.x*3.2404542+r.y*-1.5371385+r.z*-.4985314,t=r.x*-.969266+r.y*1.8760108+r.z*.041556,n=r.x*.0556434+r.y*-.2040259+r.z*1.0572252;return{r:Bn(e)*255,g:Bn(t)*255,b:Bn(n)*255}}function Hn(r){return r<=.04045?r/12.92:((r+.055)/1.055)**2.4}function Bn(r){let e=Math.min(1,Math.max(0,r));return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function _n(r){return r>216/24389?Math.cbrt(r):841/108*r+4/29}function On(r){let e=r**3;return e>216/24389?e:108/841*(r-4/29)}function St(r,e,t){return{r:Math.round(r.r+(e.r-r.r)*t),g:Math.round(r.g+(e.g-r.g)*t),b:Math.round(r.b+(e.b-r.b)*t)}}function M(r){return`#${[r.r,r.g,r.b].map(e=>lr(e).toString(16).padStart(2,"0")).join("")}`}function lr(r){return Math.min(255,Math.max(0,Math.round(r)))}function L(r){let e=Number.isFinite(r)?r:xe,t=Math.round(e/mt)*mt;return Math.min($e,Math.max(xe,t))}function De(r){let e=Number.isFinite(r)?r:pe,t=Math.round(e/Ie)*Ie;return Math.min(gt,Math.max(pe,t))}function F(r){let e=Number.isFinite(r)?r:0,t=Math.round(e/Ie)*Ie;return Math.min(ve,Math.max(Se,t))}function Js(r){return{l:De(r.l),a:F(r.a),b:F(r.b)}}function N(r){return Math.min(1,Math.max(0,Number.isFinite(r)?r:0))}function T(r){return Number.isFinite(r)?(r%360+360)%360:0}function We(r){return`${y(r)} px`}function Ts(r){return`${x(r)}%`}function Ue(r){return`${f(r)}%`}function Ye(r){return(f(r)/100).toString()}function Vn(r){let e=1-x(r.hardness)/100;return e<=0?0:v(Math.max(0,r.width*e*.35))}function xs(r,e,t){let n={x:v(r),y:v(e)},o=du(t);return o!==void 0&&(n.pressure=o),n}function du(r){if(uu(r))return Rt(r.pressure)}function uu(r){return cr(r)}function cr(r){return r.pointerType==="pen"}function hu(r,e){let t=e.getBoundingClientRect();return r.clientX>=t.left&&r.clientX<=t.right&&r.clientY>=t.top&&r.clientY<=t.bottom}function Is(r){let e=Math.max(Math.hypot(r.a,r.b),Math.hypot(r.c,r.d));return Number.isFinite(e)&&e>0?e:1}function pu(r){return typeof r.getCoalescedEvents=="function"?r.getCoalescedEvents():[]}function or(r,e,t){return{...r,points:r.points.slice(e,t)}}function Pe(r){return r.points.some(e=>e.pressure!==void 0)}function Fn(r){return r.shiftKey||r.ctrlKey||r.metaKey}function Rs(r){return r.code==="Space"||r.key===" "}function Su(r){return r.key==="1"&&!r.altKey&&!r.ctrlKey&&!r.metaKey&&!r.shiftKey}function ir(r){return r instanceof HTMLElement?r.isContentEditable||r.instanceOf(HTMLInputElement)||r.instanceOf(HTMLTextAreaElement)||r.instanceOf(HTMLSelectElement):!1}function Ns(r){return r instanceof Element?!!r.closest(".canvas-node, .canvas-edge, .canvas-card-menu, .canvas-menu, .canvas-menu-container, .canvas-controls, .canvas-control-group, .canvas-control-item"):!1}function Ls(r){return r instanceof Element?!!r.closest(".canvas-menu, .canvas-menu-container, .canvas-controls, .canvas-control-group, .canvas-control-item, .draw-in-canvas-brush-controls, .draw-in-canvas-color-palette, .draw-in-canvas-stroke-settings-palette"):!1}function Xe(r){return r!==null}function de(r,e){return Math.hypot(r.x-e.x,r.y-e.y)}function vu(r){let e=0;for(let t=1;t=e.minX-t&&r.minY<=e.maxY+t&&r.maxY>=e.minY-t}function Ds(r,e,t){return r.x>=e.minX-t&&r.x<=e.maxX+t&&r.y>=e.minY-t&&r.y<=e.maxY+t}function qe(r,e){return{minX:r.minX-e,minY:r.minY-e,maxX:r.maxX+e,maxY:r.maxY+e}}function Eu(r){return{x:(r.minX+r.maxX)/2,y:(r.minY+r.maxY)/2}}function As(r,e,t){return Math.min(t,Math.max(e,r))}function ku(r,e){let t=r.indexOf(e);t!==-1&&r.splice(t,1)}function sr(r,e){switch(e){case"nw":return{x:r.minX,y:r.minY};case"ne":return{x:r.maxX,y:r.minY};case"se":return{x:r.maxX,y:r.maxY};case"sw":return{x:r.minX,y:r.maxY};default:return Ae(e)}}function bu(r){switch(r){case"nw":return"se";case"ne":return"sw";case"se":return"nw";case"sw":return"ne";default:return Ae(r)}}function Kn(r){switch(r){case"nw":case"se":return"nwse-resize";case"ne":case"sw":return"nesw-resize";default:return Ae(r)}}function wu(r,e){for(let t of r)t.x=v(t.x+e.x),t.y=v(t.y+e.y)}function Pu(r,e,t){for(let n of r)n.x=v(e.x+(n.x-e.x)*t),n.y=v(e.y+(n.y-e.y)*t)}function Ms(r,e){return{minX:v(r.minX+e.x),minY:v(r.minY+e.y),maxX:v(r.maxX+e.x),maxY:v(r.maxY+e.y)}}function Hs(r,e,t){let n=ar({x:r.minX,y:r.minY},e,t),o=ar({x:r.maxX,y:r.minY},e,t),i=ar({x:r.maxX,y:r.maxY},e,t),s=ar({x:r.minX,y:r.maxY},e,t);return{minX:Math.min(n.x,o.x,i.x,s.x),minY:Math.min(n.y,o.y,i.y,s.y),maxX:Math.max(n.x,o.x,i.x,s.x),maxY:Math.max(n.y,o.y,i.y,s.y)}}function ar(r,e,t){return{x:v(e.x+(r.x-e.x)*t),y:v(e.y+(r.y-e.y)*t)}}function Bs(r){return{x:-r.x,y:-r.y}}function Tu(r){return`translate(${r.x} ${r.y})`}function xu(r,e){let t=Iu(e);return`translate(${r.x} ${r.y}) scale(${t}) translate(${-r.x} ${-r.y})`}function Iu(r){return Number(r.toFixed(4)).toString()}function dr(r){let e={x:r.x,y:r.y};return r.pressure!==void 0&&(e.pressure=r.pressure),e}function Ru(r){return r.map(dr)}function Ze(r){return{...r,handwriting:{...r.handwriting},points:Ru(r.points)}}function pr(r){return r.map(Ze)}function Nu(r){return{...r}}function Lu(r){return r.map(Nu)}function Du(r){return{strokeId:r.strokeId,previousStyle:q(r.previousStyle),nextStyle:q(r.nextStyle)}}function Au(r){return r.map(Du)}function Gn(r){switch(r.type){case"add-stroke":return{type:"add-stroke",stroke:Ze(r.stroke)};case"clear-strokes":return{type:"clear-strokes",strokes:pr(r.strokes)};case"delete-strokes":return{type:"delete-strokes",strokes:pr(r.strokes),indices:[...r.indices]};case"reorder-strokes":return{type:"reorder-strokes",beforeStrokeIds:[...r.beforeStrokeIds],afterStrokeIds:[...r.afterStrokeIds],selectedStrokeIds:[...r.selectedStrokeIds]};case"recolor-strokes":return{type:"recolor-strokes",changes:Lu(r.changes)};case"restyle-strokes":return{type:"restyle-strokes",changes:Au(r.changes)};case"move-stroke":return{type:"move-stroke",strokeId:r.strokeId,delta:dr(r.delta)};case"move-strokes":return{type:"move-strokes",strokeIds:[...r.strokeIds],delta:dr(r.delta)};case"resize-strokes":return{type:"resize-strokes",strokeIds:[...r.strokeIds],origin:dr(r.origin),scale:r.scale};default:return Ae(r)}}function Mu(r){return Number.isFinite(r.minX)&&Number.isFinite(r.minY)&&Number.isFinite(r.maxX)&&Number.isFinite(r.maxY)&&r.minX<=r.maxX&&r.minY<=r.maxY}function Ae(r){throw new Error(`Unexpected history action: ${JSON.stringify(r)}`)}var mr=class extends Y.Plugin{constructor(){super(...arguments);this.settings={...Ce};this.activeLayer=null;this.activeTarget=null;this.layers=new Set;this.isSyncing=!1;this.needsSync=!1}async onload(){await this.loadSettings(),jn(activeDocument),this.addCommand({id:"toggle-drawing-mode",name:"Toggle drawing mode on active canvas",callback:()=>{this.toggleDrawingMode()}}),this.addCommand({id:"undo-last-stroke",name:"Undo last canvas drawing stroke",callback:()=>{this.undoLastStroke()}}),this.addCommand({id:"redo-last-stroke",name:"Redo last canvas drawing stroke",callback:()=>{this.redoLastStroke()}}),this.addCommand({id:"clear-drawings",name:"Clear drawings from active canvas",callback:()=>{this.clearActiveCanvasDrawings()}}),this.addSettingTab(new kt(this.app,this)),this.app.workspace.onLayoutReady(()=>{this.syncActiveCanvasLayer()}),this.registerEvent(this.app.workspace.on("active-leaf-change",()=>{this.syncActiveCanvasLayer()})),this.registerEvent(this.app.workspace.on("file-open",()=>{this.syncActiveCanvasLayer()}))}onunload(){this.stopActiveCanvasLayer(),jn(activeDocument)}async toggleDrawingMode(){let t=await this.ensureActiveCanvasLayer();if(!t){new Y.Notice("Open a canvas file before enabling drawing mode.");return}this.toggleLayerDrawingMode(t)}async disableDrawingMode(t){var n;(n=this.activeLayer)!=null&&n.isDrawingEnabled()&&this.activeLayer.disableDrawingMode()}async clearActiveCanvasDrawings(){let t=await this.ensureActiveCanvasLayer();if(!t){new Y.Notice("Open a canvas file before clearing drawing strokes.");return}await t.clear(),new Y.Notice("Draw in canvas strokes cleared.")}async undoLastStroke(){let t=await this.ensureActiveCanvasLayer();if(!t){new Y.Notice("Open a canvas file before undoing a stroke.");return}let n=await t.undoLastStroke();new Y.Notice(n?"Last Draw in canvas stroke removed.":"No Draw in canvas strokes to undo.")}async redoLastStroke(){let t=await this.ensureActiveCanvasLayer();if(!t){new Y.Notice("Open a canvas file before redoing a stroke.");return}let n=await t.redoLastStroke();new Y.Notice(n?"Last Draw in canvas stroke restored.":"No Draw in canvas strokes to redo.")}refreshActiveLayerSettings(){var t;for(let n of this.layers)n.setSettings(this.settings);(t=this.activeLayer)==null||t.setSettings(this.settings)}setStrokeColor(t){var n;this.settings.strokeColor=t;for(let o of this.layers)o.setSettings(this.settings);(n=this.activeLayer)==null||n.setSettings(this.settings),this.saveSettings()}setStrokeWidth(t){var o;let n=y(t);this.settings.strokeWidth=n;for(let i of this.layers)i.setSettings(this.settings);(o=this.activeLayer)==null||o.setSettings(this.settings),this.saveSettings()}setStrokeHardness(t){var o;let n=x(t);this.settings.strokeHardness=n;for(let i of this.layers)i.setSettings(this.settings);(o=this.activeLayer)==null||o.setSettings(this.settings),this.saveSettings()}setStrokeOpacity(t){var o;let n=f(t);this.settings.strokeOpacity=n;for(let i of this.layers)i.setSettings(this.settings);(o=this.activeLayer)==null||o.setSettings(this.settings),this.saveSettings()}setFreehandSliderValue(t,n){this.settings[t]=k(t,n),this.refreshActiveLayerSettings(),this.saveSettings()}setBeautifulStrokes(t){this.settings.beautifulStrokes=t,this.refreshActiveLayerSettings(),this.saveSettings()}setPenCursorFallback(t){this.settings.usePenCursorFallback=t,this.refreshActiveLayerSettings(),this.saveSettings()}setAllowTinyCanvasElements(t){this.settings.allowTinyCanvasElements=t,this.refreshActiveLayerSettings(),this.saveSettings()}async loadSettings(){this.settings=oo(await this.loadData())}async saveSettings(){await this.saveData(this.settings)}async ensureActiveCanvasLayer(){return await this.syncActiveCanvasLayer(),this.activeLayer}async syncActiveCanvasLayer(){if(this.isSyncing){this.needsSync=!0;return}this.isSyncing=!0;try{do this.needsSync=!1,await this.syncActiveCanvasLayerOnce();while(this.needsSync)}finally{this.isSyncing=!1}}async syncActiveCanvasLayerOnce(){let t=no(this.app);if(!t){await this.stopActiveCanvasLayer();return}if(this.activeLayer&&this.activeTarget&&Hu(this.activeTarget,t)){this.activeLayer.setSettings(this.settings);return}await this.stopActiveCanvasLayer();let n=null;try{n=new ur(this.app,t,this.settings,()=>{this.toggleActiveLayerDrawingMode()},o=>{this.setStrokeColor(o)},o=>{this.setStrokeWidth(o)},o=>{this.setStrokeHardness(o)},o=>{this.setStrokeOpacity(o)},(o,i)=>{this.setFreehandSliderValue(o,i)},o=>{this.setBeautifulStrokes(o)}),this.layers.add(n),await n.start(),this.activeLayer=n,this.activeTarget=t}catch(o){n&&(this.layers.delete(n),await n.stop()),console.error("Draw in canvas could not start",o),new Y.Notice(`Draw in canvas could not start: ${Bu(o)}`)}}toggleActiveLayerDrawingMode(){this.activeLayer&&this.toggleLayerDrawingMode(this.activeLayer)}toggleLayerDrawingMode(t){t.isDrawingEnabled()?t.disableDrawingMode():t.enableDrawingMode()}async stopActiveCanvasLayer(){let t=new Set(this.layers);this.activeLayer&&t.add(this.activeLayer),this.layers.clear(),this.activeLayer=null,this.activeTarget=null;for(let n of t)await n.stop()}};function Hu(r,e){return r.leaf===e.leaf&&r.file.path===e.file.path}function Bu(r){return r instanceof Error?r.message:String(r)} + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/draw-in-canvas/manifest.json b/.obsidian/plugins/draw-in-canvas/manifest.json new file mode 100644 index 0000000..ca23d3c --- /dev/null +++ b/.obsidian/plugins/draw-in-canvas/manifest.json @@ -0,0 +1,9 @@ +{ + "id": "draw-in-canvas", + "name": "Draw in Canvas", + "version": "0.1.8", + "minAppVersion": "1.5.0", + "description": "Draw freehand annotations on JSON Canvas files.", + "author": "xRyul", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/draw-in-canvas/styles.css b/.obsidian/plugins/draw-in-canvas/styles.css new file mode 100644 index 0000000..bf7a100 --- /dev/null +++ b/.obsidian/plugins/draw-in-canvas/styles.css @@ -0,0 +1,1587 @@ +.draw-in-canvas-capture-layer { + position: absolute; + inset: 0; + z-index: 3; + cursor: crosshair; + pointer-events: auto; + touch-action: none; + background: transparent; +} + +.draw-in-canvas-capture-layer.is-pen-cursor-active { + cursor: none; +} + +.draw-in-canvas-capture-layer:focus { + outline: none; +} + +.draw-in-canvas-pen-cursor { + --draw-in-canvas-pen-cursor-size: 8px; + + position: fixed; + top: 0; + left: 0; + z-index: 10000; + box-sizing: border-box; + width: var(--draw-in-canvas-pen-cursor-size); + height: var(--draw-in-canvas-pen-cursor-size); + border: 1.5px solid var(--draw-in-canvas-current-color, var(--interactive-accent)); + border-radius: 50%; + color: var(--draw-in-canvas-current-color, var(--interactive-accent)); + opacity: 0; + pointer-events: none; + transform: translate3d(-9999px, -9999px, 0) translate(-50%, -50%); + transition: opacity 80ms ease-out; + filter: drop-shadow(0 0 1px var(--background-primary)) drop-shadow(0 0 2px rgb(0 0 0 / 0.35)); + will-change: transform; +} + +.draw-in-canvas-pen-cursor::before, +.draw-in-canvas-pen-cursor::after { + content: ""; + position: absolute; + border-radius: 999px; + background: currentColor; + opacity: 0.85; + pointer-events: none; +} + +.draw-in-canvas-pen-cursor::before { + top: -5px; + bottom: -5px; + left: 50%; + width: 1px; + transform: translateX(-50%); +} + +.draw-in-canvas-pen-cursor::after { + top: 50%; + right: -5px; + left: -5px; + height: 1px; + transform: translateY(-50%); +} + +.draw-in-canvas-pen-cursor.is-visible { + opacity: 1; +} + +body.draw-in-canvas-color-palette-open .tooltip { + display: none; +} + +.draw-in-canvas-visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; +} + +.draw-in-canvas-control-group { + position: relative; +} + +.draw-in-canvas-control-item { + position: relative; +} + +.draw-in-canvas-pencil-control-item::after { + content: ""; + position: absolute; + right: 6px; + bottom: 6px; + width: 8px; + height: 8px; + border: 1px solid var(--background-primary); + border-radius: 50%; + background: var(--draw-in-canvas-current-color, currentColor); + box-shadow: 0 0 0 1px var(--background-modifier-border); + pointer-events: none; +} + +.draw-in-canvas-brush-controls { + --draw-in-canvas-brush-control-bg: var(--background-primary); + --draw-in-canvas-brush-control-hover-bg: var(--background-modifier-hover); + --draw-in-canvas-brush-control-border: var(--background-modifier-border); + --draw-in-canvas-brush-control-border-hover: var(--background-modifier-border-hover); + --draw-in-canvas-brush-control-text: var(--text-muted); + + position: absolute; + top: 50%; + left: max(4px, env(safe-area-inset-left)); + z-index: 1001; + display: grid; + grid-template-rows: minmax(64px, 1fr) 28px 28px minmax(64px, 1fr); + justify-items: center; + align-items: center; + box-sizing: border-box; + width: 44px; + height: min(320px, calc(100vh - 120px)); + max-height: calc(100% - 32px); + gap: 8px; + padding: 6px 4px; + border: 1px solid var(--draw-in-canvas-brush-control-border); + border-radius: var(--radius-m); + background: var(--draw-in-canvas-brush-control-bg); + box-shadow: var(--shadow-s); + color: var(--draw-in-canvas-brush-control-text); + pointer-events: auto; + transform: translateY(-50%); + user-select: none; +} + +.draw-in-canvas-brush-slider-control { + position: relative; + display: block; + width: 100%; + height: 100%; + min-height: 72px; + border-radius: var(--radius-s); + cursor: ns-resize; + touch-action: none; +} + +.draw-in-canvas-brush-slider-control::before, +.draw-in-canvas-brush-slider-control::after { + position: absolute; + left: 50%; + z-index: 1; + color: color-mix(in srgb, var(--draw-in-canvas-brush-control-text) 42%, transparent); + font-size: 8px; + font-weight: 600; + line-height: 1; + pointer-events: none; + transform: translateX(-50%); +} + +.draw-in-canvas-brush-slider-control::before { + top: 6px; + content: "+"; +} + +.draw-in-canvas-brush-slider-control::after { + bottom: 6px; + content: "−"; +} + +.draw-in-canvas-brush-slider-label, +.draw-in-canvas-brush-slider-value { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; +} + +.draw-in-canvas-brush-slider-track { + position: absolute; + inset: 3px 7px; + overflow: visible; + border-radius: var(--radius-s); + background: linear-gradient( + to bottom, + color-mix(in srgb, var(--background-modifier-hover) 42%, var(--background-primary)) 0%, + color-mix(in srgb, var(--background-modifier-hover) 72%, var(--background-primary)) 100% + ); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--draw-in-canvas-brush-control-border) 72%, transparent); + pointer-events: none; +} + +.draw-in-canvas-brush-slider-track::before { + content: ""; + position: absolute; + top: var(--draw-in-canvas-brush-slider-position, 50%); + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; + background: linear-gradient( + to top, + color-mix(in srgb, var(--draw-in-canvas-current-color) 12%, var(--background-modifier-hover)) 0%, + color-mix(in srgb, var(--draw-in-canvas-current-color) 18%, var(--background-modifier-hover)) 100% + ); + box-shadow: inset 0 1px 0 color-mix(in srgb, var(--draw-in-canvas-current-color) 16%, transparent); + opacity: 0.65; + pointer-events: none; +} + +.draw-in-canvas-brush-slider-thumb { + position: absolute; + top: var(--draw-in-canvas-brush-slider-position, 50%); + left: 50%; + width: 30px; + height: 16px; + border: 1px solid color-mix(in srgb, var(--interactive-accent) 42%, var(--draw-in-canvas-brush-control-border-hover)); + border-radius: var(--radius-s); + background: var(--background-primary); + box-shadow: 0 1px 3px rgb(0 0 0 / 0.18); + transform: translate(-50%, -50%); + z-index: 2; + pointer-events: none; +} + +.draw-in-canvas-brush-slider-control:hover .draw-in-canvas-brush-slider-thumb, +.draw-in-canvas-brush-slider-control:focus-visible .draw-in-canvas-brush-slider-thumb { + border-color: color-mix(in srgb, var(--interactive-accent) 68%, var(--draw-in-canvas-brush-control-border-hover)); + background: var(--background-primary); + box-shadow: 0 1px 4px rgb(0 0 0 / 0.22), 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 25%, transparent); +} + +.draw-in-canvas-brush-slider-control:focus-visible { + box-shadow: 0 0 0 2px var(--interactive-accent); + outline: none; +} + +.draw-in-canvas-brush-color-button, +.draw-in-canvas-brush-settings-button { + display: grid; + place-items: center; + box-sizing: border-box; + width: 26px; + height: 26px; + padding: 0; + border: 1px solid var(--draw-in-canvas-brush-control-border); + border-radius: var(--radius-s); + background: var(--interactive-normal); + color: var(--draw-in-canvas-brush-control-text); + appearance: none; + -webkit-appearance: none; + box-shadow: none; + cursor: pointer; +} + +.draw-in-canvas-brush-color-button::after { + content: ""; + display: block; + width: 14px; + height: 14px; + border-radius: 4px; + background: var(--draw-in-canvas-current-color, #a8a8a8); +} + +.draw-in-canvas-brush-color-button:hover, +.draw-in-canvas-brush-color-button:focus-visible, +.draw-in-canvas-brush-settings-button:hover, +.draw-in-canvas-brush-settings-button:focus-visible { + border-color: var(--draw-in-canvas-brush-control-border-hover); + background: var(--interactive-hover); + outline: none; +} + +.draw-in-canvas-brush-settings-button svg { + width: 16px; + height: 16px; + stroke-width: 2; +} + +@media (max-height: 420px) { + .draw-in-canvas-brush-controls { + grid-template-rows: minmax(52px, 1fr) 26px 26px minmax(52px, 1fr); + width: 40px; + height: min(260px, calc(100vh - 88px)); + gap: 6px; + padding: 5px 3px; + } + + .draw-in-canvas-brush-slider-control { + min-height: 60px; + } + + .draw-in-canvas-brush-slider-thumb { + width: 26px; + height: 14px; + } +} + +.draw-in-canvas-color-palette, +.draw-in-canvas-stroke-settings-palette { + position: fixed; + z-index: var(--layer-popover, 30); + display: grid; + box-sizing: border-box; + width: 260px; + gap: 10px; + padding: 12px; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-m); + background: var(--background-primary); + box-shadow: var(--shadow-s); +} + +.draw-in-canvas-color-palette { + --draw-in-canvas-color-palette-width: 220px; + --draw-in-canvas-color-disc-size: 206px; + --draw-in-canvas-color-palette-gap: 5px; + --draw-in-canvas-color-palette-padding: 6px; + + grid-template-rows: auto minmax(0, 1fr) auto; + width: min(var(--draw-in-canvas-color-palette-width), calc(100vw - 10px)); + max-height: calc(100vh - 10px); + gap: var(--draw-in-canvas-color-palette-gap); + padding: var(--draw-in-canvas-color-palette-padding); + overflow: hidden; +} + +.draw-in-canvas-color-palette-header { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + min-width: 0; + gap: 5px; +} + +.draw-in-canvas-color-palette-title { + font-size: var(--font-ui-smaller); + font-weight: 700; + line-height: 1.2; + color: var(--text-normal); +} + +.draw-in-canvas-current-color { + display: inline-flex; + align-items: center; + justify-content: flex-end; + min-width: 0; + flex: 1 1 0; + gap: 3px; + color: var(--text-muted); + font-size: 10px; + font-variant-numeric: tabular-nums; + line-height: 16px; +} + +.draw-in-canvas-current-color-preview { + display: block; + width: 12px; + height: 12px; + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + background: var(--draw-in-canvas-current-color, var(--interactive-accent)); + box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.18); + flex: 0 0 12px; +} + +.draw-in-canvas-current-color-values { + display: inline-flex; + align-items: center; + justify-content: flex-end; + min-width: 0; + overflow: hidden; + flex: 1 1 auto; + gap: 2px; +} + +.draw-in-canvas-color-palette .draw-in-canvas-current-color-label { + box-sizing: border-box; + width: 52px; + max-width: 52px; + min-width: 52px; + height: 18px; + min-height: 18px; + max-height: 18px; + padding: 0 3px; + flex: 0 0 52px; + overflow: hidden; + border: 1px solid transparent; + border-radius: var(--radius-s); + appearance: none; + -webkit-appearance: none; + background: transparent; + box-shadow: none; + color: inherit; + font: inherit; + font-size: inherit; + font-variant-numeric: tabular-nums; + line-height: 16px; + text-align: left; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + cursor: pointer; +} + +.draw-in-canvas-current-color-label:hover, +.draw-in-canvas-current-color-label:focus { + border-color: var(--background-modifier-border); + outline: none; +} + +.draw-in-canvas-current-color-label.is-editing { + border-color: var(--interactive-accent); + background: var(--background-secondary); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 22%, transparent); + color: var(--text-normal); + cursor: text; +} + +.draw-in-canvas-current-color-label.is-invalid { + border-color: var(--text-error); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--text-error) 18%, transparent); +} + +.draw-in-canvas-color-palette-panels { + min-height: 0; + overflow: auto; + padding: 1px; + margin: -1px; +} + +.draw-in-canvas-color-palette-panel { + display: grid; + gap: 5px; + width: 100%; +} + +.draw-in-canvas-color-palette-panel[hidden] { + display: none; +} + +.draw-in-canvas-color-disc-panel { + justify-items: stretch; +} + +.draw-in-canvas-color-disc-picker { + --draw-in-canvas-color-wheel-hue-color: #8b5cf6; + --draw-in-canvas-color-wheel-selected-color: #8b5cf6; + --draw-in-canvas-color-wheel-hue-x: 50%; + --draw-in-canvas-color-wheel-hue-y: 8%; + --draw-in-canvas-color-wheel-disc-x: 50%; + --draw-in-canvas-color-wheel-disc-y: 50%; + + position: relative; + justify-self: center; + width: 100%; + max-width: var(--draw-in-canvas-color-disc-size); + aspect-ratio: 1; + border-radius: 50%; + user-select: none; + touch-action: none; +} + +.draw-in-canvas-color-wheel-hue-control, +.draw-in-canvas-color-wheel-disc-field { + position: absolute; + box-sizing: border-box; + cursor: crosshair; + touch-action: none; +} + +.draw-in-canvas-color-wheel-hue-control { + inset: 0; + border-radius: 50%; + background: conic-gradient(from 90deg, #ff0040, #ff7a00, #ffe600, #47ff00, #00ffd5, #0066ff, #8b00ff, #ff00d4, #ff0040); + box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.16), 0 0 0 1px var(--background-modifier-border); +} + +.draw-in-canvas-color-wheel-hue-control:focus-visible { + outline: none; + box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.16), 0 0 0 2px var(--interactive-accent); +} + +.draw-in-canvas-color-wheel-disc-field { + inset: 22%; + z-index: 2; + overflow: visible; + border-radius: 50%; + background: + linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), + linear-gradient(to right, #fff 0%, var(--draw-in-canvas-color-wheel-hue-color) 100%); + box-shadow: 0 0 0 4px var(--background-primary), inset 0 0 0 1px rgb(255 255 255 / 0.16); +} + +.draw-in-canvas-color-wheel-disc-field:focus-visible { + outline: none; + box-shadow: 0 0 0 4px var(--background-primary), 0 0 0 6px var(--interactive-accent), inset 0 0 0 1px rgb(255 255 255 / 0.16); +} + +.draw-in-canvas-color-wheel-thumb { + position: absolute; + z-index: 3; + box-sizing: border-box; + width: 12px; + height: 12px; + border: 2px solid #fff; + border-radius: 50%; + background: var(--draw-in-canvas-color-wheel-selected-color); + box-shadow: 0 1px 4px rgb(0 0 0 / 0.45), 0 0 0 1px rgb(0 0 0 / 0.28); + pointer-events: none; +} + +.draw-in-canvas-color-wheel-hue-thumb { + left: var(--draw-in-canvas-color-wheel-hue-x); + top: var(--draw-in-canvas-color-wheel-hue-y); + background: var(--draw-in-canvas-color-wheel-hue-color); + width: calc(18% - 4px); + height: calc(18% - 4px); + border-width: 2px; + transform: translate(-50%, -50%); +} + +.draw-in-canvas-color-wheel-disc-thumb { + left: var(--draw-in-canvas-color-wheel-disc-x); + top: var(--draw-in-canvas-color-wheel-disc-y); + width: 12px; + height: 12px; + z-index: 4; + transform: translate(-50%, -50%); +} + +.draw-in-canvas-color-disc-palette { + display: grid; + width: 100%; + gap: 3px; +} + +.draw-in-canvas-color-disc-palette-title { + font-size: var(--font-ui-smaller); + font-weight: 600; + line-height: 1.2; + color: var(--text-muted); +} + +.draw-in-canvas-hsl-controls { + gap: 6px; + margin-top: 6px; +} + +.draw-in-canvas-hsl-header { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 6px; +} + +.draw-in-canvas-color-mode-segmented { + display: inline-grid; + grid-auto-flow: column; + grid-auto-columns: minmax(0, auto); + align-items: center; + box-sizing: border-box; + height: 22px; + padding: 2px; + flex: 0 0 auto; + gap: 1px; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-s); + background: color-mix(in srgb, var(--background-secondary) 86%, transparent); +} + +.draw-in-canvas-color-palette button.draw-in-canvas-color-mode-button { + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + height: 16px; + min-height: 16px; + padding: 0 5px; + border: 0; + border-radius: calc(var(--radius-s) - 2px); + appearance: none; + -webkit-appearance: none; + background: transparent; + box-shadow: none; + color: var(--text-muted); + font-size: var(--font-ui-smaller); + font-weight: 600; + line-height: 16px; + cursor: pointer; +} + +.draw-in-canvas-color-palette button.draw-in-canvas-color-mode-button:hover, +.draw-in-canvas-color-palette button.draw-in-canvas-color-mode-button:focus-visible { + background: var(--background-modifier-hover); + color: var(--text-normal); + outline: none; +} + +.draw-in-canvas-color-palette button.draw-in-canvas-color-mode-button.is-active { + background: var(--background-primary); + box-shadow: 0 1px 2px rgb(0 0 0 / 0.12); + color: var(--text-normal); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-value-input[type="text"] { + box-sizing: border-box; + width: auto; + max-width: none; + height: 18px; + min-width: 0; + min-height: 18px; + max-height: 18px; + padding: 0 3px; + flex: 1 1 76px; + overflow: hidden; + border: 1px solid transparent; + border-radius: var(--radius-s); + appearance: none; + -webkit-appearance: none; + background: transparent; + box-shadow: none; + color: var(--text-muted); + font-size: inherit; + font-variant-numeric: tabular-nums; + line-height: 16px; + text-align: left; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-value-input[type="text"]:hover:not(.is-editing):not(.is-invalid) { + border-color: var(--background-modifier-border); + background: color-mix(in srgb, var(--background-modifier-hover) 45%, transparent); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-value-input[type="text"]:focus { + border-color: transparent; + background: transparent; + box-shadow: none; + outline: none; +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-value-input[type="text"].is-editing { + border-color: var(--interactive-accent); + background: var(--background-secondary); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 22%, transparent); + color: var(--text-normal); + cursor: text; +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-value-input[type="text"].is-invalid { + border-color: var(--text-error); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--text-error) 18%, transparent); +} + +.draw-in-canvas-hsl-slider-list { + display: grid; + gap: 5px; +} + +.draw-in-canvas-hsl-slider-control { + gap: 2px 6px; +} + +.draw-in-canvas-hsl-slider-value { + min-width: 38px; + padding: 0 6px; +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"] { + --draw-in-canvas-hsl-slider-gradient: var(--background-modifier-border); + --draw-in-canvas-hsl-slider-thumb-color: var(--interactive-accent); + + width: 100%; + height: 20px; + margin: 0; + appearance: none; + -webkit-appearance: none; + background: transparent; + accent-color: var(--draw-in-canvas-hsl-slider-thumb-color); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]::-webkit-slider-runnable-track { + height: 6px; + border-radius: 999px; + background: var(--draw-in-canvas-hsl-slider-gradient); + box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]::-webkit-slider-thumb { + width: 14px; + height: 14px; + margin-top: 0; + border: 2px solid var(--background-primary); + border-radius: 50%; + appearance: none; + -webkit-appearance: none; + background: var(--draw-in-canvas-hsl-slider-thumb-color); + box-shadow: 0 0 0 1px var(--background-modifier-border-hover), 0 1px 2px rgb(0 0 0 / 0.3); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]:focus { + outline: none; +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]:focus-visible::-webkit-slider-thumb { + box-shadow: 0 0 0 1px var(--background-primary), 0 0 0 3px color-mix(in srgb, var(--interactive-accent) 36%, transparent); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]::-moz-range-track { + height: 6px; + border: 0; + border-radius: 999px; + background: var(--draw-in-canvas-hsl-slider-gradient); + box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); +} + +.draw-in-canvas-color-palette input.draw-in-canvas-hsl-slider[type="range"]::-moz-range-thumb { + width: 14px; + height: 14px; + border: 2px solid var(--background-primary); + border-radius: 50%; + background: var(--draw-in-canvas-hsl-slider-thumb-color); + box-shadow: 0 0 0 1px var(--background-modifier-border-hover), 0 1px 2px rgb(0 0 0 / 0.3); +} + +.draw-in-canvas-color-disc-palette-swatches { + display: grid; + grid-template-columns: repeat(10, minmax(0, 1fr)); + overflow: hidden; + border: 1px solid var(--background-modifier-border); + border-radius: 0; +} + +.draw-in-canvas-color-palette .draw-in-canvas-color-disc-palette-swatch { + box-sizing: border-box; + width: 100%; + aspect-ratio: 1; + height: auto; + padding: 0; + margin: 0; + border: 0; + appearance: none; + -webkit-appearance: none; + background-image: none; + background-color: var(--draw-in-canvas-swatch-color); + box-shadow: none; + cursor: pointer; +} + + +.draw-in-canvas-color-history-swatches.is-empty { + display: block; + padding: 4px 5px; + border-style: dashed; + overflow: visible; +} + +.draw-in-canvas-color-history-empty { + display: block; + color: var(--text-faint); + font-size: var(--font-ui-smaller); + line-height: 1.25; +} + +.draw-in-canvas-color-disc-palette-swatch:hover, +.draw-in-canvas-color-disc-palette-swatch:focus-visible { + z-index: 1; + box-shadow: inset 0 0 0 1px var(--background-primary), inset 0 0 0 3px var(--background-modifier-border-hover); + outline: none; +} + +.draw-in-canvas-color-disc-palette-swatch.is-selected { + z-index: 2; + box-shadow: inset 0 0 0 1px var(--background-primary), inset 0 0 0 3px var(--interactive-accent); +} + +.draw-in-canvas-presets-panel { + grid-template-columns: 1fr; +} + +.draw-in-canvas-color-palette-swatch-grid { + display: grid; + grid-template-columns: repeat(10, minmax(0, 1fr)); + gap: 0; + overflow: hidden; + border: 1px solid var(--background-modifier-border); + border-radius: 0; +} + +.draw-in-canvas-color-palette .draw-in-canvas-color-swatch { + box-sizing: border-box; + width: 20px; + height: 20px; + padding: 0; + border: 1px solid var(--background-modifier-border); + border-radius: 0; + margin: 0; + appearance: none; + -webkit-appearance: none; + background-image: none; + background-color: var(--draw-in-canvas-swatch-color); + box-shadow: none; + cursor: pointer; +} + +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-swatch { + position: relative; + width: 100%; + aspect-ratio: 1; + height: auto; + border: 0; +} + +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-swatch, +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-picker-swatch { + border-radius: 0; +} + + +.draw-in-canvas-color-swatch:hover, +.draw-in-canvas-color-swatch:focus-visible, +.draw-in-canvas-color-picker-swatch:focus-within { + box-shadow: 0 0 0 2px var(--background-modifier-border-hover); + outline: none; +} + +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-swatch:hover, +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-swatch:focus-visible { + z-index: 1; + box-shadow: inset 0 0 0 2px var(--background-modifier-border-hover); +} + +.draw-in-canvas-color-swatch.is-selected { + box-shadow: 0 0 0 2px var(--background-primary), 0 0 0 4px var(--interactive-accent); +} + +.draw-in-canvas-color-palette-swatch-grid .draw-in-canvas-color-swatch.is-selected { + z-index: 2; + box-shadow: inset 0 0 0 1px var(--background-primary), inset 0 0 0 3px var(--interactive-accent); +} + +.draw-in-canvas-color-picker-swatch { + position: relative; + display: grid; + place-items: center; + overflow: hidden; + justify-self: center; + color: var(--text-normal); +} + +.draw-in-canvas-native-color-picker { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + padding: 0; + border: 0; + opacity: 0; + cursor: pointer; +} + +.draw-in-canvas-color-picker-icon { + position: relative; + z-index: 1; + display: inline-flex; + align-items: center; + justify-content: center; + width: 14px; + height: 14px; + color: var(--text-normal); + line-height: 0; + filter: drop-shadow(0 1px 1px rgb(255 255 255 / 0.32)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.28)); + pointer-events: none; +} + +.draw-in-canvas-color-picker-icon svg { + display: block; + width: 13px; + height: 13px; + stroke-width: 2.25px; +} + +.draw-in-canvas-custom-color-control { + display: grid; + gap: 4px; + width: 100%; + margin-top: 1px; +} + +.draw-in-canvas-custom-color-field { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + align-items: center; + gap: 4px; + font-size: var(--font-ui-smaller); + line-height: 1.2; + color: var(--text-muted); +} + +.draw-in-canvas-custom-color-hex-input { + width: 100%; + height: 20px; + box-sizing: border-box; + padding: 0 4px; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-s); + background: var(--background-secondary); + color: var(--text-normal); + font-variant-numeric: tabular-nums; + text-transform: uppercase; +} + +.draw-in-canvas-custom-color-hex-input:focus { + border-color: var(--interactive-accent); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 22%, transparent); + outline: none; +} + +.draw-in-canvas-custom-color-hex-input.is-invalid { + border-color: var(--text-error); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--text-error) 18%, transparent); +} + +.draw-in-canvas-custom-color-shades { + display: grid; + grid-template-columns: repeat(6, minmax(0, 1fr)); + gap: 2px; +} + +.draw-in-canvas-custom-color-shade { + box-sizing: border-box; + width: 100%; + height: 14px; + padding: 0; + border: 1px solid var(--background-modifier-border); + border-radius: 0; + appearance: none; + -webkit-appearance: none; + background-color: var(--draw-in-canvas-custom-shade-color); + cursor: pointer; +} + +.draw-in-canvas-custom-color-shade:hover, +.draw-in-canvas-custom-color-shade:focus-visible { + box-shadow: 0 0 0 2px var(--background-modifier-border-hover); + outline: none; +} + +.draw-in-canvas-custom-color-shade.is-selected { + box-shadow: 0 0 0 1px var(--background-primary), 0 0 0 3px var(--interactive-accent); +} + +.draw-in-canvas-color-palette-tabs { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 2px; + padding-top: 4px; + border-top: 1px solid var(--background-modifier-border); +} + +.draw-in-canvas-color-palette-tab { + display: grid; + place-items: center; + min-width: 0; + height: 22px; + padding: 0 4px; + border: 0; + border-radius: var(--radius-s); + appearance: none; + -webkit-appearance: none; + background: transparent; + box-shadow: none; + color: var(--text-muted); + font-size: var(--font-ui-smaller); + font-weight: 600; + line-height: 1; + cursor: pointer; +} + +.draw-in-canvas-color-palette-tab:hover, +.draw-in-canvas-color-palette-tab:focus-visible { + background: var(--background-modifier-hover); + color: var(--text-normal); + outline: none; +} + +.draw-in-canvas-color-palette-tab.is-active { + background: var(--background-modifier-hover); + color: var(--interactive-accent); +} + +.draw-in-canvas-stroke-settings-control { + display: grid; + gap: 12px; + width: 100%; +} + +.draw-in-canvas-palette-section { + display: grid; + gap: 8px; + width: 100%; +} + +.draw-in-canvas-palette-section + .draw-in-canvas-palette-section { + padding-top: 10px; + border-top: 1px solid var(--background-modifier-border); +} + +.draw-in-canvas-palette-section-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; +} + +.draw-in-canvas-palette-section-actions { + display: inline-flex; + align-items: center; + gap: 8px; +} + +.draw-in-canvas-palette-section-title { + font-size: var(--font-ui-smaller); + font-weight: 600; + line-height: 1.2; + color: var(--text-normal); +} + +.draw-in-canvas-palette-section-description { + margin: -2px 0 0; + font-size: var(--font-ui-smaller); + line-height: 1.3; + color: var(--text-faint); +} + +.draw-in-canvas-handwriting-toggle { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: var(--font-ui-smaller); + line-height: 1; + color: var(--text-muted); + cursor: pointer; +} + +.draw-in-canvas-handwriting-toggle-input { + margin: 0; + accent-color: var(--interactive-accent); +} + +.draw-in-canvas-stroke-settings-palette .draw-in-canvas-palette-reset-button { + display: inline-flex; + align-items: center; + justify-content: center; + height: 22px; + min-height: 22px; + max-height: 22px; + padding: 0 6px; + border: 0; + border-radius: var(--radius-s); + appearance: none; + -webkit-appearance: none; + background: transparent; + box-shadow: none; + color: var(--text-muted); + font-family: inherit; + font-size: var(--font-ui-smaller); + line-height: 20px; + cursor: pointer; +} + +.draw-in-canvas-stroke-settings-palette .draw-in-canvas-palette-reset-button:hover, +.draw-in-canvas-stroke-settings-palette .draw-in-canvas-palette-reset-button:focus-visible { + background: var(--background-modifier-hover); + color: var(--text-normal); + outline: none; +} + +.draw-in-canvas-freehand-controls.is-disabled .draw-in-canvas-freehand-control { + opacity: 0.55; +} + +.draw-in-canvas-freehand-controls.is-disabled .draw-in-canvas-stroke-width-slider { + cursor: not-allowed; +} + +.draw-in-canvas-stroke-slider-control { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + gap: 4px 8px; +} + +.draw-in-canvas-freehand-control { + padding-top: 2px; +} + +.draw-in-canvas-stroke-width-label { + grid-column: 1 / -1; + grid-row: 1; + font-size: var(--font-ui-smaller); + line-height: 1.2; + color: var(--text-muted); +} + +.draw-in-canvas-stroke-width-value { + grid-column: 2; + grid-row: 2; + display: inline-flex; + align-items: center; + justify-content: flex-end; + min-width: 44px; + height: 20px; + padding: 0 7px; + border-radius: 999px; + background: var(--background-secondary); + font-variant-numeric: tabular-nums; + line-height: 1; + color: var(--text-normal); +} + +.draw-in-canvas-stroke-width-slider { + grid-column: 1; + grid-row: 2; + display: block; + width: 100%; + height: 20px; + margin: 0; + accent-color: var(--interactive-accent); + cursor: pointer; +} + +.draw-in-canvas-stroke-settings-palette input.draw-in-canvas-stroke-width-slider[type="range"] { + width: 100%; +} + +.draw-in-canvas-brush-preview { + position: fixed; + z-index: var(--layer-popover, 30); + display: inline-grid; + grid-template-columns: 40px auto; + align-items: center; + box-sizing: border-box; + min-width: 112px; + max-width: 180px; + gap: 8px; + padding: 8px 10px 8px 8px; + border: 1px solid var(--background-modifier-border); + border-radius: 999px; + background: color-mix(in srgb, var(--background-primary) 94%, transparent); + box-shadow: var(--shadow-s); + color: var(--text-normal); + pointer-events: none; + user-select: none; +} + +.draw-in-canvas-brush-preview-sample { + display: grid; + place-items: center; + width: 40px; + height: 40px; + border-radius: 50%; + background: var(--background-secondary); + box-shadow: inset 0 0 0 1px var(--background-modifier-border); +} + +.draw-in-canvas-brush-preview-dot { + display: block; + width: var(--draw-in-canvas-brush-preview-size, 4px); + height: var(--draw-in-canvas-brush-preview-size, 4px); + border: 1px solid var(--background-primary); + border-radius: 50%; + background: var(--draw-in-canvas-brush-preview-color, currentColor); + opacity: var(--draw-in-canvas-brush-preview-opacity, 1); + box-shadow: 0 0 0 1px var(--background-modifier-border); +} + +.draw-in-canvas-brush-preview-text { + display: grid; + min-width: 0; + gap: 2px; +} + +.draw-in-canvas-brush-preview-value, +.draw-in-canvas-brush-preview-detail { + overflow: hidden; + font-variant-numeric: tabular-nums; + line-height: 1; + text-overflow: ellipsis; + white-space: nowrap; +} + +.draw-in-canvas-brush-preview-value { + font-size: var(--font-ui-small); + font-weight: 600; +} + +.draw-in-canvas-brush-preview-detail { + color: var(--text-muted); + font-size: var(--font-ui-smaller); +} + +.draw-in-canvas-control-item.is-active { + background-color: var(--background-modifier-hover); + color: var(--interactive-accent); +} + +.draw-in-canvas-control-item.is-active svg { + stroke-width: 2.5px; +} + +.canvas-menu .draw-in-canvas-scale-button svg { + stroke-width: 2.4px; +} + +/* Obsidian's native reset/fit zoom icons are visually similar; use short text labels instead. */ +.canvas-controls .canvas-control-item[aria-label^="Reset zoom"], +.canvas-controls .canvas-control-item[aria-label^="Zoom to fit"], +.canvas-controls .canvas-control-item[aria-label^="Fit"] { + position: relative; + overflow: hidden; +} + +.canvas-controls .canvas-control-item[aria-label^="Reset zoom"] svg, +.canvas-controls .canvas-control-item[aria-label^="Zoom to fit"] svg, +.canvas-controls .canvas-control-item[aria-label^="Fit"] svg { + visibility: hidden; +} + +.canvas-controls .canvas-control-item[aria-label^="Reset zoom"]::before, +.canvas-controls .canvas-control-item[aria-label^="Zoom to fit"]::before, +.canvas-controls .canvas-control-item[aria-label^="Fit"]::before { + position: absolute; + inset: 0; + display: grid; + place-items: center; + color: currentColor; + font-size: 10px; + font-weight: 700; + font-variant-numeric: tabular-nums; + letter-spacing: -0.06em; + line-height: 1; + pointer-events: none; +} + +.canvas-controls .canvas-control-item[aria-label^="Reset zoom"]::before { + content: "100%"; +} + +.canvas-controls .canvas-control-item[aria-label^="Zoom to fit"]::before, +.canvas-controls .canvas-control-item[aria-label^="Fit"]::before { + content: "Fit"; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node .canvas-node-container { + border-width: 0; + border-radius: min(var(--radius-m), 4%); + box-shadow: + inset 0 0 0 var(--draw-in-canvas-tiny-border-width, 1px) var(--background-modifier-border), + 0 var(--draw-in-canvas-tiny-card-shadow-y, 0.5px) var(--draw-in-canvas-tiny-card-shadow-blur, 1px) var(--draw-in-canvas-tiny-card-shadow-spread, 0.5px) rgb(0 0 0 / 0.1); +} + +/* Obsidian image embeds add a 3px end/bottom gutter; at tiny canvas sizes that becomes a large zoomed gap. */ +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-content.media-embed.image-embed { + width: 100%; + height: 100%; + min-width: 0; + min-height: 0; + padding: 0; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-content.media-embed.image-embed > img { + display: block; + width: 100%; + height: 100%; + min-width: 0; + min-height: 0; + max-width: none; + max-height: none; + object-fit: contain; + object-position: center; + flex: 0 1 auto; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-selection { + border-width: 0; + box-shadow: inset 0 0 0 var(--draw-in-canvas-tiny-selection-border-width, 2px) var(--color-accent); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-selection:not(.mod-group-selection):not(.mod-node-highlight) { + z-index: 10000; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-selection.mod-group-selection { + border-radius: var(--draw-in-canvas-tiny-group-selection-radius, 3px); + box-shadow: inset 0 0 0 var(--draw-in-canvas-tiny-group-selection-border-width, 3px) hsla(var(--color-accent-hsl), 0.3); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-label { + top: var(--draw-in-canvas-tiny-label-gap, -1px); + width: calc(var(--canvas-node-width) / var(--draw-in-canvas-tiny-label-scale, var(--zoom-multiplier))); + max-width: calc(var(--canvas-node-width) / var(--draw-in-canvas-tiny-label-scale, var(--zoom-multiplier))); + transform: translateY(-100%) scale(var(--draw-in-canvas-tiny-label-scale, var(--zoom-multiplier))); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node:is(.is-selected, .is-focused) .canvas-node-container { + border-width: 0; + box-shadow: 0 0 0 var(--draw-in-canvas-tiny-focus-spread, 2px) var(--color-accent); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node:is(.is-selected, .is-focused).is-themed .canvas-node-container { + box-shadow: + inset 0 0 0 var(--draw-in-canvas-tiny-border-width, 1px) rgb(var(--canvas-color)), + 0 0 0 var(--draw-in-canvas-tiny-focus-spread, 2px) rgb(var(--canvas-color)); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer { + --draw-in-canvas-tiny-resizer-layout-size: max( + var(--draw-in-canvas-tiny-resizer-size, calc(var(--resizer-size) * var(--zoom-multiplier))), + var(--draw-in-canvas-tiny-resizer-min-layout-size, 0.022px) + ); + + height: var(--draw-in-canvas-tiny-resizer-layout-size); + width: var(--draw-in-canvas-tiny-resizer-layout-size); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point { + --draw-in-canvas-tiny-connection-layout-size: max( + var(--draw-in-canvas-tiny-connection-size, calc(var(--resizer-size) * var(--zoom-multiplier))), + var(--draw-in-canvas-tiny-connection-min-layout-size, 0.022px) + ); + + height: var(--draw-in-canvas-tiny-connection-layout-size); + width: var(--draw-in-canvas-tiny-connection-layout-size); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="top"] { + top: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + width: auto; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="bottom"] { + bottom: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + width: auto; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="left"] { + height: auto; + left: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="right"] { + height: auto; + right: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="topright"] { + right: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + top: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + z-index: 1; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="bottomright"] { + bottom: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + right: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + z-index: 1; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="topleft"] { + left: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + top: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + z-index: 1; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-resizer[data-resize="bottomleft"] { + bottom: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + left: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / -2); + z-index: 1; +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="top"], +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="bottom"] { + left: calc(50% - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="top"] { + top: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / 2 - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="bottom"] { + bottom: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / 2 - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="left"], +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="right"] { + top: calc(50% - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="left"] { + left: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / 2 - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point[data-side="right"] { + right: calc(var(--draw-in-canvas-tiny-resizer-layout-size) / 2 - var(--draw-in-canvas-tiny-connection-layout-size) / 2); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-node-connection-point::after { + border: var(--draw-in-canvas-tiny-connection-native-border, 3px) solid var(--background-modifier-border); + height: var(--draw-in-canvas-tiny-connection-native-size, calc(var(--resizer-size) * var(--zoom-multiplier))); + left: 50%; + top: 50%; + transform: translate(-50%, -50%) scale(var(--draw-in-canvas-tiny-connection-scale, 1)); + transform-origin: center; + width: var(--draw-in-canvas-tiny-connection-native-size, calc(var(--resizer-size) * var(--zoom-multiplier))); +} + +/* Let native edge visuals shrink when zoomed out, but cap them to readable screen sizes when zoomed in. */ +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-edges path.canvas-display-path { + stroke-width: var(--draw-in-canvas-tiny-edge-width, 2px); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-edges path.canvas-interaction-path { + stroke-width: var(--draw-in-canvas-tiny-edge-hit-width, calc(24px * var(--zoom-multiplier))); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-edges polygon.canvas-path-end { + stroke-width: 1px; + transform: scale(var(--draw-in-canvas-tiny-edge-arrow-scale, 1)); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-edges g.is-focused path.canvas-display-path, +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas:not(.is-connecting) .canvas-edges g:hover path.canvas-display-path { + stroke-width: var(--draw-in-canvas-tiny-edge-focus-width, 5.5px); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-snaps line { + stroke-width: var(--draw-in-canvas-tiny-snap-line-width, 1px); +} + +.canvas-wrapper.draw-in-canvas-tiny-control-scale .canvas-snaps circle { + transform: scale(var(--draw-in-canvas-tiny-snap-point-scale, 1)); + transform-box: fill-box; + transform-origin: center; +} + +.canvas-node-content.draw-in-canvas-scaled-node-content .markdown-preview-view { + overflow: hidden; + scrollbar-gutter: auto; +} + +.draw-in-canvas-render-layer { + position: absolute; + top: 0; + left: 0; + z-index: 1000; + width: 1px; + height: 1px; + overflow: visible; + pointer-events: none; +} + +.draw-in-canvas-stroke-raster { + overflow: visible; + pointer-events: none; +} + +.draw-in-canvas-stroke-raster-canvas { + display: block; + width: 100%; + height: 100%; + pointer-events: none; +} + +.draw-in-canvas-stroke { + pointer-events: none; +} + +.draw-in-canvas-stroke.mod-handwritten { + fill-opacity: 0.96; +} + + +.draw-in-canvas-stroke-wrapper.is-selected { + filter: drop-shadow(0 0 2px var(--interactive-accent)); +} + +.canvas-menu-container.draw-in-canvas-stroke-scale-menu-container { + position: absolute; + z-index: 1002; + width: max-content; + right: auto; + bottom: auto; + transform: none; + pointer-events: auto; +} + +.canvas-menu.draw-in-canvas-stroke-scale-menu { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + max-width: var(--draw-in-canvas-stroke-scale-menu-max-width, none); +} + +.draw-in-canvas-stroke-action-button { + position: relative; + touch-action: none; +} + +.draw-in-canvas-layer-menu { + position: relative; + display: flex; + align-items: center; +} + +.draw-in-canvas-layer-menu-button, +.draw-in-canvas-layer-submenu-button { + position: relative; + touch-action: none; +} + +.canvas-menu.draw-in-canvas-layer-submenu { + position: absolute; + top: calc(100% + 6px); + left: 50%; + z-index: 1003; + display: none; + width: max-content; + transform: translateX(-50%); +} + +.draw-in-canvas-layer-menu.is-open > .draw-in-canvas-layer-submenu { + display: flex; +} + +.draw-in-canvas-stroke-action-button:disabled, +.draw-in-canvas-layer-submenu-button:disabled { + cursor: not-allowed; + opacity: 0.45; +} + + +.draw-in-canvas-stroke-delete-button { + color: var(--text-error); +} + +.draw-in-canvas-selection-box { + fill: none; + stroke: var(--interactive-accent); + stroke-width: 1.5; + stroke-dasharray: 6 4; + pointer-events: none; +} + +.draw-in-canvas-selection-handle { + fill: var(--background-primary); + stroke: var(--interactive-accent); + stroke-width: 1.5; + pointer-events: none; + filter: drop-shadow(0 1px 2px rgb(0 0 0 / 0.18)); +} + +.draw-in-canvas-selection-handle.mod-nw, +.draw-in-canvas-selection-handle.mod-se { + cursor: nwse-resize; +} + +.draw-in-canvas-selection-handle.mod-ne, +.draw-in-canvas-selection-handle.mod-sw { + cursor: nesw-resize; +} + +.draw-in-canvas-stale.draw-in-canvas-stale { + display: none; + pointer-events: none; +} diff --git a/.obsidian/plugins/github-sync/data.json b/.obsidian/plugins/github-sync/data.json new file mode 100644 index 0000000..690e909 --- /dev/null +++ b/.obsidian/plugins/github-sync/data.json @@ -0,0 +1,9 @@ +{ + "remoteURL": "https://gitea.exocomet-frog.ts.net/andus/vaardspace-wiki.git", + "gitLocation": "", + "syncinterval": 0, + "isSyncOnLoad": true, + "checkStatusOnLoad": true, + "noticeLevel": "ALL", + "showSyncSuccessNotice": true +} \ No newline at end of file diff --git a/.obsidian/plugins/github-sync/main.js b/.obsidian/plugins/github-sync/main.js new file mode 100644 index 0000000..55f9820 --- /dev/null +++ b/.obsidian/plugins/github-sync/main.js @@ -0,0 +1,4907 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; + +// node_modules/ms/index.js +var require_ms = __commonJS({ + "node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + } +}); + +// node_modules/debug/src/common.js +var require_common = __commonJS({ + "node_modules/debug/src/common.js"(exports, module2) { + function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env).forEach((key) => { + createDebug[key] = env[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug2(...args) { + if (!debug2.enabled) { + return; + } + const self = debug2; + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self, args); + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + debug2.namespace = namespace; + debug2.useColors = createDebug.useColors(); + debug2.color = createDebug.selectColor(namespace); + debug2.extend = extend; + debug2.destroy = createDebug.destroy; + Object.defineProperty(debug2, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug2); + } + return debug2; + } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + let i; + const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + const len = split.length; + for (i = 0; i < len; i++) { + if (!split[i]) { + continue; + } + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$")); + } else { + createDebug.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + if (name[name.length - 1] === "*") { + return true; + } + let i; + let len; + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + return false; + } + function toNamespace(regexp) { + return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*"); + } + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module2.exports = setup; + } +}); + +// node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "node_modules/debug/src/browser.js"(exports, module2) { + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = localstorage(); + exports.destroy = (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem("debug", namespaces); + } else { + exports.storage.removeItem("debug"); + } + } catch (error) { + } + } + function load() { + let r; + try { + r = exports.storage.getItem("debug"); + } catch (error) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + function localstorage() { + try { + return localStorage; + } catch (error) { + } + } + module2.exports = require_common()(exports); + var { formatters } = module2.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error) { + return "[UnexpectedJSONParseError]: " + error.message; + } + }; + } +}); + +// node_modules/@kwsites/file-exists/dist/src/index.js +var require_src = __commonJS({ + "node_modules/@kwsites/file-exists/dist/src/index.js"(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + var fs_1 = require("fs"); + var debug_1 = __importDefault(require_browser()); + var log = debug_1.default("@kwsites/file-exists"); + function check(path, isFile, isDirectory) { + log(`checking %s`, path); + try { + const stat = fs_1.statSync(path); + if (stat.isFile() && isFile) { + log(`[OK] path represents a file`); + return true; + } + if (stat.isDirectory() && isDirectory) { + log(`[OK] path represents a directory`); + return true; + } + log(`[FAIL] path represents something other than a file or directory`); + return false; + } catch (e) { + if (e.code === "ENOENT") { + log(`[FAIL] path is not accessible: %o`, e); + return false; + } + log(`[FATAL] %o`, e); + throw e; + } + } + function exists2(path, type = exports.READABLE) { + return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0); + } + exports.exists = exists2; + exports.FILE = 1; + exports.FOLDER = 2; + exports.READABLE = exports.FILE + exports.FOLDER; + } +}); + +// node_modules/@kwsites/file-exists/dist/index.js +var require_dist = __commonJS({ + "node_modules/@kwsites/file-exists/dist/index.js"(exports) { + "use strict"; + function __export3(m) { + for (var p in m) + if (!exports.hasOwnProperty(p)) + exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export3(require_src()); + } +}); + +// node_modules/@kwsites/promise-deferred/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/@kwsites/promise-deferred/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDeferred = exports.deferred = void 0; + function deferred2() { + let done; + let fail; + let status = "pending"; + const promise = new Promise((_done, _fail) => { + done = _done; + fail = _fail; + }); + return { + promise, + done(result) { + if (status === "pending") { + status = "resolved"; + done(result); + } + }, + fail(error) { + if (status === "pending") { + status = "rejected"; + fail(error); + } + }, + get fulfilled() { + return status !== "pending"; + }, + get status() { + return status; + } + }; + } + exports.deferred = deferred2; + exports.createDeferred = deferred2; + exports.default = deferred2; + } +}); + +// node_modules/set-interval-async/dist/set-interval-async-timer.cjs +var require_set_interval_async_timer = __commonJS({ + "node_modules/set-interval-async/dist/set-interval-async-timer.cjs"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SetIntervalAsyncTimer = void 0; + var MIN_INTERVAL_MS = 10; + var MAX_INTERVAL_MS = 2147483647; + var _timeout, _promise, _stopped, _scheduleTimeout, scheduleTimeout_fn, _runHandlerAndScheduleTimeout, runHandlerAndScheduleTimeout_fn; + var _SetIntervalAsyncTimer = class { + constructor() { + __privateAdd(this, _scheduleTimeout); + __privateAdd(this, _runHandlerAndScheduleTimeout); + __privateAdd(this, _timeout, void 0); + __privateAdd(this, _promise, void 0); + __privateAdd(this, _stopped, false); + } + static startTimer(strategy, handler, intervalMs, ...handlerArgs) { + var _a2; + intervalMs = Math.min(Math.max(Math.trunc(intervalMs), MIN_INTERVAL_MS), MAX_INTERVAL_MS); + const timer = new _SetIntervalAsyncTimer(); + __privateMethod(_a2 = timer, _scheduleTimeout, scheduleTimeout_fn).call(_a2, strategy, handler, intervalMs, intervalMs, ...handlerArgs); + return timer; + } + static async stopTimer(timer) { + __privateSet(timer, _stopped, true); + if (__privateGet(timer, _timeout)) { + clearTimeout(__privateGet(timer, _timeout)); + } + if (__privateGet(timer, _promise)) { + await __privateGet(timer, _promise); + } + } + }; + var SetIntervalAsyncTimer = _SetIntervalAsyncTimer; + _timeout = new WeakMap(); + _promise = new WeakMap(); + _stopped = new WeakMap(); + _scheduleTimeout = new WeakSet(); + scheduleTimeout_fn = function(strategy, handler, intervalMs, delayMs, ...handlerArgs) { + __privateSet(this, _timeout, setTimeout(async () => { + __privateSet(this, _timeout, void 0); + __privateSet(this, _promise, __privateMethod(this, _runHandlerAndScheduleTimeout, runHandlerAndScheduleTimeout_fn).call(this, strategy, handler, intervalMs, ...handlerArgs)); + await __privateGet(this, _promise); + __privateSet(this, _promise, void 0); + }, delayMs)); + }; + _runHandlerAndScheduleTimeout = new WeakSet(); + runHandlerAndScheduleTimeout_fn = async function(strategy, handler, intervalMs, ...handlerArgs) { + const startTimeMs = new Date().getTime(); + try { + await handler(...handlerArgs); + } finally { + if (!__privateGet(this, _stopped)) { + const executionTimeMs = new Date().getTime() - startTimeMs; + const delayMs = strategy === "dynamic" ? intervalMs > executionTimeMs ? intervalMs - executionTimeMs : 0 : intervalMs; + __privateMethod(this, _scheduleTimeout, scheduleTimeout_fn).call(this, strategy, handler, intervalMs, delayMs, ...handlerArgs); + } + } + }; + exports.SetIntervalAsyncTimer = SetIntervalAsyncTimer; + } +}); + +// node_modules/set-interval-async/dist/clear-interval-async.cjs +var require_clear_interval_async = __commonJS({ + "node_modules/set-interval-async/dist/clear-interval-async.cjs"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.clearIntervalAsync = void 0; + var set_interval_async_timer_cjs_1 = require_set_interval_async_timer(); + async function clearIntervalAsync3(timer) { + if (!(timer instanceof set_interval_async_timer_cjs_1.SetIntervalAsyncTimer)) { + throw new TypeError("First argument is not an instance of SetIntervalAsyncTimer"); + } + await set_interval_async_timer_cjs_1.SetIntervalAsyncTimer.stopTimer(timer); + } + exports.clearIntervalAsync = clearIntervalAsync3; + } +}); + +// node_modules/set-interval-async/dist/dynamic/set-interval-async.cjs +var require_set_interval_async = __commonJS({ + "node_modules/set-interval-async/dist/dynamic/set-interval-async.cjs"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.setIntervalAsync = exports.clearIntervalAsync = void 0; + var clear_interval_async_cjs_1 = require_clear_interval_async(); + Object.defineProperty(exports, "clearIntervalAsync", { enumerable: true, get: function() { + return clear_interval_async_cjs_1.clearIntervalAsync; + } }); + var set_interval_async_timer_cjs_1 = require_set_interval_async_timer(); + function setIntervalAsync2(handler, intervalMs, ...handlerArgs) { + if (!(typeof handler === "function")) { + throw new TypeError("First argument is not a function"); + } + if (!(typeof intervalMs === "number")) { + throw new TypeError("Second argument is not a number"); + } + return set_interval_async_timer_cjs_1.SetIntervalAsyncTimer.startTimer("dynamic", handler, intervalMs, ...handlerArgs); + } + exports.setIntervalAsync = setIntervalAsync2; + } +}); + +// main.ts +var main_exports = {}; +__export(main_exports, { + default: () => GHSyncPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian = require("obsidian"); + +// node_modules/simple-git/dist/esm/index.js +var import_file_exists = __toESM(require_dist(), 1); +var import_debug = __toESM(require_browser(), 1); +var import_child_process = require("child_process"); +var import_promise_deferred = __toESM(require_dist2(), 1); +var import_promise_deferred2 = __toESM(require_dist2(), 1); +var __defProp2 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames2 = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp2.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; +}; +var __commonJS2 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export2 = (target, all) => { + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, copyDefault, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames2(module2)) + if (!__hasOwnProp2.call(target, key) && (copyDefault || key !== "default")) + __defProp2(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc2(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toCommonJS2 = /* @__PURE__ */ ((cache2) => { + return (module2, temp) => { + return cache2 && cache2.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache2 && cache2.set(module2, temp), temp); + }; +})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; +function pathspec(...paths) { + const key = new String(paths); + cache.set(key, paths); + return key; +} +function isPathSpec(path) { + return path instanceof String && cache.has(path); +} +function toPaths(pathSpec) { + return cache.get(pathSpec) || []; +} +var cache; +var init_pathspec = __esm({ + "src/lib/args/pathspec.ts"() { + cache = /* @__PURE__ */ new WeakMap(); + } +}); +var GitError; +var init_git_error = __esm({ + "src/lib/errors/git-error.ts"() { + GitError = class extends Error { + constructor(task, message) { + super(message); + this.task = task; + Object.setPrototypeOf(this, new.target.prototype); + } + }; + } +}); +var GitResponseError; +var init_git_response_error = __esm({ + "src/lib/errors/git-response-error.ts"() { + init_git_error(); + GitResponseError = class extends GitError { + constructor(git2, message) { + super(void 0, message || String(git2)); + this.git = git2; + } + }; + } +}); +var TaskConfigurationError; +var init_task_configuration_error = __esm({ + "src/lib/errors/task-configuration-error.ts"() { + init_git_error(); + TaskConfigurationError = class extends GitError { + constructor(message) { + super(void 0, message); + } + }; + } +}); +function asFunction(source) { + return typeof source === "function" ? source : NOOP; +} +function isUserFunction(source) { + return typeof source === "function" && source !== NOOP; +} +function splitOn(input, char) { + const index = input.indexOf(char); + if (index <= 0) { + return [input, ""]; + } + return [input.substr(0, index), input.substr(index + 1)]; +} +function first(input, offset = 0) { + return isArrayLike(input) && input.length > offset ? input[offset] : void 0; +} +function last(input, offset = 0) { + if (isArrayLike(input) && input.length > offset) { + return input[input.length - 1 - offset]; + } +} +function isArrayLike(input) { + return !!(input && typeof input.length === "number"); +} +function toLinesWithContent(input = "", trimmed2 = true, separator = "\n") { + return input.split(separator).reduce((output, line) => { + const lineContent = trimmed2 ? line.trim() : line; + if (lineContent) { + output.push(lineContent); + } + return output; + }, []); +} +function forEachLineWithContent(input, callback) { + return toLinesWithContent(input, true).map((line) => callback(line)); +} +function folderExists(path) { + return (0, import_file_exists.exists)(path, import_file_exists.FOLDER); +} +function append(target, item) { + if (Array.isArray(target)) { + if (!target.includes(item)) { + target.push(item); + } + } else { + target.add(item); + } + return item; +} +function including(target, item) { + if (Array.isArray(target) && !target.includes(item)) { + target.push(item); + } + return target; +} +function remove(target, item) { + if (Array.isArray(target)) { + const index = target.indexOf(item); + if (index >= 0) { + target.splice(index, 1); + } + } else { + target.delete(item); + } + return item; +} +function asArray(source) { + return Array.isArray(source) ? source : [source]; +} +function asStringArray(source) { + return asArray(source).map(String); +} +function asNumber(source, onNaN = 0) { + if (source == null) { + return onNaN; + } + const num = parseInt(source, 10); + return isNaN(num) ? onNaN : num; +} +function prefixedArray(input, prefix) { + const output = []; + for (let i = 0, max = input.length; i < max; i++) { + output.push(prefix, input[i]); + } + return output; +} +function bufferToString(input) { + return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8"); +} +function pick(source, properties) { + return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {})); +} +function delay(duration = 0) { + return new Promise((done) => setTimeout(done, duration)); +} +function orVoid(input) { + if (input === false) { + return void 0; + } + return input; +} +var NULL; +var NOOP; +var objectToString; +var init_util = __esm({ + "src/lib/utils/util.ts"() { + NULL = "\0"; + NOOP = () => { + }; + objectToString = Object.prototype.toString.call.bind(Object.prototype.toString); + } +}); +function filterType(input, filter, def) { + if (filter(input)) { + return input; + } + return arguments.length > 2 ? def : void 0; +} +function filterPrimitives(input, omit) { + const type = isPathSpec(input) ? "string" : typeof input; + return /number|string|boolean/.test(type) && (!omit || !omit.includes(type)); +} +function filterPlainObject(input) { + return !!input && objectToString(input) === "[object Object]"; +} +function filterFunction(input) { + return typeof input === "function"; +} +var filterArray; +var filterString; +var filterStringArray; +var filterStringOrStringArray; +var filterHasLength; +var init_argument_filters = __esm({ + "src/lib/utils/argument-filters.ts"() { + init_util(); + init_pathspec(); + filterArray = (input) => { + return Array.isArray(input); + }; + filterString = (input) => { + return typeof input === "string"; + }; + filterStringArray = (input) => { + return Array.isArray(input) && input.every(filterString); + }; + filterStringOrStringArray = (input) => { + return filterString(input) || Array.isArray(input) && input.every(filterString); + }; + filterHasLength = (input) => { + if (input == null || "number|boolean|function".includes(typeof input)) { + return false; + } + return Array.isArray(input) || typeof input === "string" || typeof input.length === "number"; + }; + } +}); +var ExitCodes; +var init_exit_codes = __esm({ + "src/lib/utils/exit-codes.ts"() { + ExitCodes = /* @__PURE__ */ ((ExitCodes2) => { + ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS"; + ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR"; + ExitCodes2[ExitCodes2["NOT_FOUND"] = -2] = "NOT_FOUND"; + ExitCodes2[ExitCodes2["UNCLEAN"] = 128] = "UNCLEAN"; + return ExitCodes2; + })(ExitCodes || {}); + } +}); +var GitOutputStreams; +var init_git_output_streams = __esm({ + "src/lib/utils/git-output-streams.ts"() { + GitOutputStreams = class { + constructor(stdOut, stdErr) { + this.stdOut = stdOut; + this.stdErr = stdErr; + } + asStrings() { + return new GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8")); + } + }; + } +}); +var LineParser; +var RemoteLineParser; +var init_line_parser = __esm({ + "src/lib/utils/line-parser.ts"() { + LineParser = class { + constructor(regExp, useMatches) { + this.matches = []; + this.parse = (line, target) => { + this.resetMatches(); + if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) { + return false; + } + return this.useMatches(target, this.prepareMatches()) !== false; + }; + this._regExp = Array.isArray(regExp) ? regExp : [regExp]; + if (useMatches) { + this.useMatches = useMatches; + } + } + useMatches(target, match) { + throw new Error(`LineParser:useMatches not implemented`); + } + resetMatches() { + this.matches.length = 0; + } + prepareMatches() { + return this.matches; + } + addMatch(reg, index, line) { + const matched = line && reg.exec(line); + if (matched) { + this.pushMatch(index, matched); + } + return !!matched; + } + pushMatch(_index, matched) { + this.matches.push(...matched.slice(1)); + } + }; + RemoteLineParser = class extends LineParser { + addMatch(reg, index, line) { + return /^remote:\s/.test(String(line)) && super.addMatch(reg, index, line); + } + pushMatch(index, matched) { + if (index > 0 || matched.length > 1) { + super.pushMatch(index, matched); + } + } + }; + } +}); +function createInstanceConfig(...options) { + const baseDir = process.cwd(); + const config = Object.assign(__spreadValues({ baseDir }, defaultOptions), ...options.filter((o) => typeof o === "object" && o)); + config.baseDir = config.baseDir || baseDir; + config.trimmed = config.trimmed === true; + return config; +} +var defaultOptions; +var init_simple_git_options = __esm({ + "src/lib/utils/simple-git-options.ts"() { + defaultOptions = { + binary: "git", + maxConcurrentProcesses: 5, + config: [], + trimmed: false + }; + } +}); +function appendTaskOptions(options, commands = []) { + if (!filterPlainObject(options)) { + return commands; + } + return Object.keys(options).reduce((commands2, key) => { + const value = options[key]; + if (isPathSpec(value)) { + commands2.push(value); + } else if (filterPrimitives(value, ["boolean"])) { + commands2.push(key + "=" + value); + } else { + commands2.push(key); + } + return commands2; + }, commands); +} +function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) { + const command = []; + for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) { + if ("string|number".includes(typeof args[i])) { + command.push(String(args[i])); + } + } + appendTaskOptions(trailingOptionsArgument(args), command); + if (!objectOnly) { + command.push(...trailingArrayArgument(args)); + } + return command; +} +function trailingArrayArgument(args) { + const hasTrailingCallback = typeof last(args) === "function"; + return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []); +} +function trailingOptionsArgument(args) { + const hasTrailingCallback = filterFunction(last(args)); + return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject); +} +function trailingFunctionArgument(args, includeNoop = true) { + const callback = asFunction(last(args)); + return includeNoop || isUserFunction(callback) ? callback : void 0; +} +var init_task_options = __esm({ + "src/lib/utils/task-options.ts"() { + init_argument_filters(); + init_util(); + init_pathspec(); + } +}); +function callTaskParser(parser3, streams) { + return parser3(streams.stdOut, streams.stdErr); +} +function parseStringResponse(result, parsers12, texts, trim = true) { + asArray(texts).forEach((text) => { + for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) { + const line = (offset = 0) => { + if (i + offset >= max) { + return; + } + return lines[i + offset]; + }; + parsers12.some(({ parse }) => parse(line, result)); + } + }); + return result; +} +var init_task_parser = __esm({ + "src/lib/utils/task-parser.ts"() { + init_util(); + } +}); +var utils_exports = {}; +__export2(utils_exports, { + ExitCodes: () => ExitCodes, + GitOutputStreams: () => GitOutputStreams, + LineParser: () => LineParser, + NOOP: () => NOOP, + NULL: () => NULL, + RemoteLineParser: () => RemoteLineParser, + append: () => append, + appendTaskOptions: () => appendTaskOptions, + asArray: () => asArray, + asFunction: () => asFunction, + asNumber: () => asNumber, + asStringArray: () => asStringArray, + bufferToString: () => bufferToString, + callTaskParser: () => callTaskParser, + createInstanceConfig: () => createInstanceConfig, + delay: () => delay, + filterArray: () => filterArray, + filterFunction: () => filterFunction, + filterHasLength: () => filterHasLength, + filterPlainObject: () => filterPlainObject, + filterPrimitives: () => filterPrimitives, + filterString: () => filterString, + filterStringArray: () => filterStringArray, + filterStringOrStringArray: () => filterStringOrStringArray, + filterType: () => filterType, + first: () => first, + folderExists: () => folderExists, + forEachLineWithContent: () => forEachLineWithContent, + getTrailingOptions: () => getTrailingOptions, + including: () => including, + isUserFunction: () => isUserFunction, + last: () => last, + objectToString: () => objectToString, + orVoid: () => orVoid, + parseStringResponse: () => parseStringResponse, + pick: () => pick, + prefixedArray: () => prefixedArray, + remove: () => remove, + splitOn: () => splitOn, + toLinesWithContent: () => toLinesWithContent, + trailingFunctionArgument: () => trailingFunctionArgument, + trailingOptionsArgument: () => trailingOptionsArgument +}); +var init_utils = __esm({ + "src/lib/utils/index.ts"() { + init_argument_filters(); + init_exit_codes(); + init_git_output_streams(); + init_line_parser(); + init_simple_git_options(); + init_task_options(); + init_task_parser(); + init_util(); + } +}); +var check_is_repo_exports = {}; +__export2(check_is_repo_exports, { + CheckRepoActions: () => CheckRepoActions, + checkIsBareRepoTask: () => checkIsBareRepoTask, + checkIsRepoRootTask: () => checkIsRepoRootTask, + checkIsRepoTask: () => checkIsRepoTask +}); +function checkIsRepoTask(action) { + switch (action) { + case "bare": + return checkIsBareRepoTask(); + case "root": + return checkIsRepoRootTask(); + } + const commands = ["rev-parse", "--is-inside-work-tree"]; + return { + commands, + format: "utf-8", + onError, + parser + }; +} +function checkIsRepoRootTask() { + const commands = ["rev-parse", "--git-dir"]; + return { + commands, + format: "utf-8", + onError, + parser(path) { + return /^\.(git)?$/.test(path.trim()); + } + }; +} +function checkIsBareRepoTask() { + const commands = ["rev-parse", "--is-bare-repository"]; + return { + commands, + format: "utf-8", + onError, + parser + }; +} +function isNotRepoMessage(error) { + return /(Not a git repository|Kein Git-Repository)/i.test(String(error)); +} +var CheckRepoActions; +var onError; +var parser; +var init_check_is_repo = __esm({ + "src/lib/tasks/check-is-repo.ts"() { + init_utils(); + CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => { + CheckRepoActions2["BARE"] = "bare"; + CheckRepoActions2["IN_TREE"] = "tree"; + CheckRepoActions2["IS_REPO_ROOT"] = "root"; + return CheckRepoActions2; + })(CheckRepoActions || {}); + onError = ({ exitCode }, error, done, fail) => { + if (exitCode === 128 && isNotRepoMessage(error)) { + return done(Buffer.from("false")); + } + fail(error); + }; + parser = (text) => { + return text.trim() === "true"; + }; + } +}); +function cleanSummaryParser(dryRun, text) { + const summary = new CleanResponse(dryRun); + const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp; + toLinesWithContent(text).forEach((line) => { + const removed = line.replace(regexp, ""); + summary.paths.push(removed); + (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed); + }); + return summary; +} +var CleanResponse; +var removalRegexp; +var dryRunRemovalRegexp; +var isFolderRegexp; +var init_CleanSummary = __esm({ + "src/lib/responses/CleanSummary.ts"() { + init_utils(); + CleanResponse = class { + constructor(dryRun) { + this.dryRun = dryRun; + this.paths = []; + this.files = []; + this.folders = []; + } + }; + removalRegexp = /^[a-z]+\s*/i; + dryRunRemovalRegexp = /^[a-z]+\s+[a-z]+\s*/i; + isFolderRegexp = /\/$/; + } +}); +var task_exports = {}; +__export2(task_exports, { + EMPTY_COMMANDS: () => EMPTY_COMMANDS, + adhocExecTask: () => adhocExecTask, + configurationErrorTask: () => configurationErrorTask, + isBufferTask: () => isBufferTask, + isEmptyTask: () => isEmptyTask, + straightThroughBufferTask: () => straightThroughBufferTask, + straightThroughStringTask: () => straightThroughStringTask +}); +function adhocExecTask(parser3) { + return { + commands: EMPTY_COMMANDS, + format: "empty", + parser: parser3 + }; +} +function configurationErrorTask(error) { + return { + commands: EMPTY_COMMANDS, + format: "empty", + parser() { + throw typeof error === "string" ? new TaskConfigurationError(error) : error; + } + }; +} +function straightThroughStringTask(commands, trimmed2 = false) { + return { + commands, + format: "utf-8", + parser(text) { + return trimmed2 ? String(text).trim() : text; + } + }; +} +function straightThroughBufferTask(commands) { + return { + commands, + format: "buffer", + parser(buffer) { + return buffer; + } + }; +} +function isBufferTask(task) { + return task.format === "buffer"; +} +function isEmptyTask(task) { + return task.format === "empty" || !task.commands.length; +} +var EMPTY_COMMANDS; +var init_task = __esm({ + "src/lib/tasks/task.ts"() { + init_task_configuration_error(); + EMPTY_COMMANDS = []; + } +}); +var clean_exports = {}; +__export2(clean_exports, { + CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE, + CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED, + CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION, + CleanOptions: () => CleanOptions, + cleanTask: () => cleanTask, + cleanWithOptionsTask: () => cleanWithOptionsTask, + isCleanOptionsArray: () => isCleanOptionsArray +}); +function cleanWithOptionsTask(mode, customArgs) { + const { cleanMode, options, valid } = getCleanOptions(mode); + if (!cleanMode) { + return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED); + } + if (!valid.options) { + return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode)); + } + options.push(...customArgs); + if (options.some(isInteractiveMode)) { + return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE); + } + return cleanTask(cleanMode, options); +} +function cleanTask(mode, customArgs) { + const commands = ["clean", `-${mode}`, ...customArgs]; + return { + commands, + format: "utf-8", + parser(text) { + return cleanSummaryParser(mode === "n", text); + } + }; +} +function isCleanOptionsArray(input) { + return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test)); +} +function getCleanOptions(input) { + let cleanMode; + let options = []; + let valid = { cleanMode: false, options: true }; + input.replace(/[^a-z]i/g, "").split("").forEach((char) => { + if (isCleanMode(char)) { + cleanMode = char; + valid.cleanMode = true; + } else { + valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`); + } + }); + return { + cleanMode, + options, + valid + }; +} +function isCleanMode(cleanMode) { + return cleanMode === "f" || cleanMode === "n"; +} +function isKnownOption(option) { + return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1)); +} +function isInteractiveMode(option) { + if (/^-[^\-]/.test(option)) { + return option.indexOf("i") > 0; + } + return option === "--interactive"; +} +var CONFIG_ERROR_INTERACTIVE_MODE; +var CONFIG_ERROR_MODE_REQUIRED; +var CONFIG_ERROR_UNKNOWN_OPTION; +var CleanOptions; +var CleanOptionValues; +var init_clean = __esm({ + "src/lib/tasks/clean.ts"() { + init_CleanSummary(); + init_utils(); + init_task(); + CONFIG_ERROR_INTERACTIVE_MODE = "Git clean interactive mode is not supported"; + CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter ("n" or "f") is required'; + CONFIG_ERROR_UNKNOWN_OPTION = "Git clean unknown option found in: "; + CleanOptions = /* @__PURE__ */ ((CleanOptions22) => { + CleanOptions22["DRY_RUN"] = "n"; + CleanOptions22["FORCE"] = "f"; + CleanOptions22["IGNORED_INCLUDED"] = "x"; + CleanOptions22["IGNORED_ONLY"] = "X"; + CleanOptions22["EXCLUDING"] = "e"; + CleanOptions22["QUIET"] = "q"; + CleanOptions22["RECURSIVE"] = "d"; + return CleanOptions22; + })(CleanOptions || {}); + CleanOptionValues = /* @__PURE__ */ new Set([ + "i", + ...asStringArray(Object.values(CleanOptions)) + ]); + } +}); +function configListParser(text) { + const config = new ConfigList(); + for (const item of configParser(text)) { + config.addValue(item.file, String(item.key), item.value); + } + return config; +} +function configGetParser(text, key) { + let value = null; + const values = []; + const scopes = /* @__PURE__ */ new Map(); + for (const item of configParser(text, key)) { + if (item.key !== key) { + continue; + } + values.push(value = item.value); + if (!scopes.has(item.file)) { + scopes.set(item.file, []); + } + scopes.get(item.file).push(value); + } + return { + key, + paths: Array.from(scopes.keys()), + scopes, + value, + values + }; +} +function configFilePath(filePath) { + return filePath.replace(/^(file):/, ""); +} +function* configParser(text, requestedKey = null) { + const lines = text.split("\0"); + for (let i = 0, max = lines.length - 1; i < max; ) { + const file = configFilePath(lines[i++]); + let value = lines[i++]; + let key = requestedKey; + if (value.includes("\n")) { + const line = splitOn(value, "\n"); + key = line[0]; + value = line[1]; + } + yield { file, key, value }; + } +} +var ConfigList; +var init_ConfigList = __esm({ + "src/lib/responses/ConfigList.ts"() { + init_utils(); + ConfigList = class { + constructor() { + this.files = []; + this.values = /* @__PURE__ */ Object.create(null); + } + get all() { + if (!this._all) { + this._all = this.files.reduce((all, file) => { + return Object.assign(all, this.values[file]); + }, {}); + } + return this._all; + } + addFile(file) { + if (!(file in this.values)) { + const latest = last(this.files); + this.values[file] = latest ? Object.create(this.values[latest]) : {}; + this.files.push(file); + } + return this.values[file]; + } + addValue(file, key, value) { + const values = this.addFile(file); + if (!values.hasOwnProperty(key)) { + values[key] = value; + } else if (Array.isArray(values[key])) { + values[key].push(value); + } else { + values[key] = [values[key], value]; + } + this._all = void 0; + } + }; + } +}); +function asConfigScope(scope, fallback) { + if (typeof scope === "string" && GitConfigScope.hasOwnProperty(scope)) { + return scope; + } + return fallback; +} +function addConfigTask(key, value, append2, scope) { + const commands = ["config", `--${scope}`]; + if (append2) { + commands.push("--add"); + } + commands.push(key, value); + return { + commands, + format: "utf-8", + parser(text) { + return text; + } + }; +} +function getConfigTask(key, scope) { + const commands = ["config", "--null", "--show-origin", "--get-all", key]; + if (scope) { + commands.splice(1, 0, `--${scope}`); + } + return { + commands, + format: "utf-8", + parser(text) { + return configGetParser(text, key); + } + }; +} +function listConfigTask(scope) { + const commands = ["config", "--list", "--show-origin", "--null"]; + if (scope) { + commands.push(`--${scope}`); + } + return { + commands, + format: "utf-8", + parser(text) { + return configListParser(text); + } + }; +} +function config_default() { + return { + addConfig(key, value, ...rest) { + return this._runTask(addConfigTask(key, value, rest[0] === true, asConfigScope( + rest[1], + "local" + /* local */ + )), trailingFunctionArgument(arguments)); + }, + getConfig(key, scope) { + return this._runTask(getConfigTask(key, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments)); + }, + listConfig(...rest) { + return this._runTask(listConfigTask(asConfigScope(rest[0], void 0)), trailingFunctionArgument(arguments)); + } + }; +} +var GitConfigScope; +var init_config = __esm({ + "src/lib/tasks/config.ts"() { + init_ConfigList(); + init_utils(); + GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => { + GitConfigScope2["system"] = "system"; + GitConfigScope2["global"] = "global"; + GitConfigScope2["local"] = "local"; + GitConfigScope2["worktree"] = "worktree"; + return GitConfigScope2; + })(GitConfigScope || {}); + } +}); +function isDiffNameStatus(input) { + return diffNameStatus.has(input); +} +var DiffNameStatus; +var diffNameStatus; +var init_diff_name_status = __esm({ + "src/lib/tasks/diff-name-status.ts"() { + DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => { + DiffNameStatus2["ADDED"] = "A"; + DiffNameStatus2["COPIED"] = "C"; + DiffNameStatus2["DELETED"] = "D"; + DiffNameStatus2["MODIFIED"] = "M"; + DiffNameStatus2["RENAMED"] = "R"; + DiffNameStatus2["CHANGED"] = "T"; + DiffNameStatus2["UNMERGED"] = "U"; + DiffNameStatus2["UNKNOWN"] = "X"; + DiffNameStatus2["BROKEN"] = "B"; + return DiffNameStatus2; + })(DiffNameStatus || {}); + diffNameStatus = new Set(Object.values(DiffNameStatus)); + } +}); +function grepQueryBuilder(...params) { + return new GrepQuery().param(...params); +} +function parseGrep(grep) { + const paths = /* @__PURE__ */ new Set(); + const results = {}; + forEachLineWithContent(grep, (input) => { + const [path, line, preview] = input.split(NULL); + paths.add(path); + (results[path] = results[path] || []).push({ + line: asNumber(line), + path, + preview + }); + }); + return { + paths, + results + }; +} +function grep_default() { + return { + grep(searchTerm) { + const then = trailingFunctionArgument(arguments); + const options = getTrailingOptions(arguments); + for (const option of disallowedOptions) { + if (options.includes(option)) { + return this._runTask(configurationErrorTask(`git.grep: use of "${option}" is not supported.`), then); + } + } + if (typeof searchTerm === "string") { + searchTerm = grepQueryBuilder().param(searchTerm); + } + const commands = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm]; + return this._runTask({ + commands, + format: "utf-8", + parser(stdOut) { + return parseGrep(stdOut); + } + }, then); + } + }; +} +var disallowedOptions; +var Query; +var _a; +var GrepQuery; +var init_grep = __esm({ + "src/lib/tasks/grep.ts"() { + init_utils(); + init_task(); + disallowedOptions = ["-h"]; + Query = Symbol("grepQuery"); + GrepQuery = class { + constructor() { + this[_a] = []; + } + *[(_a = Query, Symbol.iterator)]() { + for (const query of this[Query]) { + yield query; + } + } + and(...and) { + and.length && this[Query].push("--and", "(", ...prefixedArray(and, "-e"), ")"); + return this; + } + param(...param) { + this[Query].push(...prefixedArray(param, "-e")); + return this; + } + }; + } +}); +var reset_exports = {}; +__export2(reset_exports, { + ResetMode: () => ResetMode, + getResetMode: () => getResetMode, + resetTask: () => resetTask +}); +function resetTask(mode, customArgs) { + const commands = ["reset"]; + if (isValidResetMode(mode)) { + commands.push(`--${mode}`); + } + commands.push(...customArgs); + return straightThroughStringTask(commands); +} +function getResetMode(mode) { + if (isValidResetMode(mode)) { + return mode; + } + switch (typeof mode) { + case "string": + case "undefined": + return "soft"; + } + return; +} +function isValidResetMode(mode) { + return ResetModes.includes(mode); +} +var ResetMode; +var ResetModes; +var init_reset = __esm({ + "src/lib/tasks/reset.ts"() { + init_task(); + ResetMode = /* @__PURE__ */ ((ResetMode2) => { + ResetMode2["MIXED"] = "mixed"; + ResetMode2["SOFT"] = "soft"; + ResetMode2["HARD"] = "hard"; + ResetMode2["MERGE"] = "merge"; + ResetMode2["KEEP"] = "keep"; + return ResetMode2; + })(ResetMode || {}); + ResetModes = Array.from(Object.values(ResetMode)); + } +}); +function createLog() { + return (0, import_debug.default)("simple-git"); +} +function prefixedLogger(to, prefix, forward) { + if (!prefix || !String(prefix).replace(/\s*/, "")) { + return !forward ? to : (message, ...args) => { + to(message, ...args); + forward(message, ...args); + }; + } + return (message, ...args) => { + to(`%s ${message}`, prefix, ...args); + if (forward) { + forward(message, ...args); + } + }; +} +function childLoggerName(name, childDebugger, { namespace: parentNamespace }) { + if (typeof name === "string") { + return name; + } + const childNamespace = childDebugger && childDebugger.namespace || ""; + if (childNamespace.startsWith(parentNamespace)) { + return childNamespace.substr(parentNamespace.length + 1); + } + return childNamespace || parentNamespace; +} +function createLogger(label, verbose, initialStep, infoDebugger = createLog()) { + const labelPrefix = label && `[${label}]` || ""; + const spawned = []; + const debugDebugger = typeof verbose === "string" ? infoDebugger.extend(verbose) : verbose; + const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger); + return step(initialStep); + function sibling(name, initial) { + return append(spawned, createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)); + } + function step(phase) { + const stepPrefix = phase && `[${phase}]` || ""; + const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP; + const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2); + return Object.assign(debugDebugger ? debug2 : info, { + label, + sibling, + info, + step + }); + } +} +var init_git_logger = __esm({ + "src/lib/git-logger.ts"() { + init_utils(); + import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-"); + import_debug.default.formatters.B = (value) => { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } + return objectToString(value); + }; + } +}); +var _TasksPendingQueue; +var TasksPendingQueue; +var init_tasks_pending_queue = __esm({ + "src/lib/runners/tasks-pending-queue.ts"() { + init_git_error(); + init_git_logger(); + _TasksPendingQueue = class { + constructor(logLabel = "GitExecutor") { + this.logLabel = logLabel; + this._queue = /* @__PURE__ */ new Map(); + } + withProgress(task) { + return this._queue.get(task); + } + createProgress(task) { + const name = _TasksPendingQueue.getName(task.commands[0]); + const logger = createLogger(this.logLabel, name); + return { + task, + logger, + name + }; + } + push(task) { + const progress = this.createProgress(task); + progress.logger("Adding task to the queue, commands = %o", task.commands); + this._queue.set(task, progress); + return progress; + } + fatal(err) { + for (const [task, { logger }] of Array.from(this._queue.entries())) { + if (task === err.task) { + logger.info(`Failed %o`, err); + logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`); + } else { + logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message); + } + this.complete(task); + } + if (this._queue.size !== 0) { + throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`); + } + } + complete(task) { + const progress = this.withProgress(task); + if (progress) { + this._queue.delete(task); + } + } + attempt(task) { + const progress = this.withProgress(task); + if (!progress) { + throw new GitError(void 0, "TasksPendingQueue: attempt called for an unknown task"); + } + progress.logger("Starting task"); + return progress; + } + static getName(name = "empty") { + return `task:${name}:${++_TasksPendingQueue.counter}`; + } + }; + TasksPendingQueue = _TasksPendingQueue; + TasksPendingQueue.counter = 0; + } +}); +function pluginContext(task, commands) { + return { + method: first(task.commands) || "", + commands + }; +} +function onErrorReceived(target, logger) { + return (err) => { + logger(`[ERROR] child process exception %o`, err); + target.push(Buffer.from(String(err.stack), "ascii")); + }; +} +function onDataReceived(target, name, logger, output) { + return (buffer) => { + logger(`%s received %L bytes`, name, buffer); + output(`%B`, buffer); + target.push(buffer); + }; +} +var GitExecutorChain; +var init_git_executor_chain = __esm({ + "src/lib/runners/git-executor-chain.ts"() { + init_git_error(); + init_task(); + init_utils(); + init_tasks_pending_queue(); + GitExecutorChain = class { + constructor(_executor, _scheduler, _plugins) { + this._executor = _executor; + this._scheduler = _scheduler; + this._plugins = _plugins; + this._chain = Promise.resolve(); + this._queue = new TasksPendingQueue(); + } + get binary() { + return this._executor.binary; + } + get cwd() { + return this._cwd || this._executor.cwd; + } + set cwd(cwd) { + this._cwd = cwd; + } + get env() { + return this._executor.env; + } + get outputHandler() { + return this._executor.outputHandler; + } + chain() { + return this; + } + push(task) { + this._queue.push(task); + return this._chain = this._chain.then(() => this.attemptTask(task)); + } + attemptTask(task) { + return __async(this, null, function* () { + const onScheduleComplete = yield this._scheduler.next(); + const onQueueComplete = () => this._queue.complete(task); + try { + const { logger } = this._queue.attempt(task); + return yield isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger); + } catch (e) { + throw this.onFatalException(task, e); + } finally { + onQueueComplete(); + onScheduleComplete(); + } + }); + } + onFatalException(task, e) { + const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e)); + this._chain = Promise.resolve(); + this._queue.fatal(gitError); + return gitError; + } + attemptRemoteTask(task, logger) { + return __async(this, null, function* () { + const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands)); + const raw = yield this.gitResponse(task, this.binary, args, this.outputHandler, logger.step("SPAWN")); + const outputStreams = yield this.handleTaskData(task, args, raw, logger.step("HANDLE")); + logger(`passing response to task's parser as a %s`, task.format); + if (isBufferTask(task)) { + return callTaskParser(task.parser, outputStreams); + } + return callTaskParser(task.parser, outputStreams.asStrings()); + }); + } + attemptEmptyTask(task, logger) { + return __async(this, null, function* () { + logger(`empty task bypassing child process to call to task's parser`); + return task.parser(this); + }); + } + handleTaskData(task, args, result, logger) { + const { exitCode, rejection, stdOut, stdErr } = result; + return new Promise((done, fail) => { + logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode); + const { error } = this._plugins.exec("task.error", { error: rejection }, __spreadValues(__spreadValues({}, pluginContext(task, args)), result)); + if (error && task.onError) { + logger.info(`exitCode=%s handling with custom error handler`); + return task.onError(result, error, (newStdOut) => { + logger.info(`custom error handler treated as success`); + logger(`custom error returned a %s`, objectToString(newStdOut)); + done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut, Buffer.concat(stdErr))); + }, fail); + } + if (error) { + logger.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`, exitCode, stdErr.length, rejection); + return fail(error); + } + logger.info(`retrieving task output complete`); + done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr))); + }); + } + gitResponse(task, command, args, outputHandler, logger) { + return __async(this, null, function* () { + const outputLogger = logger.sibling("output"); + const spawnOptions = this._plugins.exec("spawn.options", { + cwd: this.cwd, + env: this.env, + windowsHide: true + }, pluginContext(task, task.commands)); + return new Promise((done) => { + const stdOut = []; + const stdErr = []; + logger.info(`%s %o`, command, args); + logger("%O", spawnOptions); + let rejection = this._beforeSpawn(task, args); + if (rejection) { + return done({ + stdOut, + stdErr, + exitCode: 9901, + rejection + }); + } + this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { + kill(reason) { + rejection = reason || rejection; + } + })); + const spawned = (0, import_child_process.spawn)(command, args, spawnOptions); + spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut"))); + spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr"))); + spawned.on("error", onErrorReceived(stdErr, logger)); + if (outputHandler) { + logger(`Passing child process stdOut/stdErr to custom outputHandler`); + outputHandler(command, spawned.stdout, spawned.stderr, [...args]); + } + this._plugins.exec("spawn.after", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { + spawned, + close(exitCode, reason) { + done({ + stdOut, + stdErr, + exitCode, + rejection: rejection || reason + }); + }, + kill(reason) { + if (spawned.killed) { + return; + } + rejection = reason; + spawned.kill("SIGINT"); + } + })); + }); + }); + } + _beforeSpawn(task, args) { + let rejection; + this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { + kill(reason) { + rejection = reason || rejection; + } + })); + return rejection; + } + }; + } +}); +var git_executor_exports = {}; +__export2(git_executor_exports, { + GitExecutor: () => GitExecutor +}); +var GitExecutor; +var init_git_executor = __esm({ + "src/lib/runners/git-executor.ts"() { + init_git_executor_chain(); + GitExecutor = class { + constructor(binary = "git", cwd, _scheduler, _plugins) { + this.binary = binary; + this.cwd = cwd; + this._scheduler = _scheduler; + this._plugins = _plugins; + this._chain = new GitExecutorChain(this, this._scheduler, this._plugins); + } + chain() { + return new GitExecutorChain(this, this._scheduler, this._plugins); + } + push(task) { + return this._chain.push(task); + } + }; + } +}); +function taskCallback(task, response, callback = NOOP) { + const onSuccess = (data) => { + callback(null, data); + }; + const onError2 = (err) => { + if ((err == null ? void 0 : err.task) === task) { + callback(err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err, void 0); + } + }; + response.then(onSuccess, onError2); +} +function addDeprecationNoticeToError(err) { + let log = (name) => { + console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`); + log = NOOP; + }; + return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {})); + function descriptorReducer(all, name) { + if (name in err) { + return all; + } + all[name] = { + enumerable: false, + configurable: false, + get() { + log(name); + return err.git[name]; + } + }; + return all; + } +} +var init_task_callback = __esm({ + "src/lib/task-callback.ts"() { + init_git_response_error(); + init_utils(); + } +}); +function changeWorkingDirectoryTask(directory, root) { + return adhocExecTask((instance) => { + if (!folderExists(directory)) { + throw new Error(`Git.cwd: cannot change to non-directory "${directory}"`); + } + return (root || instance).cwd = directory; + }); +} +var init_change_working_directory = __esm({ + "src/lib/tasks/change-working-directory.ts"() { + init_utils(); + init_task(); + } +}); +function checkoutTask(args) { + const commands = ["checkout", ...args]; + if (commands[1] === "-b" && commands.includes("-B")) { + commands[1] = remove(commands, "-B"); + } + return straightThroughStringTask(commands); +} +function checkout_default() { + return { + checkout() { + return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments)); + }, + checkoutBranch(branchName, startPoint) { + return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); + }, + checkoutLocalBranch(branchName) { + return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); + } + }; +} +var init_checkout = __esm({ + "src/lib/tasks/checkout.ts"() { + init_utils(); + init_task(); + } +}); +function parseCommitResult(stdOut) { + const result = { + author: null, + branch: "", + commit: "", + root: false, + summary: { + changes: 0, + insertions: 0, + deletions: 0 + } + }; + return parseStringResponse(result, parsers, stdOut); +} +var parsers; +var init_parse_commit = __esm({ + "src/lib/parsers/parse-commit.ts"() { + init_utils(); + parsers = [ + new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch, root, commit]) => { + result.branch = branch; + result.commit = commit; + result.root = !!root; + }), + new LineParser(/\s*Author:\s(.+)/i, (result, [author]) => { + const parts = author.split("<"); + const email = parts.pop(); + if (!email || !email.includes("@")) { + return; + } + result.author = { + email: email.substr(0, email.length - 1), + name: parts.join("<").trim() + }; + }), + new LineParser(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g, (result, [changes, insertions, deletions]) => { + result.summary.changes = parseInt(changes, 10) || 0; + result.summary.insertions = parseInt(insertions, 10) || 0; + result.summary.deletions = parseInt(deletions, 10) || 0; + }), + new LineParser(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/, (result, [changes, lines, direction]) => { + result.summary.changes = parseInt(changes, 10) || 0; + const count = parseInt(lines, 10) || 0; + if (direction === "-") { + result.summary.deletions = count; + } else if (direction === "+") { + result.summary.insertions = count; + } + }) + ]; + } +}); +function commitTask(message, files, customArgs) { + const commands = [ + "-c", + "core.abbrev=40", + "commit", + ...prefixedArray(message, "-m"), + ...files, + ...customArgs + ]; + return { + commands, + format: "utf-8", + parser: parseCommitResult + }; +} +function commit_default() { + return { + commit(message, ...rest) { + const next = trailingFunctionArgument(arguments); + const task = rejectDeprecatedSignatures(message) || commitTask(asArray(message), asArray(filterType(rest[0], filterStringOrStringArray, [])), [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]); + return this._runTask(task, next); + } + }; + function rejectDeprecatedSignatures(message) { + return !filterStringOrStringArray(message) && configurationErrorTask(`git.commit: requires the commit message to be supplied as a string/string[]`); + } +} +var init_commit = __esm({ + "src/lib/tasks/commit.ts"() { + init_parse_commit(); + init_utils(); + init_task(); + } +}); +function first_commit_default() { + return { + firstCommit() { + return this._runTask(straightThroughStringTask(["rev-list", "--max-parents=0", "HEAD"], true), trailingFunctionArgument(arguments)); + } + }; +} +var init_first_commit = __esm({ + "src/lib/tasks/first-commit.ts"() { + init_utils(); + init_task(); + } +}); +function hashObjectTask(filePath, write) { + const commands = ["hash-object", filePath]; + if (write) { + commands.push("-w"); + } + return straightThroughStringTask(commands, true); +} +var init_hash_object = __esm({ + "src/lib/tasks/hash-object.ts"() { + init_task(); + } +}); +function parseInit(bare, path, text) { + const response = String(text).trim(); + let result; + if (result = initResponseRegex.exec(response)) { + return new InitSummary(bare, path, false, result[1]); + } + if (result = reInitResponseRegex.exec(response)) { + return new InitSummary(bare, path, true, result[1]); + } + let gitDir = ""; + const tokens = response.split(" "); + while (tokens.length) { + const token = tokens.shift(); + if (token === "in") { + gitDir = tokens.join(" "); + break; + } + } + return new InitSummary(bare, path, /^re/i.test(response), gitDir); +} +var InitSummary; +var initResponseRegex; +var reInitResponseRegex; +var init_InitSummary = __esm({ + "src/lib/responses/InitSummary.ts"() { + InitSummary = class { + constructor(bare, path, existing, gitDir) { + this.bare = bare; + this.path = path; + this.existing = existing; + this.gitDir = gitDir; + } + }; + initResponseRegex = /^Init.+ repository in (.+)$/; + reInitResponseRegex = /^Rein.+ in (.+)$/; + } +}); +function hasBareCommand(command) { + return command.includes(bareCommand); +} +function initTask(bare = false, path, customArgs) { + const commands = ["init", ...customArgs]; + if (bare && !hasBareCommand(commands)) { + commands.splice(1, 0, bareCommand); + } + return { + commands, + format: "utf-8", + parser(text) { + return parseInit(commands.includes("--bare"), path, text); + } + }; +} +var bareCommand; +var init_init = __esm({ + "src/lib/tasks/init.ts"() { + init_InitSummary(); + bareCommand = "--bare"; + } +}); +function logFormatFromCommand(customArgs) { + for (let i = 0; i < customArgs.length; i++) { + const format = logFormatRegex.exec(customArgs[i]); + if (format) { + return `--${format[1]}`; + } + } + return ""; +} +function isLogFormat(customArg) { + return logFormatRegex.test(customArg); +} +var logFormatRegex; +var init_log_format = __esm({ + "src/lib/args/log-format.ts"() { + logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/; + } +}); +var DiffSummary; +var init_DiffSummary = __esm({ + "src/lib/responses/DiffSummary.ts"() { + DiffSummary = class { + constructor() { + this.changed = 0; + this.deletions = 0; + this.insertions = 0; + this.files = []; + } + }; + } +}); +function getDiffParser(format = "") { + const parser3 = diffSummaryParsers[format]; + return (stdOut) => parseStringResponse(new DiffSummary(), parser3, stdOut, false); +} +var statParser; +var numStatParser; +var nameOnlyParser; +var nameStatusParser; +var diffSummaryParsers; +var init_parse_diff_summary = __esm({ + "src/lib/parsers/parse-diff-summary.ts"() { + init_log_format(); + init_DiffSummary(); + init_diff_name_status(); + init_utils(); + statParser = [ + new LineParser(/(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/, (result, [file, changes, alterations = ""]) => { + result.files.push({ + file: file.trim(), + changes: asNumber(changes), + insertions: alterations.replace(/[^+]/g, "").length, + deletions: alterations.replace(/[^-]/g, "").length, + binary: false + }); + }), + new LineParser(/(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/, (result, [file, before, after]) => { + result.files.push({ + file: file.trim(), + before: asNumber(before), + after: asNumber(after), + binary: true + }); + }), + new LineParser(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/, (result, [changed, summary]) => { + const inserted = /(\d+) i/.exec(summary); + const deleted = /(\d+) d/.exec(summary); + result.changed = asNumber(changed); + result.insertions = asNumber(inserted == null ? void 0 : inserted[1]); + result.deletions = asNumber(deleted == null ? void 0 : deleted[1]); + }) + ]; + numStatParser = [ + new LineParser(/(\d+)\t(\d+)\t(.+)$/, (result, [changesInsert, changesDelete, file]) => { + const insertions = asNumber(changesInsert); + const deletions = asNumber(changesDelete); + result.changed++; + result.insertions += insertions; + result.deletions += deletions; + result.files.push({ + file, + changes: insertions + deletions, + insertions, + deletions, + binary: false + }); + }), + new LineParser(/-\t-\t(.+)$/, (result, [file]) => { + result.changed++; + result.files.push({ + file, + after: 0, + before: 0, + binary: true + }); + }) + ]; + nameOnlyParser = [ + new LineParser(/(.+)$/, (result, [file]) => { + result.changed++; + result.files.push({ + file, + changes: 0, + insertions: 0, + deletions: 0, + binary: false + }); + }) + ]; + nameStatusParser = [ + new LineParser(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/, (result, [status, _similarity, from, _to, to]) => { + result.changed++; + result.files.push({ + file: to != null ? to : from, + changes: 0, + status: orVoid(isDiffNameStatus(status) && status), + insertions: 0, + deletions: 0, + binary: false + }); + }) + ]; + diffSummaryParsers = { + [ + "" + /* NONE */ + ]: statParser, + [ + "--stat" + /* STAT */ + ]: statParser, + [ + "--numstat" + /* NUM_STAT */ + ]: numStatParser, + [ + "--name-status" + /* NAME_STATUS */ + ]: nameStatusParser, + [ + "--name-only" + /* NAME_ONLY */ + ]: nameOnlyParser + }; + } +}); +function lineBuilder(tokens, fields) { + return fields.reduce((line, field, index) => { + line[field] = tokens[index] || ""; + return line; + }, /* @__PURE__ */ Object.create({ diff: null })); +} +function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = "") { + const parseDiffResult = getDiffParser(logFormat); + return function(stdOut) { + const all = toLinesWithContent(stdOut, true, START_BOUNDARY).map(function(item) { + const lineDetail = item.trim().split(COMMIT_BOUNDARY); + const listLogLine = lineBuilder(lineDetail[0].trim().split(splitter), fields); + if (lineDetail.length > 1 && !!lineDetail[1].trim()) { + listLogLine.diff = parseDiffResult(lineDetail[1]); + } + return listLogLine; + }); + return { + all, + latest: all.length && all[0] || null, + total: all.length + }; + }; +} +var START_BOUNDARY; +var COMMIT_BOUNDARY; +var SPLITTER; +var defaultFieldNames; +var init_parse_list_log_summary = __esm({ + "src/lib/parsers/parse-list-log-summary.ts"() { + init_utils(); + init_parse_diff_summary(); + init_log_format(); + START_BOUNDARY = "\xF2\xF2\xF2\xF2\xF2\xF2 "; + COMMIT_BOUNDARY = " \xF2\xF2"; + SPLITTER = " \xF2 "; + defaultFieldNames = ["hash", "date", "message", "refs", "author_name", "author_email"]; + } +}); +var diff_exports = {}; +__export2(diff_exports, { + diffSummaryTask: () => diffSummaryTask, + validateLogFormatConfig: () => validateLogFormatConfig +}); +function diffSummaryTask(customArgs) { + let logFormat = logFormatFromCommand(customArgs); + const commands = ["diff"]; + if (logFormat === "") { + logFormat = "--stat"; + commands.push("--stat=4096"); + } + commands.push(...customArgs); + return validateLogFormatConfig(commands) || { + commands, + format: "utf-8", + parser: getDiffParser(logFormat) + }; +} +function validateLogFormatConfig(customArgs) { + const flags = customArgs.filter(isLogFormat); + if (flags.length > 1) { + return configurationErrorTask(`Summary flags are mutually exclusive - pick one of ${flags.join(",")}`); + } + if (flags.length && customArgs.includes("-z")) { + return configurationErrorTask(`Summary flag ${flags} parsing is not compatible with null termination option '-z'`); + } +} +var init_diff = __esm({ + "src/lib/tasks/diff.ts"() { + init_log_format(); + init_parse_diff_summary(); + init_task(); + } +}); +function prettyFormat(format, splitter) { + const fields = []; + const formatStr = []; + Object.keys(format).forEach((field) => { + fields.push(field); + formatStr.push(String(format[field])); + }); + return [fields, formatStr.join(splitter)]; +} +function userOptions(input) { + return Object.keys(input).reduce((out, key) => { + if (!(key in excludeOptions)) { + out[key] = input[key]; + } + return out; + }, {}); +} +function parseLogOptions(opt = {}, customArgs = []) { + const splitter = filterType(opt.splitter, filterString, SPLITTER); + const format = !filterPrimitives(opt.format) && opt.format ? opt.format : { + hash: "%H", + date: opt.strictDate === false ? "%ai" : "%aI", + message: "%s", + refs: "%D", + body: opt.multiLine ? "%B" : "%b", + author_name: opt.mailMap !== false ? "%aN" : "%an", + author_email: opt.mailMap !== false ? "%aE" : "%ae" + }; + const [fields, formatStr] = prettyFormat(format, splitter); + const suffix = []; + const command = [ + `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`, + ...customArgs + ]; + const maxCount = opt.n || opt["max-count"] || opt.maxCount; + if (maxCount) { + command.push(`--max-count=${maxCount}`); + } + if (opt.from || opt.to) { + const rangeOperator = opt.symmetric !== false ? "..." : ".."; + suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`); + } + if (filterString(opt.file)) { + command.push("--follow", pathspec(opt.file)); + } + appendTaskOptions(userOptions(opt), command); + return { + fields, + splitter, + commands: [...command, ...suffix] + }; +} +function logTask(splitter, fields, customArgs) { + const parser3 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs)); + return { + commands: ["log", ...customArgs], + format: "utf-8", + parser: parser3 + }; +} +function log_default() { + return { + log(...rest) { + const next = trailingFunctionArgument(arguments); + const options = parseLogOptions(trailingOptionsArgument(arguments), filterType(arguments[0], filterArray)); + const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options); + return this._runTask(task, next); + } + }; + function createLogTask(options) { + return logTask(options.splitter, options.fields, options.commands); + } + function rejectDeprecatedSignatures(from, to) { + return filterString(from) && filterString(to) && configurationErrorTask(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`); + } +} +var excludeOptions; +var init_log = __esm({ + "src/lib/tasks/log.ts"() { + init_log_format(); + init_pathspec(); + init_parse_list_log_summary(); + init_utils(); + init_task(); + init_diff(); + excludeOptions = /* @__PURE__ */ ((excludeOptions2) => { + excludeOptions2[excludeOptions2["--pretty"] = 0] = "--pretty"; + excludeOptions2[excludeOptions2["max-count"] = 1] = "max-count"; + excludeOptions2[excludeOptions2["maxCount"] = 2] = "maxCount"; + excludeOptions2[excludeOptions2["n"] = 3] = "n"; + excludeOptions2[excludeOptions2["file"] = 4] = "file"; + excludeOptions2[excludeOptions2["format"] = 5] = "format"; + excludeOptions2[excludeOptions2["from"] = 6] = "from"; + excludeOptions2[excludeOptions2["to"] = 7] = "to"; + excludeOptions2[excludeOptions2["splitter"] = 8] = "splitter"; + excludeOptions2[excludeOptions2["symmetric"] = 9] = "symmetric"; + excludeOptions2[excludeOptions2["mailMap"] = 10] = "mailMap"; + excludeOptions2[excludeOptions2["multiLine"] = 11] = "multiLine"; + excludeOptions2[excludeOptions2["strictDate"] = 12] = "strictDate"; + return excludeOptions2; + })(excludeOptions || {}); + } +}); +var MergeSummaryConflict; +var MergeSummaryDetail; +var init_MergeSummary = __esm({ + "src/lib/responses/MergeSummary.ts"() { + MergeSummaryConflict = class { + constructor(reason, file = null, meta) { + this.reason = reason; + this.file = file; + this.meta = meta; + } + toString() { + return `${this.file}:${this.reason}`; + } + }; + MergeSummaryDetail = class { + constructor() { + this.conflicts = []; + this.merges = []; + this.result = "success"; + } + get failed() { + return this.conflicts.length > 0; + } + get reason() { + return this.result; + } + toString() { + if (this.conflicts.length) { + return `CONFLICTS: ${this.conflicts.join(", ")}`; + } + return "OK"; + } + }; + } +}); +var PullSummary; +var PullFailedSummary; +var init_PullSummary = __esm({ + "src/lib/responses/PullSummary.ts"() { + PullSummary = class { + constructor() { + this.remoteMessages = { + all: [] + }; + this.created = []; + this.deleted = []; + this.files = []; + this.deletions = {}; + this.insertions = {}; + this.summary = { + changes: 0, + deletions: 0, + insertions: 0 + }; + } + }; + PullFailedSummary = class { + constructor() { + this.remote = ""; + this.hash = { + local: "", + remote: "" + }; + this.branch = { + local: "", + remote: "" + }; + this.message = ""; + } + toString() { + return this.message; + } + }; + } +}); +function objectEnumerationResult(remoteMessages) { + return remoteMessages.objects = remoteMessages.objects || { + compressing: 0, + counting: 0, + enumerating: 0, + packReused: 0, + reused: { count: 0, delta: 0 }, + total: { count: 0, delta: 0 } + }; +} +function asObjectCount(source) { + const count = /^\s*(\d+)/.exec(source); + const delta = /delta (\d+)/i.exec(source); + return { + count: asNumber(count && count[1] || "0"), + delta: asNumber(delta && delta[1] || "0") + }; +} +var remoteMessagesObjectParsers; +var init_parse_remote_objects = __esm({ + "src/lib/parsers/parse-remote-objects.ts"() { + init_utils(); + remoteMessagesObjectParsers = [ + new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => { + const key = action.toLowerCase(); + const enumeration = objectEnumerationResult(result.remoteMessages); + Object.assign(enumeration, { [key]: asNumber(count) }); + }), + new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => { + const key = action.toLowerCase(); + const enumeration = objectEnumerationResult(result.remoteMessages); + Object.assign(enumeration, { [key]: asNumber(count) }); + }), + new RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => { + const objects = objectEnumerationResult(result.remoteMessages); + objects.total = asObjectCount(total); + objects.reused = asObjectCount(reused); + objects.packReused = asNumber(packReused); + }) + ]; + } +}); +function parseRemoteMessages(_stdOut, stdErr) { + return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr); +} +var parsers2; +var RemoteMessageSummary; +var init_parse_remote_messages = __esm({ + "src/lib/parsers/parse-remote-messages.ts"() { + init_utils(); + init_parse_remote_objects(); + parsers2 = [ + new RemoteLineParser(/^remote:\s*(.+)$/, (result, [text]) => { + result.remoteMessages.all.push(text.trim()); + return false; + }), + ...remoteMessagesObjectParsers, + new RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => { + result.remoteMessages.pullRequestUrl = pullRequestUrl; + }), + new RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => { + result.remoteMessages.vulnerabilities = { + count: asNumber(count), + summary, + url + }; + }) + ]; + RemoteMessageSummary = class { + constructor() { + this.all = []; + } + }; + } +}); +function parsePullErrorResult(stdOut, stdErr) { + const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]); + return pullError.message && pullError; +} +var FILE_UPDATE_REGEX; +var SUMMARY_REGEX; +var ACTION_REGEX; +var parsers3; +var errorParsers; +var parsePullDetail; +var parsePullResult; +var init_parse_pull = __esm({ + "src/lib/parsers/parse-pull.ts"() { + init_PullSummary(); + init_utils(); + init_parse_remote_messages(); + FILE_UPDATE_REGEX = /^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/; + SUMMARY_REGEX = /(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/; + ACTION_REGEX = /^(create|delete) mode \d+ (.+)/; + parsers3 = [ + new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => { + result.files.push(file); + if (insertions) { + result.insertions[file] = insertions.length; + } + if (deletions) { + result.deletions[file] = deletions.length; + } + }), + new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => { + if (insertions !== void 0 || deletions !== void 0) { + result.summary.changes = +changes || 0; + result.summary.insertions = +insertions || 0; + result.summary.deletions = +deletions || 0; + return true; + } + return false; + }), + new LineParser(ACTION_REGEX, (result, [action, file]) => { + append(result.files, file); + append(action === "create" ? result.created : result.deleted, file); + }) + ]; + errorParsers = [ + new LineParser(/^from\s(.+)$/i, (result, [remote]) => void (result.remote = remote)), + new LineParser(/^fatal:\s(.+)$/, (result, [message]) => void (result.message = message)), + new LineParser(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/, (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => { + result.branch.local = branchLocal; + result.hash.local = hashLocal; + result.branch.remote = branchRemote; + result.hash.remote = hashRemote; + }) + ]; + parsePullDetail = (stdOut, stdErr) => { + return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]); + }; + parsePullResult = (stdOut, stdErr) => { + return Object.assign(new PullSummary(), parsePullDetail(stdOut, stdErr), parseRemoteMessages(stdOut, stdErr)); + }; + } +}); +var parsers4; +var parseMergeResult; +var parseMergeDetail; +var init_parse_merge = __esm({ + "src/lib/parsers/parse-merge.ts"() { + init_MergeSummary(); + init_utils(); + init_parse_pull(); + parsers4 = [ + new LineParser(/^Auto-merging\s+(.+)$/, (summary, [autoMerge]) => { + summary.merges.push(autoMerge); + }), + new LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => { + summary.conflicts.push(new MergeSummaryConflict(reason, file)); + }), + new LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef]) => { + summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef })); + }), + new LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => { + summary.conflicts.push(new MergeSummaryConflict(reason, null)); + }), + new LineParser(/^Automatic merge failed;\s+(.+)$/, (summary, [result]) => { + summary.result = result; + }) + ]; + parseMergeResult = (stdOut, stdErr) => { + return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr)); + }; + parseMergeDetail = (stdOut) => { + return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut); + }; + } +}); +function mergeTask(customArgs) { + if (!customArgs.length) { + return configurationErrorTask("Git.merge requires at least one option"); + } + return { + commands: ["merge", ...customArgs], + format: "utf-8", + parser(stdOut, stdErr) { + const merge = parseMergeResult(stdOut, stdErr); + if (merge.failed) { + throw new GitResponseError(merge); + } + return merge; + } + }; +} +var init_merge = __esm({ + "src/lib/tasks/merge.ts"() { + init_git_response_error(); + init_parse_merge(); + init_task(); + } +}); +function pushResultPushedItem(local, remote, status) { + const deleted = status.includes("deleted"); + const tag = status.includes("tag") || /^refs\/tags/.test(local); + const alreadyUpdated = !status.includes("new"); + return { + deleted, + tag, + branch: !tag, + new: !alreadyUpdated, + alreadyUpdated, + local, + remote + }; +} +var parsers5; +var parsePushResult; +var parsePushDetail; +var init_parse_push = __esm({ + "src/lib/parsers/parse-push.ts"() { + init_utils(); + init_parse_remote_messages(); + parsers5 = [ + new LineParser(/^Pushing to (.+)$/, (result, [repo]) => { + result.repo = repo; + }), + new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => { + result.ref = __spreadProps(__spreadValues({}, result.ref || {}), { + local + }); + }), + new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => { + result.pushed.push(pushResultPushedItem(local, remote, type)); + }), + new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => { + result.branch = __spreadProps(__spreadValues({}, result.branch || {}), { + local, + remote, + remoteName + }); + }), + new LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => { + result.update = { + head: { + local, + remote + }, + hash: { + from, + to + } + }; + }) + ]; + parsePushResult = (stdOut, stdErr) => { + const pushDetail = parsePushDetail(stdOut, stdErr); + const responseDetail = parseRemoteMessages(stdOut, stdErr); + return __spreadValues(__spreadValues({}, pushDetail), responseDetail); + }; + parsePushDetail = (stdOut, stdErr) => { + return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]); + }; + } +}); +var push_exports = {}; +__export2(push_exports, { + pushTagsTask: () => pushTagsTask, + pushTask: () => pushTask +}); +function pushTagsTask(ref = {}, customArgs) { + append(customArgs, "--tags"); + return pushTask(ref, customArgs); +} +function pushTask(ref = {}, customArgs) { + const commands = ["push", ...customArgs]; + if (ref.branch) { + commands.splice(1, 0, ref.branch); + } + if (ref.remote) { + commands.splice(1, 0, ref.remote); + } + remove(commands, "-v"); + append(commands, "--verbose"); + append(commands, "--porcelain"); + return { + commands, + format: "utf-8", + parser: parsePushResult + }; +} +var init_push = __esm({ + "src/lib/tasks/push.ts"() { + init_parse_push(); + init_utils(); + } +}); +function show_default() { + return { + showBuffer() { + const commands = ["show", ...getTrailingOptions(arguments, 1)]; + if (!commands.includes("--binary")) { + commands.splice(1, 0, "--binary"); + } + return this._runTask(straightThroughBufferTask(commands), trailingFunctionArgument(arguments)); + }, + show() { + const commands = ["show", ...getTrailingOptions(arguments, 1)]; + return this._runTask(straightThroughStringTask(commands), trailingFunctionArgument(arguments)); + } + }; +} +var init_show = __esm({ + "src/lib/tasks/show.ts"() { + init_utils(); + init_task(); + } +}); +var fromPathRegex; +var FileStatusSummary; +var init_FileStatusSummary = __esm({ + "src/lib/responses/FileStatusSummary.ts"() { + fromPathRegex = /^(.+) -> (.+)$/; + FileStatusSummary = class { + constructor(path, index, working_dir) { + this.path = path; + this.index = index; + this.working_dir = working_dir; + if (index + working_dir === "R") { + const detail = fromPathRegex.exec(path) || [null, path, path]; + this.from = detail[1] || ""; + this.path = detail[2] || ""; + } + } + }; + } +}); +function renamedFile(line) { + const [to, from] = line.split(NULL); + return { + from: from || to, + to + }; +} +function parser2(indexX, indexY, handler) { + return [`${indexX}${indexY}`, handler]; +} +function conflicts(indexX, ...indexY) { + return indexY.map((y) => parser2(indexX, y, (result, file) => append(result.conflicted, file))); +} +function splitLine(result, lineStr) { + const trimmed2 = lineStr.trim(); + switch (" ") { + case trimmed2.charAt(2): + return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3)); + case trimmed2.charAt(1): + return data(" ", trimmed2.charAt(0), trimmed2.substr(2)); + default: + return; + } + function data(index, workingDir, path) { + const raw = `${index}${workingDir}`; + const handler = parsers6.get(raw); + if (handler) { + handler(result, path); + } + if (raw !== "##" && raw !== "!!") { + result.files.push(new FileStatusSummary(path.replace(/\0.+$/, ""), index, workingDir)); + } + } +} +var StatusSummary; +var parsers6; +var parseStatusSummary; +var init_StatusSummary = __esm({ + "src/lib/responses/StatusSummary.ts"() { + init_utils(); + init_FileStatusSummary(); + StatusSummary = class { + constructor() { + this.not_added = []; + this.conflicted = []; + this.created = []; + this.deleted = []; + this.ignored = void 0; + this.modified = []; + this.renamed = []; + this.files = []; + this.staged = []; + this.ahead = 0; + this.behind = 0; + this.current = null; + this.tracking = null; + this.detached = false; + this.isClean = () => { + return !this.files.length; + }; + } + }; + parsers6 = new Map([ + parser2(" ", "A", (result, file) => append(result.created, file)), + parser2(" ", "D", (result, file) => append(result.deleted, file)), + parser2(" ", "M", (result, file) => append(result.modified, file)), + parser2("A", " ", (result, file) => append(result.created, file) && append(result.staged, file)), + parser2("A", "M", (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)), + parser2("D", " ", (result, file) => append(result.deleted, file) && append(result.staged, file)), + parser2("M", " ", (result, file) => append(result.modified, file) && append(result.staged, file)), + parser2("M", "M", (result, file) => append(result.modified, file) && append(result.staged, file)), + parser2("R", " ", (result, file) => { + append(result.renamed, renamedFile(file)); + }), + parser2("R", "M", (result, file) => { + const renamed = renamedFile(file); + append(result.renamed, renamed); + append(result.modified, renamed.to); + }), + parser2("!", "!", (_result, _file) => { + append(_result.ignored = _result.ignored || [], _file); + }), + parser2("?", "?", (result, file) => append(result.not_added, file)), + ...conflicts( + "A", + "A", + "U" + /* UNMERGED */ + ), + ...conflicts( + "D", + "D", + "U" + /* UNMERGED */ + ), + ...conflicts( + "U", + "A", + "D", + "U" + /* UNMERGED */ + ), + [ + "##", + (result, line) => { + const aheadReg = /ahead (\d+)/; + const behindReg = /behind (\d+)/; + const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/; + const trackingReg = /\.{3}(\S*)/; + const onEmptyBranchReg = /\son\s([\S]+)$/; + let regexResult; + regexResult = aheadReg.exec(line); + result.ahead = regexResult && +regexResult[1] || 0; + regexResult = behindReg.exec(line); + result.behind = regexResult && +regexResult[1] || 0; + regexResult = currentReg.exec(line); + result.current = regexResult && regexResult[1]; + regexResult = trackingReg.exec(line); + result.tracking = regexResult && regexResult[1]; + regexResult = onEmptyBranchReg.exec(line); + result.current = regexResult && regexResult[1] || result.current; + result.detached = /\(no branch\)/.test(line); + } + ] + ]); + parseStatusSummary = function(text) { + const lines = text.split(NULL); + const status = new StatusSummary(); + for (let i = 0, l = lines.length; i < l; ) { + let line = lines[i++].trim(); + if (!line) { + continue; + } + if (line.charAt(0) === "R") { + line += NULL + (lines[i++] || ""); + } + splitLine(status, line); + } + return status; + }; + } +}); +function statusTask(customArgs) { + const commands = [ + "status", + "--porcelain", + "-b", + "-u", + "--null", + ...customArgs.filter((arg) => !ignoredOptions.includes(arg)) + ]; + return { + format: "utf-8", + commands, + parser(text) { + return parseStatusSummary(text); + } + }; +} +var ignoredOptions; +var init_status = __esm({ + "src/lib/tasks/status.ts"() { + init_StatusSummary(); + ignoredOptions = ["--null", "-z"]; + } +}); +function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed = true) { + return Object.defineProperty({ + major, + minor, + patch, + agent, + installed + }, "toString", { + value() { + return `${this.major}.${this.minor}.${this.patch}`; + }, + configurable: false, + enumerable: false + }); +} +function notInstalledResponse() { + return versionResponse(0, 0, 0, "", false); +} +function version_default() { + return { + version() { + return this._runTask({ + commands: ["--version"], + format: "utf-8", + parser: versionParser, + onError(result, error, done, fail) { + if (result.exitCode === -2) { + return done(Buffer.from(NOT_INSTALLED)); + } + fail(error); + } + }); + } + }; +} +function versionParser(stdOut) { + if (stdOut === NOT_INSTALLED) { + return notInstalledResponse(); + } + return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut); +} +var NOT_INSTALLED; +var parsers7; +var init_version = __esm({ + "src/lib/tasks/version.ts"() { + init_utils(); + NOT_INSTALLED = "installed=false"; + parsers7 = [ + new LineParser(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/, (result, [major, minor, patch, agent = ""]) => { + Object.assign(result, versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)); + }), + new LineParser(/version (\d+)\.(\d+)\.(\D+)(.+)?$/, (result, [major, minor, patch, agent = ""]) => { + Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent)); + }) + ]; + } +}); +var simple_git_api_exports = {}; +__export2(simple_git_api_exports, { + SimpleGitApi: () => SimpleGitApi +}); +var SimpleGitApi; +var init_simple_git_api = __esm({ + "src/lib/simple-git-api.ts"() { + init_task_callback(); + init_change_working_directory(); + init_checkout(); + init_commit(); + init_config(); + init_first_commit(); + init_grep(); + init_hash_object(); + init_init(); + init_log(); + init_merge(); + init_push(); + init_show(); + init_status(); + init_task(); + init_version(); + init_utils(); + SimpleGitApi = class { + constructor(_executor) { + this._executor = _executor; + } + _runTask(task, then) { + const chain = this._executor.chain(); + const promise = chain.push(task); + if (then) { + taskCallback(task, promise, then); + } + return Object.create(this, { + then: { value: promise.then.bind(promise) }, + catch: { value: promise.catch.bind(promise) }, + _executor: { value: chain } + }); + } + add(files) { + return this._runTask(straightThroughStringTask(["add", ...asArray(files)]), trailingFunctionArgument(arguments)); + } + cwd(directory) { + const next = trailingFunctionArgument(arguments); + if (typeof directory === "string") { + return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next); + } + if (typeof (directory == null ? void 0 : directory.path) === "string") { + return this._runTask(changeWorkingDirectoryTask(directory.path, directory.root && this._executor || void 0), next); + } + return this._runTask(configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"), next); + } + hashObject(path, write) { + return this._runTask(hashObjectTask(path, write === true), trailingFunctionArgument(arguments)); + } + init(bare) { + return this._runTask(initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); + } + merge() { + return this._runTask(mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); + } + mergeFromTo(remote, branch) { + if (!(filterString(remote) && filterString(branch))) { + return this._runTask(configurationErrorTask(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`)); + } + return this._runTask(mergeTask([remote, branch, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false)); + } + outputHandler(handler) { + this._executor.outputHandler = handler; + return this; + } + push() { + const task = pushTask({ + remote: filterType(arguments[0], filterString), + branch: filterType(arguments[1], filterString) + }, getTrailingOptions(arguments)); + return this._runTask(task, trailingFunctionArgument(arguments)); + } + stash() { + return this._runTask(straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments)); + } + status() { + return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); + } + }; + Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), first_commit_default(), grep_default(), log_default(), show_default(), version_default()); + } +}); +var scheduler_exports = {}; +__export2(scheduler_exports, { + Scheduler: () => Scheduler +}); +var createScheduledTask; +var Scheduler; +var init_scheduler = __esm({ + "src/lib/runners/scheduler.ts"() { + init_utils(); + init_git_logger(); + createScheduledTask = (() => { + let id = 0; + return () => { + id++; + const { promise, done } = (0, import_promise_deferred.createDeferred)(); + return { + promise, + done, + id + }; + }; + })(); + Scheduler = class { + constructor(concurrency = 2) { + this.concurrency = concurrency; + this.logger = createLogger("", "scheduler"); + this.pending = []; + this.running = []; + this.logger(`Constructed, concurrency=%s`, concurrency); + } + schedule() { + if (!this.pending.length || this.running.length >= this.concurrency) { + this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency); + return; + } + const task = append(this.running, this.pending.shift()); + this.logger(`Attempting id=%s`, task.id); + task.done(() => { + this.logger(`Completing id=`, task.id); + remove(this.running, task); + this.schedule(); + }); + } + next() { + const { promise, id } = append(this.pending, createScheduledTask()); + this.logger(`Scheduling id=%s`, id); + this.schedule(); + return promise; + } + }; + } +}); +var apply_patch_exports = {}; +__export2(apply_patch_exports, { + applyPatchTask: () => applyPatchTask +}); +function applyPatchTask(patches, customArgs) { + return straightThroughStringTask(["apply", ...customArgs, ...patches]); +} +var init_apply_patch = __esm({ + "src/lib/tasks/apply-patch.ts"() { + init_task(); + } +}); +function branchDeletionSuccess(branch, hash) { + return { + branch, + hash, + success: true + }; +} +function branchDeletionFailure(branch) { + return { + branch, + hash: null, + success: false + }; +} +var BranchDeletionBatch; +var init_BranchDeleteSummary = __esm({ + "src/lib/responses/BranchDeleteSummary.ts"() { + BranchDeletionBatch = class { + constructor() { + this.all = []; + this.branches = {}; + this.errors = []; + } + get success() { + return !this.errors.length; + } + }; + } +}); +function hasBranchDeletionError(data, processExitCode) { + return processExitCode === 1 && deleteErrorRegex.test(data); +} +var deleteSuccessRegex; +var deleteErrorRegex; +var parsers8; +var parseBranchDeletions; +var init_parse_branch_delete = __esm({ + "src/lib/parsers/parse-branch-delete.ts"() { + init_BranchDeleteSummary(); + init_utils(); + deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/; + deleteErrorRegex = /^error[^']+'([^']+)'/m; + parsers8 = [ + new LineParser(deleteSuccessRegex, (result, [branch, hash]) => { + const deletion = branchDeletionSuccess(branch, hash); + result.all.push(deletion); + result.branches[branch] = deletion; + }), + new LineParser(deleteErrorRegex, (result, [branch]) => { + const deletion = branchDeletionFailure(branch); + result.errors.push(deletion); + result.all.push(deletion); + result.branches[branch] = deletion; + }) + ]; + parseBranchDeletions = (stdOut, stdErr) => { + return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]); + }; + } +}); +var BranchSummaryResult; +var init_BranchSummary = __esm({ + "src/lib/responses/BranchSummary.ts"() { + BranchSummaryResult = class { + constructor() { + this.all = []; + this.branches = {}; + this.current = ""; + this.detached = false; + } + push(status, detached, name, commit, label) { + if (status === "*") { + this.detached = detached; + this.current = name; + } + this.all.push(name); + this.branches[name] = { + current: status === "*", + linkedWorkTree: status === "+", + name, + commit, + label + }; + } + }; + } +}); +function branchStatus(input) { + return input ? input.charAt(0) : ""; +} +function parseBranchSummary(stdOut) { + return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut); +} +var parsers9; +var init_parse_branch = __esm({ + "src/lib/parsers/parse-branch.ts"() { + init_BranchSummary(); + init_utils(); + parsers9 = [ + new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit, label]) => { + result.push(branchStatus(current), true, name, commit, label); + }), + new LineParser(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s, (result, [current, name, commit, label]) => { + result.push(branchStatus(current), false, name, commit, label); + }) + ]; + } +}); +var branch_exports = {}; +__export2(branch_exports, { + branchLocalTask: () => branchLocalTask, + branchTask: () => branchTask, + containsDeleteBranchCommand: () => containsDeleteBranchCommand, + deleteBranchTask: () => deleteBranchTask, + deleteBranchesTask: () => deleteBranchesTask +}); +function containsDeleteBranchCommand(commands) { + const deleteCommands = ["-d", "-D", "--delete"]; + return commands.some((command) => deleteCommands.includes(command)); +} +function branchTask(customArgs) { + const isDelete = containsDeleteBranchCommand(customArgs); + const commands = ["branch", ...customArgs]; + if (commands.length === 1) { + commands.push("-a"); + } + if (!commands.includes("-v")) { + commands.splice(1, 0, "-v"); + } + return { + format: "utf-8", + commands, + parser(stdOut, stdErr) { + if (isDelete) { + return parseBranchDeletions(stdOut, stdErr).all[0]; + } + return parseBranchSummary(stdOut); + } + }; +} +function branchLocalTask() { + const parser3 = parseBranchSummary; + return { + format: "utf-8", + commands: ["branch", "-v"], + parser: parser3 + }; +} +function deleteBranchesTask(branches, forceDelete = false) { + return { + format: "utf-8", + commands: ["branch", "-v", forceDelete ? "-D" : "-d", ...branches], + parser(stdOut, stdErr) { + return parseBranchDeletions(stdOut, stdErr); + }, + onError({ exitCode, stdOut }, error, done, fail) { + if (!hasBranchDeletionError(String(error), exitCode)) { + return fail(error); + } + done(stdOut); + } + }; +} +function deleteBranchTask(branch, forceDelete = false) { + const task = { + format: "utf-8", + commands: ["branch", "-v", forceDelete ? "-D" : "-d", branch], + parser(stdOut, stdErr) { + return parseBranchDeletions(stdOut, stdErr).branches[branch]; + }, + onError({ exitCode, stdErr, stdOut }, error, _, fail) { + if (!hasBranchDeletionError(String(error), exitCode)) { + return fail(error); + } + throw new GitResponseError(task.parser(bufferToString(stdOut), bufferToString(stdErr)), String(error)); + } + }; + return task; +} +var init_branch = __esm({ + "src/lib/tasks/branch.ts"() { + init_git_response_error(); + init_parse_branch_delete(); + init_parse_branch(); + init_utils(); + } +}); +var parseCheckIgnore; +var init_CheckIgnore = __esm({ + "src/lib/responses/CheckIgnore.ts"() { + parseCheckIgnore = (text) => { + return text.split(/\n/g).map((line) => line.trim()).filter((file) => !!file); + }; + } +}); +var check_ignore_exports = {}; +__export2(check_ignore_exports, { + checkIgnoreTask: () => checkIgnoreTask +}); +function checkIgnoreTask(paths) { + return { + commands: ["check-ignore", ...paths], + format: "utf-8", + parser: parseCheckIgnore + }; +} +var init_check_ignore = __esm({ + "src/lib/tasks/check-ignore.ts"() { + init_CheckIgnore(); + } +}); +var clone_exports = {}; +__export2(clone_exports, { + cloneMirrorTask: () => cloneMirrorTask, + cloneTask: () => cloneTask +}); +function disallowedCommand(command) { + return /^--upload-pack(=|$)/.test(command); +} +function cloneTask(repo, directory, customArgs) { + const commands = ["clone", ...customArgs]; + filterString(repo) && commands.push(repo); + filterString(directory) && commands.push(directory); + const banned = commands.find(disallowedCommand); + if (banned) { + return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); + } + return straightThroughStringTask(commands); +} +function cloneMirrorTask(repo, directory, customArgs) { + append(customArgs, "--mirror"); + return cloneTask(repo, directory, customArgs); +} +var init_clone = __esm({ + "src/lib/tasks/clone.ts"() { + init_task(); + init_utils(); + } +}); +function parseFetchResult(stdOut, stdErr) { + const result = { + raw: stdOut, + remote: null, + branches: [], + tags: [], + updated: [], + deleted: [] + }; + return parseStringResponse(result, parsers10, [stdOut, stdErr]); +} +var parsers10; +var init_parse_fetch = __esm({ + "src/lib/parsers/parse-fetch.ts"() { + init_utils(); + parsers10 = [ + new LineParser(/From (.+)$/, (result, [remote]) => { + result.remote = remote; + }), + new LineParser(/\* \[new branch]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => { + result.branches.push({ + name, + tracking + }); + }), + new LineParser(/\* \[new tag]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => { + result.tags.push({ + name, + tracking + }); + }), + new LineParser(/- \[deleted]\s+\S+\s*-> (.+)$/, (result, [tracking]) => { + result.deleted.push({ + tracking + }); + }), + new LineParser(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/, (result, [from, to, name, tracking]) => { + result.updated.push({ + name, + tracking, + to, + from + }); + }) + ]; + } +}); +var fetch_exports = {}; +__export2(fetch_exports, { + fetchTask: () => fetchTask +}); +function disallowedCommand2(command) { + return /^--upload-pack(=|$)/.test(command); +} +function fetchTask(remote, branch, customArgs) { + const commands = ["fetch", ...customArgs]; + if (remote && branch) { + commands.push(remote, branch); + } + const banned = commands.find(disallowedCommand2); + if (banned) { + return configurationErrorTask(`git.fetch: potential exploit argument blocked.`); + } + return { + commands, + format: "utf-8", + parser: parseFetchResult + }; +} +var init_fetch = __esm({ + "src/lib/tasks/fetch.ts"() { + init_parse_fetch(); + init_task(); + } +}); +function parseMoveResult(stdOut) { + return parseStringResponse({ moves: [] }, parsers11, stdOut); +} +var parsers11; +var init_parse_move = __esm({ + "src/lib/parsers/parse-move.ts"() { + init_utils(); + parsers11 = [ + new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => { + result.moves.push({ from, to }); + }) + ]; + } +}); +var move_exports = {}; +__export2(move_exports, { + moveTask: () => moveTask +}); +function moveTask(from, to) { + return { + commands: ["mv", "-v", ...asArray(from), to], + format: "utf-8", + parser: parseMoveResult + }; +} +var init_move = __esm({ + "src/lib/tasks/move.ts"() { + init_parse_move(); + init_utils(); + } +}); +var pull_exports = {}; +__export2(pull_exports, { + pullTask: () => pullTask +}); +function pullTask(remote, branch, customArgs) { + const commands = ["pull", ...customArgs]; + if (remote && branch) { + commands.splice(1, 0, remote, branch); + } + return { + commands, + format: "utf-8", + parser(stdOut, stdErr) { + return parsePullResult(stdOut, stdErr); + }, + onError(result, _error, _done, fail) { + const pullError = parsePullErrorResult(bufferToString(result.stdOut), bufferToString(result.stdErr)); + if (pullError) { + return fail(new GitResponseError(pullError)); + } + fail(_error); + } + }; +} +var init_pull = __esm({ + "src/lib/tasks/pull.ts"() { + init_git_response_error(); + init_parse_pull(); + init_utils(); + } +}); +function parseGetRemotes(text) { + const remotes = {}; + forEach(text, ([name]) => remotes[name] = { name }); + return Object.values(remotes); +} +function parseGetRemotesVerbose(text) { + const remotes = {}; + forEach(text, ([name, url, purpose]) => { + if (!remotes.hasOwnProperty(name)) { + remotes[name] = { + name, + refs: { fetch: "", push: "" } + }; + } + if (purpose && url) { + remotes[name].refs[purpose.replace(/[^a-z]/g, "")] = url; + } + }); + return Object.values(remotes); +} +function forEach(text, handler) { + forEachLineWithContent(text, (line) => handler(line.split(/\s+/))); +} +var init_GetRemoteSummary = __esm({ + "src/lib/responses/GetRemoteSummary.ts"() { + init_utils(); + } +}); +var remote_exports = {}; +__export2(remote_exports, { + addRemoteTask: () => addRemoteTask, + getRemotesTask: () => getRemotesTask, + listRemotesTask: () => listRemotesTask, + remoteTask: () => remoteTask, + removeRemoteTask: () => removeRemoteTask +}); +function addRemoteTask(remoteName, remoteRepo, customArgs = []) { + return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]); +} +function getRemotesTask(verbose) { + const commands = ["remote"]; + if (verbose) { + commands.push("-v"); + } + return { + commands, + format: "utf-8", + parser: verbose ? parseGetRemotesVerbose : parseGetRemotes + }; +} +function listRemotesTask(customArgs = []) { + const commands = [...customArgs]; + if (commands[0] !== "ls-remote") { + commands.unshift("ls-remote"); + } + return straightThroughStringTask(commands); +} +function remoteTask(customArgs = []) { + const commands = [...customArgs]; + if (commands[0] !== "remote") { + commands.unshift("remote"); + } + return straightThroughStringTask(commands); +} +function removeRemoteTask(remoteName) { + return straightThroughStringTask(["remote", "remove", remoteName]); +} +var init_remote = __esm({ + "src/lib/tasks/remote.ts"() { + init_GetRemoteSummary(); + init_task(); + } +}); +var stash_list_exports = {}; +__export2(stash_list_exports, { + stashListTask: () => stashListTask +}); +function stashListTask(opt = {}, customArgs) { + const options = parseLogOptions(opt); + const commands = ["stash", "list", ...options.commands, ...customArgs]; + const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands)); + return validateLogFormatConfig(commands) || { + commands, + format: "utf-8", + parser: parser3 + }; +} +var init_stash_list = __esm({ + "src/lib/tasks/stash-list.ts"() { + init_log_format(); + init_parse_list_log_summary(); + init_diff(); + init_log(); + } +}); +var sub_module_exports = {}; +__export2(sub_module_exports, { + addSubModuleTask: () => addSubModuleTask, + initSubModuleTask: () => initSubModuleTask, + subModuleTask: () => subModuleTask, + updateSubModuleTask: () => updateSubModuleTask +}); +function addSubModuleTask(repo, path) { + return subModuleTask(["add", repo, path]); +} +function initSubModuleTask(customArgs) { + return subModuleTask(["init", ...customArgs]); +} +function subModuleTask(customArgs) { + const commands = [...customArgs]; + if (commands[0] !== "submodule") { + commands.unshift("submodule"); + } + return straightThroughStringTask(commands); +} +function updateSubModuleTask(customArgs) { + return subModuleTask(["update", ...customArgs]); +} +var init_sub_module = __esm({ + "src/lib/tasks/sub-module.ts"() { + init_task(); + } +}); +function singleSorted(a, b) { + const aIsNum = isNaN(a); + const bIsNum = isNaN(b); + if (aIsNum !== bIsNum) { + return aIsNum ? 1 : -1; + } + return aIsNum ? sorted(a, b) : 0; +} +function sorted(a, b) { + return a === b ? 0 : a > b ? 1 : -1; +} +function trimmed(input) { + return input.trim(); +} +function toNumber(input) { + if (typeof input === "string") { + return parseInt(input.replace(/^\D+/g, ""), 10) || 0; + } + return 0; +} +var TagList; +var parseTagList; +var init_TagList = __esm({ + "src/lib/responses/TagList.ts"() { + TagList = class { + constructor(all, latest) { + this.all = all; + this.latest = latest; + } + }; + parseTagList = function(data, customSort = false) { + const tags = data.split("\n").map(trimmed).filter(Boolean); + if (!customSort) { + tags.sort(function(tagA, tagB) { + const partsA = tagA.split("."); + const partsB = tagB.split("."); + if (partsA.length === 1 || partsB.length === 1) { + return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); + } + for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { + const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i])); + if (diff) { + return diff; + } + } + return 0; + }); + } + const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(".") >= 0); + return new TagList(tags, latest); + }; + } +}); +var tag_exports = {}; +__export2(tag_exports, { + addAnnotatedTagTask: () => addAnnotatedTagTask, + addTagTask: () => addTagTask, + tagListTask: () => tagListTask +}); +function tagListTask(customArgs = []) { + const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option)); + return { + format: "utf-8", + commands: ["tag", "-l", ...customArgs], + parser(text) { + return parseTagList(text, hasCustomSort); + } + }; +} +function addTagTask(name) { + return { + format: "utf-8", + commands: ["tag", name], + parser() { + return { name }; + } + }; +} +function addAnnotatedTagTask(name, tagMessage) { + return { + format: "utf-8", + commands: ["tag", "-a", "-m", tagMessage, name], + parser() { + return { name }; + } + }; +} +var init_tag = __esm({ + "src/lib/tasks/tag.ts"() { + init_TagList(); + } +}); +var require_git = __commonJS2({ + "src/git.js"(exports, module2) { + var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS2(git_executor_exports)); + var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS2(simple_git_api_exports)); + var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS2(scheduler_exports)); + var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS2(task_exports)); + var { + asArray: asArray2, + filterArray: filterArray2, + filterPrimitives: filterPrimitives2, + filterString: filterString2, + filterStringOrStringArray: filterStringOrStringArray2, + filterType: filterType2, + getTrailingOptions: getTrailingOptions2, + trailingFunctionArgument: trailingFunctionArgument2, + trailingOptionsArgument: trailingOptionsArgument2 + } = (init_utils(), __toCommonJS2(utils_exports)); + var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS2(apply_patch_exports)); + var { + branchTask: branchTask2, + branchLocalTask: branchLocalTask2, + deleteBranchesTask: deleteBranchesTask2, + deleteBranchTask: deleteBranchTask2 + } = (init_branch(), __toCommonJS2(branch_exports)); + var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS2(check_ignore_exports)); + var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS2(check_is_repo_exports)); + var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS2(clone_exports)); + var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS2(clean_exports)); + var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS2(diff_exports)); + var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS2(fetch_exports)); + var { moveTask: moveTask2 } = (init_move(), __toCommonJS2(move_exports)); + var { pullTask: pullTask2 } = (init_pull(), __toCommonJS2(pull_exports)); + var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS2(push_exports)); + var { + addRemoteTask: addRemoteTask2, + getRemotesTask: getRemotesTask2, + listRemotesTask: listRemotesTask2, + remoteTask: remoteTask2, + removeRemoteTask: removeRemoteTask2 + } = (init_remote(), __toCommonJS2(remote_exports)); + var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS2(reset_exports)); + var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS2(stash_list_exports)); + var { + addSubModuleTask: addSubModuleTask2, + initSubModuleTask: initSubModuleTask2, + subModuleTask: subModuleTask2, + updateSubModuleTask: updateSubModuleTask2 + } = (init_sub_module(), __toCommonJS2(sub_module_exports)); + var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS2(tag_exports)); + var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS2(task_exports)); + function Git2(options, plugins) { + this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins); + this._trimmed = options.trimmed; + } + (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2; + Git2.prototype.customBinary = function(command) { + this._executor.binary = command; + return this; + }; + Git2.prototype.env = function(name, value) { + if (arguments.length === 1 && typeof name === "object") { + this._executor.env = name; + } else { + (this._executor.env = this._executor.env || {})[name] = value; + } + return this; + }; + Git2.prototype.stashList = function(options) { + return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments)); + }; + function createCloneTask(api, task, repoPath, localPath) { + if (typeof repoPath !== "string") { + return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`); + } + return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments)); + } + Git2.prototype.clone = function() { + return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.mirror = function() { + return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.mv = function(from, to) { + return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.checkoutLatestTag = function(then) { + var git2 = this; + return this.pull(function() { + git2.tags(function(err, tags) { + git2.checkout(tags.latest, then); + }); + }); + }; + Git2.prototype.pull = function(remote, branch, options, then) { + return this._runTask(pullTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.fetch = function(remote, branch) { + return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.silent = function(silence) { + console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3"); + return this; + }; + Git2.prototype.tags = function(options, then) { + return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.rebase = function() { + return this._runTask(straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.reset = function(mode) { + return this._runTask(resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.revert = function(commit) { + const next = trailingFunctionArgument2(arguments); + if (typeof commit !== "string") { + return this._runTask(configurationErrorTask2("Commit must be a string"), next); + } + return this._runTask(straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit]), next); + }; + Git2.prototype.addTag = function(name) { + const task = typeof name === "string" ? addTagTask2(name) : configurationErrorTask2("Git.addTag requires a tag name"); + return this._runTask(task, trailingFunctionArgument2(arguments)); + }; + Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) { + return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) { + return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) { + return this._runTask(deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.branch = function(options, then) { + return this._runTask(branchTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.branchLocal = function(then) { + return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.raw = function(commands) { + const createRestCommands = !Array.isArray(commands); + const command = [].slice.call(createRestCommands ? arguments : commands, 0); + for (let i = 0; i < command.length && createRestCommands; i++) { + if (!filterPrimitives2(command[i])) { + command.splice(i, command.length - i); + break; + } + } + command.push(...getTrailingOptions2(arguments, 0, true)); + var next = trailingFunctionArgument2(arguments); + if (!command.length) { + return this._runTask(configurationErrorTask2("Raw: must supply one or more command to execute"), next); + } + return this._runTask(straightThroughStringTask2(command, this._trimmed), next); + }; + Git2.prototype.submoduleAdd = function(repo, path, then) { + return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.submoduleUpdate = function(args, then) { + return this._runTask(updateSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.submoduleInit = function(args, then) { + return this._runTask(initSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.subModule = function(options, then) { + return this._runTask(subModuleTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.listRemote = function() { + return this._runTask(listRemotesTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.addRemote = function(remoteName, remoteRepo, then) { + return this._runTask(addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.removeRemote = function(remoteName, then) { + return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.getRemotes = function(verbose, then) { + return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.remote = function(options, then) { + return this._runTask(remoteTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.tag = function(options, then) { + const command = getTrailingOptions2(arguments); + if (command[0] !== "tag") { + command.unshift("tag"); + } + return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.updateServerInfo = function(then) { + return this._runTask(straightThroughStringTask2(["update-server-info"]), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.pushTags = function(remote, then) { + const task = pushTagsTask2({ remote: filterType2(remote, filterString2) }, getTrailingOptions2(arguments)); + return this._runTask(task, trailingFunctionArgument2(arguments)); + }; + Git2.prototype.rm = function(files) { + return this._runTask(straightThroughStringTask2(["rm", "-f", ...asArray2(files)]), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.rmKeepLocal = function(files) { + return this._runTask(straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.catFile = function(options, then) { + return this._catFile("utf-8", arguments); + }; + Git2.prototype.binaryCatFile = function() { + return this._catFile("buffer", arguments); + }; + Git2.prototype._catFile = function(format, args) { + var handler = trailingFunctionArgument2(args); + var command = ["cat-file"]; + var options = args[0]; + if (typeof options === "string") { + return this._runTask(configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"), handler); + } + if (Array.isArray(options)) { + command.push.apply(command, options); + } + const task = format === "buffer" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command); + return this._runTask(task, handler); + }; + Git2.prototype.diff = function(options, then) { + const task = filterString2(options) ? configurationErrorTask2("git.diff: supplying options as a single string is no longer supported, switch to an array of strings") : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]); + return this._runTask(task, trailingFunctionArgument2(arguments)); + }; + Git2.prototype.diffSummary = function() { + return this._runTask(diffSummaryTask2(getTrailingOptions2(arguments, 1)), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.applyPatch = function(patches) { + const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(`git.applyPatch requires one or more string patches as the first argument`) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1))); + return this._runTask(task, trailingFunctionArgument2(arguments)); + }; + Git2.prototype.revparse = function() { + const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)]; + return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.clean = function(mode, options, then) { + const usingCleanOptionsArray = isCleanOptionsArray2(mode); + const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || ""; + const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0)); + return this._runTask(cleanWithOptionsTask2(cleanMode, customArgs), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.exec = function(then) { + const task = { + commands: [], + format: "utf-8", + parser() { + if (typeof then === "function") { + then(); + } + } + }; + return this._runTask(task); + }; + Git2.prototype.clearQueue = function() { + return this; + }; + Git2.prototype.checkIgnore = function(pathnames, then) { + return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments)); + }; + Git2.prototype.checkIsRepo = function(checkType, then) { + return this._runTask(checkIsRepoTask2(filterType2(checkType, filterString2)), trailingFunctionArgument2(arguments)); + }; + module2.exports = Git2; + } +}); +init_pathspec(); +init_git_error(); +var GitConstructError = class extends GitError { + constructor(config, message) { + super(void 0, message); + this.config = config; + } +}; +init_git_error(); +init_git_error(); +var GitPluginError = class extends GitError { + constructor(task, plugin, message) { + super(task, message); + this.task = task; + this.plugin = plugin; + Object.setPrototypeOf(this, new.target.prototype); + } +}; +init_git_response_error(); +init_task_configuration_error(); +init_check_is_repo(); +init_clean(); +init_config(); +init_diff_name_status(); +init_grep(); +init_reset(); +function abortPlugin(signal) { + if (!signal) { + return; + } + const onSpawnAfter = { + type: "spawn.after", + action(_data, context) { + function kill() { + context.kill(new GitPluginError(void 0, "abort", "Abort signal received")); + } + signal.addEventListener("abort", kill); + context.spawned.on("close", () => signal.removeEventListener("abort", kill)); + } + }; + const onSpawnBefore = { + type: "spawn.before", + action(_data, context) { + if (signal.aborted) { + context.kill(new GitPluginError(void 0, "abort", "Abort already signaled")); + } + } + }; + return [onSpawnBefore, onSpawnAfter]; +} +function isConfigSwitch(arg) { + return typeof arg === "string" && arg.trim().toLowerCase() === "-c"; +} +function preventProtocolOverride(arg, next) { + if (!isConfigSwitch(arg)) { + return; + } + if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) { + return; + } + throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol"); +} +function preventUploadPack(arg, method) { + if (/^\s*--(upload|receive)-pack/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`); + } + if (method === "clone" && /^\s*-u\b/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`); + } + if (method === "push" && /^\s*--exec\b/.test(arg)) { + throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`); + } +} +function blockUnsafeOperationsPlugin({ + allowUnsafeProtocolOverride = false, + allowUnsafePack = false +} = {}) { + return { + type: "spawn.args", + action(args, context) { + args.forEach((current, index) => { + const next = index < args.length ? args[index + 1] : ""; + allowUnsafeProtocolOverride || preventProtocolOverride(current, next); + allowUnsafePack || preventUploadPack(current, context.method); + }); + return args; + } + }; +} +init_utils(); +function commandConfigPrefixingPlugin(configuration) { + const prefix = prefixedArray(configuration, "-c"); + return { + type: "spawn.args", + action(data) { + return [...prefix, ...data]; + } + }; +} +init_utils(); +var never = (0, import_promise_deferred2.deferred)().promise; +function completionDetectionPlugin({ + onClose = true, + onExit = 50 +} = {}) { + function createEvents() { + let exitCode = -1; + const events = { + close: (0, import_promise_deferred2.deferred)(), + closeTimeout: (0, import_promise_deferred2.deferred)(), + exit: (0, import_promise_deferred2.deferred)(), + exitTimeout: (0, import_promise_deferred2.deferred)() + }; + const result = Promise.race([ + onClose === false ? never : events.closeTimeout.promise, + onExit === false ? never : events.exitTimeout.promise + ]); + configureTimeout(onClose, events.close, events.closeTimeout); + configureTimeout(onExit, events.exit, events.exitTimeout); + return { + close(code) { + exitCode = code; + events.close.done(); + }, + exit(code) { + exitCode = code; + events.exit.done(); + }, + get exitCode() { + return exitCode; + }, + result + }; + } + function configureTimeout(flag, event, timeout) { + if (flag === false) { + return; + } + (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done); + } + return { + type: "spawn.after", + action(_0, _1) { + return __async(this, arguments, function* (_data, { spawned, close }) { + var _a2, _b; + const events = createEvents(); + let deferClose = true; + let quickClose = () => void (deferClose = false); + (_a2 = spawned.stdout) == null ? void 0 : _a2.on("data", quickClose); + (_b = spawned.stderr) == null ? void 0 : _b.on("data", quickClose); + spawned.on("error", quickClose); + spawned.on("close", (code) => events.close(code)); + spawned.on("exit", (code) => events.exit(code)); + try { + yield events.result; + if (deferClose) { + yield delay(50); + } + close(events.exitCode); + } catch (err) { + close(events.exitCode, err); + } + }); + } + }; +} +init_git_error(); +function isTaskError(result) { + return !!(result.exitCode && result.stdErr.length); +} +function getErrorMessage(result) { + return Buffer.concat([...result.stdOut, ...result.stdErr]); +} +function errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) { + return (error, result) => { + if (!overwrite && error || !isError(result)) { + return error; + } + return errorMessage(result); + }; +} +function errorDetectionPlugin(config) { + return { + type: "task.error", + action(data, context) { + const error = config(data.error, { + stdErr: context.stdErr, + stdOut: context.stdOut, + exitCode: context.exitCode + }); + if (Buffer.isBuffer(error)) { + return { error: new GitError(void 0, error.toString("utf-8")) }; + } + return { + error + }; + } + }; +} +init_utils(); +var PluginStore = class { + constructor() { + this.plugins = /* @__PURE__ */ new Set(); + } + add(plugin) { + const plugins = []; + asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2))); + return () => { + plugins.forEach((plugin2) => this.plugins.delete(plugin2)); + }; + } + exec(type, data, context) { + let output = data; + const contextual = Object.freeze(Object.create(context)); + for (const plugin of this.plugins) { + if (plugin.type === type) { + output = plugin.action(output, contextual); + } + } + return output; + } +}; +init_utils(); +function progressMonitorPlugin(progress) { + const progressCommand = "--progress"; + const progressMethods = ["checkout", "clone", "fetch", "pull", "push"]; + const onProgress = { + type: "spawn.after", + action(_data, context) { + var _a2; + if (!context.commands.includes(progressCommand)) { + return; + } + (_a2 = context.spawned.stderr) == null ? void 0 : _a2.on("data", (chunk) => { + const message = /^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(chunk.toString("utf8")); + if (!message) { + return; + } + progress({ + method: context.method, + stage: progressEventStage(message[1]), + progress: asNumber(message[2]), + processed: asNumber(message[3]), + total: asNumber(message[4]) + }); + }); + } + }; + const onArgs = { + type: "spawn.args", + action(args, context) { + if (!progressMethods.includes(context.method)) { + return args; + } + return including(args, progressCommand); + } + }; + return [onArgs, onProgress]; +} +function progressEventStage(input) { + return String(input.toLowerCase().split(" ", 1)) || "unknown"; +} +init_utils(); +function spawnOptionsPlugin(spawnOptions) { + const options = pick(spawnOptions, ["uid", "gid"]); + return { + type: "spawn.options", + action(data) { + return __spreadValues(__spreadValues({}, options), data); + } + }; +} +function timeoutPlugin({ + block, + stdErr = true, + stdOut = true +}) { + if (block > 0) { + return { + type: "spawn.after", + action(_data, context) { + var _a2, _b; + let timeout; + function wait() { + timeout && clearTimeout(timeout); + timeout = setTimeout(kill, block); + } + function stop() { + var _a3, _b2; + (_a3 = context.spawned.stdout) == null ? void 0 : _a3.off("data", wait); + (_b2 = context.spawned.stderr) == null ? void 0 : _b2.off("data", wait); + context.spawned.off("exit", stop); + context.spawned.off("close", stop); + timeout && clearTimeout(timeout); + } + function kill() { + stop(); + context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`)); + } + stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait)); + stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait)); + context.spawned.on("exit", stop); + context.spawned.on("close", stop); + wait(); + } + }; + } +} +init_pathspec(); +function suffixPathsPlugin() { + return { + type: "spawn.args", + action(data) { + const prefix = []; + let suffix; + function append2(args) { + (suffix = suffix || []).push(...args); + } + for (let i = 0; i < data.length; i++) { + const param = data[i]; + if (isPathSpec(param)) { + append2(toPaths(param)); + continue; + } + if (param === "--") { + append2(data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)); + break; + } + prefix.push(param); + } + return !suffix ? prefix : [...prefix, "--", ...suffix.map(String)]; + } + }; +} +init_utils(); +var Git = require_git(); +function gitInstanceFactory(baseDir, options) { + const plugins = new PluginStore(); + const config = createInstanceConfig(baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {}, options); + if (!folderExists(config.baseDir)) { + throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`); + } + if (Array.isArray(config.config)) { + plugins.add(commandConfigPrefixingPlugin(config.config)); + } + plugins.add(blockUnsafeOperationsPlugin(config.unsafe)); + plugins.add(suffixPathsPlugin()); + plugins.add(completionDetectionPlugin(config.completion)); + config.abort && plugins.add(abortPlugin(config.abort)); + config.progress && plugins.add(progressMonitorPlugin(config.progress)); + config.timeout && plugins.add(timeoutPlugin(config.timeout)); + config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions)); + plugins.add(errorDetectionPlugin(errorDetectionHandler(true))); + config.errors && plugins.add(errorDetectionPlugin(config.errors)); + return new Git(config, plugins); +} +init_git_response_error(); +var simpleGit = gitInstanceFactory; + +// node_modules/set-interval-async/dist/dynamic/set-interval-async.mjs +var import_clear_interval_async = __toESM(require_clear_interval_async(), 1); +var import_set_interval_async = __toESM(require_set_interval_async(), 1); + +// main.ts +var simpleGitOptions; +var git; +var DEFAULT_SETTINGS = { + remoteURL: "", + gitLocation: "", + syncinterval: 0, + isSyncOnLoad: false, + checkStatusOnLoad: true, + noticeLevel: "ALL", + showSyncSuccessNotice: true +}; +var GHSyncPlugin = class extends import_obsidian.Plugin { + shouldShowNotice(severity) { + switch (this.settings.noticeLevel) { + case "ERROR": + return severity === "ERROR"; + case "WARNING": + return severity === "WARNING" || severity === "ERROR"; + case "ALL": + default: + return true; + } + } + showNotice(message, severity, timeout) { + if (!this.shouldShowNotice(severity)) { + return; + } + const text = message instanceof Error ? message.message : String(message); + new import_obsidian.Notice(text, timeout); + } + showSyncSuccessNotice() { + if (!this.settings.showSyncSuccessNotice) { + return; + } + this.showNotice("github sync successful", "INFO"); + } + async SyncNotes() { + const remote = this.settings.remoteURL.trim(); + simpleGitOptions = { + //@ts-ignore + baseDir: this.app.vault.adapter.getBasePath(), + binary: this.settings.gitLocation + "git", + maxConcurrentProcesses: 6, + trimmed: false + }; + git = simpleGit(simpleGitOptions); + let os = require("os"); + let hostname = os.hostname(); + let statusResult = await git.status().catch((e) => { + this.showNotice("Vault is not a Git repo or git binary cannot be found.", "ERROR", 1e4); + return; + }); + if (!statusResult) { + return; + } + let clean = statusResult.isClean(); + let date = new Date(); + let msg = hostname + " " + date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + ":" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + if (!clean) { + try { + await git.add("./*").commit(msg); + } catch (e) { + this.showNotice(e, "ERROR", 1e4); + return; + } + } + try { + await git.removeRemote("origin").catch((e) => { + this.showNotice(e, "ERROR", 1e4); + }); + await git.addRemote("origin", remote).catch((e) => { + this.showNotice(e, "ERROR", 1e4); + }); + } catch (e) { + this.showNotice(e, "ERROR", 1e4); + return; + } + try { + await git.fetch(); + } catch (e) { + this.showNotice(String(e) + "\nGitHub Sync: Invalid remote URL.", "ERROR", 1e4); + return; + } + try { + await git.pull("origin", "main", { "--no-rebase": null }, (err, update) => { + }); + } catch (e) { + let conflictStatus = await git.status().catch((error) => { + this.showNotice(error, "ERROR", 1e4); + return; + }); + if (!conflictStatus) { + return; + } + let conflictMsg = "Merge conflicts in:"; + for (let c of conflictStatus.conflicted) { + conflictMsg += "\n " + c; + } + conflictMsg += "\nResolve them or click sync button again to push with unresolved conflicts."; + this.showNotice(conflictMsg, "WARNING"); + for (let c of conflictStatus.conflicted) { + this.app.workspace.openLinkText("", c, true); + } + return; + } + if (!clean) { + try { + await git.push("origin", "main", ["-u"]); + } catch (e) { + this.showNotice(e, "ERROR", 1e4); + return; + } + } + this.showSyncSuccessNotice(); + } + async CheckStatusOnStart() { + try { + simpleGitOptions = { + //@ts-ignore + baseDir: this.app.vault.adapter.getBasePath(), + binary: this.settings.gitLocation + "git", + maxConcurrentProcesses: 6, + trimmed: false + }; + git = simpleGit(simpleGitOptions); + await git.branch({ "--set-upstream-to": "origin/main" }); + let statusUponOpening = await git.fetch().status(); + if (statusUponOpening.behind > 0) { + if (this.settings.isSyncOnLoad == true) { + this.SyncNotes(); + } else { + this.showNotice("GitHub Sync: " + statusUponOpening.behind + " commits behind remote.\nClick the GitHub ribbon icon to sync.", "WARNING"); + } + } else { + this.showNotice("GitHub Sync: up to date with remote.", "INFO"); + } + } catch (e) { + } + } + async onload() { + await this.loadSettings(); + const ribbonIconEl = this.addRibbonIcon("github", "Sync with Remote", (evt) => { + this.SyncNotes(); + }); + ribbonIconEl.addClass("gh-sync-ribbon"); + this.addCommand({ + id: "github-sync-command", + name: "Sync with Remote", + callback: () => { + this.SyncNotes(); + } + }); + this.addSettingTab(new GHSyncSettingTab(this.app, this)); + if (!isNaN(this.settings.syncinterval)) { + let interval = this.settings.syncinterval; + if (interval >= 1) { + try { + (0, import_set_interval_async.setIntervalAsync)(async () => { + await this.SyncNotes(); + }, interval * 60 * 1e3); + this.showNotice("Auto sync enabled", "INFO"); + } catch (e) { + } + } + } + if (this.settings.checkStatusOnLoad) { + this.CheckStatusOnStart(); + } + } + onunload() { + } + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + if (this.settings.noticeLevel === "WARNINGS") { + this.settings.noticeLevel = "WARNING"; + } + } + async saveSettings() { + await this.saveData(this.settings); + } +}; +var GHSyncSettingTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + const howto = containerEl.createEl("div", { cls: "howto" }); + howto.createEl("div", { text: "How to use this plugin", cls: "howto_title" }); + howto.createEl("small", { text: "Grab your GitHub repository's HTTPS or SSH url and paste it into the settings here. If you're not authenticated, the first sync with this plugin should prompt you to authenticate. If you've already setup SSH on your device with GitHub, you won't need to authenticate - just paste your repo's SSH url into the settings here.", cls: "howto_text" }); + howto.createEl("br"); + const linkEl = howto.createEl("p"); + linkEl.createEl("span", { text: "See the " }); + linkEl.createEl("a", { href: "https://github.com/kevinmkchin/Obsidian-GitHub-Sync/blob/main/README.md", text: "README" }); + linkEl.createEl("span", { text: " for more information and troubleshooting." }); + new import_obsidian.Setting(containerEl).setName("Remote URL").setDesc("").addText((text) => text.setPlaceholder("").setValue(this.plugin.settings.remoteURL).onChange(async (value) => { + this.plugin.settings.remoteURL = value; + await this.plugin.saveSettings(); + }).inputEl.addClass("my-plugin-setting-text")); + new import_obsidian.Setting(containerEl).setName("git binary location").setDesc("This is optional! Set this only if git is not findable via your system PATH, then provide its location here. See README for more info.").addText((text) => text.setPlaceholder("").setValue(this.plugin.settings.gitLocation).onChange(async (value) => { + this.plugin.settings.gitLocation = value; + await this.plugin.saveSettings(); + }).inputEl.addClass("my-plugin-setting-text2")); + new import_obsidian.Setting(containerEl).setName("Notice level").setDesc("Choose which GitHub Sync notices are shown in the Obsidian UI.").addDropdown((dropdown) => dropdown.addOption("ALL", "ALL").addOption("WARNING", "WARNING").addOption("ERROR", "ERROR").setValue(this.plugin.settings.noticeLevel).onChange(async (value) => { + this.plugin.settings.noticeLevel = value; + await this.plugin.saveSettings(); + })); + new import_obsidian.Setting(containerEl).setName("Hide Success Message").setDesc("Hide the single success notice shown when a sync finishes successfully.").addToggle((toggle) => toggle.setValue(!this.plugin.settings.showSyncSuccessNotice).onChange(async (value) => { + this.plugin.settings.showSyncSuccessNotice = !value; + await this.plugin.saveSettings(); + })); + new import_obsidian.Setting(containerEl).setName("Check status on startup").setDesc("Check to see if you are behind remote when you start Obsidian.").addToggle((toggle) => toggle.setValue(this.plugin.settings.checkStatusOnLoad).onChange(async (value) => { + this.plugin.settings.checkStatusOnLoad = value; + await this.plugin.saveSettings(); + })); + new import_obsidian.Setting(containerEl).setName("Auto sync on startup").setDesc("Automatically sync with remote when you start Obsidian if there are unsynced changes.").addToggle((toggle) => toggle.setValue(this.plugin.settings.isSyncOnLoad).onChange(async (value) => { + this.plugin.settings.isSyncOnLoad = value; + await this.plugin.saveSettings(); + })); + new import_obsidian.Setting(containerEl).setName("Auto sync at interval").setDesc("Set minute interval after which your vault is synced automatically. Auto sync is disabled if this field is left empty or not a positive integer. Restart Obsidan to take effect.").addText((text) => text.setValue(String(this.plugin.settings.syncinterval)).onChange(async (value) => { + this.plugin.settings.syncinterval = Number(value); + await this.plugin.saveSettings(); + })); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/github-sync/manifest.json b/.obsidian/plugins/github-sync/manifest.json new file mode 100644 index 0000000..6dbfcff --- /dev/null +++ b/.obsidian/plugins/github-sync/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "github-sync", + "name": "GitHub Sync", + "version": "1.0.7", + "minAppVersion": "0.15.0", + "description": "Sync vault to personal GitHub.", + "author": "Kevin Chin", + "authorUrl": "https://kevin.gd/", + "isDesktopOnly": true +} \ No newline at end of file diff --git a/.obsidian/plugins/github-sync/styles.css b/.obsidian/plugins/github-sync/styles.css new file mode 100644 index 0000000..cdfa173 --- /dev/null +++ b/.obsidian/plugins/github-sync/styles.css @@ -0,0 +1,42 @@ +/* + +This CSS file will be included with your plugin, and +available in the app when your plugin is enabled. + +If your plugin does not need CSS, delete this file. + +*/ + + +.gh-sync-ribbon +{ + order: 100; +} + +.gh-sync-status +{ + order: -1; +} + +.howto { + border: 1px solid var(--background-modifier-border); + padding: 10px; +} + +.howto_title { + font-weight: 600; +} + +.howto_text { + color: var(--text-muted); + font-size: smaller; +} + +.my-plugin-setting-text { + width: 30em; +} + +.my-plugin-setting-text2 { + width: 30em; +} + diff --git a/.obsidian/plugins/obsidian-5e-statblocks/data.json b/.obsidian/plugins/obsidian-5e-statblocks/data.json new file mode 100644 index 0000000..2fe428b --- /dev/null +++ b/.obsidian/plugins/obsidian-5e-statblocks/data.json @@ -0,0 +1,27 @@ +{ + "monsters": [], + "defaultLayouts": {}, + "layouts": [], + "default": "basic-5e-layout", + "useDice": true, + "renderDice": false, + "export": true, + "showAdvanced": false, + "version": { + "major": 4, + "minor": 10, + "patch": 3 + }, + "paths": [ + "/" + ], + "autoParse": false, + "disableSRD": false, + "tryToRenderLinks": true, + "debug": false, + "notifiedOfFantasy": false, + "hideConditionHelp": false, + "alwaysImport": false, + "defaultLayoutsIntegrated": true, + "atomicWrite": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-5e-statblocks/main.js b/.obsidian/plugins/obsidian-5e-statblocks/main.js new file mode 100644 index 0000000..8756ee8 --- /dev/null +++ b/.obsidian/plugins/obsidian-5e-statblocks/main.js @@ -0,0 +1,1107 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +"use strict";var vm=Object.create;var Gi=Object.defineProperty;var km=Object.getOwnPropertyDescriptor;var wm=Object.getOwnPropertyNames;var _m=Object.getPrototypeOf,Sm=Object.prototype.hasOwnProperty;var Jl=n=>{throw TypeError(n)};var Cm=(n,e,t)=>e in n?Gi(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Xl=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),xm=(n,e)=>{for(var t in e)Gi(n,t,{get:e[t],enumerable:!0})},Ql=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of wm(e))!Sm.call(n,a)&&a!==t&&Gi(n,a,{get:()=>e[a],enumerable:!(i=km(e,a))||i.enumerable});return n};var La=(n,e,t)=>(t=n!=null?vm(_m(n)):{},Ql(e||!n||!n.__esModule?Gi(t,"default",{value:n,enumerable:!0}):t,n)),Am=n=>Ql(Gi({},"__esModule",{value:!0}),n);var We=(n,e,t)=>Cm(n,typeof e!="symbol"?e+"":e,t),rr=(n,e,t)=>e.has(n)||Jl("Cannot "+t);var X=(n,e,t)=>(rr(n,e,"read from private field"),t?t.call(n):e.get(n)),Be=(n,e,t)=>e.has(n)?Jl("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),an=(n,e,t,i)=>(rr(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),Oe=(n,e,t)=>(rr(n,e,"access private method"),t);var ec=Xl((Zl,or)=>{(function(n){"use strict";var e=S(),t=C(),i=M(),a=w(),s={imagePlaceholder:void 0,cacheBust:!1},r={toSvg:o,toPng:c,toJpeg:d,toBlob:u,toPixelData:l,impl:{fontFaces:i,images:a,util:e,inliner:t,options:{}}};typeof or<"u"?or.exports=r:n.domtoimage=r;function o(k,A){return A=A||{},h(A),Promise.resolve(k).then(function(B){return m(B,A.filter,!0)}).then(p).then(b).then(P).then(function(B){return _(B,A.width||e.width(k),A.height||e.height(k))});function P(B){return A.bgcolor&&(B.style.backgroundColor=A.bgcolor),A.width&&(B.style.width=A.width+"px"),A.height&&(B.style.height=A.height+"px"),A.style&&Object.keys(A.style).forEach(function(L){B.style[L]=A.style[L]}),B}}function l(k,A){return f(k,A||{}).then(function(P){return P.getContext("2d").getImageData(0,0,e.width(k),e.height(k)).data})}function c(k,A){return f(k,A||{}).then(function(P){return P.toDataURL()})}function d(k,A){return A=A||{},f(k,A).then(function(P){return P.toDataURL("image/jpeg",A.quality||1)})}function u(k,A){return f(k,A||{}).then(e.canvasToBlob)}function h(k){typeof k.imagePlaceholder>"u"?r.impl.options.imagePlaceholder=s.imagePlaceholder:r.impl.options.imagePlaceholder=k.imagePlaceholder,typeof k.cacheBust>"u"?r.impl.options.cacheBust=s.cacheBust:r.impl.options.cacheBust=k.cacheBust}function f(k,A){return o(k,A).then(e.makeImage).then(e.delay(100)).then(function(B){var L=P(k);return L.getContext("2d").drawImage(B,0,0),L});function P(B){var L=document.createElement("canvas");if(L.width=A.width||e.width(B),L.height=A.height||e.height(B),A.bgcolor){var O=L.getContext("2d");O.fillStyle=A.bgcolor,O.fillRect(0,0,L.width,L.height)}return L}}function m(k,A,P){if(!P&&A&&!A(k))return Promise.resolve();return Promise.resolve(k).then(B).then(function(j){return L(k,j,A)}).then(function(j){return O(k,j)});function B(j){return j instanceof HTMLCanvasElement?e.makeImage(j.toDataURL()):j.cloneNode(!1)}function L(j,Z,ee){var ae=j.childNodes;if(ae.length===0)return Promise.resolve(Z);return $(Z,e.asArray(ae),ee).then(function(){return Z});function $(W,Y,F){var H=Promise.resolve();return Y.forEach(function(he){H=H.then(function(){return m(he,F)}).then(function(ue){ue&&W.appendChild(ue)})}),H}}function O(j,Z){if(!(Z instanceof Element))return Z;return Promise.resolve().then(ee).then(ae).then($).then(W).then(function(){return Z});function ee(){Y(window.getComputedStyle(j),Z.style);function Y(F,H){F.cssText?H.cssText=F.cssText:he(F,H);function he(ue,U){e.asArray(ue).forEach(function(z){U.setProperty(z,ue.getPropertyValue(z),ue.getPropertyPriority(z))})}}}function ae(){[":before",":after"].forEach(function(F){Y(F)});function Y(F){var H=window.getComputedStyle(j,F),he=H.getPropertyValue("content");if(he===""||he==="none")return;var ue=e.uid();Z.className=Z.className+" "+ue;var U=document.createElement("style");U.appendChild(z(ue,F,H)),Z.appendChild(U);function z(me,Ce,Ie){var et="."+me+":"+Ce,Tt=Ie.cssText?mi(Ie):gi(Ie);return document.createTextNode(et+"{"+Tt+"}");function mi(Rt){var Nt=Rt.getPropertyValue("content");return Rt.cssText+" content: "+Nt+";"}function gi(Rt){return e.asArray(Rt).map(Nt).join("; ")+";";function Nt(bt){return bt+": "+Rt.getPropertyValue(bt)+(Rt.getPropertyPriority(bt)?" !important":"")}}}}}function $(){j instanceof HTMLTextAreaElement&&(Z.innerHTML=j.value),j instanceof HTMLInputElement&&Z.setAttribute("value",j.value)}function W(){Z instanceof SVGElement&&(Z.setAttribute("xmlns","http://www.w3.org/2000/svg"),Z instanceof SVGRectElement&&["width","height"].forEach(function(Y){var F=Z.getAttribute(Y);F&&Z.style.setProperty(Y,F)}))}}}function p(k){return i.resolveAll().then(function(A){var P=document.createElement("style");return k.appendChild(P),P.appendChild(document.createTextNode(A)),k})}function b(k){return a.inlineAll(k).then(function(){return k})}function _(k,A,P){return Promise.resolve(k).then(function(B){return B.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),new XMLSerializer().serializeToString(B)}).then(e.escapeXhtml).then(function(B){return''+B+""}).then(function(B){return''+B+""}).then(function(B){return"data:image/svg+xml;charset=utf-8,"+B})}function S(){return{escape:W,parseExtension:A,mimeType:P,dataAsUrl:$,isDataUrl:B,canvasToBlob:O,resolveUrl:j,getAndEncode:ae,uid:Z(),delay:Y,asArray:F,escapeXhtml:H,makeImage:ee,width:he,height:ue};function k(){var z="application/font-woff",me="image/jpeg";return{woff:z,woff2:z,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:me,jpeg:me,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}function A(z){var me=/\.([^\.\/]*?)$/g.exec(z);return me?me[1]:""}function P(z){var me=A(z).toLowerCase();return k()[me]||""}function B(z){return z.search(/^(data:)/)!==-1}function L(z){return new Promise(function(me){for(var Ce=window.atob(z.toDataURL().split(",")[1]),Ie=Ce.length,et=new Uint8Array(Ie),Tt=0;Tt{"use strict";var Fo=Object.defineProperty,U1=Object.getOwnPropertyDescriptor,G1=Object.getOwnPropertyNames,K1=Object.prototype.hasOwnProperty,$1=(n,e)=>{for(var t in e)Fo(n,t,{get:e[t],enumerable:!0})},Y1=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of G1(e))!K1.call(n,a)&&a!==t&&Fo(n,a,{get:()=>e[a],enumerable:!(i=U1(e,a))||i.enumerable});return n},J1=n=>Y1(Fo({},"__esModule",{value:!0}),n),jd={};$1(jd,{FileInputSuggest:()=>Q1,FolderInputSuggest:()=>X1,FuzzyInputSuggest:()=>Wo,createCollapsibleSection:()=>t0,setNodeIcon:()=>e0});Vd.exports=J1(jd);var Lo=require("obsidian"),Wo=class extends Lo.AbstractInputSuggest{constructor(n,e,t){super(n,e.inputEl),this.items=t}getSuggestions(n){let e=(0,Lo.prepareSimpleSearch)(n),t=[];for(let i of this.items){let a=e(this.getItemText(i));a&&t.push({item:i,match:a})}return t}renderSuggestion(n,e){e.addClass("mod-complex");let t=e.createDiv({cls:"suggestion-content"});if(!n?.item){t.setText("No match found"),t.parentElement?.addClass("is-selected");return}this.renderTitle(t.createDiv("suggestion-title"),n),this.renderNote?.(t.createDiv("suggestion-note"),n),this.renderFlair?.(e.createDiv("suggestion-aux").createDiv("suggestion-flair"),n)}renderMatches(n,e,t,i){(0,Lo.renderMatches)(n,e,t,i)}},Hd=require("obsidian"),X1=class extends Wo{getItemText(n){return n.path}renderNote(n,e){let{item:t,match:i}=e;(0,Hd.renderMatches)(n,t.path,i.matches)}renderTitle(n,e){let{item:t,match:i}=e;(0,Hd.renderMatches)(n,t.name,i.matches,t.path.length-t.name.length)}},zd=require("obsidian"),Q1=class extends Wo{getItemText(n){return n.path}renderNote(n,e){let{item:t,match:i}=e;(0,zd.renderMatches)(n,t.path,i.matches)}renderTitle(n,e){let{item:t,match:i}=e;(0,zd.renderMatches)(n,t.name,i.matches,t.path.length-t.name.length)}},Z1=require("obsidian");function e0(n,e){n.addClass("has-node-icon"),(0,Z1.setIcon)(n,e)}var qd=require("obsidian");function t0(n,e,t,i){let a=n.createEl("details",{cls:"javalent-nested-settings",attr:{...t??!0?{open:"open"}:{}}});a.ontoggle=async()=>{i&&i(a.open)};let s=a.createEl("summary");return new qd.Setting(s).setHeading().setName(e),(0,qd.setIcon)(s.createDiv("handle"),"chevron-right"),a}});var yv={};xm(yv,{DICE_ROLLER_SOURCE:()=>hi,default:()=>Js});module.exports=Am(yv);var jn=require("obsidian"),Af=La(ec());var Ct=require("obsidian");var Cc=require("@codemirror/state"),xc=require("@codemirror/view");var Tm=Function.prototype.toString,lr=Object.create,Dm=Object.prototype.toString,Em=function(){function n(){this._keys=[],this._values=[]}return n.prototype.has=function(e){return!!~this._keys.indexOf(e)},n.prototype.get=function(e){return this._values[this._keys.indexOf(e)]},n.prototype.set=function(e,t){this._keys.push(e),this._values.push(t)},n}();function Mm(){return new Em}function Im(){return new WeakMap}var Om=typeof WeakMap<"u"?Im:Mm;function ur(n){if(!n)return lr(null);var e=n.constructor;if(e===Object)return n===Object.prototype?{}:lr(n);if(e&&~Tm.call(e).indexOf("[native code]"))try{return new e}catch{}return lr(n)}function Pm(n){var e="";return n.global&&(e+="g"),n.ignoreCase&&(e+="i"),n.multiline&&(e+="m"),n.unicode&&(e+="u"),n.sticky&&(e+="y"),e}function Rm(n){return n.flags}var Nm=/test/g.flags==="g"?Rm:Pm;function tc(n){var e=Dm.call(n);return e.substring(8,e.length-1)}function Bm(n){return n[Symbol.toStringTag]||tc(n)}var Lm=typeof Symbol<"u"?Bm:tc,Fm=Object.defineProperty,Wm=Object.getOwnPropertyDescriptor,nc=Object.getOwnPropertyNames,dr=Object.getOwnPropertySymbols,ic=Object.prototype,ac=ic.hasOwnProperty,Hm=ic.propertyIsEnumerable,sc=typeof dr=="function";function zm(n){return nc(n).concat(dr(n))}var qm=sc?zm:nc;function Wa(n,e,t){for(var i=qm(n),a=0,s=i.length,r=void 0,o=void 0;a[(0,Bt.foldGutter)(),(0,sn.drawSelection)(),(0,sn.dropCursor)(),(0,Bt.indentOnInput)(),(0,Bt.syntaxHighlighting)(Bt.defaultHighlightStyle,{fallback:!0}),sn.EditorView.lineWrapping,(0,Bt.bracketMatching)(),(0,Cn.closeBrackets)(),(0,Cn.autocompletion)(),(0,sn.rectangularSelection)(),(0,Ha.highlightSelectionMatches)(),sn.keymap.of([...Cn.closeBracketsKeymap,...yi.defaultKeymap,...Ha.searchKeymap,...yi.historyKeymap,yi.indentWithTab,...Bt.foldKeymap,...Cn.completionKeymap,...dc.lintKeymap])];var mc=require("@codemirror/view"),Cv=require("@codemirror/state"),za=require("@codemirror/language"),Ve=require("@lezer/highlight"),rg="#abb2bf",og="#7d8799",lg="#ffffff",cg="#21252b",fr="rgba(0, 0, 0, 0.5)",ug="#292d3e",mr="#353a42",dg="rgba(128, 203, 196, 0.2)",fc="#ffcc00",hg=mc.EditorView.theme({"&":{color:"#ffffff",backgroundColor:ug},".cm-content":{caretColor:fc},"&.cm-focused .cm-cursor":{borderLeftColor:fc},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:dg},".cm-panels":{backgroundColor:cg,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:fr},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"#292d3e",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:fr},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:mr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:mr,borderBottomColor:mr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:fr,color:rg}}},{dark:!0}),fg=za.HighlightStyle.define([{tag:Ve.tags.keyword,color:"#c792ea"},{tag:Ve.tags.operator,color:"#89ddff"},{tag:Ve.tags.special(Ve.tags.variableName),color:"#eeffff"},{tag:Ve.tags.typeName,color:"#f07178"},{tag:Ve.tags.atom,color:"#f78c6c"},{tag:Ve.tags.number,color:"#ff5370"},{tag:Ve.tags.definition(Ve.tags.variableName),color:"#82aaff"},{tag:Ve.tags.string,color:"#c3e88d"},{tag:Ve.tags.special(Ve.tags.string),color:"#f07178"},{tag:Ve.tags.comment,color:og},{tag:Ve.tags.variableName,color:"#f07178"},{tag:Ve.tags.tagName,color:"#ff5370"},{tag:Ve.tags.bracket,color:"#a2a1a4"},{tag:Ve.tags.meta,color:"#ffcb6b"},{tag:Ve.tags.attributeName,color:"#c792ea"},{tag:Ve.tags.propertyName,color:"#c792ea"},{tag:Ve.tags.className,color:"#decb6b"},{tag:Ve.tags.invalid,color:lg}]),gc=[hg,(0,za.syntaxHighlighting)(fg)];var Sc=require("@codemirror/view"),Tv=require("@codemirror/state"),ja=require("@codemirror/language"),de=require("@lezer/highlight"),pc="#2e3440",kr="#3b4252",bc="#434c5e",qa="#4c566a";var yc="#e5e9f0",vr="#eceff4",gr="#8fbcbb",vc="#88c0d0",mg="#81a1c1",Vt="#5e81ac",gg="#bf616a",vi="#d08770",pr="#ebcb8b",kc="#a3be8c",pg="#b48ead",wc="#d30102",wr=vr,br=wr,bg="#ffffff",yr=kr,yg=wr,_c=kr,_r=Sc.EditorView.theme({"&":{color:pc,backgroundColor:bg},".cm-content":{caretColor:_c},".cm-cursor, .cm-dropCursor":{borderLeftColor:_c},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:yg},".cm-panels":{backgroundColor:wr,color:qa},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:`1px solid ${qa}`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:yc},".cm-activeLine":{backgroundColor:br},".cm-selectionMatch":{backgroundColor:yc},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{outline:`1px solid ${qa}`},"&.cm-focused .cm-matchingBracket":{backgroundColor:vr},".cm-gutters":{backgroundColor:vr,color:pc,border:"none"},".cm-activeLineGutter":{backgroundColor:br},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:yr,borderBottomColor:yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:br,color:qa}}},{dark:!1}),vg=ja.HighlightStyle.define([{tag:de.tags.keyword,color:Vt},{tag:[de.tags.name,de.tags.deleted,de.tags.character,de.tags.propertyName,de.tags.macroName],color:vi},{tag:[de.tags.variableName],color:vi},{tag:[de.tags.function(de.tags.variableName)],color:Vt},{tag:[de.tags.labelName],color:mg},{tag:[de.tags.color,de.tags.constant(de.tags.name),de.tags.standard(de.tags.name)],color:Vt},{tag:[de.tags.definition(de.tags.name),de.tags.separator],color:kc},{tag:[de.tags.brace],color:gr},{tag:[de.tags.annotation],color:wc},{tag:[de.tags.number,de.tags.changed,de.tags.annotation,de.tags.modifier,de.tags.self,de.tags.namespace],color:vc},{tag:[de.tags.typeName,de.tags.className],color:pr},{tag:[de.tags.operator,de.tags.operatorKeyword],color:kc},{tag:[de.tags.tagName],color:pg},{tag:[de.tags.squareBracket],color:gg},{tag:[de.tags.angleBracket],color:vi},{tag:[de.tags.attributeName],color:pr},{tag:[de.tags.regexp],color:Vt},{tag:[de.tags.quote],color:kr},{tag:[de.tags.string],color:vi},{tag:de.tags.link,color:gr,textDecoration:"underline",textUnderlinePosition:"under"},{tag:[de.tags.url,de.tags.escape,de.tags.special(de.tags.string)],color:vi},{tag:[de.tags.meta],color:vc},{tag:[de.tags.comment],color:bc,fontStyle:"italic"},{tag:de.tags.strong,fontWeight:"bold",color:Vt},{tag:de.tags.emphasis,fontStyle:"italic",color:Vt},{tag:de.tags.strikethrough,textDecoration:"line-through"},{tag:de.tags.heading,fontWeight:"bold",color:Vt},{tag:de.tags.special(de.tags.heading1),fontWeight:"bold",color:Vt},{tag:de.tags.heading1,fontWeight:"bold",color:Vt},{tag:[de.tags.heading2,de.tags.heading3,de.tags.heading4],fontWeight:"bold",color:Vt},{tag:[de.tags.heading5,de.tags.heading6],color:Vt},{tag:[de.tags.atom,de.tags.bool,de.tags.special(de.tags.variableName)],color:vi},{tag:[de.tags.processingInstruction,de.tags.inserted],color:gr},{tag:[de.tags.contentSeparator],color:pr},{tag:de.tags.invalid,color:bc,borderBottom:`1px dotted ${wc}`}]),Ev=[_r,(0,ja.syntaxHighlighting)(vg)];function Lt(n,e,t="js"){let i=hc();document.body.hasClass("theme-dark")?i.push(gc):i.push(_r);let a=[...i];e&&a.push(e);let s=new xc.EditorView({state:Cc.EditorState.create({doc:n.value,extensions:a})});return n.parentNode.appendChild(s.dom),n.style.display="none",n.form&&n.form.addEventListener("submit",()=>{n.value=s.state.doc.toString()}),s}function mt(n){return n?n.toLowerCase().replace(/[^A-Za-z0-9\s_-]/g,"").replace(/\s+/g,"-"):""}var ki=(n,e)=>n?.toLowerCase().replace(/\s+/g,"-").replaceAll(".","-")??e;function Ki(n){return n[0].toUpperCase()+n.slice(1).toLowerCase()}function Q(){return"xyxyxyxyxyxy".replace(/[xy]/g,function(n){let e=Math.random()*16|0;return(n=="x"?e:e&3|8).toString(16)})}function ye(n,e=0,t=" ",i=!0){let a=[];if(e==5||n==null)return"";if(typeof n=="string")return n;if(typeof n=="number")return`${n}`;if(Array.isArray(n))a.push(`${i?"(":""}${n.map(s=>ye(s,e+1)).join(t)}${i?")":""}`);else if(typeof n=="object")for(let s of Object.values(n))a.push(ye(s,e+1));return a.join(" ")}function Sr(n,e){if(!Array.isArray(n)&&typeof n!="string"||!Array.isArray(e)&&typeof e!="string")return e;let t=Ze(n);if(Array.isArray(t)){if(Array.isArray(e))return[...t,...e];if(typeof e=="string")return t.push(e),t}else if(typeof t=="string")return`${t} ${ye(e)}`;return e}var kg=[{type:"inline",id:Q(),properties:[],hasRule:!0,nested:[{type:"group",id:Q(),properties:["name","size","type","subtype","alignment"],nested:[{type:"inline",id:Q(),properties:[],hasRule:!1,nested:[{type:"heading",id:Q(),properties:["name"],conditioned:!0,size:1},{type:"inline",id:Q(),properties:[],hasRule:!1,nested:[{type:"action",id:Q(),icon:"sword",callback:"try { InitiativeTracker.newEncounter({roll: true, creatures: [monster]}); } catch(e) {}"},{type:"action",id:Q(),icon:"plus-with-circle",callback:"try { InitiativeTracker.addCreatures([monster]); } catch(e) {}"}]}]},{type:"subheading",id:Q(),properties:["size","type","subtype","alignment"],conditioned:!0,separator:", "}],conditioned:!0},{type:"image",id:Q(),properties:["image"]}]},{type:"group",id:Q(),properties:["ac","hp","speed"],nested:[{type:"property",id:Q(),properties:["ac"],display:"Armor Class",conditioned:!0,callback:'const ac = [monster.ac];if ("ac_class" in monster) {ac.push(`(${monster.ac_class})`);}return ac.join(" ");'},{type:"property",id:Q(),properties:["hp"],display:"Hit Points",dice:!0,diceProperty:"hit_dice",diceCallback:`if ("hit_dice" in monster) { + return [{ text: monster["hit_dice"] }]; +} else { + return property; +}`,callback:`let str = [monster.hp]; +if (monster.hit_dice?.length) { + str.push(\`(\${monster.hit_dice})\`); +} +return str.join(" ");`,conditioned:!0},{type:"property",id:Q(),display:"Speed",properties:["speed"],conditioned:!0}],hasRule:!0,conditioned:!0},{type:"table",id:Q(),properties:["stats"],headers:["Str","Dex","Con","Int","Wis","Cha"],calculate:!0,hasRule:!0,conditioned:!0},{type:"table",id:Q(),properties:["fage_stats"],headers:["Accuracy","Communication","Constitution","Dexterity","Fighting","Intelligence","Perception","Strength","Willpower"],calculate:!1,hasRule:!0,conditioned:!0},{type:"group",id:Q(),properties:["saves","skillsaves","damage_immunities","damage_resistances","damage_vulnerabilities","condition_immunities","cr","languages","senses"],nested:[{type:"saves",id:Q(),display:"Saves",properties:["saves"],conditioned:!0},{type:"saves",id:Q(),display:"Skills",properties:["skillsaves"],conditioned:!0},{type:"property",id:Q(),display:"Damage Resistances",properties:["damage_resistances"],conditioned:!0},{type:"property",id:Q(),display:"Damage Immunities",properties:["damage_immunities"],conditioned:!0},{type:"property",id:Q(),display:"Condition Immunities",properties:["condition_immunities"],conditioned:!0},{type:"property",id:Q(),display:"Damage Vulnerabilities",properties:["damage_vulnerabilities"],conditioned:!0},{type:"property",id:Q(),display:"Senses",properties:["senses"],conditioned:!0},{type:"property",id:Q(),display:"Languages",properties:["languages"],fallback:"-"},{type:"inline",id:Q(),properties:[],conditioned:!0,nested:[{type:"property",id:Q(),display:"Challenge",properties:["cr"],callback:`const CR = { + "0": { + cr: "0", + value: 0, + xp: 10 + }, + "1/8": { + cr: "1/8", + value: 0.125, + xp: 25 + }, + "1/4": { + cr: "1/4", + + value: 0.25, + xp: 50 + }, + "1/2": { + cr: "1/2", + value: 0.5, + xp: 100 + }, + "0.125": { + cr: "1/8", + value: 0.125, + xp: 25 + }, + "0.25": { + cr: "1/4", + + value: 0.25, + xp: 50 + }, + "0.5": { + cr: "1/2", + value: 0.5, + xp: 100 + }, + "1": { + cr: "1", + value: 1, + xp: 200 + }, + "2": { + cr: "2", + value: 2, + xp: 450 + }, + "3": { + cr: "3", + value: 3, + xp: 700 + }, + "4": { + cr: "4", + value: 4, + xp: 1100 + }, + "5": { + cr: "5", + value: 5, + xp: 1800 + }, + "6": { + cr: "6", + value: 6, + xp: 2300 + }, + "7": { + cr: "7", + value: 7, + xp: 2900 + }, + "8": { + cr: "8", + value: 8, + xp: 3900 + }, + "9": { + cr: "9", + value: 9, + xp: 5000 + }, + "10": { + cr: "10", + value: 10, + xp: 5900 + }, + "11": { + cr: "11", + value: 11, + xp: 7200 + }, + "12": { + cr: "12", + value: 12, + xp: 8400 + }, + "13": { + cr: "13", + value: 13, + xp: 10000 + }, + "14": { + cr: "14", + value: 14, + xp: 11500 + }, + "15": { + cr: "15", + value: 15, + xp: 13000 + }, + "16": { + cr: "16", + value: 16, + xp: 15000 + }, + "17": { + cr: "17", + value: 17, + xp: 18000 + }, + "18": { + cr: "18", + value: 18, + xp: 20000 + }, + "19": { + cr: "19", + value: 19, + xp: 22000 + }, + "20": { + cr: "20", + value: 20, + xp: 25000 + }, + "21": { + cr: "21", + value: 21, + xp: 33000 + }, + "22": { + cr: "22", + value: 22, + xp: 41000 + }, + "23": { + cr: "23", + value: 23, + xp: 50000 + }, + "24": { + cr: "24", + value: 24, + xp: 62000 + }, + "25": { + cr: "25", + value: 25, + xp: 75000 + }, + "26": { + cr: "26", + value: 26, + xp: 90000 + }, + "27": { + cr: "27", + value: 27, + xp: 105000 + }, + "28": { + cr: "28", + value: 28, + xp: 120000 + }, + "29": { + cr: "29", + value: 29, + xp: 135000 + }, + "30": { + cr: "30", + value: 30, + xp: 155000 + } +}; +if ("cr" in monster && monster.cr in CR) { + return \`\${CR[ + monster.cr + ].cr} (\${CR[ + monster.cr + ].xp.toLocaleString()} XP)\`; +} +return "";`},{type:"property",id:Q(),display:"Proficiency Bonus",properties:["cr"],callback:`const CR = { + "0": { + cr: "0", + value: 0, + xp: 0 + }, + "1/8": { + cr: "1/8", + value: 0.125, + xp: 25 + }, + "1/4": { + cr: "1/4", + + value: 0.25, + xp: 50 + }, + "1/2": { + cr: "1/2", + value: 0.5, + xp: 100 + }, + "0.125": { + cr: "1/8", + value: 0.125, + xp: 25 + }, + "0.25": { + cr: "1/4", + + value: 0.25, + xp: 50 + }, + "0.5": { + cr: "1/2", + value: 0.5, + xp: 100 + }, + "1": { + cr: "1", + value: 1, + xp: 200 + }, + "2": { + cr: "2", + value: 2, + xp: 450 + }, + "3": { + cr: "3", + value: 3, + xp: 700 + }, + "4": { + cr: "4", + value: 4, + xp: 1100 + }, + "5": { + cr: "5", + value: 5, + xp: 1800 + }, + "6": { + cr: "6", + value: 6, + xp: 2300 + }, + "7": { + cr: "7", + value: 7, + xp: 2900 + }, + "8": { + cr: "8", + value: 8, + xp: 3900 + }, + "9": { + cr: "9", + value: 9, + xp: 5000 + }, + "10": { + cr: "10", + value: 10, + xp: 5900 + }, + "11": { + cr: "11", + value: 11, + xp: 7200 + }, + "12": { + cr: "12", + value: 12, + xp: 8400 + }, + "13": { + cr: "13", + value: 13, + xp: 10000 + }, + "14": { + cr: "14", + value: 14, + xp: 11500 + }, + "15": { + cr: "15", + value: 15, + xp: 13000 + }, + "16": { + cr: "16", + value: 16, + xp: 15000 + }, + "17": { + cr: "17", + value: 17, + xp: 18000 + }, + "18": { + cr: "18", + value: 18, + xp: 20000 + }, + "19": { + cr: "19", + value: 19, + xp: 22000 + }, + "20": { + cr: "20", + value: 20, + xp: 25000 + }, + "21": { + cr: "21", + value: 21, + xp: 33000 + }, + "22": { + cr: "22", + value: 22, + xp: 41000 + }, + "23": { + cr: "23", + value: 23, + xp: 50000 + }, + "24": { + cr: "24", + value: 24, + xp: 62000 + }, + "25": { + cr: "25", + value: 25, + xp: 75000 + }, + "26": { + cr: "26", + value: 26, + xp: 90000 + }, + "27": { + cr: "27", + value: 27, + xp: 105000 + }, + "28": { + cr: "28", + value: 28, + xp: 120000 + }, + "29": { + cr: "29", + value: 29, + xp: 135000 + }, + "30": { + cr: "30", + value: 30, + xp: 155000 + } +}; +if ("cr" in monster && monster.cr in CR) { + return \`+\${Math.max( + Math.floor(2 + ((CR[monster.cr]?.value ?? 0) - 1) / 4), + 2 + )}\`; +} +return "";`}]}],conditioned:!0,hasRule:!0},{type:"traits",id:Q(),properties:["traits"],conditioned:!0,dice:!0},{type:"spells",id:Q(),properties:["spells"],conditioned:!0,dice:!0},{type:"text",id:Q(),properties:["spellsNotes"],conditioned:!0,text:null},{type:"traits",id:Q(),properties:["actions"],heading:"Actions",conditioned:!0,dice:!0},{type:"traits",id:Q(),properties:["bonus_actions"],heading:"Bonus Actions",conditioned:!0,dice:!0},{type:"group",id:Q(),properties:["legendary_description","legendary_actions"],heading:"Legendary Actions",nested:[{type:"text",id:Q(),properties:["legendary_description"],conditioned:!0,text:null},{type:"traits",id:Q(),properties:["legendary_actions"],conditioned:!0,dice:!0}],conditioned:!0},{type:"group",id:Q(),properties:["mythic_description","mythic_actions"],heading:"Mythic Actions",nested:[{type:"text",id:Q(),properties:["mythic_description"],conditioned:!0,text:null},{type:"traits",id:Q(),properties:["mythic_actions"],conditioned:!0,dice:!0}],conditioned:!0},{type:"traits",id:Q(),properties:["reactions"],heading:"Reactions",conditioned:!0,dice:!0},{type:"traits",id:Q(),properties:["lair_actions"],heading:"Lair Actions",conditioned:!0,dice:!0},{type:"traits",id:Q(),properties:["regional_effects"],heading:"Regional Effects",conditioned:!0,dice:!0}],rn={blocks:kg,id:"basic-5e-layout",name:"Basic 5e Layout",edited:!1,version:9};var Bu=require("obsidian");function N(){}var on=n=>n;function at(n,e){for(let t in e)n[t]=e[t];return n}function Ac(n){return!!n&&(typeof n=="object"||typeof n=="function")&&typeof n.then=="function"}function Cr(n){return n()}function Ua(){return Object.create(null)}function oe(n){n.forEach(Cr)}function Pe(n){return typeof n=="function"}function V(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Va;function Tc(n,e){return n===e?!0:(Va||(Va=document.createElement("a")),Va.href=e,n===Va.href)}function Dc(n){return Object.keys(n).length===0}function Dt(n,...e){if(n==null){for(let i of e)i(void 0);return N}let t=n.subscribe(...e);return t.unsubscribe?()=>t.unsubscribe():t}function Se(n,e,t){n.$$.on_destroy.push(Dt(e,t))}function st(n,e,t,i){if(n){let a=Ec(n,e,t,i);return n[0](a)}}function Ec(n,e,t,i){return n[1]&&i?at(t.ctx.slice(),n[1](i(e))):t.ctx}function rt(n,e,t,i){if(n[2]&&i){let a=n[2](i(t));if(e.dirty===void 0)return a;if(typeof a=="object"){let s=[],r=Math.max(e.dirty.length,a.length);for(let o=0;o32){let e=[],t=n.ctx.length/32;for(let i=0;iwindow.performance.now():()=>Date.now(),$i=Mc?n=>requestAnimationFrame(n):N;var wi=new Set;function Ic(n){wi.forEach(e=>{e.c(n)||(wi.delete(e),e.f())}),wi.size!==0&&$i(Ic)}function Kn(n){let e;return wi.size===0&&$i(Ic),{promise:new Promise(t=>{wi.add(e={c:n,f:t})}),abort(){wi.delete(e)}}}var Yi=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;var Ga=class n{constructor(e){We(this,"_listeners","WeakMap"in Yi?new WeakMap:void 0);We(this,"_observer");We(this,"options");this.options=e}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){return this._observer??(this._observer=new ResizeObserver(e=>{for(let t of e)n.entries.set(t.target,t),this._listeners.get(t.target)?.(t)}))}};Ga.entries="WeakMap"in Yi?new WeakMap:void 0;var Oc=!1;function Pc(){Oc=!0}function Rc(){Oc=!1}function y(n,e){n.appendChild(e)}function se(n,e,t){let i=Ka(n);if(!i.getElementById(e)){let a=v("style");a.id=e,a.textContent=t,Bc(i,a)}}function Ka(n){if(!n)return document;let e=n.getRootNode?n.getRootNode():n.ownerDocument;return e&&e.host?e:n.ownerDocument}function Nc(n){let e=v("style");return e.textContent="/* empty */",Bc(Ka(n),e),e.sheet}function Bc(n,e){return y(n.head||n,e),e.sheet}function D(n,e,t){n.insertBefore(e,t||null)}function x(n){n.parentNode&&n.parentNode.removeChild(n)}function He(n,e){for(let t=0;tn.removeEventListener(e,t,i)}function xr(n){return function(e){return e.preventDefault(),n.call(this,e)}}function ln(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function Lc(n){return function(e){e.target===this&&n.call(this,e)}}function g(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function cn(n,e){for(let t in e)g(n,t,e[t])}function $n(n){return n===""?null:+n}function Fc(n){return Array.from(n.childNodes)}function we(n,e){e=""+e,n.data!==e&&(n.data=e)}function ct(n,e){n.value=e??""}function ze(n,e,t,i){t==null?n.style.removeProperty(e):n.style.setProperty(e,t,i?"important":"")}function re(n,e,t){n.classList.toggle(e,!!t)}function Ji(n,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:i})}var gn=class{constructor(e=!1){We(this,"is_svg",!1);We(this,"e");We(this,"n");We(this,"t");We(this,"a");this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,i=null){this.e||(this.is_svg?this.e=Gt(t.nodeName):this.e=v(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(i)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t{e[t.slot||"default"]=!0}),e}function Ar(n,e){return new n(e)}var $a=new Map,Ya=0;function _g(n){let e=5381,t=n.length;for(;t--;)e=(e<<5)-e^n.charCodeAt(t);return e>>>0}function Sg(n,e){let t={stylesheet:Nc(e),rules:{}};return $a.set(n,t),t}function Xi(n,e,t,i,a,s,r,o=0){let l=16.666/i,c=`{ +`;for(let b=0;b<=1;b+=l){let _=e+(t-e)*s(b);c+=b*100+`%{${r(_,1-_)}} +`}let d=c+`100% {${r(t,1-t)}} +}`,u=`__svelte_${_g(d)}_${o}`,h=Ka(n),{stylesheet:f,rules:m}=$a.get(h)||Sg(h,n);m[u]||(m[u]=!0,f.insertRule(`@keyframes ${u} ${d}`,f.cssRules.length));let p=n.style.animation||"";return n.style.animation=`${p?`${p}, `:""}${u} ${i}ms linear ${a}ms 1 both`,Ya+=1,u}function Ja(n,e){let t=(n.style.animation||"").split(", "),i=t.filter(e?s=>s.indexOf(e)<0:s=>s.indexOf("__svelte")===-1),a=t.length-i.length;a&&(n.style.animation=i.join(", "),Ya-=a,Ya||Cg())}function Cg(){$i(()=>{Ya||($a.forEach(n=>{let{ownerNode:e}=n.stylesheet;e&&x(e)}),$a.clear())})}function Tn(n,e,t,i){if(!e)return N;let a=n.getBoundingClientRect();if(e.left===a.left&&e.right===a.right&&e.top===a.top&&e.bottom===a.bottom)return N;let{delay:s=0,duration:r=300,easing:o=on,start:l=An()+s,end:c=l+r,tick:d=N,css:u}=t(n,{from:e,to:a},i),h=!0,f=!1,m;function p(){u&&(m=Xi(n,0,1,r,s,o,u)),s||(f=!0)}function b(){u&&Ja(n,m),h=!1}return Kn(_=>{if(!f&&_>=l&&(f=!0),f&&_>=c&&(d(1,0),b()),!h)return!1;if(f){let S=_-l,C=0+1*o(S/r);d(C,1-C)}return!0}),p(),d(0,1),b}function Dn(n){let e=getComputedStyle(n);if(e.position!=="absolute"&&e.position!=="fixed"){let{width:t,height:i}=e,a=n.getBoundingClientRect();n.style.position="absolute",n.style.width=t,n.style.height=i,xg(n,a)}}function xg(n,e){let t=n.getBoundingClientRect();if(e.left!==t.left||e.top!==t.top){let i=getComputedStyle(n),a=i.transform==="none"?"":i.transform;n.style.transform=`${a} translate(${e.left-t.left}px, ${e.top-t.top}px)`}}var En;function Et(n){En=n}function Mn(){if(!En)throw new Error("Function called outside component initialization");return En}function pn(n){Mn().$$.on_mount.push(n)}function bn(n){Mn().$$.on_destroy.push(n)}function Me(){let n=Mn();return(e,t,{cancelable:i=!1}={})=>{let a=n.$$.callbacks[e];if(a){let s=Ji(e,t,{cancelable:i});return a.slice().forEach(r=>{r.call(n,s)}),!s.defaultPrevented}return!0}}function Mt(n,e){return Mn().$$.context.set(n,e),e}function Ue(n){return Mn().$$.context.get(n)}function Tr(){return Mn().$$.context}function Ge(n,e){let t=n.$$.callbacks[e.type];t&&t.slice().forEach(i=>i.call(this,e))}var Yn=[];var Re=[],Si=[],Er=[],Hc=Promise.resolve(),Mr=!1;function Ir(){Mr||(Mr=!0,Hc.then(Qi))}function Xa(){return Ir(),Hc}function It(n){Si.push(n)}function Ft(n){Er.push(n)}var Dr=new Set,_i=0;function Qi(){if(_i!==0)return;let n=En;do{try{for(;_in.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),Si=e}var Zi;function Tg(){return Zi||(Zi=Promise.resolve(),Zi.then(()=>{Zi=null})),Zi}function Or(n,e,t){n.dispatchEvent(Ji(`${e?"intro":"outro"}${t}`))}var Qa=new Set,yn;function le(){yn={r:0,c:[],p:yn}}function ce(){yn.r||oe(yn.c),yn=yn.p}function E(n,e){n&&n.i&&(Qa.delete(n),n.i(e))}function I(n,e,t,i){if(n&&n.o){if(Qa.has(n))return;Qa.add(n),yn.c.push(()=>{Qa.delete(n),i&&(t&&n.d(1),i())}),n.o(e)}else i&&i()}var Dg={duration:0};function Jn(n,e,t,i){let s=e(n,t,{direction:"both"}),r=i?0:1,o=null,l=null,c=null,d;function u(){c&&Ja(n,c)}function h(m,p){let b=m.b-r;return p*=Math.abs(b),{a:r,b:m.b,d:b,duration:p,start:m.start,end:m.start+p,group:m.group}}function f(m){let{delay:p=0,duration:b=300,easing:_=on,tick:S=N,css:C}=s||Dg,M={start:An()+p,b:m};m||(M.group=yn,yn.r+=1),"inert"in n&&(m?d!==void 0&&(n.inert=d):(d=n.inert,n.inert=!0)),o||l?l=M:(C&&(u(),c=Xi(n,r,m,b,p,_,C)),m&&S(0,1),o=h(M,b),It(()=>Or(n,m,"start")),Kn(w=>{if(l&&w>l.start&&(o=h(l,b),l=null,Or(n,o.b,"start"),C&&(u(),c=Xi(n,r,o.b,o.duration,0,_,s.css))),o){if(w>=o.end)S(r=o.b,1-r),Or(n,o.b,"end"),l||(o.b?u():--o.group.r||oe(o.group.c)),o=null;else if(w>=o.start){let k=w-o.start;r=o.a+o.d*_(k/o.duration),S(r,1-r)}}return!!(o||l)}))}return{run(m){Pe(s)?Tg().then(()=>{s=s({direction:m?"in":"out"}),f(m)}):f(m)},end(){u(),o=l=null}}}function qc(n,e){let t=e.token={};function i(a,s,r,o){if(e.token!==t)return;e.resolved=o;let l=e.ctx;r!==void 0&&(l=l.slice(),l[r]=o);let c=a&&(e.current=a)(l),d=!1;e.block&&(e.blocks?e.blocks.forEach((u,h)=>{h!==s&&u&&(le(),I(u,1,1,()=>{e.blocks[h]===u&&(e.blocks[h]=null)}),ce())}):e.block.d(1),c.c(),E(c,1),c.m(e.mount(),e.anchor),d=!0),e.block=c,e.blocks&&(e.blocks[s]=c),d&&Qi()}if(Ac(n)){let a=Mn();if(n.then(s=>{Et(a),i(e.then,1,e.value,s),Et(null)},s=>{if(Et(a),i(e.catch,2,e.error,s),Et(null),!e.hasCatch)throw s}),e.current!==e.pending)return i(e.pending,0),!0}else{if(e.current!==e.then)return i(e.then,1,e.value,n),!0;e.resolved=n}}function jc(n,e,t){let i=e.slice(),{resolved:a}=n;n.current===n.then&&(i[n.value]=a),n.current===n.catch&&(i[n.error]=a),n.block.p(i,t)}function be(n){return n?.length!==void 0?n:Array.from(n)}function Pr(n,e){n.d(1),e.delete(n.key)}function Xn(n,e){I(n,1,1,()=>{e.delete(n.key)})}function Vc(n,e){n.f(),Pr(n,e)}function Ci(n,e){n.f(),Xn(n,e)}function vt(n,e,t,i,a,s,r,o,l,c,d,u){let h=n.length,f=s.length,m=h,p={};for(;m--;)p[n[m].key]=m;let b=[],_=new Map,S=new Map,C=[];for(m=f;m--;){let A=u(a,s,m),P=t(A),B=r.get(P);B?i&&C.push(()=>B.p(A,e)):(B=c(P,A),B.c()),_.set(P,b[m]=B),P in p&&S.set(P,Math.abs(m-p[P]))}let M=new Set,w=new Set;function k(A){E(A,1),A.m(o,d),r.set(A.key,A),d=A.first,f--}for(;h&&f;){let A=b[f-1],P=n[h-1],B=A.key,L=P.key;A===P?(d=A.first,h--,f--):_.has(L)?!r.has(B)||M.has(B)?k(A):w.has(L)?h--:S.get(B)>S.get(L)?(w.add(B),k(A)):(M.add(L),h--):(l(P,r),h--)}for(;h--;){let A=n[h];_.has(A.key)||l(A,r)}for(;f;)k(b[f-1]);return oe(C),b}function In(n,e){let t={},i={},a={$$scope:1},s=n.length;for(;s--;){let r=n[s],o=e[s];if(o){for(let l in r)l in o||(i[l]=1);for(let l in o)a[l]||(t[l]=o[l],a[l]=1);n[s]=o}else for(let l in r)a[l]=1}for(let r in i)r in t||(t[r]=void 0);return t}var Eg=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],Mg=new Set([...Eg]);function Wt(n,e,t){let i=n.$$.props[e];i!==void 0&&(n.$$.bound[i]=t,t(n.$$.ctx[i]))}function ie(n){n&&n.c()}function te(n,e,t){let{fragment:i,after_update:a}=n.$$;i&&i.m(e,t),It(()=>{let s=n.$$.on_mount.map(Cr).filter(Pe);n.$$.on_destroy?n.$$.on_destroy.push(...s):oe(s),n.$$.on_mount=[]}),a.forEach(It)}function ne(n,e){let t=n.$$;t.fragment!==null&&(zc(t.after_update),oe(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Og(n,e){n.$$.dirty[0]===-1&&(Yn.push(n),Ir(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{let m=f.length?f[0]:h;return c.ctx&&a(c.ctx[u],c.ctx[u]=m)&&(!c.skip_bound&&c.bound[u]&&c.bound[u](m),d&&Og(n,u)),h}):[],c.update(),d=!0,oe(c.before_update),c.fragment=i?i(c.ctx):!1,e.target){if(e.hydrate){Pc();let u=Fc(e.target);c.fragment&&c.fragment.l(u),u.forEach(x)}else c.fragment&&c.fragment.c();e.intro&&E(n.$$.fragment),te(n,e.target,e.anchor),Rc(),Qi()}Et(l)}var Pg;typeof HTMLElement=="function"&&(Pg=class extends HTMLElement{constructor(e,t,i){super();We(this,"$$ctor");We(this,"$$s");We(this,"$$c");We(this,"$$cn",!1);We(this,"$$d",{});We(this,"$$r",!1);We(this,"$$p_d",{});We(this,"$$l",{});We(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){let a=this.$$c.$on(e,t);this.$$l_u.set(t,a)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){let a=this.$$l_u.get(t);a&&(a(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(s){return()=>{let r;return{c:function(){r=v("slot"),s!=="default"&&g(r,"name",s)},m:function(c,d){D(c,r,d)},d:function(c){c&&x(r)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let t={},i=Wc(this);for(let s of this.$$s)s in i&&(t[s]=[e(s)]);for(let s of this.attributes){let r=this.$$g_p(s.name);r in this.$$d||(this.$$d[r]=Rr(r,s.value,this.$$p_d,"toProp"))}for(let s in this.$$p_d)!(s in this.$$d)&&this[s]!==void 0&&(this.$$d[s]=this[s],delete this[s]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});let a=()=>{this.$$r=!0;for(let s in this.$$p_d)if(this.$$d[s]=this.$$c.$$.ctx[this.$$c.$$.props[s]],this.$$p_d[s].reflect){let r=Rr(s,this.$$d[s],this.$$p_d,"toAttribute");r==null?this.removeAttribute(this.$$p_d[s].attribute||s):this.setAttribute(this.$$p_d[s].attribute||s,r)}this.$$r=!1};this.$$c.$$.after_update.push(a),a();for(let s in this.$$l)for(let r of this.$$l[s]){let o=this.$$c.$on(s,r);this.$$l_u.set(r,o)}this.$$l={}}}attributeChangedCallback(e,t,i){this.$$r||(e=this.$$g_p(e),this.$$d[e]=Rr(e,i,this.$$p_d,"toProp"),this.$$c?.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Rr(n,e,t,i){let a=t[n]?.type;if(e=a==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[n])return e;if(i==="toAttribute")switch(a){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(a){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var G=class{constructor(){We(this,"$$");We(this,"$$set")}$destroy(){ne(this,1),this.$destroy=N}$on(e,t){if(!Pe(t))return N;let i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{let a=i.indexOf(t);a!==-1&&i.splice(a,1)}}$set(e){this.$$set&&!Dc(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Uc="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Uc);var $t=require("obsidian");var xi=[];function Rg(n,e){return{subscribe:Le(n,e).subscribe}}function Le(n,e=N){let t,i=new Set;function a(o){if(V(n,o)&&(n=o,t)){let l=!xi.length;for(let c of i)c[1](),xi.push(c,n);if(l){for(let c=0;c{i.delete(c),i.size===0&&t&&(t(),t=null)}}return{set:a,update:s,subscribe:r}}function kt(n,e,t){let i=!Array.isArray(n),a=i?[n]:n;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");let s=e.length<2;return Rg(t,(r,o)=>{let l=!1,c=[],d=0,u=N,h=()=>{if(d)return;u();let m=e(i?c[0]:c,r,o);s?r(m):u=Pe(m)?m:N},f=a.map((m,p)=>Dt(m,b=>{c[p]=b,d&=~(1<{d|=1<([\\s\\S]+?)<${Za}>`),es="STATBLOCK-MARKDOWN-LINK",ns=new RegExp(`<${es}>([\\s\\S]+?)(?:\\|([\\s\\S]+?))?<${es}>`),Lr=/([\s\S]+?)/,Ht=class n{static isStatblockLink(e){return Lr.test(e)}static replaceWikiLink(e){return`<${Za}>${e}<${Za}>`}static replaceMarkdownLink(e,t){return`<${es}>${e}${t?"|"+t:""}<${es}>`}static transformSource(e){return e.replace(/\[\[([^\]]+?)\]\]/g,(t,i)=>n.replaceWikiLink(i)).replace(/\[([^\]]*?)\]\(([^)]+?)\)/g,(t,i,a)=>n.replaceMarkdownLink(a,i))}static transformYamlSource(e){return n.transformSource(e)}static stringifyLinks(e){return e.replace(new RegExp(ts,"g"),(t,i)=>`[[${i}]]`).replace(new RegExp(ns,"g"),(t,i,a)=>`[${a||""}](${i})`)}};var vn,ea,Wr,Fr=class extends Ai.Component{constructor(){super(...arguments);Be(this,ea);Be(this,vn,new Map)}buildCache(){setTimeout(()=>{let t=this.metadataCache.getLinkSuggestions();for(let{alias:i,file:a}of t)i&&Oe(this,ea,Wr).call(this,[i],a)},0)}getResolvedFile(t,i){t=t.trim();let a=X(this,vn).get(t)??X(this,vn).get(t.toLowerCase())??t;return{alias:X(this,vn).has(t)||X(this,vn).has(t.toLowerCase())?t:null,file:this.app.metadataCache.getFirstLinkpathDest(a,i)}}initialize(t,i){if(this.load(),this.app=i,this.metadataCache=t,t.initialized)this.buildCache();else{let a=i.metadataCache.on("resolved",()=>{this.buildCache(),this.metadataCache.offref(a)});this.registerEvent(a)}this.registerEvent(this.metadataCache.on("changed",a=>{let{frontmatter:s}=i.metadataCache.getFileCache(a)??{};if(!s)return;let r=(0,Ai.parseFrontMatterAliases)(s)??[];Oe(this,ea,Wr).call(this,r,a)}))}linkify(t,i=""){let a=t.trim(),{file:s,alias:r}=this.getResolvedFile(a,i);return s!=null?t.replace(a,Ht.replaceWikiLink(`${s.basename}${r?"|"+r:""}`)):t}linkifySpells(t,i=""){return t.replace(/(.+?)(\*?,|\*?$)/g,(a,s,r)=>`${this.linkify(s,i)}${r}`)}transformSource(t){return Ht.transformSource(t)}transformYamlSource(t){return Ht.transformYamlSource(t)}stringifyLinks(t){return Ht.stringifyLinks(t)}splitByLinks(t,i,a){return ye(t).split(Lr).filter(s=>s&&s.length).map(s=>{if(ts.test(s)){let r=s.match(ts)[1];return{isLink:a,text:`[[${(0,Ai.normalizePath)(r)}]]`}}if(ns.test(s)){let[r,o,l]=s.match(ns);return{isLink:a,text:`[${l||""}](${o})`}}return{isLink:!1,text:s}})}};vn=new WeakMap,ea=new WeakSet,Wr=function(t,i){for(let a of t)X(this,vn).set(a,i.name),X(this,vn).set(a.toLowerCase(),i.name)};var ut=new Fr;function Gc(n,e,t){let i=new Map,a=new Map,s=n.diceParsing??is();for(let o of s){i.set(o.id,new RegExp(o.regex));let l=` +let anon = (original, matches, monster) => { + if (!matches || !matches.length) return original; + ${o.parser}; +} +let result; +try { + result = anon(original, matches, monster); +} catch(e) { + console.error(e); + result = original; +} finally { + return result; +} + `,c=new Function("original","matches","monster",l);a.set(o.id,c)}for(let{id:o}of s){let l=i.get(o);e=e.replaceAll(new RegExp(l,"g"),c=>`${o}${c}`)}let r=[];for(let o of e.split(/(.+?)/)){if(!/.+?/.test(o)){r.push(o);continue}let[,l,c]=o.match(/(.+?)(.+)/)??[];if(!l||!c){r.push(o);continue}let d=i.get(l),u=a.get(l),h=c.match(d),f=u.call(void 0,c,h,t);!f||Array.isArray(f)&&!f.every(m=>typeof m=="string"||m?.text?.length)||!Array.isArray(f)&&typeof f=="object"&&!f.text?.length?r.push(c):Array.isArray(f)?r.push(...f):r.push(f)}return r}function is(){return[{regex:/([\+\-])(\d+) to hit/.source,parser:`let [, sign, number] = matches; +let mult = 1; +if (sign === "-") { + mult = -1; +} +if (!isNaN(Number(number))) { + return { + text: \`1d20+\${mult * Number(number)}\`, + original + } +}`,id:Q(),desc:"+10 to hit"},{regex:/(\d+)\s\((\d+d\d+(?:\s*[+\-]\s*\d+)?)\)/.source,parser:`let [, base, dice] = matches; +let text; +if (!isNaN(Number(base)) && dice) { + text = dice; +} +return { text, original: dice ?? original };`,id:Q(),desc:"4 (1d6 + 1)"},{regex:/([^\s]+) ([\+\-])(\d+)/.source,parser:` + let [, save, sign, number] = matches; +let mult = 1; +if (sign === "-") { + mult = -1; +} +let text; +if (!isNaN(Number(number))) { + text = \`1d20+\${mult * Number(number)}\`; + original = \`\${save} \${sign}\${number}\`; +} +return { text, original };`,id:Q(),desc:"+5"}]}function Lg(n){se(n,"svelte-1c3hzq4",".statblock-markdown.svelte-1c3hzq4{display:inline}.statblock-markdown.svelte-1c3hzq4 p{display:inline}.statblock-markdown.svelte-1c3hzq4 p ~ p{display:inline-block}")}function Fg(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","statblock-markdown svelte-1c3hzq4")},m(s,r){D(s,e,r),i||(a=J(t=n[1].call(null,e)),i=!0)},p:N,i:N,o:N,d(s){s&&x(e),i=!1,a()}}}function Wg(n,e,t){let i,{property:a}=e;a=typeof a=="string"?ut.stringifyLinks(a):a;let s=Ue("context"),r=Ue("renderer"),o=Ue("item"),l=Ue("dice"),c=o.dice,d=Ue("monster");Se(n,d,b=>t(5,i=b));let u=i;d.subscribe(b=>u=b);let h=Ue("plugin"),f=Ue("layout"),m=[a];if(l&&c)if(o.diceProperty&&o.diceProperty in u&&typeof u[o.diceProperty]=="string")m=[{text:u[o.diceProperty]}];else{let b=Gc(f,ye(a),u);Array.isArray(b)?m=b:m=[b]}if(l&&o.diceCallback)try{let b=document.body.createEl("iframe"),_=b.contentWindow.Function,C=new _("monster","property",o.diceCallback).call(void 0,u,a)??a;document.body.removeChild(b),Array.isArray(C)?m=C:m=[C]}catch(b){new as.Notice(`There was an error executing the provided dice callback for [${o.properties.join(", ")}] + +${b.message}`),console.error(b)}a="";for(let b of m)if(l&&typeof b=="object"){let _,S=h.getRollerString(b.text);b.original?_=`${b.original} (\`dice: ${S}\`)`:_=`\`dice: ${S}\``,a+=_}else a+=b;let p=b=>{a==="-"&&t(2,a="\\-"),as.MarkdownRenderer.render(h.app,a,b,s,r)};return n.$$set=b=>{"property"in b&&t(2,a=b.property)},[d,p,a]}var Hr=class extends G{constructor(e){super(),K(this,e,Wg,Fg,V,{property:2},Lg)}},Kc=Hr;function Hg(n){let e,t;return e=new Kc({props:{property:n[0]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,[a]){let s={};a&1&&(s.property=i[0]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function zg(n,e,t){let{property:i=""}=e;return n.$$set=a=>{"property"in a&&t(0,i=a.property)},[i]}var zr=class extends G{constructor(e){super(),K(this,e,zg,Hg,V,{property:0})}},gt=zr;var Qc=require("obsidian");function qg(n){se(n,"svelte-1d2gp4n",".trait.svelte-1d2gp4n{font-family:var(--active-traits-font);color:var(--active-traits-font-color);font-size:var(--active-traits-font-size);font-weight:var(--active-traits-font-weight);font-style:var(--active-traits-font-style)}.trait-name.svelte-1d2gp4n{font-family:var(--active-traits-name-font);color:var(--active-traits-name-font-color);font-size:var(--active-traits-name-font-size);font-weight:var(--active-traits-name-font-weight);font-style:var(--active-traits-name-font-style)}.property-name.svelte-1d2gp4n{margin:0;margin-right:0.25em;display:inline}.statblock-nested-traits.svelte-1d2gp4n{margin-left:1rem}")}function $c(n,e,t){let i=n.slice();return i[7]=e[t],i}function Yc(n){let e,t,i;return t=new gt({props:{property:n[2]}}),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","property-name trait-name svelte-1d2gp4n")},m(a,s){D(a,e,s),te(t,e,null),i=!0},p(a,s){let r={};s&4&&(r.property=a[2]),t.$set(r)},i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function Jc(n){let e,t,i=be(n[1].traits),a=[];for(let r=0;rI(a[r],1,1,()=>{a[r]=null});return{c(){e=v("div");for(let r=0;r{o=null}),ce());let u={};d&1&&(u.property=c[0]),i.$set(u),c[1]?.traits?l?(l.p(c,d),d&2&&E(l,1)):(l=Jc(c),l.c(),E(l,1),l.m(e,null)):l&&(le(),I(l,1,1,()=>{l=null}),ce()),(!r||d&32&&s!==(s="property "+c[5]+" trait svelte-1d2gp4n"))&&g(e,"class",s)},i(c){r||(E(o),E(i.$$.fragment,c),E(l),r=!0)},o(c){I(o),I(i.$$.fragment,c),I(l),r=!1},d(c){c&&x(e),o&&o.d(),ne(i),l&&l.d()}}}function Vg(n,e,t){let i,{trait:a}=e,{name:s}=e,{desc:r}=e,{property:o=""}=e,{item:l}=e,{monster:c}=e;if(l.callback)try{let d=document.body.createEl("iframe"),u=d.contentWindow.Function;r=new u("monster","property",l.callback).call(void 0,c,a)??r,document.body.removeChild(d)}catch(d){new Qc.Notice(`There was an error executing the provided callback for [${l.properties.join(", ")}] + +${d.message}`),console.error(d)}return n.$$set=d=>{"trait"in d&&t(1,a=d.trait),"name"in d&&t(2,s=d.name),"desc"in d&&t(0,r=d.desc),"property"in d&&t(3,o=d.property),"item"in d&&t(4,l=d.item),"monster"in d&&t(6,c=d.monster)},n.$$.update=()=>{n.$$.dirty&28&&t(5,i=l.doNotAddClass?[]:[mt(s),mt(o)].join(" "))},[r,a,s,o,l,i,c]}var ss=class extends G{constructor(e){super(),K(this,e,Vg,jg,V,{trait:1,name:2,desc:0,property:3,item:4,monster:6},qg)}},ta=ss;var rs=require("obsidian");function Ug(n){se(n,"svelte-1lnliuc",".inline.svelte-1lnliuc{display:inline}")}function Zc(n,e,t){let i=n.slice();return i[6]=e[t],i}function Gg(n){let e=n[6].text+"",t;return{c(){t=pe(e)},m(i,a){D(i,t,a)},p:N,d(i){i&&x(t)}}}function Kg(n){let e,t,i={ctx:n,current:null,token:null,hasCatch:!1,pending:Jg,then:Yg,catch:$g,value:9};return qc(t=n[1](n[6].text),i),{c(){e=_e(),i.block.c()},m(a,s){D(a,e,s),i.block.m(a,i.anchor=s),i.mount=()=>e.parentNode,i.anchor=e},p(a,s){n=a,jc(i,n,s)},d(a){a&&x(e),i.block.d(a),i.token=null,i=null}}}function $g(n){return{c:N,m:N,p:N,d:N}}function Yg(n){let e,t=n[9]+"",i;return{c(){e=new gn(!1),i=_e(),e.a=i},m(a,s){e.m(t,a,s),D(a,i,s)},p:N,d(a){a&&(x(i),e.d())}}}function Jg(n){return{c:N,m:N,p:N,d:N}}function eu(n){let e;function t(s,r){return s[6].isLink?Kg:Gg}let a=t(n,-1)(n);return{c(){a.c(),e=_e()},m(s,r){a.m(s,r),D(s,e,r)},p(s,r){a.p(s,r)},d(s){s&&x(e),a.d(s)}}}function Xg(n){let e,t=be(n[0]),i=[];for(let a=0;a{let d=createDiv();return await rs.MarkdownRenderer.render(app,c,d,s,r),d.querySelector("a").outerHTML};return n.$$set=c=>{"textToRender"in c&&t(2,i=c.textToRender)},[o,l,i]}var qr=class extends G{constructor(e){super(),K(this,e,Qg,Xg,V,{textToRender:2},Ug)}},Kt=qr;function Zg(n){se(n,"svelte-14k5qsm",".flex-container.svelte-14k5qsm{display:flex;justify-content:space-between;align-items:center}.heading.svelte-14k5qsm{font-family:var(--active-heading-font);color:var(--active-heading-font-color);font-weight:var(--active-heading-font-weight);font-variant:var(--active-heading-font-variant);font-size:var(--active-heading-font-size);line-height:var(--active-heading-line-height);margin:0px;letter-spacing:1px;display:flex;justify-content:space-between;align-items:center}")}function tu(n,e,t){let i=n.slice();return i[2]=e[t],i}function nu(n){let e,t,i,a,s=[sp,ap,ip,np,tp,ep],r=[];function o(l,c){return!l[1].size||l[1].size==1?0:l[1].size==2?1:l[1].size==3?2:l[1].size==4?3:l[1].size==5?4:5}return e=o(n,-1),t=r[e]=s[e](n),{c(){t.c(),i=_e()},m(l,c){r[e].m(l,c),D(l,i,c),a=!0},p(l,c){let d=e;e=o(l,c),e===d?r[e].p(l,c):(le(),I(r[d],1,1,()=>{r[d]=null}),ce(),t=r[e],t?t.p(l,c):(t=r[e]=s[e](l),t.c()),E(t,1),t.m(i.parentNode,i))},i(l){a||(E(t),a=!0)},o(l){I(t),a=!1},d(l){l&&x(i),r[e].d(l)}}}function ep(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h6"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function tp(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h5"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function np(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h4"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function ip(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h3"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function ap(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h2"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function sp(n){let e,t,i,a,s;return t=new Kt({props:{textToRender:ye(n[0][n[2]])}}),{c(){e=v("h1"),ie(t.$$.fragment),i=R(),g(e,"class",a="heading statblock-heading "+ye(n[2])+" svelte-14k5qsm")},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s=!0},p(r,o){let l={};o&3&&(l.textToRender=ye(r[0][r[2]])),t.$set(l),(!s||o&2&&a!==(a="heading statblock-heading "+ye(r[2])+" svelte-14k5qsm"))&&g(e,"class",a)},i(r){s||(E(t.$$.fragment,r),s=!0)},o(r){I(t.$$.fragment,r),s=!1},d(r){r&&x(e),ne(t)}}}function iu(n){let e,t,i=n[2]in n[0]&&nu(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,s){a[2]in a[0]?i?(i.p(a,s),s&3&&E(i,1)):(i=nu(a),i.c(),E(i,1),i.m(e.parentNode,e)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function rp(n){let e,t,i=be(n[1].properties),a=[];for(let r=0;rI(a[r],1,1,()=>{a[r]=null});return{c(){e=v("div");for(let r=0;r{"monster"in s&&t(0,i=s.monster),"item"in s&&t(1,a=s.item)},[i,a]}var jr=class extends G{constructor(e){super(),K(this,e,op,rp,V,{monster:0,item:1},Zg)}},au=jr;var ru=require("obsidian");function lp(n){se(n,"svelte-1rketb6",".line.svelte-1rketb6{line-height:var(--active-property-line-height);display:block;font-family:var(--active-property-font);color:var(--active-property-font-color);font-variant:var(--active-property-font-variant);font-size:var(--active-property-font-size);font-weight:var(--active-property-font-weight)}.property-name.svelte-1rketb6{margin:0;margin-right:0.25em;display:inline;font-family:var(--active-property-name-font);color:var(--active-property-name-font-color);font-variant:var(--active-property-name-font-variant);font-size:var(--active-property-name-font-size);font-weight:var(--active-property-name-font-weight)}")}function su(n){let e,t,i,a,s,r;return a=new gt({props:{property:n[1]}}),{c(){e=v("div"),t=v("span"),t.textContent=`${n[3]}`,i=R(),ie(a.$$.fragment),g(t,"class","property-name svelte-1rketb6"),g(e,"class",s="line "+n[2]+" svelte-1rketb6")},m(o,l){D(o,e,l),y(e,t),y(e,i),te(a,e,null),r=!0},p(o,l){let c={};l&2&&(c.property=o[1]),a.$set(c),(!r||l&4&&s!==(s="line "+o[2]+" svelte-1rketb6"))&&g(e,"class",s)},i(o){r||(E(a.$$.fragment,o),r=!0)},o(o){I(a.$$.fragment,o),r=!1},d(o){o&&x(e),ne(a)}}}function cp(n){let e,t,i=(!n[0].conditioned||n[0].conditioned&&`${n[1]}`.length)&&su(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,[s]){!a[0].conditioned||a[0].conditioned&&`${a[1]}`.length?i?(i.p(a,s),s&3&&E(i,1)):(i=su(a),i.c(),E(i,1),i.m(e.parentNode,e)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function up(n,e,t){let i,{monster:a}=e,{item:s}=e,r=ye(a[s.properties[0]],0,", ",!1),o=s.display??s.properties[0];if(s.callback)try{let l=document.body.createEl("iframe"),c=l.contentWindow.Function;r=new c("monster",s.callback).call(void 0,a)??r,document.body.removeChild(l)}catch(l){new ru.Notice(`There was an error executing the provided callback for [${s.properties.join(", ")}] + +${l.message}`),console.error(l)}return!s.conditioned&&!`${r}`.length&&(r=s.fallback??"-"),n.$$set=l=>{"monster"in l&&t(4,a=l.monster),"item"in l&&t(0,s=l.item)},n.$$.update=()=>{n.$$.dirty&1&&t(2,i=s.doNotAddClass?"":mt(s.properties[0]))},[s,r,i,o,a]}var Vr=class extends G{constructor(e){super(),K(this,e,up,cp,V,{monster:4,item:0},lp)}},ou=Vr;function dp(n){se(n,"svelte-k72li0",`.tapered-rule.svelte-k72li0{width:auto;margin:0.5em 0;height:5px;background:-webkit-linear-gradient( + 0deg, + var(--active-rule-color) 0%, + var(--active-rule-color) 50%, + var(--active-background-color) 95%, + var(--active-background-color) 100% + );clip-path:polygon(0 0, 0 100%, 95% 50%);-webkit-clip-path:polygon(0 0, 0 100%, 95% 50%)}`)}function hp(n){let e;return{c(){e=v("div"),g(e,"class","tapered-rule svelte-k72li0")},m(t,i){D(t,e,i)},p:N,i:N,o:N,d(t){t&&x(e)}}}var Ur=class extends G{constructor(e){super(),K(this,e,null,hp,V,{},dp)}},os=Ur;var uu=require("obsidian");function fp(n){se(n,"svelte-1vwmbsx",'.line.svelte-1vwmbsx.svelte-1vwmbsx{line-height:var(--active-saves-line-height);display:block;color:var(--active-font-color)}.property-name.svelte-1vwmbsx.svelte-1vwmbsx{color:var(--active-property-name-font-color);margin:0;margin-right:0.25em;display:inline;font-weight:bold}.property-text.svelte-1vwmbsx.svelte-1vwmbsx{display:inline;margin:0}.save-entry.svelte-1vwmbsx.svelte-1vwmbsx,.save-name.svelte-1vwmbsx.svelte-1vwmbsx,.save-value.svelte-1vwmbsx.svelte-1vwmbsx{display:inline}.save-entry.svelte-1vwmbsx:not(:last-child) .save-value.svelte-1vwmbsx::after{content:", "}')}function lu(n,e,t){let i=n.slice();return i[5]=e[t][0],i[6]=e[t][1],i}function mp(n){let e,t,i;return t=new gt({props:{property:n[5]}}),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","save-name svelte-1vwmbsx")},m(a,s){D(a,e,s),te(t,e,null),i=!0},p:N,i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function cu(n){let e,t=!n[5].startsWith("_"),i,a,s,r,o,l,c=t&&mp(n);return s=new gt({props:{property:n[6]}}),{c(){e=v("div"),c&&c.c(),i=R(),a=v("div"),ie(s.$$.fragment),r=R(),g(a,"class","save-value svelte-1vwmbsx"),g(e,"class",o="save-entry save-"+mt(n[5])+"-entry svelte-1vwmbsx")},m(d,u){D(d,e,u),c&&c.m(e,null),y(e,i),y(e,a),te(s,a,null),y(e,r),l=!0},p(d,u){t&&c.p(d,u)},i(d){l||(E(c),E(s.$$.fragment,d),l=!0)},o(d){I(c),I(s.$$.fragment,d),l=!1},d(d){d&&x(e),c&&c.d(),ne(s)}}}function gp(n){let e,t,i,a=(n[0].display??Ki(n[0].properties[0]))+"",s,r,o,l,c,d=be(n[2]),u=[];for(let f=0;fI(u[f],1,1,()=>{u[f]=null});return{c(){e=v("div"),t=v("div"),i=v("span"),s=pe(a),r=R(),o=v("div");for(let f=0;f=0?"+":""}${n}`}function bp(n,e,t){let i,{monster:a}=e,{item:s}=e,r=a[s.properties[0]];if(Array.isArray(r)||(r=[]),s.callback)try{let l=document.body.createEl("iframe"),c=l.contentWindow.Function,d=new c("monster","property",s.callback);r=r.map(u=>d.call(void 0,a,u)??u),document.body.removeChild(l)}catch(l){new uu.Notice(`There was an error executing the provided callback for [${s.properties.join(", ")}] + +${l.message}`),console.error(l)}let o=r.map(l=>{if(!l||typeof l!="object")return null;if(l.desc)return[l.name||"_",l.desc];let c=Object.keys(l)[0];if(!c)return null;let d=Object.values(l)[0];return typeof d=="string"&&isNaN(Number(d))?[Ki(c),d]:d!=0&&(!d||isNaN(Number(d)))?null:[Ki(c),pp(d)]}).filter(l=>l);return n.$$set=l=>{"monster"in l&&t(3,a=l.monster),"item"in l&&t(0,s=l.item)},n.$$.update=()=>{n.$$.dirty&1&&t(1,i=s.doNotAddClass?[]:[mt(s.display),mt(s.properties[0])].join(" "))},[s,i,o,a]}var Gr=class extends G{constructor(e){super(),K(this,e,bp,gp,V,{monster:3,item:0},fp)}},du=Gr;function yp(n){se(n,"svelte-1ascaxr",`.section-header.svelte-1ascaxr{border-bottom:var(--active-section-heading-border-size) solid + var(--active-section-heading-border-color);color:var(--active-section-heading-font-color);font-size:var(--active-section-heading-font-size);font-variant:var(--active-section-heading-font-variant);font-weight:var(--active-section-heading-font-weight);font-family:var(--active-section-heading-font);letter-spacing:1px;margin:0;margin-bottom:0.3em;break-inside:avoid-column;break-after:avoid-column}`)}function hu(n){let e,t,i,a;return t=new Kt({props:{textToRender:n[0]}}),{c(){e=v("h3"),ie(t.$$.fragment),g(e,"class",i="section-header "+n[1](n[0])+" svelte-1ascaxr")},m(s,r){D(s,e,r),te(t,e,null),a=!0},p(s,r){let o={};r&1&&(o.textToRender=s[0]),t.$set(o),(!a||r&1&&i!==(i="section-header "+s[1](s[0])+" svelte-1ascaxr"))&&g(e,"class",i)},i(s){a||(E(t.$$.fragment,s),a=!0)},o(s){I(t.$$.fragment,s),a=!1},d(s){s&&x(e),ne(t)}}}function vp(n){let e,t,i=n[0]&&n[0].length&&hu(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,[s]){a[0]&&a[0].length?i?(i.p(a,s),s&1&&E(i,1)):(i=hu(a),i.c(),E(i,1),i.m(e.parentNode,e)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function kp(n,e,t){let{monster:i}=e,{item:a}=e,s;if(a.headingProp){if(a.heading in i){let o=ye(i[a.heading]);o.length&&(s=o)}}else a.heading?.length&&(s=a.heading);let r=o=>o.toLowerCase().replace(/[^A-Za-z0-9\s]/g,"").replace(/\s+/g,"-");return n.$$set=o=>{"monster"in o&&t(2,i=o.monster),"item"in o&&t(3,a=o.item)},[s,r,i,a]}var Kr=class extends G{constructor(e){super(),K(this,e,kp,vp,V,{monster:2,item:3},yp)}},Ti=Kr;function wp(n){se(n,"svelte-1fyuyh",".subheading.svelte-1fyuyh{font-weight:var(--active-subheading-font-weight);font-style:var(--active-subheading-font-style);font-size:var(--active-subheading-font-size);font-family:var(--active-subheading-font-family);color:var(--active-subheading-font-color);margin:0}")}function _p(n){let e,t,i;return t=new Kt({props:{textToRender:n[1].join(n[0].separator)}}),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","subheading svelte-1fyuyh")},m(a,s){D(a,e,s),te(t,e,null),i=!0},p(a,s){let r={};s&1&&(r.textToRender=a[1].join(a[0].separator)),t.$set(r)},i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function Sp(n){let e,t,i=n[1].length&&_p(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,[s]){a[1].length&&i.p(a,s)},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function Cp(n,e,t){let{monster:i}=e,{item:a}=e,s=[];for(let r of a.properties)r in i&&s.push(`${ye(i[r],0,", ",!1)}`);return n.$$set=r=>{"monster"in r&&t(2,i=r.monster),"item"in r&&t(0,a=r.item)},[a,s,i]}var $r=class extends G{constructor(e){super(),K(this,e,Cp,Sp,V,{monster:2,item:0},wp)}},fu=$r;function xp(n){se(n,"svelte-1jjvt5k",'.statblock-table-header.svelte-1jjvt5k{font-weight:var(--active-table-header-font-weight)}.statblock-table.svelte-1jjvt5k{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.table-item.svelte-1jjvt5k{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}.calculated-modifier.svelte-1jjvt5k::before{content:"("}.calculated-modifier.svelte-1jjvt5k::after{content:")"}')}function mu(n,e,t){let i=n.slice();return i[7]=e[t][0],i[2]=e[t][1],i}function gu(n,e,t){let i=n.slice();return i[10]=e[t],i}function pu(n){let e;return{c(){e=v("span"),e.textContent=`${n[3](n[10])}`,g(e,"class","calculated-modifier svelte-1jjvt5k")},m(t,i){D(t,e,i)},p:N,d(t){t&&x(e)}}}function bu(n){let e,t,i,a;t=new gt({props:{property:ye(n[10])}});let s=n[0].calculate&&pu(n);return{c(){e=v("span"),ie(t.$$.fragment),i=R(),s&&s.c()},m(r,o){D(r,e,o),te(t,e,null),y(e,i),s&&s.m(e,null),a=!0},p(r,o){r[0].calculate?s?s.p(r,o):(s=pu(r),s.c(),s.m(e,null)):s&&(s.d(1),s=null)},i(r){a||(E(t.$$.fragment,r),a=!0)},o(r){I(t.$$.fragment,r),a=!1},d(r){r&&x(e),ne(t),s&&s.d()}}}function yu(n){let e,t,i,a,s,r=be(n[2]),o=[];for(let c=0;cI(o[c],1,1,()=>{o[c]=null});return{c(){e=v("div"),t=v("span"),t.textContent=`${n[5][n[7]]}`,i=R();for(let c=0;cI(s[o],1,1,()=>{s[o]=null});return{c(){e=v("div");for(let o=0;o=0?"+":"-"}${Math.abs(u)}`}let o=a[s.properties[0]];Array.isArray(o)||(o=[]);let l=new Map;for(let d=0;d0?o.length:1).keys()];return n.$$set=d=>{"monster"in d&&t(6,a=d.monster),"item"in d&&t(0,s=d.item)},n.$$.update=()=>{n.$$.dirty&1&&t(1,i=s.doNotAddClass?"":mt(s.properties[0]))},[s,i,o,r,l,c,a]}var Yr=class extends G{constructor(e){super(),K(this,e,Tp,Ap,V,{monster:6,item:0},xp)}},vu=Yr;function ku(n){let e,t,i,a,s=n[1].heading&&wu(n);return i=new gt({props:{render:n[1].markdown,property:n[2]}}),{c(){s&&s.c(),e=R(),t=v("div"),ie(i.$$.fragment),g(t,"class","line")},m(r,o){s&&s.m(r,o),D(r,e,o),D(r,t,o),te(i,t,null),a=!0},p(r,o){r[1].heading?s?(s.p(r,o),o&2&&E(s,1)):(s=wu(r),s.c(),E(s,1),s.m(e.parentNode,e)):s&&(le(),I(s,1,1,()=>{s=null}),ce());let l={};o&2&&(l.render=r[1].markdown),o&4&&(l.property=r[2]),i.$set(l)},i(r){a||(E(s),E(i.$$.fragment,r),a=!0)},o(r){I(s),I(i.$$.fragment,r),a=!1},d(r){r&&(x(e),x(t)),s&&s.d(r),ne(i)}}}function wu(n){let e,t;return e=new Ti({props:{item:n[1],monster:n[0]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&2&&(s.item=i[1]),a&1&&(s.monster=i[0]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Dp(n){let e,t,i=(!n[1].conditioned||n[1].conditioned&&`${n[2]}`.length)&&ku(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,[s]){!a[1].conditioned||a[1].conditioned&&`${a[2]}`.length?i?(i.p(a,s),s&6&&E(i,1)):(i=ku(a),i.c(),E(i,1),i.m(e.parentNode,e)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function Ep(n,e,t){let{monster:i}=e,{item:a}=e,s=a.text&&a.text.length?a.text:ye(i[a.properties[0]]);return!a.conditioned&&!`${s}`.length&&(s=a.fallback??"-"),n.$$set=r=>{"monster"in r&&t(0,i=r.monster),"item"in r&&t(1,a=r.item)},[i,a,s]}var Jr=class extends G{constructor(e){super(),K(this,e,Ep,Dp,V,{monster:0,item:1})}},_u=Jr;var Su=require("obsidian");function Mp(n){se(n,"svelte-q1pj66",`.image.svelte-q1pj66{width:var(--active-image-width);height:var(--active-image-height)}.image.pointer.svelte-q1pj66{cursor:pointer}img.svelte-q1pj66{object-fit:cover;width:100%;height:100%;border-radius:100%;border:var(--active-image-border-size) solid + var(--active-image-border-color);object-position:center}`)}function Ip(n){let e,t,i,a,s,r;return{c(){e=v("div"),t=v("img"),Tc(t.src,i=n[2])||g(t,"src",i),g(t,"alt",a=n[0].name),g(t,"class","svelte-q1pj66"),g(e,"class","image svelte-q1pj66"),re(e,"pointer",n[1]!=null)},m(o,l){D(o,e,l),y(e,t),s||(r=[q(e,"click",n[6]),q(e,"mouseenter",n[7])],s=!0)},p(o,l){l&1&&a!==(a=o[0].name)&&g(t,"alt",a),l&2&&re(e,"pointer",o[1]!=null)},d(o){o&&x(e),s=!1,oe(r)}}}function Op(n){let e,t=n[2]&&Ip(n);return{c(){t&&t.c(),e=_e()},m(i,a){t&&t.m(i,a),D(i,e,a)},p(i,[a]){i[2]&&t.p(i,a)},i:N,o:N,d(i){i&&x(e),t&&t.d(i)}}}function Pp(n,e,t){let{monster:i}=e,{item:a}=e,s=Ue("plugin"),r=Ue("context"),o;function l(b){b=decodeURIComponent(b);let _;try{if(/https?:/.test(b)){let[S]=ut.stringifyLinks(b).split("|");_=S}else{let[S]=ut.stringifyLinks(b).replace(/(^\[\[|\]\]$)/g,"").split("|");if(t(1,o=s.app.metadataCache.getFirstLinkpathDest(S,r)),!o)throw new Error;_=s.app.vault.getResourcePath(o)}}catch{console.warn("No image could be loaded")}return _}let d=(()=>{if(a.properties.length&&a.properties.some(b=>b in i&&typeof i[b]=="string")){let b=a.properties.filter(S=>S in i&&typeof i[S]=="string");b.length>1&&console.log("Fantasy Statblocks: Multiple image properties provided, using first.");let _=i[b[0]];return l(_)}})(),u=Su.Platform.isMacOS?"Meta":"Control";function h(b){if(!o)return;s.app.workspace.getLeaf(b.getModifierState(u)?"window":"split").openFile(o)}function f(b){o&&s.app.workspace.trigger("hover-link",{event:b,source:s.manifest.id,hoverParent:s.app.workspace.getMostRecentLeaf(),targetEl:b.currentTarget,linktext:o.path})}let m=b=>h(b),p=b=>f(b);return n.$$set=b=>{"monster"in b&&t(0,i=b.monster),"item"in b&&t(5,a=b.item)},[i,o,d,h,f,a,m,p]}var Xr=class extends G{constructor(e){super(),K(this,e,Pp,Op,V,{monster:0,item:5},Mp)}},Cu=Xr;function Rp(n){se(n,"svelte-1674zvq",`details.svelte-1674zvq>summary.svelte-1674zvq.svelte-1674zvq.svelte-1674zvq{outline:none;display:block !important;list-style:none !important;list-style-type:none !important;min-height:1rem;border-top-left-radius:0.1rem;border-top-right-radius:0.1rem;cursor:pointer;position:relative;margin-bottom:1rem}details.svelte-1674zvq>summary.svelte-1674zvq.svelte-1674zvq.svelte-1674zvq::-webkit-details-marker,details.svelte-1674zvq>summary.svelte-1674zvq.svelte-1674zvq.svelte-1674zvq::marker{display:none !important}details.svelte-1674zvq>summary.svelte-1674zvq>.collapser.svelte-1674zvq.svelte-1674zvq{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}details.svelte-1674zvq>summary.svelte-1674zvq>.collapser.svelte-1674zvq>.handle.svelte-1674zvq{transform:rotate(0deg);transition:transform 0.25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,");mask-image:url("data:image/svg+xml;charset=utf-8,");width:20px;height:20px}details[open].svelte-1674zvq>summary.svelte-1674zvq>.collapser.svelte-1674zvq>.handle.svelte-1674zvq{transform:rotate(90deg)}`)}function Np(n){let e,t,i=(n[0].heading??"")+"",a,s,r,o,l;return{c(){e=v("details"),t=v("summary"),a=pe(i),s=R(),r=v("div"),r.innerHTML='
',g(r,"class","collapser svelte-1674zvq"),g(t,"class","svelte-1674zvq"),g(e,"class","svelte-1674zvq")},m(c,d){D(c,e,d),y(e,t),y(t,a),y(t,s),y(t,r),n[3](e),e.open=n[0].open,o||(l=q(e,"toggle",n[4]),o=!0)},p(c,[d]){d&1&&i!==(i=(c[0].heading??"")+"")&&we(a,i),d&1&&(e.open=c[0].open)},i:N,o:N,d(c){c&&x(e),n[3](null),o=!1,l()}}}function Bp(n,e,t){let{block:i}=e,{elements:a}=e,s;pn(()=>{for(let l of a)s.append(l)});function r(l){Re[l?"unshift":"push"](()=>{s=l,t(1,s)})}function o(){i.open=this.open,t(0,i)}return n.$$set=l=>{"block"in l&&t(0,i=l.block),"elements"in l&&t(2,a=l.elements)},[i,s,a,r,o]}var Qr=class extends G{constructor(e){super(),K(this,e,Bp,Np,V,{block:0,elements:2},Rp)}},xu=Qr;var u2=require("obsidian");function Lp(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","statblock-javascript")},m(s,r){D(s,e,r),i||(a=J(t=n[1].call(null,e)),i=!0)},p:N,i:N,o:N,d(s){s&&x(e),i=!1,a()}}}function Fp(n,e,t){let i,{block:a}=e,s=Ue("monster");Se(n,s,c=>t(4,i=c));let r=i;s.subscribe(c=>r=c);let o=Ue("plugin"),l=c=>{if(a.code)try{let u=new Function("monster","property",a.code).call(void 0,r,o);u instanceof HTMLElement&&c.appendChild(u)}catch(d){console.error(d)}};return n.$$set=c=>{"block"in c&&t(2,a=c.block)},[s,l,a]}var Zr=class extends G{constructor(e){super(),K(this,e,Fp,Lp,V,{block:2})}},Au=Zr;function Wp(n){se(n,"svelte-420xq",`.statblock-content.svelte-420xq{font-family:var(--active-content-font);font-size:var(--active-content-font-size);color:var(--active-font-color);background-color:var(--active-background-color);padding:0.5em;border:var(--active-border-size) var(--active-border-color) solid;box-shadow:var(--active-box-shadow-x-offset) + var(--active-box-shadow-y-offset) var(--active-box-shadow-blur) + var(--active-box-shadow-color);margin-left:2px;margin-right:2px;display:flex;gap:1rem}.statblock-content.svelte-420xq>.column{width:var(--statblock-column-width)}@media screen and (max-width: 400px){.statblock-content.svelte-420xq>.column{width:75vw}}`)}function Hp(n){let e,t;return{c(){e=v("div"),t=v("div"),g(t,"class","statblock-content svelte-420xq"),g(e,"class","statblock-content-container"),ze(e,"--statblock-column-width",n[0])},m(i,a){D(i,e,a),y(e,t),n[7](t)},p(i,[a]){a&1&&ze(e,"--statblock-column-width",i[0])},i:N,o:N,d(i){i&&x(e),n[7](null)}}}function zp(n,e,t){let i=Me(),{columns:a=1}=e,{targets:s}=e,{columnWidth:r="400px"}=e,{heights:o=[]}=e,{split:l=1/0}=e,{classes:c}=e,d=l,u=m=>{m.empty();let p=[],b=document.body.createDiv({cls:"statblock-detached markdown-preview-view",attr:{style:`width: ${r}`}}),S=b.createDiv({cls:["statblock-detached","obsidian-statblock-plugin","statblock",...c]}).createDiv({cls:"statblock-content-container",attr:{style:`width: ${r}`}}).createDiv("statblock-content"),C=S.createDiv("column");p.push(C);for(let M=0;MA+P,0);p.lengthd&&kd&&(a<=2||p.length>1||k/((a-p.length-1)*C.scrollHeight)<1.5)&&(d=Math.max(d,C.scrollHeight),S.empty(),C=S.createDiv("column"),p.push(C))}for(let M of p)m.appendChild(M),M.querySelectorAll(".statblock-item-container:empty").forEach(w=>w.detach());b.detach()},h;pn(()=>{i("mounted"),h&&(u(h),i("built"))});function f(m){Re[m?"unshift":"push"](()=>{h=m,t(1,h)})}return n.$$set=m=>{"columns"in m&&t(2,a=m.columns),"targets"in m&&t(3,s=m.targets),"columnWidth"in m&&t(0,r=m.columnWidth),"heights"in m&&t(4,o=m.heights),"split"in m&&t(5,l=m.split),"classes"in m&&t(6,c=m.classes)},[r,h,a,s,o,l,c,f]}var eo=class extends G{constructor(e){super(),K(this,e,zp,Hp,V,{columns:2,targets:3,columnWidth:0,heights:4,split:5,classes:6},Wp)}},to=eo;function qp(n){se(n,"svelte-1suaf4g","ul.spell-item.svelte-1suaf4g{margin:0}ul.spell-item.first.svelte-1suaf4g{margin-top:revert}ul.spell-item.last.svelte-1suaf4g{margin-bottom:revert}.spells.svelte-1suaf4g{font-style:italic}")}function jp(n){let e,t,i,a,s,r,o;return i=new gt({props:{property:`${n[0].level}:`}}),r=new gt({props:{property:n[0].spells}}),{c(){e=v("li"),t=v("span"),ie(i.$$.fragment),a=R(),s=v("span"),ie(r.$$.fragment),g(t,"class","spell-level"),g(s,"class","spells svelte-1suaf4g"),g(e,"class","spell-line")},m(l,c){D(l,e,c),y(e,t),te(i,t,null),y(e,a),y(e,s),te(r,s,null),o=!0},p(l,c){let d={};c&1&&(d.property=`${l[0].level}:`),i.$set(d);let u={};c&1&&(u.property=l[0].spells),r.$set(u)},i(l){o||(E(i.$$.fragment,l),E(r.$$.fragment,l),o=!0)},o(l){I(i.$$.fragment,l),I(r.$$.fragment,l),o=!1},d(l){l&&x(e),ne(i),ne(r)}}}function Vp(n){let e,t,i;return t=new gt({props:{property:n[0].spells}}),{c(){e=v("span"),ie(t.$$.fragment),g(e,"class","spell-line")},m(a,s){D(a,e,s),te(t,e,null),i=!0},p(a,s){let r={};s&1&&(r.property=a[0].spells),t.$set(r)},i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function Up(n){let e,t,i,a,s=[Vp,jp],r=[];function o(l,c){return l[0].level?1:0}return t=o(n,-1),i=r[t]=s[t](n),{c(){e=v("ul"),i.c(),g(e,"class","spell-item svelte-1suaf4g"),re(e,"first",n[1]),re(e,"last",n[2])},m(l,c){D(l,e,c),r[t].m(e,null),a=!0},p(l,[c]){let d=t;t=o(l,c),t===d?r[t].p(l,c):(le(),I(r[d],1,1,()=>{r[d]=null}),ce(),i=r[t],i?i.p(l,c):(i=r[t]=s[t](l),i.c()),E(i,1),i.m(e,null)),(!a||c&2)&&re(e,"first",l[1]),(!a||c&4)&&re(e,"last",l[2])},i(l){a||(E(i),a=!0)},o(l){I(i),a=!1},d(l){l&&x(e),r[t].d()}}}function Gp(n,e,t){let{spell:i}=e,{first:a=!1}=e,{last:s=!1}=e;return n.$$set=r=>{"spell"in r&&t(0,i=r.spell),"first"in r&&t(1,a=r.first),"last"in r&&t(2,s=r.last)},[i,a,s]}var no=class extends G{constructor(e){super(),K(this,e,Gp,Up,V,{spell:0,first:1,last:2},qp)}},Tu=no;var na=require("obsidian");function Kp(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","action")},m(s,r){D(s,e,r),i||(a=J(t=n[0].call(null,e)),i=!0)},p:N,i:N,o:N,d(s){s&&x(e),i=!1,a()}}}function $p(n,e,t){let{block:i}=e,{monster:a}=e,s=r=>{new na.ExtraButtonComponent(r).setIcon(i.icon).onClick(()=>{if(i.callback?.trim()?.length)try{new Function("monster",i.callback).call(void 0,a)}catch(o){new na.Notice(`There was an error executing the provided callback for the action block. + +${o.message}`),console.error(o)}else if(i.action)try{app.commands.executeCommandById(i.action)}catch(o){new na.Notice(`There was an error executing the command for the action block. + +${o.message}`),console.error(o)}})};return n.$$set=r=>{"block"in r&&t(1,i=r.block),"monster"in r&&t(2,a=r.monster)},[s,i,a]}var io=class extends G{constructor(e){super(),K(this,e,$p,Kp,V,{block:1,monster:2})}},Du=io;function Eu(n){let e,t;return e=new to({props:{heights:n[7],targets:n[2],columns:n[1],columnWidth:n[3],split:n[5],classes:n[0]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&2&&(s.columns=i[1]),a&8&&(s.columnWidth=i[3]),a&32&&(s.split=i[5]),a&1&&(s.classes=i[0]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Yp(n){let e,t,i=n[4]&&Eu(n);return{c(){i&&i.c(),e=_e()},m(a,s){i&&i.m(a,s),D(a,e,s),t=!0},p(a,[s]){a[4]?i?(i.p(a,s),s&16&&E(i,1)):(i=Eu(a),i.c(),E(i,1),i.m(e.parentNode,e)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function Jp(n,e,t){let i,a,s=Me(),{statblock:r}=e,{ready:o}=e,{classes:l}=e,{layout:c}=e,{columns:d}=e,u=d,h=!1,f=[],{plugin:m}=e,p=Ue("monster");Se(n,p,O=>t(16,a=O));let b=a;p.subscribe(O=>t(14,b=O));let _=O=>/[^a-zA-Z0-9]$/.test(O)?O:`${O}:`,S=O=>O.conditioned==null||!O.conditioned?!0:"nested"in O?O.nested.some(j=>S(j)):O.type=="ifelse"||O.type=="javascript"||O.type=="layout"||!("properties"in O)||!O.properties.length?!0:O.properties.some(j=>!!(j in b&&(Array.isArray(b[j])&&b[j].length||typeof b[j]=="string"&&b[j].length||typeof b[j]=="number"))),C=Tr(),M=(O,j={})=>j.container?j.container.createDiv(`statblock-item-container ${mt(O.type)}-container ${(j.classes??[]).join(" ")}`):createDiv(`statblock-item-container ${mt(O.type)}-container ${(j.classes??[]).join(" ")}`),w=(O,j={})=>{if(!S(O))return[];let{container:Z,classes:ee}=j,ae=[],$=M(O,{container:Z,classes:ee});switch(C.set("item",O),ae.push($),O.type){case"group":{O.heading&&new Ti({target:$,props:{monster:b,item:O},context:C});for(let W of O.nested??[]){let Y=w(W,{container:$,classes:O.cls?[...ee??[],O.cls]:ee??[]});ae.push(...Y)}break}case"action":{new Du({target:$,props:{block:O,monster:b}});break}case"javascript":{new Au({target:$,props:{block:O}});break}case"collapse":{let W=[];for(let Y of O.nested){let F=w(Y);W.push(...F)}new xu({target:$,props:{block:O,elements:W}});break}case"heading":{let W=new au({target:$,props:{monster:b,item:O},context:C});W.$on("save",Y=>s("save",Y.detail)),W.$on("export",Y=>s("export",Y.detail));break}case"ifelse":{for(let W=0;W{if(typeof H=="string"&&(H.charAt(H.length-1)==":"||!H.includes(":"))){let U={header:_(H),spells:[]};return F.push(U),F}let he=F[F.length-1],ue;if(typeof H=="string")ue={spells:ut.linkifySpells(H,C.get("context"))};else try{ue={level:Object.keys(H).shift(),spells:ut.linkifySpells(ye(Object.values(H).shift()),C.get("context"))}}catch{return F}if(he)he.spells.push(ue);else{let U={header:`${b.name} knows the following spells:`,spells:[ue]};F.push(U)}return F},[]);for(let F=0;F0){new ta({target:Y.createDiv("statblock-item-container statblock-trait-prop"),props:{name:W[0].name,desc:W[0].desc,property:O.properties[0],item:O,monster:b,trait:W[0]},context:C});for(let F=1;FW.hasChildNodes())};if(!f.length)for(let O of r){let j=w(O);j?.length&&f.push(...j)}let k="400px";b.columnWidth?(typeof b.columnWidth=="number"&&(k=`${b.columnWidth}px`),typeof b.columnWidth=="string"&&(k=b.columnWidth)):c.columnWidth&&(k=`${c.columnWidth}px`);let A=!1,P=[],B,L=()=>{let O=document.body.createDiv({cls:"statblock-detached markdown-preview-view",attr:{style:`width: ${k}`}});new to({target:O.createDiv({cls:["obsidian-statblock-plugin","statblock",...l]}),props:{heights:P,targets:f,columns:1,columnWidth:k,classes:l}}).$on("built",()=>{let Z=O.querySelector(".column");for(let ee of f)P.push(ee.scrollHeight);b.forceColumns?t(5,B=Z.scrollHeight/u):b.columns&&b.columns>0?t(5,B=Math.max(Z.scrollHeight/b.columns,Z.scrollHeight/d)):t(5,B=Math.max(600,Math.min(Z.scrollHeight/d,i))),O.empty(),O.detach(),t(4,A=!0)})};return n.$$set=O=>{"statblock"in O&&t(8,r=O.statblock),"ready"in O&&t(9,o=O.ready),"classes"in O&&t(0,l=O.classes),"layout"in O&&t(10,c=O.layout),"columns"in O&&t(1,d=O.columns),"plugin"in O&&t(13,m=O.plugin)},n.$$.update=()=>{n.$$.dirty&16384&&(i=!isNaN(Number(b.columnHeight))&&b.columnHeight>0?b.columnHeight:1/0),n.$$.dirty&512&&o&&L()},[l,d,f,k,A,B,p,P,r,o,c,u,h,m,b]}var ao=class extends G{constructor(e){super(),K(this,e,Jp,Yp,V,{statblock:8,ready:9,classes:0,layout:10,columns:1,maxColumns:11,detached:12,targets:2,plugin:13})}get maxColumns(){return this.$$.ctx[11]}get detached(){return this.$$.ctx[12]}get targets(){return this.$$.ctx[2]}},Mu=ao;function Xp(n){se(n,"svelte-1unaafm",`.statblock.svelte-1unaafm{--active-primary-color:var(--statblock-primary-color);--active-rule-color:var(--statblock-rule-color);--active-background-color:var(--statblock-background-color);--active-bar-color:var(--statblock-bar-color);--active-bar-border-size:var(--statblock-bar-border-size);--active-bar-border-color:var(--statblock-bar-border-color);--active-image-width:var(--statblock-image-width);--active-image-height:var(--statblock-image-height);--active-image-border-size:var(--statblock-image-border-size);--active-image-border-color:var( + --statblock-image-border-color, + --active-primary-color + );--active-border-size:var(--statblock-border-size);--active-border-color:var(--statblock-border-color);--active-box-shadow-color:var(--statblock-box-shadow-color);--active-box-shadow-x-offset:var(--statblock-box-shadow-x-offset);--active-box-shadow-y-offset:var(--statblock-box-shadow-y-offset);--active-box-shadow-blur:var(--statblock-box-shadow-blur);--active-font-color:var( + --statblock-font-color, + --active-primary-color + );--active-font-weight:var(--statblock-font-weight);--active-content-font:var(--statblock-content-font);--active-content-font-size:var(--statblock-content-font-size);--active-heading-font:var(--statblock-heading-font);--active-heading-font-color:var(--statblock-heading-font-color);--active-heading-font-size:var(--statblock-heading-font-size);--active-heading-font-variant:var(--statblock-heading-font-variant);--active-heading-font-weight:var(--statblock-heading-font-weight);--active-heading-line-height:var(--statblock-heading-line-height);--active-property-line-height:var(--statblock-property-line-height);--active-property-font:var(--statblock-property-font);--active-property-font-color:var(--statblock-property-font-color);--active-property-font-variant:var(--statblock-property-font-variant);--active-property-font-size:var(--statblock-property-font-size);--active-property-font-weight:var(--statblock-property-font-weight);--active-property-name-font:var(--statblock-property-name-font);--active-property-name-font-color:var( + --statblock-property-name-font-color + );--active-property-name-font-variant:var( + --statblock-property-name-font-variant + );--active-property-name-font-size:var( + --statblock-property-name-font-size + );--active-property-name-font-weight:var( + --statblock-property-name-font-weight + );--active-section-heading-border-size:var( + --statblock-section-heading-border-size + );--active-section-heading-border-color:var( + --statblock-section-heading-border-color + );--active-section-heading-font:var(--statblock-section-heading-font);--active-section-heading-font-color:var( + --statblock-section-heading-font-color + );--active-section-heading-font-size:var( + --statblock-section-heading-font-size + );--active-section-heading-font-variant:var( + --statblock-section-heading-font-variant + );--active-section-heading-font-weight:var( + --statblock-section-heading-font-weight + );--active-saves-line-height:var(--statblock-saves-line-height);--active-spells-font-style:var(--statblock-spells-font-style);--active-subheading-font:var(--statblock-subheading-font);--active-subheading-font-color:var(--statblock-subheading-font-color);--active-subheading-font-size:var(--statblock-subheading-font-size);--active-subheading-font-style:var(--statblock-subheading-font-style);--active-subheading-font-weight:var( + --statblock-subheading-font-weight + );--active-table-header-font-weight:var( + --statblock-table-header-font-weight + );--active-traits-font:var(--statblock-traits-font);--active-traits-font-color:var(--statblock-traits-font-color);--active-traits-font-size:var(--statblock-traits-font-size);--active-traits-font-weight:var(--statblock-traits-font-weight);--active-traits-font-style:var(--statblock-traits-font-style);--active-traits-name-font:var(--statblock-traits-name-font);--active-traits-name-font-color:var( + --statblock-traits-name-font-color + );--active-traits-name-font-size:var(--statblock-traits-name-font-size);--active-traits-name-font-weight:var( + --statblock-traits-name-font-weight + );--active-traits-name-font-style:var( + --statblock-traits-name-font-style + );--active-link-style:var(--statblock-link-style)}.statblock.svelte-1unaafm a{font-style:var(--statblock-link-style)}.container.svelte-1unaafm{display:flex;position:relative;width:100%;margin:0.25rem 0}.statblock.svelte-1unaafm{margin:0 auto;position:relative}.icons.svelte-1unaafm{position:absolute;left:var(--size-2-2)}`)}function Iu(n){let e,t=n[8],i,a,s,r,o=Pu(n),l=n[3]&&Ru(n);return{c(){e=v("div"),o.c(),a=R(),l&&l.c(),s=_e(),g(e,"class",i=xn(n[5].join(" "))+" svelte-1unaafm"),re(e,"obsidian-statblock-plugin",!0),re(e,"statblock",!0)},m(c,d){D(c,e,d),o.m(e,null),D(c,a,d),l&&l.m(c,d),D(c,s,d),r=!0},p(c,d){d[0]&256&&V(t,t=c[8])?(le(),I(o,1,1,N),ce(),o=Pu(c),o.c(),E(o,1),o.m(e,null)):o.p(c,d),(!r||d[0]&32&&i!==(i=xn(c[5].join(" "))+" svelte-1unaafm"))&&g(e,"class",i),(!r||d[0]&32)&&re(e,"obsidian-statblock-plugin",!0),(!r||d[0]&32)&&re(e,"statblock",!0),c[3]?l?l.p(c,d):(l=Ru(c),l.c(),l.m(s.parentNode,s)):l&&(l.d(1),l=null)},i(c){r||(E(o),r=!0)},o(c){I(o),r=!1},d(c){c&&(x(e),x(a),x(s)),o.d(c),l&&l.d(c)}}}function Qp(n){let e;return{c(){e=v("span"),e.textContent="Invalid monster."},m(t,i){D(t,e,i)},p:N,i:N,o:N,d(t){t&&x(e)}}}function Zp(n){let e,t,i=n[7],a,s,r;e=new Br({});let o=Ou(n);return s=new Br({}),{c(){ie(e.$$.fragment),t=R(),o.c(),a=R(),ie(s.$$.fragment)},m(l,c){te(e,l,c),D(l,t,c),o.m(l,c),D(l,a,c),te(s,l,c),r=!0},p(l,c){c[0]&128&&V(i,i=l[7])?(le(),I(o,1,1,N),ce(),o=Ou(l),o.c(),E(o,1),o.m(a.parentNode,a)):o.p(l,c)},i(l){r||(E(e.$$.fragment,l),E(o),E(s.$$.fragment,l),r=!0)},o(l){I(e.$$.fragment,l),I(o),I(s.$$.fragment,l),r=!1},d(l){l&&(x(t),x(a)),ne(e,l),o.d(l),ne(s,l)}}}function Ou(n){let e,t;return e=new Mu({props:{columns:n[7],maxColumns:n[10],statblock:n[1],ready:n[6],classes:n[5],layout:n[2],plugin:n[0]}}),e.$on("save",n[19]),e.$on("export",n[20]),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a[0]&128&&(s.columns=i[7]),a[0]&2&&(s.statblock=i[1]),a[0]&64&&(s.ready=i[6]),a[0]&32&&(s.classes=i[5]),a[0]&4&&(s.layout=i[2]),a[0]&1&&(s.plugin=i[0]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Pu(n){let e,t,i,a,s=[Zp,Qp],r=[];function o(l,c){return l[8]?0:1}return e=o(n,[-1,-1]),t=r[e]=s[e](n),{c(){t.c(),i=_e()},m(l,c){r[e].m(l,c),D(l,i,c),a=!0},p(l,c){let d=e;e=o(l,c),e===d?r[e].p(l,c):(le(),I(r[d],1,1,()=>{r[d]=null}),ce(),t=r[e],t?t.p(l,c):(t=r[e]=s[e](l),t.c()),E(t,1),t.m(i.parentNode,i))},i(l){a||(E(t),a=!0)},o(l){I(t),a=!1},d(l){l&&x(i),r[e].d(l)}}}function Ru(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","icons svelte-1unaafm")},m(s,r){D(s,e,r),i||(a=[J(t=n[11].call(null,e)),q(e,"click",n[12])],i=!0)},p:N,d(s){s&&x(e),i=!1,oe(a)}}}function eb(n){let e,t,i=n[6]&&Iu(n);return{c(){e=v("div"),i&&i.c(),g(e,"class","container svelte-1unaafm")},m(a,s){D(a,e,s),i&&i.m(e,null),n[21](e),t=!0},p(a,s){a[6]?i?(i.p(a,s),s[0]&64&&E(i,1)):(i=Iu(a),i.c(),E(i,1),i.m(e,null)):i&&(le(),I(i,1,1,()=>{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(),n[21](null)}}}function tb(n,e,t){let i,a,s,r,o,l,c=Me(),{monster:d}=e,{context:u}=e,{plugin:h}=e,{statblock:f}=e,{renderer:m}=e,{layout:p}=e,{canSave:b=!0}=e,{icons:_=!0}=e,S=Le(d);Se(n,S,H=>t(8,l=H));let C=!isNaN(Number(d.columns??p.columns))&&Number(d.columns??p.columns)>0?Number(d.columns??p.columns):2,M=Number(`${d.columnWidth}`.replace(/\D/g,"")),w=!isNaN(M??p.columnWidth)&&(M??p.columnWidth)>0?M:400,k=h.canUseDiceRoller&&(d.dice??h.settings.useDice),A=d.render??h.settings.renderDice;Mt("plugin",h),Mt("tryToRenderLinks",h.settings.tryToRenderLinks),Mt("context",u),Mt("monster",S),Mt("dice",k),Mt("render",A),Mt("renderer",m),Mt("layout",p);let P=Le(!1);Mt("reset",P);let B,L=()=>{if(d.forceColumns??p.forceColumns){t(7,i=C),j.disconnect();return}let H=B.clientWidth;t(7,i=Math.min(Math.max(Math.floor(H/w),1),C))},O=(0,$t.debounce)(()=>{L(),a||t(6,a=!0)},100,!1),j=new ResizeObserver(O);pn(()=>{O(),j.observe(B)}),bn(()=>{j.disconnect()});let Z=H=>{new $t.ExtraButtonComponent(H).setIcon("vertical-three-dots")},ee=new $t.Menu;ee.addItem(H=>H.setIcon("save").setTitle("Save to Bestiary").setDisabled(!b).onClick(()=>c("save"))),ee.addItem(H=>{H.setTitle("Copy YAML").setIcon("code").onClick(async()=>{try{await navigator.clipboard.writeText((0,$t.stringifyYaml)(d)),new $t.Notice("Creature YAML copied to clipboard")}catch(he){new $t.Notice(`There was an issue copying the yaml: + +${he.message}`)}})}),ee.addItem(H=>H.setIcon("image-down").setTitle("Export as PNG").onClick(()=>c("export"))),k&&ee.addItem(H=>H.setIcon("reset").setTitle("Reset Dice").onClick(()=>{P.set(!0),P.set(!1)}));let ae=H=>{ee.showAtMouseEvent(H)},$=H=>{let he=[];for(let ue of H){if(ue.type=="layout"){let U=h.manager.getAllLayouts().find(z=>z.id==ue.layout);U&&he.push(ki(U.name))}"nested"in ue&&he.push(...$(ue.nested))}return he};function W(H){Ge.call(this,n,H)}function Y(H){Ge.call(this,n,H)}function F(H){Re[H?"unshift":"push"](()=>{B=H,t(4,B)})}return n.$$set=H=>{"monster"in H&&t(13,d=H.monster),"context"in H&&t(14,u=H.context),"plugin"in H&&t(0,h=H.plugin),"statblock"in H&&t(1,f=H.statblock),"renderer"in H&&t(15,m=H.renderer),"layout"in H&&t(2,p=H.layout),"canSave"in H&&t(16,b=H.canSave),"icons"in H&&t(3,_=H.icons)},n.$$.update=()=>{n.$$.dirty[0]&8192&&Ae(S,l=d,l),n.$$.dirty[0]&8192&&t(18,s=ki(d.name??"","no-name")),n.$$.dirty[0]&4&&t(17,r=ki(p.name,"no-layout")),n.$$.dirty[0]&393218&&t(5,o=[s,r,...$(f)].filter(H=>H?.length))},t(7,i=C),t(6,a=!1),[h,f,p,_,B,o,a,i,l,S,C,Z,ae,d,u,m,b,r,s,W,Y,F]}var so=class extends G{constructor(e){super(),K(this,e,tb,eb,V,{monster:13,context:14,plugin:0,statblock:1,renderer:15,layout:2,canSave:16,icons:3},Xp,[-1,-1])}},Nu=so;var wt=require("obsidian");function ia(n){let e=new Blob([n],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t,{name:"Fantasy Statblocks Creature Parser"});return URL.revokeObjectURL(t),i}function ro(){return ia('var Bl=Object.defineProperty,uc=Object.defineProperties;var dc=Object.getOwnPropertyDescriptors;var Ll=Object.getOwnPropertySymbols;var pc=Object.prototype.hasOwnProperty,mc=Object.prototype.propertyIsEnumerable;var ur=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),gc=s=>{throw TypeError(s)};var Pl=(s,e,t)=>e in s?Bl(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Il=(s,e)=>{for(var t in e||(e={}))pc.call(e,t)&&Pl(s,t,e[t]);if(Ll)for(var t of Ll(e))mc.call(e,t)&&Pl(s,t,e[t]);return s},Rl=(s,e)=>uc(s,dc(e));var Fl=(s,e)=>{for(var t in e)Bl(s,t,{get:e[t],enumerable:!0})};var yc=function(s,e){this[0]=s,this[1]=e};var k=s=>{var e=s[ur("asyncIterator")],t=!1,i,n={};return e==null?(e=s[ur("iterator")](),i=r=>n[r]=o=>e[r](o)):(e=e.call(s),i=r=>n[r]=o=>{if(t){if(t=!1,r==="throw")throw o;return o}return t=!0,{done:!1,value:new yc(new Promise(l=>{var a=e[r](o);a instanceof Object||gc("Object expected"),l(a)}),1)}}),n[ur("iterator")]=()=>n,i("next"),"throw"in e?i("throw"):n.throw=r=>{throw r},"return"in e&&i("return"),n};var bc=Function.prototype.toString,dr=Object.create,wc=Object.prototype.toString,kc=function(){function s(){this._keys=[],this._values=[]}return s.prototype.has=function(e){return!!~this._keys.indexOf(e)},s.prototype.get=function(e){return this._values[this._keys.indexOf(e)]},s.prototype.set=function(e,t){this._keys.push(e),this._values.push(t)},s}();function Sc(){return new kc}function vc(){return new WeakMap}var xc=typeof WeakMap!="undefined"?vc:Sc;function mr(s){if(!s)return dr(null);var e=s.constructor;if(e===Object)return s===Object.prototype?{}:dr(s);if(e&&~bc.call(e).indexOf("[native code]"))try{return new e}catch(t){}return dr(s)}function Cc(s){var e="";return s.global&&(e+="g"),s.ignoreCase&&(e+="i"),s.multiline&&(e+="m"),s.unicode&&(e+="u"),s.sticky&&(e+="y"),e}function Ac(s){return s.flags}var Mc=/test/g.flags==="g"?Ac:Cc;function $l(s){var e=wc.call(s);return e.substring(8,e.length-1)}function Oc(s){return s[Symbol.toStringTag]||$l(s)}var Tc=typeof Symbol!="undefined"?Oc:$l,Ec=Object.defineProperty,Nc=Object.getOwnPropertyDescriptor,Vl=Object.getOwnPropertyNames,gr=Object.getOwnPropertySymbols,Hl=Object.prototype,_l=Hl.hasOwnProperty,Dc=Hl.propertyIsEnumerable,Kl=typeof gr=="function";function Lc(s){return Vl(s).concat(gr(s))}var Pc=Kl?Lc:Vl;function Ps(s,e,t){for(var i=Pc(s),n=0,r=i.length,o=void 0,l=void 0;nthis.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=ai(this,e,t);let n=[];return this.decompose(0,e,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(t,this.length,n,1),ni.from(n,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=ai(this,e,t);let i=[];return this.decompose(e,t,i,0),ni.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),n=new $t(this),r=new $t(e);for(let o=t,l=t;;){if(n.next(o),r.next(o),o=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(l+=n.value.length,n.done||l>=i)return!0}}iter(e=1){return new $t(this,e)}iterRange(e,t=this.length){return new $s(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let n=this.line(e).from;i=this.iterRange(n,Math.max(n,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Vs(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?s.empty:e.length<=32?new ge(e):ni.from(ge.split(e,[]))}},ge=class s extends K{constructor(e,t=Xc(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,n){for(let r=0;;r++){let o=this.text[r],l=n+o.length;if((t?i:l)>=e)return new kr(n,l,i,o);n=l+1,i++}}decompose(e,t,i,n){let r=e<=0&&t>=this.length?this:new s(Yl(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(n&1){let o=i.pop(),l=Rs(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new s(l,o.length+r.length));else{let a=l.length>>1;i.push(new s(l.slice(0,a)),new s(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof s))return super.replace(e,t,i);[e,t]=ai(this,e,t);let n=Rs(this.text,Rs(i.text,Yl(this.text,0,e)),t),r=this.length+i.length-(t-e);return n.length<=32?new s(n,r):ni.from(s.split(n,[]),r)}sliceString(e,t=this.length,i=`\n`){[e,t]=ai(this,e,t);let n="";for(let r=0,o=0;r<=t&&oe&&o&&(n+=i),er&&(n+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return n}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],n=-1;for(let r of e)i.push(r),n+=r.length+1,i.length==32&&(t.push(new s(i,n)),i=[],n=-1);return n>-1&&t.push(new s(i,n)),t}},ni=class s extends K{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,n){for(let r=0;;r++){let o=this.children[r],l=n+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,n);n=l+1,i=a+1}}decompose(e,t,i,n){for(let r=0,o=0;o<=t&&r=o){let h=n&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=ai(this,e,t),i.lines=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[n]=a,new s(f,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=`\n`){[e,t]=ai(this,e,t);let n="";for(let r=0,o=0;re&&r&&(n+=i),eo&&(n+=l.sliceString(e-o,t-o,i)),o=a+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof s))return 0;let i=0,[n,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,r+=t){if(n==o||r==l)return i;let a=this.children[n],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,n)=>i+n.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new ge(d,t)}let n=Math.max(32,i>>5),r=n<<1,o=n>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof s)for(let m of d.children)c(m);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ge&&a&&(p=f[f.length-1])instanceof ge&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ge(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>n&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:s.from(f,h)),h=-1,a=f.length=0)}for(let d of e)c(d);return u(),l.length==1?l[0]:new s(l,t)}};K.empty=new ge([""],0);function Xc(s){let e=-1;for(let t of s)e+=t.length+1;return e}function Rs(s,e,t=0,i=1e9){for(let n=0,r=0,o=!0;r=t&&(a>i&&(l=l.slice(0,i-n)),n0?1:(e instanceof ge?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,n=this.nodes[i],r=this.offsets[i],o=r>>1,l=n instanceof ge?n.text.length:n.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=`\n`,this;e--}else if(n instanceof ge){let a=n.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=n.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ge?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},$s=class{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new $t(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=i?n:t<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Vs=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(K.prototype[Symbol.iterator]=function(){return this.iter()},$t.prototype[Symbol.iterator]=$s.prototype[Symbol.iterator]=Vs.prototype[Symbol.iterator]=function(){return this});var kr=class{constructor(e,t,i,n){this.from=e,this.to=t,this.number=i,this.text=n}get length(){return this.to-this.from}};function ai(s,e,t){return e=Math.max(0,Math.min(s.length,e)),[e,Math.max(e,Math.min(s.length,t))]}var ri="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(s=>s?parseInt(s,36):1);for(let s=1;ss)return ri[e-1]<=s;return!1}function Gl(s){return s>=127462&&s<=127487}var Jl=8205;function Ke(s,e,t=!0,i=!0){return(t?ia:Zc)(s,e,i)}function ia(s,e,t){if(e==s.length)return e;e&&sa(s.charCodeAt(e))&&na(s.charCodeAt(e-1))&&e--;let i=Fs(s,e);for(e+=Sr(i);e=0&&Gl(Fs(s,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Zc(s,e,t){for(;e>0;){let i=ia(s,e-2,t);if(i=56320&&s<57344}function na(s){return s>=55296&&s<56320}function Fs(s,e){let t=s.charCodeAt(e);if(!na(t)||e+1==s.length)return t;let i=s.charCodeAt(e+1);return sa(i)?(t-55296<<10)+(i-56320)+65536:t}function Sr(s){return s<65536?1:2}var vr=/\\r\\n?|\\n/,ue=function(s){return s[s.Simple=0]="Simple",s[s.TrackDel=1]="TrackDel",s[s.TrackBefore=2]="TrackBefore",s[s.TrackAfter=3]="TrackAfter",s}(ue||(ue={})),Vt=class s{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-n);r+=l}else{if(i!=ue.Simple&&h>=e&&(i==ue.TrackDel&&ne||i==ue.TrackBefore&&ne))return null;if(h>e||h==e&&t<0&&!l)return e==n||t<0?r:r+a;r+=a}n=h}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return r}touchesRange(e,t=e){for(let i=0,n=0;i=0&&n<=t&&l>=e)return nt?"cover":!0;n=l}return!1}toString(){let e="";for(let t=0;t=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new s(e)}static create(e){return new s(e)}},ye=class s extends Vt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return xr(this,(t,i,n,r,o)=>e=e.replace(n,n+(i-t),o),!1),e}mapDesc(e,t=!1){return Cr(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let n=0,r=0;n=0){t[n]=l,t[n+1]=o;let a=n>>1;for(;i.length0&&yt(i,t,r.text),r.forward(f),l+=f}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let n=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!n.length)return;ou||c<0||u>t)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${t})`);let p=d?typeof d=="string"?K.of(d.split(i||vr)):d:K.empty,m=p.length;if(c==u&&m==0)return;co&&le(n,c-o,-1),le(n,u-c,m),yt(r,n,p),o=u}}return h(e),a(!l),l}static empty(e){return new s(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let n=0;nl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length=0&&t<=0&&t==s[n+1]?s[n]+=e:e==0&&s[n]==0?s[n+1]+=t:i?(s[n]+=e,s[n+1]+=t):s.push(e,t)}function yt(s,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==s.sections.length||s.sections[o+1]<0);)l=s.sections[o++],a=s.sections[o++];e(n,h,r,f,c),n=h,r=f}}}function Cr(s,e,t,i=!1){let n=[],r=i?[]:null,o=new Ht(s),l=new Ht(e);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);le(n,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var Ht=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?K.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?K.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},si=class s{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,n;return this.empty?i=n=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),n=e.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new s(i,n,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return P.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return P.range(this.anchor,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return P.range(e.anchor,e.head)}static create(e,t,i){return new s(e,t,i)}},P=class s{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:s.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new s(e.ranges.map(t=>si.fromJSON(t)),e.main)}static single(e,t=e){return new s([s.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;ne?8:0)|r)}static normalized(e,t=0){let i=e[t];e.sort((n,r)=>n.from-r.from),t=e.indexOf(i);for(let n=1;nr.head?s.range(a,l):s.range(l,a))}}return new s(e,t)}};function oa(s,e){for(let t of s.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var Br=0,R=class s{constructor(e,t,i,n,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=n,this.id=Br++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new s(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:Ir),!!e.static,e.enables)}of(e){return new oi([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can\'t compute a static facet");return new oi(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can\'t compute a static facet");return new oi(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}};function Ir(s,e){return s==e||s.length==e.length&&s.every((t,i)=>t===e[i])}var oi=class{constructor(e,t,i,n){this.dependencies=e,this.facet=t,this.type=i,this.value=n,this.id=Br++}dynamicSlot(e){var t;let i=this.value,n=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:((t=e[c.id])!==null&&t!==void 0?t:1)&1||f.push(e[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Ar(c,f)){let d=i(c);if(l?!Xl(d,c.values[o],n):!n(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let m=Ws(u,p);if(this.dependencies.every(g=>g instanceof R?u.facet(g)===c.facet(g):g instanceof at?u.field(g,!1)==c.field(g,!1):!0)||(l?Xl(d=i(c),m,n):n(d=i(c),m)))return c.values[o]=m,0}else d=i(c);return c.values[o]=d,1}}}};function Xl(s,e,t){if(s.length!=e.length)return!1;for(let i=0;is[a.id]),n=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=s[e.id]>>1;function l(a){let h=[];for(let f=0;fi===n),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Ql).find(i=>i.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,n)=>{let r=i.values[t],o=this.updateF(r,n);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,n)=>n.config.address[this.id]!=null?(i.values[t]=n.field(this),0):(i.values[t]=this.create(i),1)}}init(e){return[this,Ql.of({field:this,create:e})]}get extension(){return this}},Rt={lowest:4,low:3,default:2,high:1,highest:0};function Ri(s){return e=>new Hs(e,s)}var js={highest:Ri(Rt.highest),high:Ri(Rt.high),default:Ri(Rt.default),low:Ri(Rt.low),lowest:Ri(Rt.lowest)},Hs=class{constructor(e,t){this.inner=e,this.prec=t}},_s=class s{of(e){return new $i(this,e)}reconfigure(e){return s.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},$i=class{constructor(e,t){this.compartment=e,this.inner=t}},Ks=class s{constructor(e,t,i,n,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=n,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let n=[],r=Object.create(null),o=new Map;for(let u of tu(e,t,o))u instanceof at?n.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of n)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i==null?void 0:i.config.facets;for(let u in r){let d=r[u],p=d[0].facet,m=f&&f[u]||[];if(d.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,Ir(m,d))a.push(i.facet(p));else{let g=p.combine(d.map(y=>y.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(y=>g.dynamicSlot(y)));l[p.id]=h.length<<1,h.push(g=>eu(g,p,d))}}let c=h.map(u=>u(l));return new s(e,o,c,l,a,r)}};function tu(s,e,t){let i=[[],[],[],[],[]],n=new Map;function r(o,l){let a=n.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof $i&&t.delete(o.compartment)}if(n.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof $i){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Hs)r(o.inner,o.prec);else if(o instanceof at)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof oi)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,Rt.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(s,Rt.default),i.reduce((o,l)=>o.concat(l))}function Fi(s,e){if(e&1)return 2;let t=e>>1,i=s.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;s.status[t]=4;let n=s.computeSlot(s,s.config.dynamicSlots[t]);return s.status[t]=2|n}function Ws(s,e){return e&1?s.config.staticValues[e>>1]:s.values[e>>1]}var la=R.define(),Mr=R.define({combine:s=>s.some(e=>e),static:!0}),aa=R.define({combine:s=>s.length?s[0]:void 0,static:!0}),ha=R.define(),fa=R.define(),ca=R.define(),ua=R.define({combine:s=>s.length?s[0]:!1}),ht=class{constructor(e,t){this.type=e,this.value=t}static define(){return new Or}},Or=class{of(e){return new ht(this,e)}},Tr=class{constructor(e){this.map=e}of(e){return new J(this,e)}},J=class s{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new s(this.type,t)}is(e){return this.type==e}static define(e={}){return new Tr(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let n of e){let r=n.map(t);r&&i.push(r)}return i}};J.reconfigure=J.define();J.appendConfig=J.define();var de=class s{constructor(e,t,i,n,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=n,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&oa(i,t.newLength),r.some(l=>l.type==s.time)||(this.annotations=r.concat(s.time.of(Date.now())))}static create(e,t,i,n,r,o){return new s(e,t,i,n,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(s.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};de.time=ht.define();de.userEvent=ht.define();de.addToHistory=ht.define();de.remote=ht.define();function iu(s,e){let t=[];for(let i=0,n=0;;){let r,o;if(i=s[i]))r=s[i++],o=s[i++];else if(n=0;n--){let r=i[n](s);r instanceof de?s=r:Array.isArray(r)&&r.length==1&&r[0]instanceof de?s=r[0]:s=pa(e,li(r),!1)}return s}function nu(s){let e=s.startState,t=e.facet(ca),i=s;for(let n=t.length-1;n>=0;n--){let r=t[n](s);r&&Object.keys(r).length&&(i=da(i,Er(e,r,s.changes.newLength),!0))}return i==s?s:de.create(e,s.changes,s.selection,i.effects,i.annotations,i.scrollIntoView)}var ru=[];function li(s){return s==null?ru:Array.isArray(s)?s:[s]}var _e=function(s){return s[s.Word=0]="Word",s[s.Space=1]="Space",s[s.Other=2]="Other",s}(_e||(_e={})),ou=/[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/,Nr;try{Nr=new RegExp("[\\\\p{Alphabetic}\\\\p{Number}_]","u")}catch(s){}function lu(s){if(Nr)return Nr.test(s);for(let e=0;e"\\x80"&&(t.toUpperCase()!=t.toLowerCase()||ou.test(t)))return!0}return!1}function au(s){return e=>{if(!/\\S/.test(e))return _e.Space;if(lu(e))return _e.Word;for(let t=0;t-1)return _e.Word;return _e.Other}}var X=class s{constructor(e,t,i,n,r,o){this.config=e,this.doc=t,this.selection=i,this.values=n,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ln.set(h,a)),t=null),n.set(l.value.compartment,l.value.extension)):l.is(J.reconfigure)?(t=null,i=l.value):l.is(J.appendConfig)&&(t=null,i=li(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=Ks.resolve(i,n,this),r=new s(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Mr)?e.newSelection:e.newSelection.asSingle();new s(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:P.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),n=this.changes(i.changes),r=[i.range],o=li(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return s.create({doc:e.doc,selection:P.fromJSON(e.selection),extensions:t.extensions?n.concat([t.extensions]):n})}static create(e={}){let t=Ks.resolve(e.extensions||[],new Map),i=e.doc instanceof K?e.doc:K.of((e.doc||"").split(t.staticFacet(s.lineSeparator)||vr)),n=e.selection?e.selection instanceof P?e.selection:P.single(e.selection.anchor,e.selection.head):P.single(0);return oa(n,i.length),t.staticFacet(Mr)||(n=n.asSingle()),new s(t,i,n,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(s.tabSize)}get lineBreak(){return this.facet(s.lineSeparator)||`\n`}get readOnly(){return this.facet(ua)}phrase(e,...t){for(let i of this.facet(s.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\\$(\\$|\\d*)/g,(i,n)=>{if(n=="$")return"$";let r=+(n||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let n=[];for(let r of this.facet(la))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){return au(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:i,length:n}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=Ke(t,o,!1);if(r(t.slice(a,o))!=_e.Word)break;o=a}for(;ls.length?s[0]:4});X.lineSeparator=aa;X.readOnly=ua;X.phrases=R.define({compare(s,e){let t=Object.keys(s),i=Object.keys(e);return t.length==i.length&&t.every(n=>s[n]==e[n])}});X.languageData=la;X.changeFilter=ha;X.transactionFilter=fa;X.transactionExtender=ca;_s.reconfigure=J.define();var ft=class{eq(e){return this==e}range(e,t=e){return Vi.create(e,t,this)}};ft.prototype.startSide=ft.prototype.endSide=0;ft.prototype.point=!1;ft.prototype.mapMode=ue.TrackDel;var Vi=class s{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new s(e,t,i)}};function Dr(s,e){return s.from-e.from||s.value.startSide-e.value.startSide}var Lr=class s{constructor(e,t,i,n){this.from=e,this.to=t,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,n=0){let r=i?this.to:this.from;for(let o=n,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,n){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),n.push(u-o),r.push(d-o))}return{mapped:i.length?new s(n,r,i,l):null,pos:o}}},Z=class s{constructor(e,t,i,n){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=n}static create(e,t,i,n){return new s(e,t,i,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:n=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(Dr)),this.isEmpty)return t.length?s.of(t):this;let l=new qs(this,null,-1).goto(0),a=0,h=[],f=new _t;for(;l.value||a=0){let c=t[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return Hi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Hi.from(e).goto(t)}static compare(e,t,i,n,r=-1){let o=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=Zl(o,l,i),h=new Ft(o,a,r),f=new Ft(l,a,r);i.iterGaps((c,u,d)=>ea(h,c,f,u,d,n)),i.empty&&i.length==0&&ea(h,0,f,0,0,n)}static eq(e,t,i=0,n){n==null&&(n=999999999);let r=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),o=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=Zl(r,o),a=new Ft(r,l,0).goto(i),h=new Ft(o,l,0).goto(i);for(;;){if(a.to!=h.to||!Pr(a.active,h.active)||a.point&&(!h.point||!a.point.eq(h.point)))return!1;if(a.to>n)return!0;a.next(),h.next()}}static spans(e,t,i,n,r=-1){let o=new Ft(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(n.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new _t;for(let n of e instanceof Vi?[e]:t?hu(e):e)i.add(n.from,n.to,n.value);return i.finish()}static join(e){if(!e.length)return s.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let n=e[i];n!=s.empty;n=n.nextLayer)t=new s(n.chunkPos,n.chunk,t,Math.max(n.maxPoint,t.maxPoint));return t}};Z.empty=new Z([],[],null,-1);function hu(s){if(s.length>1)for(let e=s[0],t=1;t0)return s.slice().sort(Dr);e=i}return s}Z.empty.nextLayer=Z.empty;var _t=class s{finishChunk(e){this.chunks.push(new Lr(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new s)).add(e,t,i)}addInner(e,t,i){let n=e-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return n<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(Z.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=Z.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Zl(s,e,t){let i=new Map;for(let r of s)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&n.push(new qs(o,t,i,r));return n.length==1?n[0]:new s(n)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)wr(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)wr(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),wr(this.heap,0)}}};function wr(s,e){for(let t=s[e];;){let i=(e<<1)+1;if(i>=s.length)break;let n=s[i];if(i+1=0&&(n=s[i+1],i++),t.compare(n)<0)break;s[i]=t,s[e]=n,e=i}}var Ft=class{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Hi.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Bs(this.active,e),Bs(this.activeTo,e),Bs(this.activeRank,e),this.minActive=ta(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:n,rank:r}=this.cursor;for(;t0;)t++;Is(this.active,t,i),Is(this.activeTo,t,n),Is(this.activeRank,t,r),e&&Is(e,t,this.cursor.from),this.minActive=ta(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let n=this.minActive;if(n>-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>e){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Bs(i,n)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&i[n]=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}};function ea(s,e,t,i,n,r){s.goto(e),t.goto(i);let o=i+n,l=i,a=i-e;for(;;){let h=s.to+a-t.to||s.endSide-t.endSide,f=h<0?s.to+a:t.to,c=Math.min(f,o);if(s.point||t.point?s.point&&t.point&&(s.point==t.point||s.point.eq(t.point))&&Pr(s.activeForPoint(s.to),t.activeForPoint(t.to))||r.comparePoint(l,c,s.point,t.point):c>l&&!Pr(s.active,t.active)&&r.compareRange(l,c,s.active,t.active),f>o)break;l=f,h<=0&&s.next(),h>=0&&t.next()}}function Pr(s,e){if(s.length!=e.length)return!1;for(let t=0;t=e;i--)s[i+1]=s[i];s[e]=t}function ta(s,e){let t=-1,i=1e9;for(let n=0;n=e)return n;if(n==s.length)break;r+=s.charCodeAt(n)==9?t-r%t:1,n=Ke(s,n)}return i===!0?-1:s.length}var Rr="\\u037C",ga=typeof Symbol=="undefined"?"__"+Rr:Symbol.for(Rr),Fr=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),ya=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},ve=class{constructor(e,t){this.rules=[];let{finish:i}=t||{};function n(o){return/^@/.test(o)?[o]:o.split(/,\\s*/)}function r(o,l,a,h){let f=[],c=/^@(\\w+)\\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\\s*/).map(m=>o.map(g=>m.replace(/&/,g))).reduce((m,g)=>m.concat(g)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(n(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in e)r(n(o),e[o],this.rules)}getRules(){return this.rules.join(`\n`)}static newName(){let e=ya[ga]||1;return ya[ga]=e+1,Rr+e.toString(36)}static mount(e,t,i){let n=e[Fr],r=i&&i.nonce;n?r&&n.setNonce(r):n=new $r(e,r),n.mount(Array.isArray(t)?t:[t],e)}},ba=new Map,$r=class{constructor(e,t){let i=e.ownerDocument||e,n=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let r=ba.get(i);if(r)return e[Fr]=r;this.sheet=new n.CSSStyleSheet,ba.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Fr]=this}mount(e,t){let i=this.sheet,n=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:\'"\'},Up=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),Yp=typeof navigator!="undefined"&&/MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);for(ee=0;ee<10;ee++)Kt[48+ee]=Kt[96+ee]=String(ee);var ee;for(ee=1;ee<=24;ee++)Kt[ee+111]="F"+ee;var ee;for(ee=65;ee<=90;ee++)Kt[ee]=String.fromCharCode(ee+32),Us[ee]=String.fromCharCode(ee);var ee;for(zs in Kt)Us.hasOwnProperty(zs)||(Us[zs]=Kt[zs]);var zs;function Ji(s){let e;return s.nodeType==11?e=s.getSelection?s:s.ownerDocument:e=s,e.getSelection()}function Wr(s,e){return e?s==e||s.contains(e.nodeType!=1?e.parentNode:e):!1}function uu(s){let e=s.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function tn(s,e){if(!e.anchorNode)return!1;try{return Wr(s,e.anchorNode)}catch(t){return!1}}function Xi(s){return s.nodeType==3?jt(s,0,s.nodeValue.length).getClientRects():s.nodeType==1?s.getClientRects():[]}function ji(s,e,t,i){return t?wa(s,e,t,i,-1)||wa(s,e,t,i,1):!1}function qt(s){for(var e=0;;e++)if(s=s.previousSibling,!s)return e}function rn(s){return s.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(s.nodeName)}function wa(s,e,t,i,n){for(;;){if(s==t&&e==i)return!0;if(e==(n<0?0:ct(s))){if(s.nodeName=="DIV")return!1;let r=s.parentNode;if(!r||r.nodeType!=1)return!1;e=qt(s)+(n<0?0:1),s=r}else if(s.nodeType==1){if(s=s.childNodes[e+(n<0?-1:0)],s.nodeType==1&&s.contentEditable=="false")return!1;e=n<0?ct(s):0}else return!1}}function ct(s){return s.nodeType==3?s.nodeValue.length:s.childNodes.length}function gn(s,e){let t=e?s.left:s.right;return{left:t,right:t,top:s.top,bottom:s.bottom}}function du(s){let e=s.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:s.innerWidth,top:0,bottom:s.innerHeight}}function Ja(s,e){let t=e.width/s.offsetWidth,i=e.height/s.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-s.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-s.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function pu(s,e,t,i,n,r,o,l){let a=s.ownerDocument,h=a.defaultView||window;for(let f=s,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,m=1;if(d)u=du(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let w=f.getBoundingClientRect();({scaleX:p,scaleY:m}=Ja(f,w)),u={left:w.left,right:w.left+f.clientWidth*p,top:w.top,bottom:w.top+f.clientHeight*m}}let g=0,y=0;if(n=="nearest")e.top0&&e.bottom>u.bottom+y&&(y=e.bottom-u.bottom+y+o)):e.bottom>u.bottom&&(y=e.bottom-u.bottom+o,t<0&&e.top-y0&&e.right>u.right+g&&(g=e.right-u.right+g+r)):e.right>u.right&&(g=e.right-u.right+r,t<0&&e.leftn.clientHeight&&(i=n),!t&&n.scrollWidth>n.clientWidth&&(t=n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;return{x:t,y:i}}var qr=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?ct(t):0),i,Math.min(e.focusOffset,i?ct(i):0))}set(e,t,i,n){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=n}},hi=null;function Xa(s){if(s.setActive)return s.setActive();if(hi)return s.focus(hi);let e=[];for(let t=s;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(s.focus(hi==null?{get preventScroll(){return hi={preventScroll:!0},!0}}:void 0),!hi){hi=!1;for(let t=0;tMath.max(1,s.scrollHeight-s.clientHeight-4)}function eh(s,e){for(let t=s,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=ct(t)}else if(t.parentNode&&!rn(t))i=qt(t),t=t.parentNode;else return null}}function th(s,e){for(let t=s,i=e;;){if(t.nodeType==3&&it)return c.domBoundsAround(e,t,h);if(u>=e&&n==-1&&(n=a,r=h),h>t&&c.dom.parentNode==this.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+this.length:l,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o=0?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,i=ko){this.markDirty();for(let n=e;nthis.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}};function ih(s,e,t,i,n,r,o,l,a){let{children:h}=s,f=h.length?h[e]:null,c=r.length?r[r.length-1]:null,u=c?c.breakAfter:o;if(!(e==i&&f&&!o&&!u&&r.length<2&&f.merge(t,n,r.length?c:null,t==0,l,a))){if(i0&&(!o&&r.length&&f.merge(t,f.length,r[0],!1,l,0)?f.breakAfter=r.shift().breakAfter:(t2),T={mac:Ca||/Mac/.test(pe.platform),windows:/Win/.test(pe.platform),linux:/Linux|X11/.test(pe.platform),ie:yn,ie_version:nh?jr.documentMode||6:Ur?+Ur[1]:zr?+zr[1]:0,gecko:va,gecko_version:va?+(/Firefox\\/(\\d+)/.exec(pe.userAgent)||[0,0])[1]:0,chrome:!!Vr,chrome_version:Vr?+Vr[1]:0,ios:Ca,android:/Android\\b/.test(pe.userAgent),webkit:xa,safari:rh,webkit_version:xa?+(/\\bAppleWebKit\\/(\\d+)/.exec(pe.userAgent)||[0,0])[1]:0,tabSize:jr.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"},bu=256,Ye=class s extends z{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,t,i){return this.flags&8||i&&(!(i instanceof s)||this.length-(t-e)+i.length>bu||i.flags&8)?!1:(this.text=this.text.slice(0,e)+(i?i.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new s(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=this.flags&8,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new fe(this.dom,e)}domBoundsAround(e,t,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return wu(this.dom,e,t)}},kt=class s extends z{constructor(e,t=[],i=0){super(),this.mark=e,this.children=t,this.length=i;for(let n of t)n.setParent(this)}setAttrs(e){if(Qa(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,i,n,r,o){return i&&(!(i instanceof s&&i.mark.eq(this.mark))||e&&r<=0||te&&t.push(i=e&&(n=r),i=a,r++}let o=this.length-e;return this.length=e,n>-1&&(this.children.length=n,this.markDirty()),new s(this.mark,t,o)}domAtPos(e){return oh(this,e)}coordsAt(e,t){return ah(this,e,t)}};function wu(s,e,t){let i=s.nodeValue.length;e>i&&(e=i);let n=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?T.chrome||T.gecko||(e?(n--,o=1):r=0)?0:l.length-1];return T.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?gn(a,o<0):a||null}var ln=class s extends z{static create(e,t,i){return new s(e,t,i)}constructor(e,t,i){super(),this.widget=e,this.length=t,this.side=i,this.prevWidget=null}split(e){let t=s.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,t,i,n,r,o){return i&&(!(i instanceof s)||!this.widget.compare(i.widget)||e>0&&r<=0||t0)?fe.before(this.dom):fe.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;let n=this.dom.getClientRects(),r=null;if(!n.length)return null;let o=this.side?this.side<0:e>0;for(let l=o?n.length-1:0;r=n[l],!(e>0?l==0:l==n.length-1||r.top0?fe.before(this.dom):fe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return K.empty}get isHidden(){return!0}};Ye.prototype.children=ln.prototype.children=Qi.prototype.children=ko;function oh(s,e){let t=s.dom,{children:i}=s,n=0;for(let r=0;nr&&e0;r--){let o=i[r-1];if(o.dom.parentNode==t)return o.domAtPos(o.length)}for(let r=n;r0&&e instanceof kt&&n.length&&(i=n[n.length-1])instanceof kt&&i.mark.eq(e.mark)?lh(i,e.children[0],t-1):(n.push(e),e.setParent(s)),s.length+=e.length}function ah(s,e,t){let i=null,n=-1,r=null,o=-1;function l(h,f){for(let c=0,u=0;c=f&&(d.children.length?l(d,f-u):(!r||r.isHidden&&t>0)&&(p>f||u==p&&d.getSide()>0)?(r=d,o=f-u):(u-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(n.indexOf(r)==-1||s[r]!==e[r]))return!1;return!0}function Gr(s,e,t){let i=!1;if(e)for(let n in e)t&&n in t||(i=!0,n=="style"?s.style.cssText="":s.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(i=!0,n=="style"?s.style.cssText=t[n]:s.setAttribute(n,t[n]));return i}function Su(s){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new St(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,n;if(e.isBlockGap)i=-5e8,n=4e8;else{let{start:r,end:o}=hh(e,t);i=(r?t?-3e8:-1:5e8)-1,n=(o?t?2e8:1:-6e8)+1}return new St(e,i,n,t,e.widget||null,!0)}static line(e){return new es(e)}static set(e,t=!1){return Z.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};Q.none=Z.empty;var Zi=class s extends Q{constructor(e){let{start:t,end:i}=hh(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var t,i;return this==e||e instanceof s&&this.tagName==e.tagName&&(this.class||((t=this.attrs)===null||t===void 0?void 0:t.class))==(e.class||((i=e.attrs)===null||i===void 0?void 0:i.class))&&an(this.attrs,e.attrs,"class")}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};Zi.prototype.point=!1;var es=class s extends Q{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof s&&this.spec.class==e.spec.class&&an(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};es.prototype.mapMode=ue.TrackBefore;es.prototype.point=!0;var St=class s extends Q{constructor(e,t,i,n,r,o){super(t,i,r,e),this.block=n,this.isReplace=o,this.mapMode=n?t<=0?ue.TrackBefore:ue.TrackAfter:ue.TrackDel}get type(){return this.startSide!=this.endSide?ze.WidgetRange:this.startSide<=0?ze.WidgetBefore:ze.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof s&&vu(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};St.prototype.point=!0;function hh(s,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=s;return t==null&&(t=s.inclusive),i==null&&(i=s.inclusive),{start:t!=null?t:e,end:i!=null?i:e}}function vu(s,e){return s==e||!!(s&&e&&s.compare(e))}function Jr(s,e,t,i=0){let n=t.length-1;n>=0&&t[n]+i>=s?t[n]=Math.max(t[n],e):t.push(s,e)}var re=class s extends z{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,i,n,r,o){if(i){if(!(i instanceof s))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),sh(this,e,t,i?i.children.slice():[],r,o),!0}split(e){let t=new s;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i,off:n}=this.childPos(e);n&&(t.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let r=i;r0&&this.children[i-1].length==0;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=e,t}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){an(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){lh(this,e,t)}addLineDeco(e){let t=e.spec.attributes,i=e.spec.class;t&&(this.attrs=Yr(t,this.attrs||{})),i&&(this.attrs=Yr({class:i},this.attrs||{}))}domAtPos(e){return oh(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,t){var i;this.dom?this.flags&4&&(Qa(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Gr(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,t);let n=this.dom.lastChild;for(;n&&z.get(n)instanceof kt;)n=n.lastChild;if(!n||!this.length||n.nodeName!="BR"&&((i=z.get(n))===null||i===void 0?void 0:i.isEditable)==!1&&(!T.ios||!this.children.some(r=>r instanceof Ye))){let r=document.createElement("BR");r.cmIgnore=!0,this.dom.appendChild(r)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let i of this.children){if(!(i instanceof Ye)||/[^ -~]/.test(i.text))return null;let n=Xi(i.dom);if(n.length!=1)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let i=ah(this,e,t);if(!this.children.length&&i&&this.parent){let{heightOracle:n}=this.parent.view.viewState,r=i.bottom-i.top;if(Math.abs(r-n.lineHeight)<2&&n.textHeight=t){if(r instanceof s)return r;if(o>t)break}n=o+r.breakAfter}return null}},Wt=class s extends z{constructor(e,t,i){super(),this.widget=e,this.length=t,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(e,t,i,n,r,o){return i&&(!(i instanceof s)||!this.widget.compare(i.widget)||e>0&&r<=0||t0}},ts=class extends ui{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},zi=class s{constructor(e,t,i,n){this.doc=e,this.pos=t,this.end=i,this.disallowBlockEffectsFor=n,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Wt&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new re),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Ys(new Qi(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Wt)&&this.getLine()}buildText(e,t,i){for(;e>0;){if(this.textOff==this.text.length){let{value:r,lineBreak:o,done:l}=this.cursor.next(this.skip);if(this.skip=0,l)throw new Error("Ran out of text content when drawing inline views");if(o){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=r,this.textOff=0}let n=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-i)),this.getLine().append(Ys(new Ye(this.text.slice(this.textOff,this.textOff+n)),t),i),this.atCursorPos=!0,this.textOff+=n,e-=n,i=0}}span(e,t,i,n){this.buildText(t-e,i,n),this.pos=t,this.openStart<0&&(this.openStart=n)}point(e,t,i,n,r,o){if(this.disallowBlockEffectsFor[o]&&i instanceof St){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(i instanceof St)if(i.block)i.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Wt(i.widget||vt.block,l,i));else{let a=ln.create(i.widget||vt.inline,l,l?0:i.startSide),h=this.atCursorPos&&!a.isEditable&&r<=n.length&&(e0),f=!a.isEditable&&(en.length||i.startSide<=0),c=this.getLine();this.pendingBuffer==2&&!h&&!a.isEditable&&(this.pendingBuffer=0),this.flushBuffer(n),h&&(c.append(Ys(new Qi(1),n),r),r=n.length+Math.max(0,r-n.length)),c.append(Ys(a,n),r),this.atCursorPos=f,this.pendingBuffer=f?en.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=r)}static build(e,t,i,n,r){let o=new s(e,t,i,r);return o.openEnd=Z.spans(n,t,i,o),o.openStart<0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}};function Ys(s,e){for(let t of e)s=new kt(t,[s],s.length);return s}var vt=class extends ui{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};vt.inline=new vt("span");vt.block=new vt("div");var ie=function(s){return s[s.LTR=0]="LTR",s[s.RTL=1]="RTL",s}(ie||(ie={})),zt=ie.LTR,So=ie.RTL;function fh(s){let e=[];for(let t=0;t=t){if(l.level==i)return o;(r<0||(n!=0?n<0?l.fromt:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function uh(s,e){if(s.length!=e.length)return!1;for(let t=0;t=0;m-=3)if(We[m+1]==-d){let g=We[m+2],y=g&2?n:g&4?g&1?r:n:0;y&&(j[c]=j[We[m]]=y),l=m;break}}else{if(We.length==189)break;We[l++]=c,We[l++]=u,We[l++]=a}else if((p=j[c])==2||p==1){let m=p==n;a=m?0:1;for(let g=l-3;g>=0;g-=3){let y=We[g+2];if(y&2)break;if(m)We[g+2]|=2;else{if(y&4)break;We[g+2]|=4}}}}}function Tu(s,e,t,i){for(let n=0,r=i;n<=t.length;n++){let o=n?t[n-1].to:s,l=na;)p==g&&(p=t[--m].from,g=m?t[m-1].to:s),j[--p]=d;a=f}else r=h,a++}}}function Qr(s,e,t,i,n,r,o){let l=i%2?2:1;if(i%2==n%2)for(let a=e,h=0;aa&&o.push(new je(a,m.from,d));let g=m.direction==zt!=!(d%2);Zr(s,g?i+1:i,n,m.inner,m.from,m.to,o),a=m.to}p=m.to}else{if(p==t||(f?j[p]!=l:j[p]==l))break;p++}u?Qr(s,a,p,i+1,n,u,o):ae;){let f=!0,c=!1;if(!h||a>r[h-1].to){let m=j[a-1];m!=l&&(f=!1,c=m==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;e:for(;;)if(h&&p==r[h-1].to){if(c)break e;let m=r[--h];if(!f)for(let g=m.from,y=h;;){if(g==e)break e;if(y&&r[y-1].to==g)g=r[--y].from;else{if(j[g-1]==l)break e;break}}if(u)u.push(m);else{m.toj.length;)j[j.length]=256;let i=[],n=e==zt?0:1;return Zr(s,n,n,t,0,s.length,i),i}function dh(s){return[new je(0,s,0)]}var ph="";function Nu(s,e,t,i,n){var r;let o=i.head-s.from,l=je.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(n,t);if(o==h){let u=l+=n?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!n,t),h=a.side(n,t)}let f=Ke(s.text,o,a.forward(n,t));(fa.to)&&(f=h),ph=s.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(n?e.length-1:0)?null:e[l+(n?1:-1)];return c&&f==h&&c.level+(n?0:1)s.some(e=>e)}),Lu=R.define({combine:s=>s.some(e=>e)}),vh=R.define(),Ui=class s{constructor(e,t="nearest",i="nearest",n=5,r=5,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=n,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new s(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new s(P.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gs=J.define({map:(s,e)=>s.map(e)}),xh=J.define();function Le(s,e,t){let i=s.facet(bh);i.length?i[0](e):window.onerror?window.onerror(String(e),t,void 0,void 0,e):t?console.error(t+":",e):console.error(e)}var bt=R.define({combine:s=>s.length?s[0]:!0}),Pu=0,_i=R.define(),Ut=class s{constructor(e,t,i,n,r){this.id=e,this.create=t,this.domEventHandlers=i,this.domEventObservers=n,this.extension=r(this)}static define(e,t){let{eventHandlers:i,eventObservers:n,provide:r,decorations:o}=t||{};return new s(Pu++,e,i,n,l=>{let a=[_i.of(l)];return o&&a.push(is.of(h=>{let f=h.plugin(l);return f?o(f):Q.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return s.define(i=>new e(i),t)}},Yi=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(Le(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(n){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(t){Le(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){Le(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ch=R.define(),Co=R.define(),is=R.define(),Ah=R.define(),Ao=R.define(),Mh=R.define();function Ma(s,e){let t=s.state.facet(Mh);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(s):r),n=[];return Z.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,f=o-e.from,c=n;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=Du(e.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let m={from:h,to:f,direction:d,inner:[]};c.push(m),c=m.inner}}}}),n}var Oh=R.define();function Th(s){let e=0,t=0,i=0,n=0;for(let r of s.state.facet(Oh)){let o=r(s);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(n=Math.max(n,o.bottom)))}return{left:e,right:t,top:i,bottom:n}}var Ki=R.define(),Ue=class s{constructor(e,t,i,n){this.fromA=e,this.toA=t,this.fromB=i,this.toB=n}join(e){return new s(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let n=e[t-1];if(!(n.fromA>i.toA)){if(n.toAf)break;r+=2}if(!a)return i;new s(a.fromA,a.toA,a.fromB,a.toB).addToSet(i),o=a.toA,l=a.toB}}},hn=class s{constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=ye.empty(this.startState.doc.length);for(let r of i)this.changes=this.changes.compose(r.changes);let n=[];this.changes.iterChangedRanges((r,o,l,a)=>n.push(new Ue(r,o,l,a))),this.changedRanges=n}static create(e,t,i){return new s(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},fn=class extends z{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=Q.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new re],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Ue(0,0,0,e.state.doc.length)],0,null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:h,toA:f})=>fthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?n=this.domChanged.newSel.head:!Hu(e.changes,this.hasComposition)&&!e.selectionSet&&(n=e.state.selection.main.head));let r=n>-1?Iu(this.view,e.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:h,to:f}=this.hasComposition;i=new Ue(h,f,e.changes.mapPos(h,-1),e.changes.mapPos(f,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(T.ie||T.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.updateDeco(),a=$u(o,l,e.changes);return i=Ue.extendWithRanges(i,a),!(this.flags&7)&&i.length==0?!1:(this.updateInner(i,e.startState.doc.length,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,i);let{observer:n}=this.view;n.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let o=T.chrome||T.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,o),this.flags&=-8,o&&(o.written||n.selectionRange.focusNode!=o.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(o=>o.flags&=-9);let r=[];if(this.view.viewport.from||this.view.viewport.to=0?n[o]:null;if(!l)break;let{fromA:a,toA:h,fromB:f,toB:c}=l,u,d,p,m;if(i&&i.range.fromBf){let S=zi.build(this.view.state.doc,f,i.range.fromB,this.decorations,this.dynamicDecorationMap),v=zi.build(this.view.state.doc,i.range.toB,c,this.decorations,this.dynamicDecorationMap);d=S.breakAtStart,p=S.openStart,m=v.openEnd;let M=this.compositionView(i);v.breakAtStart?M.breakAfter=1:v.content.length&&M.merge(M.length,M.length,v.content[0],!1,v.openStart,0)&&(M.breakAfter=v.content[0].breakAfter,v.content.shift()),S.content.length&&M.merge(0,0,S.content[S.content.length-1],!0,0,S.openEnd)&&S.content.pop(),u=S.content.concat(M).concat(v.content)}else({content:u,breakAtStart:d,openStart:p,openEnd:m}=zi.build(this.view.state.doc,f,c,this.decorations,this.dynamicDecorationMap));let{i:g,off:y}=r.findPos(h,1),{i:w,off:x}=r.findPos(a,-1);ih(this,w,x,g,y,u,d,p,m)}i&&this.fixCompositionDOM(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let i of t.effects)i.is(xh)&&(this.editContextFormatting=i.value)}compositionView(e){let t=new Ye(e.text.nodeValue);t.flags|=8;for(let{deco:n}of e.marks)t=new kt(n,[t],t.length);let i=new re;return i.append(t,0),i}fixCompositionDOM(e){let t=(r,o)=>{o.flags|=8|(o.children.some(a=>a.flags&7)?1:0),this.markedForComposition.add(o);let l=z.get(r);l&&l!=o&&(l.dom=null),o.setDOM(r)},i=this.childPos(e.range.fromB,1),n=this.children[i.i];t(e.line,n);for(let r=e.marks.length-1;r>=-1;r--)i=n.childPos(i.off,1),n=n.children[i.i],t(r>=0?e.marks[r].node:e.text,n)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let i=this.view.root.activeElement,n=i==this.dom,r=!n&&tn(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(n||t||r))return;let o=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.moveToLine(this.domAtPos(l.anchor)),h=l.empty?a:this.moveToLine(this.domAtPos(l.head));if(T.gecko&&l.empty&&!this.hasComposition&&Bu(a)){let c=document.createTextNode("");this.view.observer.ignore(()=>a.node.insertBefore(c,a.node.childNodes[a.offset]||null)),a=h=new fe(c,0),o=!0}let f=this.view.observer.selectionRange;(o||!f.focusNode||(!ji(a.node,a.offset,f.anchorNode,f.anchorOffset)||!ji(h.node,h.offset,f.focusNode,f.focusOffset))&&!this.suppressWidgetCursorChange(f,l))&&(this.view.observer.ignore(()=>{T.android&&T.chrome&&this.dom.contains(f.focusNode)&&Vu(f.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let c=Ji(this.view.root);if(c)if(l.empty){if(T.gecko){let u=Ru(a.node,a.offset);if(u&&u!=3){let d=(u==1?eh:th)(a.node,a.offset);d&&(a=new fe(d.node,d.offset))}}c.collapse(a.node,a.offset),l.bidiLevel!=null&&c.caretBidiLevel!==void 0&&(c.caretBidiLevel=l.bidiLevel)}else if(c.extend){c.collapse(a.node,a.offset);try{c.extend(h.node,h.offset)}catch(u){}}else{let u=document.createRange();l.anchor>l.head&&([a,h]=[h,a]),u.setEnd(h.node,h.offset),u.setStart(a.node,a.offset),c.removeAllRanges(),c.addRange(u)}r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(a,h)),this.impreciseAnchor=a.precise?null:new fe(f.anchorNode,f.anchorOffset),this.impreciseHead=h.precise?null:new fe(f.focusNode,f.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&ji(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=Ji(e.root),{anchorNode:n,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=re.find(this,t.head);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(t.head+t.assoc);i.collapse(f.node,f.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let c=e.observer.selectionRange;e.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=t.from&&i.collapse(n,r)}moveToLine(e){let t=this.dom,i;if(e.node!=t)return e;for(let n=e.offset;!i&&n=0;n--){let r=z.get(t.childNodes[n]);r instanceof re&&(i=r.domAtPos(r.length))}return i?new fe(i.node,i.offset,!0):e}nearest(e){for(let t=e;t;){let i=z.get(t);if(i&&i.rootView==this)return i;t=t.parentNode}return null}posFromDOM(e,t){let i=this.nearest(e);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(e,t)+i.posAtStart}domAtPos(e){let{i:t,off:i}=this.childCursor().findPos(e,-1);for(;t=0;o--){let l=this.children[o],a=r-l.breakAfter,h=a-l.length;if(ae||l.covers(1))&&(!i||l instanceof re&&!(i instanceof re&&t>=0)))i=l,n=h;else if(i&&h==e&&a==e&&l instanceof Wt&&Math.abs(t)<2){if(l.deco.startSide<0)break;o&&(i=null)}r=h}return i?i.coordsAt(e-n,t):null}coordsForChar(e){let{i:t,off:i}=this.childPos(e,1),n=this.children[t];if(!(n instanceof re))return null;for(;n.children.length;){let{i:l,off:a}=n.childPos(i,1);for(;;l++){if(l==n.children.length)return null;if((n=n.children[l]).length)break}i=a}if(!(n instanceof Ye))return null;let r=Ke(n.text,i);if(r==i)return null;let o=jt(n.dom,i,r).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==ie.LTR;for(let h=0,f=0;fn)break;if(h>=i){let d=c.dom.getBoundingClientRect();if(t.push(d.height),o){let p=c.dom.lastChild,m=p?Xi(p):[];if(m.length){let g=m[m.length-1],y=a?g.right-d.left:d.right-g.left;y>l&&(l=y,this.minWidth=r,this.minWidthFrom=h,this.minWidthTo=u)}}}h=u+c.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?ie.RTL:ie.LTR}measureTextSize(){for(let r of this.children)if(r instanceof re){let o=r.measureTextSize();if(o)return o}let e=document.createElement("div"),t,i,n;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let r=Xi(e.firstChild)[0];t=e.getBoundingClientRect().height,i=r?r.width/27:7,n=r?r.height:t,e.remove()}),{lineHeight:t,charWidth:i,textHeight:n}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new on(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,n=0;;n++){let r=n==t.viewports.length?null:t.viewports[n],o=r?r.from-1:this.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(Q.replace({widget:new ts(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return Q.set(e)}updateDeco(){let e=1,t=this.view.state.facet(is).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,n=this.view.state.facet(Ah).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(n.length&&(this.dynamicDecorationMap[e++]=i,t.push(Z.join(n))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];et.anchor?-1:1),n;if(!i)return;!t.empty&&(n=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,n.left),top:Math.min(i.top,n.top),right:Math.max(i.right,n.right),bottom:Math.max(i.bottom,n.bottom)});let r=Th(this.view),o={left:i.left-r.left,top:i.top-r.top,right:i.right+r.right,bottom:i.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;pu(this.view.scrollDOM,o,t.head{ie.from&&(t=!0)}),t}function _u(s,e,t=1){let i=s.charCategorizer(e),n=s.doc.lineAt(e),r=e-n.from;if(n.length==0)return P.cursor(e);r==0?t=1:r==n.length&&(t=-1);let o=r,l=r;t<0?o=Ke(n.text,r,!1):l=Ke(n.text,r);let a=i(n.text.slice(o,l));for(;o>0;){let h=Ke(n.text,o,!1);if(i(n.text.slice(h,o))!=a)break;o=h}for(;ls?e.left-s:Math.max(0,s-e.right)}function Wu(s,e){return e.top>s?e.top-s:Math.max(0,s-e.bottom)}function Hr(s,e){return s.tope.top+1}function Oa(s,e){return es.bottom?{top:s.top,left:s.left,right:s.right,bottom:e}:s}function to(s,e,t){let i,n,r,o,l=!1,a,h,f,c;for(let p=s.firstChild;p;p=p.nextSibling){let m=Xi(p);for(let g=0;gx||o==x&&r>w){i=p,n=y,r=w,o=x;let S=x?t0?g0)}w==0?t>y.bottom&&(!f||f.bottomy.top)&&(h=p,c=y):f&&Hr(f,y)?f=Ta(f,y.bottom):c&&Hr(c,y)&&(c=Oa(c,y.top))}}if(f&&f.bottom>=t?(i=a,n=f):c&&c.top<=t&&(i=h,n=c),!i)return{node:s,offset:0};let u=Math.max(n.left,Math.min(n.right,e));if(i.nodeType==3)return Ea(i,u,t);if(l&&i.contentEditable!="false")return to(i,u,t);let d=Array.prototype.indexOf.call(s.childNodes,i)+(e>=(n.left+n.right)/2?1:0);return{node:s,offset:d}}function Ea(s,e,t){let i=s.nodeValue.length,n=-1,r=1e9,o=0;for(let l=0;lt?f.top-t:t-f.bottom)-1;if(f.left-1<=e&&f.right+1>=e&&c=(f.left+f.right)/2,d=u;if((T.chrome||T.gecko)&&jt(s,l).getBoundingClientRect().left==f.right&&(d=!u),c<=0)return{node:s,offset:l+(d?1:0)};n=l+(d?1:0),r=c}}}return{node:s,offset:n>-1?n:o>0?s.nodeValue.length:0}}function Nh(s,e,t,i=-1){var n,r;let o=s.contentDOM.getBoundingClientRect(),l=o.top+s.viewState.paddingTop,a,{docHeight:h}=s.viewState,{x:f,y:c}=e,u=c-l;if(u<0)return 0;if(u>h)return s.state.doc.length;for(let S=s.viewState.heightOracle.textHeight/2,v=!1;a=s.elementAtHeight(u),a.type!=ze.Text;)for(;u=i>0?a.bottom+S:a.top-S,!(u>=0&&u<=h);){if(v)return t?null:0;v=!0,i=-i}c=l+u;let d=a.from;if(ds.viewport.to)return s.viewport.to==s.state.doc.length?s.state.doc.length:t?null:Na(s,o,a,f,c);let p=s.dom.ownerDocument,m=s.root.elementFromPoint?s.root:p,g=m.elementFromPoint(f,c);g&&!s.contentDOM.contains(g)&&(g=null),g||(f=Math.max(o.left+1,Math.min(o.right-1,f)),g=m.elementFromPoint(f,c),g&&!s.contentDOM.contains(g)&&(g=null));let y,w=-1;if(g&&((n=s.docView.nearest(g))===null||n===void 0?void 0:n.isEditable)!=!1){if(p.caretPositionFromPoint){let S=p.caretPositionFromPoint(f,c);S&&({offsetNode:y,offset:w}=S)}else if(p.caretRangeFromPoint){let S=p.caretRangeFromPoint(f,c);S&&({startContainer:y,startOffset:w}=S,(!s.contentDOM.contains(y)||T.safari&&qu(y,w,f)||T.chrome&&ju(y,w,f))&&(y=void 0))}}if(!y||!s.docView.dom.contains(y)){let S=re.find(s.docView,d);if(!S)return u>a.top+a.height/2?a.to:a.from;({node:y,offset:w}=to(S.dom,f,c))}let x=s.docView.nearest(y);if(!x)return null;if(x.isWidget&&((r=x.dom)===null||r===void 0?void 0:r.nodeType)==1){let S=x.dom.getBoundingClientRect();return e.ys.defaultLineHeight*1.5){let l=s.viewState.heightOracle.textHeight,a=Math.floor((n-t.top-(s.defaultLineHeight-l)*.5)/l);r+=a*s.viewState.heightOracle.lineLength}let o=s.state.sliceDoc(t.from,t.to);return t.from+ma(o,r,s.state.tabSize)}function qu(s,e,t){let i;if(s.nodeType!=3||e!=(i=s.nodeValue.length))return!1;for(let n=s.nextSibling;n;n=n.nextSibling)if(n.nodeType!=1||n.nodeName!="BR")return!1;return jt(s,i-1,i).getBoundingClientRect().left>t}function ju(s,e,t){if(e!=0)return!1;for(let n=s;;){let r=n.parentNode;if(!r||r.nodeType!=1||r.firstChild!=n)return!1;if(r.classList.contains("cm-line"))break;n=r}let i=s.nodeType==1?s.getBoundingClientRect():jt(s,0,Math.max(s.nodeValue.length,1)).getBoundingClientRect();return t-i.left>5}function zu(s,e){let t=s.lineBlockAt(e);if(Array.isArray(t.type)){for(let i of t.type)if(i.to>e||i.to==e&&(i.to==t.to||i.type==ze.Text))return i}return t}function Uu(s,e,t,i){let n=zu(s,e.head),r=!i||n.type!=ze.Text||!(s.lineWrapping||n.widgetLineBreaks)?null:s.coordsAtPos(e.assoc<0&&e.head>n.from?e.head-1:e.head);if(r){let o=s.dom.getBoundingClientRect(),l=s.textDirectionAt(n.from),a=s.posAtCoords({x:t==(l==ie.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return P.cursor(a,t?-1:1)}return P.cursor(t?n.to:n.from,t?-1:1)}function Da(s,e,t,i){let n=s.state.doc.lineAt(e.head),r=s.bidiSpans(n),o=s.textDirectionAt(n.from);for(let l=e,a=null;;){let h=Nu(n,r,o,l,t),f=ph;if(!h){if(n.number==(t?s.state.doc.lines:1))return l;f=`\n`,n=s.state.doc.line(n.number+(t?1:-1)),r=s.bidiSpans(n),h=s.visualLineSide(n,!t)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Yu(s,e,t){let i=s.state.charCategorizer(e),n=i(t);return r=>{let o=i(r);return n==_e.Space&&(n=o),n==o}}function Gu(s,e,t,i){let n=e.head,r=t?1:-1;if(n==(t?s.state.doc.length:0))return P.cursor(n,e.assoc);let o=e.goalColumn,l,a=s.contentDOM.getBoundingClientRect(),h=s.coordsAtPos(n,e.assoc||-1),f=s.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let d=s.viewState.lineBlockAt(n);o==null&&(o=Math.min(a.right-a.left,s.defaultCharacterWidth*(n-d.from))),l=(r<0?d.top:d.bottom)+f}let c=a.left+o,u=i!=null?i:s.viewState.heightOracle.textHeight>>1;for(let d=0;;d+=10){let p=l+(u+d)*r,m=Nh(s,{x:c,y:p},!1,r);if(pa.bottom||(r<0?mn)){let g=s.docView.coordsForChar(m),y=!g||p{if(e>r&&en(s)),t.from,e.head>t.from?-1:1);return i==t.from?t:P.cursor(i,ir)&&this.lineBreak(),n=o}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,n=this.lineSeparator?null:/\\r\\n?|\\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=n.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){if(e.cmIgnore)return;let t=z.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let n=i.iter();!n.next().done;)n.lineBreak?this.lineBreak():this.append(n.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(Ju(e,i.node,i.offset)?t:0))}};function Ju(s,e,t){for(;;){if(!e||t-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,i,0))){let l=r||o?[]:Zu(e),a=new io(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=ed(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!Wr(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),h=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Wr(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),f=e.viewport;if((T.ios||T.chrome)&&e.state.selection.main.empty&&a!=h&&(f.from>0||f.toDate.now()-100?s.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,a=n.from,h=null;(r===8||T.android&&e.text.length=n.from&&t.to<=n.to&&(t.from!=n.from||t.to!=n.to)&&n.to-n.from-(t.to-t.from)<=4?t={from:n.from,to:n.to,insert:s.state.doc.slice(n.from,t.from).append(t.insert).append(s.state.doc.slice(t.to,n.to))}:(T.mac||T.android)&&t&&t.from==t.to&&t.from==n.head-1&&/^\\. ?$/.test(t.insert.toString())&&s.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=P.single(i.main.anchor-1,i.main.head-1)),t={from:n.from,to:n.to,insert:K.of([" "])}):T.chrome&&t&&t.from==t.to&&t.from==n.head&&t.insert.toString()==`\n `&&s.lineWrapping&&(i&&(i=P.single(i.main.anchor-1,i.main.head-1)),t={from:n.from,to:n.to,insert:K.of([" "])}),t)return Mo(s,t,i,r);if(i&&!i.main.eq(n)){let o=!1,l="select";return s.inputState.lastSelectionTime>Date.now()-50&&(s.inputState.lastSelectionOrigin=="select"&&(o=!0),l=s.inputState.lastSelectionOrigin),s.dispatch({selection:i,scrollIntoView:o,userEvent:l}),!0}else return!1}function Mo(s,e,t,i=-1){if(T.ios&&s.inputState.flushIOSKey(e))return!0;let n=s.state.selection.main;if(T.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&s.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&ci(s.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||i==8&&e.insert.lengthn.head)&&ci(s.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&ci(s.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();s.inputState.composing>=0&&s.inputState.composing++;let o,l=()=>o||(o=Xu(s,e,t));return s.state.facet(wh).some(a=>a(s,e.from,e.to,r,l))||s.dispatch(l()),!0}function Xu(s,e,t){let i,n=s.state,r=n.selection.main;if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&s.inputState.composing<0){let l=r.frome.to?n.sliceDoc(e.to,r.to):"";i=n.replaceSelection(s.state.toText(l+e.insert.sliceString(0,void 0,s.state.lineBreak)+a))}else{let l=n.changes(e),a=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&s.inputState.composing>=0&&e.to<=r.to&&e.to>=r.to-10){let h=s.state.sliceDoc(e.from,e.to),f,c=t&&Eh(s,t.main.head);if(c){let p=e.insert.length-(e.to-e.from);f={from:c.from,to:c.to-p}}else f=s.state.doc.lineAt(r.head);let u=r.to-e.to,d=r.to-r.from;i=n.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:l,range:a||p.map(l)};let m=p.to-u,g=m-h.length;if(p.to-p.from!=d||s.state.sliceDoc(g,m)!=h||p.to>=f.from&&p.from<=f.to)return{range:p};let y=n.changes({from:g,to:m,insert:e.insert}),w=p.to-r.to;return{changes:y,range:a?P.range(Math.max(0,a.anchor+w),Math.max(0,a.head+w)):p.map(y)}})}else i={changes:l,selection:a&&n.selection.replaceRange(a)}}let o="input.type";return(s.composing||s.inputState.compositionPendingChange&&s.inputState.compositionEndedAt>Date.now()-50)&&(s.inputState.compositionPendingChange=!1,o+=".compose",s.inputState.compositionFirstChange&&(o+=".start",s.inputState.compositionFirstChange=!1)),n.update(i,{userEvent:o,scrollIntoView:!0})}function Qu(s,e,t,i){let n=Math.min(s.length,e.length),r=0;for(;r0&&l>0&&s.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Zu(s){let e=[];if(s.root.activeElement!=s.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:r}=s.observer.selectionRange;return t&&(e.push(new cn(t,i)),(n!=t||r!=i)&&e.push(new cn(n,r))),e}function ed(s,e){if(s.length==0)return null;let t=s[0].pos,i=s.length==2?s[1].pos:t;return t>-1&&i>-1?P.single(t+e,i+e):null}var no=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,T.safari&&e.contentDOM.addEventListener("input",()=>null),T.gecko&&gd(e.contentDOM.ownerDocument)}handleEvent(e){!ad(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||this.runHandlers(e.type,e)}runHandlers(e,t){let i=this.handlers[e];if(i){for(let n of i.observers)n(this.view,t);for(let n of i.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=td(e),i=this.handlers,n=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(n.removeEventListener(r,this.handleEvent),l=null),l||n.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&n.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&sd.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),T.android&&T.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return T.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=Lh.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||id.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from0?!0:T.safari&&!T.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1:!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function La(s,e){return(t,i)=>{try{return e.call(s,i,t)}catch(n){Le(t.state,n)}}}function td(s){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of s){let n=i.spec;if(n&&n.domEventHandlers)for(let r in n.domEventHandlers){let o=n.domEventHandlers[r];o&&t(r).handlers.push(La(i.value,o))}if(n&&n.domEventObservers)for(let r in n.domEventObservers){let o=n.domEventObservers[r];o&&t(r).observers.push(La(i.value,o))}}for(let i in Pe)t(i).handlers.push(Pe[i]);for(let i in Ce)t(i).observers.push(Ce[i]);return e}var Lh=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],id="dthko",sd=[16,17,18,20,91,92,224,225],Js=6;function Xs(s){return Math.max(0,s)*.7+8}function nd(s,e){return Math.max(Math.abs(s.clientX-e.clientX),Math.abs(s.clientY-e.clientY))}var ro=class{constructor(e,t,i,n){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=mu(e.contentDOM),this.atoms=e.state.facet(Ao).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(X.allowMultipleSelections)&&rd(e,t),this.dragging=ld(e,t)&&Ih(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&nd(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,n=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:n,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Th(this.view);e.clientX-a.left<=n+Js?t=-Xs(n-e.clientX):e.clientX+a.right>=o-Js&&(t=Xs(e.clientX-o)),e.clientY-a.top<=r+Js?i=-Xs(r-e.clientY):e.clientY+a.bottom>=l-Js&&(i=Xs(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}skipAtoms(e){let t=null;for(let i=0;it.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function rd(s,e){let t=s.state.facet(mh);return t.length?t[0](e):T.mac?e.metaKey:e.ctrlKey}function od(s,e){let t=s.state.facet(gh);return t.length?t[0](e):T.mac?!e.altKey:!e.ctrlKey}function ld(s,e){let{main:t}=s.state.selection;if(t.empty)return!1;let i=Ji(s.root);if(!i||i.rangeCount==0)return!0;let n=i.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function ad(s,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=s.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=z.get(t))&&i.ignoreEvent(e))return!1;return!0}var Pe=Object.create(null),Ce=Object.create(null),Ph=T.ie&&T.ie_version<15||T.ios&&T.webkit_version<604;function hd(s){let e=s.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{s.focus(),t.remove(),Bh(s,t.value)},50)}function bn(s,e,t){for(let i of s.facet(e))t=i(t,s);return t}function Bh(s,e){e=bn(s.state,vo,e);let{state:t}=s,i,n=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(oo!=null&&t.selection.ranges.every(a=>a.empty)&&oo==r.toString()){let a=-1;i=t.changeByRange(h=>{let f=t.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=t.toText((o?r.line(n++).text:e)+t.lineBreak);return{changes:{from:f.from,insert:c},range:P.cursor(h.from+c.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(n++);return{changes:{from:a.from,to:a.to,insert:h.text},range:P.cursor(a.from+h.length)}}):i=t.replaceSelection(r);s.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}Ce.scroll=s=>{s.inputState.lastScrollTop=s.scrollDOM.scrollTop,s.inputState.lastScrollLeft=s.scrollDOM.scrollLeft};Pe.keydown=(s,e)=>(s.inputState.setSelectionOrigin("select"),e.keyCode==27&&s.inputState.tabFocusMode!=0&&(s.inputState.tabFocusMode=Date.now()+2e3),!1);Ce.touchstart=(s,e)=>{s.inputState.lastTouchTime=Date.now(),s.inputState.setSelectionOrigin("select.pointer")};Ce.touchmove=s=>{s.inputState.setSelectionOrigin("select.pointer")};Pe.mousedown=(s,e)=>{if(s.observer.flush(),s.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of s.state.facet(yh))if(t=i(s,e),t)break;if(!t&&e.button==0&&(t=ud(s,e)),t){let i=!s.hasFocus;s.inputState.startMouseSelection(new ro(s,e,t,i)),i&&s.observer.ignore(()=>{Xa(s.contentDOM);let r=s.root.activeElement;r&&!r.contains(s.contentDOM)&&r.blur()});let n=s.inputState.mouseSelection;if(n)return n.start(e),n.dragging===!1}return!1};function Pa(s,e,t,i){if(i==1)return P.cursor(e,t);if(i==2)return _u(s.state,e,t);{let n=re.find(s.docView,e),r=s.state.doc.lineAt(n?n.posAtEnd:e),o=n?n.posAtStart:r.from,l=n?n.posAtEnd:r.to;return le>=t.top&&e<=t.bottom&&s>=t.left&&s<=t.right;function fd(s,e,t,i){let n=re.find(s.docView,e);if(!n)return 1;let r=e-n.posAtStart;if(r==0)return 1;if(r==n.length)return-1;let o=n.coordsAt(r,-1);if(o&&Ba(t,i,o))return-1;let l=n.coordsAt(r,1);return l&&Ba(t,i,l)?1:o&&o.bottom>=i?-1:1}function Ia(s,e){let t=s.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:fd(s,t,e.clientX,e.clientY)}}var cd=T.ie&&T.ie_version<=11,Ra=null,Fa=0,$a=0;function Ih(s){if(!cd)return s.detail;let e=Ra,t=$a;return Ra=s,$a=Date.now(),Fa=!e||t>Date.now()-400&&Math.abs(e.clientX-s.clientX)<2&&Math.abs(e.clientY-s.clientY)<2?(Fa+1)%3:1}function ud(s,e){let t=Ia(s,e),i=Ih(e),n=s.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),n=n.map(r.changes))},get(r,o,l){let a=Ia(s,r),h,f=Pa(s,a.pos,a.bias,i);if(t.pos!=a.pos&&!o){let c=Pa(s,t.pos,t.bias,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=dd(n,a.pos))?h:l?n.addRange(f):P.create([f])}}}function dd(s,e){for(let t=0;t=e)return P.create(s.ranges.slice(0,t).concat(s.ranges.slice(t+1)),s.mainIndex==t?0:s.mainIndex-(s.mainIndex>t?1:0))}return null}Pe.dragstart=(s,e)=>{let{selection:{main:t}}=s.state;if(e.target.draggable){let n=s.docView.nearest(e.target);if(n&&n.isWidget){let r=n.posAtStart,o=r+n.length;(r>=t.to||o<=t.from)&&(t=P.range(r,o))}}let{inputState:i}=s;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",bn(s.state,xo,s.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Pe.dragend=s=>(s.inputState.draggedContent=null,!1);function Va(s,e,t,i){if(t=bn(s.state,vo,t),!t)return;let n=s.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=s.inputState,o=i&&r&&od(s,e)?{from:r.from,to:r.to}:null,l={from:n,insert:t},a=s.state.changes(o?[o,l]:l);s.focus(),s.dispatch({changes:a,selection:{anchor:a.mapPos(n,-1),head:a.mapPos(n,1)},userEvent:o?"move.drop":"input.drop"}),s.inputState.draggedContent=null}Pe.drop=(s,e)=>{if(!e.dataTransfer)return!1;if(s.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),n=0,r=()=>{++n==t.length&&Va(s,e,i.filter(o=>o!=null).join(s.state.lineBreak),!1)};for(let o=0;o{/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return Va(s,e,i,!0),!0}return!1};Pe.paste=(s,e)=>{if(s.state.readOnly)return!0;s.observer.flush();let t=Ph?null:e.clipboardData;return t?(Bh(s,t.getData("text/plain")||t.getData("text/uri-list")),!0):(hd(s),!1)};function pd(s,e){let t=s.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),s.focus()},50)}function md(s){let e=[],t=[],i=!1;for(let n of s.selection.ranges)n.empty||(e.push(s.sliceDoc(n.from,n.to)),t.push(n));if(!e.length){let n=-1;for(let{from:r}of s.selection.ranges){let o=s.doc.lineAt(r);o.number>n&&(e.push(o.text),t.push({from:o.from,to:Math.min(s.doc.length,o.to+1)})),n=o.number}i=!0}return{text:bn(s,xo,e.join(s.lineBreak)),ranges:t,linewise:i}}var oo=null;Pe.copy=Pe.cut=(s,e)=>{let{text:t,ranges:i,linewise:n}=md(s.state);if(!t&&!n)return!1;oo=n?t:null,e.type=="cut"&&!s.state.readOnly&&s.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Ph?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(pd(s,t),!1)};var Rh=ht.define();function Fh(s,e){let t=[];for(let i of s.facet(kh)){let n=i(s,e);n&&t.push(n)}return t?s.update({effects:t,annotations:Rh.of(!0)}):null}function $h(s){setTimeout(()=>{let e=s.hasFocus;if(e!=s.inputState.notifiedFocused){let t=Fh(s.state,e);t?s.dispatch(t):s.update([])}},10)}Ce.focus=s=>{s.inputState.lastFocusTime=Date.now(),!s.scrollDOM.scrollTop&&(s.inputState.lastScrollTop||s.inputState.lastScrollLeft)&&(s.scrollDOM.scrollTop=s.inputState.lastScrollTop,s.scrollDOM.scrollLeft=s.inputState.lastScrollLeft),$h(s)};Ce.blur=s=>{s.observer.clearSelectionRange(),$h(s)};Ce.compositionstart=Ce.compositionupdate=s=>{s.observer.editContext||(s.inputState.compositionFirstChange==null&&(s.inputState.compositionFirstChange=!0),s.inputState.composing<0&&(s.inputState.composing=0))};Ce.compositionend=s=>{s.observer.editContext||(s.inputState.composing=-1,s.inputState.compositionEndedAt=Date.now(),s.inputState.compositionPendingKey=!0,s.inputState.compositionPendingChange=s.observer.pendingRecords().length>0,s.inputState.compositionFirstChange=null,T.chrome&&T.android?s.observer.flushSoon():s.inputState.compositionPendingChange?Promise.resolve().then(()=>s.observer.flush()):setTimeout(()=>{s.inputState.composing<0&&s.docView.hasComposition&&s.update([])},50))};Ce.contextmenu=s=>{s.inputState.lastContextMenu=Date.now()};Pe.beforeinput=(s,e)=>{var t,i;if(e.inputType=="insertReplacementText"&&s.observer.editContext){let r=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],a=s.posAtDOM(l.startContainer,l.startOffset),h=s.posAtDOM(l.endContainer,l.endOffset);return Mo(s,{from:a,to:h,insert:s.state.toText(r)},null),!0}}let n;if(T.chrome&&T.android&&(n=Lh.find(r=>r.inputType==e.inputType))&&(s.observer.delayAndroidKey(n.key,n.keyCode),n.key=="Backspace"||n.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&s.hasFocus&&(s.contentDOM.blur(),s.focus())},100)}return T.ios&&e.inputType=="deleteContentForward"&&s.observer.flushSoon(),T.safari&&e.inputType=="insertText"&&s.inputState.composing>=0&&setTimeout(()=>Ce.compositionend(s,e),20),!1};var Ha=new Set;function gd(s){Ha.has(s)||(Ha.add(s),s.addEventListener("copy",()=>{}),s.addEventListener("cut",()=>{}))}var _a=["pre-wrap","normal","pre-line","break-spaces"],di=!1;function Ka(){di=!1}var lo=class{constructor(e){this.lineWrapping=e,this.doc=K.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return _a.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=n,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>nn&&(di=!0),this.height=e)}replace(e,t,i){return s.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,n){let r=this,o=i.doc;for(let l=n.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=n[l],u=r.lineAt(a,U.ByPosNoHeight,i.setDoc(t),0,0),d=u.to>=h?u:r.lineAt(h,U.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=n[l-1].toA;)a=n[l-1].fromA,f=n[l-1].fromB,l--,ar*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,n-=l.size}else if(r>n*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(n=r&&o(this.blockAt(0,i,n,r))}updateHeight(e,t=0,i=!1,n){return n&&n.from<=t&&n.more&&this.setHeight(n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}},xe=class s extends dn{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,i,n){return new qe(n,this.length,i,this.height,this.breaks)}replace(e,t,i){let n=i[0];return i.length==1&&(n instanceof s||n instanceof wt&&n.flags&4)&&Math.abs(this.length-n.length)<10?(n instanceof wt?n=new s(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):be.of(i)}updateHeight(e,t=0,i=!1,n){return n&&n.from<=t&&n.more?this.setHeight(n.heights[n.index++]):(i||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},wt=class s extends be{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,n=e.doc.lineAt(t+this.length).number,r=n-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:n,perLine:o,perChar:l}}blockAt(e,t,i,n){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,n);if(t.lineWrapping){let h=n+(e0){let r=i[i.length-1];r instanceof s?i[i.length-1]=new s(r.length+n):i.push(null,new s(n-1))}if(e>0){let r=i[0];r instanceof s?i[0]=new s(e+r.length):i.unshift(new s(e-1),null)}return be.of(i)}decomposeLeft(e,t){t.push(new s(e-1),null)}decomposeRight(e,t){t.push(null,new s(this.length-e-1))}updateHeight(e,t=0,i=!1,n){let r=t+this.length;if(n&&n.from<=t+this.length&&n.more){let o=[],l=Math.max(t,n.from),a=-1;for(n.from>t&&o.push(new s(n.from-t-1).updateHeight(e,t));l<=r&&n.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let c=n.heights[n.index++];a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let u=new xe(f,c);u.outdated=!1,o.push(u),l+=f+1}l<=r&&o.push(null,new s(r-l).updateHeight(e,l));let h=be.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(e,t).perLine)>=nn)&&(di=!0),un(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},ho=class extends be{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,n){let r=i+this.left.height;return el))return h;let f=t==U.ByPosNoHeight?U.ByPosNoHeight:U.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,n,r).join(h)}forEachLine(e,t,i,n,r,o){let l=n+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,U.ByPos,i,n,r);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let n=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-n,t-n,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Wa(r,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,n=i+this.break;if(e>=n)return this.right.decomposeRight(e-n,t);e2*t.size||t.size>2*e.size?be.of(this.break?[e,null,t]:[e,t]):(this.left=un(this.left,e),this.right=un(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,n){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return n&&n.from<=t+r.length&&n.more?a=r=r.updateHeight(e,t,i,n):r.updateHeight(e,t,i),n&&n.from<=l+o.length&&n.more?a=o=o.updateHeight(e,l,i,n):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Wa(s,e){let t,i;s[e]==null&&(t=s[e-1])instanceof wt&&(i=s[e+1])instanceof wt&&s.splice(e-1,3,new wt(t.length+1+i.length))}var yd=5,fo=class s{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof xe?n.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new xe(i-this.pos,-1)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=yd)&&this.addLineDeco(n,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new xe(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let i=new wt(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof xe)return e;let t=new xe(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,e),n.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof xe)&&!this.isCovered?this.nodes.push(new xe(0,-1)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==s.parentNode?n.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function kd(s,e){let t=s.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var Gi=class{constructor(e,t,i){this.from=e,this.to=t,this.size=i}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new lo(t),this.stateDeco=e.facet(is).filter(i=>typeof i!="function"),this.heightMap=be.empty().applyChanges(this.stateDeco,K.empty,this.heightOracle.setDoc(e.doc),[new Ue(0,0,0,e.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Q.set(this.lineGaps.map(i=>i.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let n=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>n>=r&&n<=o)){let{from:r,to:o}=this.lineBlockAt(n);e.push(new fi(r,o))}}return this.viewports=e.sort((i,n)=>i.from-n.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?qa:new po(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(qi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=this.state.facet(is).filter(f=>typeof f!="function");let n=e.changedRanges,r=Ue.extendWithRanges(n,bd(i,this.stateDeco,e?e.changes:ye.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);Ka(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||di)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Lu)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,i=window.getComputedStyle(t),n=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?ie.RTL:ie.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:S,scaleY:v}=Ja(t,l);(S>.005&&Math.abs(this.scaleX-S)>.005||v>.005&&Math.abs(this.scaleY-v)>.005)&&(this.scaleX=S,this.scaleY=v,h|=8,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(n.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=8);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=Za(e.scrollDOM);let p=(this.printing?kd:wd)(t,this.paddingTop),m=p.top-this.pixelViewport.top,g=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let y=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(y!=this.inView&&(this.inView=y,y&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let w=l.width;if((this.contentDOMWidth!=w||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=8),a){let S=e.docView.measureVisibleLineHeights(this.viewport);if(n.mustRefreshForHeights(S)&&(o=!0),o||n.lineWrapping&&Math.abs(w-this.contentDOMWidth)>n.charWidth){let{lineHeight:v,charWidth:M,textHeight:O}=e.docView.measureTextSize();o=v>0&&n.refresh(r,v,M,O,w/M,S),o&&(e.docView.minWidth=0,h|=8)}m>0&&g>0?f=Math.max(m,g):m<0&&g<0&&(f=Math.min(m,g)),Ka();for(let v of this.viewports){let M=v.from==this.viewport.from?S:e.docView.measureVisibleLineHeights(v);this.heightMap=(o?be.empty().applyChanges(this.stateDeco,K.empty,this.heightOracle,[new Ue(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(n,0,o,new ao(v.from,M))}di&&(h|=2)}let x=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return x&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||x)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),n=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new fi(n.lineAt(o-i*1e3,U.ByHeight,r,0,0).from,n.lineAt(l+(1-i)*1e3,U.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=n.lineAt(h,U.ByPos,r,0,0),u;t.y=="center"?u=(c.top+c.bottom)/2-f/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&n>o-2*1e3&&r>1,o=n<<1;if(this.defaultTextDirection!=ie.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&yy.from>=u.from&&y.to<=u.to&&Math.abs(y.from-f)y.fromw));if(!g){if(cy.from<=c&&y.to>=c)){let y=t.moveToLineBoundary(P.cursor(c),!1,!0).head;y>f&&(c=y)}g=new Gi(f,c,this.gapSize(u,f,c,d))}l.push(g)},h=f=>{if(f.lengthf.from&&a(f.from,d,f,c),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];Z.spans(e,this.viewport.from,this.viewport.to,{span(n,r){t.push({from:n,to:r})},point(){}},20);let i=t.length!=this.visibleRanges.length||this.visibleRanges.some((n,r)=>n.from!=t[r].from||n.to!=t[r].to);return this.visibleRanges=t,i?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||qi(this.heightMap.lineAt(e,U.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||qi(this.heightMap.lineAt(this.scaler.fromDOM(e),U.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return qi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},fi=class{constructor(e,t){this.from=e,this.to=t}};function Sd(s,e,t){let i=[],n=s,r=0;return Z.spans(t,s,e,{span(){},point(o,l){o>n&&(i.push({from:n,to:o}),r+=o-n),n=l}},20),n=1)return e[e.length-1].to;let i=Math.floor(s*t);for(let n=0;;n++){let{from:r,to:o}=e[n],l=o-r;if(i<=l)return r+i;i-=l}}function Zs(s,e){let t=0;for(let{from:i,to:n}of s.ranges){if(e<=n){t+=e-i;break}t+=n-i}return t/s.total}function vd(s,e){for(let t of s)if(e(t))return t}var qa={toDOM(s){return s},fromDOM(s){return s},scale:1,eq(s){return s==this}},po=class s{constructor(e,t,i){let n=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,U.ByPos,e,0,0).top,f=t.lineAt(a,U.ByPos,e,0,0).bottom;return n+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(t.height-n);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,n=0;;t++){let r=tt.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}};function qi(s,e){if(e.scale==1)return s;let t=e.toDOM(s.top),i=e.toDOM(s.bottom);return new qe(s.from,s.length,t,i-t,Array.isArray(s._content)?s._content.map(n=>qi(n,e)):s._content)}var en=R.define({combine:s=>s.join(" ")}),mo=R.define({combine:s=>s.indexOf(!0)>-1}),go=ve.newName(),Vh=ve.newName(),Hh=ve.newName(),_h={"&light":"."+Vh,"&dark":"."+Hh};function yo(s,e,t){return new ve(e,{finish(i){return/&/.test(i)?i.replace(/&\\w*/,n=>{if(n=="&")return s;if(!t||!t[n])throw new RangeError(`Unsupported selector: ${n}`);return t[n]}):s+" "+i}})}var xd=yo("."+go,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:`url(\'data:image/svg+xml,\')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},_h),Cd={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Kr=T.ie&&T.ie_version<=11,bo=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new qr,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(T.ie&&T.ie_version<=11||T.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&e.constructor.EDIT_CONTEXT!==!1&&!(T.chrome&&T.chrome_version<126)&&(this.editContext=new wo(e),e.state.facet(bt)&&(e.contentDOM.editContext=this.editContext.editContext)),Kr&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(bt)?i.root.activeElement!=this.dom:!tn(i.dom,n))return;let r=n.anchorNode&&i.docView.nearest(n.anchorNode);if(r&&r.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(T.ie&&T.ie_version<=11||T.android&&T.chrome)&&!i.state.selection.main.empty&&n.focusNode&&ji(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Ji(e.root);if(!t)return!1;let i=T.safari&&e.root.nodeType==11&&uu(this.dom.ownerDocument)==this.dom&&Ad(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let n=tn(this.dom,i);return n&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&ci(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(n)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,n=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(n=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:n}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),n=this.selectionChanged&&tn(this.dom,this.selectionRange);if(e<0&&!n)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new so(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,n=Dh(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!t.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),n}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.flags|=4),e.type=="childList"){let i=ja(t,e.previousSibling||e.target.previousSibling,-1),n=ja(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:n?t.posBefore(n):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(bt)!=e.state.facet(bt)&&(e.view.contentDOM.editContext=e.state.facet(bt)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function ja(s,e,t){for(;e;){let i=z.get(e);if(i&&i.parent==s)return i;let n=e.parentNode;e=n!=s.dom?n:t>0?e.nextSibling:e.previousSibling}return null}function za(s,e){let t=e.startContainer,i=e.startOffset,n=e.endContainer,r=e.endOffset,o=s.docView.domAtPos(s.state.selection.main.anchor);return ji(o.node,o.offset,n,r)&&([t,i,n,r]=[n,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:r}}function Ad(s,e){if(e.getComposedRanges){let n=e.getComposedRanges(s.root)[0];if(n)return za(s,n)}let t=null;function i(n){n.preventDefault(),n.stopImmediatePropagation(),t=n.getTargetRanges()[0]}return s.contentDOM.addEventListener("beforeinput",i,!0),s.dom.ownerDocument.execCommand("indent"),s.contentDOM.removeEventListener("beforeinput",i,!0),t?za(s,t):null}var wo=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let{anchor:n}=e.state.selection.main,r={from:this.toEditorPos(i.updateRangeStart),to:this.toEditorPos(i.updateRangeEnd),insert:K.of(i.text.split(`\n`))};r.from==this.from&&nthis.to&&(r.to=n),!(r.from==r.to&&!r.insert.length)&&(this.pendingContextChange=r,e.state.readOnly||Mo(e,r,P.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd))),this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)))},this.handlers.characterboundsupdate=i=>{let n=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let n=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(o!="None"&&l!="None"){let a=`text-decoration: underline ${o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${l=="Thin"?1:2}px`;n.push(Q.mark({attributes:{style:a}}).range(this.toEditorPos(r.rangeStart),this.toEditorPos(r.rangeEnd)))}}e.dispatch({effects:xh.of(Q.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{e.inputState.composing=-1,e.inputState.compositionFirstChange=null};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let n=Ji(i.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,n=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(n&&o>=n.to)if(n.from==r&&n.to==o&&n.insert.eq(h)){n=this.pendingContextChange=null,t+=f,this.to+=f;return}else n=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}t+=f}),n&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange;!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.resetRange(e.state),this.editContext.updateText(0,this.editContext.text.length,e.state.doc.sliceString(this.from,this.to)),this.setSelection(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(i,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e){return e+this.from}toContextPos(e){return e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},$=class s{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(n=>n.forEach(r=>i(r,this)))||(n=>this.update(n)),this.dispatch=this.dispatch.bind(this),this._root=e.root||gu(e.parent)||document,this.viewState=new pn(e.state||X.create(e)),e.scrollTo&&e.scrollTo.is(Gs)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(_i).map(n=>new Yi(n));for(let n of this.plugins)n.update(this);this.observer=new bo(this),this.inputState=new no(this),this.inputState.ensureHandlers(this.plugins),this.docView=new fn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let t=e.length==1&&e[0]instanceof de?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,n,r=this.state;for(let u of e){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn\'t start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation(Rh))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Fh(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet(X.phrases)!=this.state.facet(X.phrases))return this.setState(r);n=hn.create(this,r,e),n.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection;c=new Ui(d.empty?d:P.cursor(d.head,d.head>d.anchor?-1:1))}for(let d of u.effects)d.is(Gs)&&(c=d.value.clip(this.state))}this.viewState.update(n,c),this.bidiCache=mn.update(this.bidiCache,n.changes),n.empty||(this.updatePlugins(n),this.inputState.update(n)),t=this.docView.update(n),this.state.facet(Ki)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(n.startState.facet(en)!=n.state.facet(en)&&(this.viewState.mustMeasureContent=!0),(t||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!n.empty)for(let u of this.state.facet(eo))try{u(n)}catch(d){Le(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Dh(this,f)&&h.force&&ci(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new pn(e),this.plugins=e.facet(_i).map(i=>new Yi(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new fn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(_i),i=e.state.facet(_i);if(t!=i){let n=[];for(let r of i){let o=t.indexOf(r);if(o<0)n.push(new Yi(r));else{let l=this.plugins[o];l.mustUpdate=e,n.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=n,this.pluginMap.clear()}else for(let n of this.plugins)n.mustUpdate=e;for(let n=0;n-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.scrollDOM,n=i.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(Za(i))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(n);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure(this);if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Le(this.state,p),Ua}}),c=hn.create(this,this.state,[]),u=!1;c.flags|=a,t?t.flags|=a:t=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1){n=n+p,i.scrollTop=n/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(eo))l(t)}get themeClasses(){return go+" "+(this.state.facet(mo)?Hh:Vh)+" "+this.state.facet(en)}updateAttrs(){let e=Ya(this,Ch,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(bt)?"true":"false",class:"cm-content",style:`${T.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Ya(this,Co,t);let i=this.observer.ignore(()=>{let n=Gr(this.contentDOM,this.contentAttrs,t),r=Gr(this.dom,this.editorAttrs,e);return n||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let n of i.effects)if(n.is(s.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=n.value}}mountStyles(){this.styleModules=this.state.facet(Ki);let e=this.state.facet(s.cspNonce);ve.mount(this.root,this.styleModules.concat(xd).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn\'t allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;ti.spec==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return _r(this,e,Da(this,e,t,i))}moveByGroup(e,t){return _r(this,e,Da(this,e,t,i=>Yu(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),n=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return P.cursor(r.side(t,n)+e.from,r.forward(!t,n)?1:-1)}moveToLineBoundary(e,t,i=!0){return Uu(this,e,t,i)}moveVertically(e,t,i){return _r(this,e,Gu(this,e,t,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),Nh(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(e),r=this.bidiSpans(n),o=r[je.find(r,e-n.from,-1,t)];return gn(i,o.dir==ie.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Sh)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Md)return dh(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||uh(r.isolates,i=Ma(this,e))))return r.order;i||(i=Ma(this,e));let n=Eu(e.text,t,i);return this.bidiCache.push(new mn(e.from,e.to,t,i,!0,n)),n}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||T.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Xa(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return Gs.of(new Ui(typeof e=="number"?P.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return Gs.of(new Ui(P.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Ut.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Ut.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=ve.newName(),n=[en.of(i),Ki.of(yo(`.${i}`,e))];return t&&t.dark&&n.push(mo.of(!0)),n}static baseTheme(e){return js.lowest(Ki.of(yo("."+go,e,_h)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),n=i&&z.get(i)||z.get(e);return((t=n==null?void 0:n.rootView)===null||t===void 0?void 0:t.view)||null}};$.styleModule=Ki;$.inputHandler=wh;$.clipboardInputFilter=vo;$.clipboardOutputFilter=xo;$.scrollHandler=vh;$.focusChangeEffect=kh;$.perLineTextDirection=Sh;$.exceptionSink=bh;$.updateListener=eo;$.editable=bt;$.mouseSelectionStyle=yh;$.dragMovesSelection=gh;$.clickAddsSelectionRange=mh;$.decorations=is;$.outerDecorations=Ah;$.atomicRanges=Ao;$.bidiIsolatedRanges=Mh;$.scrollMargins=Oh;$.darkTheme=mo;$.cspNonce=R.define({combine:s=>s.length?s[0]:""});$.contentAttributes=Co;$.editorAttributes=Ch;$.lineWrapping=$.contentAttributes.of({class:"cm-lineWrapping"});$.announce=J.define();var Md=4096,Ua={},mn=class s{constructor(e,t,i,n,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=n,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],n=e.length?e[e.length-1].dir:ie.LTR;for(let r=Math.max(0,e.length-10);r=0;n--){let r=i[n],o=typeof r=="function"?r(s):r;o&&Yr(o,t)}return t}var tm=T.mac?"mac":T.windows?"win":T.linux?"linux":"key";var Od=!T.ios;var Ga={".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"}},".cm-content":{"& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}};Od&&(Ga[".cm-line"].caretColor=Ga[".cm-content"].caretColor="transparent !important");var im=/x/.unicode!=null?"gu":"g";var sm=$.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"\'\'",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var ut=class extends ft{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};ut.prototype.elementClass="";ut.prototype.toDOM=void 0;ut.prototype.mapMode=ue.TrackBefore;ut.prototype.startSide=ut.prototype.endSide=-1;ut.prototype.point=!0;var Td=0,ss=class{constructor(e,t){this.from=e,this.to=t}},W=class{constructor(e={}){this.id=Td++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn\'t define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can\'t add per-node props to node types");return typeof e!="function"&&(e=we.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}};W.closedBy=new W({deserialize:s=>s.split(" ")});W.openedBy=new W({deserialize:s=>s.split(" ")});W.group=new W({deserialize:s=>s.split(" ")});W.isolate=new W({deserialize:s=>{if(s&&s!="rtl"&&s!="ltr"&&s!="auto")throw new RangeError("Invalid value for isolate: "+s);return s||"auto"}});W.contextHash=new W({perNode:!0});W.lookAhead=new W({perNode:!0});W.mounted=new W({perNode:!0});var pi=class{constructor(e,t,i){this.tree=e,this.overlay=t,this.parser=i}static get(e){return e&&e.props&&e.props[W.mounted.id]}},Ed=Object.create(null),we=class s{constructor(e,t,i,n=0){this.name=e,this.props=t,this.id=i,this.flags=n}static define(e){let t=e.props&&e.props.length?Object.create(null):Ed,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),n=new s(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(n)),r){if(r[0].perNode)throw new RangeError("Can\'t store a per-node prop on a node type");t[r[0].id]=r[1]}}return n}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(W.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let n of i.split(" "))t[n]=e[i];return i=>{for(let n=i.prop(W.group),r=-1;r<(n?n.length:0);r++){let o=t[r<0?i.name:n[r]];if(o)return o}}}};we.none=new we("",Object.create(null),0,8);var wn=new WeakMap,Kh=new WeakMap,se;(function(s){s[s.ExcludeBuffers=1]="ExcludeBuffers",s[s.IncludeAnonymous=2]="IncludeAnonymous",s[s.IgnoreMounts=4]="IgnoreMounts",s[s.IgnoreOverlays=8]="IgnoreOverlays"})(se||(se={}));var ae=class s{constructor(e,t,i,n,r){if(this.type=e,this.children=t,this.positions=i,this.length=n,this.props=null,r&&r.length){this.props=Object.create(null);for(let[o,l]of r)this.props[typeof o=="number"?o:o.id]=l}}toString(){let e=pi.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let i of this.children){let n=i.toString();n&&(t&&(t+=","),t+=n)}return this.type.name?(/\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new os(this.topNode,e)}cursorAt(e,t=0,i=0){let n=wn.get(this)||this.topNode,r=new os(n);return r.moveTo(e,t),wn.set(this,r._tree),r}get topNode(){return new Ge(this,0,0,null)}resolve(e,t=0){let i=ns(wn.get(this)||this.topNode,e,t,!1);return wn.set(this,i),i}resolveInner(e,t=0){let i=ns(Kh.get(this)||this.topNode,e,t,!0);return Kh.set(this,i),i}resolveStack(e,t=0){return Nd(this,e,t)}iterate(e){let{enter:t,leave:i,from:n=0,to:r=this.length}=e,o=e.mode||0,l=(o&se.IncludeAnonymous)>0;for(let a=this.cursor(o|se.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=n&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Po(we.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,n)=>new s(this.type,t,i,n,this.propValues),e.makeTree||((t,i,n)=>new s(we.none,t,i,n)))}static build(e){return Dd(e)}};ae.empty=new ae(we.none,[],[],0);var Oo=class s{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new s(this.buffer,this.index)}},xt=class s{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return we.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let n=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function ns(s,e,t,i){for(var n;s.from==s.to||(t<1?s.from>=e:s.from>e)||(t>-1?s.to<=e:s.to0?l.length:-1;e!=h;e+=t){let f=l[e],c=a[e]+o.from;if(jh(n,i,c,c+f.length)){if(f instanceof xt){if(r&se.ExcludeBuffers)continue;let u=f.findChild(0,f.buffer.length,t,i-c,n);if(u>-1)return new rs(new Eo(o,f,e,c),null,u)}else if(r&se.IncludeAnonymous||!f.type.isAnonymous||Lo(f)){let u;if(!(r&se.IgnoreMounts)&&(u=pi.get(f))&&!u.overlay)return new s(u.tree,c,e,o);let d=new s(f,c,e,o);return r&se.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(t<0?f.children.length-1:0,t,i,n)}}}if(r&se.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,i=0){let n;if(!(i&se.IgnoreOverlays)&&(n=pi.get(this._tree))&&n.overlay){let r=e-this.from;for(let{from:o,to:l}of n.overlay)if((t>0?o<=r:o=r:l>r))return new s(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function Wh(s,e,t,i){let n=s.cursor(),r=[];if(!n.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=n.type.is(t),!n.nextSibling())return r}for(;;){if(i!=null&&n.type.is(i))return r;if(n.type.is(e)&&r.push(n.node),!n.nextSibling())return i==null?r:[]}}function To(s,e,t=e.length-1){for(let i=s.parent;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}var Eo=class{constructor(e,t,i,n){this.parent=e,this.buffer=t,this.index=i,this.start=n}},rs=class s extends Sn{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new s(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,i=0){if(i&se.ExcludeBuffers)return null;let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new s(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new s(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new s(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,n=this.index+4,r=i.buffer[this.index+3];if(r>n){let o=i.buffer[this.index+1];e.push(i.slice(n,r,o)),t.push(0)}return new ae(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function zh(s){if(!s.length)return null;let e=0,t=s[0];for(let r=1;rt.from||o.to=e){let l=new Ge(o.tree,o.overlay[0].from+r.from,-1,r);(n||(n=[i])).push(ns(l,e,t,!1))}}return n?zh(n):i}var os=class{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof Ge)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:n}=this.buffer;return this.type=t||n.set.types[n.buffer[e]],this.from=i+n.buffer[e+1],this.to=i+n.buffer[e+2],!0}yield(e){return e?e instanceof Ge?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:n}=this.buffer,r=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&se.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&se.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&se.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let n=i<0?0:this.stack[i]+4;if(this.index!=n)return this.yieldBuf(t.findChild(n,this.index,-1,0,4))}else{let n=t.buffer[this.index+3];if(n<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(n)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:n}=this;if(n){if(e>0){if(this.index-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&se.IncludeAnonymous||l instanceof xt||!l.type.isAnonymous||Lo(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==n){if(n==this.index)return o;t=o,i=r+1;break e}n=this.stack[--r]}for(let n=i;n=0;r--){if(r<0)return To(this.node,e,n);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[n]&&e[n]!=o.name)return!1;n--}}return!0}};function Lo(s){return s.children.some(e=>e instanceof xt||!e.type.isAnonymous||Lo(e))}function Dd(s){var e;let{buffer:t,nodeSet:i,maxBufferLength:n=1024,reused:r=[],minRepeatType:o=i.types.length}=s,l=Array.isArray(t)?new Oo(t,t.length):t,a=i.types,h=0,f=0;function c(v,M,O,C,L,N){let{id:D,start:B,end:q,size:I}=l,ne=f;for(;I<0;)if(l.next(),I==-1){let lt=r[D];O.push(lt),C.push(B-v);return}else if(I==-3){h=D;return}else if(I==-4){f=D;return}else throw new RangeError(`Unrecognized record size: ${I}`);let Pt=a[D],ti,Bt,Nl=B-v;if(q-B<=n&&(Bt=g(l.pos-M,L))){let lt=new Uint16Array(Bt.size-Bt.skip),Se=l.pos-Bt.size,He=lt.length;for(;l.pos>Se;)He=y(Bt.start,lt,He);ti=new xt(lt,q-Bt.start,i),Nl=Bt.start-v}else{let lt=l.pos-I;l.next();let Se=[],He=[],It=D>=o?D:-1,ii=0,Ds=q;for(;l.pos>lt;)It>=0&&l.id==It&&l.size>=0?(l.end<=Ds-n&&(p(Se,He,B,ii,l.end,Ds,It,ne),ii=Se.length,Ds=l.end),l.next()):N>2500?u(B,lt,Se,He):c(B,lt,Se,He,It,N+1);if(It>=0&&ii>0&&ii-1&&ii>0){let Dl=d(Pt);ti=Po(Pt,Se,He,0,Se.length,0,q-B,Dl,Dl)}else ti=m(Pt,Se,He,q-B,ne-q)}O.push(ti),C.push(Nl)}function u(v,M,O,C){let L=[],N=0,D=-1;for(;l.pos>M;){let{id:B,start:q,end:I,size:ne}=l;if(ne>4)l.next();else{if(D>-1&&q=0;I-=3)B[ne++]=L[I],B[ne++]=L[I+1]-q,B[ne++]=L[I+2]-q,B[ne++]=ne;O.push(new xt(B,L[2]-q,i)),C.push(q-v)}}function d(v){return(M,O,C)=>{let L=0,N=M.length-1,D,B;if(N>=0&&(D=M[N])instanceof ae){if(!N&&D.type==v&&D.length==C)return D;(B=D.prop(W.lookAhead))&&(L=O[N]+D.length+B)}return m(v,M,O,C,L)}}function p(v,M,O,C,L,N,D,B){let q=[],I=[];for(;v.length>C;)q.push(v.pop()),I.push(M.pop()+O-L);v.push(m(i.types[D],q,I,N-L,B-N)),M.push(L-O)}function m(v,M,O,C,L=0,N){if(h){let D=[W.contextHash,h];N=N?[D].concat(N):[D]}if(L>25){let D=[W.lookAhead,L];N=N?[D].concat(N):[D]}return new ae(v,M,O,C,N)}function g(v,M){let O=l.fork(),C=0,L=0,N=0,D=O.end-n,B={size:0,start:0,skip:0};e:for(let q=O.pos-v;O.pos>q;){let I=O.size;if(O.id==M&&I>=0){B.size=C,B.start=L,B.skip=N,N+=4,C+=4,O.next();continue}let ne=O.pos-I;if(I<0||ne=o?4:0,ti=O.start;for(O.next();O.pos>ne;){if(O.size<0)if(O.size==-3)Pt+=4;else break e;else O.id>=o&&(Pt+=4);O.next()}L=ti,C+=I,N+=Pt}return(M<0||C==v)&&(B.size=C,B.start=L,B.skip=N),B.size>4?B:void 0}function y(v,M,O){let{id:C,start:L,end:N,size:D}=l;if(l.next(),D>=0&&C4){let q=l.pos-(D-4);for(;l.pos>q;)O=y(v,M,O)}M[--O]=B,M[--O]=N-v,M[--O]=L-v,M[--O]=C}else D==-3?h=C:D==-4&&(f=C);return O}let w=[],x=[];for(;l.pos>0;)c(s.start||0,s.bufferStart||0,w,x,-1,0);let S=(e=s.length)!==null&&e!==void 0?e:w.length?x[0]+w[0].length:0;return new ae(a[s.topID],w.reverse(),x.reverse(),S)}var qh=new WeakMap;function kn(s,e){if(!s.isAnonymous||e instanceof xt||e.type!=s)return 1;let t=qh.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=s||!(i instanceof ae)){t=1;break}t+=kn(s,i)}qh.set(e,t)}return t}function Po(s,e,t,i,n,r,o,l,a){let h=0;for(let p=i;p=f)break;M+=O}if(x==S+1){if(M>f){let O=p[S];d(O.children,O.positions,0,O.children.length,m[S]+w);continue}c.push(p[S])}else{let O=m[x-1]+p[x-1].length-v;c.push(Po(s,p,m,S,x,v,O,null,a))}u.push(v+w-r)}}return d(e,t,i,n,0),(l||a)(c,u,o)}var Yt=class s{constructor(e,t,i,n,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=n,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let n=[new s(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&n.push(r);return n}static applyChanges(e,t,i=128){if(!t.length)return e;let n=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new s(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&n.push(u),o.to>c)break;o=rnew ss(n.from,n.to)):[new ss(0,0)]:[new ss(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let n=this.startParse(e,t,i);for(;;){let r=n.advance();if(r)return r}}},Do=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var rm=new W({perNode:!0});var Ld=0,Be=class s{constructor(e,t,i,n){this.name=e,this.set=t,this.base=i,this.modified=n,this.id=Ld++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof s&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let n=new s(i,[],null,[]);if(n.set.push(n),t)for(let r of t.set)n.set.push(r);return n}static defineModifier(e){let t=new Mn(e);return i=>i.modified.indexOf(t)>-1?i:Mn.get(i.base||i,i.modified.concat(t).sort((n,r)=>n.id-r.id))}},Pd=0,Mn=class s{constructor(e){this.name=e,this.instances=[],this.id=Pd++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Bd(t,l.modified));if(i)return i;let n=[],r=new Be(e.name,n,e,t);for(let l of t)l.instances.push(r);let o=Id(t);for(let l of e.set)if(!l.modified.length)for(let a of o)n.push(s.get(l,a));return r}};function Bd(s,e){return s.length==e.length&&s.every((t,i)=>t==e[i])}function Id(s){let e=[[]];for(let t=0;ti.length-t.length)}function Gh(s){let e=Object.create(null);for(let t in s){let i=s[t];Array.isArray(i)||(i=[i]);for(let n of t.split(" "))if(n){let r=[],o=2,l=n;for(let c=0;;){if(l=="..."&&c>0&&c+3==n.length){o=1;break}let u=/^"(?:[^"\\\\]|\\\\.)*?"|[^\\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+n);if(r.push(u[0]=="*"?"":u[0][0]==\'"\'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==n.length)break;let d=n[c++];if(c==n.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+n);l=n.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+n);let f=new mi(i,o,a>0?r.slice(0,a):null);e[h]=f.sort(e[h])}}return Jh.add(e)}var Jh=new W,mi=class{constructor(e,t,i,n){this.tags=e,this.mode=t,this.context=i,this.next=n}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=n;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Rd(s,e){let t=null;for(let i of s){let n=i.style(e);n&&(t=t?t+" "+n:n)}return t}function Xh(s,e,t,i=0,n=s.length){let r=new Io(i,Array.isArray(e)?e:[e],t);r.highlightRange(s.cursor(),i,n,"",r.highlighters),r.flush(n)}var Io=class{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,n,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=n,f=Fd(e)||mi.empty,c=Rd(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(n+=(n?" ":"")+c)),this.startSpan(Math.max(t,l),h),f.opaque)return;let u=e.tree&&e.tree.prop(W.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(g=>!g.scope||g.scope(u.tree.type)),m=e.firstChild();for(let g=0,y=l;;g++){let w=g=x||!e.nextSibling())););if(!w||x>i)break;y=w.to+l,y>t&&(this.highlightRange(d.cursor(),Math.max(t,w.from+l),Math.min(i,y),"",p),this.startSpan(Math.min(i,y),h))}m&&e.parent()}else if(e.firstChild()){u&&(n="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,n,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function Fd(s){let e=s.type.prop(Jh);for(;e&&e.context&&!s.matchContext(e.context);)e=e.next;return e||null}var A=Be.define,xn=A(),Ct=A(),Uh=A(Ct),Yh=A(Ct),At=A(),Cn=A(At),Bo=A(At),Qe=A(),Gt=A(Qe),Je=A(),Xe=A(),Ro=A(),ls=A(Ro),An=A(),b={comment:xn,lineComment:A(xn),blockComment:A(xn),docComment:A(xn),name:Ct,variableName:A(Ct),typeName:Uh,tagName:A(Uh),propertyName:Yh,attributeName:A(Yh),className:A(Ct),labelName:A(Ct),namespace:A(Ct),macroName:A(Ct),literal:At,string:Cn,docString:A(Cn),character:A(Cn),attributeValue:A(Cn),number:Bo,integer:A(Bo),float:A(Bo),bool:A(At),regexp:A(At),escape:A(At),color:A(At),url:A(At),keyword:Je,self:A(Je),null:A(Je),atom:A(Je),unit:A(Je),modifier:A(Je),operatorKeyword:A(Je),controlKeyword:A(Je),definitionKeyword:A(Je),moduleKeyword:A(Je),operator:Xe,derefOperator:A(Xe),arithmeticOperator:A(Xe),logicOperator:A(Xe),bitwiseOperator:A(Xe),compareOperator:A(Xe),updateOperator:A(Xe),definitionOperator:A(Xe),typeOperator:A(Xe),controlOperator:A(Xe),punctuation:Ro,separator:A(Ro),bracket:ls,angleBracket:A(ls),squareBracket:A(ls),paren:A(ls),brace:A(ls),content:Qe,heading:Gt,heading1:A(Gt),heading2:A(Gt),heading3:A(Gt),heading4:A(Gt),heading5:A(Gt),heading6:A(Gt),contentSeparator:A(Qe),list:A(Qe),quote:A(Qe),emphasis:A(Qe),strong:A(Qe),link:A(Qe),monospace:A(Qe),strikethrough:A(Qe),inserted:A(),deleted:A(),changed:A(),invalid:A(),meta:An,documentMeta:A(An),annotation:A(An),processingInstruction:A(An),definition:Be.defineModifier("definition"),constant:Be.defineModifier("constant"),function:Be.defineModifier("function"),standard:Be.defineModifier("standard"),local:Be.defineModifier("local"),special:Be.defineModifier("special")};for(let s in b){let e=b[s];e instanceof Be&&(e.name=s)}var am=Fo([{tag:b.link,class:"tok-link"},{tag:b.heading,class:"tok-heading"},{tag:b.emphasis,class:"tok-emphasis"},{tag:b.strong,class:"tok-strong"},{tag:b.keyword,class:"tok-keyword"},{tag:b.atom,class:"tok-atom"},{tag:b.bool,class:"tok-bool"},{tag:b.url,class:"tok-url"},{tag:b.labelName,class:"tok-labelName"},{tag:b.inserted,class:"tok-inserted"},{tag:b.deleted,class:"tok-deleted"},{tag:b.literal,class:"tok-literal"},{tag:b.string,class:"tok-string"},{tag:b.number,class:"tok-number"},{tag:[b.regexp,b.escape,b.special(b.string)],class:"tok-string2"},{tag:b.variableName,class:"tok-variableName"},{tag:b.local(b.variableName),class:"tok-variableName tok-local"},{tag:b.definition(b.variableName),class:"tok-variableName tok-definition"},{tag:b.special(b.variableName),class:"tok-variableName2"},{tag:b.definition(b.propertyName),class:"tok-propertyName tok-definition"},{tag:b.typeName,class:"tok-typeName"},{tag:b.namespace,class:"tok-namespace"},{tag:b.className,class:"tok-className"},{tag:b.macroName,class:"tok-macroName"},{tag:b.propertyName,class:"tok-propertyName"},{tag:b.operator,class:"tok-operator"},{tag:b.comment,class:"tok-comment"},{tag:b.meta,class:"tok-meta"},{tag:b.invalid,class:"tok-invalid"},{tag:b.punctuation,class:"tok-punctuation"}]);var $o,hs=new W;var $d=new W,Ae=class{constructor(e,t,i=[],n=""){this.data=e,this.name=n,X.prototype.hasOwnProperty("tree")||Object.defineProperty(X.prototype,"tree",{get(){return fs(this)}}),this.parser=t,this.extension=[gi.of(this),X.languageData.of((r,o,l)=>{let a=Qh(r,o,l),h=a.type.prop(hs);if(!h)return[];let f=r.facet(h),c=a.type.prop($d);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(e,t,i=-1){return Qh(e,t,i).type.prop(hs)==this.data}findRegions(e){let t=e.facet(gi);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],n=(r,o)=>{if(r.prop(hs)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(W.mounted);if(l){if(l.tree.prop(hs)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(n(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},as=null,Wo=class s{constructor(e,t,i=[],n,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=n,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new s(e,t,[],ae.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Ko(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=ae.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let n=Date.now()+e;e=()=>Date.now()>n}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Yt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=as;as=this;try{return e()}finally{as=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Zh(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:n,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Yt.applyChanges(i,a),n=ae.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=e.mapPos(h.from,1),c=e.mapPos(h.to,-1);fe.from&&(this.fragments=Zh(this.fragments,n,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends vn{createParse(t,i,n){let r=n[0].from,o=n[n.length-1].to;return{parsedPos:r,advance(){let a=as;if(a){for(let h of n)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new ae(we.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return as}};function Zh(s,e,t){return Yt.applyChanges(s,[{fromA:e,toA:t,fromB:e,toB:t}])}var cs=class s{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new s(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=Wo.create(e.facet(gi).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new s(i)}};Ae.state=at.define({create:cs.init,update(s,e){for(let t of e.effects)if(t.is(Ae.setState))return t.value;return e.startState.facet(gi)!=e.state.facet(gi)?cs.init(e.state):s.apply(e)}});var nf=s=>{let e=setTimeout(()=>s(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(nf=s=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(s,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Vo=typeof navigator!="undefined"&&(!(($o=navigator.scheduling)===null||$o===void 0)&&$o.isInputPending)?()=>navigator.scheduling.isInputPending():null,Vd=Ut.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Ae.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Ae.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=nf(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndn+1e3,a=r.context.work(()=>Vo&&Vo()||Date.now()>o,n+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Ae.setState.of(new cs(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>Le(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),gi=R.define({combine(s){return s.length?s[0]:null},enables:s=>[Ae.state,Vd,$.contentAttributes.compute([s],e=>{let t=e.facet(s);return t&&t.name?{"data-language":t.name}:{}})]});var Mt=class s{constructor(e,t){this.specs=e;let i;function n(l){let a=ve.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof t.all=="string"?t.all:t.all?n(t.all):void 0,o=t.scope;this.scope=o instanceof Ae?l=>l.prop(hs)==o.data:o?l=>l==o:void 0,this.style=Fo(e.map(l=>({tag:l.tag,class:l.class||n(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new ve(i):null,this.themeType=t.themeType}static define(e,t){return new s(e,t||{})}},qo=R.define(),rf=R.define({combine(s){return s.length?[s[0]]:null}});function Ho(s){let e=s.facet(qo);return e.length?e:s.facet(rf)}function On(s,e){let t=[Hd],i;return s instanceof Mt&&(s.module&&t.push($.styleModule.of(s.module)),i=s.themeType),e!=null&&e.fallback?t.push(rf.of(s)):i?t.push(qo.computeN([$.darkTheme],n=>n.facet($.darkTheme)==(i=="dark")?[s]:[])):t.push(qo.of(s)),t}var jo=class{constructor(e){this.markCache=Object.create(null),this.tree=fs(e.state),this.decorations=this.buildDeco(e,Ho(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=fs(e.state),i=Ho(e.state),n=i!=Ho(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||n)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return Q.none;let i=new _t;for(let{from:n,to:r}of e.visibleRanges)Xh(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=Q.mark({class:a})))},n,r);return i.finish()}},Hd=js.high(Ut.fromClass(jo,{decorations:s=>s.decorations})),bm=Mt.define([{tag:b.meta,color:"#404740"},{tag:b.link,textDecoration:"underline"},{tag:b.heading,textDecoration:"underline",fontWeight:"bold"},{tag:b.emphasis,fontStyle:"italic"},{tag:b.strong,fontWeight:"bold"},{tag:b.strikethrough,textDecoration:"line-through"},{tag:b.keyword,color:"#708"},{tag:[b.atom,b.bool,b.url,b.contentSeparator,b.labelName],color:"#219"},{tag:[b.literal,b.inserted],color:"#164"},{tag:[b.string,b.deleted],color:"#a11"},{tag:[b.regexp,b.escape,b.special(b.string)],color:"#e40"},{tag:b.definition(b.variableName),color:"#00f"},{tag:b.local(b.variableName),color:"#30a"},{tag:[b.typeName,b.namespace],color:"#085"},{tag:b.className,color:"#167"},{tag:[b.special(b.variableName),b.macroName],color:"#256"},{tag:b.definition(b.propertyName),color:"#00c"},{tag:b.comment,color:"#940"},{tag:b.invalid,color:"#f00"}]);var _d=Object.create(null),ef=[we.none];var tf=[],sf=Object.create(null),Kd=Object.create(null);for(let[s,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Kd[s]=Wd(_d,e);function _o(s,e){tf.indexOf(s)>-1||(tf.push(s),console.warn(e))}function Wd(s,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let f=s[h]||b[h];f?typeof f=="function"?a.length?a=a.map(f):_o(h,`Modifier ${h} used at start of tag`):a.length?_o(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:_o(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),n=i+" "+t.map(l=>l.id),r=sf[n];if(r)return r.id;let o=sf[n]=we.define({id:ef.length,name:i,props:[Gh({[i]:t})]});return ef.push(o),o.id}var wm={rtl:Q.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:ie.RTL}),ltr:Q.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:ie.LTR}),auto:Q.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var qd="#abb2bf",jd="#7d8799",zd="#ffffff",Ud="#21252b",zo="rgba(0, 0, 0, 0.5)",Yd="#292d3e",Uo="#353a42",Gd="rgba(128, 203, 196, 0.2)",of="#ffcc00",Jd=$.theme({"&":{color:"#ffffff",backgroundColor:Yd},".cm-content":{caretColor:of},"&.cm-focused .cm-cursor":{borderLeftColor:of},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Gd},".cm-panels":{backgroundColor:Ud,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:zo},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"#292d3e",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:zo},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Uo},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Uo,borderBottomColor:Uo},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:zo,color:qd}}},{dark:!0}),Xd=Mt.define([{tag:b.keyword,color:"#c792ea"},{tag:b.operator,color:"#89ddff"},{tag:b.special(b.variableName),color:"#eeffff"},{tag:b.typeName,color:"#f07178"},{tag:b.atom,color:"#f78c6c"},{tag:b.number,color:"#ff5370"},{tag:b.definition(b.variableName),color:"#82aaff"},{tag:b.string,color:"#c3e88d"},{tag:b.special(b.string),color:"#f07178"},{tag:b.comment,color:jd},{tag:b.variableName,color:"#f07178"},{tag:b.tagName,color:"#ff5370"},{tag:b.bracket,color:"#a2a1a4"},{tag:b.meta,color:"#ffcb6b"},{tag:b.attributeName,color:"#c792ea"},{tag:b.propertyName,color:"#c792ea"},{tag:b.className,color:"#decb6b"},{tag:b.invalid,color:zd}]),Qd=[Jd,On(Xd)];var lf="#2e3440",Zo="#3b4252",af="#434c5e",Tn="#4c566a";var hf="#e5e9f0",Qo="#eceff4",Yo="#8fbcbb",ff="#88c0d0",Zd="#81a1c1",Ie="#5e81ac",ep="#bf616a",yi="#d08770",Go="#ebcb8b",cf="#a3be8c",tp="#b48ead",uf="#d30102",el=Qo,Jo=el,ip="#ffffff",Xo=Zo,sp=el,df=Zo,pf=$.theme({"&":{color:lf,backgroundColor:ip},".cm-content":{caretColor:df},".cm-cursor, .cm-dropCursor":{borderLeftColor:df},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:sp},".cm-panels":{backgroundColor:el,color:Tn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:`1px solid ${Tn}`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:hf},".cm-activeLine":{backgroundColor:Jo},".cm-selectionMatch":{backgroundColor:hf},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{outline:`1px solid ${Tn}`},"&.cm-focused .cm-matchingBracket":{backgroundColor:Qo},".cm-gutters":{backgroundColor:Qo,color:lf,border:"none"},".cm-activeLineGutter":{backgroundColor:Jo},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Xo},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Xo,borderBottomColor:Xo},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Jo,color:Tn}}},{dark:!1}),np=Mt.define([{tag:b.keyword,color:Ie},{tag:[b.name,b.deleted,b.character,b.propertyName,b.macroName],color:yi},{tag:[b.variableName],color:yi},{tag:[b.function(b.variableName)],color:Ie},{tag:[b.labelName],color:Zd},{tag:[b.color,b.constant(b.name),b.standard(b.name)],color:Ie},{tag:[b.definition(b.name),b.separator],color:cf},{tag:[b.brace],color:Yo},{tag:[b.annotation],color:uf},{tag:[b.number,b.changed,b.annotation,b.modifier,b.self,b.namespace],color:ff},{tag:[b.typeName,b.className],color:Go},{tag:[b.operator,b.operatorKeyword],color:cf},{tag:[b.tagName],color:tp},{tag:[b.squareBracket],color:ep},{tag:[b.angleBracket],color:yi},{tag:[b.attributeName],color:Go},{tag:[b.regexp],color:Ie},{tag:[b.quote],color:Zo},{tag:[b.string],color:yi},{tag:b.link,color:Yo,textDecoration:"underline",textUnderlinePosition:"under"},{tag:[b.url,b.escape,b.special(b.string)],color:yi},{tag:[b.meta],color:ff},{tag:[b.comment],color:af,fontStyle:"italic"},{tag:b.strong,fontWeight:"bold",color:Ie},{tag:b.emphasis,fontStyle:"italic",color:Ie},{tag:b.strikethrough,textDecoration:"line-through"},{tag:b.heading,fontWeight:"bold",color:Ie},{tag:b.special(b.heading1),fontWeight:"bold",color:Ie},{tag:b.heading1,fontWeight:"bold",color:Ie},{tag:[b.heading2,b.heading3,b.heading4],fontWeight:"bold",color:Ie},{tag:[b.heading5,b.heading6],color:Ie},{tag:[b.atom,b.bool,b.special(b.variableName)],color:yi},{tag:[b.processingInstruction,b.inserted],color:Yo},{tag:[b.contentSeparator],color:Go},{tag:b.invalid,color:af,borderBottom:`1px dotted ${uf}`}]),Nm=[pf,On(np)];var us=(s,e=0)=>{let t=[];if(e==5||!s||s==null)return"";if(typeof s=="string")return s;if(typeof s=="number")return`${s}`;if(Array.isArray(s))t.push(`${s.map(i=>us(i,e++)).join(" ")}`);else if(typeof s=="object")for(let[i,n]of Object.entries(s))t.push(us(i,e++),us(n,e++));return t.join(" ")};function bi(s=[],e=[]){s||(s=[]),Array.isArray(s)||(s=[s]),e||(e=[]),Array.isArray(e)||(e=[e]);for(let t of e!=null?e:[])if(t)if(Array.isArray(t)){let i=us(t.slice(1));s=s.filter(n=>n.name!=t[0]&&n.desc!=i),s.push({name:t[0],desc:i})}else typeof t=="object"&&("name"in t||"desc"in t)&&(s=s.filter(i=>{var n;return(!((n=i.name)!=null&&n.length)||i.name!=t.name)&&i.desc!=t.desc}),s.push(Rl(Il({},t),{name:t.name,desc:us(t.desc)})));return s}var Ol={};Fl(Ol,{Alias:()=>it,CST:()=>Cl,Composer:()=>Xt,Document:()=>nt,Lexer:()=>Pi,LineCounter:()=>Bi,Pair:()=>Y,Parser:()=>Zt,Scalar:()=>E,Schema:()=>Ti,YAMLError:()=>Ni,YAMLMap:()=>G,YAMLParseError:()=>ke,YAMLSeq:()=>oe,YAMLWarning:()=>Di,isAlias:()=>Oe,isCollection:()=>_,isDocument:()=>Ze,isMap:()=>Te,isNode:()=>H,isPair:()=>V,isScalar:()=>F,isSeq:()=>Ee,parse:()=>fc,parseAllDocuments:()=>hc,parseDocument:()=>Ml,stringify:()=>cc,visit:()=>Ne,visitAsync:()=>ds});var En=Symbol.for("yaml.alias"),Nn=Symbol.for("yaml.document"),Re=Symbol.for("yaml.map"),tl=Symbol.for("yaml.pair"),Me=Symbol.for("yaml.scalar"),dt=Symbol.for("yaml.seq"),ce=Symbol.for("yaml.node.type"),Oe=s=>!!s&&typeof s=="object"&&s[ce]===En,Ze=s=>!!s&&typeof s=="object"&&s[ce]===Nn,Te=s=>!!s&&typeof s=="object"&&s[ce]===Re,V=s=>!!s&&typeof s=="object"&&s[ce]===tl,F=s=>!!s&&typeof s=="object"&&s[ce]===Me,Ee=s=>!!s&&typeof s=="object"&&s[ce]===dt;function _(s){if(s&&typeof s=="object")switch(s[ce]){case Re:case dt:return!0}return!1}function H(s){if(s&&typeof s=="object")switch(s[ce]){case En:case Re:case Me:case dt:return!0}return!1}var mf=s=>(F(s)||_(s))&&!!s.anchor;var me=Symbol("break visit"),gf=Symbol("skip children"),et=Symbol("remove node");function Ne(s,e){let t=yf(e);Ze(s)?wi(null,s.contents,t,Object.freeze([s]))===et&&(s.contents=null):wi(null,s,t,Object.freeze([]))}Ne.BREAK=me;Ne.SKIP=gf;Ne.REMOVE=et;function wi(s,e,t,i){let n=bf(s,e,t,i);if(H(n)||V(n))return wf(s,i,n),wi(s,n,t,i);if(typeof n!="symbol"){if(_(e)){i=Object.freeze(i.concat(e));for(let r=0;rs.replace(/[!,[\\]{}]/g,e=>rp[e]),tt=class s{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},s.defaultYaml,e),this.tags=Object.assign({},s.defaultTags,t)}clone(){let e=new s(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new s(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:s.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},s.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:s.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},s.defaultTags),this.atNextDocument=!1);let i=e.trim().split(/[ \\t]+/),n=i.shift();switch(n){case"%TAG":{if(i.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[r,o]=i;return this.tags[r]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[r]=i;if(r==="1.1"||r==="1.2")return this.yaml.version=r,!0;{let o=/^\\d+\\.\\d+$/.test(r);return t(6,`Unsupported YAML version ${r}`,o),!1}}default:return t(0,`Unknown directive ${n}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren\'t resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,i,n]=e.match(new RegExp("^(.*!)([^!]*)$","s"));n||t(`The ${e} tag has no suffix`);let r=this.tags[i];if(r)try{return r+decodeURIComponent(n)}catch(o){return t(String(o)),null}return i==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,i]of Object.entries(this.tags))if(e.startsWith(i))return t+op(e.substring(i.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),n;if(e&&i.length>0&&H(e.contents)){let r={};Ne(e.contents,(o,l)=>{H(l)&&l.tag&&(r[l.tag]=!0)}),n=Object.keys(r)}else n=[];for(let[r,o]of i)r==="!!"&&o==="tag:yaml.org,2002:"||(!e||n.some(l=>l.startsWith(o)))&&t.push(`%TAG ${r} ${o}`);return t.join(`\n`)}};tt.defaultYaml={explicit:!1,version:"1.2"};tt.defaultTags={"!!":"tag:yaml.org,2002:"};function Dn(s){if(/[\\x00-\\x19\\s,[\\]{}]/.test(s)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(s)}`;throw new Error(t)}return!0}function il(s){let e=new Set;return Ne(s,{Value(t,i){i.anchor&&e.add(i.anchor)}}),e}function sl(s,e){for(let t=1;;++t){let i=`${s}${t}`;if(!e.has(i))return i}}function kf(s,e){let t=[],i=new Map,n=null;return{onAnchor:r=>{t.push(r),n||(n=il(s));let o=sl(e,n);return n.add(o),o},setAnchors:()=>{for(let r of t){let o=i.get(r);if(typeof o=="object"&&o.anchor&&(F(o.node)||_(o.node)))o.node.anchor=o.anchor;else{let l=new Error("Failed to resolve repeated object (this should not happen)");throw l.source=r,l}}},sourceObjects:i}}function Ot(s,e,t,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let n=0,r=i.length;nte(i,String(n),t));if(s&&typeof s.toJSON=="function"){if(!t||!mf(s))return s.toJSON(e,t);let i={aliasCount:0,count:1,res:void 0};t.anchors.set(s,i),t.onCreate=r=>{i.res=r,delete t.onCreate};let n=s.toJSON(e,t);return t.onCreate&&t.onCreate(n),n}return typeof s=="bigint"&&!(t!=null&&t.keep)?Number(s):s}var Tt=class{constructor(e){Object.defineProperty(this,ce,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:i,onAnchor:n,reviver:r}={}){if(!Ze(e))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},l=te(this,"",o);if(typeof n=="function")for(let{count:a,res:h}of o.anchors.values())n(h,a);return typeof r=="function"?Ot(r,{"":l},"",l):l}};var it=class extends Tt{constructor(e){super(En),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return Ne(e,{Node:(i,n)=>{if(n===this)return Ne.BREAK;n.anchor===this.source&&(t=n)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:i,doc:n,maxAliasCount:r}=t,o=this.resolve(n);if(!o){let a=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(a)}let l=i.get(o);if(l||(te(o,null,t),l=i.get(o)),!l||l.res===void 0){let a="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(a)}if(r>=0&&(l.count+=1,l.aliasCount===0&&(l.aliasCount=Ln(n,o,i)),l.count*l.aliasCount>r)){let a="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(a)}return l.res}toString(e,t,i){let n=`*${this.source}`;if(e){if(Dn(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let r=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(r)}if(e.implicitKey)return`${n} `}return n}};function Ln(s,e,t){if(Oe(e)){let i=e.resolve(s),n=t&&i&&t.get(i);return n?n.count*n.aliasCount:0}else if(_(e)){let i=0;for(let n of e.items){let r=Ln(s,n,t);r>i&&(i=r)}return i}else if(V(e)){let i=Ln(s,e.key,t),n=Ln(s,e.value,t);return Math.max(i,n)}return 1}var Pn=s=>!s||typeof s!="function"&&typeof s!="object",E=class extends Tt{constructor(e){super(Me),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:te(this.value,e,t)}toString(){return String(this.value)}};E.BLOCK_FOLDED="BLOCK_FOLDED";E.BLOCK_LITERAL="BLOCK_LITERAL";E.PLAIN="PLAIN";E.QUOTE_DOUBLE="QUOTE_DOUBLE";E.QUOTE_SINGLE="QUOTE_SINGLE";var lp="tag:yaml.org,2002:";function ap(s,e,t){var i;if(e){let n=t.filter(o=>o.tag===e),r=(i=n.find(o=>!o.format))!=null?i:n[0];if(!r)throw new Error(`Tag ${e} not found`);return r}return t.find(n=>{var r;return((r=n.identify)==null?void 0:r.call(n,s))&&!n.format})}function pt(s,e,t){var c,u,d;if(Ze(s)&&(s=s.contents),H(s))return s;if(V(s)){let p=(u=(c=t.schema[Re]).createNode)==null?void 0:u.call(c,t.schema,null,t);return p.items.push(s),p}(s instanceof String||s instanceof Number||s instanceof Boolean||typeof BigInt!="undefined"&&s instanceof BigInt)&&(s=s.valueOf());let{aliasDuplicateObjects:i,onAnchor:n,onTagObj:r,schema:o,sourceObjects:l}=t,a;if(i&&s&&typeof s=="object"){if(a=l.get(s),a)return a.anchor||(a.anchor=n(s)),new it(a.anchor);a={anchor:null,node:null},l.set(s,a)}e!=null&&e.startsWith("!!")&&(e=lp+e.slice(2));let h=ap(s,e,o.tags);if(!h){if(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),!s||typeof s!="object"){let p=new E(s);return a&&(a.node=p),p}h=s instanceof Map?o[Re]:Symbol.iterator in Object(s)?o[dt]:o[Re]}r&&(r(h),delete t.onTagObj);let f=h!=null&&h.createNode?h.createNode(t.schema,s,t):typeof((d=h==null?void 0:h.nodeClass)==null?void 0:d.from)=="function"?h.nodeClass.from(t.schema,s,t):new E(s);return e?f.tag=e:h.default||(f.tag=h.tag),a&&(a.node=f),f}function ps(s,e,t){let i=t;for(let n=e.length-1;n>=0;--n){let r=e[n];if(typeof r=="number"&&Number.isInteger(r)&&r>=0){let o=[];o[r]=i,i=o}else i=new Map([[r,i]])}return pt(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:s,sourceObjects:new Map})}var vi=s=>s==null||typeof s=="object"&&!!s[Symbol.iterator]().next().done,Si=class extends Tt{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(i=>H(i)||V(i)?i.clone(e):i),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(vi(e))this.add(t);else{let[i,...n]=e,r=this.get(i,!0);if(_(r))r.addIn(n,t);else if(r===void 0&&this.schema)this.set(i,ps(this.schema,n,t));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${n}`)}}deleteIn(e){let[t,...i]=e;if(i.length===0)return this.delete(t);let n=this.get(t,!0);if(_(n))return n.deleteIn(i);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${i}`)}getIn(e,t){let[i,...n]=e,r=this.get(i,!0);return n.length===0?!t&&F(r)?r.value:r:_(r)?r.getIn(n,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!V(t))return!1;let i=t.value;return i==null||e&&F(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(e){let[t,...i]=e;if(i.length===0)return this.has(t);let n=this.get(t,!0);return _(n)?n.hasIn(i):!1}setIn(e,t){let[i,...n]=e;if(n.length===0)this.set(i,t);else{let r=this.get(i,!0);if(_(r))r.setIn(n,t);else if(r===void 0&&this.schema)this.set(i,ps(this.schema,n,t));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${n}`)}}};var Sf=s=>s.replace(/^(?!$)(?: $)?/gm,"#");function De(s,e){return/^\\n+$/.test(s)?s.substring(1):e?s.replace(/^(?! *$)/gm,e):s}var st=(s,e,t)=>s.endsWith(`\n`)?De(t,e):t.includes(`\n`)?`\n`+De(t,e):(s.endsWith(" ")?"":" ")+t;var nl="flow",Bn="block",ms="quoted";function gs(s,e,t="flow",{indentAtStart:i,lineWidth:n=80,minContentWidth:r=20,onFold:o,onOverflow:l}={}){if(!n||n<0)return s;nn-Math.max(2,r)?h.push(0):c=n-i);let u,d,p=!1,m=-1,g=-1,y=-1;t===Bn&&(m=vf(s,m,e.length),m!==-1&&(c=m+a));for(let x;x=s[m+=1];){if(t===ms&&x==="\\\\"){switch(g=m,s[m+1]){case"x":m+=3;break;case"u":m+=5;break;case"U":m+=9;break;default:m+=1}y=m}if(x===`\n`)t===Bn&&(m=vf(s,m,e.length)),c=m+e.length+a,u=void 0;else{if(x===" "&&d&&d!==" "&&d!==`\n`&&d!==" "){let S=s[m+1];S&&S!==" "&&S!==`\n`&&S!==" "&&(u=m)}if(m>=c)if(u)h.push(u),c=u+a,u=void 0;else if(t===ms){for(;d===" "||d===" ";)d=x,x=s[m+=1],p=!0;let S=m>y+1?m-2:g-1;if(f[S])return s;h.push(S),f[S]=!0,c=S+a,u=void 0}else p=!0}d=x}if(p&&l&&l(),h.length===0)return s;o&&o();let w=s.slice(0,h[0]);for(let x=0;x({indentAtStart:e?s.indent.length:s.indentAtStart,lineWidth:s.options.lineWidth,minContentWidth:s.options.minContentWidth}),Fn=s=>/^(%|---|\\.\\.\\.)/m.test(s);function hp(s,e,t){if(!e||e<0)return!1;let i=e-t,n=s.length;if(n<=i)return!1;for(let r=0,o=0;ri)return!0;if(o=r+1,n-o<=i)return!1}return!0}function ys(s,e){let t=JSON.stringify(s);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:i}=e,n=e.options.doubleQuotedMinMultiLineLength,r=e.indent||(Fn(s)?" ":""),o="",l=0;for(let a=0,h=t[a];h;h=t[++a])if(h===" "&&t[a+1]==="\\\\"&&t[a+2]==="n"&&(o+=t.slice(l,a)+"\\\\ ",a+=1,l=a,h="\\\\"),h==="\\\\")switch(t[a+1]){case"u":{o+=t.slice(l,a);let f=t.substr(a+2,4);switch(f){case"0000":o+="\\\\0";break;case"0007":o+="\\\\a";break;case"000b":o+="\\\\v";break;case"001b":o+="\\\\e";break;case"0085":o+="\\\\N";break;case"00a0":o+="\\\\_";break;case"2028":o+="\\\\L";break;case"2029":o+="\\\\P";break;default:f.substr(0,2)==="00"?o+="\\\\x"+f.substr(2):o+=t.substr(a,6)}a+=5,l=a+1}break;case"n":if(i||t[a+2]===\'"\'||t.length\n`;let c,u;for(u=t.length;u>0;--u){let M=t[u-1];if(M!==`\n`&&M!==" "&&M!==" ")break}let d=t.substring(u),p=d.indexOf(`\n`);p===-1?c="-":t===d||p!==d.length-1?(c="+",r&&r()):c="",d&&(t=t.slice(0,-d.length),d[d.length-1]===`\n`&&(d=d.slice(0,-1)),d=d.replace(ol,`$&${h}`));let m=!1,g,y=-1;for(g=0;g")+(m?h?"2":"1":"")+c;if(s&&(S+=" "+l(s.replace(/ ?[\\r\\n]+/g," ")),n&&n()),f)return t=t.replace(/\\n+/g,`$&${h}`),`${S}\n${h}${w}${t}${d}`;t=t.replace(/\\n+/g,`\n$&`).replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g,"$1$2").replace(/\\n+/g,`$&${h}`);let v=gs(`${w}${t}${d}`,h,Bn,Rn(i,!0));return`${S}\n${h}${v}`}function fp(s,e,t,i){let{type:n,value:r}=s,{actualString:o,implicitKey:l,indent:a,indentStep:h,inFlow:f}=e;if(l&&r.includes(`\n`)||f&&/[[\\]{},]/.test(r))return xi(r,e);if(!r||/^[\\n\\t ,[\\]{}#&*!|>\'"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(r))return l||f||!r.includes(`\n`)?xi(r,e):In(s,e,t,i);if(!l&&!f&&n!==E.PLAIN&&r.includes(`\n`))return In(s,e,t,i);if(Fn(r)){if(a==="")return e.forceBlockIndent=!0,In(s,e,t,i);if(l&&a===h)return xi(r,e)}let c=r.replace(/\\n+/g,`$&\n${a}`);if(o){let u=m=>{var g;return m.default&&m.tag!=="tag:yaml.org,2002:str"&&((g=m.test)==null?void 0:g.test(c))},{compat:d,tags:p}=e.doc.schema;if(p.some(u)||d!=null&&d.some(u))return xi(r,e)}return l?c:gs(c,a,nl,Rn(e,!1))}function mt(s,e,t,i){let{implicitKey:n,inFlow:r}=e,o=typeof s.value=="string"?s:Object.assign({},s,{value:String(s.value)}),{type:l}=s;l!==E.QUOTE_DOUBLE&&/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(o.value)&&(l=E.QUOTE_DOUBLE);let a=f=>{switch(f){case E.BLOCK_FOLDED:case E.BLOCK_LITERAL:return n||r?xi(o.value,e):In(o,e,t,i);case E.QUOTE_DOUBLE:return ys(o.value,e);case E.QUOTE_SINGLE:return rl(o.value,e);case E.PLAIN:return fp(o,e,t,i);default:return null}},h=a(l);if(h===null){let{defaultKeyType:f,defaultStringType:c}=e.options,u=n&&f||c;if(h=a(u),h===null)throw new Error(`Unsupported default string type ${u}`)}return h}function $n(s,e){let t=Object.assign({blockQuote:!0,commentString:Sf,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},s.schema.toStringOptions,e),i;switch(t.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:s,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:i,options:t}}function cp(s,e){var n,r,o,l;if(e.tag){let a=s.filter(h=>h.tag===e.tag);if(a.length>0)return(n=a.find(h=>h.format===e.format))!=null?n:a[0]}let t,i;if(F(e)){i=e.value;let a=s.filter(h=>{var f;return(f=h.identify)==null?void 0:f.call(h,i)});t=(r=a.find(h=>h.format===e.format))!=null?r:a.find(h=>!h.format)}else i=e,t=s.find(a=>a.nodeClass&&i instanceof a.nodeClass);if(!t){let a=(l=(o=i==null?void 0:i.constructor)==null?void 0:o.name)!=null?l:typeof i;throw new Error(`Tag not resolved for ${a} value`)}return t}function up(s,e,{anchors:t,doc:i}){if(!i.directives)return"";let n=[],r=(F(s)||_(s))&&s.anchor;r&&Dn(r)&&(t.add(r),n.push(`&${r}`));let o=s.tag?s.tag:e.default?null:e.tag;return o&&n.push(i.directives.tagString(o)),n.join(" ")}function gt(s,e,t,i){var a,h;if(V(s))return s.toString(e,t,i);if(Oe(s)){if(e.doc.directives)return s.toString(e);if((a=e.resolvedAliases)!=null&&a.has(s))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(s):e.resolvedAliases=new Set([s]),s=s.resolve(e.doc)}let n,r=H(s)?s:e.doc.createNode(s,{onTagObj:f=>n=f});n||(n=cp(e.doc.schema.tags,r));let o=up(r,n,e);o.length>0&&(e.indentAtStart=((h=e.indentAtStart)!=null?h:0)+o.length+1);let l=typeof n.stringify=="function"?n.stringify(r,e,t,i):F(r)?mt(r,e,t,i):r.toString(e,t,i);return o?F(r)||l[0]==="{"||l[0]==="["?`${o} ${l}`:`${o}\n${e.indent}${l}`:l}function xf({key:s,value:e},t,i,n){var O,C;let{allNullValues:r,doc:o,indent:l,indentStep:a,options:{commentString:h,indentSeq:f,simpleKeys:c}}=t,u=H(s)&&s.comment||null;if(c){if(u)throw new Error("With simple keys, key nodes cannot have comments");if(_(s)||!H(s)&&typeof s=="object"){let L="With simple keys, collection cannot be used as a key value";throw new Error(L)}}let d=!c&&(!s||u&&e==null&&!t.inFlow||_(s)||(F(s)?s.type===E.BLOCK_FOLDED||s.type===E.BLOCK_LITERAL:typeof s=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!d&&(c||!r),indent:l+a});let p=!1,m=!1,g=gt(s,t,()=>p=!0,()=>m=!0);if(!d&&!t.inFlow&&g.length>1024){if(c)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");d=!0}if(t.inFlow){if(r||e==null)return p&&i&&i(),g===""?"?":d?`? ${g}`:g}else if(r&&!c||e==null&&d)return g=`? ${g}`,u&&!p?g+=st(g,t.indent,h(u)):m&&n&&n(),g;p&&(u=null),d?(u&&(g+=st(g,t.indent,h(u))),g=`? ${g}\n${l}:`):(g=`${g}:`,u&&(g+=st(g,t.indent,h(u))));let y,w,x;H(e)?(y=!!e.spaceBefore,w=e.commentBefore,x=e.comment):(y=!1,w=null,x=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!d&&!u&&F(e)&&(t.indentAtStart=g.length+1),m=!1,!f&&a.length>=2&&!t.inFlow&&!d&&Ee(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let S=!1,v=gt(e,t,()=>S=!0,()=>m=!0),M=" ";if(u||y||w){if(M=y?`\n`:"",w){let L=h(w);M+=`\n${De(L,t.indent)}`}v===""&&!t.inFlow?M===`\n`&&(M=`\n\n`):M+=`\n${t.indent}`}else if(!d&&_(e)){let L=v[0],N=v.indexOf(`\n`),D=N!==-1,B=(C=(O=t.inFlow)!=null?O:e.flow)!=null?C:e.items.length===0;if(D||!B){let q=!1;if(D&&(L==="&"||L==="!")){let I=v.indexOf(" ");L==="&"&&I!==-1&&Is===Cf||F(s)&&s.value===Cf&&(!s.type||s.type===E.PLAIN);function ll(s,e,t){let i=s&&Oe(t)?t.resolve(s.doc):t;if(!Te(i))throw new Error("Merge sources must be maps or map aliases");let n=i.toJSON(null,s,Map);for(let[r,o]of n)e instanceof Map?e.has(r)||e.set(r,o):e instanceof Set?e.add(r):Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function pp(s,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(H(s)&&(t!=null&&t.doc)){let i=$n(t.doc,{});i.anchors=new Set;for(let r of t.anchors.keys())i.anchors.add(r.anchor);i.inFlow=!0,i.inStringifyKey=!0;let n=s.toString(i);if(!t.mapKeyWarned){let r=JSON.stringify(n);r.length>40&&(r=r.substring(0,36)+\'..."\'),Vn(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${r}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return n}return JSON.stringify(e)}function Ci(s,e,t){let i=pt(s,void 0,t),n=pt(e,void 0,t);return new Y(i,n)}var Y=class s{constructor(e,t=null){Object.defineProperty(this,ce,{value:tl}),this.key=e,this.value=t}clone(e){let{key:t,value:i}=this;return H(t)&&(t=t.clone(e)),H(i)&&(i=i.clone(e)),new s(t,i)}toJSON(e,t){let i=t!=null&&t.mapAsMap?new Map:{};return Hn(t,i,this)}toString(e,t,i){return e!=null&&e.doc?xf(this,e,t,i):JSON.stringify(this)}};function Kn(s,e,t){var r;return(((r=e.inFlow)!=null?r:s.flow)?gp:mp)(s,e,t)}function mp({comment:s,items:e},t,{blockItemPrefix:i,flowChars:n,itemIndent:r,onChompKeep:o,onComment:l}){let{indent:a,options:{commentString:h}}=t,f=Object.assign({},t,{indent:r,type:null}),c=!1,u=[];for(let p=0;pg=null,()=>c=!0);g&&(y+=st(y,r,h(g))),c&&g&&(c=!1),u.push(i+y)}let d;if(u.length===0)d=n.start+n.end;else{d=u[0];for(let p=1;pg=null);pf||y.includes(`\n`))&&(h=!0),c.push(y),f=c.length}let{start:u,end:d}=t;if(c.length===0)return u+d;if(!h){let p=c.reduce((m,g)=>m+g.length+2,2);h=e.options.lineWidth>0&&p>e.options.lineWidth}if(h){let p=u;for(let m of c)p+=m?`\n${r}${n}${m}`:`\n`;return`${p}\n${n}${d}`}else return`${u}${o}${c.join(" ")}${o}${d}`}function _n({indent:s,options:{commentString:e}},t,i,n){if(i&&n&&(i=i.replace(/^\\n+/,"")),i){let r=De(e(i),s);t.push(r.trimStart())}}function Et(s,e){let t=F(e)?e.value:e;for(let i of s)if(V(i)&&(i.key===e||i.key===t||F(i.key)&&i.key.value===t))return i}var G=class extends Si{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Re,e),this.items=[]}static from(e,t,i){let{keepUndefined:n,replacer:r}=i,o=new this(e),l=(a,h)=>{if(typeof r=="function")h=r.call(t,a,h);else if(Array.isArray(r)&&!r.includes(a))return;(h!==void 0||n)&&o.items.push(Ci(a,h,i))};if(t instanceof Map)for(let[a,h]of t)l(a,h);else if(t&&typeof t=="object")for(let a of Object.keys(t))l(a,t[a]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){var o;let i;V(e)?i=e:!e||typeof e!="object"||!("key"in e)?i=new Y(e,e==null?void 0:e.value):i=new Y(e.key,e.value);let n=Et(this.items,i.key),r=(o=this.schema)==null?void 0:o.sortMapEntries;if(n){if(!t)throw new Error(`Key ${i.key} already set`);F(n.value)&&Pn(i.value)?n.value.value=i.value:n.value=i.value}else if(r){let l=this.items.findIndex(a=>r(i,a)<0);l===-1?this.items.push(i):this.items.splice(l,0,i)}else this.items.push(i)}delete(e){let t=Et(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){var r;let i=Et(this.items,e),n=i==null?void 0:i.value;return(r=!t&&F(n)?n.value:n)!=null?r:void 0}has(e){return!!Et(this.items,e)}set(e,t){this.add(new Y(e,t),!0)}toJSON(e,t,i){let n=i?new i:t!=null&&t.mapAsMap?new Map:{};t!=null&&t.onCreate&&t.onCreate(n);for(let r of this.items)Hn(t,n,r);return n}toString(e,t,i){if(!e)return JSON.stringify(this);for(let n of this.items)if(!V(n))throw new Error(`Map items must all be pairs; found ${JSON.stringify(n)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Kn(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:i,onComment:t})}};var Fe={collection:"map",default:!0,nodeClass:G,tag:"tag:yaml.org,2002:map",resolve(s,e){return Te(s)||e("Expected a mapping for this tag"),s},createNode:(s,e,t)=>G.from(s,e,t)};var oe=class extends Si{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(dt,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=Wn(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let i=Wn(e);if(typeof i!="number")return;let n=this.items[i];return!t&&F(n)?n.value:n}has(e){let t=Wn(e);return typeof t=="number"&&t=0?e:null}var $e={collection:"seq",default:!0,nodeClass:oe,tag:"tag:yaml.org,2002:seq",resolve(s,e){return Ee(s)||e("Expected a sequence for this tag"),s},createNode:(s,e,t)=>oe.from(s,e,t)};var Nt={identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify(s,e,t,i){return e=Object.assign({actualString:!0},e),mt(s,e,t,i)}};var Jt={identify:s=>s==null,createNode:()=>new E(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new E(null),stringify:({source:s},e)=>typeof s=="string"&&Jt.test.test(s)?s:e.options.nullStr};var bs={identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:s=>new E(s[0]==="t"||s[0]==="T"),stringify({source:s,value:e},t){if(s&&bs.test.test(s)){let i=s[0]==="t"||s[0]==="T";if(e===i)return s}return e?t.options.trueStr:t.options.falseStr}};function he({format:s,minFractionDigits:e,tag:t,value:i}){if(typeof i=="bigint")return String(i);let n=typeof i=="number"?i:Number(i);if(!isFinite(n))return isNaN(n)?".nan":n<0?"-.inf":".inf";let r=JSON.stringify(i);if(!s&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\\d/.test(r)){let o=r.indexOf(".");o<0&&(o=r.length,r+=".");let l=e-(r.length-o-1);for(;l-- >0;)r+="0"}return r}var qn={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:he},jn={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():he(s)}},zn={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,resolve(s){let e=new E(parseFloat(s)),t=s.indexOf(".");return t!==-1&&s[s.length-1]==="0"&&(e.minFractionDigits=s.length-t-1),e},stringify:he};var Un=s=>typeof s=="bigint"||Number.isInteger(s),al=(s,e,t,{intAsBigInt:i})=>i?BigInt(s):parseInt(s.substring(e),t);function Af(s,e,t){let{value:i}=s;return Un(i)&&i>=0?t+i.toString(e):he(s)}var Yn={identify:s=>Un(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(s,e,t)=>al(s,2,8,t),stringify:s=>Af(s,8,"0o")},Gn={identify:Un,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(s,e,t)=>al(s,0,10,t),stringify:he},Jn={identify:s=>Un(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(s,e,t)=>al(s,2,16,t),stringify:s=>Af(s,16,"0x")};var Mf=[Fe,$e,Nt,Jt,bs,Yn,Gn,Jn,qn,jn,zn];function Of(s){return typeof s=="bigint"||Number.isInteger(s)}var Xn=({value:s})=>JSON.stringify(s),yp=[{identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify:Xn},{identify:s=>s==null,createNode:()=>new E(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Xn},{identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:s=>s==="true",stringify:Xn},{identify:Of,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(s,e,{intAsBigInt:t})=>t?BigInt(s):parseInt(s,10),stringify:({value:s})=>Of(s)?s.toString():JSON.stringify(s)},{identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:s=>parseFloat(s),stringify:Xn}],bp={default:!0,tag:"",test:/^/,resolve(s,e){return e(`Unresolved plain scalar ${JSON.stringify(s)}`),s}},Tf=[Fe,$e].concat(yp,bp);var ws={identify:s=>s instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(s,e){if(typeof Buffer=="function")return Buffer.from(s,"base64");if(typeof atob=="function"){let t=atob(s.replace(/[\\n\\r]/g,"")),i=new Uint8Array(t.length);for(let n=0;n1&&e("Each pair must have its own sequence indicator");let r=n.items[0]||new Y(new E(null));if(n.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${n.commentBefore}\n${r.key.commentBefore}`:n.commentBefore),n.comment){let o=(t=r.value)!=null?t:r.key;o.comment=o.comment?`${n.comment}\n${o.comment}`:n.comment}n=r}s.items[i]=V(n)?n:new Y(n)}}else e("Expected a sequence for this tag");return s}function fl(s,e,t){let{replacer:i}=t,n=new oe(s);n.tag="tag:yaml.org,2002:pairs";let r=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof i=="function"&&(o=i.call(e,String(r++),o));let l,a;if(Array.isArray(o))if(o.length===2)l=o[0],a=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let h=Object.keys(o);if(h.length===1)l=h[0],a=o[l];else throw new TypeError(`Expected tuple with one key, not ${h.length} keys`)}else l=o;n.items.push(Ci(l,a,t))}return n}var ks={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:hl,createNode:fl};var Ai=class s extends oe{constructor(){super(),this.add=G.prototype.add.bind(this),this.delete=G.prototype.delete.bind(this),this.get=G.prototype.get.bind(this),this.has=G.prototype.has.bind(this),this.set=G.prototype.set.bind(this),this.tag=s.tag}toJSON(e,t){if(!t)return super.toJSON(e);let i=new Map;t!=null&&t.onCreate&&t.onCreate(i);for(let n of this.items){let r,o;if(V(n)?(r=te(n.key,"",t),o=te(n.value,r,t)):r=te(n,"",t),i.has(r))throw new Error("Ordered maps must not include duplicate keys");i.set(r,o)}return i}static from(e,t,i){let n=fl(e,t,i),r=new this;return r.items=n.items,r}};Ai.tag="tag:yaml.org,2002:omap";var Ss={collection:"seq",identify:s=>s instanceof Map,nodeClass:Ai,default:!1,tag:"tag:yaml.org,2002:omap",resolve(s,e){let t=hl(s,e),i=[];for(let{key:n}of t.items)F(n)&&(i.includes(n.value)?e(`Ordered maps must not include duplicate keys: ${n.value}`):i.push(n.value));return Object.assign(new Ai,t)},createNode:(s,e,t)=>Ai.from(s,e,t)};function Ef({value:s,source:e},t){return e&&(s?cl:ul).test.test(e)?e:s?t.options.trueStr:t.options.falseStr}var cl={identify:s=>s===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new E(!0),stringify:Ef},ul={identify:s=>s===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new E(!1),stringify:Ef};var Nf={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:he},Df={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s.replace(/_/g,"")),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():he(s)}},Lf={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,resolve(s){let e=new E(parseFloat(s.replace(/_/g,""))),t=s.indexOf(".");if(t!==-1){let i=s.substring(t+1).replace(/_/g,"");i[i.length-1]==="0"&&(e.minFractionDigits=i.length)}return e},stringify:he};var vs=s=>typeof s=="bigint"||Number.isInteger(s);function Qn(s,e,t,{intAsBigInt:i}){let n=s[0];if((n==="-"||n==="+")&&(e+=1),s=s.substring(e).replace(/_/g,""),i){switch(t){case 2:s=`0b${s}`;break;case 8:s=`0o${s}`;break;case 16:s=`0x${s}`;break}let o=BigInt(s);return n==="-"?BigInt(-1)*o:o}let r=parseInt(s,t);return n==="-"?-1*r:r}function dl(s,e,t){let{value:i}=s;if(vs(i)){let n=i.toString(e);return i<0?"-"+t+n.substr(1):t+n}return he(s)}var Pf={identify:vs,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(s,e,t)=>Qn(s,2,2,t),stringify:s=>dl(s,2,"0b")},Bf={identify:vs,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(s,e,t)=>Qn(s,1,8,t),stringify:s=>dl(s,8,"0")},If={identify:vs,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(s,e,t)=>Qn(s,0,10,t),stringify:he},Rf={identify:vs,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(s,e,t)=>Qn(s,2,16,t),stringify:s=>dl(s,16,"0x")};var Mi=class s extends G{constructor(e){super(e),this.tag=s.tag}add(e){let t;V(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new Y(e.key,null):t=new Y(e,null),Et(this.items,t.key)||this.items.push(t)}get(e,t){let i=Et(this.items,e);return!t&&V(i)?F(i.key)?i.key.value:i.key:i}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let i=Et(this.items,e);i&&!t?this.items.splice(this.items.indexOf(i),1):!i&&t&&this.items.push(new Y(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,i){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,i);throw new Error("Set items must all have null values")}static from(e,t,i){let{replacer:n}=i,r=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof n=="function"&&(o=n.call(t,o,o)),r.items.push(Ci(o,null,i));return r}};Mi.tag="tag:yaml.org,2002:set";var xs={collection:"map",identify:s=>s instanceof Set,nodeClass:Mi,default:!1,tag:"tag:yaml.org,2002:set",createNode:(s,e,t)=>Mi.from(s,e,t),resolve(s,e){if(Te(s)){if(s.hasAllNullValues(!0))return Object.assign(new Mi,s);e("Set items must all have null values")}else e("Expected a mapping for this tag");return s}};function pl(s,e){let t=s[0],i=t==="-"||t==="+"?s.substring(1):s,n=o=>e?BigInt(o):Number(o),r=i.replace(/_/g,"").split(":").reduce((o,l)=>o*n(60)+n(l),n(0));return t==="-"?n(-1)*r:r}function Ff(s){let{value:e}=s,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return he(s);let i="";e<0&&(i="-",e*=t(-1));let n=t(60),r=[e%n];return e<60?r.unshift(0):(e=(e-r[0])/n,r.unshift(e%n),e>=60&&(e=(e-r[0])/n,r.unshift(e))),i+r.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\\d*$/,"")}var Zn={identify:s=>typeof s=="bigint"||Number.isInteger(s),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(s,e,{intAsBigInt:t})=>pl(s,t),stringify:Ff},er={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,resolve:s=>pl(s,!1),stringify:Ff},Oi={identify:s=>s instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\\\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(s){let e=s.match(Oi.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,i,n,r,o,l]=e.map(Number),a=e[7]?Number((e[7]+"00").substr(1,3)):0,h=Date.UTC(t,i-1,n,r||0,o||0,l||0,a),f=e[8];if(f&&f!=="Z"){let c=pl(f,!1);Math.abs(c)<30&&(c*=60),h-=6e4*c}return new Date(h)},stringify:({value:s})=>s.toISOString().replace(/((T00:00)?:00)?\\.000Z$/,"")};var ml=[Fe,$e,Nt,Jt,cl,ul,Pf,Bf,If,Rf,Nf,Df,Lf,ws,Ss,ks,xs,Zn,er,Oi];var $f=new Map([["core",Mf],["failsafe",[Fe,$e,Nt]],["json",Tf],["yaml11",ml],["yaml-1.1",ml]]),Vf={binary:ws,bool:bs,float:zn,floatExp:jn,floatNaN:qn,floatTime:er,int:Gn,intHex:Jn,intOct:Yn,intTime:Zn,map:Fe,null:Jt,omap:Ss,pairs:ks,seq:$e,set:xs,timestamp:Oi},Hf={"tag:yaml.org,2002:binary":ws,"tag:yaml.org,2002:omap":Ss,"tag:yaml.org,2002:pairs":ks,"tag:yaml.org,2002:set":xs,"tag:yaml.org,2002:timestamp":Oi};function tr(s,e){let t=$f.get(e);if(!t)if(Array.isArray(s))t=[];else{let i=Array.from($f.keys()).filter(n=>n!=="yaml11").map(n=>JSON.stringify(n)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(s))for(let i of s)t=t.concat(i);else typeof s=="function"&&(t=s(t.slice()));return t.map(i=>{if(typeof i!="string")return i;let n=Vf[i];if(n)return n;let r=Object.keys(Vf).map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown custom tag "${i}"; use one of ${r}`)})}var wp=(s,e)=>s.keye.key?1:0,Ti=class s{constructor({compat:e,customTags:t,merge:i,resolveKnownTags:n,schema:r,sortMapEntries:o,toStringDefaults:l}){this.compat=Array.isArray(e)?tr(e,"compat"):e?tr(null,e):null,this.merge=!!i,this.name=typeof r=="string"&&r||"core",this.knownTags=n?Hf:{},this.tags=tr(t,this.name),this.toStringOptions=l!=null?l:null,Object.defineProperty(this,Re,{value:Fe}),Object.defineProperty(this,Me,{value:Nt}),Object.defineProperty(this,dt,{value:$e}),this.sortMapEntries=typeof o=="function"?o:o===!0?wp:null}clone(){let e=Object.create(s.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};function _f(s,e){var a;let t=[],i=e.directives===!0;if(e.directives!==!1&&s.directives){let h=s.directives.toString(s);h?(t.push(h),i=!0):s.directives.docStart&&(i=!0)}i&&t.push("---");let n=$n(s,e),{commentString:r}=n.options;if(s.commentBefore){t.length!==1&&t.unshift("");let h=r(s.commentBefore);t.unshift(De(h,""))}let o=!1,l=null;if(s.contents){if(H(s.contents)){if(s.contents.spaceBefore&&i&&t.push(""),s.contents.commentBefore){let c=r(s.contents.commentBefore);t.push(De(c,""))}n.forceBlockIndent=!!s.comment,l=s.contents.comment}let h=l?void 0:()=>o=!0,f=gt(s.contents,n,()=>l=null,h);l&&(f+=st(f,"",r(l))),(f[0]==="|"||f[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${f}`:t.push(f)}else t.push(gt(s.contents,n));if((a=s.directives)!=null&&a.docEnd)if(s.comment){let h=r(s.comment);h.includes(`\n`)?(t.push("..."),t.push(De(h,""))):t.push(`... ${h}`)}else t.push("...");else{let h=s.comment;h&&o&&(h=h.replace(/^\\n+/,"")),h&&((!o||l)&&t[t.length-1]!==""&&t.push(""),t.push(De(r(h),"")))}return t.join(`\n`)+`\n`}var nt=class s{constructor(e,t,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,ce,{value:Nn});let n=null;typeof t=="function"||Array.isArray(t)?n=t:i===void 0&&t&&(i=t,t=void 0);let r=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,uniqueKeys:!0,version:"1.2"},i);this.options=r;let{version:o}=r;i!=null&&i._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new tt({version:o}),this.setSchema(o,i),this.contents=e===void 0?null:this.createNode(e,n,i)}clone(){let e=Object.create(s.prototype,{[ce]:{value:Nn}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=H(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ei(this.contents)&&this.contents.add(e)}addIn(e,t){Ei(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let i=il(this);e.anchor=!t||i.has(t)?sl(t||"a",i):t}return new it(e.anchor)}createNode(e,t,i){let n;if(typeof t=="function")e=t.call({"":e},"",e),n=t;else if(Array.isArray(t)){let g=w=>typeof w=="number"||w instanceof String||w instanceof Number,y=t.filter(g).map(String);y.length>0&&(t=t.concat(y)),n=t}else i===void 0&&t&&(i=t,t=void 0);let{aliasDuplicateObjects:r,anchorPrefix:o,flow:l,keepUndefined:a,onTagObj:h,tag:f}=i!=null?i:{},{onAnchor:c,setAnchors:u,sourceObjects:d}=kf(this,o||"a"),p={aliasDuplicateObjects:r!=null?r:!0,keepUndefined:a!=null?a:!1,onAnchor:c,onTagObj:h,replacer:n,schema:this.schema,sourceObjects:d},m=pt(e,f,p);return l&&_(m)&&(m.flow=!0),u(),m}createPair(e,t,i={}){let n=this.createNode(e,null,i),r=this.createNode(t,null,i);return new Y(n,r)}delete(e){return Ei(this.contents)?this.contents.delete(e):!1}deleteIn(e){return vi(e)?this.contents==null?!1:(this.contents=null,!0):Ei(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return _(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return vi(e)?!t&&F(this.contents)?this.contents.value:this.contents:_(this.contents)?this.contents.getIn(e,t):void 0}has(e){return _(this.contents)?this.contents.has(e):!1}hasIn(e){return vi(e)?this.contents!==void 0:_(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=ps(this.schema,[e],t):Ei(this.contents)&&this.contents.set(e,t)}setIn(e,t){vi(e)?this.contents=t:this.contents==null?this.contents=ps(this.schema,Array.from(e),t):Ei(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let i;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new tt({version:"1.1"}),i={merge:!0,resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new tt({version:e}),i={merge:!1,resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let n=JSON.stringify(e);throw new Error(`Expected \'1.1\', \'1.2\' or null as first argument, but found: ${n}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(i)this.schema=new Ti(Object.assign(i,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:i,maxAliasCount:n,onAnchor:r,reviver:o}={}){let l={anchors:new Map,doc:this,keep:!e,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},a=te(this.contents,t!=null?t:"",l);if(typeof r=="function")for(let{count:h,res:f}of l.anchors.values())r(f,h);return typeof o=="function"?Ot(o,{"":a},"",a):a}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return _f(this,e)}};function Ei(s){if(_(s))return!0;throw new Error("Expected a YAML collection as document contents")}var Ni=class extends Error{constructor(e,t,i,n){super(),this.name=e,this.code=i,this.message=n,this.pos=t}},ke=class extends Ni{constructor(e,t,i){super("YAMLParseError",e,t,i)}},Di=class extends Ni{constructor(e,t,i){super("YAMLWarning",e,t,i)}},Cs=(s,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(l=>e.linePos(l));let{line:i,col:n}=t.linePos[0];t.message+=` at line ${i}, column ${n}`;let r=n-1,o=s.substring(e.lineStarts[i-1],e.lineStarts[i]).replace(/[\\n\\r]+$/,"");if(r>=60&&o.length>80){let l=Math.min(r-39,o.length-79);o="\\u2026"+o.substring(l),r-=l-1}if(o.length>80&&(o=o.substring(0,79)+"\\u2026"),i>1&&/^ *$/.test(o.substring(0,r))){let l=s.substring(e.lineStarts[i-2],e.lineStarts[i-1]);l.length>80&&(l=l.substring(0,79)+`\\u2026\n`),o=l+o}if(/[^ ]/.test(o)){let l=1,a=t.linePos[1];a&&a.line===i&&a.col>n&&(l=Math.max(1,Math.min(a.col-n,80-r)));let h=" ".repeat(r)+"^".repeat(l);t.message+=`:\n\n${o}\n${h}\n`}};function rt(s,{flow:e,indicator:t,next:i,offset:n,onError:r,parentIndent:o,startOnNewline:l}){let a=!1,h=l,f=l,c="",u="",d=!1,p=!1,m=null,g=null,y=null,w=null,x=null,S=null,v=null;for(let C of s)switch(p&&(C.type!=="space"&&C.type!=="newline"&&C.type!=="comma"&&r(C.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),p=!1),m&&(h&&C.type!=="comment"&&C.type!=="newline"&&r(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),m=null),C.type){case"space":!e&&(t!=="doc-start"||(i==null?void 0:i.type)!=="flow-collection")&&C.source.includes(" ")&&(m=C),f=!0;break;case"comment":{f||r(C,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let L=C.source.substring(1)||" ";c?c+=u+L:c=L,u="",h=!1;break}case"newline":h?c?c+=C.source:a=!0:u+=C.source,h=!0,d=!0,(g||y)&&(w=C),f=!0;break;case"anchor":g&&r(C,"MULTIPLE_ANCHORS","A node can have at most one anchor"),C.source.endsWith(":")&&r(C.offset+C.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),g=C,v===null&&(v=C.offset),h=!1,f=!1,p=!0;break;case"tag":{y&&r(C,"MULTIPLE_TAGS","A node can have at most one tag"),y=C,v===null&&(v=C.offset),h=!1,f=!1,p=!0;break}case t:(g||y)&&r(C,"BAD_PROP_ORDER",`Anchors and tags must be after the ${C.source} indicator`),S&&r(C,"UNEXPECTED_TOKEN",`Unexpected ${C.source} in ${e!=null?e:"collection"}`),S=C,h=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){x&&r(C,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),x=C,h=!1,f=!1;break}default:r(C,"UNEXPECTED_TOKEN",`Unexpected ${C.type} token`),h=!1,f=!1}let M=s[s.length-1],O=M?M.offset+M.source.length:n;return p&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&r(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m&&(h&&m.indent<=o||(i==null?void 0:i.type)==="block-map"||(i==null?void 0:i.type)==="block-seq")&&r(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:x,found:S,spaceBefore:a,comment:c,hasNewline:d,anchor:g,tag:y,newlineAfterProp:w,end:O,start:v!=null?v:O}}function Dt(s){if(!s)return null;switch(s.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(s.source.includes(`\n`))return!0;if(s.end){for(let e of s.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of s.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(Dt(e.key)||Dt(e.value))return!0}return!1;default:return!0}}function As(s,e,t){if((e==null?void 0:e.type)==="flow-collection"){let i=e.end[0];i.indent===s&&(i.source==="]"||i.source==="}")&&Dt(e)&&t(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function ir(s,e,t){let{uniqueKeys:i}=s.options;if(i===!1)return!1;let n=typeof i=="function"?i:(r,o)=>r===o||F(r)&&F(o)&&r.value===o.value&&!(r.value==="<<"&&s.schema.merge);return e.some(r=>n(r.key,t))}var Kf="All mapping items must start at the same column";function Wf({composeNode:s,composeEmptyNode:e},t,i,n,r){var f,c;let o=(f=r==null?void 0:r.nodeClass)!=null?f:G,l=new o(t.schema);t.atRoot&&(t.atRoot=!1);let a=i.offset,h=null;for(let u of i.items){let{start:d,key:p,sep:m,value:g}=u,y=rt(d,{indicator:"explicit-key-ind",next:p!=null?p:m==null?void 0:m[0],offset:a,onError:n,parentIndent:i.indent,startOnNewline:!0}),w=!y.found;if(w){if(p&&(p.type==="block-seq"?n(a,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in p&&p.indent!==i.indent&&n(a,"BAD_INDENT",Kf)),!y.anchor&&!y.tag&&!m){h=y.end,y.comment&&(l.comment?l.comment+=`\n`+y.comment:l.comment=y.comment);continue}(y.newlineAfterProp||Dt(p))&&n(p!=null?p:d[d.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else((c=y.found)==null?void 0:c.indent)!==i.indent&&n(a,"BAD_INDENT",Kf);let x=y.end,S=p?s(t,p,y,n):e(t,x,d,null,y,n);t.schema.compat&&As(i.indent,p,n),ir(t,l.items,S)&&n(x,"DUPLICATE_KEY","Map keys must be unique");let v=rt(m!=null?m:[],{indicator:"map-value-ind",next:g,offset:S.range[2],onError:n,parentIndent:i.indent,startOnNewline:!p||p.type==="block-scalar"});if(a=v.end,v.found){w&&((g==null?void 0:g.type)==="block-map"&&!v.hasNewline&&n(a,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&y.starts&&(s.type==="block-map"||s.type==="block-seq");function jf({composeNode:s,composeEmptyNode:e},t,i,n,r){var g,y;let o=i.start.source==="{",l=o?"flow map":"flow sequence",a=(g=r==null?void 0:r.nodeClass)!=null?g:o?G:oe,h=new a(t.schema);h.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1);let c=i.offset+i.start.source.length;for(let w=0;w0){let w=ot(p,m,t.options.strict,n);w.comment&&(h.comment?h.comment+=`\n`+w.comment:h.comment=w.comment),h.range=[i.offset,m,w.offset]}else h.range=[i.offset,m,m];return h}function bl(s,e,t,i,n,r){let o=t.type==="block-map"?Wf(s,e,t,i,r):t.type==="block-seq"?qf(s,e,t,i,r):jf(s,e,t,i,r),l=o.constructor;return n==="!"||n===l.tagName?(o.tag=l.tagName,o):(n&&(o.tag=n),o)}function zf(s,e,t,i,n){var u,d;let r=i.tag,o=r?e.directives.tagName(r.source,p=>n(r,"TAG_RESOLVE_FAILED",p)):null;if(t.type==="block-seq"){let{anchor:p,newlineAfterProp:m}=i,g=p&&r?p.offset>r.offset?p:r:p!=null?p:r;g&&(!m||m.offsetp.tag===o&&p.collection===l);if(!a){let p=e.schema.knownTags[o];if(p&&p.collection===l)e.schema.tags.push(Object.assign({},p,{default:!1})),a=p;else return p!=null&&p.collection?n(r,"BAD_COLLECTION_TYPE",`${p.tag} used for ${l} collection, but expects ${p.collection}`,!0):n(r,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),bl(s,e,t,n,o)}let h=bl(s,e,t,n,o,a),f=(d=(u=a.resolve)==null?void 0:u.call(a,h,p=>n(r,"TAG_RESOLVE_FAILED",p),e.options))!=null?d:h,c=H(f)?f:new E(f);return c.range=h.range,c.tag=o,a!=null&&a.format&&(c.format=a.format),c}function sr(s,e,t){let i=e.offset,n=kp(e,s.options.strict,t);if(!n)return{value:"",type:null,comment:"",range:[i,i,i]};let r=n.mode===">"?E.BLOCK_FOLDED:E.BLOCK_LITERAL,o=e.source?Sp(e.source):[],l=o.length;for(let m=o.length-1;m>=0;--m){let g=o[m][1];if(g===""||g==="\\r")l=m;else break}if(l===0){let m=n.chomp==="+"&&o.length>0?`\n`.repeat(Math.max(1,o.length-1)):"",g=i+n.length;return e.source&&(g+=e.source.length),{value:m,type:r,comment:n.comment,range:[i,g,g]}}let a=e.indent+n.indent,h=e.offset+n.length,f=0;for(let m=0;ma&&(a=g.length);else{g.length=l;--m)o[m][0].length>a&&(l=m+1);let c="",u="",d=!1;for(let m=0;ma||y[0]===" "?(u===" "?u=`\n`:!d&&u===`\n`&&(u=`\n\n`),c+=u+g.slice(a)+y,u=`\n`,d=!0):y===""?u===`\n`?c+=`\n`:u=`\n`:(c+=u+y,u=" ",d=!1)}switch(n.chomp){case"-":break;case"+":for(let m=l;mt(i+u,d,p);switch(n){case"scalar":l=E.PLAIN,a=vp(r,h);break;case"single-quoted-scalar":l=E.QUOTE_SINGLE,a=xp(r,h);break;case"double-quoted-scalar":l=E.QUOTE_DOUBLE,a=Cp(r,h);break;default:return t(s,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${n}`),{value:"",type:null,comment:"",range:[i,i+r.length,i+r.length]}}let f=i+r.length,c=ot(o,f,e,t);return{value:a,type:l,comment:c.comment,range:[i,f,c.offset]}}function vp(s,e){let t="";switch(s[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${s[0]}`;break}case"@":case"`":{t=`reserved character ${s[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),Uf(s)}function xp(s,e){return(s[s.length-1]!=="\'"||s.length===1)&&e(s.length,"MISSING_CHAR","Missing closing \'quote"),Uf(s.slice(1,-1)).replace(/\'\'/g,"\'")}function Uf(s){var a;let e,t;try{e=new RegExp(`(.*?)(?r?s.slice(r,i+1):n)}else t+=n}return(s[s.length-1]!==\'"\'||s.length===1)&&e(s.length,"MISSING_CHAR",\'Missing closing "quote\'),t}function Ap(s,e){let t="",i=s[e+1];for(;(i===" "||i===" "||i===`\n`||i==="\\r")&&!(i==="\\r"&&s[e+2]!==`\n`);)i===`\n`&&(t+=`\n`),e+=1,i=s[e+1];return t||(t=" "),{fold:t,offset:e}}var Mp={0:"\\0",a:"\\x07",b:"\\b",e:"\\x1B",f:"\\f",n:`\n`,r:"\\r",t:" ",v:"\\v",N:"\\x85",_:"\\xA0",L:"\\u2028",P:"\\u2029"," ":" ",\'"\':\'"\',"/":"/","\\\\":"\\\\"," ":" "};function Op(s,e,t,i){let n=s.substr(e,t),o=n.length===t&&/^[0-9a-fA-F]+$/.test(n)?parseInt(n,16):NaN;if(isNaN(o)){let l=s.substr(e-2,t+2);return i(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${l}`),l}return String.fromCodePoint(o)}function wl(s,e,t,i){let{value:n,type:r,comment:o,range:l}=e.type==="block-scalar"?sr(s,e,i):nr(e,s.options.strict,i),a=t?s.directives.tagName(t.source,c=>i(t,"TAG_RESOLVE_FAILED",c)):null,h=t&&a?Tp(s.schema,n,a,t,i):e.type==="scalar"?Ep(s,n,e,i):s.schema[Me],f;try{let c=h.resolve(n,u=>i(t!=null?t:e,"TAG_RESOLVE_FAILED",u),s.options);f=F(c)?c:new E(c)}catch(c){let u=c instanceof Error?c.message:String(c);i(t!=null?t:e,"TAG_RESOLVE_FAILED",u),f=new E(n)}return f.range=l,f.source=n,r&&(f.type=r),a&&(f.tag=a),h.format&&(f.format=h.format),o&&(f.comment=o),f}function Tp(s,e,t,i,n){var l;if(t==="!")return s[Me];let r=[];for(let a of s.tags)if(!a.collection&&a.tag===t)if(a.default&&a.test)r.push(a);else return a;for(let a of r)if((l=a.test)!=null&&l.test(e))return a;let o=s.knownTags[t];return o&&!o.collection?(s.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(n(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),s[Me])}function Ep({directives:s,schema:e},t,i,n){var o;let r=e.tags.find(l=>{var a;return l.default&&((a=l.test)==null?void 0:a.test(t))})||e[Me];if(e.compat){let l=(o=e.compat.find(a=>{var h;return a.default&&((h=a.test)==null?void 0:h.test(t))}))!=null?o:e[Me];if(r.tag!==l.tag){let a=s.tagString(r.tag),h=s.tagString(l.tag),f=`Value may be parsed as either ${a} or ${h}`;n(i,"TAG_RESOLVE_FAILED",f,!0)}}return r}function Yf(s,e,t){if(e){t===null&&(t=e.length);for(let i=t-1;i>=0;--i){let n=e[i];switch(n.type){case"space":case"comment":case"newline":s-=n.source.length;continue}for(n=e[++i];(n==null?void 0:n.type)==="space";)s+=n.source.length,n=e[++i];break}}return s}var Np={composeNode:kl,composeEmptyNode:rr};function kl(s,e,t,i){let{spaceBefore:n,comment:r,anchor:o,tag:l}=t,a,h=!0;switch(e.type){case"alias":a=Dp(s,e,i),(o||l)&&i(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":a=wl(s,e,l,i),o&&(a.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":a=zf(Np,s,e,t,i),o&&(a.anchor=o.source.substring(1));break;default:{let f=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;i(e,"UNEXPECTED_TOKEN",f),a=rr(s,e.offset,void 0,null,t,i),h=!1}}return o&&a.anchor===""&&i(o,"BAD_ALIAS","Anchor cannot be an empty string"),n&&(a.spaceBefore=!0),r&&(e.type==="scalar"&&e.source===""?a.comment=r:a.commentBefore=r),s.options.keepSourceTokens&&h&&(a.srcToken=e),a}function rr(s,e,t,i,{spaceBefore:n,comment:r,anchor:o,tag:l,end:a},h){let f={type:"scalar",offset:Yf(e,t,i),indent:-1,source:""},c=wl(s,f,l,h);return o&&(c.anchor=o.source.substring(1),c.anchor===""&&h(o,"BAD_ALIAS","Anchor cannot be an empty string")),n&&(c.spaceBefore=!0),r&&(c.comment=r,c.range[2]=a),c}function Dp({options:s},{offset:e,source:t,end:i},n){let r=new it(t.substring(1));r.source===""&&n(e,"BAD_ALIAS","Alias cannot be an empty string"),r.source.endsWith(":")&&n(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,l=ot(i,o,s.strict,n);return r.range=[e,o,l.offset],l.comment&&(r.comment=l.comment),r}function Gf(s,e,{offset:t,start:i,value:n,end:r},o){let l=Object.assign({_directives:e},s),a=new nt(void 0,l),h={atRoot:!0,directives:a.directives,options:a.options,schema:a.schema},f=rt(i,{indicator:"doc-start",next:n!=null?n:r==null?void 0:r[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(a.directives.docStart=!0,n&&(n.type==="block-map"||n.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),a.contents=n?kl(h,n,f,o):rr(h,f.end,i,null,f,o);let c=a.contents.range[2],u=ot(r,c,!1,o);return u.comment&&(a.comment=u.comment),a.range=[t,c,u.offset],a}function Ms(s){if(typeof s=="number")return[s,s+1];if(Array.isArray(s))return s.length===2?s:[s[0],s[1]];let{offset:e,source:t}=s;return[e,e+(typeof t=="string"?t.length:1)]}function Jf(s){var n;let e="",t=!1,i=!1;for(let r=0;r{let o=Ms(t);r?this.warnings.push(new Di(o,i,n)):this.errors.push(new ke(o,i,n))},this.directives=new tt({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:i,afterEmptyLine:n}=Jf(this.prelude);if(i){let r=e.contents;if(t)e.comment=e.comment?`${e.comment}\n${i}`:i;else if(n||e.directives.docStart||!r)e.commentBefore=i;else if(_(r)&&!r.flow&&r.items.length>0){let o=r.items[0];V(o)&&(o=o.key);let l=o.commentBefore;o.commentBefore=l?`${i}\n${l}`:i}else{let o=r.commentBefore;r.commentBefore=o?`${i}\n${o}`:i}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Jf(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,i=-1){for(let n of e)yield*k(this.next(n));yield*k(this.end(t,i))}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,i,n)=>{let r=Ms(e);r[0]+=t,this.onError(r,"BAD_DIRECTIVE",i,n)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Gf(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,i=new ke(Ms(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new ke(Ms(e),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let t=ot(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let i=this.doc.comment;this.doc.comment=i?`${i}\n${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new ke(Ms(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let i=Object.assign({_directives:this.directives},this.options),n=new nt(void 0,i);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),n.range=[0,t,t],this.decorate(n,!1),yield n}}};var Cl={};Fl(Cl,{BOM:()=>Os,DOCUMENT:()=>Ts,FLOW_END:()=>Es,SCALAR:()=>Li,createScalarToken:()=>Qf,isCollection:()=>Bp,isScalar:()=>Ip,prettyToken:()=>Rp,resolveAsScalar:()=>Xf,setScalarValue:()=>Zf,stringify:()=>tc,tokenType:()=>xl,visit:()=>Lt});function Xf(s,e=!0,t){if(s){let i=(n,r,o)=>{let l=typeof n=="number"?n:Array.isArray(n)?n[0]:n.offset;if(t)t(l,r,o);else throw new ke([l,l+1],r,o)};switch(s.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return nr(s,e,i);case"block-scalar":return sr({options:{strict:e}},s,i)}}return null}function Qf(s,e){var h;let{implicitKey:t=!1,indent:i,inFlow:n=!1,offset:r=-1,type:o="PLAIN"}=e,l=mt({type:o,value:s},{implicitKey:t,indent:i>0?" ".repeat(i):"",inFlow:n,options:{blockQuote:!0,lineWidth:-1}}),a=(h=e.end)!=null?h:[{type:"newline",offset:-1,indent:i,source:`\n`}];switch(l[0]){case"|":case">":{let f=l.indexOf(`\n`),c=l.substring(0,f),u=l.substring(f+1)+`\n`,d=[{type:"block-scalar-header",offset:r,indent:i,source:c}];return ec(d,a)||d.push({type:"newline",offset:-1,indent:i,source:`\n`}),{type:"block-scalar",offset:r,indent:i,props:d,source:u}}case\'"\':return{type:"double-quoted-scalar",offset:r,indent:i,source:l,end:a};case"\'":return{type:"single-quoted-scalar",offset:r,indent:i,source:l,end:a};default:return{type:"scalar",offset:r,indent:i,source:l,end:a}}}function Zf(s,e,t={}){let{afterKey:i=!1,implicitKey:n=!1,inFlow:r=!1,type:o}=t,l="indent"in s?s.indent:null;if(i&&typeof l=="number"&&(l+=2),!o)switch(s.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let h=s.props[0];if(h.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=h.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let a=mt({type:o,value:e},{implicitKey:n||l===null,indent:l!==null&&l>0?" ".repeat(l):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}});switch(a[0]){case"|":case">":Lp(s,a);break;case\'"\':Sl(s,a,"double-quoted-scalar");break;case"\'":Sl(s,a,"single-quoted-scalar");break;default:Sl(s,a,"scalar")}}function Lp(s,e){let t=e.indexOf(`\n`),i=e.substring(0,t),n=e.substring(t+1)+`\n`;if(s.type==="block-scalar"){let r=s.props[0];if(r.type!=="block-scalar-header")throw new Error("Invalid block scalar header");r.source=i,s.source=n}else{let{offset:r}=s,o="indent"in s?s.indent:-1,l=[{type:"block-scalar-header",offset:r,indent:o,source:i}];ec(l,"end"in s?s.end:void 0)||l.push({type:"newline",offset:-1,indent:o,source:`\n`});for(let a of Object.keys(s))a!=="type"&&a!=="offset"&&delete s[a];Object.assign(s,{type:"block-scalar",indent:o,props:l,source:n})}}function ec(s,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":s.push(t);break;case"newline":return s.push(t),!0}return!1}function Sl(s,e,t){switch(s.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":s.type=t,s.source=e;break;case"block-scalar":{let i=s.props.slice(1),n=e.length;s.props[0].type==="block-scalar-header"&&(n-=s.props[0].source.length);for(let r of i)r.offset+=n;delete s.props,Object.assign(s,{type:t,source:e,end:i});break}case"block-map":case"block-seq":{let n={type:"newline",offset:s.offset+e.length,indent:s.indent,source:`\n`};delete s.items,Object.assign(s,{type:t,source:e,end:[n]});break}default:{let i="indent"in s?s.indent:-1,n="end"in s&&Array.isArray(s.end)?s.end.filter(r=>r.type==="space"||r.type==="comment"||r.type==="newline"):[];for(let r of Object.keys(s))r!=="type"&&r!=="offset"&&delete s[r];Object.assign(s,{type:t,indent:i,source:e,end:n})}}}var tc=s=>"type"in s?lr(s):or(s);function lr(s){switch(s.type){case"block-scalar":{let e="";for(let t of s.props)e+=lr(t);return e+s.source}case"block-map":case"block-seq":{let e="";for(let t of s.items)e+=or(t);return e}case"flow-collection":{let e=s.start.source;for(let t of s.items)e+=or(t);for(let t of s.end)e+=t.source;return e}case"document":{let e=or(s);if(s.end)for(let t of s.end)e+=t.source;return e}default:{let e=s.source;if("end"in s&&s.end)for(let t of s.end)e+=t.source;return e}}}function or({start:s,key:e,sep:t,value:i}){let n="";for(let r of s)n+=r.source;if(e&&(n+=lr(e)),t)for(let r of t)n+=r.source;return i&&(n+=lr(i)),n}var vl=Symbol("break visit"),Pp=Symbol("skip children"),ic=Symbol("remove item");function Lt(s,e){"type"in s&&s.type==="document"&&(s={start:s.start,value:s.value}),sc(Object.freeze([]),s,e)}Lt.BREAK=vl;Lt.SKIP=Pp;Lt.REMOVE=ic;Lt.itemAtPath=(s,e)=>{let t=s;for(let[i,n]of e){let r=t==null?void 0:t[i];if(r&&"items"in r)t=r.items[n];else return}return t};Lt.parentCollection=(s,e)=>{let t=Lt.itemAtPath(s,e.slice(0,-1)),i=e[e.length-1][0],n=t==null?void 0:t[i];if(n&&"items"in n)return n;throw new Error("Parent collection not found")};function sc(s,e,t){let i=t(e,s);if(typeof i=="symbol")return i;for(let n of["key","value"]){let r=e[n];if(r&&"items"in r){for(let o=0;o!!s&&"items"in s,Ip=s=>!!s&&(s.type==="scalar"||s.type==="single-quoted-scalar"||s.type==="double-quoted-scalar"||s.type==="block-scalar");function Rp(s){switch(s){case Os:return"";case Ts:return"";case Es:return"";case Li:return"";default:return JSON.stringify(s)}}function xl(s){switch(s){case Os:return"byte-order-mark";case Ts:return"doc-mode";case Es:return"flow-error-end";case Li:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`\n`:case`\\r\n`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(s[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"\'":return"single-quoted-scalar";case\'"\':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function Ve(s){switch(s){case void 0:case" ":case`\n`:case"\\r":case" ":return!0;default:return!1}}var nc=new Set("0123456789ABCDEFabcdef"),Fp=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*\'()"),ar=new Set(",[]{}"),$p=new Set(` ,[]{}\n\\r `),Al=s=>!s||$p.has(s),Pi=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){var n;if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let i=(n=this.next)!=null?n:"stream";for(;i&&(t||this.hasChars(1));)i=yield*k(this.parseNext(i))}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`\n`?!0:t==="\\r"?this.buffer[e+1]===`\n`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let i=0;for(;t===" ";)t=this.buffer[++i+e];if(t==="\\r"){let n=this.buffer[i+e+1];if(n===`\n`||!n&&!this.atEnd)return e+i+1}return t===`\n`||i>=this.indentNext||!t&&!this.atEnd?e+i:-1}if(t==="-"||t==="."){let i=this.buffer.substr(e,3);if((i==="---"||i==="...")&&Ve(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!Ve(this.charAt(1))&&(this.indentNext=this.indentValue),yield*k(this.parseBlockStart())}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&Ve(t)){let i=(yield*k(this.pushCount(1)))+(yield*k(this.pushSpaces(!0)));return this.indentNext=this.indentValue+1,this.indentValue+=i,yield*k(this.parseBlockStart())}return"doc"}*parseDocument(){yield*k(this.pushSpaces(!0));let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*k(this.pushIndicators());switch(e[t]){case"#":yield*k(this.pushCount(e.length-t));case void 0:return yield*k(this.pushNewline()),yield*k(this.parseLineStart());case"{":case"[":return yield*k(this.pushCount(1)),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*k(this.pushCount(1)),"doc";case"*":return yield*k(this.pushUntil(Al)),"doc";case\'"\':case"\'":return yield*k(this.parseQuotedScalar());case"|":case">":return t+=yield*k(this.parseBlockScalarHeader()),t+=yield*k(this.pushSpaces(!0)),yield*k(this.pushCount(e.length-t)),yield*k(this.pushNewline()),yield*k(this.parseBlockScalar());default:return yield*k(this.parsePlainScalar())}}*parseFlowCollection(){let e,t,i=-1;do e=yield*k(this.pushNewline()),e>0?(t=yield*k(this.pushSpaces(!1)),this.indentValue=i=t):t=0,t+=yield*k(this.pushSpaces(!0));while(e+t>0);let n=this.getLine();if(n===null)return this.setNext("flow");if((i!==-1&&i"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*k(this.pushUntil(t=>Ve(t)||t==="#"))}*parseBlockScalar(){let e=this.pos-1,t=0,i;e:for(let r=this.pos;i=this.buffer[r];++r)switch(i){case" ":t+=1;break;case`\n`:e=r,t=0;break;case"\\r":{let o=this.buffer[r+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`\n`)break}default:break e}if(!i&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let r=this.continueScalar(e+1);if(r===-1)break;e=this.buffer.indexOf(`\n`,r)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let n=e+1;for(i=this.buffer[n];i===" ";)i=this.buffer[++n];if(i===" "){for(;i===" "||i===" "||i==="\\r"||i===`\n`;)i=this.buffer[++n];e=n-1}else if(!this.blockScalarKeep)do{let r=e-1,o=this.buffer[r];o==="\\r"&&(o=this.buffer[--r]);let l=r;for(;o===" ";)o=this.buffer[--r];if(o===`\n`&&r>=this.pos&&r+1+t>l)e=r;else break}while(!0);return yield Li,yield*k(this.pushToIndex(e+1,!0)),yield*k(this.parseLineStart())}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,i=this.pos-1,n;for(;n=this.buffer[++i];)if(n===":"){let r=this.buffer[i+1];if(Ve(r)||e&&ar.has(r))break;t=i}else if(Ve(n)){let r=this.buffer[i+1];if(n==="\\r"&&(r===`\n`?(i+=1,n=`\n`,r=this.buffer[i+1]):t=i),r==="#"||e&&ar.has(r))break;if(n===`\n`){let o=this.continueScalar(i+1);if(o===-1)break;i=Math.max(i,o-2)}}else{if(e&&ar.has(n))break;t=i}return!n&&!this.atEnd?this.setNext("plain-scalar"):(yield Li,yield*k(this.pushToIndex(t+1,!0)),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let i=this.buffer.slice(this.pos,e);return i?(yield i,this.pos+=i.length,i.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*k(this.pushTag()))+(yield*k(this.pushSpaces(!0)))+(yield*k(this.pushIndicators()));case"&":return(yield*k(this.pushUntil(Al)))+(yield*k(this.pushSpaces(!0)))+(yield*k(this.pushIndicators()));case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(Ve(t)||e&&ar.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*k(this.pushCount(1)))+(yield*k(this.pushSpaces(!0)))+(yield*k(this.pushIndicators()))}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!Ve(t)&&t!==">";)t=this.buffer[++e];return yield*k(this.pushToIndex(t===">"?e+1:e,!1))}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Fp.has(t))t=this.buffer[++e];else if(t==="%"&&nc.has(this.buffer[e+1])&&nc.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*k(this.pushToIndex(e,!1))}}*pushNewline(){let e=this.buffer[this.pos];return e===`\n`?yield*k(this.pushCount(1)):e==="\\r"&&this.charAt(1)===`\n`?yield*k(this.pushCount(2)):0}*pushSpaces(e){let t=this.pos-1,i;do i=this.buffer[++t];while(i===" "||e&&i===" ");let n=t-this.pos;return n>0&&(yield this.buffer.substr(this.pos,n),this.pos=t),n}*pushUntil(e){let t=this.pos,i=this.buffer[t];for(;!e(i);)i=this.buffer[++t];return yield*k(this.pushToIndex(t,!1))}};var Bi=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,i=this.lineStarts.length;for(;t>1;this.lineStarts[r]=0;)switch(s[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((t=s[++e])==null?void 0:t.type)==="space";);return s.splice(e,s.length)}function oc(s){if(s.start.type==="flow-seq-start")for(let e of s.items)e.sep&&!e.value&&!Qt(e.start,"explicit-key-ind")&&!Qt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,lc(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var Zt=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new Pi,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let i of this.lexer.lex(e,t))yield*k(this.next(i));t||(yield*k(this.end()))}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*k(this.step()),this.offset+=e.length;return}let t=xl(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*k(this.step()),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let i=`Not a YAML token: ${e}`;yield*k(this.pop({type:"error",offset:this.offset,message:i,source:e})),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*k(this.pop())}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*k(this.pop());this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*k(this.stream());switch(e.type){case"document":return yield*k(this.document(e));case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*k(this.scalar(e));case"block-scalar":return yield*k(this.blockScalar(e));case"block-map":return yield*k(this.blockMap(e));case"block-seq":return yield*k(this.blockSequence(e));case"flow-collection":return yield*k(this.flowCollection(e));case"doc-end":return yield*k(this.documentEnd(e))}yield*k(this.pop())}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e!=null?e:this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let i=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in i?i.indent:0:t.type==="flow-collection"&&i.type==="document"&&(t.indent=0),t.type==="flow-collection"&&oc(t),i.type){case"document":i.value=t;break;case"block-scalar":i.props.push(t);break;case"block-map":{let n=i.items[i.items.length-1];if(n.value){i.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(n.sep)n.value=t;else{Object.assign(n,{key:t,sep:[]}),this.onKeyLine=!n.explicitKey;return}break}case"block-seq":{let n=i.items[i.items.length-1];n.value?i.items.push({start:[],value:t}):n.value=t;break}case"flow-collection":{let n=i.items[i.items.length-1];!n||n.value?i.items.push({start:[],key:t,sep:[]}):n.sep?n.value=t:Object.assign(n,{key:t,sep:[]});return}default:yield*k(this.pop()),yield*k(this.pop(t))}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let n=t.items[t.items.length-1];n&&!n.sep&&!n.value&&n.start.length>0&&rc(n.start)===-1&&(t.indent===0||n.start.every(r=>r.type!=="comment"||r.indent=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",o=[];if(r&&t.sep&&!t.value){let l=[];for(let a=0;ae.indent&&(l.length=0);break;default:l.length=0}}l.length>=2&&(o=t.sep.splice(l[1]))}switch(this.type){case"anchor":case"tag":r||t.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(o.push(this.sourceToken),e.items.push({start:o,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Qt(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]});else if(lc(t.key)&&!Qt(t.sep,"newline")){let l=Ii(t.start),a=t.key,h=t.sep;h.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:l,key:a,sep:h}]})}else o.length>0?t.sep=t.sep.concat(o,this.sourceToken):t.sep.push(this.sourceToken);else if(Qt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let l=Ii(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:l,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||r?e.items.push({start:o,key:null,sep:[this.sourceToken]}):Qt(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let l=this.flowScalar(this.type);r||t.value?(e.items.push({start:o,key:l,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(l):(Object.assign(t,{key:l,sep:[]}),this.onKeyLine=!0);return}default:{let l=this.startBlockValue(e);if(l){n&&l.type!=="block-seq"&&e.items.push({start:o}),this.stack.push(l);return}}}}yield*k(this.pop()),yield*k(this.step())}*blockSequence(e){var i;let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let n="end"in t.value?t.value.end:void 0,r=Array.isArray(n)?n[n.length-1]:void 0;(r==null?void 0:r.type)==="comment"?n==null||n.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2],r=(i=n==null?void 0:n.value)==null?void 0:i.end;if(Array.isArray(r)){Array.prototype.push.apply(r,t.start),r.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||Qt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let n=this.startBlockValue(e);if(n){this.stack.push(n);return}}yield*k(this.pop()),yield*k(this.step())}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*k(this.pop()),i=this.peek(1);while(i&&i.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let i=this.startBlockValue(e);i?this.stack.push(i):(yield*k(this.pop()),yield*k(this.step()))}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*k(this.pop()),yield*k(this.step());else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let n=hr(i),r=Ii(n);oc(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let l={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:r,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=l}else yield*k(this.lineEnd(e))}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`\n`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`\n`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=hr(e),i=Ii(t);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=hr(e),i=Ii(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*k(this.pop())))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*k(this.pop()),yield*k(this.step());break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*k(this.pop()))}}};function ac(s){let e=s.prettyErrors!==!1;return{lineCounter:s.lineCounter||e&&new Bi||null,prettyErrors:e}}function hc(s,e={}){let{lineCounter:t,prettyErrors:i}=ac(e),n=new Zt(t==null?void 0:t.addNewLine),r=new Xt(e),o=Array.from(r.compose(n.parse(s)));if(i&&t)for(let l of o)l.errors.forEach(Cs(s,t)),l.warnings.forEach(Cs(s,t));return o.length>0?o:Object.assign([],{empty:!0},r.streamInfo())}function Ml(s,e={}){let{lineCounter:t,prettyErrors:i}=ac(e),n=new Zt(t==null?void 0:t.addNewLine),r=new Xt(e),o=null;for(let l of r.compose(n.parse(s),!0,s.length))if(!o)o=l;else if(o.options.logLevel!=="silent"){o.errors.push(new ke(l.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&t&&(o.errors.forEach(Cs(s,t)),o.warnings.forEach(Cs(s,t))),o}function fc(s,e,t){let i;typeof e=="function"?i=e:t===void 0&&e&&typeof e=="object"&&(t=e);let n=Ml(s,t);if(!n)return null;if(n.warnings.forEach(r=>Vn(n.options.logLevel,r)),n.errors.length>0){if(n.options.logLevel!=="silent")throw n.errors[0];n.errors=[]}return n.toJS(Object.assign({reviver:i},t))}function cc(s,e,t){var n;let i=null;if(typeof e=="function"||Array.isArray(e)?i=e:t===void 0&&e&&(t=e),typeof t=="string"&&(t=t.length),typeof t=="number"){let r=Math.round(t);t=r<1?void 0:r>8?{indent:8}:{indent:r}}if(s===void 0){let{keepUndefined:r}=(n=t!=null?t:e)!=null?n:{};if(!r)return}return new nt(s,i,t).toString(t)}var Tl=Ol;var fr="STATBLOCK-WIKI-LINK",Vp=new RegExp(`<${fr}>([\\\\s\\\\S]+?)<${fr}>`),cr="STATBLOCK-MARKDOWN-LINK",Hp=new RegExp(`<${cr}>([\\\\s\\\\S]+?)(?:\\\\|([\\\\s\\\\S]+?))?<${cr}>`),_p=/([\\s\\S]+?)/,Ns=class s{static isStatblockLink(e){return _p.test(e)}static replaceWikiLink(e){return`<${fr}>${e}<${fr}>`}static replaceMarkdownLink(e,t){return`<${cr}>${e}${t?"|"+t:""}<${cr}>`}static transformSource(e){return e.replace(/\\[\\[([^\\]]+?)\\]\\]/g,(t,i)=>s.replaceWikiLink(i)).replace(/\\[([^\\]]*?)\\]\\(([^)]+?)\\)/g,(t,i,n)=>s.replaceMarkdownLink(n,i))}static transformYamlSource(e){return s.transformSource(e)}static stringifyLinks(e){return e.replace(new RegExp(Vp,"g"),(t,i)=>`[[${i}]]`).replace(new RegExp(Hp,"g"),(t,i,n)=>`[${n||""}](${i})`)}};var ei=self,El=class{constructor(){this.queue=[];this.parsing=!1;ei.addEventListener("message",e=>{e.data.type=="queue"&&(this.add(...e.data.data),this.debug&&console.debug(`Fantasy Statblocks: Received queue message for ${e.data.data.length} paths`))}),ei.addEventListener("message",e=>{e.data.type=="debug"&&(this.debug=e.data.data)})}add(...e){this.debug&&console.debug(`Fantasy Statblocks: Adding ${e.length} paths to queue`),this.queue.push(...e),this.parsing||this.parse()}processContent(e,t){this.debug&&console.debug(`Fantasy Statblocks: Process Content: ${t.path}`);let i=this.findFirstStatBlock(e);if(i){this.debug&&console.debug(`Fantasy Statblocks: found Statblock: ${JSON.stringify(i)}`);let n=Ns.transformSource(i),r=Object.assign({},Tl.parse(n),{mtime:t.mtime});this.debug&&console.debug(`Fantasy Statblocks: ${JSON.stringify(r)}`),this.processMonster(r,t)}}findFirstStatBlock(e){let t=e.match(/^```[^\\S\\r\\n]*statblock\\s?\\n([\\s\\S]+?)^```/m);return t?t[1]:null}async parse(){for(this.parsing=!0;this.queue.length;){let e=this.queue.shift();this.debug&&console.debug(`Fantasy Statblocks: Parsing ${e} for statblocks (${this.queue.length} to go)`);let t=await this.getFileData(e);if(!e.endsWith(".md")||!t.data)continue;let{file:i,statblock:n}=t.data;try{n==="inline"?this.processContent(t.data.content,i):this.parseFrontmatter(t.data.info,i)}catch(r){console.error(`There was an error parsing the Statblock in ${e}: \n\n${r.message}`)}ei.postMessage({type:"done",data:e})}this.parsing=!1,ei.postMessage({type:"save",data:null})}async getFileData(e){return new Promise(t=>{ei.addEventListener("message",i=>{i.data.type=="file"&&t(i.data)}),ei.postMessage({data:e,type:"get"})})}parseFrontmatter(e,t){if(!e.exists)return;let i=Ns.transformYamlSource(e.frontmatter),n=this.validate(Object.assign({},br(Tl.parse(i)),{mtime:t.mtime}));n.traits&&(n.traits=bi([],n.traits)),this.processMonster(n,t)}processMonster(e,t){e.actions&&(e.actions=bi([],e.actions)),e.bonus_actions&&(e.bonus_actions=bi([],e.bonus_actions)),e.reactions&&(e.reactions=bi([],e.reactions)),e.legendary_actions&&(e.legendary_actions=bi([],e.legendary_actions)),e["statblock-link"]&&e["statblock-link"].startsWith("#")&&(e["statblock-link"]=`[${e.name}](${t.path}${e["statblock-link"]})`),this.debug&&console.debug(`Fantasy Statblocks: Adding ${e.name} to bestiary from ${t.basename}`),ei.postMessage({type:"update",data:{monster:e,path:t.path}})}validate(e){return e}};new El;\n')}var oo=class extends wt.Component{constructor(){super(...arguments);this.watchPaths=new Map;this.workers=[];this.index=0;this.queue=new Set}get metadataCache(){return this.plugin.app.metadataCache}get vault(){return this.plugin.app.vault}setDebug(){for(let t of this.workers)t.postMessage({type:"debug",data:this.plugin.settings.debug})}initialize(t){return this.plugin=t,this}onload(){this.setDebug(),this.registerEvent(this.metadataCache.on("changed",async i=>{if(!this.plugin.settings.autoParse)return;let{frontmatter:a}=this.metadataCache.getFileCache(i)??{};if(!a||!a.statblock){this.watchPaths.has(i.path)&&this.delete(i.path);return}this.plugin.settings.debug&&console.debug(`Fantasy Statblocks: Reparsing ${i.name}`),this.parsePath(i)})),this.registerEvent(this.vault.on("rename",async(i,a)=>{this.plugin.settings.autoParse&&i instanceof wt.TFile&&this.watchPaths.has(a)&&(this.plugin.settings.debug&&console.debug(`Fantasy Statblocks: Handling rename of ${a} to ${i.path}`),await this.delete(a),this.parsePath(i))})),this.registerEvent(this.vault.on("delete",i=>{this.plugin.settings.autoParse&&i instanceof wt.TFile&&this.watchPaths.has(i.path)&&this.delete(i.path)}));let t=wt.Platform.isIosApp?2:Math.max(Math.ceil(navigator.hardwareConcurrency/2),2);for(let i=0;i{if(s.data.type=="get"){let r=s.data.data,o=this.plugin.app.vault.getAbstractFileByPath(r);if(this.queue.delete(r),o instanceof wt.TFile){let l=await this.getFileInformation(o);a.postMessage(l??{type:"file"})}else a.postMessage({type:"file"}),this.parsePath(o)}}),a.addEventListener("message",async s=>{if(s.data.type=="update"){let{monster:r,path:o}=s.data.data,l=ve.hasCreature(r.name);r.path=o,ve.addEphemeralCreature(r),this.watchPaths.set(o,r.name),this.plugin.settings.debug&&console.debug(`Fantasy Statblocks: ${l?"Updated":"Added"} ${r.name}`)}}),a.addEventListener("message",async s=>{s.data.type=="save"&&await this.save()})}this.plugin.app.workspace.onLayoutReady(()=>{if(!this.plugin.settings.autoParse){ve.setResolved(!0);return}this.start(!0)})}async save(){this.queue.size||(this.startTime&&(console.info(`Fantasy Statblocks: Frontmatter Parsing Complete in ${((Date.now()-this.startTime)/1e3).toLocaleString()} seconds.`),this.startTime=0),this.announce&&(new wt.Notice("Fantasy Statblocks: Frontmatter Parsing complete."),this.announce=!1),ve.setResolved(!0))}async delete(t){ve.removeEphemeralCreature(this.watchPaths.get(t)),this.watchPaths.delete(t),this.plugin.settings.debug&&console.debug(`Fantasy Statblocks: Removing '${t}' from bestiary`)}start(t=!1){ve.setResolved(!1),this.announce=t,this.startTime=Date.now(),console.info("Fantasy Statblocks: Starting Frontmatter Parsing."),this.plugin.settings.paths?.length||(this.plugin.settings.paths=["/"]);let i=!1;for(let a of this.plugin.settings.paths){let s=this.vault.getAbstractFileByPath(a);s&&(i=!0,this.parsePath(s))}i||this.save()}pathContainsFile(t){if(!this.plugin.settings.paths.length||this.plugin.settings.paths.contains("/"))return!0;for(let i of this.plugin.settings.paths)if(t.path.startsWith(i))return!0;return!1}parsePath(t){if(!this.pathContainsFile(t))return;let i=new Set;for(let a of this.getFiles(t))i.add(a);this.startParsing([...i])}startParsing(t){if(t.length){for(let i of t)this.queue.add(i);this.workers[this.index].postMessage({type:"queue",data:t}),this.index=(this.index+1)%this.workers.length}}async getFileInformation(t){if(this.watchPaths.has(t.path)&&ve.get(this.watchPaths.get(t.path))?.mtime==t.stat.mtime)return null;let i=this.plugin.app.metadataCache.getFileCache(t);if(!i?.frontmatter?.statblock||i?.frontmatter?.statblock!==!0&&i?.frontmatter?.statblock!=="true"&&i?.frontmatter?.statblock!=="inline")return null;let a=await this.plugin.app.vault.cachedRead(t),s=(0,wt.getFrontMatterInfo)(a);return{type:"file",data:{statblock:i.frontmatter.statblock=="inline"?"inline":"frontmatter",content:a,info:s,file:{path:t.path,basename:t.basename,mtime:t.stat.mtime}}}}getFiles(t){let i=[];if(t instanceof wt.TFolder)for(let a of t.children)i.push(a.path);return t instanceof wt.TFile&&t.extension==="md"&&i.push(t.path),i}async reparseVault(){this.start(!1)}onunload(){for(let t of this.workers)t.terminate();this.workers=[]}},kn=new oo;var nb=[{name:"Aboleth",source:"5e SRD",size:"Large",type:"aberration",subtype:"",alignment:"lawful evil",ac:17,hp:135,hit_dice:"18d10 + 36",speed:"10 ft., swim 40 ft.",stats:[21,9,15,18,15,18],saves:[{constitution:6},{intelligence:8},{wisdom:6}],skillsaves:[{history:12},{perception:10}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 20",languages:"Deep Speech, telepathy 120 ft.",cr:"10",bestiary:!0,traits:[{name:"Amphibious",desc:"The aboleth can breathe air and water.",attack_bonus:0},{name:"Mucous Cloud",desc:"While underwater, the aboleth is surrounded by transformative mucus. A creature that touches the aboleth or that hits it with a melee attack while within 5 ft. of it must make a DC 14 Constitution saving throw. On a failure, the creature is diseased for 1d4 hours. The diseased creature can breathe only underwater.",attack_bonus:0},{name:"Probing Telepathy",desc:"If a creature communicates telepathically with the aboleth, the aboleth learns the creature's greatest desires if the aboleth can see the creature.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The aboleth makes three tentacle attacks.",attack_bonus:0},{name:"Tentacle",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 12 (2d6 + 5) bludgeoning damage. If the target is a creature, it must succeed on a DC 14 Constitution saving throw or become diseased. The disease has no effect for 1 minute and can be removed by any magic that cures disease. After 1 minute, the diseased creature's skin becomes translucent and slimy, the creature can't regain hit points unless it is underwater, and the disease can be removed only by heal or another disease-curing spell of 6th level or higher. When the creature is outside a body of water, it takes 6 (1d12) acid damage every 10 minutes unless moisture is applied to the skin before 10 minutes have passed.",attack_bonus:9,damage_dice:"2d6",damage_bonus:5},{name:"Tail",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft. one target. Hit: 15 (3d6 + 5) bludgeoning damage.",attack_bonus:9,damage_dice:"3d6",damage_bonus:5},{name:"Enslave (3/day)",desc:`The aboleth targets one creature it can see within 30 ft. of it. The target must succeed on a DC 14 Wisdom saving throw or be magically charmed by the aboleth until the aboleth dies or until it is on a different plane of existence from the target. The charmed target is under the aboleth's control and can't take reactions, and the aboleth and the target can communicate telepathically with each other over any distance. +Whenever the charmed target takes damage, the target can repeat the saving throw. On a success, the effect ends. No more than once every 24 hours, the target can also repeat the saving throw when it is at least 1 mile away from the aboleth.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The aboleth makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Swipe",desc:"The aboleth makes one tail attack.",attack_bonus:0},{name:"Psychic Drain (Costs 2 Actions)",desc:"One creature charmed by the aboleth takes 10 (3d6) psychic damage, and the aboleth regains hit points equal to the damage the creature takes.",attack_bonus:0}]},{name:"Acolyte",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:10,hp:9,hit_dice:"2d8",speed:"30 ft.",stats:[10,10,10,10,14,11],skillsaves:[{medicine:4},{religion:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"any one language (usually Common)",cr:"1/4",bestiary:!0,traits:[],actions:[{name:"Club",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2 (1d4) bludgeoning damage.",attack_bonus:2,damage_dice:"1d4"}],spells:["The acolyte is a 1st-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 12, +4 to hit with spell attacks). The acolyte has following cleric spells prepared:",{"Cantrips (at will)":"light, sacred flame, thaumaturgy"},{"1st level (3 slots)":"bless, cure wounds, sanctuary"}]},{name:"Adult Black Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"chaotic evil",ac:19,hp:195,hit_dice:"17d12 + 84",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[23,14,21,14,13,17],saves:[{dexterity:7},{constitution:10},{wisdom:6},{charisma:8}],skillsaves:[null,{perception:11},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 21",languages:"Common, Draconic",cr:"14",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage plus 4 (1d8) acid damage.",attack_bonus:11,damage_dice:"2d10 + 1d8",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +11 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:11,damage_dice:"2d6",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +11 to hit, reach 15 ft., one target. Hit: 15 (2d8 + 6) bludgeoning damage.",attack_bonus:11,damage_dice:"2d8",damage_bonus:6},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 16 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Acid Breath (Recharge 5-6)",desc:"The dragon exhales acid in a 60-foot line that is 5 feet wide. Each creature in that line must make a DC 18 Dexterity saving throw, taking 54 (12d8) acid damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d8"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 19 Dexterity saving throw or take 13 (2d6 + 6) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Blue Dracolich",source:"5e SRD",size:"Huge",type:"undead",subtype:"",alignment:"lawful evil",ac:19,hp:225,hit_dice:"18d12 + 108",speed:"40 ft., burrow 30 ft., fly 80 ft.",stats:[25,10,23,16,15,19],skillsaves:[{perception:12}],damage_vulnerabilities:"",damage_resistances:"necrotic",damage_immunities:"lightning, poison",condition_immunities:"charmed, exhaustion, frightened, paralyzed, poisoned",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 22",languages:"Common, Draconic",cr:"17",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dracolich fails a saving throw, it can choose to succeed instead.",attack_bonus:0},{name:"Magic Resistance",desc:"The dracolich has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dracolich can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +12 to hit, reach 10 ft., one target. Hit: 18 (2d10 + 7) piercing damage plus 5 (1d10) lightning damage.",attack_bonus:12,damage_dice:"2d10 + 1d10",damage_bonus:7},{name:"Claw",desc:"Melee Weapon Attack: +12 to hit, reach 5 ft., one target. Hit: 14 (2d6 + 7) slashing damage.",attack_bonus:12,damage_dice:"2d6",damage_bonus:7},{name:"Tail",desc:"Melee Weapon Attack: +12 to hit, reach 15 ft., one target. Hit: 16 (2d8 + 7) bludgeoning damage.",attack_bonus:12,damage_dice:"2d8",damage_bonus:7},{name:"Frightful Presence",desc:"Each creature of the dracolich's choice that is within 120 feet of the dracolich and aware of it must succeed on a DC 18 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dracolich's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Lightning Breath (Recharge 5-6)",desc:"The dracolich exhales lightning in a 90-foot line that is 5 feet wide. Each creature in that line must make a DC 20 Dexterity saving throw, taking 66 (12d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d10"}],legendary_actions:[{name:"Detect",desc:"The dracolich makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dracolich makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dracolich beats its tattered wings. Each creature within 10 ft. of the dracolich must succeed on a DC 21 Dexterity saving throw or take 14 (2d6 + 7) bludgeoning damage and be knocked prone. After beating its wings this way, the dracolich can fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Blue Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"lawful evil",ac:19,hp:225,hit_dice:"18d12 + 108",speed:"40 ft., burrow 30 ft., fly 80 ft.",stats:[25,10,23,16,15,19],saves:[{dexterity:5},{constitution:11},{wisdom:7},{charisma:9}],skillsaves:[null,{perception:12},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 22",languages:"Common, Draconic",cr:"16",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +12 to hit, reach 10 ft., one target. Hit: 18 (2d10 + 7) piercing damage plus 5 (1d10) lightning damage.",attack_bonus:12,damage_dice:"2d10 + 1d10",damage_bonus:7},{name:"Claw",desc:"Melee Weapon Attack: +12 to hit, reach 5 ft., one target. Hit: 14 (2d6 + 7) slashing damage.",attack_bonus:12,damage_dice:"2d6",damage_bonus:7},{name:"Tail",desc:"Melee Weapon Attack: +12 to hit, reach 15 ft., one target. Hit: 16 (2d8 + 7) bludgeoning damage.",attack_bonus:12,damage_dice:"2d8",damage_bonus:7},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 ft. of the dragon and aware of it must succeed on a DC 17 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Lightning Breath (Recharge 5-6)",desc:"The dragon exhales lightning in a 90-foot line that is 5 ft. wide. Each creature in that line must make a DC 19 Dexterity saving throw, taking 66 (12d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d10"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 20 Dexterity saving throw or take 14 (2d6 + 7) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Brass Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"chaotic good",ac:18,hp:172,hit_dice:"15d12 + 74",speed:"40 ft., burrow 40 ft., fly 80 ft.",stats:[23,10,21,14,13,17],saves:[{dexterity:5},{constitution:10},{wisdom:6},{charisma:8}],skillsaves:[null,{history:7},{persuasion:8},{perception:11},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 21",languages:"Common, Draconic",cr:"13",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach,.0 ft., one target. Hit: 17 (2d10 + 6) piercing damage.",attack_bonus:11,damage_dice:"2d10",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +11 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:11,damage_dice:"2d6",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +11 to hit, reach 15 ft., one target. Hit: 15 (2d8 + 6) bludgeoning damage.",attack_bonus:11,damage_dice:"2d8",damage_bonus:6},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 16 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in an 60-foot line that is 5 feet wide. Each creature in that line must make a DC 18 Dexterity saving throw, taking 45 (13d6) fire damage on a failed save, or half as much damage on a successful one. +Sleep Breath. The dragon exhales sleep gas in a 60-foot cone. Each creature in that area must succeed on a DC 18 Constitution saving throw or fall unconscious for 10 minutes. This effect ends for a creature if the creature takes damage or someone uses an action to wake it.`,attack_bonus:0,damage_dice:"13d6"}]},{name:"Adult Bronze Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"lawful good",ac:19,hp:212,hit_dice:"17d12 + 101",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[25,10,23,16,15,19],saves:[{dexterity:5},{constitution:11},{wisdom:7},{charisma:9}],skillsaves:[{insight:7},{perception:12},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 22",languages:"Common, Draconic",cr:"15",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +12 to hit, reach 10 ft., one target. Hit: 18 (2d10 + 7) piercing damage.",attack_bonus:12,damage_dice:"2d10",damage_bonus:7},{name:"Claw",desc:"Melee Weapon Attack: +12 to hit, reach 5 ft., one target. Hit: 14 (2d6 + 7) slashing damage.",attack_bonus:12,damage_dice:"2d6",damage_bonus:7},{name:"Tail",desc:"Melee Weapon Attack: +12 to hit, reach 15 ft., one target. Hit: 16 (2d8 + 7) bludgeoning damage.",attack_bonus:12,damage_dice:"2d8",damage_bonus:7},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 17 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Lightning Breath. The dragon exhales lightning in a 90-foot line that is 5 feet wide. Each creature in that line must make a DC 19 Dexterity saving throw, taking 66 (12d10) lightning damage on a failed save, or half as much damage on a successful one. +Repulsion Breath. The dragon exhales repulsion energy in a 30-foot cone. Each creature in that area must succeed on a DC 19 Strength saving throw. On a failed save, the creature is pushed 60 feet away from the dragon.`,attack_bonus:0,damage_dice:"12d10"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 20 Dexterity saving throw or take 14 (2d6 + 7) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Copper Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"chaotic good",ac:18,hp:184,hit_dice:"16d12 + 80",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[23,12,21,18,15,17],saves:[{dexterity:6},{constitution:10},{wisdom:7},{charisma:8}],skillsaves:[{deception:8},{perception:12},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 22",languages:"Common, Draconic",cr:"14",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage.",attack_bonus:11,damage_dice:"2d10",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +11 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:11,damage_dice:"2d6",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +11 to hit, reach 15 ft., one target. Hit: 15 (2d8 + 6) bludgeoning damage.",attack_bonus:11,damage_dice:"2d8",damage_bonus:6},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 16 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Acid Breath. The dragon exhales acid in an 60-foot line that is 5 feet wide. Each creature in that line must make a DC 18 Dexterity saving throw, taking 54 (12d8) acid damage on a failed save, or half as much damage on a successful one. +Slowing Breath. The dragon exhales gas in a 60-foot cone. Each creature in that area must succeed on a DC 18 Constitution saving throw. On a failed save, the creature can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the creature can use either an action or a bonus action on its turn, but not both. These effects last for 1 minute. The creature can repeat the saving throw at the end of each of its turns, ending the effect on itself with a successful save.`,attack_bonus:0,damage_dice:"12d8"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 19 Dexterity saving throw or take 13 (2d6 + 6) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Gold Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"lawful good",ac:19,hp:256,hit_dice:"19d12 + 132",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[27,14,25,16,15,24],saves:[{dexterity:8},{constitution:13},{wisdom:8},{charisma:13}],skillsaves:[{insight:8},{persuasion:13},{perception:14},{stealth:8}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 24",languages:"Common, Draconic",cr:"17",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 19 (2d10 + 8) piercing damage.",attack_bonus:14,damage_dice:"2d10",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +14 to hit, reach 5 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:14,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +14 to hit, reach 15 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:14,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 21 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in a 60-foot cone. Each creature in that area must make a DC 21 Dexterity saving throw, taking 66 (12d10) fire damage on a failed save, or half as much damage on a successful one. +Weakening Breath. The dragon exhales gas in a 60-foot cone. Each creature in that area must succeed on a DC 21 Strength saving throw or have disadvantage on Strength-based attack rolls, Strength checks, and Strength saving throws for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"12d10"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 22 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Green Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"lawful evil",ac:19,hp:207,hit_dice:"18d12 + 90",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[23,12,21,18,15,17],saves:[{dexterity:6},{constitution:10},{wisdom:7},{charisma:8}],skillsaves:[{deception:8},{insight:7},{persuasion:8},{perception:12},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 22",languages:"Common, Draconic",cr:"15",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage plus 7 (2d6) poison damage.",attack_bonus:11,damage_dice:"2d10 + 2d6",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +11 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:11,damage_dice:"2d6",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +11 to hit, reach 15 ft., one target. Hit: 15 (2d8 + 6) bludgeoning damage.",attack_bonus:11,damage_dice:"2d8",damage_bonus:6},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 16 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours .",attack_bonus:0},{name:"Poison Breath (Recharge 5-6)",desc:"The dragon exhales poisonous gas in a 60-foot cone. Each creature in that area must make a DC 18 Constitution saving throw, taking 56 (16d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"16d6"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 19 Dexterity saving throw or take 13 (2d6 + 6) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Red Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"chaotic evil",ac:19,hp:256,hit_dice:"19d12 + 132",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[27,10,25,16,13,21],saves:[{dexterity:6},{constitution:13},{wisdom:7},{charisma:11}],skillsaves:[{perception:13},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 23",languages:"Common, Draconic",cr:"17",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 19 (2d10 + 8) piercing damage plus 7 (2d6) fire damage.",attack_bonus:14,damage_dice:"2d10 + 2d6",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +14 to hit, reach 5 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:14,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +14 to hit, reach 15 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:14,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 ft. of the dragon and aware of it must succeed on a DC 19 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Fire Breath (Recharge 5-6)",desc:"The dragon exhales fire in a 60-foot cone. Each creature in that area must make a DC 21 Dexterity saving throw, taking 63 (18d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"18d6"},{name:"Lair Actions",desc:`On initiative count 20 (losing initiative ties), the dragon takes a lair action to cause one of the following effects: the dragon can't use the same effect two rounds in a row: +\u2022 Magma erupts from a point on the ground the dragon can see within 120 feet of it, creating a 20-foot-high, 5-foot-radius geyser. Each creature in the geyser's area must make a DC 15 Dexterity saving throw, taking 21 (6d6) fire damage on a failed save, or half as much damage on a successful one. +\u2022 A tremor shakes the lair in a 60-foot-radius around the dragon. Each creature other than the dragon on the ground in that area must succeed on a DC 15 Dexterity saving throw or be knocked prone. +\u2022 Volcanic gases form a cloud in a 20-foot-radius sphere centered on a point the dragon can see within 120 feet of it. The sphere spreads around corners, and its area is lightly obscured. It lasts until initiative count 20 on the next round. Each creature that starts its turn in the cloud must succeed on a DC 13 Constitution saving throw or be poisoned until the end of its turn. While poisoned in this way, a creature is incapacitated.`,attack_bonus:0,damage_dice:"6d6"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 22 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult Silver Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"lawful good",ac:19,hp:243,hit_dice:"18d12 + 126",speed:"40 ft., fly 80 ft.",stats:[27,10,25,16,13,21],saves:[{dexterity:5},{constitution:12},{wisdom:6},{charisma:10}],skillsaves:[{arcana:8},{history:8},{perception:11},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 21",languages:"Common, Draconic",cr:"16",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +13 to hit, reach 10 ft., one target. Hit: 19 (2d10 + 8) piercing damage.",attack_bonus:13,damage_dice:"2d10",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +13 to hit, reach 5 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:13,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +13 to hit, reach 15 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:13,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 18 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Cold Breath. The dragon exhales an icy blast in a 60-foot cone. Each creature in that area must make a DC 20 Constitution saving throw, taking 58 (13d8) cold damage on a failed save, or half as much damage on a successful one. +Paralyzing Breath. The dragon exhales paralyzing gas in a 60-foot cone. Each creature in that area must succeed on a DC 20 Constitution saving throw or be paralyzed for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"13d8"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 22 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Adult White Dragon",source:"5e SRD",size:"Huge",type:"dragon",subtype:"",alignment:"chaotic evil",ac:18,hp:200,hit_dice:"16d12 + 96",speed:"40 ft., burrow 30 ft., fly 80 ft., swim 40 ft.",stats:[22,10,22,8,12,12],saves:[{dexterity:5},{constitution:11},{wisdom:6},{charisma:6}],skillsaves:[{perception:11},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 21",languages:"Common, Draconic",cr:"13",bestiary:!0,traits:[{name:"Ice Walk",desc:"The dragon can move across and climb icy surfaces without needing to make an ability check. Additionally, difficult terrain composed of ice or snow doesn't cost it extra moment.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage plus 4 (1d8) cold damage.",attack_bonus:11,damage_dice:"2d10 + 1d8",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +11 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:11,damage_dice:"2d6",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +11 to hit, reach 15 ft., one target. Hit: 15 (2d8 + 6) bludgeoning damage.",attack_bonus:11,damage_dice:"2d8",damage_bonus:6},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 ft. of the dragon and aware of it must succeed on a DC 14 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Cold Breath (Recharge 5-6)",desc:"The dragon exhales an icy blast in a 60-foot cone. Each creature in that area must make a DC 19 Constitution saving throw, taking 54 (12d8) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d8"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 10 ft. of the dragon must succeed on a DC 19 Dexterity saving throw or take 13 (2d6 + 6) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Air Elemental",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"neutral",ac:15,hp:90,hit_dice:"12d10 + 24",speed:"fly 90 ft. (hover)",stats:[14,20,14,6,10,6],damage_vulnerabilities:"",damage_resistances:"lightning; thunder; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained, unconscious",senses:"darkvision 60 ft., passive Perception 10",languages:"Auran",cr:"5",bestiary:!0,traits:[{name:"Air Form",desc:"The elemental can enter a hostile creature's space and stop there. It can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The elemental makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 14 (2d8 + 5) bludgeoning damage.",attack_bonus:8,damage_dice:"2d8",damage_bonus:5},{name:"Whirlwind (Recharge 4-6)",desc:`Each creature in the elemental's space must make a DC 13 Strength saving throw. On a failure, a target takes 15 (3d8 + 2) bludgeoning damage and is flung up 20 feet away from the elemental in a random direction and knocked prone. If a thrown target strikes an object, such as a wall or floor, the target takes 3 (1d6) bludgeoning damage for every 10 feet it was thrown. If the target is thrown at another creature, that creature must succeed on a DC 13 Dexterity saving throw or take the same damage and be knocked prone. +If the saving throw is successful, the target takes half the bludgeoning damage and isn't flung away or knocked prone.`,attack_bonus:0}]},{name:"Ancient Black Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"chaotic evil",ac:22,hp:367,hit_dice:"21d20 + 146",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[27,14,25,16,15,19],saves:[{dexterity:9},{constitution:14},{wisdom:9},{charisma:11}],skillsaves:[{perception:16},{stealth:9}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 26",languages:"Common, Draconic",cr:"21",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack:+ 15 to hit, reach 15 ft., one target. Hit: 19 (2d10 + 8) piercing damage plus 9 (2d8) acid damage.",attack_bonus:15,damage_dice:"2d10 + 2d8",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +15 to hit, reach 10 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:15,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +15 to hit, reach 20 ft ., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:15,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 19 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Acid Breath (Recharge 5-6)",desc:"The dragon exhales acid in a 90-foot line that is 10 feet wide. Each creature in that line must make a DC 22 Dexterity saving throw, taking 67 (15d8) acid damage on a failed save, or half as much damage on a successful one.",attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 23 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Blue Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"lawful evil",ac:22,hp:481,hit_dice:"26d20 + 208",speed:"40 ft., burrow 40 ft., fly 80 ft.",stats:[29,10,27,18,17,21],saves:[{dexterity:7},{constitution:15},{wisdom:10},{charisma:12}],skillsaves:[{perception:17},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 27",languages:"Common, Draconic",cr:"23",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +16 to hit, reach 15 ft., one target. Hit: 20 (2d10 + 9) piercing damage plus 11 (2d10) lightning damage.",attack_bonus:16,damage_dice:"2d10 + 2d10",damage_bonus:9},{name:"Claw",desc:"Melee Weapon Attack: +16 to hit, reach 10 ft., one target. Hit: 16 (2d6 + 9) slashing damage.",attack_bonus:16,damage_dice:"2d6",damage_bonus:9},{name:"Tail",desc:"Melee Weapon Attack: +16 to hit, reach 20 ft., one target. Hit: 18 (2d8 + 9) bludgeoning damage.",attack_bonus:16,damage_dice:"2d8",damage_bonus:9},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 20 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Lightning Breath (Recharge 5-6)",desc:"The dragon exhales lightning in a 120-foot line that is 10 feet wide. Each creature in that line must make a DC 23 Dexterity saving throw, taking 88 (16d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"16d10"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 24 Dexterity saving throw or take 16 (2d6 + 9) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Brass Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"chaotic good",ac:20,hp:297,hit_dice:"17d20 + 118",speed:"40 ft., burrow 40 ft., fly 80 ft.",stats:[27,10,25,16,15,19],saves:[{dexterity:6},{constitution:13},{wisdom:8},{charisma:10}],skillsaves:[{history:9},{persuasion:10},{perception:14},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 24",languages:"Common, Draconic",cr:"20",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +14 to hit, reach 15 ft., one target. Hit: 19 (2d10 + 8) piercing damage.",attack_bonus:14,damage_dice:"2d10",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:14,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +14 to hit, reach 20 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:14,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 18 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons: +Fire Breath. The dragon exhales fire in an 90-foot line that is 10 feet wide. Each creature in that line must make a DC 21 Dexterity saving throw, taking 56 (16d6) fire damage on a failed save, or half as much damage on a successful one. +Sleep Breath. The dragon exhales sleep gas in a 90-foot cone. Each creature in that area must succeed on a DC 21 Constitution saving throw or fall unconscious for 10 minutes. This effect ends for a creature if the creature takes damage or someone uses an action to wake it.`,attack_bonus:0,damage_dice:"16d6"},{name:"Change Shape",desc:`The dragon magically polymorphs into a humanoid or beast that has a challenge rating no higher than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the dragon's choice). +In a new form, the dragon retains its alignment, hit points, Hit Dice, ability to speak, proficiencies, Legendary Resistance, lair actions, and Intelligence, Wisdom, and Charisma scores, as well as this action. Its statistics and capabilities are otherwise replaced by those of the new form, except any class features or legendary actions of that form.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 22 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Bronze Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"lawful good",ac:22,hp:444,hit_dice:"24d20 + 192",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[29,10,27,18,17,21],saves:[{dexterity:7},{constitution:15},{wisdom:10},{charisma:12}],skillsaves:[{insight:10},{perception:17},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 27",languages:"Common, Draconic",cr:"22",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +16 to hit, reach 15 ft., one target. Hit: 20 (2d10 + 9) piercing damage.",attack_bonus:16,damage_dice:"2d10",damage_bonus:9},{name:"Claw",desc:"Melee Weapon Attack: +16 to hit, reach 10 ft., one target. Hit: 16 (2d6 + 9) slashing damage.",attack_bonus:16,damage_dice:"1d6",damage_bonus:9},{name:"Tail",desc:"Melee Weapon Attack: +16 to hit, reach 20 ft., one target. Hit: 18 (2d8 + 9) bludgeoning damage.",attack_bonus:0,damage_dice:"2d8",damage_bonus:9},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 20 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Lightning Breath. The dragon exhales lightning in a 120-foot line that is 10 feet wide. Each creature in that line must make a DC 23 Dexterity saving throw, taking 88 (16d10) lightning damage on a failed save, or half as much damage on a successful one. +Repulsion Breath. The dragon exhales repulsion energy in a 30-foot cone. Each creature in that area must succeed on a DC 23 Strength saving throw. On a failed save, the creature is pushed 60 feet away from the dragon.`,attack_bonus:0,damage_dice:"16d10"},{name:"Change Shape",desc:`The dragon magically polymorphs into a humanoid or beast that has a challenge rating no higher than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the dragon's choice). +In a new form, the dragon retains its alignment, hit points, Hit Dice, ability to speak, proficiencies, Legendary Resistance, lair actions, and Intelligence, Wisdom, and Charisma scores, as well as this action. Its statistics and capabilities are otherwise replaced by those of the new form, except any class features or legendary actions of that form.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 24 Dexterity saving throw or take 16 (2d6 + 9) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Copper Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"chaotic good",ac:21,hp:350,hit_dice:"20d20 + 140",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[27,12,25,20,17,19],saves:[{dexterity:8},{constitution:14},{wisdom:10},{charisma:11}],skillsaves:[{stealth:8},{perception:17},{deception:11}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 27",languages:"Common, Draconic",cr:"21",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +15 to hit, reach 15 ft., one target. Hit: 19 (2d10 + 8) piercing damage.",attack_bonus:15,damage_dice:"2d10",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +15 to hit, reach 10 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:15,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +15 to hit, reach 20 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:15,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 19 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Acid Breath. The dragon exhales acid in an 90-foot line that is 10 feet wide. Each creature in that line must make a DC 22 Dexterity saving throw, taking 63 (14d8) acid damage on a failed save, or half as much damage on a successful one. +Slowing Breath. The dragon exhales gas in a 90-foot cone. Each creature in that area must succeed on a DC 22 Constitution saving throw. On a failed save, the creature can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the creature can use either an action or a bonus action on its turn, but not both. These effects last for 1 minute. The creature can repeat the saving throw at the end of each of its turns, ending the effect on itself with a successful save.`,attack_bonus:0,damage_dice:"14d8"},{name:"Change Shape",desc:`The dragon magically polymorphs into a humanoid or beast that has a challenge rating no higher than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the dragon's choice). +In a new form, the dragon retains its alignment, hit points, Hit Dice, ability to speak, proficiencies, Legendary Resistance, lair actions, and Intelligence, Wisdom, and Charisma scores, as well as this action. Its statistics and capabilities are otherwise replaced by those of the new form, except any class features or legendary actions of that form.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 23 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Gold Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"lawful good",ac:22,hp:546,hit_dice:"28d20 + 252",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[30,14,29,18,17,28],saves:[{dexterity:9},{constitution:16},{wisdom:10},{charisma:16}],skillsaves:[{persuasion:16},{stealth:9},{perception:17},{insight:10}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 27",languages:"Common, Draconic",cr:"24",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +17 to hit, reach 15 ft., one target. Hit: 21 (2d10 + 10) piercing damage.",attack_bonus:17,damage_dice:"2d10",damage_bonus:10},{name:"Claw",desc:"Melee Weapon Attack: +17 to hit, reach 10 ft., one target. Hit: 17 (2d6 + 10) slashing damage.",attack_bonus:17,damage_dice:"2d6",damage_bonus:10},{name:"Tail",desc:"Melee Weapon Attack: +17 to hit, reach 20 ft., one target. Hit: 19 (2d8 + 10) bludgeoning damage.",attack_bonus:17,damage_dice:"2d8",damage_bonus:10},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 24 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in a 90-foot cone. Each creature in that area must make a DC 24 Dexterity saving throw, taking 71 (13d10) fire damage on a failed save, or half as much damage on a successful one. +Weakening Breath. The dragon exhales gas in a 90-foot cone. Each creature in that area must succeed on a DC 24 Strength saving throw or have disadvantage on Strength-based attack rolls, Strength checks, and Strength saving throws for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"13d10"},{name:"Change Shape",desc:`The dragon magically polymorphs into a humanoid or beast that has a challenge rating no higher than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the dragon's choice). +In a new form, the dragon retains its alignment, hit points, Hit Dice, ability to speak, proficiencies, Legendary Resistance, lair actions, and Intelligence, Wisdom, and Charisma scores, as well as this action. Its statistics and capabilities are otherwise replaced by those of the new form, except any class features or legendary actions of that form.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 25 Dexterity saving throw or take 17 (2d6 + 10) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Green Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"lawful evil",ac:21,hp:385,hit_dice:"22d20 + 154",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[27,12,25,20,17,19],saves:[{dexterity:8},{constitution:14},{wisdom:10},{charisma:11}],skillsaves:[{deception:11},{insight:10},{perception:17},{persuasion:11},{stealth:8}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 27",languages:"Common, Draconic",cr:"22",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +15 to hit, reach 15 ft., one target. Hit: 19 (2d10 + 8) piercing damage plus 10 (3d6) poison damage.",attack_bonus:15,damage_dice:"2d10 + 3d6",damage_bonus:9},{name:"Claw",desc:"Melee Weapon Attack: +15 to hit, reach 10 ft., one target. Hit: 22 (4d6 + 8) slashing damage.",attack_bonus:15,damage_dice:"4d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +15 to hit, reach 20 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:16,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 19 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Poison Breath (Recharge 5-6)",desc:"The dragon exhales poisonous gas in a 90-foot cone. Each creature in that area must make a DC 22 Constitution saving throw, taking 77 (22d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"22d6"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 23 Dexterity saving throw or take 15 (2d6 + 8) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Red Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"chaotic evil",ac:22,hp:546,hit_dice:"28d20 + 252",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[30,10,29,18,15,23],saves:[{dexterity:7},{constitution:16},{wisdom:9},{charisma:13}],skillsaves:[{perception:16},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 26",languages:"Common, Draconic",cr:"24",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +17 to hit, reach 15 ft., one target. Hit: 21 (2d10 + 10) piercing damage plus 14 (4d6) fire damage.",attack_bonus:17,damage_dice:"2d10 + 4d6",damage_bonus:10},{name:"Claw",desc:"Melee Weapon Attack: +17 to hit, reach 10 ft., one target. Hit: 17 (2d6 + 10) slashing damage.",attack_bonus:17,damage_dice:"2d6",damage_bonus:10},{name:"Tail",desc:"Melee Weapon Attack: +17 to hit, reach 20 ft., one target. Hit: 19 (2d8 + 10) bludgeoning damage.",attack_bonus:17,damage_dice:"2d8",damage_bonus:10},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 21 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Fire Breath (Recharge 5-6)",desc:"The dragon exhales fire in a 90-foot cone. Each creature in that area must make a DC 24 Dexterity saving throw, taking 91 (26d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"26d6"}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 25 Dexterity saving throw or take 17 (2d6 + 10) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient Silver Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"lawful good",ac:22,hp:487,hit_dice:"25d20 + 224",speed:"40 ft., fly 80 ft.",stats:[30,10,29,18,15,23],saves:[{dexterity:7},{constitution:16},{wisdom:9},{charisma:13}],skillsaves:[{arcana:11},{perception:16},{history:11},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 26",languages:"Common, Draconic",cr:"23",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +17 to hit, reach 15 ft., one target. Hit: 21 (2d10 + 10) piercing damage.",attack_bonus:17,damage_dice:"2d10",damage_bonus:10},{name:"Claw",desc:"Melee Weapon Attack: +17 to hit, reach 10 ft., one target. Hit: 17 (2d6 + 10) slashing damage.",attack_bonus:17,damage_dice:"2d6",damage_bonus:10},{name:"Tail",desc:"Melee Weapon Attack: +17 to hit, reach 20 ft., one target. Hit: 19 (2d8 + 10) bludgeoning damage.",attack_bonus:17,damage_dice:"2d8",damage_bonus:10},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 21 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Cold Breath. The dragon exhales an icy blast in a 90-foot cone. Each creature in that area must make a DC 24 Constitution saving throw, taking 67 (15d8) cold damage on a failed save, or half as much damage on a successful one. +Paralyzing Breath. The dragon exhales paralyzing gas in a 90- foot cone. Each creature in that area must succeed on a DC 24 Constitution saving throw or be paralyzed for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"15d8"},{name:"Change Shape",desc:`The dragon magically polymorphs into a humanoid or beast that has a challenge rating no higher than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the dragon's choice). +In a new form, the dragon retains its alignment, hit points, Hit Dice, ability to speak, proficiencies, Legendary Resistance, lair actions, and Intelligence, Wisdom, and Charisma scores, as well as this action. Its statistics and capabilities are otherwise replaced by those of the new form, except any class features or legendary actions of that form.`,attack_bonus:0}],legendary_actions:[{name:"Detect",desc:"The dragon makes a Wisdom (Perception) check.",attack_bonus:0},{name:"Tail Attack",desc:"The dragon makes a tail attack.",attack_bonus:0},{name:"Wing Attack (Costs 2 Actions)",desc:"The dragon beats its wings. Each creature within 15 ft. of the dragon must succeed on a DC 25 Dexterity saving throw or take 17 (2d6 + 10) bludgeoning damage and be knocked prone. The dragon can then fly up to half its flying speed.",attack_bonus:0}]},{name:"Ancient White Dragon",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"chaotic evil",ac:20,hp:333,hit_dice:"18d20 + 144",speed:"40 ft., burrow 40 ft., fly 80 ft., swim 40 ft.",stats:[26,10,26,10,13,14],saves:[{dexterity:6},{constitution:14},{wisdom:7},{charisma:8}],skillsaves:[{perception:13},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 23",languages:"Common, Draconic",cr:"20",bestiary:!0,traits:[{name:"Ice Walk",desc:"The dragon can move across and climb icy surfaces without needing to make an ability check. Additionally, difficult terrain composed of ice or snow doesn't cost it extra moment.",attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the dragon fails a saving throw, it can choose to succeed instead.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon can use its Frightful Presence. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +14 to hit, reach 15 ft., one target. Hit: 19 (2d10 + 8) piercing damage plus 9 (2d8) cold damage.",attack_bonus:14,damage_dice:"2d10 + 2d8",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 15 (2d6 + 8) slashing damage.",attack_bonus:14,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +14 to hit, reach 20 ft., one target. Hit: 17 (2d8 + 8) bludgeoning damage.",attack_bonus:14,damage_dice:"2d8",damage_bonus:8},{name:"Frightful Presence",desc:"Each creature of the dragon's choice that is within 120 feet of the dragon and aware of it must succeed on a DC 16 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the dragon's Frightful Presence for the next 24 hours .",attack_bonus:0},{name:"Cold Breath (Recharge 5-6)",desc:"The dragon exhales an icy blast in a 90-foot cone. Each creature in that area must make a DC 22 Constitution saving throw, taking 72 (l6d8) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"16d8"}]},{name:"Androsphinx",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"lawful neutral",ac:17,hp:199,hit_dice:"19d10 + 94",speed:"40 ft., fly 60 ft.",stats:[22,10,20,16,18,23],saves:[{dexterity:6},{constitution:11},{intelligence:9},{wisdom:10}],skillsaves:[{religion:15},{perception:10},{arcana:9}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"psychic; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"charmed, frightened",senses:"truesight 120 ft., passive Perception 20",languages:"Common, Sphinx",cr:"17",bestiary:!0,traits:[{name:"Inscrutable",desc:"The sphinx is immune to any effect that would sense its emotions or read its thoughts, as well as any divination spell that it refuses. Wisdom (Insight) checks made to ascertain the sphinx's intentions or sincerity have disadvantage.",attack_bonus:0},{name:"Magic Weapons",desc:"The sphinx's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The sphinx makes two claw attacks.",attack_bonus:0},{name:"Claw",desc:"Melee Weapon Attack: +12 to hit, reach 5 ft., one target. Hit: 17 (2d10 + 6) slashing damage.",attack_bonus:12,damage_dice:"2d10",damage_bonus:6},{name:"Roar (3/Day)",desc:`The sphinx emits a magical roar. Each time it roars before finishing a long rest, the roar is louder and the effect is different, as detailed below. Each creature within 500 feet of the sphinx and able to hear the roar must make a saving throw. + +First Roar. Each creature that fails a DC 18 Wisdom saving throw is frightened for 1 minute. A frightened creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. + +Second Roar. Each creature that fails a DC 18 Wisdom saving throw is deafened and frightened for 1 minute. A frightened creature is paralyzed and can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. + +Third Roar. Each creature makes a DC 18 Constitution saving throw. On a failed save, a creature takes 44 (8d10) thunder damage and is knocked prone. On a successful save, the creature takes half as much damage and isn't knocked prone.`,attack_bonus:0}],legendary_actions:[{name:"Claw Attack",desc:"The sphinx makes one claw attack.",attack_bonus:0},{name:"Teleport (Costs 2 Actions)",desc:"The sphinx magically teleports, along with any equipment it is wearing or carrying, up to 120 feet to an unoccupied space it can see.",attack_bonus:0},{name:"Cast a Spell (Costs 3 Actions)",desc:"The sphinx casts a spell from its list of prepared spells, using a spell slot as normal.",attack_bonus:0}],spells:["The sphinx is a 12th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 18, +10 to hit with spell attacks). It requires no material components to cast its spells. The sphinx has the following cleric spells prepared:",{"Cantrips (at will)":"sacred flame, spare the dying, thaumaturgy"},{"1st level (4 slots)":"command, detect evil and good, detect magic"},{"2nd level (3 slots)":"lesser restoration, zone of truth"},{"3rd level (3 slots)":"dispel magic, tongues"},{"4th level (3 slots)":"banishment, freedom of movement"},{"5th level (2 slots)":"flame strike, greater restoration"},{"6th level (1 slot)":"heroes' feast"}]},{name:"Animated Armor",source:"5e SRD",size:"Medium",type:"construct",subtype:"",alignment:"unaligned",ac:18,hp:33,hit_dice:"6d8 + 6",speed:"25 ft.",stats:[14,11,13,1,3,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison, psychic",condition_immunities:"blinded, charmed, deafened, exhaustion, frightened, paralyzed, petrified, poisoned",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 6",languages:"",cr:"1",bestiary:!0,traits:[{name:"Antimagic Susceptibility",desc:"The armor is incapacitated while in the area of an antimagic field. If targeted by dispel magic, the armor must succeed on a Constitution saving throw against the caster's spell save DC or fall unconscious for 1 minute.",attack_bonus:0},{name:"False Appearance",desc:"While the armor remains motionless, it is indistinguishable from a normal suit of armor.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The armor makes two melee attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Ankheg",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:14,hp:39,hit_dice:"6d10 + 6",speed:"30 ft., burrow 10 ft.",stats:[17,11,13,1,13,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., tremorsense 60 ft., passive Perception 11",languages:"",cr:"2",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage plus 3 (1d6) acid damage. If the target is a Large or smaller creature, it is grappled (escape DC 13). Until this grapple ends, the ankheg can bite only the grappled creature and has advantage on attack rolls to do so.",attack_bonus:5,damage_dice:"2d6 + 1d6",damage_bonus:3},{name:"Acid Spray (Recharge 6)",desc:"The ankheg spits acid in a line that is 30 ft. long and 5 ft. wide, provided that it has no creature grappled. Each creature in that line must make a DC 13 Dexterity saving throw, taking 10 (3d6) acid damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"3d6"}]},{name:"Ape",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:19,hit_dice:"3d8 + 5",speed:"30 ft., climb 30 ft.",stats:[16,14,14,6,12,7],skillsaves:[{athletics:5},{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1/2",bestiary:!0,actions:[{name:"Multiattack",desc:"The ape makes two fist attacks.",attack_bonus:0},{name:"Fist",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) bludgeoning damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Rock",desc:"Ranged Weapon Attack: +5 to hit, range 25/50 ft., one target. Hit: 6 (1d6 + 3) bludgeoning damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3}]},{name:"Archmage",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:12,hp:99,hit_dice:"18d8 + 18",speed:"30 ft.",stats:[10,14,12,20,15,16],saves:[{intelligence:9},{wisdom:6}],skillsaves:[{arcana:13},{history:13}],damage_vulnerabilities:"",damage_resistances:"damage from spells; non magical bludgeoning, piercing, and slashing (from stoneskin)",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"any six languages",cr:"12",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The archmage has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Dagger",desc:"Melee or Ranged Weapon Attack: +6 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:6,damage_dice:"1d4",damage_bonus:2}],spells:["The archmage is an 18th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 17, +9 to hit with spell attacks). The archmage can cast disguise self and invisibility at will and has the following wizard spells prepared:",{"Cantrips (at will)":"fire bolt, light, mage hand, prestidigitation, shocking grasp"},{"1st level (4 slots)":"detect magic, identify, mage armor*, magic missile"},{"2nd level (3 slots)":"detect thoughts, mirror image, misty step"},{"3rd level (3 slots)":"counterspell,fly, lightning bolt"},{"4th level (3 slots)":"banishment, fire shield, stoneskin*"},{"5th level (3 slots)":"cone of cold, scrying, wall of force"},{"6th level (1 slot)":"globe of invulnerability"},{"7th level (1 slot)":"teleport"},{"8th level (1 slot)":"mind blank*"},{"9th level (1 slot)":"time stop"},"* The archmage casts these spells on itself before combat."]},{name:"Assassin",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-good alignment",ac:15,hp:78,hit_dice:"12d8 + 24",speed:"30 ft.",stats:[11,16,14,13,11,10],saves:[{dexterity:6},{intelligence:4}],skillsaves:[{acrobatics:6},{deception:3},{perception:3},{stealth:9}],damage_vulnerabilities:"",damage_resistances:"poison",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"Thieves' cant plus any two languages",cr:"8",bestiary:!0,traits:[{name:"Assassinate",desc:"During its first turn, the assassin has advantage on attack rolls against any creature that hasn't taken a turn. Any hit the assassin scores against a surprised creature is a critical hit.",attack_bonus:0},{name:"Evasion",desc:"If the assassin is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, the assassin instead takes no damage if it succeeds on the saving throw, and only half damage if it fails.",attack_bonus:0},{name:"Sneak Attack (1/Turn)",desc:"The assassin deals an extra 13 (4d6) damage when it hits a target with a weapon attack and has advantage on the attack roll, or when the target is within 5 ft. of an ally of the assassin that isn't incapacitated and the assassin doesn't have disadvantage on the attack roll.",attack_bonus:0,damage_dice:"4d6"}],actions:[{name:"Multiattack",desc:"The assassin makes two shortsword attacks.",attack_bonus:0},{name:"Shortsword",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) piercing damage, and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:6,damage_dice:"1d6",damage_bonus:3},{name:"Light Crossbow",desc:"Ranged Weapon Attack: +6 to hit, range 80/320 ft., one target. Hit: 7 (1d8 + 3) piercing damage, and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:6,damage_dice:"1d8",damage_bonus:3}]},{name:"Awakened Shrub",source:"5e SRD",size:"Small",type:"plant",subtype:"",alignment:"unaligned",ac:9,hp:10,hit_dice:"3d6 + -1",speed:"20 ft.",stats:[3,8,11,10,10,6],damage_vulnerabilities:"fire",damage_resistances:"piercing",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"one language known by its creator",cr:"0",bestiary:!0,traits:[{name:"False Appearance",desc:"While the shrub remains motionless, it is indistinguishable from a normal shrub.",attack_bonus:0}],actions:[{name:"Rake",desc:"Melee Weapon Attack: +1 to hit, reach 5 ft., one target. Hit: 1 (1d4 \u2014 1) slashing damage.",attack_bonus:1,damage_dice:"1d4",damage_bonus:-1}]},{name:"Awakened Tree",source:"5e SRD",size:"Huge",type:"plant",subtype:"",alignment:"unaligned",ac:13,hp:59,hit_dice:"7d12 + 13",speed:"20 ft.",stats:[19,6,15,10,10,7],damage_vulnerabilities:"fire",damage_resistances:"bludgeoning, piercing",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"one language known by its creator",cr:"2",bestiary:!0,traits:[{name:"False Appearance",desc:"While the tree remains motionless, it is indistinguishable from a normal tree.",attack_bonus:0}],actions:[{name:"Slam",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 14 (3d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"3d6",damage_bonus:4}]},{name:"Axe Beak",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:19,hit_dice:"3d10 + 2",speed:"50 ft.",stats:[14,12,12,2,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Beak",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Azer",source:"5e SRD",size:"Medium",type:"elemental",subtype:"",alignment:"lawful neutral",ac:17,hp:39,hit_dice:"6d8 + 12",speed:"30 ft.",stats:[17,12,15,12,13,10],saves:[{constitution:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"passive Perception 11",languages:"Ignan",cr:"2",bestiary:!0,traits:[{name:"Heated Body",desc:"A creature that touches the azer or hits it with a melee attack while within 5 ft. of it takes 5 (1d10) fire damage.",attack_bonus:0,damage_dice:"1d10"},{name:"Heated Weapons",desc:"When the azer hits with a metal melee weapon, it deals an extra 3 (1d6) fire damage (included in the attack).",attack_bonus:0},{name:"Illumination",desc:"The azer sheds bright light in a 10-foot radius and dim light for an additional 10 ft..",attack_bonus:0}],actions:[{name:"Warhammer",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) bludgeoning damage, or 8 (1d10 + 3) bludgeoning damage if used with two hands to make a melee attack, plus 3 (1d6) fire damage.",attack_bonus:5,damage_dice:"1d8 + 1d6",damage_bonus:3}]},{name:"Baboon",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:3,hit_dice:"1d6 + -1",speed:"30 ft., climb 30 ft.",stats:[8,14,11,4,12,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"",cr:"0",bestiary:!0,traits:[{name:"Pack Tactics",desc:"The baboon has advantage on an attack roll against a creature if at least one of the baboon's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +1 to hit, reach 5 ft., one target. Hit: 1 (1d4 \u2014 1) piercing damage.",attack_bonus:1,damage_dice:"1d4",damage_bonus:-1}]},{name:"Badger",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:3,hit_dice:"1d4",speed:"20 ft., burrow 5 ft.",stats:[4,11,12,2,12,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 11",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Smell",desc:"The badger has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 1 piercing damage.",attack_bonus:2,damage_bonus:1}]},{name:"Balor",source:"5e SRD",size:"Huge",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:19,hp:262,hit_dice:"21d12 + 125",speed:"40 ft., fly 80 ft.",stats:[26,15,22,20,16,22],saves:[{strength:14},{constitution:12},{wisdom:9},{charisma:12}],damage_vulnerabilities:"",damage_resistances:"cold, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 13",languages:"Abyssal, telepathy 120 ft.",cr:"19",bestiary:!0,traits:[{name:"Death Throes",desc:"When the balor dies, it explodes, and each creature within 30 feet of it must make a DC 20 Dexterity saving throw, taking 70 (20d6) fire damage on a failed save, or half as much damage on a successful one. The explosion ignites flammable objects in that area that aren't being worn or carried, and it destroys the balor's weapons.",attack_bonus:0,damage_dice:"20d6"},{name:"Fire Aura",desc:"At the start of each of the balor's turns, each creature within 5 feet of it takes 10 (3d6) fire damage, and flammable objects in the aura that aren't being worn or carried ignite. A creature that touches the balor or hits it with a melee attack while within 5 feet of it takes 10 (3d6) fire damage.",attack_bonus:0,damage_dice:"3d6"},{name:"Magic Resistance",desc:"The balor has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The balor's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The balor makes two attacks: one with its longsword and one with its whip.",attack_bonus:0},{name:"Longsword",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 21 (3d8 + 8) slashing damage plus 13 (3d8) lightning damage. If the balor scores a critical hit, it rolls damage dice three times, instead of twice.",attack_bonus:14,damage_dice:"3d8 + 3d8",damage_bonus:8},{name:"Whip",desc:"Melee Weapon Attack: +14 to hit, reach 30 ft., one target. Hit: 15 (2d6 + 8) slashing damage plus 10 (3d6) fire damage, and the target must succeed on a DC 20 Strength saving throw or be pulled up to 25 feet toward the balor.",attack_bonus:14,damage_dice:"2d6 + 3d6",damage_bonus:8},{name:"Teleport",desc:"The balor magically teleports, along with any equipment it is wearing or carrying, up to 120 feet to an unoccupied space it can see.",attack_bonus:0},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A balor has a 50 percent chance of summoning 1d8 vrocks, 1d6 hezrous, 1d4 glabrezus, 1d3 nalfeshnees, 1d2 mariliths, or one goristro. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}]},{name:"Bandit",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-lawful alignment",ac:12,hp:11,hit_dice:"2d8 + 2",speed:"30 ft.",stats:[11,12,12,10,10,10],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"1/8",bestiary:!0,actions:[{name:"Scimitar",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) slashing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1},{name:"Light Crossbow",desc:"Ranged Weapon Attack: +3 to hit, range 80 ft./320 ft., one target. Hit: 5 (1d8 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1}]},{name:"Bandit Captain",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-lawful alignment",ac:15,hp:65,hit_dice:"10d8 + 20",speed:"30 ft.",stats:[15,16,14,14,11,14],saves:[{strength:4},{dexterity:5},{wisdom:2}],skillsaves:[{athletics:4},{deception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any two languages",cr:"2",bestiary:!0,actions:[{name:"Multiattack",desc:"The captain makes three melee attacks: two with its scimitar and one with its dagger. Or the captain makes two ranged attacks with its daggers.",attack_bonus:0},{name:"Scimitar",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Dagger",desc:"Melee or Ranged Weapon Attack: +5 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 5 (1d4 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d4",damage_bonus:3}],reactions:[{name:"Parry",desc:"The captain adds 2 to its AC against one melee attack that would hit it. To do so, the captain must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Barbed Devil",source:"5e SRD",size:"Medium",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:15,hp:110,hit_dice:"13d8 + 51",speed:"30 ft.",stats:[16,17,18,12,14,14],saves:[{strength:6},{constitution:7},{wisdom:5},{charisma:5}],skillsaves:[{deception:5},{insight:5},{perception:8}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 18",languages:"Infernal, telepathy 120 ft.",cr:"5",bestiary:!0,traits:[{name:"Barbed Hide",desc:"At the start of each of its turns, the barbed devil deals 5 (1d10) piercing damage to any creature grappling it.",attack_bonus:0,damage_dice:"1d10"},{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes three melee attacks: one with its tail and two with its claws. Alternatively, it can use Hurl Flame twice.",attack_bonus:0},{name:"Claw",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft ., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:6,damage_dice:"1d6",damage_bonus:3},{name:"Tail",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3},{name:"Hurl Flame",desc:"Ranged Spell Attack: +5 to hit, range 150 ft., one target. Hit: 10 (3d6) fire damage. If the target is a flammable object that isn't being worn or carried, it also catches fire.",attack_bonus:5,damage_dice:"3d6"}]},{name:"Basilisk",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"unaligned",ac:12,hp:52,hit_dice:"8d8 + 16",speed:"20 ft.",stats:[16,8,15,2,8,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 9",languages:"",cr:"3",bestiary:!0,traits:[{name:"Petrifying Gaze",desc:`If a creature starts its turn within 30 ft. of the basilisk and the two of them can see each other, the basilisk can force the creature to make a DC 12 Constitution saving throw if the basilisk isn't incapacitated. On a failed save, the creature magically begins to turn to stone and is restrained. It must repeat the saving throw at the end of its next turn. On a success, the effect ends. On a failure, the creature is petrified until freed by the greater restoration spell or other magic. +A creature that isn't surprised can avert its eyes to avoid the saving throw at the start of its turn. If it does so, it can't see the basilisk until the start of its next turn, when it can avert its eyes again. If it looks at the basilisk in the meantime, it must immediately make the save. +If the basilisk sees its reflection within 30 ft. of it in bright light, it mistakes itself for a rival and targets itself with its gaze.`,attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage plus 7 (2d6) poison damage.",attack_bonus:5,damage_dice:"2d6 + 2d6",damage_bonus:3}]},{name:"Bat",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:1,hit_dice:"1d4 + -2",speed:"5 ft., fly 30 ft.",stats:[2,15,8,2,12,4],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 60 ft., passive Perception 11",languages:"",cr:"0",bestiary:!0,traits:[{name:"Echolocation",desc:"The bat can't use its blindsight while deafened.",attack_bonus:0},{name:"Keen Hearing",desc:"The bat has advantage on Wisdom (Perception) checks that rely on hearing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +0 to hit, reach 5 ft., one creature. Hit: 1 piercing damage.",attack_bonus:0,damage_bonus:1}]},{name:"Bearded Devil",source:"5e SRD",size:"Medium",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:13,hp:52,hit_dice:"8d8 + 16",speed:"30 ft.",stats:[16,15,15,9,11,11],saves:[{strength:5},{constitution:4},{wisdom:2}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 10",languages:"Infernal, telepathy 120 ft.",cr:"3",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Steadfast",desc:"The devil can't be frightened while it can see an allied creature within 30 feet of it.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes two attacks: one with its beard and one with its glaive.",attack_bonus:0},{name:"Beard",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 6 (1d8 + 2) piercing damage, and the target must succeed on a DC 12 Constitution saving throw or be poisoned for 1 minute. While poisoned in this way, the target can't regain hit points. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:5,damage_dice:"1d8",damage_bonus:2},{name:"Glaive",desc:"Melee Weapon Attack: +5 to hit, reach 10 ft., one target. Hit: 8 (1d10 + 3) slashing damage. If the target is a creature other than an undead or a construct, it must succeed on a DC 12 Constitution saving throw or lose 5 (1d10) hit points at the start of each of its turns due to an infernal wound. Each time the devil hits the wounded target with this attack, the damage dealt by the wound increases by 5 (1d10). Any creature can take an action to stanch the wound with a successful DC 12 Wisdom (Medicine) check. The wound also closes if the target receives magical healing.",attack_bonus:5,damage_dice:"1d10",damage_bonus:3}]},{name:"Behir",source:"5e SRD",size:"Huge",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:17,hp:168,hit_dice:"16d12 + 64",speed:"50 ft., climb 40 ft.",stats:[23,16,18,7,14,12],skillsaves:[{perception:6},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"darkvision 90 ft., passive Perception 16",languages:"Draconic",cr:"11",bestiary:!0,actions:[{name:"Multiattack",desc:"The behir makes two attacks: one with its bite and one to constrict.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 22 (3d10 + 6) piercing damage.",attack_bonus:10,damage_dice:"3d10",damage_bonus:6},{name:"Constrict",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one Large or smaller creature. Hit: 17 (2d10 + 6) bludgeoning damage plus 17 (2d10 + 6) slashing damage. The target is grappled (escape DC 16) if the behir isn't already constricting a creature, and the target is restrained until this grapple ends.",attack_bonus:10,damage_dice:"2d10 + 2d10",damage_bonus:6},{name:"Lightning Breath (Recharge 5-6)",desc:"The behir exhales a line of lightning that is 20 ft. long and 5 ft. wide. Each creature in that line must make a DC 16 Dexterity saving throw, taking 66 (12d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d10"},{name:"Swallow",desc:`The behir makes one bite attack against a Medium or smaller target it is grappling. If the attack hits, the target is also swallowed, and the grapple ends. While swallowed, the target is blinded and restrained, it has total cover against attacks and other effects outside the behir, and it takes 21 (6d6) acid damage at the start of each of the behir's turns. A behir can have only one creature swallowed at a time. +If the behir takes 30 damage or more on a single turn from the swallowed creature, the behir must succeed on a DC 14 Constitution saving throw at the end of that turn or regurgitate the creature, which falls prone in a space within 10 ft. of the behir. If the behir dies, a swallowed creature is no longer restrained by it and can escape from the corpse by using 15 ft. of movement, exiting prone.`,attack_bonus:0,damage_dice:"6d6"}]},{name:"Berserker",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any chaotic alignment",ac:13,hp:67,hit_dice:"9d8 + 26",speed:"30 ft.",stats:[16,12,17,9,11,9],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"2",bestiary:!0,traits:[{name:"Reckless",desc:"At the start of its turn, the berserker can gain advantage on all melee weapon attack rolls during that turn, but attack rolls against it have advantage until the start of its next turn.",attack_bonus:0}],actions:[{name:"Greataxe",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 9 (1d12 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d12",damage_bonus:3}]},{name:"Black Bear",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:19,hit_dice:"3d8 + 5",speed:"40 ft., climb 30 ft.",stats:[15,10,14,2,12,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Keen Smell",desc:"The bear has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The bear makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:2},{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) slashing damage.",attack_bonus:3,damage_dice:"2d4",damage_bonus:2}]},{name:"Black Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"chaotic evil",ac:17,hp:33,hit_dice:"6d8 + 6",speed:"30 ft., fly 60 ft., swim 30 ft.",stats:[15,14,13,10,11,13],saves:[{dexterity:4},{constitution:3},{wisdom:2},{charisma:3}],skillsaves:[{perception:4},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"2",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage plus 2 (1d4) acid damage.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2},{name:"Acid Breath (Recharge 5-6)",desc:"The dragon exhales acid in a 15-foot line that is 5 feet wide. Each creature in that line must make a DC 11 Dexterity saving throw, taking 22 (Sd8) acid damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"5d8"}]},{name:"Black Pudding",source:"5e SRD",size:"Large",type:"ooze",subtype:"",alignment:"unaligned",ac:7,hp:85,hit_dice:"10d10 + 30",speed:"20 ft., climb 20 ft.",stats:[16,5,16,1,6,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid, cold, lightning, slashing",condition_immunities:"blinded, charmed, deafened, exhaustion, frightened, prone",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 8",languages:"",cr:"4",bestiary:!0,traits:[{name:"Amorphous",desc:"The pudding can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0},{name:"Corrosive Form",desc:"A creature that touches the pudding or hits it with a melee attack while within 5 feet of it takes 4 (1d8) acid damage. Any nonmagical weapon made of metal or wood that hits the pudding corrodes. After dealing damage, the weapon takes a permanent and cumulative -1 penalty to damage rolls. If its penalty drops to -5, the weapon is destroyed. Nonmagical ammunition made of metal or wood that hits the pudding is destroyed after dealing damage. The pudding can eat through 2-inch-thick, nonmagical wood or metal in 1 round.",attack_bonus:0,damage_dice:"1d8"},{name:"Spider Climb",desc:"The pudding can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0}],actions:[{name:"Pseudopod",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) bludgeoning damage plus 18 (4d8) acid damage. In addition, nonmagical armor worn by the target is partly dissolved and takes a permanent and cumulative -1 penalty to the AC it offers. The armor is destroyed if the penalty reduces its AC to 10.",attack_bonus:5,damage_dice:"1d6 + 4d8",damage_bonus:3}],reactions:[{name:"Split",desc:"When a pudding that is Medium or larger is subjected to lightning or slashing damage, it splits into two new puddings if it has at least 10 hit points. Each new pudding has hit points equal to half the original pudding's, rounded down. New puddings are one size smaller than the original pudding.",attack_bonus:0}]},{name:"Blink Dog",source:"5e SRD",size:"Medium",type:"fey",subtype:"",alignment:"lawful good",ac:13,hp:22,hit_dice:"4d8 + 4",speed:"40 ft.",stats:[12,17,12,10,13,11],skillsaves:[{perception:3},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"Blink Dog, understands Sylvan but can't speak it",cr:"1/4",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The dog has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1},{name:"Teleport (Recharge 4-6)",desc:"The dog magically teleports, along with any equipment it is wearing or carrying, up to 40 ft. to an unoccupied space it can see. Before or after teleporting, the dog can make one bite attack.",attack_bonus:0}]},{name:"Blood Hawk",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:7,hit_dice:"2d6",speed:"10 ft., fly 60 ft.",stats:[6,14,10,3,14,5],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Keen Sight",desc:"The hawk has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0},{name:"Pack Tactics",desc:"The hawk has advantage on an attack roll against a creature if at least one of the hawk's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Beak",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Blue Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"lawful evil",ac:17,hp:52,hit_dice:"8d8 + 16",speed:"30 ft., burrow 15 ft., fly 60 ft.",stats:[17,10,15,12,11,15],saves:[{dexterity:2},{constitution:4},{wisdom:2},{charisma:4}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"3",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d10 + 3) piercing damage plus 3 (1d6) lightning damage.",attack_bonus:5,damage_dice:"1d10 + 1d6",damage_bonus:3},{name:"Lightning Breath (Recharge 5-6)",desc:"The dragon exhales lightning in a 30-foot line that is 5 feet wide. Each creature in that line must make a DC 12 Dexterity saving throw, taking 22 (4d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"4d10"}]},{name:"Boar",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:11,hit_dice:"2d8 + 2",speed:"40 ft.",stats:[13,11,12,2,9,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 9",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Charge",desc:"If the boar moves at least 20 ft. straight toward a target and then hits it with a tusk attack on the same turn, the target takes an extra 3 (1d6) slashing damage. If the target is a creature, it must succeed on a DC 11 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"1d6"},{name:"Relentless (Recharges after a Short or Long Rest)",desc:"If the boar takes 7 damage or less that would reduce it to 0 hit points, it is reduced to 1 hit point instead.",attack_bonus:0}],actions:[{name:"Tusk",desc:"Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) slashing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Bone Devil",source:"5e SRD",size:"Large",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:19,hp:142,hit_dice:"15d10 + 59",speed:"40 ft., fly 40 ft.",stats:[18,16,18,13,14,16],saves:[{intelligence:5},{wisdom:6},{charisma:7}],skillsaves:[{deception:7},{insight:6}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 9",languages:"Infernal, telepathy 120 ft.",cr:"12",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes three attacks: two with its claws and one with its sting.",attack_bonus:0},{name:"Multiattack",desc:"The devil makes three attacks: two with its claws and one with its sting.",attack_bonus:0},{name:"Claw",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 8 (1d8 + 4) slashing damage.",attack_bonus:8,damage_dice:"1d8",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 8 (1d8 + 4) slashing damage.",attack_bonus:8,damage_dice:"1d8",damage_bonus:4},{name:"Sting",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 13 (2d8 + 4) piercing damage plus 17 (5d6) poison damage, and the target must succeed on a DC 14 Constitution saving throw or become poisoned for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success .",attack_bonus:8,damage_dice:"2d8",damage_bonus:4},{name:"Sting",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 13 (2d8 + 4) piercing damage plus 17 (5d6) poison damage, and the target must succeed on a DC 14 Constitution saving throw or become poisoned for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success .",attack_bonus:8,damage_dice:"2d8",damage_bonus:4}]},{name:"Brass Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"chaotic good",ac:16,hp:16,hit_dice:"3d8 + 2",speed:"30 ft., burrow 15 ft., fly 60 ft.",stats:[15,10,13,10,11,13],saves:[{dexterity:2},{constitution:3},{wisdom:2},{charisma:3}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"1",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in an 20-foot line that is 5 feet wide. Each creature in that line must make a DC 11 Dexterity saving throw, taking 14 (4d6) fire damage on a failed save, or half as much damage on a successful one. +Sleep Breath. The dragon exhales sleep gas in a 15-foot cone. Each creature in that area must succeed on a DC 11 Constitution saving throw or fall unconscious for 1 minute. This effect ends for a creature if the creature takes damage or someone uses an action to wake it.`,attack_bonus:0,damage_dice:"4d6"}]},{name:"Bronze Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"lawful good",ac:17,hp:32,hit_dice:"5d8 + 9",speed:"30 ft., fly 60 ft., swim 30 ft.",stats:[17,10,15,12,11,15],saves:[{dexterity:2},{constitution:4},{wisdom:2},{charisma:4}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"2",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d10 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d10",damage_bonus:3},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Lightning Breath. The dragon exhales lightning in a 40-foot line that is 5 feet wide. Each creature in that line must make a DC 12 Dexterity saving throw, taking 16 (3d10) lightning damage on a failed save, or half as much damage on a successful one. +Repulsion Breath. The dragon exhales repulsion energy in a 30-foot cone. Each creature in that area must succeed on a DC 12 Strength saving throw. On a failed save, the creature is pushed 30 feet away from the dragon.`,attack_bonus:0,damage_dice:"3d10"}]},{name:"Brown Bear",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:34,hit_dice:"4d10 + 12",speed:"40 ft., climb 30 ft.",stats:[19,10,16,2,13,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1",bestiary:!0,traits:[{name:"Keen Smell",desc:"The bear has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The bear makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d8 + 4) piercing damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:4}]},{name:"Bugbear",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"goblinoid",alignment:"chaotic evil",ac:16,hp:27,hit_dice:"5d8 + 4",speed:"30 ft.",stats:[15,14,13,8,11,9],skillsaves:[{stealth:6},{survival:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Common, Goblin",cr:"1",bestiary:!0,traits:[{name:"Brute",desc:"A melee weapon deals one extra die of its damage when the bugbear hits with it (included in the attack).",attack_bonus:0},{name:"Surprise Attack",desc:"If the bugbear surprises a creature and hits it with an attack during the first round of combat, the target takes an extra 7 (2d6) damage from the attack.",attack_bonus:0,damage_dice:"2d6"}],actions:[{name:"Morningstar",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 11 (2d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"2d8",damage_bonus:2},{name:"Javelin",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 30/120 ft., one target. Hit: 9 (2d6 + 2) piercing damage in melee or 5 (1d6 + 2) piercing damage at range.",attack_bonus:4,damage_dice:"2d6",damage_bonus:2}]},{name:"Bulette",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:17,hp:94,hit_dice:"9d10 + 44",speed:"40 ft., burrow 40 ft.",stats:[19,11,21,2,10,5],skillsaves:[{perception:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., tremorsense 60 ft., passive Perception 16",languages:"",cr:"5",bestiary:!0,traits:[{name:"Standing Leap",desc:"The bulette's long jump is up to 30 ft. and its high jump is up to 15 ft., with or without a running start.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 30 (4d12 + 4) piercing damage.",attack_bonus:7,damage_dice:"4d12",damage_bonus:4},{name:"Deadly Leap",desc:"If the bulette jumps at least 15 ft. as part of its movement, it can then use this action to land on its ft. in a space that contains one or more other creatures. Each of those creatures must succeed on a DC 16 Strength or Dexterity saving throw (target's choice) or be knocked prone and take 14 (3d6 + 4) bludgeoning damage plus 14 (3d6 + 4) slashing damage. On a successful save, the creature takes only half the damage, isn't knocked prone, and is pushed 5 ft. out of the bulette's space into an unoccupied space of the creature's choice. If no unoccupied space is within range, the creature instead falls prone in the bulette's space.",attack_bonus:0}]},{name:"Camel",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:9,hp:15,hit_dice:"2d10 + 4",speed:"50 ft.",stats:[16,8,14,2,8,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 9",languages:"",cr:"1/8",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 2 (1d4) bludgeoning damage.",attack_bonus:5,damage_dice:"1d4"}]},{name:"Carrion Crawler",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:13,hp:51,hit_dice:"6d10 + 18",speed:"30 ft., climb 30 ft.",stats:[14,13,16,1,12,5],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Keen Smell",desc:"The carrion crawler has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Spider Climb",desc:"The carrion crawler can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The carrion crawler makes two attacks: one with its tentacles and one with its bite.",attack_bonus:0},{name:"Tentacles",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one creature. Hit: 4 (1d4 + 2) poison damage, and the target must succeed on a DC 13 Constitution saving throw or be poisoned for 1 minute. Until this poison ends, the target is paralyzed. The target can repeat the saving throw at the end of each of its turns, ending the poison on itself on a success.",attack_bonus:8,damage_dice:"1d4",damage_bonus:2},{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2}]},{name:"Cat",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:2,hit_dice:"1d4 + -1",speed:"40 ft., climb 30 ft.",stats:[3,15,10,3,12,7],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Smell",desc:"The cat has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +0 to hit, reach 5 ft., one target. Hit: 1 slashing damage.",attack_bonus:0,damage_bonus:1}]},{name:"Cave Bear",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:42,hit_dice:"5d10 + 14",speed:"40 ft., swim 30 ft.",stats:[20,10,16,2,13,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Keen Smell",desc:"The bear has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The bear makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 9 (1d8 + 5) piercing damage.",attack_bonus:7,damage_dice:"1d8",damage_bonus:5},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:5}]},{name:"Centaur",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"neutral good",ac:12,hp:45,hit_dice:"6d10 + 12",speed:"50 ft.",stats:[18,14,14,9,13,11],skillsaves:[{athletics:6},{perception:3},{survival:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"Elvish, Sylvan",cr:"2",bestiary:!0,traits:[{name:"Charge",desc:"If the centaur moves at least 30 ft. straight toward a target and then hits it with a pike attack on the same turn, the target takes an extra 10 (3d6) piercing damage.",attack_bonus:0,damage_dice:"3d6"}],actions:[{name:"Multiattack",desc:"The centaur makes two attacks: one with its pike and one with its hooves or two with its longbow.",attack_bonus:0},{name:"Pike",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 9 (1d10 + 4) piercing damage.",attack_bonus:6,damage_dice:"1d10",damage_bonus:4},{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4},{name:"Longbow",desc:"Ranged Weapon Attack: +4 to hit, range 150/600 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Chain Devil",source:"5e SRD",size:"Medium",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:16,hp:85,hit_dice:"10d8 + 40",speed:"30 ft.",stats:[18,15,18,11,12,14],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 8",languages:"Infernal, telepathy 120 ft.",cr:"11",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes two attacks with its chains.",attack_bonus:0},{name:"Chain",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 11 (2d6 + 4) slashing damage. The target is grappled (escape DC 14) if the devil isn't already grappling a creature. Until this grapple ends, the target is restrained and takes 7 (2d6) piercing damage at the start of each of its turns.",attack_bonus:8,damage_dice:"2d6",damage_bonus:4},{name:"Animate Chains (Recharges after a Short or Long Rest)",desc:`Up to four chains the devil can see within 60 feet of it magically sprout razor-edged barbs and animate under the devil's control, provided that the chains aren't being worn or carried. +Each animated chain is an object with AC 20, 20 hit points, resistance to piercing damage, and immunity to psychic and thunder damage. When the devil uses Multiattack on its turn, it can use each animated chain to make one additional chain attack. An animated chain can grapple one creature of its own but can't make attacks while grappling. An animated chain reverts to its inanimate state if reduced to 0 hit points or if the devil is incapacitated or dies.`,attack_bonus:0}],reactions:[{name:"Unnerving Mask",desc:"When a creature the devil can see starts its turn within 30 feet of the devil, the devil can create the illusion that it looks like one of the creature's departed loved ones or bitter enemies. If the creature can see the devil, it must succeed on a DC 14 Wisdom saving throw or be frightened until the end of its turn.",attack_bonus:0}]},{name:"Chimera",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:14,hp:114,hit_dice:"12d10 + 48",speed:"30 ft., fly 60 ft.",stats:[19,11,19,3,14,10],skillsaves:[{perception:8}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 18",languages:"understands Draconic but can't speak",cr:"6",bestiary:!0,actions:[{name:"Multiattack",desc:"The chimera makes three attacks: one with its bite, one with its horns, and one with its claws. When its fire breath is available, it can use the breath in place of its bite or horns.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) piercing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Horns",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 10 (1d12 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"1d12",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Fire Breath (Recharge 5-6)",desc:"The dragon head exhales fire in a 15-foot cone. Each creature in that area must make a DC 15 Dexterity saving throw, taking 31 (7d8) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"7d8"}]},{name:"Chuul",source:"5e SRD",size:"Large",type:"aberration",subtype:"",alignment:"chaotic evil",ac:16,hp:93,hit_dice:"11d10 + 32",speed:"30 ft., swim 30 ft.",stats:[19,10,16,5,11,5],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 14",languages:"understands Deep Speech but can't speak",cr:"4",bestiary:!0,traits:[{name:"Amphibious",desc:"The chuul can breathe air and water.",attack_bonus:0},{name:"Sense Magic",desc:"The chuul senses magic within 120 feet of it at will. This trait otherwise works like the detect magic spell but isn't itself magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The chuul makes two pincer attacks. If the chuul is grappling a creature, the chuul can also use its tentacles once.",attack_bonus:0},{name:"Pincer",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage. The target is grappled (escape DC 14) if it is a Large or smaller creature and the chuul doesn't have two other creatures grappled.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4},{name:"Tentacles",desc:"One creature grappled by the chuul must succeed on a DC 13 Constitution saving throw or be poisoned for 1 minute. Until this poison ends, the target is paralyzed. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:0}]},{name:"Clay Golem",source:"5e SRD",size:"Large",type:"construct",subtype:"",alignment:"unaligned",ac:14,hp:133,hit_dice:"14d10 + 56",speed:"20 ft.",stats:[20,9,18,3,8,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid, poison, psychic; bludgeoning, piercing, and slashing from nonmagical weapons that aren't adamantine",condition_immunities:"charmed, exhaustion, frightened, paralyzed, petrified, poisoned",senses:"darkvision 60 ft., passive Perception 9",languages:"understands the languages of its creator but can't speak",cr:"9",bestiary:!0,traits:[{name:"Acid Absorption",desc:"Whenever the golem is subjected to acid damage, it takes no damage and instead regains a number of hit points equal to the acid damage dealt.",attack_bonus:0},{name:"Berserk",desc:"Whenever the golem starts its turn with 60 hit points or fewer, roll a d6. On a 6, the golem goes berserk. On each of its turns while berserk, the golem attacks the nearest creature it can see. If no creature is near enough to move to and attack, the golem attacks an object, with preference for an object smaller than itself. Once the golem goes berserk, it continues to do so until it is destroyed or regains all its hit points.",attack_bonus:0},{name:"Immutable Form",desc:"The golem is immune to any spell or effect that would alter its form.",attack_bonus:0},{name:"Magic Resistance",desc:"The golem has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The golem's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The golem makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 16 (2d10 + 5) bludgeoning damage. If the target is a creature, it must succeed on a DC 15 Constitution saving throw or have its hit point maximum reduced by an amount equal to the damage taken. The target dies if this attack reduces its hit point maximum to 0. The reduction lasts until removed by the greater restoration spell or other magic.",attack_bonus:8,damage_dice:"2d10",damage_bonus:5},{name:"Haste (Recharge 5-6)",desc:"Until the end of its next turn, the golem magically gains a +2 bonus to its AC, has advantage on Dexterity saving throws, and can use its slam attack as a bonus action.",attack_bonus:0}]},{name:"Cloaker",source:"5e SRD",size:"Large",type:"aberration",subtype:"",alignment:"chaotic neutral",ac:14,hp:78,hit_dice:"12d10 + 12",speed:"10 ft., fly 40 ft.",stats:[17,15,12,13,12,14],skillsaves:[{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"Deep Speech, Undercommon",cr:"8",bestiary:!0,traits:[{name:"Damage Transfer",desc:"While attached to a creature, the cloaker takes only half the damage dealt to it (rounded down). and that creature takes the other half.",attack_bonus:0},{name:"False Appearance",desc:"While the cloaker remains motionless without its underside exposed, it is indistinguishable from a dark leather cloak.",attack_bonus:0},{name:"Light Sensitivity",desc:"While in bright light, the cloaker has disadvantage on attack rolls and Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The cloaker makes two attacks: one with its bite and one with its tail.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 10 (2d6 + 3) piercing damage, and if the target is Large or smaller, the cloaker attaches to it. If the cloaker has advantage against the target, the cloaker attaches to the target's head, and the target is blinded and unable to breathe while the cloaker is attached. While attached, the cloaker can make this attack only against the target and has advantage on the attack roll. The cloaker can detach itself by spending 5 feet of its movement. A creature, including the target, can take its action to detach the cloaker by succeeding on a DC 16 Strength check.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3},{name:"Tail",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one creature. Hit: 7 (1d8 + 3) slashing damage.",attack_bonus:6,damage_dice:"1d8",damage_bonus:3},{name:"Moan",desc:"Each creature within 60 feet of the cloaker that can hear its moan and that isn't an aberration must succeed on a DC 13 Wisdom saving throw or become frightened until the end of the cloaker's next turn. If a creature's saving throw is successful, the creature is immune to the cloaker's moan for the next 24 hours.",attack_bonus:0},{name:"Phantasms (Recharges after a Short or Long Rest)",desc:`The cloaker magically creates three illusory duplicates of itself if it isn't in bright light. The duplicates move with it and mimic its actions, shifting position so as to make it impossible to track which cloaker is the real one. If the cloaker is ever in an area of bright light, the duplicates disappear. +Whenever any creature targets the cloaker with an attack or a harmful spell while a duplicate remains, that creature rolls randomly to determine whether it targets the cloaker or one of the duplicates. A creature is unaffected by this magical effect if it can't see or if it relies on senses other than sight. +A duplicate has the cloaker's AC and uses its saving throws. If an attack hits a duplicate, or if a duplicate fails a saving throw against an effect that deals damage, the duplicate disappears.`,attack_bonus:0}]},{name:"Cloud Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"neutral good (50%) or neutral evil (50%)",ac:14,hp:200,hit_dice:"16d12 + 96",speed:"40 ft.",stats:[27,10,22,12,16,16],saves:[{constitution:10},{wisdom:7},{charisma:7}],skillsaves:[{insight:7},{perception:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 17",languages:"Common, Giant",cr:"9",bestiary:!0,traits:[{name:"Keen Smell",desc:"The giant has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The giant's innate spellcasting ability is Charisma. It can innately cast the following spells, requiring no material components: + +At will: detect magic, fog cloud, light +3/day each: feather fall, fly, misty step, telekinesis +1/day each: control weather, gaseous form`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The giant makes two morningstar attacks.",attack_bonus:0},{name:"Morningstar",desc:"Melee Weapon Attack: +12 to hit, reach 10 ft., one target. Hit: 21 (3d8 + 8) piercing damage.",attack_bonus:12,damage_dice:"3d8",damage_bonus:8},{name:"Rock",desc:"Ranged Weapon Attack: +12 to hit, range 60/240 ft., one target. Hit: 30 (4d10 + 8) bludgeoning damage.",attack_bonus:12,damage_dice:"4d10",damage_bonus:8}]},{name:"Cockatrice",source:"5e SRD",size:"Small",type:"monstrosity",subtype:"",alignment:"unaligned",ac:11,hp:27,hit_dice:"6d6 + 6",speed:"20 ft., fly 40 ft.",stats:[6,12,12,2,13,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"",cr:"1/2",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one creature. Hit: 3 (1d4 + 1) piercing damage, and the target must succeed on a DC 11 Constitution saving throw against being magically petrified. On a failed save, the creature begins to turn to stone and is restrained. It must repeat the saving throw at the end of its next turn. On a success, the effect ends. On a failure, the creature is petrified for 24 hours.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1}]},{name:"Commoner",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:10,hp:4,hit_dice:"1d8 + -1",speed:"30 ft.",stats:[10,10,10,10,10,10],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"0",bestiary:!0,actions:[{name:"Club",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2 (1d4) bludgeoning damage.",attack_bonus:2,damage_dice:"1d4"}]},{name:"Constrictor Snake",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:13,hit_dice:"2d10 + 2",speed:"30 ft., swim 30 ft.",stats:[15,14,12,1,10,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 10",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Constrict",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 6 (1d8 + 2) bludgeoning damage, and the target is grappled (escape DC 14). Until this grapple ends, the creature is restrained, and the snake can't constrict another target.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Copper Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"chaotic good",ac:16,hp:22,hit_dice:"4d8 + 4",speed:"30 ft., climb 30 ft., fly 60 ft.",stats:[15,12,13,14,11,13],saves:[{dexterity:3},{constitution:3},{wisdom:2},{charisma:3}],skillsaves:[{perception:4},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"1",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Acid Breath. The dragon exhales acid in an 20-foot line that is 5 feet wide. Each creature in that line must make a DC 11 Dexterity saving throw, taking 18 (4d8) acid damage on a failed save, or half as much damage on a successful one. +Slowing Breath. The dragon exhales gas in a 1 5-foot cone. Each creature in that area must succeed on a DC 11 Constitution saving throw. On a failed save, the creature can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the creature can use either an action or a bonus action on its turn, but not both. These effects last for 1 minute. The creature can repeat the saving throw at the end of each of its turns, ending the effect on itself with a successful save.`,attack_bonus:0,damage_dice:"4d8"}]},{name:"Couatl",source:"5e SRD",size:"Medium",type:"celestial",subtype:"",alignment:"lawful good",ac:19,hp:97,hit_dice:"13d8 + 38",speed:"30 ft., fly 90 ft.",stats:[16,20,17,18,20,18],saves:[{constitution:5},{wisdom:7},{charisma:6}],damage_vulnerabilities:"",damage_resistances:"radiant",damage_immunities:"psychic; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"",senses:"truesight 120 ft., passive Perception 15",languages:"all, telepathy 120 ft.",cr:"4",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:`The couatl's spellcasting ability is Charisma (spell save DC 14). It can innately cast the following spells, requiring only verbal components: + +At will: detect evil and good, detect magic, detect thoughts +3/day each: bless, create food and water, cure wounds, lesser restoration, protection from poison, sanctuary, shield +1/day each: dream, greater restoration, scrying`,attack_bonus:0},{name:"Magic Weapons",desc:"The couatl's weapon attacks are magical.",attack_bonus:0},{name:"Shielded Mind",desc:"The couatl is immune to scrying and to any effect that would sense its emotions, read its thoughts, or detect its location.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one creature. Hit: 8 (1d6 + 5) piercing damage, and the target must succeed on a DC 13 Constitution saving throw or be poisoned for 24 hours. Until this poison ends, the target is unconscious. Another creature can use an action to shake the target awake.",attack_bonus:8,damage_dice:"1d6",damage_bonus:5},{name:"Constrict",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one Medium or smaller creature. Hit: 10 (2d6 + 3) bludgeoning damage, and the target is grappled (escape DC 15). Until this grapple ends, the target is restrained, and the couatl can't constrict another target.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3},{name:"Change Shape",desc:`The couatl magically polymorphs into a humanoid or beast that has a challenge rating equal to or less than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the couatl's choice). +In a new form, the couatl retains its game statistics and ability to speak, but its AC, movement modes, Strength, Dexterity, and other actions are replaced by those of the new form, and it gains any statistics and capabilities (except class features, legendary actions, and lair actions) that the new form has but that it lacks. If the new form has a bite attack, the couatl can use its bite in that form.`,attack_bonus:0}]},{name:"Crab",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:2,hit_dice:"1d4",speed:"20 ft., swim 20 ft.",stats:[2,11,10,1,8,2],skillsaves:[{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., passive Perception 9",languages:"",cr:"0",bestiary:!0,traits:[{name:"Amphibious",desc:"The crab can breathe air and water.",attack_bonus:0}],actions:[{name:"Claw",desc:"Melee Weapon Attack: +0 to hit, reach 5 ft., one target. Hit: 1 bludgeoning damage.",attack_bonus:0,damage_bonus:1}]},{name:"Crocodile",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:19,hit_dice:"3d10 + 2",speed:"20 ft., swim 20 ft.",stats:[15,10,13,2,10,5],skillsaves:[{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Hold Breath",desc:"The crocodile can hold its breath for 15 minutes.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 7 (1d10 + 2) piercing damage, and the target is grappled (escape DC 12). Until this grapple ends, the target is restrained, and the crocodile can't bite another target",attack_bonus:4,damage_dice:"1d10",damage_bonus:2}]},{name:"Cult Fanatic",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-good alignment",ac:13,hp:22,hit_dice:"6d8 + -5",speed:"30 ft.",stats:[11,14,12,10,13,14],skillsaves:[{deception:4},{persuasion:4},{religion:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"any one language (usually Common)",cr:"2",bestiary:!0,traits:[{name:"Dark Devotion",desc:"The fanatic has advantage on saving throws against being charmed or frightened.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The fanatic makes two melee attacks.",attack_bonus:0},{name:"Dagger",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 20/60 ft., one creature. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}],spells:["The fanatic is a 4th-level spellcaster. Its spell casting ability is Wisdom (spell save DC 11, +3 to hit with spell attacks). The fanatic has the following cleric spells prepared:","Cantrips (at will): light, sacred flame, thaumaturgy",{"1st level (4 slots)":"command, inflict wounds, shield of faith"},{"2nd level (3 slots)":"hold person, spiritual weapon"}]},{name:"Cultist",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-good alignment",ac:12,hp:9,hit_dice:"2d8",speed:"30 ft.",stats:[11,12,10,10,11,10],skillsaves:[{deception:2},{religion:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"1/8",bestiary:!0,traits:[{name:"Dark Devotion",desc:"The cultist has advantage on saving throws against being charmed or frightened.",attack_bonus:0}],actions:[{name:"Scimitar",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one creature. Hit: 4 (1d6 + 1) slashing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Darkmantle",source:"5e SRD",size:"Small",type:"monstrosity",subtype:"",alignment:"unaligned",ac:11,hp:22,hit_dice:"5d6 + 4",speed:"10 ft., fly 30 ft.",stats:[16,12,13,2,10,5],skillsaves:[{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 60 ft., passive Perception 10",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Echolocation",desc:"The darkmantle can't use its blindsight while deafened.",attack_bonus:0},{name:"False Appearance",desc:"While the darkmantle remains motionless, it is indistinguishable from a cave formation such as a stalactite or stalagmite.",attack_bonus:0}],actions:[{name:"Crush",desc:`Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 6 (1d6 + 3) bludgeoning damage, and the darkmantle attaches to the target. If the target is Medium or smaller and the darkmantle has advantage on the attack roll, it attaches by engulfing the target's head, and the target is also blinded and unable to breathe while the darkmantle is attached in this way. +While attached to the target, the darkmantle can attack no other creature except the target but has advantage on its attack rolls. The darkmantle's speed also becomes 0, it can't benefit from any bonus to its speed, and it moves with the target. +A creature can detach the darkmantle by making a successful DC 13 Strength check as an action. On its turn, the darkmantle can detach itself from the target by using 5 feet of movement.`,attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Darkness Aura (1/day)",desc:"A 15-foot radius of magical darkness extends out from the darkmantle, moves with it, and spreads around corners. The darkness lasts as long as the darkmantle maintains concentration, up to 10 minutes (as if concentrating on a spell). Darkvision can't penetrate this darkness, and no natural light can illuminate it. If any of the darkness overlaps with an area of light created by a spell of 2nd level or lower, the spell creating the light is dispelled.",attack_bonus:0}]},{name:"Death Dog",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:12,hp:39,hit_dice:"6d8 + 12",speed:"40 ft.",stats:[15,14,14,3,13,6],skillsaves:[{perception:5},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 15",languages:"",cr:"1",bestiary:!0,traits:[{name:"Two-Headed",desc:"The dog has advantage on Wisdom (Perception) checks and on saving throws against being blinded, charmed, deafened, frightened, stunned, or knocked unconscious.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dog makes two bite attacks.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage. If the target is a creature, it must succeed on a DC 12 Constitution saving throw against disease or become poisoned until the disease is cured. Every 24 hours that elapse, the creature must repeat the saving throw, reducing its hit point maximum by 5 (1d10) on a failure. This reduction lasts until the disease is cured. The creature dies if the disease reduces its hit point maximum to 0.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Deep Gnome (Svirfneblin)",source:"5e SRD",size:"Small",type:"humanoid",subtype:"gnome",alignment:"neutral good",ac:15,hp:16,hit_dice:"3d6 + 5",speed:"20 ft.",stats:[15,14,14,12,10,9],skillsaves:[{perception:2},{investigation:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 12",languages:"Gnomish, Terran, Undercommon",cr:"1/2",bestiary:!0,traits:[{name:"Stone Camouflage",desc:"The gnome has advantage on Dexterity (Stealth) checks made to hide in rocky terrain.",attack_bonus:0},{name:"Gnome Cunning",desc:"The gnome has advantage on Intelligence, Wisdom, and Charisma saving throws against magic.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The gnome's innate spellcasting ability is Intelligence (spell save DC 11). It can innately cast the following spells, requiring no material components: +At will: nondetection (self only) +1/day each: blindness/deafness, blur, disguise self`,attack_bonus:0}],actions:[{name:"War Pick",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Poisoned Dart",desc:"Ranged Weapon Attack: +4 to hit, range 30/120 ft., one creature. Hit: 4 (1d4 + 2) piercing damage, and the target must succeed on a DC 12 Constitution saving throw or be poisoned for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Deer",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:4,hit_dice:"1d8 + -1",speed:"50 ft.",stats:[11,16,11,2,14,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"",cr:"0",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2 (1d4) piercing damage.",attack_bonus:2,damage_dice:"1d4"}]},{name:"Deva",source:"5e SRD",size:"Medium",type:"celestial",subtype:"",alignment:"lawful good",ac:17,hp:136,hit_dice:"16d8 + 64",speed:"30 ft., fly 90 ft.",stats:[18,18,18,17,20,20],saves:[{wisdom:9},{charisma:9}],skillsaves:[{insight:9},{perception:9}],damage_vulnerabilities:"",damage_resistances:"radiant; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"",condition_immunities:"charmed, exhaustion, frightened",senses:"darkvision 120 ft., passive Perception 19",languages:"all, telepathy 120 ft.",cr:"10",bestiary:!0,traits:[{name:"Angelic Weapons",desc:"The deva's weapon attacks are magical. When the deva hits with any weapon, the weapon deals an extra 4d8 radiant damage (included in the attack).",attack_bonus:0},{name:"Innate Spellcasting",desc:`The deva's spellcasting ability is Charisma (spell save DC 17). The deva can innately cast the following spells, requiring only verbal components: +At will: detect evil and good +1/day each: commune, raise dead`,attack_bonus:0},{name:"Magic Resistance",desc:"The deva has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The deva makes two melee attacks.",attack_bonus:0},{name:"Mace",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 7 (1d6 + 4) bludgeoning damage plus 18 (4d8) radiant damage.",attack_bonus:8,damage_dice:"1d6 + 4d8",damage_bonus:4},{name:"Healing Touch (3/Day)",desc:"The deva touches another creature. The target magically regains 20 (4d8 + 2) hit points and is freed from any curse, disease, poison, blindness, or deafness.",attack_bonus:0},{name:"Change Shape",desc:`The deva magically polymorphs into a humanoid or beast that has a challenge rating equal to or less than its own, or back into its true form. It reverts to its true form if it dies. Any equipment it is wearing or carrying is absorbed or borne by the new form (the deva's choice). +In a new form, the deva retains its game statistics and ability to speak, but its AC, movement modes, Strength, Dexterity, and special senses are replaced by those of the new form, and it gains any statistics and capabilities (except class features, legendary actions, and lair actions) that the new form has but that it lacks.`,attack_bonus:0}]},{name:"Dire Wolf",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:37,hit_dice:"5d10 + 9",speed:"50 ft.",stats:[17,15,15,3,12,7],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The wolf has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The wolf has advantage on an attack roll against a creature if at least one of the wolf's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Djinni",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"chaotic good",ac:17,hp:161,hit_dice:"14d10 + 84",speed:"30 ft., fly 90 ft.",stats:[21,15,22,15,16,20],saves:[{dexterity:6},{wisdom:7},{charisma:9}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning, thunder",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 13",languages:"Auran",cr:"11",bestiary:!0,traits:[{name:"Elemental Demise",desc:"If the djinni dies, its body disintegrates into a warm breeze, leaving behind only equipment the djinni was wearing or carrying.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The djinni's innate spellcasting ability is Charisma (spell save DC 17, +9 to hit with spell attacks). It can innately cast the following spells, requiring no material components: + +At will: detect evil and good, detect magic, thunderwave 3/day each: create food and water (can create wine instead of water), tongues, wind walk +1/day each: conjure elemental (air elemental only), creation, gaseous form, invisibility, major image, plane shift`,attack_bonus:0},{name:"Variant: Genie Powers",desc:`Genies have a variety of magical capabilities, including spells. A few have even greater powers that allow them to alter their appearance or the nature of reality. + +Disguises. +Some genies can veil themselves in illusion to pass as other similarly shaped creatures. Such genies can innately cast the disguise self spell at will, often with a longer duration than is normal for that spell. Mightier genies can cast the true polymorph spell one to three times per day, possibly with a longer duration than normal. Such genies can change only their own shape, but a rare few can use the spell on other creatures and objects as well. +Wishes. +The genie power to grant wishes is legendary among mortals. Only the most potent genies, such as those among the nobility, can do so. A particular genie that has this power can grant one to three wishes to a creature that isn't a genie. Once a genie has granted its limit of wishes, it can't grant wishes again for some amount of time (usually 1 year). and cosmic law dictates that the same genie can expend its limit of wishes on a specific creature only once in that creature's existence. +To be granted a wish, a creature within 60 feet of the genie states a desired effect to it. The genie can then cast the wish spell on the creature's behalf to bring about the effect. Depending on the genie's nature, the genie might try to pervert the intent of the wish by exploiting the wish's poor wording. The perversion of the wording is usually crafted to be to the genie's benefit.`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The djinni makes three scimitar attacks.",attack_bonus:0},{name:"Scimitar",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage plus 3 (1d6) lightning or thunder damage (djinni's choice).",attack_bonus:9,damage_dice:"2d6 + 1d6",damage_bonus:5},{name:"Create Whirlwind",desc:`A 5-foot-radius, 30-foot-tall cylinder of swirling air magically forms on a point the djinni can see within 120 feet of it. The whirlwind lasts as long as the djinni maintains concentration (as if concentrating on a spell). Any creature but the djinni that enters the whirlwind must succeed on a DC 18 Strength saving throw or be restrained by it. The djinni can move the whirlwind up to 60 feet as an action, and creatures restrained by the whirlwind move with it. The whirlwind ends if the djinni loses sight of it. +A creature can use its action to free a creature restrained by the whirlwind, including itself, by succeeding on a DC 18 Strength check. If the check succeeds, the creature is no longer restrained and moves to the nearest space outside the whirlwind.`,attack_bonus:0}]},{name:"Doppelganger",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"shapechanger",alignment:"unaligned",ac:14,hp:52,hit_dice:"8d8 + 16",speed:"30 ft.",stats:[11,18,14,11,12,14],skillsaves:[{deception:6},{insight:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"charmed",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"Common",cr:"3",bestiary:!0,traits:[{name:"Shapechanger",desc:"The doppelganger can use its action to polymorph into a Small or Medium humanoid it has seen, or back into its true form. Its statistics, other than its size, are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Ambusher",desc:"The doppelganger has advantage on attack rolls against any creature it has surprised.",attack_bonus:0},{name:"Surprise Attack",desc:"If the doppelganger surprises a creature and hits it with an attack during the first round of combat, the target takes an extra 10 (3d6) damage from the attack.",attack_bonus:0,damage_dice:"3d6"}],actions:[{name:"Multiattack",desc:"The doppelganger makes two melee attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 7 (1d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"1d6",damage_bonus:4},{name:"Read Thoughts",desc:"The doppelganger magically reads the surface thoughts of one creature within 60 ft. of it. The effect can penetrate barriers, but 3 ft. of wood or dirt, 2 ft. of stone, 2 inches of metal, or a thin sheet of lead blocks it. While the target is in range, the doppelganger can continue reading its thoughts, as long as the doppelganger's concentration isn't broken (as if concentrating on a spell). While reading the target's mind, the doppelganger has advantage on Wisdom (Insight) and Charisma (Deception, Intimidation, and Persuasion) checks against the target.",attack_bonus:0}]},{name:"Draft Horse",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:19,hit_dice:"3d10 + 2",speed:"40 ft.",stats:[18,10,12,2,11,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 9 (2d4 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d4",damage_bonus:4}]},{name:"Dragon Turtle",source:"5e SRD",size:"Gargantuan",type:"dragon",subtype:"",alignment:"neutral",ac:20,hp:341,hit_dice:"22d20 + 110",speed:"20 ft., swim 40 ft.",stats:[25,10,20,10,12,12],saves:[{dexterity:6},{constitution:11},{wisdom:7}],damage_vulnerabilities:"",damage_resistances:"fire",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 11",languages:"Aquan, Draconic",cr:"17",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon turtle can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon turtle makes three attacks: one with its bite and two with its claws. It can make one tail attack in place of its two claw attacks.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +13 to hit, reach 15 ft., one target. Hit: 26 (3d12 + 7) piercing damage.",attack_bonus:13,damage_dice:"3d12",damage_bonus:7},{name:"Claw",desc:"Melee Weapon Attack: +13 to hit, reach 10 ft., one target. Hit: 16 (2d8 + 7) slashing damage.",attack_bonus:13,damage_dice:"2d8",damage_bonus:7},{name:"Tail",desc:"Melee Weapon Attack: +13 to hit, reach 15 ft., one target. Hit: 26 (3d12 + 7) bludgeoning damage. If the target is a creature, it must succeed on a DC 20 Strength saving throw or be pushed up to 10 feet away from the dragon turtle and knocked prone.",attack_bonus:13,damage_dice:"3d12",damage_bonus:7},{name:"Steam Breath (Recharge 5-6)",desc:"The dragon turtle exhales scalding steam in a 60-foot cone. Each creature in that area must make a DC 18 Constitution saving throw, taking 52 (15d6) fire damage on a failed save, or half as much damage on a successful one. Being underwater doesn't grant resistance against this damage.",attack_bonus:0,damage_dice:"15d6"}]},{name:"Dretch",source:"5e SRD",size:"Small",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:11,hp:18,hit_dice:"4d6 + 4",speed:"20 ft.",stats:[11,11,12,5,8,3],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 9",languages:"Abyssal, telepathy 60 ft. (works only with creatures that understand Abyssal)",cr:"1/4",bestiary:!0,actions:[{name:"Multiattack",desc:"The dretch makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 3 (1d6) piercing damage.",attack_bonus:2,damage_dice:"1d6"},{name:"Claws",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 5 (2d4) slashing damage.",attack_bonus:2,damage_dice:"2d4"},{name:"Fetid Cloud (1/Day)",desc:"A 10-foot radius of disgusting green gas extends out from the dretch. The gas spreads around corners, and its area is lightly obscured. It lasts for 1 minute or until a strong wind disperses it. Any creature that starts its turn in that area must succeed on a DC 11 Constitution saving throw or be poisoned until the start of its next turn. While poisoned in this way, the target can take either an action or a bonus action on its turn, not both, and can't take reactions.",attack_bonus:0}]},{name:"Drider",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:19,hp:123,hit_dice:"13d10 + 51",speed:"30 ft., climb 30 ft.",stats:[16,16,18,13,14,12],skillsaves:[{perception:5},{stealth:9}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 15",languages:"Elvish, Undercommon",cr:"6",bestiary:!0,traits:[{name:"Fey Ancestry",desc:"The drider has advantage on saving throws against being charmed, and magic can't put the drider to sleep.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The drider's innate spellcasting ability is Wisdom (spell save DC 13). The drider can innately cast the following spells, requiring no material components: +At will: dancing lights +1/day each: darkness, faerie fire`,attack_bonus:0},{name:"Spider Climb",desc:"The drider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Sunlight Sensitivity",desc:"While in sunlight, the drider has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0},{name:"Web Walker",desc:"The drider ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The drider makes three attacks, either with its longsword or its longbow. It can replace one of those attacks with a bite attack.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 2 (1d4) piercing damage plus 9 (2d8) poison damage.",attack_bonus:6,damage_dice:"1d4",damage_bonus:2},{name:"Longsword",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands.",attack_bonus:6,damage_dice:"1d8",damage_bonus:3},{name:"Longbow",desc:"Ranged Weapon Attack: +6 to hit, range 150/600 ft., one target. Hit: 7 (1d8 + 3) piercing damage plus 4 (1d8) poison damage.",attack_bonus:6,damage_dice:"1d8",damage_bonus:3}]},{name:"Drow",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"elf",alignment:"neutral evil",ac:15,hp:13,hit_dice:"3d8 + -1",speed:"30 ft.",stats:[10,14,10,11,11,12],skillsaves:[{perception:2},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 12",languages:"Elvish, Undercommon",cr:"1/4",bestiary:!0,traits:[{name:"Fey Ancestry",desc:"The drow has advantage on saving throws against being charmed, and magic can't put the drow to sleep.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The drow's spellcasting ability is Charisma (spell save DC 11). It can innately cast the following spells, requiring no material components: +At will: dancing lights +1/day each: darkness, faerie fire`,attack_bonus:0},{name:"Sunlight Sensitivity",desc:"While in sunlight, the drow has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Shortsword",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Hand Crossbow",desc:"Ranged Weapon Attack: +4 to hit, range 30/120 ft., one target. Hit: 5 (1d6 + 2) piercing damage, and the target must succeed on a DC 13 Constitution saving throw or be poisoned for 1 hour. If the saving throw fails by 5 or more, the target is also unconscious while poisoned in this way. The target wakes up if it takes damage or if another creature takes an action to shake it awake.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Druid",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:11,hp:27,hit_dice:"5d8 + 4",speed:"30 ft.",stats:[10,12,13,12,15,11],skillsaves:[{nature:3},{medicine:4},{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"Druidic plus any two languages",cr:"2",bestiary:!0,traits:[],actions:[{name:"Quarterstaff",desc:"Melee Weapon Attack: +2 to hit (+4 to hit with shillelagh), reach 5 ft., one target. Hit: 3 (1d6) bludgeoning damage, or 6 (1d8 + 2) bludgeoning damage with shillelagh or if wielded with two hands.",attack_bonus:2,damage_dice:"1d6"}],spells:["The druid is a 4th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 12, +4 to hit with spell attacks). It has the following druid spells prepared:",{"Cantrips (at will)":"druidcraft, produce flame, shillelagh"},{"1st level (4 slots)":"entangle, longstrider, speak with animals, thunderwave"},{"2nd level (3 slots)":"animal messenger, barkskin"}]},{name:"Dryad",source:"5e SRD",size:"Medium",type:"fey",subtype:"",alignment:"neutral",ac:11,hp:22,hit_dice:"5d8 + -1",speed:"30 ft.",stats:[10,12,11,14,15,18],skillsaves:[{perception:4},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Elvish, Sylvan",cr:"1",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:`The dryad's innate spellcasting ability is Charisma (spell save DC 14). The dryad can innately cast the following spells, requiring no material components: + +At will: druidcraft +3/day each: entangle, goodberry +1/day each: barkskin, pass without trace, shillelagh`,attack_bonus:0},{name:"Magic Resistance",desc:"The dryad has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Speak with Beasts and Plants",desc:"The dryad can communicate with beasts and plants as if they shared a language.",attack_bonus:0},{name:"Tree Stride",desc:"Once on her turn, the dryad can use 10 ft. of her movement to step magically into one living tree within her reach and emerge from a second living tree within 60 ft. of the first tree, appearing in an unoccupied space within 5 ft. of the second tree. Both trees must be large or bigger.",attack_bonus:0}],actions:[{name:"Club",desc:"Melee Weapon Attack: +2 to hit (+6 to hit with shillelagh), reach 5 ft., one target. Hit: 2 (1 d4) bludgeoning damage, or 8 (1d8 + 4) bludgeoning damage with shillelagh.",attack_bonus:2,damage_dice:"1d4"},{name:"Fey Charm",desc:`The dryad targets one humanoid or beast that she can see within 30 feet of her. If the target can see the dryad, it must succeed on a DC 14 Wisdom saving throw or be magically charmed. The charmed creature regards the dryad as a trusted friend to be heeded and protected. Although the target isn't under the dryad's control, it takes the dryad's requests or actions in the most favorable way it can. +Each time the dryad or its allies do anything harmful to the target, it can repeat the saving throw, ending the effect on itself on a success. Otherwise, the effect lasts 24 hours or until the dryad dies, is on a different plane of existence from the target, or ends the effect as a bonus action. If a target's saving throw is successful, the target is immune to the dryad's Fey Charm for the next 24 hours. +The dryad can have no more than one humanoid and up to three beasts charmed at a time.`,attack_bonus:0}]},{name:"Duergar",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"dwarf",alignment:"lawful evil",ac:16,hp:26,hit_dice:"4d8 + 8",speed:"25 ft.",stats:[14,11,14,11,10,9],damage_vulnerabilities:"",damage_resistances:"poison",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 10",languages:"Dwarvish, Undercommon",cr:"1",bestiary:!0,traits:[{name:"Duergar Resilience",desc:"The duergar has advantage on saving throws against poison, spells, and illusions, as well as to resist being charmed or paralyzed.",attack_bonus:0},{name:"Sunlight Sensitivity",desc:"While in sunlight, the duergar has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Enlarge (Recharges after a Short or Long Rest)",desc:"For 1 minute, the duergar magically increases in size, along with anything it is wearing or carrying. While enlarged, the duergar is Large, doubles its damage dice on Strength-based weapon attacks (included in the attacks), and makes Strength checks and Strength saving throws with advantage. If the duergar lacks the room to become Large, it attains the maximum size possible in the space available.",attack_bonus:0},{name:"War Pick",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) piercing damage, or 11 (2d8 + 2) piercing damage while enlarged.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Javelin",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 30/120 ft., one target. Hit: 5 (1d6 + 2) piercing damage, or 9 (2d6 + 2) piercing damage while enlarged.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Invisibility (Recharges after a Short or Long Rest)",desc:"The duergar magically turns invisible until it attacks, casts a spell, or uses its Enlarge, or until its concentration is broken, up to 1 hour (as if concentrating on a spell). Any equipment the duergar wears or carries is invisible with it .",attack_bonus:0}]},{name:"Dust Mephit",source:"5e SRD",size:"Small",type:"elemental",subtype:"",alignment:"neutral evil",ac:12,hp:17,hit_dice:"5d6 + -1",speed:"30 ft., fly 30 ft.",stats:[5,14,10,9,11,10],skillsaves:[{perception:2},{stealth:4}],damage_vulnerabilities:"fire",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 12",languages:"Auran, Terran",cr:"1/2",bestiary:!0,traits:[{name:"Death Burst",desc:"When the mephit dies, it explodes in a burst of dust. Each creature within 5 ft. of it must then succeed on a DC 10 Constitution saving throw or be blinded for 1 minute. A blinded creature can repeat the saving throw on each of its turns, ending the effect on itself on a success.",attack_bonus:0},{name:"Innate Spellcasting (1/Day)",desc:"The mephit can innately cast sleep, requiring no material components. Its innate spellcasting ability is Charisma.",attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 4 (1d4 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2},{name:"Blinding Breath (Recharge 6)",desc:"The mephit exhales a 15-foot cone of blinding dust. Each creature in that area must succeed on a DC 10 Dexterity saving throw or be blinded for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:0},{name:"Variant: Summon Mephits (1/Day)",desc:"The mephit has a 25 percent chance of summoning 1d4 mephits of its kind. A summoned mephit appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other mephits. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.",attack_bonus:0}]},{name:"Eagle",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:3,hit_dice:"1d6 + -1",speed:"10 ft., fly 60 ft.",stats:[6,15,10,2,14,7],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Sight",desc:"The eagle has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Talons",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Earth Elemental",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"neutral",ac:17,hp:126,hit_dice:"12d10 + 60",speed:"30 ft., burrow 30 ft.",stats:[20,8,20,5,10,5],damage_vulnerabilities:"thunder",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"exhaustion, paralyzed, petrified, poisoned, unconscious",senses:"darkvision 60 ft., tremorsense 60 ft., passive Perception 10",languages:"Terran",cr:"5",bestiary:!0,traits:[{name:"Earth Glide",desc:"The elemental can burrow through nonmagical, unworked earth and stone. While doing so, the elemental doesn't disturb the material it moves through.",attack_bonus:0},{name:"Siege Monster",desc:"The elemental deals double damage to objects and structures.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The elemental makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 14 (2d8 + 5) bludgeoning damage.",attack_bonus:8,damage_dice:"2d8",damage_bonus:5}]},{name:"Efreeti",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"lawful evil",ac:17,hp:200,hit_dice:"16d10 + 112",speed:"40 ft., fly 60 ft.",stats:[22,12,24,16,15,16],saves:[{intelligence:7},{wisdom:6},{charisma:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 12",languages:"Ignan",cr:"11",bestiary:!0,traits:[{name:"Elemental Demise",desc:"If the efreeti dies, its body disintegrates in a flash of fire and puff of smoke, leaving behind only equipment the djinni was wearing or carrying.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The efreeti's innate spell casting ability is Charisma (spell save DC 15, +7 to hit with spell attacks). It can innately cast the following spells, requiring no material components: + +At will: detect magic +3/day: enlarge/reduce, tongues +1/day each: conjure elemental (fire elemental only), gaseous form, invisibility, major image, plane shift, wall of fire`,attack_bonus:0},{name:"Variant: Genie Powers",desc:`Genies have a variety of magical capabilities, including spells. A few have even greater powers that allow them to alter their appearance or the nature of reality. + +Disguises. +Some genies can veil themselves in illusion to pass as other similarly shaped creatures. Such genies can innately cast the disguise self spell at will, often with a longer duration than is normal for that spell. Mightier genies can cast the true polymorph spell one to three times per day, possibly with a longer duration than normal. Such genies can change only their own shape, but a rare few can use the spell on other creatures and objects as well. +Wishes. +The genie power to grant wishes is legendary among mortals. Only the most potent genies, such as those among the nobility, can do so. A particular genie that has this power can grant one to three wishes to a creature that isn't a genie. Once a genie has granted its limit of wishes, it can't grant wishes again for some amount of time (usually 1 year). and cosmic law dictates that the same genie can expend its limit of wishes on a specific creature only once in that creature's existence. +To be granted a wish, a creature within 60 feet of the genie states a desired effect to it. The genie can then cast the wish spell on the creature's behalf to bring about the effect. Depending on the genie's nature, the genie might try to pervert the intent of the wish by exploiting the wish's poor wording. The perversion of the wording is usually crafted to be to the genie's benefit.`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The efreeti makes two scimitar attacks or uses its Hurl Flame twice.",attack_bonus:0},{name:"Scimitar",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage plus 7 (2d6) fire damage.",attack_bonus:10,damage_dice:"2d6 + 2d6",damage_bonus:6},{name:"Hurl Flame",desc:"Ranged Spell Attack: +7 to hit, range 120 ft., one target. Hit: 17 (5d6) fire damage.",attack_bonus:7,damage_dice:"5d6"}]},{name:"Elephant",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:76,hit_dice:"8d12 + 24",speed:"40 ft.",stats:[22,9,17,3,11,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"4",bestiary:!0,traits:[{name:"Trampling Charge",desc:"If the elephant moves at least 20 ft. straight toward a creature and then hits it with a gore attack on the same turn, that target must succeed on a DC 12 Strength saving throw or be knocked prone. If the target is prone, the elephant can make one stomp attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Gore",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 19 (3d8 + 6) piercing damage.",attack_bonus:8,damage_dice:"3d8",damage_bonus:6},{name:"Stomp",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one prone creature. Hit: 22 (3d10 + 6) bludgeoning damage.",attack_bonus:8,damage_dice:"3d10",damage_bonus:6}]},{name:"Elk",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:13,hit_dice:"2d10 + 2",speed:"50 ft.",stats:[16,10,12,2,10,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Charge",desc:"If the elk moves at least 20 ft. straight toward a target and then hits it with a ram attack on the same turn, the target takes an extra 7 (2d6) damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d6"}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) bludgeoning damage.",attack_bonus:0},{name:"Hooves",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one prone creature. Hit: 8 (2d4 + 3) bludgeoning damage.",attack_bonus:0}]},{name:"Erinyes",source:"5e SRD",size:"Medium",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:18,hp:153,hit_dice:"18d8 + 72",speed:"30 ft., fly 60 ft.",stats:[18,16,18,14,14,18],saves:[{dexterity:7},{constitution:8},{wisdom:6},{charisma:8}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 12",languages:"Infernal, telepathy 120 ft.",cr:"12",bestiary:!0,traits:[{name:"Hellish Weapons",desc:"The erinyes's weapon attacks are magical and deal an extra 13 (3d8) poison damage on a hit (included in the attacks).",attack_bonus:0},{name:"Magic Resistance",desc:"The erinyes has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The erinyes makes three attacks",attack_bonus:0},{name:"Longsword",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 8 (1d8 + 4) slashing damage, or 9 (1d10 + 4) slashing damage if used with two hands, plus 13 (3d8) poison damage.",attack_bonus:8,damage_dice:"1d8 + 3d8",damage_bonus:4},{name:"Longbow",desc:"Ranged Weapon Attack: +7 to hit, range 150/600 ft., one target. Hit: 7 (1d8 + 3) piercing damage plus 13 (3d8) poison damage, and the target must succeed on a DC 14 Constitution saving throw or be poisoned. The poison lasts until it is removed by the lesser restoration spell or similar magic.",attack_bonus:7,damage_dice:"1d8 + 3d8",damage_bonus:3},{name:"Variant: Rope of Entanglement",desc:"Some erinyes carry a rope of entanglement (detailed in the Dungeon Master's Guide). When such an erinyes uses its Multiattack, the erinyes can use the rope in place of two of the attacks.",attack_bonus:0}],reactions:[{name:"Parry",desc:"The erinyes adds 4 to its AC against one melee attack that would hit it. To do so, the erinyes must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Ettercap",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:13,hp:44,hit_dice:"8d8 + 8",speed:"30 ft., climb 30 ft.",stats:[14,15,13,7,12,8],skillsaves:[{perception:3},{stealth:4},{survival:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Spider Climb",desc:"The ettercap can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Sense",desc:"While in contact with a web, the ettercap knows the exact location of any other creature in contact with the same web.",attack_bonus:0},{name:"Web Walker",desc:"The ettercap ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The ettercap makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 6 (1d8 + 2) piercing damage plus 4 (1d8) poison damage. The target must succeed on a DC 11 Constitution saving throw or be poisoned for 1 minute. The creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Claws",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) slashing damage.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2},{name:"Web (Recharge 5-6)",desc:"Ranged Weapon Attack: +4 to hit, range 30/60 ft., one Large or smaller creature. Hit: The creature is restrained by webbing. As an action, the restrained creature can make a DC 11 Strength check, escaping from the webbing on a success. The effect ends if the webbing is destroyed. The webbing has AC 10, 5 hit points, is vulnerable to fire damage and immune to bludgeoning damage.",attack_bonus:0},{name:"Variant: Web Garrote",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one Medium or Small creature against which the ettercap has advantage on the attack roll. Hit: 4 (1d4 + 2) bludgeoning damage, and the target is grappled (escape DC 12). Until this grapple ends, the target can't breathe, and the ettercap has advantage on attack rolls against it.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Ettin",source:"5e SRD",size:"Large",type:"giant",subtype:"",alignment:"chaotic evil",ac:12,hp:85,hit_dice:"10d10 + 30",speed:"40 ft.",stats:[21,8,17,6,10,8],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Giant, Orc",cr:"4",bestiary:!0,traits:[{name:"Two Heads",desc:"The ettin has advantage on Wisdom (Perception) checks and on saving throws against being blinded, charmed, deafened, frightened, stunned, and knocked unconscious.",attack_bonus:0},{name:"Wakeful",desc:"When one of the ettin's heads is asleep, its other head is awake.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The ettin makes two attacks: one with its battleaxe and one with its morningstar.",attack_bonus:0},{name:"Battleaxe",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 14 (2d8 + 5) slashing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:5},{name:"Morningstar",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 14 (2d8 + 5) piercing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:5}]},{name:"Fire Elemental",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"neutral",ac:13,hp:102,hit_dice:"12d10 + 36",speed:"50 ft.",stats:[10,17,16,6,10,7],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"fire, poison",condition_immunities:"exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained, unconscious",senses:"darkvision 60 ft., passive Perception 10",languages:"Ignan",cr:"5",bestiary:!0,traits:[{name:"Fire Form",desc:"The elemental can move through a space as narrow as 1 inch wide without squeezing. A creature that touches the elemental or hits it with a melee attack while within 5 ft. of it takes 5 (1d10) fire damage. In addition, the elemental can enter a hostile creature's space and stop there. The first time it enters a creature's space on a turn, that creature takes 5 (1d10) fire damage and catches fire; until someone takes an action to douse the fire, the creature takes 5 (1d10) fire damage at the start of each of its turns.",attack_bonus:0,damage_dice:"5d10"},{name:"Illumination",desc:"The elemental sheds bright light in a 30-foot radius and dim light in an additional 30 ft..",attack_bonus:0},{name:"Water Susceptibility",desc:"For every 5 ft. the elemental moves in water, or for every gallon of water splashed on it, it takes 1 cold damage.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The elemental makes two touch attacks.",attack_bonus:0},{name:"Touch",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) fire damage. If the target is a creature or a flammable object, it ignites. Until a creature takes an action to douse the fire, the target takes 5 (1d10) fire damage at the start of each of its turns.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3}]},{name:"Fire Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"lawful evil",ac:18,hp:162,hit_dice:"13d12 + 77",speed:"30 ft.",stats:[25,9,23,10,14,13],saves:[{dexterity:3},{constitution:10},{charisma:5}],skillsaves:[{athletics:11},{perception:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"passive Perception 16",languages:"Giant",cr:"9",bestiary:!0,actions:[{name:"Multiattack",desc:"The giant makes two greatsword attacks.",attack_bonus:0},{name:"Greatsword",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 28 (6d6 + 7) slashing damage.",attack_bonus:11,damage_dice:"6d6",damage_bonus:7},{name:"Rock",desc:"Ranged Weapon Attack: +11 to hit, range 60/240 ft., one target. Hit: 29 (4d10 + 7) bludgeoning damage.",attack_bonus:11,damage_dice:"4d10",damage_bonus:7}]},{name:"Flesh Golem",source:"5e SRD",size:"Medium",type:"construct",subtype:"",alignment:"neutral",ac:9,hp:93,hit_dice:"11d8 + 43",speed:"30 ft.",stats:[19,9,18,6,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning, poison; bludgeoning, piercing, and slashing from nonmagical weapons that aren't adamantine",condition_immunities:"charmed, exhaustion, frightened, paralyzed, petrified, poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"understands the languages of its creator but can't speak",cr:"5",bestiary:!0,traits:[{name:"Berserk",desc:`Whenever the golem starts its turn with 40 hit points or fewer, roll a d6. On a 6, the golem goes berserk. On each of its turns while berserk, the golem attacks the nearest creature it can see. If no creature is near enough to move to and attack, the golem attacks an object, with preference for an object smaller than itself. Once the golem goes berserk, it continues to do so until it is destroyed or regains all its hit points. +The golem's creator, if within 60 feet of the berserk golem, can try to calm it by speaking firmly and persuasively. The golem must be able to hear its creator, who must take an action to make a DC 15 Charisma (Persuasion) check. If the check succeeds, the golem ceases being berserk. If it takes damage while still at 40 hit points or fewer, the golem might go berserk again.`,attack_bonus:0},{name:"Aversion of Fire",desc:"If the golem takes fire damage, it has disadvantage on attack rolls and ability checks until the end of its next turn.",attack_bonus:0},{name:"Immutable Form",desc:"The golem is immune to any spell or effect that would alter its form.",attack_bonus:0},{name:"Lightning Absorption",desc:"Whenever the golem is subjected to lightning damage, it takes no damage and instead regains a number of hit points equal to the lightning damage dealt.",attack_bonus:0},{name:"Magic Resistance",desc:"The golem has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The golem's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The golem makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4}]},{name:"Flying Snake",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:5,hit_dice:"2d4",speed:"30 ft., fly 60 ft., swim 30 ft.",stats:[4,18,11,2,12,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 11",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Flyby",desc:"The snake doesn't provoke opportunity attacks when it flies out of an enemy's reach.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 1 piercing damage plus 7 (3d4) poison damage.",attack_bonus:6,damage_bonus:1}]},{name:"Flying Sword",source:"5e SRD",size:"Small",type:"construct",subtype:"",alignment:"unaligned",ac:17,hp:17,hit_dice:"5d6 + -1",speed:"0 ft., fly 50 ft. It can hover.",stats:[12,15,11,1,5,1],saves:[{dexterity:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison, psychic",condition_immunities:"blinded, charmed, deafened, frightened, paralyzed, petrified, poisoned",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 7",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Antimagic Susceptibility",desc:"The sword is incapacitated while in the area of an antimagic field. If targeted by dispel magic, the sword must succeed on a Constitution saving throw against the caster's spell save DC or fall unconscious for 1 minute.",attack_bonus:0},{name:"False Appearance",desc:"While the sword remains motionless and isn't flying, it is indistinguishable from a normal sword.",attack_bonus:0}],actions:[{name:"Longsword",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 5 (1d8 + 1) slashing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1}]},{name:"Frog",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:1,hit_dice:"1d4 + -2",speed:"20 ft., swim 20 ft.",stats:[1,13,8,1,8,3],skillsaves:[{perception:1},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 11",languages:"",cr:"0",bestiary:!0,traits:[{name:"Amphibious",desc:"The frog can breathe air and water",attack_bonus:0},{name:"Standing Leap",desc:"The frog's long jump is up to 10 ft. and its high jump is up to 5 ft., with or without a running start.",attack_bonus:0}]},{name:"Frost Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"neutral evil",ac:15,hp:138,hit_dice:"12d12 + 60",speed:"40 ft.",stats:[23,9,21,9,10,12],saves:[{constitution:8},{wisdom:3},{charisma:4}],skillsaves:[{athletics:9},{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"passive Perception 13",languages:"Giant",cr:"8",bestiary:!0,actions:[{name:"Multiattack",desc:"The giant makes two greataxe attacks.",attack_bonus:0},{name:"Greataxe",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 25 (3d12 + 6) slashing damage.",attack_bonus:9,damage_dice:"3d12",damage_bonus:6},{name:"Rock",desc:"Ranged Weapon Attack: +9 to hit, range 60/240 ft., one target. Hit: 28 (4d10 + 6) bludgeoning damage.",attack_bonus:9,damage_dice:"4d10",damage_bonus:6}]},{name:"Gargoyle",source:"5e SRD",size:"Medium",type:"elemental",subtype:"",alignment:"chaotic evil",ac:15,hp:52,hit_dice:"7d8 + 20",speed:"30 ft., fly 60 ft.",stats:[15,11,16,6,11,7],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons that aren't adamantine",damage_immunities:"poison",condition_immunities:"exhaustion, petrified, poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"Terran",cr:"2",bestiary:!0,traits:[{name:"False Appearance",desc:"While the gargoyle remains motion less, it is indistinguishable from an inanimate statue.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The gargoyle makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Claws",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Gelatinous Cube",source:"5e SRD",size:"Large",type:"ooze",subtype:"",alignment:"unaligned",ac:6,hp:84,hit_dice:"8d10 + 40",speed:"15 ft.",stats:[14,3,20,1,6,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"blinded, charmed, deafened, exhaustion, frightened, prone",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 8",languages:"",cr:"2",bestiary:!0,traits:[{name:"Ooze Cube",desc:`The cube takes up its entire space. Other creatures can enter the space, but a creature that does so is subjected to the cube's Engulf and has disadvantage on the saving throw. +Creatures inside the cube can be seen but have total cover. +A creature within 5 feet of the cube can take an action to pull a creature or object out of the cube. Doing so requires a successful DC 12 Strength check, and the creature making the attempt takes 10 (3d6) acid damage. +The cube can hold only one Large creature or up to four Medium or smaller creatures inside it at a time.`,attack_bonus:0},{name:"Transparent",desc:"Even when the cube is in plain sight, it takes a successful DC 15 Wisdom (Perception) check to spot a cube that has neither moved nor attacked. A creature that tries to enter the cube's space while unaware of the cube is surprised by the cube.",attack_bonus:0}],actions:[{name:"Pseudopod",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 10 (3d6) acid damage.",attack_bonus:4,damage_dice:"3d6"},{name:"Engulf",desc:`The cube moves up to its speed. While doing so, it can enter Large or smaller creatures' spaces. Whenever the cube enters a creature's space, the creature must make a DC 12 Dexterity saving throw. +On a successful save, the creature can choose to be pushed 5 feet back or to the side of the cube. A creature that chooses not to be pushed suffers the consequences of a failed saving throw. +On a failed save, the cube enters the creature's space, and the creature takes 10 (3d6) acid damage and is engulfed. The engulfed creature can't breathe, is restrained, and takes 21 (6d6) acid damage at the start of each of the cube's turns. When the cube moves, the engulfed creature moves with it. +An engulfed creature can try to escape by taking an action to make a DC 12 Strength check. On a success, the creature escapes and enters a space of its choice within 5 feet of the cube.`,attack_bonus:0}]},{name:"Ghast",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"chaotic evil",ac:13,hp:36,hit_dice:"8d8",speed:"30 ft.",stats:[16,17,10,11,10,8],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"necrotic",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"Common",cr:"2",bestiary:!0,traits:[{name:"Stench",desc:"Any creature that starts its turn within 5 ft. of the ghast must succeed on a DC 10 Constitution saving throw or be poisoned until the start of its next turn. On a successful saving throw, the creature is immune to the ghast's Stench for 24 hours.",attack_bonus:0},{name:"Turn Defiance",desc:"The ghast and any ghouls within 30 ft. of it have advantage on saving throws against effects that turn undead.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one creature. Hit: 12 (2d8 + 3) piercing damage.",attack_bonus:3,damage_dice:"2d8",damage_bonus:3},{name:"Claws",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage. If the target is a creature other than an undead, it must succeed on a DC 10 Constitution saving throw or be paralyzed for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Ghost",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"any alignment",ac:11,hp:45,hit_dice:"10d8",speed:"0 ft., fly 40 ft. It can hover.",stats:[7,13,10,10,12,17],damage_vulnerabilities:"",damage_resistances:"acid, fire, lightning, thunder; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"cold, necrotic, poison",condition_immunities:"charmed, exhaustion, frightened, grappled, paralyzed, petrified, poisoned, prone, restrained",senses:"darkvision 60 ft., passive Perception 11",languages:"any languages it knew in life",cr:"4",bestiary:!0,traits:[{name:"Ethereal Sight",desc:"The ghost can see 60 ft. into the Ethereal Plane when it is on the Material Plane, and vice versa.",attack_bonus:0},{name:"Incorporeal Movement",desc:"The ghost can move through other creatures and objects as if they were difficult terrain. It takes 5 (1d10) force damage if it ends its turn inside an object.",attack_bonus:0}],actions:[{name:"Withering Touch",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 17 (4d6 + 3) necrotic damage.",attack_bonus:5,damage_dice:"4d6",damage_bonus:3},{name:"Etherealness",desc:"The ghost enters the Ethereal Plane from the Material Plane, or vice versa. It is visible on the Material Plane while it is in the Border Ethereal, and vice versa, yet it can't affect or be affected by anything on the other plane.",attack_bonus:0},{name:"Horrifying Visage",desc:"Each non-undead creature within 60 ft. of the ghost that can see it must succeed on a DC 13 Wisdom saving throw or be frightened for 1 minute. If the save fails by 5 or more, the target also ages 1d4 _ 10 years. A frightened target can repeat the saving throw at the end of each of its turns, ending the frightened condition on itself on a success. If a target's saving throw is successful or the effect ends for it, the target is immune to this ghost's Horrifying Visage for the next 24 hours. The aging effect can be reversed with a greater restoration spell, but only within 24 hours of it occurring.",attack_bonus:0},{name:"Possession (Recharge 6)",desc:`One humanoid that the ghost can see within 5 ft. of it must succeed on a DC 13 Charisma saving throw or be possessed by the ghost; the ghost then disappears, and the target is incapacitated and loses control of its body. The ghost now controls the body but doesn't deprive the target of awareness. The ghost can't be targeted by any attack, spell, or other effect, except ones that turn undead, and it retains its alignment, Intelligence, Wisdom, Charisma, and immunity to being charmed and frightened. It otherwise uses the possessed target's statistics, but doesn't gain access to the target's knowledge, class features, or proficiencies. +The possession lasts until the body drops to 0 hit points, the ghost ends it as a bonus action, or the ghost is turned or forced out by an effect like the dispel evil and good spell. When the possession ends, the ghost reappears in an unoccupied space within 5 ft. of the body. The target is immune to this ghost's Possession for 24 hours after succeeding on the saving throw or after the possession ends.`,attack_bonus:0}]},{name:"Ghoul",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"chaotic evil",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"30 ft.",stats:[13,15,10,7,10,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"Common",cr:"1",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one creature. Hit: 9 (2d6 + 2) piercing damage.",attack_bonus:2,damage_dice:"2d6",damage_bonus:2},{name:"Claws",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) slashing damage. If the target is a creature other than an elf or undead, it must succeed on a DC 10 Constitution saving throw or be paralyzed for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:0}]},{name:"Giant Ape",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:157,hit_dice:"15d12 + 59",speed:"40 ft., climb 40 ft.",stats:[23,14,18,7,12,7],skillsaves:[{athletics:9},{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"7",bestiary:!0,actions:[{name:"Multiattack",desc:"The ape makes two fist attacks.",attack_bonus:0},{name:"Fist",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 22 (3d10 + 6) bludgeoning damage.",attack_bonus:9,damage_dice:"3d10",damage_bonus:6},{name:"Rock",desc:"Ranged Weapon Attack: +9 to hit, range 50/100 ft., one target. Hit: 30 (7d6 + 6) bludgeoning damage.",attack_bonus:9,damage_dice:"7d6",damage_bonus:6}]},{name:"Giant Badger",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:13,hit_dice:"2d8 + 4",speed:"30 ft., burrow 10 ft.",stats:[13,10,15,2,12,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 11",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Keen Smell",desc:"The badger has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The badger makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1},{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 6 (2d4 + 1) slashing damage.",attack_bonus:3,damage_dice:"2d4",damage_bonus:1}]},{name:"Giant Bat",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:22,hit_dice:"4d10",speed:"10 ft., fly 60 ft.",stats:[15,16,11,2,12,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 60 ft., passive Perception 11",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Echolocation",desc:"The bat can't use its blindsight while deafened.",attack_bonus:0},{name:"Keen Hearing",desc:"The bat has advantage on Wisdom (Perception) checks that rely on hearing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Giant Boar",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:42,hit_dice:"5d10 + 14",speed:"40 ft.",stats:[17,10,16,2,7,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 8",languages:"",cr:"2",bestiary:!0,traits:[{name:"Charge",desc:"If the boar moves at least 20 ft. straight toward a target and then hits it with a tusk attack on the same turn, the target takes an extra 7 (2d6) slashing damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d6"},{name:"Relentless (Recharges after a Short or Long Rest)",desc:"If the boar takes 10 damage or less that would reduce it to 0 hit points, it is reduced to 1 hit point instead.",attack_bonus:0}],actions:[{name:"Tusk",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Giant Centipede",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:4,hit_dice:"1d6",speed:"30 ft., climb 30 ft.",stats:[5,14,12,1,7,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., passive Perception 8",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Bite",desc:"Bite. Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 4 (1d4 + 2) piercing damage, and the target must succeed on a DC 11 Constitution saving throw or take 10 (3d6) poison damage. If the poison damage reduces the target to 0 hit points, the target is stable but poisoned for 1 hour, even after regaining hit points, and is paralyzed while poisoned in this way.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Giant Constrictor Snake",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:60,hit_dice:"8d12 + 8",speed:"30 ft., swim 30 ft.",stats:[19,14,12,1,10,3],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 12",languages:"",cr:"2",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one creature. Hit: 11 (2d6 + 4) piercing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4},{name:"Constrict",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 13 (2d8 + 4) bludgeoning damage, and the target is grappled (escape DC 16). Until this grapple ends, the creature is restrained, and the snake can't constrict another target.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4}]},{name:"Giant Crab",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:15,hp:13,hit_dice:"3d8 + -1",speed:"30 ft., swim 30 ft.",stats:[13,15,11,1,9,3],skillsaves:[{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., passive Perception 9",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Amphibious",desc:"The crab can breathe air and water.",attack_bonus:0}],actions:[{name:"Claw",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) bludgeoning damage, and the target is grappled (escape DC 11). The crab has two claws, each of which can grapple only one target.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Giant Crocodile",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:85,hit_dice:"9d12 + 26",speed:"30 ft., swim 50 ft.",stats:[21,9,17,2,10,7],skillsaves:[{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"5",bestiary:!0,traits:[{name:"Hold Breath",desc:"The crocodile can hold its breath for 30 minutes.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The crocodile makes two attacks: one with its bite and one with its tail.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 21 (3d10 + 5) piercing damage, and the target is grappled (escape DC 16). Until this grapple ends, the target is restrained, and the crocodile can't bite another target.",attack_bonus:8,damage_dice:"3d10",damage_bonus:5},{name:"Tail",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target not grappled by the crocodile. Hit: 14 (2d8 + 5) bludgeoning damage. If the target is a creature, it must succeed on a DC 16 Strength saving throw or be knocked prone.",attack_bonus:8,damage_dice:"2d8",damage_bonus:5}]},{name:"Giant Eagle",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"neutral good",ac:13,hp:26,hit_dice:"4d10 + 4",speed:"10 ft., fly 80 ft.",stats:[16,17,13,8,14,10],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"Giant Eagle, understands Common and Auran but can't speak",cr:"1",bestiary:!0,traits:[{name:"Keen Sight",desc:"The eagle has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The eagle makes two attacks: one with its beak and one with its talons.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Talons",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Giant Elk",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:15,hp:42,hit_dice:"5d12 + 9",speed:"60 ft.",stats:[19,16,14,7,14,10],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"Giant Elk, understands Common, Elvish, and Sylvan but can't speak",cr:"2",bestiary:!0,traits:[{name:"Charge",desc:"If the elk moves at least 20 ft. straight toward a target and then hits it with a ram attack on the same turn, the target takes an extra 7 (2d6) damage. If the target is a creature, it must succeed on a DC 14 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d6"}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4},{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one prone creature. Hit: 22 (4d8 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"4d8",damage_bonus:4}]},{name:"Giant Fire Beetle",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:4,hit_dice:"1d6",speed:"30 ft.",stats:[8,10,12,1,7,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., passive Perception 8",languages:"",cr:"0",bestiary:!0,traits:[{name:"Illumination",desc:"The beetle sheds bright light in a 10-foot radius and dim light for an additional 10 ft..",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +1 to hit, reach 5 ft., one target. Hit: 2 (1d6 \u2014 1) slashing damage.",attack_bonus:1,damage_dice:"1d6",damage_bonus:-1}]},{name:"Giant Frog",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:18,hit_dice:"4d8",speed:"30 ft., swim 30 ft.",stats:[12,13,11,2,10,3],skillsaves:[{perception:2},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 12",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Amphibious",desc:"The frog can breathe air and water",attack_bonus:0},{name:"Standing Leap",desc:"The frog's long jump is up to 20 ft. and its high jump is up to 10 ft., with or without a running start.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) piercing damage, and the target is grappled (escape DC 11). Until this grapple ends, the target is restrained, and the frog can't bite another target.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1},{name:"Swallow",desc:"The frog makes one bite attack against a Small or smaller target it is grappling. If the attack hits, the target is swallowed, and the grapple ends. The swallowed target is blinded and restrained, it has total cover against attacks and other effects outside the frog, and it takes 5 (2d4) acid damage at the start of each of the frog's turns. The frog can have only one target swallowed at a time. If the frog dies, a swallowed creature is no longer restrained by it and can escape from the corpse using 5 ft. of movement, exiting prone.",attack_bonus:0}]},{name:"Giant Goat",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:19,hit_dice:"3d10 + 2",speed:"40 ft.",stats:[17,11,12,3,12,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Charge",desc:"If the goat moves at least 20 ft. straight toward a target and then hits it with a ram attack on the same turn, the target takes an extra 5 (2d4) bludgeoning damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d4"},{name:"Sure-Footed",desc:"The goat has advantage on Strength and Dexterity saving throws made against effects that would knock it prone.",attack_bonus:0}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (2d4 + 3) bludgeoning damage.",attack_bonus:5,damage_dice:"2d4",damage_bonus:3}]},{name:"Giant Hyena",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:45,hit_dice:"6d10 + 12",speed:"50 ft.",stats:[16,14,14,2,12,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1",bestiary:!0,traits:[{name:"Rampage",desc:"When the hyena reduces a creature to 0 hit points with a melee attack on its turn, the hyena can take a bonus action to move up to half its speed and make a bite attack.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3}]},{name:"Giant Lizard",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:19,hit_dice:"3d10 + 2",speed:"30 ft., climb 30 ft.",stats:[15,12,13,2,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 10",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Variant: Hold Breath",desc:"The lizard can hold its breath for 15 minutes. (A lizard that has this trait also has a swimming speed of 30 feet.)",attack_bonus:0},{name:"Variant: Spider Climb",desc:"The lizard can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Giant Octopus",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:52,hit_dice:"8d10 + 8",speed:"10 ft., swim 60 ft.",stats:[17,13,13,4,10,4],skillsaves:[{perception:4},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"",cr:"1",bestiary:!0,traits:[{name:"Hold Breath",desc:"While out of water, the octopus can hold its breath for 1 hour.",attack_bonus:0},{name:"Underwater Camouflage",desc:"The octopus has advantage on Dexterity (Stealth) checks made while underwater.",attack_bonus:0},{name:"Water Breathing",desc:"The octopus can breathe only underwater.",attack_bonus:0}],actions:[{name:"Tentacles",desc:"Melee Weapon Attack: +5 to hit, reach 15 ft., one target. Hit: 10 (2d6 + 3) bludgeoning damage. If the target is a creature, it is grappled (escape DC 16). Until this grapple ends, the target is restrained, and the octopus can't use its tentacles on another target.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3},{name:"Ink Cloud (Recharges after a Short or Long Rest)",desc:"A 20-foot-radius cloud of ink extends all around the octopus if it is underwater. The area is heavily obscured for 1 minute, although a significant current can disperse the ink. After releasing the ink, the octopus can use the Dash action as a bonus action.",attack_bonus:0}]},{name:"Giant Owl",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"neutral",ac:12,hp:19,hit_dice:"3d10 + 2",speed:"5 ft., fly 60 ft.",stats:[13,15,12,8,13,10],skillsaves:[{perception:5},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 15",languages:"Giant Owl, understands Common, Elvish, and Sylvan but can't speak",cr:"1/4",bestiary:!0,traits:[{name:"Flyby",desc:"The owl doesn't provoke opportunity attacks when it flies out of an enemy's reach.",attack_bonus:0},{name:"Keen Hearing and Sight",desc:"The owl has advantage on Wisdom (Perception) checks that rely on hearing or sight.",attack_bonus:0}],actions:[{name:"Talons",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 8 (2d6 + 1) slashing damage.",attack_bonus:3,damage_dice:"2d6",damage_bonus:1}]},{name:"Giant Poisonous Snake",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:11,hit_dice:"2d8 + 2",speed:"30 ft., swim 30 ft.",stats:[10,18,13,2,10,3],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 12",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 6 (1d4 + 4) piercing damage, and the target must make a DC 11 Constitution saving throw, taking 10 (3d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:6,damage_dice:"1d4",damage_bonus:4}]},{name:"Giant Rat",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:7,hit_dice:"2d6",speed:"30 ft.",stats:[7,15,11,2,10,4],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Keen Smell",desc:"The rat has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The rat has advantage on an attack roll against a creature if at least one of the rat's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Giant Rat (Diseased)",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:7,hit_dice:"2d6",speed:"30 ft.",stats:[7,15,11,2,10,4],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"",cr:"1/8",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 3 (1d4 + 2) piercing damage. If the target is a creature, it must succeed on a DC 10 Constitution saving throw or contract a disease. Until the disease is cured, the target can't regain hit points except by magical means, and the target's hit point maximum decreases by 3 (1d6) every 24 hours. If the target's hit point maximum drops to 0 as a result of this disease, the target dies.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Giant Scorpion",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:15,hp:52,hit_dice:"7d10 + 13",speed:"40 ft.",stats:[15,13,15,1,9,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 60 ft., passive Perception 9",languages:"",cr:"3",bestiary:!0,actions:[{name:"Claw",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) bludgeoning damage, and the target is grappled (escape DC 12). The scorpion has two claws, each of which can grapple only one target.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Multiattack",desc:"The scorpion makes three attacks: two with its claws and one with its sting.",attack_bonus:0},{name:"Sting",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 7 (1d10 + 2) piercing damage, and the target must make a DC 12 Constitution saving throw, taking 22 (4d10) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2}]},{name:"Giant Sea Horse",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:16,hit_dice:"3d10 + -1",speed:"0 ft., swim 40 ft.",stats:[12,15,11,2,12,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Charge",desc:"If the sea horse moves at least 20 ft. straight toward a target and then hits it with a ram attack on the same turn, the target takes an extra 7 (2d6) bludgeoning damage. If the target is a creature, it must succeed on a DC 11 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d6"},{name:"Water Breathing",desc:"The sea horse can breathe only underwater.",attack_bonus:0}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) bludgeoning damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Giant Shark",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:126,hit_dice:"11d12 + 54",speed:"swim 50 ft.",stats:[23,11,21,1,10,5],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 60 ft., passive Perception 13",languages:"",cr:"5",bestiary:!0,traits:[{name:"Blood Frenzy",desc:"The shark has advantage on melee attack rolls against any creature that doesn't have all its hit points.",attack_bonus:0},{name:"Water Breathing",desc:"The shark can breathe only underwater.",attack_bonus:0}],actions:[{name:"Bite",desc:"Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 22 (3d10 + 6) piercing damage.",attack_bonus:9,damage_dice:"3d10",damage_bonus:6}]},{name:"Giant Spider",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:26,hit_dice:"4d10 + 4",speed:"30 ft., climb 30 ft.",stats:[14,16,12,2,11,4],skillsaves:[{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 10",languages:"",cr:"1",bestiary:!0,traits:[{name:"Spider Climb",desc:"The spider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Sense",desc:"While in contact with a web, the spider knows the exact location of any other creature in contact with the same web.",attack_bonus:0},{name:"Web Walker",desc:"The spider ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 7 (1d8 + 3) piercing damage, and the target must make a DC 11 Constitution saving throw, taking 9 (2d8) poison damage on a failed save, or half as much damage on a successful one. If the poison damage reduces the target to 0 hit points, the target is stable but poisoned for 1 hour, even after regaining hit points, and is paralyzed while poisoned in this way.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Web (Recharge 5-6)",desc:"Ranged Weapon Attack: +5 to hit, range 30/60 ft., one creature. Hit: The target is restrained by webbing. As an action, the restrained target can make a DC 12 Strength check, bursting the webbing on a success. The webbing can also be attacked and destroyed (AC 10; hp 5; vulnerability to fire damage; immunity to bludgeoning, poison, and psychic damage).",attack_bonus:5}]},{name:"Giant Toad",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:39,hit_dice:"6d10 + 6",speed:"20 ft., swim 40 ft.",stats:[15,13,13,2,10,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 10",languages:"",cr:"1",bestiary:!0,traits:[{name:"Amphibious",desc:"The toad can breathe air and water",attack_bonus:0},{name:"Standing Leap",desc:"The toad's long jump is up to 20 ft. and its high jump is up to 10 ft., with or without a running start.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage plus 5 (1d10) poison damage, and the target is grappled (escape DC 13). Until this grapple ends, the target is restrained, and the toad can't bite another target.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2},{name:"Swallow",desc:`The toad makes one bite attack against a Medium or smaller target it is grappling. If the attack hits, the target is swallowed, and the grapple ends. The swallowed target is blinded and restrained, it has total cover against attacks and other effects outside the toad, and it takes 10 (3d6) acid damage at the start of each of the toad's turns. The toad can have only one target swallowed at a time. +If the toad dies, a swallowed creature is no longer restrained by it and can escape from the corpse using 5 feet of movement, exiting prone.`,attack_bonus:0}]},{name:"Giant Vulture",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"neutral evil",ac:10,hp:22,hit_dice:"3d10 + 5",speed:"10 ft., fly 60 ft.",stats:[15,10,15,6,12,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"understands Common but can't speak",cr:"1",bestiary:!0,traits:[{name:"Keen Sight and Smell",desc:"The vulture has advantage on Wisdom (Perception) checks that rely on sight or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The vulture has advantage on an attack roll against a creature if at least one of the vulture's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The vulture makes two attacks: one with its beak and one with its talons.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2},{name:"Talons",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 9 (2d6 + 2) slashing damage.",attack_bonus:4,damage_dice:"2d6",damage_bonus:2}]},{name:"Giant Wasp",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:13,hit_dice:"3d8 + -1",speed:"10 ft., fly 50 ft., swim 50 ft.",stats:[10,14,10,1,10,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/2",bestiary:!0,actions:[{name:"Sting",desc:"Sting. Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 5 (1d6 + 2) piercing damage, and the target must make a DC 11 Constitution saving throw, taking 10 (3d6) poison damage on a failed save, or half as much damage on a successful one. If the poison damage reduces the target to 0 hit points, the target is stable but poisoned for 1 hour, even after regaining hit points, and is paralyzed while poisoned in this way.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Giant Weasel",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:9,hit_dice:"2d8",speed:"40 ft.",stats:[11,16,10,4,12,5],skillsaves:[{perception:3},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The weasel has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 5 (1d4 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d4",damage_bonus:3}]},{name:"Giant Wolf Spider",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:11,hit_dice:"2d8 + 2",speed:"40 ft., climb 40 ft.",stats:[12,16,13,3,12,4],skillsaves:[{perception:3},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 13",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Spider Climb",desc:"The spider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Sense",desc:"While in contact with a web, the spider knows the exact location of any other creature in contact with the same web.",attack_bonus:0},{name:"Web Walker",desc:"The spider ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Weapon Attack: +3 to hit, reach 5 ft., one creature. Hit: 4 (1d6 + 1) piercing damage, and the target must make a DC 11 Constitution saving throw, taking 7 (2d6) poison damage on a failed save, or half as much damage on a successful one. If the poison damage reduces the target to 0 hit points, the target is stable but poisoned for 1 hour, even after regaining hit points, and is paralyzed while poisoned in this way.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Gibbering Mouther",source:"5e SRD",size:"Medium",type:"aberration",subtype:"",alignment:"neutral",ac:9,hp:67,hit_dice:"9d8 + 26",speed:"10 ft., swim 10 ft.",stats:[10,8,16,3,10,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"prone",senses:"darkvision 60 ft., passive Perception 10",languages:"",cr:"2",bestiary:!0,traits:[{name:"Aberrant Ground",desc:"The ground in a 10-foot radius around the mouther is doughlike difficult terrain. Each creature that starts its turn in that area must succeed on a DC 10 Strength saving throw or have its speed reduced to 0 until the start of its next turn.",attack_bonus:0},{name:"Gibbering",desc:"The mouther babbles incoherently while it can see any creature and isn't incapacitated. Each creature that starts its turn within 20 feet of the mouther and can hear the gibbering must succeed on a DC 10 Wisdom saving throw. On a failure, the creature can't take reactions until the start of its next turn and rolls a d8 to determine what it does during its turn. On a 1 to 4, the creature does nothing. On a 5 or 6, the creature takes no action or bonus action and uses all its movement to move in a randomly determined direction. On a 7 or 8, the creature makes a melee attack against a randomly determined creature within its reach or does nothing if it can't make such an attack.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The gibbering mouther makes one bite attack and, if it can, uses its Blinding Spittle.",attack_bonus:0},{name:"Bites",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one creature. Hit: 17 (5d6) piercing damage. If the target is Medium or smaller, it must succeed on a DC 10 Strength saving throw or be knocked prone. If the target is killed by this damage, it is absorbed into the mouther.",attack_bonus:2,damage_dice:"5d6"},{name:"Blinding Spittle (Recharge 5-6)",desc:"The mouther spits a chemical glob at a point it can see within 15 feet of it. The glob explodes in a blinding flash of light on impact. Each creature within 5 feet of the flash must succeed on a DC 13 Dexterity saving throw or be blinded until the end of the mouther's next turn.",attack_bonus:0}]},{name:"Glabrezu",source:"5e SRD",size:"Large",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:17,hp:157,hit_dice:"15d10 + 74",speed:"40 ft.",stats:[20,15,21,19,17,16],saves:[{strength:9},{constitution:9},{wisdom:7},{charisma:7}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 13",languages:"Abyssal, telepathy 120 ft.",cr:"9",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:`The glabrezu's spellcasting ability is Intelligence (spell save DC 16). The glabrezu can innately cast the following spells, requiring no material components: +At will: darkness, detect magic, dispel magic +1/day each: confusion, fly, power word stun`,attack_bonus:0},{name:"Magic Resistance",desc:"The glabrezu has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The glabrezu makes four attacks: two with its pincers and two with its fists. Alternatively, it makes two attacks with its pincers and casts one spell.",attack_bonus:0},{name:"Pincer",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 16 (2d10 + 5) bludgeoning damage. If the target is a Medium or smaller creature, it is grappled (escape DC 15). The glabrezu has two pincers, each of which can grapple only one target.",attack_bonus:9,damage_dice:"2d10",damage_bonus:5},{name:"Fist",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) bludgeoning damage.",attack_bonus:9,damage_dice:"2d4",damage_bonus:2},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A glabrezu has a 30 percent chance of summoning 1d3 vrocks, 1d2 hezrous, or one glabrezu. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}]},{name:"Gladiator",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:16,hp:112,hit_dice:"15d8 + 44",speed:"30 ft.",stats:[18,15,16,10,12,15],saves:[{strength:7},{dexterity:5},{constitution:6}],skillsaves:[{intimidation:5},{athletics:10}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"any one language (usually Common)",cr:"5",bestiary:!0,traits:[{name:"Brave",desc:"The gladiator has advantage on saving throws against being frightened.",attack_bonus:0},{name:"Brute",desc:"A melee weapon deals one extra die of its damage when the gladiator hits with it (included in the attack).",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The gladiator makes three melee attacks or two ranged attacks.",attack_bonus:0},{name:"Spear",desc:"Melee or Ranged Weapon Attack: +7 to hit, reach 5 ft. and range 20/60 ft., one target. Hit: 11 (2d6 + 4) piercing damage, or 13 (2d8 + 4) piercing damage if used with two hands to make a melee attack.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Shield Bash",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one creature. Hit: 9 (2d4 + 4) bludgeoning damage. If the target is a Medium or smaller creature, it must succeed on a DC 15 Strength saving throw or be knocked prone.",attack_bonus:7,damage_dice:"2d4",damage_bonus:4}],reactions:[{name:"Parry",desc:"The gladiator adds 3 to its AC against one melee attack that would hit it. To do so, the gladiator must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Gnoll",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"gnoll",alignment:"chaotic evil",ac:15,hp:22,hit_dice:"5d8 + -1",speed:"30 ft.",stats:[14,12,11,6,10,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Gnoll",cr:"1/2",bestiary:!0,traits:[{name:"Rampage",desc:"When the gnoll reduces a creature to 0 hit points with a melee attack on its turn, the gnoll can take a bonus action to move up to half its speed and make a bite attack.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2},{name:"Spear",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 5 (1d6 + 2) piercing damage, or 6 (1d8 + 2) piercing damage if used with two hands to make a melee attack.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Longbow",desc:"Ranged Weapon Attack: +3 to hit, range 150/600 ft., one target. Hit: 5 (1d8 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1}]},{name:"Goat",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:4,hit_dice:"1d8 + -1",speed:"40 ft.",stats:[12,10,11,2,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"0",bestiary:!0,traits:[{name:"Charge",desc:"If the goat moves at least 20 ft. straight toward a target and then hits it with a ram attack on the same turn, the target takes an extra 2 (1d4) bludgeoning damage. If the target is a creature, it must succeed on a DC 10 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"1d4"},{name:"Sure-Footed",desc:"The goat has advantage on Strength and Dexterity saving throws made against effects that would knock it prone.",attack_bonus:0}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 3 (1d4 + 1) bludgeoning damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1}]},{name:"Goblin",source:"5e SRD",size:"Small",type:"humanoid",subtype:"goblinoid",alignment:"neutral evil",ac:15,hp:7,hit_dice:"2d6",speed:"30 ft.",stats:[8,14,10,10,8,8],skillsaves:[{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 9",languages:"Common, Goblin",cr:"1/4",bestiary:!0,traits:[{name:"Nimble Escape",desc:"The goblin can take the Disengage or Hide action as a bonus action on each of its turns.",attack_bonus:0}],actions:[{name:"Scimitar",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Shortbow",desc:"Ranged Weapon Attack: +4 to hit, range 80/320 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Gold Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"lawful good",ac:17,hp:60,hit_dice:"8d8 + 24",speed:"30 ft., fly 60 ft., swim 30 ft.",stats:[19,14,17,14,11,16],saves:[{dexterity:4},{constitution:5},{wisdom:2},{charisma:5}],skillsaves:[{perception:4},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"3",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 9 (1d10 + 4) piercing damage.",attack_bonus:6,damage_dice:"1d10",damage_bonus:4},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in a 15-foot cone. Each creature in that area must make a DC 13 Dexterity saving throw, taking 22 (4d10) fire damage on a failed save, or half as much damage on a successful one. +Weakening Breath. The dragon exhales gas in a 15-foot cone. Each creature in that area must succeed on a DC 13 Strength saving throw or have disadvantage on Strength-based attack rolls, Strength checks, and Strength saving throws for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"4d10"}]},{name:"Gorgon",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:19,hp:114,hit_dice:"12d10 + 48",speed:"40 ft.",stats:[20,11,18,2,12,7],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"petrified",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"",cr:"5",bestiary:!0,traits:[{name:"Trampling Charge",desc:"If the gorgon moves at least 20 feet straight toward a creature and then hits it with a gore attack on the same turn, that target must succeed on a DC 16 Strength saving throw or be knocked prone. If the target is prone, the gorgon can make one attack with its hooves against it as a bonus action.",attack_bonus:0}],actions:[{name:"Gore",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 18 (2d12 + 5) piercing damage.",attack_bonus:8,damage_dice:"2d12",damage_bonus:5},{name:"Hooves",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 16 (2d10 + 5) bludgeoning damage.",attack_bonus:8,damage_dice:"2d10",damage_bonus:5},{name:"Petrifying Breath (Recharge 5-6)",desc:"The gorgon exhales petrifying gas in a 30-foot cone. Each creature in that area must succeed on a DC 13 Constitution saving throw. On a failed save, a target begins to turn to stone and is restrained. The restrained target must repeat the saving throw at the end of its next turn. On a success, the effect ends on the target. On a failure, the target is petrified until freed by the greater restoration spell or other magic.",attack_bonus:0}]},{name:"Gray Ooze",source:"5e SRD",size:"Medium",type:"ooze",subtype:"",alignment:"unaligned",ac:8,hp:22,hit_dice:"3d8 + 8",speed:"10 ft., climb 10 ft.",stats:[12,6,16,1,6,2],skillsaves:[{stealth:2}],damage_vulnerabilities:"",damage_resistances:"acid, cold, fire",damage_immunities:"",condition_immunities:"blinded, charmed, deafened, exhaustion, frightened, prone",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Amorphous",desc:"The ooze can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0},{name:"Corrode Metal",desc:`Any nonmagical weapon made of metal that hits the ooze corrodes. After dealing damage, the weapon takes a permanent and cumulative -1 penalty to damage rolls. If its penalty drops to -5, the weapon is destroyed. Nonmagical ammunition made of metal that hits the ooze is destroyed after dealing damage. +The ooze can eat through 2-inch-thick, nonmagical metal in 1 round.`,attack_bonus:0},{name:"False Appearance",desc:"While the ooze remains motionless, it is indistinguishable from an oily pool or wet rock.",attack_bonus:0}],actions:[{name:"Pseudopod",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) bludgeoning damage plus 7 (2d6) acid damage, and if the target is wearing nonmagical metal armor, its armor is partly corroded and takes a permanent and cumulative -1 penalty to the AC it offers. The armor is destroyed if the penalty reduces its AC to 10.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Green Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"lawful evil",ac:17,hp:38,hit_dice:"7d8 + 6",speed:"30 ft., fly 60 ft., swim 30 ft.",stats:[15,12,13,14,11,13],saves:[{dexterity:3},{constitution:3},{wisdom:2},{charisma:3}],skillsaves:[{perception:4},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"2",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage plus 3 (1d6) poison damage.",attack_bonus:4,damage_dice:"1d10 + 1d6",damage_bonus:3},{name:"Poison Breath (Recharge 5-6)",desc:"The dragon exhales poisonous gas in a 15-foot cone. Each creature in that area must make a DC 11 Constitution saving throw, taking 21 (6d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"6d6"}]},{name:"Green Hag",source:"5e SRD",size:"Medium",type:"fey",subtype:"",alignment:"neutral evil",ac:17,hp:82,hit_dice:"11d8 + 32",speed:"30 ft.",stats:[18,12,16,13,14,14],skillsaves:[{arcana:3},{deception:4},{perception:4},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Common, Draconic, Sylvan",cr:"3",bestiary:!0,traits:[{name:"Amphibious",desc:"The hag can breathe air and water.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The hag's innate spellcasting ability is Charisma (spell save DC 12). She can innately cast the following spells, requiring no material components: + +At will: dancing lights, minor illusion, vicious mockery`,attack_bonus:0},{name:"Mimicry",desc:"The hag can mimic animal sounds and humanoid voices. A creature that hears the sounds can tell they are imitations with a successful DC 14 Wisdom (Insight) check.",attack_bonus:0},{name:"Hag Coven",desc:`When hags must work together, they form covens, in spite of their selfish natures. A coven is made up of hags of any type, all of whom are equals within the group. However, each of the hags continues to desire more personal power. +A coven consists of three hags so that any arguments between two hags can be settled by the third. If more than three hags ever come together, as might happen if two covens come into conflict, the result is usually chaos.`,attack_bonus:0},{name:"Shared Spellcasting (Coven Only)",desc:`While all three members of a hag coven are within 30 feet of one another, they can each cast the following spells from the wizard's spell list but must share the spell slots among themselves: + +\u2022 1st level (4 slots): identify, ray of sickness +\u2022 2nd level (3 slots): hold person, locate object +\u2022 3rd level (3 slots): bestow curse, counterspell, lightning bolt +\u2022 4th level (3 slots): phantasmal killer, polymorph +\u2022 5th level (2 slots): contact other plane, scrying +\u2022 6th level (1 slot): eye bite + +For casting these spells, each hag is a 12th-level spellcaster that uses Intelligence as her spellcasting ability. The spell save DC is 12+the hag's Intelligence modifier, and the spell attack bonus is 4+the hag's Intelligence modifier.`,attack_bonus:0},{name:"Hag Eye (Coven Only)",desc:`A hag coven can craft a magic item called a hag eye, which is made from a real eye coated in varnish and often fitted to a pendant or other wearable item. The hag eye is usually entrusted to a minion for safekeeping and transport. A hag in the coven can take an action to see what the hag eye sees if the hag eye is on the same plane of existence. A hag eye has AC 10, 1 hit point, and darkvision with a radius of 60 feet. If it is destroyed, each coven member takes 3d10 psychic damage and is blinded for 24 hours. +A hag coven can have only one hag eye at a time, and creating a new one requires all three members of the coven to perform a ritual. The ritual takes 1 hour, and the hags can't perform it while blinded. During the ritual, if the hags take any action other than performing the ritual, they must start over.`,attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4},{name:"Illusory Appearance",desc:`The hag covers herself and anything she is wearing or carrying with a magical illusion that makes her look like another creature of her general size and humanoid shape. The illusion ends if the hag takes a bonus action to end it or if she dies. +The changes wrought by this effect fail to hold up to physical inspection. For example, the hag could appear to have smooth skin, but someone touching her would feel her rough flesh. Otherwise, a creature must take an action to visually inspect the illusion and succeed on a DC 20 Intelligence (Investigation) check to discern that the hag is disguised.`,attack_bonus:0},{name:"Invisible Passage",desc:"The hag magically turns invisible until she attacks or casts a spell, or until her concentration ends (as if concentrating on a spell). While invisible, she leaves no physical evidence of her passage, so she can be tracked only by magic. Any equipment she wears or carries is invisible with her.",attack_bonus:0}]},{name:"Grick",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"neutral",ac:14,hp:27,hit_dice:"6d8",speed:"30 ft., climb 30 ft.",stats:[14,14,11,3,14,5],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing damage from nonmagical weapons",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 12",languages:"",cr:"2",bestiary:!0,traits:[{name:"Stone Camouflage",desc:"The grick has advantage on Dexterity (Stealth) checks made to hide in rocky terrain.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The grick makes one attack with its tentacles. If that attack hits, the grick can make one beak attack against the same target.",attack_bonus:0},{name:"Tentacles",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 9 (2d6 + 2) slashing damage.",attack_bonus:4,damage_dice:"2d6",damage_bonus:2},{name:"Beak",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Griffon",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:12,hp:59,hit_dice:"7d10 + 20",speed:"30 ft., fly 80 ft.",stats:[18,15,16,2,13,8],skillsaves:[{perception:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 15",languages:"",cr:"2",bestiary:!0,traits:[{name:"Keen Sight",desc:"The griffon has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The griffon makes two attacks: one with its beak and one with its claws.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 8 (1d8 + 4) piercing damage.",attack_bonus:6,damage_dice:"1d8",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Grimlock",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"grimlock",alignment:"neutral evil",ac:11,hp:11,hit_dice:"2d8 + 2",speed:"30 ft.",stats:[16,12,12,9,8,6],skillsaves:[{athletics:5},{perception:3},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"blinded",condition_immunities:"",senses:"blindsight 30 ft. or 10 ft. while deafened (blind beyond this radius), passive Perception 13",languages:"Undercommon",cr:"1/4",bestiary:!0,traits:[{name:"Blind Senses",desc:"The grimlock can't use its blindsight while deafened and unable to smell.",attack_bonus:0},{name:"Keen Hearing and Smell",desc:"The grimlock has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Stone Camouflage",desc:"The grimlock has advantage on Dexterity (Stealth) checks made to hide in rocky terrain.",attack_bonus:0}],actions:[{name:"Spiked Bone Club",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 5 (1d4 + 3) bludgeoning damage plus 2 (1d4) piercing damage.",attack_bonus:5,damage_dice:"1d4 + 1d4",damage_bonus:5}]},{name:"Guard",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:16,hp:11,hit_dice:"2d8 + 2",speed:"30 ft.",stats:[13,12,12,10,11,10],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"any one language (usually Common)",cr:"1/8",bestiary:!0,actions:[{name:"Spear",desc:"Melee or Ranged Weapon Attack: +3 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 4 (1d6 + 1) piercing damage or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Guardian Naga",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"lawful good",ac:18,hp:127,hit_dice:"15d10 + 44",speed:"40 ft.",stats:[19,18,16,16,19,18],saves:[{dexterity:8},{constitution:7},{intelligence:7},{wisdom:8},{charisma:8}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"charmed, poisoned",senses:"darkvision 60 ft., passive Perception 14",languages:"Celestial, Common",cr:"10",bestiary:!0,traits:[{name:"Rejuvenation",desc:"If it dies, the naga returns to life in 1d6 days and regains all its hit points. Only a wish spell can prevent this trait from functioning.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one creature. Hit: 8 (1d8 + 4) piercing damage, and the target must make a DC 15 Constitution saving throw, taking 45 (10d8) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:8,damage_dice:"1d8",damage_bonus:4},{name:"Spit Poison",desc:"Ranged Weapon Attack: +8 to hit, range 15/30 ft., one creature. Hit: The target must make a DC 15 Constitution saving throw, taking 45 (10d8) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:8,damage_dice:"10d8"}],spells:["The naga is an 11th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 16, +8 to hit with spell attacks), and it needs only verbal components to cast its spells. It has the following cleric spells prepared:",{"Cantrips (at will)":"mending, sacred flame, thaumaturgy"},{"1st level (4 slots)":"command, cure wounds, shield of faith"},{"2nd level (3 slots)":"calm emotions, hold person"},{"3rd level (3 slots)":"bestow curse, clairvoyance"},{"4th level (3 slots)":"banishment, freedom of movement"},{"5th level (2 slots)":"flame strike, geas"},{"6th level (1 slot)":"true seeing"}]},{name:"Gynosphinx",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"lawful neutral",ac:17,hp:136,hit_dice:"16d10 + 48",speed:"40 ft., fly 60 ft.",stats:[18,15,16,18,18,18],skillsaves:[{arcana:12},{history:12},{perception:8},{religion:8}],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"psychic",condition_immunities:"charmed, frightened",senses:"truesight 120 ft., passive Perception 18",languages:"Common, Sphinx",cr:"11",bestiary:!0,traits:[{name:"Inscrutable",desc:"The sphinx is immune to any effect that would sense its emotions or read its thoughts, as well as any divination spell that it refuses. Wisdom (Insight) checks made to ascertain the sphinx's intentions or sincerity have disadvantage.",attack_bonus:0},{name:"Magic Weapons",desc:"The sphinx's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The sphinx makes two claw attacks.",attack_bonus:0},{name:"Claw",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:9,damage_dice:"2d8",damage_bonus:4}],legendary_actions:[{name:"Claw Attack",desc:"The sphinx makes one claw attack.",attack_bonus:0},{name:"Teleport (Costs 2 Actions)",desc:"The sphinx magically teleports, along with any equipment it is wearing or carrying, up to 120 feet to an unoccupied space it can see.",attack_bonus:0},{name:"Cast a Spell (Costs 3 Actions)",desc:"The sphinx casts a spell from its list of prepared spells, using a spell slot as normal.",attack_bonus:0}],spells:["The sphinx is a 9th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 16, +8 to hit with spell attacks). It requires no material components to cast its spells. The sphinx has the following wizard spells prepared:",{"Cantrips (at will)":"mage hand, minor illusion, prestidigitation"},{"1st level (4 slots)":"detect magic, identify, shield"},{"2nd level (3 slots)":"darkness, locate object, suggestion"},{"3rd level (3 slots)":"dispel magic, remove curse, tongues"},{"4th level (3 slots)":"banishment, greater invisibility"},{"5th level (1 slot)":"legend lore"}]},{name:"Half-Red Dragon Veteran",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"any alignment",ac:18,hp:65,hit_dice:"10d8 + 20",speed:"30 ft.",stats:[16,13,14,10,11,10],damage_vulnerabilities:"",damage_resistances:"fire",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 12",languages:"Common, Draconic",cr:"5",bestiary:!0,actions:[{name:"Multiattack",desc:"The veteran makes two longsword attacks. If it has a shortsword drawn, it can also make a shortsword attack.",attack_bonus:0},{name:"Longsword",desc:"Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Shortsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Heavy Crossbow",desc:"Ranged Weapon Attack: +3 to hit, range 100/400 ft., one target. Hit: 6 (1d10 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d10",damage_bonus:1},{name:"Fire Breath (Recharge 5-6)",desc:"The veteran exhales fire in a 15-foot cone. Each creature in that area must make a DC 15 Dexterity saving throw, taking 24 (7d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"7d6"}]},{name:"Harpy",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:11,hp:38,hit_dice:"7d8 + 6",speed:"20 ft., fly 40 ft.",stats:[12,13,12,7,10,13],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"Common",cr:"1",bestiary:!0,actions:[{name:"Multiattack",desc:"The harpy makes two attacks: one with its claws and one with its club.",attack_bonus:0},{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 6 (2d4 + 1) slashing damage.",attack_bonus:3,damage_dice:"2d4",damage_bonus:1},{name:"Club",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 3 (1d4 + 1) bludgeoning damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1},{name:"Luring Song",desc:`The harpy sings a magical melody. Every humanoid and giant within 300 ft. of the harpy that can hear the song must succeed on a DC 11 Wisdom saving throw or be charmed until the song ends. The harpy must take a bonus action on its subsequent turns to continue singing. It can stop singing at any time. The song ends if the harpy is incapacitated. +While charmed by the harpy, a target is incapacitated and ignores the songs of other harpies. If the charmed target is more than 5 ft. away from the harpy, the must move on its turn toward the harpy by the most direct route. It doesn't avoid opportunity attacks, but before moving into damaging terrain, such as lava or a pit, and whenever it takes damage from a source other than the harpy, a target can repeat the saving throw. A creature can also repeat the saving throw at the end of each of its turns. If a creature's saving throw is successful, the effect ends on it. +A target that successfully saves is immune to this harpy's song for the next 24 hours.`,attack_bonus:0}]},{name:"Hawk",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:1,hit_dice:"1d4 + -2",speed:"10 ft., fly 60 ft.",stats:[5,16,8,2,14,6],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Sight",desc:"The hawk has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Talons",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 1 slashing damage.",attack_bonus:5,damage_bonus:1}]},{name:"Hell Hound",source:"5e SRD",size:"Medium",type:"fiend",subtype:"",alignment:"lawful evil",ac:15,hp:45,hit_dice:"7d8 + 13",speed:"50 ft.",stats:[17,12,14,6,13,6],skillsaves:[{perception:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 15",languages:"understands Infernal but can't speak it",cr:"3",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The hound has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The hound has advantage on an attack roll against a creature if at least one of the hound's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) piercing damage plus 7 (2d6) fire damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Fire Breath (Recharge 5-6)",desc:"The hound exhales fire in a 15-foot cone. Each creature in that area must make a DC 12 Dexterity saving throw, taking 21 (6d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"6d6"}]},{name:"Hezrou",source:"5e SRD",size:"Large",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:16,hp:136,hit_dice:"13d10 + 64",speed:"30 ft.",stats:[19,17,20,5,12,13],saves:[{strength:7},{constitution:8},{wisdom:4}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 11",languages:"Abyssal, telepathy 120 ft.",cr:"8",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The hezrou has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Stench",desc:"Any creature that starts its turn within 10 feet of the hezrou must succeed on a DC 14 Constitution saving throw or be poisoned until the start of its next turn. On a successful saving throw, the creature is immune to the hezrou's stench for 24 hours.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The hezrou makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 15 (2d10 + 4) piercing damage.",attack_bonus:7,damage_dice:"2d10",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A hezrou has a 30 percent chance of summoning 2d6 dretches or one hezrou. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}]},{name:"Hill Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"chaotic evil",ac:13,hp:105,hit_dice:"10d12 + 40",speed:"40 ft.",stats:[21,8,19,5,9,6],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"Giant",cr:"5",bestiary:!0,actions:[{name:"Multiattack",desc:"The giant makes two greatclub attacks.",attack_bonus:0},{name:"Greatclub",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 18 (3d8 + 5) bludgeoning damage.",attack_bonus:8,damage_dice:"3d8",damage_bonus:5},{name:"Rock",desc:"Ranged Weapon Attack: +8 to hit, range 60/240 ft., one target. Hit: 21 (3d10 + 5) bludgeoning damage.",attack_bonus:8,damage_dice:"3d10",damage_bonus:5}]},{name:"Hippogriff",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:11,hp:19,hit_dice:"3d10 + 2",speed:"40 ft, fly 60 ft.",stats:[17,13,13,2,12,8],skillsaves:[{perception:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 15",languages:"",cr:"1",bestiary:!0,traits:[{name:"Keen Sight",desc:"The hippogriff has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The hippogriff makes two attacks: one with its beak and one with its claws.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d10 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d10",damage_bonus:3},{name:"Claws",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Hobgoblin",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"goblinoid",alignment:"lawful evil",ac:18,hp:11,hit_dice:"2d8 + 2",speed:"30 ft.",stats:[13,12,12,10,10,9],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Common, Goblin",cr:"1/2",bestiary:!0,traits:[{name:"Martial Advantage",desc:"Once per turn, the hobgoblin can deal an extra 7 (2d6) damage to a creature it hits with a weapon attack if that creature is within 5 ft. of an ally of the hobgoblin that isn't incapacitated.",attack_bonus:0,damage_dice:"2d6"}],actions:[{name:"Longsword",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 5 (1d8 + 1) slashing damage, or 6 (1d10 + 1) slashing damage if used with two hands.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1},{name:"Longbow",desc:"Ranged Weapon Attack: +3 to hit, range 150/600 ft., one target. Hit: 5 (1d8 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1}]},{name:"Homunculus",source:"5e SRD",size:"Tiny",type:"construct",subtype:"",alignment:"neutral",ac:13,hp:5,hit_dice:"2d4",speed:"20 ft., fly 40 ft.",stats:[4,15,11,10,10,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"charmed, poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"understands the languages of its creator but can't speak",cr:"0",bestiary:!0,traits:[{name:"Telepathic Bond",desc:"While the homunculus is on the same plane of existence as its master, it can magically convey what it senses to its master, and the two can communicate telepathically.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 1 piercing damage, and the target must succeed on a DC 10 Constitution saving throw or be poisoned for 1 minute. If the saving throw fails by 5 or more, the target is instead poisoned for 5 (1d10) minutes and unconscious while poisoned in this way.",attack_bonus:4,damage_bonus:1}]},{name:"Horned Devil",source:"5e SRD",size:"Large",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:18,hp:148,hit_dice:"17d10 + 54",speed:"20 ft., fly 60 ft.",stats:[22,17,21,12,16,17],saves:[{strength:10},{dexterity:7},{wisdom:7},{charisma:7}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 13",languages:"Infernal, telepathy 120 ft.",cr:"11",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes three melee attacks: two with its fork and one with its tail. It can use Hurl Flame in place of any melee attack.",attack_bonus:0},{name:"Fork",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 15 (2d8 + 6) piercing damage.",attack_bonus:10,damage_dice:"2d8",damage_bonus:6},{name:"Tail",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 10 (1d8 + 6) piercing damage. If the target is a creature other than an undead or a construct, it must succeed on a DC 17 Constitution saving throw or lose 10 (3d6) hit points at the start of each of its turns due to an infernal wound. Each time the devil hits the wounded target with this attack, the damage dealt by the wound increases by 10 (3d6). Any creature can take an action to stanch the wound with a successful DC 12 Wisdom (Medicine) check. The wound also closes if the target receives magical healing.",attack_bonus:10,damage_dice:"1d8",damage_bonus:6},{name:"Hurl Flame",desc:"Ranged Spell Attack: +7 to hit, range 150 ft., one target. Hit: 14 (4d6) fire damage. If the target is a flammable object that isn't being worn or carried, it also catches fire.",attack_bonus:7,damage_dice:"4d6"}]},{name:"Hunter Shark",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:45,hit_dice:"6d10 + 12",speed:"swim 40 ft.",stats:[18,13,15,1,10,4],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 12",languages:"",cr:"2",bestiary:!0,traits:[{name:"Blood Frenzy",desc:"The shark has advantage on melee attack rolls against any creature that doesn't have all its hit points.",attack_bonus:0},{name:"Water Breathing",desc:"The shark can breathe only underwater.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) piercing damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4}]},{name:"Hydra",source:"5e SRD",size:"Huge",type:"monstrosity",subtype:"",alignment:"unaligned",ac:15,hp:172,hit_dice:"15d12 + 74",speed:"30 ft., swim 30 ft.",stats:[20,12,20,2,10,7],skillsaves:[{perception:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 16",languages:"",cr:"8",bestiary:!0,traits:[{name:"Hold Breath",desc:"The hydra can hold its breath for 1 hour.",attack_bonus:0},{name:"Multiple Heads",desc:`The hydra has five heads. While it has more than one head, the hydra has advantage on saving throws against being blinded, charmed, deafened, frightened, stunned, and knocked unconscious. +Whenever the hydra takes 25 or more damage in a single turn, one of its heads dies. If all its heads die, the hydra dies. +At the end of its turn, it grows two heads for each of its heads that died since its last turn, unless it has taken fire damage since its last turn. The hydra regains 10 hit points for each head regrown in this way.`,attack_bonus:0},{name:"Reactive Heads",desc:"For each head the hydra has beyond one, it gets an extra reaction that can be used only for opportunity attacks.",attack_bonus:0},{name:"Wakeful",desc:"While the hydra sleeps, at least one of its heads is awake.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The hydra makes as many bite attacks as it has heads.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 10 (1d10 + 5) piercing damage.",attack_bonus:8,damage_dice:"1d10",damage_bonus:5}]},{name:"Hyena",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:5,hit_dice:"1d8",speed:"50 ft.",stats:[11,13,12,2,12,5],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Pack Tactics",desc:"The hyena has advantage on an attack roll against a creature if at least one of the hyena's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 3 (1d6) piercing damage.",attack_bonus:2,damage_dice:"1d6"}]},{name:"Ice Devil",source:"5e SRD",size:"Large",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:18,hp:180,hit_dice:"19d10 + 75",speed:"40 ft.",stats:[21,14,18,18,15,18],saves:[{dexterity:7},{constitution:9},{wisdom:7},{charisma:9}],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"blindsight 60 ft., darkvision 120 ft., passive Perception 12",languages:"Infernal, telepathy 120 ft.",cr:"14",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the devil's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The devil has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The devil makes three attacks: one with its bite, one with its claws, and one with its tail.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) piercing damage plus 10 (3d6) cold damage.",attack_bonus:10,damage_dice:"2d6 + 3d6",damage_bonus:5},{name:"Claws",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 10 (2d4 + 5) slashing damage plus 10 (3d6) cold damage.",attack_bonus:10,damage_dice:"2d4 + 3d6",damage_bonus:5},{name:"Tail",desc:"Melee Weapon Attack:+10 to hit, reach 10 ft., one target. Hit: 12 (2d6 + 5) bludgeoning damage plus 10 (3d6) cold damage.",attack_bonus:10,damage_dice:"2d6 + 3d6",damage_bonus:5},{name:"Wall of Ice",desc:`The devil magically forms an opaque wall of ice on a solid surface it can see within 60 feet of it. The wall is 1 foot thick and up to 30 feet long and 10 feet high, or it's a hemispherical dome up to 20 feet in diameter. +When the wall appears, each creature in its space is pushed out of it by the shortest route. The creature chooses which side of the wall to end up on, unless the creature is incapacitated. The creature then makes a DC 17 Dexterity saving throw, taking 35 (10d6) cold damage on a failed save, or half as much damage on a successful one. +The wall lasts for 1 minute or until the devil is incapacitated or dies. The wall can be damaged and breached; each 10-foot section has AC 5, 30 hit points, vulnerability to fire damage, and immunity to acid, cold, necrotic, poison, and psychic damage. If a section is destroyed, it leaves behind a sheet of frigid air in the space the wall occupied. Whenever a creature finishes moving through the frigid air on a turn, willingly or otherwise, the creature must make a DC 17 Constitution saving throw, taking 17 (5d6) cold damage on a failed save, or half as much damage on a successful one. The frigid air dissipates when the rest of the wall vanishes.`,attack_bonus:0}]},{name:"Ice Mephit",source:"5e SRD",size:"Small",type:"elemental",subtype:"",alignment:"neutral evil",ac:11,hp:21,hit_dice:"6d6",speed:"30 ft., fly 30 ft.",stats:[7,13,10,9,11,12],skillsaves:[{perception:2},{stealth:3}],damage_vulnerabilities:"bludgeoning, fire",damage_resistances:"",damage_immunities:"cold, poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 12",languages:"Aquan, Auran",cr:"1/2",bestiary:!0,traits:[{name:"Death Burst",desc:"When the mephit dies, it explodes in a burst of jagged ice. Each creature within 5 ft. of it must make a DC 10 Dexterity saving throw, taking 4 (1d8) slashing damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"1d8"},{name:"False Appearance",desc:"While the mephit remains motionless, it is indistinguishable from an ordinary shard of ice.",attack_bonus:0},{name:"Innate Spellcasting (1/Day)",desc:"The mephit can innately cast fog cloud, requiring no material components. Its innate spellcasting ability is Charisma.",attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one creature. Hit: 3 (1d4 + 1) slashing damage plus 2 (1d4) cold damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1},{name:"Frost Breath (Recharge 6)",desc:"The mephit exhales a 15-foot cone of cold air. Each creature in that area must succeed on a DC 10 Dexterity saving throw, taking 5 (2d4) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0},{name:"Variant: Summon Mephits (1/Day)",desc:"The mephit has a 25 percent chance of summoning 1d4 mephits of its kind. A summoned mephit appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other mephits. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.",attack_bonus:0}]},{name:"Imp",source:"5e SRD",size:"Tiny",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:13,hp:10,hit_dice:"3d4 + 2",speed:"20 ft., fly 40 ft.",stats:[6,17,13,11,12,14],skillsaves:[{deception:4},{insight:3},{persuasion:4},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical/nonsilver weapons",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 11",languages:"Infernal, Common",cr:"1",bestiary:!0,traits:[{name:"Shapechanger",desc:"The imp can use its action to polymorph into a beast form that resembles a rat (speed 20 ft.), a raven (20 ft., fly 60 ft.), or a spider (20 ft., climb 20 ft.), or back into its true form. Its statistics are the same in each form, except for the speed changes noted. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Devil's Sight",desc:"Magical darkness doesn't impede the imp's darkvision.",attack_bonus:0},{name:"Magic Resistance",desc:"The imp has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Variant: Familiar",desc:"The imp can serve another creature as a familiar, forming a telepathic bond with its willing master. While the two are bonded, the master can sense what the quasit senses as long as they are within 1 mile of each other. While the imp is within 10 feet of its master, the master shares the quasit's Magic Resistance trait. At any time and for any reason, the imp can end its service as a familiar, ending the telepathic bond.",attack_bonus:0}],actions:[{name:"Sting (Bite in Beast Form)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft ., one target. Hit: 5 (1d4 + 3) piercing damage, and the target must make on a DC 11 Constitution saving throw, taking 10 (3d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:5,damage_dice:"1d4",damage_bonus:3},{name:"Invisibility",desc:"The imp magically turns invisible until it attacks, or until its concentration ends (as if concentrating on a spell). Any equipment the imp wears or carries is invisible with it.",attack_bonus:0}]},{name:"Invisible Stalker",source:"5e SRD",size:"Medium",type:"elemental",subtype:"",alignment:"neutral",ac:14,hp:104,hit_dice:"16d8 + 32",speed:"50 ft., fly 50 ft. (hover)",stats:[16,19,14,10,15,11],skillsaves:[{perception:8},{stealth:10}],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained, unconscious",senses:"darkvision 60 ft., passive Perception 18",languages:"Auran, understands Common but doesn't speak it",cr:"6",bestiary:!0,traits:[{name:"Invisibility",desc:"The stalker is invisible.",attack_bonus:0},{name:"Faultless Tracker",desc:"The stalker is given a quarry by its summoner. The stalker knows the direction and distance to its quarry as long as the two of them are on the same plane of existence. The stalker also knows the location of its summoner.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The stalker makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3}]},{name:"Iron Golem",source:"5e SRD",size:"Large",type:"construct",subtype:"",alignment:"unaligned",ac:20,hp:210,hit_dice:"20d10 + 100",speed:"30 ft.",stats:[24,9,20,3,11,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire, poison, psychic; bludgeoning, piercing, and slashing from nonmagical weapons that aren't adamantine",condition_immunities:"charmed, exhaustion, frightened, paralyzed, petrified, poisoned",senses:"darkvision 120 ft., passive Perception 10",languages:"understands the languages of its creator but can't speak",cr:"16",bestiary:!0,traits:[{name:"Fire Absorption",desc:"Whenever the golem is subjected to fire damage, it takes no damage and instead regains a number of hit points equal to the fire damage dealt.",attack_bonus:0},{name:"Immutable Form",desc:"The golem is immune to any spell or effect that would alter its form.",attack_bonus:0},{name:"Magic Resistance",desc:"The golem has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The golem's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The golem makes two melee attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +13 to hit, reach 5 ft., one target. Hit: 20 (3d8 + 7) bludgeoning damage.",attack_bonus:13,damage_dice:"3d8",damage_bonus:7},{name:"Sword",desc:"Melee Weapon Attack: +13 to hit, reach 10 ft., one target. Hit: 23 (3d10 + 7) slashing damage.",attack_bonus:13,damage_dice:"3d10",damage_bonus:7},{name:"Poison Breath (Recharge 5-6)",desc:"The golem exhales poisonous gas in a 15-foot cone. Each creature in that area must make a DC 19 Constitution saving throw, taking 45 (l0d8) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"10d8"}]},{name:"Jackal",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:3,hit_dice:"1d6 + -1",speed:"40 ft.",stats:[8,15,11,3,12,6],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The jackal has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The jackal has advantage on an attack roll against a creature if at least one of the jackal's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +1 to hit, reach 5 ft., one target. Hit: 1 (1d4 \u2014 1) piercing damage.",attack_bonus:1,damage_dice:"1d4",damage_bonus:-1}]},{name:"Killer Whale",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:90,hit_dice:"12d12 + 12",speed:"swim 60 ft.",stats:[19,10,13,3,12,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 120 ft., passive Perception 13",languages:"",cr:"3",bestiary:!0,traits:[{name:"Echolocation",desc:"The whale can't use its blindsight while deafened.",attack_bonus:0},{name:"Hold Breath",desc:"The whale can hold its breath for 30 minutes",attack_bonus:0},{name:"Keen Hearing",desc:"The whale has advantage on Wisdom (Perception) checks that rely on hearing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 21 (5d6 + 4) piercing damage.",attack_bonus:0}]},{name:"Knight",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:18,hp:52,hit_dice:"8d8 + 16",speed:"30 ft.",stats:[16,11,14,11,11,15],saves:[{constitution:4},{wisdom:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"3",bestiary:!0,traits:[{name:"Brave",desc:"The knight has advantage on saving throws against being frightened.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The knight makes two melee attacks.",attack_bonus:0},{name:"Greatsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3},{name:"Heavy Crossbow",desc:"Ranged Weapon Attack: +2 to hit, range 100/400 ft., one target. Hit: 5 (1d10) piercing damage.",attack_bonus:2,damage_dice:"1d10"},{name:"Leadership (Recharges after a Short or Long Rest)",desc:"For 1 minute, the knight can utter a special command or warning whenever a nonhostile creature that it can see within 30 ft. of it makes an attack roll or a saving throw. The creature can add a d4 to its roll provided it can hear and understand the knight. A creature can benefit from only one Leadership die at a time. This effect ends if the knight is incapacitated.",attack_bonus:0}],reactions:[{name:"Parry",desc:"The knight adds 2 to its AC against one melee attack that would hit it. To do so, the knight must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Kobold",source:"5e SRD",size:"Small",type:"humanoid",subtype:"kobold",alignment:"lawful evil",ac:12,hp:5,hit_dice:"2d6 + -2",speed:"30 ft.",stats:[7,15,9,8,7,8],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 8",languages:"Common, Draconic",cr:"1/8",bestiary:!0,traits:[{name:"Sunlight Sensitivity",desc:"While in sunlight, the kobold has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0},{name:"Pack Tactics",desc:"The kobold has advantage on an attack roll against a creature if at least one of the kobold's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Dagger",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2},{name:"Sling",desc:"Ranged Weapon Attack: +4 to hit, range 30/120 ft., one target. Hit: 4 (1d4 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Kraken",source:"5e SRD",size:"Gargantuan",type:"monstrosity",subtype:"titan",alignment:"chaotic evil",ac:18,hp:472,hit_dice:"27d20 + 188",speed:"20 ft., swim 60 ft.",stats:[30,11,25,22,18,20],saves:[{strength:17},{dexterity:7},{constitution:14},{intelligence:13},{wisdom:11}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"frightened, paralyzed",senses:"truesight 120 ft., passive Perception 14",languages:"understands Abyssal, Celestial, Infernal, and Primordial but can't speak, telepathy 120 ft.",cr:"23",bestiary:!0,traits:[{name:"Amphibious",desc:"The kraken can breathe air and water.",attack_bonus:0},{name:"Freedom of Movement",desc:"The kraken ignores difficult terrain, and magical effects can't reduce its speed or cause it to be restrained. It can spend 5 feet of movement to escape from nonmagical restraints or being grappled.",attack_bonus:0},{name:"Siege Monster",desc:"The kraken deals double damage to objects and structures.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The kraken makes three tentacle attacks, each of which it can replace with one use of Fling.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 23 (3d8 + 10) piercing damage. If the target is a Large or smaller creature grappled by the kraken, that creature is swallowed, and the grapple ends. While swallowed, the creature is blinded and restrained, it has total cover against attacks and other effects outside the kraken, and it takes 42 (12d6) acid damage at the start of each of the kraken's turns. If the kraken takes 50 damage or more on a single turn from a creature inside it, the kraken must succeed on a DC 25 Constitution saving throw at the end of that turn or regurgitate all swallowed creatures, which fall prone in a space within 10 feet of the kraken. If the kraken dies, a swallowed creature is no longer restrained by it and can escape from the corpse using 15 feet of movement, exiting prone.",attack_bonus:7,damage_dice:"3d8",damage_bonus:10},{name:"Tentacle",desc:"Melee Weapon Attack: +7 to hit, reach 30 ft., one target. Hit: 20 (3d6 + 10) bludgeoning damage, and the target is grappled (escape DC 18). Until this grapple ends, the target is restrained. The kraken has ten tentacles, each of which can grapple one target.",attack_bonus:7,damage_dice:"3d6",damage_bonus:10},{name:"Fling",desc:"One Large or smaller object held or creature grappled by the kraken is thrown up to 60 feet in a random direction and knocked prone. If a thrown target strikes a solid surface, the target takes 3 (1d6) bludgeoning damage for every 10 feet it was thrown. If the target is thrown at another creature, that creature must succeed on a DC 18 Dexterity saving throw or take the same damage and be knocked prone.",attack_bonus:0},{name:"Lightning Storm",desc:"The kraken magically creates three bolts of lightning, each of which can strike a target the kraken can see within 120 feet of it. A target must make a DC 23 Dexterity saving throw, taking 22 (4d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"4d10"}],legendary_actions:[{name:"Tentacle Attack or Fling",desc:"The kraken makes one tentacle attack or uses its Fling.",attack_bonus:0},{name:"Lightning Storm (Costs 2 Actions)",desc:"The kraken uses Lightning Storm.",attack_bonus:0},{name:"Ink Cloud (Costs 3 Actions)",desc:"While underwater, the kraken expels an ink cloud in a 60-foot radius. The cloud spreads around corners, and that area is heavily obscured to creatures other than the kraken. Each creature other than the kraken that ends its turn there must succeed on a DC 23 Constitution saving throw, taking 16 (3d10) poison damage on a failed save, or half as much damage on a successful one. A strong current disperses the cloud, which otherwise disappears at the end of the kraken's next turn.",attack_bonus:0}]},{name:"Lamia",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:13,hp:97,hit_dice:"13d10 + 25",speed:"30 ft.",stats:[16,13,15,14,15,16],skillsaves:[{deception:7},{insight:4},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 12",languages:"Abyssal, Common",cr:"4",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:"The lamia's innate spellcasting ability is Charisma (spell save DC 13). It can innately cast the following spells, requiring no material components. At will: disguise self (any humanoid form), major image 3/day each: charm person, mirror image, scrying, suggestion 1/day: geas",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The lamia makes two attacks: one with its claws and one with its dagger or Intoxicating Touch.",attack_bonus:0},{name:"Claws",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 14 (2d10 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d10",damage_bonus:3},{name:"Dagger",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 5 (1d4 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d4",damage_bonus:3},{name:"Intoxicating Touch",desc:"Melee Spell Attack: +5 to hit, reach 5 ft., one creature. Hit: The target is magically cursed for 1 hour. Until the curse ends, the target has disadvantage on Wisdom saving throws and all ability checks.",attack_bonus:0}]},{name:"Lemure",source:"5e SRD",size:"Medium",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:7,hp:13,hit_dice:"3d8 + -1",speed:"15 ft.",stats:[10,5,11,1,11,3],damage_vulnerabilities:"",damage_resistances:"cold",damage_immunities:"fire, poison",condition_immunities:"charmed, frightened, poisoned",senses:"darkvision 120 ft., passive Perception 10",languages:"understands infernal but can't speak",cr:"0",bestiary:!0,traits:[{name:"Devil's Sight",desc:"Magical darkness doesn't impede the lemure's darkvision.",attack_bonus:0},{name:"Hellish Rejuvenation",desc:"A lemure that dies in the Nine Hells comes back to life with all its hit points in 1d10 days unless it is killed by a good-aligned creature with a bless spell cast on that creature or its remains are sprinkled with holy water.",attack_bonus:0}],actions:[{name:"Fist",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 2 (1d4) bludgeoning damage",attack_bonus:3,damage_dice:"1d4"}]},{name:"Lich",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"any evil alignment",ac:17,hp:135,hit_dice:"18d8 + 54",speed:"30 ft.",stats:[11,16,16,20,14,16],saves:[{constitution:10},{intelligence:12},{wisdom:9}],skillsaves:[{arcana:18},{history:12},{insight:9},{perception:9}],damage_vulnerabilities:"",damage_resistances:"cold, lightning, necrotic",damage_immunities:"poison; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"charmed, exhaustion, frightened, paralyzed, poisoned",senses:"truesight 120 ft., passive Perception 19",languages:"Common plus up to five other languages",cr:"21",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the lich fails a saving throw, it can choose to succeed instead.",attack_bonus:0},{name:"Rejuvenation",desc:"If it has a phylactery, a destroyed lich gains a new body in 1d10 days, regaining all its hit points and becoming active again. The new body appears within 5 feet of the phylactery.",attack_bonus:0},{name:"Turn Resistance",desc:"The lich has advantage on saving throws against any effect that turns undead.",attack_bonus:0}],actions:[{name:"Paralyzing Touch",desc:"Melee Spell Attack: +12 to hit, reach 5 ft., one creature. Hit: 10 (3d6) cold damage. The target must succeed on a DC 18 Constitution saving throw or be paralyzed for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:12,damage_dice:"3d6"}],legendary_actions:[{name:"Cantrip",desc:"The lich casts a cantrip.",attack_bonus:0},{name:"Paralyzing Touch (Costs 2 Actions)",desc:"The lich uses its Paralyzing Touch.",attack_bonus:0},{name:"Frightening Gaze (Costs 2 Actions)",desc:"The lich fixes its gaze on one creature it can see within 10 feet of it. The target must succeed on a DC 18 Wisdom saving throw against this magic or become frightened for 1 minute. The frightened target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a target's saving throw is successful or the effect ends for it, the target is immune to the lich's gaze for the next 24 hours.",attack_bonus:0},{name:"Disrupt Life (Costs 3 Actions)",desc:"Each living creature within 20 feet of the lich must make a DC 18 Constitution saving throw against this magic, taking 21 (6d6) necrotic damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"6d6"}],spells:["The lich is an 18th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 20, +12 to hit with spell attacks). The lich has the following wizard spells prepared:",{"Cantrips (at will)":"mage hand, prestidigitation, ray of frost"},{"1st level (4 slots)":"detect magic, magic missile, shield, thunderwave"},{"2nd level (3 slots)":"detect thoughts, invisibility, Melf's acid arrow, mirror image"},{"3rd level (3 slots)":"animate dead, counterspell, dispel magic, fireball"},{"4th level (3 slots)":"blight, dimension door"},{"5th level (3 slots)":"cloudkill, scrying"},{"6th level (1 slot)":"disintegrate, globe of invulnerability"},{"7th level (1 slot)":"finger of death, plane shift"},{"8th level (1 slot)":"dominate monster, power word stun"},{"9th level (1 slot)":"power word kill"}]},{name:"Lion",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:26,hit_dice:"4d10 + 4",speed:"50 ft.",stats:[17,15,13,3,12,8],skillsaves:[{perception:3},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1",bestiary:!0,traits:[{name:"Keen Smell",desc:"The lion has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The lion has advantage on an attack roll against a creature if at least one of the lion's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0},{name:"Pounce",desc:"If the lion moves at least 20 ft. straight toward a creature and then hits it with a claw attack on the same turn, that target must succeed on a DC 13 Strength saving throw or be knocked prone. If the target is prone, the lion can make one bite attack against it as a bonus action.",attack_bonus:0},{name:"Running Leap",desc:"With a 10-foot running start, the lion can long jump up to 25 ft..",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Claw",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3}]},{name:"Lizard",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:2,hit_dice:"1d4 + -1",speed:"20 ft., climb 20 ft.",stats:[2,11,10,1,8,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 9",languages:"",cr:"0",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +0 to hit, reach 5 ft., one target. Hit: 1 piercing damage.",attack_bonus:0,damage_bonus:1}]},{name:"Lizardfolk",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"lizardfolk",alignment:"neutral",ac:15,hp:22,hit_dice:"4d8 + 4",speed:"30 ft., swim 30 ft.",stats:[15,10,13,7,12,7],skillsaves:[{perception:3},{stealth:4},{survival:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"Draconic",cr:"1/2",bestiary:!0,traits:[{name:"Hold Breath",desc:"The lizardfolk can hold its breath for 15 minutes.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The lizardfolk makes two melee attacks, each one with a different weapon.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Heavy Club",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Javelin",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 30/120 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Spiked Shield",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Mage",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:12,hp:40,hit_dice:"9d8 + -1",speed:"30 ft.",stats:[9,14,11,17,12,11],saves:[{intelligence:6},{wisdom:4}],skillsaves:[{arcana:6},{history:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"any four languages",cr:"6",bestiary:!0,traits:[],actions:[{name:"Dagger",desc:"Melee or Ranged Weapon Attack: +5 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:5,damage_dice:"1d4",damage_bonus:2}],spells:["The mage is a 9th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 14, +6 to hit with spell attacks). The mage has the following wizard spells prepared:",{"Cantrips (at will)":"fire bolt, light, mage hand, prestidigitation"},{"1st level (4 slots)":"detect magic, mage armor, magic missile, shield"},{"2nd level (3 slots)":"misty step, suggestion"},{"3rd level (3 slots)":"counterspell, fireball, fly"},{"4th level (3 slots)":"greater invisibility, ice storm"},{"5th level (1 slot)":"cone of cold"}]},{name:"Magma Mephit",source:"5e SRD",size:"Small",type:"elemental",subtype:"",alignment:"neutral evil",ac:11,hp:22,hit_dice:"5d6 + 4",speed:"30 ft., fly 30 ft.",stats:[8,12,12,7,10,10],skillsaves:[{stealth:3}],damage_vulnerabilities:"cold",damage_resistances:"",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"Ignan, Terran",cr:"1/2",bestiary:!0,traits:[{name:"Death Burst",desc:"When the mephit dies, it explodes in a burst of lava. Each creature within 5 ft. of it must make a DC 11 Dexterity saving throw, taking 7 (2d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"2d6"},{name:"False Appearance",desc:"While the mephit remains motionless, it is indistinguishable from an ordinary mound of magma.",attack_bonus:0},{name:"Innate Spellcasting (1/Day)",desc:"The mephit can innately cast heat metal (spell save DC 10), requiring no material components. Its innate spellcasting ability is Charisma.",attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft ., one creature. Hit: 3 (1d4 + 1) slashing damage plus 2 (1d4) fire damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1},{name:"Fire Breath (Recharge 6)",desc:"The mephit exhales a 15-foot cone of fire. Each creature in that area must make a DC 11 Dexterity saving throw, taking 7 (2d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0},{name:"Variant: Summon Mephits (1/Day)",desc:"The mephit has a 25 percent chance of summoning 1d4 mephits of its kind. A summoned mephit appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other mephits. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.",attack_bonus:0}]},{name:"Magmin",source:"5e SRD",size:"Small",type:"elemental",subtype:"",alignment:"chaotic neutral",ac:14,hp:9,hit_dice:"2d6 + 2",speed:"30 ft.",stats:[7,15,12,8,11,10],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"fire",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Ignan",cr:"1/2",bestiary:!0,traits:[{name:"Death Burst",desc:"When the magmin dies, it explodes in a burst of fire and magma. Each creature within 10 ft. of it must make a DC 11 Dexterity saving throw, taking 7 (2d6) fire damage on a failed save, or half as much damage on a successful one. Flammable objects that aren't being worn or carried in that area are ignited.",attack_bonus:0,damage_dice:"2d6"},{name:"Ignited Illumination",desc:"As a bonus action, the magmin can set itself ablaze or extinguish its flames. While ablaze, the magmin sheds bright light in a 10-foot radius and dim light for an additional 10 ft.",attack_bonus:0}],actions:[{name:"Touch",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d6) fire damage. If the target is a creature or a flammable object, it ignites. Until a target takes an action to douse the fire, the target takes 3 (1d6) fire damage at the end of each of its turns.",attack_bonus:4,damage_dice:"2d6"}]},{name:"Mammoth",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:126,hit_dice:"11d12 + 54",speed:"40 ft.",stats:[24,9,21,3,11,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"6",bestiary:!0,traits:[{name:"Trampling Charge",desc:"If the mammoth moves at least 20 ft. straight toward a creature and then hits it with a gore attack on the same turn, that target must succeed on a DC 18 Strength saving throw or be knocked prone. If the target is prone, the mammoth can make one stomp attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Gore",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 25 (4d8 + 7) piercing damage.",attack_bonus:10,damage_dice:"4d8",damage_bonus:7},{name:"Stomp",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one prone creature. Hit: 29 (4d10 + 7) bludgeoning damage.",attack_bonus:10,damage_dice:"4d10",damage_bonus:7}]},{name:"Manticore",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"lawful evil",ac:14,hp:68,hit_dice:"8d10 + 24",speed:"30 ft., fly 50 ft.",stats:[17,16,17,7,12,8],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"",cr:"3",bestiary:!0,traits:[{name:"Tail Spike Regrowth",desc:"The manticore has twenty-four tail spikes. Used spikes regrow when the manticore finishes a long rest.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The manticore makes three attacks: one with its bite and two with its claws or three with its tail spikes.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Claw",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Tail Spike",desc:"Ranged Weapon Attack: +5 to hit, range 100/200 ft., one target. Hit: 7 (1d8 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3}]},{name:"Marilith",source:"5e SRD",size:"Large",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:18,hp:189,hit_dice:"18d10 + 90",speed:"40 ft.",stats:[18,20,20,18,16,20],saves:[{strength:9},{constitution:10},{wisdom:8},{charisma:10}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 13",languages:"Abyssal, telepathy 120 ft.",cr:"16",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The marilith has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The marilith's weapon attacks are magical.",attack_bonus:0},{name:"Reactive",desc:"The marilith can take one reaction on every turn in combat.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The marilith can make seven attacks: six with its longswords and one with its tail.",attack_bonus:0},{name:"Longsword",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:9,damage_dice:"2d8",damage_bonus:4},{name:"Tail",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one creature. Hit: 15 (2d10 + 4) bludgeoning damage. If the target is Medium or smaller, it is grappled (escape DC 19). Until this grapple ends, the target is restrained, the marilith can automatically hit the target with its tail, and the marilith can't make tail attacks against other targets.",attack_bonus:9,damage_dice:"2d10",damage_bonus:4},{name:"Teleport",desc:"The marilith magically teleports, along with any equipment it is wearing or carrying, up to 120 feet to an unoccupied space it can see.",attack_bonus:0},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A marilith has a 50 percent chance of summoning 1d6 vrocks, 1d4 hezrous, 1d3 glabrezus, 1d2 nalfeshnees, or one marilith. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}],reactions:[{name:"Parry",desc:"The marilith adds 5 to its AC against one melee attack that would hit it. To do so, the marilith must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Mastiff",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:5,hit_dice:"1d8",speed:"40 ft.",stats:[13,14,12,3,12,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The mastiff has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) piercing damage. If the target is a creature, it must succeed on a DC 11 Strength saving throw or be knocked prone.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Medusa",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"lawful evil",ac:15,hp:127,hit_dice:"17d8 + 50",speed:"30 ft.",stats:[10,15,16,12,13,15],skillsaves:[{deception:5},{insight:4},{perception:4},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Common",cr:"6",bestiary:!0,traits:[{name:"Petrifying Gaze",desc:`When a creature that can see the medusa's eyes starts its turn within 30 ft. of the medusa, the medusa can force it to make a DC 14 Constitution saving throw if the medusa isn't incapacitated and can see the creature. If the saving throw fails by 5 or more, the creature is instantly petrified. Otherwise, a creature that fails the save begins to turn to stone and is restrained. The restrained creature must repeat the saving throw at the end of its next turn, becoming petrified on a failure or ending the effect on a success. The petrification lasts until the creature is freed by the greater restoration spell or other magic. +Unless surprised, a creature can avert its eyes to avoid the saving throw at the start of its turn. If the creature does so, it can't see the medusa until the start of its next turn, when it can avert its eyes again. If the creature looks at the medusa in the meantime, it must immediately make the save. +If the medusa sees itself reflected on a polished surface within 30 ft. of it and in an area of bright light, the medusa is, due to its curse, affected by its own gaze.`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The medusa makes either three melee attacks \u2014 one with its snake hair and two with its shortsword \u2014 or two ranged attacks with its longbow.",attack_bonus:0},{name:"Snake Hair",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 4 (1d4 + 2) piercing damage plus 14 (4d6) poison damage.",attack_bonus:5,damage_dice:"1d4",damage_bonus:2},{name:"Shortsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:2},{name:"Longbow",desc:"Ranged Weapon Attack: +5 to hit, range 150/600 ft., one target. Hit: 6 (1d8 + 2) piercing damage plus 7 (2d6) poison damage.",attack_bonus:5,damage_dice:"2d6"}]},{name:"Merfolk",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"merfolk",alignment:"neutral",ac:11,hp:11,hit_dice:"2d8 + 2",speed:"10 ft., swim 40 ft.",stats:[10,13,12,11,11,12],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"Aquan, Common",cr:"1/8",bestiary:!0,traits:[{name:"Amphibious",desc:"The merfolk can breathe air and water.",attack_bonus:0}],actions:[{name:"Spear",desc:"Melee or Ranged Weapon Attack: +2 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 3 (1d6) piercing damage, or 4 (1d8) piercing damage if used with two hands to make a melee attack.",attack_bonus:2,damage_dice:"1d6"}]},{name:"Merrow",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:13,hp:45,hit_dice:"6d10 + 12",speed:"10 ft., swim 40 ft.",stats:[18,10,15,8,10,9],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Abyssal, Aquan",cr:"2",bestiary:!0,traits:[{name:"Amphibious",desc:"The merrow can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The merrow makes two attacks: one with its bite and one with its claws or harpoon.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 8 (1d8 + 4) piercing damage.",attack_bonus:6,damage_dice:"1d8",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 9 (2d4 + 4) slashing damage.",attack_bonus:6,damage_dice:"2d4",damage_bonus:4},{name:"Harpoon",desc:"Melee or Ranged Weapon Attack: +6 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 11 (2d6 + 4) piercing damage. If the target is a Huge or smaller creature, it must succeed on a Strength contest against the merrow or be pulled up to 20 feet toward the merrow.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Mimic",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"shapechanger",alignment:"neutral",ac:12,hp:58,hit_dice:"9d8 + 17",speed:"15 ft.",stats:[17,12,15,5,13,8],skillsaves:[{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"prone",senses:"darkvision 60 ft., passive Perception 11",languages:"",cr:"2",bestiary:!0,traits:[{name:"Shapechanger",desc:"The mimic can use its action to polymorph into an object or back into its true, amorphous form. Its statistics are the same in each form. Any equipment it is wearing or carrying isn 't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Adhesive (Object Form Only)",desc:"The mimic adheres to anything that touches it. A Huge or smaller creature adhered to the mimic is also grappled by it (escape DC 13). Ability checks made to escape this grapple have disadvantage.",attack_bonus:0},{name:"False Appearance (Object Form Only)",desc:"While the mimic remains motionless, it is indistinguishable from an ordinary object.",attack_bonus:0},{name:"Grappler",desc:"The mimic has advantage on attack rolls against any creature grappled by it.",attack_bonus:0}],actions:[{name:"Pseudopod",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) bludgeoning damage. If the mimic is in object form, the target is subjected to its Adhesive trait.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) piercing damage plus 4 (1d8) acid damage.",attack_bonus:5,damage_dice:"1d8 + 1d8",damage_bonus:3}]},{name:"Minotaur",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:14,hp:76,hit_dice:"9d10 + 26",speed:"40 ft.",stats:[18,11,16,6,16,9],skillsaves:[{perception:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 17",languages:"Abyssal",cr:"3",bestiary:!0,traits:[{name:"Charge",desc:"If the minotaur moves at least 10 ft. straight toward a target and then hits it with a gore attack on the same turn, the target takes an extra 9 (2d8) piercing damage. If the target is a creature, it must succeed on a DC 14 Strength saving throw or be pushed up to 10 ft. away and knocked prone.",attack_bonus:0,damage_dice:"2d8"},{name:"Labyrinthine Recall",desc:"The minotaur can perfectly recall any path it has traveled.",attack_bonus:0},{name:"Reckless",desc:"At the start of its turn, the minotaur can gain advantage on all melee weapon attack rolls it makes during that turn, but attack rolls against it have advantage until the start of its next turn.",attack_bonus:0}],actions:[{name:"Greataxe",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 17 (2d12 + 4) slashing damage.",attack_bonus:6,damage_dice:"2d12",damage_bonus:4},{name:"Gore",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) piercing damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4}]},{name:"Minotaur Skeleton",source:"5e SRD",size:"Large",type:"undead",subtype:"",alignment:"lawful evil",ac:12,hp:67,hit_dice:"9d10 + 17",speed:"40 ft.",stats:[18,11,15,6,8,5],damage_vulnerabilities:"bludgeoning",damage_resistances:"",damage_immunities:"poison",condition_immunities:"exhaustion, poisoned",senses:"darkvision 60 ft., passive Perception 9",languages:"understands Abyssal but can't speak",cr:"2",bestiary:!0,traits:[{name:"Charge",desc:"If the skeleton moves at least 10 feet straight toward a target and then hits it with a gore attack on the same turn, the target takes an extra 9 (2d8) piercing damage. If the target is a creature, it must succeed on a DC 14 Strength saving throw or be pushed up to 10 feet away and knocked prone.",attack_bonus:0,damage_dice:"2d8"}],actions:[{name:"Greataxe",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 17 (2d12 + 4) slashing damage.",attack_bonus:6,damage_dice:"2d12",damage_bonus:4},{name:"Gore",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) piercing damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4}]},{name:"Mule",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:11,hit_dice:"2d8 + 2",speed:"40 ft.",stats:[14,10,13,2,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/8",bestiary:!0,traits:[{name:"Beast of Burden",desc:"The mule is considered to be a Large animal for the purpose of determining its carrying capacity.",attack_bonus:0},{name:"Sure-Footed",desc:"The mule has advantage on Strength and Dexterity saving throws made against effects that would knock it prone.",attack_bonus:0}],actions:[{name:"Hooves",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Mummy",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"lawful evil",ac:11,hp:58,hit_dice:"9d8 + 17",speed:"20 ft.",stats:[16,8,15,6,10,12],saves:[{wisdom:2}],damage_vulnerabilities:"fire",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"necrotic, poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"the languages it knew in life",cr:"3",bestiary:!0,actions:[{name:"Multiattack",desc:"The mummy can use its Dreadful Glare and makes one attack with its rotting fist.",attack_bonus:0},{name:"Rotting Fist",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) bludgeoning damage plus 10 (3d6) necrotic damage. If the target is a creature, it must succeed on a DC 12 Constitution saving throw or be cursed with mummy rot. The cursed target can't regain hit points, and its hit point maximum decreases by 10 (3d6) for every 24 hours that elapse. If the curse reduces the target's hit point maximum to 0, the target dies, and its body turns to dust. The curse lasts until removed by the remove curse spell or other magic.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3},{name:"Dreadful Glare",desc:"The mummy targets one creature it can see within 60 ft. of it. If the target can see the mummy, it must succeed on a DC 11 Wisdom saving throw against this magic or become frightened until the end of the mummy's next turn. If the target fails the saving throw by 5 or more, it is also paralyzed for the same duration. A target that succeeds on the saving throw is immune to the Dreadful Glare of all mummies (but not mummy lords) for the next 24 hours.",attack_bonus:0}]},{name:"Mummy Lord",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"lawful evil",ac:17,hp:97,hit_dice:"13d8 + 38",speed:"20 ft.",stats:[18,10,17,11,18,16],saves:[{constitution:8},{intelligence:5},{wisdom:9},{charisma:8}],skillsaves:[{history:5},{religion:5}],damage_vulnerabilities:"bludgeoning",damage_resistances:"",damage_immunities:"necrotic, poison; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"charmed, exhaustion, frightened, paralyzed, poisoned",senses:"darkvision 60 ft., passive Perception 14",languages:"the languages it knew in life",cr:"15",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The mummy lord has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Rejuvenation",desc:"A destroyed mummy lord gains a new body in 24 hours if its heart is intact, regaining all its hit points and becoming active again. The new body appears within 5 feet of the mummy lord's heart.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The mummy can use its Dreadful Glare and makes one attack with its rotting fist.",attack_bonus:0},{name:"Rotting Fist",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 14 (3d6 + 4) bludgeoning damage plus 21 (6d6) necrotic damage. If the target is a creature, it must succeed on a DC 16 Constitution saving throw or be cursed with mummy rot. The cursed target can't regain hit points, and its hit point maximum decreases by 10 (3d6) for every 24 hours that elapse. If the curse reduces the target's hit point maximum to 0, the target dies, and its body turns to dust. The curse lasts until removed by the remove curse spell or other magic.",attack_bonus:9,damage_dice:"3d6 + 6d6",damage_bonus:4},{name:"Dreadful Glare",desc:"The mummy lord targets one creature it can see within 60 feet of it. If the target can see the mummy lord, it must succeed on a DC 16 Wisdom saving throw against this magic or become frightened until the end of the mummy's next turn. If the target fails the saving throw by 5 or more, it is also paralyzed for the same duration. A target that succeeds on the saving throw is immune to the Dreadful Glare of all mummies and mummy lords for the next 24 hours.",attack_bonus:0}],legendary_actions:[{name:"Attack",desc:"The mummy lord makes one attack with its rotting fist or uses its Dreadful Glare.",attack_bonus:0},{name:"Blinding Dust",desc:"Blinding dust and sand swirls magically around the mummy lord. Each creature within 5 feet of the mummy lord must succeed on a DC 16 Constitution saving throw or be blinded until the end of the creature's next turn.",attack_bonus:0},{name:"Blasphemous Word (Costs 2 Actions)",desc:"The mummy lord utters a blasphemous word. Each non-undead creature within 10 feet of the mummy lord that can hear the magical utterance must succeed on a DC 16 Constitution saving throw or be stunned until the end of the mummy lord's next turn.",attack_bonus:0},{name:"Channel Negative Energy (Costs 2 Actions)",desc:"The mummy lord magically unleashes negative energy. Creatures within 60 feet of the mummy lord, including ones behind barriers and around corners, can't regain hit points until the end of the mummy lord's next turn.",attack_bonus:0},{name:"Whirlwind of Sand (Costs 2 Actions)",desc:"The mummy lord magically transforms into a whirlwind of sand, moves up to 60 feet, and reverts to its normal form. While in whirlwind form, the mummy lord is immune to all damage, and it can't be grappled, petrified, knocked prone, restrained, or stunned. Equipment worn or carried by the mummy lord remain in its possession.",attack_bonus:0}],spells:["The mummy lord is a 10th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 17, +9 to hit with spell attacks). The mummy lord has the following cleric spells prepared:",{"Cantrips (at will)":"sacred flame, thaumaturgy"},{"1st level (4 slots)":"command, guiding bolt, shield of faith"},{"2nd level (3 slots)":"hold person, silence, spiritual weapon"},{"3rd level (3 slots)":"animate dead, dispel magic"},{"4th level (3 slots)":"divination, guardian of faith"},{"5th level (2 slots)":"contagion, insect plague"},{"6th level (1 slot)":"harm"}]},{name:"Nalfeshnee",source:"5e SRD",size:"Large",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:18,hp:184,hit_dice:"16d10 + 96",speed:"20 ft., fly 30 ft.",stats:[21,10,22,19,12,15],saves:[{constitution:11},{intelligence:9},{wisdom:6},{charisma:7}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 11",languages:"Abyssal, telepathy 120 ft.",cr:"13",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The nalfeshnee has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The nalfeshnee uses Horror Nimbus if it can. It then makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 32 (5d10 + 5) piercing damage.",attack_bonus:10,damage_dice:"5d10",damage_bonus:5},{name:"Claw",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 15 (3d6 + 5) slashing damage.",attack_bonus:10,damage_dice:"3d6",damage_bonus:5},{name:"Horror Nimbus (Recharge 5-6)",desc:"The nalfeshnee magically emits scintillating, multicolored light. Each creature within 15 feet of the nalfeshnee that can see the light must succeed on a DC 15 Wisdom saving throw or be frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the nalfeshnee's Horror Nimbus for the next 24 hours.",attack_bonus:0},{name:"Teleport",desc:"The nalfeshnee magically teleports, along with any equipment it is wearing or carrying, up to 120 feet to an unoccupied space it can see.",attack_bonus:0},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A nalfeshnee has a 50 percent chance of summoning 1d4 vrocks, 1d3 hezrous, 1d2 glabrezus, or one nalfeshnee. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}]},{name:"Night Hag",source:"5e SRD",size:"Medium",type:"fiend",subtype:"",alignment:"neutral evil",ac:17,hp:112,hit_dice:"15d8 + 44",speed:"30 ft.",stats:[18,15,16,16,14,16],skillsaves:[{deception:7},{insight:6},{perception:6},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"cold, fire; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"",condition_immunities:"charmed",senses:"darkvision 120 ft., passive Perception 16",languages:"Abyssal, Common, Infernal, Primordial",cr:"5",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:`The hag's innate spellcasting ability is Charisma (spell save DC 14, +6 to hit with spell attacks). She can innately cast the following spells, requiring no material components: + +At will: detect magic, magic missile +2/day each: plane shift (self only), ray of enfeeblement, sleep`,attack_bonus:0},{name:"Magic Resistance",desc:"The hag has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Night Hag Items",desc:`A night hag carries two very rare magic items that she must craft for herself If either object is lost, the night hag will go to great lengths to retrieve it, as creating a new tool takes time and effort. +Heartstone: This lustrous black gem allows a night hag to become ethereal while it is in her possession. The touch of a heartstone also cures any disease. Crafting a heartstone takes 30 days. +Soul Bag: When an evil humanoid dies as a result of a night hag's Nightmare Haunting, the hag catches the soul in this black sack made of stitched flesh. A soul bag can hold only one evil soul at a time, and only the night hag who crafted the bag can catch a soul with it. Crafting a soul bag takes 7 days and a humanoid sacrifice (whose flesh is used to make the bag).`,attack_bonus:0},{name:"Hag Coven",desc:`When hags must work together, they form covens, in spite of their selfish natures. A coven is made up of hags of any type, all of whom are equals within the group. However, each of the hags continues to desire more personal power. +A coven consists of three hags so that any arguments between two hags can be settled by the third. If more than three hags ever come together, as might happen if two covens come into conflict, the result is usually chaos.`,attack_bonus:0},{name:"Shared Spellcasting (Coven Only)",desc:`While all three members of a hag coven are within 30 feet of one another, they can each cast the following spells from the wizard's spell list but must share the spell slots among themselves: + +\u2022 1st level (4 slots): identify, ray of sickness +\u2022 2nd level (3 slots): hold person, locate object +\u2022 3rd level (3 slots): bestow curse, counterspell, lightning bolt +\u2022 4th level (3 slots): phantasmal killer, polymorph +\u2022 5th level (2 slots): contact other plane, scrying +\u2022 6th level (1 slot): eye bite + +For casting these spells, each hag is a 12th-level spellcaster that uses Intelligence as her spellcasting ability. The spell save DC is 12+the hag's Intelligence modifier, and the spell attack bonus is 4+the hag's Intelligence modifier.`,attack_bonus:0},{name:"Hag Eye (Coven Only)",desc:`A hag coven can craft a magic item called a hag eye, which is made from a real eye coated in varnish and often fitted to a pendant or other wearable item. The hag eye is usually entrusted to a minion for safekeeping and transport. A hag in the coven can take an action to see what the hag eye sees if the hag eye is on the same plane of existence. A hag eye has AC 10, 1 hit point, and darkvision with a radius of 60 feet. If it is destroyed, each coven member takes 3d10 psychic damage and is blinded for 24 hours. +A hag coven can have only one hag eye at a time, and creating a new one requires all three members of the coven to perform a ritual. The ritual takes 1 hour, and the hags can't perform it while blinded. During the ritual, if the hags take any action other than performing the ritual, they must start over.`,attack_bonus:0}],actions:[{name:"Claws (Hag Form Only)",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4},{name:"Change Shape",desc:"The hag magically polymorphs into a Small or Medium female humanoid, or back into her true form. Her statistics are the same in each form. Any equipment she is wearing or carrying isn't transformed. She reverts to her true form if she dies.",attack_bonus:0},{name:"Etherealness",desc:"The hag magically enters the Ethereal Plane from the Material Plane, or vice versa. To do so, the hag must have a heartstone in her possession.",attack_bonus:0},{name:"Nightmare Haunting (1/Day)",desc:"While on the Ethereal Plane, the hag magically touches a sleeping humanoid on the Material Plane. A protection from evil and good spell cast on the target prevents this contact, as does a magic circle. As long as the contact persists, the target has dreadful visions. If these visions last for at least 1 hour, the target gains no benefit from its rest, and its hit point maximum is reduced by 5 (1d10). If this effect reduces the target's hit point maximum to 0, the target dies, and if the target was evil, its soul is trapped in the hag's soul bag. The reduction to the target's hit point maximum lasts until removed by the greater restoration spell or similar magic.",attack_bonus:0}]},{name:"Nightmare",source:"5e SRD",size:"Large",type:"fiend",subtype:"",alignment:"neutral evil",ac:13,hp:68,hit_dice:"8d10 + 24",speed:"60 ft., fly 90 ft.",stats:[18,15,16,10,13,15],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"passive Perception 11",languages:"understands Abyssal, Common, and Infernal but can't speak",cr:"3",bestiary:!0,traits:[{name:"Confer Fire Resistance",desc:"The nightmare can grant resistance to fire damage to anyone riding it.",attack_bonus:0},{name:"Illumination",desc:"The nightmare sheds bright light in a 10-foot radius and dim light for an additional 10 feet.",attack_bonus:0}],actions:[{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage plus 7 (2d6) fire damage.",attack_bonus:6,damage_dice:"2d8 + 2d6",damage_bonus:4},{name:"Ethereal Stride",desc:"The nightmare and up to three willing creatures within 5 feet of it magically enter the Ethereal Plane from the Material Plane, or vice versa.",attack_bonus:0}]},{name:"Noble",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:15,hp:9,hit_dice:"2d8",speed:"30 ft.",stats:[11,12,11,12,14,16],skillsaves:[{deception:5},{insight:4},{persuasion:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"any two languages",cr:"1/8",bestiary:!0,actions:[{name:"Rapier",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 5 (1d8 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1}],reactions:[{name:"Parry",desc:"The noble adds 2 to its AC against one melee attack that would hit it. To do so, the noble must see the attacker and be wielding a melee weapon.",attack_bonus:0}]},{name:"Ochre Jelly",source:"5e SRD",size:"Large",type:"ooze",subtype:"",alignment:"unaligned",ac:8,hp:45,hit_dice:"6d10 + 12",speed:"10 ft., climb 10 ft.",stats:[15,6,14,2,6,1],damage_vulnerabilities:"",damage_resistances:"acid",damage_immunities:"lightning, slashing",condition_immunities:"blinded, charmed, deafened, exhaustion, frightened, prone",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 8",languages:"",cr:"2",bestiary:!0,traits:[{name:"Amorphous",desc:"The jelly can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0},{name:"Spider Climb",desc:"The jelly can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0}],actions:[{name:"Pseudopod",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 9 (2d6 + 2) bludgeoning damage plus 3 (1d6) acid damage.",attack_bonus:4,damage_dice:"2d6",damage_bonus:2}],reactions:[{name:"Split",desc:"When a jelly that is Medium or larger is subjected to lightning or slashing damage, it splits into two new jellies if it has at least 10 hit points. Each new jelly has hit points equal to half the original jelly's, rounded down. New jellies are one size smaller than the original jelly.",attack_bonus:0}]},{name:"Octopus",source:"5e SRD",size:"Small",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:3,hit_dice:"1d6 + -1",speed:"5 ft., swim 30 ft.",stats:[4,15,11,3,10,4],skillsaves:[{perception:2},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 12",languages:"",cr:"0",bestiary:!0,traits:[{name:"Hold Breath",desc:"While out of water, the octopus can hold its breath for 30 minutes.",attack_bonus:0},{name:"Underwater Camouflage",desc:"The octopus has advantage on Dexterity (Stealth) checks made while underwater.",attack_bonus:0},{name:"Water Breathing",desc:"The octopus can breathe only underwater.",attack_bonus:0}],actions:[{name:"Tentacles",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 1 bludgeoning damage, and the target is grappled (escape DC 10). Until this grapple ends, the octopus can't use its tentacles on another target.",attack_bonus:4,damage_bonus:1},{name:"Ink Cloud (Recharges after a Short or Long Rest)",desc:"A 5-foot-radius cloud of ink extends all around the octopus if it is underwater. The area is heavily obscured for 1 minute, although a significant current can disperse the ink. After releasing the ink, the octopus can use the Dash action as a bonus action.",attack_bonus:0}]},{name:"Ogre",source:"5e SRD",size:"Large",type:"giant",subtype:"",alignment:"chaotic evil",ac:11,hp:59,hit_dice:"7d10 + 20",speed:"40 ft.",stats:[19,8,16,5,7,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 8",languages:"Common, Giant",cr:"2",bestiary:!0,actions:[{name:"Greatclub",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4},{name:"Javelin",desc:"Melee or Ranged Weapon Attack: +6 to hit, reach 5 ft. or range 30/120 ft., one target. Hit: 11 (2d6 + 4) piercing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Ogre Zombie",source:"5e SRD",size:"Large",type:"undead",subtype:"",alignment:"neutral evil",ac:8,hp:85,hit_dice:"9d10 + 35",speed:"30 ft.",stats:[19,6,18,3,6,5],saves:[{wisdom:0}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 8",languages:"understands Common and Giant but can't speak",cr:"2",bestiary:!0,traits:[{name:"Undead Fortitude",desc:"If damage reduces the zombie to 0 hit points, it must make a Constitution saving throw with a DC of 5+the damage taken, unless the damage is radiant or from a critical hit. On a success, the zombie drops to 1 hit point instead.",attack_bonus:0}],actions:[{name:"Morningstar",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d8",damage_bonus:4}]},{name:"Oni",source:"5e SRD",size:"Large",type:"giant",subtype:"",alignment:"lawful evil",ac:16,hp:110,hit_dice:"13d10 + 38",speed:"30 ft., fly 30 ft.",stats:[19,11,16,14,12,15],saves:[{dexterity:3},{constitution:6},{wisdom:4},{charisma:5}],skillsaves:[{arcana:5},{deception:8},{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Common, Giant",cr:"7",bestiary:!0,traits:[{name:"Innate Spellcasting",desc:`The oni's innate spellcasting ability is Charisma (spell save DC 13). The oni can innately cast the following spells, requiring no material components: + +At will: darkness, invisibility +1/day each: charm person, cone of cold, gaseous form, sleep`,attack_bonus:0},{name:"Magic Weapons",desc:"The oni's weapon attacks are magical.",attack_bonus:0},{name:"Regeneration",desc:"The oni regains 10 hit points at the start of its turn if it has at least 1 hit point.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The oni makes two attacks, either with its claws or its glaive.",attack_bonus:0},{name:"Claw (Oni Form Only)",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 8 (1d8 + 4) slashing damage.",attack_bonus:7,damage_dice:"1d8",damage_bonus:4},{name:"Glaive",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) slashing damage, or 9 (1d10 + 4) slashing damage in Small or Medium form.",attack_bonus:7,damage_dice:"2d10",damage_bonus:4},{name:"Change Shape",desc:"The oni magically polymorphs into a Small or Medium humanoid, into a Large giant, or back into its true form. Other than its size, its statistics are the same in each form. The only equipment that is transformed is its glaive, which shrinks so that it can be wielded in humanoid form. If the oni dies, it reverts to its true form, and its glaive reverts to its normal size.",attack_bonus:0}]},{name:"Orc",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"orc",alignment:"chaotic evil",ac:13,hp:15,hit_dice:"2d8 + 6",speed:"30 ft.",stats:[16,12,16,7,11,10],skillsaves:[{intimidation:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Common, Orc",cr:"1/2",bestiary:!0,traits:[{name:"Aggressive",desc:"As a bonus action, the orc can move up to its speed toward a hostile creature that it can see.",attack_bonus:0}],actions:[{name:"Greataxe",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 9 (1d12 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d12",damage_bonus:3},{name:"Javelin",desc:"Melee or Ranged Weapon Attack: +5 to hit, reach 5 ft. or range 30/120 ft., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3}]},{name:"Otyugh",source:"5e SRD",size:"Large",type:"aberration",subtype:"",alignment:"neutral",ac:14,hp:114,hit_dice:"12d10 + 48",speed:"30 ft.",stats:[16,11,19,6,13,6],saves:[{constitution:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 11",languages:"Otyugh",cr:"5",bestiary:!0,traits:[{name:"Limited Telepathy",desc:"The otyugh can magically transmit simple messages and images to any creature within 120 ft. of it that can understand a language. This form of telepathy doesn't allow the receiving creature to telepathically respond.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The otyugh makes three attacks: one with its bite and two with its tentacles.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 12 (2d8 + 3) piercing damage. If the target is a creature, it must succeed on a DC 15 Constitution saving throw against disease or become poisoned until the disease is cured. Every 24 hours that elapse, the target must repeat the saving throw, reducing its hit point maximum by 5 (1d10) on a failure. The disease is cured on a success. The target dies if the disease reduces its hit point maximum to 0. This reduction to the target's hit point maximum lasts until the disease is cured.",attack_bonus:6,damage_dice:"2d8",damage_bonus:3},{name:"Tentacle",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 7 (1d8 + 3) bludgeoning damage plus 4 (1d8) piercing damage. If the target is Medium or smaller, it is grappled (escape DC 13) and restrained until the grapple ends. The otyugh has two tentacles, each of which can grapple one target.",attack_bonus:6,damage_dice:"1d8",damage_bonus:3},{name:"Tentacle Slam",desc:"The otyugh slams creatures grappled by it into each other or a solid surface. Each creature must succeed on a DC 14 Constitution saving throw or take 10 (2d6 + 3) bludgeoning damage and be stunned until the end of the otyugh's next turn. On a successful save, the target takes half the bludgeoning damage and isn't stunned.",attack_bonus:0}]},{name:"Owl",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:1,hit_dice:"1d4 + -2",speed:"5 ft., fly 60 ft.",stats:[3,13,8,2,12,7],skillsaves:[{perception:3},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Flyby",desc:"The owl doesn't provoke opportunity attacks when it flies out of an enemy's reach.",attack_bonus:0},{name:"Keen Hearing and Sight",desc:"The owl has advantage on Wisdom (Perception) checks that rely on hearing or sight.",attack_bonus:0}],actions:[{name:"Talons",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 1 slashing damage.",attack_bonus:3,damage_bonus:1}]},{name:"Owlbear",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:13,hp:59,hit_dice:"7d10 + 20",speed:"40 ft.",stats:[20,12,17,3,12,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"3",bestiary:!0,traits:[{name:"Keen Sight and Smell",desc:"The owlbear has advantage on Wisdom (Perception) checks that rely on sight or smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The owlbear makes two attacks: one with its beak and one with its claws.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one creature. Hit: 10 (1d10 + 5) piercing damage.",attack_bonus:7,damage_dice:"1d10",damage_bonus:5},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 14 (2d8 + 5) slashing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:5}]},{name:"Panther",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:13,hit_dice:"3d8 + -1",speed:"50 ft., climb 40 ft.",stats:[14,15,10,3,14,7],skillsaves:[{perception:4},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Keen Smell",desc:"The panther has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Pounce",desc:"If the panther moves at least 20 ft. straight toward a creature and then hits it with a claw attack on the same turn, that target must succeed on a DC 12 Strength saving throw or be knocked prone. If the target is prone, the panther can make one bite attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Claw",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) slashing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Pegasus",source:"5e SRD",size:"Large",type:"celestial",subtype:"",alignment:"chaotic good",ac:12,hp:59,hit_dice:"7d10 + 20",speed:"60 ft., fly 90 ft.",stats:[18,15,16,10,15,13],saves:[{dexterity:4},{wisdom:4},{charisma:3}],skillsaves:[{perception:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 16",languages:"understands Celestial, Common, Elvish, and Sylvan but can't speak",cr:"2",bestiary:!0,actions:[{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Phase Spider",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"unaligned",ac:13,hp:32,hit_dice:"5d10 + 4",speed:"30 ft., climb 30 ft.",stats:[15,15,12,6,10,6],skillsaves:[{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"",cr:"3",bestiary:!0,traits:[{name:"Ethereal Jaunt",desc:"As a bonus action, the spider can magically shift from the Material Plane to the Ethereal Plane, or vice versa.",attack_bonus:0},{name:"Spider Climb",desc:"The spider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Walker",desc:"The spider ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 7 (1d10 + 2) piercing damage, and the target must make a DC 11 Constitution saving throw, taking 18 (4d8) poison damage on a failed save, or half as much damage on a successful one. If the poison damage reduces the target to 0 hit points, the target is stable but poisoned for 1 hour, even after regaining hit points, and is paralyzed while poisoned in this way.",attack_bonus:4,damage_dice:"1d10",damage_bonus:2}]},{name:"Pit Fiend",source:"5e SRD",size:"Large",type:"fiend",subtype:"devil",alignment:"lawful evil",ac:19,hp:300,hit_dice:"24d10 + 168",speed:"30 ft., fly 60 ft.",stats:[26,14,24,22,18,24],saves:[{dexterity:8},{constitution:13},{wisdom:10}],damage_vulnerabilities:"",damage_resistances:"cold; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"truesight 120 ft., passive Perception 14",languages:"Infernal, telepathy 120 ft.",cr:"20",bestiary:!0,traits:[{name:"Fear Aura",desc:"Any creature hostile to the pit fiend that starts its turn within 20 feet of the pit fiend must make a DC 21 Wisdom saving throw, unless the pit fiend is incapacitated. On a failed save, the creature is frightened until the start of its next turn. If a creature's saving throw is successful, the creature is immune to the pit fiend's Fear Aura for the next 24 hours.",attack_bonus:0},{name:"Magic Resistance",desc:"The pit fiend has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The pit fiend's weapon attacks are magical.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The pit fiend's spellcasting ability is Charisma (spell save DC 21). The pit fiend can innately cast the following spells, requiring no material components: +At will: detect magic, fireball +3/day each: hold monster, wall of fire`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The pit fiend makes four attacks: one with its bite, one with its claw, one with its mace, and one with its tail.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +14 to hit, reach 5 ft., one target. Hit: 22 (4d6 + 8) piercing damage. The target must succeed on a DC 21 Constitution saving throw or become poisoned. While poisoned in this way, the target can't regain hit points, and it takes 21 (6d6) poison damage at the start of each of its turns. The poisoned target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:14,damage_dice:"4d6",damage_bonus:8},{name:"Claw",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft. , one target. Hit: 17 (2d8 + 8) slashing damage.",attack_bonus:14,damage_dice:"2d8",damage_bonus:8},{name:"Mace",desc:"Melee Weapon Attack: +14 to hit, reach 10ft., one target. Hit: 15 (2d6 + 8) bludgeoning damage plus 21 (6d6) fire damage.",attack_bonus:14,damage_dice:"2d6",damage_bonus:8},{name:"Tail",desc:"Melee Weapon Attack: +14 to hit, reach 10ft., one target. Hit: 24 (3d1O + 8) bludgeoning damage.",attack_bonus:14,damage_dice:"3d10",damage_bonus:8}]},{name:"Planetar",source:"5e SRD",size:"Large",type:"celestial",subtype:"",alignment:"lawful good",ac:19,hp:200,hit_dice:"16d10 + 112",speed:"40 ft., fly 120 ft.",stats:[24,20,24,19,22,25],saves:[{constitution:12},{wisdom:11},{charisma:12}],skillsaves:[{perception:11}],damage_vulnerabilities:"",damage_resistances:"radiant; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"",condition_immunities:"charmed, exhaustion, frightened",senses:"truesight 120 ft., passive Perception 21",languages:"all, telepathy 120 ft.",cr:"16",bestiary:!0,traits:[{name:"Angelic Weapons",desc:"The planetar's weapon attacks are magical. When the planetar hits with any weapon, the weapon deals an extra 5d8 radiant damage (included in the attack).",attack_bonus:0},{name:"Divine Awareness",desc:"The planetar knows if it hears a lie.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The planetar's spellcasting ability is Charisma (spell save DC 20). The planetar can innately cast the following spells, requiring no material components: +At will: detect evil and good, invisibility (self only) +3/day each: blade barrier, dispel evil and good, flame strike, raise dead +1/day each: commune, control weather, insect plague`,attack_bonus:0},{name:"Magic Resistance",desc:"The planetar has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The planetar makes two melee attacks.",attack_bonus:0},{name:"Greatsword",desc:"Melee Weapon Attack: +12 to hit, reach 5 ft., one target. Hit: 21 (4d6 + 7) slashing damage plus 22 (5d8) radiant damage.",attack_bonus:12,damage_dice:"4d6 + 5d8",damage_bonus:7},{name:"Healing Touch (4/Day)",desc:"The planetar touches another creature. The target magically regains 30 (6d8 + 3) hit points and is freed from any curse, disease, poison, blindness, or deafness.",attack_bonus:0}]},{name:"Plesiosaurus",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:68,hit_dice:"8d10 + 24",speed:"20 ft., swim 40 ft.",stats:[18,15,16,2,12,5],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Hold Breath",desc:"The plesiosaurus can hold its breath for 1 hour.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 10 ft., one target. Hit: 14 (3d6 + 4) piercing damage.",attack_bonus:6,damage_dice:"3d6",damage_bonus:4}]},{name:"Poisonous Snake",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:2,hit_dice:"1d4 + -1",speed:"30 ft., swim 30 ft.",stats:[2,16,11,1,10,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 10",languages:"",cr:"1/8",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 1 piercing damage, and the target must make a DC 10 Constitution saving throw, taking 5 (2d4) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:5,damage_bonus:1}]},{name:"Polar Bear",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:42,hit_dice:"5d10 + 14",speed:"40 ft., swim 30 ft.",stats:[20,10,16,2,13,7],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Keen Smell",desc:"The bear has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The bear makes two attacks: one with its bite and one with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 9 (1d8 + 5) piercing damage.",attack_bonus:7,damage_dice:"1d8",damage_bonus:5},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:5}]},{name:"Pony",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:11,hit_dice:"2d8 + 2",speed:"40 ft.",stats:[15,10,13,2,11,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/8",bestiary:!0,actions:[{name:"Hooves",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2}]},{name:"Priest",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:13,hp:27,hit_dice:"5d8 + 4",speed:"25 ft.",stats:[10,10,12,13,16,13],skillsaves:[{medicine:7},{persuasion:3},{religion:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"any two languages",cr:"2",bestiary:!0,traits:[{name:"Divine Eminence",desc:"As a bonus action, the priest can expend a spell slot to cause its melee weapon attacks to magically deal an extra 10 (3d6) radiant damage to a target on a hit. This benefit lasts until the end of the turn. If the priest expends a spell slot of 2nd level or higher, the extra damage increases by 1d6 for each level above 1st.",attack_bonus:0,damage_dice:"3d6"}],actions:[{name:"Mace",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 3 (1d6) bludgeoning damage.",attack_bonus:2,damage_dice:"1d6"}],spells:["The priest is a 5th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 13, +5 to hit with spell attacks). The priest has the following cleric spells prepared:",{"Cantrips (at will)":"light, sacred flame, thaumaturgy"},{"1st level (4 slots)":"cure wounds, guiding bolt, sanctuary"},{"2nd level (3 slots)":"lesser restoration, spiritual weapon"},{"3rd level (2 slots)":"dispel magic, spirit guardians"}]},{name:"Pseudodragon",source:"5e SRD",size:"Tiny",type:"dragon",subtype:"",alignment:"neutral good",ac:13,hp:7,hit_dice:"2d4 + 2",speed:"15 ft., fly 60 ft.",stats:[6,15,13,10,12,10],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 13",languages:"understands Common and Draconic but can't speak",cr:"1/4",bestiary:!0,traits:[{name:"Keen Senses",desc:"The pseudodragon has advantage on Wisdom (Perception) checks that rely on sight, hearing, or smell.",attack_bonus:0},{name:"Magic Resistance",desc:"The pseudodragon has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Limited Telepathy",desc:"The pseudodragon can magically communicate simple ideas, emotions, and images telepathically with any creature within 100 ft. of it that can understand a language.",attack_bonus:0},{name:"Variant: Familiar",desc:"The pseudodragon can serve another creature as a familiar, forming a magic, telepathic bond with that willing companion. While the two are bonded, the companion can sense what the pseudodragon senses as long as they are within 1 mile of each other. While the pseudodragon is within 10 feet of its companion, the companion shares the pseudodragon's Magic Resistance trait. At any time and for any reason, the pseudodragon can end its service as a familiar, ending the telepathic bond.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2},{name:"Sting",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 4 (1d4 + 2) piercing damage, and the target must succeed on a DC 11 Constitution saving throw or become poisoned for 1 hour. If the saving throw fails by 5 or more, the target falls unconscious for the same duration, or until it takes damage or another creature uses an action to shake it awake.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2}]},{name:"Purple Worm",source:"5e SRD",size:"Gargantuan",type:"monstrosity",subtype:"",alignment:"unaligned",ac:18,hp:247,hit_dice:"15d20 + 89",speed:"50 ft., burrow 30 ft.",stats:[28,7,22,1,8,4],saves:[{constitution:11},{wisdom:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., tremorsense 60 ft., passive Perception 9",languages:"",cr:"15",bestiary:!0,traits:[{name:"Tunneler",desc:"The worm can burrow through solid rock at half its burrow speed and leaves a 10-foot-diameter tunnel in its wake.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The worm makes two attacks: one with its bite and one with its stinger.",attack_bonus:0},{name:"Bite",desc:`Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 22 (3d8 + 9) piercing damage. If the target is a Large or smaller creature, it must succeed on a DC 19 Dexterity saving throw or be swallowed by the worm. A swallowed creature is blinded and restrained, it has total cover against attacks and other effects outside the worm, and it takes 21 (6d6) acid damage at the start of each of the worm's turns. +If the worm takes 30 damage or more on a single turn from a creature inside it, the worm must succeed on a DC 21 Constitution saving throw at the end of that turn or regurgitate all swallowed creatures, which fall prone in a space within 10 feet of the worm. If the worm dies, a swallowed creature is no longer restrained by it and can escape from the corpse by using 20 feet of movement, exiting prone.`,attack_bonus:9,damage_dice:"3d8",damage_bonus:9},{name:"Tail Stinger",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one creature. Hit: 19 (3d6 + 9) piercing damage, and the target must make a DC 19 Constitution saving throw, taking 42 (12d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:9,damage_dice:"3d6",damage_bonus:9}]},{name:"Quasit",source:"5e SRD",size:"Tiny",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:13,hp:7,hit_dice:"3d4 + -1",speed:"40 ft.",stats:[5,17,10,7,10,10],skillsaves:[{stealth:5}],damage_vulnerabilities:"",damage_resistances:"cold; fire; lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 10",languages:"Abyssal, Common",cr:"1",bestiary:!0,traits:[{name:"Shapechanger",desc:"The quasit can use its action to polymorph into a beast form that resembles a bat (speed 10 ft. fly 40 ft.), a centipede (40 ft., climb 40 ft.), or a toad (40 ft., swim 40 ft.), or back into its true form . Its statistics are the same in each form, except for the speed changes noted. Any equipment it is wearing or carrying isn't transformed . It reverts to its true form if it dies.",attack_bonus:0},{name:"Magic Resistance",desc:"The quasit has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Variant: Familiar",desc:"The quasit can serve another creature as a familiar, forming a telepathic bond with its willing master. While the two are bonded, the master can sense what the quasit senses as long as they are within 1 mile of each other. While the quasit is within 10 feet of its master, the master shares the quasit's Magic Resistance trait. At any time and for any reason, the quasit can end its service as a familiar, ending the telepathic bond.",attack_bonus:0}],actions:[{name:"Claw (Bite in Beast Form)",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft ., one target. Hit: 5 (1d4 + 3) piercing damage, and the target must succeed on a DC 10 Constitution saving throw or take 5 (2d4) poison damage and become poisoned for 1 minute. The target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:4,damage_dice:"1d4",damage_bonus:3},{name:"Scare (1/day)",desc:"One creature of the quasit's choice within 20 ft. of it must succeed on a DC 10 Wisdom saving throw or be frightened for 1 minute. The target can repeat the saving throw at the end of each of its turns, with disadvantage if the quasit is within line of sight, ending the effect on itself on a success.",attack_bonus:0},{name:"Invisibility",desc:"The quasit magically turns invisible until it attacks or uses Scare, or until its concentration ends (as if concentrating on a spell). Any equipment the quasit wears or carries is invisible with it.",attack_bonus:0}]},{name:"Quipper",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:1,hit_dice:"1d4 + -2",speed:"swim 40 ft.",stats:[2,16,9,1,7,2],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 8",languages:"",cr:"0",bestiary:!0,traits:[{name:"Blood Frenzy",desc:"The quipper has advantage on melee attack rolls against any creature that doesn't have all its hit points.",attack_bonus:0},{name:"Water Breathing",desc:"The quipper can breathe only underwater.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 1 piercing damage.",attack_bonus:5,damage_bonus:1}]},{name:"Rakshasa",source:"5e SRD",size:"Medium",type:"fiend",subtype:"",alignment:"lawful evil",ac:16,hp:110,hit_dice:"13d8 + 51",speed:"40 ft.",stats:[14,17,18,13,16,20],skillsaves:[{deception:10},{insight:8}],damage_vulnerabilities:"piercing from magic weapons wielded by good creatures",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"Common, Infernal",cr:"13",bestiary:!0,traits:[{name:"Limited Magic Immunity",desc:"The rakshasa can't be affected or detected by spells of 6th level or lower unless it wishes to be. It has advantage on saving throws against all other spells and magical effects.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The rakshasa's innate spellcasting ability is Charisma (spell save DC 18, +10 to hit with spell attacks). The rakshasa can innately cast the following spells, requiring no material components: + +At will: detect thoughts, disguise self, mage hand, minor illusion +3/day each: charm person, detect magic, invisibility, major image, suggestion +1/day each: dominate person, fly, plane shift, true seeing`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The rakshasa makes two claw attacks",attack_bonus:0},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 9 (2d6 + 2) slashing damage, and the target is cursed if it is a creature. The magical curse takes effect whenever the target takes a short or long rest, filling the target's thoughts with horrible images and dreams. The cursed target gains no benefit from finishing a short or long rest. The curse lasts until it is lifted by a remove curse spell or similar magic.",attack_bonus:7,damage_dice:"2d6",damage_bonus:2}]},{name:"Rat",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:1,hit_dice:"1d4 + -2",speed:"20 ft.",stats:[2,11,9,2,10,4],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 10",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Smell",desc:"The rat has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +0 to hit, reach 5 ft., one target. Hit: 1 piercing damage.",attack_bonus:0,damage_bonus:1}]},{name:"Raven",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:1,hit_dice:"1d4 + -2",speed:"10 ft., fly 50 ft.",stats:[2,14,8,2,12,6],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Mimicry",desc:"The raven can mimic simple sounds it has heard, such as a person whispering, a baby crying, or an animal chittering. A creature that hears the sounds can tell they are imitations with a successful DC 10 Wisdom (Insight) check.",attack_bonus:0}],actions:[{name:"Beak",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 1 piercing damage.",attack_bonus:0}]},{name:"Red Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"chaotic evil",ac:17,hp:75,hit_dice:"10d8 + 30",speed:"30 ft., climb 30 ft., fly 60 ft.",stats:[19,10,17,12,11,15],saves:[{dexterity:2},{constitution:5},{wisdom:2},{charisma:4}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"4",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 9 (1d10 + 4) piercing damage plus 3 (1d6) fire damage.",attack_bonus:6,damage_dice:"1d10 + 1d6",damage_bonus:4},{name:"Fire Breath (Recharge 5-6)",desc:"The dragon exhales fire in a 15-foot cone. Each creature in that area must make a DC 13 Dexterity saving throw, taking 24 (7d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"7d6"}]},{name:"Reef Shark",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"4d8 + 4",speed:"swim 40 ft.",stats:[14,13,13,1,10,4],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 30 ft., passive Perception 12",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Pack Tactics",desc:"The shark has advantage on an attack roll against a creature if at least one of the shark's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0},{name:"Water Breathing",desc:"The shark can breathe only underwater.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Remorhaz",source:"5e SRD",size:"Huge",type:"monstrosity",subtype:"",alignment:"unaligned",ac:17,hp:195,hit_dice:"17d12 + 84",speed:"30 ft., burrow 20 ft.",stats:[24,13,21,4,10,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold, fire",condition_immunities:"",senses:"darkvision 60 ft., tremorsense 60 ft., passive Perception 10",languages:"",cr:"11",bestiary:!0,traits:[{name:"Heated Body",desc:"A creature that touches the remorhaz or hits it with a melee attack while within 5 feet of it takes 10 (3d6) fire damage.",attack_bonus:0,damage_dice:"3d6"}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +11 to hit, reach 10 ft., one target. Hit: 40 (6d10 + 7) piercing damage plus 10 (3d6) fire damage. If the target is a creature, it is grappled (escape DC 17). Until this grapple ends, the target is restrained, and the remorhaz can't bite another target.",attack_bonus:11,damage_dice:"6d10 + 3d6",damage_bonus:7},{name:"Swallow",desc:`The remorhaz makes one bite attack against a Medium or smaller creature it is grappling. If the attack hits, that creature takes the bite's damage and is swallowed, and the grapple ends. While swallowed, the creature is blinded and restrained, it has total cover against attacks and other effects outside the remorhaz, and it takes 21 (6d6) acid damage at the start of each of the remorhaz's turns. +If the remorhaz takes 30 damage or more on a single turn from a creature inside it, the remorhaz must succeed on a DC 15 Constitution saving throw at the end of that turn or regurgitate all swallowed creatures, which fall prone in a space within 10 feet oft he remorhaz. If the remorhaz dies, a swallowed creature is no longer restrained by it and can escape from the corpse using 15 feet of movement, exiting prone.`,attack_bonus:0}]},{name:"Rhinoceros",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:45,hit_dice:"6d10 + 12",speed:"40 ft.",stats:[21,8,15,2,12,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"",cr:"2",bestiary:!0,traits:[{name:"Charge",desc:"If the rhinoceros moves at least 20 ft. straight toward a target and then hits it with a gore attack on the same turn, the target takes an extra 9 (2d8) bludgeoning damage. If the target is a creature, it must succeed on a DC 15 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d8"}],actions:[{name:"Gore",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 14 (2d8 + 5) bludgeoning damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:5}]},{name:"Riding Horse",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:13,hit_dice:"2d10 + 2",speed:"60 ft.",stats:[16,10,12,2,11,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"1/4",bestiary:!0,actions:[{name:"Hooves",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (2d4 + 3) bludgeoning damage.",attack_bonus:5,damage_dice:"2d4",damage_bonus:3}]},{name:"Roc",source:"5e SRD",size:"Gargantuan",type:"monstrosity",subtype:"",alignment:"unaligned",ac:15,hp:248,hit_dice:"16d20 + 80",speed:"20 ft., fly 120 ft.",stats:[28,10,20,3,10,9],saves:[{dexterity:4},{constitution:9},{wisdom:4},{charisma:3}],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"11",bestiary:!0,traits:[{name:"Keen Sight",desc:"The roc has advantage on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The roc makes two attacks: one with its beak and one with its talons.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +13 to hit, reach 10 ft., one target. Hit: 27 (4d8 + 9) piercing damage.",attack_bonus:13,damage_dice:"4d8",damage_bonus:9},{name:"Talons",desc:"Melee Weapon Attack: +13 to hit, reach 5 ft., one target. Hit: 23 (4d6 + 9) slashing damage, and the target is grappled (escape DC 19). Until this grapple ends, the target is restrained, and the roc can't use its talons on another target.",attack_bonus:13,damage_dice:"4d6",damage_bonus:9}]},{name:"Roper",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:20,hp:93,hit_dice:"11d10 + 32",speed:"10 ft., climb 10 ft.",stats:[18,8,17,7,16,6],skillsaves:[{perception:6},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 16",languages:"",cr:"5",bestiary:!0,traits:[{name:"False Appearance",desc:"While the roper remains motionless, it is indistinguishable from a normal cave formation, such as a stalagmite.",attack_bonus:0},{name:"Grasping Tendrils",desc:"The roper can have up to six tendrils at a time. Each tendril can be attacked (AC 20; 10 hit points; immunity to poison and psychic damage). Destroying a tendril deals no damage to the roper, which can extrude a replacement tendril on its next turn. A tendril can also be broken if a creature takes an action and succeeds on a DC 15 Strength check against it.",attack_bonus:0},{name:"Spider Climb",desc:"The roper can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The roper makes four attacks with its tendrils, uses Reel, and makes one attack with its bite.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 22 (4d8 + 4) piercing damage.",attack_bonus:7,damage_dice:"4d8",damage_bonus:4},{name:"Tendril",desc:"Melee Weapon Attack: +7 to hit, reach 50 ft., one creature. Hit: The target is grappled (escape DC 15). Until the grapple ends, the target is restrained and has disadvantage on Strength checks and Strength saving throws, and the roper can't use the same tendril on another target.",attack_bonus:7},{name:"Reel",desc:"The roper pulls each creature grappled by it up to 25 ft. straight toward it.",attack_bonus:0}]},{name:"Rug of Smothering",source:"5e SRD",size:"Large",type:"construct",subtype:"",alignment:"unaligned",ac:12,hp:33,hit_dice:"6d10",speed:"10 ft.",stats:[17,14,10,1,3,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison, psychic",condition_immunities:"blinded, charmed, deafened, frightened, paralyzed, petrified, poisoned",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 6",languages:"",cr:"2",bestiary:!0,traits:[{name:"Antimagic Susceptibility",desc:"The rug is incapacitated while in the area of an antimagic field. If targeted by dispel magic, the rug must succeed on a Constitution saving throw against the caster's spell save DC or fall unconscious for 1 minute.",attack_bonus:0},{name:"Damage Transfer",desc:"While it is grappling a creature, the rug takes only half the damage dealt to it, and the creature grappled by the rug takes the other half.",attack_bonus:0},{name:"False Appearance",desc:"While the rug remains motionless, it is indistinguishable from a normal rug.",attack_bonus:0}],actions:[{name:"Smother",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one Medium or smaller creature. Hit: The creature is grappled (escape DC 13). Until this grapple ends, the target is restrained, blinded, and at risk of suffocating, and the rug can't smother another target. In addition, at the start of each of the target's turns, the target takes 10 (2d6 + 3) bludgeoning damage.",attack_bonus:0,damage_dice:"2d6",damage_bonus:3}]},{name:"Rust Monster",source:"5e SRD",size:"Medium",type:"monstrosity",subtype:"",alignment:"unaligned",ac:14,hp:27,hit_dice:"5d8 + 4",speed:"40 ft.",stats:[13,12,13,2,13,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Iron Scent",desc:"The rust monster can pinpoint, by scent, the location of ferrous metal within 30 feet of it.",attack_bonus:0},{name:"Rust Metal",desc:"Any nonmagical weapon made of metal that hits the rust monster corrodes. After dealing damage, the weapon takes a permanent and cumulative -1 penalty to damage rolls. If its penalty drops to -5, the weapon is destroyed. Non magical ammunition made of metal that hits the rust monster is destroyed after dealing damage.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 5 (1d8 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d8",damage_bonus:1},{name:"Antennae",desc:`The rust monster corrodes a nonmagical ferrous metal object it can see within 5 feet of it. If the object isn't being worn or carried, the touch destroys a 1-foot cube of it. If the object is being worn or carried by a creature, the creature can make a DC 11 Dexterity saving throw to avoid the rust monster's touch. +If the object touched is either metal armor or a metal shield being worn or carried, its takes a permanent and cumulative -1 penalty to the AC it offers. Armor reduced to an AC of 10 or a shield that drops to a +0 bonus is destroyed. If the object touched is a held metal weapon, it rusts as described in the Rust Metal trait.`,attack_bonus:0}]},{name:"Saber-Toothed Tiger",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:52,hit_dice:"7d10 + 13",speed:"40 ft.",stats:[18,14,15,3,12,8],skillsaves:[{perception:3},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"2",bestiary:!0,traits:[{name:"Keen Smell",desc:"The tiger has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Pounce",desc:"If the tiger moves at least 20 ft. straight toward a creature and then hits it with a claw attack on the same turn, that target must succeed on a DC 14 Strength saving throw or be knocked prone. If the target is prone, the tiger can make one bite attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 10 (1d10 + 5) piercing damage.",attack_bonus:6,damage_dice:"1d10",damage_bonus:5},{name:"Claw",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:5}]},{name:"Sahuagin",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"sahuagin",alignment:"lawful evil",ac:12,hp:22,hit_dice:"4d8 + 4",speed:"30 ft., swim 40 ft.",stats:[13,11,12,12,13,9],skillsaves:[{perception:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 15",languages:"Sahuagin",cr:"1/2",bestiary:!0,traits:[{name:"Blood Frenzy",desc:"The sahuagin has advantage on melee attack rolls against any creature that doesn't have all its hit points.",attack_bonus:0},{name:"Limited Amphibiousness",desc:"The sahuagin can breathe air and water, but it needs to be submerged at least once every 4 hours to avoid suffocating.",attack_bonus:0},{name:"Shark Telepathy",desc:"The sahuagin can magically command any shark within 120 feet of it, using a limited telepathy.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The sahuagin makes two melee attacks: one with its bite and one with its claws or spear.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 3 (1d4 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1},{name:"Claws",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 3 (1d4 + 1) slashing damage.",attack_bonus:3,damage_dice:"1d4",damage_bonus:1},{name:"Spear",desc:"Melee or Ranged Weapon Attack: +3 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 4 (1d6 + 1) piercing damage, or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Salamander",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"neutral evil",ac:15,hp:90,hit_dice:"12d10 + 24",speed:"30 ft.",stats:[18,14,15,11,10,12],damage_vulnerabilities:"cold",damage_resistances:"bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"fire",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 10",languages:"Ignan",cr:"5",bestiary:!0,traits:[{name:"Heated Body",desc:"A creature that touches the salamander or hits it with a melee attack while within 5 ft. of it takes 7 (2d6) fire damage.",attack_bonus:0,damage_dice:"2d6"},{name:"Heated Weapons",desc:"Any metal melee weapon the salamander wields deals an extra 3 (1d6) fire damage on a hit (included in the attack).",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The salamander makes two attacks: one with its spear and one with its tail.",attack_bonus:0},{name:"Spear",desc:"Melee or Ranged Weapon Attack: +7 to hit, reach 5 ft. or range 20 ft./60 ft., one target. Hit: 11 (2d6 + 4) piercing damage, or 13 (2d8 + 4) piercing damage if used with two hands to make a melee attack, plus 3 (1d6) fire damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Tail",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage plus 7 (2d6) fire damage, and the target is grappled (escape DC 14). Until this grapple ends, the target is restrained, the salamander can automatically hit the target with its tail, and the salamander can't make tail attacks against other targets.",attack_bonus:7,damage_dice:"2d6 + 2d6",damage_bonus:4}]},{name:"Satyr",source:"5e SRD",size:"Medium",type:"fey",subtype:"",alignment:"chaotic neutral",ac:14,hp:31,hit_dice:"7d8 + -1",speed:"40 ft.",stats:[12,16,11,12,10,14],skillsaves:[{perception:2},{performance:6},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"Common, Elvish, Sylvan",cr:"1/2",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The satyr has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Ram",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 6 (2d4 + 1) bludgeoning damage.",attack_bonus:3,damage_dice:"2d4",damage_bonus:1},{name:"Shortsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1 d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Shortbow",desc:"Ranged Weapon Attack: +5 to hit, range 80/320 ft., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Variant: Panpipes",desc:"Gentle Lullaby. The creature falls asleep and is unconscious for 1 minute. The effect ends if the creature takes damage or if someone takes an action to shake the creature awake.",attack_bonus:0}]},{name:"Scorpion",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:1,hit_dice:"1d4 + -2",speed:"10 ft.",stats:[2,11,8,1,8,2],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"blindsight 10 ft., passive Perception 9",languages:"",cr:"0",bestiary:!0,actions:[{name:"Sting",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one creature. Hit: 1 piercing damage, and the target must make a DC 9 Constitution saving throw, taking 4 (1d8) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:2,damage_bonus:1}]},{name:"Scout",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:13,hp:16,hit_dice:"3d8 + 2",speed:"30 ft.",stats:[11,14,12,11,13,11],skillsaves:[{nature:4},{perception:5},{stealth:6},{survival:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 15",languages:"any one language (usually Common)",cr:"1/2",bestiary:!0,traits:[{name:"Keen Hearing and Sight",desc:"The scout has advantage on Wisdom (Perception) checks that rely on hearing or sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The scout makes two melee attacks or two ranged attacks.",attack_bonus:0},{name:"Shortsword",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Longbow",desc:"Ranged Weapon Attack: +4 to hit, ranged 150/600 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Sea Hag",source:"5e SRD",size:"Medium",type:"fey",subtype:"",alignment:"chaotic evil",ac:14,hp:52,hit_dice:"7d8 + 20",speed:"30 ft., swim 40 ft.",stats:[16,13,16,12,12,13],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 11",languages:"Aquan, Common, Giant",cr:"2",bestiary:!0,traits:[{name:"Amphibious",desc:"The hag can breathe air and water.",attack_bonus:0},{name:"Horrific Appearance",desc:`Any humanoid that starts its turn within 30 feet of the hag and can see the hag's true form must make a DC 11 Wisdom saving throw. On a failed save, the creature is frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, with disadvantage if the hag is within line of sight, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the hag's Horrific Appearance for the next 24 hours. +Unless the target is surprised or the revelation of the hag's true form is sudden, the target can avert its eyes and avoid making the initial saving throw. Until the start of its next turn, a creature that averts its eyes has disadvantage on attack rolls against the hag.`,attack_bonus:0},{name:"Hag Coven",desc:`When hags must work together, they form covens, in spite of their selfish natures. A coven is made up of hags of any type, all of whom are equals within the group. However, each of the hags continues to desire more personal power. +A coven consists of three hags so that any arguments between two hags can be settled by the third. If more than three hags ever come together, as might happen if two covens come into conflict, the result is usually chaos.`,attack_bonus:0},{name:"Shared Spellcasting (Coven Only)",desc:`While all three members of a hag coven are within 30 feet of one another, they can each cast the following spells from the wizard's spell list but must share the spell slots among themselves: + +\u2022 1st level (4 slots): identify, ray of sickness +\u2022 2nd level (3 slots): hold person, locate object +\u2022 3rd level (3 slots): bestow curse, counterspell, lightning bolt +\u2022 4th level (3 slots): phantasmal killer, polymorph +\u2022 5th level (2 slots): contact other plane, scrying +\u2022 6th level (1 slot): eye bite + +For casting these spells, each hag is a 12th-level spellcaster that uses Intelligence as her spellcasting ability. The spell save DC is 12+the hag's Intelligence modifier, and the spell attack bonus is 4+the hag's Intelligence modifier.`,attack_bonus:0},{name:"Hag Eye (Coven Only)",desc:`A hag coven can craft a magic item called a hag eye, which is made from a real eye coated in varnish and often fitted to a pendant or other wearable item. The hag eye is usually entrusted to a minion for safekeeping and transport. A hag in the coven can take an action to see what the hag eye sees if the hag eye is on the same plane of existence. A hag eye has AC 10, 1 hit point, and darkvision with a radius of 60 feet. If it is destroyed, each coven member takes 3d10 psychic damage and is blinded for 24 hours. +A hag coven can have only one hag eye at a time, and creating a new one requires all three members of the coven to perform a ritual. The ritual takes 1 hour, and the hags can't perform it while blinded. During the ritual, if the hags take any action other than performing the ritual, they must start over.`,attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3},{name:"Death Glare",desc:"The hag targets one frightened creature she can see within 30 ft. of her. If the target can see the hag, it must succeed on a DC 11 Wisdom saving throw against this magic or drop to 0 hit points.",attack_bonus:0},{name:"Illusory Appearance",desc:`The hag covers herself and anything she is wearing or carrying with a magical illusion that makes her look like an ugly creature of her general size and humanoid shape. The effect ends if the hag takes a bonus action to end it or if she dies. +The changes wrought by this effect fail to hold up to physical inspection. For example, the hag could appear to have no claws, but someone touching her hand might feel the claws. Otherwise, a creature must take an action to visually inspect the illusion and succeed on a DC 16 Intelligence (Investigation) check to discern that the hag is disguised.`,attack_bonus:0}]},{name:"Sea Horse",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:1,hit_dice:"1d4 + -2",speed:"swim 20 ft.",stats:[1,12,8,1,10,2],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"0",bestiary:!0,traits:[{name:"Water Breathing",desc:"The sea horse can breathe only underwater.",attack_bonus:0}]},{name:"Shadow",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"chaotic evil",ac:12,hp:16,hit_dice:"3d8 + 2",speed:"40 ft.",stats:[6,14,13,6,10,8],skillsaves:[{stealth:4}],damage_vulnerabilities:"radiant",damage_resistances:"acid, cold, fire, lightning, thunder; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"necrotic, poison",condition_immunities:"exhaustion, frightened, grappled, paralyzed, petrified, poisoned, prone, restrained",senses:"darkvision 60 ft., passive Perception 10",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Amorphous",desc:"The shadow can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0},{name:"Shadow Stealth",desc:"While in dim light or darkness, the shadow can take the Hide action as a bonus action. Its stealth bonus is also improved to +6.",attack_bonus:0},{name:"Sunlight Weakness",desc:"While in sunlight, the shadow has disadvantage on attack rolls, ability checks, and saving throws.",attack_bonus:0}],actions:[{name:"Strength Drain",desc:`Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 9 (2d6 + 2) necrotic damage, and the target's Strength score is reduced by 1d4. The target dies if this reduces its Strength to 0. Otherwise, the reduction lasts until the target finishes a short or long rest. +If a non-evil humanoid dies from this attack, a new shadow rises from the corpse 1d4 hours later.`,attack_bonus:4,damage_dice:"2d6",damage_bonus:2}]},{name:"Shambling Mound",source:"5e SRD",size:"Large",type:"plant",subtype:"",alignment:"unaligned",ac:15,hp:136,hit_dice:"16d10 + 48",speed:"20 ft., swim 20 ft.",stats:[18,8,16,5,10,5],skillsaves:[{stealth:2}],damage_vulnerabilities:"",damage_resistances:"cold, fire",damage_immunities:"lightning",condition_immunities:"blinded, deafened, exhaustion",senses:"blindsight 60 ft. (blind beyond this radius), passive Perception 10",languages:"",cr:"5",bestiary:!0,traits:[{name:"Lightning Absorption",desc:"Whenever the shambling mound is subjected to lightning damage, it takes no damage and regains a number of hit points equal to the lightning damage dealt.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The shambling mound makes two slam attacks. If both attacks hit a Medium or smaller target, the target is grappled (escape DC 14), and the shambling mound uses its Engulf on it.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4},{name:"Engulf",desc:"The shambling mound engulfs a Medium or smaller creature grappled by it. The engulfed target is blinded, restrained, and unable to breathe, and it must succeed on a DC 14 Constitution saving throw at the start of each of the mound's turns or take 13 (2d8 + 4) bludgeoning damage. If the mound moves, the engulfed target moves with it. The mound can have only one creature engulfed at a time.",attack_bonus:0}]},{name:"Shield Guardian",source:"5e SRD",size:"Large",type:"construct",subtype:"",alignment:"unaligned",ac:17,hp:142,hit_dice:"15d10 + 59",speed:"30 ft.",stats:[18,8,18,7,10,3],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"charmed, exhaustion, frightened, paralyzed, poisoned",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 10",languages:"understands commands given in any language but can't speak",cr:"7",bestiary:!0,traits:[{name:"Bound",desc:"The shield guardian is magically bound to an amulet. As long as the guardian and its amulet are on the same plane of existence, the amulet's wearer can telepathically call the guardian to travel to it, and the guardian knows the distance and direction to the amulet. If the guardian is within 60 feet of the amulet's wearer, half of any damage the wearer takes (rounded up) is transferred to the guardian.",attack_bonus:0},{name:"Regeneration",desc:"The shield guardian regains 10 hit points at the start of its turn if it has at least 1 hit. point.",attack_bonus:0},{name:"Spell Storing",desc:"A spellcaster who wears the shield guardian's amulet can cause the guardian to store one spell of 4th level or lower. To do so, the wearer must cast the spell on the guardian. The spell has no effect but is stored within the guardian. When commanded to do so by the wearer or when a situation arises that was predefined by the spellcaster, the guardian casts the stored spell with any parameters set by the original caster, requiring no components. When the spell is cast or a new spell is stored, any previously stored spell is lost.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The guardian makes two fist attacks.",attack_bonus:0},{name:"Fist",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4}],reactions:[{name:"Shield",desc:"When a creature makes an attack against the wearer of the guardian's amulet, the guardian grants a +2 bonus to the wearer's AC if the guardian is within 5 feet of the wearer.",attack_bonus:0}]},{name:"Shrieker",source:"5e SRD",size:"Medium",type:"plant",subtype:"",alignment:"unaligned",ac:5,hp:13,hit_dice:"3d8 + -1",speed:"0 ft.",stats:[1,1,10,1,3,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"blinded, deafened, frightened",senses:"blindsight 30 ft. (blind beyond this radius), passive Perception 6",languages:"",cr:"0",bestiary:!0,traits:[{name:"False Appearance",desc:"While the shrieker remains motionless, it is indistinguishable from an ordinary fungus.",attack_bonus:0}],actions:[{name:"Shriek",desc:"When bright light or a creature is within 30 feet of the shrieker, it emits a shriek audible within 300 feet of it. The shrieker continues to shriek until the disturbance moves out of range and for 1d4 of the shrieker's turns afterward",attack_bonus:0}]},{name:"Silver Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"lawful good",ac:17,hp:45,hit_dice:"6d8 + 18",speed:"30 ft., fly 60 ft.",stats:[19,10,17,12,11,15],saves:[{dexterity:2},{constitution:5},{wisdom:2},{charisma:4}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"2",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 9 (1d10 + 4) piercing damage.",attack_bonus:6,damage_dice:"1d10",damage_bonus:4},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Cold Breath. The dragon exhales an icy blast in a 15-foot cone. Each creature in that area must make a DC 13 Constitution saving throw, taking 18 (4d8) cold damage on a failed save, or half as much damage on a successful one. +Paralyzing Breath. The dragon exhales paralyzing gas in a 15-foot cone. Each creature in that area must succeed on a DC 13 Constitution saving throw or be paralyzed for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"4d8"}]},{name:"Skeleton",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"lawful evil",ac:13,hp:13,hit_dice:"2d8 + 4",speed:"30 ft.",stats:[10,14,15,6,8,5],damage_vulnerabilities:"bludgeoning",damage_resistances:"",damage_immunities:"",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 9",languages:"understands all languages it spoke in life but can't speak",cr:"1/4",bestiary:!0,actions:[{name:"Shortsword",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Shortbow",desc:"Ranged Weapon Attack: +4 to hit, range 80/320 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Solar",source:"5e SRD",size:"Large",type:"celestial",subtype:"",alignment:"lawful good",ac:21,hp:243,hit_dice:"18d10 + 144",speed:"50 ft., fly 150 ft.",stats:[26,22,26,25,25,30],saves:[{intelligence:14},{wisdom:14},{charisma:17}],skillsaves:[{perception:14}],damage_vulnerabilities:"",damage_resistances:"radiant; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"necrotic, poison",condition_immunities:"charmed, exhaustion, frightened, poisoned",senses:"truesight 120 ft., passive Perception 24",languages:"all, telepathy 120 ft.",cr:"21",bestiary:!0,traits:[{name:"Angelic Weapons",desc:"The solar's weapon attacks are magical. When the solar hits with any weapon, the weapon deals an extra 6d8 radiant damage (included in the attack).",attack_bonus:0},{name:"Divine Awareness",desc:"The solar knows if it hears a lie.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The solar's spell casting ability is Charisma (spell save DC 25). It can innately cast the following spells, requiring no material components: +At will: detect evil and good, invisibility (self only) +3/day each: blade barrier, dispel evil and good, resurrection +1/day each: commune, control weather`,attack_bonus:0},{name:"Magic Resistance",desc:"The solar has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The solar makes two greatsword attacks.",attack_bonus:0},{name:"Greatsword",desc:"Melee Weapon Attack: +15 to hit, reach 5 ft., one target. Hit: 22 (4d6 + 8) slashing damage plus 27 (6d8) radiant damage.",attack_bonus:15,damage_dice:"4d6 + 6d8",damage_bonus:8},{name:"Slaying Longbow",desc:"Ranged Weapon Attack: +13 to hit, range 150/600 ft., one target. Hit: 15 (2d8 + 6) piercing damage plus 27 (6d8) radiant damage. If the target is a creature that has 190 hit points or fewer, it must succeed on a DC 15 Constitution saving throw or die.",attack_bonus:13,damage_dice:"2d8 + 6d8",damage_bonus:6},{name:"Flying Sword",desc:"The solar releases its greatsword to hover magically in an unoccupied space within 5 ft. of it. If the solar can see the sword, the solar can mentally command it as a bonus action to fly up to 50 ft. and either make one attack against a target or return to the solar's hands. If the hovering sword is targeted by any effect, the solar is considered to be holding it. The hovering sword falls if the solar dies.",attack_bonus:0},{name:"Healing Touch (4/Day)",desc:"The solar touches another creature. The target magically regains 40 (8d8 + 4) hit points and is freed from any curse, disease, poison, blindness, or deafness.",attack_bonus:0}],legendary_actions:[{name:"Teleport",desc:"The solar magically teleports, along with any equipment it is wearing or carrying, up to 120 ft. to an unoccupied space it can see.",attack_bonus:0},{name:"Searing Burst (Costs 2 Actions)",desc:"The solar emits magical, divine energy. Each creature of its choice in a 10 -foot radius must make a DC 23 Dexterity saving throw, taking 14 (4d6) fire damage plus 14 (4d6) radiant damage on a failed save, or half as much damage on a successful one.",attack_bonus:0},{name:"Blinding Gaze (Costs 3 Actions)",desc:"The solar targets one creature it can see within 30 ft. of it. If the target can see it, the target must succeed on a DC 15 Constitution saving throw or be blinded until magic such as the lesser restoration spell removes the blindness.",attack_bonus:0}]},{name:"Specter",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"chaotic evil",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"0 ft., fly 50 ft. (hover)",stats:[1,14,11,10,10,11],damage_vulnerabilities:"",damage_resistances:"acid, cold, fire, lightning, thunder; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"necrotic, poison",condition_immunities:"charmed, exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained, unconscious",senses:"darkvision 60 ft., passive Perception 10",languages:"understands all languages it knew in life but can't speak",cr:"1",bestiary:!0,traits:[{name:"Incorporeal Movement",desc:"The specter can move through other creatures and objects as if they were difficult terrain. It takes 5 (1d10) force damage if it ends its turn inside an object.",attack_bonus:0},{name:"Sunlight Sensitivity",desc:"While in sunlight, the specter has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Life Drain",desc:"Melee Spell Attack: +4 to hit, reach 5 ft., one creature. Hit: 10 (3d6) necrotic damage. The target must succeed on a DC 10 Constitution saving throw or its hit point maximum is reduced by an amount equal to the damage taken. This reduction lasts until the creature finishes a long rest. The target dies if this effect reduces its hit point maximum to 0.",attack_bonus:4,damage_dice:"3d6"}]},{name:"Spider",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:1,hit_dice:"1d4 + -2",speed:"20 ft., climb 20 ft.",stats:[2,14,8,1,10,2],skillsaves:[{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 30 ft., passive Perception 12",languages:"",cr:"0",bestiary:!0,traits:[{name:"Spider Climb",desc:"The spider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Sense",desc:"While in contact with a web, the spider knows the exact location of any other creature in contact with the same web.",attack_bonus:0},{name:"Web Walker",desc:"The spider ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 1 piercing damage, and the target must succeed on a DC 9 Constitution saving throw or take 2 (1d4) poison damage.",attack_bonus:4,damage_bonus:1}]},{name:"Spirit Naga",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"chaotic evil",ac:15,hp:75,hit_dice:"10d10 + 20",speed:"40 ft.",stats:[18,17,14,16,15,16],saves:[{dexterity:6},{constitution:5},{wisdom:5},{charisma:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"charmed, poisoned",senses:"darkvision 60 ft., passive Perception 12",languages:"Abyssal, Common",cr:"8",bestiary:!0,traits:[{name:"Rejuvenation",desc:"If it dies, the naga returns to life in 1d6 days and regains all its hit points. Only a wish spell can prevent this trait from functioning.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one creature. Hit: 7 (1d6 + 4) piercing damage, and the target must make a DC 13 Constitution saving throw, taking 31 (7d8) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:7,damage_dice:"1d6",damage_bonus:4}],spells:["The naga is a 10th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 14, +6 to hit with spell attacks), and it needs only verbal components to cast its spells. It has the following wizard spells prepared:",{"Cantrips (at will)":"mage hand, minor illusion, ray of frost"},{"1st level (4 slots)":"charm person, detect magic, sleep"},{"2nd level (3 slots)":"detect thoughts, hold person"},{"3rd level (3 slots)":"lightning bolt, water breathing"},{"4th level (3 slots)":"blight, dimension door"},{"5th level (2 slots)":"dominate person"}]},{name:"Sprite",source:"5e SRD",size:"Tiny",type:"fey",subtype:"",alignment:"neutral good",ac:15,hp:2,hit_dice:"1d4 + -1",speed:"10 ft., fly 40 ft.",stats:[3,18,10,14,13,11],skillsaves:[{perception:3},{stealth:8}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"Common, Elvish, Sylvan",cr:"1/4",bestiary:!0,actions:[{name:"Longsword",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 1 slashing damage.",attack_bonus:2,damage_bonus:1},{name:"Shortbow",desc:"Ranged Weapon Attack: +6 to hit, range 40/160 ft., one target. Hit: 1 piercing damage, and the target must succeed on a DC 10 Constitution saving throw or become poisoned for 1 minute. If its saving throw result is 5 or lower, the poisoned target falls unconscious for the same duration, or until it takes damage or another creature takes an action to shake it awake.",attack_bonus:6,damage_bonus:1},{name:"Heart Sight",desc:"The sprite touches a creature and magically knows the creature's current emotional state. If the target fails a DC 10 Charisma saving throw, the sprite also knows the creature's alignment. Celestials, fiends, and undead automatically fail the saving throw.",attack_bonus:0},{name:"Invisibility",desc:"The sprite magically turns invisible until it attacks or casts a spell, or until its concentration ends (as if concentrating on a spell). Any equipment the sprite wears or carries is invisible with it.",attack_bonus:0}]},{name:"Spy",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:12,hp:27,hit_dice:"6d8",speed:"30 ft.",stats:[10,15,10,12,14,16],skillsaves:[{deception:5},{insight:4},{investigation:5},{perception:6},{persuasion:5},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 16",languages:"any two languages",cr:"1",bestiary:!0,traits:[{name:"Cunning Action",desc:"On each of its turns, the spy can use a bonus action to take the Dash, Disengage, or Hide action.",attack_bonus:0},{name:"Sneak Attack (1/Turn)",desc:"The spy deals an extra 7 (2d6) damage when it hits a target with a weapon attack and has advantage on the attack roll, or when the target is within 5 ft. of an ally of the spy that isn't incapacitated and the spy doesn't have disadvantage on the attack roll.",attack_bonus:0,damage_dice:"2d6"}],actions:[{name:"Multiattack",desc:"The spy makes two melee attacks.",attack_bonus:0},{name:"Shortsword",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Hand Crossbow",desc:"Ranged Weapon Attack: +4 to hit, range 30/120 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Steam Mephit",source:"5e SRD",size:"Small",type:"elemental",subtype:"",alignment:"neutral evil",ac:10,hp:21,hit_dice:"6d6",speed:"30 ft., fly 30 ft.",stats:[5,11,10,11,10,12],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire, poison",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 10",languages:"Aquan, Ignan",cr:"1/4",bestiary:!0,traits:[{name:"Death Burst",desc:"When the mephit dies, it explodes in a cloud of steam. Each creature within 5 ft. of the mephit must succeed on a DC 10 Dexterity saving throw or take 4 (1d8) fire damage.",attack_bonus:0,damage_dice:"1d8"},{name:"Innate Spellcasting (1/Day)",desc:"The mephit can innately cast blur, requiring no material components. Its innate spellcasting ability is Charisma.",attack_bonus:0}],actions:[{name:"Claws",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one creature. Hit: 2 (1d4) slashing damage plus 2 (1d4) fire damage.",attack_bonus:2,damage_dice:"2d4"},{name:"Steam Breath (Recharge 6)",desc:"The mephit exhales a 15-foot cone of scalding steam. Each creature in that area must succeed on a DC 10 Dexterity saving throw, taking 4 (1d8) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0},{name:"Variant: Summon Mephits (1/Day)",desc:"The mephit has a 25 percent chance of summoning 1d4 mephits of its kind. A summoned mephit appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other mephits. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.",attack_bonus:0}]},{name:"Stirge",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:14,hp:2,hit_dice:"1d4 + -1",speed:"10 ft., fly 40 ft.",stats:[4,16,11,2,8,6],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 9",languages:"",cr:"1/8",bestiary:!0,actions:[{name:"Blood Drain",desc:`Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 5 (1d4 + 3) piercing damage, and the stirge attaches to the target. While attached, the stirge doesn't attack. Instead, at the start of each of the stirge's turns, the target loses 5 (1d4 + 3) hit points due to blood loss. +The stirge can detach itself by spending 5 feet of its movement. It does so after it drains 10 hit points of blood from the target or the target dies. A creature, including the target, can use its action to detach the stirge.`,attack_bonus:5,damage_dice:"1d4",damage_bonus:3}]},{name:"Stone Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"neutral",ac:17,hp:126,hit_dice:"11d12 + 54",speed:"40 ft.",stats:[23,15,20,10,12,9],saves:[{dexterity:5},{constitution:8},{wisdom:4}],skillsaves:[{athletics:12},{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Giant",cr:"7",bestiary:!0,traits:[{name:"Stone Camouflage",desc:"The giant has advantage on Dexterity (Stealth) checks made to hide in rocky terrain.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The giant makes two greatclub attacks.",attack_bonus:0},{name:"Greatclub",desc:"Melee Weapon Attack: +9 to hit, reach 15 ft., one target. Hit: 19 (3d8 + 6) bludgeoning damage.",attack_bonus:9,damage_dice:"3d8",damage_bonus:6},{name:"Rock",desc:"Ranged Weapon Attack: +9 to hit, range 60/240 ft., one target. Hit: 28 (4d10 + 6) bludgeoning damage. If the target is a creature, it must succeed on a DC 17 Strength saving throw or be knocked prone.",attack_bonus:9,damage_dice:"4d10",damage_bonus:6}],reactions:[{name:"Rock Catching",desc:"If a rock or similar object is hurled at the giant, the giant can, with a successful DC 10 Dexterity saving throw, catch the missile and take no bludgeoning damage from it.",attack_bonus:0}]},{name:"Stone Golem",source:"5e SRD",size:"Large",type:"construct",subtype:"",alignment:"unaligned",ac:17,hp:178,hit_dice:"17d10 + 84",speed:"30 ft.",stats:[22,9,20,3,11,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison, psychic; bludgeoning, piercing, and slashing from nonmagical weapons that aren't adamantine",condition_immunities:"charmed, exhaustion, frightened, paralyzed, petrified, poisoned",senses:"darkvision 120 ft., passive Perception 10",languages:"understands the languages of its creator but can't speak",cr:"10",bestiary:!0,traits:[{name:"Immutable Form",desc:"The golem is immune to any spell or effect that would alter its form.",attack_bonus:0},{name:"Magic Resistance",desc:"The golem has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The golem's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The golem makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 19 (3d8 + 6) bludgeoning damage.",attack_bonus:10,damage_dice:"3d8",damage_bonus:6},{name:"Slow (Recharge 5-6)",desc:"The golem targets one or more creatures it can see within 10 ft. of it. Each target must make a DC 17 Wisdom saving throw against this magic. On a failed save, a target can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the target can take either an action or a bonus action on its turn, not both. These effects last for 1 minute. A target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.",attack_bonus:0}]},{name:"Storm Giant",source:"5e SRD",size:"Huge",type:"giant",subtype:"",alignment:"chaotic good",ac:16,hp:230,hit_dice:"20d12 + 100",speed:"50 ft., swim 50 ft.",stats:[29,14,20,16,18,18],saves:[{strength:14},{constitution:10},{wisdom:9},{charisma:9}],skillsaves:[{arcana:8},{athletics:14},{history:8},{perception:9}],damage_vulnerabilities:"",damage_resistances:"cold",damage_immunities:"lightning, thunder",condition_immunities:"",senses:"passive Perception 19",languages:"Common, Giant",cr:"13",bestiary:!0,traits:[{name:"Amphibious",desc:"The giant can breathe air and water.",attack_bonus:0},{name:"Innate Spellcasting",desc:`The giant's innate spellcasting ability is Charisma (spell save DC 17). It can innately cast the following spells, requiring no material components: + +At will: detect magic, feather fall, levitate, light +3/day each: control weather, water breathing`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The giant makes two greatsword attacks.",attack_bonus:0},{name:"Greatsword",desc:"Melee Weapon Attack: +14 to hit, reach 10 ft., one target. Hit: 30 (6d6 + 9) slashing damage.",attack_bonus:14,damage_dice:"6d6",damage_bonus:9},{name:"Rock",desc:"Ranged Weapon Attack: +14 to hit, range 60/240 ft., one target. Hit: 35 (4d12 + 9) bludgeoning damage.",attack_bonus:14,damage_dice:"4d12",damage_bonus:9},{name:"Lightning Strike (Recharge 5-6)",desc:"The giant hurls a magical lightning bolt at a point it can see within 500 feet of it. Each creature within 10 feet of that point must make a DC 17 Dexterity saving throw, taking 54 (12d8) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d8"}]},{name:"Succubus/Incubus",source:"5e SRD",size:"Medium",type:"fiend",subtype:"shapechanger",alignment:"neutral evil",ac:15,hp:66,hit_dice:"12d8 + 12",speed:"30 ft., fly 60 ft.",stats:[8,17,13,15,12,20],skillsaves:[{deception:9},{insight:5},{perception:5},{persuasion:9},{stealth:7}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning, poison; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 15",languages:"Abyssal, Common, Infernal, telepathy 60 ft.",cr:"4",bestiary:!0,traits:[{name:"Telepathic Bond",desc:"The fiend ignores the range restriction on its telepathy when communicating with a creature it has charmed. The two don't even need to be on the same plane of existence.",attack_bonus:0},{name:"Shapechanger",desc:"The fiend can use its action to polymorph into a Small or Medium humanoid, or back into its true form. Without wings, the fiend loses its flying speed. Other than its size and speed, its statistics are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0}],actions:[{name:"Claw (Fiend Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Charm",desc:`One humanoid the fiend can see within 30 feet of it must succeed on a DC 15 Wisdom saving throw or be magically charmed for 1 day. The charmed target obeys the fiend's verbal or telepathic commands. If the target suffers any harm or receives a suicidal command, it can repeat the saving throw, ending the effect on a success. If the target successfully saves against the effect, or if the effect on it ends, the target is immune to this fiend's Charm for the next 24 hours. +The fiend can have only one target charmed at a time. If it charms another, the effect on the previous target ends.`,attack_bonus:0},{name:"Draining Kiss",desc:"The fiend kisses a creature charmed by it or a willing creature. The target must make a DC 15 Constitution saving throw against this magic, taking 32 (5d10 + 5) psychic damage on a failed save, or half as much damage on a successful one. The target's hit point maximum is reduced by an amount equal to the damage taken. This reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0.",attack_bonus:0,damage_dice:"5d10",damage_bonus:5},{name:"Etherealness",desc:"The fiend magically enters the Ethereal Plane from the Material Plane, or vice versa.",attack_bonus:0}]},{name:"Swarm of Bats",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"0 ft., fly 30 ft.",stats:[5,15,10,2,12,4],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 60 ft., passive Perception 11",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Echolocation",desc:"The swarm can't use its blindsight while deafened.",attack_bonus:0},{name:"Keen Hearing",desc:"The swarm has advantage on Wisdom (Perception) checks that rely on hearing.",attack_bonus:0},{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny bat. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +4 to hit, reach 0 ft., one creature in the swarm's space. Hit: 5 (2d4) piercing damage, or 2 (1d4) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:4,damage_dice:"2d4"}]},{name:"Swarm of Beetles",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"20 ft., burrow 5 ft., climb 20 ft.",stats:[3,13,10,1,7,1],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny insect. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +3 to hit, reach 0 ft., one target in the swarm's space. Hit: 10 (4d4) piercing damage, or 5 (2d4) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:3,damage_dice:"4d4"}]},{name:"Swarm of Centipedes",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"20 ft., climb 20 ft.",stats:[3,13,10,1,7,1],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny insect. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:`Melee Weapon Attack: +3 to hit, reach 0 ft., one target in the swarm's space. Hit: 10 (4d4) piercing damage, or 5 (2d4) piercing damage if the swarm has half of its hit points or fewer. +A creature reduced to 0 hit points by a swarm of centipedes is stable but poisoned for 1 hour, even after regaining hit points, and paralyzed while poisoned in this way.`,attack_bonus:3,damage_dice:"4d4"}]},{name:"Swarm of Insects",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"20 ft., climb 20 ft.",stats:[3,13,10,1,7,1],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny insect. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +3 to hit, reach 0 ft., one target in the swarm's space. Hit: 10 (4d4) piercing damage, or 5 (2d4) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:3,damage_dice:"4d4"}]},{name:"Swarm of Poisonous Snakes",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:14,hp:36,hit_dice:"8d8",speed:"30 ft., swim 30 ft.",stats:[8,18,11,1,10,3],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 10",languages:"",cr:"2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny snake. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +6 to hit, reach 0 ft., one creature in the swarm's space. Hit: 7 (2d6) piercing damage, or 3 (1d6) piercing damage if the swarm has half of its hit points or fewer. The target must make a DC 10 Constitution saving throw, taking 14 (4d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:6,damage_dice:"2d6"}]},{name:"Swarm of Quippers",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:13,hp:28,hit_dice:"8d8 + -8",speed:"0 ft., swim 40 ft.",stats:[13,16,9,1,7,2],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"darkvision 60 ft., passive Perception 8",languages:"",cr:"1",bestiary:!0,traits:[{name:"Blood Frenzy",desc:"The swarm has advantage on melee attack rolls against any creature that doesn't have all its hit points.",attack_bonus:0},{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny quipper. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0},{name:"Water Breathing",desc:"The swarm can breathe only underwater.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +5 to hit, reach 0 ft., one creature in the swarm's space. Hit: 14 (4d6) piercing damage, or 7 (2d6) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:5,damage_dice:"4d6"}]},{name:"Swarm of Rats",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:10,hp:24,hit_dice:"7d8 + -8",speed:"30 ft.",stats:[9,11,9,2,10,3],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"darkvision 30 ft., passive Perception 10",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Keen Smell",desc:"The swarm has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny rat. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +2 to hit, reach 0 ft., one target in the swarm's space. Hit: 7 (2d6) piercing damage, or 3 (1d6) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:2,damage_dice:"2d6"}]},{name:"Swarm of Ravens",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:24,hit_dice:"7d8 + -8",speed:"10 ft., fly 50 ft.",stats:[6,14,8,3,12,6],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"passive Perception 15",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny raven. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Beaks",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target in the swarm's space. Hit: 7 (2d6) piercing damage, or 3 (1d6) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:4,damage_dice:"2d6"}]},{name:"Swarm of Spiders",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"20 ft., climb 20 ft.",stats:[3,13,10,1,7,1],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny insect. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0},{name:"Spider Climb",desc:"The swarm can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Web Sense",desc:"While in contact with a web, the swarm knows the exact location of any other creature in contact with the same web.",attack_bonus:0},{name:"Web Walker",desc:"The swarm ignores movement restrictions caused by webbing.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +3 to hit, reach 0 ft., one target in the swarm's space. Hit: 10 (4d4) piercing damage, or 5 (2d4) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:3,damage_dice:"4d4"}]},{name:"Swarm of Wasps",source:"5e SRD",size:"Medium",type:"swarm of Tiny beasts",subtype:"",alignment:"unaligned",ac:12,hp:22,hit_dice:"5d8 + -1",speed:"5 ft., fly 30 ft.",stats:[3,13,10,1,7,1],damage_vulnerabilities:"",damage_resistances:"bludgeoning, piercing, slashing",damage_immunities:"",condition_immunities:"charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned",senses:"blindsight 10 ft., passive Perception 8",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Swarm",desc:"The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny insect. The swarm can't regain hit points or gain temporary hit points.",attack_bonus:0}],actions:[{name:"Bites",desc:"Melee Weapon Attack: +3 to hit, reach 0 ft., one target in the swarm's space. Hit: 10 (4d4) piercing damage, or 5 (2d4) piercing damage if the swarm has half of its hit points or fewer.",attack_bonus:3,damage_dice:"4d4"}]},{name:"Tarrasque",source:"5e SRD",size:"Gargantuan",type:"monstrosity",subtype:"titan",alignment:"unaligned",ac:25,hp:676,hit_dice:"33d20 + 329",speed:"40 ft.",stats:[30,11,30,3,11,11],saves:[{intelligence:5},{wisdom:9},{charisma:9}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire, poison; bludgeoning, piercing, and slashing from nonmagical weapons",condition_immunities:"charmed, frightened, paralyzed, poisoned",senses:"blindsight 120 ft., passive Perception 10",languages:"",cr:"30",bestiary:!0,traits:[{name:"Legendary Resistance (3/Day)",desc:"If the tarrasque fails a saving throw, it can choose to succeed instead.",attack_bonus:0},{name:"Magic Resistance",desc:"The tarrasque has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Reflective Carapace",desc:"Any time the tarrasque is targeted by a magic missile spell, a line spell, or a spell that requires a ranged attack roll, roll a d6. On a 1 to 5, the tarrasque is unaffected. On a 6, the tarrasque is unaffected, and the effect is reflected back at the caster as though it originated from the tarrasque, turning the caster into the target.",attack_bonus:0},{name:"Siege Monster",desc:"The tarrasque deals double damage to objects and structures.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The tarrasque can use its Frightful Presence. It then makes five attacks: one with its bite, two with its claws, one with its horns, and one with its tai l. It can use its Swallow instead of its bite.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +19 to hit, reach 10 ft., one target. Hit: 36 (4d12 + 10) piercing damage. If the target is a creature, it is grappled (escape DC 20). Until this grapple ends, the target is restrained, and the tarrasque can't bite another target.",attack_bonus:19,damage_dice:"4d12",damage_bonus:10},{name:"Claw",desc:"Melee Weapon Attack: +19 to hit, reach 15 ft., one target. Hit: 28 (4d8 + 10) slashing damage.",attack_bonus:19,damage_dice:"4d8",damage_bonus:10},{name:"Horns",desc:"Melee Weapon Attack: +19 to hit, reach 10 ft., one target. Hit: 32 (4d10 + 10) piercing damage.",attack_bonus:19,damage_dice:"4d10",damage_bonus:10},{name:"Tail",desc:"Melee Weapon Attack: +19 to hit, reach 20 ft., one target. Hit: 24 (4d6 + 10) bludgeoning damage. If the target is a creature, it must succeed on a DC 20 Strength saving throw or be knocked prone.",attack_bonus:19,damage_dice:"4d6",damage_bonus:10},{name:"Frightful Presence",desc:"Each creature of the tarrasque's choice within 120 feet of it and aware of it must succeed on a DC 17 Wisdom saving throw or become frightened for 1 minute. A creature can repeat the saving throw at the end of each of its turns, with disadvantage if the tarrasque is within line of sight, ending the effect on itself on a success. If a creature's saving throw is successful or the effect ends for it, the creature is immune to the tarrasque's Frightful Presence for the next 24 hours.",attack_bonus:0},{name:"Swallow",desc:`The tarrasque makes one bite attack against a Large or smaller creature it is grappling. If the attack hits, the target takes the bite's damage, the target is swallowed, and the grapple ends. While swallowed, the creature is blinded and restrained, it has total cover against attacks and other effects outside the tarrasque, and it takes 56 (16d6) acid damage at the start of each of the tarrasque's turns. +If the tarrasque takes 60 damage or more on a single turn from a creature inside it, the tarrasque must succeed on a DC 20 Constitution saving throw at the end of that turn or regurgitate all swallowed creatures, which fall prone in a space within 10 feet of the tarrasque. If the tarrasque dies, a swallowed creature is no longer restrained by it and can escape from the corpse by using 30 feet of movement, exiting prone.`,attack_bonus:0}],legendary_actions:[{name:"Attack",desc:"The tarrasque makes one claw attack or tail attack.",attack_bonus:0},{name:"Move",desc:"The tarrasque moves up to half its speed.",attack_bonus:0},{name:"Chomp (Costs 2 Actions)",desc:"The tarrasque makes one bite attack or uses its Swallow.",attack_bonus:0}]},{name:"Thug",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any non-good alignment",ac:11,hp:32,hit_dice:"5d8 + 9",speed:"30 ft.",stats:[15,11,14,10,10,11],skillsaves:[{intimidation:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language (usually Common)",cr:"1/2",bestiary:!0,traits:[{name:"Pack Tactics",desc:"The thug has advantage on an attack roll against a creature if at least one of the thug's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The thug makes two melee attacks.",attack_bonus:0},{name:"Mace",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 5 (1d6 + 2) bludgeoning damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Heavy Crossbow",desc:"Ranged Weapon Attack: +2 to hit, range 100/400 ft., one target. Hit: 5 (1d10) piercing damage.",attack_bonus:2,damage_dice:"1d10"}]},{name:"Tiger",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:12,hp:37,hit_dice:"5d10 + 9",speed:"40 ft.",stats:[17,15,14,3,12,8],skillsaves:[{perception:3},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"",cr:"1",bestiary:!0,traits:[{name:"Keen Smell",desc:"The tiger has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Pounce",desc:"If the tiger moves at least 20 ft. straight toward a creature and then hits it with a claw attack on the same turn, that target must succeed on a DC 13 Strength saving throw or be knocked prone. If the target is prone, the tiger can make one bite attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d10 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d10",damage_bonus:3},{name:"Claw",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) slashing damage.",attack_bonus:0}]},{name:"Treant",source:"5e SRD",size:"Huge",type:"plant",subtype:"",alignment:"chaotic good",ac:16,hp:138,hit_dice:"12d12 + 60",speed:"30 ft.",stats:[23,8,21,12,16,12],damage_vulnerabilities:"fire",damage_resistances:"bludgeoning, piercing",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"Common, Druidic, Elvish, Sylvan",cr:"9",bestiary:!0,traits:[{name:"False Appearance",desc:"While the treant remains motionless, it is indistinguishable from a normal tree.",attack_bonus:0},{name:"Siege Monster",desc:"The treant deals double damage to objects and structures.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The treant makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 16 (3d6 + 6) bludgeoning damage.",attack_bonus:10,damage_dice:"3d6",damage_bonus:6},{name:"Rock",desc:"Ranged Weapon Attack: +10 to hit, range 60/180 ft., one target. Hit: 28 (4d10 + 6) bludgeoning damage.",attack_bonus:10,damage_dice:"4d10",damage_bonus:6},{name:"Animate Trees (1/Day)",desc:"The treant magically animates one or two trees it can see within 60 feet of it. These trees have the same statistics as a treant, except they have Intelligence and Charisma scores of 1, they can't speak, and they have only the Slam action option. An animated tree acts as an ally of the treant. The tree remains animate for 1 day or until it dies; until the treant dies or is more than 120 feet from the tree; or until the treant takes a bonus action to turn it back into an inanimate tree. The tree then takes root if possible.",attack_bonus:0}]},{name:"Tribal Warrior",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:12,hp:11,hit_dice:"2d8 + 2",speed:"30 ft.",stats:[13,11,12,8,11,8],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"any one language",cr:"1/8",bestiary:!0,traits:[{name:"Pack Tactics",desc:"The warrior has advantage on an attack roll against a creature if at least one of the warrior's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Spear",desc:"Melee or Ranged Weapon Attack: +3 to hit, reach 5 ft. or range 20/60 ft., one target. Hit: 4 (1d6 + 1) piercing damage, or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]},{name:"Triceratops",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:95,hit_dice:"10d12 + 30",speed:"50 ft.",stats:[22,9,17,2,11,5],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 10",languages:"",cr:"5",bestiary:!0,traits:[{name:"Trampling Charge",desc:"If the triceratops moves at least 20 ft. straight toward a creature and then hits it with a gore attack on the same turn, that target must succeed on a DC 13 Strength saving throw or be knocked prone. If the target is prone, the triceratops can make one stomp attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Gore",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 24 (4d8 + 6) piercing damage.",attack_bonus:9,damage_dice:"4d8",damage_bonus:6},{name:"Stomp",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one prone creature. Hit: 22 (3d10 + 6) bludgeoning damage",attack_bonus:9,damage_dice:"3d10",damage_bonus:6}]},{name:"Troll",source:"5e SRD",size:"Large",type:"giant",subtype:"",alignment:"chaotic evil",ac:15,hp:84,hit_dice:"8d10 + 40",speed:"30 ft.",stats:[18,13,20,7,9,7],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 12",languages:"Giant",cr:"5",bestiary:!0,traits:[{name:"Keen Smell",desc:"The troll has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0},{name:"Regeneration",desc:"The troll regains 10 hit points at the start of its turn. If the troll takes acid or fire damage, this trait doesn't function at the start of the troll's next turn. The troll dies only if it starts its turn with 0 hit points and doesn't regenerate.",attack_bonus:0},{name:"Variant: Loathsome Limbs",desc:`Whenever the troll takes at least 15 slashing damage at one time, roll a d20 to determine what else happens to it: +1-10: Nothing else happens. +11-14: One leg is severed from the troll if it has any legs left. +15- 18: One arm is severed from the troll if it has any arms left. +19-20: The troll is decapitated, but the troll dies only if it can't regenerate. If it dies, so does the severed head. +If the troll finishes a short or long rest without reattaching a severed limb or head, the part regrows. At that point, the severed part dies. Until then, a severed part acts on the troll's initiative and has its own action and movement. A severed part has AC 13, 10 hit points, and the troll's Regeneration trait. +A severed leg is unable to attack and has a speed of 5 feet. +A severed arm has a speed of 5 feet and can make one claw attack on its turn, with disadvantage on the attack roll unless the troll can see the arm and its target. Each time the troll loses an arm, it loses a claw attack. +If its head is severed, the troll loses its bite attack and its body is blinded unless the head can see it. The severed head has a speed of 0 feet and the troll's Keen Smell trait. It can make a bite attack but only against a target in its space. +The troll's speed is halved if it's missing a leg. If it loses both legs, it falls prone. If it has both arms, it can crawl. With only one arm, it can still crawl, but its speed is halved. With no arms or legs, its speed is 0, and it can't benefit from bonuses to speed.`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The troll makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 7 (1d6 + 4) piercing damage.",attack_bonus:7,damage_dice:"1d6",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4}]},{name:"Tyrannosaurus Rex",source:"5e SRD",size:"Huge",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:136,hit_dice:"13d12 + 51",speed:"50 ft.",stats:[25,10,19,2,12,9],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 14",languages:"",cr:"8",bestiary:!0,actions:[{name:"Multiattack",desc:"The tyrannosaurus makes two attacks: one with its bite and one with its tail. It can't make both attacks against the same target.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 33 (4d12 + 7) piercing damage. If the target is a Medium or smaller creature, it is grappled (escape DC 17). Until this grapple ends, the target is restrained, and the tyrannosaurus can't bite another target.",attack_bonus:10,damage_dice:"4d12",damage_bonus:7},{name:"Tail",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 20 (3d8 + 7) bludgeoning damage.",attack_bonus:10,damage_dice:"3d8",damage_bonus:7}]},{name:"Unicorn",source:"5e SRD",size:"Large",type:"celestial",subtype:"",alignment:"lawful good",ac:12,hp:67,hit_dice:"9d10 + 17",speed:"50 ft.",stats:[18,14,15,11,17,16],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"charmed, paralyzed, poisoned",senses:"darkvision 60 ft., passive Perception 13",languages:"Celestial, Elvish, Sylvan, telepathy 60 ft.",cr:"5",bestiary:!0,traits:[{name:"Charge",desc:"If the unicorn moves at least 20 ft. straight toward a target and then hits it with a horn attack on the same turn, the target takes an extra 9 (2d8) piercing damage. If the target is a creature, it must succeed on a DC 15 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d8"},{name:"Innate Spellcasting",desc:`The unicorn's innate spellcasting ability is Charisma (spell save DC 14). The unicorn can innately cast the following spells, requiring no components: + +At will: detect evil and good, druidcraft, pass without trace +1/day each: calm emotions, dispel evil and good, entangle`,attack_bonus:0},{name:"Magic Resistance",desc:"The unicorn has advantage on saving throws against spells and other magical effects.",attack_bonus:0},{name:"Magic Weapons",desc:"The unicorn's weapon attacks are magical.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The unicorn makes two attacks: one with its hooves and one with its horn.",attack_bonus:0},{name:"Hooves",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft ., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Horn",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft ., one target. Hit: 8 (1d8 + 4) piercing damage.",attack_bonus:7,damage_dice:"1d8",damage_bonus:4},{name:"Healing Touch (3/Day)",desc:"The unicorn touches another creature with its horn. The target magically regains 11 (2d8 + 2) hit points. In addition, the touch removes all diseases and neutralizes all poisons afflicting the target.",attack_bonus:0},{name:"Teleport (1/Day)",desc:"The unicorn magically teleports itself and up to three willing creatures it can see within 5 ft. of it, along with any equipment they are wearing or carrying, to a location the unicorn is familiar with, up to 1 mile away.",attack_bonus:0}],legendary_actions:[{name:"Hooves",desc:"The unicorn makes one attack with its hooves.",attack_bonus:0},{name:"Shimmering Shield (Costs 2 Actions)",desc:"The unicorn creates a shimmering, magical field around itself or another creature it can see within 60 ft. of it. The target gains a +2 bonus to AC until the end of the unicorn's next turn.",attack_bonus:0},{name:"Heal Self (Costs 3 Actions)",desc:"The unicorn magically regains 11 (2d8 + 2) hit points.",attack_bonus:0}]},{name:"Vampire",source:"5e SRD",size:"Medium",type:"undead",subtype:"shapechanger",alignment:"lawful evil",ac:16,hp:144,hit_dice:"17d8 + 67",speed:"30 ft.",stats:[18,18,18,17,15,18],saves:[{dexterity:9},{wisdom:7},{charisma:9}],skillsaves:[{perception:7},{stealth:9}],damage_vulnerabilities:"",damage_resistances:"necrotic; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"",condition_immunities:"",senses:"darkvision 120 ft., passive Perception 17",languages:"the languages it knew in life",cr:"13",bestiary:!0,traits:[{name:"Shapechanger",desc:`If the vampire isn't in sun light or running water, it can use its action to polymorph into a Tiny bat or a Medium cloud of mist, or back into its true form. +While in bat form, the vampire can't speak, its walking speed is 5 feet, and it has a flying speed of 30 feet. Its statistics, other than its size and speed, are unchanged. Anything it is wearing transforms with it, but nothing it is carrying does. It reverts to its true form if it dies. +While in mist form, the vampire can't take any actions, speak, or manipulate objects. It is weightless, has a flying speed of 20 feet, can hover, and can enter a hostile creature's space and stop there. In addition, if air can pass through a space, the mist can do so without squeezing, and it can't pass through water. It has advantage on Strength, Dexterity, and Constitution saving throws, and it is immune to all nonmagical damage, except the damage it takes from sunlight.`,attack_bonus:0},{name:"Legendary Resistance (3/Day)",desc:"If the vampire fails a saving throw, it can choose to succeed instead.",attack_bonus:0},{name:"Misty Escape",desc:`When it drops to 0 hit points outside its resting place, the vampire transforms into a cloud of mist (as in the Shapechanger trait) instead of falling unconscious, provided that it isn't in sunlight or running water. If it can't transform, it is destroyed. +While it has 0 hit points in mist form, it can't revert to its vampire form, and it must reach its resting place within 2 hours or be destroyed. Once in its resting place, it reverts to its vampire form. It is then paralyzed until it regains at least 1 hit point. After spending 1 hour in its resting place with 0 hit points, it regains 1 hit point.`,attack_bonus:0},{name:"Regeneration",desc:"The vampire regains 20 hit points at the start of its turn if it has at least 1 hit point and isn't in sunlight or running water. If the vampire takes radiant damage or damage from holy water, this trait doesn't function at the start of the vampire's next turn.",attack_bonus:0},{name:"Spider Climb",desc:"The vampire can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Vampire Weaknesses",desc:`The vampire has the following flaws: +Forbiddance. The vampire can't enter a residence without an invitation from one of the occupants. +Harmed by Running Water. The vampire takes 20 acid damage if it ends its turn in running water. +Stake to the Heart. If a piercing weapon made of wood is driven into the vampire's heart while the vampire is incapacitated in its resting place, the vampire is paralyzed until the stake is removed. +Sunlight Hypersensitivity. The vampire takes 20 radiant damage when it starts its turn in sunlight. While in sunlight, it has disadvantage on attack rolls and ability checks.`,attack_bonus:0}],actions:[{name:"Multiattack (Vampire Form Only)",desc:"The vampire makes two attacks, only one of which can be a bite attack.",attack_bonus:0},{name:"Unarmed Strike (Vampire Form Only)",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one creature. Hit: 8 (1d8 + 4) bludgeoning damage. Instead of dealing damage, the vampire can grapple the target (escape DC 18).",attack_bonus:9,damage_dice:"1d8",damage_bonus:4},{name:"Bite (Bat or Vampire Form Only)",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one willing creature, or a creature that is grappled by the vampire, incapacitated, or restrained. Hit: 7 (1d6 + 4) piercing damage plus 10 (3d6) necrotic damage. The target's hit point maximum is reduced by an amount equal to the necrotic damage taken, and the vampire regains hit points equal to that amount. The reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0. A humanoid slain in this way and then buried in the ground rises the following night as a vampire spawn under the vampire's control.",attack_bonus:9,damage_dice:"1d6 + 3d6",damage_bonus:4},{name:"Charm",desc:`The vampire targets one humanoid it can see within 30 ft. of it. If the target can see the vampire, the target must succeed on a DC 17 Wisdom saving throw against this magic or be charmed by the vampire. The charmed target regards the vampire as a trusted friend to be heeded and protected. Although the target isn't under the vampire's control, it takes the vampire's requests or actions in the most favorable way it can, and it is a willing target for the vampire's bit attack. +Each time the vampire or the vampire's companions do anything harmful to the target, it can repeat the saving throw, ending the effect on itself on a success. Otherwise, the effect lasts 24 hours or until the vampire is destroyed, is on a different plane of existence than the target, or takes a bonus action to end the effect.`,attack_bonus:0},{name:"Children of the Night (1/Day)",desc:"The vampire magically calls 2d4 swarms of bats or rats, provided that the sun isn't up. While outdoors, the vampire can call 3d6 wolves instead. The called creatures arrive in 1d4 rounds, acting as allies of the vampire and obeying its spoken commands. The beasts remain for 1 hour, until the vampire dies, or until the vampire dismisses them as a bonus action.",attack_bonus:0}],legendary_actions:[{name:"Move",desc:"The vampire moves up to its speed without provoking opportunity attacks.",attack_bonus:0},{name:"Unarmed Strike",desc:"The vampire makes one unarmed strike.",attack_bonus:0},{name:"Bite (Costs 2 Actions)",desc:"The vampire makes one bite attack.",attack_bonus:0}]},{name:"Vampire Spawn",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"neutral evil",ac:15,hp:82,hit_dice:"11d8 + 32",speed:"30 ft.",stats:[16,16,16,11,10,12],saves:[{dexterity:6},{wisdom:3}],skillsaves:[{perception:3},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"necrotic; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 13",languages:"the languages it knew in life",cr:"5",bestiary:!0,traits:[{name:"Regeneration",desc:"The vampire regains 10 hit points at the start of its turn if it has at least 1 hit point and isn't in sunlight or running water. If the vampire takes radiant damage or damage from holy water, this trait doesn't function at the start of the vampire's next turn.",attack_bonus:0},{name:"Spider Climb",desc:"The vampire can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.",attack_bonus:0},{name:"Vampire Weaknesses",desc:`The vampire has the following flaws: +Forbiddance. The vampire can't enter a residence without an invitation from one of the occupants. +Harmed by Running Water. The vampire takes 20 acid damage when it ends its turn in running water. +Stake to the Heart. The vampire is destroyed if a piercing weapon made of wood is driven into its heart while it is incapacitated in its resting place. +Sunlight Hypersensitivity. The vampire takes 20 radiant damage when it starts its turn in sunlight. While in sunlight, it has disadvantage on attack rolls and ability checks.`,attack_bonus:0}],actions:[{name:"Multiattack",desc:"The vampire makes two attacks, only one of which can be a bite attack.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one willing creature, or a creature that is grappled by the vampire, incapacitated, or restrained. Hit: 6 (1d6 + 3) piercing damage plus 7 (2d6) necrotic damage. The target's hit point maximum is reduced by an amount equal to the necrotic damage taken, and the vampire regains hit points equal to that amount. The reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0.",attack_bonus:61},{name:"Claws",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 8 (2d4 + 3) slashing damage. Instead of dealing damage, the vampire can grapple the target (escape DC 13).",attack_bonus:6,damage_dice:"2d4",damage_bonus:3}]},{name:"Veteran",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"any race",alignment:"any alignment",ac:17,hp:58,hit_dice:"9d8 + 17",speed:"30 ft.",stats:[16,13,14,10,11,10],skillsaves:[{athletics:5},{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 12",languages:"any one language (usually Common)",cr:"3",bestiary:!0,actions:[{name:"Multiattack",desc:"The veteran makes two longsword attacks. If it has a shortsword drawn, it can also make a shortsword attack.",attack_bonus:0},{name:"Longsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Shortsword",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) piercing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Heavy Crossbow",desc:"Ranged Weapon Attack: +3 to hit, range 100/400 ft., one target. Hit: 6 (1d10 + 1) piercing damage.",attack_bonus:3,damage_dice:"1d10",damage_bonus:1}]},{name:"Violet Fungus",source:"5e SRD",size:"Medium",type:"plant",subtype:"",alignment:"unaligned",ac:5,hp:18,hit_dice:"4d8",speed:"5 ft.",stats:[3,1,10,1,3,1],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"blinded, deafened, frightened",senses:"blindsight 30 ft. (blind beyond this radius), passive Perception 6",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"False Appearance",desc:"While the violet fungus remains motionless, it is indistinguishable from an ordinary fungus.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The fungus makes 1d4 Rotting Touch attacks.",attack_bonus:0},{name:"Rotting Touch",desc:"Melee Weapon Attack: +2 to hit, reach 10 ft., one creature. Hit: 4 (1d8) necrotic damage.",attack_bonus:2,damage_dice:"1d8"}]},{name:"Vrock",source:"5e SRD",size:"Large",type:"fiend",subtype:"demon",alignment:"chaotic evil",ac:15,hp:104,hit_dice:"11d10 + 43",speed:"40 ft., fly 60 ft.",stats:[17,15,18,8,13,8],saves:[{dexterity:5},{wisdom:4},{charisma:2}],damage_vulnerabilities:"",damage_resistances:"cold, fire, lightning; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"poisoned",senses:"darkvision 120 ft., passive Perception 11",languages:"Abyssal, telepathy 120 ft.",cr:"6",bestiary:!0,traits:[{name:"Magic Resistance",desc:"The vrock has advantage on saving throws against spells and other magical effects.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The vrock makes two attacks: one with its beak and one with its talons.",attack_bonus:0},{name:"Beak",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:3},{name:"Talons",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 14 (2d10 + 3) slashing damage.",attack_bonus:6,damage_dice:"2d10",damage_bonus:3},{name:"Spores (Recharge 6)",desc:"A 15-foot-radius cloud of toxic spores extends out from the vrock. The spores spread around corners. Each creature in that area must succeed on a DC 14 Constitution saving throw or become poisoned. While poisoned in this way, a target takes 5 (1d10) poison damage at the start of each of its turns. A target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success. Emptying a vial of holy water on the target also ends the effect on it.",attack_bonus:0},{name:"Stunning Screech (1/Day)",desc:"The vrock emits a horrific screech. Each creature within 20 feet of it that can hear it and that isn't a demon must succeed on a DC 14 Constitution saving throw or be stunned until the end of the vrock's next turn .",attack_bonus:0},{name:"Variant: Summon Demon (1/Day)",desc:`The demon chooses what to summon and attempts a magical summoning. +A vrock has a 30 percent chance of summoning 2d4 dretches or one vrock. +A summoned demon appears in an unoccupied space within 60 feet of its summoner, acts as an ally of its summoner, and can't summon other demons. It remains for 1 minute, until it or its summoner dies, or until its summoner dismisses it as an action.`,attack_bonus:0}]},{name:"Vulture",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:10,hp:5,hit_dice:"1d8",speed:"10 ft., fly 50 ft.",stats:[7,10,13,2,12,4],skillsaves:[{perception:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Sight and Smell",desc:"The vulture has advantage on Wisdom (Perception) checks that rely on sight or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The vulture has advantage on an attack roll against a creature if at least one of the vulture's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Beak",desc:"Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2 (1d4) piercing damage.",attack_bonus:2,damage_dice:"1d4"}]},{name:"Warhorse",source:"5e SRD",size:"Large",type:"beast",subtype:"",alignment:"unaligned",ac:11,hp:19,hit_dice:"3d10 + 2",speed:"60 ft.",stats:[18,12,13,2,12,7],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 11",languages:"",cr:"1/2",bestiary:!0,traits:[{name:"Trampling Charge",desc:"If the horse moves at least 20 ft. straight toward a creature and then hits it with a hooves attack on the same turn, that target must succeed on a DC 14 Strength saving throw or be knocked prone. If the target is prone, the horse can make another attack with its hooves against it as a bonus action.",attack_bonus:0}],actions:[{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Warhorse Skeleton",source:"5e SRD",size:"Large",type:"undead",subtype:"",alignment:"lawful evil",ac:13,hp:22,hit_dice:"3d10 + 5",speed:"60 ft.",stats:[18,12,15,2,8,5],damage_vulnerabilities:"bludgeoning",damage_resistances:"",damage_immunities:"poison",condition_immunities:"exhaustion, poisoned",senses:"darkvision 60 ft., passive Perception 9",languages:"",cr:"1/2",bestiary:!0,actions:[{name:"Hooves",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) bludgeoning damage.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4}]},{name:"Water Elemental",source:"5e SRD",size:"Large",type:"elemental",subtype:"",alignment:"neutral",ac:14,hp:114,hit_dice:"12d10 + 48",speed:"30 ft., swim 90 ft.",stats:[18,14,18,5,10,8],damage_vulnerabilities:"",damage_resistances:"acid; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"poison",condition_immunities:"exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained, unconscious",senses:"darkvision 60 ft., passive Perception 10",languages:"Aquan",cr:"5",bestiary:!0,traits:[{name:"Water Form",desc:"The elemental can enter a hostile creature's space and stop there. It can move through a space as narrow as 1 inch wide without squeezing.",attack_bonus:0},{name:"Freeze",desc:"If the elemental takes cold damage, it partially freezes; its speed is reduced by 20 ft. until the end of its next turn.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The elemental makes two slam attacks.",attack_bonus:0},{name:"Slam",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) bludgeoning damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4},{name:"Whelm (Recharge 4-6)",desc:`Each creature in the elemental's space must make a DC 15 Strength saving throw. On a failure, a target takes 13 (2d8 + 4) bludgeoning damage. If it is Large or smaller, it is also grappled (escape DC 14). Until this grapple ends, the target is restrained and unable to breathe unless it can breathe water. If the saving throw is successful, the target is pushed out of the elemental's space. +The elemental can grapple one Large creature or up to two Medium or smaller creatures at one time. At the start of each of the elemental's turns, each target grappled by it takes 13 (2d8 + 4) bludgeoning damage. A creature within 5 feet of the elemental can pull a creature or object out of it by taking an action to make a DC 14 Strength and succeeding.`,attack_bonus:0}]},{name:"Weasel",source:"5e SRD",size:"Tiny",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:1,hit_dice:"1d4 + -2",speed:"30 ft.",stats:[3,16,8,2,12,3],skillsaves:[{perception:3},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"0",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The weasel has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 1 piercing damage.",attack_bonus:5,damage_bonus:1}]},{name:"Werebear",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"neutral good",ac:10,hp:135,hit_dice:"18d8 + 54",speed:"30 ft. (40 ft., climb 30 ft. in bear or hybrid form)",stats:[19,10,17,11,12,12],skillsaves:[{perception:7}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing damage from nonmagical weapons that aren't silvered",condition_immunities:"",senses:"passive Perception 17",languages:"Common (can't speak in bear form)",cr:"5",bestiary:!0,traits:[{name:"Shapechanger",desc:"The werebear can use its action to polymorph into a Large bear-humanoid hybrid or into a Large bear, or back into its true form, which is humanoid. Its statistics, other than its size and AC, are the same in each form. Any equipment it. is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Keen Smell",desc:"The werebear has advantage on WisGlom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"In bear form, the werebear makes two claw attacks. In humanoid form, it makes two greataxe attacks. In hybrid form, it can attack like a bear or a humanoid.",attack_bonus:0},{name:"Bite (Bear or Hybrid Form Only)",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 15 (2d10 + 4) piercing damage. If the target is a humanoid, it must succeed on a DC 14 Constitution saving throw or be cursed with were bear lycanthropy.",attack_bonus:7,damage_dice:"2d10",damage_bonus:4},{name:"Claw (Bear or Hybrid Form Only)",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4},{name:"Greataxe (Humanoid or Hybrid Form Only)",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 10 (1d12 + 4) slashing damage.",attack_bonus:7,damage_dice:"1d12",damage_bonus:4}]},{name:"Wereboar",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"neutral evil",ac:10,hp:78,hit_dice:"12d8 + 24",speed:"30 ft. (40 ft. in boar form)",stats:[17,10,15,10,11,8],skillsaves:[{perception:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing damage from nonmagical weapons that aren't silvered",condition_immunities:"",senses:"passive Perception 12",languages:"Common (can't speak in boar form)",cr:"4",bestiary:!0,traits:[{name:"Shapechanger",desc:"The wereboar can use its action to polymorph into a boar-humanoid hybrid or into a boar, or back into its true form, which is humanoid. Its statistics, other than its AC, are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Charge (Boar or Hybrid Form Only)",desc:"If the wereboar moves at least 15 feet straight toward a target and then hits it with its tusks on the same turn, the target takes an extra 7 (2d6) slashing damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:0,damage_dice:"2d6"},{name:"Relentless (Recharges after a Short or Long Rest)",desc:"If the wereboar takes 14 damage or less that would reduce it to 0 hit points, it is reduced to 1 hit point instead.",attack_bonus:0}],actions:[{name:"Multiattack (Humanoid or Hybrid Form Only)",desc:"The wereboar makes two attacks, only one of which can be with its tusks.",attack_bonus:0},{name:"Maul (Humanoid or Hybrid Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) bludgeoning damage.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3},{name:"Tusks (Boar or Hybrid Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) slashing damage. If the target is a humanoid, it must succeed on a DC 12 Constitution saving throw or be cursed with wereboar lycanthropy.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Wererat",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"lawful evil",ac:12,hp:33,hit_dice:"6d8 + 6",speed:"30 ft.",stats:[10,15,12,11,10,8],skillsaves:[{perception:2},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing damage from nonmagical weapons that aren't silvered",condition_immunities:"",senses:"darkvision 60 ft. (rat form only), passive Perception 12",languages:"Common (can't speak in rat form)",cr:"2",bestiary:!0,traits:[{name:"Shapechanger",desc:"The wererat can use its action to polymorph into a rat-humanoid hybrid or into a giant rat, or back into its true form, which is humanoid. Its statistics, other than its size, are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Keen Smell",desc:"The wererat has advantage on Wisdom (Perception) checks that rely on smell.",attack_bonus:0}],actions:[{name:"Multiattack (Humanoid or Hybrid Form Only)",desc:"The wererat makes two attacks, only one of which can be a bite.",attack_bonus:0},{name:"Bite (Rat or Hybrid Form Only).",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 4 (1d4 + 2) piercing damage. If the target is a humanoid, it must succeed on a DC 11 Constitution saving throw or be cursed with wererat lycanthropy.",attack_bonus:4,damage_dice:"1d4",damage_bonus:2},{name:"Shortsword (Humanoid or Hybrid Form Only)",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Hand Crossbow (Humanoid or Hybrid Form Only)",desc:"Ranged Weapon Attack: +4 to hit, range 30/120 ft., one target. Hit: 5 (1d6 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d6",damage_bonus:2}]},{name:"Weretiger",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"neutral",ac:12,hp:120,hit_dice:"16d8 + 48",speed:"30 ft. (40 ft. in tiger form)",stats:[17,15,16,10,13,11],skillsaves:[{perception:5},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing damage from nonmagical weapons that aren't silvered",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 15",languages:"Common (can't speak in tiger form)",cr:"4",bestiary:!0,traits:[{name:"Shapechanger",desc:"The weretiger can use its action to polymorph into a tiger-humanoid hybrid or into a tiger, or back into its true form, which is humanoid. Its statistics, other than its size, are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Keen Hearing and Smell",desc:"The weretiger has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pounce (Tiger or Hybrid Form Only)",desc:"If the weretiger moves at least 15 feet straight toward a creature and then hits it with a claw attack on the same turn, that target must succeed on a DC 14 Strength saving throw or be knocked prone. If the target is prone, the weretiger can make one bite attack against it as a bonus action.",attack_bonus:0}],actions:[{name:"Multiattack (Humanoid or Hybrid Form Only)",desc:"In humanoid form, the weretiger makes two scimitar attacks or two longbow attacks. In hybrid form, it can attack like a humanoid or make two claw attacks.",attack_bonus:0},{name:"Bite (Tiger or Hybrid Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 8 (1d10 + 3) piercing damage. If the target is a humanoid, it must succeed on a DC 13 Constitution saving throw or be cursed with weretiger lycanthropy.",attack_bonus:5,damage_dice:"1d10",damage_bonus:3},{name:"Claw (Tiger or Hybrid Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 7 (1d8 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d8",damage_bonus:3},{name:"Scimitar (Humanoid or Hybrid Form Only)",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:5,damage_dice:"1d6",damage_bonus:3},{name:"Longbow (Humanoid or Hybrid Form Only)",desc:"Ranged Weapon Attack: +4 to hit, range 150/600 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Werewolf",source:"5e SRD",size:"Medium",type:"humanoid",subtype:"human",alignment:"chaotic evil",ac:11,hp:58,hit_dice:"9d8 + 17",speed:"30 ft. (40 ft. in wolf form)",stats:[15,13,14,10,11,10],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"bludgeoning, piercing, and slashing damage from nonmagical weapons that aren't silvered",condition_immunities:"",senses:"passive Perception 14",languages:"Common (can't speak in wolf form)",cr:"3",bestiary:!0,traits:[{name:"Shapechanger",desc:"The werewolf can use its action to polymorph into a wolf-humanoid hybrid or into a wolf, or back into its true form, which is humanoid. Its statistics, other than its AC, are the same in each form. Any equipment it is wearing or carrying isn't transformed. It reverts to its true form if it dies.",attack_bonus:0},{name:"Keen Hearing and Smell",desc:"The werewolf has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Multiattack (Humanoid or Hybrid Form Only)",desc:"The werewolf makes two attacks: one with its bite and one with its claws or spear.",attack_bonus:0},{name:"Bite (Wolf or Hybrid Form Only)",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) piercing damage. If the target is a humanoid, it must succeed on a DC 12 Constitution saving throw or be cursed with werewolf lycanthropy.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Claws (Hybrid Form Only)",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 7 (2d4 + 2) slashing damage.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2},{name:"Spear (Humanoid Form Only)",desc:"Melee or Ranged Weapon Attack: +4 to hit, reach 5 ft. or range 20/60 ft., one creature. Hit: 5 (1d6 + 2) piercing damage, or 6 (1d8 + 2) piercing damage if used with two hands to make a melee attack.",attack_bonus:4,damage_dice:"1d6",damage_bonus:-2}]},{name:"White Dragon Wyrmling",source:"5e SRD",size:"Medium",type:"dragon",subtype:"",alignment:"chaotic evil",ac:16,hp:32,hit_dice:"5d8 + 9",speed:"30 ft., burrow 15 ft., fly 60 ft., swim 30 ft.",stats:[14,10,14,5,10,11],saves:[{dexterity:2},{constitution:4},{wisdom:2},{charisma:2}],skillsaves:[{perception:4},{stealth:2}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 10 ft., darkvision 60 ft., passive Perception 14",languages:"Draconic",cr:"2",bestiary:!0,actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (1d10 + 2) piercing damage plus 2 (1d4) cold damage.",attack_bonus:4,damage_dice:"1d10 + 1d4",damage_bonus:2},{name:"Cold Breath (Recharge 5-6)",desc:"The dragon exhales an icy blast of hail in a 15-foot cone. Each creature in that area must make a DC 12 Constitution saving throw, taking 22 (5d8) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"5d8"}]},{name:"Wight",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"neutral evil",ac:14,hp:45,hit_dice:"6d8 + 18",speed:"30 ft.",stats:[15,14,16,10,13,15],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"necrotic; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 13",languages:"the languages it knew in life",cr:"3",bestiary:!0,traits:[{name:"Sunlight Sensitivity",desc:"While in sunlight, the wight has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The wight makes two longsword attacks or two longbow attacks. It can use its Life Drain in place of one longsword attack.",attack_bonus:0},{name:"Life Drain",desc:`Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 5 (1d6 + 2) necrotic damage. The target must succeed on a DC 13 Constitution saving throw or its hit point maximum is reduced by an amount equal to the damage taken. This reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0. +A humanoid slain by this attack rises 24 hours later as a zombie under the wight's control, unless the humanoid is restored to life or its body is destroyed. The wight can have no more than twelve zombies under its control at one time.`,attack_bonus:4,damage_dice:"1d6",damage_bonus:2},{name:"Longsword",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 6 (1d8 + 2) slashing damage, or 7 (1d10 + 2) slashing damage if used with two hands.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2},{name:"Longbow",desc:"Ranged Weapon Attack: +4 to hit, range 150/600 ft., one target. Hit: 6 (1d8 + 2) piercing damage.",attack_bonus:4,damage_dice:"1d8",damage_bonus:2}]},{name:"Will-o'-Wisp",source:"5e SRD",size:"Tiny",type:"undead",subtype:"",alignment:"chaotic evil",ac:19,hp:22,hit_dice:"9d4 + -1",speed:"0 ft., fly 50 ft. (hover)",stats:[1,28,10,13,14,11],damage_vulnerabilities:"",damage_resistances:"acid, cold, fire, necrotic, thunder; bludgeoning, piercing, and slashing from nonmagical weapons",damage_immunities:"lightning, poison",condition_immunities:"exhaustion, grappled, paralyzed, poisoned, prone, restrained, unconscious",senses:"darkvision 120 ft., passive Perception 12",languages:"the languages it knew in life",cr:"2",bestiary:!0,traits:[{name:"Consume Life",desc:"As a bonus action, the will-o'-wisp can target one creature it can see within 5 ft. of it that has 0 hit points and is still alive. The target must succeed on a DC 10 Constitution saving throw against this magic or die. If the target dies, the will-o'-wisp regains 10 (3d6) hit points.",attack_bonus:0},{name:"Ephemeral",desc:"The will-o'-wisp can't wear or carry anything.",attack_bonus:0},{name:"Incorporeal Movement",desc:"The will-o'-wisp can move through other creatures and objects as if they were difficult terrain. It takes 5 (1d10) force damage if it ends its turn inside an object.",attack_bonus:0},{name:"Variable Illumination",desc:"The will-o'-wisp sheds bright light in a 5- to 20-foot radius and dim light for an additional number of ft. equal to the chosen radius. The will-o'-wisp can alter the radius as a bonus action.",attack_bonus:0}],actions:[{name:"Shock",desc:"Melee Spell Attack: +4 to hit, reach 5 ft., one creature. Hit: 9 (2d8) lightning damage.",attack_bonus:4,damage_dice:"2d8"},{name:"Invisibility",desc:"The will-o'-wisp and its light magically become invisible until it attacks or uses its Consume Life, or until its concentration ends (as if concentrating on a spell).",attack_bonus:0}]},{name:"Winter Wolf",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:13,hp:75,hit_dice:"10d10 + 20",speed:"50 ft.",stats:[18,13,14,7,12,8],skillsaves:[{perception:5},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"passive Perception 15",languages:"Common, Giant, Winter Wolf",cr:"3",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The wolf has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The wolf has advantage on an attack roll against a creature if at least one of the wolf's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0},{name:"Snow Camouflage",desc:"The wolf has advantage on Dexterity (Stealth) checks made to hide in snowy terrain.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) piercing damage. If the target is a creature, it must succeed on a DC 14 Strength saving throw or be knocked prone.",attack_bonus:6,damage_dice:"2d6",damage_bonus:4},{name:"Cold Breath (Recharge 5-6)",desc:"The wolf exhales a blast of freezing wind in a 15-foot cone. Each creature in that area must make a DC 12 Dexterity saving throw, taking 18 (4d8) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"4d8"}]},{name:"Wolf",source:"5e SRD",size:"Medium",type:"beast",subtype:"",alignment:"unaligned",ac:13,hp:11,hit_dice:"2d8 + 2",speed:"40 ft.",stats:[12,15,12,3,12,6],skillsaves:[{perception:3},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"passive Perception 13",languages:"",cr:"1/4",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The wolf has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0},{name:"Pack Tactics",desc:"The wolf has advantage on an attack roll against a creature if at least one of the wolf's allies is within 5 ft. of the creature and the ally isn't incapacitated.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 7 (2d4 + 2) piercing damage. If the target is a creature, it must succeed on a DC 11 Strength saving throw or be knocked prone.",attack_bonus:4,damage_dice:"2d4",damage_bonus:2}]},{name:"Worg",source:"5e SRD",size:"Large",type:"monstrosity",subtype:"",alignment:"neutral evil",ac:13,hp:26,hit_dice:"4d10 + 4",speed:"50 ft.",stats:[16,13,13,7,11,8],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"Goblin, Worg",cr:"1/2",bestiary:!0,traits:[{name:"Keen Hearing and Smell",desc:"The worg has advantage on Wisdom (Perception) checks that rely on hearing or smell.",attack_bonus:0}],actions:[{name:"Bite",desc:"Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 10 (2d6 + 3) piercing damage. If the target is a creature, it must succeed on a DC 13 Strength saving throw or be knocked prone.",attack_bonus:5,damage_dice:"2d6",damage_bonus:3}]},{name:"Wraith",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"neutral evil",ac:13,hp:67,hit_dice:"9d8 + 26",speed:"0 ft., fly 60 ft. (hover)",stats:[6,16,16,12,14,15],damage_vulnerabilities:"",damage_resistances:"acid, cold, fire, lightning, thunder; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered",damage_immunities:"necrotic, poison",condition_immunities:"charmed, exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained",senses:"darkvision 60 ft., passive Perception 12",languages:"the languages it knew in life",cr:"5",bestiary:!0,traits:[{name:"Incorporeal Movement",desc:"The wraith can move through other creatures and objects as if they were difficult terrain. It takes 5 (1d10) force damage if it ends its turn inside an object.",attack_bonus:0},{name:"Sunlight Sensitivity",desc:"While in sunlight, the wraith has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.",attack_bonus:0}],actions:[{name:"Life Drain",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 21 (4d8 + 3) necrotic damage. The target must succeed on a DC 14 Constitution saving throw or its hit point maximum is reduced by an amount equal to the damage taken. This reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0.",attack_bonus:6,damage_dice:"4d8",damage_bonus:3},{name:"Create Specter",desc:"The wraith targets a humanoid within 10 feet of it that has been dead for no longer than 1 minute and died violently. The target's spirit rises as a specter in the space of its corpse or in the nearest unoccupied space. The specter is under the wraith's control. The wraith can have no more than seven specters under its control at one time.",attack_bonus:0}]},{name:"Wyvern",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"unaligned",ac:13,hp:110,hit_dice:"13d10 + 38",speed:"20 ft., fly 80 ft.",stats:[19,10,16,5,12,6],skillsaves:[{perception:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., passive Perception 14",languages:"",cr:"6",bestiary:!0,actions:[{name:"Multiattack",desc:"The wyvern makes two attacks: one with its bite and one with its stinger. While flying, it can use its claws in place of one other attack.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one creature. Hit: 11 (2d6 + 4) piercing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Claws",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 13 (2d8 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d8",damage_bonus:4},{name:"Stinger",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one creature. Hit: 11 (2d6 + 4) piercing damage. The target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4}]},{name:"Xorn",source:"5e SRD",size:"Medium",type:"elemental",subtype:"",alignment:"neutral",ac:19,hp:73,hit_dice:"7d8 + 41",speed:"20 ft., burrow 20 ft.",stats:[17,10,22,11,10,11],skillsaves:[{perception:6},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"piercing and slashing from nonmagical weapons that aren't adamantine",damage_immunities:"",condition_immunities:"",senses:"darkvision 60 ft., tremorsense 60 ft., passive Perception 16",languages:"Terran",cr:"5",bestiary:!0,traits:[{name:"Earth Glide",desc:"The xorn can burrow through nonmagical, unworked earth and stone. While doing so, the xorn doesn't disturb the material it moves through.",attack_bonus:0},{name:"Stone Camouflage",desc:"The xorn has advantage on Dexterity (Stealth) checks made to hide in rocky terrain.",attack_bonus:0},{name:"Treasure Sense",desc:"The xorn can pinpoint, by scent, the location of precious metals and stones, such as coins and gems, within 60 ft. of it.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The xorn makes three claw attacks and one bite attack.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 13 (3d6 + 3) piercing damage.",attack_bonus:6,damage_dice:"3d6",damage_bonus:3},{name:"Claw",desc:"Melee Weapon Attack: +6 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) slashing damage.",attack_bonus:6,damage_dice:"1d6",damage_bonus:3}]},{name:"Young Black Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"chaotic evil",ac:18,hp:127,hit_dice:"15d10 + 44",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[19,14,17,12,11,15],saves:[{dexterity:5},{constitution:6},{wisdom:3},{charisma:5}],skillsaves:[{perception:6},{stealth:5}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 16",languages:"Common, Draconic",cr:"7",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) piercing damage plus 4 (1d8) acid damage.",attack_bonus:7,damage_dice:"2d10 + 1d8",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Acid Breath (Recharge 5-6)",desc:"The dragon exhales acid in a 30-foot line that is 5 feet wide. Each creature in that line must make a DC 14 Dexterity saving throw, taking 49 (11d8) acid damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"11d8"}]},{name:"Young Blue Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"lawful evil",ac:18,hp:152,hit_dice:"16d10 + 64",speed:"40 ft., burrow 40 ft., fly 80 ft.",stats:[21,10,19,14,13,17],saves:[{dexterity:4},{constitution:8},{wisdom:5},{charisma:7}],skillsaves:[{perception:9},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 19",languages:"Common, Draconic",cr:"9",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 16 (2d10 + 5) piercing damage plus 5 (1d10) lightning damage.",attack_bonus:9,damage_dice:"2d10 + 1d10",damage_bonus:5},{name:"Claw",desc:"Melee Weapon Attack: +9 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage.",attack_bonus:9,damage_dice:"2d6",damage_bonus:5},{name:"Lightning Breath (Recharge 5-6)",desc:"The dragon exhales lightning in an 60-foot line that is 5 feet wide. Each creature in that line must make a DC 16 Dexterity saving throw, taking 55 (10d10) lightning damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"10d10"}]},{name:"Young Brass Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"chaotic good",ac:17,hp:110,hit_dice:"13d10 + 38",speed:"40 ft., burrow 20 ft., fly 80 ft.",stats:[19,10,17,12,11,15],saves:[{dexterity:3},{constitution:6},{wisdom:3},{charisma:5}],skillsaves:[{perception:6},{persuasion:5},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 16",languages:"Common, Draconic",cr:"6",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) piercing damage.",attack_bonus:7,damage_dice:"2d10",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in a 40-foot line that is 5 feet wide. Each creature in that line must make a DC 14 Dexterity saving throw, taking 42 (12d6) fire damage on a failed save, or half as much damage on a successful one. +Sleep Breath. The dragon exhales sleep gas in a 30-foot cone. Each creature in that area must succeed on a DC 14 Constitution saving throw or fall unconscious for 5 minutes. This effect ends for a creature if the creature takes damage or someone uses an action to wake it.`,attack_bonus:0,damage_dice:"12d6"}]},{name:"Young Bronze Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"lawful good",ac:18,hp:142,hit_dice:"15d10 + 59",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[21,10,19,14,13,17],saves:[{dexterity:3},{constitution:7},{wisdom:4},{charisma:6}],skillsaves:[{insight:4},{perception:7},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"lightning",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 17",languages:"Common, Draconic",cr:"8",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +8 to hit, reach 10 ft., one target. Hit: 16 (2d10 + 5) piercing damage.",attack_bonus:8,damage_dice:"2d10",damage_bonus:5},{name:"Claw",desc:"Melee Weapon Attack: +8 to hit, reach 5 ft., one target. Hit: 12 (2d6 + 5) slashing damage.",attack_bonus:8,damage_dice:"2d6",damage_bonus:5},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Lightning Breath. The dragon exhales lightning in a 60-foot line that is 5 feet wide. Each creature in that line must make a DC 15 Dexterity saving throw, taking 55 (10d10) lightning damage on a failed save, or half as much damage on a successful one. +Repulsion Breath. The dragon exhales repulsion energy in a 30-foot cone. Each creature in that area must succeed on a DC 15 Strength saving throw. On a failed save, the creature is pushed 40 feet away from the dragon.`,attack_bonus:0,damage_dice:"10d10"}]},{name:"Young Copper Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"chaotic good",ac:17,hp:119,hit_dice:"14d10 + 42",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[19,12,17,16,13,15],saves:[{dexterity:4},{constitution:6},{wisdom:4},{charisma:5}],skillsaves:[{deception:5},{perception:7},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"acid",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 17",languages:"Common, Draconic",cr:"7",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) piercing damage.",attack_bonus:7,damage_dice:"2d10",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Acid Breath. The dragon exhales acid in an 40-foot line that is 5 feet wide. Each creature in that line must make a DC 14 Dexterity saving throw, taking 40 (9d8) acid damage on a failed save, or half as much damage on a successful one. +Slowing Breath. The dragon exhales gas in a 30-foot cone. Each creature in that area must succeed on a DC 14 Constitution saving throw. On a failed save, the creature can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the creature can use either an action or a bonus action on its turn, but not both. These effects last for 1 minute. The creature can repeat the saving throw at the end of each of its turns, ending the effect on itself with a successful save.`,attack_bonus:0,damage_dice:"9d8"}]},{name:"Young Gold Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"lawful good",ac:18,hp:178,hit_dice:"17d10 + 84",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[23,14,21,16,13,20],saves:[{dexterity:6},{constitution:9},{wisdom:5},{charisma:9}],skillsaves:[{insight:5},{perception:9},{persuasion:9},{stealth:6}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 19",languages:"Common, Draconic",cr:"10",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage.",attack_bonus:10,damage_dice:"2d10",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:10,damage_dice:"2d6",damage_bonus:6},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Fire Breath. The dragon exhales fire in a 30-foot cone. Each creature in that area must make a DC 17 Dexterity saving throw, taking 55 (10d10) fire damage on a failed save, or half as much damage on a successful one. +Weakening Breath. The dragon exhales gas in a 30-foot cone. Each creature in that area must succeed on a DC 17 Strength saving throw or have disadvantage on Strength-based attack rolls, Strength checks, and Strength saving throws for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"10d10"}]},{name:"Young Green Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"lawful evil",ac:18,hp:136,hit_dice:"16d10 + 48",speed:"40 ft., fly 80 ft., swim 40 ft.",stats:[19,12,17,16,13,15],saves:[{dexterity:4},{constitution:6},{wisdom:4},{charisma:5}],skillsaves:[{deception:5},{perception:7},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"poison",condition_immunities:"poisoned",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 17",languages:"Common, Draconic",cr:"8",bestiary:!0,traits:[{name:"Amphibious",desc:"The dragon can breathe air and water.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) piercing damage plus 7 (2d6) poison damage.",attack_bonus:7,damage_dice:"2d10 + 2d6",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Poison Breath (Recharge 5-6)",desc:"The dragon exhales poisonous gas in a 30-foot cone. Each creature in that area must make a DC 14 Constitution saving throw, taking 42 (12d6) poison damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"12d6"}]},{name:"Young Red Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"chaotic evil",ac:18,hp:178,hit_dice:"17d10 + 84",speed:"40 ft., climb 40 ft., fly 80 ft.",stats:[23,10,21,14,11,19],saves:[{dexterity:4},{constitution:9},{wisdom:4},{charisma:8}],skillsaves:[{perception:8},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"fire",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 18",languages:"Common, Draconic",cr:"10",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage plus 3 (1d6) fire damage.",attack_bonus:10,damage_dice:"2d10 + 1d6",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:10,damage_dice:"2d6",damage_bonus:6},{name:"Fire Breath (Recharge 5-6)",desc:"The dragon exhales fire in a 30-foot cone. Each creature in that area must make a DC 17 Dexterity saving throw, taking 56 (16d6) fire damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"16d6"}]},{name:"Young Silver Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"lawful good",ac:18,hp:168,hit_dice:"16d10 + 80",speed:"40 ft., fly 80 ft.",stats:[23,10,21,14,11,19],saves:[{dexterity:4},{constitution:9},{wisdom:4},{charisma:8}],skillsaves:[{arcana:6},{history:6},{perception:8},{stealth:4}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 18",languages:"Common, Draconic",cr:"9",bestiary:!0,actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +10 to hit, reach 10 ft., one target. Hit: 17 (2d10 + 6) piercing damage.",attack_bonus:10,damage_dice:"2d10",damage_bonus:6},{name:"Claw",desc:"Melee Weapon Attack: +10 to hit, reach 5 ft., one target. Hit: 13 (2d6 + 6) slashing damage.",attack_bonus:10,damage_dice:"2d6",damage_bonus:6},{name:"Breath Weapons (Recharge 5-6)",desc:`The dragon uses one of the following breath weapons. +Cold Breath. The dragon exhales an icy blast in a 30-foot cone. Each creature in that area must make a DC 17 Constitution saving throw, taking 54 (12d8) cold damage on a failed save, or half as much damage on a successful one. +Paralyzing Breath. The dragon exhales paralyzing gas in a 30-foot cone. Each creature in that area must succeed on a DC 17 Constitution saving throw or be paralyzed for 1 minute. A creature can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.`,attack_bonus:0,damage_dice:"12d8"}]},{name:"Young White Dragon",source:"5e SRD",size:"Large",type:"dragon",subtype:"",alignment:"chaotic evil",ac:17,hp:133,hit_dice:"14d10 + 56",speed:"40 ft., burrow 20 ft., fly 80 ft., swim 40 ft.",stats:[18,10,18,6,11,12],saves:[{dexterity:3},{constitution:7},{wisdom:3},{charisma:4}],skillsaves:[{perception:6},{stealth:3}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"cold",condition_immunities:"",senses:"blindsight 30 ft., darkvision 120 ft., passive Perception 16",languages:"Common, Draconic",cr:"6",bestiary:!0,traits:[{name:"Ice Walk",desc:"The dragon can move across and climb icy surfaces without needing to make an ability check. Additionally, difficult terrain composed of ice or snow doesn't cost it extra moment.",attack_bonus:0}],actions:[{name:"Multiattack",desc:"The dragon makes three attacks: one with its bite and two with its claws.",attack_bonus:0},{name:"Bite",desc:"Melee Weapon Attack: +7 to hit, reach 10 ft., one target. Hit: 15 (2d10 + 4) piercing damage plus 4 (1d8) cold damage.",attack_bonus:7,damage_dice:"2d10 + 1d8",damage_bonus:4},{name:"Claw",desc:"Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 11 (2d6 + 4) slashing damage.",attack_bonus:7,damage_dice:"2d6",damage_bonus:4},{name:"Cold Breath (Recharge 5-6)",desc:"The dragon exhales an icy blast in a 30-foot cone. Each creature in that area must make a DC 15 Constitution saving throw, taking 45 (10d8) cold damage on a failed save, or half as much damage on a successful one.",attack_bonus:0,damage_dice:"10d8"}]},{name:"Zombie",source:"5e SRD",size:"Medium",type:"undead",subtype:"",alignment:"neutral evil",ac:8,hp:22,hit_dice:"3d8 + 8",speed:"20 ft.",stats:[13,6,16,3,6,5],saves:[{wisdom:0}],damage_vulnerabilities:"",damage_resistances:"",damage_immunities:"",condition_immunities:"poisoned",senses:"darkvision 60 ft., passive Perception 8",languages:"understands all languages it spoke in life but can't speak",cr:"1/4",bestiary:!0,traits:[{name:"Undead Fortitude",desc:"If damage reduces the zombie to 0 hit points, it must make a Constitution saving throw with a DC of 5+the damage taken, unless the damage is radiant or from a critical hit. On a success, the zombie drops to 1 hit point instead.",attack_bonus:0}],actions:[{name:"Slam",desc:"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) bludgeoning damage.",attack_bonus:3,damage_dice:"1d6",damage_bonus:1}]}],aa=new Map(nb.map(n=>[n.name,n]));var Ne,zt,On,sa,un,Zn,ra,$e,Qn,tt,co,uo,Di,lo=class{constructor(){Be(this,$e);Be(this,Ne,new Map);Be(this,zt,new Map);Be(this,On,new Map);Be(this,sa,!1);Be(this,un,new Map);Be(this,Zn,new Map);Be(this,ra,new Map);Be(this,tt)}getSortedBy(e){return X(this,ra).get(e)??[]}onSortedBy(e,t){let i=X(this,tt).on(`fantasy-statblocks:bestiary:sorted:${e}`,a=>t(a));return()=>{X(this,tt).offref(i)}}registerSorter(e,t){X(this,Zn).has(e)||X(this,Zn).set(e,t),Oe(this,$e,Qn).call(this,e)}getIndices(){return X(this,un)}getIndex(e){return X(this,un).get(e)??new Map}registerIndex(e){X(this,un).has(e)||X(this,un).set(e,new Map)}onIndexUpdated(e,t){if(!X(this,un).has(e))return()=>{};let i=X(this,tt).on(`fantasy-statblocks:bestiary:indexed:${e}`,()=>t());return()=>{X(this,tt).offref(i)}}initialize(e){this.registerIndex("source"),this.registerSorter("name",(t,i)=>t.name.localeCompare(i.name)),an(this,tt,e.app.workspace),kn.initialize(e).load(),e.addCommand({id:"parse-frontmatter",name:"Parse Frontmatter for Creatures",callback:()=>{kn.start(!0)}}),e.register(()=>kn.unload()),e.registerEvent(e.app.workspace.on("fantasy-statblocks:srd-change",t=>{this.enableSRD=t,t?an(this,Ne,new Map([...aa,...X(this,Ne)])):an(this,Ne,new Map([...X(this,zt),...X(this,On)]))})),this.enableSRD=!e.settings.disableSRD,this.enableSRD&&an(this,Ne,new Map(aa));for(let[,t]of e.settings.monsters)this.addLocalCreature(t)}hasLocal(e){return X(this,zt).has(e)}getLocal(e){return X(this,zt).get(e)}isLocal(e){return X(this,zt).has(e)&&X(this,Ne).get(e)===X(this,zt).get(e)}addLocalCreature(e){e.name&&(X(this,zt).set(e.name,e),X(this,Ne).set(e.name,e),Oe(this,$e,co).call(this,e),Oe(this,$e,Di).call(this),Oe(this,$e,Qn).call(this))}removeLocalCreature(e){X(this,Ne).has(e)&&X(this,Ne).get(e)===X(this,zt).get(e)&&X(this,Ne).delete(e),Oe(this,$e,uo).call(this,X(this,zt).get(e)),X(this,zt).delete(e),X(this,On).has(e)?X(this,Ne).set(e,X(this,On).get(e)):this.enableSRD&&aa.has(e)&&X(this,Ne).set(e,aa.get(e)),Oe(this,$e,Di).call(this),Oe(this,$e,Qn).call(this)}addEphemeralCreature(e){e.name&&(X(this,On).set(e.name,e),X(this,Ne).set(e.name,e),X(this,tt).trigger("fantasy-statblocks:bestiary:creature-added",e),Oe(this,$e,co).call(this,e),Oe(this,$e,Qn).call(this),Oe(this,$e,Di).call(this))}removeEphemeralCreature(e){Oe(this,$e,uo).call(this,X(this,Ne).get(e)),X(this,Ne).delete(e),X(this,On).delete(e),Oe(this,$e,Di).call(this),Oe(this,$e,Qn).call(this)}removeCreatures(...e){for(let t of e)this.isLocal(t)?this.removeLocalCreature(t):this.removeEphemeralCreature(t)}isResolved(){return X(this,sa)}setResolved(e){an(this,sa,e),e&&(X(this,tt).trigger("fantasy-statblocks:bestiary:resolved"),Oe(this,$e,Di).call(this),Oe(this,$e,Qn).call(this))}onResolved(e){let t;return this.isResolved()?e():t=X(this,tt).on("fantasy-statblocks:bestiary:resolved",()=>e()),()=>{t&&X(this,tt).offref(t)}}onUpdated(e){let t;return this.isResolved()?e():t=X(this,tt).on("fantasy-statblocks:bestiary:updated",()=>e()),()=>{t&&X(this,tt).offref(t)}}size(){return X(this,Ne).size}getBestiary(){return X(this,Ne)}getBestiaryCreatures(){return Array.from(X(this,Ne).values())}getBestiaryNames(){return Array.from(X(this,Ne).keys()).sort()}hasCreature(e){return X(this,Ne).has(e)}getExtensions(e,t){let i=[Ze(e)];if(!("extends"in e)||!(Array.isArray(e.extends)||typeof e.extends=="string"))return i;if(e.extends&&e.extends.length)for(let a of[e.extends].flat()){if(t.has(a)){console.info("Circular extend dependency detected in "+[...t]);continue}t.add(e.name);let s=X(this,Ne).get(a);s&&i.push(...this.getExtensions(s,t))}return i}getExtensionNames(e,t){let i=[e.name];if(!("extends"in e)||!(Array.isArray(e.extends)||typeof e.extends=="string"))return i;if(e.extends&&e.extends.length)for(let a of[e.extends].flat()){if(t.has(a)){console.info("Circular extend dependency detected in "+[...t]);continue}t.add(e.name);let s=X(this,Ne).get(a);s&&i.push(...this.getExtensionNames(s,t))}return i}async getCreatureFromBestiary(e){return new Promise(t=>{this.onResolved(()=>{this.hasCreature(e)||t(null);let i=X(this,Ne).get(e);t(Object.assign({},...this.getExtensions(i,new Set(i.name)),i))})})}getCreatureFromBestiarySync(e){if(!this.isResolved())throw new Error("The bestiary is not fully resolved.");if(!this.hasCreature(e))return null;let t=X(this,Ne).get(e);return Object.assign({},...this.getExtensions(t,new Set(t.name)),t)}get(e){return X(this,Ne).get(e)}};Ne=new WeakMap,zt=new WeakMap,On=new WeakMap,sa=new WeakMap,un=new WeakMap,Zn=new WeakMap,ra=new WeakMap,$e=new WeakSet,Qn=function(...e){this.isResolved()&&setTimeout(()=>{for(let t of e&&e.length?e:[...X(this,Zn).keys()])X(this,ra).set(t,this.getBestiaryCreatures().sort((i,a)=>X(this,Zn).get(t)(i,a))),X(this,tt).trigger(`fantasy-statblocks:bestiary:sorted:${t}`,this.getSortedBy(t))},0)},tt=new WeakMap,co=function(e){setTimeout(()=>{for(let[t,i]of X(this,un))if(t in e){let a=[];if(Array.isArray(e[t]))for(let s of e[t])a.push(ye(s));else a.push(ye(e[t]));for(let s of a)i.has(s)?i.get(s).add(e.name):i.set(s,new Set([e.name]));X(this,tt).trigger(`fantasy-statblocks:bestiary:indexed:${t}`)}},0)},uo=function(e){setTimeout(()=>{for(let[t,i]of X(this,un))if(t in e){let a=ye(e[t]);i.has(a)&&i.get(a).delete(e.name),X(this,tt).trigger(`fantasy-statblocks:bestiary:indexed:${t}`)}},0)},Di=function(){this.isResolved()&&X(this,tt).trigger("fantasy-statblocks:bestiary:updated")};var ve=new lo;var Yt=class extends Bu.MarkdownRenderChild{constructor(t,i=!0){super(t.container);this.rendererParameters=t;this.icons=i;this.loaded=!1;this.container=t.container,this.plugin=t.plugin,this.context=t.context??"",this.setCreature(t),this.setLayout(),this.init()}setLayout(){this.layout=this.rendererParameters.layout??this.plugin.manager.getAllLayouts().find(t=>t.name==(this.params.layout??this.monster.layout)||t.name==(this.params.statblock??this.monster.statblock))??this.plugin.manager.getDefaultLayout()}get canSave(){return"name"in this.params}async build(){let t=Object.assign({},this.monster??{},this.params??{});if(Object.values(t).length||(t=Object.assign({},t,{note:this.context})),t.note){let a=Array.isArray(t.note)?t.note.flat(1/0).pop():t.note,s=await this.plugin.app.metadataCache.getFirstLinkpathDest(`${a}`,this.context??"");if(s&&s instanceof Ct.TFile){let r=(0,Ct.getFrontMatterInfo)(await this.plugin.app.vault.cachedRead(s));r.exists&&Object.assign(t,Ze((0,Ct.parseYaml)(ut.transformYamlSource(r.frontmatter))??{}),this.params)}}"image"in t&&Array.isArray(t.image)&&(t.image=t.image.flat(2).join(""));let i=ve.getExtensions(t,new Set);for(let a of i.reverse())t=Object.assign(t,a);t=Object.assign(t,this.monster??{},this.params??{});for(let a of this.unwrapBlocks(this.layout.blocks))if("properties"in a){for(let s of a.properties)if(!(!(s in t)&&!(`${s}+`in t)&&!(`${s}-`in t)))switch(a.type){case"traits":{let r=new Map,o=[];for(let l of[...i]){for(let c of ls(s,l))r.set(c.name,c);for(let c of ls(`${s}-`,l))r.delete(c.name);for(let c of ls(`${s}~`,l))r.has(c.name)&&r.set(c.name,c);for(let c of ls(`${s}+`,l))o.push(c)}Object.assign(t,{[s]:[...r.values(),...o]});break}case"saves":{let r=t[s]??[];s in t&&!Array.isArray(t[s])&&typeof t[s]=="object"&&(r=Object.entries(t[s]??{}).map(([l,c])=>({[l]:c}))),Object.assign(t,{[s]:r});let o=[];`${s}+`in t&&!Array.isArray(t[`${s}+`])&&typeof t[`${s}+`]=="object"&&(o=Object.entries(t[s]??{}).map(([l,c])=>({[l]:c}))),o.length&&Object.assign(t,{[s]:Sr(t[s],o)});break}default:if(`${s}+`in t&&s in t){let r=Sr(t[s],t[`${s}+`]);r&&Object.assign(t,{[s]:r})}}}return t=this.transformLinks(t),"image"in t&&Array.isArray(t.image)&&(t.image=t.image.flat(2).join("")),t}unwrapBlocks(t){let i=[];for(let a of t)switch(a.type){case"group":case"inline":case"collapse":{i.push(...this.unwrapBlocks(a.nested));break}case"layout":case"ifelse":case"javascript":continue;default:i.push(a);break}return i}setCreature(t){"params"in t?(this.params=t.params,this.monster=Object.assign({},ve.get(this.params.monster)??ve.get(this.params.creature))):(this.params={},this.monster=t.monster)}async init(){this.containerEl.empty(),this.monster=await this.build(),this.$ui=new Nu({target:this.containerEl,props:{context:this.context,monster:this.monster,statblock:this.layout.blocks,layout:this.layout,plugin:this.plugin,renderer:this,canSave:this.canSave,icons:this.icons??!0}}),this.$ui.$on("save",async()=>{ve.hasCreature(this.monster.name)&&!await fo(this.plugin.app,"This will overwrite an existing monster in settings. Are you sure?")||this.plugin.saveMonster({...Ze(this.monster),source:this.monster.source??"Homebrew",layout:this.layout.name})}),this.$ui.$on("export",()=>{this.plugin.exportAsPng(this.monster.name,this.containerEl.firstElementChild)});let t=ve.getExtensionNames(this.monster,new Set);this.plugin.registerEvent(this.plugin.app.workspace.on("fantasy-statblocks:bestiary:creature-added",async i=>{t.includes(i.name)&&(this.monster=Ze(i),this.monster=await this.build(),this.$ui.$set({monster:this.monster}))}))}transformLinks(t){return(0,Ct.parseYaml)(ut.transformYamlSource((0,Ct.stringifyYaml)(t).replace(/\\#/g,"#")))}};async function fo(n,e,t={cta:"Yes",secondary:"No"}){return new Promise((i,a)=>{let s=new ho(n,e,t);s.onClose=()=>{i(s.confirmed)},s.open()})}var ho=class extends Ct.Modal{constructor(t,i,a){super(t);this.text=i;this.buttons=a;this.confirmed=!1}async display(){new Promise(t=>{this.contentEl.empty(),this.contentEl.addClass("confirm-modal"),this.contentEl.createEl("p",{text:this.text});let i=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new Ct.ButtonComponent(i).setButtonText(this.buttons.cta).setCta().onClick(()=>{this.confirmed=!0,this.close()}),new Ct.ButtonComponent(i).setButtonText(this.buttons.secondary).onClick(()=>{this.close()})})}onOpen(){this.display()}};function ls(n,e){let t=[];if(n in e&&Array.isArray(e[n]))for(let i of e[n])!Array.isArray(i)&&typeof i=="object"&&"name"in i&&t.push(i),Array.isArray(i)&&i.length>=1&&t.push({name:i[0],desc:i.slice(1).join("")});return t}var ke=require("obsidian");var nn=require("obsidian");var oa=[["group","Group"],["inline","Inline Group"],["ifelse","If/Else"],["collapse","Collapsible"],["javascript","JavaScript"],["layout","Layout"],["action","Action"],[null,"separator"],["heading","Heading"],["image","Image"],["property","Property Line"],["saves","Saves"],["spells","Spells"],["subheading","Subheading"],["table","Table"],["text","Text"],["traits","Traits"]];function cs(n){let e=n-1;return e*e*e+1}function Pn(n,{from:e,to:t},i={}){let a=getComputedStyle(n),s=a.transform==="none"?"":a.transform,[r,o]=a.transformOrigin.split(" ").map(parseFloat),l=e.left+e.width*r/t.width-(t.left+r),c=e.top+e.height*o/t.height-(t.top+o),{delay:d=0,duration:u=f=>Math.sqrt(f)*120,easing:h=cs}=i;return{delay:d,duration:Pe(u)?u(Math.sqrt(l*l+c*c)):u,easing:h,css:(f,m)=>{let p=m*l,b=m*c,_=f+m*e.width/t.width,S=f+m*e.height/t.height;return`transform: ${s} translate(${p}px, ${b}px) scale(${_}, ${S});`}}}function Lu(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function hs(n){for(var e=1;e=0)&&(t[a]=n[a]);return t}function ab(n,e){if(n==null)return{};var t=ib(n,e),i,a;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function sb(n,e){return ob(n)||cb(n,e)||So(n,e)||db()}function jt(n){return rb(n)||lb(n)||So(n)||ub()}function rb(n){if(Array.isArray(n))return go(n)}function ob(n){if(Array.isArray(n))return n}function lb(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function cb(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var i=[],a=!0,s=!1,r,o;try{for(t=t.call(n);!(a=(r=t.next()).done)&&(i.push(r.value),!(e&&i.length===e));a=!0);}catch(l){s=!0,o=l}finally{try{!a&&t.return!=null&&t.return()}finally{if(s)throw o}}return i}}function So(n,e){if(n){if(typeof n=="string")return go(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);if(t==="Object"&&n.constructor&&(t=n.constructor.name),t==="Map"||t==="Set")return Array.from(n);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return go(n,e)}}function go(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);t=n.length?{done:!0}:{done:!1,value:n[i++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s=!0,r=!1,o;return{s:function(){t=t.call(n)},n:function(){var l=t.next();return s=l.done,l},e:function(l){r=!0,o=l},f:function(){try{!s&&t.return!=null&&t.return()}finally{if(r)throw o}}}}var hb="finalize",fb="consider";function Oi(n,e,t){n.dispatchEvent(new CustomEvent(hb,{detail:{items:e,info:t}}))}function Fn(n,e,t){n.dispatchEvent(new CustomEvent(fb,{detail:{items:e,info:t}}))}var ks="draggedEntered",ga="draggedLeft",ws="draggedOverIndex",Co="draggedLeftDocument",fs={LEFT_FOR_ANOTHER:"leftForAnother",OUTSIDE_OF_ANY:"outsideOfAny"};function mb(n,e,t){n.dispatchEvent(new CustomEvent(ks,{detail:{indexObj:e,draggedEl:t}}))}function gb(n,e,t){n.dispatchEvent(new CustomEvent(ga,{detail:{draggedEl:e,type:fs.LEFT_FOR_ANOTHER,theOtherDz:t}}))}function pb(n,e){n.dispatchEvent(new CustomEvent(ga,{detail:{draggedEl:e,type:fs.OUTSIDE_OF_ANY}}))}function bb(n,e,t){n.dispatchEvent(new CustomEvent(ws,{detail:{indexObj:e,draggedEl:t}}))}function yb(n){window.dispatchEvent(new CustomEvent(Co,{detail:{draggedEl:n}}))}var Ye={DRAG_STARTED:"dragStarted",DRAGGED_ENTERED:ks,DRAGGED_ENTERED_ANOTHER:"dragEnteredAnother",DRAGGED_OVER_INDEX:ws,DRAGGED_LEFT:ga,DRAGGED_LEFT_ALL:"draggedLeftAll",DROPPED_INTO_ZONE:"droppedIntoZone",DROPPED_INTO_ANOTHER:"droppedIntoAnother",DROPPED_OUTSIDE_OF_ANY:"droppedOutsideOfAny",DRAG_STOPPED:"dragStopped"},je={POINTER:"pointer",KEYBOARD:"keyboard"},_s="isDndShadowItem",xo="data-is-dnd-shadow-item-internal",vb="data-is-dnd-shadow-item-hint",ii="id:dnd-shadow-placeholder-0000",kb="dnd-action-dragged-el",nt="id",po=0;function Ju(){po++}function Xu(){if(po===0)throw new Error("Bug! trying to decrement when there are no dropzones");po--}var Ao=typeof window>"u",xe=function(){};function bo(n){var e,t=n.getBoundingClientRect(),i=getComputedStyle(n),a=i.transform;if(a){var s,r,o,l;if(a.startsWith("matrix3d("))e=a.slice(9,-1).split(/, /),s=+e[0],r=+e[5],o=+e[12],l=+e[13];else if(a.startsWith("matrix("))e=a.slice(7,-1).split(/, /),s=+e[0],r=+e[3],o=+e[4],l=+e[5];else return t;var c=i.transformOrigin,d=t.x-o-(1-s)*parseFloat(c),u=t.y-l-(1-r)*parseFloat(c.slice(c.indexOf(" ")+1)),h=s?t.width/s:n.offsetWidth,f=r?t.height/r:n.offsetHeight;return{x:d,y:u,width:h,height:f,top:u,right:d+h,bottom:u+f,left:d}}else return t}function Qu(n){var e=bo(n);return{top:e.top+window.scrollY,bottom:e.bottom+window.scrollY,left:e.left+window.scrollX,right:e.right+window.scrollX}}function Zu(n){var e=n.getBoundingClientRect();return{top:e.top+window.scrollY,bottom:e.bottom+window.scrollY,left:e.left+window.scrollX,right:e.right+window.scrollX}}function ed(n){return{x:(n.left+n.right)/2,y:(n.top+n.bottom)/2}}function wb(n,e){return Math.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2))}function Ss(n,e){return n.y<=e.bottom&&n.y>=e.top&&n.x>=e.left&&n.x<=e.right}function da(n){return ed(Zu(n))}function Fu(n,e){var t=da(n),i=Qu(e);return Ss(t,i)}function _b(n,e){var t=da(n),i=da(e);return wb(t,i)}function Sb(n){var e=Zu(n);return e.right<0||e.left>document.documentElement.scrollWidth||e.bottom<0||e.top>document.documentElement.scrollHeight}var Ei;function To(){xe(function(){return"resetting indexes cache"}),Ei=new Map}To();function Cb(n){var e=Array.from(n.children).findIndex(function(t){return t.getAttribute(xo)});if(e>=0)return Ei.has(n)||Ei.set(n,new Map),Ei.get(n).set(e,Qu(n.children[e])),e}function xb(n,e){if(!Fu(n,e))return null;var t=e.children;if(t.length===0)return{index:0,isProximityBased:!0};for(var i=Cb(e),a=0;a1&&arguments[1]!==void 0?arguments[1]:0;return n.parentElement?td(n.parentElement,e+1):e-1}function Ab(n,e){if(Object.keys(n).length!==Object.keys(e).length)return!1;for(var t in n)if(!{}.hasOwnProperty.call(e,t)||e[t]!==n[t])return!1;return!0}function Tb(n,e){if(n.length!==e.length)return!1;for(var t=0;t2&&arguments[2]!==void 0?arguments[2]:Db,i=arguments.length>3?arguments[3]:void 0,a,s,r=!1,o,l=Array.from(e).sort(function(d,u){return ms(u)-ms(d)});function c(){var d=da(n),u=i.multiScrollIfNeeded();if(!u&&o&&Math.abs(o.x-d.x)r.clientHeight&&(o.bottomr.clientWidth&&(o.right0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;xe(function(){return"creating multi-scroller"});var t=Nb(n),i=Array.from(t).sort(function(l,c){return ms(c)-ms(l)}),a=Ib(),s=a.scrollIfNeeded,r=a.resetScrolling;function o(){var l=e();if(!l||!i)return!1;for(var c=i.filter(function(h){return Ss(l,h.getBoundingClientRect())||h===document.scrollingElement}),d=0;d0?o:function(){return!1},destroy:function(){return r()}}}function Rb(n){if(!n)return[];for(var e=[],t=n;t;){var i=window.getComputedStyle(t),a=i.overflow;a.split(" ").some(function(s){return s.includes("auto")||s.includes("scroll")})&&e.push(t),t=t.parentElement}return e}function Nb(n){var e=new Set,t=ma(n),i;try{for(t.s();!(i=t.n()).done;){var a=i.value;Rb(a).forEach(function(s){return e.add(s)})}}catch(s){t.e(s)}finally{t.f()}return(document.scrollingElement.scrollHeight>document.scrollingElement.clientHeight||document.scrollingElement.scrollWidth>document.scrollingElement.clientHeight)&&e.add(document.scrollingElement),e}function Bb(n){var e=n.cloneNode(!0),t=[],i=n.tagName==="SELECT",a=i?[n]:jt(n.querySelectorAll("select")),s=ma(a),r;try{for(s.s();!(r=s.n()).done;){var o=r.value;t.push(o.value)}}catch(C){s.e(C)}finally{s.f()}if(a.length>0)for(var l=i?[e]:jt(e.querySelectorAll("select")),c=0;c0)for(var p=f?[e]:jt(e.querySelectorAll("canvas")),b=0;b0&&_.height>0&&S.getContext("2d").drawImage(_,0,0)}return e}var ha=Object.freeze({USE_COMPUTED_STYLE_INSTEAD_OF_BOUNDING_RECT:"USE_COMPUTED_STYLE_INSTEAD_OF_BOUNDING_RECT"}),Lb=Ii({},ha.USE_COMPUTED_STYLE_INSTEAD_OF_BOUNDING_RECT,!1);function nd(n){if(!ha[n])throw new Error("Can't get non existing feature flag ".concat(n,"! Supported flags: ").concat(Object.keys(ha)));return Lb[n]}var Fb=.2;function ei(n){return"".concat(n," ").concat(Fb,"s ease")}function Wb(n,e){var t=n.getBoundingClientRect(),i=Bb(n);id(n,i),i.id=kb,i.style.position="fixed";var a=t.top,s=t.left;if(i.style.top="".concat(a,"px"),i.style.left="".concat(s,"px"),e){var r=ed(t);a-=r.y-e.y,s-=r.x-e.x,window.setTimeout(function(){i.style.top="".concat(a,"px"),i.style.left="".concat(s,"px")},0)}return i.style.margin="0",i.style.boxSizing="border-box",i.style.height="".concat(t.height,"px"),i.style.width="".concat(t.width,"px"),i.style.transition="".concat(ei("top"),", ").concat(ei("left"),", ").concat(ei("background-color"),", ").concat(ei("opacity"),", ").concat(ei("color")," "),window.setTimeout(function(){return i.style.transition+=", ".concat(ei("width"),", ").concat(ei("height"))},0),i.style.zIndex="9999",i.style.cursor="grabbing",i}function Hb(n){n.style.cursor="grab"}function zb(n,e,t,i){id(e,n);var a=e.getBoundingClientRect(),s=n.getBoundingClientRect(),r=a.width-s.width,o=a.height-s.height;if(r||o){var l={left:(t-s.left)/s.width,top:(i-s.top)/s.height};nd(ha.USE_COMPUTED_STYLE_INSTEAD_OF_BOUNDING_RECT)||(n.style.height="".concat(a.height,"px"),n.style.width="".concat(a.width,"px")),n.style.left="".concat(parseFloat(n.style.left)-l.left*r,"px"),n.style.top="".concat(parseFloat(n.style.top)-l.top*o,"px")}}function id(n,e){var t=window.getComputedStyle(n);Array.from(t).filter(function(i){return i.startsWith("background")||i.startsWith("padding")||i.startsWith("font")||i.startsWith("text")||i.startsWith("align")||i.startsWith("justify")||i.startsWith("display")||i.startsWith("flex")||i.startsWith("border")||i==="opacity"||i==="color"||i==="list-style-type"||nd(ha.USE_COMPUTED_STYLE_INSTEAD_OF_BOUNDING_RECT)&&(i==="width"||i==="height")}).forEach(function(i){return e.style.setProperty(i,t.getPropertyValue(i),t.getPropertyPriority(i))})}function qb(n,e){n.draggable=!1,n.ondragstart=function(){return!1},e?(n.style.userSelect="",n.style.WebkitUserSelect="",n.style.cursor=""):(n.style.userSelect="none",n.style.WebkitUserSelect="none",n.style.cursor="grab")}function ad(n){n.style.display="none",n.style.position="fixed",n.style.zIndex="-5"}function jb(n){n.style.visibility="hidden",n.setAttribute(xo,"true")}function Vb(n){n.style.visibility="",n.removeAttribute(xo)}function ds(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){return[]};n.forEach(function(i){var a=e(i);Object.keys(a).forEach(function(s){i.style[s]=a[s]}),t(i).forEach(function(s){return i.classList.add(s)})})}function gs(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){return[]};n.forEach(function(i){var a=e(i);Object.keys(a).forEach(function(s){i.style[s]=""}),t(i).forEach(function(s){return i.classList.contains(s)&&i.classList.remove(s)})})}function Ub(n){var e=n.style.minHeight;n.style.minHeight=window.getComputedStyle(n).getPropertyValue("height");var t=n.style.minWidth;return n.style.minWidth=window.getComputedStyle(n).getPropertyValue("width"),function(){n.style.minHeight=e,n.style.minWidth=t}}var Gb="--any--",Kb=100,$b=20,Hu=3,zu={outline:"rgba(255, 255, 102, 0.7) solid 2px"},qu="data-is-dnd-original-dragged-item",Jt,ft,xt,Cs,qe,xs,Ln,ht,Nn,Ot,Rn=!1,Do=!1,Eo,pa=!1,ca=[],ps,Zt=new Map,Xe=new Map,mo=new WeakMap;function Yb(n,e){xe(function(){return"registering drop-zone if absent"}),Zt.has(e)||Zt.set(e,new Set),Zt.get(e).has(n)||(Zt.get(e).add(n),Ju())}function ju(n,e){Zt.get(e).delete(n),Xu(),Zt.get(e).size===0&&Zt.delete(e)}function Jb(){xe(function(){return"watching dragged element"});var n=Zt.get(Cs),e=ma(n),t;try{for(e.s();!(t=e.n()).done;){var i=t.value;i.addEventListener(ks,sd),i.addEventListener(ga,rd),i.addEventListener(ws,od)}}catch(r){e.e(r)}finally{e.f()}window.addEventListener(Co,Pi);var a=Math.max.apply(Math,jt(Array.from(n.keys()).map(function(r){return Xe.get(r).dropAnimationDurationMs}))),s=a===0?$b:Math.max(a,Kb);ps=Pb(n,function(){return Ot}),Eb(ft,n,s*1.07,ps)}function Xb(){xe(function(){return"unwatching dragged element"});var n=Zt.get(Cs),e=ma(n),t;try{for(e.s();!(t=e.n()).done;){var i=t.value;i.removeEventListener(ks,sd),i.removeEventListener(ga,rd),i.removeEventListener(ws,od)}}catch(a){e.e(a)}finally{e.f()}window.removeEventListener(Co,Pi),ps.destroy(),ps=void 0,Mb()}function As(n){return n.findIndex(function(e){return!!e[_s]})}function Qb(n){var e;return hs(hs({},n),{},(e={},Ii(e,_s,!0),Ii(e,nt,ii),e))}function sd(n){xe(function(){return["dragged entered",n.currentTarget,n.detail]});var e=Xe.get(n.currentTarget),t=e.items,i=e.dropFromOthersDisabled;if(i&&n.currentTarget!==qe){xe(function(){return"ignoring dragged entered because drop is currently disabled"});return}if(pa=!1,t=t.filter(function(d){return d[nt]!==Ln[nt]}),xe(function(){return"dragged entered items ".concat(dn(t))}),qe!==n.currentTarget){var a=Xe.get(qe).items,s=a.filter(function(d){return!d[_s]});Fn(qe,s,{trigger:Ye.DRAGGED_ENTERED_ANOTHER,id:xt[nt],source:je.POINTER})}var r=n.detail.indexObj,o=r.index,l=r.isProximityBased,c=l&&o===n.currentTarget.children.length-1?o+1:o;ht=n.currentTarget,t.splice(c,0,Ln),Fn(n.currentTarget,t,{trigger:Ye.DRAGGED_ENTERED,id:xt[nt],source:je.POINTER})}function rd(n){if(Rn){xe(function(){return["dragged left",n.currentTarget,n.detail]});var e=Xe.get(n.currentTarget),t=e.items,i=e.dropFromOthersDisabled;if(i&&n.currentTarget!==qe&&n.currentTarget!==ht){xe(function(){return"drop is currently disabled"});return}var a=jt(t),s=As(a);s!==-1&&a.splice(s,1);var r=ht;ht=void 0;var o=n.detail,l=o.type,c=o.theOtherDz;if(l===fs.OUTSIDE_OF_ANY||l===fs.LEFT_FOR_ANOTHER&&c!==qe&&Xe.get(c).dropFromOthersDisabled){xe(function(){return"dragged left all, putting shadow element back in the origin dz"}),pa=!0,ht=qe;var d=r===qe?a:jt(Xe.get(qe).items);d.splice(xs,0,Ln),Fn(qe,d,{trigger:Ye.DRAGGED_LEFT_ALL,id:xt[nt],source:je.POINTER})}Fn(n.currentTarget,a,{trigger:Ye.DRAGGED_LEFT,id:xt[nt],source:je.POINTER})}}function od(n){xe(function(){return["dragged is over index",n.currentTarget,n.detail]});var e=Xe.get(n.currentTarget),t=e.items,i=e.dropFromOthersDisabled;if(i&&n.currentTarget!==qe){xe(function(){return"drop is currently disabled"});return}var a=jt(t);pa=!1;var s=n.detail.indexObj.index,r=As(a);r!==-1&&a.splice(r,1),a.splice(s,0,Ln),Fn(n.currentTarget,a,{trigger:Ye.DRAGGED_OVER_INDEX,id:xt[nt],source:je.POINTER})}function bs(n){n.preventDefault();var e=n.touches?n.touches[0]:n;Ot={x:e.clientX,y:e.clientY},ft.style.transform="translate3d(".concat(Ot.x-Nn.x,"px, ").concat(Ot.y-Nn.y,"px, 0)")}function Pi(){xe(function(){return"dropped"}),Do=!0,window.removeEventListener("mousemove",bs),window.removeEventListener("touchmove",bs),window.removeEventListener("mouseup",Pi),window.removeEventListener("touchend",Pi),Xb(),Hb(ft),ht||(xe(function(){return"element was dropped right after it left origin but before entering somewhere else"}),ht=qe),xe(function(){return["dropped in dz",ht]});var n=Xe.get(ht),e=n.items,t=n.type;gs(Zt.get(t),function(s){return Xe.get(s).dropTargetStyle},function(s){return Xe.get(s).dropTargetClasses});var i=As(e);i===-1&&ht===qe&&(i=xs),e=e.map(function(s){return s[_s]?xt:s});function a(){Eo(),Oi(ht,e,{trigger:pa?Ye.DROPPED_OUTSIDE_OF_ANY:Ye.DROPPED_INTO_ZONE,id:xt[nt],source:je.POINTER}),ht!==qe&&Oi(qe,Xe.get(qe).items,{trigger:Ye.DROPPED_INTO_ANOTHER,id:xt[nt],source:je.POINTER}),i!==-1&&Vb(ht.children[i]),t1()}Zb(i,a)}function Zb(n,e){var t=n>-1?bo(ht.children[n]):bo(ht),i={x:t.left-parseFloat(ft.style.left),y:t.top-parseFloat(ft.style.top)},a=Xe.get(ht),s=a.dropAnimationDurationMs,r="transform ".concat(s,"ms ease");ft.style.transition=ft.style.transition?ft.style.transition+","+r:r,ft.style.transform="translate3d(".concat(i.x,"px, ").concat(i.y,"px, 0)"),window.setTimeout(e,s)}function e1(n,e){ca.push({dz:n,destroy:e}),window.requestAnimationFrame(function(){ad(n),document.body.appendChild(n)})}function t1(){ft.remove(),Jt.remove(),ca.length&&(xe(function(){return["will destroy zones that were removed during drag",ca]}),ca.forEach(function(n){var e=n.dz,t=n.destroy;t(),e.remove()}),ca=[]),ft=void 0,Jt=void 0,xt=void 0,Cs=void 0,qe=void 0,xs=void 0,Ln=void 0,ht=void 0,Nn=void 0,Ot=void 0,Rn=!1,Do=!1,Eo=void 0,pa=!1}function n1(n,e){var t=!1,i={items:void 0,type:void 0,flipDurationMs:0,dragDisabled:!1,morphDisabled:!1,dropFromOthersDisabled:!1,dropTargetStyle:zu,dropTargetClasses:[],transformDraggedElement:function(){},centreDraggedOnCursor:!1};xe(function(){return["dndzone good to go options: ".concat(dn(e),", config: ").concat(dn(i)),{node:n}]});var a=new Map;function s(){window.addEventListener("mousemove",l,{passive:!1}),window.addEventListener("touchmove",l,{passive:!1,capture:!1}),window.addEventListener("mouseup",o,{passive:!1}),window.addEventListener("touchend",o,{passive:!1})}function r(){window.removeEventListener("mousemove",l),window.removeEventListener("touchmove",l),window.removeEventListener("mouseup",o),window.removeEventListener("touchend",o)}function o(h){r(),Jt=void 0,Nn=void 0,Ot=void 0,h.type==="touchend"&&h.target.click()}function l(h){h.preventDefault();var f=h.touches?h.touches[0]:h;Ot={x:f.clientX,y:f.clientY},(Math.abs(Ot.x-Nn.x)>=Hu||Math.abs(Ot.y-Nn.y)>=Hu)&&(r(),d())}function c(h){if(h.target!==h.currentTarget&&(h.target.value!==void 0||h.target.isContentEditable)){xe(function(){return"won't initiate drag on a nested input element"});return}if(h.button){xe(function(){return"ignoring none left click button: ".concat(h.button)});return}if(Rn){xe(function(){return"cannot start a new drag before finalizing previous one"});return}h.preventDefault(),h.stopPropagation();var f=h.touches?h.touches[0]:h;Nn={x:f.clientX,y:f.clientY},Ot=hs({},Nn),Jt=h.currentTarget,s()}function d(){xe(function(){return["drag start config: ".concat(dn(i)),Jt]}),Rn=!0;var h=a.get(Jt);xs=h,qe=Jt.parentElement;var f=qe.closest("dialog")||qe.getRootNode(),m=f.body||f,p=i.items,b=i.type,_=i.centreDraggedOnCursor,S=jt(p);xt=S[h],Cs=b,Ln=Qb(xt),ft=Wb(Jt,_&&Ot),Jt.setAttribute(qu,!0);function C(){ft.parentElement?window.requestAnimationFrame(C):(m.appendChild(ft),ft.focus(),Jb(),ad(Jt),m.appendChild(Jt),Ln[nt]=xt[nt])}window.requestAnimationFrame(C),ds(Array.from(Zt.get(i.type)).filter(function(M){return M===qe||!Xe.get(M).dropFromOthersDisabled}),function(M){return Xe.get(M).dropTargetStyle},function(M){return Xe.get(M).dropTargetClasses}),S.splice(h,1,Ln),Eo=Ub(qe),Fn(qe,S,{trigger:Ye.DRAG_STARTED,id:xt[nt],source:je.POINTER}),window.addEventListener("mousemove",bs,{passive:!1}),window.addEventListener("touchmove",bs,{passive:!1,capture:!1}),window.addEventListener("mouseup",Pi,{passive:!1}),window.addEventListener("touchend",Pi,{passive:!1})}function u(h){var f=h.items,m=f===void 0?void 0:f,p=h.flipDurationMs,b=p===void 0?0:p,_=h.type,S=_===void 0?Gb:_,C=h.dragDisabled,M=C===void 0?!1:C,w=h.morphDisabled,k=w===void 0?!1:w,A=h.dropFromOthersDisabled,P=A===void 0?!1:A,B=h.dropTargetStyle,L=B===void 0?zu:B,O=h.dropTargetClasses,j=O===void 0?[]:O,Z=h.transformDraggedElement,ee=Z===void 0?function(){}:Z,ae=h.centreDraggedOnCursor,$=ae===void 0?!1:ae;i.dropAnimationDurationMs=b,i.type&&S!==i.type&&ju(n,i.type),i.type=S,i.items=jt(m),i.dragDisabled=M,i.morphDisabled=k,i.transformDraggedElement=ee,i.centreDraggedOnCursor=$,t&&Rn&&!Do&&(!Ab(L,i.dropTargetStyle)||!Tb(j,i.dropTargetClasses))&&(gs([n],function(){return i.dropTargetStyle},function(){return j}),ds([n],function(){return L},function(){return j})),i.dropTargetStyle=L,i.dropTargetClasses=jt(j);function W(he,ue){return Xe.get(he)?Xe.get(he)[ue]:i[ue]}t&&Rn&&i.dropFromOthersDisabled!==P&&(P?gs([n],function(he){return W(he,"dropTargetStyle")},function(he){return W(he,"dropTargetClasses")}):ds([n],function(he){return W(he,"dropTargetStyle")},function(he){return W(he,"dropTargetClasses")})),i.dropFromOthersDisabled=P,Xe.set(n,i),Yb(n,S);for(var Y=Rn?As(i.items):-1,F=0;F".concat(e,"

"),t.style.display="none",t.style.position="fixed",t.style.zIndex="-5",t}function Mi(n){if(!Ao){Je||ko(),Je.innerHTML="";var e=document.createTextNode(n);Je.appendChild(e),Je.style.display="none",Je.style.display="inline"}}var o1="--any--",Vu={outline:"rgba(255, 255, 102, 0.7) solid 2px"},qt=!1,wo,pt,ni="",ti,Xt,Bn="",ys=new WeakSet,Uu=new WeakMap,Gu=new WeakMap,_o=new Map,dt=new Map,Qt=new Map,vs;function l1(n,e){xe(function(){return"registering drop-zone if absent"}),Qt.size===0&&(xe(function(){return"adding global keydown and click handlers"}),vs=a1(),window.addEventListener("keydown",cd),window.addEventListener("click",ud)),Qt.has(e)||Qt.set(e,new Set),Qt.get(e).has(n)||(Qt.get(e).add(n),Ju())}function Ku(n,e){xe(function(){return"unregistering drop-zone"}),pt===n&&fa(),Qt.get(e).delete(n),Xu(),Qt.get(e).size===0&&Qt.delete(e),Qt.size===0&&(xe(function(){return"removing global keydown and click handlers"}),window.removeEventListener("keydown",cd),window.removeEventListener("click",ud),vs=void 0,s1())}function cd(n){if(qt)switch(n.key){case"Escape":{fa();break}}}function ud(){qt&&(ys.has(document.activeElement)||(xe(function(){return"clicked outside of any draggable"}),fa()))}function c1(n){if(xe(function(){return"zone focus"}),!!qt){var e=n.currentTarget;if(e!==pt){ni=e.getAttribute("aria-label")||"";var t=dt.get(pt),i=t.items,a=i.find(function(u){return u[nt]===Xt}),s=i.indexOf(a),r=i.splice(s,1)[0],o=dt.get(e),l=o.items,c=o.autoAriaDisabled;e.getBoundingClientRect().top0&&arguments[0]!==void 0?arguments[0]:!0;xe(function(){return"drop"}),dt.get(pt).autoAriaDisabled||Mi("Stopped dragging item ".concat(Bn)),ys.has(document.activeElement)&&document.activeElement.blur(),n&&Fn(pt,dt.get(pt).items,{trigger:Ye.DRAG_STOPPED,id:Xt,source:je.KEYBOARD}),gs(Qt.get(wo),function(e){return dt.get(e).dropTargetStyle},function(e){return dt.get(e).dropTargetClasses}),ti=null,Xt=null,Bn="",wo=null,pt=null,ni="",qt=!1,dd()}function u1(n,e){var t={items:void 0,type:void 0,dragDisabled:!1,zoneTabIndex:0,zoneItemTabIndex:0,dropFromOthersDisabled:!1,dropTargetStyle:Vu,dropTargetClasses:[],autoAriaDisabled:!1};function i(d,u,h){d.length<=1||d.splice(h,1,d.splice(u,1,d[h])[0])}function a(d){switch(xe(function(){return["handling key down",d.key]}),d.key){case"Enter":case" ":{if((d.target.disabled!==void 0||d.target.href||d.target.isContentEditable)&&!ys.has(d.target))return;d.preventDefault(),d.stopPropagation(),qt?fa():s(d);break}case"ArrowDown":case"ArrowRight":{if(!qt)return;d.preventDefault(),d.stopPropagation();var u=dt.get(n),h=u.items,f=Array.from(n.children),m=f.indexOf(d.currentTarget);xe(function(){return["arrow down",m]}),m0&&(t.autoAriaDisabled||Mi("Moved item ".concat(Bn," to position ").concat(S," in the list ").concat(ni)),i(b,S,S-1),Oi(n,b,{trigger:Ye.DROPPED_INTO_ZONE,id:Xt,source:je.KEYBOARD}));break}}}function s(d){xe(function(){return"drag start"}),o(d.currentTarget),pt=n,wo=t.type,qt=!0;var u=Array.from(Qt.get(t.type)).filter(function(f){return f===pt||!dt.get(f).dropFromOthersDisabled});if(ds(u,function(f){return dt.get(f).dropTargetStyle},function(f){return dt.get(f).dropTargetClasses}),!t.autoAriaDisabled){var h="Started dragging item ".concat(Bn,". Use the arrow keys to move it within its list ").concat(ni);u.length>1&&(h+=", or tab to another list in order to move the item into it"),Mi(h)}Fn(n,dt.get(n).items,{trigger:Ye.DRAG_STARTED,id:Xt,source:je.KEYBOARD}),dd()}function r(d){qt&&d.currentTarget!==ti&&(d.stopPropagation(),fa(!1),s(d))}function o(d){var u=dt.get(n),h=u.items,f=Array.from(n.children),m=f.indexOf(d);ti=d,ti.tabIndex=t.zoneItemTabIndex,Xt=h[m][nt],Bn=f[m].getAttribute("aria-label")||""}function l(d){var u=d.items,h=u===void 0?[]:u,f=d.type,m=f===void 0?o1:f,p=d.dragDisabled,b=p===void 0?!1:p,_=d.zoneTabIndex,S=_===void 0?0:_,C=d.zoneItemTabIndex,M=C===void 0?0:C,w=d.dropFromOthersDisabled,k=w===void 0?!1:w,A=d.dropTargetStyle,P=A===void 0?Vu:A,B=d.dropTargetClasses,L=B===void 0?[]:B,O=d.autoAriaDisabled,j=O===void 0?!1:O;t.items=jt(h),t.dragDisabled=b,t.dropFromOthersDisabled=k,t.zoneTabIndex=S,t.zoneItemTabIndex=M,t.dropTargetStyle=P,t.dropTargetClasses=L,t.autoAriaDisabled=j,t.type&&m!==t.type&&Ku(n,t.type),t.type=m,l1(n,m),j||(n.setAttribute("aria-disabled",b),n.setAttribute("role","list"),n.setAttribute("aria-describedby",b?vs.DND_ZONE_DRAG_DISABLED:vs.DND_ZONE_ACTIVE)),dt.set(n,t),qt?n.tabIndex=n===pt||ti.contains(n)||t.dropFromOthersDisabled||pt&&t.type!==dt.get(pt).type?-1:0:n.tabIndex=t.zoneTabIndex,n.addEventListener("focus",c1);for(var Z=function($){var W=n.children[$];ys.add(W),W.tabIndex=qt?-1:t.zoneItemTabIndex,j||W.setAttribute("role","listitem"),W.removeEventListener("keydown",Uu.get(W)),W.removeEventListener("click",Gu.get(W)),b||(W.addEventListener("keydown",a),Uu.set(W,a),W.addEventListener("click",r),Gu.set(W,r)),qt&&t.items[$][nt]===Xt&&(xe(function(){return["focusing on",{i:$,focusedItemId:Xt}]}),ti=W,ti.tabIndex=t.zoneItemTabIndex,W.focus())},ee=0;ee0&&console.warn("dndzone will ignore unknown options",m),!e)throw new Error("no 'items' key provided to dndzone");var p=e.find(function(b){return!{}.hasOwnProperty.call(b,nt)});if(p)throw new Error("missing '".concat(nt,"' property for item ").concat(dn(p)));if(d&&!Array.isArray(d))throw new Error("dropTargetClasses should be an array but instead it is a ".concat(ua(d),", ").concat(dn(d)));if(o&&!Yu(o))throw new Error("zoneTabIndex should be a number but instead it is a ".concat(ua(o),", ").concat(dn(o)));if(l&&!Yu(l))throw new Error("zoneItemTabIndex should be a number but instead it is a ".concat(ua(l),", ").concat(dn(l)))}function Yu(n){return!isNaN(n)&&function(e){return(e|0)===e}(parseFloat(n))}function f1(n){var e=n,t=new Set;return{get:function(){return e},set:function(a){e=a,Array.from(t).forEach(function(s){return s(e)})},subscribe:function(a){t.add(a),a(e)},unsubscribe:function(a){t.delete(a)}}}var WS=f1(!0);var Ts=require("obsidian");var hd=require("@codemirror/view"),Fe=(n,e)=>{(0,Ts.setIcon)(n,e)};function ba(n,e,t,i,a="js"){let s=new Ts.TextAreaComponent(n).setValue(e);return s.inputEl.addClasses(["statblock-textarea",...t]),Lt(s.inputEl,hd.EditorView.updateListener.of(r=>{r.docChanged&&i(r.state.doc.toString())}),a)}function m1(n){se(n,"svelte-r3p86y",".property-block-container.svelte-r3p86y{display:flex;justify-content:space-between;align-items:center}.info.svelte-r3p86y{display:flex;flex-flow:column}.context.svelte-r3p86y{display:flex;align-items:center;gap:0.25rem;color:var(--text-muted)}.context-item.svelte-r3p86y{display:flex;align-items:center}")}function fd(n){let e,t,i=n[0].size+"",a,s;return{c(){e=v("span"),t=pe("(H"),a=pe(i),s=pe(")")},m(r,o){D(r,e,o),y(e,t),y(e,a),y(e,s)},p(r,o){o&1&&i!==(i=r[0].size+"")&&we(a,i)},d(r){r&&x(e)}}}function md(n){let e,t,i=n[0].headers.join(" | ")+"",a,s;return{c(){e=v("strong"),t=pe("("),a=pe(i),s=pe(")")},m(r,o){D(r,e,o),y(e,t),y(e,a),y(e,s)},p(r,o){o&1&&i!==(i=r[0].headers.join(" | ")+"")&&we(a,i)},d(r){r&&x(e)}}}function g1(n){let e,t,i=n[2](n[0].layout)+"",a;return{c(){e=v("small"),t=v("em"),a=pe(i)},m(s,r){D(s,e,r),y(e,t),y(t,a)},p(s,r){r&1&&i!==(i=s[2](s[0].layout)+"")&&we(a,i)},d(s){s&&x(e)}}}function p1(n){let e,t,i=n[0].properties.join(", ")+"",a;return{c(){e=v("small"),t=v("em"),a=pe(i)},m(s,r){D(s,e,r),y(e,t),y(t,a)},p(s,r){r&1&&i!==(i=s[0].properties.join(", ")+"")&&we(a,i)},d(s){s&&x(e)}}}function gd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","context-item heading svelte-r3p86y"),g(e,"aria-label","Has Heading")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,"heading-glyph")),i=!0)},d(s){s&&x(e),i=!1,a()}}}function pd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","context-item conditioned svelte-r3p86y"),g(e,"aria-label","Conditioned")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,"help-circle")),i=!0)},d(s){s&&x(e),i=!1,a()}}}function bd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","context-item callback svelte-r3p86y"),g(e,"aria-label","Has Callback")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,"code-glyph")),i=!0)},d(s){s&&x(e),i=!1,a()}}}function yd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","context-item dice svelte-r3p86y"),g(e,"aria-label","Will Parse for Dice Rolls")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,"dices")),i=!0)},d(s){s&&x(e),i=!1,a()}}}function vd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","context-item dice svelte-r3p86y"),g(e,"aria-label","Render markdown enabled")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,"markdown-icon")),i=!0)},d(s){s&&x(e),i=!1,a()}}}function b1(n){let e,t,i,a,s=n[1](n[0].type)+"",r,o,l,c,d,u,h,f,m,p,b=n[0].type=="heading"&&fd(n),_=n[0].type=="table"&&n[0].headers?.length&&md(n);function S(L,O){return L[0].type!="layout"?p1:g1}let C=S(n,-1),M=C(n),w="heading"in n[0]&&gd(n),k=n[0].conditioned&&pd(n),A="callback"in n[0]&&bd(n),P=("dice"in n[0]&&n[0].dice||"diceCallback"in n[0]&&n[0].diceCallback?.length)&&yd(n),B="markdown"in n[0]&&n[0].markdown&&vd(n);return{c(){e=v("div"),t=v("div"),i=v("div"),a=v("span"),r=pe(s),o=R(),b&&b.c(),l=R(),_&&_.c(),c=R(),M.c(),d=R(),u=v("small"),w&&w.c(),h=R(),k&&k.c(),f=R(),A&&A.c(),m=R(),P&&P.c(),p=R(),B&&B.c(),g(t,"class","info svelte-r3p86y"),g(u,"class","context svelte-r3p86y"),g(e,"class","property-block-container svelte-r3p86y")},m(L,O){D(L,e,O),y(e,t),y(t,i),y(i,a),y(a,r),y(i,o),b&&b.m(i,null),y(i,l),_&&_.m(i,null),y(t,c),M.m(t,null),y(e,d),y(e,u),w&&w.m(u,null),y(u,h),k&&k.m(u,null),y(u,f),A&&A.m(u,null),y(u,m),P&&P.m(u,null),y(u,p),B&&B.m(u,null)},p(L,[O]){O&1&&s!==(s=L[1](L[0].type)+"")&&we(r,s),L[0].type=="heading"?b?b.p(L,O):(b=fd(L),b.c(),b.m(i,l)):b&&(b.d(1),b=null),L[0].type=="table"&&L[0].headers?.length?_?_.p(L,O):(_=md(L),_.c(),_.m(i,null)):_&&(_.d(1),_=null),C===(C=S(L,O))&&M?M.p(L,O):(M.d(1),M=C(L),M&&(M.c(),M.m(t,null))),"heading"in L[0]?w||(w=gd(L),w.c(),w.m(u,h)):w&&(w.d(1),w=null),L[0].conditioned?k||(k=pd(L),k.c(),k.m(u,f)):k&&(k.d(1),k=null),"callback"in L[0]?A||(A=bd(L),A.c(),A.m(u,m)):A&&(A.d(1),A=null),"dice"in L[0]&&L[0].dice||"diceCallback"in L[0]&&L[0].diceCallback?.length?P||(P=yd(L),P.c(),P.m(u,p)):P&&(P.d(1),P=null),"markdown"in L[0]&&L[0].markdown?B||(B=vd(L),B.c(),B.m(u,null)):B&&(B.d(1),B=null)},i:N,o:N,d(L){L&&x(e),b&&b.d(),_&&_.d(),M.d(),w&&w.d(),k&&k.d(),A&&A.d(),P&&P.d(),B&&B.d()}}}function y1(n,e,t){let{block:i}=e,{plugin:a}=e;i.type=="heading"&&!i.size&&(i.size=1);let s=o=>"display"in i?`${i.display} (${o[0].toUpperCase()+o.slice(1).toLowerCase()})`:o[0].toUpperCase()+o.slice(1).toLowerCase(),r=o=>a.manager.getLayout(o)?.name??"No layout selected";return n.$$set=o=>{"block"in o&&t(0,i=o.block),"plugin"in o&&t(3,a=o.plugin)},[i,s,r,a]}var Mo=class extends G{constructor(e){super(),K(this,e,y1,b1,V,{block:0,plugin:3},m1)}},kd=Mo;var Ns=require("obsidian");var fe=require("obsidian");var Sd=require("obsidian");function v1(n){se(n,"svelte-1blh0v3",".creator-zone.svelte-1blh0v3{display:flex;justify-content:space-evenly;gap:1rem;flex-flow:row wrap}.header-container.svelte-1blh0v3{display:flex;align-items:center}")}function wd(n,e,t){let i=n.slice();return i[11]=e[t],i}function _d(n,e){let t,i,a=e[11].name+"",s,r,o,l,c,d,u=N,h,f;function m(){return e[8](e[11])}return{key:n,first:null,c(){t=v("div"),i=v("span"),s=pe(a),r=R(),o=v("div"),c=R(),g(i,"class","table-header"),g(t,"class","header-container svelte-1blh0v3"),this.first=t},m(p,b){D(p,t,b),y(t,i),y(i,s),y(t,r),y(t,o),y(t,c),h||(f=[J(l=e[5].call(null,o)),q(o,"click",m)],h=!0)},p(p,b){e=p,b&1&&a!==(a=e[11].name+"")&&we(s,a)},r(){d=t.getBoundingClientRect()},f(){Dn(t),u()},a(){u(),u=Tn(t,d,Pn,{duration:Io})},d(p){p&&x(t),h=!1,oe(f)}}}function k1(n){let e,t,i=[],a=new Map,s,r,o,l=be(n[0].filter(n[7])),c=d=>d[11].id;for(let d=0;d({name:m,id:Q()})),r=!1;function o(m){let{items:p,info:{source:b,trigger:_}}=m.detail;t(0,s=[...p])}function l(m){let{items:p,info:{source:b}}=m.detail;t(0,s=[...p]),i("sorted",s)}function c(m){m.preventDefault(),t(1,r=!1)}let d=m=>{t(0,s=s.filter(p=>p.id!=m.id)),i("sorted",s)},u=m=>{new Sd.ExtraButtonComponent(m).setIcon("cross-in-box")},h=m=>m.id!==ii,f=m=>d(m);return n.$$set=m=>{"headers"in m&&t(6,a=m.headers)},[s,r,o,l,d,u,a,h,f]}var Oo=class extends G{constructor(e){super(),K(this,e,w1,k1,V,{headers:6},v1)}},Cd=Oo;var Ds=require("obsidian");function _1(n){se(n,"svelte-mn2hp8",".setting-item.svelte-mn2hp8{align-items:center}.icon.svelte-mn2hp8{display:flex;align-items:center}")}function xd(n,e,t){let i=n.slice();return i[18]=e[t],i[19]=e,i[20]=t,i}function S1(n){let e,t=n[18].prop+"",i;return{c(){e=v("div"),i=pe(t),g(e,"class","setting-item-name")},m(a,s){D(a,e,s),y(e,i)},p(a,s){s&4&&t!==(t=a[18].prop+"")&&we(i,t)},d(a){a&&x(e)}}}function C1(n){let e,t,i,a;function s(){n[13].call(e,n[19],n[20])}return{c(){e=v("input"),g(e,"type","text"),g(e,"placeholder",t=String(n[18].prop))},m(r,o){D(r,e,o),ct(e,n[18].prop),i||(a=q(e,"input",s),i=!0)},p(r,o){n=r,o&4&&t!==(t=String(n[18].prop))&&g(e,"placeholder",t),o&4&&e.value!==n[18].prop&&ct(e,n[18].prop)},d(r){r&&x(e),i=!1,a()}}}function x1(n){let e,t,i,a;function s(){return n[15](n[18])}return{c(){e=v("div"),g(e,"class","edit")},m(r,o){D(r,e,o),i||(a=[q(e,"click",s),J(t=n[10].call(null,e))],i=!0)},p(r,o){n=r},d(r){r&&x(e),i=!1,oe(a)}}}function A1(n){let e,t,i,a;function s(){return n[14](n[18])}return{c(){e=v("div"),g(e,"class","done")},m(r,o){D(r,e,o),i||(a=[q(e,"click",s),J(t=n[11].call(null,e))],i=!0)},p(r,o){n=r},d(r){r&&x(e),i=!1,oe(a)}}}function Ad(n,e){let t,i,a,s,r,o,l,c,d,u,h,f,m,p;function b(A,P){return A[1]==A[18].id?C1:S1}let _=b(e,-1),S=_(e);function C(A,P){return A[1]==A[18].id?A1:x1}let M=C(e,-1),w=M(e);function k(){return e[16](e[18])}return{key:n,first:null,c(){t=v("div"),i=v("div"),r=R(),o=v("div"),S.c(),l=R(),c=v("div"),w.c(),d=R(),u=v("div"),f=R(),g(i,"class","icon svelte-mn2hp8"),g(i,"style",a=e[0]?"cursor: grab":"cursor: grabbing"),g(o,"class","setting-item-info"),g(u,"class","delete"),g(c,"class","setting-item-control"),g(t,"class","setting-item svelte-mn2hp8"),this.first=t},m(A,P){D(A,t,P),y(t,i),y(t,r),y(t,o),S.m(o,null),y(t,l),y(t,c),w.m(c,null),y(c,d),y(c,u),y(t,f),m||(p=[J(s=Fe.call(null,i,"grip-vertical")),q(i,"mousedown",e[5]),q(i,"touchstart",e[5]),q(u,"click",k),J(h=e[7].call(null,u))],m=!0)},p(A,P){e=A,P&1&&a!==(a=e[0]?"cursor: grab":"cursor: grabbing")&&g(i,"style",a),_===(_=b(e,P))&&S?S.p(e,P):(S.d(1),S=_(e),S&&(S.c(),S.m(o,null))),M===(M=C(e,P))&&w?w.p(e,P):(w.d(1),w=M(e),w&&(w.c(),w.m(c,d)))},d(A){A&&x(t),S.d(),w.d(),m=!1,oe(p)}}}function T1(n){let e,t=[],i=new Map,a,s,r,o=be(n[2]),l=c=>c[18].id;for(let c=0;cP)),A===je.POINTER&&t(0,r=!0)}function c(w){w.preventDefault(),t(0,r=!1)}let d=w=>{t(2,i=i.filter(k=>k.id!=w.id)),s("sorted",i.map(({prop:k})=>k))},u=w=>{new Ds.ExtraButtonComponent(w).setIcon("trash")},h,f=w=>{t(1,h=w.id)},m=w=>{t(2,i=i.map(k=>k.id==w.id?{id:w.id,prop:w.prop}:k)),t(1,h=null),s("sorted",i.map(({prop:k})=>k))},p=w=>{new Ds.ExtraButtonComponent(w).setIcon("pencil")},b=w=>{new Ds.ExtraButtonComponent(w).setIcon("check")};function _(w,k){w[k].prop=this.value,t(2,i),t(12,a)}let S=w=>m(w),C=w=>f(w),M=w=>d(w);return n.$$set=w=>{"properties"in w&&t(12,a=w.properties)},n.$$.update=()=>{n.$$.dirty&4096&&t(2,i=[...a])},[r,h,i,o,l,c,d,u,f,m,p,b,a,_,S,C,M]}var Po=class extends G{constructor(e){super(),K(this,e,D1,T1,V,{properties:12},_1)}},Dd=Po;var Fd=require("obsidian");function Ri(n,{delay:e=0,duration:t=400,easing:i=cs,axis:a="y"}={}){let s=getComputedStyle(n),r=+s.opacity,o=a==="y"?"height":"width",l=parseFloat(s[o]),c=a==="y"?["top","bottom"]:["left","right"],d=c.map(_=>`${_[0].toUpperCase()}${_.slice(1)}`),u=parseFloat(s[`padding${d[0]}`]),h=parseFloat(s[`padding${d[1]}`]),f=parseFloat(s[`margin${d[0]}`]),m=parseFloat(s[`margin${d[1]}`]),p=parseFloat(s[`border${d[0]}Width`]),b=parseFloat(s[`border${d[1]}Width`]);return{delay:e,duration:t,easing:i,css:_=>`overflow: hidden;opacity: ${Math.min(_*20,1)*r};${o}: ${_*l}px;padding-${c[0]}: ${_*u}px;padding-${c[1]}: ${_*h}px;margin-${c[0]}: ${_*f}px;margin-${c[1]}: ${_*m}px;border-${c[0]}-width: ${_*p}px;border-${c[1]}-width: ${_*b}px;`}}var Nd=require("obsidian");var E1=require("obsidian");function ai(n){switch(n){case"inline":case"group":return{type:n,id:Q(),properties:[],nested:[]};case"heading":return{type:"heading",id:Q(),properties:[],size:1};case"property":return{type:"property",id:Q(),properties:[]};case"saves":return{type:"saves",id:Q(),properties:[]};case"traits":return{type:"traits",id:Q(),properties:[]};case"spells":return{type:"spells",id:Q(),properties:[]};case"subheading":return{type:"subheading",id:Q(),properties:[]};case"image":return{type:"image",id:Q(),properties:[]};case"table":return{type:"table",id:Q(),properties:[],headers:[],calculate:!0};case"text":return{type:"text",id:Q(),properties:[],text:null};case"ifelse":return{type:"ifelse",id:Q(),conditions:[]};case"collapse":return{type:"collapse",id:Q(),heading:null,hasRule:!1,conditioned:!1,nested:[ai("group")],open:!1};case"javascript":return{type:"javascript",id:Q(),conditioned:!1,code:""};case"layout":return{type:"layout",id:Q(),layout:null};case"action":return{type:"action",id:Q(),icon:"clapperboard"}}}var Ni=require("obsidian");var Ed=require("@codemirror/view");function M1(n){se(n,"svelte-1ss6215",".setting-item-info.svelte-1ss6215{width:100%}.setting-item-name.svelte-1ss6215{display:flex;align-items:center;gap:0.25rem}")}function I1(n){let e;function t(s,r){return!s[0]||!s[0].condition?R1:P1}let i=t(n,-1),a=i(n);return{c(){e=v("div"),a.c(),g(e,"class","setting-item-name svelte-1ss6215")},m(s,r){D(s,e,r),a.m(e,null)},p(s,r){i===(i=t(s,r))&&a?a.p(s,r):(a.d(1),a=i(s),a&&(a.c(),a.m(e,null)))},d(s){s&&x(e),a.d()}}}function O1(n){let e,t,i,a;return{c(){e=v("div")},m(s,r){D(s,e,r),i||(a=J(t=n[4].call(null,e)),i=!0)},p:N,d(s){s&&x(e),i=!1,a()}}}function P1(n){let e,t=n[0].condition+"",i;return{c(){e=v("code"),i=pe(t)},m(a,s){D(a,e,s),y(e,i)},p(a,s){s&1&&t!==(t=a[0].condition+"")&&we(i,t)},d(a){a&&x(e)}}}function R1(n){let e,t,i,a,s,r;return{c(){e=v("div"),i=R(),a=v("em"),a.textContent="No condition set"},m(o,l){D(o,e,l),D(o,i,l),D(o,a,l),s||(r=J(t=Fe.call(null,e,"alert-triangle")),s=!0)},p:N,d(o){o&&(x(e),x(i),x(a)),s=!1,r()}}}function N1(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","edit")},m(s,r){D(s,e,r),i||(a=[q(e,"click",n[8]),J(t=n[5].call(null,e))],i=!0)},p:N,d(s){s&&x(e),i=!1,oe(a)}}}function B1(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","done")},m(s,r){D(s,e,r),i||(a=[q(e,"click",n[3]),J(t=n[6].call(null,e))],i=!0)},p:N,d(s){s&&x(e),i=!1,oe(a)}}}function L1(n){let e,t,i,a,s,r,o,l;function c(p,b){return p[1]?O1:I1}let d=c(n,-1),u=d(n);function h(p,b){return p[1]?B1:N1}let f=h(n,-1),m=f(n);return{c(){e=v("div"),u.c(),t=R(),i=v("div"),m.c(),a=R(),s=v("div"),g(e,"class","setting-item-info svelte-1ss6215"),g(s,"class","delete"),g(i,"class","setting-item-control")},m(p,b){D(p,e,b),u.m(e,null),D(p,t,b),D(p,i,b),m.m(i,null),y(i,a),y(i,s),o||(l=[q(s,"click",n[9]),J(r=n[7].call(null,s))],o=!0)},p(p,[b]){d===(d=c(p,b))&&u?u.p(p,b):(u.d(1),u=d(p),u&&(u.c(),u.m(e,null))),f===(f=h(p,b))&&m?m.p(p,b):(m.d(1),m=f(p),m&&(m.c(),m.m(i,a)))},i:N,o:N,d(p){p&&(x(e),x(t),x(i)),u.d(),m.d(),o=!1,oe(l)}}}function F1(n,e,t){let i=Me(),{condition:a}=e,{editing:s=!1}=e,r;function o(){r&&(t(0,a.condition=r.state.doc.toString(),a),r.destroy()),i("done")}let l=m=>{let p=new Ni.TextAreaComponent(m).setValue(a?.condition?a.condition:"");r=Lt(p.inputEl,Ed.EditorView.updateListener.of(b=>{b.docChanged&&t(0,a.condition=b.state.doc.toString(),a)}))},c=m=>{new Ni.ExtraButtonComponent(m).setIcon("pencil")},d=m=>{new Ni.ExtraButtonComponent(m).setIcon("check")},u=m=>{new Ni.ExtraButtonComponent(m).setIcon("trash")};bn(()=>{r?.destroy()});let h=()=>i("edit"),f=()=>i("delete");return n.$$set=m=>{"condition"in m&&t(0,a=m.condition),"editing"in m&&t(1,s=m.editing)},[a,s,i,o,l,c,d,u,h,f]}var Ro=class extends G{constructor(e){super(),K(this,e,F1,L1,V,{condition:0,editing:1},M1)}},Md=Ro;function W1(n){se(n,"svelte-mn2hp8",".setting-item.svelte-mn2hp8{align-items:center}.icon.svelte-mn2hp8{display:flex;align-items:center}")}function Id(n,e,t){let i=n.slice();return i[15]=e[t],i}function Od(n){let e,t,i,a,s,r,o,l,c,d;function u(){return n[11](n[15])}function h(){return n[12](n[15])}function f(){return n[13](n[15])}return r=new Md({props:{condition:n[15].prop,editing:n[1]==n[15].id}}),r.$on("delete",u),r.$on("edit",h),r.$on("done",f),{c(){e=v("div"),t=v("div"),s=R(),ie(r.$$.fragment),o=R(),g(t,"class","icon svelte-mn2hp8"),g(t,"style",i=n[2]?"cursor: grab":"cursor: grabbing"),g(e,"class","setting-item svelte-mn2hp8")},m(m,p){D(m,e,p),y(e,t),y(e,s),te(r,e,null),y(e,o),l=!0,c||(d=[J(a=Fe.call(null,t,"grip-vertical")),q(t,"mousedown",n[6]),q(t,"touchstart",n[6])],c=!0)},p(m,p){n=m,(!l||p&4&&i!==(i=n[2]?"cursor: grab":"cursor: grabbing"))&&g(t,"style",i);let b={};p&8&&(b.condition=n[15].prop),p&10&&(b.editing=n[1]==n[15].id),r.$set(b)},i(m){l||(E(r.$$.fragment,m),l=!0)},o(m){I(r.$$.fragment,m),l=!1},d(m){m&&x(e),ne(r),c=!1,oe(d)}}}function Pd(n,e){let t,i=e[1],a,s,r=Od(e);return{key:n,first:null,c(){t=_e(),r.c(),a=_e(),this.first=t},m(o,l){D(o,t,l),r.m(o,l),D(o,a,l),s=!0},p(o,l){e=o,l&2&&V(i,i=e[1])?(le(),I(r,1,1,N),ce(),r=Od(e),r.c(),E(r,1),r.m(a.parentNode,a)):r.p(e,l)},i(o){s||(E(r),s=!0)},o(o){I(r),s=!1},d(o){o&&(x(t),x(a)),r.d(o)}}}function H1(n){let e,t,i,a,s,r=[],o=new Map,l,c,d,u,h=be(n[3]),f=m=>m[15].id;for(let m=0;m(s(),s=Dt(o,M=>t(10,a=M)),o);n.$$.on_destroy.push(()=>s());let{conditions:o}=e;r();let l=null,c=Me(),d=!0;function u(M){let{items:w,info:{source:k,trigger:A}}=M.detail;t(3,i=[...w]),k===je.KEYBOARD&&A===Ye.DRAG_STOPPED&&t(2,d=!0)}function h(M){let{items:w,info:{source:k}}=M.detail;t(3,i=[...w]),c("sorted",i.map(({prop:A})=>A)),k===je.POINTER&&t(2,d=!0)}function f(M){M.preventDefault(),t(2,d=!1)}let m=M=>{t(3,i=i.filter(w=>w.id!=M.id)),c("sorted",i.map(({prop:w})=>w))},p=M=>{t(3,i=i.map(w=>w.id==M.id?{id:M.id,prop:M.prop}:w)),t(1,l=null),c("sorted",i.map(({prop:w})=>w))},b=M=>{new Nd.Setting(M).setName("Add new condition").addButton(w=>w.setIcon("plus").onClick(()=>{let k=Q();t(1,l=k),t(3,i=[...i,{prop:{nested:[ai("group")],condition:null},id:k}]),c("sorted",i.map(({prop:A})=>A))}))},_=M=>m(M),S=M=>t(1,l=M.id),C=M=>p(M);return n.$$set=M=>{"conditions"in M&&r(t(0,o=M.conditions))},n.$$.update=()=>{n.$$.dirty&1024&&t(3,i=a.map(M=>({prop:M,id:Q()})))},[o,l,d,i,u,h,f,m,p,b,a,_,S,C]}var No=class extends G{constructor(e){super(),K(this,e,z1,H1,V,{conditions:0},W1)}},Bd=No;function q1(n){se(n,"svelte-131x181",".condition-builder-container.svelte-131x181 .setting-item.svelte-131x181{align-items:flex-start}")}function Ld(n){let e,t,i;return{c(){e=v("div"),e.innerHTML=`Conditions are used to determine what block is + rendered. Conditions are evaluated top to bottom - the + first to evaluate to true is the condition that will be used. If the last + condition is left blank and no others were true, it will + be used.

The expression receives the monster parameter, which can be used to access properties of the + monster being rendered, and the plugin parameter, which is a reference to the Fantasy Statblocks + plugin and can be used for accessing app and plugin settings.

All conditions must return a true/false value. For + example: return monster.ac > 1`,g(e,"class","setting-item-description")},m(a,s){D(a,e,s),i=!0},i(a){i||(a&&It(()=>{i&&(t||(t=Jn(e,Ri,{},!0)),t.run(1))}),i=!0)},o(a){a&&(t||(t=Jn(e,Ri,{},!1)),t.run(0)),i=!1},d(a){a&&x(e),a&&t&&t.end()}}}function j1(n){let e,t,i,a,s,r,o,l,c,d,u,h,f=n[1]&&Ld(n);return c=new Bd({props:{conditions:n[2]}}),c.$on("sorted",n[7]),{c(){e=v("div"),t=v("div"),i=v("div"),f&&f.c(),a=R(),s=v("div"),r=v("div"),l=R(),ie(c.$$.fragment),g(i,"class","setting-item-info"),g(s,"class","setting-item-control"),g(t,"class","setting-item svelte-131x181"),g(e,"class","condition-builder-container svelte-131x181")},m(m,p){D(m,e,p),y(e,t),y(t,i),f&&f.m(i,null),y(t,a),y(t,s),y(s,r),y(e,l),te(c,e,null),d=!0,u||(h=[J(o=n[4].call(null,r)),q(r,"click",n[6])],u=!0)},p(m,[p]){m[1]?f?p&2&&E(f,1):(f=Ld(m),f.c(),E(f,1),f.m(i,null)):f&&(le(),I(f,1,1,()=>{f=null}),ce())},i(m){d||(E(f),E(c.$$.fragment,m),d=!0)},o(m){I(f),I(c.$$.fragment,m),d=!1},d(m){m&&x(e),f&&f.d(),ne(c),u=!1,oe(h)}}}function V1(n,e,t){let i,{plugin:a}=e,{block:s}=e,r=Le(s.conditions),o=async()=>{t(5,a.settings.hideConditionHelp=!a.settings.hideConditionHelp,a),await a.saveSettings()},l=u=>{new Fd.ExtraButtonComponent(u).setIcon("help-circle")},c=()=>o(),d=u=>t(0,s.conditions=[...u.detail],s);return n.$$set=u=>{"plugin"in u&&t(5,a=u.plugin),"block"in u&&t(0,s=u.block)},n.$$.update=()=>{n.$$.dirty&32&&t(1,i=a.settings.hideConditionHelp)},[s,i,r,o,l,a,c,d]}var Bo=class extends G{constructor(e){super(),K(this,e,V1,j1,V,{plugin:5,block:0},q1)}},Wd=Bo;var Hn=require("@codemirror/view");var Ho=La(Es()),Ms=class extends Ho.FuzzyInputSuggest{getItemText(e){return e.name}renderNote(e,t){}renderTitle(e,t){this.renderMatches(e,t.item.name,t.match.matches)}},Is=class extends Ho.FuzzyInputSuggest{renderNote(e,t){}renderTitle(e,t){this.renderMatches(e,t.item,t.match.matches)}getItemText(e){return e}};var Ud=require("obsidian"),_t=class extends Ud.Modal{constructor(t){super(t.app);this.plugin=t;this.modalEl.addClass("fantasy-statblocks-modal"),t.register(()=>this.close())}};function Rs(n,e,t){switch(e.type){case"group":case"inline":return new zo(n,e);case"action":return new Go(n,e);case"collapse":return new qo(n,e);case"ifelse":return new Uo(n,e);case"javascript":return new jo(n,e);case"heading":return new Ko(n,e);case"layout":return new Vo(n,e,t);case"property":return new $o(n,e);case"saves":return new Yo(n,e);case"spells":return new Jo(n,e);case"subheading":return new Xo(n,e);case"table":return new Qo(n,e);case"traits":return new Zo(n,e);case"text":return new el(n,e);default:return new si(n,e)}}var Wn=class extends _t{constructor(t,i){super(t);this.plugin=t;i&&(this.block=Ze(i)),this.containerEl.addClass("statblock-edit-block")}onOpen(){this.titleEl.setText("Edit Block"),this.display()}buildButtons(t){t.empty(),new fe.Setting(t).addButton(i=>i.setCta().setIcon("checkmark").setTooltip("Save").onClick(()=>{this.saved=!0,this.close()})).addExtraButton(i=>i.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.close()}))}buildProperty(t){}},zo=class extends Wn{async display(){this.contentEl.empty(),new fe.Setting(this.contentEl).setName("Section Heading").setDesc("This text will be used for the section heading. Can be left blank.").addText(e=>{e.setValue(this.block.heading).onChange(t=>this.block.heading=t)}),new fe.Setting(this.contentEl).setName("Has Rule").setDesc("If present, the block will have a horizontal rule placed after it.").addToggle(e=>{e.setValue(this.block.hasRule).onChange(t=>this.block.hasRule=t)}),new fe.Setting(this.contentEl).setName("CSS Container Class").setDesc("All nested elements inside this group container will receive this CSS class. If blank, no class will be applied.").addText(e=>{e.setValue(this.block.cls).onChange(t=>this.block.cls=t)}),this.buildConditions(this.contentEl.createDiv()),this.buildButtons(this.contentEl.createDiv())}buildConditions(e){e.empty();let t=this.block;new fe.Setting(e).setName("Conditional").setDesc("The block will not be added if the associated properties are not present.").addToggle(i=>{i.setValue(t.conditioned).onChange(a=>{t.conditioned=a,this.buildConditions(e)})})}},qo=class extends Wn{async display(){this.contentEl.empty(),new fe.Setting(this.contentEl).setName("Section Heading").setDesc("This text will be used for the section heading. Can be left blank.").addText(e=>{e.setValue(this.block.heading).onChange(t=>this.block.heading=t)}),new fe.Setting(this.contentEl).setName("Open by Default").setDesc("The block will start open.").addToggle(e=>{e.setValue(this.block.open).onChange(t=>this.block.open=t)}),new fe.Setting(this.contentEl).setName("Has Rule").setDesc("If present, the block will have a horizontal rule placed after it.").addToggle(e=>{e.setValue(this.block.hasRule).onChange(t=>this.block.hasRule=t)}),this.buildButtons(this.contentEl.createDiv())}},jo=class extends Wn{async display(){this.contentEl.empty(),new fe.Setting(this.contentEl).setName("JavaScript").setHeading().setDesc(createFragment(t=>{t.createSpan({text:"JavaScript blocks can be used to do highly advanced HTML elements. The JavaScript code will be provided the "}),t.createEl("code",{text:"monster"}),t.createSpan({text:" and "}),t.createEl("code",{text:"property"}),t.createSpan({text:"parameters and should return a HTML element, which will be attached to the block's container element."})}));let e=new fe.TextAreaComponent(this.contentEl).setValue(this.block.code);e.inputEl.addClass("statblock-textarea"),this.editor=Lt(e.inputEl,Hn.EditorView.updateListener.of(t=>{t.docChanged&&(this.block.code=t.state.doc.toString())})),this.buildButtons(this.contentEl.createDiv())}},Vo=class extends Wn{constructor(t,i,a){super(t,i);this.layout=a}hasLayoutNestedAlready(t){for(let i of t)if(i.type=="layout"&&i.layout==this.layout||"nested"in i&&this.hasLayoutNestedAlready(i.nested))return!0;return!1}async display(){this.contentEl.empty(),new fe.Setting(this.contentEl).setName("Layout to Insert").addDropdown(t=>{for(let i of this.plugin.manager.getAllLayouts())i.id!=this.layout&&(this.hasLayoutNestedAlready(i.blocks)||t.addOption(i.id,i.name));this.block.layout&&t.setValue(this.block.layout),t.onChange(i=>{this.block.layout=i})}),this.buildButtons(this.contentEl.createDiv())}},Uo=class extends Wn{async display(){this.contentEl.empty(),this.buildConditions(this.contentEl.createDiv()),this.buildButtons(this.contentEl.createDiv())}buildConditions(e){new Wd({target:e,props:{plugin:this.plugin,block:this.block}})}},Ps,Gd,Os=class extends Wn{constructor(){super(...arguments);Be(this,Ps);this.propertiesEl=createDiv("block-properties-container");this.separatorEl=createDiv("block-separator-container");this.conditionsEl=createDiv("block-conditions-container");this.diceEl=createDiv("block-dice-container");this.advancedEl=createEl("details",{cls:"statblock-nested-settings",attr:{...this.plugin.settings.showAdvanced?{open:!0}:{}}});this.buttonsEl=createDiv("block-buttons-container")}async display(){this.containerEl.addClass("statblock-block-editor"),this.contentEl.empty(),this.contentEl.appendChild(this.propertiesEl),this.contentEl.appendChild(this.separatorEl),this.contentEl.appendChild(this.conditionsEl),this.contentEl.appendChild(this.diceEl),this.contentEl.appendChild(this.advancedEl),this.contentEl.appendChild(this.buttonsEl),this.buildProperties(this.propertiesEl),this.buildSeparator(this.separatorEl),this.buildConditions(this.conditionsEl),this.buildDice(this.diceEl),Oe(this,Ps,Gd).call(this,this.advancedEl),this.buildButtons(this.buttonsEl)}onClose(){this.editor?.destroy()}buildProperties(t){}buildSeparator(t){}buildConditions(t){}buildDice(t){}};Ps=new WeakSet,Gd=function(t){t.empty(),t.ontoggle=()=>{this.plugin.settings.showAdvanced=t.open,this.plugin.saveSettings()};let i=t.createEl("summary");new fe.Setting(i).setHeading().setName("Advanced Settings"),i.createDiv("collapser").createDiv("handle"),this.buildAdvanced(t.createDiv())};var Go=class extends Os{buildProperties(e){e.empty(),new fe.Setting(e).setName("Icon").setDesc("Choose the icon to use for the button.").addText(t=>{t.setValue(this.block.icon);let i=(0,fe.getIconIds)().map(s=>s.replace(/^lucide-/,""));new Is(this.app,t,i).onSelect(async s=>{this.block.icon=s.item,this.buildProperties(e)}),t.inputEl.onblur=async()=>{let s=t.inputEl.value?.trim()?t.inputEl.value.trim():"/";this.block.icon=s,this.buildProperties(e)}}).addExtraButton(t=>{t.setIcon(this.block.icon).setDisabled(!0)}),new fe.Setting(e).setName("Action").setDesc("Choose a Command to run when this action is executed.").addText(t=>{t.setValue(this.block.action);let i=this.app.commands.listCommands();new Ms(this.app,t,i).onSelect(async s=>{this.block.action=s.item.id}),t.inputEl.onblur=async()=>{let s=t.inputEl.value?.trim()?t.inputEl.value.trim():"/";this.block.action=i.find(r=>r.name.toLowerCase()===s?.toLowerCase())?.id}})}buildAdvanced(e){e.empty(),new fe.Setting(e).setHeading().setName("Callback").setDesc(createFragment(i=>{i.createSpan({text:"Executing the action will run the callback. Any registered commands will "}),i.createEl("strong",{text:"not"}),i.createSpan({text:" be ran."}),i.createEl("br"),i.createSpan({text:"The callback will receive the "}),i.createEl("code",{text:"monster"}),i.createSpan({text:" parameter. "})}));let t=new fe.TextAreaComponent(e).setValue(this.block.callback);t.inputEl.addClass("statblock-textarea"),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.callback=i.state.doc.toString())}))}},si=class extends Os{addPropertyAsCssClassToggleSetting(e){new fe.Setting(e).setName("Add Property as CSS Class").setDesc("Disable this to prevent adding the property to the containing HTML element as a CSS class. This can be used to avoid collisions with native Obsidian CSS.").addToggle(t=>{t.setValue(!this.block.doNotAddClass).onChange(i=>{this.block.doNotAddClass=!i,this.display()})})}buildProperties(e){e.empty();let t=this.block;new fe.Setting(e).setName("Link Monster Property").addText(i=>i.setValue(t.properties[0]).onChange(a=>{t.properties[0]=a}))}buildAdvanced(e){if(e.empty(),this.plugin.canUseDiceRoller){new fe.Setting(e).setHeading().setName("Dice Callback").setDesc(createFragment(i=>{i.createSpan({text:"The block will run the callback and use the returned values for the dice strings."}),i.createEl("br"),i.createSpan({text:"The callback will receive the "}),i.createEl("code",{text:"monster"}),i.createSpan({text:" and "}),i.createEl("code",{text:"property"}),i.createSpan({text:"parameters. Dice callbacks should return an array of strings and objects, with the objects defining the dice rolls:"}),i.createEl("br"),fe.MarkdownRenderer.render(this.plugin.app,"```ts\ninterface DiceCallbackObject {\n text: string // string to be parsed into a dice roll\n original?: string // optional, shown in parenthesis\n}\n```",i.createDiv(),"",new fe.Component),i.createEl("br"),i.createEl("span",{text:"For example: "}),i.createEl("br"),fe.MarkdownRenderer.render(this.plugin.app,'```ts\nconst diceText = monster.stats[5] + "d20 + 2";\nreturn ["The monster guesses you have: ", { text: diceText }, " freckles."];\n```',i.createDiv(),"",new fe.Component)}));let t=new fe.TextAreaComponent(e).setValue(this.block.diceCallback);t.inputEl.addClasses(["statblock-textarea","statblock-textarea-small"]),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.diceCallback=i.state.doc.toString())}))}}buildSeparator(e){}buildConditions(e){e.empty();let t=this.block;new fe.Setting(e).setName("Conditional").setDesc("The block will not be added if the associated properties are not present.").addToggle(i=>{i.setValue(t.conditioned).onChange(a=>{t.conditioned=a,this.buildConditions(e)})}),this.block.conditioned||new fe.Setting(e).setName("Fallback").setDesc("If not present, this text will be displayed.").addText(i=>{t.fallback||(t.fallback="-"),i.setValue(t.fallback).onChange(a=>{t.fallback=a})}),new fe.Setting(e).setName("Has Rule").setDesc("If present, the block will have a horizontal rule placed after it.").addToggle(i=>{i.setValue(t.hasRule).onChange(a=>t.hasRule=a)})}buildDice(e){e.empty();let t=this.block;this.plugin.canUseDiceRoller&&(new fe.Setting(e).setName("Parse for Dice").setDesc("The plugin will attempt to add dice rollers as specified.").addToggle(i=>i.setValue(t.dice).onChange(a=>{t.dice=a,this.buildDice(e)})),t.dice&&new fe.Setting(e.createDiv()).setName("Link Dice to Property").setDesc("The dice roller will parse this property instead of the original.").addText(i=>{i.setValue(`${t.diceProperty}`).onChange(a=>{t.diceProperty=a})}))}},ri=class extends si{buildAdvanced(e){super.buildAdvanced(e)}},Ko=class extends si{buildProperties(e){super.buildProperties(e),new fe.Setting(e).setName("Header Size").setDesc("The heading will use this size.").addDropdown(t=>{this.block.size||this.block.size==1,t.addOptions({1:"H1",2:"H2",3:"H3",4:"H4",5:"H5",6:"H6"}).setValue(`${this.block.size}`).onChange(i=>this.block.size=Number(i))})}},$o=class extends ri{buildAdvanced(e){super.buildAdvanced(e),new fe.Setting(e).setHeading().setName("Callback").setDesc(createFragment(i=>{i.createSpan({text:"The block will run the callback and use the returned string as the property."}),i.createEl("br"),i.createSpan({text:"The callback will receive the "}),i.createEl("code",{text:"monster"}),i.createSpan({text:" parameter. The callback should return a string. For example: "}),i.createEl("code",{text:"return monster.name"}),i.createEl("br"),i.createEl("strong",{text:"Please Note: This will not run if a dice callback is provided."})}));let t=new fe.TextAreaComponent(e).setValue(this.block.callback);t.inputEl.addClass("statblock-textarea"),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.callback=i.state.doc.toString())}))}onClose(){this.editor?.destroy()}buildProperties(e){super.buildProperties(e),super.addPropertyAsCssClassToggleSetting(e),new fe.Setting(e).setName("Display Text").setDesc("This text will be used for the property name.").addText(t=>{t.setValue(this.block.display).onChange(i=>this.block.display=i)})}},Yo=class extends ri{buildProperties(e){super.buildProperties(e),super.addPropertyAsCssClassToggleSetting(e),new fe.Setting(e).setName("Display Text").setDesc("This text will be used for the property name.").addText(t=>{t.setValue(this.block.display).onChange(i=>this.block.display=i)})}buildAdvanced(e){super.buildAdvanced(e),new fe.Setting(e).setHeading().setName("Callback").setDesc(createFragment(i=>{i.createSpan({text:"The block will run the callback on each save object and use the returned object as the save."}),i.createEl("br"),i.createSpan({text:"The callback will receive the "}),i.createEl("code",{text:"monster"}),i.createSpan({text:" and "}),i.createEl("code",{text:"property"}),i.createSpan({text:" parameters. The callback should return an object with a single key and value. For example: "}),i.createEl("code",{text:'return {"fort": property.fortitude}'}),i.createEl("br"),i.createEl("strong",{text:"Please Note: This will not run if a dice callback is provided."})}));let t=new fe.TextAreaComponent(e).setValue(this.block.callback);t.inputEl.addClass("statblock-textarea"),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.callback=i.state.doc.toString())}))}},Jo=class extends ri{buildProperties(e){super.buildProperties(e),new fe.Setting(e).setName("Trait Name").setDesc("Name to display for the Spellcasting trait. Defaults to Spellcasting if not provided.").addText(t=>{t.setValue(this.block.heading).onChange(i=>this.block.heading=i)})}},Xo=class extends si{buildProperties(e){e.empty();let t=this.block,i=e.createDiv("statblock-additional-container"),a="";new fe.Setting(i).setHeading().setName("Link Monster Properties").addText(o=>o.setPlaceholder("property").setValue(a).onChange(l=>a=l)).addExtraButton(o=>o.setIcon("plus-with-circle").onClick(()=>{if(!a||!a.length){new fe.Notice("A valid property must be supplied.");return}t.properties.push(a),this.buildProperties(e)}));let s=i.createDiv("additional");new Dd({target:s,props:{properties:this.block.properties.map(o=>({prop:o,id:Q()}))}}).$on("sorted",o=>{t.properties=[...o.detail]})}buildSeparator(e){e.empty(),new fe.Setting(e).setName("Separator").setDesc("Text separating properties").addText(t=>{t.setValue(this.block.separator).onChange(i=>{if(i===" "){this.block.separator=i;return}this.block.separator=(i??"").trim().length===0?", ":i})})}},Qo=class extends si{buildAdvanced(e){super.buildAdvanced(e),new fe.Setting(e).setHeading().setName("Ability Modifier Calculation").setDesc(createFragment(i=>{i.createSpan({text:"Allows a custom modifier for the stat."}),i.createEl("br"),i.createSpan({text:"Variables "}),i.createEl("code",{text:"stat"}),i.createSpan({text:" and "}),i.createEl("code",{text:"monster"}),i.createSpan({text:"are accessible, use these to calculate the modifier."})}));let t=new fe.TextAreaComponent(e).setValue(this.block.modifier);t.inputEl.addClasses(["statblock-textarea","statblock-textarea-small"]),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.modifier=i.state.doc.toString())}))}buildProperties(e){super.buildProperties(e);let t=e.createDiv("statblock-additional-container"),i="";new fe.Setting(t).setHeading().setName("Table Headers").addText(s=>s.setPlaceholder("header").setValue(i).onChange(r=>i=r)).addExtraButton(s=>s.setIcon("plus-with-circle").onClick(()=>{if(!i||!i.length){new fe.Notice("A valid property must be supplied.");return}this.block.headers.push(i),this.buildProperties(e)}));let a=t.createDiv("additional");new Cd({target:a,props:{headers:this.block.headers}}).$on("sorted",s=>{this.block.headers=[...s.detail?.map(r=>r.name)??[]]}),new fe.Setting(e).setName("Calculate Modifiers").setDesc("The block will attempt to calculate modifiers for table values.").addToggle(s=>{s.setValue(this.block.calculate).onChange(r=>{this.block.calculate=r})}),super.addPropertyAsCssClassToggleSetting(e)}},Zo=class extends ri{buildProperties(e){super.buildProperties(e),super.addPropertyAsCssClassToggleSetting(e),new fe.Setting(e).setName("Use Monster Property for Heading").setDesc("The Section heading will be set to the value of the specified property.").addToggle(i=>{i.setValue(this.block.headingProp).onChange(a=>{this.block.headingProp=a,this.display()})}),new fe.Setting(e).setName("Section Heading").setDesc(this.block.headingProp?"The section will use this property for the section heading. If the property does not exist or is blank, the section heading will not appear.":"This text will be used for the section heading. Can be left blank.").addText(i=>{i.setValue(this.block.heading).onChange(a=>this.block.heading=a)}),new fe.Setting(e).setName("Section Subheading Text").setDesc(createFragment(i=>{i.createSpan({text:"Text entered here will appear directly after the section heading, before the actual traits. Use "}),i.createEl("code",{text:"{{monster}}"}),i.createSpan({text:" to insert the current monster's name."})})).controlEl.detach(),new fe.TextAreaComponent(this.contentEl).setValue(this.block.subheadingText).onChange(i=>this.block.subheadingText=i)}buildAdvanced(e){super.buildAdvanced(e),new fe.Setting(e).setHeading().setName("Callback").setDesc(createFragment(i=>{i.createSpan({text:"The block will run the callback on each trait and use the returned string as the trait description."}),i.createEl("br"),i.createSpan({text:"The callback will receive the "}),i.createEl("code",{text:"monster"}),i.createSpan({text:" and "}),i.createEl("code",{text:"property"}),i.createSpan({text:" parameters. The callback should return a string. For example: "}),i.createEl("code",{text:"return monster.name"}),i.createEl("br"),i.createEl("strong",{text:"Please Note: This will not run if a dice callback is provided."})}));let t=new fe.TextAreaComponent(e).setValue(this.block.callback);t.inputEl.addClass("statblock-textarea"),this.editor=Lt(t.inputEl,Hn.EditorView.updateListener.of(i=>{i.docChanged&&(this.block.callback=i.state.doc.toString())}))}},el=class extends ri{buildAdvanced(e){super.buildAdvanced(e),new fe.Setting(e).setHeading().setName("Text to Show").setDesc(createFragment(t=>{t.createSpan({text:"The block will "}),t.createEl("strong",{text:"always"}),t.createSpan({text:" display the text entered here."})})),new fe.TextAreaComponent(e).setValue(this.block.text).onChange(t=>{this.block.text=t})}buildProperties(e){super.buildProperties(e),new fe.Setting(e).setName("Use Monster Property for Heading").setDesc("The Section heading will be set to the value of the specified property.").addToggle(t=>{t.setValue(this.block.headingProp).onChange(i=>{this.block.headingProp=i,this.display()})}),new fe.Setting(e).setName("Section Heading").setDesc(this.block.headingProp?"The section will use this property for the section heading. If the property does not exist or is blank, the section heading will not appear.":"This text will be used for the section heading. Can be left blank.").addText(t=>{t.setValue(this.block.heading).onChange(i=>this.block.heading=i)})}};function n0(n){se(n,"svelte-1e3b779",".statblock-creator-container.svelte-1e3b779.svelte-1e3b779{display:flex;justify-content:space-between;width:100%;height:100%;gap:0.25rem}body:not(.is-mobile) .statblock-creator-container.svelte-1e3b779:not(:hover)>.icons.svelte-1e3b779{visibility:hidden}.statblock-creator-block.svelte-1e3b779.svelte-1e3b779{width:100%}.icons.svelte-1e3b779.svelte-1e3b779{display:flex;justify-content:flex-end}.statblock-creator-container.svelte-1e3b779 .icons.svelte-1e3b779{align-items:center}.icon.svelte-1e3b779:not(:first-child) .clickable-icon{margin-left:0}.layout.svelte-1e3b779.svelte-1e3b779{border:2px dashed grey}")}function i0(n){let e,t;return e=new kd({props:{block:n[0],plugin:n[1]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&1&&(s.block=i[0]),a&2&&(s.plugin=i[1]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function a0(n){let e;return{c(){e=pe("JavaScript")},m(t,i){D(t,e,i)},p:N,i:N,o:N,d(t){t&&x(e)}}}function Kd(n){let e,t,i,a,s=[a0,i0],r=[];function o(l,c){return l[0].type=="javascript"?0:l[0].type!="ifelse"&&l[0].type!="collapse"?1:-1}return~(t=o(n,-1))&&(i=r[t]=s[t](n)),{c(){e=v("div"),i&&i.c(),g(e,"class","statblock-creator-block svelte-1e3b779"),re(e,"layout",n[0].type=="layout")},m(l,c){D(l,e,c),~t&&r[t].m(e,null),a=!0},p(l,c){let d=t;t=o(l,c),t===d?~t&&r[t].p(l,c):(i&&(le(),I(r[d],1,1,()=>{r[d]=null}),ce()),~t?(i=r[t],i?i.p(l,c):(i=r[t]=s[t](l),i.c()),E(i,1),i.m(e,null)):i=null),(!a||c&1)&&re(e,"layout",l[0].type=="layout")},i(l){a||(E(i),a=!0)},o(l){I(i),a=!1},d(l){l&&x(e),~t&&r[t].d()}}}function s0(n){let e,t=n[0],i,a,s,r,o,l,c,d,u,h,f=Kd(n);return{c(){e=v("div"),f.c(),i=R(),a=v("div"),s=v("div"),o=R(),l=v("div"),g(s,"class","icon svelte-1e3b779"),g(l,"class","icon svelte-1e3b779"),g(a,"class","icons svelte-1e3b779"),g(e,"class","statblock-creator-container svelte-1e3b779")},m(m,p){D(m,e,p),f.m(e,null),y(e,i),y(e,a),y(a,s),y(a,o),y(a,l),d=!0,u||(h=[J(r=n[2].call(null,s)),J(c=n[3].call(null,l))],u=!0)},p(m,[p]){p&1&&V(t,t=m[0])?(le(),I(f,1,1,N),ce(),f=Kd(m),f.c(),E(f,1),f.m(e,i)):f.p(m,p)},i(m){d||(E(f),d=!0)},o(m){I(f),d=!1},d(m){m&&x(e),f.d(m),u=!1,oe(h)}}}function r0(n,e,t){let{block:i}=e,{plugin:a}=e,{layout:s}=e,r=Me(),o=()=>{let u=Rs(a,i,s);u.onClose=()=>{u.saved&&r("edited",u.block)},u.open()},l=u=>{new Ns.ExtraButtonComponent(u).setIcon("pencil").setTooltip("Edit Block").onClick(()=>{o()})},c=u=>{new Ns.ExtraButtonComponent(u).setIcon("plus").setTooltip("Add Condition").onClick(()=>{})},d=u=>{new Ns.ExtraButtonComponent(u).setIcon("trash").setTooltip("Delete Block").onClick(()=>r("trash",i))};return n.$$set=u=>{"block"in u&&t(0,i=u.block),"plugin"in u&&t(1,a=u.plugin),"layout"in u&&t(4,s=u.layout)},[i,a,l,d,s]}var tl=class extends G{constructor(e){super(),K(this,e,r0,s0,V,{block:0,plugin:1,layout:4},n0)}},$d=tl;var oi=require("obsidian");function o0(n){se(n,"svelte-1swdhxf",".min-height{min-height:2rem}.block.svelte-1swdhxf.svelte-1swdhxf{display:flex;justify-content:flex-start;align-items:center}.item.svelte-1swdhxf.svelte-1swdhxf{display:grid;grid-template-columns:1fr;width:100%;padding:2px;margin:2px}.group.svelte-1swdhxf.svelte-1swdhxf{display:grid;grid-template-columns:1fr;border:2px dashed grey;min-height:2rem}.dropdown-icon.svelte-1swdhxf.svelte-1swdhxf{align-self:flex-start}.inline.svelte-1swdhxf.svelte-1swdhxf{display:flex;justify-content:space-between;flex-wrap:wrap;width:100%;height:100%;min-width:2rem}.action-icon.svelte-1swdhxf.svelte-1swdhxf{display:flex;align-items:center}.icon.svelte-1swdhxf.svelte-1swdhxf{display:flex}.statblock-creator-container.svelte-1swdhxf.svelte-1swdhxf{display:flex;justify-content:space-between;width:100%;height:100%;gap:0.25rem}.statblock-creator-container.action-container.svelte-1swdhxf.svelte-1swdhxf{justify-content:flex-start}body:not(.is-mobile) .statblock-creator-container.svelte-1swdhxf:not(:hover)>.icons.svelte-1swdhxf{visibility:hidden}.statblock-creator-block.svelte-1swdhxf.svelte-1swdhxf{width:100%}.icons.svelte-1swdhxf.svelte-1swdhxf{display:flex;justify-content:flex-end}.statblock-creator-container.svelte-1swdhxf .icons.svelte-1swdhxf{align-items:center}.icon.svelte-1swdhxf:not(:first-child) .clickable-icon{margin-left:0}.if-else-block-container.svelte-1swdhxf.svelte-1swdhxf{display:grid;grid-template-columns:1fr;border:2px solid grey;border-radius:0.25rem;min-height:2rem;padding:0.25rem}.collapse-container.svelte-1swdhxf.svelte-1swdhxf{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0.25rem}.collapsible.svelte-1swdhxf.svelte-1swdhxf{border-left:2px solid grey;padding-left:0.25rem}")}function Yd(n,e,t){let i=n.slice();return i[32]=e[t],i[33]=e,i[34]=t,i}function Jd(n,e,t){let i=n.slice();return i[35]=e[t].condition,i[36]=e[t].nested,i[37]=e,i[38]=t,i}function Xd(n){let e,t,i,a,s;return{c(){e=v("div"),g(e,"class","icon svelte-1swdhxf"),g(e,"style",t=n[5]?"cursor: grab":"cursor: grabbing")},m(r,o){D(r,e,o),a||(s=[J(i=Fe.call(null,e,"grip-vertical")),q(e,"mousedown",n[8]),q(e,"touchstart",n[8])],a=!0)},p(r,o){o[0]&32&&t!==(t=r[5]?"cursor: grab":"cursor: grabbing")&&g(e,"style",t)},d(r){r&&x(e),a=!1,oe(s)}}}function l0(n){let e,t,i;return t=new $d({props:{plugin:n[1],block:n[32],layout:n[2]}}),t.$on("trash",n[28]),t.$on("edited",n[29]),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","item svelte-1swdhxf")},m(a,s){D(a,e,s),te(t,e,null),i=!0},p(a,s){let r={};s[0]&2&&(r.plugin=a[1]),s[0]&1&&(r.block=a[32]),s[0]&4&&(r.layout=a[2]),t.$set(r)},i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function c0(n){let e,t,i,a,s,r,o,l,c,d,u=n[32].icon&&Qd(n);function h(){return n[26](n[32])}function f(){return n[27](n[32])}return{c(){e=v("div"),u&&u.c(),t=R(),i=v("div"),a=v("div"),r=R(),o=v("div"),g(a,"class","icon svelte-1swdhxf"),g(o,"class","icon svelte-1swdhxf"),g(i,"class","icons svelte-1swdhxf"),g(e,"class","action-container statblock-creator-container svelte-1swdhxf")},m(m,p){D(m,e,p),u&&u.m(e,null),y(e,t),y(e,i),y(i,a),y(i,r),y(i,o),c||(d=[J(s=n[13].call(null,a)),q(a,"click",h),J(l=n[14].call(null,o)),q(o,"click",f)],c=!0)},p(m,p){n=m,n[32].icon?u?u.p(n,p):(u=Qd(n),u.c(),u.m(e,t)):u&&(u.d(1),u=null)},i:N,o:N,d(m){m&&x(e),u&&u.d(),c=!1,oe(d)}}}function u0(n){let e,t,i,a,s=[],r=new Map,o,l,c,d,u,h,f,m,p,b,_=be(n[32].conditions),S=w=>w[35];for(let w=0;w<_.length;w+=1){let k=Jd(n,_,w),A=S(k);r.set(A,s[w]=Zd(A,k))}function C(){return n[24](n[32])}function M(){return n[25](n[32])}return{c(){e=v("div"),t=v("div"),i=v("div"),a=v("div");for(let w=0;wWt(c,"blocks",B)),Re.push(()=>Wt(c,"plugin",L));function j(){return n[20](n[32])}function Z(){return n[21](n[32])}return{c(){e=v("div"),t=v("div"),i=v("div"),a=v("div"),r=R(),o=v("div"),P.c(),l=R(),ie(c.$$.fragment),h=R(),f=v("div"),m=v("div"),b=R(),_=v("div"),g(o,"class","collapsible svelte-1swdhxf"),g(i,"class","statblock-creator-block collapse-container svelte-1swdhxf"),g(m,"class","icon svelte-1swdhxf"),g(_,"class","icon svelte-1swdhxf"),g(f,"class","icons svelte-1swdhxf"),g(t,"class","statblock-creator-container svelte-1swdhxf"),g(e,"class","item svelte-1swdhxf")},m(ee,ae){D(ee,e,ae),y(e,t),y(t,i),y(i,a),y(i,r),y(i,o),P.m(o,null),y(o,l),te(c,o,null),y(t,h),y(t,f),y(f,m),y(f,b),y(f,_),C=!0,M||(w=[J(s=Fe.call(null,a,"chevrons-down-up")),J(p=n[13].call(null,m)),q(m,"click",j),J(S=n[14].call(null,_)),q(_,"click",Z)],M=!0)},p(ee,ae){n=ee,A===(A=k(n,ae))&&P?P.p(n,ae):(P.d(1),P=A(n),P&&(P.c(),P.m(o,l)));let $={};!d&&ae[0]&1&&(d=!0,$.blocks=n[32].nested,Ft(()=>d=!1)),!u&&ae[0]&2&&(u=!0,$.plugin=n[1],Ft(()=>u=!1)),c.$set($)},i(ee){C||(E(c.$$.fragment,ee),C=!0)},o(ee){I(c.$$.fragment,ee),C=!1},d(ee){ee&&x(e),P.d(),ne(c),M=!1,oe(w)}}}function h0(n){let e,t,i,a,s,r=n[32],o,l;function c(f){n[16](f,n[32])}function d(f){n[17](f)}let u={inline:n[32].type=="inline"};n[32].nested!==void 0&&(u.blocks=n[32].nested),n[1]!==void 0&&(u.plugin=n[1]),t=new Bi({props:u}),Re.push(()=>Wt(t,"blocks",c)),Re.push(()=>Wt(t,"plugin",d));let h=eh(n);return{c(){e=v("div"),ie(t.$$.fragment),s=R(),h.c(),o=_e(),g(e,"class","item svelte-1swdhxf"),re(e,"group",n[32].type=="group"||n[32].type=="inline")},m(f,m){D(f,e,m),te(t,e,null),D(f,s,m),h.m(f,m),D(f,o,m),l=!0},p(f,m){n=f;let p={};m[0]&1&&(p.inline=n[32].type=="inline"),!i&&m[0]&1&&(i=!0,p.blocks=n[32].nested,Ft(()=>i=!1)),!a&&m[0]&2&&(a=!0,p.plugin=n[1],Ft(()=>a=!1)),t.$set(p),(!l||m[0]&1)&&re(e,"group",n[32].type=="group"||n[32].type=="inline"),m[0]&1&&V(r,r=n[32])?(h.d(1),h=eh(n),h.c(),h.m(o.parentNode,o)):h.p(n,m)},i(f){l||(E(t.$$.fragment,f),l=!0)},o(f){I(t.$$.fragment,f),l=!1},d(f){f&&(x(e),x(s),x(o)),ne(t),h.d(f)}}}function Qd(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","action-icon svelte-1swdhxf")},m(s,r){D(s,e,r),i||(a=J(t=Fe.call(null,e,n[32].icon)),i=!0)},p(s,r){n=s,t&&Pe(t.update)&&r[0]&1&&t.update.call(null,n[32].icon)},d(s){s&&x(e),i=!1,a()}}}function Zd(n,e){let t,i,a,s,r=e[35]+"",o,l,c,d,u,h,f;function m(_){e[22](_,e[36],e[37],e[38])}function p(_){e[23](_)}let b={draggable:!1};return e[36]!==void 0&&(b.blocks=e[36]),e[1]!==void 0&&(b.plugin=e[1]),c=new Bi({props:b}),Re.push(()=>Wt(c,"blocks",m)),Re.push(()=>Wt(c,"plugin",p)),{key:n,first:null,c(){t=v("div"),i=v("div"),a=v("small"),s=v("code"),o=pe(r),l=R(),ie(c.$$.fragment),h=R(),g(i,"class","condition"),g(t,"class","condition-container"),this.first=t},m(_,S){D(_,t,S),y(t,i),y(i,a),y(a,s),y(s,o),y(i,l),te(c,i,null),y(t,h),f=!0},p(_,S){e=_,(!f||S[0]&1)&&r!==(r=e[35]+"")&&we(o,r);let C={};!d&&S[0]&1&&(d=!0,C.blocks=e[36],Ft(()=>d=!1)),!u&&S[0]&2&&(u=!0,C.plugin=e[1],Ft(()=>u=!1)),c.$set(C)},i(_){f||(E(c.$$.fragment,_),f=!0)},o(_){I(c.$$.fragment,_),f=!1},d(_){_&&x(t),ne(c)}}}function f0(n){let e;return{c(){e=v("span"),e.textContent="Collapse"},m(t,i){D(t,e,i)},p:N,d(t){t&&x(e)}}}function m0(n){let e,t=n[32].heading+"",i;return{c(){e=v("span"),i=pe(t)},m(a,s){D(a,e,s),y(e,i)},p(a,s){s[0]&1&&t!==(t=a[32].heading+"")&&we(i,t)},d(a){a&&x(e)}}}function eh(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","dropdown-icon svelte-1swdhxf")},m(s,r){D(s,e,r),i||(a=J(t=n[12].call(null,e,n[32])),i=!0)},p(s,r){n=s,t&&Pe(t.update)&&r[0]&1&&t.update.call(null,n[32])},d(s){s&&x(e),i=!1,a()}}}function th(n){let e,t,i;return t=new os({}),{c(){e=v("div"),ie(t.$$.fragment),g(e,"aria-label","Block Has Rule")},m(a,s){D(a,e,s),te(t,e,null),i=!0},i(a){i||(E(t.$$.fragment,a),i=!0)},o(a){I(t.$$.fragment,a),i=!1},d(a){a&&x(e),ne(t)}}}function nh(n,e){let t,i,a,s,r,o,l,c,d,u=N,h,f=e[3]&&Xd(e),m=[h0,d0,u0,c0,l0],p=[];function b(S,C){return S[32].type=="group"||S[32].type=="inline"?0:S[32].type=="collapse"?1:S[32].type=="ifelse"?2:S[32].type=="action"?3:4}r=b(e,[-1,-1]),o=p[r]=m[r](e);let _="hasRule"in e[32]&&e[32].hasRule&&th(e);return{key:n,first:null,c(){t=v("div"),i=v("div"),a=v("div"),f&&f.c(),s=R(),o.c(),l=R(),_&&_.c(),c=R(),g(a,"class","block svelte-1swdhxf"),g(i,"class","block-container"),this.first=t},m(S,C){D(S,t,C),y(t,i),y(i,a),f&&f.m(a,null),y(a,s),p[r].m(a,null),y(i,l),_&&_.m(i,null),y(t,c),h=!0},p(S,C){e=S,e[3]?f?f.p(e,C):(f=Xd(e),f.c(),f.m(a,s)):f&&(f.d(1),f=null);let M=r;r=b(e,C),r===M?p[r].p(e,C):(le(),I(p[M],1,1,()=>{p[M]=null}),ce(),o=p[r],o?o.p(e,C):(o=p[r]=m[r](e),o.c()),E(o,1),o.m(a,null)),"hasRule"in e[32]&&e[32].hasRule?_?C[0]&1&&E(_,1):(_=th(e),_.c(),E(_,1),_.m(i,null)):_&&(le(),I(_,1,1,()=>{_=null}),ce())},r(){d=t.getBoundingClientRect()},f(){Dn(t),u()},a(){u(),u=Tn(t,d,Pn,{duration:nl})},i(S){h||(E(o),E(_),h=!0)},o(S){I(o),I(_),h=!1},d(S){S&&x(t),f&&f.d(),p[r].d(),_&&_.d()}}}function g0(n){let e,t,i=[],a=new Map,s,r,o,l,c=be(n[0].filter(n[15])),d=u=>u[32].id;for(let u=0;u{t(0,a=a.filter(H=>H.id!=F.id)),i("sorted",a)},m=F=>{let H=a.findIndex(he=>he.id==F.id);a.splice(H,1,F),t(0,a)},p=F=>{let H=Rs(l,F,s);H.onClose=()=>{H.saved&&m(H.block)},H.open()},b=async(F,H)=>{if(!("nested"in F))return;let he=new oi.Menu().setNoIcon();oa.forEach(ue=>{if(ue[1]=="separator"){he.addSeparator();return}he.addItem(U=>{U.setTitle(ue[1]).onClick(()=>{let z=ai(ue[0]);z&&(F.nested=[...F.nested,z],t(0,a),i("sorted",a))})})}),he.showAtMouseEvent(H)},_=(F,H)=>{new oi.ExtraButtonComponent(F).setIcon(r?"vertical-three-dots":"plus-circle"),F.onclick=he=>{r?new oi.Menu().addItem(ue=>{ue.setTitle("Add").setIcon("plus-with-circle").onClick(U=>{b(H,he)})}).addItem(ue=>ue.setTitle("Edit").setIcon("pencil").onClick(()=>{p(H)})).addItem(ue=>ue.setTitle("Delete").setIcon("trash").onClick(()=>f(H))).showAtMouseEvent(he):b(H,he)}},S=F=>{new oi.ExtraButtonComponent(F).setIcon("pencil").setTooltip("Edit Block")},C=F=>{new oi.ExtraButtonComponent(F).setIcon("trash").setTooltip("Delete Block")},M=F=>F.id!==ii;function w(F,H){n.$$.not_equal(H.nested,F)&&(H.nested=F,t(0,a))}function k(F){l=F,t(1,l)}function A(F,H){n.$$.not_equal(H.nested,F)&&(H.nested=F,t(0,a))}function P(F){l=F,t(1,l)}let B=F=>p(F),L=F=>f(F);function O(F,H,he,ue){he[ue].nested=F,t(0,a)}function j(F){l=F,t(1,l)}let Z=F=>p(F),ee=F=>f(F),ae=F=>p(F),$=F=>f(F),W=F=>f(F.detail),Y=F=>m(F.detail);return n.$$set=F=>{"blocks"in F&&t(0,a=F.blocks),"layout"in F&&t(2,s=F.layout),"draggable"in F&&t(3,r=F.draggable),"inline"in F&&t(4,o=F.inline),"plugin"in F&&t(1,l=F.plugin)},[a,l,s,r,o,c,d,u,h,f,m,p,_,S,C,M,w,k,A,P,B,L,O,j,Z,ee,ae,$,W,Y]}var Bi=class extends G{constructor(e){super(),K(this,e,p0,g0,V,{blocks:0,layout:2,draggable:3,inline:4,plugin:1},o0,[-1,-1])}},ih=Bi;var Bs=require("obsidian");function At(n){return Ue(n)}function li(n,e){return Mt(n,e)}function b0(n){let e,t,i,a,s,r,o,l;return s=new ih({props:{blocks:n[1],plugin:n[3],layout:n[0].id}}),s.$on("sorted",n[4]),{c(){e=v("div"),t=v("div"),a=R(),ie(s.$$.fragment),g(e,"class","creator-container")},m(c,d){D(c,e,d),y(e,t),y(e,a),te(s,e,null),r=!0,o||(l=J(i=n[5].call(null,t)),o=!0)},p(c,[d]){let u={};d&2&&(u.blocks=c[1]),d&1&&(u.layout=c[0].id),s.$set(u)},i(c){r||(E(s.$$.fragment,c),r=!0)},o(c){I(s.$$.fragment,c),r=!1},d(c){c&&x(e),ne(s),o=!1,l()}}}function y0(n,e,t){let i,a,s=At("layout");Se(n,s,d=>t(0,a=d));let r=At("plugin"),o=d=>{Ae(s,a.blocks=[...d.detail],a)},l=d=>{new Bs.Setting(d).setHeading().setName("Blocks").addExtraButton(u=>{u.setIcon("plus-with-circle").setTooltip("Add Block").extraSettingsEl.onClickEvent(h=>c(h))})},c=async d=>{let u=new Bs.Menu().setNoIcon();oa.forEach(h=>{if(h[1]=="separator"){u.addSeparator();return}u.addItem(f=>{f.setTitle(h[1]).onClick(()=>{let m=ai(h[0]);m&&Ae(s,a.blocks=[...a.blocks,m],a)})})}),u.showAtMouseEvent(d)};return n.$$.update=()=>{n.$$.dirty&1&&t(1,i=a.blocks)},[a,i,s,r,o,l]}var il=class extends G{constructor(e){super(),K(this,e,y0,b0,V,{})}},al=il;var ka=require("obsidian");var ya=require("obsidian");function v0(n){se(n,"svelte-1cgghnt",".drop-items.svelte-1cgghnt.svelte-1cgghnt{width:100%;margin:0.5rem 0}.drop-item-container.svelte-1cgghnt .icon.svelte-1cgghnt,.icons.svelte-1cgghnt.svelte-1cgghnt{display:flex;align-items:center}.drop-item-container.svelte-1cgghnt.svelte-1cgghnt{display:grid;grid-template-columns:auto 1fr auto;align-items:center;justify-content:space-between;gap:1rem;width:100%}.drop-item-container.svelte-1cgghnt.svelte-1cgghnt:not(.draggable){cursor:inherit !important}.drop-item-container.svelte-1cgghnt.svelte-1cgghnt:not(:last-child){margin-bottom:0.5rem}")}function ah(n,e,t){let i=n.slice();return i[15]=e[t],i}function sh(n){let e,t,i,a,s;return{c(){e=v("div"),g(e,"class","icon svelte-1cgghnt"),g(e,"style",t=n[5]?"cursor: grab":"cursor: grabbing")},m(r,o){D(r,e,o),a||(s=[J(i=Fe.call(null,e,"grip-vertical")),q(e,"mousedown",n[6]),q(e,"touchstart",n[6])],a=!0)},p(r,o){o&32&&t!==(t=r[5]?"cursor: grab":"cursor: grabbing")&&g(e,"style",t)},d(r){r&&x(e),a=!1,oe(s)}}}function rh(n){let e,t,i,a,s,r,o,l;return{c(){e=v("div"),t=v("div"),a=R(),s=v("div"),g(t,"class","icon svelte-1cgghnt"),g(s,"class","icon svelte-1cgghnt"),g(e,"class","icons svelte-1cgghnt")},m(c,d){D(c,e,d),y(e,t),y(e,a),y(e,s),o||(l=[J(i=n[9].call(null,t,n[15])),J(r=n[10].call(null,s,n[15]))],o=!0)},p(c,d){n=c,i&&Pe(i.update)&&d&1&&i.update.call(null,n[15]),r&&Pe(r.update)&&d&1&&r.update.call(null,n[15])},d(c){c&&x(e),o=!1,oe(l)}}}function oh(n,e){let t,i,a,s,r,o,l,c=N,d,u=e[2]&&sh(e);var h=e[4];function f(p,b){return{props:{item:p[15]}}}h&&(s=Ar(h,f(e)));let m=e[3]&&rh(e);return{key:n,first:null,c(){t=v("div"),u&&u.c(),i=R(),a=v("div"),s&&ie(s.$$.fragment),r=R(),m&&m.c(),o=R(),g(a,"class","drop-item"),re(a,"type",e[1]),g(t,"class","drop-item-container svelte-1cgghnt"),re(t,"draggable",e[2]),this.first=t},m(p,b){D(p,t,b),u&&u.m(t,null),y(t,i),y(t,a),s&&te(s,a,null),y(t,r),m&&m.m(t,null),y(t,o),d=!0},p(p,b){if(e=p,e[2]?u?u.p(e,b):(u=sh(e),u.c(),u.m(t,i)):u&&(u.d(1),u=null),b&16&&h!==(h=e[4])){if(s){le();let _=s;I(_.$$.fragment,1,0,()=>{ne(_,1)}),ce()}h?(s=Ar(h,f(e,b)),ie(s.$$.fragment),E(s.$$.fragment,1),te(s,a,null)):s=null}else if(h){let _={};b&1&&(_.item=e[15]),s.$set(_)}(!d||b&2)&&re(a,"type",e[1]),e[3]?m?m.p(e,b):(m=rh(e),m.c(),m.m(t,o)):m&&(m.d(1),m=null),(!d||b&4)&&re(t,"draggable",e[2])},r(){l=t.getBoundingClientRect()},f(){Dn(t),c()},a(){c(),c=Tn(t,l,Pn,{duration:sl})},i(p){d||(s&&E(s.$$.fragment,p),d=!0)},o(p){s&&I(s.$$.fragment,p),d=!1},d(p){p&&x(t),u&&u.d(),s&&ne(s),m&&m.d()}}}function k0(n){let e,t=[],i=new Map,a,s,r,o,l=be(n[0].filter(n[12])),c=d=>d[15].id;for(let d=0;d{new ya.ExtraButtonComponent(S).setIcon("wrench").onClick(()=>c("advanced",C))},b=(S,C)=>{new ya.ExtraButtonComponent(S).setIcon("trash").onClick(()=>c("trash",C))},_=S=>S.id!==ii;return n.$$set=S=>{"items"in S&&t(0,i=S.items),"type"in S&&t(1,a=S.type),"draggable"in S&&t(2,s=S.draggable),"showIcons"in S&&t(3,r=S.showIcons),"component"in S&&t(4,o=S.component),"onDrop"in S&&t(11,l=S.onDrop)},[i,a,s,r,o,h,u,f,m,p,b,l,_]}var rl=class extends G{constructor(e){super(),K(this,e,w0,k0,V,{items:0,type:1,draggable:2,showIcons:3,component:4,onDrop:11},v0)}},lh=rl;function ch(n){let e,t=n[0].desc+"",i;return{c(){e=v("div"),i=pe(t),g(e,"class","setting-item-description")},m(a,s){D(a,e,s),y(e,i)},p(a,s){s&1&&t!==(t=a[0].desc+"")&&we(i,t)},d(a){a&&x(e)}}}function _0(n){let e,t,i,a,s=n[0].regex+"",r,o,l,c=n[0].desc&&ch(n);return{c(){e=v("div"),t=v("div"),i=v("code"),a=pe("/"),r=pe(s),o=pe("/"),l=R(),c&&c.c(),g(t,"class","setting-item-name"),g(e,"class","dice-parsing setting-item-info")},m(d,u){D(d,e,u),y(e,t),y(t,i),y(i,a),y(i,r),y(i,o),y(e,l),c&&c.m(e,null)},p(d,[u]){u&1&&s!==(s=d[0].regex+"")&&we(r,s),d[0].desc?c?c.p(d,u):(c=ch(d),c.c(),c.m(e,null)):c&&(c.d(1),c=null)},i:N,o:N,d(d){d&&x(e),c&&c.d()}}}function S0(n,e,t){let{item:i}=e;return n.$$set=a=>{"item"in a&&t(0,i=a.item)},[i]}var ol=class extends G{constructor(e){super(),K(this,e,S0,_0,V,{item:0})}},uh=ol;var en=require("obsidian");var va=class extends _t{constructor(t,i){super(t);this.item={regex:"",parser:"",id:Q()};this.saved=!0;i?(this.editing=!0,this.item={...i}):this.editing=!1}onOpen(){this.titleEl.setText(this.editing?"Editing Dice Parser":"New Dice Parser"),this.display()}async display(){this.contentEl.empty(),new en.Setting(this.contentEl).setName("Example").setDesc("Add an example, for reference only.").addText(t=>{t.setValue(this.item.desc).onChange(i=>this.item.desc=i)}),this.buildRegEx(this.contentEl.createDiv()),this.buildParser(this.contentEl.createDiv()),this.buildTester(this.contentEl.createDiv()),new en.Setting(this.contentEl).addExtraButton(t=>t.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}))}buildTester(t){t.empty()}buildRegEx(t){t.empty(),new en.Setting(t).setHeading().setName("Regular Expression").setDesc(""),this.regex=ba(t,this.item.regex,["statblock-textarea-x-small"],i=>{this.item.regex=i})}getCallbackDescription(){return createFragment(t=>{t.createSpan({text:"The dice parser callback needs to parse the results of the regular expression and return the correct dice string to display."}),t.createEl("br"),t.createEl("br"),t.createSpan({text:"The callback will have the "}),t.createEl("code",{text:"original"}),t.createSpan({text:" (the matched text), "}),t.createEl("code",{text:"matches"}),t.createSpan({text:" (the RegExpMatchArray), and "}),t.createEl("code",{text:"monster"}),t.createSpan({text:" (current monster being rendered) parameters available in the callback."}),t.createEl("br"),t.createEl("br"),t.createSpan({text:"The callback should return an instance of:"}),en.MarkdownRenderer.render(this.plugin.app,"```ts\ninterface DiceCallbackObject {\n text: string // string to be parsed into a dice roll\n original?: string // optional, shown in parenthesis\n}\n```",t.createDiv(),"",new en.Component),t.createEl("br"),t.createEl("span",{text:"For example: "}),t.createEl("br"),en.MarkdownRenderer.render(this.plugin.app,'```ts\nreturn { text: "1d20 + 3" };\n```',t.createDiv(),"",new en.Component)})}buildParser(t){t.empty();let i=new en.Setting(t).setHeading().setName("Callback").addExtraButton(a=>{let s=!1;a.setIcon("help-circle").onClick(()=>{s?i.setDesc(""):i.setDesc(this.getCallbackDescription()),s=!s})});i.settingEl.style.alignItems="flex-start",this.parser=ba(t,this.item.parser,[],a=>{this.item.parser=a})}};function C0(n){se(n,"svelte-tnyfuy",".defaults.svelte-tnyfuy{color:var(--text-muted);font-style:italic;font-size:smaller}")}function x0(n){let e,t,i,a,s,r;return{c(){e=v("div"),i=R(),a=v("span"),a.textContent=`This layout does not have any dice parsers defined. Add one to + begin parsing for dice.`,g(a,"class","defaults svelte-tnyfuy")},m(o,l){D(o,e,l),D(o,i,l),D(o,a,l),s||(r=J(t=n[7].call(null,e)),s=!0)},d(o){o&&(x(e),x(i),x(a)),s=!1,r()}}}function A0(n){let e,t,i,a,s,r;return{c(){e=v("div"),i=R(),a=v("span"),a.textContent=`This layout is currently using the default dice parsers. Add a + custom dice parser to override this behavior.`,g(a,"class","defaults svelte-tnyfuy")},m(o,l){D(o,e,l),D(o,i,l),D(o,a,l),s||(r=J(t=n[7].call(null,e)),s=!0)},d(o){o&&(x(e),x(i),x(a)),s=!1,r()}}}function dh(n){let e,t;return e=new lh({props:{type:"dice",component:uh,items:n[1]??is(),onDrop:n[3],showIcons:n[1]!=null,draggable:n[1]!=null}}),e.$on("advanced",n[11]),e.$on("trash",n[12]),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&2&&(s.items=i[1]??is()),a&2&&(s.showIcons=i[1]!=null),a&2&&(s.draggable=i[1]!=null),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function T0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S,C,M,w,k,A,P,B=n[1],L,O,j;function Z(W,Y){if(!W[1])return A0;if(W[1].length==0)return x0}let ee=Z(n,-1),ae=ee&&ee(n),$=dh(n);return{c(){e=v("div"),t=v("div"),t.innerHTML='
Columns
Always try to split into this many columns, regardless of height.
',i=R(),a=v("div"),s=v("input"),r=R(),o=v("div"),l=v("div"),l.innerHTML='
Column width
Width in pixels. Default: 400px
',c=R(),d=v("div"),u=v("input"),h=R(),f=v("div"),m=v("div"),m.innerHTML='
Force columns
Ignore available space when calculating columns.
',p=R(),b=v("div"),S=R(),C=v("div"),w=R(),k=v("div"),A=v("div"),ae&&ae.c(),P=R(),$.c(),g(t,"class","setting-item-info"),g(s,"type","number"),g(s,"min","0"),g(a,"class","setting-item-control"),g(e,"class","setting-item"),g(l,"class","setting-item-info"),g(u,"type","number"),g(u,"min","0"),g(d,"class","setting-item-control"),g(o,"class","setting-item"),g(m,"class","setting-item-info"),g(b,"class","setting-item-control"),g(f,"class","setting-item"),g(A,"class","additional"),g(k,"class","dice-parsing statblock-additional-container")},m(W,Y){D(W,e,Y),y(e,t),y(e,i),y(e,a),y(a,s),ct(s,n[0].columns),D(W,r,Y),D(W,o,Y),y(o,l),y(o,c),y(o,d),y(d,u),ct(u,n[0].columnWidth),D(W,h,Y),D(W,f,Y),y(f,m),y(f,p),y(f,b),D(W,S,Y),D(W,C,Y),D(W,w,Y),D(W,k,Y),y(k,A),ae&&ae.m(A,null),y(A,P),$.m(A,null),L=!0,O||(j=[q(s,"input",n[9]),q(u,"input",n[10]),J(_=n[8].call(null,b)),J(M=n[6].call(null,C))],O=!0)},p(W,[Y]){Y&1&&$n(s.value)!==W[0].columns&&ct(s,W[0].columns),Y&1&&$n(u.value)!==W[0].columnWidth&&ct(u,W[0].columnWidth),ee!==(ee=Z(W,Y))&&(ae&&ae.d(1),ae=ee&&ee(W),ae&&(ae.c(),ae.m(A,P))),Y&2&&V(B,B=W[1])?(le(),I($,1,1,N),ce(),$=dh(W),$.c(),E($,1),$.m(A,null)):$.p(W,Y)},i(W){L||(E($),L=!0)},o(W){I($),L=!1},d(W){W&&(x(e),x(r),x(o),x(h),x(f),x(S),x(C),x(w),x(k)),ae&&ae.d(),$.d(W),O=!1,oe(j)}}}function D0(n,e,t){let i,a,s=At("layout");Se(n,s,_=>t(0,a=_));let r=At("plugin");function o(_){Ae(s,a.diceParsing=[..._],a)}let l=_=>{let S=new va(r,_);S.onClose=()=>{if(!S.saved)return;a.diceParsing==null&&Ae(s,a.diceParsing=[],a);let C=a.diceParsing.indexOf(_);C===-1?a.diceParsing.push(S.item):a.diceParsing.splice(C,1,S.item),s.set(a)},S.open()},c=_=>{t(1,i=i.filter(S=>S.id!=_.id)),Ae(s,a.diceParsing=[...i],a)},d=_=>{new ka.Setting(_).setHeading().setName("Dice Parsing").setDesc(createFragment(S=>{S.createSpan({text:"Add "}),S.createEl("a",{href:"https://regex101.com",text:"regular expressions"}),S.createSpan({text:" to detect dice rolls inside your layout."}),S.createEl("br"),S.createSpan({text:"These are parsed in order, and the first one to trigger is what will be used."})})).addExtraButton(S=>{S.setIcon("plus-with-circle").onClick(()=>{l()})})},u=_=>{new ka.Setting(_).setName(i==null?"Remove default parsers":"Restore default parsers").addButton(S=>{S.setIcon(i==null?"trash":"archive-restore").onClick(()=>{t(1,i=i==null?[]:null)})})},h=_=>{new ka.ToggleComponent(_).setValue(a.forceColumns).onChange(()=>{Ae(s,a.forceColumns=!a.forceColumns,a)})};function f(){a.columns=$n(this.value),s.set(a)}function m(){a.columnWidth=$n(this.value),s.set(a)}let p=_=>l(_.detail),b=_=>c(_.detail);return n.$$.update=()=>{n.$$.dirty&1&&t(1,i=a.diceParsing?[...a.diceParsing]:null)},[a,i,s,o,l,c,d,u,h,f,m,p,b]}var ll=class extends G{constructor(e){super(),K(this,e,D0,T0,V,{},C0)}},cl=ll;var rA=require("obsidian");var fl=require("obsidian");var _a=["primaryColor","ruleColor","backgroundColor","borderSize","borderColor","barColor","barBorderSize","barBorderColor","imageWidth","imageHeight","imageBorderSize","imageBorderColor","boxShadowColor","boxShadowXOffset","boxShadowYOffset","boxShadowBlur","fontColor","fontWeight","contentFont","contentFontSize","headingFont","headingFontColor","headingFontSize","headingFontVariant","headingFontWeight","propertyFont","propertyFontColor","propertyFontVariant","propertyFontSize","propertyFontWeight","propertyNameFont","propertyNameFontVariant","propertyNameFontSize","propertyNameFontColor","propertyNameFontWeight","sectionHeadingBorderSize","sectionHeadingBorderColor","sectionHeadingFont","sectionHeadingFontColor","sectionHeadingFontSize","sectionHeadingFontVariant","sectionHeadingFontWeight","subheadingFont","subheadingFontColor","subheadingFontSize","subheadingFontStyle","subheadingFontWeight","traitsFont","traitsFontColor","traitsFontSize","traitsFontWeight","traitsFontStyle","traitsNameFont","traitsNameFontColor","traitsNameFontSize","traitsNameFontWeight","traitsNameFontStyle"],ul={primaryColor:"#7a200d",ruleColor:"#922610",backgroundColor:"#fdf1dc",borderSize:"1px",borderColor:"#ddd",barColor:"#e69a28",barBorderSize:"1px",barBorderColor:"#000",imageWidth:"75px",imageHeight:"75px",imageBorderSize:"2px",imageBorderColor:"primaryColor",boxShadowColor:"#ddd",boxShadowXOffset:"0",boxShadowYOffset:"0",boxShadowBlur:"1.5em",fontColor:"primaryColor",fontWeight:"700",contentFont:'"Noto Sans", "Myriad Pro", Calibri, Helvetica, Arial, sans-serif',contentFontSize:"14px",headingFont:'"Libre Baskerville", "Lora", "Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif',headingFontColor:"fontColor",headingFontSize:"23px",headingFontVariant:"small-caps",headingFontWeight:"fontWeight",sectionHeadingBorderSize:"1px",sectionHeadingBorderColor:"primaryColor",sectionHeadingFont:null,sectionHeadingFontColor:"fontColor",sectionHeadingFontSize:"21px",sectionHeadingFontVariant:"small-caps",sectionHeadingFontWeight:"normal",subheadingFont:"contentFont",subheadingFontColor:"fontColor",subheadingFontSize:"12px",subheadingFontStyle:"italic",subheadingFontWeight:"normal",propertyFont:"contentFont",propertyFontColor:"fontColor",propertyFontVariant:"normal",propertyFontSize:"contentFontSize",propertyFontWeight:null,propertyNameFont:"contentFont",propertyNameFontColor:"fontColor",propertyNameFontWeight:null,propertyNameFontVariant:null,propertyNameFontSize:"contentFontSize",traitsFont:"contentFont",traitsFontColor:"fontColor",traitsFontSize:"contentFontSize",traitsFontWeight:null,traitsFontStyle:null,traitsNameFont:"contentFont",traitsNameFontColor:"fontColor",traitsNameFontSize:"contentFontSize",traitsNameFontWeight:"bold",traitsNameFontStyle:"italic"},Te={Light:"moonstone",Dark:"obsidian",None:"none"};function dl(n,e,t){let i=new Set,a=Li(n,e,t);for(;_a.includes(a)&&!i.has(a);)i.add(a),a=Li(n,a,t);return i}function hh(n,e,t){let i=Li(n,e,t);return i!=null&&_a.includes(i)}function Li(n,e,t){return(t!=Te.None?n?.[t]?.[e]:null)??n?.[e]??ul[e]??null}function Ls(n,e,t,i=new Set){i.add(e);let a=Li(n,e,t);return _a.includes(a)?i.has(a)?null:Ls(n,a,t,i):a}var ge=Object.freeze({Number:"Number",Color:"Color",Font:"Font",Size:"Size",Style:"Style",Variant:"Variant",Weight:"Weight"}),hl=[{name:"General",desc:"",properties:[{type:ge.Color,property:"primaryColor",desc:"This is used to derive several other properties by default.",name:"Primary color"},{type:ge.Color,property:"ruleColor",name:"Rule color"},{type:ge.Color,property:"backgroundColor",name:"Background color"},{type:ge.Color,property:"borderColor",name:"Border color"},{type:ge.Size,property:"borderSize",name:"Border size"}]},{name:"Content font",desc:"",properties:[{type:ge.Font,name:"Content font",desc:"This is the font used for most of the content in a statblock.",property:"contentFont"},{type:ge.Size,name:"Content font size",property:"contentFontSize"},{type:ge.Weight,name:"Content font weight",property:"fontWeight"},{type:ge.Color,name:"Content font color",property:"fontColor"}]},{name:"Bar",desc:"Control the appearance of the top and bottom bars.",properties:[{type:ge.Color,name:"Bar color",property:"barColor"},{type:ge.Color,name:"Bar border color",property:"barBorderColor"},{type:ge.Size,name:"Bar border size",property:"barBorderSize"}]},{name:"Images",desc:"",properties:[{type:ge.Size,name:"Image width",property:"imageWidth"},{type:ge.Size,name:"Image height",property:"imageHeight"},{type:ge.Size,name:"Image border size",property:"imageBorderSize"},{type:ge.Color,name:"Image border color",property:"imageBorderColor"}]},{name:"Shadow",desc:"",properties:[{type:ge.Color,name:"Shadow color",property:"boxShadowColor"},{type:ge.Size,name:"Shadow x offset",property:"boxShadowXOffset"},{type:ge.Size,name:"Shadow y offset",property:"boxShadowYOffset"},{type:ge.Size,name:"Shadow blur",property:"boxShadowBlur"}]},{name:"Headings",desc:"Anything related to heading blocks.",properties:[{type:ge.Font,property:"headingFont",name:"Heading font"},{type:ge.Color,property:"headingFontColor",name:"Heading font color"},{type:ge.Size,property:"headingFontSize",name:"Heading font size"},{type:ge.Variant,property:"headingFontVariant",name:"Heading font variant"},{type:ge.Weight,property:"headingFontWeight",name:"Heading font weight"}]},{name:"Properties",desc:"Anything related to property blocks.",properties:[{type:ge.Font,property:"propertyFont",name:"Property font"},{type:ge.Color,property:"propertyFontColor",name:"Property font color"},{type:ge.Size,property:"propertyFontSize",name:"Property font size"},{type:ge.Variant,property:"propertyFontVariant",name:"Property font variant"},{type:ge.Weight,property:"propertyFontWeight",name:"Property font weight"},{type:ge.Font,property:"propertyNameFont",name:"Property heading font"},{type:ge.Color,property:"propertyNameFontColor",name:"Property name font color"},{type:ge.Size,property:"propertyNameFontSize",name:"Property name font size"},{type:ge.Variant,property:"propertyNameFontVariant",name:"Property name font variant"},{type:ge.Weight,property:"propertyNameFontWeight",name:"Property name font weight"}]},{name:"Section headings",desc:"Anything related to section heading blocks.",properties:[{type:ge.Font,property:"sectionHeadingFont",name:"Section heading font"},{type:ge.Color,property:"sectionHeadingFontColor",name:"Section heading font color"},{type:ge.Size,property:"sectionHeadingFontSize",name:"Section heading font size"},{type:ge.Variant,property:"sectionHeadingFontVariant",name:"Section heading font variant"},{type:ge.Weight,property:"sectionHeadingFontWeight",name:"Section heading font weight"},{type:ge.Size,property:"sectionHeadingBorderSize",name:"Section heading border size"},{type:ge.Color,property:"sectionHeadingBorderColor",name:"Section heading border color"}]},{name:"Subheadings",desc:"",properties:[{type:ge.Font,property:"subheadingFont",name:"Subheading font"},{type:ge.Color,property:"subheadingFontColor",name:"Subheading font color"},{type:ge.Size,property:"subheadingFontSize",name:"Subheading font size"},{type:ge.Style,property:"subheadingFontStyle",name:"Subheading font style"},{type:ge.Weight,property:"subheadingFontWeight",name:"Subheading font weight"}]},{name:"Traits",desc:"",properties:[{type:ge.Font,property:"traitsFont",name:"Traits font"},{type:ge.Color,property:"traitsFontColor",name:"Traits font color"},{type:ge.Size,property:"traitsFontSize",name:"Traits font size"},{type:ge.Style,property:"traitsFontStyle",name:"Traits font style"},{type:ge.Weight,property:"traitsFontWeight",name:"Traits font weight"},{type:ge.Font,property:"traitsNameFont",name:"Trait name font"},{type:ge.Color,property:"traitsNameFontColor",name:"Trait name font color"},{type:ge.Size,property:"traitsNameFontSize",name:"Trait name font size"},{type:ge.Style,property:"traitsNameFontStyle",name:"Trait name font style"},{type:ge.Weight,property:"traitsNameFontWeight",name:"Trait name font weight"}]}],wa=new Map;for(let n of hl)for(let e of n.properties)wa.has(e.type)||wa.set(e.type,[]),wa.get(e.type).push(e);function fh(n,e,t){let i=n.slice();return i[19]=e[t],i}function E0(n){let e,t,i;return{c(){e=v("input"),g(e,"type","text"),g(e,"spellcheck","false"),e.value=n[4]},m(a,s){D(a,e,s),t||(i=q(e,"change",n[16]),t=!0)},p(a,s){s&16&&e.value!==a[4]&&(e.value=a[4])},d(a){a&&x(e),t=!1,i()}}}function M0(n){let e,t,i;return{c(){e=v("input"),g(e,"type","color"),e.value=n[4]},m(a,s){D(a,e,s),t||(i=q(e,"change",n[15]),t=!0)},p(a,s){s&16&&(e.value=a[4])},d(a){a&&x(e),t=!1,i()}}}function I0(n){let e,t,i,a=be(n[1]),s=[];for(let r=0;rt(18,a=k));let u=At("mode");Se(n,u,k=>t(17,i=k));let h=kt([d,u],([k,A])=>wa.get(c.type).filter(P=>P.property!=c.property&&!dl(k.cssProperties,P.property,A).has(c.property)));Se(n,h,k=>t(1,s=k));let f=kt([d,u],([k,A])=>Ls(k.cssProperties,c.property,A)??"");Se(n,f,k=>t(4,l=k));let m=kt([d,u,h],([k,A,P])=>Li(k.cssProperties,c.property,A)??P[0].property);Se(n,m,k=>t(3,o=k));let p=kt([d,u],([k,A])=>hh(k.cssProperties,c.property,A));Se(n,p,k=>t(2,r=k));let b=k=>{new fl.ExtraButtonComponent(k).setIcon(r?"unlink":"link").onClick(()=>{S(r?Ls(a.cssProperties,c.property,i):s.find(A=>!dl(a.cssProperties,A.property,i).has(c.property)).property)})},_=k=>{new fl.ExtraButtonComponent(k).setIcon("undo").onClick(()=>{i===Te.None?delete a.cssProperties?.[c.property]:delete a.cssProperties?.[i]?.[c.property],d.set(a)})},S=k=>{a.cssProperties||Ae(d,a.cssProperties={},a),i===Te.None?Ae(d,a.cssProperties[c.property]=k,a):(a.cssProperties[i]||Ae(d,a.cssProperties[i]={},a),Ae(d,a.cssProperties[i][c.property]=k,a))},C=k=>S(k.currentTarget.value),M=k=>S(k.currentTarget.value),w=k=>S(k.currentTarget.value);return n.$$set=k=>{"property"in k&&t(0,c=k.property)},[c,s,r,o,l,d,u,h,f,m,p,b,_,S,C,M,w]}var ml=class extends G{constructor(e){super(),K(this,e,P0,O0,V,{property:0})}},ph=ml;var bh=require("obsidian");function R0(n){se(n,"svelte-1tfzjob",'.always-open.svelte-1tfzjob.svelte-1tfzjob{pointer-events:none}.creator-settings-container.svelte-1tfzjob.svelte-1tfzjob{pointer-events:initial}.calendarium-nested-settings.svelte-1tfzjob.svelte-1tfzjob{position:relative}.calendarium-nested-summary.svelte-1tfzjob.svelte-1tfzjob{outline:none;list-style:none !important;list-style-type:none !important;min-height:1rem;border-top-left-radius:0.1rem;border-top-right-radius:0.1rem;cursor:pointer;background-color:var(--creator-background-color);margin-right:0;display:flex;justify-content:space-between}summary.svelte-1tfzjob.svelte-1tfzjob::-webkit-details-marker,summary.svelte-1tfzjob.svelte-1tfzjob::marker{display:none !important}.always-open.svelte-1tfzjob .handle.svelte-1tfzjob{display:none}.collapser.svelte-1tfzjob.svelte-1tfzjob{display:flex;flex-flow:column;justify-content:flex-start;align-items:flex-end;content:""}.handle.svelte-1tfzjob.svelte-1tfzjob{transform:rotate(0deg);transition:transform 0.25s;display:flex}details[open].svelte-1tfzjob .handle.svelte-1tfzjob{transform:rotate(90deg)}.creator-settings-container.svelte-1tfzjob.svelte-1tfzjob{padding:0.75em var(--size-4-3)}.calendarium-nested-settings.svelte-1tfzjob.svelte-1tfzjob{border-top:0px}')}function N0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S,C,M=n[6].default,w=st(M,n,n[5],null);return{c(){e=v("details"),t=v("summary"),i=v("div"),a=v("div"),s=v("div"),r=pe(n[1]),o=R(),l=v("div"),c=pe(n[2]),d=R(),u=v("div"),h=v("div"),f=v("div"),p=R(),b=v("div"),w&&w.c(),g(s,"class","setting-item-name"),g(l,"class","setting-item-description"),g(a,"class","setting-item-info"),g(i,"class","setting-item setting-item-heading"),g(f,"class","handle svelte-1tfzjob"),g(h,"class","warning-container"),g(u,"class","collapser svelte-1tfzjob"),g(t,"class","calendarium-nested-summary svelte-1tfzjob"),g(b,"class","creator-settings-container svelte-1tfzjob"),g(e,"class","creator calendarium-nested-settings setting-item svelte-1tfzjob"),re(e,"always-open",n[3])},m(k,A){D(k,e,A),y(e,t),y(t,i),y(i,a),y(a,s),y(s,r),y(a,o),y(a,l),y(l,c),y(t,d),y(t,u),y(u,h),y(h,f),y(e,p),y(e,b),w&&w.m(b,null),e.open=n[0],_=!0,S||(C=[J(m=n[4].call(null,f)),q(e,"toggle",n[7])],S=!0)},p(k,[A]){(!_||A&2)&&we(r,k[1]),(!_||A&4)&&we(c,k[2]),w&&w.p&&(!_||A&32)&&ot(w,M,k,k[5],_?rt(M,k[5],A,null):lt(k[5]),null),A&1&&(e.open=k[0]),(!_||A&8)&&re(e,"always-open",k[3])},i(k){_||(E(w,k),_=!0)},o(k){I(w,k),_=!1},d(k){k&&x(e),w&&w.d(k),S=!1,oe(C)}}}function B0(n,e,t){let{$$slots:i={},$$scope:a}=e,{open:s=!0}=e,{name:r}=e,{desc:o=""}=e,{alwaysOpen:l=!1}=e,c=u=>{(0,bh.setIcon)(u,"chevron-right")};function d(){s=this.open,t(0,s)}return n.$$set=u=>{"open"in u&&t(0,s=u.open),"name"in u&&t(1,r=u.name),"desc"in u&&t(2,o=u.desc),"alwaysOpen"in u&&t(3,l=u.alwaysOpen),"$$scope"in u&&t(5,a=u.$$scope)},[s,r,o,l,c,a,i,d]}var gl=class extends G{constructor(e){super(),K(this,e,B0,N0,V,{open:0,name:1,desc:2,alwaysOpen:3},R0)}},Sa=gl;function yh(n,e,t){let i=n.slice();return i[1]=e[t],i}function vh(n){let e,t;return e=new ph({props:{property:n[1]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&1&&(s.property=i[1]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function L0(n){let e,t,i=be(n[0].properties),a=[];for(let r=0;rI(a[r],1,1,()=>{a[r]=null});return{c(){for(let r=0;r{"group"in a&&t(0,i=a.group)},[i]}var pl=class extends G{constructor(e){super(),K(this,e,W0,F0,V,{group:0})}},kh=pl;function H0(n){se(n,"svelte-1obegcf",".appearance-parent.svelte-1obegcf{overflow:hidden}.property-groups.svelte-1obegcf{overflow:auto;height:100%}")}function z0(n,e,t){let i=n.slice();return i[5]=e[t],i}function q0(n){let e,t;return e=new kh({props:{group:n[5]}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p:N,i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function j0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S=be(hl),C=[];for(let M=0;MSet colors for...',a=R(),s=v("div"),r=v("button"),r.textContent="Both",o=R(),l=v("button"),d=R(),u=v("button"),f=R(),m=v("div");for(let M=0;Mt(0,i=l)),li("mode",a),[i,a,()=>Ae(a,i=Te.None,i),()=>Ae(a,i=Te.Light,i),()=>Ae(a,i=Te.Dark,i)]}var bl=class extends G{constructor(e){super(),K(this,e,V0,j0,V,{},H0)}},wh=bl;var tn=require("obsidian");var yl=require("obsidian"),_h=La(Es());var Fi=class extends _h.FuzzyInputSuggest{constructor(){super(...arguments);this.field="name"}getItemText(t){return ye(t[this.field])}renderNote(t,i){let{item:a,match:s}=i;(0,yl.renderMatches)(t,ye(a.source),s.matches)}renderTitle(t,i){let{item:a,match:s}=i;(0,yl.renderMatches)(t,ye(a.name),s.matches)}};function U0(n){se(n,"svelte-1jv9opu",".previewer.svelte-1jv9opu{height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:0.5rem}.preview.svelte-1jv9opu{overflow:hidden;position:relative}.inner.svelte-1jv9opu{overflow:auto;padding:var(--size-4-4);transform-origin:top left;scale:var(--scale, 0.625);width:calc(100% / var(--scale, 0.625));height:calc(100% / var(--scale, 0.625))}.definition.svelte-1jv9opu{display:flex;flex-flow:column nowrap;gap:0.25rem}.yaml-editor.svelte-1jv9opu{font-size:var(--font-smallest)}")}function G0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S,C,M,w,k,A;return{c(){e=v("div"),t=v("div"),t.innerHTML='
Set theme mode
',i=R(),a=v("div"),s=v("button"),o=R(),l=v("button"),d=R(),u=v("div"),h=v("div"),f=v("div"),f.textContent="Scale preview",m=R(),p=v("div"),b=pe("Current: "),_=pe(n[1]),S=R(),C=v("div"),M=v("input"),g(t,"class","setting-item-info"),g(s,"aria-label","Light"),re(s,"mod-cta",n[2]==Te.Light),g(l,"aria-label","Dark"),re(l,"mod-cta",n[2]==Te.Dark),g(a,"class","setting-item-control"),g(e,"class","setting-item"),g(f,"class","setting-item-name"),g(p,"class","setting-item-description"),g(h,"class","setting-item-info"),g(M,"class","slider"),g(M,"type","range"),g(M,"min","0"),g(M,"max","1"),g(M,"step","0.1"),g(C,"class","setting-item-control"),g(u,"class","setting-item")},m(P,B){D(P,e,B),y(e,t),y(e,i),y(e,a),y(a,s),y(a,o),y(a,l),D(P,d,B),D(P,u,B),y(u,h),y(h,f),y(h,m),y(h,p),y(p,b),y(p,_),y(u,S),y(u,C),y(C,M),ct(M,n[1]),k||(A=[J(r=Fe.call(null,s,"sun")),q(s,"click",n[14]),J(c=Fe.call(null,l,"moon")),q(l,"click",n[15]),q(M,"change",n[16]),q(M,"input",n[16]),J(w=n[10].call(null,C))],k=!0)},p(P,B){B&4&&re(s,"mod-cta",P[2]==Te.Light),B&4&&re(l,"mod-cta",P[2]==Te.Dark),B&2&&we(_,P[1]),B&2&&ct(M,P[1])},d(P){P&&(x(e),x(d),x(u)),k=!1,oe(A)}}}function K0(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","yaml-editor svelte-1jv9opu")},m(s,r){D(s,e,r),i||(a=J(t=n[6].call(null,e)),i=!0)},p:N,d(s){s&&x(e),i=!1,a()}}}function $0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_;return d=new Sa({props:{name:"Settings",desc:n[3],open:!1,$$slots:{default:[G0]},$$scope:{ctx:n}}}),f=new Sa({props:{name:"Editor",open:!1,$$slots:{default:[K0]},$$scope:{ctx:n}}}),{c(){e=v("div"),t=v("div"),t.textContent=`Select a creature to preview the layout, or enter your own definition + below.`,i=R(),a=v("div"),s=v("div"),r=R(),o=v("div"),c=R(),ie(d.$$.fragment),u=R(),h=v("div"),ie(f.$$.fragment),g(s,"class","preview-container inner svelte-1jv9opu"),g(a,"class","preview svelte-1jv9opu"),g(h,"class","definition svelte-1jv9opu"),g(e,"class","previewer svelte-1jv9opu"),g(e,"style",m=`--scale: ${n[1]}`),re(e,"theme-light",n[2]===Te.Light),re(e,"theme-dark",n[2]===Te.Dark)},m(S,C){D(S,e,C),y(e,t),y(e,i),y(e,a),y(a,s),n[13](s),y(e,r),y(e,o),y(e,c),te(d,e,null),y(e,u),y(e,h),te(f,h,null),p=!0,b||(_=J(l=n[5].call(null,o)),b=!0)},p(S,[C]){let M={};C&8&&(M.desc=S[3]),C&8388614&&(M.$$scope={dirty:C,ctx:S}),d.$set(M);let w={};C&8388608&&(w.$$scope={dirty:C,ctx:S}),f.$set(w),(!p||C&2&&m!==(m=`--scale: ${S[1]}`))&&g(e,"style",m),(!p||C&4)&&re(e,"theme-light",S[2]===Te.Light),(!p||C&4)&&re(e,"theme-dark",S[2]===Te.Dark)},i(S){p||(E(d.$$.fragment,S),E(f.$$.fragment,S),p=!0)},o(S){I(d.$$.fragment,S),I(f.$$.fragment,S),p=!1},d(S){S&&x(e),n[13](null),ne(d),ne(f),b=!1,_()}}}function Y0(n,e,t){let i,a,s,r,{previewed:o}=e,l=At("plugin"),c=At("layout");Se(n,c,L=>t(19,s=L));let d=Me(),u=(L,O)=>{L.empty(),f.setCreature({monster:O}),f.init()},h,f;pn(()=>{let L={};try{L={...L,...(0,tn.parseYaml)(o)}}catch{}f=new Yt({plugin:l,container:h,layout:s,monster:L},!1)});let m=L=>{let O=new tn.SearchComponent(L).setPlaceholder("Find a creature");new Fi(l.app,O,l.api.getBestiaryCreatures()).onSelect(async Z=>{if(Z.item){O.setValue("");let ee=(0,tn.stringifyYaml)(Z.item);d("update",ee),p.dispatch({changes:[{from:0,to:p.state.doc.length,insert:ee}]})}})},p,b=L=>{p=ba(L,o,[],(0,tn.debounce)(O=>{try{let j=(0,tn.parseYaml)(O);d("update",O),u(h,j)}catch{}},500))},_=Le(Te.None);Se(n,_,L=>t(2,a=L));let S=L=>{a==L?Ae(_,a=Te.None,a):Ae(_,a=L,a)};bn(()=>{p&&p.destroy()});let C=Le(1);Se(n,C,L=>t(1,i=L));let M=L=>{new tn.ExtraButtonComponent(L).setIcon("undo").onClick(()=>{Ae(C,i=1,i)})},w=kt([_,C],([L,O])=>{let j=[`Scale: ${O}`];return L===Te.Light&&j.push("Mode: Light"),L===Te.Dark&&j.push("Mode: Dark"),j.join(", ")});Se(n,w,L=>t(3,r=L));function k(L){Re[L?"unshift":"push"](()=>{h=L,t(0,h)})}let A=()=>S(Te.Light),P=()=>S(Te.Dark);function B(){i=$n(this.value),C.set(i)}return n.$$set=L=>{"previewed"in L&&t(12,o=L.previewed)},[h,i,a,r,c,m,b,_,S,C,M,w,o,k,A,P,B]}var vl=class extends G{constructor(e){super(),K(this,e,Y0,$0,V,{previewed:12},U0)}},Sh=vl;function J0(n){se(n,"svelte-1idjk8u",".statblock-mobile.svelte-1idjk8u{display:flex;flex-flow:column;gap:0.25rem}.top.svelte-1idjk8u{display:flex;align-items:center;justify-content:space-between;padding:0.25rem}.buttons.svelte-1idjk8u{display:flex;align-items:center}.name.svelte-1idjk8u{display:flex;align-items:center}.name.svelte-1idjk8u .buttons{display:flex;justify-content:flex-end;align-items:center}.vertical-tab-header.svelte-1idjk8u{display:flex;flex-flow:column nowrap}.vertical-tab-content.svelte-1idjk8u{padding:var(--size-4-8)}.bottom.svelte-1idjk8u{display:flex;justify-content:flex-end;align-items:center;margin-top:auto}")}function Ch(n,e,t){let i=n.slice();return i[16]=e[t],i}function X0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S;return f=new cl({}),p=new al({}),{c(){e=v("div"),t=v("div"),i=v("div"),s=R(),r=v("div"),o=v("div"),c=R(),d=v("div"),h=R(),ie(f.$$.fragment),m=R(),ie(p.$$.fragment),g(i,"class","name svelte-1idjk8u"),g(o,"class","save"),g(d,"class","cancel"),g(r,"class","buttons svelte-1idjk8u"),g(t,"class","top svelte-1idjk8u"),g(e,"class","statblock-mobile svelte-1idjk8u")},m(C,M){D(C,e,M),y(e,t),y(t,i),y(t,s),y(t,r),y(r,o),y(r,c),y(r,d),y(e,h),te(f,e,null),y(e,m),te(p,e,null),b=!0,_||(S=[J(a=n[5].call(null,i)),J(l=n[6].call(null,o)),J(u=n[7].call(null,d))],_=!0)},p:N,i(C){b||(E(f.$$.fragment,C),E(p.$$.fragment,C),b=!0)},o(C){I(f.$$.fragment,C),I(p.$$.fragment,C),b=!1},d(C){C&&x(e),ne(f),ne(p),_=!1,oe(S)}}}function Q0(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S,C,M,w,k,A,P,B,L=be(n[4]),O=[];for(let $=0;${j=null}),ce()),$[1]==="Appearance"?Z?W&2&&E(Z,1):(Z=Th($),Z.c(),E(Z,1),Z.m(S,M)):Z&&(le(),I(Z,1,1,()=>{Z=null}),ce()),$[1]==="Advanced"?ee?W&2&&E(ee,1):(ee=Dh($),ee.c(),E(ee,1),ee.m(S,w)):ee&&(le(),I(ee,1,1,()=>{ee=null}),ce()),$[1]==="Previewer"?ae?(ae.p($,W),W&2&&E(ae,1)):(ae=Eh($),ae.c(),E(ae,1),ae.m(S,null)):ae&&(le(),I(ae,1,1,()=>{ae=null}),ce()),(!A||W&2&&k!==(k="vertical-tab-content-container "+$[1].toLowerCase()+"s svelte-1idjk8u"))&&g(_,"class",k)},i($){A||(E(j),E(Z),E(ee),E(ae),A=!0)},o($){I(j),I(Z),I(ee),I(ae),A=!1},d($){$&&(x(e),x(b),x(_)),He(O,$),j&&j.d(),Z&&Z.d(),ee&&ee.d(),ae&&ae.d(),P=!1,oe(B)}}}function xh(n){let e,t,i;function a(){return n[11](n[16])}return{c(){e=v("div"),e.textContent=`${n[16]} `,g(e,"class","vertical-tab-nav-item"),re(e,"is-active",n[1]===n[16])},m(s,r){D(s,e,r),t||(i=q(e,"click",a),t=!0)},p(s,r){n=s,r&18&&re(e,"is-active",n[1]===n[16])},d(s){s&&x(e),t=!1,i()}}}function Ah(n){let e,t;return e=new al({}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Th(n){let e,t;return e=new wh({}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Dh(n){let e,t;return e=new cl({}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Eh(n){let e,t;return e=new Sh({props:{previewed:n[0]}}),e.$on("update",n[12]),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p(i,a){let s={};a&1&&(s.previewed=i[0]),e.$set(s)},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Z0(n){let e,t=``,i,a,s,r,o,l=[Q0,X0],c=[];function d(u,h){return nn.Platform.isMobile?1:0}return a=d(n,-1),s=c[a]=l[a](n),{c(){e=new gn(!1),i=R(),s.c(),r=_e(),e.a=i},m(u,h){e.m(t,u,h),D(u,i,h),c[a].m(u,h),D(u,r,h),o=!0},p(u,[h]){(!o||h&4)&&t!==(t=``)&&e.p(t),s.p(u,h)},i(u){o||(E(s),o=!0)},o(u){I(s),o=!1},d(u){u&&(e.d(),x(i),x(r)),c[a].d(u)}}}function ey(n,e,t){let i,a,{layout:s}=e,{plugin:r}=e,o=Le(s);Se(n,o,C=>t(14,i=C)),li("plugin",r),li("layout",o);let l="",c=["General","Appearance","Advanced","Previewer"],d=c[0],u=!1,h=C=>{if(C.empty(),u){let M=i.name;new nn.TextComponent(C).setValue(M).onChange(k=>{M=k});let w=C.createDiv("buttons");new nn.ExtraButtonComponent(w).setIcon("checkmark").setTooltip("Save").onClick(()=>{u=!1,Ae(o,i.name=M,i),h(C)}),new nn.ExtraButtonComponent(w).setIcon("cross-in-box").setTooltip("Cancel").onClick(()=>{u=!1,h(C)})}else C.createEl("h5",{text:i.name}),new nn.ExtraButtonComponent(C.createDiv("buttons")).setIcon("pencil").setTooltip("Edit Name").onClick(()=>{u=!0,h(C)})},f=Me(),m=C=>{new nn.ButtonComponent(C).setIcon("checkmark").setCta().setTooltip("Save").onClick(()=>{f("saved")})},p=C=>{new nn.ExtraButtonComponent(C).setIcon("cross").setTooltip("Cancel").onClick(()=>{f("cancel")})},b=kt(o,C=>r.manager.getSheetRules(C));Se(n,b,C=>t(2,a=C));let _=C=>t(1,d=C),S=C=>t(0,l=C.detail);return n.$$set=C=>{"layout"in C&&t(9,s=C.layout),"plugin"in C&&t(10,r=C.plugin)},[l,d,a,o,c,h,m,p,b,s,r,_,S]}var kl=class extends G{constructor(e){super(),K(this,e,ey,Z0,V,{layout:9,plugin:10},J0)}},Mh=kl;var Wi=(n=>(n.None="None",n.Average="Average",n.Roll="Roll",n))(Wi||{});var xf=La(Es());function wl(){return ia('var Vc=Object.create;var Il=Object.defineProperty;var qc=Object.getOwnPropertyDescriptor;var Uc=Object.getOwnPropertyNames;var Wc=Object.getPrototypeOf,zc=Object.prototype.hasOwnProperty;var St=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var jc=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Uc(e))!zc.call(i,n)&&n!==t&&Il(i,n,{get:()=>e[n],enumerable:!(r=qc(e,n))||r.enumerable});return i};var Gc=(i,e,t)=>(t=i!=null?Vc(Wc(i)):{},jc(e||!i||!i.__esModule?Il(t,"default",{value:i,enumerable:!0}):t,i));var ii=St(Ae=>{"use strict";function J0(i,e,t){if(t===void 0&&(t=Array.prototype),i&&typeof t.find=="function")return t.find.call(i,e);for(var r=0;r-1}var o2=Ti({HTML:"http://www.w3.org/1999/xhtml",SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});Ae.assign=Q0;Ae.find=J0;Ae.freeze=Ti;Ae.HTML_BOOLEAN_ATTRIBUTES=mh;Ae.HTML_RAW_TEXT_ELEMENTS=Cr;Ae.HTML_VOID_ELEMENTS=yh;Ae.hasDefaultHTMLNamespace=r2;Ae.hasOwn=ti;Ae.isHTMLBooleanAttribute=Z0;Ae.isHTMLRawTextElement=t2;Ae.isHTMLEscapableRawTextElement=i2;Ae.isHTMLMimeType=bh;Ae.isHTMLVoidElement=e2;Ae.isValidMimeType=s2;Ae.MIME_TYPE=Sr;Ae.NAMESPACE=o2});var kr=St(Tr=>{"use strict";var l2=ii();function wh(i,e){i.prototype=Object.create(Error.prototype,{constructor:{value:i},name:{value:i.name,enumerable:!0,writable:e}})}var Er=l2.freeze({Error:"Error",IndexSizeError:"IndexSizeError",DomstringSizeError:"DomstringSizeError",HierarchyRequestError:"HierarchyRequestError",WrongDocumentError:"WrongDocumentError",InvalidCharacterError:"InvalidCharacterError",NoDataAllowedError:"NoDataAllowedError",NoModificationAllowedError:"NoModificationAllowedError",NotFoundError:"NotFoundError",NotSupportedError:"NotSupportedError",InUseAttributeError:"InUseAttributeError",InvalidStateError:"InvalidStateError",SyntaxError:"SyntaxError",InvalidModificationError:"InvalidModificationError",NamespaceError:"NamespaceError",InvalidAccessError:"InvalidAccessError",ValidationError:"ValidationError",TypeMismatchError:"TypeMismatchError",SecurityError:"SecurityError",NetworkError:"NetworkError",AbortError:"AbortError",URLMismatchError:"URLMismatchError",QuotaExceededError:"QuotaExceededError",TimeoutError:"TimeoutError",InvalidNodeTypeError:"InvalidNodeTypeError",DataCloneError:"DataCloneError",EncodingError:"EncodingError",NotReadableError:"NotReadableError",UnknownError:"UnknownError",ConstraintError:"ConstraintError",DataError:"DataError",TransactionInactiveError:"TransactionInactiveError",ReadOnlyError:"ReadOnlyError",VersionError:"VersionError",OperationError:"OperationError",NotAllowedError:"NotAllowedError",OptOutError:"OptOutError"}),Ah=Object.keys(Er);function Ch(i){return typeof i=="number"&&i>=1&&i<=25}function a2(i){return typeof i=="string"&&i.substring(i.length-Er.Error.length)===Er.Error}function xr(i,e){Ch(i)?(this.name=Ah[i],this.message=e||""):(this.message=i,this.name=a2(e)?e:Er.Error),Error.captureStackTrace&&Error.captureStackTrace(this,xr)}wh(xr,!0);Object.defineProperties(xr.prototype,{code:{enumerable:!0,get:function(){var i=Ah.indexOf(this.name);return Ch(i)?i:0}}});var Sh={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},tl=Object.entries(Sh);for(Dr=0;Dr{"use strict";function Rh(i){try{typeof i!="function"&&(i=RegExp);var e=new i("\\u{1D306}","u").exec("\\u{1D306}");return!!e&&e[0].length===2}catch(t){}return!1}var Br=Rh();function ri(i){if(i.source[0]!=="[")throw new Error(i+" can not be used with chars");return i.source.slice(1,i.source.lastIndexOf("]"))}function ki(i,e){if(i.source[0]!=="[")throw new Error("/"+i.source+"/ can not be used with chars_without");if(!e||typeof e!="string")throw new Error(JSON.stringify(e)+" is not a valid search");if(i.source.indexOf(e)===-1)throw new Error(\'"\'+e+\'" is not is /\'+i.source+"/");if(e==="-"&&i.source.indexOf(e)!==1)throw new Error(\'"\'+e+\'" is not at the first postion of /\'+i.source+"/");return new RegExp(i.source.replace(e,""),Br?"u":"")}function U(i){var e=this;return new RegExp(Array.prototype.slice.call(arguments).map(function(t){var r=typeof t=="string";if(r&&e===void 0&&t==="|")throw new Error("use regg instead of reg to wrap expressions with `|`!");return r?t:t.source}).join(""),Br?"mu":"m")}function _(i){if(arguments.length===0)throw new Error("no parameters provided");return U.apply(_,["(?:"].concat(Array.prototype.slice.call(arguments),[")"]))}var u2="\\uFFFD",ni=/[-\\x09\\x0A\\x0D\\x20-\\x2C\\x2E-\\uD7FF\\uE000-\\uFFFD]/;Br&&(ni=U("[",ri(ni),"\\\\u{10000}-\\\\u{10FFFF}","]"));var rl=/[\\x20\\x09\\x0D\\x0A]/,h2=ri(rl),Q=U(rl,"+"),ne=U(rl,"*"),Mr=/[:_a-zA-Z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;Br&&(Mr=U("[",ri(Mr),"\\\\u{10000}-\\\\u{10FFFF}","]"));var c2=ri(Mr),nl=U("[",c2,ri(/[-.0-9\\xB7]/),ri(/[\\u0300-\\u036F\\u203F-\\u2040]/),"]"),Ue=U(Mr,nl,"*"),Dh=U(nl,"+"),f2=U("&",Ue,";"),d2=_(/&#[0-9]+;|&#x[0-9a-fA-F]+;/),Rr=_(f2,"|",d2),Nr=U("%",Ue,";"),sl=_(U(\'"\',_(/[^%&"]/,"|",Nr,"|",Rr),"*",\'"\'),"|",U("\'",_(/[^%&\']/,"|",Nr,"|",Rr),"*","\'")),p2=_(\'"\',_(/[^<&"]/,"|",Rr),"*",\'"\',"|","\'",_(/[^<&\']/,"|",Rr),"*","\'"),g2=ki(Mr,":"),m2=ki(nl,":"),Eh=U(g2,m2,"*"),Pr=U(Eh,_(":",Eh),"?"),y2=U("^",Pr,"$"),b2=U("(",Pr,")"),Or=_(/"[^"]*"|\'[^\']*\'/),v2=U(/^<\\?/,"(",Ue,")",_(Q,"(",ni,"*?)"),"?",/\\?>/),xh=/[\\x20\\x0D\\x0Aa-zA-Z0-9-\'()+,./:=?;!*#@$_%]/,Wn=_(\'"\',xh,\'*"\',"|","\'",ki(xh,"\'"),"*\'"),Nh="",w2=U(Nh,_(ki(ni,"-"),"|",U("-",ki(ni,"-"))),"*",Oh),Th="#PCDATA",A2=_(U(/\\(/,ne,Th,_(ne,/\\|/,ne,Pr),"*",ne,/\\)\\*/),"|",U(/\\(/,ne,Th,ne,/\\)/)),C2=/[?*+]?/,S2=U(/\\([^>]+\\)/,C2),D2=_("EMPTY","|","ANY","|",A2,"|",S2),E2=""),T2=U("NOTATION",Q,/\\(/,ne,Ue,_(ne,/\\|/,ne,Ue),"*",ne,/\\)/),k2=U(/\\(/,ne,Dh,_(ne,/\\|/,ne,Dh),"*",ne,/\\)/),M2=_(T2,"|",k2),R2=_(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/,"|",M2),N2=_(/#REQUIRED|#IMPLIED/,"|",_(_("#FIXED",Q),"?",p2)),O2=_(Q,Ue,Q,R2,Q,N2),B2=""),ol="SYSTEM",zn="PUBLIC",jn=_(_(ol,Q,Or),"|",_(zn,Q,Wn,Q,Or)),L2=U("^",_(_(ol,Q,"(?",Or,")"),"|",_(zn,Q,"(?",Wn,")",Q,"(?",Or,")"))),_2=_(Q,"NDATA",Q,Ue),I2=_(sl,"|",_(jn,_2,"?")),Bh=""),H2=_(sl,"|",jn),$2=U(Bh,Q,"%",Q,Ue,Q,H2,ne,">"),V2=_(F2,"|",$2),q2=U(zn,Q,Wn),U2=U(""),ll=U(ne,"=",ne),kh=/1[.]\\d+/,W2=U(Q,"version",ll,_("\'",kh,"\'","|",\'"\',kh,\'"\')),Mh=/[A-Za-z][-A-Za-z0-9._]*/,z2=_(Q,"encoding",ll,_(\'"\',Mh,\'"\',"|","\'",Mh,"\'")),j2=_(Q,"standalone",ll,_("\'",_("yes","|","no"),"\'","|",\'"\',_("yes","|","no"),\'"\')),G2=U(/^<\\?xml/,W2,z2,"?",j2,"?",ne,/\\?>/),K2="",J2=//,Z2=U(ni,"*?",Q2),ey=U(J2,Z2);V.chars=ri;V.chars_without=ki;V.detectUnicodeSupport=Rh;V.reg=U;V.regg=_;V.AttlistDecl=P2;V.CDATA_START=Y2;V.CDATA_END=X2;V.CDSect=ey;V.Char=ni;V.Comment=w2;V.COMMENT_START=Nh;V.COMMENT_END=Oh;V.DOCTYPE_DECL_START=K2;V.elementdecl=x2;V.EntityDecl=V2;V.EntityValue=sl;V.ExternalID=jn;V.ExternalID_match=L2;V.Name=Ue;V.NotationDecl=U2;V.Reference=Rr;V.PEReference=Nr;V.PI=v2;V.PUBLIC=zn;V.PubidLiteral=Wn;V.QName=Pr;V.QName_exact=y2;V.QName_group=b2;V.S=Q;V.SChar_s=h2;V.S_OPT=ne;V.SYSTEM=ol;V.SystemLiteral=Or;V.UNICODE_REPLACEMENT_CHARACTER=u2;V.UNICODE_SUPPORT=Br;V.XMLDecl=G2});var pl=St(ae=>{"use strict";var We=ii(),ct=We.find,ty=We.hasDefaultHTMLNamespace,Ri=We.hasOwn,iy=We.isHTMLMimeType,ry=We.isHTMLRawTextElement,ny=We.isHTMLVoidElement,Lr=We.MIME_TYPE,dt=We.NAMESPACE,Te=Symbol(),sy=kr(),L=sy.DOMException,wt=al();function Oe(i){if(i!==Te)throw new TypeError("Illegal constructor")}function oy(i){return i!==""}function ly(i){return i?i.split(/[\\t\\n\\f\\r ]+/).filter(oy):[]}function ay(i,e){return Ri(i,e)||(i[e]=!0),i}function Ph(i){if(!i)return[];var e=ly(i);return Object.keys(e.reduce(ay,{}))}function uy(i){return function(e){return i&&i.indexOf(e)!==-1}}function Vh(i){if(!wt.QName_exact.test(i))throw new L(L.INVALID_CHARACTER_ERR,\'invalid character in qualified name "\'+i+\'"\')}function hl(i,e){Vh(e),i=i||null;var t=null,r=e;if(e.indexOf(":")>=0){var n=e.split(":");t=n[0],r=n[1]}if(t!==null&&i===null)throw new L(L.NAMESPACE_ERR,"prefix is non-null and namespace is null");if(t==="xml"&&i!==We.NAMESPACE.XML)throw new L(L.NAMESPACE_ERR,\'prefix is "xml" and namespace is not the XML namespace\');if((t==="xmlns"||e==="xmlns")&&i!==We.NAMESPACE.XMLNS)throw new L(L.NAMESPACE_ERR,\'either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace\');if(i===We.NAMESPACE.XMLNS&&t!=="xmlns"&&e!=="xmlns")throw new L(L.NAMESPACE_ERR,\'namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns"\');return[i,t,r]}function Bi(i,e){for(var t in i)Ri(i,t)&&(e[t]=i[t])}function Be(i,e){var t=i.prototype;if(!(t instanceof e)){let r=function(){};r.prototype=e.prototype,r=new r,Bi(t,r),i.prototype=t=r}t.constructor!=i&&(typeof i!="function"&&console.error("unknown Class:"+i),t.constructor=i)}var Pe={},Ye=Pe.ELEMENT_NODE=1,Ni=Pe.ATTRIBUTE_NODE=2,Gn=Pe.TEXT_NODE=3,qh=Pe.CDATA_SECTION_NODE=4,Uh=Pe.ENTITY_REFERENCE_NODE=5,hy=Pe.ENTITY_NODE=6,Wh=Pe.PROCESSING_INSTRUCTION_NODE=7,zh=Pe.COMMENT_NODE=8,Ir=Pe.DOCUMENT_NODE=9,jh=Pe.DOCUMENT_TYPE_NODE=10,Lt=Pe.DOCUMENT_FRAGMENT_NODE=11,cy=Pe.NOTATION_NODE=12,be=We.freeze({DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:2,DOCUMENT_POSITION_FOLLOWING:4,DOCUMENT_POSITION_CONTAINS:8,DOCUMENT_POSITION_CONTAINED_BY:16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32});function Lh(i){for(var e=[];i.parentNode||i.ownerElement;)i=i.parentNode||i.ownerElement,e.unshift(i);return e}function Gh(i,e){if(e.length=0&&i=0){for(var n=e.length-1;r<=n;)e[r]=e[++r];if(e.length=n,i){var s=i.ownerDocument;s&&Jh(s,i,t),t.ownerElement=null}}}Oi.prototype={length:0,item:Xe.prototype.item,getNamedItem:function(i){this._ownerElement&&this._ownerElement._isInHTMLDocumentAndNamespace()&&(i=i.toLowerCase());for(var e=0;e_h(e.ownerDocument)?be.DOCUMENT_POSITION_FOLLOWING:be.DOCUMENT_POSITION_PRECEDING);var l=Lh(e),a=Lh(t);if(!r&&a.indexOf(e)>=0||n&&e===t)return be.DOCUMENT_POSITION_CONTAINS+be.DOCUMENT_POSITION_PRECEDING;if(!n&&l.indexOf(t)>=0||r&&e===t)return be.DOCUMENT_POSITION_CONTAINED_BY+be.DOCUMENT_POSITION_FOLLOWING;var u=Gh(a,l);for(var h in u.childNodes){var c=u.childNodes[h];if(c===t)return be.DOCUMENT_POSITION_FOLLOWING;if(c===e)return be.DOCUMENT_POSITION_PRECEDING;if(a.indexOf(c)>=0)return be.DOCUMENT_POSITION_FOLLOWING;if(l.indexOf(c)>=0)return be.DOCUMENT_POSITION_PRECEDING}return 0}};function Xh(i){return i=="<"&&"<"||i==">"&&">"||i=="&"&&"&"||i==\'"\'&&"""||"&#"+i.charCodeAt()+";"}Bi(Pe,X);Bi(Pe,X.prototype);Bi(be,X);Bi(be,X.prototype);function _r(i,e){if(e(i))return!0;if(i=i.firstChild)do if(_r(i,e))return!0;while(i=i.nextSibling)}function _t(i,e){Oe(i);var t=e||{};this.ownerDocument=this,this.contentType=t.contentType||Lr.XML_APPLICATION,this.type=iy(this.contentType)?"html":"xml"}function dy(i,e,t){i&&i._inc++;var r=t.namespaceURI;r===dt.XMLNS&&(e._nsMap[t.prefix?t.localName:""]=t.value)}function Jh(i,e,t,r){i&&i._inc++;var n=t.namespaceURI;n===dt.XMLNS&&delete e._nsMap[t.prefix?t.localName:""]}function Qh(i,e,t){if(i&&i._inc){i._inc++;var r=e.childNodes;if(t)r[r.length++]=t;else{for(var n=e.firstChild,s=0;n;)r[s++]=n,n=n.nextSibling;r.length=s,delete r[r.length]}}}function Zh(i,e){if(i!==e.parentNode)throw new L(L.NOT_FOUND_ERR,"child\'s parent is not parent");var t=e.previousSibling,r=e.nextSibling;return t?t.nextSibling=r:i.firstChild=r,r?r.previousSibling=t:i.lastChild=t,Qh(i.ownerDocument,i),e.parentNode=null,e.previousSibling=null,e.nextSibling=null,e}function py(i){return i&&(i.nodeType===X.DOCUMENT_NODE||i.nodeType===X.DOCUMENT_FRAGMENT_NODE||i.nodeType===X.ELEMENT_NODE)}function gy(i){return i&&(ft(i)||i instanceof Pi||At(i)||i.nodeType===X.DOCUMENT_FRAGMENT_NODE||i.nodeType===X.COMMENT_NODE||i.nodeType===X.PROCESSING_INSTRUCTION_NODE)}function At(i){return i&&i.nodeType===X.DOCUMENT_TYPE_NODE}function ft(i){return i&&i.nodeType===X.ELEMENT_NODE}function ec(i){return i&&i.nodeType===X.TEXT_NODE}function Fh(i,e){var t=i.childNodes||[];if(ct(t,ft)||At(e))return!1;var r=ct(t,At);return!(e&&r&&t.indexOf(r)>t.indexOf(e))}function Hh(i,e){var t=i.childNodes||[];function r(s){return ft(s)&&s!==e}if(ct(t,r))return!1;var n=ct(t,At);return!(e&&n&&t.indexOf(n)>t.indexOf(e))}function my(i,e,t){if(!py(i))throw new L(L.HIERARCHY_REQUEST_ERR,"Unexpected parent node type "+i.nodeType);if(t&&t.parentNode!==i)throw new L(L.NOT_FOUND_ERR,"child not in parent");if(!gy(e)||At(e)&&i.nodeType!==X.DOCUMENT_NODE)throw new L(L.HIERARCHY_REQUEST_ERR,"Unexpected node type "+e.nodeType+" for parent node type "+i.nodeType)}function yy(i,e,t){var r=i.childNodes||[],n=e.childNodes||[];if(e.nodeType===X.DOCUMENT_FRAGMENT_NODE){var s=n.filter(ft);if(s.length>1||ct(n,ec))throw new L(L.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!Fh(i,t))throw new L(L.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(ft(e)&&!Fh(i,t))throw new L(L.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(At(e)){if(ct(r,At))throw new L(L.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=ct(r,ft);if(t&&r.indexOf(o)1||ct(n,ec))throw new L(L.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!Hh(i,t))throw new L(L.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(ft(e)&&!Hh(i,t))throw new L(L.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(At(e)){if(ct(r,function(a){return At(a)&&a!==t}))throw new L(L.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=ct(r,ft);if(t&&r.indexOf(o)0&&_r(t,function(n){if(n!==t&&n.nodeType===Ye){var s=n.getAttribute("class");if(s){var o=i===s;if(!o){var l=Ph(s);o=e.every(uy(l))}o&&r.push(n)}}}),r})},getElementsByTagName:function(i){var e=(this.nodeType===Ir?this:this.ownerDocument).type==="html",t=i.toLowerCase();return new si(this,function(r){var n=[];return _r(r,function(s){if(!(s===r||s.nodeType!==Ye))if(i==="*")n.push(s);else{var o=s.getQualifiedName(),l=e&&s.namespaceURI===dt.HTML?t:i;o===l&&n.push(s)}}),n})},getElementsByTagNameNS:function(i,e){return new si(this,function(t){var r=[];return _r(t,function(n){n!==t&&n.nodeType===Ye&&(i==="*"||n.namespaceURI===i)&&(e==="*"||n.localName==e)&&r.push(n)}),r})}};_t.prototype.getElementsByClassName=It.prototype.getElementsByClassName;_t.prototype.getElementsByTagName=It.prototype.getElementsByTagName;_t.prototype.getElementsByTagNameNS=It.prototype.getElementsByTagNameNS;Be(It,X);function oi(i){Oe(i),this.namespaceURI=null,this.prefix=null,this.ownerElement=null}oi.prototype.nodeType=Ni;Be(oi,X);function Pi(i){Oe(i)}Pi.prototype={data:"",substringData:function(i,e){return this.data.substring(i,i+e)},appendData:function(i){i=this.data+i,this.nodeValue=this.data=i,this.length=i.length},insertData:function(i,e){this.replaceData(i,0,e)},deleteData:function(i,e){this.replaceData(i,e,"")},replaceData:function(i,e,t){var r=this.data.substring(0,i),n=this.data.substring(i+e);t=r+t+n,this.nodeValue=this.data=t,this.length=t.length}};Be(Pi,X);function Fr(i){Oe(i)}Fr.prototype={nodeName:"#text",nodeType:Gn,splitText:function(i){var e=this.data,t=e.substring(i);e=e.substring(0,i),this.data=this.nodeValue=e,this.length=e.length;var r=this.ownerDocument.createTextNode(t);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}};Be(Fr,Pi);function Xn(i){Oe(i)}Xn.prototype={nodeName:"#comment",nodeType:zh};Be(Xn,Pi);function Jn(i){Oe(i)}Jn.prototype={nodeName:"#cdata-section",nodeType:qh};Be(Jn,Fr);function Qn(i){Oe(i)}Qn.prototype.nodeType=jh;Be(Qn,X);function fl(i){Oe(i)}fl.prototype.nodeType=cy;Be(fl,X);function dl(i){Oe(i)}dl.prototype.nodeType=hy;Be(dl,X);function Zn(i){Oe(i)}Zn.prototype.nodeType=Uh;Be(Zn,X);function Hr(i){Oe(i)}Hr.prototype.nodeName="#document-fragment";Hr.prototype.nodeType=Lt;Be(Hr,X);function es(i){Oe(i)}es.prototype.nodeType=Wh;Be(es,X);function ic(){}ic.prototype.serializeToString=function(i,e){return rc.call(i,e)};X.prototype.toString=rc;function rc(i){var e=[],t=this.nodeType===Ir&&this.documentElement||this,r=t.prefix,n=t.namespaceURI;if(n&&r==null){var r=t.lookupPrefix(n);if(r==null)var s=[{namespace:n,prefix:null}]}return Mi(this,e,i,s),e.join("")}function $h(i,e,t){var r=i.prefix||"",n=i.namespaceURI;if(!n||r==="xml"&&n===dt.XML||n===dt.XMLNS)return!1;for(var s=t.length;s--;){var o=t[s];if(o.prefix===r)return o.namespace!==n}return!0}function ul(i,e,t){i.push(" ",e,\'="\',t.replace(/[<>&"\\t\\n\\r]/g,Xh),\'"\')}function Mi(i,e,t,r){r||(r=[]);var n=i.nodeType===Ir?i:i.ownerDocument,s=n.type==="html";if(t)if(i=t(i),i){if(typeof i=="string"){e.push(i);return}}else return;switch(i.nodeType){case Ye:var o=i.attributes,l=o.length,w=i.firstChild,a=i.tagName,u=a;if(!s&&!i.prefix&&i.namespaceURI){for(var h,c=0;c=0;f--){var d=r[f];if(d.prefix===""&&d.namespace===i.namespaceURI){h=d.namespace;break}}if(h!==i.namespaceURI)for(var f=r.length-1;f>=0;f--){var d=r[f];if(d.namespace===i.namespaceURI){d.prefix&&(u=d.prefix+":"+a);break}}}e.push("<",u);for(var p=0;p");else{if(e.push(">"),s&&ry(a))for(;w;)w.data?e.push(w.data):Mi(w,e,t,r.slice()),w=w.nextSibling;else for(;w;)Mi(w,e,t,r.slice()),w=w.nextSibling;e.push("")}return;case Ir:case Lt:for(var w=i.firstChild;w;)Mi(w,e,t,r.slice()),w=w.nextSibling;return;case Ni:return ul(e,i.name,i.value);case Gn:return e.push(i.data.replace(/[<&>]/g,Xh));case qh:return e.push(wt.CDATA_START,i.data,wt.CDATA_END);case zh:return e.push(wt.COMMENT_START,i.data,wt.COMMENT_END);case jh:var E=i.publicId,S=i.systemId;e.push(wt.DOCTYPE_DECL_START," ",i.name),E?(e.push(" ",wt.PUBLIC," ",E),S&&S!=="."&&e.push(" ",S)):S&&S!=="."&&e.push(" ",wt.SYSTEM," ",S),i.internalSubset&&e.push(" [",i.internalSubset,"]"),e.push(">");return;case Wh:return e.push("");case Uh:return e.push("&",i.nodeName,";");default:e.push("??",i.nodeName)}}function nc(i,e,t){var r;switch(e.nodeType){case Ye:r=e.cloneNode(!1),r.ownerDocument=i;case Lt:break;case Ni:t=!0;break}if(r||(r=e.cloneNode(!1)),r.ownerDocument=i,r.parentNode=null,t)for(var n=e.firstChild;n;)r.appendChild(nc(i,n,t)),n=n.nextSibling;return r}function cl(i,e,t){var r=new e.constructor(Te);for(var n in e)if(Ri(e,n)){var s=e[n];typeof s!="object"&&s!=r[n]&&(r[n]=s)}switch(e.childNodes&&(r.childNodes=new Xe),r.ownerDocument=i,r.nodeType){case Ye:var o=e.attributes,l=r.attributes=new Oi,a=o.length;l._ownerElement=r;for(var u=0;u{"use strict";var oc=ii().freeze;$r.XML_ENTITIES=oc({amp:"&",apos:"\'",gt:">",lt:"<",quot:\'"\'});$r.HTML_ENTITIES=oc({Aacute:"\\xC1",aacute:"\\xE1",Abreve:"\\u0102",abreve:"\\u0103",ac:"\\u223E",acd:"\\u223F",acE:"\\u223E\\u0333",Acirc:"\\xC2",acirc:"\\xE2",acute:"\\xB4",Acy:"\\u0410",acy:"\\u0430",AElig:"\\xC6",aelig:"\\xE6",af:"\\u2061",Afr:"\\u{1D504}",afr:"\\u{1D51E}",Agrave:"\\xC0",agrave:"\\xE0",alefsym:"\\u2135",aleph:"\\u2135",Alpha:"\\u0391",alpha:"\\u03B1",Amacr:"\\u0100",amacr:"\\u0101",amalg:"\\u2A3F",AMP:"&",amp:"&",And:"\\u2A53",and:"\\u2227",andand:"\\u2A55",andd:"\\u2A5C",andslope:"\\u2A58",andv:"\\u2A5A",ang:"\\u2220",ange:"\\u29A4",angle:"\\u2220",angmsd:"\\u2221",angmsdaa:"\\u29A8",angmsdab:"\\u29A9",angmsdac:"\\u29AA",angmsdad:"\\u29AB",angmsdae:"\\u29AC",angmsdaf:"\\u29AD",angmsdag:"\\u29AE",angmsdah:"\\u29AF",angrt:"\\u221F",angrtvb:"\\u22BE",angrtvbd:"\\u299D",angsph:"\\u2222",angst:"\\xC5",angzarr:"\\u237C",Aogon:"\\u0104",aogon:"\\u0105",Aopf:"\\u{1D538}",aopf:"\\u{1D552}",ap:"\\u2248",apacir:"\\u2A6F",apE:"\\u2A70",ape:"\\u224A",apid:"\\u224B",apos:"\'",ApplyFunction:"\\u2061",approx:"\\u2248",approxeq:"\\u224A",Aring:"\\xC5",aring:"\\xE5",Ascr:"\\u{1D49C}",ascr:"\\u{1D4B6}",Assign:"\\u2254",ast:"*",asymp:"\\u2248",asympeq:"\\u224D",Atilde:"\\xC3",atilde:"\\xE3",Auml:"\\xC4",auml:"\\xE4",awconint:"\\u2233",awint:"\\u2A11",backcong:"\\u224C",backepsilon:"\\u03F6",backprime:"\\u2035",backsim:"\\u223D",backsimeq:"\\u22CD",Backslash:"\\u2216",Barv:"\\u2AE7",barvee:"\\u22BD",Barwed:"\\u2306",barwed:"\\u2305",barwedge:"\\u2305",bbrk:"\\u23B5",bbrktbrk:"\\u23B6",bcong:"\\u224C",Bcy:"\\u0411",bcy:"\\u0431",bdquo:"\\u201E",becaus:"\\u2235",Because:"\\u2235",because:"\\u2235",bemptyv:"\\u29B0",bepsi:"\\u03F6",bernou:"\\u212C",Bernoullis:"\\u212C",Beta:"\\u0392",beta:"\\u03B2",beth:"\\u2136",between:"\\u226C",Bfr:"\\u{1D505}",bfr:"\\u{1D51F}",bigcap:"\\u22C2",bigcirc:"\\u25EF",bigcup:"\\u22C3",bigodot:"\\u2A00",bigoplus:"\\u2A01",bigotimes:"\\u2A02",bigsqcup:"\\u2A06",bigstar:"\\u2605",bigtriangledown:"\\u25BD",bigtriangleup:"\\u25B3",biguplus:"\\u2A04",bigvee:"\\u22C1",bigwedge:"\\u22C0",bkarow:"\\u290D",blacklozenge:"\\u29EB",blacksquare:"\\u25AA",blacktriangle:"\\u25B4",blacktriangledown:"\\u25BE",blacktriangleleft:"\\u25C2",blacktriangleright:"\\u25B8",blank:"\\u2423",blk12:"\\u2592",blk14:"\\u2591",blk34:"\\u2593",block:"\\u2588",bne:"=\\u20E5",bnequiv:"\\u2261\\u20E5",bNot:"\\u2AED",bnot:"\\u2310",Bopf:"\\u{1D539}",bopf:"\\u{1D553}",bot:"\\u22A5",bottom:"\\u22A5",bowtie:"\\u22C8",boxbox:"\\u29C9",boxDL:"\\u2557",boxDl:"\\u2556",boxdL:"\\u2555",boxdl:"\\u2510",boxDR:"\\u2554",boxDr:"\\u2553",boxdR:"\\u2552",boxdr:"\\u250C",boxH:"\\u2550",boxh:"\\u2500",boxHD:"\\u2566",boxHd:"\\u2564",boxhD:"\\u2565",boxhd:"\\u252C",boxHU:"\\u2569",boxHu:"\\u2567",boxhU:"\\u2568",boxhu:"\\u2534",boxminus:"\\u229F",boxplus:"\\u229E",boxtimes:"\\u22A0",boxUL:"\\u255D",boxUl:"\\u255C",boxuL:"\\u255B",boxul:"\\u2518",boxUR:"\\u255A",boxUr:"\\u2559",boxuR:"\\u2558",boxur:"\\u2514",boxV:"\\u2551",boxv:"\\u2502",boxVH:"\\u256C",boxVh:"\\u256B",boxvH:"\\u256A",boxvh:"\\u253C",boxVL:"\\u2563",boxVl:"\\u2562",boxvL:"\\u2561",boxvl:"\\u2524",boxVR:"\\u2560",boxVr:"\\u255F",boxvR:"\\u255E",boxvr:"\\u251C",bprime:"\\u2035",Breve:"\\u02D8",breve:"\\u02D8",brvbar:"\\xA6",Bscr:"\\u212C",bscr:"\\u{1D4B7}",bsemi:"\\u204F",bsim:"\\u223D",bsime:"\\u22CD",bsol:"\\\\",bsolb:"\\u29C5",bsolhsub:"\\u27C8",bull:"\\u2022",bullet:"\\u2022",bump:"\\u224E",bumpE:"\\u2AAE",bumpe:"\\u224F",Bumpeq:"\\u224E",bumpeq:"\\u224F",Cacute:"\\u0106",cacute:"\\u0107",Cap:"\\u22D2",cap:"\\u2229",capand:"\\u2A44",capbrcup:"\\u2A49",capcap:"\\u2A4B",capcup:"\\u2A47",capdot:"\\u2A40",CapitalDifferentialD:"\\u2145",caps:"\\u2229\\uFE00",caret:"\\u2041",caron:"\\u02C7",Cayleys:"\\u212D",ccaps:"\\u2A4D",Ccaron:"\\u010C",ccaron:"\\u010D",Ccedil:"\\xC7",ccedil:"\\xE7",Ccirc:"\\u0108",ccirc:"\\u0109",Cconint:"\\u2230",ccups:"\\u2A4C",ccupssm:"\\u2A50",Cdot:"\\u010A",cdot:"\\u010B",cedil:"\\xB8",Cedilla:"\\xB8",cemptyv:"\\u29B2",cent:"\\xA2",CenterDot:"\\xB7",centerdot:"\\xB7",Cfr:"\\u212D",cfr:"\\u{1D520}",CHcy:"\\u0427",chcy:"\\u0447",check:"\\u2713",checkmark:"\\u2713",Chi:"\\u03A7",chi:"\\u03C7",cir:"\\u25CB",circ:"\\u02C6",circeq:"\\u2257",circlearrowleft:"\\u21BA",circlearrowright:"\\u21BB",circledast:"\\u229B",circledcirc:"\\u229A",circleddash:"\\u229D",CircleDot:"\\u2299",circledR:"\\xAE",circledS:"\\u24C8",CircleMinus:"\\u2296",CirclePlus:"\\u2295",CircleTimes:"\\u2297",cirE:"\\u29C3",cire:"\\u2257",cirfnint:"\\u2A10",cirmid:"\\u2AEF",cirscir:"\\u29C2",ClockwiseContourIntegral:"\\u2232",CloseCurlyDoubleQuote:"\\u201D",CloseCurlyQuote:"\\u2019",clubs:"\\u2663",clubsuit:"\\u2663",Colon:"\\u2237",colon:":",Colone:"\\u2A74",colone:"\\u2254",coloneq:"\\u2254",comma:",",commat:"@",comp:"\\u2201",compfn:"\\u2218",complement:"\\u2201",complexes:"\\u2102",cong:"\\u2245",congdot:"\\u2A6D",Congruent:"\\u2261",Conint:"\\u222F",conint:"\\u222E",ContourIntegral:"\\u222E",Copf:"\\u2102",copf:"\\u{1D554}",coprod:"\\u2210",Coproduct:"\\u2210",COPY:"\\xA9",copy:"\\xA9",copysr:"\\u2117",CounterClockwiseContourIntegral:"\\u2233",crarr:"\\u21B5",Cross:"\\u2A2F",cross:"\\u2717",Cscr:"\\u{1D49E}",cscr:"\\u{1D4B8}",csub:"\\u2ACF",csube:"\\u2AD1",csup:"\\u2AD0",csupe:"\\u2AD2",ctdot:"\\u22EF",cudarrl:"\\u2938",cudarrr:"\\u2935",cuepr:"\\u22DE",cuesc:"\\u22DF",cularr:"\\u21B6",cularrp:"\\u293D",Cup:"\\u22D3",cup:"\\u222A",cupbrcap:"\\u2A48",CupCap:"\\u224D",cupcap:"\\u2A46",cupcup:"\\u2A4A",cupdot:"\\u228D",cupor:"\\u2A45",cups:"\\u222A\\uFE00",curarr:"\\u21B7",curarrm:"\\u293C",curlyeqprec:"\\u22DE",curlyeqsucc:"\\u22DF",curlyvee:"\\u22CE",curlywedge:"\\u22CF",curren:"\\xA4",curvearrowleft:"\\u21B6",curvearrowright:"\\u21B7",cuvee:"\\u22CE",cuwed:"\\u22CF",cwconint:"\\u2232",cwint:"\\u2231",cylcty:"\\u232D",Dagger:"\\u2021",dagger:"\\u2020",daleth:"\\u2138",Darr:"\\u21A1",dArr:"\\u21D3",darr:"\\u2193",dash:"\\u2010",Dashv:"\\u2AE4",dashv:"\\u22A3",dbkarow:"\\u290F",dblac:"\\u02DD",Dcaron:"\\u010E",dcaron:"\\u010F",Dcy:"\\u0414",dcy:"\\u0434",DD:"\\u2145",dd:"\\u2146",ddagger:"\\u2021",ddarr:"\\u21CA",DDotrahd:"\\u2911",ddotseq:"\\u2A77",deg:"\\xB0",Del:"\\u2207",Delta:"\\u0394",delta:"\\u03B4",demptyv:"\\u29B1",dfisht:"\\u297F",Dfr:"\\u{1D507}",dfr:"\\u{1D521}",dHar:"\\u2965",dharl:"\\u21C3",dharr:"\\u21C2",DiacriticalAcute:"\\xB4",DiacriticalDot:"\\u02D9",DiacriticalDoubleAcute:"\\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\\u02DC",diam:"\\u22C4",Diamond:"\\u22C4",diamond:"\\u22C4",diamondsuit:"\\u2666",diams:"\\u2666",die:"\\xA8",DifferentialD:"\\u2146",digamma:"\\u03DD",disin:"\\u22F2",div:"\\xF7",divide:"\\xF7",divideontimes:"\\u22C7",divonx:"\\u22C7",DJcy:"\\u0402",djcy:"\\u0452",dlcorn:"\\u231E",dlcrop:"\\u230D",dollar:"$",Dopf:"\\u{1D53B}",dopf:"\\u{1D555}",Dot:"\\xA8",dot:"\\u02D9",DotDot:"\\u20DC",doteq:"\\u2250",doteqdot:"\\u2251",DotEqual:"\\u2250",dotminus:"\\u2238",dotplus:"\\u2214",dotsquare:"\\u22A1",doublebarwedge:"\\u2306",DoubleContourIntegral:"\\u222F",DoubleDot:"\\xA8",DoubleDownArrow:"\\u21D3",DoubleLeftArrow:"\\u21D0",DoubleLeftRightArrow:"\\u21D4",DoubleLeftTee:"\\u2AE4",DoubleLongLeftArrow:"\\u27F8",DoubleLongLeftRightArrow:"\\u27FA",DoubleLongRightArrow:"\\u27F9",DoubleRightArrow:"\\u21D2",DoubleRightTee:"\\u22A8",DoubleUpArrow:"\\u21D1",DoubleUpDownArrow:"\\u21D5",DoubleVerticalBar:"\\u2225",DownArrow:"\\u2193",Downarrow:"\\u21D3",downarrow:"\\u2193",DownArrowBar:"\\u2913",DownArrowUpArrow:"\\u21F5",DownBreve:"\\u0311",downdownarrows:"\\u21CA",downharpoonleft:"\\u21C3",downharpoonright:"\\u21C2",DownLeftRightVector:"\\u2950",DownLeftTeeVector:"\\u295E",DownLeftVector:"\\u21BD",DownLeftVectorBar:"\\u2956",DownRightTeeVector:"\\u295F",DownRightVector:"\\u21C1",DownRightVectorBar:"\\u2957",DownTee:"\\u22A4",DownTeeArrow:"\\u21A7",drbkarow:"\\u2910",drcorn:"\\u231F",drcrop:"\\u230C",Dscr:"\\u{1D49F}",dscr:"\\u{1D4B9}",DScy:"\\u0405",dscy:"\\u0455",dsol:"\\u29F6",Dstrok:"\\u0110",dstrok:"\\u0111",dtdot:"\\u22F1",dtri:"\\u25BF",dtrif:"\\u25BE",duarr:"\\u21F5",duhar:"\\u296F",dwangle:"\\u29A6",DZcy:"\\u040F",dzcy:"\\u045F",dzigrarr:"\\u27FF",Eacute:"\\xC9",eacute:"\\xE9",easter:"\\u2A6E",Ecaron:"\\u011A",ecaron:"\\u011B",ecir:"\\u2256",Ecirc:"\\xCA",ecirc:"\\xEA",ecolon:"\\u2255",Ecy:"\\u042D",ecy:"\\u044D",eDDot:"\\u2A77",Edot:"\\u0116",eDot:"\\u2251",edot:"\\u0117",ee:"\\u2147",efDot:"\\u2252",Efr:"\\u{1D508}",efr:"\\u{1D522}",eg:"\\u2A9A",Egrave:"\\xC8",egrave:"\\xE8",egs:"\\u2A96",egsdot:"\\u2A98",el:"\\u2A99",Element:"\\u2208",elinters:"\\u23E7",ell:"\\u2113",els:"\\u2A95",elsdot:"\\u2A97",Emacr:"\\u0112",emacr:"\\u0113",empty:"\\u2205",emptyset:"\\u2205",EmptySmallSquare:"\\u25FB",emptyv:"\\u2205",EmptyVerySmallSquare:"\\u25AB",emsp:"\\u2003",emsp13:"\\u2004",emsp14:"\\u2005",ENG:"\\u014A",eng:"\\u014B",ensp:"\\u2002",Eogon:"\\u0118",eogon:"\\u0119",Eopf:"\\u{1D53C}",eopf:"\\u{1D556}",epar:"\\u22D5",eparsl:"\\u29E3",eplus:"\\u2A71",epsi:"\\u03B5",Epsilon:"\\u0395",epsilon:"\\u03B5",epsiv:"\\u03F5",eqcirc:"\\u2256",eqcolon:"\\u2255",eqsim:"\\u2242",eqslantgtr:"\\u2A96",eqslantless:"\\u2A95",Equal:"\\u2A75",equals:"=",EqualTilde:"\\u2242",equest:"\\u225F",Equilibrium:"\\u21CC",equiv:"\\u2261",equivDD:"\\u2A78",eqvparsl:"\\u29E5",erarr:"\\u2971",erDot:"\\u2253",Escr:"\\u2130",escr:"\\u212F",esdot:"\\u2250",Esim:"\\u2A73",esim:"\\u2242",Eta:"\\u0397",eta:"\\u03B7",ETH:"\\xD0",eth:"\\xF0",Euml:"\\xCB",euml:"\\xEB",euro:"\\u20AC",excl:"!",exist:"\\u2203",Exists:"\\u2203",expectation:"\\u2130",ExponentialE:"\\u2147",exponentiale:"\\u2147",fallingdotseq:"\\u2252",Fcy:"\\u0424",fcy:"\\u0444",female:"\\u2640",ffilig:"\\uFB03",fflig:"\\uFB00",ffllig:"\\uFB04",Ffr:"\\u{1D509}",ffr:"\\u{1D523}",filig:"\\uFB01",FilledSmallSquare:"\\u25FC",FilledVerySmallSquare:"\\u25AA",fjlig:"fj",flat:"\\u266D",fllig:"\\uFB02",fltns:"\\u25B1",fnof:"\\u0192",Fopf:"\\u{1D53D}",fopf:"\\u{1D557}",ForAll:"\\u2200",forall:"\\u2200",fork:"\\u22D4",forkv:"\\u2AD9",Fouriertrf:"\\u2131",fpartint:"\\u2A0D",frac12:"\\xBD",frac13:"\\u2153",frac14:"\\xBC",frac15:"\\u2155",frac16:"\\u2159",frac18:"\\u215B",frac23:"\\u2154",frac25:"\\u2156",frac34:"\\xBE",frac35:"\\u2157",frac38:"\\u215C",frac45:"\\u2158",frac56:"\\u215A",frac58:"\\u215D",frac78:"\\u215E",frasl:"\\u2044",frown:"\\u2322",Fscr:"\\u2131",fscr:"\\u{1D4BB}",gacute:"\\u01F5",Gamma:"\\u0393",gamma:"\\u03B3",Gammad:"\\u03DC",gammad:"\\u03DD",gap:"\\u2A86",Gbreve:"\\u011E",gbreve:"\\u011F",Gcedil:"\\u0122",Gcirc:"\\u011C",gcirc:"\\u011D",Gcy:"\\u0413",gcy:"\\u0433",Gdot:"\\u0120",gdot:"\\u0121",gE:"\\u2267",ge:"\\u2265",gEl:"\\u2A8C",gel:"\\u22DB",geq:"\\u2265",geqq:"\\u2267",geqslant:"\\u2A7E",ges:"\\u2A7E",gescc:"\\u2AA9",gesdot:"\\u2A80",gesdoto:"\\u2A82",gesdotol:"\\u2A84",gesl:"\\u22DB\\uFE00",gesles:"\\u2A94",Gfr:"\\u{1D50A}",gfr:"\\u{1D524}",Gg:"\\u22D9",gg:"\\u226B",ggg:"\\u22D9",gimel:"\\u2137",GJcy:"\\u0403",gjcy:"\\u0453",gl:"\\u2277",gla:"\\u2AA5",glE:"\\u2A92",glj:"\\u2AA4",gnap:"\\u2A8A",gnapprox:"\\u2A8A",gnE:"\\u2269",gne:"\\u2A88",gneq:"\\u2A88",gneqq:"\\u2269",gnsim:"\\u22E7",Gopf:"\\u{1D53E}",gopf:"\\u{1D558}",grave:"`",GreaterEqual:"\\u2265",GreaterEqualLess:"\\u22DB",GreaterFullEqual:"\\u2267",GreaterGreater:"\\u2AA2",GreaterLess:"\\u2277",GreaterSlantEqual:"\\u2A7E",GreaterTilde:"\\u2273",Gscr:"\\u{1D4A2}",gscr:"\\u210A",gsim:"\\u2273",gsime:"\\u2A8E",gsiml:"\\u2A90",Gt:"\\u226B",GT:">",gt:">",gtcc:"\\u2AA7",gtcir:"\\u2A7A",gtdot:"\\u22D7",gtlPar:"\\u2995",gtquest:"\\u2A7C",gtrapprox:"\\u2A86",gtrarr:"\\u2978",gtrdot:"\\u22D7",gtreqless:"\\u22DB",gtreqqless:"\\u2A8C",gtrless:"\\u2277",gtrsim:"\\u2273",gvertneqq:"\\u2269\\uFE00",gvnE:"\\u2269\\uFE00",Hacek:"\\u02C7",hairsp:"\\u200A",half:"\\xBD",hamilt:"\\u210B",HARDcy:"\\u042A",hardcy:"\\u044A",hArr:"\\u21D4",harr:"\\u2194",harrcir:"\\u2948",harrw:"\\u21AD",Hat:"^",hbar:"\\u210F",Hcirc:"\\u0124",hcirc:"\\u0125",hearts:"\\u2665",heartsuit:"\\u2665",hellip:"\\u2026",hercon:"\\u22B9",Hfr:"\\u210C",hfr:"\\u{1D525}",HilbertSpace:"\\u210B",hksearow:"\\u2925",hkswarow:"\\u2926",hoarr:"\\u21FF",homtht:"\\u223B",hookleftarrow:"\\u21A9",hookrightarrow:"\\u21AA",Hopf:"\\u210D",hopf:"\\u{1D559}",horbar:"\\u2015",HorizontalLine:"\\u2500",Hscr:"\\u210B",hscr:"\\u{1D4BD}",hslash:"\\u210F",Hstrok:"\\u0126",hstrok:"\\u0127",HumpDownHump:"\\u224E",HumpEqual:"\\u224F",hybull:"\\u2043",hyphen:"\\u2010",Iacute:"\\xCD",iacute:"\\xED",ic:"\\u2063",Icirc:"\\xCE",icirc:"\\xEE",Icy:"\\u0418",icy:"\\u0438",Idot:"\\u0130",IEcy:"\\u0415",iecy:"\\u0435",iexcl:"\\xA1",iff:"\\u21D4",Ifr:"\\u2111",ifr:"\\u{1D526}",Igrave:"\\xCC",igrave:"\\xEC",ii:"\\u2148",iiiint:"\\u2A0C",iiint:"\\u222D",iinfin:"\\u29DC",iiota:"\\u2129",IJlig:"\\u0132",ijlig:"\\u0133",Im:"\\u2111",Imacr:"\\u012A",imacr:"\\u012B",image:"\\u2111",ImaginaryI:"\\u2148",imagline:"\\u2110",imagpart:"\\u2111",imath:"\\u0131",imof:"\\u22B7",imped:"\\u01B5",Implies:"\\u21D2",in:"\\u2208",incare:"\\u2105",infin:"\\u221E",infintie:"\\u29DD",inodot:"\\u0131",Int:"\\u222C",int:"\\u222B",intcal:"\\u22BA",integers:"\\u2124",Integral:"\\u222B",intercal:"\\u22BA",Intersection:"\\u22C2",intlarhk:"\\u2A17",intprod:"\\u2A3C",InvisibleComma:"\\u2063",InvisibleTimes:"\\u2062",IOcy:"\\u0401",iocy:"\\u0451",Iogon:"\\u012E",iogon:"\\u012F",Iopf:"\\u{1D540}",iopf:"\\u{1D55A}",Iota:"\\u0399",iota:"\\u03B9",iprod:"\\u2A3C",iquest:"\\xBF",Iscr:"\\u2110",iscr:"\\u{1D4BE}",isin:"\\u2208",isindot:"\\u22F5",isinE:"\\u22F9",isins:"\\u22F4",isinsv:"\\u22F3",isinv:"\\u2208",it:"\\u2062",Itilde:"\\u0128",itilde:"\\u0129",Iukcy:"\\u0406",iukcy:"\\u0456",Iuml:"\\xCF",iuml:"\\xEF",Jcirc:"\\u0134",jcirc:"\\u0135",Jcy:"\\u0419",jcy:"\\u0439",Jfr:"\\u{1D50D}",jfr:"\\u{1D527}",jmath:"\\u0237",Jopf:"\\u{1D541}",jopf:"\\u{1D55B}",Jscr:"\\u{1D4A5}",jscr:"\\u{1D4BF}",Jsercy:"\\u0408",jsercy:"\\u0458",Jukcy:"\\u0404",jukcy:"\\u0454",Kappa:"\\u039A",kappa:"\\u03BA",kappav:"\\u03F0",Kcedil:"\\u0136",kcedil:"\\u0137",Kcy:"\\u041A",kcy:"\\u043A",Kfr:"\\u{1D50E}",kfr:"\\u{1D528}",kgreen:"\\u0138",KHcy:"\\u0425",khcy:"\\u0445",KJcy:"\\u040C",kjcy:"\\u045C",Kopf:"\\u{1D542}",kopf:"\\u{1D55C}",Kscr:"\\u{1D4A6}",kscr:"\\u{1D4C0}",lAarr:"\\u21DA",Lacute:"\\u0139",lacute:"\\u013A",laemptyv:"\\u29B4",lagran:"\\u2112",Lambda:"\\u039B",lambda:"\\u03BB",Lang:"\\u27EA",lang:"\\u27E8",langd:"\\u2991",langle:"\\u27E8",lap:"\\u2A85",Laplacetrf:"\\u2112",laquo:"\\xAB",Larr:"\\u219E",lArr:"\\u21D0",larr:"\\u2190",larrb:"\\u21E4",larrbfs:"\\u291F",larrfs:"\\u291D",larrhk:"\\u21A9",larrlp:"\\u21AB",larrpl:"\\u2939",larrsim:"\\u2973",larrtl:"\\u21A2",lat:"\\u2AAB",lAtail:"\\u291B",latail:"\\u2919",late:"\\u2AAD",lates:"\\u2AAD\\uFE00",lBarr:"\\u290E",lbarr:"\\u290C",lbbrk:"\\u2772",lbrace:"{",lbrack:"[",lbrke:"\\u298B",lbrksld:"\\u298F",lbrkslu:"\\u298D",Lcaron:"\\u013D",lcaron:"\\u013E",Lcedil:"\\u013B",lcedil:"\\u013C",lceil:"\\u2308",lcub:"{",Lcy:"\\u041B",lcy:"\\u043B",ldca:"\\u2936",ldquo:"\\u201C",ldquor:"\\u201E",ldrdhar:"\\u2967",ldrushar:"\\u294B",ldsh:"\\u21B2",lE:"\\u2266",le:"\\u2264",LeftAngleBracket:"\\u27E8",LeftArrow:"\\u2190",Leftarrow:"\\u21D0",leftarrow:"\\u2190",LeftArrowBar:"\\u21E4",LeftArrowRightArrow:"\\u21C6",leftarrowtail:"\\u21A2",LeftCeiling:"\\u2308",LeftDoubleBracket:"\\u27E6",LeftDownTeeVector:"\\u2961",LeftDownVector:"\\u21C3",LeftDownVectorBar:"\\u2959",LeftFloor:"\\u230A",leftharpoondown:"\\u21BD",leftharpoonup:"\\u21BC",leftleftarrows:"\\u21C7",LeftRightArrow:"\\u2194",Leftrightarrow:"\\u21D4",leftrightarrow:"\\u2194",leftrightarrows:"\\u21C6",leftrightharpoons:"\\u21CB",leftrightsquigarrow:"\\u21AD",LeftRightVector:"\\u294E",LeftTee:"\\u22A3",LeftTeeArrow:"\\u21A4",LeftTeeVector:"\\u295A",leftthreetimes:"\\u22CB",LeftTriangle:"\\u22B2",LeftTriangleBar:"\\u29CF",LeftTriangleEqual:"\\u22B4",LeftUpDownVector:"\\u2951",LeftUpTeeVector:"\\u2960",LeftUpVector:"\\u21BF",LeftUpVectorBar:"\\u2958",LeftVector:"\\u21BC",LeftVectorBar:"\\u2952",lEg:"\\u2A8B",leg:"\\u22DA",leq:"\\u2264",leqq:"\\u2266",leqslant:"\\u2A7D",les:"\\u2A7D",lescc:"\\u2AA8",lesdot:"\\u2A7F",lesdoto:"\\u2A81",lesdotor:"\\u2A83",lesg:"\\u22DA\\uFE00",lesges:"\\u2A93",lessapprox:"\\u2A85",lessdot:"\\u22D6",lesseqgtr:"\\u22DA",lesseqqgtr:"\\u2A8B",LessEqualGreater:"\\u22DA",LessFullEqual:"\\u2266",LessGreater:"\\u2276",lessgtr:"\\u2276",LessLess:"\\u2AA1",lesssim:"\\u2272",LessSlantEqual:"\\u2A7D",LessTilde:"\\u2272",lfisht:"\\u297C",lfloor:"\\u230A",Lfr:"\\u{1D50F}",lfr:"\\u{1D529}",lg:"\\u2276",lgE:"\\u2A91",lHar:"\\u2962",lhard:"\\u21BD",lharu:"\\u21BC",lharul:"\\u296A",lhblk:"\\u2584",LJcy:"\\u0409",ljcy:"\\u0459",Ll:"\\u22D8",ll:"\\u226A",llarr:"\\u21C7",llcorner:"\\u231E",Lleftarrow:"\\u21DA",llhard:"\\u296B",lltri:"\\u25FA",Lmidot:"\\u013F",lmidot:"\\u0140",lmoust:"\\u23B0",lmoustache:"\\u23B0",lnap:"\\u2A89",lnapprox:"\\u2A89",lnE:"\\u2268",lne:"\\u2A87",lneq:"\\u2A87",lneqq:"\\u2268",lnsim:"\\u22E6",loang:"\\u27EC",loarr:"\\u21FD",lobrk:"\\u27E6",LongLeftArrow:"\\u27F5",Longleftarrow:"\\u27F8",longleftarrow:"\\u27F5",LongLeftRightArrow:"\\u27F7",Longleftrightarrow:"\\u27FA",longleftrightarrow:"\\u27F7",longmapsto:"\\u27FC",LongRightArrow:"\\u27F6",Longrightarrow:"\\u27F9",longrightarrow:"\\u27F6",looparrowleft:"\\u21AB",looparrowright:"\\u21AC",lopar:"\\u2985",Lopf:"\\u{1D543}",lopf:"\\u{1D55D}",loplus:"\\u2A2D",lotimes:"\\u2A34",lowast:"\\u2217",lowbar:"_",LowerLeftArrow:"\\u2199",LowerRightArrow:"\\u2198",loz:"\\u25CA",lozenge:"\\u25CA",lozf:"\\u29EB",lpar:"(",lparlt:"\\u2993",lrarr:"\\u21C6",lrcorner:"\\u231F",lrhar:"\\u21CB",lrhard:"\\u296D",lrm:"\\u200E",lrtri:"\\u22BF",lsaquo:"\\u2039",Lscr:"\\u2112",lscr:"\\u{1D4C1}",Lsh:"\\u21B0",lsh:"\\u21B0",lsim:"\\u2272",lsime:"\\u2A8D",lsimg:"\\u2A8F",lsqb:"[",lsquo:"\\u2018",lsquor:"\\u201A",Lstrok:"\\u0141",lstrok:"\\u0142",Lt:"\\u226A",LT:"<",lt:"<",ltcc:"\\u2AA6",ltcir:"\\u2A79",ltdot:"\\u22D6",lthree:"\\u22CB",ltimes:"\\u22C9",ltlarr:"\\u2976",ltquest:"\\u2A7B",ltri:"\\u25C3",ltrie:"\\u22B4",ltrif:"\\u25C2",ltrPar:"\\u2996",lurdshar:"\\u294A",luruhar:"\\u2966",lvertneqq:"\\u2268\\uFE00",lvnE:"\\u2268\\uFE00",macr:"\\xAF",male:"\\u2642",malt:"\\u2720",maltese:"\\u2720",Map:"\\u2905",map:"\\u21A6",mapsto:"\\u21A6",mapstodown:"\\u21A7",mapstoleft:"\\u21A4",mapstoup:"\\u21A5",marker:"\\u25AE",mcomma:"\\u2A29",Mcy:"\\u041C",mcy:"\\u043C",mdash:"\\u2014",mDDot:"\\u223A",measuredangle:"\\u2221",MediumSpace:"\\u205F",Mellintrf:"\\u2133",Mfr:"\\u{1D510}",mfr:"\\u{1D52A}",mho:"\\u2127",micro:"\\xB5",mid:"\\u2223",midast:"*",midcir:"\\u2AF0",middot:"\\xB7",minus:"\\u2212",minusb:"\\u229F",minusd:"\\u2238",minusdu:"\\u2A2A",MinusPlus:"\\u2213",mlcp:"\\u2ADB",mldr:"\\u2026",mnplus:"\\u2213",models:"\\u22A7",Mopf:"\\u{1D544}",mopf:"\\u{1D55E}",mp:"\\u2213",Mscr:"\\u2133",mscr:"\\u{1D4C2}",mstpos:"\\u223E",Mu:"\\u039C",mu:"\\u03BC",multimap:"\\u22B8",mumap:"\\u22B8",nabla:"\\u2207",Nacute:"\\u0143",nacute:"\\u0144",nang:"\\u2220\\u20D2",nap:"\\u2249",napE:"\\u2A70\\u0338",napid:"\\u224B\\u0338",napos:"\\u0149",napprox:"\\u2249",natur:"\\u266E",natural:"\\u266E",naturals:"\\u2115",nbsp:"\\xA0",nbump:"\\u224E\\u0338",nbumpe:"\\u224F\\u0338",ncap:"\\u2A43",Ncaron:"\\u0147",ncaron:"\\u0148",Ncedil:"\\u0145",ncedil:"\\u0146",ncong:"\\u2247",ncongdot:"\\u2A6D\\u0338",ncup:"\\u2A42",Ncy:"\\u041D",ncy:"\\u043D",ndash:"\\u2013",ne:"\\u2260",nearhk:"\\u2924",neArr:"\\u21D7",nearr:"\\u2197",nearrow:"\\u2197",nedot:"\\u2250\\u0338",NegativeMediumSpace:"\\u200B",NegativeThickSpace:"\\u200B",NegativeThinSpace:"\\u200B",NegativeVeryThinSpace:"\\u200B",nequiv:"\\u2262",nesear:"\\u2928",nesim:"\\u2242\\u0338",NestedGreaterGreater:"\\u226B",NestedLessLess:"\\u226A",NewLine:`\n`,nexist:"\\u2204",nexists:"\\u2204",Nfr:"\\u{1D511}",nfr:"\\u{1D52B}",ngE:"\\u2267\\u0338",nge:"\\u2271",ngeq:"\\u2271",ngeqq:"\\u2267\\u0338",ngeqslant:"\\u2A7E\\u0338",nges:"\\u2A7E\\u0338",nGg:"\\u22D9\\u0338",ngsim:"\\u2275",nGt:"\\u226B\\u20D2",ngt:"\\u226F",ngtr:"\\u226F",nGtv:"\\u226B\\u0338",nhArr:"\\u21CE",nharr:"\\u21AE",nhpar:"\\u2AF2",ni:"\\u220B",nis:"\\u22FC",nisd:"\\u22FA",niv:"\\u220B",NJcy:"\\u040A",njcy:"\\u045A",nlArr:"\\u21CD",nlarr:"\\u219A",nldr:"\\u2025",nlE:"\\u2266\\u0338",nle:"\\u2270",nLeftarrow:"\\u21CD",nleftarrow:"\\u219A",nLeftrightarrow:"\\u21CE",nleftrightarrow:"\\u21AE",nleq:"\\u2270",nleqq:"\\u2266\\u0338",nleqslant:"\\u2A7D\\u0338",nles:"\\u2A7D\\u0338",nless:"\\u226E",nLl:"\\u22D8\\u0338",nlsim:"\\u2274",nLt:"\\u226A\\u20D2",nlt:"\\u226E",nltri:"\\u22EA",nltrie:"\\u22EC",nLtv:"\\u226A\\u0338",nmid:"\\u2224",NoBreak:"\\u2060",NonBreakingSpace:"\\xA0",Nopf:"\\u2115",nopf:"\\u{1D55F}",Not:"\\u2AEC",not:"\\xAC",NotCongruent:"\\u2262",NotCupCap:"\\u226D",NotDoubleVerticalBar:"\\u2226",NotElement:"\\u2209",NotEqual:"\\u2260",NotEqualTilde:"\\u2242\\u0338",NotExists:"\\u2204",NotGreater:"\\u226F",NotGreaterEqual:"\\u2271",NotGreaterFullEqual:"\\u2267\\u0338",NotGreaterGreater:"\\u226B\\u0338",NotGreaterLess:"\\u2279",NotGreaterSlantEqual:"\\u2A7E\\u0338",NotGreaterTilde:"\\u2275",NotHumpDownHump:"\\u224E\\u0338",NotHumpEqual:"\\u224F\\u0338",notin:"\\u2209",notindot:"\\u22F5\\u0338",notinE:"\\u22F9\\u0338",notinva:"\\u2209",notinvb:"\\u22F7",notinvc:"\\u22F6",NotLeftTriangle:"\\u22EA",NotLeftTriangleBar:"\\u29CF\\u0338",NotLeftTriangleEqual:"\\u22EC",NotLess:"\\u226E",NotLessEqual:"\\u2270",NotLessGreater:"\\u2278",NotLessLess:"\\u226A\\u0338",NotLessSlantEqual:"\\u2A7D\\u0338",NotLessTilde:"\\u2274",NotNestedGreaterGreater:"\\u2AA2\\u0338",NotNestedLessLess:"\\u2AA1\\u0338",notni:"\\u220C",notniva:"\\u220C",notnivb:"\\u22FE",notnivc:"\\u22FD",NotPrecedes:"\\u2280",NotPrecedesEqual:"\\u2AAF\\u0338",NotPrecedesSlantEqual:"\\u22E0",NotReverseElement:"\\u220C",NotRightTriangle:"\\u22EB",NotRightTriangleBar:"\\u29D0\\u0338",NotRightTriangleEqual:"\\u22ED",NotSquareSubset:"\\u228F\\u0338",NotSquareSubsetEqual:"\\u22E2",NotSquareSuperset:"\\u2290\\u0338",NotSquareSupersetEqual:"\\u22E3",NotSubset:"\\u2282\\u20D2",NotSubsetEqual:"\\u2288",NotSucceeds:"\\u2281",NotSucceedsEqual:"\\u2AB0\\u0338",NotSucceedsSlantEqual:"\\u22E1",NotSucceedsTilde:"\\u227F\\u0338",NotSuperset:"\\u2283\\u20D2",NotSupersetEqual:"\\u2289",NotTilde:"\\u2241",NotTildeEqual:"\\u2244",NotTildeFullEqual:"\\u2247",NotTildeTilde:"\\u2249",NotVerticalBar:"\\u2224",npar:"\\u2226",nparallel:"\\u2226",nparsl:"\\u2AFD\\u20E5",npart:"\\u2202\\u0338",npolint:"\\u2A14",npr:"\\u2280",nprcue:"\\u22E0",npre:"\\u2AAF\\u0338",nprec:"\\u2280",npreceq:"\\u2AAF\\u0338",nrArr:"\\u21CF",nrarr:"\\u219B",nrarrc:"\\u2933\\u0338",nrarrw:"\\u219D\\u0338",nRightarrow:"\\u21CF",nrightarrow:"\\u219B",nrtri:"\\u22EB",nrtrie:"\\u22ED",nsc:"\\u2281",nsccue:"\\u22E1",nsce:"\\u2AB0\\u0338",Nscr:"\\u{1D4A9}",nscr:"\\u{1D4C3}",nshortmid:"\\u2224",nshortparallel:"\\u2226",nsim:"\\u2241",nsime:"\\u2244",nsimeq:"\\u2244",nsmid:"\\u2224",nspar:"\\u2226",nsqsube:"\\u22E2",nsqsupe:"\\u22E3",nsub:"\\u2284",nsubE:"\\u2AC5\\u0338",nsube:"\\u2288",nsubset:"\\u2282\\u20D2",nsubseteq:"\\u2288",nsubseteqq:"\\u2AC5\\u0338",nsucc:"\\u2281",nsucceq:"\\u2AB0\\u0338",nsup:"\\u2285",nsupE:"\\u2AC6\\u0338",nsupe:"\\u2289",nsupset:"\\u2283\\u20D2",nsupseteq:"\\u2289",nsupseteqq:"\\u2AC6\\u0338",ntgl:"\\u2279",Ntilde:"\\xD1",ntilde:"\\xF1",ntlg:"\\u2278",ntriangleleft:"\\u22EA",ntrianglelefteq:"\\u22EC",ntriangleright:"\\u22EB",ntrianglerighteq:"\\u22ED",Nu:"\\u039D",nu:"\\u03BD",num:"#",numero:"\\u2116",numsp:"\\u2007",nvap:"\\u224D\\u20D2",nVDash:"\\u22AF",nVdash:"\\u22AE",nvDash:"\\u22AD",nvdash:"\\u22AC",nvge:"\\u2265\\u20D2",nvgt:">\\u20D2",nvHarr:"\\u2904",nvinfin:"\\u29DE",nvlArr:"\\u2902",nvle:"\\u2264\\u20D2",nvlt:"<\\u20D2",nvltrie:"\\u22B4\\u20D2",nvrArr:"\\u2903",nvrtrie:"\\u22B5\\u20D2",nvsim:"\\u223C\\u20D2",nwarhk:"\\u2923",nwArr:"\\u21D6",nwarr:"\\u2196",nwarrow:"\\u2196",nwnear:"\\u2927",Oacute:"\\xD3",oacute:"\\xF3",oast:"\\u229B",ocir:"\\u229A",Ocirc:"\\xD4",ocirc:"\\xF4",Ocy:"\\u041E",ocy:"\\u043E",odash:"\\u229D",Odblac:"\\u0150",odblac:"\\u0151",odiv:"\\u2A38",odot:"\\u2299",odsold:"\\u29BC",OElig:"\\u0152",oelig:"\\u0153",ofcir:"\\u29BF",Ofr:"\\u{1D512}",ofr:"\\u{1D52C}",ogon:"\\u02DB",Ograve:"\\xD2",ograve:"\\xF2",ogt:"\\u29C1",ohbar:"\\u29B5",ohm:"\\u03A9",oint:"\\u222E",olarr:"\\u21BA",olcir:"\\u29BE",olcross:"\\u29BB",oline:"\\u203E",olt:"\\u29C0",Omacr:"\\u014C",omacr:"\\u014D",Omega:"\\u03A9",omega:"\\u03C9",Omicron:"\\u039F",omicron:"\\u03BF",omid:"\\u29B6",ominus:"\\u2296",Oopf:"\\u{1D546}",oopf:"\\u{1D560}",opar:"\\u29B7",OpenCurlyDoubleQuote:"\\u201C",OpenCurlyQuote:"\\u2018",operp:"\\u29B9",oplus:"\\u2295",Or:"\\u2A54",or:"\\u2228",orarr:"\\u21BB",ord:"\\u2A5D",order:"\\u2134",orderof:"\\u2134",ordf:"\\xAA",ordm:"\\xBA",origof:"\\u22B6",oror:"\\u2A56",orslope:"\\u2A57",orv:"\\u2A5B",oS:"\\u24C8",Oscr:"\\u{1D4AA}",oscr:"\\u2134",Oslash:"\\xD8",oslash:"\\xF8",osol:"\\u2298",Otilde:"\\xD5",otilde:"\\xF5",Otimes:"\\u2A37",otimes:"\\u2297",otimesas:"\\u2A36",Ouml:"\\xD6",ouml:"\\xF6",ovbar:"\\u233D",OverBar:"\\u203E",OverBrace:"\\u23DE",OverBracket:"\\u23B4",OverParenthesis:"\\u23DC",par:"\\u2225",para:"\\xB6",parallel:"\\u2225",parsim:"\\u2AF3",parsl:"\\u2AFD",part:"\\u2202",PartialD:"\\u2202",Pcy:"\\u041F",pcy:"\\u043F",percnt:"%",period:".",permil:"\\u2030",perp:"\\u22A5",pertenk:"\\u2031",Pfr:"\\u{1D513}",pfr:"\\u{1D52D}",Phi:"\\u03A6",phi:"\\u03C6",phiv:"\\u03D5",phmmat:"\\u2133",phone:"\\u260E",Pi:"\\u03A0",pi:"\\u03C0",pitchfork:"\\u22D4",piv:"\\u03D6",planck:"\\u210F",planckh:"\\u210E",plankv:"\\u210F",plus:"+",plusacir:"\\u2A23",plusb:"\\u229E",pluscir:"\\u2A22",plusdo:"\\u2214",plusdu:"\\u2A25",pluse:"\\u2A72",PlusMinus:"\\xB1",plusmn:"\\xB1",plussim:"\\u2A26",plustwo:"\\u2A27",pm:"\\xB1",Poincareplane:"\\u210C",pointint:"\\u2A15",Popf:"\\u2119",popf:"\\u{1D561}",pound:"\\xA3",Pr:"\\u2ABB",pr:"\\u227A",prap:"\\u2AB7",prcue:"\\u227C",prE:"\\u2AB3",pre:"\\u2AAF",prec:"\\u227A",precapprox:"\\u2AB7",preccurlyeq:"\\u227C",Precedes:"\\u227A",PrecedesEqual:"\\u2AAF",PrecedesSlantEqual:"\\u227C",PrecedesTilde:"\\u227E",preceq:"\\u2AAF",precnapprox:"\\u2AB9",precneqq:"\\u2AB5",precnsim:"\\u22E8",precsim:"\\u227E",Prime:"\\u2033",prime:"\\u2032",primes:"\\u2119",prnap:"\\u2AB9",prnE:"\\u2AB5",prnsim:"\\u22E8",prod:"\\u220F",Product:"\\u220F",profalar:"\\u232E",profline:"\\u2312",profsurf:"\\u2313",prop:"\\u221D",Proportion:"\\u2237",Proportional:"\\u221D",propto:"\\u221D",prsim:"\\u227E",prurel:"\\u22B0",Pscr:"\\u{1D4AB}",pscr:"\\u{1D4C5}",Psi:"\\u03A8",psi:"\\u03C8",puncsp:"\\u2008",Qfr:"\\u{1D514}",qfr:"\\u{1D52E}",qint:"\\u2A0C",Qopf:"\\u211A",qopf:"\\u{1D562}",qprime:"\\u2057",Qscr:"\\u{1D4AC}",qscr:"\\u{1D4C6}",quaternions:"\\u210D",quatint:"\\u2A16",quest:"?",questeq:"\\u225F",QUOT:\'"\',quot:\'"\',rAarr:"\\u21DB",race:"\\u223D\\u0331",Racute:"\\u0154",racute:"\\u0155",radic:"\\u221A",raemptyv:"\\u29B3",Rang:"\\u27EB",rang:"\\u27E9",rangd:"\\u2992",range:"\\u29A5",rangle:"\\u27E9",raquo:"\\xBB",Rarr:"\\u21A0",rArr:"\\u21D2",rarr:"\\u2192",rarrap:"\\u2975",rarrb:"\\u21E5",rarrbfs:"\\u2920",rarrc:"\\u2933",rarrfs:"\\u291E",rarrhk:"\\u21AA",rarrlp:"\\u21AC",rarrpl:"\\u2945",rarrsim:"\\u2974",Rarrtl:"\\u2916",rarrtl:"\\u21A3",rarrw:"\\u219D",rAtail:"\\u291C",ratail:"\\u291A",ratio:"\\u2236",rationals:"\\u211A",RBarr:"\\u2910",rBarr:"\\u290F",rbarr:"\\u290D",rbbrk:"\\u2773",rbrace:"}",rbrack:"]",rbrke:"\\u298C",rbrksld:"\\u298E",rbrkslu:"\\u2990",Rcaron:"\\u0158",rcaron:"\\u0159",Rcedil:"\\u0156",rcedil:"\\u0157",rceil:"\\u2309",rcub:"}",Rcy:"\\u0420",rcy:"\\u0440",rdca:"\\u2937",rdldhar:"\\u2969",rdquo:"\\u201D",rdquor:"\\u201D",rdsh:"\\u21B3",Re:"\\u211C",real:"\\u211C",realine:"\\u211B",realpart:"\\u211C",reals:"\\u211D",rect:"\\u25AD",REG:"\\xAE",reg:"\\xAE",ReverseElement:"\\u220B",ReverseEquilibrium:"\\u21CB",ReverseUpEquilibrium:"\\u296F",rfisht:"\\u297D",rfloor:"\\u230B",Rfr:"\\u211C",rfr:"\\u{1D52F}",rHar:"\\u2964",rhard:"\\u21C1",rharu:"\\u21C0",rharul:"\\u296C",Rho:"\\u03A1",rho:"\\u03C1",rhov:"\\u03F1",RightAngleBracket:"\\u27E9",RightArrow:"\\u2192",Rightarrow:"\\u21D2",rightarrow:"\\u2192",RightArrowBar:"\\u21E5",RightArrowLeftArrow:"\\u21C4",rightarrowtail:"\\u21A3",RightCeiling:"\\u2309",RightDoubleBracket:"\\u27E7",RightDownTeeVector:"\\u295D",RightDownVector:"\\u21C2",RightDownVectorBar:"\\u2955",RightFloor:"\\u230B",rightharpoondown:"\\u21C1",rightharpoonup:"\\u21C0",rightleftarrows:"\\u21C4",rightleftharpoons:"\\u21CC",rightrightarrows:"\\u21C9",rightsquigarrow:"\\u219D",RightTee:"\\u22A2",RightTeeArrow:"\\u21A6",RightTeeVector:"\\u295B",rightthreetimes:"\\u22CC",RightTriangle:"\\u22B3",RightTriangleBar:"\\u29D0",RightTriangleEqual:"\\u22B5",RightUpDownVector:"\\u294F",RightUpTeeVector:"\\u295C",RightUpVector:"\\u21BE",RightUpVectorBar:"\\u2954",RightVector:"\\u21C0",RightVectorBar:"\\u2953",ring:"\\u02DA",risingdotseq:"\\u2253",rlarr:"\\u21C4",rlhar:"\\u21CC",rlm:"\\u200F",rmoust:"\\u23B1",rmoustache:"\\u23B1",rnmid:"\\u2AEE",roang:"\\u27ED",roarr:"\\u21FE",robrk:"\\u27E7",ropar:"\\u2986",Ropf:"\\u211D",ropf:"\\u{1D563}",roplus:"\\u2A2E",rotimes:"\\u2A35",RoundImplies:"\\u2970",rpar:")",rpargt:"\\u2994",rppolint:"\\u2A12",rrarr:"\\u21C9",Rrightarrow:"\\u21DB",rsaquo:"\\u203A",Rscr:"\\u211B",rscr:"\\u{1D4C7}",Rsh:"\\u21B1",rsh:"\\u21B1",rsqb:"]",rsquo:"\\u2019",rsquor:"\\u2019",rthree:"\\u22CC",rtimes:"\\u22CA",rtri:"\\u25B9",rtrie:"\\u22B5",rtrif:"\\u25B8",rtriltri:"\\u29CE",RuleDelayed:"\\u29F4",ruluhar:"\\u2968",rx:"\\u211E",Sacute:"\\u015A",sacute:"\\u015B",sbquo:"\\u201A",Sc:"\\u2ABC",sc:"\\u227B",scap:"\\u2AB8",Scaron:"\\u0160",scaron:"\\u0161",sccue:"\\u227D",scE:"\\u2AB4",sce:"\\u2AB0",Scedil:"\\u015E",scedil:"\\u015F",Scirc:"\\u015C",scirc:"\\u015D",scnap:"\\u2ABA",scnE:"\\u2AB6",scnsim:"\\u22E9",scpolint:"\\u2A13",scsim:"\\u227F",Scy:"\\u0421",scy:"\\u0441",sdot:"\\u22C5",sdotb:"\\u22A1",sdote:"\\u2A66",searhk:"\\u2925",seArr:"\\u21D8",searr:"\\u2198",searrow:"\\u2198",sect:"\\xA7",semi:";",seswar:"\\u2929",setminus:"\\u2216",setmn:"\\u2216",sext:"\\u2736",Sfr:"\\u{1D516}",sfr:"\\u{1D530}",sfrown:"\\u2322",sharp:"\\u266F",SHCHcy:"\\u0429",shchcy:"\\u0449",SHcy:"\\u0428",shcy:"\\u0448",ShortDownArrow:"\\u2193",ShortLeftArrow:"\\u2190",shortmid:"\\u2223",shortparallel:"\\u2225",ShortRightArrow:"\\u2192",ShortUpArrow:"\\u2191",shy:"\\xAD",Sigma:"\\u03A3",sigma:"\\u03C3",sigmaf:"\\u03C2",sigmav:"\\u03C2",sim:"\\u223C",simdot:"\\u2A6A",sime:"\\u2243",simeq:"\\u2243",simg:"\\u2A9E",simgE:"\\u2AA0",siml:"\\u2A9D",simlE:"\\u2A9F",simne:"\\u2246",simplus:"\\u2A24",simrarr:"\\u2972",slarr:"\\u2190",SmallCircle:"\\u2218",smallsetminus:"\\u2216",smashp:"\\u2A33",smeparsl:"\\u29E4",smid:"\\u2223",smile:"\\u2323",smt:"\\u2AAA",smte:"\\u2AAC",smtes:"\\u2AAC\\uFE00",SOFTcy:"\\u042C",softcy:"\\u044C",sol:"/",solb:"\\u29C4",solbar:"\\u233F",Sopf:"\\u{1D54A}",sopf:"\\u{1D564}",spades:"\\u2660",spadesuit:"\\u2660",spar:"\\u2225",sqcap:"\\u2293",sqcaps:"\\u2293\\uFE00",sqcup:"\\u2294",sqcups:"\\u2294\\uFE00",Sqrt:"\\u221A",sqsub:"\\u228F",sqsube:"\\u2291",sqsubset:"\\u228F",sqsubseteq:"\\u2291",sqsup:"\\u2290",sqsupe:"\\u2292",sqsupset:"\\u2290",sqsupseteq:"\\u2292",squ:"\\u25A1",Square:"\\u25A1",square:"\\u25A1",SquareIntersection:"\\u2293",SquareSubset:"\\u228F",SquareSubsetEqual:"\\u2291",SquareSuperset:"\\u2290",SquareSupersetEqual:"\\u2292",SquareUnion:"\\u2294",squarf:"\\u25AA",squf:"\\u25AA",srarr:"\\u2192",Sscr:"\\u{1D4AE}",sscr:"\\u{1D4C8}",ssetmn:"\\u2216",ssmile:"\\u2323",sstarf:"\\u22C6",Star:"\\u22C6",star:"\\u2606",starf:"\\u2605",straightepsilon:"\\u03F5",straightphi:"\\u03D5",strns:"\\xAF",Sub:"\\u22D0",sub:"\\u2282",subdot:"\\u2ABD",subE:"\\u2AC5",sube:"\\u2286",subedot:"\\u2AC3",submult:"\\u2AC1",subnE:"\\u2ACB",subne:"\\u228A",subplus:"\\u2ABF",subrarr:"\\u2979",Subset:"\\u22D0",subset:"\\u2282",subseteq:"\\u2286",subseteqq:"\\u2AC5",SubsetEqual:"\\u2286",subsetneq:"\\u228A",subsetneqq:"\\u2ACB",subsim:"\\u2AC7",subsub:"\\u2AD5",subsup:"\\u2AD3",succ:"\\u227B",succapprox:"\\u2AB8",succcurlyeq:"\\u227D",Succeeds:"\\u227B",SucceedsEqual:"\\u2AB0",SucceedsSlantEqual:"\\u227D",SucceedsTilde:"\\u227F",succeq:"\\u2AB0",succnapprox:"\\u2ABA",succneqq:"\\u2AB6",succnsim:"\\u22E9",succsim:"\\u227F",SuchThat:"\\u220B",Sum:"\\u2211",sum:"\\u2211",sung:"\\u266A",Sup:"\\u22D1",sup:"\\u2283",sup1:"\\xB9",sup2:"\\xB2",sup3:"\\xB3",supdot:"\\u2ABE",supdsub:"\\u2AD8",supE:"\\u2AC6",supe:"\\u2287",supedot:"\\u2AC4",Superset:"\\u2283",SupersetEqual:"\\u2287",suphsol:"\\u27C9",suphsub:"\\u2AD7",suplarr:"\\u297B",supmult:"\\u2AC2",supnE:"\\u2ACC",supne:"\\u228B",supplus:"\\u2AC0",Supset:"\\u22D1",supset:"\\u2283",supseteq:"\\u2287",supseteqq:"\\u2AC6",supsetneq:"\\u228B",supsetneqq:"\\u2ACC",supsim:"\\u2AC8",supsub:"\\u2AD4",supsup:"\\u2AD6",swarhk:"\\u2926",swArr:"\\u21D9",swarr:"\\u2199",swarrow:"\\u2199",swnwar:"\\u292A",szlig:"\\xDF",Tab:" ",target:"\\u2316",Tau:"\\u03A4",tau:"\\u03C4",tbrk:"\\u23B4",Tcaron:"\\u0164",tcaron:"\\u0165",Tcedil:"\\u0162",tcedil:"\\u0163",Tcy:"\\u0422",tcy:"\\u0442",tdot:"\\u20DB",telrec:"\\u2315",Tfr:"\\u{1D517}",tfr:"\\u{1D531}",there4:"\\u2234",Therefore:"\\u2234",therefore:"\\u2234",Theta:"\\u0398",theta:"\\u03B8",thetasym:"\\u03D1",thetav:"\\u03D1",thickapprox:"\\u2248",thicksim:"\\u223C",ThickSpace:"\\u205F\\u200A",thinsp:"\\u2009",ThinSpace:"\\u2009",thkap:"\\u2248",thksim:"\\u223C",THORN:"\\xDE",thorn:"\\xFE",Tilde:"\\u223C",tilde:"\\u02DC",TildeEqual:"\\u2243",TildeFullEqual:"\\u2245",TildeTilde:"\\u2248",times:"\\xD7",timesb:"\\u22A0",timesbar:"\\u2A31",timesd:"\\u2A30",tint:"\\u222D",toea:"\\u2928",top:"\\u22A4",topbot:"\\u2336",topcir:"\\u2AF1",Topf:"\\u{1D54B}",topf:"\\u{1D565}",topfork:"\\u2ADA",tosa:"\\u2929",tprime:"\\u2034",TRADE:"\\u2122",trade:"\\u2122",triangle:"\\u25B5",triangledown:"\\u25BF",triangleleft:"\\u25C3",trianglelefteq:"\\u22B4",triangleq:"\\u225C",triangleright:"\\u25B9",trianglerighteq:"\\u22B5",tridot:"\\u25EC",trie:"\\u225C",triminus:"\\u2A3A",TripleDot:"\\u20DB",triplus:"\\u2A39",trisb:"\\u29CD",tritime:"\\u2A3B",trpezium:"\\u23E2",Tscr:"\\u{1D4AF}",tscr:"\\u{1D4C9}",TScy:"\\u0426",tscy:"\\u0446",TSHcy:"\\u040B",tshcy:"\\u045B",Tstrok:"\\u0166",tstrok:"\\u0167",twixt:"\\u226C",twoheadleftarrow:"\\u219E",twoheadrightarrow:"\\u21A0",Uacute:"\\xDA",uacute:"\\xFA",Uarr:"\\u219F",uArr:"\\u21D1",uarr:"\\u2191",Uarrocir:"\\u2949",Ubrcy:"\\u040E",ubrcy:"\\u045E",Ubreve:"\\u016C",ubreve:"\\u016D",Ucirc:"\\xDB",ucirc:"\\xFB",Ucy:"\\u0423",ucy:"\\u0443",udarr:"\\u21C5",Udblac:"\\u0170",udblac:"\\u0171",udhar:"\\u296E",ufisht:"\\u297E",Ufr:"\\u{1D518}",ufr:"\\u{1D532}",Ugrave:"\\xD9",ugrave:"\\xF9",uHar:"\\u2963",uharl:"\\u21BF",uharr:"\\u21BE",uhblk:"\\u2580",ulcorn:"\\u231C",ulcorner:"\\u231C",ulcrop:"\\u230F",ultri:"\\u25F8",Umacr:"\\u016A",umacr:"\\u016B",uml:"\\xA8",UnderBar:"_",UnderBrace:"\\u23DF",UnderBracket:"\\u23B5",UnderParenthesis:"\\u23DD",Union:"\\u22C3",UnionPlus:"\\u228E",Uogon:"\\u0172",uogon:"\\u0173",Uopf:"\\u{1D54C}",uopf:"\\u{1D566}",UpArrow:"\\u2191",Uparrow:"\\u21D1",uparrow:"\\u2191",UpArrowBar:"\\u2912",UpArrowDownArrow:"\\u21C5",UpDownArrow:"\\u2195",Updownarrow:"\\u21D5",updownarrow:"\\u2195",UpEquilibrium:"\\u296E",upharpoonleft:"\\u21BF",upharpoonright:"\\u21BE",uplus:"\\u228E",UpperLeftArrow:"\\u2196",UpperRightArrow:"\\u2197",Upsi:"\\u03D2",upsi:"\\u03C5",upsih:"\\u03D2",Upsilon:"\\u03A5",upsilon:"\\u03C5",UpTee:"\\u22A5",UpTeeArrow:"\\u21A5",upuparrows:"\\u21C8",urcorn:"\\u231D",urcorner:"\\u231D",urcrop:"\\u230E",Uring:"\\u016E",uring:"\\u016F",urtri:"\\u25F9",Uscr:"\\u{1D4B0}",uscr:"\\u{1D4CA}",utdot:"\\u22F0",Utilde:"\\u0168",utilde:"\\u0169",utri:"\\u25B5",utrif:"\\u25B4",uuarr:"\\u21C8",Uuml:"\\xDC",uuml:"\\xFC",uwangle:"\\u29A7",vangrt:"\\u299C",varepsilon:"\\u03F5",varkappa:"\\u03F0",varnothing:"\\u2205",varphi:"\\u03D5",varpi:"\\u03D6",varpropto:"\\u221D",vArr:"\\u21D5",varr:"\\u2195",varrho:"\\u03F1",varsigma:"\\u03C2",varsubsetneq:"\\u228A\\uFE00",varsubsetneqq:"\\u2ACB\\uFE00",varsupsetneq:"\\u228B\\uFE00",varsupsetneqq:"\\u2ACC\\uFE00",vartheta:"\\u03D1",vartriangleleft:"\\u22B2",vartriangleright:"\\u22B3",Vbar:"\\u2AEB",vBar:"\\u2AE8",vBarv:"\\u2AE9",Vcy:"\\u0412",vcy:"\\u0432",VDash:"\\u22AB",Vdash:"\\u22A9",vDash:"\\u22A8",vdash:"\\u22A2",Vdashl:"\\u2AE6",Vee:"\\u22C1",vee:"\\u2228",veebar:"\\u22BB",veeeq:"\\u225A",vellip:"\\u22EE",Verbar:"\\u2016",verbar:"|",Vert:"\\u2016",vert:"|",VerticalBar:"\\u2223",VerticalLine:"|",VerticalSeparator:"\\u2758",VerticalTilde:"\\u2240",VeryThinSpace:"\\u200A",Vfr:"\\u{1D519}",vfr:"\\u{1D533}",vltri:"\\u22B2",vnsub:"\\u2282\\u20D2",vnsup:"\\u2283\\u20D2",Vopf:"\\u{1D54D}",vopf:"\\u{1D567}",vprop:"\\u221D",vrtri:"\\u22B3",Vscr:"\\u{1D4B1}",vscr:"\\u{1D4CB}",vsubnE:"\\u2ACB\\uFE00",vsubne:"\\u228A\\uFE00",vsupnE:"\\u2ACC\\uFE00",vsupne:"\\u228B\\uFE00",Vvdash:"\\u22AA",vzigzag:"\\u299A",Wcirc:"\\u0174",wcirc:"\\u0175",wedbar:"\\u2A5F",Wedge:"\\u22C0",wedge:"\\u2227",wedgeq:"\\u2259",weierp:"\\u2118",Wfr:"\\u{1D51A}",wfr:"\\u{1D534}",Wopf:"\\u{1D54E}",wopf:"\\u{1D568}",wp:"\\u2118",wr:"\\u2240",wreath:"\\u2240",Wscr:"\\u{1D4B2}",wscr:"\\u{1D4CC}",xcap:"\\u22C2",xcirc:"\\u25EF",xcup:"\\u22C3",xdtri:"\\u25BD",Xfr:"\\u{1D51B}",xfr:"\\u{1D535}",xhArr:"\\u27FA",xharr:"\\u27F7",Xi:"\\u039E",xi:"\\u03BE",xlArr:"\\u27F8",xlarr:"\\u27F5",xmap:"\\u27FC",xnis:"\\u22FB",xodot:"\\u2A00",Xopf:"\\u{1D54F}",xopf:"\\u{1D569}",xoplus:"\\u2A01",xotime:"\\u2A02",xrArr:"\\u27F9",xrarr:"\\u27F6",Xscr:"\\u{1D4B3}",xscr:"\\u{1D4CD}",xsqcup:"\\u2A06",xuplus:"\\u2A04",xutri:"\\u25B3",xvee:"\\u22C1",xwedge:"\\u22C0",Yacute:"\\xDD",yacute:"\\xFD",YAcy:"\\u042F",yacy:"\\u044F",Ycirc:"\\u0176",ycirc:"\\u0177",Ycy:"\\u042B",ycy:"\\u044B",yen:"\\xA5",Yfr:"\\u{1D51C}",yfr:"\\u{1D536}",YIcy:"\\u0407",yicy:"\\u0457",Yopf:"\\u{1D550}",yopf:"\\u{1D56A}",Yscr:"\\u{1D4B4}",yscr:"\\u{1D4CE}",YUcy:"\\u042E",yucy:"\\u044E",Yuml:"\\u0178",yuml:"\\xFF",Zacute:"\\u0179",zacute:"\\u017A",Zcaron:"\\u017D",zcaron:"\\u017E",Zcy:"\\u0417",zcy:"\\u0437",Zdot:"\\u017B",zdot:"\\u017C",zeetrf:"\\u2128",ZeroWidthSpace:"\\u200B",Zeta:"\\u0396",zeta:"\\u03B6",Zfr:"\\u2128",zfr:"\\u{1D537}",ZHcy:"\\u0416",zhcy:"\\u0436",zigrarr:"\\u21DD",Zopf:"\\u2124",zopf:"\\u{1D56B}",Zscr:"\\u{1D4B5}",zscr:"\\u{1D4CF}",zwj:"\\u200D",zwnj:"\\u200C"});$r.entityMap=$r.HTML_ENTITIES});var bc=St(is=>{"use strict";var Fi=ii(),z=al(),fc=kr(),by=Fi.isHTMLEscapableRawTextElement,vy=Fi.isHTMLMimeType,wy=Fi.isHTMLRawTextElement,Wr=Fi.hasOwn,ac=Fi.NAMESPACE,uc=fc.ParseError,Ay=fc.DOMException,Vr=0,Ft=1,Li=2,qr=3,_i=4,Ii=5,Ur=6,ts=7;function dc(){}dc.prototype={parse:function(i,e,t){var r=this.domBuilder;r.startDocument(),pc(e,e=Object.create(null)),Cy(i,e,t,r,this.errorHandler),r.endDocument()}};var gl=/&#?\\w+;?/g;function Cy(i,e,t,r,n){var s=vy(r.mimeType);if(i.indexOf(z.UNICODE_REPLACEMENT_CHARACTER)>=0)return n.fatalError("Unicode replacement character detected, source encoding issues?");function o(k){if(k>65535){k-=65536;var K=55296+(k>>10),ue=56320+(k&1023);return String.fromCharCode(K,ue)}else return String.fromCharCode(k)}function l(k){var K=k[k.length-1]===";"?k:k+";";if(!s&&K!==k)return n.error("EntityRef: expecting ;"),k;var ue=z.Reference.exec(K);if(!ue||ue[0].length!==K.length)return n.error("entity not matching Reference production: "+k),k;var pe=K.slice(1,-1);return Wr(t,pe)?t[pe]:pe.charAt(0)==="#"?o(parseInt(pe.substr(1).replace("x","0x"))):(n.error("entity not found:"+k),k)}function a(k){if(k>y){var K=i.substring(y,k).replace(gl,l);d&&u(y),r.characters(K,0,k-y),y=k}}function u(k,K){for(;k>=c&&(K=f.exec(i));)h=K.index,c=h+K[0].length,d.lineNumber++;d.columnNumber=k-h+1}for(var h=0,c=0,f=/.*(?:\\r\\n?|\\n)|.*$/g,d=r.locator,p=[{currentNSMap:e}],g=[],y=0;;){try{var b=i.indexOf("<",y);if(b<0){if(!s&&g.length>0)return n.fatalError("unclosed xml tag(s): "+g.join(", "));if(!i.substring(y).match(/^\\s*$/)){var A=r.doc,w=A.createTextNode(i.substr(y));if(A.documentElement)return n.error("Extra content at the end of the document");A.appendChild(w),r.currentElement=w}return}if(b>y){var E=i.substring(y,b);!s&&g.length===0&&(E=E.replace(new RegExp(z.S_OPT.source,"g"),""),E&&n.error("Unexpected content outside root element: \'"+E+"\'")),a(b)}switch(i.charAt(b+1)){case"/":var I=i.indexOf(">",b+2),S=i.substring(b+2,I>0?I:void 0);if(!S)return n.fatalError("end tag name missing");var N=I>0&&z.reg("^",z.QName_group,z.S_OPT,"$").exec(S);if(!N)return n.fatalError(\'end tag name contains invalid characters: "\'+S+\'"\');if(!r.currentElement&&!r.doc.documentElement)return;var M=g[g.length-1]||r.currentElement.tagName||r.doc.documentElement.tagName||"";if(M!==N[1]){var j=N[1].toLowerCase();if(!s||M.toLowerCase()!==j)return n.fatalError(\'Opening and ending tag mismatch: "\'+M+\'" != "\'+S+\'"\')}var D=p.pop();g.pop();var H=D.localNSMap;if(r.endElement(D.uri,D.localName,M),H)for(var B in H)Wr(H,B)&&r.endPrefixMapping(B);I++;break;case"?":d&&u(b),I=xy(i,b,r,n);break;case"!":d&&u(b),I=mc(i,b,r,n,s);break;default:d&&u(b);var O=new yc,W=p[p.length-1].currentNSMap,I=Sy(i,b,O,W,l,n,s),te=O.length;if(O.closed||(s&&Fi.isHTMLVoidElement(O.tagName)?O.closed=!0:g.push(O.tagName)),d&&te){for(var Ce=hc(d,{}),F=0;Fy?y=I:a(Math.max(b,y)+1)}}function hc(i,e){return e.lineNumber=i.lineNumber,e.columnNumber=i.columnNumber,e}function Sy(i,e,t,r,n,s,o){function l(d,p,g){if(Wr(t.attributeNames,d))return s.fatalError("Attribute "+d+" redefined");if(!o&&p.indexOf("<")>=0)return s.fatalError("Unescaped \'<\' not allowed in attributes values");t.addValue(d,p.replace(/[\\t\\n\\r]/g," ").replace(gl,n),g)}for(var a,u,h=++e,c=Vr;;){var f=i.charAt(h);switch(f){case"=":if(c===Ft)a=i.slice(e,h),c=qr;else if(c===Li)c=qr;else throw new Error("attribute equal must after attrName");break;case"\'":case\'"\':if(c===qr||c===Ft)if(c===Ft&&(s.warning(\'attribute value must after "="\'),a=i.slice(e,h)),e=h+1,h=i.indexOf(f,e),h>0)u=i.slice(e,h),l(a,u,e-1),c=Ii;else throw new Error("attribute value no end \'"+f+"\' match");else if(c==_i)u=i.slice(e,h),l(a,u,e),s.warning(\'attribute "\'+a+\'" missed start quot(\'+f+")!!"),e=h+1,c=Ii;else throw new Error(\'attribute value must after "="\');break;case"/":switch(c){case Vr:t.setTagName(i.slice(e,h));case Ii:case Ur:case ts:c=ts,t.closed=!0;case _i:case Ft:break;case Li:t.closed=!0;break;default:throw new Error("attribute invalid close char(\'/\')")}break;case"":return s.error("unexpected end of input"),c==Vr&&t.setTagName(i.slice(e,h)),h;case">":switch(c){case Vr:t.setTagName(i.slice(e,h));case Ii:case Ur:case ts:break;case _i:case Ft:u=i.slice(e,h),u.slice(-1)==="/"&&(t.closed=!0,u=u.slice(0,-1));case Li:c===Li&&(u=a),c==_i?(s.warning(\'attribute "\'+u+\'" missed quot(")!\'),l(a,u,e)):(o||s.warning(\'attribute "\'+u+\'" missed value!! "\'+u+\'" instead!!\'),l(u,u,e));break;case qr:if(!o)return s.fatalError(`AttValue: \' or " expected`)}return h;case"\\x80":f=" ";default:if(f<=" ")switch(c){case Vr:t.setTagName(i.slice(e,h)),c=Ur;break;case Ft:a=i.slice(e,h),c=Li;break;case _i:var u=i.slice(e,h);s.warning(\'attribute "\'+u+\'" missed quot(")!!\'),l(a,u,e);case Ii:c=Ur;break}else switch(c){case Li:o||s.warning(\'attribute "\'+a+\'" missed value!! "\'+a+\'" instead2!!\'),l(a,a,e),e=h,c=Ft;break;case Ii:s.warning(\'attribute space is required"\'+a+\'"!!\');case Ur:c=Ft,e=h;break;case qr:c=_i,e=h;break;case ts:throw new Error("elements closed character \'/\' and \'>\' must be connected to")}}h++}}function cc(i,e,t){for(var r=i.tagName,n=null,c=i.length;c--;){var s=i[c],o=s.qName,l=s.value,f=o.indexOf(":");if(f>0)var a=s.prefix=o.slice(0,f),u=o.slice(f+1),h=a==="xmlns"&&u;else u=o,a=null,h=o==="xmlns"&&"";s.localName=u,h!==!1&&(n==null&&(n=Object.create(null),pc(t,t=Object.create(null))),t[h]=n[h]=l,s.uri=ac.XMLNS,e.startPrefixMapping(h,l))}for(var c=i.length;c--;)s=i[c],s.prefix&&(s.prefix==="xml"&&(s.uri=ac.XML),s.prefix!=="xmlns"&&(s.uri=t[s.prefix]));var f=r.indexOf(":");f>0?(a=i.prefix=r.slice(0,f),u=i.localName=r.slice(f+1)):(a=null,u=i.localName=r);var d=i.uri=t[a||""];if(e.startElement(d,u,r,i),i.closed){if(e.endElement(d,u,r),n)for(a in n)Wr(n,a)&&e.endPrefixMapping(a)}else return i.currentNSMap=t,i.localNSMap=n,!0}function Dy(i,e,t,r,n){var s=by(t);if(s||wy(t)){var o=i.indexOf("",e),l=i.substring(e+1,o);return s&&(l=l.replace(gl,r)),n.characters(l,0,l.length),o}return e+1}function pc(i,e){for(var t in i)Wr(i,t)&&(e[t]=i[t])}function gc(i,e){var t=e;function r(u){return u=u||0,i.charAt(t+u)}function n(u){u=u||1,t+=u}function s(){for(var u=0;t"?r.fatalError("doctype not terminated with > at position "+s.getIndex()):(s.skip(1),t.startDTD(a.name,a.publicId,a.systemId,a.internalSubset),t.endDTD(),s.getIndex())}default:return r.fatalError(\'Not well-formed XML starting with "0)return r.fatalError("processing instruction at position "+e+" is an xml declaration which is only at the start of the document");if(!z.XMLDecl.test(i.substring(e)))return r.fatalError("xml declaration is not well-formed")}return t.processingInstruction(n[1],n[2]),e+n[0].length}function yc(){this.attributeNames=Object.create(null)}yc.prototype={setTagName:function(i){if(!z.QName_exact.test(i))throw new Error("invalid tagName:"+i);this.tagName=i},addValue:function(i,e,t){if(!z.QName_exact.test(i))throw new Error("invalid attribute:"+i);this.attributeNames[i]=this.length,this[this.length++]={qName:i,value:e,offset:t}},length:0,getLocalName:function(i){return this[i].localName},getLocator:function(i){return this[i].locator},getQName:function(i){return this[i].qName},getURI:function(i){return this[i].uri},getValue:function(i){return this[i].value}};is.XMLReader=dc;is.parseUtils=gc;is.parseDoctypeCommentOrCData=mc});var Ec=St($i=>{"use strict";var li=ii(),Ty=pl(),ky=kr(),vc=lc(),My=bc(),Ry=Ty.DOMImplementation,Ny=li.hasDefaultHTMLNamespace,Oy=li.isHTMLMimeType,By=li.isValidMimeType,Cc=li.MIME_TYPE,ml=li.NAMESPACE,wc=ky.ParseError,Py=My.XMLReader;function Sc(i){return i.replace(/\\r[\\n\\u0085]/g,`\n`).replace(/[\\r\\u0085\\u2028]/g,`\n`)}function Dc(i){if(i=i||{locator:!0},this.assign=i.assign||li.assign,this.domHandler=i.domHandler||ns,this.onError=i.onError||i.errorHandler,i.errorHandler&&typeof i.errorHandler!="function")throw new TypeError("errorHandler object is no longer supported, switch to onError!");i.errorHandler&&i.errorHandler("warning","The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=i.normalizeLineEndings||Sc,this.locator=!!i.locator,this.xmlns=this.assign(Object.create(null),i.xmlns)}Dc.prototype.parseFromString=function(i,e){if(!By(e))throw new TypeError(\'DOMParser.parseFromString: the provided mimeType "\'+e+\'" is not valid.\');var t=this.assign(Object.create(null),this.xmlns),r=vc.XML_ENTITIES,n=t[""]||null;Ny(e)?(r=vc.HTML_ENTITIES,n=ml.HTML):e===Cc.XML_SVG_IMAGE&&(n=ml.SVG),t[""]=n,t.xml=t.xml||ml.XML;var s=new this.domHandler({mimeType:e,defaultNamespace:n,onError:this.onError}),o=this.locator?{}:void 0;this.locator&&s.setDocumentLocator(o);var l=new Py;l.errorHandler=s,l.domBuilder=s;var a=!li.isHTMLMimeType(e);return a&&typeof i!="string"&&l.errorHandler.fatalError("source is not a string"),l.parse(this.normalizeLineEndings(String(i)),t,r),s.doc.documentElement||l.errorHandler.fatalError("missing root element"),s.doc};function ns(i){var e=i||{};this.mimeType=e.mimeType||Cc.XML_APPLICATION,this.defaultNamespace=e.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=e.onError}function Hi(i,e){e.lineNumber=i.lineNumber,e.columnNumber=i.columnNumber}ns.prototype={startDocument:function(){var i=new Ry;this.doc=Oy(this.mimeType)?i.createHTMLDocument(!1):i.createDocument(this.defaultNamespace,"")},startElement:function(i,e,t,r){var n=this.doc,s=n.createElementNS(i,t||e),o=r.length;rs(this,s),this.currentElement=s,this.locator&&Hi(this.locator,s);for(var l=0;l=e+t||e?new java.lang.String(i,e,t)+"":i}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\\w+/g,function(i){ns.prototype[i]=function(){return null}});function rs(i,e){i.currentElement?i.currentElement.appendChild(e):i.doc.appendChild(e)}function _y(i){if(i==="error")throw"onErrorStopParsing"}function Iy(){throw"onWarningStopParsing"}$i.__DOMHandler=ns;$i.DOMParser=Dc;$i.normalizeLineEndings=Sc;$i.onErrorStopParsing=_y;$i.onWarningStopParsing=Iy});var xc=St(G=>{"use strict";var Vi=ii();G.assign=Vi.assign;G.hasDefaultHTMLNamespace=Vi.hasDefaultHTMLNamespace;G.isHTMLMimeType=Vi.isHTMLMimeType;G.isValidMimeType=Vi.isValidMimeType;G.MIME_TYPE=Vi.MIME_TYPE;G.NAMESPACE=Vi.NAMESPACE;var ss=kr();G.DOMException=ss.DOMException;G.DOMExceptionName=ss.DOMExceptionName;G.ExceptionCode=ss.ExceptionCode;G.ParseError=ss.ParseError;var de=pl();G.Attr=de.Attr;G.CDATASection=de.CDATASection;G.CharacterData=de.CharacterData;G.Comment=de.Comment;G.Document=de.Document;G.DocumentFragment=de.DocumentFragment;G.DocumentType=de.DocumentType;G.DOMImplementation=de.DOMImplementation;G.Element=de.Element;G.Entity=de.Entity;G.EntityReference=de.EntityReference;G.LiveNodeList=de.LiveNodeList;G.NamedNodeMap=de.NamedNodeMap;G.Node=de.Node;G.NodeList=de.NodeList;G.Notation=de.Notation;G.ProcessingInstruction=de.ProcessingInstruction;G.Text=de.Text;G.XMLSerializer=de.XMLSerializer;var yl=Ec();G.DOMParser=yl.DOMParser;G.onErrorStopParsing=yl.onErrorStopParsing;G.onWarningStopParsing=yl.onWarningStopParsing});var Y=class i{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,r){[e,t]=pi(this,e,t);let n=[];return this.decompose(0,e,n,2),r.length&&r.decompose(0,r.length,n,3),this.decompose(t,this.length,n,1),hi.from(n,this.length-(t-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=pi(this,e,t);let r=[];return this.decompose(e,t,r,0),hi.from(r,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),n=new qt(this),s=new qt(e);for(let o=t,l=t;;){if(n.next(o),s.next(o),o=0,n.lineBreak!=s.lineBreak||n.done!=s.done||n.value!=s.value)return!1;if(l+=n.value.length,n.done||l>=r)return!0}}iter(e=1){return new qt(this,e)}iterRange(e,t=this.length){return new Xr(this,e,t)}iterLines(e,t){let r;if(e==null)r=this.iter();else{t==null&&(t=this.lines+1);let n=this.line(e).from;r=this.iterRange(n,Math.max(n,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Jr(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?i.empty:e.length<=32?new Le(e):hi.from(Le.split(e,[]))}},Le=class i extends Y{constructor(e,t=Kc(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,r,n){for(let s=0;;s++){let o=this.text[s],l=n+o.length;if((t?r:l)>=e)return new fs(n,l,r,o);n=l+1,r++}}decompose(e,t,r,n){let s=e<=0&&t>=this.length?this:new i(Fl(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(n&1){let o=r.pop(),l=Kr(s.text,o.text.slice(),0,s.length);if(l.length<=32)r.push(new i(l,o.length+s.length));else{let a=l.length>>1;r.push(new i(l.slice(0,a)),new i(l.slice(a)))}}else r.push(s)}replace(e,t,r){if(!(r instanceof i))return super.replace(e,t,r);[e,t]=pi(this,e,t);let n=Kr(this.text,Kr(r.text,Fl(this.text,0,e)),t),s=this.length+r.length-(t-e);return n.length<=32?new i(n,s):hi.from(i.split(n,[]),s)}sliceString(e,t=this.length,r=`\n`){[e,t]=pi(this,e,t);let n="";for(let s=0,o=0;s<=t&&oe&&o&&(n+=r),es&&(n+=l.slice(Math.max(0,e-s),t-s)),s=a+1}return n}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],n=-1;for(let s of e)r.push(s),n+=s.length+1,r.length==32&&(t.push(new i(r,n)),r=[],n=-1);return n>-1&&t.push(new i(r,n)),t}},hi=class i extends Y{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,n){for(let s=0;;s++){let o=this.children[s],l=n+o.length,a=r+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,r,n);n=l+1,r=a+1}}decompose(e,t,r,n){for(let s=0,o=0;o<=t&&s=o){let u=n&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!u?r.push(l):l.decompose(e-o,t-o,r,u)}o=a+1}}replace(e,t,r){if([e,t]=pi(this,e,t),r.lines=s&&t<=l){let a=o.replace(e-s,t-s,r),u=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>u>>6){let h=this.children.slice();return h[n]=a,new i(h,this.length-(t-e)+r.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`\n`){[e,t]=pi(this,e,t);let n="";for(let s=0,o=0;se&&s&&(n+=r),eo&&(n+=l.sliceString(e-o,t-o,r)),o=a+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof i))return 0;let r=0,[n,s,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,s+=t){if(n==o||s==l)return r;let a=this.children[n],u=e.children[s];if(a!=u)return r+a.scanIdentical(u,t);r+=a.length+1}}static from(e,t=e.reduce((r,n)=>r+n.length+1,-1)){let r=0;for(let d of e)r+=d.lines;if(r<32){let d=[];for(let p of e)p.flatten(d);return new Le(d,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,l=[],a=0,u=-1,h=[];function c(d){let p;if(d.lines>s&&d instanceof i)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(f(),l.push(d)):d instanceof Le&&a&&(p=h[h.length-1])instanceof Le&&d.lines+p.lines<=32?(a+=d.lines,u+=d.length+1,h[h.length-1]=new Le(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>n&&f(),a+=d.lines,u+=d.length+1,h.push(d))}function f(){a!=0&&(l.push(h.length==1?h[0]:i.from(h,u)),u=-1,a=h.length=0)}for(let d of e)c(d);return f(),l.length==1?l[0]:new i(l,t)}};Y.empty=new Le([""],0);function Kc(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Kr(i,e,t=0,r=1e9){for(let n=0,s=0,o=!0;s=t&&(a>r&&(l=l.slice(0,r-n)),n0?1:(e instanceof Le?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,n=this.nodes[r],s=this.offsets[r],o=s>>1,l=n instanceof Le?n.text.length:n.children.length;if(o==(t>0?l:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`\n`,this;e--}else if(n instanceof Le){let a=n.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=n.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof Le?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Xr=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new qt(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Jr=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(Y.prototype[Symbol.iterator]=function(){return this.iter()},qt.prototype[Symbol.iterator]=Xr.prototype[Symbol.iterator]=Jr.prototype[Symbol.iterator]=function(){return this});var fs=class{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}};function pi(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}var ci="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(i=>i?parseInt(i,36):1);for(let i=1;ii)return ci[e-1]<=i;return!1}function Hl(i){return i>=127462&&i<=127487}var $l=8205;function Ze(i,e,t=!0,r=!0){return(t?jl:Xc)(i,e,r)}function jl(i,e,t){if(e==i.length)return e;e&&Gl(i.charCodeAt(e))&&Kl(i.charCodeAt(e-1))&&e--;let r=Yr(i,e);for(e+=ds(r);e=0&&Hl(Yr(i,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function Xc(i,e,t){for(;e>0;){let r=jl(i,e-2,t);if(r=56320&&i<57344}function Kl(i){return i>=55296&&i<56320}function Yr(i,e){let t=i.charCodeAt(e);if(!Kl(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return Gl(r)?(t-55296<<10)+(r-56320)+65536:t}function ds(i){return i<65536?1:2}var ps=/\\r\\n?|\\n/,Me=function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i}(Me||(Me={})),Ut=class i{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-n);s+=l}else{if(r!=Me.Simple&&u>=e&&(r==Me.TrackDel&&ne||r==Me.TrackBefore&&ne))return null;if(u>e||u==e&&t<0&&!l)return e==n||t<0?s:s+a;s+=a}n=u}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return s}touchesRange(e,t=e){for(let r=0,n=0;r=0&&n<=t&&l>=e)return nt?"cover":!0;n=l}return!1}toString(){let e="";for(let t=0;t=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new i(e)}static create(e){return new i(e)}},_e=class i extends Ut{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return gs(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return ms(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let n=0,s=0;n=0){t[n]=l,t[n+1]=o;let a=n>>1;for(;r.length0&&Dt(r,t,s.text),s.forward(h),l+=h}let u=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,r){let n=[],s=[],o=0,l=null;function a(h=!1){if(!h&&!n.length)return;of||c<0||f>t)throw new RangeError(`Invalid change range ${c} to ${f} (in doc of length ${t})`);let p=d?typeof d=="string"?Y.of(d.split(r||ps)):d:Y.empty,g=p.length;if(c==f&&g==0)return;co&&De(n,c-o,-1),De(n,f-c,g),Dt(s,n,p),o=f}}return u(e),a(!l),l}static empty(e){return new i(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],r=[];for(let n=0;nl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;r.length=0&&t<=0&&t==i[n+1]?i[n]+=e:e==0&&i[n]==0?i[n+1]+=t:r?(i[n]+=e,i[n+1]+=t):i.push(e,t)}function Dt(i,e,t){if(t.length==0)return;let r=e.length-2>>1;if(r>1])),!(t||o==i.sections.length||i.sections[o+1]<0);)l=i.sections[o++],a=i.sections[o++];e(n,u,s,h,c),n=u,s=h}}}function ms(i,e,t,r=!1){let n=[],s=r?[]:null,o=new Wt(i),l=new Wt(e);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let u=Math.min(o.len,l.len);De(n,u,-1),o.forward(u),l.forward(u)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let u=0,h=o.len;for(;h;)if(l.ins==-1){let c=Math.min(h,l.len);u+=c,h-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||r.length>u),s.forward2(a),o.forward(a)}}}}var Wt=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?Y.empty:e[t]}textBit(e){let{inserted:t}=this.set,r=this.i-2>>1;return r>=t.length&&!e?Y.empty:t[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},ui=class i{constructor(e,t,r){this.from=e,this.to=t,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let r,n;return this.empty?r=n=e.mapPos(this.from,t):(r=e.mapPos(this.from,1),n=e.mapPos(this.to,-1)),r==this.from&&n==this.to?this:new i(r,n,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return P.range(e,t);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return P.range(this.anchor,r)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return P.range(e.anchor,e.head)}static create(e,t,r){return new i(e,t,r)}},P=class i{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:i.create(this.ranges.map(r=>r.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new i(e.ranges.map(t=>ui.fromJSON(t)),e.main)}static single(e,t=e){return new i([i.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,n=0;ne?8:0)|s)}static normalized(e,t=0){let r=e[t];e.sort((n,s)=>n.from-s.from),t=e.indexOf(r);for(let n=1;ns.head?i.range(a,l):i.range(l,a))}}return new i(e,t)}};function Xl(i,e){for(let t of i.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var xs=0,$=class i{constructor(e,t,r,n,s){this.combine=e,this.compareInput=t,this.compare=r,this.isStatic=n,this.id=xs++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new i(e.combine||(t=>t),e.compareInput||((t,r)=>t===r),e.compare||(e.combine?(t,r)=>t===r:Ts),!!e.static,e.enables)}of(e){return new fi([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can\'t compute a static facet");return new fi(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can\'t compute a static facet");return new fi(e,this,2,t)}from(e,t){return t||(t=r=>r),this.compute([e],r=>t(r.field(e)))}};function Ts(i,e){return i==e||i.length==e.length&&i.every((t,r)=>t===e[r])}var fi=class{constructor(e,t,r,n){this.dependencies=e,this.facet=t,this.type=r,this.value=n,this.id=xs++}dynamicSlot(e){var t;let r=this.value,n=this.facet.compareInput,s=this.id,o=e[s]>>1,l=this.type==2,a=!1,u=!1,h=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?u=!0:((t=e[c.id])!==null&&t!==void 0?t:1)&1||h.push(e[c.id]);return{create(c){return c.values[o]=r(c),1},update(c,f){if(a&&f.docChanged||u&&(f.docChanged||f.selection)||ys(c,h)){let d=r(c);if(l?!Vl(d,c.values[o],n):!n(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,f)=>{let d,p=f.config.address[s];if(p!=null){let g=tn(f,p);if(this.dependencies.every(y=>y instanceof $?f.facet(y)===c.facet(y):y instanceof gt?f.field(y,!1)==c.field(y,!1):!0)||(l?Vl(d=r(c),g,n):n(d=r(c),g)))return c.values[o]=g,0}else d=r(c);return c.values[o]=d,1}}}};function Vl(i,e,t){if(i.length!=e.length)return!1;for(let r=0;ri[a.id]),n=t.map(a=>a.type),s=r.filter(a=>!(a&1)),o=i[e.id]>>1;function l(a){let u=[];for(let h=0;hr===n),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(ql).find(r=>r.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:r=>(r.values[t]=this.create(r),1),update:(r,n)=>{let s=r.values[t],o=this.updateF(s,n);return this.compareF(s,o)?0:(r.values[t]=o,1)},reconfigure:(r,n)=>n.config.address[this.id]!=null?(r.values[t]=n.field(this),0):(r.values[t]=this.create(r),1)}}init(e){return[this,ql.of({field:this,create:e})]}get extension(){return this}},$t={lowest:4,low:3,default:2,high:1,highest:0};function zi(i){return e=>new Qr(e,i)}var nn={highest:zi($t.highest),high:zi($t.high),default:zi($t.default),low:zi($t.low),lowest:zi($t.lowest)},Qr=class{constructor(e,t){this.inner=e,this.prec=t}},Zr=class i{of(e){return new Gi(this,e)}reconfigure(e){return i.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Gi=class{constructor(e,t){this.compartment=e,this.inner=t}},en=class i{constructor(e,t,r,n,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=r,this.address=n,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,r){let n=[],s=Object.create(null),o=new Map;for(let f of Qc(e,t,o))f instanceof gt?n.push(f):(s[f.facet.id]||(s[f.facet.id]=[])).push(f);let l=Object.create(null),a=[],u=[];for(let f of n)l[f.id]=u.length<<1,u.push(d=>f.slot(d));let h=r==null?void 0:r.config.facets;for(let f in s){let d=s[f],p=d[0].facet,g=h&&h[f]||[];if(d.every(y=>y.type==0))if(l[p.id]=a.length<<1|1,Ts(g,d))a.push(r.facet(p));else{let y=p.combine(d.map(b=>b.value));a.push(r&&p.compare(y,r.facet(p))?r.facet(p):y)}else{for(let y of d)y.type==0?(l[y.id]=a.length<<1|1,a.push(y.value)):(l[y.id]=u.length<<1,u.push(b=>y.dynamicSlot(b)));l[p.id]=u.length<<1,u.push(y=>Jc(y,p,d))}}let c=u.map(f=>f(l));return new i(e,o,c,l,a,s)}};function Qc(i,e,t){let r=[[],[],[],[],[]],n=new Map;function s(o,l){let a=n.get(o);if(a!=null){if(a<=l)return;let u=r[a].indexOf(o);u>-1&&r[a].splice(u,1),o instanceof Gi&&t.delete(o.compartment)}if(n.set(o,l),Array.isArray(o))for(let u of o)s(u,l);else if(o instanceof Gi){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let u=e.get(o.compartment)||o.inner;t.set(o.compartment,u),s(u,l)}else if(o instanceof Qr)s(o.inner,o.prec);else if(o instanceof gt)r[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof fi)r[l].push(o),o.facet.extensions&&s(o.facet.extensions,$t.default);else{let u=o.extension;if(!u)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(u,l)}}return s(i,$t.default),r.reduce((o,l)=>o.concat(l))}function ji(i,e){if(e&1)return 2;let t=e>>1,r=i.status[t];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;i.status[t]=4;let n=i.computeSlot(i,i.config.dynamicSlots[t]);return i.status[t]=2|n}function tn(i,e){return e&1?i.config.staticValues[e>>1]:i.values[e>>1]}var Jl=$.define(),bs=$.define({combine:i=>i.some(e=>e),static:!0}),Ql=$.define({combine:i=>i.length?i[0]:void 0,static:!0}),Zl=$.define(),ea=$.define(),ta=$.define(),ia=$.define({combine:i=>i.length?i[0]:!1}),mt=class{constructor(e,t){this.type=e,this.value=t}static define(){return new vs}},vs=class{of(e){return new mt(this,e)}},ws=class{constructor(e){this.map=e}of(e){return new se(this,e)}},se=class i{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new i(this.type,t)}is(e){return this.type==e}static define(e={}){return new ws(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let r=[];for(let n of e){let s=n.map(t);s&&r.push(s)}return r}};se.reconfigure=se.define();se.appendConfig=se.define();var Re=class i{constructor(e,t,r,n,s,o){this.startState=e,this.changes=t,this.selection=r,this.effects=n,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,r&&Xl(r,t.newLength),s.some(l=>l.type==i.time)||(this.annotations=s.concat(i.time.of(Date.now())))}static create(e,t,r,n,s,o){return new i(e,t,r,n,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(i.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};Re.time=mt.define();Re.userEvent=mt.define();Re.addToHistory=mt.define();Re.remote=mt.define();function Zc(i,e){let t=[];for(let r=0,n=0;;){let s,o;if(r=i[r]))s=i[r++],o=i[r++];else if(n=0;n--){let s=r[n](i);s instanceof Re?i=s:Array.isArray(s)&&s.length==1&&s[0]instanceof Re?i=s[0]:i=na(e,di(s),!1)}return i}function tf(i){let e=i.startState,t=e.facet(ta),r=i;for(let n=t.length-1;n>=0;n--){let s=t[n](i);s&&Object.keys(s).length&&(r=ra(r,As(e,s,i.changes.newLength),!0))}return r==i?i:Re.create(e,i.changes,i.selection,r.effects,r.annotations,r.scrollIntoView)}var rf=[];function di(i){return i==null?rf:Array.isArray(i)?i:[i]}var Qe=function(i){return i[i.Word=0]="Word",i[i.Space=1]="Space",i[i.Other=2]="Other",i}(Qe||(Qe={})),nf=/[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/,Cs;try{Cs=new RegExp("[\\\\p{Alphabetic}\\\\p{Number}_]","u")}catch(i){}function sf(i){if(Cs)return Cs.test(i);for(let e=0;e"\\x80"&&(t.toUpperCase()!=t.toLowerCase()||nf.test(t)))return!0}return!1}function of(i){return e=>{if(!/\\S/.test(e))return Qe.Space;if(sf(e))return Qe.Word;for(let t=0;t-1)return Qe.Word;return Qe.Other}}var oe=class i{constructor(e,t,r,n,s,o){this.config=e,this.doc=t,this.selection=r,this.values=n,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let l=0;ln.set(u,a)),t=null),n.set(l.value.compartment,l.value.extension)):l.is(se.reconfigure)?(t=null,r=l.value):l.is(se.appendConfig)&&(t=null,r=di(r).concat(l.value));let s;t?s=e.startState.values.slice():(t=en.resolve(r,n,this),s=new i(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,u)=>u.reconfigure(a,this),null).values);let o=e.startState.facet(bs)?e.newSelection:e.newSelection.asSingle();new i(t,e.newDoc,o,s,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:P.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,r=e(t.ranges[0]),n=this.changes(r.changes),s=[r.range],o=di(r.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return i.create({doc:e.doc,selection:P.fromJSON(e.selection),extensions:t.extensions?n.concat([t.extensions]):n})}static create(e={}){let t=en.resolve(e.extensions||[],new Map),r=e.doc instanceof Y?e.doc:Y.of((e.doc||"").split(t.staticFacet(i.lineSeparator)||ps)),n=e.selection?e.selection instanceof P?e.selection:P.single(e.selection.anchor,e.selection.head):P.single(0);return Xl(n,r.length),t.staticFacet(bs)||(n=n.asSingle()),new i(t,r,n,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(i.tabSize)}get lineBreak(){return this.facet(i.lineSeparator)||`\n`}get readOnly(){return this.facet(ia)}phrase(e,...t){for(let r of this.facet(i.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\\$(\\$|\\d*)/g,(r,n)=>{if(n=="$")return"$";let s=+(n||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let n=[];for(let s of this.facet(Jl))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){return of(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:r,length:n}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,l=e-r;for(;o>0;){let a=Ze(t,o,!1);if(s(t.slice(a,o))!=Qe.Word)break;o=a}for(;li.length?i[0]:4});oe.lineSeparator=Ql;oe.readOnly=ia;oe.phrases=$.define({compare(i,e){let t=Object.keys(i),r=Object.keys(e);return t.length==r.length&&t.every(n=>i[n]==e[n])}});oe.languageData=Jl;oe.changeFilter=Zl;oe.transactionFilter=ea;oe.transactionExtender=ta;Zr.reconfigure=se.define();var yt=class{eq(e){return this==e}range(e,t=e){return Ki.create(e,t,this)}};yt.prototype.startSide=yt.prototype.endSide=0;yt.prototype.point=!1;yt.prototype.mapMode=Me.TrackDel;var Ki=class i{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new i(e,t,r)}};function Ss(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var Ds=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,l=s.length;;){if(o==l)return o;let a=o+l>>1,u=s[a]-e||(r?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return u>=0?o:l;u>=0?l=a:o=a+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);sd||f==d&&u.startSide>0&&u.endSide<=0)continue;(d-f||u.endSide-u.startSide)<0||(o<0&&(o=f),u.point&&(l=Math.max(l,d-f)),r.push(u),n.push(f-o),s.push(d-o))}return{mapped:r.length?new i(n,s,r,l):null,pos:o}}},he=class i{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new i(e,t,r,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(Ss)),this.isEmpty)return t.length?i.of(t):this;let l=new rn(this,null,-1).goto(0),a=0,u=[],h=new zt;for(;l.value||a=0){let c=t[a++];h.addInner(c.from,c.to,c.value)||u.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||sl.to||s=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return Yi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Yi.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=s),l=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=s),a=Ul(o,l,r),u=new Vt(o,a,s),h=new Vt(l,a,s);r.iterGaps((c,f,d)=>Wl(u,c,h,f,d,n)),r.empty&&r.length==0&&Wl(u,0,h,0,0,n)}static eq(e,t,r=0,n){n==null&&(n=999999999);let s=e.filter(h=>!h.isEmpty&&t.indexOf(h)<0),o=t.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let l=Ul(s,o),a=new Vt(s,l,0).goto(r),u=new Vt(o,l,0).goto(r);for(;;){if(a.to!=u.to||!Es(a.active,u.active)||a.point&&(!u.point||!a.point.eq(u.point)))return!1;if(a.to>n)return!0;a.next(),u.next()}}static spans(e,t,r,n,s=-1){let o=new Vt(e,null,s).goto(t),l=t,a=o.openStart;for(;;){let u=Math.min(o.to,r);if(o.point){let h=o.activeForPoint(o.to),c=o.pointFroml&&(n.span(l,u,o.active,a),a=o.openEnd(u));if(o.to>r)return a+(o.point&&o.to>r?1:0);l=o.to,o.next()}}static of(e,t=!1){let r=new zt;for(let n of e instanceof Ki?[e]:t?lf(e):e)r.add(n.from,n.to,n.value);return r.finish()}static join(e){if(!e.length)return i.empty;let t=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let n=e[r];n!=i.empty;n=n.nextLayer)t=new i(n.chunkPos,n.chunk,t,Math.max(n.maxPoint,t.maxPoint));return t}};he.empty=new he([],[],null,-1);function lf(i){if(i.length>1)for(let e=i[0],t=1;t0)return i.slice().sort(Ss);e=r}return i}he.empty.nextLayer=he.empty;var zt=class i{finishChunk(e){this.chunks.push(new Ds(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,r){this.addInner(e,t,r)||(this.nextLayer||(this.nextLayer=new i)).add(e,t,r)}addInner(e,t,r){let n=e-this.lastTo||r.startSide-this.last.endSide;if(n<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return n<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=t,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let r=t.value.length-1;return this.last=t.value[r],this.lastFrom=t.from[r]+e,this.lastTo=t.to[r]+e,!0}finish(){return this.finishInner(he.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=he.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Ul(i,e,t){let r=new Map;for(let s of i)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&n.push(new rn(o,t,r,s));return n.length==1?n[0]:new i(n)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let r of this.heap)r.goto(e,t);for(let r=this.heap.length>>1;r>=0;r--)cs(this.heap,r);return this.next(),this}forward(e,t){for(let r of this.heap)r.forward(e,t);for(let r=this.heap.length>>1;r>=0;r--)cs(this.heap,r);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),cs(this.heap,0)}}};function cs(i,e){for(let t=i[e];;){let r=(e<<1)+1;if(r>=i.length)break;let n=i[r];if(r+1=0&&(n=i[r+1],r++),t.compare(n)<0)break;i[r]=t,i[e]=n,e=r}}var Vt=class{constructor(e,t,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Yi.from(e,t,r)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){jr(this.active,e),jr(this.activeTo,e),jr(this.activeRank,e),this.minActive=zl(this.active,this.activeTo)}addActive(e){let t=0,{value:r,to:n,rank:s}=this.cursor;for(;t0;)t++;Gr(this.active,t,r),Gr(this.activeTo,t,n),Gr(this.activeRank,t,s),e&&Gr(e,t,this.cursor.from),this.minActive=zl(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let n=this.minActive;if(n>-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>e){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),r&&jr(r,n)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(r),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&r[n]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&t.push(this.active[r]);return t.reverse()}openEnd(e){let t=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)t++;return t}};function Wl(i,e,t,r,n,s){i.goto(e),t.goto(r);let o=r+n,l=r,a=r-e;for(;;){let u=i.to+a-t.to||i.endSide-t.endSide,h=u<0?i.to+a:t.to,c=Math.min(h,o);if(i.point||t.point?i.point&&t.point&&(i.point==t.point||i.point.eq(t.point))&&Es(i.activeForPoint(i.to),t.activeForPoint(t.to))||s.comparePoint(l,c,i.point,t.point):c>l&&!Es(i.active,t.active)&&s.compareRange(l,c,i.active,t.active),h>o)break;l=h,u<=0&&i.next(),u>=0&&t.next()}}function Es(i,e){if(i.length!=e.length)return!1;for(let t=0;t=e;r--)i[r+1]=i[r];i[e]=t}function zl(i,e){let t=-1,r=1e9;for(let n=0;n=e)return n;if(n==i.length)break;s+=i.charCodeAt(n)==9?t-s%t:1,n=Ze(i,n)}return r===!0?-1:i.length}var ks="\\u037C",oa=typeof Symbol=="undefined"?"__"+ks:Symbol.for(ks),Ms=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),la=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},He=class{constructor(e,t){this.rules=[];let{finish:r}=t||{};function n(o){return/^@/.test(o)?[o]:o.split(/,\\s*/)}function s(o,l,a,u){let h=[],c=/^@(\\w+)\\b/.exec(o[0]),f=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))s(d.split(/,\\s*/).map(g=>o.map(y=>g.replace(/&/,y))).reduce((g,y)=>g.concat(y)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");s(n(d),p,h,f)}else p!=null&&h.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(h.length||f)&&a.push((r&&!c&&!u?o.map(r):o).join(", ")+" {"+h.join(" ")+"}")}for(let o in e)s(n(o),e[o],this.rules)}getRules(){return this.rules.join(`\n`)}static newName(){let e=la[oa]||1;return la[oa]=e+1,ks+e.toString(36)}static mount(e,t,r){let n=e[Ms],s=r&&r.nonce;n?s&&n.setNonce(s):n=new Rs(e,s),n.mount(Array.isArray(t)?t:[t],e)}},aa=new Map,Rs=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=aa.get(r);if(s)return e[Ms]=s;this.sheet=new n.CSSStyleSheet,aa.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Ms]=this}mount(e,t){let r=this.sheet,n=0,s=0;for(let o=0;o-1&&(this.modules.splice(a,1),s--,a=-1),a==-1){if(this.modules.splice(s++,0,l),r)for(let u=0;u",191:"?",192:"~",219:"{",220:"|",221:"}",222:\'"\'},Db=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),Eb=typeof navigator!="undefined"&&/MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);for(ce=0;ce<10;ce++)jt[48+ce]=jt[96+ce]=String(ce);var ce;for(ce=1;ce<=24;ce++)jt[ce+111]="F"+ce;var ce;for(ce=65;ce<=90;ce++)jt[ce]=String.fromCharCode(ce+32),on[ce]=String.fromCharCode(ce);var ce;for(sn in jt)on.hasOwnProperty(sn)||(on[sn]=jt[sn]);var sn;function sr(i){let e;return i.nodeType==11?e=i.getSelection?i:i.ownerDocument:e=i,e.getSelection()}function Ls(i,e){return e?i==e||i.contains(e.nodeType!=1?e.parentNode:e):!1}function hf(i){let e=i.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function pn(i,e){if(!e.anchorNode)return!1;try{return Ls(i,e.anchorNode)}catch(t){return!1}}function or(i){return i.nodeType==3?Yt(i,0,i.nodeValue.length).getClientRects():i.nodeType==1?i.getClientRects():[]}function er(i,e,t,r){return t?ua(i,e,t,r,-1)||ua(i,e,t,r,1):!1}function Kt(i){for(var e=0;;e++)if(i=i.previousSibling,!i)return e}function yn(i){return i.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(i.nodeName)}function ua(i,e,t,r,n){for(;;){if(i==t&&e==r)return!0;if(e==(n<0?0:bt(i))){if(i.nodeName=="DIV")return!1;let s=i.parentNode;if(!s||s.nodeType!=1)return!1;e=Kt(i)+(n<0?0:1),i=s}else if(i.nodeType==1){if(i=i.childNodes[e+(n<0?-1:0)],i.nodeType==1&&i.contentEditable=="false")return!1;e=n<0?bt(i):0}else return!1}}function bt(i){return i.nodeType==3?i.nodeValue.length:i.childNodes.length}function kn(i,e){let t=e?i.left:i.right;return{left:t,right:t,top:i.top,bottom:i.bottom}}function cf(i){let e=i.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:i.innerWidth,top:0,bottom:i.innerHeight}}function $a(i,e){let t=e.width/i.offsetWidth,r=e.height/i.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-i.offsetWidth)<1)&&(t=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-i.offsetHeight)<1)&&(r=1),{scaleX:t,scaleY:r}}function ff(i,e,t,r,n,s,o,l){let a=i.ownerDocument,u=a.defaultView||window;for(let h=i,c=!1;h&&!c;)if(h.nodeType==1){let f,d=h==a.body,p=1,g=1;if(d)f=cf(u);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(c=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let A=h.getBoundingClientRect();({scaleX:p,scaleY:g}=$a(h,A)),f={left:A.left,right:A.left+h.clientWidth*p,top:A.top,bottom:A.top+h.clientHeight*g}}let y=0,b=0;if(n=="nearest")e.top0&&e.bottom>f.bottom+b&&(b=e.bottom-f.bottom+b+o)):e.bottom>f.bottom&&(b=e.bottom-f.bottom+o,t<0&&e.top-b0&&e.right>f.right+y&&(y=e.right-f.right+y+s)):e.right>f.right&&(y=e.right-f.right+s,t<0&&e.leftn.clientHeight&&(r=n),!t&&n.scrollWidth>n.clientWidth&&(t=n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;return{x:t,y:r}}var _s=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:r}=e;this.set(t,Math.min(e.anchorOffset,t?bt(t):0),r,Math.min(e.focusOffset,r?bt(r):0))}set(e,t,r,n){this.anchorNode=e,this.anchorOffset=t,this.focusNode=r,this.focusOffset=n}},gi=null;function Va(i){if(i.setActive)return i.setActive();if(gi)return i.focus(gi);let e=[];for(let t=i;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(i.focus(gi==null?{get preventScroll(){return gi={preventScroll:!0},!0}}:void 0),!gi){gi=!1;for(let t=0;tMath.max(1,i.scrollHeight-i.clientHeight-4)}function Wa(i,e){for(let t=i,r=e;;){if(t.nodeType==3&&r>0)return{node:t,offset:r};if(t.nodeType==1&&r>0){if(t.contentEditable=="false")return null;t=t.childNodes[r-1],r=bt(t)}else if(t.parentNode&&!yn(t))r=Kt(t),t=t.parentNode;else return null}}function za(i,e){for(let t=i,r=e;;){if(t.nodeType==3&&rt)return c.domBoundsAround(e,t,u);if(f>=e&&n==-1&&(n=a,s=u),u>t&&c.dom.parentNode==this.dom){o=a,l=h;break}h=f,u=f+c.breakAfter}return{from:s,to:l<0?r+this.length:l,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o=0?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,r=co){this.markDirty();for(let n=e;nthis.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}};function ja(i,e,t,r,n,s,o,l,a){let{children:u}=i,h=u.length?u[e]:null,c=s.length?s[s.length-1]:null,f=c?c.breakAfter:o;if(!(e==r&&h&&!o&&!f&&s.length<2&&h.merge(t,n,s.length?c:null,t==0,l,a))){if(r0&&(!o&&s.length&&h.merge(t,h.length,s[0],!1,l,0)?h.breakAfter=s.shift().breakAfter:(t2),R={mac:pa||/Mac/.test(Ne.platform),windows:/Win/.test(Ne.platform),linux:/Linux|X11/.test(Ne.platform),ie:Mn,ie_version:Ka?Is.documentMode||6:Hs?+Hs[1]:Fs?+Fs[1]:0,gecko:fa,gecko_version:fa?+(/Firefox\\/(\\d+)/.exec(Ne.userAgent)||[0,0])[1]:0,chrome:!!Ns,chrome_version:Ns?+Ns[1]:0,ios:pa,android:/Android\\b/.test(Ne.userAgent),webkit:da,safari:Ya,webkit_version:da?+(/\\bAppleWebKit\\/(\\d+)/.exec(Ne.userAgent)||[0,0])[1]:0,tabSize:Is.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"},mf=256,st=class i extends ee{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,t,r){return this.flags&8||r&&(!(r instanceof i)||this.length-(t-e)+r.length>mf||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new i(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=this.flags&8,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new xe(this.dom,e)}domBoundsAround(e,t,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return yf(this.dom,e,t)}},Tt=class i extends ee{constructor(e,t=[],r=0){super(),this.mark=e,this.children=t,this.length=r;for(let n of t)n.setParent(this)}setAttrs(e){if(qa(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,r,n,s,o){return r&&(!(r instanceof i&&r.mark.eq(this.mark))||e&&s<=0||te&&t.push(r=e&&(n=s),r=a,s++}let o=this.length-e;return this.length=e,n>-1&&(this.children.length=n,this.markDirty()),new i(this.mark,t,o)}domAtPos(e){return Xa(this,e)}coordsAt(e,t){return Qa(this,e,t)}};function yf(i,e,t){let r=i.nodeValue.length;e>r&&(e=r);let n=e,s=e,o=0;e==0&&t<0||e==r&&t>=0?R.chrome||R.gecko||(e?(n--,o=1):s=0)?0:l.length-1];return R.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,u=>u.width)||a),o?kn(a,o<0):a||null}var vn=class i extends ee{static create(e,t,r){return new i(e,t,r)}constructor(e,t,r){super(),this.widget=e,this.length=t,this.side=r,this.prevWidget=null}split(e){let t=i.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,t,r,n,s,o){return r&&(!(r instanceof i)||!this.widget.compare(r.widget)||e>0&&s<=0||t0)?xe.before(this.dom):xe.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let r=this.widget.coordsAt(this.dom,e,t);if(r)return r;let n=this.dom.getClientRects(),s=null;if(!n.length)return null;let o=this.side?this.side<0:e>0;for(let l=o?n.length-1:0;s=n[l],!(e>0?l==0:l==n.length-1||s.top0?xe.before(this.dom):xe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return Y.empty}get isHidden(){return!0}};st.prototype.children=vn.prototype.children=lr.prototype.children=co;function Xa(i,e){let t=i.dom,{children:r}=i,n=0;for(let s=0;ns&&e0;s--){let o=r[s-1];if(o.dom.parentNode==t)return o.domAtPos(o.length)}for(let s=n;s0&&e instanceof Tt&&n.length&&(r=n[n.length-1])instanceof Tt&&r.mark.eq(e.mark)?Ja(r,e.children[0],t-1):(n.push(e),e.setParent(i)),i.length+=e.length}function Qa(i,e,t){let r=null,n=-1,s=null,o=-1;function l(u,h){for(let c=0,f=0;c=h&&(d.children.length?l(d,h-f):(!s||s.isHidden&&t>0)&&(p>h||f==p&&d.getSide()>0)?(s=d,o=h-f):(f-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(n.indexOf(s)==-1||i[s]!==e[s]))return!1;return!0}function Vs(i,e,t){let r=!1;if(e)for(let n in e)t&&n in t||(r=!0,n=="style"?i.style.cssText="":i.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(r=!0,n=="style"?i.style.cssText=t[n]:i.setAttribute(n,t[n]));return r}function vf(i){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new kt(e,t,t,r,e.widget||null,!1)}static replace(e){let t=!!e.block,r,n;if(e.isBlockGap)r=-5e8,n=4e8;else{let{start:s,end:o}=Za(e,t);r=(s?t?-3e8:-1:5e8)-1,n=(o?t?2e8:1:-6e8)+1}return new kt(e,r,n,t,e.widget||null,!0)}static line(e){return new ur(e)}static set(e,t=!1){return he.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};le.none=he.empty;var ar=class i extends le{constructor(e){let{start:t,end:r}=Za(e);super(t?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var t,r;return this==e||e instanceof i&&this.tagName==e.tagName&&(this.class||((t=this.attrs)===null||t===void 0?void 0:t.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&wn(this.attrs,e.attrs,"class")}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};ar.prototype.point=!1;var ur=class i extends le{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof i&&this.spec.class==e.spec.class&&wn(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};ur.prototype.mapMode=Me.TrackBefore;ur.prototype.point=!0;var kt=class i extends le{constructor(e,t,r,n,s,o){super(t,r,s,e),this.block=n,this.isReplace=o,this.mapMode=n?t<=0?Me.TrackBefore:Me.TrackAfter:Me.TrackDel}get type(){return this.startSide!=this.endSide?rt.WidgetRange:this.startSide<=0?rt.WidgetBefore:rt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof i&&wf(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};kt.prototype.point=!0;function Za(i,e=!1){let{inclusiveStart:t,inclusiveEnd:r}=i;return t==null&&(t=i.inclusive),r==null&&(r=i.inclusive),{start:t!=null?t:e,end:r!=null?r:e}}function wf(i,e){return i==e||!!(i&&e&&i.compare(e))}function qs(i,e,t,r=0){let n=t.length-1;n>=0&&t[n]+r>=i?t[n]=Math.max(t[n],e):t.push(i,e)}var we=class i extends ee{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,r,n,s,o){if(r){if(!(r instanceof i))return!1;this.dom||r.transferDOM(this)}return n&&this.setDeco(r?r.attrs:null),Ga(this,e,t,r?r.children.slice():[],s,o),!0}split(e){let t=new i;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i:r,off:n}=this.childPos(e);n&&(t.append(this.children[r].split(n),0),this.children[r].merge(n,this.children[r].length,null,!1,0,0),r++);for(let s=r;s0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,t}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){wn(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){Ja(this,e,t)}addLineDeco(e){let t=e.spec.attributes,r=e.spec.class;t&&(this.attrs=$s(t,this.attrs||{})),r&&(this.attrs=$s({class:r},this.attrs||{}))}domAtPos(e){return Xa(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,t){var r;this.dom?this.flags&4&&(qa(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Vs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,t);let n=this.dom.lastChild;for(;n&&ee.get(n)instanceof Tt;)n=n.lastChild;if(!n||!this.length||n.nodeName!="BR"&&((r=ee.get(n))===null||r===void 0?void 0:r.isEditable)==!1&&(!R.ios||!this.children.some(s=>s instanceof st))){let s=document.createElement("BR");s.cmIgnore=!0,this.dom.appendChild(s)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let r of this.children){if(!(r instanceof st)||/[^ -~]/.test(r.text))return null;let n=or(r.dom);if(n.length!=1)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let r=Qa(this,e,t);if(!this.children.length&&r&&this.parent){let{heightOracle:n}=this.parent.view.viewState,s=r.bottom-r.top;if(Math.abs(s-n.lineHeight)<2&&n.textHeight=t){if(s instanceof i)return s;if(o>t)break}n=o+s.breakAfter}return null}},Gt=class i extends ee{constructor(e,t,r){super(),this.widget=e,this.length=t,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,t,r,n,s,o){return r&&(!(r instanceof i)||!this.widget.compare(r.widget)||e>0&&s<=0||t0}},hr=class extends bi{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},tr=class i{constructor(e,t,r,n){this.doc=e,this.pos=t,this.end=r,this.disallowBlockEffectsFor=n,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Gt&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new we),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(ln(new lr(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Gt)&&this.getLine()}buildText(e,t,r){for(;e>0;){if(this.textOff==this.text.length){let{value:s,lineBreak:o,done:l}=this.cursor.next(this.skip);if(this.skip=0,l)throw new Error("Ran out of text content when drawing inline views");if(o){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=s,this.textOff=0}let n=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-r)),this.getLine().append(ln(new st(this.text.slice(this.textOff,this.textOff+n)),t),r),this.atCursorPos=!0,this.textOff+=n,e-=n,r=0}}span(e,t,r,n){this.buildText(t-e,r,n),this.pos=t,this.openStart<0&&(this.openStart=n)}point(e,t,r,n,s,o){if(this.disallowBlockEffectsFor[o]&&r instanceof kt){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(r instanceof kt)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Gt(r.widget||Mt.block,l,r));else{let a=vn.create(r.widget||Mt.inline,l,l?0:r.startSide),u=this.atCursorPos&&!a.isEditable&&s<=n.length&&(e0),h=!a.isEditable&&(en.length||r.startSide<=0),c=this.getLine();this.pendingBuffer==2&&!u&&!a.isEditable&&(this.pendingBuffer=0),this.flushBuffer(n),u&&(c.append(ln(new lr(1),n),s),s=n.length+Math.max(0,s-n.length)),c.append(ln(a,n),s),this.atCursorPos=h,this.pendingBuffer=h?en.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=s)}static build(e,t,r,n,s){let o=new i(e,t,r,s);return o.openEnd=he.spans(n,t,r,o),o.openStart<0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}};function ln(i,e){for(let t of e)i=new Tt(t,[i],i.length);return i}var Mt=class extends bi{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Mt.inline=new Mt("span");Mt.block=new Mt("div");var me=function(i){return i[i.LTR=0]="LTR",i[i.RTL=1]="RTL",i}(me||(me={})),Xt=me.LTR,fo=me.RTL;function eu(i){let e=[];for(let t=0;t=t){if(l.level==r)return o;(s<0||(n!=0?n<0?l.fromt:e[s].level>l.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function iu(i,e){if(i.length!=e.length)return!1;for(let t=0;t=0;g-=3)if(et[g+1]==-d){let y=et[g+2],b=y&2?n:y&4?y&1?s:n:0;b&&(Z[c]=Z[et[g]]=b),l=g;break}}else{if(et.length==189)break;et[l++]=c,et[l++]=f,et[l++]=a}else if((p=Z[c])==2||p==1){let g=p==n;a=g?0:1;for(let y=l-3;y>=0;y-=3){let b=et[y+2];if(b&2)break;if(g)et[y+2]|=2;else{if(b&4)break;et[y+2]|=4}}}}}function xf(i,e,t,r){for(let n=0,s=r;n<=t.length;n++){let o=n?t[n-1].to:i,l=na;)p==y&&(p=t[--g].from,y=g?t[g-1].to:i),Z[--p]=d;a=h}else s=u,a++}}}function Ws(i,e,t,r,n,s,o){let l=r%2?2:1;if(r%2==n%2)for(let a=e,u=0;aa&&o.push(new it(a,g.from,d));let y=g.direction==Xt!=!(d%2);zs(i,y?r+1:r,n,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==t||(h?Z[p]!=l:Z[p]==l))break;p++}f?Ws(i,a,p,r+1,n,f,o):ae;){let h=!0,c=!1;if(!u||a>s[u-1].to){let g=Z[a-1];g!=l&&(h=!1,c=g==16)}let f=!h&&l==1?[]:null,d=h?r:r+1,p=a;e:for(;;)if(u&&p==s[u-1].to){if(c)break e;let g=s[--u];if(!h)for(let y=g.from,b=u;;){if(y==e)break e;if(b&&s[b-1].to==y)y=s[--b].from;else{if(Z[y-1]==l)break e;break}}if(f)f.push(g);else{g.toZ.length;)Z[Z.length]=256;let r=[],n=e==Xt?0:1;return zs(i,n,n,t,0,i.length,r),r}function ru(i){return[new it(0,i,0)]}var nu="";function kf(i,e,t,r,n){var s;let o=r.head-i.from,l=it.find(e,o,(s=r.bidiLevel)!==null&&s!==void 0?s:-1,r.assoc),a=e[l],u=a.side(n,t);if(o==u){let f=l+=n?1:-1;if(f<0||f>=e.length)return null;a=e[l=f],o=a.side(!n,t),u=a.side(n,t)}let h=Ze(i.text,o,a.forward(n,t));(ha.to)&&(h=u),nu=i.text.slice(Math.min(o,h),Math.max(o,h));let c=l==(n?e.length-1:0)?null:e[l+(n?1:-1)];return c&&h==u&&c.level+(n?0:1)i.some(e=>e)}),Rf=$.define({combine:i=>i.some(e=>e)}),fu=$.define(),ir=class i{constructor(e,t="nearest",r="nearest",n=5,s=5,o=!1){this.range=e,this.y=t,this.x=r,this.yMargin=n,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new i(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new i(P.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},an=se.define({map:(i,e)=>i.map(e)}),du=se.define();function ze(i,e,t){let r=i.facet(au);r.length?r[0](e):window.onerror?window.onerror(String(e),t,void 0,void 0,e):t?console.error(t+":",e):console.error(e)}var Et=$.define({combine:i=>i.length?i[0]:!0}),Nf=0,Xi=$.define(),Jt=class i{constructor(e,t,r,n,s){this.id=e,this.create=t,this.domEventHandlers=r,this.domEventObservers=n,this.extension=s(this)}static define(e,t){let{eventHandlers:r,eventObservers:n,provide:s,decorations:o}=t||{};return new i(Nf++,e,r,n,l=>{let a=[Xi.of(l)];return o&&a.push(cr.of(u=>{let h=u.plugin(l);return h?o(h):le.none})),s&&a.push(s(l)),a})}static fromClass(e,t){return i.define(r=>new e(r),t)}},rr=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(r){if(ze(t.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(n){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(t){ze(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(r){ze(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},pu=$.define(),mo=$.define(),cr=$.define(),gu=$.define(),yo=$.define(),mu=$.define();function ma(i,e){let t=i.state.facet(mu);if(!t.length)return t;let r=t.map(s=>s instanceof Function?s(i):s),n=[];return he.spans(r,e.from,e.to,{point(){},span(s,o,l,a){let u=s-e.from,h=o-e.from,c=n;for(let f=l.length-1;f>=0;f--,a--){let d=l[f].spec.bidiIsolate,p;if(d==null&&(d=Mf(e.text,u,h)),a>0&&c.length&&(p=c[c.length-1]).to==u&&p.direction==d)p.to=h,c=p.inner;else{let g={from:u,to:h,direction:d,inner:[]};c.push(g),c=g.inner}}}}),n}var yu=$.define();function bu(i){let e=0,t=0,r=0,n=0;for(let s of i.state.facet(yu)){let o=s(i);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(n=Math.max(n,o.bottom)))}return{left:e,right:t,top:r,bottom:n}}var Ji=$.define(),nt=class i{constructor(e,t,r,n){this.fromA=e,this.toA=t,this.fromB=r,this.toB=n}join(e){return new i(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,r=this;for(;t>0;t--){let n=e[t-1];if(!(n.fromA>r.toA)){if(n.toAh)break;s+=2}if(!a)return r;new i(a.fromA,a.toA,a.fromB,a.toB).addToSet(r),o=a.toA,l=a.toB}}},An=class i{constructor(e,t,r){this.view=e,this.state=t,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=_e.empty(this.startState.doc.length);for(let s of r)this.changes=this.changes.compose(s.changes);let n=[];this.changes.iterChangedRanges((s,o,l,a)=>n.push(new nt(s,o,l,a))),this.changedRanges=n}static create(e,t,r){return new i(e,t,r)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Cn=class extends ee{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=le.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new we],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new nt(0,0,0,e.state.doc.length)],0,null)}update(e){var t;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:u,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?n=this.domChanged.newSel.head:!Ff(e.changes,this.hasComposition)&&!e.selectionSet&&(n=e.state.selection.main.head));let s=n>-1?Bf(this.view,e.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:u,to:h}=this.hasComposition;r=new nt(u,h,e.changes.mapPos(u,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(R.ie||R.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.updateDeco(),a=_f(o,l,e.changes);return r=nt.extendWithRanges(r,a),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,r);let{observer:n}=this.view;n.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let o=R.chrome||R.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,o),this.flags&=-8,o&&(o.written||n.selectionRange.focusNode!=o.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(o=>o.flags&=-9);let s=[];if(this.view.viewport.from||this.view.viewport.to=0?n[o]:null;if(!l)break;let{fromA:a,toA:u,fromB:h,toB:c}=l,f,d,p,g;if(r&&r.range.fromBh){let E=tr.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),S=tr.build(this.view.state.doc,r.range.toB,c,this.decorations,this.dynamicDecorationMap);d=E.breakAtStart,p=E.openStart,g=S.openEnd;let N=this.compositionView(r);S.breakAtStart?N.breakAfter=1:S.content.length&&N.merge(N.length,N.length,S.content[0],!1,S.openStart,0)&&(N.breakAfter=S.content[0].breakAfter,S.content.shift()),E.content.length&&N.merge(0,0,E.content[E.content.length-1],!0,0,E.openEnd)&&E.content.pop(),f=E.content.concat(N).concat(S.content)}else({content:f,breakAtStart:d,openStart:p,openEnd:g}=tr.build(this.view.state.doc,h,c,this.decorations,this.dynamicDecorationMap));let{i:y,off:b}=s.findPos(u,1),{i:A,off:w}=s.findPos(a,-1);ja(this,A,w,y,b,f,d,p,g)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let r of t.effects)r.is(du)&&(this.editContextFormatting=r.value)}compositionView(e){let t=new st(e.text.nodeValue);t.flags|=8;for(let{deco:n}of e.marks)t=new Tt(n,[t],t.length);let r=new we;return r.append(t,0),r}fixCompositionDOM(e){let t=(s,o)=>{o.flags|=8|(o.children.some(a=>a.flags&7)?1:0),this.markedForComposition.add(o);let l=ee.get(s);l&&l!=o&&(l.dom=null),o.setDOM(s)},r=this.childPos(e.range.fromB,1),n=this.children[r.i];t(e.line,n);for(let s=e.marks.length-1;s>=-1;s--)r=n.childPos(r.off,1),n=n.children[r.i],t(s>=0?e.marks[s].node:e.text,n)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,n=r==this.dom,s=!n&&pn(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(n||t||s))return;let o=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.moveToLine(this.domAtPos(l.anchor)),u=l.empty?a:this.moveToLine(this.domAtPos(l.head));if(R.gecko&&l.empty&&!this.hasComposition&&Of(a)){let c=document.createTextNode("");this.view.observer.ignore(()=>a.node.insertBefore(c,a.node.childNodes[a.offset]||null)),a=u=new xe(c,0),o=!0}let h=this.view.observer.selectionRange;(o||!h.focusNode||(!er(a.node,a.offset,h.anchorNode,h.anchorOffset)||!er(u.node,u.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{R.android&&R.chrome&&this.dom.contains(h.focusNode)&&If(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let c=sr(this.view.root);if(c)if(l.empty){if(R.gecko){let f=Pf(a.node,a.offset);if(f&&f!=3){let d=(f==1?Wa:za)(a.node,a.offset);d&&(a=new xe(d.node,d.offset))}}c.collapse(a.node,a.offset),l.bidiLevel!=null&&c.caretBidiLevel!==void 0&&(c.caretBidiLevel=l.bidiLevel)}else if(c.extend){c.collapse(a.node,a.offset);try{c.extend(u.node,u.offset)}catch(f){}}else{let f=document.createRange();l.anchor>l.head&&([a,u]=[u,a]),f.setEnd(u.node,u.offset),f.setStart(a.node,a.offset),c.removeAllRanges(),c.addRange(f)}s&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(a,u)),this.impreciseAnchor=a.precise?null:new xe(h.anchorNode,h.anchorOffset),this.impreciseHead=u.precise?null:new xe(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&er(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,r=sr(e.root),{anchorNode:n,anchorOffset:s}=e.observer.selectionRange;if(!r||!t.empty||!t.assoc||!r.modify)return;let o=we.find(this,t.head);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),u=this.coordsAt(t.head,1);if(!a||!u||a.bottom>u.top)return;let h=this.domAtPos(t.head+t.assoc);r.collapse(h.node,h.offset),r.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let c=e.observer.selectionRange;e.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=t.from&&r.collapse(n,s)}moveToLine(e){let t=this.dom,r;if(e.node!=t)return e;for(let n=e.offset;!r&&n=0;n--){let s=ee.get(t.childNodes[n]);s instanceof we&&(r=s.domAtPos(s.length))}return r?new xe(r.node,r.offset,!0):e}nearest(e){for(let t=e;t;){let r=ee.get(t);if(r&&r.rootView==this)return r;t=t.parentNode}return null}posFromDOM(e,t){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,t)+r.posAtStart}domAtPos(e){let{i:t,off:r}=this.childCursor().findPos(e,-1);for(;t=0;o--){let l=this.children[o],a=s-l.breakAfter,u=a-l.length;if(ae||l.covers(1))&&(!r||l instanceof we&&!(r instanceof we&&t>=0)))r=l,n=u;else if(r&&u==e&&a==e&&l instanceof Gt&&Math.abs(t)<2){if(l.deco.startSide<0)break;o&&(r=null)}s=u}return r?r.coordsAt(e-n,t):null}coordsForChar(e){let{i:t,off:r}=this.childPos(e,1),n=this.children[t];if(!(n instanceof we))return null;for(;n.children.length;){let{i:l,off:a}=n.childPos(r,1);for(;;l++){if(l==n.children.length)return null;if((n=n.children[l]).length)break}r=a}if(!(n instanceof st))return null;let s=Ze(n.text,r);if(s==r)return null;let o=Yt(n.dom,r,s).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==me.LTR;for(let u=0,h=0;hn)break;if(u>=r){let d=c.dom.getBoundingClientRect();if(t.push(d.height),o){let p=c.dom.lastChild,g=p?or(p):[];if(g.length){let y=g[g.length-1],b=a?y.right-d.left:d.right-y.left;b>l&&(l=b,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=f)}}}u=f+c.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?me.RTL:me.LTR}measureTextSize(){for(let s of this.children)if(s instanceof we){let o=s.measureTextSize();if(o)return o}let e=document.createElement("div"),t,r,n;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let s=or(e.firstChild)[0];t=e.getBoundingClientRect().height,r=s?s.width/27:7,n=s?s.height:t,e.remove()}),{lineHeight:t,charWidth:r,textHeight:n}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new bn(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let r=0,n=0;;n++){let s=n==t.viewports.length?null:t.viewports[n],o=s?s.from-1:this.length;if(o>r){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(r).top)/this.view.scaleY;e.push(le.replace({widget:new hr(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,o))}if(!s)break;r=s.to+1}return le.set(e)}updateDeco(){let e=1,t=this.view.state.facet(cr).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),r=!1,n=this.view.state.facet(gu).map((s,o)=>{let l=typeof s=="function";return l&&(r=!0),l?s(this.view):s});for(n.length&&(this.dynamicDecorationMap[e++]=r,t.push(he.join(n))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];et.anchor?-1:1),n;if(!r)return;!t.empty&&(n=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(r={left:Math.min(r.left,n.left),top:Math.min(r.top,n.top),right:Math.max(r.right,n.right),bottom:Math.max(r.bottom,n.bottom)});let s=bu(this.view),o={left:r.left-s.left,top:r.top-s.top,right:r.right+s.right,bottom:r.bottom+s.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;ff(this.view.scrollDOM,o,t.head{re.from&&(t=!0)}),t}function Hf(i,e,t=1){let r=i.charCategorizer(e),n=i.doc.lineAt(e),s=e-n.from;if(n.length==0)return P.cursor(e);s==0?t=1:s==n.length&&(t=-1);let o=s,l=s;t<0?o=Ze(n.text,s,!1):l=Ze(n.text,s);let a=r(n.text.slice(o,l));for(;o>0;){let u=Ze(n.text,o,!1);if(r(n.text.slice(u,o))!=a)break;o=u}for(;li?e.left-i:Math.max(0,i-e.right)}function Vf(i,e){return e.top>i?e.top-i:Math.max(0,i-e.bottom)}function Os(i,e){return i.tope.top+1}function ya(i,e){return ei.bottom?{top:i.top,left:i.left,right:i.right,bottom:e}:i}function Gs(i,e,t){let r,n,s,o,l=!1,a,u,h,c;for(let p=i.firstChild;p;p=p.nextSibling){let g=or(p);for(let y=0;yw||o==w&&s>A){r=p,n=b,s=A,o=w;let E=w?t0?y0)}A==0?t>b.bottom&&(!h||h.bottomb.top)&&(u=p,c=b):h&&Os(h,b)?h=ba(h,b.bottom):c&&Os(c,b)&&(c=ya(c,b.top))}}if(h&&h.bottom>=t?(r=a,n=h):c&&c.top<=t&&(r=u,n=c),!r)return{node:i,offset:0};let f=Math.max(n.left,Math.min(n.right,e));if(r.nodeType==3)return va(r,f,t);if(l&&r.contentEditable!="false")return Gs(r,f,t);let d=Array.prototype.indexOf.call(i.childNodes,r)+(e>=(n.left+n.right)/2?1:0);return{node:i,offset:d}}function va(i,e,t){let r=i.nodeValue.length,n=-1,s=1e9,o=0;for(let l=0;lt?h.top-t:t-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&c=(h.left+h.right)/2,d=f;if((R.chrome||R.gecko)&&Yt(i,l).getBoundingClientRect().left==h.right&&(d=!f),c<=0)return{node:i,offset:l+(d?1:0)};n=l+(d?1:0),s=c}}}return{node:i,offset:n>-1?n:o>0?i.nodeValue.length:0}}function wu(i,e,t,r=-1){var n,s;let o=i.contentDOM.getBoundingClientRect(),l=o.top+i.viewState.paddingTop,a,{docHeight:u}=i.viewState,{x:h,y:c}=e,f=c-l;if(f<0)return 0;if(f>u)return i.state.doc.length;for(let E=i.viewState.heightOracle.textHeight/2,S=!1;a=i.elementAtHeight(f),a.type!=rt.Text;)for(;f=r>0?a.bottom+E:a.top-E,!(f>=0&&f<=u);){if(S)return t?null:0;S=!0,r=-r}c=l+f;let d=a.from;if(di.viewport.to)return i.viewport.to==i.state.doc.length?i.state.doc.length:t?null:wa(i,o,a,h,c);let p=i.dom.ownerDocument,g=i.root.elementFromPoint?i.root:p,y=g.elementFromPoint(h,c);y&&!i.contentDOM.contains(y)&&(y=null),y||(h=Math.max(o.left+1,Math.min(o.right-1,h)),y=g.elementFromPoint(h,c),y&&!i.contentDOM.contains(y)&&(y=null));let b,A=-1;if(y&&((n=i.docView.nearest(y))===null||n===void 0?void 0:n.isEditable)!=!1){if(p.caretPositionFromPoint){let E=p.caretPositionFromPoint(h,c);E&&({offsetNode:b,offset:A}=E)}else if(p.caretRangeFromPoint){let E=p.caretRangeFromPoint(h,c);E&&({startContainer:b,startOffset:A}=E,(!i.contentDOM.contains(b)||R.safari&&qf(b,A,h)||R.chrome&&Uf(b,A,h))&&(b=void 0))}}if(!b||!i.docView.dom.contains(b)){let E=we.find(i.docView,d);if(!E)return f>a.top+a.height/2?a.to:a.from;({node:b,offset:A}=Gs(E.dom,h,c))}let w=i.docView.nearest(b);if(!w)return null;if(w.isWidget&&((s=w.dom)===null||s===void 0?void 0:s.nodeType)==1){let E=w.dom.getBoundingClientRect();return e.yi.defaultLineHeight*1.5){let l=i.viewState.heightOracle.textHeight,a=Math.floor((n-t.top-(i.defaultLineHeight-l)*.5)/l);s+=a*i.viewState.heightOracle.lineLength}let o=i.state.sliceDoc(t.from,t.to);return t.from+sa(o,s,i.state.tabSize)}function qf(i,e,t){let r;if(i.nodeType!=3||e!=(r=i.nodeValue.length))return!1;for(let n=i.nextSibling;n;n=n.nextSibling)if(n.nodeType!=1||n.nodeName!="BR")return!1;return Yt(i,r-1,r).getBoundingClientRect().left>t}function Uf(i,e,t){if(e!=0)return!1;for(let n=i;;){let s=n.parentNode;if(!s||s.nodeType!=1||s.firstChild!=n)return!1;if(s.classList.contains("cm-line"))break;n=s}let r=i.nodeType==1?i.getBoundingClientRect():Yt(i,0,Math.max(i.nodeValue.length,1)).getBoundingClientRect();return t-r.left>5}function Wf(i,e){let t=i.lineBlockAt(e);if(Array.isArray(t.type)){for(let r of t.type)if(r.to>e||r.to==e&&(r.to==t.to||r.type==rt.Text))return r}return t}function zf(i,e,t,r){let n=Wf(i,e.head),s=!r||n.type!=rt.Text||!(i.lineWrapping||n.widgetLineBreaks)?null:i.coordsAtPos(e.assoc<0&&e.head>n.from?e.head-1:e.head);if(s){let o=i.dom.getBoundingClientRect(),l=i.textDirectionAt(n.from),a=i.posAtCoords({x:t==(l==me.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(a!=null)return P.cursor(a,t?-1:1)}return P.cursor(t?n.to:n.from,t?-1:1)}function Aa(i,e,t,r){let n=i.state.doc.lineAt(e.head),s=i.bidiSpans(n),o=i.textDirectionAt(n.from);for(let l=e,a=null;;){let u=kf(n,s,o,l,t),h=nu;if(!u){if(n.number==(t?i.state.doc.lines:1))return l;h=`\n`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),u=i.visualLineSide(n,!t)}if(a){if(!a(h))return l}else{if(!r)return u;a=r(h)}l=u}}function jf(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Qe.Space&&(n=o),n==o}}function Gf(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return P.cursor(n,e.assoc);let o=e.goalColumn,l,a=i.contentDOM.getBoundingClientRect(),u=i.coordsAtPos(n,e.assoc||-1),h=i.documentTop;if(u)o==null&&(o=u.left-a.left),l=s<0?u.top:u.bottom;else{let d=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(a.right-a.left,i.defaultCharacterWidth*(n-d.from))),l=(s<0?d.top:d.bottom)+h}let c=a.left+o,f=r!=null?r:i.viewState.heightOracle.textHeight>>1;for(let d=0;;d+=10){let p=l+(f+d)*s,g=wu(i,{x:c,y:p},!1,s);if(pa.bottom||(s<0?gn)){let y=i.docView.coordsForChar(g),b=!y||p{if(e>s&&en(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:P.cursor(r,rs)&&this.lineBreak(),n=o}return this.findPointBefore(r,t),this}readTextNode(e){let t=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,t.length));for(let r=0,n=this.lineSeparator?null:/\\r\\n?|\\n/g;;){let s=-1,o=1,l;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,r),o=this.lineSeparator.length):(l=n.exec(t))&&(s=l.index,o=l[0].length),this.append(t.slice(r,s<0?t.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);r=s+o}}readNode(e){if(e.cmIgnore)return;let t=ee.get(e),r=t&&t.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let n=r.iter();!n.next().done;)n.lineBreak?this.lineBreak():this.append(n.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==t&&(r.pos=this.text.length)}findPointInside(e,t){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Kf(e,r.node,r.offset)?t:0))}};function Kf(i,e,t){for(;;){if(!e||t-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,r,0))){let l=s||o?[]:Jf(e),a=new Ks(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=Qf(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!Ls(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),u=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Ls(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((R.ios||R.chrome)&&e.state.selection.main.empty&&a!=u&&(h.from>0||h.toDate.now()-100?i.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,a=n.from,u=null;(s===8||R.android&&e.text.length=n.from&&t.to<=n.to&&(t.from!=n.from||t.to!=n.to)&&n.to-n.from-(t.to-t.from)<=4?t={from:n.from,to:n.to,insert:i.state.doc.slice(n.from,t.from).append(t.insert).append(i.state.doc.slice(t.to,n.to))}:(R.mac||R.android)&&t&&t.from==t.to&&t.from==n.head-1&&/^\\. ?$/.test(t.insert.toString())&&i.contentDOM.getAttribute("autocorrect")=="off"?(r&&t.insert.length==2&&(r=P.single(r.main.anchor-1,r.main.head-1)),t={from:n.from,to:n.to,insert:Y.of([" "])}):R.chrome&&t&&t.from==t.to&&t.from==n.head&&t.insert.toString()==`\n `&&i.lineWrapping&&(r&&(r=P.single(r.main.anchor-1,r.main.head-1)),t={from:n.from,to:n.to,insert:Y.of([" "])}),t)return bo(i,t,r,s);if(r&&!r.main.eq(n)){let o=!1,l="select";return i.inputState.lastSelectionTime>Date.now()-50&&(i.inputState.lastSelectionOrigin=="select"&&(o=!0),l=i.inputState.lastSelectionOrigin),i.dispatch({selection:r,scrollIntoView:o,userEvent:l}),!0}else return!1}function bo(i,e,t,r=-1){if(R.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(R.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&i.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&yi(i.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||r==8&&e.insert.lengthn.head)&&yi(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&yi(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,l=()=>o||(o=Yf(i,e,t));return i.state.facet(uu).some(a=>a(i,e.from,e.to,s,l))||i.dispatch(l()),!0}function Yf(i,e,t){let r,n=i.state,s=n.selection.main;if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.frome.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+a))}else{let l=n.changes(e),a=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&i.inputState.composing>=0&&e.to<=s.to&&e.to>=s.to-10){let u=i.state.sliceDoc(e.from,e.to),h,c=t&&vu(i,t.main.head);if(c){let p=e.insert.length-(e.to-e.from);h={from:c.from,to:c.to-p}}else h=i.state.doc.lineAt(s.head);let f=s.to-e.to,d=s.to-s.from;r=n.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:l,range:a||p.map(l)};let g=p.to-f,y=g-u.length;if(p.to-p.from!=d||i.state.sliceDoc(y,g)!=u||p.to>=h.from&&p.from<=h.to)return{range:p};let b=n.changes({from:y,to:g,insert:e.insert}),A=p.to-s.to;return{changes:b,range:a?P.range(Math.max(0,a.anchor+A),Math.max(0,a.head+A)):p.map(b)}})}else r={changes:l,selection:a&&n.selection.replaceRange(a)}}let o="input.type";return(i.composing||i.inputState.compositionPendingChange&&i.inputState.compositionEndedAt>Date.now()-50)&&(i.inputState.compositionPendingChange=!1,o+=".compose",i.inputState.compositionFirstChange&&(o+=".start",i.inputState.compositionFirstChange=!1)),n.update(r,{userEvent:o,scrollIntoView:!0})}function Xf(i,e,t,r){let n=Math.min(i.length,e.length),s=0;for(;s0&&l>0&&i.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(r=="end"){let a=Math.max(0,s-Math.min(o,l));t-=o+a-s}if(o=o?s-t:0;s-=a,l=s+(l-o),o=s}else if(l=l?s-t:0;s-=a,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}function Jf(i){let e=[];if(i.root.activeElement!=i.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}=i.observer.selectionRange;return t&&(e.push(new Sn(t,r)),(n!=t||s!=r)&&e.push(new Sn(n,s))),e}function Qf(i,e){if(i.length==0)return null;let t=i[0].pos,r=i.length==2?i[1].pos:t;return t>-1&&r>-1?P.single(t+e,r+e):null}var Xs=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,R.safari&&e.contentDOM.addEventListener("input",()=>null),R.gecko&&pd(e.contentDOM.ownerDocument)}handleEvent(e){!od(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||this.runHandlers(e.type,e)}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=Zf(e),r=this.handlers,n=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,l=r[s];l&&o!=!l.handlers.length&&(n.removeEventListener(s,this.handleEvent),l=null),l||n.addEventListener(s,this.handleEvent,{passive:o})}for(let s in r)s!="scroll"&&!t[s]&&n.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&td.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),R.android&&R.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return R.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=Cu.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||ed.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from0?!0:R.safari&&!R.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1:!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Ca(i,e){return(t,r)=>{try{return e.call(i,r,t)}catch(n){ze(t.state,n)}}}function Zf(i){let e=Object.create(null);function t(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of i){let n=r.spec;if(n&&n.domEventHandlers)for(let s in n.domEventHandlers){let o=n.domEventHandlers[s];o&&t(s).handlers.push(Ca(r.value,o))}if(n&&n.domEventObservers)for(let s in n.domEventObservers){let o=n.domEventObservers[s];o&&t(s).observers.push(Ca(r.value,o))}}for(let r in je)t(r).handlers.push(je[r]);for(let r in Ve)t(r).observers.push(Ve[r]);return e}var Cu=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],ed="dthko",td=[16,17,18,20,91,92,224,225],un=6;function hn(i){return Math.max(0,i)*.7+8}function id(i,e){return Math.max(Math.abs(i.clientX-e.clientX),Math.abs(i.clientY-e.clientY))}var Js=class{constructor(e,t,r,n){this.view=e,this.startEvent=t,this.style=r,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=df(e.contentDOM),this.atoms=e.state.facet(yo).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(oe.allowMultipleSelections)&&rd(e,t),this.dragging=sd(e,t)&&Eu(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&id(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,r=0,n=0,s=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:n,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=bu(this.view);e.clientX-a.left<=n+un?t=-hn(n-e.clientX):e.clientX+a.right>=o-un&&(t=hn(e.clientX-o)),e.clientY-a.top<=s+un?r=-hn(s-e.clientY):e.clientY+a.bottom>=l-un&&(r=hn(e.clientY-l)),this.setScrollSpeed(t,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}skipAtoms(e){let t=null;for(let r=0;rt.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function rd(i,e){let t=i.state.facet(su);return t.length?t[0](e):R.mac?e.metaKey:e.ctrlKey}function nd(i,e){let t=i.state.facet(ou);return t.length?t[0](e):R.mac?!e.altKey:!e.ctrlKey}function sd(i,e){let{main:t}=i.state.selection;if(t.empty)return!1;let r=sr(i.root);if(!r||r.rangeCount==0)return!0;let n=r.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function od(i,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,r;t!=i.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(r=ee.get(t))&&r.ignoreEvent(e))return!1;return!0}var je=Object.create(null),Ve=Object.create(null),Su=R.ie&&R.ie_version<15||R.ios&&R.webkit_version<604;function ld(i){let e=i.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{i.focus(),t.remove(),Du(i,t.value)},50)}function Rn(i,e,t){for(let r of i.facet(e))t=r(t,i);return t}function Du(i,e){e=Rn(i.state,po,e);let{state:t}=i,r,n=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Qs!=null&&t.selection.ranges.every(a=>a.empty)&&Qs==s.toString()){let a=-1;r=t.changeByRange(u=>{let h=t.doc.lineAt(u.from);if(h.from==a)return{range:u};a=h.from;let c=t.toText((o?s.line(n++).text:e)+t.lineBreak);return{changes:{from:h.from,insert:c},range:P.cursor(u.from+c.length)}})}else o?r=t.changeByRange(a=>{let u=s.line(n++);return{changes:{from:a.from,to:a.to,insert:u.text},range:P.cursor(a.from+u.length)}}):r=t.replaceSelection(s);i.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}Ve.scroll=i=>{i.inputState.lastScrollTop=i.scrollDOM.scrollTop,i.inputState.lastScrollLeft=i.scrollDOM.scrollLeft};je.keydown=(i,e)=>(i.inputState.setSelectionOrigin("select"),e.keyCode==27&&i.inputState.tabFocusMode!=0&&(i.inputState.tabFocusMode=Date.now()+2e3),!1);Ve.touchstart=(i,e)=>{i.inputState.lastTouchTime=Date.now(),i.inputState.setSelectionOrigin("select.pointer")};Ve.touchmove=i=>{i.inputState.setSelectionOrigin("select.pointer")};je.mousedown=(i,e)=>{if(i.observer.flush(),i.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let r of i.state.facet(lu))if(t=r(i,e),t)break;if(!t&&e.button==0&&(t=hd(i,e)),t){let r=!i.hasFocus;i.inputState.startMouseSelection(new Js(i,e,t,r)),r&&i.observer.ignore(()=>{Va(i.contentDOM);let s=i.root.activeElement;s&&!s.contains(i.contentDOM)&&s.blur()});let n=i.inputState.mouseSelection;if(n)return n.start(e),n.dragging===!1}return!1};function Sa(i,e,t,r){if(r==1)return P.cursor(e,t);if(r==2)return Hf(i.state,e,t);{let n=we.find(i.docView,e),s=i.state.doc.lineAt(n?n.posAtEnd:e),o=n?n.posAtStart:s.from,l=n?n.posAtEnd:s.to;return le>=t.top&&e<=t.bottom&&i>=t.left&&i<=t.right;function ad(i,e,t,r){let n=we.find(i.docView,e);if(!n)return 1;let s=e-n.posAtStart;if(s==0)return 1;if(s==n.length)return-1;let o=n.coordsAt(s,-1);if(o&&Da(t,r,o))return-1;let l=n.coordsAt(s,1);return l&&Da(t,r,l)?1:o&&o.bottom>=r?-1:1}function Ea(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:ad(i,t,e.clientX,e.clientY)}}var ud=R.ie&&R.ie_version<=11,xa=null,Ta=0,ka=0;function Eu(i){if(!ud)return i.detail;let e=xa,t=ka;return xa=i,ka=Date.now(),Ta=!e||t>Date.now()-400&&Math.abs(e.clientX-i.clientX)<2&&Math.abs(e.clientY-i.clientY)<2?(Ta+1)%3:1}function hd(i,e){let t=Ea(i,e),r=Eu(e),n=i.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),n=n.map(s.changes))},get(s,o,l){let a=Ea(i,s),u,h=Sa(i,a.pos,a.bias,r);if(t.pos!=a.pos&&!o){let c=Sa(i,t.pos,t.bias,r),f=Math.min(c.from,h.from),d=Math.max(c.to,h.to);h=f1&&(u=cd(n,a.pos))?u:l?n.addRange(h):P.create([h])}}}function cd(i,e){for(let t=0;t=e)return P.create(i.ranges.slice(0,t).concat(i.ranges.slice(t+1)),i.mainIndex==t?0:i.mainIndex-(i.mainIndex>t?1:0))}return null}je.dragstart=(i,e)=>{let{selection:{main:t}}=i.state;if(e.target.draggable){let n=i.docView.nearest(e.target);if(n&&n.isWidget){let s=n.posAtStart,o=s+n.length;(s>=t.to||o<=t.from)&&(t=P.range(s,o))}}let{inputState:r}=i;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Rn(i.state,go,i.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};je.dragend=i=>(i.inputState.draggedContent=null,!1);function Ma(i,e,t,r){if(t=Rn(i.state,po,t),!t)return;let n=i.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=i.inputState,o=r&&s&&nd(i,e)?{from:s.from,to:s.to}:null,l={from:n,insert:t},a=i.state.changes(o?[o,l]:l);i.focus(),i.dispatch({changes:a,selection:{anchor:a.mapPos(n,-1),head:a.mapPos(n,1)},userEvent:o?"move.drop":"input.drop"}),i.inputState.draggedContent=null}je.drop=(i,e)=>{if(!e.dataTransfer)return!1;if(i.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let r=Array(t.length),n=0,s=()=>{++n==t.length&&Ma(i,e,r.filter(o=>o!=null).join(i.state.lineBreak),!1)};for(let o=0;o{/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(l.result)||(r[o]=l.result),s()},l.readAsText(t[o])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return Ma(i,e,r,!0),!0}return!1};je.paste=(i,e)=>{if(i.state.readOnly)return!0;i.observer.flush();let t=Su?null:e.clipboardData;return t?(Du(i,t.getData("text/plain")||t.getData("text/uri-list")),!0):(ld(i),!1)};function fd(i,e){let t=i.dom.parentNode;if(!t)return;let r=t.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),i.focus()},50)}function dd(i){let e=[],t=[],r=!1;for(let n of i.selection.ranges)n.empty||(e.push(i.sliceDoc(n.from,n.to)),t.push(n));if(!e.length){let n=-1;for(let{from:s}of i.selection.ranges){let o=i.doc.lineAt(s);o.number>n&&(e.push(o.text),t.push({from:o.from,to:Math.min(i.doc.length,o.to+1)})),n=o.number}r=!0}return{text:Rn(i,go,e.join(i.lineBreak)),ranges:t,linewise:r}}var Qs=null;je.copy=je.cut=(i,e)=>{let{text:t,ranges:r,linewise:n}=dd(i.state);if(!t&&!n)return!1;Qs=n?t:null,e.type=="cut"&&!i.state.readOnly&&i.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let s=Su?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(fd(i,t),!1)};var xu=mt.define();function Tu(i,e){let t=[];for(let r of i.facet(hu)){let n=r(i,e);n&&t.push(n)}return t?i.update({effects:t,annotations:xu.of(!0)}):null}function ku(i){setTimeout(()=>{let e=i.hasFocus;if(e!=i.inputState.notifiedFocused){let t=Tu(i.state,e);t?i.dispatch(t):i.update([])}},10)}Ve.focus=i=>{i.inputState.lastFocusTime=Date.now(),!i.scrollDOM.scrollTop&&(i.inputState.lastScrollTop||i.inputState.lastScrollLeft)&&(i.scrollDOM.scrollTop=i.inputState.lastScrollTop,i.scrollDOM.scrollLeft=i.inputState.lastScrollLeft),ku(i)};Ve.blur=i=>{i.observer.clearSelectionRange(),ku(i)};Ve.compositionstart=Ve.compositionupdate=i=>{i.observer.editContext||(i.inputState.compositionFirstChange==null&&(i.inputState.compositionFirstChange=!0),i.inputState.composing<0&&(i.inputState.composing=0))};Ve.compositionend=i=>{i.observer.editContext||(i.inputState.composing=-1,i.inputState.compositionEndedAt=Date.now(),i.inputState.compositionPendingKey=!0,i.inputState.compositionPendingChange=i.observer.pendingRecords().length>0,i.inputState.compositionFirstChange=null,R.chrome&&R.android?i.observer.flushSoon():i.inputState.compositionPendingChange?Promise.resolve().then(()=>i.observer.flush()):setTimeout(()=>{i.inputState.composing<0&&i.docView.hasComposition&&i.update([])},50))};Ve.contextmenu=i=>{i.inputState.lastContextMenu=Date.now()};je.beforeinput=(i,e)=>{var t,r;if(e.inputType=="insertReplacementText"&&i.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let l=o[0],a=i.posAtDOM(l.startContainer,l.startOffset),u=i.posAtDOM(l.endContainer,l.endOffset);return bo(i,{from:a,to:u,insert:i.state.toText(s)},null),!0}}let n;if(R.chrome&&R.android&&(n=Cu.find(s=>s.inputType==e.inputType))&&(i.observer.delayAndroidKey(n.key,n.keyCode),n.key=="Backspace"||n.key=="Delete")){let s=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&i.hasFocus&&(i.contentDOM.blur(),i.focus())},100)}return R.ios&&e.inputType=="deleteContentForward"&&i.observer.flushSoon(),R.safari&&e.inputType=="insertText"&&i.inputState.composing>=0&&setTimeout(()=>Ve.compositionend(i,e),20),!1};var Ra=new Set;function pd(i){Ra.has(i)||(Ra.add(i),i.addEventListener("copy",()=>{}),i.addEventListener("cut",()=>{}))}var Na=["pre-wrap","normal","pre-line","break-spaces"],vi=!1;function Oa(){vi=!1}var Zs=class{constructor(e){this.lineWrapping=e,this.doc=Y.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let r=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((t-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Na.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let r=0;r-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=r,this.textHeight=n,this.lineLength=s,a){this.heightSamples={};for(let u=0;u0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>mn&&(vi=!0),this.height=e)}replace(e,t,r){return i.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,r,n){let s=this,o=r.doc;for(let l=n.length-1;l>=0;l--){let{fromA:a,toA:u,fromB:h,toB:c}=n[l],f=s.lineAt(a,re.ByPosNoHeight,r.setDoc(t),0,0),d=f.to>=u?f:s.lineAt(u,re.ByPosNoHeight,r,0,0);for(c+=d.to-u,u=d.to;l>0&&f.from<=n[l-1].toA;)a=n[l-1].fromA,h=n[l-1].fromB,l--,as*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),r+=1+l.break,n-=l.size}else if(s>n*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,s-=l.size}else break;else if(n=s&&o(this.blockAt(0,r,n,s))}updateHeight(e,t=0,r=!1,n){return n&&n.from<=t&&n.more&&this.setHeight(n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}},$e=class i extends En{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,r,n){return new tt(n,this.length,r,this.height,this.breaks)}replace(e,t,r){let n=r[0];return r.length==1&&(n instanceof i||n instanceof xt&&n.flags&4)&&Math.abs(this.length-n.length)<10?(n instanceof xt?n=new i(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Ie.of(r)}updateHeight(e,t=0,r=!1,n){return n&&n.from<=t&&n.more?this.setHeight(n.heights[n.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},xt=class i extends Ie{constructor(e){super(e,0)}heightMetrics(e,t){let r=e.doc.lineAt(t).number,n=e.doc.lineAt(t+this.length).number,s=n-r+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*s);o=a/s,this.length>s+1&&(l=(this.height-a)/(this.length-s-1))}else o=this.height/s;return{firstLine:r,lastLine:n,perLine:o,perChar:l}}blockAt(e,t,r,n){let{firstLine:s,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,n);if(t.lineWrapping){let u=n+(e0){let s=r[r.length-1];s instanceof i?r[r.length-1]=new i(s.length+n):r.push(null,new i(n-1))}if(e>0){let s=r[0];s instanceof i?r[0]=new i(e+s.length):r.unshift(new i(e-1),null)}return Ie.of(r)}decomposeLeft(e,t){t.push(new i(e-1),null)}decomposeRight(e,t){t.push(null,new i(this.length-e-1))}updateHeight(e,t=0,r=!1,n){let s=t+this.length;if(n&&n.from<=t+this.length&&n.more){let o=[],l=Math.max(t,n.from),a=-1;for(n.from>t&&o.push(new i(n.from-t-1).updateHeight(e,t));l<=s&&n.more;){let h=e.doc.lineAt(l).length;o.length&&o.push(null);let c=n.heights[n.index++];a==-1?a=c:Math.abs(c-a)>=mn&&(a=-2);let f=new $e(h,c);f.outdated=!1,o.push(f),l+=h+1}l<=s&&o.push(null,new i(s-l).updateHeight(e,l));let u=Ie.of(o);return(a<0||Math.abs(u.height-this.height)>=mn||Math.abs(a-this.heightMetrics(e,t).perLine)>=mn)&&(vi=!0),Dn(this,u)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},to=class extends Ie{constructor(e,t,r){super(e.length+t+r.length,e.height+r.height,t|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,t,r,n){let s=r+this.left.height;return el))return u;let h=t==re.ByPosNoHeight?re.ByPosNoHeight:re.ByPos;return a?u.join(this.right.lineAt(l,h,r,o,l)):this.left.lineAt(l,h,r,n,s).join(u)}forEachLine(e,t,r,n,s,o){let l=n+this.left.height,a=s+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,r,l,a,o);else{let u=this.lineAt(a,re.ByPos,r,n,s);e=e&&u.from<=t&&o(u),t>u.to&&this.right.forEachLine(u.to+1,t,r,l,a,o)}}replace(e,t,r){let n=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-n,t-n,r));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let l of r)s.push(l);if(e>0&&Ba(s,o-1),t=r&&t.push(null)),e>r&&this.right.decomposeLeft(e-r,t)}decomposeRight(e,t){let r=this.left.length,n=r+this.break;if(e>=n)return this.right.decomposeRight(e-n,t);e2*t.size||t.size>2*e.size?Ie.of(this.break?[e,null,t]:[e,t]):(this.left=Dn(this.left,e),this.right=Dn(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,r=!1,n){let{left:s,right:o}=this,l=t+s.length+this.break,a=null;return n&&n.from<=t+s.length&&n.more?a=s=s.updateHeight(e,t,r,n):s.updateHeight(e,t,r),n&&n.from<=l+o.length&&n.more?a=o=o.updateHeight(e,l,r,n):o.updateHeight(e,l,r),a?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Ba(i,e){let t,r;i[e]==null&&(t=i[e-1])instanceof xt&&(r=i[e+1])instanceof xt&&i.splice(e-1,3,new xt(t.length+1+r.length))}var gd=5,io=class i{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let r=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof $e?n.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $e(r-this.pos,-1)),this.writtenTo=r,t>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,r){if(e=gd)&&this.addLineDeco(n,s,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new $e(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let r=new xt(t-e);return this.oracle.doc.lineAt(e).to==t&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof $e)return e;let t=new $e(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,r){let n=this.ensureLine();n.length+=r,n.collapsed+=r,n.widgetHeight=Math.max(n.widgetHeight,e),n.breaks+=t,this.writtenTo=this.pos=this.pos+r}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof $e)&&!this.isCovered?this.nodes.push(new $e(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&c.overflow!="visible"){let f=h.getBoundingClientRect();s=Math.max(s,f.left),o=Math.min(o,f.right),l=Math.max(l,f.top),a=Math.min(u==i.parentNode?n.innerHeight:a,f.bottom)}u=c.position=="absolute"||c.position=="fixed"?h.offsetParent:h.parentNode}else if(u.nodeType==11)u=u.host;else break;return{left:s-t.left,right:Math.max(s,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function bd(i,e){let t=i.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var nr=class{constructor(e,t,r){this.from=e,this.to=t,this.size=r}static same(e,t){if(e.length!=t.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new Zs(t),this.stateDeco=e.facet(cr).filter(r=>typeof r!="function"),this.heightMap=Ie.empty().applyChanges(this.stateDeco,Y.empty,this.heightOracle.setDoc(e.doc),[new nt(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=le.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let r=0;r<=1;r++){let n=r?t.head:t.anchor;if(!e.some(({from:s,to:o})=>n>=s&&n<=o)){let{from:s,to:o}=this.lineBlockAt(n);e.push(new mi(s,o))}}return this.viewports=e.sort((r,n)=>r.from-n.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Pa:new so(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Zi(e,this.scaler))})}update(e,t=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(cr).filter(h=>typeof h!="function");let n=e.changedRanges,s=nt.extendWithRanges(n,md(r,this.stateDeco,e?e.changes:_e.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);Oa(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||vi)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let u=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(u||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Rf)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,r=window.getComputedStyle(t),n=this.heightOracle,s=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?me.RTL:me.LTR;let o=this.heightOracle.mustRefreshForWrapping(s),l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let u=0,h=0;if(l.width&&l.height){let{scaleX:E,scaleY:S}=$a(t,l);(E>.005&&Math.abs(this.scaleX-E)>.005||S>.005&&Math.abs(this.scaleY-S)>.005)&&(this.scaleX=E,this.scaleY=S,u|=8,o=a=!0)}let c=(parseInt(r.paddingTop)||0)*this.scaleY,f=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=f)&&(this.paddingTop=c,this.paddingBottom=f,u|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(n.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,u|=8);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=Ua(e.scrollDOM);let p=(this.printing?bd:yd)(t,this.paddingTop),g=p.top-this.pixelViewport.top,y=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let b=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(b!=this.inView&&(this.inView=b,b&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let A=l.width;if((this.contentDOMWidth!=A||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,u|=8),a){let E=e.docView.measureVisibleLineHeights(this.viewport);if(n.mustRefreshForHeights(E)&&(o=!0),o||n.lineWrapping&&Math.abs(A-this.contentDOMWidth)>n.charWidth){let{lineHeight:S,charWidth:N,textHeight:M}=e.docView.measureTextSize();o=S>0&&n.refresh(s,S,N,M,A/N,E),o&&(e.docView.minWidth=0,u|=8)}g>0&&y>0?h=Math.max(g,y):g<0&&y<0&&(h=Math.min(g,y)),Oa();for(let S of this.viewports){let N=S.from==this.viewport.from?E:e.docView.measureVisibleLineHeights(S);this.heightMap=(o?Ie.empty().applyChanges(this.stateDeco,Y.empty,this.heightOracle,[new nt(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(n,0,o,new eo(S.from,N))}vi&&(u|=2)}let w=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return w&&(u&2&&(u|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),u|=this.updateForViewport()),(u&2||w)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),u|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),u}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),n=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new mi(n.lineAt(o-r*1e3,re.ByHeight,s,0,0).from,n.lineAt(l+(1-r)*1e3,re.ByHeight,s,0,0).to);if(t){let{head:u}=t.range;if(ua.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=n.lineAt(u,re.ByPos,s,0,0),f;t.y=="center"?f=(c.top+c.bottom)/2-h/2:t.y=="start"||t.y=="nearest"&&u=l+Math.max(10,Math.min(r,250)))&&n>o-2*1e3&&s>1,o=n<<1;if(this.defaultTextDirection!=me.LTR&&!r)return[];let l=[],a=(h,c,f,d)=>{if(c-hh&&bb.from>=f.from&&b.to<=f.to&&Math.abs(b.from-h)b.fromA));if(!y){if(cb.from<=c&&b.to>=c)){let b=t.moveToLineBoundary(P.cursor(c),!1,!0).head;b>h&&(c=b)}y=new nr(h,c,this.gapSize(f,h,c,d))}l.push(y)},u=h=>{if(h.lengthh.from&&a(h.from,d,h,c),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];he.spans(e,this.viewport.from,this.viewport.to,{span(n,s){t.push({from:n,to:s})},point(){}},20);let r=t.length!=this.visibleRanges.length||this.visibleRanges.some((n,s)=>n.from!=t[s].from||n.to!=t[s].to);return this.visibleRanges=t,r?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Zi(this.heightMap.lineAt(e,re.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Zi(this.heightMap.lineAt(this.scaler.fromDOM(e),re.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Zi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},mi=class{constructor(e,t){this.from=e,this.to=t}};function vd(i,e,t){let r=[],n=i,s=0;return he.spans(t,i,e,{span(){},point(o,l){o>n&&(r.push({from:n,to:o}),s+=o-n),n=l}},20),n=1)return e[e.length-1].to;let r=Math.floor(i*t);for(let n=0;;n++){let{from:s,to:o}=e[n],l=o-s;if(r<=l)return s+r;r-=l}}function fn(i,e){let t=0;for(let{from:r,to:n}of i.ranges){if(e<=n){t+=e-r;break}t+=n-r}return t/i.total}function wd(i,e){for(let t of i)if(e(t))return t}var Pa={toDOM(i){return i},fromDOM(i){return i},scale:1,eq(i){return i==this}},so=class i{constructor(e,t,r){let n=0,s=0,o=0;this.viewports=r.map(({from:l,to:a})=>{let u=t.lineAt(l,re.ByPos,e,0,0).top,h=t.lineAt(a,re.ByPos,e,0,0).bottom;return n+=h-u,{from:l,to:a,top:u,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(t.height-n);for(let l of this.viewports)l.domTop=o+(l.top-s)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),s=l.bottom}toDOM(e){for(let t=0,r=0,n=0;;t++){let s=tt.from==e.viewports[r].from&&t.to==e.viewports[r].to):!1}};function Zi(i,e){if(e.scale==1)return i;let t=e.toDOM(i.top),r=e.toDOM(i.bottom);return new tt(i.from,i.length,t,r-t,Array.isArray(i._content)?i._content.map(n=>Zi(n,e)):i._content)}var dn=$.define({combine:i=>i.join(" ")}),oo=$.define({combine:i=>i.indexOf(!0)>-1}),lo=He.newName(),Mu=He.newName(),Ru=He.newName(),Nu={"&light":"."+Mu,"&dark":"."+Ru};function ao(i,e,t){return new He(e,{finish(r){return/&/.test(r)?r.replace(/&\\w*/,n=>{if(n=="&")return i;if(!t||!t[n])throw new RangeError(`Unsupported selector: ${n}`);return t[n]}):i+" "+r}})}var Ad=ao("."+lo,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:`url(\'data:image/svg+xml,\')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Nu),Cd={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Ps=R.ie&&R.ie_version<=11,uo=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new _s,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let r of t)this.queue.push(r);(R.ie&&R.ie_version<=11||R.ios&&e.composing)&&t.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&e.constructor.EDIT_CONTEXT!==!1&&!(R.chrome&&R.chrome_version<126)&&(this.editContext=new ho(e),e.state.facet(Et)&&(e.contentDOM.editContext=this.editContext.editContext)),Ps&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,r)=>t!=e[r]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,n=this.selectionRange;if(r.state.facet(Et)?r.root.activeElement!=this.dom:!pn(r.dom,n))return;let s=n.anchorNode&&r.docView.nearest(n.anchorNode);if(s&&s.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(R.ie&&R.ie_version<=11||R.android&&R.chrome)&&!r.state.selection.main.empty&&n.focusNode&&er(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=sr(e.root);if(!t)return!1;let r=R.safari&&e.root.nodeType==11&&hf(this.dom.ownerDocument)==this.dom&&Sd(this.view,t)||t;if(!r||this.selectionRange.eq(r))return!1;let n=pn(this.dom,r);return n&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&yi(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(n)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,r=-1,n=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(n=!0),t==-1?{from:t,to:r}=o:(t=Math.min(o.from,t),r=Math.max(o.to,r)))}return{from:t,to:r,typeOver:n}}readChange(){let{from:e,to:t,typeOver:r}=this.processRecords(),n=this.selectionChanged&&pn(this.dom,this.selectionRange);if(e<0&&!n)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Ys(this.view,e,t,r);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let r=this.view.state,n=Au(this.view,t);return this.view.state==r&&(t.domChanged||t.newSel&&!t.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),n}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.flags|=4),e.type=="childList"){let r=La(t,e.previousSibling||e.target.previousSibling,-1),n=La(t,e.nextSibling||e.target.nextSibling,1);return{from:r?t.posAfter(r):t.posAtStart,to:n?t.posBefore(n):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Et)!=e.state.facet(Et)&&(e.view.contentDOM.editContext=e.state.facet(Et)?this.editContext.editContext:null))}destroy(){var e,t,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function La(i,e,t){for(;e;){let r=ee.get(e);if(r&&r.parent==i)return r;let n=e.parentNode;e=n!=i.dom?n:t>0?e.nextSibling:e.previousSibling}return null}function _a(i,e){let t=e.startContainer,r=e.startOffset,n=e.endContainer,s=e.endOffset,o=i.docView.domAtPos(i.state.selection.main.anchor);return er(o.node,o.offset,n,s)&&([t,r,n,s]=[n,s,t,r]),{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}}function Sd(i,e){if(e.getComposedRanges){let n=e.getComposedRanges(i.root)[0];if(n)return _a(i,n)}let t=null;function r(n){n.preventDefault(),n.stopImmediatePropagation(),t=n.getTargetRanges()[0]}return i.contentDOM.addEventListener("beforeinput",r,!0),i.dom.ownerDocument.execCommand("indent"),i.contentDOM.removeEventListener("beforeinput",r,!0),t?_a(i,t):null}var ho=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let{anchor:n}=e.state.selection.main,s={from:this.toEditorPos(r.updateRangeStart),to:this.toEditorPos(r.updateRangeEnd),insert:Y.of(r.text.split(`\n`))};s.from==this.from&&nthis.to&&(s.to=n),!(s.from==s.to&&!s.insert.length)&&(this.pendingContextChange=s,e.state.readOnly||bo(e,s,P.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd))),this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)))},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);o{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,l=s.underlineThickness;if(o!="None"&&l!="None"){let a=`text-decoration: underline ${o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${l=="Thin"?1:2}px`;n.push(le.mark({attributes:{style:a}}).range(this.toEditorPos(s.rangeStart),this.toEditorPos(s.rangeEnd)))}}e.dispatch({effects:du.of(le.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{e.inputState.composing=-1,e.inputState.compositionFirstChange=null};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let n=sr(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,l,a,u)=>{if(r)return;let h=u.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(u)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(sthis.to||this.to-this.from+u.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),u.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange;!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.resetRange(e.state),this.editContext.updateText(0,this.editContext.text.length,e.state.doc.sliceString(this.from,this.to)),this.setSelection(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e){return e+this.from}toContextPos(e){return e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},q=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(n=>n.forEach(s=>r(s,this)))||(n=>this.update(n)),this.dispatch=this.dispatch.bind(this),this._root=e.root||pf(e.parent)||document,this.viewState=new xn(e.state||oe.create(e)),e.scrollTo&&e.scrollTo.is(an)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Xi).map(n=>new rr(n));for(let n of this.plugins)n.update(this);this.observer=new uo(this),this.inputState=new Xs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Cn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let t=e.length==1&&e[0]instanceof Re?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,r=!1,n,s=this.state;for(let f of e){if(f.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn\'t start from the previous state.");s=f.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,l=0,a=null;e.some(f=>f.annotation(xu))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Tu(s,o),a||(l=1));let u=this.observer.delayedAndroidKey,h=null;if(u?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(h=null)):this.observer.clear(),s.facet(oe.phrases)!=this.state.facet(oe.phrases))return this.setState(s);n=An.create(this,s,e),n.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let f of e){if(c&&(c=c.map(f.changes)),f.scrollIntoView){let{main:d}=f.state.selection;c=new ir(d.empty?d:P.cursor(d.head,d.head>d.anchor?-1:1))}for(let d of f.effects)d.is(an)&&(c=d.value.clip(this.state))}this.viewState.update(n,c),this.bidiCache=Tn.update(this.bidiCache,n.changes),n.empty||(this.updatePlugins(n),this.inputState.update(n)),t=this.docView.update(n),this.state.facet(Ji)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(f=>f.isUserEvent("select.pointer")))}finally{this.updateState=0}if(n.startState.facet(dn)!=n.state.facet(dn)&&(this.viewState.mustMeasureContent=!0),(t||r||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!n.empty)for(let f of this.state.facet(js))try{f(n)}catch(d){ze(this.state,d,"update listener")}(a||h)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),h&&!Au(this,h)&&u.force&&yi(this.contentDOM,u.key,u.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new xn(e),this.plugins=e.facet(Xi).map(r=>new rr(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new Cn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Xi),r=e.state.facet(Xi);if(t!=r){let n=[];for(let s of r){let o=t.indexOf(s);if(o<0)n.push(new rr(s));else{let l=this.plugins[o];l.mustUpdate=e,n.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=n,this.pluginMap.clear()}else for(let n of this.plugins)n.mustUpdate=e;for(let n=0;n-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,r=this.scrollDOM,n=r.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:o}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(Ua(r))s=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(n);s=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure(this);if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];a&4||([this.measureRequests,u]=[u,this.measureRequests]);let h=u.map(d=>{try{return d.read(this)}catch(p){return ze(this.state,p),Ia}}),c=An.create(this,this.state,[]),f=!1;c.flags|=a,t?t.flags|=a:t=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),f=this.docView.update(c),f&&this.docViewUpdate());for(let d=0;d1||p<-1){n=n+p,r.scrollTop=n/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(js))l(t)}get themeClasses(){return lo+" "+(this.state.facet(oo)?Ru:Mu)+" "+this.state.facet(dn)}updateAttrs(){let e=Fa(this,pu,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(Et)?"true":"false",class:"cm-content",style:`${R.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Fa(this,mo,t);let r=this.observer.ignore(()=>{let n=Vs(this.contentDOM,this.contentAttrs,t),s=Vs(this.dom,this.editorAttrs,e);return n||s});return this.editorAttrs=e,this.contentAttrs=t,r}showAnnouncements(e){let t=!0;for(let r of e)for(let n of r.effects)if(n.is(i.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=n.value}}mountStyles(){this.styleModules=this.state.facet(Ji);let e=this.state.facet(i.cspNonce);He.mount(this.root,this.styleModules.concat(Ad).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn\'t allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;tr.spec==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,r){return Bs(this,e,Aa(this,e,t,r))}moveByGroup(e,t){return Bs(this,e,Aa(this,e,t,r=>jf(this,e.head,r)))}visualLineSide(e,t){let r=this.bidiSpans(e),n=this.textDirectionAt(e.from),s=r[t?r.length-1:0];return P.cursor(s.side(t,n)+e.from,s.forward(!t,n)?1:-1)}moveToLineBoundary(e,t,r=!0){return zf(this,e,t,r)}moveVertically(e,t,r){return Bs(this,e,Gf(this,e,t,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),wu(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let r=this.docView.coordsAt(e,t);if(!r||r.left==r.right)return r;let n=this.state.doc.lineAt(e),s=this.bidiSpans(n),o=s[it.find(s,e-n.from,-1,t)];return kn(r,o.dir==me.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(cu)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Dd)return ru(e.length);let t=this.textDirectionAt(e.from),r;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||iu(s.isolates,r=ma(this,e))))return s.order;r||(r=ma(this,e));let n=Tf(e.text,t,r);return this.bidiCache.push(new Tn(e.from,e.to,t,r,!0,n)),n}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||R.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Va(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return an.of(new ir(typeof e=="number"?P.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return an.of(new ir(P.cursor(r.from),"start","start",r.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Jt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Jt.define(()=>({}),{eventObservers:e})}static theme(e,t){let r=He.newName(),n=[dn.of(r),Ji.of(ao(`.${r}`,e))];return t&&t.dark&&n.push(oo.of(!0)),n}static baseTheme(e){return nn.lowest(Ji.of(ao("."+lo,e,Nu)))}static findFromDOM(e){var t;let r=e.querySelector(".cm-content"),n=r&&ee.get(r)||ee.get(e);return((t=n==null?void 0:n.rootView)===null||t===void 0?void 0:t.view)||null}};q.styleModule=Ji;q.inputHandler=uu;q.clipboardInputFilter=po;q.clipboardOutputFilter=go;q.scrollHandler=fu;q.focusChangeEffect=hu;q.perLineTextDirection=cu;q.exceptionSink=au;q.updateListener=js;q.editable=Et;q.mouseSelectionStyle=lu;q.dragMovesSelection=ou;q.clickAddsSelectionRange=su;q.decorations=cr;q.outerDecorations=gu;q.atomicRanges=yo;q.bidiIsolatedRanges=mu;q.scrollMargins=yu;q.darkTheme=oo;q.cspNonce=$.define({combine:i=>i.length?i[0]:""});q.contentAttributes=mo;q.editorAttributes=pu;q.lineWrapping=q.contentAttributes.of({class:"cm-lineWrapping"});q.announce=se.define();var Dd=4096,Ia={},Tn=class i{constructor(e,t,r,n,s,o){this.from=e,this.to=t,this.dir=r,this.isolates=n,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let r=[],n=e.length?e[e.length-1].dir:me.LTR;for(let s=Math.max(0,e.length-10);s=0;n--){let s=r[n],o=typeof s=="function"?s(i):s;o&&$s(o,t)}return t}var Ob=R.mac?"mac":R.windows?"win":R.linux?"linux":"key";var Ed=!R.ios;var Ha={".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"}},".cm-content":{"& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}};Ed&&(Ha[".cm-line"].caretColor=Ha[".cm-content"].caretColor="transparent !important");var Bb=/x/.unicode!=null?"gu":"g";var Pb=q.baseTheme({".cm-tooltip":{zIndex:100,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"\'\'",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var vt=class extends yt{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};vt.prototype.elementClass="";vt.prototype.toDOM=void 0;vt.prototype.mapMode=Me.TrackBefore;vt.prototype.startSide=vt.prototype.endSide=-1;vt.prototype.point=!0;var xd=Function.prototype.toString,vo=Object.create,Td=Object.prototype.toString,kd=function(){function i(){this._keys=[],this._values=[]}return i.prototype.has=function(e){return!!~this._keys.indexOf(e)},i.prototype.get=function(e){return this._values[this._keys.indexOf(e)]},i.prototype.set=function(e,t){this._keys.push(e),this._values.push(t)},i}();function Md(){return new kd}function Rd(){return new WeakMap}var Nd=typeof WeakMap!="undefined"?Rd:Md;function Ao(i){if(!i)return vo(null);var e=i.constructor;if(e===Object)return i===Object.prototype?{}:vo(i);if(e&&~xd.call(e).indexOf("[native code]"))try{return new e}catch(t){}return vo(i)}function Od(i){var e="";return i.global&&(e+="g"),i.ignoreCase&&(e+="i"),i.multiline&&(e+="m"),i.unicode&&(e+="u"),i.sticky&&(e+="y"),e}function Bd(i){return i.flags}var Pd=/test/g.flags==="g"?Bd:Od;function Ou(i){var e=Td.call(i);return e.substring(8,e.length-1)}function Ld(i){return i[Symbol.toStringTag]||Ou(i)}var _d=typeof Symbol!="undefined"?Ld:Ou,Id=Object.defineProperty,Fd=Object.getOwnPropertyDescriptor,Bu=Object.getOwnPropertyNames,Co=Object.getOwnPropertySymbols,Pu=Object.prototype,Lu=Pu.hasOwnProperty,Hd=Pu.propertyIsEnumerable,_u=typeof Co=="function";function $d(i){return Bu(i).concat(Co(i))}var Vd=_u?$d:Bu;function On(i,e,t){for(var r=Vd(i),n=0,s=r.length,o=void 0,l=void 0;n{throw new Error("This node type doesn\'t define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can\'t add per-node props to node types");return typeof e!="function"&&(e=Fe.match(e)),t=>{let r=e(t);return r===void 0?null:[this,r]}}};J.closedBy=new J({deserialize:i=>i.split(" ")});J.openedBy=new J({deserialize:i=>i.split(" ")});J.group=new J({deserialize:i=>i.split(" ")});J.isolate=new J({deserialize:i=>{if(i&&i!="rtl"&&i!="ltr"&&i!="auto")throw new RangeError("Invalid value for isolate: "+i);return i||"auto"}});J.contextHash=new J({perNode:!0});J.lookAhead=new J({perNode:!0});J.mounted=new J({perNode:!0});var wi=class{constructor(e,t,r){this.tree=e,this.overlay=t,this.parser=r}static get(e){return e&&e.props&&e.props[J.mounted.id]}},lp=Object.create(null),Fe=class i{constructor(e,t,r,n=0){this.name=e,this.props=t,this.id=r,this.flags=n}static define(e){let t=e.props&&e.props.length?Object.create(null):lp,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),n=new i(e.name||"",t,e.id,r);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(n)),s){if(s[0].perNode)throw new RangeError("Can\'t store a per-node prop on a node type");t[s[0].id]=s[1]}}return n}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(J.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let n of r.split(" "))t[n]=e[r];return r=>{for(let n=r.prop(J.group),s=-1;s<(n?n.length:0);s++){let o=t[s<0?r.name:n[s]];if(o)return o}}}};Fe.none=new Fe("",Object.create(null),0,8);var Bn=new WeakMap,qu=new WeakMap,ye;(function(i){i[i.ExcludeBuffers=1]="ExcludeBuffers",i[i.IncludeAnonymous=2]="IncludeAnonymous",i[i.IgnoreMounts=4]="IgnoreMounts",i[i.IgnoreOverlays=8]="IgnoreOverlays"})(ye||(ye={}));var Ee=class i{constructor(e,t,r,n,s){if(this.type=e,this.children=t,this.positions=r,this.length=n,this.props=null,s&&s.length){this.props=Object.create(null);for(let[o,l]of s)this.props[typeof o=="number"?o:o.id]=l}}toString(){let e=wi.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let r of this.children){let n=r.toString();n&&(t&&(t+=","),t+=n)}return this.type.name?(/\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new gr(this.topNode,e)}cursorAt(e,t=0,r=0){let n=Bn.get(this)||this.topNode,s=new gr(n);return s.moveTo(e,t),Bn.set(this,s._tree),s}get topNode(){return new ot(this,0,0,null)}resolve(e,t=0){let r=dr(Bn.get(this)||this.topNode,e,t,!1);return Bn.set(this,r),r}resolveInner(e,t=0){let r=dr(qu.get(this)||this.topNode,e,t,!0);return qu.set(this,r),r}resolveStack(e,t=0){return ap(this,e,t)}iterate(e){let{enter:t,leave:r,from:n=0,to:s=this.length}=e,o=e.mode||0,l=(o&ye.IncludeAnonymous)>0;for(let a=this.cursor(o|ye.IncludeAnonymous);;){let u=!1;if(a.from<=s&&a.to>=n&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;u=!0}for(;u&&r&&(l||!a.type.isAnonymous)&&r(a),!a.nextSibling();){if(!a.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Ro(Fe.none,this.children,this.positions,0,this.children.length,0,this.length,(t,r,n)=>new i(this.type,t,r,n,this.propValues),e.makeTree||((t,r,n)=>new i(Fe.none,t,r,n)))}static build(e){return up(e)}};Ee.empty=new Ee(Fe.none,[],[],0);var Do=class i{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new i(this.buffer,this.index)}},Rt=class i{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return Fe.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,r){let n=this.buffer,s=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&r>e;case 2:return r>e;case 4:return!0}}function dr(i,e,t,r){for(var n;i.from==i.to||(t<1?i.from>=e:i.from>e)||(t>-1?i.to<=e:i.to0?l.length:-1;e!=u;e+=t){let h=l[e],c=a[e]+o.from;if(zu(n,r,c,c+h.length)){if(h instanceof Rt){if(s&ye.ExcludeBuffers)continue;let f=h.findChild(0,h.buffer.length,t,r-c,n);if(f>-1)return new pr(new xo(o,h,e,c),null,f)}else if(s&ye.IncludeAnonymous||!h.type.isAnonymous||Mo(h)){let f;if(!(s&ye.IgnoreMounts)&&(f=wi.get(h))&&!f.overlay)return new i(f.tree,c,e,o);let d=new i(h,c,e,o);return s&ye.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(t<0?h.children.length-1:0,t,r,n)}}}if(s&ye.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,r=0){let n;if(!(r&ye.IgnoreOverlays)&&(n=wi.get(this._tree))&&n.overlay){let s=e-this.from;for(let{from:o,to:l}of n.overlay)if((t>0?o<=s:o=s:l>s))return new i(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function Uu(i,e,t,r){let n=i.cursor(),s=[];if(!n.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=n.type.is(t),!n.nextSibling())return s}for(;;){if(r!=null&&n.type.is(r))return s;if(n.type.is(e)&&s.push(n.node),!n.nextSibling())return r==null?s:[]}}function Eo(i,e,t=e.length-1){for(let r=i.parent;t>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[t]&&e[t]!=r.name)return!1;t--}}return!0}var xo=class{constructor(e,t,r,n){this.parent=e,this.buffer=t,this.index=r,this.start=n}},pr=class i extends Ln{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.context.start,r);return s<0?null:new i(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,r=0){if(r&ye.ExcludeBuffers)return null;let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new i(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new i(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new i(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:r}=this.context,n=this.index+4,s=r.buffer[this.index+3];if(s>n){let o=r.buffer[this.index+1];e.push(r.slice(n,s,o)),t.push(0)}return new Ee(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ju(i){if(!i.length)return null;let e=0,t=i[0];for(let s=1;st.from||o.to=e){let l=new ot(o.tree,o.overlay[0].from+s.from,-1,s);(n||(n=[r])).push(dr(l,e,t,!1))}}return n?ju(n):r}var gr=class{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ot)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:r,buffer:n}=this.buffer;return this.type=t||n.set.types[n.buffer[e]],this.from=r+n.buffer[e+1],this.to=r+n.buffer[e+2],!0}yield(e){return e?e instanceof ot?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:n}=this.buffer,s=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.buffer.start,r);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?r&ye.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ye.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ye.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let n=r<0?0:this.stack[r]+4;if(this.index!=n)return this.yieldBuf(t.findChild(n,this.index,-1,0,4))}else{let n=t.buffer[this.index+3];if(n<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(n)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:n}=this;if(n){if(e>0){if(this.index-1)for(let s=t+e,o=e<0?-1:r._tree.children.length;s!=o;s+=e){let l=r._tree.children[s];if(this.mode&ye.IncludeAnonymous||l instanceof Rt||!l.type.isAnonymous||Mo(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==n){if(n==this.index)return o;t=o,r=s+1;break e}n=this.stack[--s]}for(let n=r;n=0;s--){if(s<0)return Eo(this.node,e,n);let o=r[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[n]&&e[n]!=o.name)return!1;n--}}return!0}};function Mo(i){return i.children.some(e=>e instanceof Rt||!e.type.isAnonymous||Mo(e))}function up(i){var e;let{buffer:t,nodeSet:r,maxBufferLength:n=1024,reused:s=[],minRepeatType:o=r.types.length}=i,l=Array.isArray(t)?new Do(t,t.length):t,a=r.types,u=0,h=0;function c(S,N,M,j,D,H){let{id:B,start:O,end:W,size:I}=l,te=h;for(;I<0;)if(l.next(),I==-1){let K=s[B];M.push(K),j.push(O-S);return}else if(I==-3){u=B;return}else if(I==-4){h=B;return}else throw new RangeError(`Unrecognized record size: ${I}`);let Ce=a[B],F,Se,k=O-S;if(W-O<=n&&(Se=y(l.pos-N,D))){let K=new Uint16Array(Se.size-Se.skip),ue=l.pos-Se.size,pe=K.length;for(;l.pos>ue;)pe=b(Se.start,K,pe);F=new Rt(K,W-Se.start,r),k=Se.start-S}else{let K=l.pos-I;l.next();let ue=[],pe=[],Je=B>=o?B:-1,pt=0,Ht=W;for(;l.pos>K;)Je>=0&&l.id==Je&&l.size>=0?(l.end<=Ht-n&&(p(ue,pe,O,pt,l.end,Ht,Je,te),pt=ue.length,Ht=l.end),l.next()):H>2500?f(O,K,ue,pe):c(O,K,ue,pe,Je,H+1);if(Je>=0&&pt>0&&pt-1&&pt>0){let Wi=d(Ce);F=Ro(Ce,ue,pe,0,ue.length,0,W-O,Wi,Wi)}else F=g(Ce,ue,pe,W-O,te-W)}M.push(F),j.push(k)}function f(S,N,M,j){let D=[],H=0,B=-1;for(;l.pos>N;){let{id:O,start:W,end:I,size:te}=l;if(te>4)l.next();else{if(B>-1&&W=0;I-=3)O[te++]=D[I],O[te++]=D[I+1]-W,O[te++]=D[I+2]-W,O[te++]=te;M.push(new Rt(O,D[2]-W,r)),j.push(W-S)}}function d(S){return(N,M,j)=>{let D=0,H=N.length-1,B,O;if(H>=0&&(B=N[H])instanceof Ee){if(!H&&B.type==S&&B.length==j)return B;(O=B.prop(J.lookAhead))&&(D=M[H]+B.length+O)}return g(S,N,M,j,D)}}function p(S,N,M,j,D,H,B,O){let W=[],I=[];for(;S.length>j;)W.push(S.pop()),I.push(N.pop()+M-D);S.push(g(r.types[B],W,I,H-D,O-H)),N.push(D-M)}function g(S,N,M,j,D=0,H){if(u){let B=[J.contextHash,u];H=H?[B].concat(H):[B]}if(D>25){let B=[J.lookAhead,D];H=H?[B].concat(H):[B]}return new Ee(S,N,M,j,H)}function y(S,N){let M=l.fork(),j=0,D=0,H=0,B=M.end-n,O={size:0,start:0,skip:0};e:for(let W=M.pos-S;M.pos>W;){let I=M.size;if(M.id==N&&I>=0){O.size=j,O.start=D,O.skip=H,H+=4,j+=4,M.next();continue}let te=M.pos-I;if(I<0||te=o?4:0,F=M.start;for(M.next();M.pos>te;){if(M.size<0)if(M.size==-3)Ce+=4;else break e;else M.id>=o&&(Ce+=4);M.next()}D=F,j+=I,H+=Ce}return(N<0||j==S)&&(O.size=j,O.start=D,O.skip=H),O.size>4?O:void 0}function b(S,N,M){let{id:j,start:D,end:H,size:B}=l;if(l.next(),B>=0&&j4){let W=l.pos-(B-4);for(;l.pos>W;)M=b(S,N,M)}N[--M]=O,N[--M]=H-S,N[--M]=D-S,N[--M]=j}else B==-3?u=j:B==-4&&(h=j);return M}let A=[],w=[];for(;l.pos>0;)c(i.start||0,i.bufferStart||0,A,w,-1,0);let E=(e=i.length)!==null&&e!==void 0?e:A.length?w[0]+A[0].length:0;return new Ee(a[i.topID],A.reverse(),w.reverse(),E)}var Wu=new WeakMap;function Pn(i,e){if(!i.isAnonymous||e instanceof Rt||e.type!=i)return 1;let t=Wu.get(e);if(t==null){t=1;for(let r of e.children){if(r.type!=i||!(r instanceof Ee)){t=1;break}t+=Pn(i,r)}Wu.set(e,t)}return t}function Ro(i,e,t,r,n,s,o,l,a){let u=0;for(let p=r;p=h)break;N+=M}if(w==E+1){if(N>h){let M=p[E];d(M.children,M.positions,0,M.children.length,g[E]+A);continue}c.push(p[E])}else{let M=g[w-1]+p[w-1].length-S;c.push(Ro(i,p,g,E,w,S,M,null,a))}f.push(S+A-s)}}return d(e,t,r,n,0),(l||a)(c,f,o)}var Qt=class i{constructor(e,t,r,n,s=!1,o=!1){this.from=e,this.to=t,this.tree=r,this.offset=n,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=!1){let n=[new i(0,e.length,e,0,!1,r)];for(let s of t)s.to>e.length&&n.push(s);return n}static applyChanges(e,t,r=128){if(!t.length)return e;let n=[],s=1,o=e.length?e[0]:null;for(let l=0,a=0,u=0;;l++){let h=l=r)for(;o&&o.from=f.from||c<=f.to||u){let d=Math.max(f.from,a)-u,p=Math.min(f.to,c)-u;f=d>=p?null:new i(d,p,f.tree,f.offset+u,l>0,!!h)}if(f&&n.push(f),o.to>c)break;o=snew fr(n.from,n.to)):[new fr(0,0)]:[new fr(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){let n=this.startParse(e,t,r);for(;;){let s=n.advance();if(s)return s}}},ko=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var Fb=new J({perNode:!0});var hp=0,Ge=class i{constructor(e,t,r,n){this.name=e,this.set=t,this.base=r,this.modified=n,this.id=hp++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let r=typeof e=="string"?e:"?";if(e instanceof i&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let n=new i(r,[],null,[]);if(n.set.push(n),t)for(let s of t.set)n.set.push(s);return n}static defineModifier(e){let t=new $n(e);return r=>r.modified.indexOf(t)>-1?r:$n.get(r.base||r,r.modified.concat(t).sort((n,s)=>n.id-s.id))}},cp=0,$n=class i{constructor(e){this.name=e,this.instances=[],this.id=cp++}static get(e,t){if(!t.length)return e;let r=t[0].instances.find(l=>l.base==e&&fp(t,l.modified));if(r)return r;let n=[],s=new Ge(e.name,n,e,t);for(let l of t)l.instances.push(s);let o=dp(t);for(let l of e.set)if(!l.modified.length)for(let a of o)n.push(i.get(l,a));return s}};function fp(i,e){return i.length==e.length&&i.every((t,r)=>t==e[r])}function dp(i){let e=[[]];for(let t=0;tr.length-t.length)}function Yu(i){let e=Object.create(null);for(let t in i){let r=i[t];Array.isArray(r)||(r=[r]);for(let n of t.split(" "))if(n){let s=[],o=2,l=n;for(let c=0;;){if(l=="..."&&c>0&&c+3==n.length){o=1;break}let f=/^"(?:[^"\\\\]|\\\\.)*?"|[^\\/!]+/.exec(l);if(!f)throw new RangeError("Invalid path: "+n);if(s.push(f[0]=="*"?"":f[0][0]==\'"\'?JSON.parse(f[0]):f[0]),c+=f[0].length,c==n.length)break;let d=n[c++];if(c==n.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+n);l=n.slice(c)}let a=s.length-1,u=s[a];if(!u)throw new RangeError("Invalid path: "+n);let h=new Ai(r,o,a>0?s.slice(0,a):null);e[u]=h.sort(e[u])}}return Xu.add(e)}var Xu=new J,Ai=class{constructor(e,t,r,n){this.tags=e,this.mode=t,this.context=r,this.next=n}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=n;for(let l of s)for(let a of l.set){let u=t[a.id];if(u){o=o?o+" "+u:u;break}}return o},scope:r}}function pp(i,e){let t=null;for(let r of i){let n=r.style(e);n&&(t=t?t+" "+n:n)}return t}function Ju(i,e,t,r=0,n=i.length){let s=new Oo(r,Array.isArray(e)?e:[e],t);s.highlightRange(i.cursor(),r,n,"",s.highlighters),s.flush(n)}var Oo=class{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,r,n,s){let{type:o,from:l,to:a}=e;if(l>=r||a<=t)return;o.isTop&&(s=this.highlighters.filter(d=>!d.scope||d.scope(o)));let u=n,h=gp(e)||Ai.empty,c=pp(s,h.tags);if(c&&(u&&(u+=" "),u+=c,h.mode==1&&(n+=(n?" ":"")+c)),this.startSpan(Math.max(t,l),u),h.opaque)return;let f=e.tree&&e.tree.prop(J.mounted);if(f&&f.overlay){let d=e.node.enter(f.overlay[0].from+l,1),p=this.highlighters.filter(y=>!y.scope||y.scope(f.tree.type)),g=e.firstChild();for(let y=0,b=l;;y++){let A=y=w||!e.nextSibling())););if(!A||w>r)break;b=A.to+l,b>t&&(this.highlightRange(d.cursor(),Math.max(t,A.from+l),Math.min(r,b),"",p),this.startSpan(Math.min(r,b),u))}g&&e.parent()}else if(e.firstChild()){f&&(n="");do if(!(e.to<=t)){if(e.from>=r)break;this.highlightRange(e,t,r,n,s),this.startSpan(Math.min(r,e.to),u)}while(e.nextSibling());e.parent()}}};function gp(i){let e=i.type.prop(Xu);for(;e&&e.context&&!i.matchContext(e.context);)e=e.next;return e||null}var C=Ge.define,In=C(),Nt=C(),Gu=C(Nt),Ku=C(Nt),Ot=C(),Fn=C(Ot),No=C(Ot),ut=C(),Zt=C(ut),lt=C(),at=C(),Bo=C(),mr=C(Bo),Hn=C(),m={comment:In,lineComment:C(In),blockComment:C(In),docComment:C(In),name:Nt,variableName:C(Nt),typeName:Gu,tagName:C(Gu),propertyName:Ku,attributeName:C(Ku),className:C(Nt),labelName:C(Nt),namespace:C(Nt),macroName:C(Nt),literal:Ot,string:Fn,docString:C(Fn),character:C(Fn),attributeValue:C(Fn),number:No,integer:C(No),float:C(No),bool:C(Ot),regexp:C(Ot),escape:C(Ot),color:C(Ot),url:C(Ot),keyword:lt,self:C(lt),null:C(lt),atom:C(lt),unit:C(lt),modifier:C(lt),operatorKeyword:C(lt),controlKeyword:C(lt),definitionKeyword:C(lt),moduleKeyword:C(lt),operator:at,derefOperator:C(at),arithmeticOperator:C(at),logicOperator:C(at),bitwiseOperator:C(at),compareOperator:C(at),updateOperator:C(at),definitionOperator:C(at),typeOperator:C(at),controlOperator:C(at),punctuation:Bo,separator:C(Bo),bracket:mr,angleBracket:C(mr),squareBracket:C(mr),paren:C(mr),brace:C(mr),content:ut,heading:Zt,heading1:C(Zt),heading2:C(Zt),heading3:C(Zt),heading4:C(Zt),heading5:C(Zt),heading6:C(Zt),contentSeparator:C(ut),list:C(ut),quote:C(ut),emphasis:C(ut),strong:C(ut),link:C(ut),monospace:C(ut),strikethrough:C(ut),inserted:C(),deleted:C(),changed:C(),invalid:C(),meta:Hn,documentMeta:C(Hn),annotation:C(Hn),processingInstruction:C(Hn),definition:Ge.defineModifier("definition"),constant:Ge.defineModifier("constant"),function:Ge.defineModifier("function"),standard:Ge.defineModifier("standard"),local:Ge.defineModifier("local"),special:Ge.defineModifier("special")};for(let i in m){let e=m[i];e instanceof Ge&&(e.name=i)}var Vb=Po([{tag:m.link,class:"tok-link"},{tag:m.heading,class:"tok-heading"},{tag:m.emphasis,class:"tok-emphasis"},{tag:m.strong,class:"tok-strong"},{tag:m.keyword,class:"tok-keyword"},{tag:m.atom,class:"tok-atom"},{tag:m.bool,class:"tok-bool"},{tag:m.url,class:"tok-url"},{tag:m.labelName,class:"tok-labelName"},{tag:m.inserted,class:"tok-inserted"},{tag:m.deleted,class:"tok-deleted"},{tag:m.literal,class:"tok-literal"},{tag:m.string,class:"tok-string"},{tag:m.number,class:"tok-number"},{tag:[m.regexp,m.escape,m.special(m.string)],class:"tok-string2"},{tag:m.variableName,class:"tok-variableName"},{tag:m.local(m.variableName),class:"tok-variableName tok-local"},{tag:m.definition(m.variableName),class:"tok-variableName tok-definition"},{tag:m.special(m.variableName),class:"tok-variableName2"},{tag:m.definition(m.propertyName),class:"tok-propertyName tok-definition"},{tag:m.typeName,class:"tok-typeName"},{tag:m.namespace,class:"tok-namespace"},{tag:m.className,class:"tok-className"},{tag:m.macroName,class:"tok-macroName"},{tag:m.propertyName,class:"tok-propertyName"},{tag:m.operator,class:"tok-operator"},{tag:m.comment,class:"tok-comment"},{tag:m.meta,class:"tok-meta"},{tag:m.invalid,class:"tok-invalid"},{tag:m.punctuation,class:"tok-punctuation"}]);var Lo,br=new J;var mp=new J,qe=class{constructor(e,t,r=[],n=""){this.data=e,this.name=n,oe.prototype.hasOwnProperty("tree")||Object.defineProperty(oe.prototype,"tree",{get(){return vr(this)}}),this.parser=t,this.extension=[Ci.of(this),oe.languageData.of((s,o,l)=>{let a=Qu(s,o,l),u=a.type.prop(br);if(!u)return[];let h=s.facet(u),c=a.type.prop(mp);if(c){let f=a.resolve(o-a.from,l);for(let d of c)if(d.test(f,s)){let p=s.facet(d.facet);return d.type=="replace"?p:p.concat(h)}}return h})].concat(r)}isActiveAt(e,t,r=-1){return Qu(e,t,r).type.prop(br)==this.data}findRegions(e){let t=e.facet(Ci);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],n=(s,o)=>{if(s.prop(br)==this.data){r.push({from:o,to:o+s.length});return}let l=s.prop(J.mounted);if(l){if(l.tree.prop(br)==this.data){if(l.overlay)for(let a of l.overlay)r.push({from:a.from+o,to:a.to+o});else r.push({from:o,to:o+s.length});return}else if(l.overlay){let a=r.length;if(n(l.tree,l.overlay[0].from+o),r.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}},yr=null,$o=class i{constructor(e,t,r=[],n,s,o,l,a){this.parser=e,this.state=t,this.fragments=r,this.tree=n,this.treeLen=s,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new i(e,t,[],Ee.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Ho(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=Ee.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let n=Date.now()+e;e=()=>Date.now()>n}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Qt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=yr;yr=this;try{return e()}finally{yr=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Zu(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:n,treeLen:s,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((u,h,c,f)=>a.push({fromA:u,toA:h,fromB:c,toB:f})),r=Qt.applyChanges(r,a),n=Ee.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let u of this.skipped){let h=e.mapPos(u.from,1),c=e.mapPos(u.to,-1);he.from&&(this.fragments=Zu(this.fragments,n,s),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends _n{createParse(t,r,n){let s=n[0].from,o=n[n.length-1].to;return{parsedPos:s,advance(){let a=yr;if(a){for(let u of n)a.tempSkipped.push(u);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new Ee(Fe.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return yr}};function Zu(i,e,t){return Qt.applyChanges(i,[{fromA:e,toA:t,fromB:e,toB:t}])}var wr=class i{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new i(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=$o.create(e.facet(Ci).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new i(r)}};qe.state=gt.define({create:wr.init,update(i,e){for(let t of e.effects)if(t.is(qe.setState))return t.value;return e.startState.facet(Ci)!=e.state.facet(Ci)?wr.init(e.state):i.apply(e)}});var rh=i=>{let e=setTimeout(()=>i(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(rh=i=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(i,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var _o=typeof navigator!="undefined"&&(!((Lo=navigator.scheduling)===null||Lo===void 0)&&Lo.isInputPending)?()=>navigator.scheduling.isInputPending():null,yp=Jt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(qe.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(qe.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=rh(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndn+1e3,a=s.context.work(()=>_o&&_o()||Date.now()>o,n+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:qe.setState.of(new wr(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>ze(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Ci=$.define({combine(i){return i.length?i[0]:null},enables:i=>[qe.state,yp,q.contentAttributes.compute([i],e=>{let t=e.facet(i);return t&&t.name?{"data-language":t.name}:{}})]});var Bt=class i{constructor(e,t){this.specs=e;let r;function n(l){let a=He.newName();return(r||(r=Object.create(null)))["."+a]=l,a}let s=typeof t.all=="string"?t.all:t.all?n(t.all):void 0,o=t.scope;this.scope=o instanceof qe?l=>l.prop(br)==o.data:o?l=>l==o:void 0,this.style=Po(e.map(l=>({tag:l.tag,class:l.class||n(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=r?new He(r):null,this.themeType=t.themeType}static define(e,t){return new i(e,t||{})}},Vo=$.define(),nh=$.define({combine(i){return i.length?[i[0]]:null}});function Io(i){let e=i.facet(Vo);return e.length?e:i.facet(nh)}function Vn(i,e){let t=[bp],r;return i instanceof Bt&&(i.module&&t.push(q.styleModule.of(i.module)),r=i.themeType),e!=null&&e.fallback?t.push(nh.of(i)):r?t.push(Vo.computeN([q.darkTheme],n=>n.facet(q.darkTheme)==(r=="dark")?[i]:[])):t.push(Vo.of(i)),t}var qo=class{constructor(e){this.markCache=Object.create(null),this.tree=vr(e.state),this.decorations=this.buildDeco(e,Io(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=vr(e.state),r=Io(e.state),n=r!=Io(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||n)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return le.none;let r=new zt;for(let{from:n,to:s}of e.visibleRanges)Ju(this.tree,t,(o,l,a)=>{r.add(o,l,this.markCache[a]||(this.markCache[a]=le.mark({class:a})))},n,s);return r.finish()}},bp=nn.high(Jt.fromClass(qo,{decorations:i=>i.decorations})),Jb=Bt.define([{tag:m.meta,color:"#404740"},{tag:m.link,textDecoration:"underline"},{tag:m.heading,textDecoration:"underline",fontWeight:"bold"},{tag:m.emphasis,fontStyle:"italic"},{tag:m.strong,fontWeight:"bold"},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.keyword,color:"#708"},{tag:[m.atom,m.bool,m.url,m.contentSeparator,m.labelName],color:"#219"},{tag:[m.literal,m.inserted],color:"#164"},{tag:[m.string,m.deleted],color:"#a11"},{tag:[m.regexp,m.escape,m.special(m.string)],color:"#e40"},{tag:m.definition(m.variableName),color:"#00f"},{tag:m.local(m.variableName),color:"#30a"},{tag:[m.typeName,m.namespace],color:"#085"},{tag:m.className,color:"#167"},{tag:[m.special(m.variableName),m.macroName],color:"#256"},{tag:m.definition(m.propertyName),color:"#00c"},{tag:m.comment,color:"#940"},{tag:m.invalid,color:"#f00"}]);var vp=Object.create(null),eh=[Fe.none];var th=[],ih=Object.create(null),wp=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])wp[i]=Ap(vp,e);function Fo(i,e){th.indexOf(i)>-1||(th.push(i),console.warn(e))}function Ap(i,e){let t=[];for(let l of e.split(" ")){let a=[];for(let u of l.split(".")){let h=i[u]||m[u];h?typeof h=="function"?a.length?a=a.map(h):Fo(u,`Modifier ${u} used at start of tag`):a.length?Fo(u,`Tag ${u} used as modifier`):a=Array.isArray(h)?h:[h]:Fo(u,`Unknown highlighting tag ${u}`)}for(let u of a)t.push(u)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),n=r+" "+t.map(l=>l.id),s=ih[n];if(s)return s.id;let o=ih[n]=Fe.define({id:eh.length,name:r,props:[Yu({[r]:t})]});return eh.push(o),o.id}var Qb={rtl:le.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:me.RTL}),ltr:le.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:me.LTR}),auto:le.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Cp="#abb2bf",Sp="#7d8799",Dp="#ffffff",Ep="#21252b",Uo="rgba(0, 0, 0, 0.5)",xp="#292d3e",Wo="#353a42",Tp="rgba(128, 203, 196, 0.2)",sh="#ffcc00",kp=q.theme({"&":{color:"#ffffff",backgroundColor:xp},".cm-content":{caretColor:sh},"&.cm-focused .cm-cursor":{borderLeftColor:sh},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Tp},".cm-panels":{backgroundColor:Ep,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:Uo},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"#292d3e",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:Uo},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Wo},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Wo,borderBottomColor:Wo},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Uo,color:Cp}}},{dark:!0}),Mp=Bt.define([{tag:m.keyword,color:"#c792ea"},{tag:m.operator,color:"#89ddff"},{tag:m.special(m.variableName),color:"#eeffff"},{tag:m.typeName,color:"#f07178"},{tag:m.atom,color:"#f78c6c"},{tag:m.number,color:"#ff5370"},{tag:m.definition(m.variableName),color:"#82aaff"},{tag:m.string,color:"#c3e88d"},{tag:m.special(m.string),color:"#f07178"},{tag:m.comment,color:Sp},{tag:m.variableName,color:"#f07178"},{tag:m.tagName,color:"#ff5370"},{tag:m.bracket,color:"#a2a1a4"},{tag:m.meta,color:"#ffcb6b"},{tag:m.attributeName,color:"#c792ea"},{tag:m.propertyName,color:"#c792ea"},{tag:m.className,color:"#decb6b"},{tag:m.invalid,color:Dp}]),Rp=[kp,Vn(Mp)];var oh="#2e3440",Xo="#3b4252",lh="#434c5e",qn="#4c566a";var ah="#e5e9f0",Yo="#eceff4",zo="#8fbcbb",uh="#88c0d0",Np="#81a1c1",Ke="#5e81ac",Op="#bf616a",Si="#d08770",jo="#ebcb8b",hh="#a3be8c",Bp="#b48ead",ch="#d30102",Jo=Yo,Go=Jo,Pp="#ffffff",Ko=Xo,Lp=Jo,fh=Xo,dh=q.theme({"&":{color:oh,backgroundColor:Pp},".cm-content":{caretColor:fh},".cm-cursor, .cm-dropCursor":{borderLeftColor:fh},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Lp},".cm-panels":{backgroundColor:Jo,color:qn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:`1px solid ${qn}`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:ah},".cm-activeLine":{backgroundColor:Go},".cm-selectionMatch":{backgroundColor:ah},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{outline:`1px solid ${qn}`},"&.cm-focused .cm-matchingBracket":{backgroundColor:Yo},".cm-gutters":{backgroundColor:Yo,color:oh,border:"none"},".cm-activeLineGutter":{backgroundColor:Go},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Ko},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Ko,borderBottomColor:Ko},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Go,color:qn}}},{dark:!1}),_p=Bt.define([{tag:m.keyword,color:Ke},{tag:[m.name,m.deleted,m.character,m.propertyName,m.macroName],color:Si},{tag:[m.variableName],color:Si},{tag:[m.function(m.variableName)],color:Ke},{tag:[m.labelName],color:Np},{tag:[m.color,m.constant(m.name),m.standard(m.name)],color:Ke},{tag:[m.definition(m.name),m.separator],color:hh},{tag:[m.brace],color:zo},{tag:[m.annotation],color:ch},{tag:[m.number,m.changed,m.annotation,m.modifier,m.self,m.namespace],color:uh},{tag:[m.typeName,m.className],color:jo},{tag:[m.operator,m.operatorKeyword],color:hh},{tag:[m.tagName],color:Bp},{tag:[m.squareBracket],color:Op},{tag:[m.angleBracket],color:Si},{tag:[m.attributeName],color:jo},{tag:[m.regexp],color:Ke},{tag:[m.quote],color:Xo},{tag:[m.string],color:Si},{tag:m.link,color:zo,textDecoration:"underline",textUnderlinePosition:"under"},{tag:[m.url,m.escape,m.special(m.string)],color:Si},{tag:[m.meta],color:uh},{tag:[m.comment],color:lh,fontStyle:"italic"},{tag:m.strong,fontWeight:"bold",color:Ke},{tag:m.emphasis,fontStyle:"italic",color:Ke},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.heading,fontWeight:"bold",color:Ke},{tag:m.special(m.heading1),fontWeight:"bold",color:Ke},{tag:m.heading1,fontWeight:"bold",color:Ke},{tag:[m.heading2,m.heading3,m.heading4],fontWeight:"bold",color:Ke},{tag:[m.heading5,m.heading6],color:Ke},{tag:[m.atom,m.bool,m.special(m.variableName)],color:Si},{tag:[m.processingInstruction,m.inserted],color:zo},{tag:[m.contentSeparator],color:jo},{tag:m.invalid,color:lh,borderBottom:`1px dotted ${ch}`}]),u1=[dh,Vn(_p)];function Ar(i,e=0,t=" ",r=!0){let n=[];if(e==5||i==null)return"";if(typeof i=="string")return i;if(typeof i=="number")return`${i}`;if(Array.isArray(i))n.push(`${r?"(":""}${i.map(s=>Ar(s,e+1)).join(t)}${r?")":""}`);else if(typeof i=="object")for(let s of Object.values(i))n.push(Ar(s,e+1));return n.join(" ")}var Ip={str:"strength",dex:"dexterity",con:"constitution",wis:"wisdom",int:"intelligence",cha:"charisma"};function ht(i){return i?i.replace(/{@condition (.+?)(?:\\|.+)?}/g,"$1").replace(/{@item (.+?)(?:\\|.+)?}/g,"$1").replace(/{@spell ([\\s\\S]+?)(?:\\|.+)?}/g,"$1").replace(/{@recharge (.+?)(?:\\|.+)?}/g,"(Recharge $1-6)").replace(/{@recharge}/g,"(Recharge 6)").replace(/{@h}/g,"").replace(/{@damage (.+?)}/g,"$1").replace(/{@atk ms}/g,"Melee Spell Attack").replace(/{@atk rs}/g,"Ranged Spell Attack").replace(/{@atk mw}/g,"Melee Weapon Attack").replace(/{@atk rw}/g,"Ranged Weapon Attack").replace(/{@atk mw,rw}/g,"Melee / Ranged Weapon Attack").replace(/{@atkr m}/g,"Melee Attack Roll:").replace(/{@atkr r}/g,"Ranged Attack Roll:").replace(/{@atkr m,r}/g,"Melee or Ranged Attack Roll:").replace(/{@hom}/g,"Hit or Miss:").replace(/{@creature (.+?)(?:\\|.+)?}/g,"$1").replace(/{@skill (.+?)(?:\\|.+)?}/g,"$1").replace(/{@dice (.+?)(?:\\|.+)?}/g,"$1").replace(/{@hit (\\d+?)(?:\\|.+)?}/g,"+$1").replace(/{@dc (\\d+?)(?:\\|.+)?}/g,"$1").replace(/{@quickref (.+?)\\|\\|.+?}/,"$1").replace(/{@actSave str}/g,"Strength Saving Throw:").replace(/{@actSave dex}/g,"Dexterity Saving Throw:").replace(/{@actSave con}/g,"Constitution Saving Throw:").replace(/{@actSave int}/g,"Inteligence Saving Throw:").replace(/{@actSave wis}/g,"Wisdom Saving Throw:").replace(/{@actSave cha}/g,"Charisma Saving Throw:").replace(/{@actSaveFail}/g,"Failure:").replace(/{@actSaveSuccess}/g,"Success:").replace(/{actSaveSuccessOrFail}/g,"Failure or Success:").replace(/{@variantrule (.+?)( \\[|\\|).+?}/g,"$1"):""}async function ph(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=async n=>{var s,o,l,a,u,h,c,f,d,p,g,y,b,A,w,E,S;try{let N=JSON.parse(n.target.result),M;"monster"in N?M=N.monster:Array.isArray(N)?M=N:typeof N=="object"?M=[N]:t("Invalid monster JSON provided.");let j=[];for(let D of M)try{let H={image:null,bestiary:!0,name:D.name,source:Xp(D),type:Fp(D.type),subtype:Hp(D.type),size:lg[(s=D.size)==null?void 0:s[0]],alignment:Gp(D),hp:D.hp&&"average"in D.hp?(o=D.hp)==null?void 0:o.average:null,hit_dice:D.hp&&"formula"in D.hp?(l=D.hp)==null?void 0:l.formula:"",ac:qp(D.ac),speed:Kp(D),stats:[D.str,D.dex,D.con,D.int,D.wis,D.cha],damage_immunities:ht(Di(D.immune)),damage_resistances:ht(Di(D.resist)),damage_vulnerabilities:ht(Di(D.vulnerable)),condition_immunities:ht(Di(D.conditionImmune)),saves:Object.entries((a=D.save)!=null?a:{}).map(B=>{var W,I;if(!B||!B[1])return;let[,O]=(I=(W=B[1])==null?void 0:W.match(/.*?(\\d+)/))!=null?I:[];if(O)return{[Ip[B[0]]]:O}}).filter(B=>B),skillsaves:X0(D),senses:Yp(D),languages:Ar(D.languages,0,", ",!1),cr:$p(D.cr),traits:(h=(u=D.trait)==null?void 0:u.flatMap(ei))!=null?h:[],actions:(f=(c=D.action)==null?void 0:c.flatMap(ei))!=null?f:[],bonus_actions:(p=(d=D.bonus)==null?void 0:d.flatMap(ei))!=null?p:[],reactions:(y=(g=D.reaction)==null?void 0:g.flatMap(ei))!=null?y:[],legendary_actions:(A=(b=D.legendary)==null?void 0:b.flatMap(ei))!=null?A:[],mythic_actions:[...(w=(D.mythicHeader?[{name:"",entries:D.mythicHeader}]:[]).flatMap(ei))!=null?w:[],...(S=(E=D.mythic)==null?void 0:E.flatMap(ei))!=null?S:[]],spells:jp(D),spellsNotes:Vp(D).join(" ")};j.push(H)}catch(H){console.error(H);continue}e(j)}catch(N){console.error("reject!!!",N),t(N)}},r.readAsText(i)})}function Fp(i){if(i)return typeof i=="string"?i:i.type}function Hp(i){if(!i||typeof i=="string"||!i.tags)return;let e=[];for(var t of i.tags)typeof t=="string"?e.push(t):e.push(t.tag);return e.join(", ")}function $p(i){if(i)return typeof i=="string"?i:i.cr}function Vp(i){let e=[];for(let t in i.spellcasting)e.push(Ar(i.spellcasting[t].footerEntries,0,", ",!1));return e}function Di(i){if(!i)return"";let e=[];for(let t of i){if(typeof t=="string"){e.push(t);continue}if("special"in t){e.push(t.special);continue}if("immune"in t){e.push(`${Di(t.immune)}${t.note?" ":""}${t.note?t.note:""}`);continue}if("resist"in t){e.push(`${Di(t.resist)}${t.note?" ":""}${t.note?t.note:""}`);continue}}return e.join(", ")}function qp(i=[]){var t;let[e]=i;if(e){if(typeof e=="number")return e;if(typeof e=="string"){let[r,n]=(t=e.match(/(\\d+)/))!=null?t:[];return n?Number(n):null}if(typeof e=="object")return"special"in e?e.special:"ac"in e?"from"in e?`${e.ac} (${ht(e.from.join(", "))})`:`${e.ac}`:null}}var Up={0:"Cantrips (at will)",1:"1st level",2:"2nd level",3:"3rd level",4:"4th level",5:"5th level",6:"6th level",7:"7th level",8:"8th level",9:"9th level"};function Qo(i){let e=[];for(let t of i){if(typeof t=="string"){e.push(t);continue}!t.hidden&&t.entry&&t.entry.length&&e.push(t.entry)}return ht(e.join(", "))}function Wp(i){let e=[];for(let t of Object.keys(i)){let r=i[t],n=Number(t.replace(/[^0-9]/,""));e.push([n,Qo(r)])}return e}function zp(i){var n,s;let e=[ht(((n=i.headerEntries)!=null?n:[]).join(`\n`))];if("spells"in i)try{for(let o in(s=i.spells)!=null?s:{}){let l=i.spells[o],{spells:a}=l,u=`${Up[o]}`;u+="slots"in l?` (${l.slots} slots)`:"";let h=ht(a.join(", "));e.push({[u]:h})}}catch(o){throw new Error("There was an error parsing the spells.")}if("will"in i&&i.will.length>0)try{e.push({"At will":Qo(i.will)})}catch(o){throw new Error("There was an error parsing the at-will spells.")}if("ritual"in i&&i.ritual.length>0)try{e.push({Rituals:Qo(i.ritual)})}catch(o){throw new Error("There was an error parsing the ritual spells.")}let t=["rest","daily","weekly","yearly","charges"],r={rest:"/rest each",daily:"/day each",weekly:"/week each",yearly:"/year each",charges:" charges"};for(let o of t)if(o in i){let l=Wp(i[o]);for(let a of l.sort((u,h)=>h[0]-u[0]))e.push({[`${a[0]}${r[o]}`]:a[1]})}return e}function jp(i){return!i.spellcasting||!i.spellcasting.length?[]:i.spellcasting.flatMap(zp)}function Gp(i){return i.alignment?Un(i.alignment):null}function Un(i){var t;if(!i)return null;let e=[];if(Array.isArray(i)){let r=[];for(let n of i)typeof n=="string"?r.push(Un(n)):e.push(Un(n));r.length>0&&e.push(r.join(" "))}else if(typeof i=="object"){if("special"in i&&i.special!=null)return i.special;if("alignment"in i)return`${((t=i.alignment)!=null?t:[]).map(r=>Un(r)).join(" ")}${i.chance?` (${i.chance}%)`:""}${i.note?` (${i.note})`:""}`}else{switch(i.toUpperCase()){case"L":return"lawful";case"N":return"neutral";case"NX":return"neutral (law/chaos axis)";case"NY":return"neutral (good/evil axis)";case"C":return"chaotic";case"G":return"good";case"E":return"evil";case"U":return"unaligned";case"A":return"any alignment"}return i}return e.join(" or ")}function Kp(i){var l,a;let e=i.speed;if(!e)return"\\u2014";if(typeof e=="number")return`${e}`;function t(u){return typeof u=="number"?u:u.number!=null?u.number:u}function r(u){var h;return typeof u=="number"?"":(h=u==null?void 0:u.condition)!=null?h:""}let n=[],s=["walk","burrow","climb","fly","swim"];for(let u of s){if(u!="walk"&&!(u in e)&&!(u in((l=e.alternate)!=null?l:{})))continue;let h=[];n.push(`${u==="walk"?"":`${u} `}${t((a=e[u])!=null?a:0)} ft. ${r(e[u])}`.trim()),e.alternate&&e.alternate[u]&&e.alternate[u].forEach(c=>{n.push(`${u==="walk"?"":`${u} `}${t(c!=null?c:0)} ft. ${r(c)}`.trim())})}let o=", ";if(e.choose){o="; ";let u=e.choose.from.sort();u.length>1?(`${u.slice(0,u.length-1).join(", ")}${u[u.length-1]}${e.choose.amount}`,e.choose.note&&`${e.choose.note}`):n.push(`${u} ${e.choose.amount} ft.${e.choose.note?` ${e.choose.note}`:""}`)}return n.join(o)}function Yp(i){if(typeof i.senses=="string")return i.senses;let e=[];return Array.isArray(i.senses)&&i.senses.length>0&&(e=[i.senses.join(", ").trim()]),i.passive&&e.push(`passive Perception ${i.passive}`),e.join(", ")}function Xp(i){var t,r,n;let e=[];return(t=i.source)!=null&&t.length&&e.push((r=v[i.source])!=null?r:i.source),(n=i.otherSources)!=null&&n.length&&e.push(...i.otherSources.map(s=>{var o;return(o=v[s.source])!=null?o:s.source})),e}function ei(i){return i.entries.reduce((t,r)=>{var s;if(typeof r!="string"){let o=(s=r.items)==null?void 0:s.map(l=>typeof l=="string"?{name:l,entries:[]}:"entry"in l?{name:l.name,entries:[l.entry]}:{name:l.name,entries:l.entries});return t.concat(o!=null?o:[])}return t.length>1||t[0].entries.push(r),t},[{name:i.name,entries:[]}]).map(({name:t,entries:r})=>({name:ht(t),desc:ht(r.join(`\n`))}))}var Jp="F",Qp="D",Zp="T",eg="S",tg="M",ig="L",rg="H",ng="G",sg="C",og="V",lg={[Jp]:"Fine",[Qp]:"Diminutive",[Zp]:"Tiny",[eg]:"Small",[tg]:"Medium",[ig]:"Large",[rg]:"Huge",[ng]:"Gargantuan",[sg]:"Colossal",[og]:"Varies"},ag="CoS",ug="DMG",hg="EEPC",cg="EET",fg="HotDQ",dg="LMoP",pg="Mag",gg="MM",mg="OotA",yg="PHB",bg="PotA",vg="RoT",wg="RoTOS",Ag="SCAG",Cg="SKT",Sg="ToA",Dg="ToD",Eg="TTP",xg="TftYP",Tg="TftYP-AtG",kg="TftYP-DiT",Mg="TftYP-TFoF",Rg="TftYP-THSoT",Ng="TftYP-TSC",Og="TftYP-ToH",Bg="TftYP-WPM",Pg="VGM",Lg="XGE",_g="OGA",Ig="MTF",Fg="WDH",Hg="WDMM",$g="GGR",Vg="KKW",qg="LLK",Ug="GoS",Wg="AI",zg="OoW",jg="ESK",Gg="DIP",Kg="HftT",Yg="DC",Xg="SLW",Jg="SDW",Qg="BGDIA",Zg="LR",em="AL",tm="SAC",im="ERLW",rm="EFR",nm="RMBRE",sm="RMR",om="MFF",lm="AWM",am="IMR",um="SADS",hm="EGW",cm="ToR",fm="DD",dm="FS",pm="US",gm="MOT",mm="IDRotF",ym="TCE",bm="VRGR",vm="HoL",wm="Screen",Am="ScreenWildernessKit",Cm="HF",Sm="CM",Dm="WBtW",Em="CRCotN",Zo="AL",xm=`${Zo}CurseOfStrahd`,Tm=`${Zo}ElementalEvil`,km=`${Zo}RageOfDemons`,Ei="PS",Mm=`${Ei}A`,Rm=`${Ei}I`,Nm=`${Ei}K`,Om=`${Ei}Z`,Bm=`${Ei}X`,Pm=`${Ei}D`,x="UA",Lm=`${x}Artificer`,_m=`${x}EladrinAndGith`,Im=`${x}Eberron`,Fm=`${x}FeatsForRaces`,Hm=`${x}FeatsForSkills`,$m=`${x}FiendishOptions`,Vm=`${x}Feats`,qm=`${x}GothicHeroes`,Um=`${x}ModernMagic`,Wm=`${x}StarterSpells`,zm=`${x}TheMysticClass`,jm=`${x}ThatOldBlackMagic`,Gm=`${x}TheRangerRevised`,Km=`${x}WaterborneAdventures`,Ym=`${x}VariantRules`,Xm=`${x}LightDarkUnderdark`,Jm=`${x}RangerAndRogue`,Qm=`${x}ATrioOfSubclasses`,Zm=`${x}BarbarianPrimalPaths`,e0=`${x}RevisedSubclasses`,t0=`${x}KitsOfOld`,i0=`${x}BardBardColleges`,r0=`${x}ClericDivineDomains`,n0=`${x}Druid`,s0=`${x}RevisedClassOptions`,o0=`${x}Fighter`,l0=`${x}Monk`,a0=`${x}Paladin`,u0=`${x}ModifyingClasses`,h0=`${x}Sorcerer`,c0=`${x}WarlockAndWizard`,f0=`${x}TheFaithful`,d0=`${x}WizardRevisited`,p0=`${x}ElfSubraces`,g0=`${x}MassCombat`,m0=`${x}ThreePillarExperience`,y0=`${x}GreyhawkInitiative`,b0=`${x}ThreeSubclasses`,v0=`${x}OrderDomain`,w0=`${x}CentaursMinotaurs`,A0=`${x}GiantSoulSorcerer`,C0=`${x}RacesOfEberron`,S0=`${x}RacesOfRavnica`,D0=`${x}WGE`,E0=`${x}OfShipsAndSea`,x0=`${x}Sidekicks`,T0=`${x}ArtificerRevisited`,k0=`${x}BarbarianAndMonk`,M0=`${x}SorcererAndWarlock`,R0=`${x}BardAndPaladin`,N0=`${x}ClericDruidWizard`,O0=`${x}FighterRangerRogue`,B0=`${x}ClassFeatureVariants`,P0=`${x}FighterRogueWizard`,L0=`${x}PrestigeClassesRunMagic`,_0=`${x}Ranger`,I0=`${x}2020SubclassesPt1`,F0=`${x}2020SubclassesPt2`,H0=`${x}2020SubclassesPt3`,$0=`${x}2020SubclassesPt4`,V0=`${x}2020SubclassesPt5`,q0=`${x}2020SpellsAndMagicTattoos`,U0=`${x}2020PsionicOptionsRevisited`,W0=`${x}2020SubclassesRevisited`,z0=`${x}2020Feats`,j0=`${x}2021GothicLineages`,G0=`${x}2021FolkOfTheFeywild`,K0=`${x}2021DraconicOptions`,Y0=`${x}2021MagesOfStrixhaven`,el="Adventurers League: ",xi="Plane Shift: ",T="Unearthed Arcana: ",Pt="Tales from the Yawning Portal",v={};v[ag]="Curse of Strahd";v[ug]="Dungeon Master\'s Guide";v[hg]="Elemental Evil Player\'s Companion";v[cg]="Elemental Evil: Trinkets";v[fg]="Hoard of the Dragon Queen";v[dg]="Lost Mine of Phandelver";v[pg]="Dragon Magazine";v[gg]="Monster Manual";v[mg]="Out of the Abyss";v[yg]="Player\'s Handbook";v[bg]="Princes of the Apocalypse";v[vg]="The Rise of Tiamat";v[wg]="The Rise of Tiamat Online Supplement";v[Ag]="Sword Coast Adventurer\'s Guide";v[Cg]="Storm King\'s Thunder";v[Sg]="Tomb of Annihilation";v[Dg]="Tyranny of Dragons";v[Eg]="The Tortle Package";v[xg]=Pt;v[Tg]=`${Pt}: Against the Giants`;v[kg]=`${Pt}: Dead in Thay`;v[Mg]=`${Pt}: The Forge of Fury`;v[Rg]=`${Pt}: The Hidden Shrine of Tamoachan`;v[Ng]=`${Pt}: The Sunless Citadel`;v[Og]=`${Pt}: Tomb of Horrors`;v[Bg]=`${Pt}: White Plume Mountain`;v[Pg]="Volo\'s Guide to Monsters";v[Lg]="Xanathar\'s Guide to Everything";v[_g]="One Grung Above";v[Ig]="Mordenkainen\'s Tome of Foes";v[Fg]="Waterdeep: Dragon Heist";v[Hg]="Waterdeep: Dungeon of the Mad Mage";v[$g]="Guildmasters\' Guide to Ravnica";v[Vg]="Krenko\'s Way";v[qg]="Lost Laboratory of Kwalish";v[Ug]="Ghosts of Saltmarsh";v[Wg]="Acquisitions Incorporated";v[zg]="The Orrery of the Wanderer";v[jg]="Essentials Kit";v[Gg]="Dragon of Icespire Peak";v[Kg]="Hunt for the Thessalhydra";v[Yg]="Divine Contention";v[Xg]="Storm Lord\'s Wrath";v[Jg]="Sleeping Dragon\'s Wake";v[Qg]="Baldur\'s Gate: Descent Into Avernus";v[Zg]="Locathah Rising";v[em]="Adventurers\' League";v[tm]="Sage Advice Compendium";v[im]="Eberron: Rising from the Last War";v[rm]="Eberron: Forgotten Relics";v[nm]="The Lost Dungeon of Rickedness: Big Rick Energy";v[sm]="Dungeons & Dragons vs. Rick and Morty: Basic Rules";v[om]="Mordenkainen\'s Fiendish Folio";v[lm]="Adventure with Muk";v[am]="Infernal Machine Rebuild";v[um]="Sapphire Anniversary Dice Set";v[hm]="Explorer\'s Guide to Wildemount";v[cm]="Tide of Retribution";v[fm]="Dangerous Designs";v[dm]="Frozen Sick";v[pm]="Unwelcome Spirits";v[gm]="Mythic Odysseys of Theros";v[mm]="Icewind Dale: Rime of the Frostmaiden";v[ym]="Tasha\'s Cauldron of Everything";v[bm]="Van Richten\'s Guide to Ravenloft";v[vm]="The House of Lament";v[wm]="Dungeon Master\'s Screen";v[Am]="Dungeon Master\'s Screen: Wilderness Kit";v[Cm]="Heroes\' Feast";v[Sm]="Candlekeep Mysteries";v[xm]=`${el}Curse of Strahd`;v[Tm]=`${el}Elemental Evil`;v[km]=`${el}Rage of Demons`;v[Mm]=`${xi}Amonkhet`;v[Rm]=`${xi}Innistrad`;v[Nm]=`${xi}Kaladesh`;v[Om]=`${xi}Zendikar`;v[Bm]=`${xi}Ixalan`;v[Pm]=`${xi}Dominaria`;v[Lm]=`${T}Artificer`;v[_m]=`${T}Eladrin and Gith`;v[Im]=`${T}Eberron`;v[Fm]=`${T}Feats for Races`;v[Hm]=`${T}Feats for Skills`;v[$m]=`${T}Fiendish Options`;v[Vm]=`${T}Feats`;v[qm]=`${T}Gothic Heroes`;v[Um]=`${T}Modern Magic`;v[Wm]=`${T}Starter Spells`;v[zm]=`${T}The Mystic Class`;v[jm]=`${T}That Old Black Magic`;v[Gm]=`${T}The Ranger, Revised`;v[Km]=`${T}Waterborne Adventures`;v[Ym]=`${T}Variant Rules`;v[Xm]=`${T}Light, Dark, Underdark!`;v[Jm]=`${T}Ranger and Rogue`;v[Qm]=`${T}A Trio of Subclasses`;v[Zm]=`${T}Barbarian Primal Paths`;v[e0]=`${T}Revised Subclasses`;v[t0]=`${T}Kits of Old`;v[i0]=`${T}Bard: Bard Colleges`;v[r0]=`${T}Cleric: Divine Domains`;v[n0]=`${T}Druid`;v[s0]=`${T}Revised Class Options`;v[o0]=`${T}Fighter`;v[l0]=`${T}Monk`;v[a0]=`${T}Paladin`;v[u0]=`${T}Modifying Classes`;v[h0]=`${T}Sorcerer`;v[c0]=`${T}Warlock and Wizard`;v[f0]=`${T}The Faithful`;v[d0]=`${T}Wizard Revisited`;v[p0]=`${T}Elf Subraces`;v[g0]=`${T}Mass Combat`;v[m0]=`${T}Three-Pillar Experience`;v[y0]=`${T}Greyhawk Initiative`;v[b0]=`${T}Three Subclasses`;v[v0]=`${T}Order Domain`;v[w0]=`${T}Centaurs and Minotaurs`;v[A0]=`${T}Giant Soul Sorcerer`;v[C0]=`${T}Races of Eberron`;v[S0]=`${T}Races of Ravnica`;v[D0]="Wayfinder\'s Guide to Eberron";v[E0]=`${T}Of Ships and the Sea`;v[x0]=`${T}Sidekicks`;v[T0]=`${T}Artificer Revisited`;v[k0]=`${T}Barbarian and Monk`;v[M0]=`${T}Sorcerer and Warlock`;v[R0]=`${T}Bard and Paladin`;v[N0]=`${T}Cleric, Druid, and Wizard`;v[O0]=`${T}Fighter, Ranger, and Rogue`;v[B0]=`${T}Class Feature Variants`;v[P0]=`${T}Fighter, Rogue, and Wizard`;v[L0]=`${T}Prestige Classes and Rune Magic`;v[_0]=`${T}Ranger`;v[I0]=`${T}2020 Subclasses, Part 1`;v[F0]=`${T}2020 Subclasses, Part 2`;v[H0]=`${T}2020 Subclasses, Part 3`;v[$0]=`${T}2020 Subclasses, Part 4`;v[V0]=`${T}2020 Subclasses, Part 5`;v[q0]=`${T}2020 Spells and Magic Tattoos`;v[U0]=`${T}2020 Psionic Options Revisited`;v[W0]=`${T}2020 Subclasses Revisited`;v[z0]=`${T}2020 Feats`;v[j0]=`${T}2021 Gothic Lineages`;v[G0]=`${T}2021 Folk of the Feywild`;v[K0]=`${T}2021 Draconic Options`;v[Y0]=`${T}2021 Mages of Strixhaven`;v[Dm]="The Wild Beyond the Witchlight";v[Em]="Critical Role: Call of the Netherdeep";function X0(i){var n,s,o;let e=i.skill;if(!e)return[];let t=[],r=[];for(let l of Object.keys(e)){if(l=="other"){let h=e[l];for(let c of h){let f=c.oneOf;if(!f)continue;let d=Object.keys(f).sort(),p=d.shift(),g=f[p],[,y]=(n=g==null?void 0:g.match(/.*?(\\d+)/))!=null?n:[];r.push({[`plus one of the following: ${p.charAt(0).toUpperCase()+p.slice(1)}`]:y});for(let b of d.slice(1)){let A=f[b],[,w]=(s=A==null?void 0:A.match(/.*?(\\d+)/))!=null?s:[];w&&r.push({[b]:w})}}continue}let a=e[l],[,u]=(o=a==null?void 0:a.match(/.*?(\\d+)/))!=null?o:[];u&&t.push({[l]:u})}return[...t.filter(l=>l),...r.filter(l=>l)]}async function gh(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=async n=>{var o,l,a,u,h,c,f,d,p,g,y,b,A,w,E,S,N,M,j,D,H,B,O,W,I;let s=[];try{let te=JSON.parse(n.target.result),Ce=[];te.creatures?Ce=te.creatures:Ce=[te];for(let F of Ce)try{let Se={image:null,name:F.name,source:"CritterDB",type:F.stats.race,subtype:"",size:F.stats.size,alignment:F.stats.alignment,hp:F.stats.hitPoints,hit_dice:`${Math.floor(F.stats.extraHealthFromConstitution/F.stats.abilityScoreModifiers.constitution)}d${F.stats.hitDieSize} + ${F.stats.extraHealthFromConstitution}`,ac:F.stats.armorClass,speed:F.stats.speed,stats:[F.stats.abilityScores.strength,F.stats.abilityScores.dexterity,F.stats.abilityScores.constitution,F.stats.abilityScores.intelligence,F.stats.abilityScores.wisdom,F.stats.abilityScores.charisma],damage_immunities:(l=(o=F.stats.damageImmunities)==null?void 0:o.join("; ").toLowerCase().trim())!=null?l:"",damage_resistances:(u=(a=F.stats.damageResistances)==null?void 0:a.join(", ").toLowerCase().trim())!=null?u:"",damage_vulnerabilities:(c=(h=F.stats.damageVulnerabilities)==null?void 0:h.join(", ").toLowerCase().trim())!=null?c:"",condition_immunities:(d=(f=F.stats.conditionImmunities)==null?void 0:f.join(", ").toLowerCase().trim())!=null?d:"",saves:(g=(p=F.stats.savingThrows)==null?void 0:p.map(k=>{var K;if(!(!("value"in k)&&!("modifier"in k)))return{[k.ability]:(K=k.value)!=null?K:k.modifier}}).filter(k=>k))!=null?g:[],skillsaves:(b=(y=F.stats.skills)==null?void 0:y.map(k=>{var K;if(!(!("value"in k)&&!("modifier"in k)))return{[k.name]:(K=k.value)!=null?K:k.modifier}}).filter(k=>k))!=null?b:[],senses:(w=(A=F.stats.senses)==null?void 0:A.join(", ").trim())!=null?w:"",languages:(S=(E=F.stats.languages)==null?void 0:E.join(", ").trim())!=null?S:"",cr:(N=F.stats.challengeRating)!=null?N:"",traits:(j=(M=F.stats.additionalAbilities)==null?void 0:M.map(k=>({name:k.name,desc:k.description.replace(/<[^>]*>/g,"")})))!=null?j:[],actions:(H=(D=F.stats.actions)==null?void 0:D.map(k=>({name:k.name,desc:k.description.replace(/<[^>]*>/g,"")})))!=null?H:[],reactions:(O=(B=F.stats.reactions)==null?void 0:B.map(k=>({name:k.name,desc:k.description.replace(/<[^>]*>/g,"")})))!=null?O:[],legendary_actions:(I=(W=F.stats.legendaryActions)==null?void 0:W.map(k=>({name:k.name,desc:k.description.replace(/<[^>]*>/g,"")})))!=null?I:[]};s.push(Se)}catch(Se){continue}e(s)}catch(te){t()}},r.readAsText(i)})}var kc=Gc(xc());async function Mc(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=async n=>{let s=n.target.result,l=new kc.DOMParser().parseFromString(s,"application/xml").getElementsByTagName("monster"),a=[];if(l.length){for(let u of Array.from(l))try{let h={image:null,name:ve(u,"name"),size:Uy(u),type:ve(u,"type"),subtype:ve(u,"subtype"),alignment:ve(u,"alignment"),ac:Wy(u),hp:Number(Tc(u,"hp")),hit_dice:Tc(u,"hit_dice"),speed:ve(u,"speed"),stats:[Number(ve(u,"str")),Number(ve(u,"dex")),Number(ve(u,"con")),Number(ve(u,"int")),Number(ve(u,"wis")),Number(ve(u,"cha"))],saves:Vy(u),skillsaves:Hy(u),damage_vulnerabilities:ve(u,"vulnerable"),damage_resistances:ve(u,"resist"),damage_immunities:ve(u,"immune"),condition_immunities:ve(u,"conditionImmune"),senses:ve(u,"senses"),languages:ve(u,"languages"),cr:ve(u,"cr"),traits:os(u,"trait"),spells:Fy(u),actions:os(u,"action"),legendary_actions:os(u,"legendary"),reactions:os(u,"reaction"),source:zy(u)};a.push(h)}catch(h){console.error(h);continue}e(a)}},r.readAsText(i)})}function ve(i,e){let t=i.getElementsByTagName(e);if(t&&t.length)return t[0].textContent}function os(i,e){var n;if(!((n=i.getElementsByTagName(e))!=null&&n.length))return[];let t=i.getElementsByTagName(e),r=[];for(let s of Array.from(t)){let o=s.getElementsByTagName("name");if(!o||!o.length||!o[0].textContent||o[0].textContent.includes("Spellcasting"))continue;let l=[],a=s.getElementsByTagName("text");for(let u of Array.from(a))l.push(u.textContent);r.push({name:o[0].textContent,desc:l.join(" ")})}return r}function Fy(i){var r;if(!((r=i.getElementsByTagName("trait"))!=null&&r.length))return[];let t=Array.from(i.getElementsByTagName("trait")).find(n=>{var s;return(s=n.getElementsByTagName("name")[0])==null?void 0:s.textContent.includes("Spellcasting")});return t?Array.from(t.getElementsByTagName("text")).map(n=>n.textContent.replace(/(•|\u2022)/u,"").trim()).filter(n=>n.length):[]}function Hy(i){var r;if(!((r=i.getElementsByTagName("skill"))!=null&&r.length))return[];let e=i.getElementsByTagName("skill")[0].textContent.split(", "),t=[];return e.forEach(n=>{let s=n.split(/\\s[\\+\\-]/);t.push({[s[0]]:Number(s[1])})}),t}var $y={Str:"strength",Dex:"dexterity",Con:"constitution",Int:"intelligence",Wis:"wisdom",Cha:"charisma"};function Vy(i){var r;if(!((r=i.getElementsByTagName("save"))!=null&&r.length))return[];let e=i.getElementsByTagName("save")[0].textContent.split(", "),t=[];return e.forEach(n=>{let s=n.split(/\\s[\\+\\-]/);t.push({[$y[s[0]]]:Number(s[1])})}),t}function Tc(i,e){var s,o;if(!((s=i.getElementsByTagName("hp"))!=null&&s.length))return"";let t=i.getElementsByTagName("hp")[0].textContent,[,r,n]=(o=t.match(/(\\d+) \\(([\\s\\S]+)\\)/))!=null?o:[,"",""];return{hp:r,hit_dice:n}[e]}var qy={T:"tiny",S:"small",M:"medium",L:"large",H:"huge",G:"gargantuan"};function Uy(i){var e;return i.getElementsByTagName("size")&&(e=qy[i.getElementsByTagName("size")[0].textContent])!=null?e:""}function Wy(i){var e;if(i.getElementsByTagName("ac")){let[,t]=(e=i.getElementsByTagName("ac")[0])==null?void 0:e.textContent.match(/(\\d+)/);return Number(t)}return 0}function zy(i){var t,r,n,s,o,l;let e="Unknown";if((t=i.getElementsByTagName("source"))!=null&&t.length)e=i.getElementsByTagName("source")[0].textContent;else if((r=i.getElementsByTagName("trait"))!=null&&r.length&&Array.from(i.getElementsByTagName("trait")).find(a=>{var u;return((u=a.getElementsByTagName("name"))==null?void 0:u[0].textContent)=="Source"})){let a=Array.from(i.getElementsByTagName("trait")).find(u=>{var h,c;return((c=(h=u.getElementsByTagName("name"))==null?void 0:h[0])==null?void 0:c.textContent)=="Source"});e=(o=(s=(n=a==null?void 0:a.getElementsByTagName("text"))==null?void 0:n[0])==null?void 0:s.textContent)==null?void 0:o.replace(/p. \\d+/,"").trim()}else if((l=i.getElementsByTagName("description"))!=null&&l.length){let a=i.getElementsByTagName("description"),u="Source: ";if(a[0].textContent.includes(u)){let h=a[0].textContent.lastIndexOf(u);e=a[0].textContent.slice(h+u.length).split(/, ?/)[0]}}return e}var jy={STR:"strength",DEX:"dexterity",CON:"constitution",INT:"intelligence",WIS:"wisdom",CHA:"charisma"};async function Rc(i){return new Promise((e,t)=>{let r=new FileReader,n=[];r.onload=async s=>{var o,l,a,u,h,c,f,d,p,g,y,b,A,w,E,S,N,M,j,D,H,B,O,W,I,te,Ce,F,Se,k,K,ue,pe,Je,pt,Ht,Wi,Al,Cl,Sl,Dl,El,xl,Tl,kl,Ml,Rl,Nl,Ol,Bl,Pl,Ll,_l;try{let as=JSON.parse(s.target.result),Hc=Object.keys(as).filter(us=>/^Creatures\\./.test(us));for(let us of Hc)try{let ie=as[us],$c={name:ie.Name,source:(o=ie.Source)!=null&&o.trim().length?(l=ie.Source)==null?void 0:l.trim():"Unknown",type:(h=(u=(a=ie.Type)==null?void 0:a.split(/,\\s?/))==null?void 0:u[0])==null?void 0:h.trim(),subtype:"",size:"",alignment:(d=(f=(c=ie.Type)==null?void 0:c.split(/,\\s?/))==null?void 0:f[1])==null?void 0:d.trim(),hp:(p=ie.HP)==null?void 0:p.Value,hit_dice:(b=(y=(g=ie.HP)==null?void 0:g.Notes)==null?void 0:y.replace(/([()])/g,""))==null?void 0:b.trim(),ac:ie.AC.Value,speed:(w=(A=ie.Speed)==null?void 0:A.join(", "))==null?void 0:w.trim(),stats:Object.values((E=ie.Abilities)!=null?E:{}),damage_immunities:(j=(M=(N=(S=ie.DamageImmunities)==null?void 0:S.join("; "))==null?void 0:N.toLowerCase())==null?void 0:M.trim())!=null?j:"",damage_resistances:(O=(B=(H=(D=ie.DamageResistances)==null?void 0:D.join(", "))==null?void 0:H.toLowerCase())==null?void 0:B.trim())!=null?O:"",damage_vulnerabilities:(Ce=(te=(I=(W=ie.DamageVulnerabilities)==null?void 0:W.join(", "))==null?void 0:I.toLowerCase())==null?void 0:te.trim())!=null?Ce:"",condition_immunities:(K=(k=(Se=(F=ie.ConditionImmunities)==null?void 0:F.join(", "))==null?void 0:Se.toLowerCase())==null?void 0:k.trim())!=null?K:"",saves:(pe=(ue=ie.Saves)==null?void 0:ue.map(({Name:ge,Modifier:hs})=>({[jy[ge]]:hs})))!=null?pe:[],skillsaves:(pt=(Je=ie.Skills)==null?void 0:Je.map(({Name:ge,Modifier:hs})=>({[ge]:hs})))!=null?pt:[],senses:(Al=(Wi=(Ht=ie.Senses)==null?void 0:Ht.join(", "))==null?void 0:Wi.trim())!=null?Al:"",languages:(Dl=(Sl=(Cl=ie.Languages)==null?void 0:Cl.join(", "))==null?void 0:Sl.trim())!=null?Dl:"",cr:(xl=(El=ie.Challenge)==null?void 0:El.trim())!=null?xl:"",traits:(kl=(Tl=ie.Traits)==null?void 0:Tl.map(ge=>({name:ge.Name,desc:ge.Content})))!=null?kl:[],actions:(Rl=(Ml=ie.Actions)==null?void 0:Ml.map(ge=>({name:ge.Name,desc:ge.Content})))!=null?Rl:[],bonus_actions:(Ol=(Nl=ie.BonusActions)==null?void 0:Nl.map(ge=>({name:ge.Name,desc:ge.Content})))!=null?Ol:[],reactions:(Pl=(Bl=ie.Reactions)==null?void 0:Bl.map(ge=>({name:ge.Name,desc:ge.Content})))!=null?Pl:[],legendary_actions:(_l=(Ll=ie.LegendaryActions)==null?void 0:Ll.map(ge=>({name:ge.Name,desc:ge.Content})))!=null?_l:[],image:null};n.push($c)}catch(ie){continue}e(n)}catch(as){t()}},r.readAsText(i)})}async function Oc(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=async n=>{try{let s=JSON.parse(n.target.result),o=[fe(s.strength),fe(s.dexterity),fe(s.constitution),fe(s.intelligence),fe(s.wisdom),fe(s.charisma)],l=fe(s.ac),a=tb(s.specials),u=ob(s.spelltype,s.focuspoints,s.cantriplevel,s.spelldc,s.spellattack,s.spells,s.constant),h=s.creature||"Creature",c={layout:"Basic Pathfinder 2e Layout",name:s.name,level:h+" "+s.level.toString(),size:s.size,trait_03:s.type,modifier:fe(s.perception),perception:ib(s.perception),abilities_top:a.filter(d=>d.type===Qy).map(d=>({name:d.name,desc:d.desc})),abilities_mid:a.filter(d=>d.type===Zy).map(d=>({name:d.name,desc:d.desc})),abilities_bot:a.filter(d=>d.type===eb).map(d=>({name:d.name,desc:d.desc})),type:s.type,subtype:"",alignment:s.alignment,ac:l,armorclass:bl(l,fe(s.fortitude),fe(s.reflex),fe(s.will)),hp:fe(s.hp)||1,health:nb(s.hp,s.immunity,s.resistance,s.weakness),attacks:sb(s.strikes),spellcasting:u,speed:s.speed||"5 feet",stats:o,abilityMods:o,damage_vulnerabilities:s.weakness,damage_resistances:s.resistance,damage_immunities:"",condition_immunities:s.immunity,senses:s.perception.note,languages:s.languages,cr:s.level,bestiary:!1,skills:lb(s)},f=ab(s.traits);for(let d=0;d{let t=rb(e.actions),r=Bc(ub(e.description));return{name:e.name,desc:t+r,type:e.type}})}function ib(i){let e=ke(fe(i)),t=i.note?` ${i.note};`:"";return[{name:"Perception",desc:`Perception ${e};${t}`}]}function qi(i){return i<0?`${i} (1d20${i})`:`+${i} (1d20+${i})`}function ke(i){return i>=0?`+${i}`:i.toString()}function bl(i,e,t,r){let n=qi(e),s=qi(t),o=qi(r);return[{name:"AC",desc:`${i}; __Fort__: ${n}; __Ref__: ${s}; __Will__: ${o};`}]}function rb(i){let t={reaction:Gy,one:ls,two:Ky,three:Yy,free:Xy,none:Jy}[i];return t||i}function nb(i,e,t,r){let n=fe(i)||1,s=fe(e),o=fe(t),l=fe(r),a=i.note?` (${i.note});`:"",u=s?` __Immunities__ ${s};`:"",h=o?` __Resistances__ ${o};`:"",c=l?` __Weaknesses__ ${l};`:"";return[{name:"HP",desc:`${n};${a}${u}${h}${c}`}]}function sb(i){return i.map(e=>{let t=e.traits?` (${e.traits});`:"",r=e.damage?` __Damage__ ${Bc(e.damage)}`:"",n=ke(parseInt(e.attack));return{name:e.type,desc:ls+` ${e.name} ${n}${t}${r}`}})}function ob(i,e,t,r,n,s,o){if(s.join(",").split(",").map(c=>c.trim()).filter(c=>c!=="").length===0)return[];let a=e?`${e} Focus Points, `:"",u=10;var h="";for(let c=0;c({skill:n,value:fe(i[n]),note:i[n].note})).filter(n=>n.value!==0).map(n=>`__${zr(n.skill)}__: ${qi(n.value)}`+(n.note?` (${n.note})`:""),"").join(" ");return r.length===0?[]:[{name:"Skills",desc:r}]}function ab(i){let e=i.split(",");return e.forEach(t=>t.trim()),e}function Bc(i){return i.replace(/ ?(\\d+d\\d+( ?[+-] ?\\d+)?)/g," $1 ($1)")}function ub(i){return i.replace(/((Trigger)|(Requirements)|(Effect))/g,"__$1__")}function Nc(i){let e=["th","st","nd","rd"],t=i%100;return i+(e[(t-20)%10]||e[t]||e[0])}function zr(i){return i.replace(/\\w\\S*/g,e=>e.charAt(0).toUpperCase()+e.substring(1).toLowerCase())}var hb={acrobatics:"dex",arcana:"int",athletics:"str",crafting:"int",deception:"cha",diplomacy:"cha",intimidation:"cha",medicine:"wis",nature:"wis",occultism:"int",performance:"cha",religion:"wis",society:"int",stealth:"dex",survival:"wis",thievery:"dex",lore:"int"},cb=["Tiny","Small","Medium","Large","Huge"];async function Lc(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=()=>{try{let s=JSON.parse(r.result).build,o=s.attributes,l=s.abilities,a=s.proficiencies,u=s.acTotal.acTotal,h=ai(l.str),c=ai(l.dex),f=ai(l.con),d=ai(l.int),p=ai(l.wis),g=ai(l.cha),y=p+a.perception+s.level,b=o.ancestryhp+(o.classhp+o.bonushp+f+o.bonushpPerLevel)*s.level,A=Ui(l.con,a.fortitude,s.level),w=Ui(l.dex,a.reflex,s.level),E=Ui(l.wis,a.will,s.level),S={layout:"Basic Pathfinder 2e Layout",source:"Pathbuilder",sourcebook:i.name,columns:2,name:s.name,player:!0,level:s.level,rare_01:"unique",trait_01:s.ancestry,trait_02:s.heritage,trait_03:s.background,alignment:s.alignment,size:cb[s.size],modifier:y,perception:mb(y),type:s.class,subtype:"",ac:u,armorclass:bl(u,A,w,E),hp:b,health:pb(b,s.resistances),attacks:gb(s.weapons),abilities_top:[{name:"Class DC",desc:String(10+Ui(l[s.keyability],a.classDC,s.level))},bb(s.equipment),vb(s.armor)],abilities_bot:[Pc("Feats",s.feats.map(N=>N[0])),Pc("Specials",s.specials)],abilityMods:[ke(h),ke(c),ke(f),ke(d),ke(p),ke(g)],skills:[yb(l,a,s.level),{name:"Lore",desc:s.lores.map(N=>`[[${N[0]}]] ${qi(Ui(l.int,Number(N[1]),s.level))}`).join(", ")}],speed:`${o.speed+o.speedBonus} feet`,spellcasting:fb(s),damage_vulnerabilities:"",damage_resistances:s.resistances.join(", "),damage_immunities:"",condition_immunities:"",senses:"",languages:s.languages.join(", "),cr:s.level,bestiary:!1,stats:null};e([S])}catch(n){console.error("Error importing Pathbuilder file",n),t(n)}},r.readAsText(i)})}function fb(i){let e=i.spellCasters.map(r=>r.spells.map(n=>n.list.length===0?{}:{name:`${r.name} ${n.spellLevel===0?"Cantrips":`Rank ${n.spellLevel} (${r.perDay[n.spellLevel]})`}`,desc:`[[${n.list.join("]], [[")}]]`})).flat();console.log("getSpells - spells",e);let t=db(i.focus,i.level);return console.log("getSpells - focusSpells",t),[e,t].flat()}function db(i,e){let t=[];return Object.keys(i).forEach(r=>{let n=i[r];Object.keys(n).forEach(s=>{let o=n[s],l=o.focusCantrips;(l==null?void 0:l.length)>0&&t.push({name:`${zr(r)} Focus Cantrips ${ke(o.abilityBonus+o.proficiency+e)}`,desc:`[[${l.join("]], [[")}]]`});let a=o.focusSpells;(a==null?void 0:a.length)>0&&t.push({name:`${zr(r)} Focus Spells ${ke(o.abilityBonus+o.proficiency+e)}`,desc:`[[${a.join("]], [[")}]]`})})}),t}function pb(i,e){let t=e.join(", ");return[{name:"HP",desc:`${i} ${t?`__Resistances__ (${t})`:""}`}]}function gb(i){return i.map(e=>{let t=e.damageBonus?ke(e.damageBonus):"",r="1";return e.str=="striking"?r="2":e.str=="greater striking"&&(r="3"),{name:e.name,desc:ls+`[[${e.name}|${e.display}]] ${ke(e.attack)} __Damage__ ${r}${e.die}${t} _(${e.damageType})_`}})}function mb(i){let e=ke(i);return[{name:"Perception",desc:`${e} (1d20${e});`}]}function yb(i,e,t){return{name:"Skills",desc:["acrobatics","arcana","athletics","crafting","deception","diplomacy","intimidation","medicine","nature","occultism","performance","religion","society","stealth","survival","thievery"].filter(o=>e[o]>0).map(o=>{let l=o,u=i[hb[o]],h=e[l],c=Ui(u,h,t);return`${zr(l)} ${ke(c)}`}).join(", ")}}function bb(i){let e=[{prefix:"Scroll of ",length:10},{prefix:"Potion of ",length:9},{prefix:"Wand of ",length:7}];function t(o){for(let{prefix:a,length:u}of e)if(o.startsWith(a))return`${a}[[${o.slice(u)}]]`;let l=o.match(/ \\+(\\d)$/);return l&&(o=o.slice(0,-3)+` (+${l[1]})`),`[[${o}]]`}function r(o){return o.map(([l,a])=>[t(l),a])}function n(o){return o.map(([l,a])=>`${a>1?`${a}x `:""}${l}`).join(", ")}let s=r(i);return{name:"Items",desc:n(s)}}function vb(i){return{name:"Armor",desc:i.map(e=>`${e.qty>1?String(e.qty)+"x ":""}[[${e.name}${e.display?"|"+e.display:""}]]`).join(", ")}}function Pc(i,e){return{name:i,desc:"[["+e.join("]], [[")+"]]"}}function ai(i){return Math.floor((i-10)/2)}function Ui(i,e,t){return ai(i)+e+t}var _c={0:{cr:"0",value:0,xp:0},"1/8":{cr:"1/8",value:.125,xp:25},"1/4":{cr:"1/4",value:.25,xp:50},"1/2":{cr:"1/2",value:.5,xp:100},"0.125":{cr:"1/8",value:.125,xp:25},"0.25":{cr:"1/4",value:.25,xp:50},"0.5":{cr:"1/2",value:.5,xp:100},1:{cr:"1",value:1,xp:200},2:{cr:"2",value:2,xp:450},3:{cr:"3",value:3,xp:700},4:{cr:"4",value:4,xp:1100},5:{cr:"5",value:5,xp:1800},6:{cr:"6",value:6,xp:2300},7:{cr:"7",value:7,xp:2900},8:{cr:"8",value:8,xp:3900},9:{cr:"9",value:9,xp:5e3},10:{cr:"10",value:10,xp:5900},11:{cr:"11",value:11,xp:7200},12:{cr:"12",value:12,xp:8400},13:{cr:"13",value:13,xp:1e4},14:{cr:"14",value:14,xp:11500},15:{cr:"15",value:15,xp:13e3},16:{cr:"16",value:16,xp:15e3},17:{cr:"17",value:17,xp:18e3},18:{cr:"18",value:18,xp:2e4},19:{cr:"19",value:19,xp:22e3},20:{cr:"20",value:20,xp:25e3},21:{cr:"21",value:21,xp:33e3},22:{cr:"22",value:22,xp:41e3},23:{cr:"23",value:23,xp:5e4},24:{cr:"24",value:24,xp:62e3},25:{cr:"25",value:25,xp:75e3},26:{cr:"26",value:26,xp:9e4},27:{cr:"27",value:27,xp:105e3},28:{cr:"28",value:28,xp:12e4},29:{cr:"29",value:29,xp:135e3},30:{cr:"30",value:30,xp:155e3}};function Ct(i){return Math.floor(((i!=null?i:10)-10)/2)}var Ic={tiny:4,small:6,medium:8,large:10,huge:12,gargantuan:20},wb={str:"strength",dex:"dexterity",con:"constitution",int:"intelligence",wis:"wisdom",cha:"charisma"},vl=class i{constructor(e){this.monster=e;this.proficiency=this.getProf(this.monster);this.stats={str:this.monster.strPoints,dex:this.monster.dexPoints,con:this.monster.conPoints,int:this.monster.intPoints,wis:this.monster.wisPoints,cha:this.monster.chaPoints};this.modifiers={str:Ct(this.stats.str),dex:Ct(this.stats.dex),con:Ct(this.stats.con),int:Ct(this.stats.int),wis:Ct(this.stats.wis),cha:Ct(this.stats.cha)}}static parse(e){var n,s,o,l,a,u,h,c,f,d,p,g,y,b,A,w;let t=new i(e);return{image:null,name:e.name,source:"TetraCube",type:e.type,subtype:e.tag,size:e.size,alignment:e.alignment,hp:(n=t.getHP(e))==null?void 0:n.hp,hit_dice:(s=t.getHP(e))==null?void 0:s.dice,ac:(a=(l=((o=e.ac)!=null?o:[])[0])==null?void 0:l.ac)!=null?a:"",speed:t.getSpeedString(e),stats:[e.strPoints,e.dexPoints,e.conPoints,e.intPoints,e.wisPoints,e.chaPoints],damage_immunities:t.parseImmune(e,"i"),damage_resistances:t.parseImmune(e,"r"),damage_vulnerabilities:t.parseImmune(e,"v"),condition_immunities:t.parseConditions(e),saves:t.getSaves(e),skillsaves:t.getSkills(e),senses:t.getSenses(e),languages:t.getLanguages(e),cr:(u=e.cr)!=null?u:"",traits:t.getTraits(e.abilities),actions:t.getTraits(e.actions),bonus_actions:t.getTraits(e.bonusActions),reactions:t.getTraits(e.reactions),legendary_description:(h=e.isLegendary)!=null&&h?e.legendariesDescription:null,legendary_actions:(c=e.isLegendary)!=null&&c?t.getTraits(e.legendaries):null,mythic_description:(f=e.isMythic)!=null&&f?e.mythicDescription:null,mythic_actions:(d=e.isMythic)!=null&&d?t.getTraits(e.mythics):null,lair_description:(p=e.isLair)!=null&&p?e.lairDescription:null,lair_actions:(g=e.isLair)!=null&&g?t.getTraits(e.lairs):null,lair_description_end:(y=e.isLair)!=null&&y?e.lairDescriptionEnd:null,regional_description:(b=e.isRegional)!=null&&b?e.regionalDescription:null,regional_actions:(A=e.isRegional)!=null&&A?t.getTraits(e.regionals):null,regional_description_end:(w=e.isRegional)!=null&&w?e.regionalDescriptionEnd:null,spells:t.getSpells(e.abilities)}}getHP(e){var t,r;if(e.customHP||e.hitDice&&/(\\d+) \\((.+)\\)/.test(e.hpText)){let[n,s,o]=(t=e.hpText.match(/(\\d+) \\((.+)\\)/))!=null?t:[];return{hp:s,dice:o}}if(e.hitDice){let n=Number(e.hitDice),s=(r=Ic[e.size])!=null?r:Ic.medium,o=this.modifiers.con,l=n*s/(2+.5)+o*n,a=o>0?"+":"-",u=o==0?"":` ${a} ${o*n}`;return{hp:l,dice:`${n}d${s}${u}`}}}getSpeedString(e){if(e.customSpeed)return e.speedDesc;let t=[e.speed+" ft."];return e.burrowSpeed>0&&t.push("burrow "+e.burrowSpeed+" ft."),e.climbSpeed>0&&t.push("climb "+e.climbSpeed+" ft."),e.flySpeed>0&&t.push("fly "+e.flySpeed+" ft."+(e.hover?" (hover)":"")),e.swimSpeed>0&&t.push("swim "+e.swimSpeed+" ft."),t.join(", ")}parseImmune(e,t){let r=[];"damagetypes"in e&&Array.isArray(e.damagetypes)&&r.push(...e.damagetypes.filter(s=>s.type==t).map(s=>s.name));let n=[];return"specialdamage"in e&&Array.isArray(e.specialdamage)&&n.push(...e.specialdamage.filter(s=>s.type==t).map(s=>s.name)),[r.join(", "),n.join(", ")].filter(s=>s&&s.length).join("; ")}getLanguages(e){let t=[],r=[],n=[];for(let s=0;s0&&t.push([r.slice(0,r.length-2).map(s=>s.name).join(", "),r.slice(-1).map(s=>s.name)].filter(s=>s).join(" and ")),n.length>0&&t.push([n.slice(0,n.length-2).map(s=>s.name).join(", "),n.slice(-1).map(s=>s.name)].filter(s=>s).join(" and ")),e.telepathy>0&&t.push("telepathy "+e.telepathy+" ft."),t.length==0&&t.push("—"),t.join("; ")}getSenses(e){let t=[];e.blindsight>0&&t.push("blindsight "+e.blindsight+" ft."+(e.blind?" (blind beyond this radius)":"")),e.darkvision>0&&t.push("darkvision "+e.darkvision+" ft."),e.tremorsense>0&&t.push("tremorsense "+e.tremorsense+" ft."),e.truesight>0&&t.push("truesight "+e.truesight+" ft.");let r=e.skills.find(s=>s.name=="perception"),n=10+Ct(e.wisPoints);return r!=null&&(n+=this.proficiency*("note"in r?2:1)),t.push("passive Perception "+n),t.join(", ")}transformString(e){return e.replace(/(_|\\*|\\s*>\\s*)/g,"").replace(/\\[MON(S)?\\]/g,`${this.monster.shortName&&this.monster.shortName.length?this.monster.shortName:this.monster.name}$1`).replace(/\\[(\\w+)\\]/g,(t,r)=>{if(r=r.toLowerCase(),!(r in this.modifiers))return t;let n=this.modifiers[r];return`${n>=0?"+":""}${n}`}).replace(/\\[(\\w+) (ATK|SAVE)\\s?(?:([+-])\\s?(\\d+))?\\]/g,(t,r,n="ATK",s="+",o=0)=>{if(r=r.toLowerCase(),!(r in this.modifiers))return t;o=s=="+"?Number(o):-Number(o);let l=(n=="ATK"?0:8)+this.modifiers[r]+this.proficiency+o;return`${l>=0?"+":""}${l}`}).replace(/\\[(\\w+)?\\s?(\\d*[dD]\\d+)\\s?(?:([+-])\\s?(\\d+))?\\]/g,(t,r,n,s="+",o=0)=>{var c;r=r.toLowerCase();let[,l=1,a]=(c=n.match(/(\\d*)[dD](\\d+)/))!=null?c:[];if(l||(l=1),!a)return t;o=s=="+"?Number(o):-Number(o),r in this.modifiers&&(o+=this.modifiers[r]);let u=Math.floor((a/2+.5)*l)+o,h=[`${l}d${a}`];return o&&o!=0&&(h.push(o>=0?"+":"-"),h.push(o)),`${u} (${h.join(" ")})`})}getTraits(e){return!e||!e.length?void 0:e.filter(r=>r.name!="Spellcasting").map(r=>({name:r.name,desc:this.transformString(r.desc)}))}getSpells(e){var n;if(!e.abilities||!e.abilities.length)return;let{desc:t}=(n=e.abilities.find(s=>s.name=="Spellcasting"))!=null?n:{};return t?this.transformString(t).trim().split(`\n`).filter(s=>s.length):void 0}getSaves(e){if(!("sthrows"in e)||!Array.isArray(e.sthrows)||!e.sthrows.length)return[];let t=this.proficiency,r=[];for(let n of e.sthrows){let s=n.name,o=Ct(Number(e[`${s}Points`]));isNaN(o)||r.push({[wb[s]]:o+t})}return r}getSkills(e){if(!("skills"in e)||!Array.isArray(e.skills)||!e.skills.length)return[];let t=[],r=this.proficiency;for(let n of e.skills){let s=n.stat,o=Ct(Number(e[`${s}Points`]));if(isNaN(o))continue;let l="note"in n;t.push({[n.name]:r+o+o*Number(l)})}return t}getProf(e){var r,n;let t=0;return e.cr=="*"&&(t=e.customProf),"cr"in e&&e.cr in _c&&(t=Math.max(Math.floor(2+(((n=(r=_c[e.cr])==null?void 0:r.value)!=null?n:0)-1)/4),2)),isNaN(Number(t))?0:Number(t)}parseConditions(e){if("conditions"in e&&Array.isArray(e.conditions))return e.conditions.map(t=>t.name).join(", ")}};async function Fc(i){return new Promise((e,t)=>{let r=new FileReader,n=[];r.onload=async s=>{try{let o=JSON.parse(s.target.result),l;"monster"in o?l=o.monster:Array.isArray(o)?l=o:typeof o=="object"?l=[o]:t("Invalid monster JSON provided.");let a=[];for(let u of l)try{let h=vl.parse(u);a.push(h)}catch(h){console.error(h);continue}e(a)}catch(o){console.error("reject!!!",o),t(o)}},r.readAsText(i)})}var wl=self;wl.onmessage=async i=>{if(!i.data)return;let{files:e,source:t}=i.data,r=[];for(let n of e)switch(t){case"5e":{let s=await ph(n);r.push(...s!=null?s:[]);break}case"critter":{let s=await gh(n);r.push(...s!=null?s:[]);break}case"improved":{let s=await Rc(n);r.push(...s!=null?s:[]);break}case"appfile":{let s=await Mc(n);r.push(...s!=null?s:[]);break}case"tetra":{let s=await Fc(n);r.push(...s!=null?s:[]);break}case"PF2eMonsterTool":{let s=await Oc(n);r.push(...s!=null?s:[]);break}case"pathbuilder":{let s=await Lc(n);r.push(...s!=null?s:[]);break}case"generic":{let s=await new Promise((o,l)=>{let a=new FileReader;a.onload=async u=>{try{let h=JSON.parse(u.target.result),c=[];if(Array.isArray(h))c=h;else if(typeof h=="object")if("name"in h)c=[h];else for(let d in h)Array.isArray(h[d])&&c.push(...h[d]);else l("Invalid monster JSON provided. Must be array or object.");let f=[];for(let d of c)"name"in d&&f.push(d);o(f)}catch(h){console.error("reject!!!",h),l(h)}},a.readAsText(n)});r.push(...s!=null?s:[])}default:console.error(`Unknown source: ${t}`)}wl.postMessage({monsters:r})};wl.addEventListener("unhandledrejection",function(i){throw i.reason});\n')}var Hi=require("obsidian");var _l=class extends _t{constructor(){super(...arguments);this.saved=!1}display(){this.titleEl.createSpan({text:"Set Sources"}),new Hi.Setting(this.contentEl).setName("A source could not be found for some imported monsters. Do you wish to manually add one?").addText(t=>{t.setPlaceholder("Unknown").onChange(i=>{this.source=i})}),this.buildButtons(this.contentEl)}buildButtons(t){new Hi.Setting(t).addButton(i=>i.setCta().setIcon("checkmark").setTooltip("Save").onClick(()=>{this.saved=!0,this.close()})).addExtraButton(i=>i.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.close()}))}onOpen(){this.display()}},ty=async n=>new Promise(e=>{let t=new _l(n);t.onClose=()=>{t.saved||e(null),e(t.source)},t.open()}),Ca=class{constructor(e){this.plugin=e;this.workers=new Map}async import(e,t){return new Promise(i=>{let a=new wl,s=Q();this.workers.set(s,a),a.onmessage=async r=>{let{monsters:o}=r.data??{monsters:[]};if(o){new Hi.Notice(`Successfully imported ${o.length} Monsters`);let l=o.filter(d=>d.source=="Unknown"||!d.source),c;l.length&&(c=await ty(this.plugin))&&l.forEach(d=>d.source=c)}a.terminate(),this.workers.delete(s),i(o)},a.onerror=r=>{new Hi.Notice(`There was an error importing the file. + +${r.message}`),a.terminate(),this.workers.delete(s),i([])},a.postMessage({files:e,source:t})})}};var ny=[{type:"inline",id:Q(),properties:[],hasRule:!0,nested:[{type:"group",id:Q(),properties:["name","description","aspects","temporaryAspects"],nested:[{type:"heading",id:Q(),properties:["name"],conditioned:!0,size:1},{type:"text",id:Q(),properties:["description"],conditioned:!0,markdown:!0,text:null,dice:!1},{type:"text",id:Q(),properties:["aspects"],markdown:!0,text:null,dice:!1,conditioned:!0,heading:"Aspects"},{type:"text",id:Q(),properties:["temporaryAspects"],markdown:!0,text:null,dice:!1,conditioned:!0,heading:"Temporary Aspects"}],conditioned:!0},{type:"image",id:Q(),properties:["image"],conditioned:!0}]},{type:"table",id:Q(),properties:["stress"],headers:["Physical","Mental"],calculate:!1,hasRule:!0,conditioned:!0},{type:"traits",id:Q(),properties:["consequences"],conditioned:!0,heading:"Consequences"},{type:"traits",id:Q(),properties:["skills"],conditioned:!0,hasRule:!1,heading:"Skills"},{type:"traits",id:Q(),properties:["stunts"],markdown:!0,dice:!1,conditioned:!0,heading:"Stunts"},{type:"traits",id:Q(),properties:["items"],heading:"Items",conditioned:!0,markdown:!0,dice:!1},{type:"traits",id:Q(),properties:["extras"],heading:"Extras",conditioned:!0,markdown:!0,dice:!1}],Ih={blocks:ny,id:"basic-fate-core-layout",name:"Basic Fate Core Layout",edited:!1};var Oh={blocks:[{type:"inline",id:"e9b8483aeafa",properties:[],nested:[{type:"property",id:"2b596a6919fb",properties:["name"],fallback:"-",markdown:!0,dice:!1,conditioned:!0,display:" "},{type:"property",id:"98389a48f808",properties:["level"],fallback:"-",display:" ",conditioned:!0,markdown:!0,dice:!1}],hasRule:!0},{type:"group",id:"4b3a6809a938",properties:[],nested:[{type:"inline",id:"289a4b787968",properties:[],nested:[{type:"property",id:"694a3888b859",properties:["rare_01"],fallback:"-",conditioned:!0,markdown:!0},{type:"property",id:"590a88988ae8",properties:["rare_02"],fallback:"-",conditioned:!0,markdown:!0},{type:"property",id:"9a9be808699a",properties:["rare_03"],fallback:"-",conditioned:!0,markdown:!0},{type:"property",id:"2988db1a685a",properties:["rare_04"],fallback:"-",conditioned:!0,markdown:!0},{type:"property",id:"ba891ba8cbeb",properties:["alignment"],fallback:" ",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"ebf9883938a8",properties:["size"],fallback:" ",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"dabaf9e9fb68",properties:["trait_01"],fallback:" ",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"e81a6aeadbf9",properties:["trait_02"],fallback:" ",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"fa7919caabbb",properties:["trait_03"],fallback:"-",conditioned:!0,display:" ",markdown:!0},{type:"property",id:"58c9c8580b68",properties:["trait_04"],fallback:"-",conditioned:!0,display:" ",markdown:!0},{type:"property",id:"da894a7b8849",properties:["trait_05"],fallback:"-",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"fb6b4b6bab49",properties:["trait_06"],fallback:"-",display:" ",conditioned:!0,markdown:!0},{type:"property",id:"480a5bfafb88",properties:["trait_07"],fallback:"-",display:" ",conditioned:!0,markdown:!0}],hasRule:!0,conditioned:!0}]},{type:"group",id:"5999ea79ca3b",properties:[],nested:[{type:"traits",id:"9a9af9fbe959",properties:["perception"],fallback:"-",heading:" ",conditioned:!0,dice:!0,markdown:!0,headingProp:!0},{type:"property",id:"ba28f9384918",properties:["languages"],fallback:"-",display:"Language",conditioned:!0,markdown:!0},{type:"traits",id:"a8f8187b89fb",properties:["skills"],fallback:"-",markdown:!0,dice:!0,conditioned:!0,heading:" "},{type:"table",id:"b82b0a1a9969",properties:["abilityMods"],headers:["Str","Dex","Con","Int","Wis","Cha"],calculate:!1,fallback:"-",conditioned:!0,dice:!0},{type:"traits",id:"e96ba9d8a80a",properties:["abilities_top"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,heading:" ",hasRule:!1}],hasRule:!0},{type:"group",id:"faaa08993a98",properties:[],nested:[{type:"traits",id:"68ca69891bea",properties:["armorclass"],fallback:"-",heading:"",conditioned:!0,dice:!0,markdown:!0},{type:"traits",id:"9b1998e9a8da",properties:["health"],fallback:"-",heading:"",conditioned:!0,dice:!0,markdown:!0},{type:"traits",id:"ca2bf968987b",properties:["abilities_mid"],fallback:"-",heading:"",conditioned:!0,dice:!0,markdown:!0,hasRule:!1}],hasRule:!0},{type:"group",id:"cbeabaf93b58",properties:[],nested:[{type:"property",id:"0b4809ba0b29",properties:["speed"],fallback:"-",display:"Speed",conditioned:!0,markdown:!0,dice:!1},{type:"traits",id:"882bc9aa0898",properties:["attacks"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,headingProp:!1,heading:""},{type:"traits",id:"6919b8996939",properties:["spellcasting"],fallback:"-",heading:" ",markdown:!0,dice:!0,conditioned:!0},{type:"traits",id:"aacb399a3b58",properties:["abilities_bot"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,hasRule:!1}],hasRule:!0},{type:"text",id:"1b195a894b58",properties:["token"],text:null,fallback:"",heading:"Show to Players",conditioned:!0,markdown:!0},{type:"image",id:"1bba89582b29",properties:["token"],fallback:"",conditioned:!0,hasRule:!0},{type:"property",id:"88e97a485b79",properties:["sourcebook"],fallback:"-",conditioned:!0,markdown:!0,dice:!1,display:" Source:"}],name:"Basic Pathfinder 2e Layout",id:"path-2e-block",version:2,diceParsing:[{regex:/\((\d+d\d+(?:\s*[+-]\s*\d+)?)\)/.source,parser:`const [, text] = matches; +return ["(", { text }, ")"];`,id:Q(),desc:"(1d8+3)"},{regex:/(\w+?) ([+-])(\d+)/.source,parser:`let [, initial, sign, number] = matches; +let mult = 1; +if (sign === "-") { + mult = -1; +} +let text; +if (!isNaN(Number(number))) { + text = \`1d20+\${mult * Number(number)}\`; +} +return [original, " (", { text }, ")"];`,id:Q(),desc:"longsword +15"}]},Ph={blocks:[{type:"inline",id:"e9b8483aeafa",properties:[],nested:[{type:"property",id:"2b596a6919fb",properties:["name"],fallback:"-",markdown:!0,dice:!1,conditioned:!0,display:" "},{type:"ifelse",id:"badbdb298988",conditions:[{nested:[{type:"group",id:"990a4a988ae8",properties:[],nested:[{type:"inline",id:"499aea6a9aca",properties:[],nested:[{type:"action",id:"8a6a7a499b78",icon:"sword",callback:`(async() => { + if (!InitiativeTracker.plugin.view) { + await InitiativeTracker.plugin.addTrackerView(); + } + InitiativeTracker.newEncounter({ + roll: true, + creatures: [monster] + }); + if (InitiativeTracker.plugin.view) { + InitiativeTracker.plugin + .app + .workspace + .revealLeaf(InitiativeTracker.plugin.view.leaf); + } +})();`},{type:"action",id:"fbea380b09b9",icon:"plus-with-circle",callback:`(async() => { + if (!InitiativeTracker.plugin.view) { + await InitiativeTracker.plugin.addTrackerView(); + } + InitiativeTracker.addCreatures([monster]); + if (InitiativeTracker.plugin.view) { + InitiativeTracker.plugin + .app + .workspace + .revealLeaf(InitiativeTracker.plugin.view.leaf); + } +})();`}]}]}],condition:`return plugin.app.plugins.enabledPlugins.has("initiative-tracker"); +`}]},{type:"property",id:"98389a48f808",properties:["level"],fallback:"-",display:" ",conditioned:!0,markdown:!0,dice:!1}],hasRule:!0},{type:"group",id:"4b3a6809a938",properties:[],nested:[{type:"property",id:"0979a989583a",properties:[],fallback:"-",callback:`const traits = [] +if (monster.rarity && monster.rarity.toLowerCase() !== "common") { + traits.push(\`\${monster.rarity}\`); +} + +if (monster.alignment) { + traits.push(\`\${monster.alignment}\`); +} +if (monster.size) { + traits.push(\`\${monster.size}\`); +} + +if (monster.traits) { + traits.push(...monster.traits); +} + +return traits ? ("- " + traits.join("\\n- ")) : "";`,conditioned:!0,display:""}],hasRule:!0,cls:"pf2e-traits"},{type:"group",id:"5999ea79ca3b",properties:[],nested:[{type:"inline",id:"881859197838",properties:[],nested:[{type:"property",id:"4ad9f92ab8f8",properties:["modifier"],fallback:"-",display:"Perception",conditioned:!1,dice:!1,diceCallback:`const num = (property < 0 ? "-" : "+") + Math.abs(property); +return [num, " (", { text: "1d20"+num }, ")"];`,callback:'return (monster.modifier < 0 ? "-" : "+") + Math.abs(monster.modifier);'},{type:"property",id:"8bd82998dadb",properties:["senses"],fallback:"-",conditioned:!0,display:""}],cls:"oneline",conditioned:!0},{type:"property",id:"ba28f9384918",properties:["languages"],fallback:"-",display:"Language",conditioned:!0,markdown:!0},{type:"saves",id:"6a2b78099b0b",properties:["skills"],fallback:"-",display:"Skills",conditioned:!0,dice:!0,callback:`const keys = [...Object.keys(property)]; +const name = keys.shift(); + +if (name === "note") { + return {note: property.note}; +} + +var note; +var stats = []; +for (const key of keys) { + if (key === "note") { + note = property[key]; + } else { + const sign = property[key] < 0 ? "-" : "+"; + const num = Math.abs(property[key]); + stats.push(\`(\${sign}\${num} \${key})\`); + } +} + +if (stats.length == 0 && !note) { + return property; +} + +stats.unshift( + (property[name] < 0 ? "-" : "+") + + Math.abs(property[name])); +const parts = [stats.join(" ")]; +if (note) { + parts.push(note); +} +return {[name]: parts.join(", ")};`},{type:"saves",id:"b82b0a1a9969",properties:["attributes"],fallback:"-",conditioned:!0,display:""},{type:"property",id:"1b6a98ba4888",properties:["items"],fallback:"-",display:"Items",conditioned:!0},{type:"traits",id:"e96ba9d8a80a",properties:["abilities_top"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,heading:" ",hasRule:!1}],hasRule:!0},{type:"group",id:"faaa08993a98",properties:[],nested:[{type:"inline",id:"3a5ab84a2b89",properties:[],nested:[{type:"inline",id:"cb6a7809aa2b",properties:[],nested:[{type:"property",id:"6b0b0bda0a7a",properties:["ac"],fallback:"-",display:"AC"},{type:"property",id:"0908aaab3b1b",properties:["acNote"],fallback:"-",conditioned:!0,display:""}],cls:"withnote",conditioned:!0},{type:"saves",id:"9999386a58ea",properties:["saves"],fallback:"-",dice:!0,display:"",conditioned:!0,callback:`const keys = [...Object.keys(property)]; +const name = keys.shift(); + +if (name === "note") { + return {note: property.note}; +} + +var note; +var stats = []; +for (const key of keys) { + if (key === "note") { + note = property[key]; + } else { + const sign = property[key] < 0 ? "-" : "+"; + const num = Math.abs(property[key]); + stats.push(\`(\${sign}\${num} \${key})\`); + } +} + +if (stats.length == 0 && !note) { + return property; +} + +stats.unshift( + (property[name] < 0 ? "-" : "+") + + Math.abs(property[name])); +const parts = [stats.join(" ")]; +if (note) { + parts.push(note); +} +return {[name]: parts.join(", ")};`}],cls:"oneline",conditioned:!0},{type:"inline",id:"ea29d9ea5aa8",properties:[],nested:[{type:"inline",id:"39584be95ae9",properties:[],nested:[{type:"property",id:"bb6989092939",properties:["hp"],fallback:"-",display:"HP"},{type:"property",id:"b9fa1a89c8d9",properties:["hpNote"],fallback:"-",doNotAddClass:!1,conditioned:!0,display:""}],cls:"withnote",conditioned:!0},{type:"property",id:"4bbaa9380a9b",properties:["hardness"],fallback:"-",display:"Hardness",conditioned:!0},{type:"property",id:"0a8ac8d96bba",properties:["immunities"],fallback:"-",conditioned:!0,display:"Immunities"},{type:"property",id:"78689b6b6b79",properties:["weaknesses"],fallback:"-",conditioned:!0,display:"Weaknesses"},{type:"property",id:"8b7a3b89fa59",properties:["resistances"],fallback:"-",conditioned:!0,display:"Resistances"}],cls:"oneline",conditioned:!0},{type:"traits",id:"ca2bf968987b",properties:["abilities_mid"],fallback:"-",heading:"",conditioned:!0,dice:!0,markdown:!0,hasRule:!1}],hasRule:!0},{type:"group",id:"cbeabaf93b58",properties:[],nested:[{type:"property",id:"0b4809ba0b29",properties:["speed"],fallback:"-",display:"Speed",conditioned:!0,markdown:!0,dice:!1},{type:"traits",id:"882bc9aa0898",properties:["attacks"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,headingProp:!1,heading:"",callback:`var s = ""; +if (property.bonus) { + s += (property.bonus < 0 ? "-" : "+") + Math.abs(property.bonus); +} +if (property.desc) { + s += " " + property.desc +} +if (property.damage) { + s += ", __Damage__ " + property.damage +} +return s`},{type:"traits",id:"faeafb7b6b1b",properties:["spellcasting"],fallback:"-",conditioned:!0,dice:!0},{type:"traits",id:"aacb399a3b58",properties:["abilities_bot"],fallback:"-",conditioned:!0,dice:!0,markdown:!0,hasRule:!1}],hasRule:!0},{type:"text",id:"1b195a894b58",properties:["token"],text:null,fallback:"",heading:"Show to Players",conditioned:!0,markdown:!0},{type:"image",id:"1bba89582b29",properties:["token"],fallback:"",conditioned:!0,hasRule:!0},{type:"property",id:"88e97a485b79",properties:["sourcebook"],fallback:"-",conditioned:!0,markdown:!0,dice:!1,display:" Source:"}],name:"Pathfinder 2e Creature Layout",id:"b8ab3ae89a0a",diceParsing:[{regex:"(\\s|^)(\\d+d\\d+(?:\\s*[+-]\\s*\\d+)?)(\\W|$)",parser:`const [, before, text, after] = matches; +return [before + text, " (", { text }, ")", after];`,id:"4a79397b896a",desc:"1d6+10"},{regex:"(^|\\s)([+-]\\d+)(\\W|$)(?!status|bonus)",parser:`let [, before, bonus, after] = matches; +return [ + before + bonus, + " (", { text: "1d20" + bonus }, ")", + after +];`,id:"8bb8fbbb0869",desc:"+15"}],edited:!0};var Rh={blocks:[{type:"inline",id:"2a9b58ba0ab8",properties:[],nested:[{type:"heading",id:"c89a2ae859f8",properties:["name"],size:1,fallback:"Creature"},{type:"image",id:"e83a48f858b8",properties:["image"],fallback:"TILE ART",conditioned:!0,hasRule:!1}],hasRule:!0},{type:"group",id:"fabb0b884838",properties:[],nested:[{type:"text",id:"5b7bc86b6919",properties:["flavor_text"],text:null,fallback:"-",conditioned:!0,markdown:!0,hasRule:!1}],cls:"flavor-text",hasRule:!0},{type:"group",id:"1a6999887a69",properties:[],nested:[{type:"javascript",id:"d958f898e9fa",conditioned:!1,code:`var base_string = \`\${monster.level} level \${monster.role}\`; + +if (monster.size) { + base_string = \`\${monster.size} \${base_string}\`; +} + +const monster_strength = document.createElement("p"); +monster_strength.innerHTML = base_string; +monster_strength.classList.add("monster-strength"); + +if (monster.type) { + const type = \`[\${monster.type}]\`; + const type_block = document.createElement("span"); + type_block.classList.add("type"); + type_block.innerText = type; + + monster_strength.append(type_block) +} + +return monster_strength;`},{type:"property",id:"780809c90898",properties:["initiative"],fallback:"+0",display:"Initiative: ",markdown:!0},{type:"property",id:"88eb4a6aea0b",properties:["vulnerability"],fallback:"-",display:"Vulnerability: ",conditioned:!0,markdown:!0}],hasRule:!0},{type:"group",id:"999bb81b7aab",properties:[],nested:[{type:"traits",id:"996ab9d9a86a",properties:["actions"],fallback:"-",markdown:!0,hasRule:!0},{type:"traits",id:"69ca5b7a3898",properties:["traits"],fallback:"-",conditioned:!0,markdown:!0,hasRule:!0},{type:"traits",id:"c8794b580948",properties:["triggered_actions"],fallback:"-",headingProp:!1,heading:"Triggered Abilities",conditioned:!0,markdown:!0,hasRule:!0},{type:"traits",id:"aa1a3a2abb19",properties:["nastier_traits"],fallback:"-",headingProp:!1,heading:"Nastier Specials",conditioned:!0,subheadingText:"",markdown:!0,hasRule:!0}],hasRule:!1,cls:"abilities"},{type:"group",id:"8a7969a96a48",properties:[],nested:[{type:"javascript",id:"f99b8b1bf908",conditioned:!1,code:`const getStatLine = (statName, statValue) => { + const statLine = document.createElement("div"); + const statClass = \`\${statName.toLowerCase()}-block\`; + statLine.classList.add("defense-line"); + statLine.classList.add(statClass); + + const statNameBlock = document.createElement("span"); + statNameBlock.classList.add("defense-name"); + statNameBlock.innerText = statName.toUpperCase(); + + const statValueBlock = document.createElement("span"); + statValueBlock.classList.add("defense-value"); + + if (statName === "HP" && monster.mook !== undefined) { + statValue = \`\${statValue} (mook)\`; + } + + statValueBlock.innerText = statValue; + + statLine.append(statNameBlock); + statLine.append(statValueBlock); + + return statLine; +} + +const statFullBlock = document.createElement("div"); +statFullBlock.classList.add("defense-block"); +statFullBlock.append(getStatLine("AC", monster.ac)); +statFullBlock.append(getStatLine("PD", monster.pd)); +statFullBlock.append(getStatLine("MD", monster.md)); +statFullBlock.append(getStatLine("HP", monster.hp)); + +return statFullBlock; +`},{type:"property",id:"6aa9684a08db",properties:["mook"],fallback:"-",display:"Mook",conditioned:!0,callback:"return `Kill one _${monster.name}_ for every ${monster.hp} damage dealt to the mob`",markdown:!0}],cls:"monster-stats"},{type:"group",id:"a96bcabad818",properties:[],nested:[{type:"text",id:"4a0b6a59385a",properties:["description"],text:null,conditioned:!0,fallback:"-",markdown:!0}],cls:"monster-description"}],name:"Basic 13th Age Monster Layout",id:"basic-13th-age-monster-block"};var Nh={blocks:[{type:"group",id:"0a58d8280a7b",properties:[],nested:[{type:"image",id:"48db7bfb6809",properties:["Token"],fallback:"-",conditioned:!0}]},{type:"group",id:"b8e9ea5a5b68",properties:[],nested:[{type:"inline",id:"7a3a6b3ad9d9",properties:[],nested:[{type:"heading",id:"0a982a598818",properties:["Name"],size:1,fallback:"-"},{type:"property",id:"cb1a28885afb",properties:["Type"],fallback:"Unknown.",conditioned:!1,display:" "}]},{type:"subheading",id:"4b3848590a48",properties:["TitleOfMob","FlavorText","TypeOfBoss"],separator:" , ",fallback:"-",conditioned:!0}],hasRule:!0},{type:"group",id:"fb98fb48f93a",properties:[],nested:[{type:"inline",id:"3898c8ea0bf9",properties:[],nested:[{type:"property",id:"a8980a09e92a",properties:["BadassRank"],fallback:" ",conditioned:!1,display:" "},{type:"property",id:"c83a18fb2ac9",properties:["MovementType"],fallback:" ",display:" ",callback:`const Move = monster.MovementType; +const Types = ['move', 'flight', 'swim', 'burrow', 'teleport', 'leap', 'hover', 'climb',]; +const Symbols = ['\u2B47', '\u{E1502}', '\u{E1504}', '\u{E1506}', '\u{E1503}', '\u{E1501}', '\u{E1500}', '\u{E1505}',]; + +let Output = ''; +for (let i = 0; i < Types.length; i++) { + for (let j = 0; j <= 10; j++) { + if (Move.includes(\`\${Types[i]} \${j}\`)) { + Output += \`\${Symbols[i]} \${j} Square\${j > 1 ? 's' : ''}\\n\`; + } + } +} + +return Output.trim();`},{type:"inline",id:"59e8dad80b6b",properties:[],nested:[{type:"property",id:"d8d98b8b6bfa",properties:["Health"],fallback:"Dead",conditioned:!0,display:"Health:"},{type:"property",id:"c969ebe85aca",properties:["Shield"],fallback:"N/A",display:"Shield:",conditioned:!0},{type:"property",id:"b95a6a68e89b",properties:["Armor"],fallback:"N/A",conditioned:!0,display:"Armor:"},{type:"property",id:"cb4a68db0ad8",properties:["Traits"],fallback:"N/A",display:"Traits:",conditioned:!0,markdown:!0}],cls:"shat"}],cls:"bomshat"}]},{type:"group",id:"2a99795abbb8",properties:[],nested:[{type:"property",id:"1a4aaa3b78e9",properties:["Weapon"],fallback:"N/A",conditioned:!1,dice:!0,display:"Weapon:"},{type:"property",id:"4a8b3ae86bb8",properties:["Special"],fallback:"-",display:"Special:",dice:!0,markdown:!0},{type:"property",id:"d85b69696908",properties:["SuperSpecial"],fallback:"-",display:"Additional Effects:",conditioned:!0,markdown:!0,dice:!0,hasRule:!0}],hasRule:!1},{type:"group",id:"8ae89989a83b",properties:[],nested:[{type:"traits",id:"cb28b8484afa",properties:["Actions"],fallback:"-",heading:"Actions",conditioned:!0,hasRule:!1,markdown:!0,dice:!0},{type:"traits",id:"5beae9c80838",properties:["Mayhem"],fallback:"-",conditioned:!0,heading:"\u{E1531} Mayhem",dice:!0,markdown:!0},{type:"traits",id:"ea6b78db3b59",properties:["Loot"],fallback:"-",heading:"Loot",conditioned:!0,dice:!0,markdown:!0}],hasRule:!1,cls:""},{type:"group",id:"283a2b39ca3a",properties:[],nested:[{type:"text",id:"8a78b8393819",properties:["Image"],text:null,fallback:"-",heading:"",conditioned:!0},{type:"image",id:"2b09ea3958fa",properties:["Image"],fallback:"-",conditioned:!0}],cls:"biggies"}],id:"basic-bnb-bestiary-layout",name:"Basic BnB Bestiary Layout",edited:!1};var Bh={blocks:[{type:"inline",id:"aabbab5bb92a",properties:[],nested:[{type:"image",id:"a80b9a1a791b",properties:["Token"],fallback:"-",conditioned:!0}]},{type:"inline",id:"19788a293819",properties:[],nested:[{type:"heading",id:"bb98085bdbab",properties:["Name"],fallback:"Unknown",conditioned:!1,size:1},{type:"property",id:"f97b886ba819",properties:["Type"],fallback:"Unknown",display:"",conditioned:!0,markdown:!0,dice:!1}],hasRule:!0},{type:"group",id:"c81968abe80b",properties:[],nested:[{type:"inline",id:"4809ea49d92a",properties:[],nested:[{type:"inline",id:"48f93a487988",properties:[],nested:[{type:"property",id:"4dc7e12b6c6c",properties:["MovementType"],fallback:"-",display:" ",conditioned:!0,callback:`const Move = monster.MovementType; +const Types = ['move', 'flight', 'swim', 'burrow', 'teleport', 'leap', 'hover', 'climb',]; +const Symbols = ['\u2B47', '\u{E1502}', '\u{E1504}', '\u{E1506}', '\u{E1503}', '\u{E1501}', '\u{E1500}', '\u{E1505}',]; + +let Output = ''; +for (let i = 0; i < Types.length; i++) { + for (let j = 0; j <= 10; j++) { + if (Move.includes(\`\${Types[i]} \${j}\`)) { + Output += \`\${Symbols[i]} \${j} Square\${j > 1 ? 's' : ''}\\n\`; + } + } +} + +return Output.trim();`,markdown:!1,hasRule:!1},{type:"inline",id:"294ad96ad9ba",properties:[],nested:[{type:"property",id:"4a3beb0948e9",properties:["Health"],fallback:"-",display:"Health:",conditioned:!0},{type:"property",id:"7ac8d84999bb",properties:["Regen"],fallback:"-",display:"HP Regen:",conditioned:!0,dice:!0},{type:"property",id:"ea8b1b5bfb4a",properties:["Shield"],fallback:"",display:"Shield:",conditioned:!0},{type:"property",id:"596b79ab7b6a",properties:["Charge"],fallback:"-",display:"SH Charge:",conditioned:!0,dice:!0},{type:"property",id:"f8aa6b4a396a",properties:["Armor"],fallback:"-",display:"Armor:",conditioned:!0},{type:"property",id:"8a2a6a691918",properties:["Repair"],fallback:"-",display:"AR Repair:",conditioned:!0,dice:!0},{type:"property",id:"2b5b9b0b689b",properties:["Traits"],fallback:"-",conditioned:!0,display:"Traits:"}],cls:"familiar-tams"}],cls:""}],hasRule:!1,cls:"move-shat"},{type:"table",id:"cb4bdb99abdb",properties:["Abilityscore"],headers:["ACC","DMG","SPD","MST"],calculate:!1,fallback:"-",conditioned:!0,dice:!0},{type:"property",id:"494b58086a5a",properties:["Damage"],fallback:"-",display:"Damage:",conditioned:!0,dice:!0,hasRule:!0}],hasRule:!1,conditioned:!0},{type:"group",id:"eaa94ab86ba9",properties:[],nested:[{type:"property",id:"3a4a88da394a",properties:["Weapon"],fallback:"N/A",markdown:!0,display:"Weapon:",dice:!0,conditioned:!0},{type:"property",id:"5a8b7b08b8ca",properties:["Special"],fallback:"N/A",display:"Special:",markdown:!0,hasRule:!1,dice:!0,conditioned:!0},{type:"traits",id:"b9da9b7a6958",properties:["SuperSpecial"],fallback:"-",conditioned:!0,dice:!0,markdown:!0}],hasRule:!0,conditioned:!0},{type:"group",id:"799ada4bc8c9",properties:[],nested:[{type:"table",id:"5a2bdb7819b8",properties:["Hit-Crit"],headers:["2-7","8-15","16+"],calculate:!1,fallback:"-",conditioned:!0,dice:!0},{type:"traits",id:"ea68aaba0819",properties:["Actions"],fallback:"-",heading:"Actions",conditioned:!0,markdown:!0,dice:!0},{type:"traits",id:"d979ba0a69da",properties:["Skills"],fallback:"-",headingProp:!1,heading:"Skills",conditioned:!0,markdown:!0,dice:!0}],conditioned:!1,hasRule:!0},{type:"image",id:"999b68298919",properties:["Image"],fallback:"-",conditioned:!0}],id:"basic-bnb-familiar-layout",name:"Basic BnB Familiar Layout",edited:!1};var Lh={blocks:[{type:"group",id:"ebba4bf9d878",properties:[],nested:[{type:"heading",id:"89998949fb0b",properties:["name"],size:1,fallback:"-",conditioned:!0}]},{type:"group",id:"7ba8a9d9d968",properties:[],nested:[{type:"property",id:"982ba9097959",properties:["tier"],fallback:"",callback:'return monster.tier + " " + monster.type;',conditioned:!0,display:"Tier"}],cls:"daggerheart-adversary-tier"},{type:"group",id:"48780938f9a8",properties:[],nested:[{type:"text",id:"a8196bebf98a",properties:["description"],text:"",fallback:"-",conditioned:!0}],heading:"",cls:"daggerheart-adversary-description"},{type:"group",id:"eb5b3a8a9ac9",properties:[],nested:[{type:"property",id:"a8988bca599a",properties:["motives_and_tactics"],fallback:"-",display:"Motives & Tactics:"}],hasRule:!0,cls:"daggerheart-adversary-motives"},{type:"group",id:"c90a4a79fb0b",properties:[],nested:[{type:"inline",id:"ab385a3b1869",properties:[],nested:[{type:"property",id:"781b3bdbd86b",properties:["difficulty"],fallback:"-",display:"Difficulty:",conditioned:!0},{type:"property",id:"5ae888f87b98",properties:["thresholds"],fallback:"-",display:"Thresholds"}]},{type:"inline",id:"694abb2acaf9",properties:[],nested:[{type:"property",id:"58a80a396ba9",properties:["atk"],fallback:"-",display:"ATK:"},{type:"property",id:"cb48eb0918aa",properties:["attack"],fallback:"-",display:"Attack:",callback:'return monster.attack + " - " + monster.range + " - " + monster.damage;'}],hasRule:!0},{type:"property",id:"0a99fa7a9b3b",properties:["experience"],fallback:"-",display:"Experience:",conditioned:!0}],hasRule:!1},{type:"traits",id:"eb590bb8cb9b",properties:["feats"],fallback:"-",heading:"Features",conditioned:!0,headingProp:!1,callback:"return property.text;"},{type:"javascript",id:"38898abb38db",conditioned:!1,code:`const getStatLine = () => { + const statLine = document.createElement("div"); + const statClass = \`\${monster.name.replace(/[^a-zA-Z0-9]/g,'-').toLowerCase()}-block\`; + statLine.classList.add("adversary-block"); + statLine.classList.add(statClass); + + let numBlocks = monster.qty ? monster.qty : 1; + + for (let i = 1; i <= numBlocks; i++) { + let adversaryBlock = document.createElement("div"); + let adversaryClass = \`\${monster.name.replace(/[^a-zA-Z0-9]/g,'-').toLowerCase()}-block\`; + adversaryBlock.classList.add("stat-line"); + adversaryBlock.classList.add(adversaryClass); + + // add adversary name/number + adversaryBlock.append(getAdversaryNameBlock(monster.name, i)); + + // add hp title + adversaryBlock.append(document.createElement("br")); + adversaryBlock.append(getStatNameBlock("HP", monster.hp)); + + // for each hp make checkbox + for (let h = 0; h < monster.hp; h++) { + adversaryBlock.append(getCheckboxValueBlock("hp", h)); + } + + // add stress title + adversaryBlock.append(document.createElement("br")); + adversaryBlock.append(getStatNameBlock("stress", monster.stress)); + + // for each stress make checkbox + for (let s = 0; s < monster.stress; s++) { + adversaryBlock.append(getCheckboxValueBlock("stress", s)); + } + + statLine.append(adversaryBlock); + } + + return statLine; +} + +const getCheckboxValueBlock = (type, val) => { + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.classList.add(\`\${type}-\${val}\`); + checkbox.classList.add("stat-value"); + checkbox.onclick = () => { + console.log("Invoke script to save data"); + }; + return checkbox; +} + +const getStatNameBlock = (statName, val) => { + const statNameBlock = document.createElement("span"); + statNameBlock.classList.add("stat-name"); + statNameBlock.innerText = \`\${statName.toUpperCase()} (\${val}): \`; + return statNameBlock; +} + +const getAdversaryNameBlock = (adversaryName, num) => { + const adversaryNameBlock = document.createElement("span"); + adversaryNameBlock.classList.add("adversary-name"); + adversaryNameBlock.innerText = \`\${adversaryName.toUpperCase()} #\${num}: \`; + return adversaryNameBlock; +} + +const statFullBlock = document.createElement("div"); +statFullBlock.classList.add("stat-block"); +statFullBlock.append(getStatLine()); + +return statFullBlock; +`}],id:"daggerheart-adversary",name:"Daggerheart Adversary",edited:!1},Fh={blocks:[{type:"group",id:"fae98b382b8b",properties:[],nested:[{type:"inline",id:"488aea38d9a9",properties:[],nested:[{type:"javascript",id:"685908eb3b9a",conditioned:!1,code:`const ribbonBlock = document.createElement("div"); +ribbonBlock.classList.add("daggerheart-card-ribbon"); + +const levelBlock = document.createElement("div"); +levelBlock.classList.add("card-level"); + +const levelText = document.createElement("span"); +levelText.innerHTML = monster.level; + +levelBlock.append(levelText); + +const domainBlock = document.createElement("div"); +domainBlock.classList.add("card-domain"); +domainBlock.classList.add(monster.domain); + +const domainText = document.createElement("span"); +domainText.innerText = monster.domain; +domainBlock.append(domainText) + +ribbonBlock.append(levelBlock); +ribbonBlock.append(domainBlock); + +console.log(monster); + +return ribbonBlock;`},{type:"group",id:"7b59baf8aa08",properties:[],nested:[{type:"property",id:"094b19aabb38",properties:["recall"],fallback:"-",conditioned:!0}]}],conditioned:!1},{type:"image",id:"9a0baa691af9",properties:["image"],fallback:"-"},{type:"group",id:"995ac80a7b5a",properties:[],nested:[{type:"javascript",id:"cb3a08baabfb",conditioned:!1,code:`const headingBlock = document.createElement("div"); +headingBlock.classList.add("daggerheart-heading"); + +const typeBlock = document.createElement("div"); +typeBlock.classList.add("card-type"); +typeBlock.classList.add(monster.domain); + +const typeText = document.createElement("span"); +typeText.innerText = monster.type; +typeBlock.append(typeText) + +headingBlock.append(typeBlock); + +return headingBlock;`}],hasRule:!1},{type:"group",id:"098a5a785abb",properties:[],nested:[{type:"heading",id:"3b8bb868c818",properties:["name"],size:1,fallback:"Card Name"}],hasRule:!1},{type:"group",id:"cbbaeab91a3b",properties:[],nested:[{type:"property",id:"281afa3a39d9",properties:["text"],fallback:"-"}]}],cls:"daggerheart-card"}],id:"daggerheart-card",name:"Daggerheart Card",edited:!1},Wh={blocks:[{type:"group",id:"9beb08f99a5a",properties:[],nested:[{type:"heading",id:"89998949fb0b",properties:["name"],size:1,fallback:"-",conditioned:!0},{type:"property",id:"982ba9097959",properties:["tier"],fallback:"",callback:'return monster.tier + " " + monster.type;',conditioned:!0,display:"Tier"},{type:"text",id:"a8196bebf98a",properties:["description"],text:"",fallback:"-",conditioned:!0},{type:"property",id:"a8988bca599a",properties:["impulses"],fallback:"-",display:"Impulses:",conditioned:!0},{type:"group",id:"c90a4a79fb0b",properties:[],nested:[{type:"inline",id:"ab385a3b1869",properties:[],nested:[{type:"property",id:"781b3bdbd86b",properties:["difficulty"],fallback:"-",display:"Difficulty:",conditioned:!0}]},{type:"inline",id:"694abb2acaf9",properties:[],nested:[{type:"property",id:"58a80a396ba9",properties:["potential_adversaries"],fallback:"-",display:"Potential Adversaries:",conditioned:!0}],hasRule:!0}],hasRule:!1},{type:"traits",id:"eb590bb8cb9b",properties:["feats"],fallback:"-",heading:"Features",conditioned:!0,headingProp:!1,callback:"return property.text;"}],heading:"",cls:"daggerheart-environment"}],id:"daggerheart-environment",name:"Daggerheart Environment",edited:!1};var ci=[rn,Ih,Oh,Ph,Rh,Nh,Bh,Lh,Fh,Wh];var ui=require("obsidian");function iy(n){se(n,"svelte-xx603q",".pagination.svelte-xx603q.svelte-xx603q{display:flex;justify-content:space-between;align-items:center;gap:1rem}.paginated-container.svelte-xx603q.svelte-xx603q{display:flex;align-items:center;gap:1rem}.paginated.svelte-xx603q.svelte-xx603q{display:flex;align-items:center;gap:1rem}.clickable-icon.active.svelte-xx603q.svelte-xx603q{background-color:var(--background-modifier-hover)}.slicer.svelte-xx603q.svelte-xx603q{display:flex;align-items:center;gap:0.5rem}.slicer.svelte-xx603q .per.svelte-xx603q{color:var(--text-muted);font-size:var(--font-smallest)}")}function Hh(n,e,t){let i=n.slice();return i[16]=e[t],i}function ay(n){let e,t=n[16]+"",i,a,s,r;function o(){return n[14](n[16])}return{c(){e=v("span"),i=pe(t),a=R(),g(e,"class","clickable-icon svelte-xx603q"),re(e,"active",n[16]==n[3])},m(l,c){D(l,e,c),y(e,i),y(e,a),s||(r=q(e,"click",o),s=!0)},p(l,c){n=l,c&16&&t!==(t=n[16]+"")&&we(i,t),c&24&&re(e,"active",n[16]==n[3])},d(l){l&&x(e),s=!1,r()}}}function sy(n){let e,t,i;return{c(){e=v("span"),e.textContent="..."},m(a,s){D(a,e,s),t||(i=q(e,"click",n[13]),t=!0)},p:N,d(a){a&&x(e),t=!1,i()}}}function zh(n){let e;function t(s,r){return s[16]==null?sy:ay}let i=t(n,-1),a=i(n);return{c(){a.c(),e=_e()},m(s,r){a.m(s,r),D(s,e,r)},p(s,r){i===(i=t(s,r))&&a?a.p(s,r):(a.d(1),a=i(s),a&&(a.c(),a.m(e.parentNode,e)))},d(s){s&&x(e),a.d(s)}}}function ry(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S=be(n[4]),C=[];for(let M=0;M(r(),r=Dt(p,B=>t(3,s=B)),p),l,c=N,d=()=>(c(),c=Dt(b,B=>t(12,l=B)),b),u,h=N,f=()=>(h(),h=Dt(m,B=>t(15,u=B)),m);n.$$.on_destroy.push(()=>r()),n.$$.on_destroy.push(()=>c()),n.$$.on_destroy.push(()=>h());let{slice:m}=e;f();let{page:p}=e;o();let{pages:b}=e;d();let _=B=>{new ui.DropdownComponent(B).addOptions({10:"10",25:"25",50:"50",100:"100",200:"200"}).setValue(`${u}`).onChange(L=>Ae(m,u=Number(L),u))},S,C=B=>{t(9,S=new ui.ExtraButtonComponent(B).setIcon("chevron-left").setDisabled(s==1).onClick(()=>{Ae(p,s=s-1,s)}))},M,w=B=>{t(10,M=new ui.ExtraButtonComponent(B).setIcon("chevron-right").setDisabled(s==l).onClick(()=>{Ae(p,s=Math.min(s+1,l),s)}))},k=B=>{let L=new ui.Menu;for(let O of i)L.addItem(j=>{j.setTitle(`${O}`).onClick(()=>{Ae(p,s=O,s)})});L.showAtMouseEvent(B)},A=B=>k(B),P=B=>Ae(p,s=B,s);return n.$$set=B=>{"slice"in B&&f(t(0,m=B.slice)),"page"in B&&o(t(1,p=B.page)),"pages"in B&&d(t(2,b=B.pages))},n.$$.update=()=>{n.$$.dirty&4096&&t(11,i=[...Array(l).keys()].map(B=>B+1)),n.$$.dirty&5640&&M&&S&&(M.setDisabled(s==l),S.setDisabled(s==1)),n.$$.dirty&6152&&t(4,a=i.reduce((B,L)=>(L==1||s==1&&(L==2||L==3)||L==l||s==l&&(L==l-1||L==l-2)||L==s-1||L==s||L==s+1?B.push(L):B.length>=1&&B[B.length-1]!=null&&B.push(null),B),[]))},[m,p,b,s,a,_,C,w,k,S,M,i,l,A,P]}var Sl=class extends G{constructor(e){super(),K(this,e,oy,ry,V,{slice:0,page:1,pages:2},iy)}},qh=Sl;var qi=require("obsidian");var Ws=require("obsidian");var Pt=require("obsidian");function ly(n){se(n,"svelte-1m3i208",".top-level.svelte-1m3i208.svelte-1m3i208{display:flex;flex-flow:column nowrap}textarea.svelte-1m3i208.svelte-1m3i208{flex-grow:1;height:500px;max-height:50vh}.json.svelte-1m3i208.svelte-1m3i208{margin-bottom:1rem;display:flex;justify-content:flex-start;align-items:center}.json.svelte-1m3i208>div.svelte-1m3i208{border-radius:4px;margin:5px 0px}.active.svelte-1m3i208.svelte-1m3i208{background-color:var(--background-secondary-alt)}.buttons.svelte-1m3i208.svelte-1m3i208{margin-top:1rem;display:flex;justify-content:flex-end;align-items:center}")}function jh(n){let e,t,i,a;return{c(){e=v("textarea"),e.value=t=n[6](),g(e,"class","svelte-1m3i208")},m(s,r){D(s,e,r),n[11](e),i||(a=q(e,"blur",n[12]),i=!0)},p:N,d(s){s&&x(e),n[11](null),i=!1,a()}}}function cy(n){let e,t,i,a,s,r,o,l,c,d,u,h=n[0],f,m,p,b,_,S,C,M,w,k=jh(n);return{c(){e=v("div"),t=v("h2"),t.textContent="Edit Monster",i=R(),a=v("div"),s=v("div"),r=v("div"),l=R(),c=v("div"),u=R(),k.c(),f=R(),m=v("div"),p=v("div"),_=R(),S=v("div"),g(r,"class","svelte-1m3i208"),re(r,"active",!n[0]),g(c,"class","svelte-1m3i208"),re(c,"active",n[0]),g(s,"class","json svelte-1m3i208"),g(a,"class","top-level svelte-1m3i208"),g(m,"class","buttons svelte-1m3i208"),g(e,"class","edit-monster-modal")},m(A,P){D(A,e,P),y(e,t),y(e,i),y(e,a),y(a,s),y(s,r),y(s,l),y(s,c),y(a,u),k.m(a,null),y(e,f),y(e,m),y(m,p),y(m,_),y(m,S),M||(w=[J(o=n[3].call(null,r)),q(r,"click",n[9]),J(d=n[2].call(null,c)),q(c,"click",n[10]),J(b=n[4].call(null,p)),J(C=n[5].call(null,S))],M=!0)},p(A,[P]){P&1&&re(r,"active",!A[0]),P&1&&re(c,"active",A[0]),P&1&&V(h,h=A[0])?(k.d(1),k=jh(A),k.c(),k.m(a,null)):k.p(A,P)},i:N,o:N,d(A){A&&x(e),k.d(A),M=!1,oe(w)}}}function uy(n,e,t){let i=Me(),{monster:a={}}=e,s=!1,r,o=_=>{new Pt.ExtraButtonComponent(_).setIcon("code-glyph").setTooltip("JSON")},l=_=>{new Pt.ExtraButtonComponent(_).setIcon("lines-of-text").setTooltip("YAML")},c=_=>{new Pt.ButtonComponent(_).setIcon("checkmark").setTooltip("Save Changes").onClick(()=>{if(s)try{s?t(8,a=JSON.parse(r.value)):t(8,a=(0,Pt.parseYaml)(r.value))}catch(S){console.error(S),new Pt.Notice(`There was an error saving the creaturen + +${S.message}`);return}i("save",a)})},d=_=>{new Pt.ExtraButtonComponent(_).setIcon("cross").setTooltip("Cancel").onClick(()=>{i("cancel")})};function u(){return s?JSON.stringify(a,null,2):!a||!Object.keys(a??{})?.length?"":(0,Pt.stringifyYaml)(a).trim()}function h(){try{s?t(8,a=JSON.parse(r.value)):t(8,a=(0,Pt.parseYaml)(r.value))}catch(_){console.error(_)}}let f=()=>t(0,s=!1),m=()=>t(0,s=!0);function p(_){Re[_?"unshift":"push"](()=>{r=_,t(1,r)})}let b=()=>h();return n.$$set=_=>{"monster"in _&&t(8,a=_.monster)},[s,r,o,l,c,d,u,h,a,f,m,p,b]}var Cl=class extends G{constructor(e){super(),K(this,e,uy,cy,V,{monster:8},ly)}},Vh=Cl;var zi=class extends _t{constructor(t,i={}){super(t);this.monster=i}onOpen(){this._instance=new Vh({target:this.contentEl,props:{monster:this.monster}}),this._instance.$on("cancel",()=>{this.close()}),this._instance.$on("save",async({detail:t})=>{if(!t.name){new Ws.Notice("Creatures must be given a name.");return}await this.plugin.updateMonster(this.monster,t),this.close()})}onClose(){}close(){this._instance&&this._instance.$destroy(),super.close()}},Fs=class extends _t{constructor(t,i){super(t);this.monster=i}async display(){Ws.Platform.isMobile||(this.contentEl.style.maxWidth="85vw"),new Yt({container:this.contentEl,monster:this.monster,plugin:this.plugin})}onOpen(){this.display()}};var wn=Le(""),di=Le([]),Hs="None",Uh=kt([wn,di],([n,e])=>(n?.length?1:0)+(e?.length?1:0));function dy(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","creature")},m(s,r){D(s,e,r),i||(a=J(t=n[0].call(null,e)),i=!0)},p:N,i:N,o:N,d(s){s&&x(e),i=!1,a()}}}function hy(n,e,t){let i;Se(n,wn,c=>t(3,i=c));let{item:a}=e,s=Me(),r=At("plugin"),o,l=c=>{t(2,o=new qi.Setting(c));let d,u=!1;if(Array.isArray(a.source)){let h=a.source.slice(0,4);a.source.length>4&&(h.push(`and ${a.source.length-4} more`),u=!0),d=ye(h,0,", ",!1)}else d=a.source;if(o.setDesc(d??""),u&&o.descEl.setAttr("aria-label",ye(a.source,0,", ",!1)),ve.isLocal(a.name))o.addExtraButton(h=>{h.setIcon("pencil").setTooltip("Edit").onClick(()=>{new zi(r,a).open()})}).addExtraButton(h=>{h.setIcon("trash").setTooltip("Delete").onClick(async()=>{await r.deleteMonsters(a.name)})});else if(a.path){let h=r.app.vault.getFileByPath(a.path);if(!h)return;o.addExtraButton(f=>{f.setIcon("file-symlink").onClick(async()=>{await r.app.workspace.getLeaf().openFile(h),r.app.setting.close()})})}o.addExtraButton(h=>{h.setIcon("info").setTooltip("View").onClick(()=>{new Fs(r,a).open()})})};return n.$$set=c=>{"item"in c&&t(1,a=c.item)},n.$$.update=()=>{if(n.$$.dirty&14&&o)if(i.length){let c=(0,qi.prepareSimpleSearch)(i)(a.name);c&&(o.nameEl.empty(),(0,qi.renderMatches)(o.nameEl,a.name,c.matches))}else o.setName(a.name)},[l,a,o,i]}var xl=class extends G{constructor(e){super(),K(this,e,hy,dy,V,{item:1})}},Gh=xl;var Vs=require("obsidian");var zs=require("obsidian");function fy(n){se(n,"svelte-1xutc2s",".search.svelte-1xutc2s,.search.svelte-1xutc2s input{width:100%}")}function my(n){let e,t,i,a;return{c(){e=v("div"),g(e,"class","search svelte-1xutc2s")},m(s,r){D(s,e,r),i||(a=J(t=n[1].call(null,e)),i=!0)},p:N,i:N,o:N,d(s){s&&x(e),i=!1,a()}}}function gy(n,e,t){let i,a=N,s=()=>(a(),a=Dt(r,c=>t(3,i=c)),r);n.$$.on_destroy.push(()=>a());let{filter:r}=e;s();let{placeholder:o}=e,l=c=>{let d=new zs.SearchComponent(c).setPlaceholder(o).onChange((0,zs.debounce)(u=>{Ae(r,i=u,i)},10));r.subscribe(u=>{(!u||!u.length)&&d.setValue("")})};return n.$$set=c=>{"filter"in c&&s(t(0,r=c.filter)),"placeholder"in c&&t(2,o=c.placeholder)},[r,l,o]}var Al=class extends G{constructor(e){super(),K(this,e,gy,my,V,{filter:0,placeholder:2},fy)}},Kh=Al;function py(n){se(n,"svelte-66wdl1","div.svelte-66wdl1{display:inline-block;vertical-align:middle;margin:0 3pt;border-width:calc(1em / 5);border-style:solid;border-radius:50%;animation:var(--duration) infinite svelte-66wdl1-rotate}@keyframes svelte-66wdl1-rotate{100%{transform:rotate(360deg)}}")}function by(n){let e,t=`${n[0]} transparent ${n[0]} + ${n[0]}`;return{c(){e=v("div"),ze(e,"--duration",n[1]),g(e,"class","svelte-66wdl1"),ze(e,"border-color",t),ze(e,"width",n[2]),ze(e,"height",n[2])},m(i,a){D(i,e,a)},p(i,[a]){a&2&&ze(e,"--duration",i[1]);let s=a&2;(a&3&&t!==(t=`${i[0]} transparent ${i[0]} + ${i[0]}`)||s)&&ze(e,"border-color",t),(a&6||s)&&ze(e,"width",i[2]),(a&6||s)&&ze(e,"height",i[2])},i:N,o:N,d(i){i&&x(e)}}}function yy(n,e,t){let{color:i="cornflowerblue"}=e,{duration:a="1.5s"}=e,{size:s="1em"}=e;return n.$$set=r=>{"color"in r&&t(0,i=r.color),"duration"in r&&t(1,a=r.duration),"size"in r&&t(2,s=r.size)},[i,a,s]}var Tl=class extends G{constructor(e){super(),K(this,e,yy,by,V,{color:0,duration:1,size:2},py)}},Dl=Tl;function qs(n){return Object.prototype.toString.call(n)==="[object Date]"}function El(n,e,t,i){if(typeof t=="number"||qs(t)){let a=i-t,s=(t-e)/(n.dt||1/60),r=n.opts.stiffness*a,o=n.opts.damping*s,l=(r-o)*n.inv_mass,c=(s+l)*n.dt;return Math.abs(c)El(n,e[s],t[s],i[s]));if(typeof t=="object"){let a={};for(let s in t)a[s]=El(n,e[s],t[s],i[s]);return a}else throw new Error(`Cannot spring ${typeof t} values`)}}function $h(n,e={}){let t=Le(n),{stiffness:i=.15,damping:a=.8,precision:s=.01}=e,r,o,l,c=n,d=n,u=1,h=0,f=!1;function m(b,_={}){d=b;let S=l={};return n==null||_.hard||p.stiffness>=1&&p.damping>=1?(f=!0,r=An(),c=b,t.set(n=d),Promise.resolve()):(_.soft&&(h=1/((_.soft===!0?.5:+_.soft)*60),u=0),o||(r=An(),f=!1,o=Kn(C=>{if(f)return f=!1,o=null,!1;u=Math.min(u+h,1);let M={inv_mass:u,opts:p,settled:!0,dt:(C-r)*60/1e3},w=El(M,c,n,d);return r=C,c=n,t.set(n=w),M.settled&&(o=null),!M.settled})),new Promise(C=>{o.promise.then(()=>{S===l&&C()})}))}let p={set:m,update:(b,_)=>m(b(d,n),_),subscribe:t.subscribe,stiffness:i,damping:a,precision:s};return p}function vy(n){let e,t=`rotate(${n[0].angle}deg) scale(${n[0].scale}) translate(${n[0].dx}px, + ${n[0].dy}px)`,i,a=n[11].default,s=st(a,n,n[10],null);return{c(){e=v("span"),s&&s.c(),ze(e,"transform",t)},m(r,o){D(r,e,o),s&&s.m(e,null),i=!0},p(r,[o]){s&&s.p&&(!i||o&1024)&&ot(s,a,r,r[10],i?rt(a,r[10],o,null):lt(r[10]),null),o&1&&t!==(t=`rotate(${r[0].angle}deg) scale(${r[0].scale}) translate(${r[0].dx}px, + ${r[0].dy}px)`)&&ze(e,"transform",t)},i(r){i||(E(s,r),i=!0)},o(r){I(s,r),i=!1},d(r){r&&x(e),s&&s.d(r)}}}function ky(n,e,t){let i,{$$slots:a={},$$scope:s}=e,{wiggle:r=!1}=e,{angle:o=0}=e,{scale:l=1}=e,{dx:c=0}=e,{dy:d=0}=e,{duration:u=200}=e,{stiffness:h=.05}=e,{damping:f=.1}=e,m={angle:0,scale:1,dx:0,dy:0},p=$h(m,{stiffness:h,damping:f});return Se(n,p,b=>t(0,i=b)),n.$$set=b=>{"wiggle"in b&&t(2,r=b.wiggle),"angle"in b&&t(3,o=b.angle),"scale"in b&&t(4,l=b.scale),"dx"in b&&t(5,c=b.dx),"dy"in b&&t(6,d=b.dy),"duration"in b&&t(7,u=b.duration),"stiffness"in b&&t(8,h=b.stiffness),"damping"in b&&t(9,f=b.damping),"$$scope"in b&&t(10,s=b.$$scope)},n.$$.update=()=>{n.$$.dirty&132&&r&&setTimeout(()=>t(2,r=!1),u),n.$$.dirty&124&&p.set(r?{scale:l,angle:o,dx:c,dy:d}:m)},[i,p,r,o,l,c,d,u,h,f,s,a]}var Ml=class extends G{constructor(e){super(),K(this,e,ky,vy,V,{wiggle:2,angle:3,scale:4,dx:5,dy:6,duration:7,stiffness:8,damping:9})}},Il=Ml;function wy(n){let e,t,i=[n[0],{fill:"currentColor"},{viewBox:"0 0 16 16"}],a={};for(let s=0;s{t(0,e=at(at({},e),Ut(i)))},e=Ut(e),[e]}var Ol=class extends G{constructor(e){super(),K(this,e,_y,wy,V,{})}},Pl=Ol;function Sy(n){let e,t,i=[n[0],{viewBox:"0 0 24 24"},{fill:"currentColor"}],a={};for(let s=0;s{t(0,e=at(at({},e),Ut(i)))},e=Ut(e),[e]}var Rl=class extends G{constructor(e){super(),K(this,e,Cy,Sy,V,{})}},js=Rl;function xy(n){let e,t,i=[n[0],{viewBox:"0 0 24 24"},{fill:"currentColor"}],a={};for(let s=0;s{t(0,e=at(at({},e),Ut(i)))},e=Ut(e),[e]}var Nl=class extends G{constructor(e){super(),K(this,e,Ay,xy,V,{})}},Bl=Nl;var it=n=>n instanceof Object?(n.label===void 0&&console.error(`MultiSelect option ${JSON.stringify(n)} is an object but has no label key`),n.label):`${n}`;function xa(n,e=null){if(!n?.style)return null;if(!["selected","option",null].includes(e)){console.error(`MultiSelect: Invalid key=${e} for get_style`);return}if(typeof n=="object"&&n.style){if(typeof n.style=="string")return n.style;if(typeof n.style=="object"){if(e&&e in n.style)return n.style[e];console.error(`Invalid style object for option=${JSON.stringify(n)}`)}}}var{Boolean:Ty}=Yi;function Dy(n){se(n,"svelte-1r2hsto",".svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect){position:relative;align-items:center;display:flex;cursor:text;box-sizing:border-box;border:var(--sms-border, 1pt solid lightgray);border-radius:var(--sms-border-radius, 3pt);background:var(--sms-bg);width:var(--sms-width);max-width:var(--sms-max-width);padding:var(--sms-padding, 0 3pt);color:var(--sms-text-color);font-size:var(--sms-font-size, inherit);min-height:var(--sms-min-height, 22pt);margin:var(--sms-margin)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect.open){z-index:var(--sms-open-z-index, 4)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect:focus-within){border:var(--sms-focus-border, 1pt solid var(--sms-active-color, cornflowerblue))}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect.disabled){background:var(--sms-disabled-bg, lightgray);cursor:not-allowed}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.selected){display:flex;flex:1;padding:0;margin:0;flex-wrap:wrap}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.selected > li){align-items:center;border-radius:3pt;display:flex;margin:2pt;line-height:normal;transition:0.3s;white-space:nowrap;background:var(--sms-selected-bg, rgba(0, 0, 0, 0.15));padding:var(--sms-selected-li-padding, 1pt 5pt);color:var(--sms-selected-text-color, var(--sms-text-color))}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.selected > li[draggable='true']){cursor:grab}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.selected > li.active){background:var(--sms-li-active-bg, var(--sms-active-color, rgba(0, 0, 0, 0.15)))}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect button){border-radius:50%;display:flex;transition:0.2s;color:inherit;background:transparent;border:none;cursor:pointer;outline:none;padding:0;margin:0 0 0 3pt}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect button.remove-all){margin:0 3pt}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(ul.selected > li button:hover, button.remove-all:hover, button:focus){color:var(--sms-remove-btn-hover-color, lightskyblue);background:var(--sms-remove-btn-hover-bg, rgba(0, 0, 0, 0.2))}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect input){margin:auto 0;padding:0}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.selected > input){border:none;outline:none;background:none;flex:1;min-width:2em;color:var(--sms-text-color);font-size:inherit;cursor:inherit;border-radius:0}div.multiselect.svelte-1r2hsto>ul.selected.svelte-1r2hsto>input.svelte-1r2hsto::placeholder{padding-left:5pt;color:var(--sms-placeholder-color);opacity:var(--sms-placeholder-opacity)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > input.form-control){width:2em;position:absolute;background:transparent;border:none;outline:none;z-index:-1;opacity:0;pointer-events:none}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options){list-style:none;top:100%;left:0;width:100%;position:absolute;overflow:auto;transition:all 0.2s;box-sizing:border-box;background:var(--sms-options-bg, white);max-height:var(--sms-options-max-height, 50vh);overscroll-behavior:var(--sms-options-overscroll, none);box-shadow:var(--sms-options-shadow, 0 0 14pt -8pt black);border:var(--sms-options-border);border-width:var(--sms-options-border-width);border-radius:var(--sms-options-border-radius, 1ex);padding:var(--sms-options-padding);margin:var(--sms-options-margin, inherit)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options.hidden){visibility:hidden;opacity:0;transform:translateY(50px)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options > li){padding:3pt 2ex;cursor:pointer;scroll-margin:var(--sms-options-scroll-margin, 100px)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options .user-msg){display:block;padding:3pt 2ex}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options > li.selected){background:var(--sms-li-selected-bg);color:var(--sms-li-selected-color)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options > li.active){background:var(--sms-li-active-bg, var(--sms-active-color, rgba(0, 0, 0, 0.15)))}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(div.multiselect > ul.options > li.disabled){cursor:not-allowed;background:var(--sms-li-disabled-bg, #f5f5f6);color:var(--sms-li-disabled-text, #b8b8b8)}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto:where(span.max-select-msg){padding:0 3pt}.svelte-1r2hsto.svelte-1r2hsto.svelte-1r2hsto::highlight(sms-search-matches){color:mediumaquamarine}")}var Ey=n=>({searchText:n[0]&8,msgType:n[0]&1073810458,msg:n[0]&1073843226}),Yh=n=>({searchText:n[3],msgType:n[116],msg:n[117]});function Ll(n){let e=n.slice(),t={dupe:e[15],create:e[10],"no-match":e[30]}[e[116]];return e[117]=t,e}function Fl(n){let e=n.slice(),t=e[4].map(it).includes(e[3]);e[112]=t;let i=!e[16]&&e[112]&&"dupe";e[113]=i;let a=!!(e[11]&&e[10])&&"create";e[114]=a;let s=!!(e[1]?.length==0&&e[30])&&"no-match";e[115]=s;let r=e[113]||e[114]||e[115];return e[116]=r,e}function Jh(n,e,t){let i=n.slice();i[118]=e[t],i[125]=t;let a=i[118]instanceof Object?i[118]:{label:i[118]};i[119]=a.label,i[42]=a.disabled!==void 0?a.disabled:null,i[120]=a.title!==void 0?a.title:null,i[121]=a.selectedTitle!==void 0?a.selectedTitle:null,i[122]=a.disabledTitle!==void 0?a.disabledTitle:i[13];let s=i[0]===i[125];return i[123]=s,i}var My=n=>({option:n[0]&33554434}),Xh=n=>({option:n[118],idx:n[125]}),Iy=n=>({option:n[0]&33554434}),Qh=n=>({option:n[118],idx:n[125]}),Oy=n=>({}),Zh=n=>({}),Py=n=>({}),ef=n=>({}),Ry=n=>({}),tf=n=>({}),Ny=n=>({selected:n[0]&16,disabled:n[1]&2048,invalid:n[0]&128,id:n[0]&262144,placeholder:n[1]&8,open:n[0]&256,required:n[1]&128}),nf=n=>({selected:n[4],disabled:n[42],invalid:n[7],id:n[18],placeholder:n[34],open:n[8],required:n[38]});function af(n,e,t){let i=n.slice();return i[118]=e[t],i[125]=t,i}var By=n=>({}),sf=n=>({}),Ly=n=>({option:n[0]&16,idx:n[0]&16}),rf=n=>({option:n[118],idx:n[125]}),Fy=n=>({option:n[0]&16,idx:n[0]&16}),of=n=>({option:n[118],idx:n[125]}),Wy=n=>({open:n[0]&256}),lf=n=>({open:n[8]});function Hy(n){let e,t;return e=new Pl({props:{width:"15px",style:"min-width: 1em; padding: 0 1pt; cursor: pointer;"}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p:N,i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function zy(n){let e=it(n[118])+"",t;return{c(){t=pe(e)},m(i,a){D(i,t,a)},p(i,a){a[0]&16&&e!==(e=it(i[118])+"")&&we(t,e)},d(i){i&&x(t)}}}function qy(n){let e,t=it(n[118])+"",i;return{c(){e=new gn(!1),i=_e(),e.a=i},m(a,s){e.m(t,a,s),D(a,i,s)},p(a,s){s[0]&16&&t!==(t=it(a[118])+"")&&e.p(t)},d(a){a&&(x(i),e.d())}}}function jy(n){let e;function t(s,r){return s[32]?qy:zy}let i=t(n,[-1,-1,-1,-1,-1]),a=i(n);return{c(){a.c(),e=_e()},m(s,r){a.m(s,r),D(s,e,r)},p(s,r){i===(i=t(s,r))&&a?a.p(s,r):(a.d(1),a=i(s),a&&(a.c(),a.m(e.parentNode,e)))},d(s){s&&x(e),a.d(s)}}}function Vy(n){let e,t=n[69].default,i=st(t,n,n[107],rf),a=i||jy(n);return{c(){a&&a.c()},m(s,r){a&&a.m(s,r),e=!0},p(s,r){i?i.p&&(!e||r[0]&16|r[3]&16384)&&ot(i,t,s,s[107],e?rt(t,s[107],r,Ly):lt(s[107]),rf):a&&a.p&&(!e||r[0]&16|r[1]&2)&&a.p(s,e?r:[-1,-1,-1,-1,-1])},i(s){e||(E(a,s),e=!0)},o(s){I(a,s),e=!1},d(s){a&&a.d(s)}}}function cf(n){let e,t,i,a,s,r=n[69]["remove-icon"],o=st(r,n,n[107],sf),l=o||Uy(n);function c(){return n[89](n[118])}function d(){return n[90](n[118])}return{c(){e=v("button"),l&&l.c(),g(e,"type","button"),g(e,"title",t=n[36]+" "+it(n[118])),g(e,"class","remove svelte-1r2hsto")},m(u,h){D(u,e,h),l&&l.m(e,null),i=!0,a||(s=[q(e,"mouseup",ln(c)),q(e,"keydown",function(){Pe(n[54](d))&&n[54](d).apply(this,arguments)})],a=!0)},p(u,h){n=u,o&&o.p&&(!i||h[3]&16384)&&ot(o,r,n,n[107],i?rt(r,n[107],h,By):lt(n[107]),sf),(!i||h[0]&16|h[1]&32&&t!==(t=n[36]+" "+it(n[118])))&&g(e,"title",t)},i(u){i||(E(l,u),i=!0)},o(u){I(l,u),i=!1},d(u){u&&x(e),l&&l.d(u),a=!1,oe(s)}}}function Uy(n){let e,t;return e=new js({props:{width:"15px"}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p:N,i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function uf(n,e){let t,i,a,s,r,o,l=N,c,d,u,h=e[69].selected,f=st(h,e,e[107],of),m=f||Vy(e),p=!e[42]&&(e[37]===null||e[4].length>e[37])&&cf(e);function b(){return e[91](e[125])}return{key:n,first:null,c(){t=v("li"),m&&m.c(),i=R(),p&&p.c(),g(t,"class",a=xn(e[23])+" svelte-1r2hsto"),g(t,"role","option"),g(t,"aria-selected","true"),g(t,"draggable",s=e[39]&&!e[42]&&e[4].length>1),g(t,"style",r=xa(e[118],"selected")),re(t,"active",e[46]===e[125]),this.first=t},m(_,S){D(_,t,S),m&&m.m(t,null),y(t,i),p&&p.m(t,null),c=!0,d||(u=[q(t,"dragstart",function(){Pe(e[57](e[125]))&&e[57](e[125]).apply(this,arguments)}),q(t,"drop",xr(function(){Pe(e[56](e[125]))&&e[56](e[125]).apply(this,arguments)})),q(t,"dragenter",b),q(t,"dragover",xr(e[85]))],d=!0)},p(_,S){e=_,f?f.p&&(!c||S[0]&16|S[3]&16384)&&ot(f,h,e,e[107],c?rt(h,e[107],S,Fy):lt(e[107]),of):m&&m.p&&(!c||S[0]&16|S[1]&2|S[3]&16384)&&m.p(e,c?S:[-1,-1,-1,-1,-1]),!e[42]&&(e[37]===null||e[4].length>e[37])?p?(p.p(e,S),S[0]&16|S[1]&2112&&E(p,1)):(p=cf(e),p.c(),E(p,1),p.m(t,null)):p&&(le(),I(p,1,1,()=>{p=null}),ce()),(!c||S[0]&8388608&&a!==(a=xn(e[23])+" svelte-1r2hsto"))&&g(t,"class",a),(!c||S[0]&16|S[1]&2304&&s!==(s=e[39]&&!e[42]&&e[4].length>1))&&g(t,"draggable",s),(!c||S[0]&16&&r!==(r=xa(e[118],"selected")))&&g(t,"style",r),(!c||S[0]&8388624|S[1]&32768)&&re(t,"active",e[46]===e[125])},r(){o=t.getBoundingClientRect()},f(){Dn(t),l()},a(){l(),l=Tn(t,o,Pn,{duration:100})},i(_){c||(E(m,_),E(p),c=!0)},o(_){I(m,_),I(p),c=!1},d(_){_&&x(t),m&&m.d(_),p&&p.d(),d=!1,oe(u)}}}function df(n){let e,t=n[69].spinner,i=st(t,n,n[107],tf),a=i||Gy(n);return{c(){a&&a.c()},m(s,r){a&&a.m(s,r),e=!0},p(s,r){i&&i.p&&(!e||r[3]&16384)&&ot(i,t,s,s[107],e?rt(t,s[107],r,Ry):lt(s[107]),tf)},i(s){e||(E(a,s),e=!0)},o(s){I(a,s),e=!1},d(s){a&&a.d(s)}}}function Gy(n){let e,t;return e=new Dl({}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Ky(n){let e,t,i,a=n[26]&&(n[26]>1||n[27])&&hf(n),s=n[26]!==1&&n[4].length>1&&ff(n);return{c(){a&&a.c(),e=R(),s&&s.c(),t=_e()},m(r,o){a&&a.m(r,o),D(r,e,o),s&&s.m(r,o),D(r,t,o),i=!0},p(r,o){r[26]&&(r[26]>1||r[27])?a?(a.p(r,o),o[0]&201326592&&E(a,1)):(a=hf(r),a.c(),E(a,1),a.m(e.parentNode,e)):a&&(le(),I(a,1,1,()=>{a=null}),ce()),r[26]!==1&&r[4].length>1?s?(s.p(r,o),o[0]&67108880&&E(s,1)):(s=ff(r),s.c(),E(s,1),s.m(t.parentNode,t)):s&&(le(),I(s,1,1,()=>{s=null}),ce())},i(r){i||(E(a),E(s),i=!0)},o(r){I(a),I(s),i=!1},d(r){r&&(x(e),x(t)),a&&a.d(r),s&&s.d(r)}}}function $y(n){let e,t=n[69]["disabled-icon"],i=st(t,n,n[107],ef),a=i||Xy(n);return{c(){a&&a.c()},m(s,r){a&&a.m(s,r),e=!0},p(s,r){i&&i.p&&(!e||r[3]&16384)&&ot(i,t,s,s[107],e?rt(t,s[107],r,Py):lt(s[107]),ef)},i(s){e||(E(a,s),e=!0)},o(s){I(a,s),e=!1},d(s){a&&a.d(s)}}}function hf(n){let e,t,i;function a(r){n[94](r)}let s={angle:20,$$slots:{default:[Yy]},$$scope:{ctx:n}};return n[43]!==void 0&&(s.wiggle=n[43]),e=new Il({props:s}),Re.push(()=>Wt(e,"wiggle",a)),{c(){ie(e.$$.fragment)},m(r,o){te(e,r,o),i=!0},p(r,o){let l={};o[0]&469762064|o[3]&16384&&(l.$$scope={dirty:o,ctx:r}),!t&&o[1]&4096&&(t=!0,l.wiggle=r[43],Ft(()=>t=!1)),e.$set(l)},i(r){i||(E(e.$$.fragment,r),i=!0)},o(r){I(e.$$.fragment,r),i=!1},d(r){ne(e,r)}}}function Yy(n){let e,t=n[27]?.(n[4].length,n[26])+"",i,a;return{c(){e=v("span"),i=pe(t),g(e,"class",a="max-select-msg "+n[28]+" svelte-1r2hsto")},m(s,r){D(s,e,r),y(e,i)},p(s,r){r[0]&201326608&&t!==(t=s[27]?.(s[4].length,s[26])+"")&&we(i,t),r[0]&268435456&&a!==(a="max-select-msg "+s[28]+" svelte-1r2hsto")&&g(e,"class",a)},d(s){s&&x(e)}}}function ff(n){let e,t,i,a,s=n[69]["remove-icon"],r=st(s,n,n[107],Zh),o=r||Jy(n);return{c(){e=v("button"),o&&o.c(),g(e,"type","button"),g(e,"class","remove remove-all svelte-1r2hsto"),g(e,"title",n[35])},m(l,c){D(l,e,c),o&&o.m(e,null),t=!0,i||(a=[q(e,"mouseup",ln(n[53])),q(e,"keydown",n[54](n[53]))],i=!0)},p(l,c){r&&r.p&&(!t||c[3]&16384)&&ot(r,s,l,l[107],t?rt(s,l[107],c,Oy):lt(l[107]),Zh),(!t||c[1]&16)&&g(e,"title",l[35])},i(l){t||(E(o,l),t=!0)},o(l){I(o,l),t=!1},d(l){l&&x(e),o&&o.d(l),i=!1,oe(a)}}}function Jy(n){let e,t;return e=new js({props:{width:"15px"}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p:N,i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function Xy(n){let e,t;return e=new Bl({props:{width:"14pt",style:"margin: 0 2pt;","data-name":"disabled-icon"}}),{c(){ie(e.$$.fragment)},m(i,a){te(e,i,a),t=!0},p:N,i(i){t||(E(e.$$.fragment,i),t=!0)},o(i){I(e.$$.fragment,i),t=!1},d(i){ne(e,i)}}}function mf(n){let e,t,i,a,s,r,o=be(n[1].slice(0,Math.max(0,n[25]??0)||1/0)),l=[];for(let u=0;uI(l[u],1,1,()=>{l[u]=null}),d=n[3]&&pf(Fl(n));return{c(){e=v("ul");for(let u=0;u1),g(e,"aria-expanded",n[8]),g(e,"aria-disabled",s=n[42]?"true":null),re(e,"hidden",!n[8])},m(u,h){D(u,e,h);for(let f=0;f{d=null}),ce()),(!r||h[1]&512&&i!==(i="options "+u[40]+" svelte-1r2hsto"))&&g(e,"class",i),(!r||h[0]&67108864&&a!==(a=u[26]===null||u[26]>1))&&g(e,"aria-multiselectable",a),(!r||h[0]&256)&&g(e,"aria-expanded",u[8]),(!r||h[1]&2048&&s!==(s=u[42]?"true":null))&&g(e,"aria-disabled",s),(!r||h[0]&256|h[1]&512)&&re(e,"hidden",!u[8])},i(u){if(!r){for(let h=0;h{i=null}),ce())},i(a){t||(E(i),t=!0)},o(a){I(i),t=!1},d(a){a&&x(e),i&&i.d(a)}}}function bf(n){let e,t,i,a,s=n[69]["user-msg"],r=st(s,n,n[107],Yh),o=r||nv(n);return{c(){e=v("li"),o&&o.c(),g(e,"title",n[10]),g(e,"role","option"),g(e,"aria-selected","false"),g(e,"class","user-msg svelte-1r2hsto"),re(e,"active",n[44]),ze(e,"cursor",{dupe:"not-allowed",create:"pointer","no-match":"default"}[n[116]])},m(l,c){D(l,e,c),o&&o.m(e,null),t=!0,i||(a=[q(e,"mousedown",ln(n[70])),q(e,"mouseup",ln(n[100])),q(e,"mouseover",n[101]),q(e,"focus",n[102]),q(e,"mouseout",n[103]),q(e,"blur",n[104])],i=!0)},p(l,c){r?r.p&&(!t||c[0]&1073843226|c[3]&16384)&&ot(r,s,l,l[107],t?rt(s,l[107],c,Ey):lt(l[107]),Yh):o&&o.p&&(!t||c[0]&1073843226)&&o.p(l,t?c:[-1,-1,-1,-1,-1]),(!t||c[0]&1024)&&g(e,"title",l[10]),(!t||c[1]&8192)&&re(e,"active",l[44]),c[0]&1073810458&&ze(e,"cursor",{dupe:"not-allowed",create:"pointer","no-match":"default"}[l[116]])},i(l){t||(E(o,l),t=!0)},o(l){I(o,l),t=!1},d(l){l&&x(e),o&&o.d(l),i=!1,oe(a)}}}function nv(n){let e=n[117]+"",t;return{c(){t=pe(e)},m(i,a){D(i,t,a)},p(i,a){a[0]&1073843226&&e!==(e=i[117]+"")&&we(t,e)},d(i){i&&x(t)}}}function iv(n){let e,t,i,a,s,r,o,l=[],c=new Map,d,u,h,f,m,p,b,_,S,C,M,w,k,A,P,B,L;It(n[86]);let O=n[69]["expand-icon"],j=st(O,n,n[107],lf),Z=j||Hy(n),ee=be(n[4]),ae=U=>U[16]?[U[17](U[118]),U[125]]:U[17](U[118]);for(let U=0;U0?1:-1}~(C=he(n,[-1,-1,-1,-1,-1]))&&(M=H[C]=F[C](n));let ue=(n[3]&&n[30]||n[2]?.length>0)&&mf(n);return{c(){e=v("div"),t=v("input"),s=R(),Z&&Z.c(),r=R(),o=v("ul");for(let U=0;U=Number(n[38])?JSON.stringify(n[4]):null,g(t,"tabindex","-1"),g(t,"aria-hidden","true"),g(t,"aria-label","ignore this, used only to prevent form submission if select is required but empty"),g(t,"class","form-control svelte-1r2hsto"),g(u,"class",h=xn(n[19])+" svelte-1r2hsto"),g(u,"id",n[18]),u.disabled=n[42],g(u,"autocomplete",n[12]),g(u,"inputmode",n[20]),g(u,"pattern",n[33]),g(u,"placeholder",f=n[4].length==0?n[34]:null),g(u,"aria-invalid",m=n[7]?"true":null),g(u,"ondrop","return false"),g(o,"class",b="selected "+n[41]+" svelte-1r2hsto"),g(o,"aria-label","selected options"),g(e,"class",k="multiselect "+n[31]+" svelte-1r2hsto"),g(e,"title",A=n[42]?n[14]:null),g(e,"data-id",n[18]),g(e,"role","searchbox"),g(e,"tabindex","-1"),re(e,"disabled",n[42]),re(e,"single",n[26]===1),re(e,"open",n[8]),re(e,"invalid",n[7])},m(U,z){D(U,e,z),y(e,t),n[87](t),y(e,s),Z&&Z.m(e,null),y(e,r),y(e,o);for(let me=0;me=Number(U[38])?JSON.stringify(U[4]):null)&&t.value!==a)&&(t.value=a),j&&j.p&&(!P||z[0]&256|z[3]&16384)&&ot(j,O,U,U[107],P?rt(O,U[107],z,Wy):lt(U[107]),lf),z[0]&8585232|z[1]&109611362|z[3]&16384){ee=be(U[4]),le();for(let Ce=0;Ce{Y=null}),ce());let me=C;C=he(U,z),C===me?~C&&H[C].p(U,z):(M&&(le(),I(H[me],1,1,()=>{H[me]=null}),ce()),~C?(M=H[C],M?M.p(U,z):(M=H[C]=F[C](U),M.c()),E(M,1),M.m(e,w)):M=null),U[3]&&U[30]||U[2]?.length>0?ue?(ue.p(U,z),z[0]&1073741836&&E(ue,1)):(ue=mf(U),ue.c(),E(ue,1),ue.m(e,null)):ue&&(le(),I(ue,1,1,()=>{ue=null}),ce()),(!P||z[1]&1&&k!==(k="multiselect "+U[31]+" svelte-1r2hsto"))&&g(e,"class",k),(!P||z[0]&16384|z[1]&2048&&A!==(A=U[42]?U[14]:null))&&g(e,"title",A),(!P||z[0]&262144)&&g(e,"data-id",U[18]),(!P||z[1]&2049)&&re(e,"disabled",U[42]),(!P||z[0]&67108864|z[1]&1)&&re(e,"single",U[26]===1),(!P||z[0]&256|z[1]&1)&&re(e,"open",U[8]),(!P||z[0]&128|z[1]&1)&&re(e,"invalid",U[7])},i(U){if(!P){E(Z,U);for(let z=0;z`${it(T)}`.toLowerCase()}=e,{filterFunc:M=(T,Ee)=>Ee?`${it(T)}`.toLowerCase().includes(Ee.toLowerCase()):!0}=e,{closeDropdownOnSelect:w="desktop"}=e,{form_input:k=null}=e,{highlightMatches:A=!0}=e,{id:P=null}=e,{input:B=null}=e,{inputClass:L=""}=e,{inputmode:O=null}=e,{invalid:j=!1}=e,{liActiveOptionClass:Z=""}=e,{liOptionClass:ee=""}=e,{liSelectedClass:ae=""}=e,{loading:$=!1}=e,{matchingOptions:W=[]}=e,{maxOptions:Y=void 0}=e,{maxSelect:F=null}=e,{maxSelectMsg:H=(T,Ee)=>Ee>1?`${T}/${Ee}`:""}=e,{maxSelectMsgClass:he=""}=e,{name:ue=null}=e,{noMatchingOptionsMsg:U="No matching options"}=e,{open:z=!1}=e,{options:me}=e,{outerDiv:Ce=null}=e,{outerDivClass:Ie=""}=e,{parseLabelsAsHtml:et=!1}=e,{pattern:Tt=null}=e,{placeholder:mi=null}=e,{removeAllTitle:gi="Remove all"}=e,{removeBtnTitle:Rt="Remove"}=e,{minSelect:Nt=null}=e,{required:bt=!1}=e,{resetFilterOnAdd:Qs=!0}=e,{searchText:Qe=""}=e,{selected:De=me?.filter(T=>T instanceof Object&&T?.preselected).slice(0,F??void 0)??[]}=e,{sortSelected:Vn=!1}=e,{selectedOptionsDraggable:Zs=!Vn}=e,{ulOptionsClass:Kl=""}=e,{ulSelectedClass:$l=""}=e,{value:Pa=null}=e,Tf=T=>{t(59,Pa=F===1?T[0]??null:T)},Df=T=>{F===1?t(4,De=T?[T]:[]):t(4,De=T??[])},Ra=!1;me?.length>0||(c||$||p||d?me=[]:console.error("MultiSelect received no options")),F!==null&&F<1&&console.error(`MultiSelect's maxSelect must be null or positive integer, got ${F}`),Array.isArray(De)||console.error(`MultiSelect's selected prop should always be an array, got ${De}`),F&&typeof bt=="number"&&bt>F&&console.error(`MultiSelect maxSelect=${F} < required=${bt}, makes it impossible for users to submit a valid form`),et&&c&&console.warn("Don't combine parseLabelsAsHtml and allowUserOptions. It's susceptible to XSS attacks!"),Vn&&Zs&&console.warn("MultiSelect's sortSelected and selectedOptionsDraggable should not be combined as any user re-orderings of selected options will be undone by sortSelected on component re-renders."),c&&!l&&l!==null&&console.error(`MultiSelect has allowUserOptions=${c} but createOptionMsg=${l} is falsy. This prevents the "Add option" from showing up, resulting in a confusing user experience.`),Y&&(typeof Y!="number"||Y<0||Y%1!=0)&&console.error(`MultiSelect's maxOptions must be undefined or a positive integer, got ${Y}`);let mn=Me(),Un=!1,er;if(r!==null&&!W[r])throw`Run time error, activeIndex=${r} is out of bounds, matchingOptions.length=${W.length}`;function ji(T,Ee){F&&F>1&&De.length>=F&&t(43,Ra=!0),!isNaN(Number(T))&&typeof De.map(it)[0]=="number"&&(T=Number(T));let Ke=De.map(C).includes(C(T));if((F===null||F===1||De.length0&&(typeof me[0]=="object"?T={label:Qe}:(["number","undefined"].includes(typeof me[0])&&!isNaN(Number(Qe))?T=Number(Qe):T=Qe,mn("create",{option:T})),c==="append"&&t(2,me=[...me,T])),Qs&&t(3,Qe=""),["",void 0,null].includes(T)){console.error(`MultiSelect: encountered falsy option ${T}`);return}F===1?t(4,De=[T]):(t(4,De=[...De,T]),Vn===!0?t(4,De=De.sort((ir,Gn)=>{let[Ui,Ba]=[it(ir),it(Gn)];return`${Ui}`.localeCompare(`${Ba}`)})):typeof Vn=="function"&&t(4,De=De.sort(Vn)));let yt=De.length===F,pi=w===!0||w==="desktop"&&erC(yt)===C(T)),[Ke]=De.splice(Ee,1);if(Ke===void 0&&c&&(Ke=typeof me[0]?{label:T}:T),Ke===void 0)return console.error(`Multiselect can't remove selected option ${JSON.stringify(T)}, not found in selected list`);t(4,De=[...De]),t(7,j=!1),k?.setCustomValidity(""),mn("remove",{option:Ke}),mn("change",{option:Ke,type:"remove"})}function Yl(T){p||(t(8,z=!0),T instanceof FocusEvent||B?.focus(),mn("open",{event:T}))}function tr(T){t(8,z=!1),B?.blur(),t(0,r=null),mn("close",{event:T})}async function Ef(T){if(T.key==="Escape"||T.key==="Tab")tr(T),t(3,Qe="");else if(T.key==="Enter")T.preventDefault(),o?(De.includes(o)?Vi(o):ji(o,T),t(3,Qe="")):c&&Qe.length>0?ji(Qe,T):Yl(T);else if(["ArrowDown","ArrowUp"].includes(T.key)){if(r===null&&W.length>0){t(0,r=0);return}else if(c&&!W.length&&Qe.length>0){t(44,Un=!Un);return}else if(r===null)return;T.preventDefault();let Ee=T.key==="ArrowUp"?-1:1;if(t(0,r=(r+Ee)%W.length),r<0&&t(0,r=W.length-1),h){await Xa();let Ke=document.querySelector("ul.options > li.active");Ke&&Ke.scrollIntoViewIfNeeded?.()}}else T.key==="Backspace"&&De.length>0&&!Qe?Vi(De.at(-1)):W.length>0&&t(0,r=0)}function Mf(){mn("removeAll",{options:De}),mn("change",{options:De,type:"removeAll"}),t(4,De=[]),t(3,Qe="")}let If=T=>Ee=>{["Enter","Space"].includes(Ee.code)&&(Ee.preventDefault(),T())};function Of(T){Ce&&!Ce.contains(T.target)&&tr(T)}let nr=null,Pf=T=>Ee=>{if(!Ee.dataTransfer)return;Ee.dataTransfer.dropEffect="move";let Ke=parseInt(Ee.dataTransfer.getData("text/plain")),yt=[...De];KeEe=>{Ee.dataTransfer&&(Ee.dataTransfer.effectAllowed="move",Ee.dataTransfer.dropEffect="move",Ee.dataTransfer.setData("text/plain",`${T}`))},Na;function Nf(T){if(!A||typeof CSS>"u"||!CSS.highlights)return;CSS.highlights.clear();let Ee=T?.target?.value.trim().toLowerCase();if(!Ee)return;let Ke=document.createTreeWalker(Na,NodeFilter.SHOW_TEXT,{acceptNode:Gn=>Gn?.textContent===U?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),yt=[],pi=Ke.nextNode();for(;pi;)yt.push(pi),pi=Ke.nextNode();let ir=yt.map(Gn=>{let Ui=Gn.textContent?.toLowerCase(),Ba=[],ar=0;for(;Ui&&ar{let sr=new Range;return sr.setStart(Gn,bi),sr.setEnd(Gn,bi+Ee.length),sr})});CSS.highlights.set("sms-search-matches",new Highlight(...ir.flat()))}function Bf(T){Ge.call(this,n,T)}function Lf(T){Ge.call(this,n,T)}function Ff(T){Ge.call(this,n,T)}function Wf(T){Ge.call(this,n,T)}function Hf(T){Ge.call(this,n,T)}function zf(T){Ge.call(this,n,T)}function qf(T){Ge.call(this,n,T)}function jf(T){Ge.call(this,n,T)}function Vf(T){Ge.call(this,n,T)}function Uf(T){Ge.call(this,n,T)}function Gf(T){Ge.call(this,n,T)}function Kf(T){Ge.call(this,n,T)}function $f(T){Ge.call(this,n,T)}function Yf(T){Ge.call(this,n,T)}function Jf(T){Ge.call(this,n,T)}function Xf(T){Ge.call(this,n,T)}function Qf(){t(45,er=window.innerWidth)}function Zf(T){Re[T?"unshift":"push"](()=>{k=T,t(5,k)})}let em=()=>{t(7,j=!0);let T;F&&F>1&&Number(bt)>1?T=`Please select between ${bt} and ${F} options`:Number(bt)>1?T=`Please select at least ${bt} options`:T="Please select an option",k?.setCustomValidity(T)},tm=T=>Vi(T),nm=T=>Vi(T),im=T=>t(46,nr=T);function am(T){Re[T?"unshift":"push"](()=>{B=T,t(6,B)})}function sm(){Qe=this.value,t(3,Qe)}function rm(T){Ra=T,t(43,Ra)}let om=(T,Ee,Ke)=>{T||ji(Ee,Ke)},lm=(T,Ee)=>{T||t(0,r=Ee)},cm=(T,Ee)=>{T||t(0,r=Ee)},um=()=>t(0,r=null),dm=()=>t(0,r=null),hm=T=>{c&&ji(Qe,T)},fm=()=>t(44,Un=!0),mm=()=>t(44,Un=!0),gm=()=>t(44,Un=!1),pm=()=>t(44,Un=!1);function bm(T){Re[T?"unshift":"push"](()=>{Na=T,t(47,Na)})}function ym(T){Re[T?"unshift":"push"](()=>{Ce=T,t(9,Ce)})}return n.$$set=T=>{"activeIndex"in T&&t(0,r=T.activeIndex),"activeOption"in T&&t(60,o=T.activeOption),"createOptionMsg"in T&&t(10,l=T.createOptionMsg),"allowUserOptions"in T&&t(11,c=T.allowUserOptions),"allowEmpty"in T&&t(61,d=T.allowEmpty),"autocomplete"in T&&t(12,u=T.autocomplete),"autoScroll"in T&&t(62,h=T.autoScroll),"breakpoint"in T&&t(63,f=T.breakpoint),"defaultDisabledTitle"in T&&t(13,m=T.defaultDisabledTitle),"disabled"in T&&t(42,p=T.disabled),"disabledInputTitle"in T&&t(14,b=T.disabledInputTitle),"duplicateOptionMsg"in T&&t(15,_=T.duplicateOptionMsg),"duplicates"in T&&t(16,S=T.duplicates),"key"in T&&t(17,C=T.key),"filterFunc"in T&&t(64,M=T.filterFunc),"closeDropdownOnSelect"in T&&t(65,w=T.closeDropdownOnSelect),"form_input"in T&&t(5,k=T.form_input),"highlightMatches"in T&&t(66,A=T.highlightMatches),"id"in T&&t(18,P=T.id),"input"in T&&t(6,B=T.input),"inputClass"in T&&t(19,L=T.inputClass),"inputmode"in T&&t(20,O=T.inputmode),"invalid"in T&&t(7,j=T.invalid),"liActiveOptionClass"in T&&t(21,Z=T.liActiveOptionClass),"liOptionClass"in T&&t(22,ee=T.liOptionClass),"liSelectedClass"in T&&t(23,ae=T.liSelectedClass),"loading"in T&&t(24,$=T.loading),"matchingOptions"in T&&t(1,W=T.matchingOptions),"maxOptions"in T&&t(25,Y=T.maxOptions),"maxSelect"in T&&t(26,F=T.maxSelect),"maxSelectMsg"in T&&t(27,H=T.maxSelectMsg),"maxSelectMsgClass"in T&&t(28,he=T.maxSelectMsgClass),"name"in T&&t(29,ue=T.name),"noMatchingOptionsMsg"in T&&t(30,U=T.noMatchingOptionsMsg),"open"in T&&t(8,z=T.open),"options"in T&&t(2,me=T.options),"outerDiv"in T&&t(9,Ce=T.outerDiv),"outerDivClass"in T&&t(31,Ie=T.outerDivClass),"parseLabelsAsHtml"in T&&t(32,et=T.parseLabelsAsHtml),"pattern"in T&&t(33,Tt=T.pattern),"placeholder"in T&&t(34,mi=T.placeholder),"removeAllTitle"in T&&t(35,gi=T.removeAllTitle),"removeBtnTitle"in T&&t(36,Rt=T.removeBtnTitle),"minSelect"in T&&t(37,Nt=T.minSelect),"required"in T&&t(38,bt=T.required),"resetFilterOnAdd"in T&&t(67,Qs=T.resetFilterOnAdd),"searchText"in T&&t(3,Qe=T.searchText),"selected"in T&&t(4,De=T.selected),"sortSelected"in T&&t(68,Vn=T.sortSelected),"selectedOptionsDraggable"in T&&t(39,Zs=T.selectedOptionsDraggable),"ulOptionsClass"in T&&t(40,Kl=T.ulOptionsClass),"ulSelectedClass"in T&&t(41,$l=T.ulSelectedClass),"value"in T&&t(59,Pa=T.value),"$$scope"in T&&t(107,s=T.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&16&&Tf(De),n.$$.dirty[1]&268435456&&Df(Pa),n.$$.dirty[0]&196636|n.$$.dirty[2]&4&&t(1,W=me.filter(T=>M(T,Qe)&&(!De.map(C).includes(C(T))||S))),n.$$.dirty[0]&3&&t(60,o=W[r??-1]??null),n.$$.dirty[0]&16&&t(48,i=T=>De.map(it).includes(T))},[r,W,me,Qe,De,k,B,j,z,Ce,l,c,u,m,b,_,S,C,P,L,O,Z,ee,ae,$,Y,F,H,he,ue,U,Ie,et,Tt,mi,gi,Rt,Nt,bt,Zs,Kl,$l,p,Ra,Un,er,nr,Na,i,ji,Vi,Yl,Ef,Mf,If,Of,Pf,Rf,Nf,Pa,o,d,h,f,M,w,A,Qs,Vn,a,Bf,Lf,Ff,Wf,Hf,zf,qf,jf,Vf,Uf,Gf,Kf,$f,Yf,Jf,Xf,Qf,Zf,em,tm,nm,im,am,sm,rm,om,lm,cm,um,dm,hm,fm,mm,gm,pm,bm,ym,s]}var Wl=class extends G{constructor(e){super(),K(this,e,av,iv,V,{activeIndex:0,activeOption:60,createOptionMsg:10,allowUserOptions:11,allowEmpty:61,autocomplete:12,autoScroll:62,breakpoint:63,defaultDisabledTitle:13,disabled:42,disabledInputTitle:14,duplicateOptionMsg:15,duplicates:16,key:17,filterFunc:64,closeDropdownOnSelect:65,form_input:5,highlightMatches:66,id:18,input:6,inputClass:19,inputmode:20,invalid:7,liActiveOptionClass:21,liOptionClass:22,liSelectedClass:23,loading:24,matchingOptions:1,maxOptions:25,maxSelect:26,maxSelectMsg:27,maxSelectMsgClass:28,name:29,noMatchingOptionsMsg:30,open:8,options:2,outerDiv:9,outerDivClass:31,parseLabelsAsHtml:32,pattern:33,placeholder:34,removeAllTitle:35,removeBtnTitle:36,minSelect:37,required:38,resetFilterOnAdd:67,searchText:3,selected:4,sortSelected:68,selectedOptionsDraggable:39,ulOptionsClass:40,ulSelectedClass:41,value:59},Dy,[-1,-1,-1,-1,-1])}},Aa=Wl;function sv(n=!0){let e=this,t=new IntersectionObserver(function([i]){let a=i.intersectionRatio;if(a<1){let s=a<=0&&n?"center":"nearest";e.scrollIntoView({block:s,inline:s})}this.disconnect()});return t.observe(e),t}typeof Element<"u"&&!Element.prototype?.scrollIntoViewIfNeeded&&typeof IntersectionObserver<"u"&&(Element.prototype.scrollIntoViewIfNeeded=sv);function rv(n){se(n,"svelte-1dl3a9e",".multiselect-container.svelte-1dl3a9e{width:100%}.multiselect-container.svelte-1dl3a9e .multiselect-dropdown{height:auto;min-height:var(--input-height, 30px)}.multiselect-container.svelte-1dl3a9e div.multiselect{--sms-border:none;--sms-bg:var(--interactive-normal);--sms-options-bg:var(--interactive-normal);--sms-border-radius:var(--radius)}.multiselect-container.svelte-1dl3a9e div.multiselect ul{padding-left:0;border-radius:var(--radius)}.multiselect-container.svelte-1dl3a9e div.multiselect button{height:0}.multiselect-container.svelte-1dl3a9e div.multiselect input{width:0;font-size:var(--font-ui-small)}.multiselect-container.svelte-1dl3a9e div.multiselect li{border-left:none}.multiselect-container.svelte-1dl3a9e div.multiselect li::before{content:none}")}function ov(n){let e,t,i,a;function s(o){n[5](o)}let r={options:n[3],outerDivClass:"multiselect-dropdown",placeholder:n[1]};return n[2]!==void 0&&(r.selected=n[2]),t=new Aa({props:r}),Re.push(()=>Wt(t,"selected",s)),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","multiselect-container svelte-1dl3a9e")},m(o,l){D(o,e,l),te(t,e,null),a=!0},p(o,[l]){let c={};l&2&&(c.placeholder=o[1]),!i&&l&4&&(i=!0,c.selected=o[2],Ft(()=>i=!1)),t.$set(c)},i(o){a||(E(t.$$.fragment,o),a=!0)},o(o){I(t.$$.fragment,o),a=!1},d(o){o&&x(e),ne(t)}}}function lv(n,e,t){let i,a=N,s=()=>(a(),a=Dt(r,u=>t(2,i=u)),r);n.$$.on_destroy.push(()=>a());let{filter:r}=e;s();let{options:o}=e,l=[...o,Hs],{placeholder:c}=e;function d(u){i=u,r.set(i)}return n.$$set=u=>{"filter"in u&&s(t(0,r=u.filter)),"options"in u&&t(4,o=u.options),"placeholder"in u&&t(1,c=u.placeholder)},[r,c,i,l,o,d]}var Hl=class extends G{constructor(e){super(),K(this,e,lv,ov,V,{filter:0,options:4,placeholder:1},rv)}},yf=Hl;function cv(n){se(n,"svelte-1y4cmh8",".controls.svelte-1y4cmh8{display:flex;justify-content:space-between;align-items:center;gap:0.5rem}.filter-button.svelte-1y4cmh8{position:relative}.filter-number.svelte-1y4cmh8{position:absolute;bottom:0;right:0;background-color:var(--interactive-normal);border-radius:50%;width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:var(--font-smallest);pointer-events:none}.container.svelte-1y4cmh8{display:flex;flex-flow:column nowrap;gap:1rem}")}function vf(n){let e,t,i,a;return t=new yf({props:{options:n[1],placeholder:"Sources",filter:di}}),{c(){e=v("div"),ie(t.$$.fragment),g(e,"class","filters")},m(s,r){D(s,e,r),te(t,e,null),a=!0},p(s,r){let o={};r&2&&(o.options=s[1]),t.$set(o)},i(s){a||(E(t.$$.fragment,s),s&&It(()=>{a&&(i||(i=Jn(e,Ri,{easing:on},!0)),i.run(1))}),a=!0)},o(s){I(t.$$.fragment,s),s&&(i||(i=Jn(e,Ri,{easing:on},!1)),i.run(0)),a=!1},d(s){s&&x(e),ne(t),s&&i&&i.end()}}}function uv(n){let e,t,i,a,s,r,o,l,c,d,u,h,f,m,p,b,_,S,C,M;i=new Kh({props:{filter:wn,placeholder:"Search Creatures"}});let w=n[0]&&vf(n);return{c(){e=v("div"),t=v("div"),ie(i.$$.fragment),a=R(),s=v("div"),r=v("div"),l=R(),c=v("div"),d=pe(n[2]),u=R(),h=v("div"),m=R(),p=v("div"),_=R(),w&&w.c(),g(c,"class","filter-number svelte-1y4cmh8"),g(s,"class","filter-button svelte-1y4cmh8"),g(p,"aria-label","Delete filtered creatures"),g(t,"class","controls svelte-1y4cmh8"),g(e,"class","container svelte-1y4cmh8")},m(k,A){D(k,e,A),y(e,t),te(i,t,null),y(t,a),y(t,s),y(s,r),y(s,l),y(s,c),y(c,d),y(t,u),y(t,h),y(t,m),y(t,p),y(e,_),w&&w.m(e,null),S=!0,C||(M=[J(o=n[7].call(null,r)),q(s,"click",n[9]),J(f=n[5].call(null,h)),q(h,"click",n[10]),J(b=n[6].call(null,p)),q(p,"click",n[11])],C=!0)},p(k,[A]){(!S||A&4)&&we(d,k[2]),k[0]?w?(w.p(k,A),A&1&&E(w,1)):(w=vf(k),w.c(),E(w,1),w.m(e,null)):w&&(le(),I(w,1,1,()=>{w=null}),ce())},i(k){S||(E(i.$$.fragment,k),E(w),S=!0)},o(k){I(i.$$.fragment,k),I(w),S=!1},d(k){k&&x(e),ne(i),w&&w.d(),C=!1,oe(M)}}}function dv(n,e,t){let i,a,s,r;Se(n,di,_=>t(12,i=_)),Se(n,wn,_=>t(13,a=_)),Se(n,Uh,_=>t(2,r=_));let o=Le([...ve.getIndex("source").keys()]);Se(n,o,_=>t(1,s=_));let l=Me();ve.onIndexUpdated("source",()=>Ae(o,s=[...ve.getIndex("source").keys()],s));let c=!0,d=_=>{new Vs.ExtraButtonComponent(_).setIcon("reset")},u=_=>{new Vs.ExtraButtonComponent(_).setIcon("trash")},h=_=>{new Vs.ExtraButtonComponent(_).setIcon("filter")},f=()=>{Ae(wn,a="",a),Ae(di,i=[],i)};return[c,s,r,o,l,d,u,h,f,()=>t(0,c=!c),()=>f(),()=>l("remove")]}var zl=class extends G{constructor(e){super(),K(this,e,dv,uv,V,{},cv)}},kf=zl;var Sf=require("obsidian");function hv(n){se(n,"svelte-1e6o0go",".bestiary-container.svelte-1e6o0go{display:flex;flex-flow:column;gap:1rem}.filters-container.svelte-1e6o0go{display:flex;flex-flow:column nowrap;gap:0.25rem}")}function wf(n,e,t){let i=n.slice();return i[16]=e[t],i}function _f(n,e){let t,i,a;return i=new Gh({props:{item:e[16]}}),i.$on("close",e[13]),{key:n,first:null,c(){t=_e(),ie(i.$$.fragment),this.first=t},m(s,r){D(s,t,r),te(i,s,r),a=!0},p(s,r){e=s;let o={};r&8&&(o.item=e[16]),i.$set(o)},i(s){a||(E(i.$$.fragment,s),a=!0)},o(s){I(i.$$.fragment,s),a=!1},d(s){s&&x(t),ne(i,s)}}}function fv(n){let e,t,i,a,s,r=(n[2].length?n[2].length:"No")+"",o,l,c=n[2].length===1?"":"s",d,u,h,f=[],m=new Map,p,b,_,S;i=new kf({}),i.$on("remove",n[12]);let C=be(n[3]),M=w=>w[16].name;for(let w=0;wt(14,a=C));let d=ve.onSortedBy("name",C=>{Ae(c,a=C,a)});bn(()=>{d()});let u=Le(50),h=Le(1),f=kt([c,wn,di],([C,M,w])=>{let k=[];for(let A of C){let P=!0;M.length&&((0,Sf.prepareSimpleSearch)(M)(A.name)||(P=!1)),w.length&&![A.source].flat().some(B=>B&&w.includes(B))&&(P=!1),!A.source&&w.includes(Hs)&&(P=!0),P&&k.push(A)}return k});Se(n,f,C=>t(2,i=C));let m=async()=>{i.length&&await fo(r.app,`Are you sure you want to delete ${i.length} creature${i.length===1?"":"s"}?`)&&await r.deleteMonsters(...i.map(C=>C.name))},p=kt([u,f],([C,M])=>Math.ceil(M.length/C)),b=kt([f,u,h],([C,M,w])=>C.slice((w-1)*M,w*M));Se(n,b,C=>t(3,s=C));let _=()=>m();function S(C){Ge.call(this,n,C)}return n.$$set=C=>{"plugin"in C&&t(11,r=C.plugin),"backgroundColor"in C&&t(0,o=C.backgroundColor),"paddingTop"in C&&t(1,l=C.paddingTop)},[o,l,i,s,c,u,h,f,m,p,b,r,_,S]}var ql=class extends G{constructor(e){super(),K(this,e,mv,fv,V,{plugin:11,backgroundColor:0,paddingTop:1},hv)}},Cf=ql;var Da=class extends ke.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.results=[];this.importer=new Ca(this.plugin)}async display(){try{let{containerEl:t}=this;t.empty(),t.addClass("statblock-settings"),t.createEl("h2",{text:"Fantasy Statblocks Settings"}),this.generateTopSettings(t.createDiv()),this.generateParseSettings(t.createDiv()),this.generateAdvancedSettings(t.createDiv()),this.generateLayouts(t.createDiv()),this.generateImports(t.createDiv()),this.generateMonsters(t.createDiv()),t.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}catch(t){console.error(t),new ke.Notice("There was an error displaying the settings tab for 5e Statblocks.")}}generateAdvancedSettings(t){t.empty(),new ke.Setting(t).setHeading().setName("Advanced Settings"),new ke.Setting(t).setName("Try to Save Data Atomically").setDesc(createFragment(i=>{i.createSpan({text:"This will cause to plugin to save data to a temporary file before saving the actual data file in an attempt to prevent data loss."}),i.createEl("br"),i.createSpan({text:"This can cause issues sometimes when using sync services."}),i.createEl("br");let a=i.createDiv();(0,ke.setIcon)(a.createDiv(),"warning"),a.createSpan({attr:{style:"color: var(--text-error)"},text:"This setting is currently disabled."})})).addToggle(i=>i.setValue(this.plugin.settings.atomicWrite).onChange(async a=>{this.plugin.settings.atomicWrite=a,await this.plugin.saveSettings()}))}generateTopSettings(t){t.empty(),new ke.Setting(t).setHeading().setName("General Settings"),new ke.Setting(t).setName("Integrate Dice Roller").setDesc(createFragment(i=>{this.plugin.diceRollerInstalled?(i.createSpan({text:"Add Dice Roller dice to statblocks by default. Use "}),i.createEl("code",{text:"dice: false"}),i.createSpan({text:" to disable per-statblock."})):i.createSpan({text:"This setting is only usable with the Dice Roller plugin enabled."})})).setDisabled(!this.plugin.diceRollerInstalled).addToggle(i=>i.setValue(this.plugin.settings.useDice).onChange(async a=>{this.plugin.settings.useDice=a,await this.plugin.saveSettings()})),new ke.Setting(t).setName("Render Dice Rolls").setDesc(createFragment(i=>{this.plugin.diceRollerInstalled?(i.createSpan({text:"Roll graphical dice inside statblocks by default. Use "}),i.createEl("code",{text:"render: false"}),i.createSpan({text:" to disable per-statblock."})):i.createSpan({text:"This setting is only usable with the Dice Roller plugin enabled."})})).setDisabled(!this.plugin.diceRollerInstalled).addToggle(i=>i.setValue(this.plugin.settings.renderDice).onChange(async a=>{this.plugin.settings.renderDice=a,this.plugin.diceRollerInstalled&&window.DiceRoller.registerSource(hi,{showDice:!0,shouldRender:this.plugin.settings.renderDice,showFormula:!1,showParens:!1,expectedValue:Wi.Average}),await this.plugin.saveSettings()})),new ke.Setting(t).setName("Try to Render Wikilinks").setDesc(createFragment(i=>{i.createSpan({text:"The plugin will attempt to detect wikilinks inside Statblocks."}),i.createEl("br"),i.createEl("strong",{text:"Please note: these links will not be added to the graph."})})).addToggle(i=>i.setValue(this.plugin.settings.tryToRenderLinks).onChange(async a=>{this.plugin.settings.tryToRenderLinks=a,await this.plugin.saveSettings()})),new ke.Setting(t).setName("Enable 5e SRD").setDesc(createFragment(i=>{i.createSpan({text:"Use the Dungeons & Dragons 5th Edition System Reference Document monsters."})})).addToggle(i=>i.setValue(!this.plugin.settings.disableSRD).onChange(async a=>{this.plugin.settings.disableSRD=!a,await this.plugin.saveSettings(),this.plugin.app.workspace.trigger("fantasy-statblocks:srd-change",a)}))}generateParseSettings(t){t.empty();let i=t.createDiv("statblock-additional-container");new ke.Setting(i).setHeading().setName("Note Parsing"),new ke.Setting(i).setName("Automatically Parse Frontmatter for Creatures").setDesc(createFragment(r=>{r.createSpan({text:"The plugin will watch the vault for creatures defined in note frontmatter."}),r.createEl("br"),r.createEl("br"),r.createSpan({text:'The "Parse Frontmatter for Creatures" command can also be used.'})})).addToggle(r=>{r.setValue(this.plugin.settings.autoParse).onChange(async o=>{this.plugin.settings.autoParse=o,o&&kn.start(),await this.plugin.saveSettings()})}),new ke.Setting(i).setName("Enable Debug Messages").setDesc(createFragment(r=>{r.createSpan({text:"Debug messages will be displayed by the file parser."})})).addToggle(r=>r.setValue(this.plugin.settings.debug).onChange(async o=>{this.plugin.settings.debug=o,kn.setDebug(),await this.plugin.saveSettings()}));let a;new ke.Setting(i).setName("Bestiary Folder").setDesc("The plugin will only parse notes inside these folders and their children.").addText(async r=>{let o=this.app.vault.getAllLoadedFiles().filter(c=>c instanceof ke.TFolder&&!this.plugin.settings.paths.includes(c.path));r.setPlaceholder("/"),new xf.FolderInputSuggest(this.app,r,[...o]).onSelect(async({item:c})=>{a=(0,ke.normalizePath)(c.path),r.setValue(c.path)}),r.inputEl.onblur=async()=>{let c=r.inputEl.value?.trim()?r.inputEl.value.trim():"/";a=(0,ke.normalizePath)(c)}}).addExtraButton(r=>{r.setIcon("plus-with-circle").onClick(async()=>{!a||!a.length||(this.plugin.settings.paths.push((0,ke.normalizePath)(a)),await this.plugin.saveSettings(),await kn.reparseVault(),await this.generateParseSettings(t))})});let s=i.createDiv("additional");for(let r of this.plugin.settings.paths)new ke.Setting(s).setName(r).addExtraButton(o=>o.setIcon("trash").onClick(async()=>{this.plugin.settings.paths=this.plugin.settings.paths.filter(l=>l!=r),await this.plugin.saveSettings(),await kn.reparseVault(),await this.generateParseSettings(t)}))}generateLayouts(t){t.empty(),new ke.Setting(t).setHeading().setName("Layouts");let i=t.createDiv("statblock-additional-container");i.createDiv("setting-item").createDiv().appendChild(createFragment(l=>{l.createSpan({text:"New statblock layouts can be created and managed here. A specific layout can be used for a creature using the "}),l.createEl("code",{text:"layout"}),l.createSpan({text:" parameter."})}));let a=new ke.Setting(i).setName("Import From JSON").setDesc("Import a custom layout from a JSON file."),s=createEl("input",{attr:{type:"file",name:"layout",accept:".json",multiple:!0}});s.onchange=async()=>{let{files:l}=s;if(l?.length)try{let{files:c}=s;if(!c?.length)return;for(let d of Array.from(c))await new Promise((u,h)=>{let f=new FileReader;f.onload=async m=>{try{let p=JSON.parse(m.target?.result);if(!p){h(new Error("Invalid layout imported"));return}if(!p?.name){h(new Error("Invalid layout imported: layout does not have a name"));return}if(!p?.blocks){h(new Error("Invalid layout imported: no blocks defined in layout."));return}p.diceParsing||(p.diceParsing=[]),p.id=Q(),!this.plugin.settings.alwaysImport&&p.blocks.find(b=>b.type=="javascript")&&!await gv(this.plugin)&&u(),this.plugin.settings.layouts.push(this.getDuplicate(p)),u()}catch(p){h(p)}},f.readAsText(d)}).catch(u=>{new ke.Notice(`There was an error importing the layout: + +${u}`),console.error(u)});await this.plugin.saveSettings(),s.value="",this.buildCustomLayouts(o,t)}catch{}},a.addButton(l=>{l.setIcon("upload"),l.buttonEl.addClass("statblock-file-upload"),l.buttonEl.appendChild(s),l.onClick(()=>s.click())}),new ke.Setting(i).setName("Add New Layout").addButton(l=>l.setIcon("plus-with-circle").setTooltip("Add New Layout").onClick(()=>{let c=new Ta(this.plugin);c.onClose=async()=>{if(!c.saved)return;let d=this.getDuplicate(c.layout);this.plugin.settings.layouts.push(d),this.plugin.manager.addLayout(d),await this.plugin.saveSettings(),this.buildCustomLayouts(o,t)},c.open()}));let r=i.createDiv("additional");new ke.Setting(r).setName("Default Layout").setDesc("Change the default statblock layout used, if not specified.").addDropdown(async l=>{for(let c of this.plugin.manager.getAllLayouts())l.addOption(c.id,c.name);(!this.plugin.settings.default||!this.plugin.manager.getAllLayouts().find(({id:c})=>c==this.plugin.settings.default))&&(this.plugin.settings.default=rn.id,await this.plugin.saveSettings()),l.setValue(this.plugin.settings.default??rn.id),l.onChange(async c=>{this.plugin.settings.default=c,this.plugin.manager.setDefaultLayout(c),await this.plugin.saveSettings()})}),new ke.Setting(r).setName("Show Advanced Options").setDesc("Show advanced options when editing layout blocks.").addToggle(l=>l.setValue(this.plugin.settings.showAdvanced).onChange(async c=>{this.plugin.settings.showAdvanced=c,await this.plugin.saveSettings()}));let o=i.createDiv("additional");this.buildCustomLayouts(o,t)}getDuplicate(t){if(!this.plugin.manager.getAllLayouts().find(o=>o.name==t.name))return t;let i=this.plugin.manager.getSortedLayoutNames().filter(o=>o.contains(`${t.name} Copy`)),a=`${t.name} Copy`,s=a,r=1;for(;i.includes(s);)s=`${a} (${r})`,r++;return{blocks:Ze(t.blocks),name:s,id:Q()}}buildCustomLayouts(t,i){t.empty(),this.plugin.manager.getAllDefaultLayouts().some(a=>a.removed)&&new ke.Setting(t).setName("Restore Default Layouts").addButton(a=>{a.setIcon("rotate-ccw").onClick(async()=>{for(let s of Object.values(this.plugin.settings.defaultLayouts))s.removed=!1,s.edited||delete this.plugin.settings.defaultLayouts[s.id];await this.plugin.saveSettings(),this.generateLayouts(i)})});for(let a of this.plugin.manager.getAllDefaultLayouts()){if(a.removed)continue;let s=new ke.Setting(t).setName(a.name).addExtraButton(r=>{r.setIcon("pencil").setTooltip("Edit").onClick(()=>{let o=new Ta(this.plugin,a);o.onClose=async()=>{o.saved&&(o.layout.edited=!0,this.plugin.settings.defaultLayouts[a.id]=o.layout,await this.plugin.saveSettings(),this.plugin.manager.updateDefaultLayout(a.id,o.layout),this.generateLayouts(i))},o.open()})});a.edited&&s.addExtraButton(r=>r.setIcon("undo").onClick(async()=>{let o=ci.find(({id:l})=>l==a.id);delete this.plugin.settings.defaultLayouts[a.id],await this.plugin.saveSettings(),this.plugin.manager.updateDefaultLayout(a.id,o),this.generateLayouts(i)})),s.addExtraButton(r=>{r.setIcon("duplicate-glyph").setTooltip("Create Copy").onClick(async()=>{let o=this.getDuplicate(a);this.plugin.settings.layouts.push(o),await this.plugin.saveSettings(),this.plugin.manager.addLayout(o),this.buildCustomLayouts(t,i)})}).addExtraButton(r=>{r.setIcon("import-glyph").setTooltip("Export as JSON").onClick(()=>{let o=createEl("a"),l=new Blob([JSON.stringify(a)],{type:"json"}),c=URL.createObjectURL(l);o.href=c,o.download=`${a.name}.json`,o.click(),URL.revokeObjectURL(c)})}).addExtraButton(r=>{r.setIcon("trash").setTooltip("Delete").onClick(async()=>{a.removed=!0,this.plugin.settings.defaultLayouts[a.id]=a,await this.plugin.saveSettings(),this.generateLayouts(i)})})}for(let a of this.plugin.settings.layouts)new ke.Setting(t).setName(a.name).addExtraButton(s=>{s.setIcon("pencil").setTooltip("Edit").onClick(()=>{let r=new Ta(this.plugin,a);r.onClose=async()=>{r.saved&&(ci.find(({id:o})=>o==a.id)&&(r.layout.edited=!0),this.plugin.settings.layouts.splice(this.plugin.settings.layouts.indexOf(a),1,r.layout),await this.plugin.saveSettings(),this.plugin.manager.updateLayout(a.id,r.layout),this.generateLayouts(i))},r.open()})}).addExtraButton(s=>{s.setIcon("duplicate-glyph").setTooltip("Create Copy").onClick(async()=>{let r=this.getDuplicate(a);this.plugin.settings.layouts.push(r),await this.plugin.saveSettings(),this.plugin.manager.addLayout(r),this.buildCustomLayouts(t,i)})}).addExtraButton(s=>{s.setIcon("import-glyph").setTooltip("Export as JSON").onClick(()=>{let r=createEl("a"),o=new Blob([JSON.stringify(a)],{type:"json"}),l=URL.createObjectURL(o);r.href=l,r.download=`${a.name}.json`,r.click(),URL.revokeObjectURL(l)})}).addExtraButton(s=>{s.setIcon("trash").setTooltip("Delete").onClick(async()=>{this.plugin.settings.layouts=this.plugin.settings.layouts.filter(r=>r.id!==a.id),await this.plugin.saveSettings(),this.plugin.manager.removeLayout(a.id),this.generateLayouts(i)})})}generateImports(t){t.empty(),new ke.Setting(t).setHeading().setName("Import Homebrew Creatures");let i=t.createDiv("statblock-additional-container");new ke.Setting(i).setDesc("Import creatures from creature files. Monsters are stored by name, so only the last creature by that name will be saved. This is destructive - any saved creature will be overwritten.");let a=i.createDiv("additional"),s=new ke.Setting(a).setName("Import DnDAppFile").setDesc("Only import content that you own."),r=createEl("input",{attr:{type:"file",name:"dndappfile",accept:".xml",multiple:!0}});r.onchange=async()=>{let{files:w}=r;if(w?.length)try{let{files:k}=r;if(!k?.length)return;let A=await this.importer.import(k,"appfile");A&&A.length&&await this.plugin.saveMonsters(A),this.display()}catch{}},s.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import DnDAppFile Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(r),w.onClick(()=>r.click())});let o=new ke.Setting(a).setName("Import Improved Initiative Data").setDesc("Only import content that you own."),l=createEl("input",{attr:{type:"file",name:"improvedinitiative",accept:".json",multiple:!0}});l.onchange=async()=>{let{files:w}=l;if(w?.length)try{let{files:k}=l;if(!k?.length)return;let A=await this.importer.import(k,"improved");A&&A.length&&await this.plugin.saveMonsters(A),this.display()}catch{}},o.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import Improved Initiative Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(l),w.onClick(()=>l.click())});let c=new ke.Setting(a).setName("Import CritterDB Data").setDesc("Only import content that you own."),d=createEl("input",{attr:{type:"file",name:"critterdb",accept:".json",multiple:!0}});d.onchange=async()=>{let{files:w}=d;if(w?.length)try{let{files:k}=d;if(!k?.length)return;let A=await this.importer.import(k,"critter");A&&A.length&&await this.plugin.saveMonsters(A),this.display()}catch{}},c.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import CritterDB Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(d),w.onClick(()=>d.click())});let u=new ke.Setting(a).setName("Import 5e.tools Data").setDesc("Only import content that you own."),h=createEl("input",{attr:{type:"file",name:"fivetools",accept:".json",multiple:!0}});h.onchange=async()=>{let{files:w}=h;if(!w?.length)return;let k=await this.importer.import(w,"5e");k&&k.length&&await this.plugin.saveMonsters(k),this.display()},u.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import 5e.tools Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(h),w.onClick(()=>h.click())});let f=new ke.Setting(a).setName("Import TetraCube Data").setDesc("Only import content that you own."),m=createEl("input",{attr:{type:"file",name:"tetra",accept:".json, .monster",multiple:!0}});m.onchange=async()=>{let{files:w}=m;if(!w?.length)return;let k=await this.importer.import(w,"tetra");k&&k.length&&await this.plugin.saveMonsters(k),this.display()},f.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import TetraCube Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(m),w.onClick(()=>m.click())});let p=new ke.Setting(a).setName("Import PF2eMonsterTools Data").setDesc("Only import content that you own."),b=createEl("input",{attr:{type:"file",name:"PF2eMonsterTool",accept:".json, .monster",multiple:!0}});b.onchange=async()=>{let{files:w}=b;if(!w?.length)return;let k=await this.importer.import(w,"PF2eMonsterTool");k&&k.length&&await this.plugin.saveMonsters(k),this.display()},p.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import PF2EMonsterTools Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(b),w.onClick(()=>b.click())});let _=new ke.Setting(a).setName("Import Pathbuilder Data").setDesc("Import a PC or NPC exported from Pathbuilder2e."),S=createEl("input",{attr:{type:"file",name:"pathbuilder",accept:".json",multiple:!0}});S.onchange=async()=>{let{files:w}=S;if(!w.length)return;let k=await this.importer.import(w,"pathbuilder");k&&k.length&&await this.plugin.saveMonsters(k),this.display()},_.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import Pathbuilder Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(S),w.onClick(()=>S.click())});let C=new ke.Setting(a).setName("Import Generic Data").setDesc(createFragment(w=>{w.createSpan({text:"Import generic JSON files. JSON objects will be imported "}),w.createEl("strong",{text:"as-is"}),w.createSpan({text:" and all objects must have the "}),w.createEl("code",{text:"name"}),w.createSpan({text:" property."})})),M=createEl("input",{attr:{type:"file",name:"generic",accept:".json, .monster",multiple:!0}});M.onchange=async()=>{let{files:w}=M;if(!w?.length)return;let k=await this.importer.import(w,"generic");k&&k.length&&await this.plugin.saveMonsters(k),this.display()},C.addButton(w=>{w.setButtonText("Choose File(s)").setTooltip("Import Generic Data"),w.buttonEl.addClass("statblock-file-upload"),w.buttonEl.appendChild(M),w.onClick(()=>M.click())})}generateMonsters(t){t.empty(),new ke.Setting(t).setHeading().setName("Bestiary");let i=t.createDiv("statblock-additional-container statblock-monsters");new ke.Setting(i).setName("Add Creature").addButton(o=>{o.setIcon("plus-with-circle").onClick(()=>{let l=new zi(this.plugin);l.onClose=()=>{this.generateMonsters(t)},l.open()})});let a=this.containerEl.closest(".statblock-settings"),{backgroundColor:s,paddingTop:r}=getComputedStyle(a);this.$UI=new Cf({target:i,props:{plugin:this.plugin,backgroundColor:s,paddingTop:r}})}hide(){this.$UI.$destroy()}},Ta=class extends _t{constructor(t,i={name:"Layout",blocks:[],id:Q()}){super(t);this.plugin=t;this.saved=!1;this.layout=Ze(i),this.modalEl.addClasses(["mod-sidebar-layout","mod-settings"]),this.contentEl.addClass("vertical-tabs-container")}onOpen(){this.display()}display(){this.titleEl.createSpan({text:"Create Layout"}),this.creator=new Mh({target:this.contentEl,props:{layout:this.layout,plugin:this.plugin}}),this.creator.$on("saved",()=>{this.saved=!0,this.close()}),this.creator.$on("cancel",()=>{this.close()})}};async function gv(n){return new Promise((e,t)=>{try{let i=new jl(n);i.onClose=()=>{e(i.confirmed)},i.open()}catch{t()}})}var jl=class extends _t{constructor(t){super(t);this.plugin=t;this.confirmed=!1}async display(){this.contentEl.empty(),this.contentEl.addClass("confirm-modal"),this.contentEl.createEl("p",{text:"This Layout includes JavaScript blocks. JavaScript blocks can execute code in your vault, which could cause loss or corruption of data."}),this.contentEl.createEl("p",{text:"Are you sure you want to import this layout?"});let t=this.contentEl.createDiv("confirm-buttons-container");t.createEl("a").createEl("small",{cls:"dont-ask",text:"Import and don't ask again"}).onclick=async()=>{this.confirmed=!0,this.plugin.settings.alwaysImport=!0,this.close()};let i=t.createDiv("confirm-buttons");new ke.ButtonComponent(i).setButtonText("Import").setCta().onClick(()=>{this.confirmed=!0,this.close()}),i.createEl("a").createEl("small",{cls:"dont-ask",text:"Cancel"}).onclick=()=>{this.close()}}onOpen(){this.display()}};var Gs=require("obsidian");var pv=["creature","name","layout","source","dice","render","columns","forceColumns","columnWidth","columnHeight","extends"],Us=class extends Gs.EditorSuggest{constructor(t){super(t.app);this.plugin=t;this._context=4}getSuggestions(t){let i=[];switch(this._context){case 3:{i=["true","false"];break}case 1:{i=this.plugin.api.getBestiaryNames();break}case 0:{i=this.plugin.manager.getSortedLayoutNames();break}case 2:{let a=this.plugin.manager.getLayoutOrDefault(this._layout).id;this._props=this.plugin.manager.getProperties(a),i=[...new Set([...pv,...this._props.keys()??[]])].filter(s=>!this._keys.includes(s));break}case 4:default:return[]}return t.query?.length?i.filter(a=>a.toLowerCase().contains(t.query.toLowerCase())):i}renderSuggestion(t,i){i.createSpan({text:t})}selectSuggestion(t,i){if(!this.context)return;let a=this.context.editor.getLine(this.context.end.line).slice(this.context.end.ch),[s,r]=a.match(/^(\] ?)/)??[],o;if(this._context===2)if(this._props.has(t))switch(this._props.get(t).type){case"heading":case"subheading":case"property":case"image":case"text":{t=`${t}: `;break}case"traits":{t=`${t}: + - name: + desc:`,o=t.length-10;break}case"table":{t=`${t}: []`,o=t.length-1;break}case"saves":case"spells":{t=`${t}: + - `,o=t.length;break}case"inline":case"group":case"ifelse":case"collapse":case"javascript":case"layout":default:break}else t=`${t}: `,o=t.length;this.context.editor.replaceRange(`${t}`,this.context.start,{...this.context.end,ch:this.context.start.ch+this.context.query.length+(r?.length??0)},"statblocks"),this.context.editor.setCursor(this.context.start.line,this.context.start.ch+o),this.close()}onTrigger(t,i,a){let s=i.getRange({line:0,ch:0},t);if(s.indexOf("```statblock\n")===-1)return null;let r=s.split(` +`),o=!1,l;for(let d=r.length-1;d>=0;d--){let u=r[d];if(/^\`\`\`$/.test(u))return null;if(/^\`\`\`statblock/.test(u)){o=!0,l=d;break}}if(!o)return;let c=i.getLine(t.line);if(this._context=4,/^name/.test(c))return null;if(/^(dice|render)/.test(c)){this._context=3;let d=c.match(/^(dice|render):\s?(.*)\n?/);if(!d)return null;let[u,h,f]=d;return f==="true"||f==="false"?null:{end:t,start:{ch:h.length+2,line:t.line},query:f}}if(/^(monster|creature|extends):/.test(c)){this._context=1;let d=c.match(/^(monster|creature|extends):\s?(.*)\n?/);if(!d)return null;let[u,h,f]=d;return ve.getBestiaryNames().find(m=>m.toLowerCase()==f.toLowerCase())?null:{end:t,start:{ch:h.length+2,line:t.line},query:f}}if(/^(layout):/m.test(c)){this._context=0;let d=c.match(/^(layout):\s?(.*)\n?/);if(!d)return null;let[u,h,f]=d;return this.plugin.manager.getAllLayouts().find(p=>p.name.toLowerCase()==f.toLowerCase())?null:{end:t,start:{ch:h.length+2,line:t.line},query:f}}try{let d=i.getValue().split(` +`);d.splice(t.line,1),d=d.slice(l+1);let u=d.findIndex(f=>/^```$/.test(f));u<0&&(u=d.length);let h=(0,Gs.parseYaml)(d.slice(0,u).join(` +`));this._keys=Object.keys(h),this._layout=h.layout??this.plugin.manager.getDefaultLayout().name}catch{this._keys=[]}return this._keys||(this._keys=[]),this._context=2,{end:t,start:{ch:0,line:t.line},query:c}}};var fi,St,Vl,Ks,Ma,fn,_n,Ia,Ul,Gl,Ea=class{constructor(){Be(this,St);Be(this,fi,new Map);Be(this,Ma);Be(this,fn,new Map);Be(this,_n,new Map);Be(this,Ia,new WeakMap)}initialize(e){this.setDefaultLayout(e.default),this.setDefaultLayouts(e.defaultLayouts),this.setLayouts(e.layouts);for(let t of this.getAllLayouts())this.addStyleSheet(t)}unload(){for(let e of X(this,fi).values())e.detach()}addStyleSheet(e){this.removeStyleSheet(e.id);let t=this.generateStyleSheet(e);t&&X(this,fi).set(e.id,t)}removeStyleSheet(e){X(this,fi).has(e)&&X(this,fi).get(e).detach()}getSheetRules(e){if(!e.cssProperties)return[];let t=`.${ki(e.name)}`,i=[Oe(this,St,Ks).call(this,t,{...ul,...e.cssProperties})];return Te.Light in e.cssProperties&&i.push(Oe(this,St,Ks).call(this,`.theme-light ${t}`,e.cssProperties[Te.Light])),Te.Dark in e.cssProperties&&i.push(Oe(this,St,Ks).call(this,`.theme-dark ${t}`,e.cssProperties[Te.Dark])),i}generateStyleSheet(e,t=`FS_CSS_PROPERTIES_${e.id}`){if(!e.cssProperties)return null;let i=document.head.createEl("style",{attr:{id:t}}),a=this.getSheetRules(e);for(let s of a)i.sheet.insertRule(s,i.sheet.cssRules.length);return i}updateDefaultLayout(e,t){X(this,fn).delete(e),this.setDefaultLayouts({[t.id]:t}),this.addStyleSheet(t)}removeDefaultLayout(e){X(this,fn).delete(e),this.removeStyleSheet(e)}setDefaultLayouts(e){for(let t of ci)X(this,fn).set(t.id,t.id in e?e[t.id]:t);setTimeout(()=>{for(let t of X(this,fn).values())Oe(this,St,Ul).call(this,t)},0)}setDefaultLayout(e){an(this,Ma,e)}getDefaultLayout(){return this.getAllLayouts()?.find(e=>e.id==X(this,Ma))??rn}setLayouts(e){for(let t of e)X(this,_n).set(t.id,t);setTimeout(()=>{for(let t of e)Oe(this,St,Ul).call(this,t)},0)}getCustomLayouts(){return X(this,_n).values()}getAllLayouts(){return[...X(this,fn).values(),...X(this,_n).values()].filter(e=>!("removed"in e)||!e.removed)}getAllDefaultLayouts(){return[...X(this,fn).values()]}getLayout(e){return X(this,_n).get(e)??X(this,fn).get(e)??null}getLayoutOrDefault(e){return this.getAllLayouts().find(t=>t.name==e)??this.getDefaultLayout()}updateLayout(e,t){X(this,_n).delete(e),this.setLayouts([t]),this.addStyleSheet(t)}removeLayout(e){X(this,_n).delete(e),this.removeStyleSheet(e)}addLayout(e){this.setLayouts([e]),this.addStyleSheet(e)}getSortedLayoutNames(){let e=new Set([this.getDefaultLayout().name]);for(let t of this.getAllLayouts())e.has(t.name)||e.add(t.name);return[...e]}getProperties(e){let t=typeof e=="string"?this.getLayout(e):e;return X(this,Ia).get(t)}};fi=new WeakMap,St=new WeakSet,Vl=function(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)},Ks=function(e,t){let i=[];for(let[a,s]of Object.entries(t)){if(a==Te.Dark||a==Te.Light)continue;let r=_a.includes(s)?`var(--statblock-${Oe(this,St,Vl).call(this,s)})`:s;i.push(` + --statblock-${Oe(this,St,Vl).call(this,a)}: ${r};`)}return`${e} {${i.join("")} + }`},Ma=new WeakMap,fn=new WeakMap,_n=new WeakMap,Ia=new WeakMap,Ul=function(e){let t=new Map;X(this,Ia).set(e,Oe(this,St,Gl).call(this,e.blocks,t))},Gl=function(e,t){for(let i of e){if("nested"in i){Oe(this,St,Gl).call(this,i.nested,t);continue}if("properties"in i)for(let a of i.properties)t.set(a,i)}return t};var zn=require("obsidian");var Sn="fantasy-statblocks-creature-pane",Oa=class extends zn.ItemView{constructor(t,i){super(t);this.plugin=i;this.topEl=this.contentEl.createDiv("creature-view-top-pane");this.statblockEl=this.contentEl.createDiv("creature-statblock-container");this.load(),this.containerEl.addClasses(["fantasy-statblocks","creature-view-container"]),this.containerEl.on("mouseover","a.internal-link",(0,zn.debounce)(a=>{this.plugin.app.workspace.trigger("hover-link",{event:a,source:this.plugin.manifest.id,hoverParent:this.leaf,targetEl:a.target,linktext:a.target.dataset.href})},10)),this.containerEl.on("click","a.internal-link",a=>this.app.workspace.openLinkText(a.target.dataset.href,"fantasy-statblocks"))}onload(){let t=new zn.SearchComponent(this.topEl).setPlaceholder("Find a creature"),i=new Fi(this.plugin.app,t,ve.getBestiaryCreatures());ve.onResolved(()=>{i.items=ve.getBestiaryCreatures()}),i.onSelect(async a=>{a&&(await this.render(a.item),t.setValue(""))}),new zn.ExtraButtonComponent(this.topEl).setIcon("cross").setTooltip("Close Statblock").onClick(async()=>{await this.render(),t.setValue("")})}async render(t){if(this.statblockEl.empty(),!t){this.statblockEl.createEl("em",{text:"Select a creature to view it here."});return}let i=this.plugin.api.render(t,this.statblockEl);this.addChild(i)}getDisplayText(){return"Combatant"}getIcon(){return"skull"}getViewType(){return Sn}};var Ys=require("obsidian");var qn,$s=class{constructor(e){Be(this,qn);an(this,qn,e)}getVersion(){return X(this,qn).settings.version}getBestiary(){return ve.getBestiary()}getBestiaryCreatures(){return ve.getBestiaryCreatures()}getBestiaryNames(){return ve.getBestiaryNames()}hasCreature(e){return ve.hasCreature(e)}getCreatureFromBestiary(e){return ve.getCreatureFromBestiarySync(e)}async getCreature(e){return await ve.getCreatureFromBestiary(e)}getSortedBy(e){return ve.getSortedBy(e)}onSortedBy(e,t){return ve.onSortedBy(e,t)}registerSorter(e,t){return ve.registerSorter(e,t)}getIndices(){return ve.getIndices()}getIndex(e){return ve.getIndex(e)}registerIndex(e){return ve.registerIndex(e)}onIndexUpdated(e,t){return ve.onIndexUpdated(e,t)}isResolved(){return ve.isResolved()}onResolved(e){return ve.onResolved(e)}onUpdated(e){return ve.onUpdated(e)}render(e,t,i){let a=Object.assign({},Ze(this.getCreatureFromBestiary(e.name??"")??{}),Ze(e));return a?(i&&(a.name=i),new Yt({container:t,monster:a,plugin:X(this,qn),context:"STATBLOCK_RENDERER"})):new Ys.Component}isStatblockLink(e){return Ht.isStatblockLink(e)}parseStatblockLink(e){return Ht.stringifyLinks(e)}stringifyLinks(e){return Ht.stringifyLinks(e)}transformLinks(e){return Ht.transformSource(e)}renderMarkdown(e,t,i="",a=X(this,qn)){Ys.MarkdownRenderer.render(X(this,qn).app,e,t,i,a)}};qn=new WeakMap;var hi="FANTASY_STATBLOCKS_PLUGIN",bv={monsters:[],defaultLayouts:{},layouts:[],default:rn.name,useDice:!0,renderDice:!1,export:!0,showAdvanced:!1,version:{major:null,minor:null,patch:null},paths:["/"],autoParse:!1,disableSRD:!1,tryToRenderLinks:!0,debug:!1,notifiedOfFantasy:!1,hideConditionHelp:!1,alwaysImport:!1,defaultLayoutsIntegrated:!1,atomicWrite:!1},Xs,Js=class extends jn.Plugin{constructor(){super(...arguments);this.manager=new Ea;this.api=new $s(this);Be(this,Xs,t=>{let i=t?.creature??t?.name??"";if(ve.hasCreature(i)){let a=ve.get(i);this.creature_view?this.creature_view.render(a):this.openCreatureView().then(s=>s.render(a))}})}getRoller(t){return this.canUseDiceRoller?window.DiceRoller.getRollerSync(t,hi):void 0}getRollerString(t){return this.canUseDiceRoller?window.DiceRoller.getRollerString(t,hi):t}get diceRollerInstalled(){return window.DiceRoller!=null}get canUseDiceRoller(){return this.diceRollerInstalled?this.settings.useDice:!1}get creature_view(){let t=this.app.workspace.getLeavesOfType(Sn),i=t?.length?t[0]:null;if(i&&i.view&&i.view instanceof Oa)return i.view}async openCreatureView(t=!1){let i,a=this.app.workspace.getLeavesOfType(Sn);return!t&&a?.length?i=a.shift():(t&&a?.length?i=this.app.workspace.createLeafInParent(a[0].parent,a[0].parent.children.length):i=this.app.workspace.getRightLeaf(!0),await i.setViewState({type:Sn})),this.app.workspace.revealLeaf(i),i.view}async onload(){console.log("Fantasy StatBlocks loaded"),this.app.workspace.trigger("fantasy-statblocks:loaded",null),await this.loadSettings(),await this.saveSettings(),this.manager.initialize(this.settings),this.register(()=>this.manager.unload()),ve.initialize(this),ut.initialize(this.app.metadataCache,this.app),this.register(()=>ut.unload()),this.registerHoverLinkSource(this.manifest.id,{display:this.manifest.name,defaultMod:!1}),this.addCommand({id:"open-creature-view",name:"Open Creature pane",checkCallback:t=>this.app.workspace.getLeavesOfType(Sn).length?!1:(t||this.openCreatureView(),!0)}),this.addCommand({id:"reveal-creature-view",name:"Reveal Creature pane",checkCallback:t=>this.app.workspace.getLeavesOfType(Sn).length?(t||this.openCreatureView(),!0):!1}),this.addCommand({id:"open-new-creature-view",name:"Open new Creature pane",callback:()=>{this.openCreatureView(!0)}}),this.addRibbonIcon("skull","Open Creature pane",async t=>{this.openCreatureView(t.getModifierState("Meta"))}),this.registerObsidianProtocolHandler("creature-pane",X(this,Xs).bind(this)),(0,jn.addIcon)("markdown-icon",''),this.addSettingTab(new Da(this.app,this)),(window.FantasyStatblocks=this.api)&&this.register(()=>delete window.FantasyStatblocks),this.registerMarkdownCodeBlockProcessor("statblock",this.postprocessor.bind(this)),this.registerEditorSuggest(new Us(this)),this.registerView(Sn,t=>new Oa(t,this)),this.canUseDiceRoller&&window.DiceRoller.registerSource(hi,{showDice:!0,shouldRender:this.settings.renderDice,showFormula:!1,showParens:!1,expectedValue:Wi.Average,text:null}),this.registerEvent(this.app.workspace.on("dice-roller:loaded",()=>{window.DiceRoller.registerSource(hi,{showDice:!0,shouldRender:this.settings.renderDice,showFormula:!1,showParens:!1,expectedValue:Wi.Average,text:null})}))}async loadSettings(){let t=await this.loadData();if(this.settings={...bv,...t},!this.settings.defaultLayoutsIntegrated){for(let s of this.settings.layouts)s.id=Q();this.settings.default=(this.layouts.find(({name:s})=>s==this.settings.default)??rn).id,this.settings.defaultLayoutsIntegrated=!0}if(Array.isArray(this.settings.defaultLayouts)){let s={};for(let r of this.settings.defaultLayouts)(r.removed||r.edited)&&(s[r.id]=r);this.settings.defaultLayouts=s}for(let s of ci){if(!(s.id in this.settings.defaultLayouts)||s.version==null)continue;let r=this.settings.defaultLayouts[s.id];if(!(r.version>=s.version)){if(r.edited){r.updatable=!0;continue}r.blocks=Ze(s.blocks)}}function i(...s){for(let r of s)r.type=="spells"&&(r.properties.length||r.properties.push("spells")),"nested"in r&&i(...r.nested)}for(let s of this.settings.layouts)i(...s.blocks);let a=this.manifest.version.split(".");this.settings.version={major:Number(a[0]),minor:Number(a[1]),patch:Number(a[2])}}async saveSettings(){this.app.workspace.trigger("fantasy-statblocks:settings-change",this.settings),await this.saveData(this.settings)}async loadData(){return await super.loadData()}async saveData(t){super.saveData(t)}async saveMonster(t,i=!0){if(t.name){if(ve.isLocal(t.name)){let a=this.settings.monsters.findIndex(([s])=>s===t.name);a>=0?this.settings.monsters.splice(a,1,[t.name,t]):this.settings.monsters.push([t.name,t])}else this.settings.monsters.push([t.name,t]);ve.addLocalCreature(t),i&&await this.saveSettings()}}async saveMonsters(t){for(let i of t)await this.saveMonster(i,!1);await this.saveSettings()}async updateMonster(t,i){await this.deleteMonsters(t.name),await this.saveMonster(i)}async deleteMonsters(...t){for(let i of t)ve.removeLocalCreature(i);this.settings.monsters=this.settings.monsters.filter(([i])=>!t.includes(i)),await this.saveSettings()}onunload(){console.log("Fantasy StatBlocks unloaded"),this.app.workspace.getLeavesOfType(Sn).forEach(t=>t.detach())}exportAsPng(t,i){function a(r){return!r.hasClass||!r.hasClass("clickable-icon")}let s=i.querySelector(".statblock-content");s&&delete s.style.boxShadow,Af.default.toPng(i,{filter:a,style:{height:"100%"}}).then(r=>{let o=document.createElement("a");o.download=t+".png",o.href=r,o.click(),o.detach()}).catch(r=>{new jn.Notice(`There was an error creating the image: + +${r.message}`),console.error(r)})}get layouts(){return this.manager.getAllLayouts()}get defaultLayout(){return this.manager.getDefaultLayout()}getLayoutOrDefault(t){return this.manager.getLayoutOrDefault(t.layout)}async postprocessor(t,i,a){try{t=ut.transformSource(t);let s=(0,jn.parseYaml)(t);i.addClass("statblock-plugin-container"),i.parentElement?.addClass("statblock-plugin-parent");let r=new Yt({container:i,plugin:this,params:s,context:a.sourcePath});a.addChild(r)}catch(s){console.error(`Obsidian Statblock Error: +${s}`),createEl("pre").setText(`\`\`\`statblock +There was an error rendering the statblock: +${s.stack.split(` +`).filter(o=>!/^at/.test(o?.trim())).join(` +`)} +\`\`\``)}}render(t,i,a){this.api.render(t,i,a)}};Xs=new WeakMap; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-5e-statblocks/manifest.json b/.obsidian/plugins/obsidian-5e-statblocks/manifest.json new file mode 100644 index 0000000..9747727 --- /dev/null +++ b/.obsidian/plugins/obsidian-5e-statblocks/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "obsidian-5e-statblocks", + "name": "Fantasy Statblocks", + "version": "4.10.3", + "description": "Create Fantasy Statblocks in Obsidian.md", + "minAppVersion": "0.12.0", + "author": "Jeremy Valentine", + "authorUrl": "", + "fundingUrl": "https://www.buymeacoffee.com/valentine195", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-5e-statblocks/styles.css b/.obsidian/plugins/obsidian-5e-statblocks/styles.css new file mode 100644 index 0000000..cd4c2c0 --- /dev/null +++ b/.obsidian/plugins/obsidian-5e-statblocks/styles.css @@ -0,0 +1,150 @@ +@charset "UTF-8";:root{--statblock-primary-color: #7a200d;--statblock-rule-color: #922610;--statblock-background-color: #fdf1dc;--statblock-bar-color: #e69a28;--statblock-bar-border-size: 1px;--statblock-bar-border-color: #000;--statblock-image-width: 75px;--statblock-image-height: 75px;--statblock-image-border-size: 2px;--statblock-image-border-color: var(--statblock-primary-color);--statblock-border-size: 1px;--statblock-border-color: #ddd;--statblock-box-shadow-color: #ddd;--statblock-box-shadow-x-offset: 0;--statblock-box-shadow-y-offset: 0;--statblock-box-shadow-blur: 1.5em;--statblock-font-color: var(--statblock-primary-color);--statblock-font-weight: 700;--statblock-content-font: "Noto Sans", "Myriad Pro", Calibri, Helvetica, Arial, sans-serif;--statblock-content-font-size: 14px;--statblock-heading-font: "Libre Baskerville", "Lora", "Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif;--statblock-heading-font-color: var(--statblock-font-color);--statblock-heading-font-size: 23px;--statblock-heading-font-variant: small-caps;--statblock-heading-font-weight: var(--statblock-font-weight);--statblock-heading-line-height: inherit;--statblock-property-line-height: 1.4;--statblock-property-font-color: var(--statblock-font-color);--statblock-property-name-font-color: var(--statblock-font-color);--statblock-property-name-font-weight: bold;--statblock-section-heading-border-size: 1px;--statblock-section-heading-border-color: var(--statblock-primary-color);--statblock-section-heading-font-color: var(--statblock-font-color);--statblock-section-heading-font-size: 21px;--statblock-section-heading-font-variant: small-caps;--statblock-section-heading-font-weight: normal;--statblock-saves-line-height: 1.4;--statblock-spells-font-style: italic;--statblock-subheading-font-size: 12px;--statblock-subheading-font-style: italic;--statblock-subheading-font-weight: normal;--statblock-table-header-font-weight: bold;--statblock-traits-name-font-weight: bold;--statblock-traits-name-font-style: italic;--statblock-link-style: italic}.statblock-detached{position:absolute;top:-9999px;width:auto}.statblock-item-container{margin-bottom:.25rem}.statblock-item-inline{display:flex;justify-content:space-between}.statblock-filter-container .search-input-container{margin-bottom:0}.no-border-top{border-top:0}.statblock-edit-block .statblock-additional-container>.additional>.setting-item .setting-item-name{font-size:small;font-style:italic}.statblock-edit-block .statblock-additional-container>.additional>.setting-item{color:var(--text-muted)}.statblock-edit-block .statblock-additional-container>:not(.additional){padding-bottom:0}.fantasy-statblocks-modal .copy-code-button,.statblock-edit-block .copy-code-button{display:none}.statblock-edit-block .setting-item{border:0;padding-top:0rem}.statblock-edit-block textarea{width:100%;resize:vertical;overflow:hidden}.statblock-additional-container.statblock-monsters button{margin-right:0}.statblock-file-upload>input[type=file]{display:none}.statblock-additional-container{border-top:1px solid var(--background-modifier-border);border-bottom:0px solid var(--background-modifier-border);padding:18px 0 0;background-color:inherit}.statblock-additional-container details{padding:18px 0}.statblock-additional-container .clickable-icon{margin:0 6px}.statblock-additional-container .task-list-inline{display:grid;grid-template-columns:1fr 1fr;gap:0 3em;padding-bottom:0;margin:0}.statblock-monster-filter{position:sticky;top:calc(-1 * var(--statblock-filter-offset));background-color:var(--statblock-filter-bg);z-index:99999}.statblock-additional-container>.setting-item-heading:only-child{padding-bottom:18px}.statblock-additional-container>.additional{margin:6px 12px}.statblock-additional-container .setting-item{border-top:0}.statblock-additional-container>.additional>.setting-item{padding-top:9px}.statblock-additional-container>.additional>.setting-item>.setting-item-control>*:first-child{margin:0 6px}.statblock-settings .coffee{width:60%;color:var(--text-faint);margin:1rem auto;text-align:center}.statblock-settings .coffee img{height:30px}details.statblock-nested-settings>summary{outline:none;display:flex;justify-content:space-between;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer;position:relative;margin-bottom:1rem}details.statblock-nested-settings>summary>.setting-item{padding-bottom:0}.statblock-nested-settings .cm-editor{margin-bottom:1rem}details.statblock-nested-settings>summary::-webkit-details-marker,details.statblock-nested-settings>summary::marker{display:none!important}details.statblock-nested-settings .summary-content{display:flex;align-items:center;justify-content:space-between}details.statblock-nested-settings[open] .summary-content{border-bottom:1px solid var(--background-modifier-border)}details.statblock-nested-settings .summary-content .setting-item-heading{padding:0}details.statblock-nested-settings>summary .collapser{display:flex;align-items:center;content:""}details.statblock-nested-settings>summary .collapser>.handle{transform:rotate(0);transition:transform .25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,");mask-image:url("data:image/svg+xml;charset=utf-8,");width:20px;height:20px}details[open].statblock-nested-settings>summary .collapser>.handle{transform:rotate(90deg)}.statblock-nested-settings{padding-bottom:18px}.statblock-nested-settings:not(details) .setting-item-heading{border-top:0px;border-bottom:1px solid var(--background-modifier-border)}.statblock-textarea+.cm-editor{height:200px;margin-bottom:1rem}.statblock-textarea.statblock-textarea-small+.cm-editor{height:100px;margin-bottom:1rem}.statblock-textarea.statblock-textarea-x-small+.cm-editor{margin-bottom:1rem;height:unset}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center}.confirm-buttons-container .dont-ask{cursor:pointer}.confirm-buttons{display:flex;justify-content:flex-end;align-items:center;gap:.5rem}.statblock-loading{display:flex;justify-content:center;align-items:center;gap:.375rem}.statblock-loading .spinner{border-bottom-color:transparent;border-radius:50%;display:inline-flex;align-items:center;box-sizing:border-box;animation:rotation 1s ease infinite}@keyframes rotation{0%{transform:scale(1) rotate(-60deg)}20%{transform:rotate(-90deg)}50%{transform:rotate(690deg)}to{transform:rotate(660deg)}}.basic-fate-core-layout{--statblock-section-heading-font-size: 16px;--statblock-rule-color: var(--color-accent);--statblock-background-color: #2e3440;--statblock-bar-color: #5e81ac;--statblock-heading-font-color: #88c0d0;--statblock-property-name-font-color: #88c0d0;--statblock-section-heading-font-color: #63778f;--statblock-section-heading-border-color: #63778f}.basic-fate-core-layout .property-name{color:var(--statblock-property-name-font-color)}.basic-fate-core-layout .statblock-inline-item .line p,.basic-fate-core-layout .statblock-inline-item .line ul{margin:0;white-space:normal}.basic-fate-core-layout .statblock-inline-item .line ul{margin-top:10px}.basic-fate-core-layout .statblock-item-container .property-text p,.basic-fate-core-layout .statblock-item-container.statblock-item-container{margin:0;white-space:normal}.basic-fate-core-layout .property-text.svelte-oskcir div,.basic-fate-core-layout .property-text.svelte-9xkcir div,.basic-fate-core-layout .statblock-inline-item .line{white-space:normal}.basic-fate-core-layout .obsidian-statblock-plugin.statblock.statblock{white-space:normal;margin:0}.basic-fate-core-layout .creature-statblock-container .statblock,.basic-fate-core-layout .rpg-manager-header-container .statblock{max-width:100%;margin:0}.basic-fate-core-layout .rpg-manager-table .statblock.statblock{max-width:90%;margin:0}.basic-fate-core-layout .statblock>*>*>*,.basic-fate-core-layout .rpg-manager-table .statblock>*>*>*,.basic-fate-core-layout .rpg-manager-header-container .statblock>*>*>*{font-size:.8em}.basic-fate-core-layout .statblock-markdown ul{margin:0}.basic-fate-core-layout .statblock-item-inline{align-items:center}.basic-fate-core-layout .statblock-item-inline .line.line{display:flex;align-items:center;line-height:1;color:var(--text-normal)}.basic-fate-core-layout .statblock-content.statblock-content.statblock-content{box-shadow:none;background-color:transparent;border-color:var(--background-secondary-alt);color:var(--text-normal);padding:0 .5em}.basic-fate-core-layout .obsidian-statblock-plugin .bar.bar{background:var(--color-accent);border-color:var(--background-secondary-alt)}.basic-fate-core-layout .statblock-item-container .line.line,.basic-fate-core-layout .obsidian-statblock-plugin .section-header.section-header,.basic-fate-core-layout .obsidian-statblock-plugin .property-name.property-name,.basic-fate-core-layout .obsidian-statblock-plugin .heading.heading{color:var(--text-normal);border-color:var(--text-normal)}.basic-fate-core-layout .statblock-item-container .table.table,.basic-fate-core-layout .statblock-item-container .line.line,.basic-fate-core-layout .obsidian-statblock-plugin .section-header.section-header,.basic-fate-core-layout .statblock-item-inline.statblock-item-inline{margin-top:.25rem}.basic-fate-core-layout .statblock-item-container .flex-container+.line.line{margin-top:.1rem}.basic-fate-core-layout .statblock-item-container:empty+.statblock-item-container{padding-top:.12rem;margin-top:.135rem;border-top:1px dashed var(--text-muted)}.basic-fate-core-layout .markdown-source-view ol>li,.basic-fate-core-layout .markdown-source-view .obsidian-statblock-plugin ul>li,.basic-fate-core-layout .markdown-preview-view .obsidian-statblock-plugin ol>li,.basic-fate-core-layout .markdown-preview-view .obsidian-statblock-plugin ul>li,.basic-fate-core-layout .markdown-rendered .obsidian-statblock-plugin ul>li,.basic-fate-core-layout .mod-cm6 .obsidian-statblock-plugin .HyperMD-list-line.cm-line{padding:0}.basic-fate-core-layout .statblock-plugin-parent .icons.icons{position:static}.basic-fate-core-layout .tapered-rule.tapered-rule.tapered-rule{height:3px}body.basic-pathfinder-2e-layout-theme-default .statblock.basic-pathfinder-2e-layout,body.pathfinder-2e-creature-layout-theme-default .statblock.pathfinder-2e-creature-layout,body.pathfinder-2e-action-layout-theme-default .statblock.pathfinder-2e-action-layout,body.pathfinder-2e-hazard-layout-theme-default .statblock.pathfinder-2e-hazard-layout,body.pathfinder-2e-influence-layout-theme-default .statblock.pathfinder-2e-influence-layout,body.pathfinder-2e-item-layout-theme-default .statblock.pathfinder-2e-item-layout,body.pathfinder-2e-misc-layout-theme-default .statblock.pathfinder-2e-misc-layout,body.pathfinder-2e-plane-layout-theme-default .statblock.pathfinder-2e-plane-layout,body.pathfinder-2e-quest-layout-theme-default .statblock.pathfinder-2e-quest-layout,body.pathfinder-2e-settlement-layout-theme-default .statblock.pathfinder-2e-settlement-layout,body.pathfinder-2e-affliction-layout-theme-default .statblock.pathfinder-2e-affliction-layout{--statblock-color-common: rgb(54, 69, 79);--statblock-color-uncommon: rgb(143, 85, 66);--statblock-color-rare: rgb(11, 37, 96);--statblock-color-unique: rgb(77, 27, 106);--statblock-color-alignment: rgb(89, 98, 143);--statblock-color-size: rgb(75, 122, 92);--statblock-color-trait: rgb(86, 12, 6)}body.basic-pathfinder-2e-layout-theme-kingmaker .statblock.basic-pathfinder-2e-layout,body.pathfinder-2e-creature-layout-theme-kingmaker .statblock.pathfinder-2e-creature-layout,body.pathfinder-2e-action-layout-theme-kingmaker .statblock.pathfinder-2e-action-layout,body.pathfinder-2e-hazard-layout-theme-kingmaker .statblock.pathfinder-2e-hazard-layout,body.pathfinder-2e-influence-layout-theme-kingmaker .statblock.pathfinder-2e-influence-layout,body.pathfinder-2e-item-layout-theme-kingmaker .statblock.pathfinder-2e-item-layout,body.pathfinder-2e-misc-layout-theme-kingmaker .statblock.pathfinder-2e-misc-layout,body.pathfinder-2e-plane-layout-theme-kingmaker .statblock.pathfinder-2e-plane-layout,body.pathfinder-2e-quest-layout-theme-kingmaker .statblock.pathfinder-2e-quest-layout,body.pathfinder-2e-settlement-layout-theme-kingmaker .statblock.pathfinder-2e-settlement-layout,body.pathfinder-2e-affliction-layout-theme-kingmaker .statblock.pathfinder-2e-affliction-layout{--statblock-color-common: rgb(54, 69, 79);--statblock-color-uncommon: rgb(143, 85, 66);--statblock-color-rare: rgb(11, 37, 96);--statblock-color-unique: rgb(77, 27, 106);--statblock-color-alignment: rgb(97, 129, 157);--statblock-color-size: rgb(25, 66, 26);--statblock-color-trait: rgb(125, 143, 63)}@font-face{font-family:Pathfinder-Actions;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTaBf/YkAAAkkAAAAHEdERUYAJQAAAAAJDAAAABhPUy8yDzE5wAAAAVgAAABgY21hcIUPLFwAAAHcAAABcGdhc3AAAAAQAAAJBAAAAAhnbHlmv0sljgAAA2AAAAIwaGVhZCgbkG4AAADcAAAANmhoZWEMNQhqAAABFAAAACRobXR4IOUAhwAAAbgAAAAkbG9jYQGoAlQAAANMAAAAFG1heHAADgA/AAABOAAAACBuYW1l5gKtSAAABZAAAAMGcG9zdJP9aoAAAAiYAAAAbAABAAAAARmaJrDlgl8PPPUACwQAAAAAAN/r3gMAAAAA4J1UVAAA/8AIcwPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAigAAAAAAhzAAEAAAAAAAAAAAAAAAAAAAAJAAEAAAAJAD0ABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwVCAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABAAAAIAAAAAAAAAAAAAAAAABAAAArUwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAEEAAAAAAAAAAFVAAAAAAAABFAAKAaAACAEAAACCKAALQQgABAAAAADAAAAAwAAABwAAQAAAAAAagADAAEAAAAcAAQATgAAAAwACAACAAQAASsyKz0rU//9//8AAAAAKzIrOitT//3//wAA1NIAANS1AAAAAQAMAAAADAAAABAAAAABAAMABQAGAAAABwAAAAABBgAAAQMAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIABAAeACgALwA8AEYAAEAAAAAAAAAAAACAAA5AgABAAAAAAAAAAAAAgAAOQIAAgAoACIEMwNlADcAPAAAASYnJicmJyYHBgcGBwYHBgc2NzY3Njc2NzYXFhcWFxYXFgcGBwYHBgcGBwYnFhcWNzY3Njc2NzYBBSc3AQQdFzs8VFNlZWpLQUEzMyQkERUdHSMkKSouVVFRQ0QwMBISEBEsK0RDVRwcGxs/REVFalRUNjYVFPyNAeltOP5MAkdHOTklJQ0ODwsYGCIiKyovGhYXEhINDQcMCwsdHi4uOTo3Ny0uISAMBAECAQ4DAwoPKSg5OEVE/opnldf++wAAAAMAIP/BBmADvwAFAAkADwAACQEHCQEXAQcXNyUBBxcHFwQa/gH2AQj++Pb+vLe3twTS/kDZ6OjZAcAB//f++P749wK2t7e3CAHA2Ojo2QAAAgAC/8AD/gPAAAUACQAACQEHCQEXAQcXNwP+/gD3AQn+9/f+u7e3twHAAgD3/vf+9/cCt7e3twAEAC3/wAhzA8AABQALAA8AFQAACQEHCQEXCQEHFwcXAQcXNyUBBxcHFwQp/gD3AQn+9/cGSv6Yr7u7r/nZt7e3BNz+P9rp6doBwAIA9/73/vf3AgoBaK66u64CFre3twgBwdno6dkAAAMAEP/ABBADwAAEAAkADwAACQU3FwcnASc3JzcBAhT9/AH9AgP+BP64bW1tbQE3cfv1fAFnA8D9+v4GAgMB/f4QbW1tbf6Ecfv2fP6ZAAAAAAASAN4AAQAAAAAAAQAKABYAAQAAAAAAAgAHADEAAQAAAAAAAwAKAE8AAQAAAAAABAAKAHAAAQAAAAAABQALAJMAAQAAAAAABgAKALUAAQAAAAAACgA2AS4AAQAAAAAADQAXAZUAAQAAAAAADgAoAf8AAwABBAkAAQAUAAAAAwABBAkAAgAOACEAAwABBAkAAwAUADkAAwABBAkABAAUAFoAAwABBAkABQAWAHsAAwABBAkABgAUAJ8AAwABBAkACgBsAMAAAwABBAkADQAuAWUAAwABBAkADgBQAa0AUABhAHQAaABmAGkAbgBkAGUAcgAAUGF0aGZpbmRlcgAAUgBlAGcAdQBsAGEAcgAAUmVndWxhcgAAUABhAHQAaABmAGkAbgBkAGUAcgAAUGF0aGZpbmRlcgAAUABhAHQAaABmAGkAbgBkAGUAcgAAUGF0aGZpbmRlcgAAVgBlAHIAcwBpAG8AbgAgADEALgAxAABWZXJzaW9uIDEuMQAAUABhAHQAaABmAGkAbgBkAGUAcgAAUGF0aGZpbmRlcgAAUABhAHQAaABmAGkAbgBkAGUAcgAgADIAZQAgAEEAYwB0AGkAbwBuACAARwBsAHkAcABoAHMACgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAFBhdGhmaW5kZXIgMmUgQWN0aW9uIEdseXBocwpGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgAAUABhAGkAegBvACAAQwBvAG0AbQB1AG4AaQB0AHkAIABMAGkAYwBlAG4AcwBlAABQYWl6byBDb21tdW5pdHkgTGljZW5zZQAAaAB0AHQAcABzADoALwAvAHAAYQBpAHoAbwAuAGMAbwBtAC8AYwBvAG0AbQB1AG4AaQB0AHkALwBjAG8AbQBtAHUAbgBpAHQAeQB1AHMAZQAAaHR0cHM6Ly9wYWl6by5jb20vY29tbXVuaXR5L2NvbW11bml0eXVzZQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAECAAIBAwEEAQUBBgEHAQgHdW5pMDAwMAd1bmkwMDAxB3VuaTJCMzIHdW5pMkIzQQd1bmkyQjNCB3VuaTJCM0QHdW5pMkI1MwABAAH//wAPAAEAAAAMAAAAEAAAAAIAAAAEAAAAAgAAAAAAAQAAAADf1ssxAAAAAN/r3gMAAAAA4J1UVA==) format("truetype");font-weight:400;font-style:normal;font-display:block;unicode-range:U+2B32,U+2B3A,U+2B3B,U+2B3D,U+2B53}[class^=glyph-],[class*=" glyph-"]{font-family:Pathfinder-Actions,serif!important;font-style:400;font-weight:400;font-variant:400;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyph-1action:before{content:"\2b3b"}.glyph-2actions:before{content:"\2b3a"}.glyph-3actions:before{content:"\2b3d"}.glyph-free:before{content:"\2b53"}.glyph-reaction:before{content:"\2b32"}.statblock.basic-pathfinder-2e-layout,.statblock.pathfinder-2e-creature-layout,.statblock.pathfinder-2e-action-layout,.statblock.pathfinder-2e-hazard-layout,.statblock.pathfinder-2e-influence-layout,.statblock.pathfinder-2e-item-layout,.statblock.pathfinder-2e-misc-layout,.statblock.pathfinder-2e-plane-layout,.statblock.pathfinder-2e-quest-layout,.statblock.pathfinder-2e-settlement-layout,.statblock.pathfinder-2e-affliction-layout{--statblock-color-common: rgb(54, 69, 79);--statblock-color-uncommon: rgb(143, 85, 66);--statblock-color-rare: rgb(11, 37, 96);--statblock-color-unique: rgb(77, 27, 106);--statblock-color-alignment: rgb(89, 98, 143);--statblock-color-size: rgb(75, 122, 92);--statblock-color-trait: rgb(86, 12, 6);--statblock-primary-color: rgb(51, 51, 51);--statblock-rule-color: rgb(51, 51, 51);--statblock-background-color: rgb(246, 244, 242);--statblock-bar-color: rgb(51, 51, 51);--statblock-bar-border-size: 1px;--statblock-bar-border-color: rgb(51, 51, 51);--statblock-image-width: 75px;--statblock-image-height: 75px;--statblock-image-border-size: 2px;--statblock-image-border-color: rgb(51, 51, 51);--statblock-header-image-height: 22px;--statblock-header-image-padding: 0 0 2px 0;--statblock-border-size: 1px;--statblock-border-color: rgb(51, 51, 51);--statblock-box-shadow-color: none;--statblock-box-shadow-x-offset: 0;--statblock-box-shadow-y-offset: 0;--statblock-box-shadow-blur: 1.5em;--statblock-font-color: rgb(51, 51, 51);--statblock-font-weight: 400;--statblock-content-font: "Pathfinder-Actions", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--statblock-content-font-size: 13px;--statblock-heading-font: "Pathfinder-Actions", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--statblock-heading-font-color: rgb(51, 51, 51);--statblock-heading-font-size: 1.35em;--statblock-heading-font-variant: small-caps;--statblock-heading-font-weight: 700;--statblock-heading-line-height: 1;--statblock-property-line-height: 1.33em;--statblock-property-font-color: rgb(51, 51, 51);--statblock-property-name-font-color: rgb(51, 51, 51);--statblock-property-name-font-weight: bold;--statblock-section-heading-border-size: 1px;--statblock-section-heading-border-color: transparent;--statblock-section-heading-font-color: rgb(51, 51, 51);--statblock-section-heading-font-size: 1.33em;--statblock-section-heading-font-variant: small-caps;--statblock-section-heading-font-weight: 400;--statblock-saves-line-height: 1.33em;--statblock-spells-font-style: italic;--statblock-table-header-font-weight: bold;--statblock-column-width: 400px;--statblock-traits-gap: 2px}.statblock.basic-pathfinder-2e-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.basic-pathfinder-2e-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.basic-pathfinder-2e-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.basic-pathfinder-2e-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.basic-pathfinder-2e-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.basic-pathfinder-2e-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-creature-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-item-container.statblock-trait-prop .property.attacks>.property-name{font-weight:400;font-style:normal}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-table.abilitymods .statblock-markdown{display:none}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-table.abilitymods .calculated-modifier:before,.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-table.abilitymods .calculated-modifier:after{content:""}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.oneline{display:block}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.oneline *:not(.dice-roller){display:inline}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.oneline>.statblock-inline-item:not(:first-child) .property-name{margin-right:0}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.oneline>.statblock-inline-item:not(:first-child) .property-name:before{content:"; ";font-weight:400}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.withnote *{display:inline}.statblock.pathfinder-2e-creature-layout .statblock-content .inline-container.withnote>.statblock-inline-item:not(:first-child) .property-name{display:none}.statblock.pathfinder-2e-creature-layout .statblock-content .callout{mix-blend-mode:normal}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-creature-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-creature-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-creature-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-action-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-action-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-action-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-action-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-action-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-action-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-action-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-action-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-action-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-action-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-action-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-action-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-action-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-action-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-hazard-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-hazard-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-hazard-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-hazard-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-hazard-layout .statblock-content>.column>.statblock-item-container:has(.effect){margin-left:1em}.statblock.pathfinder-2e-influence-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-influence-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-influence-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-influence-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-influence-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-influence-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-item-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-item-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-item-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-item-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-item-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-item-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-item-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-item-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-item-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-item-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-item-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-item-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-item-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-item-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-misc-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-misc-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-misc-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-misc-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-misc-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-misc-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-plane-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-plane-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-plane-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-plane-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-plane-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-plane-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-quest-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-quest-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-quest-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-quest-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-quest-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-quest-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-settlement-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-settlement-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-settlement-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-settlement-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-settlement-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.pathfinder-2e-affliction-layout .statblock-content{background-color:var(--statblock-background-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;box-shadow:none;color:var(--statblock-property-font-color);display:flex;font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);margin:.5em 2px;padding:.5em;gap:1rem}.statblock.pathfinder-2e-affliction-layout .statblock-content .statblock-detached{position:absolute;top:-9999px}.statblock.pathfinder-2e-affliction-layout .statblock-content .statblock-item-container{margin:0;padding:0}.statblock.pathfinder-2e-affliction-layout .statblock-content .statblock-item-inline{align-content:flex-start;align-items:baseline;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column{width:var(--statblock-column-width)}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>.property-container>.line:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>.property-container>.line>.property-name{margin-left:-1em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property:has(>.property-name){margin-left:1em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column .traits-container>.statblock-trait-prop>.property>.property-name{margin-left:-1em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property){margin-block:.25em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>:is(.statblock-item-container,.statblock-item-inline):has(.line,.property):last-child{margin-bottom:0}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>.statblock-item-container:has(.tapered-rule){margin-block:.25em}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>.statblock-item-inline:has(.name)+.statblock-item-container:has(.tapered-rule){margin-top:0}.statblock.pathfinder-2e-affliction-layout .statblock-content>.column>.statblock-item-inline:has(.rare_01,.rare_02,.rare_03,.rare_04,.alignment,.size,.xp,.kingdom_xp,.trait_01,.trait_02,.trait_03,.trait_04,.trait_05,.trait_06,.trait_07){row-gap:var(--statblock-traits-gap);margin-bottom:.5em}.statblock.basic-pathfinder-2e-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.basic-pathfinder-2e-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-creature-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-creature-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-action-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-action-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-hazard-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-hazard-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-influence-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-influence-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-item-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-item-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-misc-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-misc-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-plane-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-plane-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-quest-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-quest-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-settlement-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-settlement-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.pathfinder-2e-affliction-layout .bar{height:1px;background:#333;border:1px solid rgb(51,51,51);z-index:1;width:fit-content}.statblock.pathfinder-2e-affliction-layout div.tapered-rule{width:auto;margin:0;height:1px;background:#333;clip-path:unset!important;-webkit-clip-path:unset}.statblock.basic-pathfinder-2e-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.basic-pathfinder-2e-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.basic-pathfinder-2e-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.basic-pathfinder-2e-layout h3.section-header{display:none}.statblock.basic-pathfinder-2e-layout h3,.statblock.basic-pathfinder-2e-layout .markdown-rendered h3,.statblock.basic-pathfinder-2e-layout .HyperMD-header-3,.statblock.basic-pathfinder-2e-layout .inline-title[data-level="3"],.statblock.basic-pathfinder-2e-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-creature-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-creature-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-creature-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-creature-layout h3.section-header{display:none}.statblock.pathfinder-2e-creature-layout h3,.statblock.pathfinder-2e-creature-layout .markdown-rendered h3,.statblock.pathfinder-2e-creature-layout .HyperMD-header-3,.statblock.pathfinder-2e-creature-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-creature-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-action-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-action-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-action-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-action-layout h3.section-header{display:none}.statblock.pathfinder-2e-action-layout h3,.statblock.pathfinder-2e-action-layout .markdown-rendered h3,.statblock.pathfinder-2e-action-layout .HyperMD-header-3,.statblock.pathfinder-2e-action-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-action-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-hazard-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-hazard-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-hazard-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-hazard-layout h3.section-header{display:none}.statblock.pathfinder-2e-hazard-layout h3,.statblock.pathfinder-2e-hazard-layout .markdown-rendered h3,.statblock.pathfinder-2e-hazard-layout .HyperMD-header-3,.statblock.pathfinder-2e-hazard-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-hazard-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-influence-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-influence-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-influence-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-influence-layout h3.section-header{display:none}.statblock.pathfinder-2e-influence-layout h3,.statblock.pathfinder-2e-influence-layout .markdown-rendered h3,.statblock.pathfinder-2e-influence-layout .HyperMD-header-3,.statblock.pathfinder-2e-influence-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-influence-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-item-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-item-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-item-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-item-layout h3.section-header{display:none}.statblock.pathfinder-2e-item-layout h3,.statblock.pathfinder-2e-item-layout .markdown-rendered h3,.statblock.pathfinder-2e-item-layout .HyperMD-header-3,.statblock.pathfinder-2e-item-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-item-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-misc-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-misc-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-misc-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-misc-layout h3.section-header{display:none}.statblock.pathfinder-2e-misc-layout h3,.statblock.pathfinder-2e-misc-layout .markdown-rendered h3,.statblock.pathfinder-2e-misc-layout .HyperMD-header-3,.statblock.pathfinder-2e-misc-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-misc-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-plane-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-plane-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-plane-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-plane-layout h3.section-header{display:none}.statblock.pathfinder-2e-plane-layout h3,.statblock.pathfinder-2e-plane-layout .markdown-rendered h3,.statblock.pathfinder-2e-plane-layout .HyperMD-header-3,.statblock.pathfinder-2e-plane-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-plane-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-quest-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-quest-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-quest-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-quest-layout h3.section-header{display:none}.statblock.pathfinder-2e-quest-layout h3,.statblock.pathfinder-2e-quest-layout .markdown-rendered h3,.statblock.pathfinder-2e-quest-layout .HyperMD-header-3,.statblock.pathfinder-2e-quest-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-quest-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-settlement-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-settlement-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-settlement-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-settlement-layout h3.section-header{display:none}.statblock.pathfinder-2e-settlement-layout h3,.statblock.pathfinder-2e-settlement-layout .markdown-rendered h3,.statblock.pathfinder-2e-settlement-layout .HyperMD-header-3,.statblock.pathfinder-2e-settlement-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-settlement-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.pathfinder-2e-affliction-layout .flex-container{align-items:center;display:flex;justify-content:space-between}.statblock.pathfinder-2e-affliction-layout .heading{align-items:center;color:var(--statblock-heading-font-color);display:flex;font-family:var(--statblock-heading-font);font-size:1.35em;font-variant:small-caps;font-weight:700;justify-content:space-between;letter-spacing:1px;line-height:1;margin:0}.statblock.pathfinder-2e-affliction-layout .section-header{border:none;color:var(--statblock-section-heading-font-color);font-size:var(--statblock-section-heading-font-size);font-variant:var(--statblock-section-heading-font-variant);font-weight:var(--statblock-section-heading-font-weight);letter-spacing:1px;margin-bottom:.3em}.statblock.pathfinder-2e-affliction-layout h3.section-header{display:none}.statblock.pathfinder-2e-affliction-layout h3,.statblock.pathfinder-2e-affliction-layout .markdown-rendered h3,.statblock.pathfinder-2e-affliction-layout .HyperMD-header-3,.statblock.pathfinder-2e-affliction-layout .inline-title[data-level="3"],.statblock.pathfinder-2e-affliction-layout .HyperMD-list-line .cm-header-3{font-variant:petite-caps;letter-spacing:1px;line-height:1;font-size:1.25em;color:var(--statblock-section-heading-font-color)}.statblock.basic-pathfinder-2e-layout a,.statblock.basic-pathfinder-2e-layout a:-webkit-any-link,.statblock.basic-pathfinder-2e-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.basic-pathfinder-2e-layout b,.statblock.basic-pathfinder-2e-layout strong,.statblock.basic-pathfinder-2e-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.basic-pathfinder-2e-layout i,.statblock.basic-pathfinder-2e-layout em,.statblock.basic-pathfinder-2e-layout .cm-em{font-style:italic}:not(.property-name) .statblock.basic-pathfinder-2e-layout i,:not(.property-name) .statblock.basic-pathfinder-2e-layout em,:not(.property-name) .statblock.basic-pathfinder-2e-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.basic-pathfinder-2e-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.basic-pathfinder-2e-layout .markdown-rendered ul,.statblock.basic-pathfinder-2e-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.basic-pathfinder-2e-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.basic-pathfinder-2e-layout .markdown-source-view ol>li,.statblock.basic-pathfinder-2e-layout .markdown-source-view ul>li,.statblock.basic-pathfinder-2e-layout .markdown-preview-view ol>li,.statblock.basic-pathfinder-2e-layout .markdown-preview-view ul>li,.statblock.basic-pathfinder-2e-layout .markdown-rendered ul>li,.statblock.basic-pathfinder-2e-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.basic-pathfinder-2e-layout ol>li::marker,.statblock.basic-pathfinder-2e-layout ul>li::marker,.statblock.basic-pathfinder-2e-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.basic-pathfinder-2e-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-creature-layout a,.statblock.pathfinder-2e-creature-layout a:-webkit-any-link,.statblock.pathfinder-2e-creature-layout a.internal-link{color:#3d668e;text-decoration:underline}.statblock.pathfinder-2e-creature-layout b,.statblock.pathfinder-2e-creature-layout strong,.statblock.pathfinder-2e-creature-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-creature-layout i,.statblock.pathfinder-2e-creature-layout em,.statblock.pathfinder-2e-creature-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-creature-layout i,:not(.property-name) .statblock.pathfinder-2e-creature-layout em,:not(.property-name) .statblock.pathfinder-2e-creature-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-creature-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-creature-layout .markdown-rendered ul,.statblock.pathfinder-2e-creature-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-creature-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-creature-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-creature-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-creature-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-creature-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-creature-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-creature-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-creature-layout ol>li::marker,.statblock.pathfinder-2e-creature-layout ul>li::marker,.statblock.pathfinder-2e-creature-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-creature-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-action-layout a,.statblock.pathfinder-2e-action-layout a:-webkit-any-link,.statblock.pathfinder-2e-action-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-action-layout b,.statblock.pathfinder-2e-action-layout strong,.statblock.pathfinder-2e-action-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-action-layout i,.statblock.pathfinder-2e-action-layout em,.statblock.pathfinder-2e-action-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-action-layout i,:not(.property-name) .statblock.pathfinder-2e-action-layout em,:not(.property-name) .statblock.pathfinder-2e-action-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-action-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-action-layout .markdown-rendered ul,.statblock.pathfinder-2e-action-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-action-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-action-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-action-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-action-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-action-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-action-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-action-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-action-layout ol>li::marker,.statblock.pathfinder-2e-action-layout ul>li::marker,.statblock.pathfinder-2e-action-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-action-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-hazard-layout a,.statblock.pathfinder-2e-hazard-layout a:-webkit-any-link,.statblock.pathfinder-2e-hazard-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-hazard-layout b,.statblock.pathfinder-2e-hazard-layout strong,.statblock.pathfinder-2e-hazard-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-hazard-layout i,.statblock.pathfinder-2e-hazard-layout em,.statblock.pathfinder-2e-hazard-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-hazard-layout i,:not(.property-name) .statblock.pathfinder-2e-hazard-layout em,:not(.property-name) .statblock.pathfinder-2e-hazard-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-hazard-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-hazard-layout .markdown-rendered ul,.statblock.pathfinder-2e-hazard-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-hazard-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-hazard-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-hazard-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-hazard-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-hazard-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-hazard-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-hazard-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-hazard-layout ol>li::marker,.statblock.pathfinder-2e-hazard-layout ul>li::marker,.statblock.pathfinder-2e-hazard-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-hazard-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-influence-layout a,.statblock.pathfinder-2e-influence-layout a:-webkit-any-link,.statblock.pathfinder-2e-influence-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-influence-layout b,.statblock.pathfinder-2e-influence-layout strong,.statblock.pathfinder-2e-influence-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-influence-layout i,.statblock.pathfinder-2e-influence-layout em,.statblock.pathfinder-2e-influence-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-influence-layout i,:not(.property-name) .statblock.pathfinder-2e-influence-layout em,:not(.property-name) .statblock.pathfinder-2e-influence-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-influence-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-influence-layout .markdown-rendered ul,.statblock.pathfinder-2e-influence-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-influence-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-influence-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-influence-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-influence-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-influence-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-influence-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-influence-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-influence-layout ol>li::marker,.statblock.pathfinder-2e-influence-layout ul>li::marker,.statblock.pathfinder-2e-influence-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-influence-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-item-layout a,.statblock.pathfinder-2e-item-layout a:-webkit-any-link,.statblock.pathfinder-2e-item-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-item-layout b,.statblock.pathfinder-2e-item-layout strong,.statblock.pathfinder-2e-item-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-item-layout i,.statblock.pathfinder-2e-item-layout em,.statblock.pathfinder-2e-item-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-item-layout i,:not(.property-name) .statblock.pathfinder-2e-item-layout em,:not(.property-name) .statblock.pathfinder-2e-item-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-item-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-item-layout .markdown-rendered ul,.statblock.pathfinder-2e-item-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-item-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-item-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-item-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-item-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-item-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-item-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-item-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-item-layout ol>li::marker,.statblock.pathfinder-2e-item-layout ul>li::marker,.statblock.pathfinder-2e-item-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-item-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-misc-layout a,.statblock.pathfinder-2e-misc-layout a:-webkit-any-link,.statblock.pathfinder-2e-misc-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-misc-layout b,.statblock.pathfinder-2e-misc-layout strong,.statblock.pathfinder-2e-misc-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-misc-layout i,.statblock.pathfinder-2e-misc-layout em,.statblock.pathfinder-2e-misc-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-misc-layout i,:not(.property-name) .statblock.pathfinder-2e-misc-layout em,:not(.property-name) .statblock.pathfinder-2e-misc-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-misc-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-misc-layout .markdown-rendered ul,.statblock.pathfinder-2e-misc-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-misc-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-misc-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-misc-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-misc-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-misc-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-misc-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-misc-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-misc-layout ol>li::marker,.statblock.pathfinder-2e-misc-layout ul>li::marker,.statblock.pathfinder-2e-misc-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-misc-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-plane-layout a,.statblock.pathfinder-2e-plane-layout a:-webkit-any-link,.statblock.pathfinder-2e-plane-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-plane-layout b,.statblock.pathfinder-2e-plane-layout strong,.statblock.pathfinder-2e-plane-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-plane-layout i,.statblock.pathfinder-2e-plane-layout em,.statblock.pathfinder-2e-plane-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-plane-layout i,:not(.property-name) .statblock.pathfinder-2e-plane-layout em,:not(.property-name) .statblock.pathfinder-2e-plane-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-plane-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-plane-layout .markdown-rendered ul,.statblock.pathfinder-2e-plane-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-plane-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-plane-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-plane-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-plane-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-plane-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-plane-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-plane-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-plane-layout ol>li::marker,.statblock.pathfinder-2e-plane-layout ul>li::marker,.statblock.pathfinder-2e-plane-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-plane-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-quest-layout a,.statblock.pathfinder-2e-quest-layout a:-webkit-any-link,.statblock.pathfinder-2e-quest-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-quest-layout b,.statblock.pathfinder-2e-quest-layout strong,.statblock.pathfinder-2e-quest-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-quest-layout i,.statblock.pathfinder-2e-quest-layout em,.statblock.pathfinder-2e-quest-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-quest-layout i,:not(.property-name) .statblock.pathfinder-2e-quest-layout em,:not(.property-name) .statblock.pathfinder-2e-quest-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-quest-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-quest-layout .markdown-rendered ul,.statblock.pathfinder-2e-quest-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-quest-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-quest-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-quest-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-quest-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-quest-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-quest-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-quest-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-quest-layout ol>li::marker,.statblock.pathfinder-2e-quest-layout ul>li::marker,.statblock.pathfinder-2e-quest-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-quest-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-settlement-layout a,.statblock.pathfinder-2e-settlement-layout a:-webkit-any-link,.statblock.pathfinder-2e-settlement-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-settlement-layout b,.statblock.pathfinder-2e-settlement-layout strong,.statblock.pathfinder-2e-settlement-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-settlement-layout i,.statblock.pathfinder-2e-settlement-layout em,.statblock.pathfinder-2e-settlement-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-settlement-layout i,:not(.property-name) .statblock.pathfinder-2e-settlement-layout em,:not(.property-name) .statblock.pathfinder-2e-settlement-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-settlement-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-settlement-layout .markdown-rendered ul,.statblock.pathfinder-2e-settlement-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-settlement-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-settlement-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-settlement-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-settlement-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-settlement-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-settlement-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-settlement-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-settlement-layout ol>li::marker,.statblock.pathfinder-2e-settlement-layout ul>li::marker,.statblock.pathfinder-2e-settlement-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-settlement-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.pathfinder-2e-affliction-layout a,.statblock.pathfinder-2e-affliction-layout a:-webkit-any-link,.statblock.pathfinder-2e-affliction-layout a.internal-link{color:#3d668e;font-weight:var(--statblock-property-name-font-weight);text-decoration:none}.statblock.pathfinder-2e-affliction-layout b,.statblock.pathfinder-2e-affliction-layout strong,.statblock.pathfinder-2e-affliction-layout .cm-strong{font-weight:var(--statblock-property-name-font-weight);color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-affliction-layout i,.statblock.pathfinder-2e-affliction-layout em,.statblock.pathfinder-2e-affliction-layout .cm-em{font-style:italic}:not(.property-name) .statblock.pathfinder-2e-affliction-layout i,:not(.property-name) .statblock.pathfinder-2e-affliction-layout em,:not(.property-name) .statblock.pathfinder-2e-affliction-layout .cm-em{color:#4d1b69;font-weight:500}.statblock.pathfinder-2e-affliction-layout ul{display:block;list-style-type:disc;margin:0 .5em;padding-inline-start:40px}.statblock.pathfinder-2e-affliction-layout .markdown-rendered ul,.statblock.pathfinder-2e-affliction-layout .markdown-rendered ol{padding-inline-start:2em}.statblock.pathfinder-2e-affliction-layout li{color:var(--statblock-content-font);display:list-item;text-align:-webkit-match-parent}.statblock.pathfinder-2e-affliction-layout .markdown-source-view ol>li,.statblock.pathfinder-2e-affliction-layout .markdown-source-view ul>li,.statblock.pathfinder-2e-affliction-layout .markdown-preview-view ol>li,.statblock.pathfinder-2e-affliction-layout .markdown-preview-view ul>li,.statblock.pathfinder-2e-affliction-layout .markdown-rendered ul>li,.statblock.pathfinder-2e-affliction-layout .mod-cm6 .HyperMD-list-line.cm-line{padding-top:0;padding-bottom:0}.statblock.pathfinder-2e-affliction-layout ol>li::marker,.statblock.pathfinder-2e-affliction-layout ul>li::marker,.statblock.pathfinder-2e-affliction-layout .cm-s-obsidian .cm-formatting-list{color:var(--statblock-property-name-font-color)}.statblock.pathfinder-2e-affliction-layout ::marker{unicode-bidi:isolate;font-variant-numeric:tabular-nums;text-transform:none;text-indent:0;text-align:start;text-align-last:start}.statblock.basic-pathfinder-2e-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.basic-pathfinder-2e-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.basic-pathfinder-2e-layout .statblock-markdown,.statblock.basic-pathfinder-2e-layout .property{line-height:var(--statblock-property-line-height)}.statblock.basic-pathfinder-2e-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-creature-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-creature-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-creature-layout .statblock-markdown,.statblock.pathfinder-2e-creature-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-creature-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-action-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-action-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-action-layout .statblock-markdown,.statblock.pathfinder-2e-action-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-action-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-hazard-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-hazard-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-hazard-layout .statblock-markdown,.statblock.pathfinder-2e-hazard-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-hazard-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-influence-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-influence-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-influence-layout .statblock-markdown,.statblock.pathfinder-2e-influence-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-influence-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-item-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-item-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-item-layout .statblock-markdown,.statblock.pathfinder-2e-item-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-item-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-misc-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-misc-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-misc-layout .statblock-markdown,.statblock.pathfinder-2e-misc-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-misc-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-plane-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-plane-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-plane-layout .statblock-markdown,.statblock.pathfinder-2e-plane-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-plane-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-quest-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-quest-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-quest-layout .statblock-markdown,.statblock.pathfinder-2e-quest-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-quest-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-settlement-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-settlement-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-settlement-layout .statblock-markdown,.statblock.pathfinder-2e-settlement-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-settlement-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-affliction-layout .line{line-height:var(--statblock-property-line-height);display:block;color:var(--statblock-property-font-color)}.statblock.pathfinder-2e-affliction-layout .statblock-rendered-text-content{color:var(--statblock-property-name-font-color);font-weight:var(--statblock-property-name-font-weight);font-style:normal}.statblock.pathfinder-2e-affliction-layout .statblock-markdown,.statblock.pathfinder-2e-affliction-layout .property{line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-affliction-layout .property-name strong>em{color:var(--active-traits-name-font-color);font-weight:var(--statblock-traits-name-font-weight)}.statblock.pathfinder-2e-creature-layout .property-name,.statblock.pathfinder-2e-creature-layout .property-name:empty{margin-right:0}.statblock.pathfinder-2e-creature-layout .saves-container .saves.line .save-name,.statblock.pathfinder-2e-creature-layout .saves-container .attributes.line .save-name{text-transform:capitalize;font-weight:var(--statblock-property-name-font-weight)}.statblock.pathfinder-2e-creature-layout .saves-container .save-entry.save-note-entry .save-name{display:none}.statblock.pathfinder-2e-creature-layout .saves-container .save-entry:has(+.save-entry.save-note-entry) .save-value:after{content:"; "}.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.basic-pathfinder-2e-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-creature-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-action-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-hazard-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-influence-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-item-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-misc-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-plane-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-quest-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-settlement-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name){display:flex;flex-direction:row;margin-inline:.25em;gap:.25em;align-items:center}.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container:has(.name){flex:1}.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name p,.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level p{align-self:flex-start;font-size:1.3em;font-weight:900;line-height:1.5em;text-transform:uppercase}.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .name span.property-name,.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .statblock-inline-item.property-container .level span.property-name{display:none}.statblock.pathfinder-2e-affliction-layout .statblock-item-inline:has(.statblock-inline-item .name) .pathfinder-2e-quest-icon{display:block;height:var(--statblock-header-image-height);width:unset;max-width:unset;padding:var(--statblock-header-image-padding)}.statblock.basic-pathfinder-2e-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.basic-pathfinder-2e-layout .image-container{text-align:center}.statblock.basic-pathfinder-2e-layout .token>a{display:inline}.statblock.basic-pathfinder-2e-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.basic-pathfinder-2e-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.basic-pathfinder-2e-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.basic-pathfinder-2e-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-creature-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-creature-layout .image-container{text-align:center}.statblock.pathfinder-2e-creature-layout .token>a{display:inline}.statblock.pathfinder-2e-creature-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-creature-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-creature-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-creature-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-action-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-action-layout .image-container{text-align:center}.statblock.pathfinder-2e-action-layout .token>a{display:inline}.statblock.pathfinder-2e-action-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-action-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-action-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-action-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-hazard-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-hazard-layout .image-container{text-align:center}.statblock.pathfinder-2e-hazard-layout .token>a{display:inline}.statblock.pathfinder-2e-hazard-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-hazard-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-hazard-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-hazard-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-influence-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-influence-layout .image-container{text-align:center}.statblock.pathfinder-2e-influence-layout .token>a{display:inline}.statblock.pathfinder-2e-influence-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-influence-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-influence-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-influence-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-item-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-item-layout .image-container{text-align:center}.statblock.pathfinder-2e-item-layout .token>a{display:inline}.statblock.pathfinder-2e-item-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-item-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-item-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-item-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-misc-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-misc-layout .image-container{text-align:center}.statblock.pathfinder-2e-misc-layout .token>a{display:inline}.statblock.pathfinder-2e-misc-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-misc-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-misc-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-misc-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-plane-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-plane-layout .image-container{text-align:center}.statblock.pathfinder-2e-plane-layout .token>a{display:inline}.statblock.pathfinder-2e-plane-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-plane-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-plane-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-plane-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-quest-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-quest-layout .image-container{text-align:center}.statblock.pathfinder-2e-quest-layout .token>a{display:inline}.statblock.pathfinder-2e-quest-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-quest-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-quest-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-quest-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-settlement-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-settlement-layout .image-container{text-align:center}.statblock.pathfinder-2e-settlement-layout .token>a{display:inline}.statblock.pathfinder-2e-settlement-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-settlement-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-settlement-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-settlement-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.pathfinder-2e-affliction-layout img{display:inline;position:relative;border:none;transform:rotateY(180deg)}.statblock.pathfinder-2e-affliction-layout .image-container{text-align:center}.statblock.pathfinder-2e-affliction-layout .token>a{display:inline}.statblock.pathfinder-2e-affliction-layout .image{width:var(--statblock-image-width);height:var(--statblock-image-height);display:inline;max-height:fit-content;max-width:fit-content;transform:rotateY(180deg)}.statblock.pathfinder-2e-affliction-layout .statblock-inline-item .image{width:fit-content;height:fit-content}.statblock.pathfinder-2e-affliction-layout .statblock-inline-item .image img{border:none;display:inline;position:relative;align-self:center;object-fit:contain;transform:rotateY(180deg)}.statblock.pathfinder-2e-affliction-layout .statblock-inline-item .image .pointer{cursor:pointer}.statblock.basic-pathfinder-2e-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.basic-pathfinder-2e-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.basic-pathfinder-2e-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.basic-pathfinder-2e-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.basic-pathfinder-2e-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.basic-pathfinder-2e-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.basic-pathfinder-2e-layout .size{background-color:var(--statblock-color-size)!important}.statblock.basic-pathfinder-2e-layout .xp,.statblock.basic-pathfinder-2e-layout .kingdom_xp,.statblock.basic-pathfinder-2e-layout .trait_01,.statblock.basic-pathfinder-2e-layout .trait_02,.statblock.basic-pathfinder-2e-layout .trait_03,.statblock.basic-pathfinder-2e-layout .trait_04,.statblock.basic-pathfinder-2e-layout .trait_05,.statblock.basic-pathfinder-2e-layout .trait_06,.statblock.basic-pathfinder-2e-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.basic-pathfinder-2e-layout .rare_01,.statblock.basic-pathfinder-2e-layout .rare_02,.statblock.basic-pathfinder-2e-layout .rare_03,.statblock.basic-pathfinder-2e-layout .rare_04,.statblock.basic-pathfinder-2e-layout .alignment,.statblock.basic-pathfinder-2e-layout .size,.statblock.basic-pathfinder-2e-layout .xp,.statblock.basic-pathfinder-2e-layout .kingdom_xp,.statblock.basic-pathfinder-2e-layout .trait_01,.statblock.basic-pathfinder-2e-layout .trait_02,.statblock.basic-pathfinder-2e-layout .trait_03,.statblock.basic-pathfinder-2e-layout .trait_04,.statblock.basic-pathfinder-2e-layout .trait_05,.statblock.basic-pathfinder-2e-layout .trait_06,.statblock.basic-pathfinder-2e-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.basic-pathfinder-2e-layout .rare_01 span.property-name,.statblock.basic-pathfinder-2e-layout .rare_02 span.property-name,.statblock.basic-pathfinder-2e-layout .rare_03 span.property-name,.statblock.basic-pathfinder-2e-layout .rare_04 span.property-name,.statblock.basic-pathfinder-2e-layout .alignment span.property-name,.statblock.basic-pathfinder-2e-layout .size span.property-name,.statblock.basic-pathfinder-2e-layout .xp span.property-name,.statblock.basic-pathfinder-2e-layout .kingdom_xp span.property-name,.statblock.basic-pathfinder-2e-layout .trait_01 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_02 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_03 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_04 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_05 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_06 span.property-name,.statblock.basic-pathfinder-2e-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-creature-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container{margin:0}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container>.line:has(.property-name){margin:0;display:block}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container .property-name{display:none}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container ul{row-gap:var(--statblock-traits-gap);display:flex;flex-flow:row wrap;place-content:start;justify-content:flex-start;padding:0;margin:0;list-style:none}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li{display:block;background-color:var(--statblock-color-trait);margin:0 var(--statblock-traits-gap) 0 0;color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;text-align:center;text-transform:uppercase;padding:0}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li:not(:has(>.alignment,>.rarity,>.size)),.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>span:is(.alignment,.rarity,.size){padding:.4em 1.1em .2em;line-height:var(--statblock-property-line-height)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>span:is(.alignment,.rarity,.size){width:100%;height:100%;display:block}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li:before{display:none}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li strong,.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li i,.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li em,.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li b{color:#fff}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li a,.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li a:-webkit-any-link,.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li a.internal-link{color:#fff;text-decoration:none;text-transform:uppercase;font-style:normal}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.common{background-color:var(--statblock-color-common)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.uncommon{background-color:var(--statblock-color-uncommon)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.rare{background-color:var(--statblock-color-rare)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.unique{background-color:var(--statblock-color-unique)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.alignment{background-color:var(--statblock-color-alignment)}.statblock.pathfinder-2e-creature-layout .pf2e-traits.statblock-item-container.property-container li>.size{background-color:var(--statblock-color-size)}.statblock.pathfinder-2e-action-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-action-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-action-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-action-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-action-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-action-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-action-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-action-layout .xp,.statblock.pathfinder-2e-action-layout .kingdom_xp,.statblock.pathfinder-2e-action-layout .trait_01,.statblock.pathfinder-2e-action-layout .trait_02,.statblock.pathfinder-2e-action-layout .trait_03,.statblock.pathfinder-2e-action-layout .trait_04,.statblock.pathfinder-2e-action-layout .trait_05,.statblock.pathfinder-2e-action-layout .trait_06,.statblock.pathfinder-2e-action-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-action-layout .rare_01,.statblock.pathfinder-2e-action-layout .rare_02,.statblock.pathfinder-2e-action-layout .rare_03,.statblock.pathfinder-2e-action-layout .rare_04,.statblock.pathfinder-2e-action-layout .alignment,.statblock.pathfinder-2e-action-layout .size,.statblock.pathfinder-2e-action-layout .xp,.statblock.pathfinder-2e-action-layout .kingdom_xp,.statblock.pathfinder-2e-action-layout .trait_01,.statblock.pathfinder-2e-action-layout .trait_02,.statblock.pathfinder-2e-action-layout .trait_03,.statblock.pathfinder-2e-action-layout .trait_04,.statblock.pathfinder-2e-action-layout .trait_05,.statblock.pathfinder-2e-action-layout .trait_06,.statblock.pathfinder-2e-action-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-action-layout .rare_01 span.property-name,.statblock.pathfinder-2e-action-layout .rare_02 span.property-name,.statblock.pathfinder-2e-action-layout .rare_03 span.property-name,.statblock.pathfinder-2e-action-layout .rare_04 span.property-name,.statblock.pathfinder-2e-action-layout .alignment span.property-name,.statblock.pathfinder-2e-action-layout .size span.property-name,.statblock.pathfinder-2e-action-layout .xp span.property-name,.statblock.pathfinder-2e-action-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-action-layout .trait_01 span.property-name,.statblock.pathfinder-2e-action-layout .trait_02 span.property-name,.statblock.pathfinder-2e-action-layout .trait_03 span.property-name,.statblock.pathfinder-2e-action-layout .trait_04 span.property-name,.statblock.pathfinder-2e-action-layout .trait_05 span.property-name,.statblock.pathfinder-2e-action-layout .trait_06 span.property-name,.statblock.pathfinder-2e-action-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-hazard-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-hazard-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-hazard-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-hazard-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-hazard-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-hazard-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-hazard-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-hazard-layout .xp,.statblock.pathfinder-2e-hazard-layout .kingdom_xp,.statblock.pathfinder-2e-hazard-layout .trait_01,.statblock.pathfinder-2e-hazard-layout .trait_02,.statblock.pathfinder-2e-hazard-layout .trait_03,.statblock.pathfinder-2e-hazard-layout .trait_04,.statblock.pathfinder-2e-hazard-layout .trait_05,.statblock.pathfinder-2e-hazard-layout .trait_06,.statblock.pathfinder-2e-hazard-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-hazard-layout .rare_01,.statblock.pathfinder-2e-hazard-layout .rare_02,.statblock.pathfinder-2e-hazard-layout .rare_03,.statblock.pathfinder-2e-hazard-layout .rare_04,.statblock.pathfinder-2e-hazard-layout .alignment,.statblock.pathfinder-2e-hazard-layout .size,.statblock.pathfinder-2e-hazard-layout .xp,.statblock.pathfinder-2e-hazard-layout .kingdom_xp,.statblock.pathfinder-2e-hazard-layout .trait_01,.statblock.pathfinder-2e-hazard-layout .trait_02,.statblock.pathfinder-2e-hazard-layout .trait_03,.statblock.pathfinder-2e-hazard-layout .trait_04,.statblock.pathfinder-2e-hazard-layout .trait_05,.statblock.pathfinder-2e-hazard-layout .trait_06,.statblock.pathfinder-2e-hazard-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-hazard-layout .rare_01 span.property-name,.statblock.pathfinder-2e-hazard-layout .rare_02 span.property-name,.statblock.pathfinder-2e-hazard-layout .rare_03 span.property-name,.statblock.pathfinder-2e-hazard-layout .rare_04 span.property-name,.statblock.pathfinder-2e-hazard-layout .alignment span.property-name,.statblock.pathfinder-2e-hazard-layout .size span.property-name,.statblock.pathfinder-2e-hazard-layout .xp span.property-name,.statblock.pathfinder-2e-hazard-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_01 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_02 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_03 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_04 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_05 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_06 span.property-name,.statblock.pathfinder-2e-hazard-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-influence-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-influence-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-influence-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-influence-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-influence-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-influence-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-influence-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-influence-layout .xp,.statblock.pathfinder-2e-influence-layout .kingdom_xp,.statblock.pathfinder-2e-influence-layout .trait_01,.statblock.pathfinder-2e-influence-layout .trait_02,.statblock.pathfinder-2e-influence-layout .trait_03,.statblock.pathfinder-2e-influence-layout .trait_04,.statblock.pathfinder-2e-influence-layout .trait_05,.statblock.pathfinder-2e-influence-layout .trait_06,.statblock.pathfinder-2e-influence-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-influence-layout .rare_01,.statblock.pathfinder-2e-influence-layout .rare_02,.statblock.pathfinder-2e-influence-layout .rare_03,.statblock.pathfinder-2e-influence-layout .rare_04,.statblock.pathfinder-2e-influence-layout .alignment,.statblock.pathfinder-2e-influence-layout .size,.statblock.pathfinder-2e-influence-layout .xp,.statblock.pathfinder-2e-influence-layout .kingdom_xp,.statblock.pathfinder-2e-influence-layout .trait_01,.statblock.pathfinder-2e-influence-layout .trait_02,.statblock.pathfinder-2e-influence-layout .trait_03,.statblock.pathfinder-2e-influence-layout .trait_04,.statblock.pathfinder-2e-influence-layout .trait_05,.statblock.pathfinder-2e-influence-layout .trait_06,.statblock.pathfinder-2e-influence-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-influence-layout .rare_01 span.property-name,.statblock.pathfinder-2e-influence-layout .rare_02 span.property-name,.statblock.pathfinder-2e-influence-layout .rare_03 span.property-name,.statblock.pathfinder-2e-influence-layout .rare_04 span.property-name,.statblock.pathfinder-2e-influence-layout .alignment span.property-name,.statblock.pathfinder-2e-influence-layout .size span.property-name,.statblock.pathfinder-2e-influence-layout .xp span.property-name,.statblock.pathfinder-2e-influence-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-influence-layout .trait_01 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_02 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_03 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_04 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_05 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_06 span.property-name,.statblock.pathfinder-2e-influence-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-item-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-item-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-item-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-item-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-item-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-item-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-item-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-item-layout .xp,.statblock.pathfinder-2e-item-layout .kingdom_xp,.statblock.pathfinder-2e-item-layout .trait_01,.statblock.pathfinder-2e-item-layout .trait_02,.statblock.pathfinder-2e-item-layout .trait_03,.statblock.pathfinder-2e-item-layout .trait_04,.statblock.pathfinder-2e-item-layout .trait_05,.statblock.pathfinder-2e-item-layout .trait_06,.statblock.pathfinder-2e-item-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-item-layout .rare_01,.statblock.pathfinder-2e-item-layout .rare_02,.statblock.pathfinder-2e-item-layout .rare_03,.statblock.pathfinder-2e-item-layout .rare_04,.statblock.pathfinder-2e-item-layout .alignment,.statblock.pathfinder-2e-item-layout .size,.statblock.pathfinder-2e-item-layout .xp,.statblock.pathfinder-2e-item-layout .kingdom_xp,.statblock.pathfinder-2e-item-layout .trait_01,.statblock.pathfinder-2e-item-layout .trait_02,.statblock.pathfinder-2e-item-layout .trait_03,.statblock.pathfinder-2e-item-layout .trait_04,.statblock.pathfinder-2e-item-layout .trait_05,.statblock.pathfinder-2e-item-layout .trait_06,.statblock.pathfinder-2e-item-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-item-layout .rare_01 span.property-name,.statblock.pathfinder-2e-item-layout .rare_02 span.property-name,.statblock.pathfinder-2e-item-layout .rare_03 span.property-name,.statblock.pathfinder-2e-item-layout .rare_04 span.property-name,.statblock.pathfinder-2e-item-layout .alignment span.property-name,.statblock.pathfinder-2e-item-layout .size span.property-name,.statblock.pathfinder-2e-item-layout .xp span.property-name,.statblock.pathfinder-2e-item-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-item-layout .trait_01 span.property-name,.statblock.pathfinder-2e-item-layout .trait_02 span.property-name,.statblock.pathfinder-2e-item-layout .trait_03 span.property-name,.statblock.pathfinder-2e-item-layout .trait_04 span.property-name,.statblock.pathfinder-2e-item-layout .trait_05 span.property-name,.statblock.pathfinder-2e-item-layout .trait_06 span.property-name,.statblock.pathfinder-2e-item-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-misc-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-misc-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-misc-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-misc-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-misc-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-misc-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-misc-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-misc-layout .xp,.statblock.pathfinder-2e-misc-layout .kingdom_xp,.statblock.pathfinder-2e-misc-layout .trait_01,.statblock.pathfinder-2e-misc-layout .trait_02,.statblock.pathfinder-2e-misc-layout .trait_03,.statblock.pathfinder-2e-misc-layout .trait_04,.statblock.pathfinder-2e-misc-layout .trait_05,.statblock.pathfinder-2e-misc-layout .trait_06,.statblock.pathfinder-2e-misc-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-misc-layout .rare_01,.statblock.pathfinder-2e-misc-layout .rare_02,.statblock.pathfinder-2e-misc-layout .rare_03,.statblock.pathfinder-2e-misc-layout .rare_04,.statblock.pathfinder-2e-misc-layout .alignment,.statblock.pathfinder-2e-misc-layout .size,.statblock.pathfinder-2e-misc-layout .xp,.statblock.pathfinder-2e-misc-layout .kingdom_xp,.statblock.pathfinder-2e-misc-layout .trait_01,.statblock.pathfinder-2e-misc-layout .trait_02,.statblock.pathfinder-2e-misc-layout .trait_03,.statblock.pathfinder-2e-misc-layout .trait_04,.statblock.pathfinder-2e-misc-layout .trait_05,.statblock.pathfinder-2e-misc-layout .trait_06,.statblock.pathfinder-2e-misc-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-misc-layout .rare_01 span.property-name,.statblock.pathfinder-2e-misc-layout .rare_02 span.property-name,.statblock.pathfinder-2e-misc-layout .rare_03 span.property-name,.statblock.pathfinder-2e-misc-layout .rare_04 span.property-name,.statblock.pathfinder-2e-misc-layout .alignment span.property-name,.statblock.pathfinder-2e-misc-layout .size span.property-name,.statblock.pathfinder-2e-misc-layout .xp span.property-name,.statblock.pathfinder-2e-misc-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-misc-layout .trait_01 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_02 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_03 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_04 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_05 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_06 span.property-name,.statblock.pathfinder-2e-misc-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-plane-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-plane-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-plane-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-plane-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-plane-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-plane-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-plane-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-plane-layout .xp,.statblock.pathfinder-2e-plane-layout .kingdom_xp,.statblock.pathfinder-2e-plane-layout .trait_01,.statblock.pathfinder-2e-plane-layout .trait_02,.statblock.pathfinder-2e-plane-layout .trait_03,.statblock.pathfinder-2e-plane-layout .trait_04,.statblock.pathfinder-2e-plane-layout .trait_05,.statblock.pathfinder-2e-plane-layout .trait_06,.statblock.pathfinder-2e-plane-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-plane-layout .rare_01,.statblock.pathfinder-2e-plane-layout .rare_02,.statblock.pathfinder-2e-plane-layout .rare_03,.statblock.pathfinder-2e-plane-layout .rare_04,.statblock.pathfinder-2e-plane-layout .alignment,.statblock.pathfinder-2e-plane-layout .size,.statblock.pathfinder-2e-plane-layout .xp,.statblock.pathfinder-2e-plane-layout .kingdom_xp,.statblock.pathfinder-2e-plane-layout .trait_01,.statblock.pathfinder-2e-plane-layout .trait_02,.statblock.pathfinder-2e-plane-layout .trait_03,.statblock.pathfinder-2e-plane-layout .trait_04,.statblock.pathfinder-2e-plane-layout .trait_05,.statblock.pathfinder-2e-plane-layout .trait_06,.statblock.pathfinder-2e-plane-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-plane-layout .rare_01 span.property-name,.statblock.pathfinder-2e-plane-layout .rare_02 span.property-name,.statblock.pathfinder-2e-plane-layout .rare_03 span.property-name,.statblock.pathfinder-2e-plane-layout .rare_04 span.property-name,.statblock.pathfinder-2e-plane-layout .alignment span.property-name,.statblock.pathfinder-2e-plane-layout .size span.property-name,.statblock.pathfinder-2e-plane-layout .xp span.property-name,.statblock.pathfinder-2e-plane-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-plane-layout .trait_01 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_02 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_03 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_04 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_05 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_06 span.property-name,.statblock.pathfinder-2e-plane-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-quest-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-quest-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-quest-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-quest-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-quest-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-quest-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-quest-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-quest-layout .xp,.statblock.pathfinder-2e-quest-layout .kingdom_xp,.statblock.pathfinder-2e-quest-layout .trait_01,.statblock.pathfinder-2e-quest-layout .trait_02,.statblock.pathfinder-2e-quest-layout .trait_03,.statblock.pathfinder-2e-quest-layout .trait_04,.statblock.pathfinder-2e-quest-layout .trait_05,.statblock.pathfinder-2e-quest-layout .trait_06,.statblock.pathfinder-2e-quest-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-quest-layout .rare_01,.statblock.pathfinder-2e-quest-layout .rare_02,.statblock.pathfinder-2e-quest-layout .rare_03,.statblock.pathfinder-2e-quest-layout .rare_04,.statblock.pathfinder-2e-quest-layout .alignment,.statblock.pathfinder-2e-quest-layout .size,.statblock.pathfinder-2e-quest-layout .xp,.statblock.pathfinder-2e-quest-layout .kingdom_xp,.statblock.pathfinder-2e-quest-layout .trait_01,.statblock.pathfinder-2e-quest-layout .trait_02,.statblock.pathfinder-2e-quest-layout .trait_03,.statblock.pathfinder-2e-quest-layout .trait_04,.statblock.pathfinder-2e-quest-layout .trait_05,.statblock.pathfinder-2e-quest-layout .trait_06,.statblock.pathfinder-2e-quest-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-quest-layout .rare_01 span.property-name,.statblock.pathfinder-2e-quest-layout .rare_02 span.property-name,.statblock.pathfinder-2e-quest-layout .rare_03 span.property-name,.statblock.pathfinder-2e-quest-layout .rare_04 span.property-name,.statblock.pathfinder-2e-quest-layout .alignment span.property-name,.statblock.pathfinder-2e-quest-layout .size span.property-name,.statblock.pathfinder-2e-quest-layout .xp span.property-name,.statblock.pathfinder-2e-quest-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-quest-layout .trait_01 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_02 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_03 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_04 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_05 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_06 span.property-name,.statblock.pathfinder-2e-quest-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-settlement-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-settlement-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-settlement-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-settlement-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-settlement-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-settlement-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-settlement-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-settlement-layout .xp,.statblock.pathfinder-2e-settlement-layout .kingdom_xp,.statblock.pathfinder-2e-settlement-layout .trait_01,.statblock.pathfinder-2e-settlement-layout .trait_02,.statblock.pathfinder-2e-settlement-layout .trait_03,.statblock.pathfinder-2e-settlement-layout .trait_04,.statblock.pathfinder-2e-settlement-layout .trait_05,.statblock.pathfinder-2e-settlement-layout .trait_06,.statblock.pathfinder-2e-settlement-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-settlement-layout .rare_01,.statblock.pathfinder-2e-settlement-layout .rare_02,.statblock.pathfinder-2e-settlement-layout .rare_03,.statblock.pathfinder-2e-settlement-layout .rare_04,.statblock.pathfinder-2e-settlement-layout .alignment,.statblock.pathfinder-2e-settlement-layout .size,.statblock.pathfinder-2e-settlement-layout .xp,.statblock.pathfinder-2e-settlement-layout .kingdom_xp,.statblock.pathfinder-2e-settlement-layout .trait_01,.statblock.pathfinder-2e-settlement-layout .trait_02,.statblock.pathfinder-2e-settlement-layout .trait_03,.statblock.pathfinder-2e-settlement-layout .trait_04,.statblock.pathfinder-2e-settlement-layout .trait_05,.statblock.pathfinder-2e-settlement-layout .trait_06,.statblock.pathfinder-2e-settlement-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-settlement-layout .rare_01 span.property-name,.statblock.pathfinder-2e-settlement-layout .rare_02 span.property-name,.statblock.pathfinder-2e-settlement-layout .rare_03 span.property-name,.statblock.pathfinder-2e-settlement-layout .rare_04 span.property-name,.statblock.pathfinder-2e-settlement-layout .alignment span.property-name,.statblock.pathfinder-2e-settlement-layout .size span.property-name,.statblock.pathfinder-2e-settlement-layout .xp span.property-name,.statblock.pathfinder-2e-settlement-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_01 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_02 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_03 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_04 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_05 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_06 span.property-name,.statblock.pathfinder-2e-settlement-layout .trait_07 span.property-name{display:none}.statblock.pathfinder-2e-affliction-layout .traits{margin:0 .25em 0 0;display:inline;font-weight:900!important;font-style:normal!important}.statblock.pathfinder-2e-affliction-layout .rare_01{background-color:var(--statblock-color-common)!important}.statblock.pathfinder-2e-affliction-layout .rare_02{background-color:var(--statblock-color-uncommon)!important}.statblock.pathfinder-2e-affliction-layout .rare_03{background-color:var(--statblock-color-rare)!important}.statblock.pathfinder-2e-affliction-layout .rare_04{background-color:var(--statblock-color-unique)!important}.statblock.pathfinder-2e-affliction-layout .alignment{background-color:var(--statblock-color-alignment)!important}.statblock.pathfinder-2e-affliction-layout .size{background-color:var(--statblock-color-size)!important}.statblock.pathfinder-2e-affliction-layout .xp,.statblock.pathfinder-2e-affliction-layout .kingdom_xp,.statblock.pathfinder-2e-affliction-layout .trait_01,.statblock.pathfinder-2e-affliction-layout .trait_02,.statblock.pathfinder-2e-affliction-layout .trait_03,.statblock.pathfinder-2e-affliction-layout .trait_04,.statblock.pathfinder-2e-affliction-layout .trait_05,.statblock.pathfinder-2e-affliction-layout .trait_06,.statblock.pathfinder-2e-affliction-layout .trait_07{background-color:var(--statblock-color-trait)!important}.statblock.pathfinder-2e-affliction-layout .rare_01,.statblock.pathfinder-2e-affliction-layout .rare_02,.statblock.pathfinder-2e-affliction-layout .rare_03,.statblock.pathfinder-2e-affliction-layout .rare_04,.statblock.pathfinder-2e-affliction-layout .alignment,.statblock.pathfinder-2e-affliction-layout .size,.statblock.pathfinder-2e-affliction-layout .xp,.statblock.pathfinder-2e-affliction-layout .kingdom_xp,.statblock.pathfinder-2e-affliction-layout .trait_01,.statblock.pathfinder-2e-affliction-layout .trait_02,.statblock.pathfinder-2e-affliction-layout .trait_03,.statblock.pathfinder-2e-affliction-layout .trait_04,.statblock.pathfinder-2e-affliction-layout .trait_05,.statblock.pathfinder-2e-affliction-layout .trait_06,.statblock.pathfinder-2e-affliction-layout .trait_07{color:#fff!important;font-size:12px;font-style:normal!important;font-weight:900!important;letter-spacing:.01em;min-width:4em;margin:0 var(--statblock-traits-gap) 0 0;padding:.4em 1.1em .2em;text-align:center;text-transform:uppercase}.statblock.pathfinder-2e-affliction-layout .rare_01 span.property-name,.statblock.pathfinder-2e-affliction-layout .rare_02 span.property-name,.statblock.pathfinder-2e-affliction-layout .rare_03 span.property-name,.statblock.pathfinder-2e-affliction-layout .rare_04 span.property-name,.statblock.pathfinder-2e-affliction-layout .alignment span.property-name,.statblock.pathfinder-2e-affliction-layout .size span.property-name,.statblock.pathfinder-2e-affliction-layout .xp span.property-name,.statblock.pathfinder-2e-affliction-layout .kingdom_xp span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_01 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_02 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_03 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_04 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_05 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_06 span.property-name,.statblock.pathfinder-2e-affliction-layout .trait_07 span.property-name{display:none}.statblock.basic-pathfinder-2e-layout .dice-roller-result,.statblock.basic-pathfinder-2e-layout .roller-result,.statblock.pathfinder-2e-creature-layout .dice-roller-result,.statblock.pathfinder-2e-creature-layout .roller-result,.statblock.pathfinder-2e-action-layout .dice-roller-result,.statblock.pathfinder-2e-action-layout .roller-result,.statblock.pathfinder-2e-hazard-layout .dice-roller-result,.statblock.pathfinder-2e-hazard-layout .roller-result,.statblock.pathfinder-2e-influence-layout .dice-roller-result,.statblock.pathfinder-2e-influence-layout .roller-result,.statblock.pathfinder-2e-item-layout .dice-roller-result,.statblock.pathfinder-2e-item-layout .roller-result,.statblock.pathfinder-2e-misc-layout .dice-roller-result,.statblock.pathfinder-2e-misc-layout .roller-result,.statblock.pathfinder-2e-plane-layout .dice-roller-result,.statblock.pathfinder-2e-plane-layout .roller-result,.statblock.pathfinder-2e-quest-layout .dice-roller-result,.statblock.pathfinder-2e-quest-layout .roller-result,.statblock.pathfinder-2e-settlement-layout .dice-roller-result,.statblock.pathfinder-2e-settlement-layout .roller-result,.statblock.pathfinder-2e-affliction-layout .dice-roller-result,.statblock.pathfinder-2e-affliction-layout .roller-result{font-weight:var(--statblock-font-weight)}@media screen and (max-width: 400px){.statblock.basic-pathfinder-2e-layout .statblock-content>:global(.column){width:75vw}}.statblock.basic-pathfinder-2e-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.basic-pathfinder-2e-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.basic-pathfinder-2e-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.basic-pathfinder-2e-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-creature-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-creature-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-creature-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-creature-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-creature-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-action-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-action-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-action-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-action-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-action-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-hazard-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-hazard-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-hazard-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-hazard-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-hazard-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-influence-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-influence-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-influence-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-influence-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-influence-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-item-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-item-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-item-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-item-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-item-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-misc-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-misc-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-misc-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-misc-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-misc-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-plane-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-plane-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-plane-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-plane-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-plane-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-quest-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-quest-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-quest-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-quest-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-quest-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-settlement-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-settlement-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-settlement-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-settlement-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-settlement-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}@media screen and (max-width: 400px){.statblock.pathfinder-2e-affliction-layout .statblock-content>:global(.column){width:75vw}}.statblock.pathfinder-2e-affliction-layout .spell-line .spells{font-style:var(--statblock-spells-font-style)}.statblock.pathfinder-2e-affliction-layout .statblock-table-header{font-weight:var(--statblock-table-header-font-weight)}.statblock.pathfinder-2e-affliction-layout .table{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.statblock.pathfinder-2e-affliction-layout .table-item{display:flex;justify-content:center;align-items:center;flex-flow:column nowrap}.statblock.basic-13th-age-monster-layout{--statblock-primary-color: #000;--statblock-rule-color: #000;--statblock-background-color:#fefaf0;--statblock-image-border-color: var(--statblock-primary-color);--statblock-box-shadow-blur: 1em;--statblock-font-color: var(--statblock-primary-color);--statblock-content-font: serif;--statblock-heading-font:masonregular, serif;--statblock-heading-font-color: var(--statblock-font-color);--statblock-heading-font-weight: var(--statblock-font-weight);--statblock-heading-color: #2C2E35;--statblock-property-font-color: var(--statblock-font-color);--statblock-property-name-font-color: var(--statblock-font-color);--statblock-section-heading-border-color: var(--statblock-primary-color);--statblock-section-heading-font-color: var(--statblock-font-color);text-align:justify}.statblock.basic-13th-age-monster-layout .bar{display:none}.statblock.basic-13th-age-monster-layout h1,.statblock.basic-13th-age-monster-layout h2{text-align:left;font-family:var(--statblock-heading-font);font-weight:400;color:var(--statblock-heading-font-color);font-size:2em;margin:0}.statblock.basic-13th-age-monster-layout .rule-container{margin:0}.statblock.basic-13th-age-monster-layout .rule-container .tapered-rule{background:none;margin:0;height:.75em}.statblock.basic-13th-age-monster-layout *:has(+.rule-container){margin-bottom:0!important}.statblock.basic-13th-age-monster-layout *:has(+.rule-container) *{margin-bottom:0!important}.statblock.basic-13th-age-monster-layout .property-text{text-align:left}.statblock.basic-13th-age-monster-layout .statblock-item-container:has(.actions){margin-bottom:.5em}.statblock.basic-13th-age-monster-layout .heading-container{display:flex;align-items:center;justify-content:flex-start}.statblock.basic-13th-age-monster-layout .flavor-text{font-style:italic}.statblock.basic-13th-age-monster-layout p.monster-strength{font-style:italic;margin:0}.statblock.basic-13th-age-monster-layout p.monster-strength:first-letter{text-transform:capitalize}.statblock.basic-13th-age-monster-layout p.monster-strength .type{margin-left:1ch;font-style:normal;font-variant:var(--statblock-section-heading-font-variant);text-transform:capitalize}.statblock.basic-13th-age-monster-layout .initiative .statblock-markdown p:before{content:"+"}.statblock.basic-13th-age-monster-layout .initiative .property-name,.statblock.basic-13th-age-monster-layout .vulnerability .property-name{font-weight:400}.statblock.basic-13th-age-monster-layout .statblock-item-container .property{padding-left:2ch}.statblock.basic-13th-age-monster-layout .statblock-item-container .property .property-name{margin-left:-2ch}.statblock.basic-13th-age-monster-layout .statblock-item-container .property .statblock-nested-traits{margin-left:0}.statblock.basic-13th-age-monster-layout .statblock-item-container .actions .property-name,.statblock.basic-13th-age-monster-layout .statblock-item-container .triggered_actions .property-name{font-style:initial;font-weight:bolder}.statblock.basic-13th-age-monster-layout .statblock-item-container .actions .property-name:after,.statblock.basic-13th-age-monster-layout .statblock-item-container .triggered_actions .property-name:after{margin-left:1ch;content:"\2014"}.statblock.basic-13th-age-monster-layout .statblock-item-container .traits .property-name,.statblock.basic-13th-age-monster-layout .statblock-item-container .nastier_traits .property-name{font-style:italic;font-weight:400}.statblock.basic-13th-age-monster-layout .statblock-item-container .traits .property-name:after,.statblock.basic-13th-age-monster-layout .statblock-item-container .nastier_traits .property-name:after{content:":";margin:0}.statblock.basic-13th-age-monster-layout .statblock-item-container .statblock-nested-traits .property-name,.statblock.basic-13th-age-monster-layout .statblock-item-container .mook .property-name{font-style:italic;font-weight:400}.statblock.basic-13th-age-monster-layout .statblock-item-container .statblock-nested-traits .property-name:after,.statblock.basic-13th-age-monster-layout .statblock-item-container .mook .property-name:after{content:":";margin:0}.statblock.basic-13th-age-monster-layout .statblock-item-container .statblock-nested-traits .property-name,.statblock.basic-13th-age-monster-layout .statblock-item-container .mook .property-name{text-transform:capitalize}.statblock.basic-13th-age-monster-layout .section-header.nastier-specials,.statblock.basic-13th-age-monster-layout .section-header.triggered-abilities{text-decoration:underline;font-size:initial;letter-spacing:initial;border-bottom:none}.statblock.basic-13th-age-monster-layout .monster-description p{display:inline-block;margin:0}.statblock.basic-13th-age-monster-layout .monster-description p+p{text-indent:2em}.statblock.basic-13th-age-monster-layout .defense-block{display:grid;margin:0 15%;padding-left:.5em;background:linear-gradient(to right,#eae8d5,75%,var(--statblock-background-color));box-shadow:0 0 0 .1em var(--statblock-background-color)}.statblock.basic-13th-age-monster-layout .defense-block .ac-block,.statblock.basic-13th-age-monster-layout .defense-block .pd-block,.statblock.basic-13th-age-monster-layout .defense-block .md-block{grid-column:1}.statblock.basic-13th-age-monster-layout .defense-block .hp-block{grid-column:2;grid-row:2;columns:2}.statblock.basic-13th-age-monster-layout .defense-block .hp-block,.statblock.basic-13th-age-monster-layout .defense-block .ac-block{font-weight:bolder}.statblock.basic-13th-age-monster-layout .defense-block .defense-line{display:inline-flex}.statblock.basic-13th-age-monster-layout .defense-block .defense-line *{margin-left:.5em}.statblock[class*=bnb] .line.weapon{display:block;padding-top:1rem}.statblock[class*=bnb] .line.special{font-size:.9375rem;margin-top:.3125rem;margin-bottom:.3125rem;padding-top:.3125rem;padding-bottom:.3125rem}.statblock[class*=bnb] .line.type{font-style:italic}.statblock[class*=bnb].statblock-detached{position:absolute;top:-9999px;width:auto}.statblock[class*=bnb] .statblock-content{font-family:var(--statblock-content-font);font-size:var(--statblock-content-font-size);display:flex;margin-right:2px;margin-left:2px;padding:.5em;color:var(--statblock-font-color);border:var(--statblock-border-size) var(--statblock-border-color) solid;background-color:var(--statblock-background-color);box-shadow:var(--statblock-box-shadow-x-offset) var(--statblock-box-shadow-y-offset) var(--statblock-box-shadow-blur) var(--statblock-box-shadow-color);gap:1rem}.statblock[class*=bnb] .statblock-content>.column{width:var(--statblock-column-width)}@media screen and (max-width: 400px){.statblock[class*=bnb] .statblock-content>.column{width:75vw}}.statblock[class*=bnb] .statblock-item-container{margin-bottom:.25rem}.statblock[class*=bnb] .statblock-item-inline{display:flex;justify-content:space-between}.statblock[class*=bnb]{--statblock-bar-border-color: rgba(98, 97, 108, 1);--statblock-bar-border-size: .0625em;--statblock-bar-color: rgba(98, 97, 108, 1)}.statblock[class*=bnb] .bar{z-index:1;width:fit-content;height:.0625em;border:var(--statblock-bar-border-size) solid var(--statblock-bar-border-color);background:var(--statblock-bar-color)}.statblock[class*=bnb] .tapered-rule{width:auto;height:.1875em;margin:0;background:var(--statblock-bar-color);clip-path:unset}.statblock[class*=bnb] .statblock-item-container.image-container.smallies img{position:relative;top:-10px;left:-10px;overflow:visible;width:2rem;height:2rem;border:2px solid #fff;border-radius:50%;object-fit:cover;object-position:center}.statblock[class*=bnb] .statblock-item-container.image-container.Image IMG{width:calc(100% + 1em);max-width:unset;margin:-.5em;border:unset;border-radius:unset;object-fit:cover;object-position:center;image-rendering:auto}.statblock[class*=bnb] .flex-container{display:flex;align-items:center;justify-content:space-between}.statblock[class*=bnb] .heading{font-family:var(--statblock-heading-font);font-size:var(--statblock-heading-font-size);font-weight:300;font-style:italic;font-variant:var(--statblock-heading-font-variant);line-height:var(--statblock-heading-line-height);display:flex;align-items:center;justify-content:space-between;margin:0;letter-spacing:.0714rem;color:var(--statblock-heading-font-color)}.statblock[class*=bnb] .section-header{font-family:var(--statblock-section-heading-font-family);font-size:var(--statblock-section-heading-font-size);font-weight:var(--statblock-section-heading-font-weight);font-variant:var(--statblock-section-heading-font-variant);right:.625em;display:inline-block;overflow-x:visible;width:11.25em;margin:0 0 .3em;padding:.125em;letter-spacing:.0625em;color:var(--statblock-section-heading-font-color);border-left-width:1.875em;border-top-right-radius:.9375em .5em;border-bottom-right-radius:.9375em .5em;background-color:#e0e1dd4d;break-inside:avoid-column;break-after:avoid-column}.statblock[class*=bnb] .subheading{font-size:var(--statblock-subheading-font-size);font-weight:var(--statblock-subheading-font-weight);font-style:var(--statblock-subheading-font-style);margin:0}.statblock[class*=bnb] .property-name{font-family:var(--statblock-property-name-font-family)}.statblock[class*=bnb] .section-header{font-size:var(--statblock-section-heading-font-size);font-weight:var(--statblock-section-heading-font-weight);font-variant:var(--statblock-section-heading-font-variant);margin:0 0 .3em;letter-spacing:1px;color:var(--statblock-section-heading-font-color);border-bottom:var(--statblock-section-heading-border-size) solid var(--statblock-section-heading-border-color);break-inside:avoid-column;break-after:avoid-column}.statblock[class*=bnb] h3.section-header{font-family:Din-Rundschrift-Eng,BnBFont,sans-serif;font-size:var(--statblock-section-heading-font-size);font-weight:var(--statblock-section-heading-font-weight);font-variant:var(--statblock-section-heading-font-variant);right:.625em;display:inline-block;overflow-x:visible;width:11.25em;margin:0 0 .3em;padding:.125em;letter-spacing:.0625em;color:var(--statblock-section-heading-font-color);border-left-width:1.875em;border-top-right-radius:.9375em .5em;border-bottom-right-radius:.9375em .5em;background-color:#e0e1dd4d;break-inside:avoid-column;break-after:avoid-column}.statblock[class*=bnb] .statblock-content{padding-right:1rem;padding-left:1rem}.statblock[class*=bnb] .line.badassrank{box-sizing:border-box;width:4.6875rem;height:4.6875rem;content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAACqCAYAAACUAhwWAAAAy3pUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBBEsMgCLzzij5BAYk+xzRmpj/o87sqaZNM12FF0BWg9n7t9OhgNtK0ZCtmAdCihSucHCbq4Bh08EDePRevcarVE4yQYBd/YH7/iMevwNwqvHQSyk9PrNdEUdfPNyH/SHpFDGdzoeJCwjMRXeCo1Epezi2sLVyRp1En23U0Yi5yP+uC6W0J/whzkygBLKKzAOkmJBVOGsy42FfFuYCBMTsYyvs3cPnF6dzGAfoAJuxflZ/Bo4QAAAF1aUNDUGtDR0NvbG9yU3BhY2VEaXNwbGF5UDMAAHicdZC9S8NQFMVPq1LQOogOHRwyiUPU0gp2cWgrFEUwVAWrU5p+CW18JClScRNXKfgfWMFZcLCIVHBxcBBEBxHdnDopuGh43pdU2iLex+X9OJxzuVzAG1AZK/YCKOmWkUzEpLXUuuR7g4eeU6pmsqiiLAr+/bvr89H13k+IWU27dhDZT1yXzi6Xdp4CU3/9XdWfyZoa/d/UQY0ZFuCRiZVtiwneJR4xaCniquC8y8eC0y6fO56VZJz4lljSCmqGuEkspzv0fAeXimWttYPY3p/VV5fFHOpRzGETJhiKUFGBBAXhf/zTjj+OLXJXYFAujwIsykRJEROyxPPQoWESMnEIQeqQuHPrfg+t+8ltbe8VmG1wzi/a2kIDOJ2hk9Xb2ngEGBoAbupMNVRH6qH25nLA+wkwmAKG7yizYebCIXd7fwzoe+H8YwzwHQJ2lfOvI87tGoWfgSv9BxcparxKWKXuAAAOXGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjAxMDQyNTFkLWNmOGQtNDI0YS04NTg5LTg0YTBlMGQzOWZmNiIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyZDc2Y2FkNi0yNmYzLTQ0MGItYjIzNS1mY2Q5YWIyZWNhNDUiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiNzE5YTA1Ny1lYjE0LTQ3NWItOGQzZi0wMDUyZGUwOTU4YjAiCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09Ik1hYyBPUyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2ODMwMDcxNzM1MjE0NDQiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zNCIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIxMTI1IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMTQzMiIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPSIyIgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI0NTgiCiAgIHRpZmY6WVJlc29sdXRpb249IjQ1OCIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjM6MDU6MDJUMDA6NTk6MzMtMDU6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzOjA1OjAyVDAwOjU5OjMzLTA1OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzQ2ZmIzODgtN2NlNS00ODJlLWJhM2EtMjYyNGUxMTJhZDg0IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKE1hYyBPUykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDUtMDJUMDA6NTk6MzMtMDU6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+GY2MvAAAAAZiS0dEANsAmAA5q2OUdwAAAAlwSFlzAABGbwAARm8Bom5tcgAAAAd0SU1FB+cFAgU7IdNs++wAACAASURBVHja7b33dxtHti28u6sD0AAIMIlJIhUs2QqW08xc35l133v3/uX33feNZ8Yez4xkKwdSgZlERscK3w/VVWiAIAmSIEXKqrW0KIIIja5TJ+6zjxHHscCn9WkdY1m/9RvAOQcAUJrIG2LZBz7fNM1PUvNbER7OOShNwBgDAP1zvxXH8YF/Z4wCAAjpvXWEEP3TsuzfhJAZH5vZiuMos9HDCcxprN+CMFkXWaNEUagFI6ERLEJAP4CgZJdtuT0CmxVmQiwQQuC6uY9CmC6U5gkCv0eLEEL071Hs9/km5IMJj9I6Xc1H95i57HfI571PwnNaZogxhjCSwuE4LjijH1zD7K8R2YGCO+jvnHe/y+TEzCfhGYWWyap8LliPWVI3XG2ERQhMYvW85uKZYgYvX9IayXHcT8JzEtOU0GjfU2sRgoTK6EgIkQrTh3XjrNRk7acZ+w9Av/BntaoSpvNq1s6N8ERRpG/YfsIzaAnBevwccYFix6yg9WvSfh9K+VHnSRt9UOHp+K2RmRklRIZBzsX7nOZyHBcFr/TBr+ODxYth5F9o/+RDaivOKILA19nx34zmUT6NCq1Nk5yL/MxF0TzKT1L5JAAoFj+MFjI/hOAooflQuZiPYXVzSRTtduuDaPEz0Twq7CbEghD0wGjkIvgc5ymaMw1VBrHOPOF46sKjtI0qKPJMdDQowvgkPMObLwBwHW+gVjoLITo14clGUufJp/lYhEb5imr1h/sWISgUyzAN8+IIDxccQdAZaIP7heiTUB3fbO0nMJSxHtNW8EqnlhsaqVjGcYRGo7qv80YZQ5LEe5JjnMsvzBgFpYn+e7bmwxjt+f24K0li5POe/kz1U0cyBkHO9XpOOmO0Z9M+5KKM6X/9gYe6n+rvnDO02nV0/NbpCPIo32wY3EyhIMNKnsRwbAdIT4tJLLgOYKbVZ57EuuQgT46rBfQka2ysgiSO9Hv3nCSzWw0fZB4Oqo6fl5W9XpoKfxxHyOcKI4eBjMxstdtSug8rJ+gTzQDPkyfc9324rhSOKIpgWbIoSAhBq12HEAKGYexxro+r9qM4gmEYyOU8BEFHC4TjuBC863SqfFS2/nQRzGx/RKZyQxYhKJXGz5fZCgJfn8yhowTXTaMwBtft1m9c1wWlTP9NhaGO7YwkLxSlmsuxHfDM9aoTSjLmiZCuSRiFyTwrhzpr1rIHLk5ivVfnQvO02y0QQkBpNNSpzLneQPOmBM9xXMRxpJ08Zaa4YIdiZYY9ldkT6dhO743uSxFwwfQ1XQSz1S/ogzL4o9JA5kk1jlLvWS//ML8oq6EkbsXpSXSRFJejBMdxXDiOO/KMdFar5PMerPSz83mvR0iywnwRTFb/feo/1KPSQNZJNI5M6tGulz+UU03hOC7a7RZ2d3fRarVgGEZPUnBsbAylUgH5fB6EWGCMQQjac4KOm0yM0kx3v1+QxBHWN9bRbvnax5qenkalMoYojsAZuRBap/9g7Pc3xhiCwD9RMvFYd0NpBMZoF+EHDGVWCLFg2w4ajQYePHiAV69egTEG07QghIBpmrAsC65rY2ZmBjdv3sSVK1dQKBZ6nNvjLiU4SuBNk6BQKKHZrGNlZQX/+PlfSJIEpVIJ33//PYqlgnbWL8KKk/hQGKxjOyCE6H08rgAdeSdq9Z2BuQcl0UojOLbX96X89OT7MiIzXOxW23j/vioFEQyccxgIYds2KLOx8m4Lr9/s4JtvQty7cwP5fB6cy5vj5UqI4wimaUsn1xCI4whB3JJmBy58v4N83oVJLIR+G6ZpwjRcWMSFbQkwxpCwCGHow3XyqO7W8XZ1B5RSlMc68MMo/T4CjEUQnIMymW4Ig6gnWiyXK+h0WgjjCJXyOCiNEQQdmKaRHjQOy7KRJDFs20HBKyEIfFAmUxYszSdxTlNH3QbnDMR0eg5MGHXgOm6P8Pf4b0MKmNqzMPLBBTsWPujM8TyO7WRyKbzn/67rwrLkjaKUwvd9vHv3Dj/++CPevXu3RwOocF69h9RqdmoaHVQq46CMIQx9WJaNXM6D47qwHVunBShNtJ8lzaBxoKYZG6uAMwrLIj0RYacjzfj05CU0mnVwRlEsjunvWClPwCIEY2OVjL9o9Rw+Qiz9/fdvLrR6fBuV5HRsB3ESD2XOsqkHZUm44KereUbhZMVpctA0TZ20IoRgamoK169fx3i5iDAM8fb9NtbW1hAEAVZXV/H8+XNMTU1haqoIIRiitJuCCaYTfjKkzyGMQr05nFP9vE7QRsEro9NpgVIGyyIQjEqH2LZgmhYMuIAwAWFDcEtrUCEoGI/TQi+FSSwYQgqtSQDKIuTzBTSaVdiWzCXFSQzLksJcb1RhGAYsywVNGBxHBgoJjcA5g5JXw7BgW93QOor9Hs1EiIEojmCaFnI5D1EUIYojePkxFB0PftAaKtrMBjecM3TaDeRyHmzbHb3wZKOfEztzxIJhGBBCmg7DMFAul3Hnzh0sXp4DYwyr61X8+c9/xvLyMiilWF1dRbVaTYVHgDLZW24QU78XpQliKs2CY8vw2jAMfdJMs2vnVW5JxExGfLZzKDJPnXTDMPQmiIzpiONIm49+beHY8vm+78NxnDSijHvMvXTUoZOY6n2kRhEa0mIYBjjnqVm0kM8X4HmexoEfVt5QwU1/nSwM/dMRnla7PpJQWW0g51w7yEIICCFg2zZyrg3DcHDz+jVsrL7H27dvQSlFs1WHH7QhhAAhBIYlbyDnUuvYtpveXMC2HRCTQAgDPGYQohudjZUqiONYJyUZZ+lPQMBKAfSG1mZ2uoGUAWAMruPBcaSJcExLJxIpjRGGe6GhQsiTrX4Wi5U0EUoRBIEGuCc00ikKQqwepKDrZH0eCkIcramISRAEHfgd/0iIwmx0nN3Xo6QlzKOYq1EWB6VGMNObb+rNUqfKMAxMTEygXC6nPkUHURTpv8vwXWjzFycx/KADAGg062CMw/PyuviZzTN1b1SMMD2tJHMNg+pePFOY7Wa+pXmqN2qp6XNgWTZsxwVjVBdUTZNkkp4xfN/XAqwc7iiW5id7rVm0oPKBDMOQjY+cgdIENNXcwx5sdT2Dnk/T8H1kmkdtlGmOrq5jZQRGCYHeMCOBSQDOY1AWwCYChkjAOYdpmjAMM43KZJTlBwnW19fx/r00a0kSolQqYW7uMubn5zE7O4nyWAnNdj01ARRv3rzF27dvsbW1BQCYn5/Htau3YBEXMBIYJgVgwjA4ktQJNQwLnMUQwsDTpy/w9t0aarUakiSB53m4snAZS0tLKJYcCA4UvDFZm2u14LouWs0O1tbWsPLmHZrNJhgTGB8fx+LiZVy+fBmzM7OoNeowicxpEeKhXq9hbX0XKysrqNekL1MZH8PS0hIWr8zCcfLgIoJhAIZJEYQNGIZ94lTGsNrnUOHx/c7Ii4K0T2CyzrM6+YQQdDoddDry83O5nP6baZqAMFCtVvH8xTJ+/fVXbGxsIkkSUBrBcRwUCk9x7do1fPvdl7hx/Ya+/mfPnuPnn3/GixcvQKn0H16+fIntrTq2t7d7NGN/6YRzjv/3//4/PH36FOsb21oTEkLw/OkzLC4u4vd/uI+5uTmUyxUEgSz47uxs48mTZ3j48CF2dmsIwxCGIet4z5+P4/79+7hz9wtcmr6ETqcN27axubmBx48f49dHL7C1tYUklmbecS28evUK9+7ewp07d1CueBBCaG19nDxQdm8JIQgCfyhmD+swJzkLHx2FAFGaIOfmejZI+QmSS4fBsizs7FSxsbEFvxOCM+mrePkiGBWwbQtxwvDy5Wv89S9/x+bmJqiQmolTBs4TtFu7aLdCAAJefgxzc9NIkgTPnr3E8+ev0Gh1YFkWGKfohBHCh7/IvE+SwLKs1J/i0r+J5SF69OgR/vzDD/B9H34nSTUhQcgihEGMeqMFAYr//M//xNhYBbmcB8Y4Hj9+jj//8Dc0m01EUSzzWDQGpQydTge+HyKfz6ewCQJKBZ4+e4Uf/vIT6rVOen8s7SRH4TqazQa8Qhlf5JdQqUyg02mCc4HDPIv9zJVWFkELju0gisJDk4fWYXUolVfglI1E8yjByWoZ5dMsLy+jWV9Dq9XC+/e7eP/+PaJIapLFxUXMzc3pPMjOzg6ePn2Kra0tmZuB1ABerog4jmGaQBAEePnyJZaWllCuFNBsNtFsNuH7frrxBhxHpg1830eSJCDElKYoJ2lQ4jgGYxSbm5t48OBBKgARTMOF4zgwDAJKKRhLEEURVlZWsLy8jEuXpuA4Dl68eInnz5/r1+XzHsrlMoQQaDQaiKIQ1WoVjx8/xvz8PBYWpvDixQs8fvw4/TtDLpfDxMQ0KKVotRqI4xi1Wg3Pnj3D9HQRpVJZmxlK2Ugsg2Gw45stznmawR19+jybjFPaZ2dnBz/99BNcIjcjigXCMEQ+X8Ldu3fx7bdfoVwehxAUnHO8ebOMra0NUBbANE1cu34NX375JTy3gGfPnuHVyzfodDqo1erY3t5BlAg02yHqzTYoB2xiouB5uHPnNq5fv46d7RoePHiAja0aiGnDNFwIbsG2XSQJx85OFbVaA5TKDPD161dx9+5duK6LlZUVPH36FPV6HbvVOrZ3qmg0fRQKwPZOFdVaA4xxuG4OX93/Bl999RUopfjLX/6CFy+fgjGGra0tbG9vozI2jtpugHq9BUoFPM/D119/jS/v34UQAj/88Ge8fv0aQRBgY2MN7dZdcAYQ4qbohpOhBlU6IqEROj4OzDxbB/k6lMpk1iiXEpass2zbNhKeoNlsauGB4UAIgWKxiKWlJSwsLPREIbZtY2pqCnmviFwuh3tf3cfdu3eRdzyYpomtzSp834cQQLPZRBAEPf6UEAwzMzO4e/curl+/jnqthc3NTWztNLQPIYSA6zr6MI2Pj8PNecjn87h//2vcu3cPliXD9dXVVXQ6HQgh0Ol00G63MT01gWaziU6ngyRJUKlUcOPGDVy7dk1npycmy2i328jnXRQKBTiOrPu1Wi1wzlEoFHD16lVcu3YNQgiEYYBKpSJLKq6rEQmO44yEAc0iBDHvElMdhEDcV3hk/YmBjhgDpTZPOcmGYSBJEpi2ifHxcYBSUErR8aVP0Wi18OjJE0xOeVhaWoJhCiQ0wmefXcfCwhzi1EeqVCrIuzYgBKamJlEsFrG2tgbDlOFxEARSKNNrMACZCqgUYBKOsXIBlfESTNPU2oUQglqtAdd1cO3aNczOzkJApheK5QpATICYmJieQrlcxurqqowAfV9/Fue8m1NKeYbCyEc+n8fVa4uYmi5LYQZDoVAAYMAwZHHYMAwwniChEWKWwLZtfPbZdczMTENAllUKeQ+cy5xRoVAAgtFCVXy/s2/+yBr2TUaFpekP0ZU2mp2dxXfffYeFmRlZnni3gV9//RXrm9tYWVnBWImgVCphaqoEy7IwNjaGsbExiExrSRzHSOIIlFJ9WrKRiPonhICA6In4CCE6HaBqa0IIeF4etm1hYWEBtm2j4wfSryAEQRAiDENEUbQn4SlzTwmmp6dRLBbRaEh/6+9//zt838eNGzdw6dIlTE5Ops8N4TgOeCI1nOd5aLfb6HQ6+Pnnn9EOOrh69SoWZmfw2Y1raLYbsIgFYhLYtiNzVmE4cljHQehQ6yDIRfZNRhWqq3KEusEq6ee6Li5duoSFxSlYloUrS4vo+HVUGzuIkzbevX+D7Z1bmJoqpRsk8z3bO7t48eIFNjY2ZJ0nCsAYw/ZWHYYhIEwTTHQFxRSAKQAYshRAiADnMQxhwbYAgRAmYTAJARcROKfw/Qi5XB67u9vY3Kri9evXWE/NIudAGIbY3dqGAQcUERgEEs5AhcDc3Bzm5+exu7uLOI6xvr6eOsiPsLi4iJu3rmFxcRGuS8CYRAlcvjKDpaVFNBp1BH6Md29XUa038eTxc8zOTePOnTu4sjCD2UszqDe20z1SboF9Yme5P++zH+5nH+GJtbbJ1mpGoYEIsVJUYNijedSJtywLlFLkch5mZ2dRLpexubkpw2Pf79EQT548wY8//RPb29totVqpYKZZYi7VPhe8B0DPmDRzNJOhzmpE0zS1JlGmhjGKWk0K6V//9jM2NjbQ9pM0nJevNbhKcgK2bcvkKmW4fHke33//vb7eVqsNzjlWV31sbm5i5c1L3L59G19/fQ8TExMwYaJSqeB3v/sdhBB48fw1Go0G6vU6Wq0WtrbXsbq6ijtffIavvvoKl6YrqZbkI+mO6Cec0r7PMMKj8DrZYmIWr3O4Q0x68Dv9j5sGgWkQcE4hBAMDg4AA55C1KBHBJAC4oXE5rlVAFIVpFBbDcRxsbzXw4OETLL9+L00gErnhFpDP59FpKd+GgxiACQoTFEIQcJ5JShoMhsmRJByGaYElCVzb1tdjEhu5XB5r66/x4OFjvHq1nJpduVk5x4Zt24giyZ0oaAKDM1gmh2uboNTH9KUS/tf//h6zcxP4xz/+ha2tLTAqfb3V91toNgLYpIhvv51ALu/Dtm0szE/B+1/fY35+Fg8ePMDb9+tgjKHTpojCTbTqDRDTxe+++woLCwtoNKvpxo+mAkAZSxOKqrdur3CeOa5S4ZSVw2yapjZlSqvYtg2W1hctS8JQOeRJL49V0O608ObNG2xsbGjfaW5+Drdu3cKVxTm0Wi388+fnWF1dBWXo+jlCZBxRvqdGxjmHZVlpvofovweM4f3791hfX9dm9vLly7h16xbm5uYQhiF++uknvHv3DpZl6c9yHBuUCti2g6mpPAqFAq5cWcLq6iqePnmJ169fI4pkrev169dYWlrC0tWJVCNLGGwuX8Ls7CzWNrbx7NkzrK6uo9Vqod1u482bN7h29TImJycHgvlHuShN9pQsTl14+jHGivpNbRoxDCCzuYS4oJTDECYYFTpqyeVyui0n53qo1WpotVoQQiCXy+Hzz2/j3//93+E4Fmq1Gp4+XgWlHLL8bEBwA6YhBZFSCpOYsCwbBiwYsADDAkAgePpck8AwTG2yq9U6ms024jhBPp/H3Ttf4ptvvkGpVMLW1hYePXqUmj5Zb+YMYEyAcwNjxQpanTbKY+Moj01ibuYy5mYXUS5X8MvDR+h0Otje3kaz2QTn46kgS82Xzxdw+XIe83NLuDJ/BX/729/w5MkTBGEbW1tbaLVk94qXL6WhOjuxk7xHC2FwQ+eZax5Vo1IqMIso1GF06p+0Wi10Op20QS8H27Z1ZBTHMSil4FwKz8zMDEqlEhhLtKYxDAOGafb8btt2CsGI0W63EYYS9hr4NM0mM60NlU8WJwnCMESSJHAcJ834yoq/KmNk60pKxTu2hWcrr1Gr1SCEQKlUwvTUHMbHy7h+/Srq9TpWlt8iCAI0m03UajVwfgVbW1vY3WmAc47S2ASmp6dR8MawsLCAmzdv4t27d4hiX+eDfN9HLucO1Td3FN+nP9DpN13WQVHWKDWOWo1GA57n9dxsZcYopTDgIEkSvHvzBq9fr8D32wBkd6kEUUkYhAqlhRBpmBqBMQ5CbOzu1tBstCA4IMB7zJIuxhoWmo02GvUA8Sywu9NArdoaWGBUKX8FOEuSBL7v68cajQY67QCcAYapCr0WWu0AL1+s4MGDBxBCoFKp4N/+7Xt4ngeLWAj8CIwnEGAQAGyHwCI5vHyxgl9+eYQwDDEzu4Bvv/0Wn9+6DcMwEIZhKtjoOXSqlMRHVJ7YGyXTPfUuq1+6TnuVSqWe8oQ6qTs7O3jw4AGePf0XoijCxloD1WpV+yELCwuYmprSHZ+2badRmqFrWMViEbZt4enTp2g0GlLDiG4l3rZt7ZOoksCPP/6IlZUVNOoh3r17p7WOSiMQYsLL53QNzDBkNPby5UuUy2XYti2r8mlFXmki6a/JQ9HpdNBoNNLnGKjX6+AMun6ltFIul9M+mdJE9UYbSZKgXmtCCIFHjx6h0WiAMYZKpYJSqQTP8zR0ZNR5niy+ul8+zlx4wjDQkYk85fLxZr2Kp499ALKyTRMjFQ6gUhnD4uJllMslmIY8GePjFXheHp12CCE4Xrx4gd3dXV1kDcIgTQZyCMEhwDBWHoPnOTBNDpFm0ZeX3+DNm3fgTIblhilgCAEhOACBIAwRhRHK5RIKhTwaDelnLa+8Qr0hOz+azSb8oC2TfJykGipGPudgYWEBly5dQqvVBmMcr1+tYGtzBzA42u22bnG+dm0Rc3OXUCqVsLCwgJmZGV3WWF5exs7ODhhjaLfbiOIQ+byD69eXMD4+rnvq++Gvo/R9stCUIyEJRxttSRxLNgOscixhGGq1rKKd6elpfPfdd7hx4wYKXkGCygnRm6JWFEXY2NjA9vY2CoWCzJlkkIqcc0yMT+DSpUtpGUBqiSSR45Qcx0E+n9dap+u32HBzLubn5zEzM6P7ysIwxPv377G9vY1yuYzp6enUB5OaUmaNKRYWFvDFF19gYmJCX2e1WsXu7q6EodqyP009h1KK2dlZfP7556hUKtos7+7uol6v6zzV5OQk7ty5g9nZWTiOM3T3xEkj5YGa56xoWdvtForFEgSnsC0Tpom0w0FqGmISeJ6H8cqkRPhdX8KVK1dQLntIkghcMBDLwqWZCfzu91/DNIGVlRUkCUcul9NNgi9fvsZudSPVMgkADsYTfHH7BhLqy5R/WybsxsaKuH//G9RqNfzyy78AMBBLQEDWlRinmJ27hN//4TvEcYzNzU0EQYBi0cOtW7cwOzubaqJtcMpggIKzBI5tYXJiDPe/vA0v78omx5fLaclEmvDPbl7F/fv3sbh4GTmXIAgCTExM4Msv78Lzcnj48FdZRQ9DWJaFXM7FzZs38fVXX+LKlSsgFlImEZYWfE93/7LZZk10wDmH73eGpkg57ip4MqTsdHysra2h0Wyn4KsUn2vLIqJtuXBdF4ViHpcuTYEy2fbCwXTTX7VWw9bmDnZ2dtI6lCdzI7kcqlWZkSWWfPzSpSlMjE/CdVw8f/EK1WoVnY4EWknNMYsgCNBuS7wMsQzMzc1h5tK09LEsB5vbW6ju1rUJ8TwPU1NTcF0XtfouOp0OTBgoFouYmprCTFqnA4B6vYl6vY5GvYUgCMA5R7FYxMTkGEqlEkqlInK5POI4Ri6XA+ccm5ubqNebaDQaCKNIv6ZcLmO8MoapqSkEQSvtiKCpuTmdAFoB8rN8h2cuPMp2qouRvUI2wiiCY9sIgiA1Wb1ztOIk0hVqISQ60LYdJEms++ZVSwtjsrxBCNGOpB9IX6XgjcH3fXieh0ajroWuVCqnZixGHEewbDkHQrXBKD8g53poNhsgxE6bFImGbmaZPZSKl487cBw3RSpSDV+tVCowDAXEb6ebY+vNkkxpXaIp6ViP6bJJHEe64xQGdBR2msIDdHmftfDIvqz41IVH1UsMw0qjprSDVJnN9NvztCVGUbcIwXSVlxALBkiKGCQ9bb+WRUApw/j4BDjnaDTq8DwPlEay7TiIdM9WNkUhW3cI2u0WSqUSOn6rp1vEJJbsPCVSEGxb4mfC0NdZc1UHy2Zisx2t6nNyKUqRUopOpwVCLFCmujjSupLl7glgVH+5EkzGKCiLdd+XPFz22QuPorw9beFRm59tJVFV+zAKUSzIVpsw8vVUG5Wu748A+jl8smOTsun6Qa27jFHk8wX9eqndpJYqFEpotRppaC61cj5fTHvaPe34ep4HLliXQ4gzLVx+0EqdbqOHBUR/jiCwLKKphYVgPbBc9X37+RtdR2pU9To1JWe/wSenKTzWWYbpagMtQvb0gJnEQs7N6dObbUojKW6lH8qqbp5sqks1VqJOovw9n/cG9iK5GcKmYnEMSSoAptntHrAI0eZACYjSMFbaEqw+X/VCZQXUsuxU+Nie2pM0dxZM0e0mkXklK6uAdbeDRQhMxwVNqNY4WWFxdHPi2TGYWVnk4FkwfgrBkNAu3ENliVUzmxAUpgkYvHsasx2XXr6kVTpNaNfm6xsnIIQMZ+NENtK5jgvLUgBx2UPODPn+Cg4aJ0F6DZKn0DCAmHc1Fs9AMxWsJI4jJFQ1InbNqtJ0VtqRqr6j1KLSz1OCpw6CaVopX2KYZqi7qAbOGWLOYDKmmdWypkveI5z5+iBsRTJUZT1C0+2FN/Qpzpo2VaDL2nzpK8Q9p81xXIRh0PWlWO+mq+dSmsDzijCMSHMTym4J+TyVvFTCkMsVdDOcSuxJXFLWHyIwjBQ1QKGjoGw23TQJwtBPi8DWnkq4ZdmavtcwDNhWlzG2y5to9fhsWZ9IjdM8i6V9nkajJm/8GX74fprpODWzT+t0V3dqM0W5PP5hMsyf1sezzry2ddxq/Kd1/tYnzfNpnVzznBemz2w+YdA6iwz4p3VwquWT5vm0Lmao/kmzfPJ5Pq1PwqNs2fmIclRhsZ8ODkiR/JkWkOycLPV8VUXP/k29z1lk0LPX3F+G6c8+H/Ta87qypJnnTngMw9DFvmxhUE1zybk58HQTorQ2JYTQc7rGxip7GN5V+SI64wnAqnFOCXexONbDvdwv2KOEkZ6an2ORvT6PZdma2vXDCg90JV025/XWuFSxNJ8vaBwN5ww8FSJFpq2EJjs+SDGnn6oqN8nA3yljQEZ4+1u3hx38ci7N1qinwI3aDChhUGo/jiMtOGoTVK1ImYh+TO+ZVpwzgqB7vtPryQ5P69esFylUP3fRlsowq8KkEh7bklidgufqpj+JqSmloDHZLUmZpLTV4yYzeJfTwroc5L8BKe5owPC07Nyvi5PnIec/2upB8aU3Owz9FFsT6y4M9TsgAeXqBMexHEiSnex3FmZBDdpVp9RNnXspvGaPj6Oq5+o7XgSz5WY4Jc/tACnLcmEYXVgnYwxJHGBnWxJeKlPLmGzdyeVy8DwPXsGCZUFPgMki8dTEmdN2ktUKAh+1Wk23TJfLZZTLZVgWYDouzBT4Nkr+o1P3c/ZrNz5PSyEKFXZFsZUqNookSVJKmAxVgwAAG1pJREFUWtWdKSfelMZcXLt2DZ999hmmp6Y1DJUQC4VCaaQt1Yf5Bdvb2/jnP/+JN2/eIJ/P4/r16/j+++81zZzEBvWmFc7atJ7ogGd/8bwCanX/WF+gi8HFHnKg/hPZPwMz+ziH7BW3IUdDGiZg2TYmJ6cQxjEaLYHlN7saDgojzZsYKXeyiPDmzRbev9/GH//4R9y6eQOmaWJ3dweCS34gRdTZf02mSZDQlHXCnYFJTAA87chsppQrMh1gIDWlQSvVHvJWxkzyTBcKZQjhYHOjg431NoA25mZvghAPU5PdZsX92EY554iicC/gPZ3WoxRAP35ZHZRsukL9bVjhzL72oPSBtZ9KGkWo2q+GFXpQwTgHgbdzrgfHdgYWSMfSthPVfsMYg+2kPD8pzZzruqjVanjy5AkmJibwxec3AQCTk1MpSXiS0qxEPVGPSgFIbuW0h55x2CkbrEod5PM5tNtNlIrjPd0ScRyjUCihkvMy/kG3S0OhCSfGK0Obh3ze0z1S2WtX7cX9KQn1Odl73z9nfajoluydUWoaB3SM7penOI7DeBCaXwO8uZotZem+psNWwfNgmAJcyNswvzCL+/c+x8TEBFqtFnZ2dvD82bIkP2pFePTrc3z++Svc/uKG3hDLkq0pfhCnHDxIccZp73yqQW0iNY4NogXANE2EQay1TC6Xk5MLGcPE5Mye63WcXM+BlO3P5jEPpdlzj5zY0QTjso1p9N0Th73Xqfk82Q9WApV9TJ3Yo863zG5GuVzGvXv3cPPmTcRxjFarhf9b+gE//fQTWq0Gtra28P79ey082U0oFEpI4kgnJAmxpGoXKry2wVLyA9U3Lzs2x2HbDlot2d9VLk/ANMwDzLnomaYThBFKxZPfdjXxOQh83Wq032ZnUwLDCNd+jnt/FWJkwqPyM4M+OHvxal7VcUZNm6YpW2sEB4gJx7GQy1vI5SzkcxbGSnncu/81XrxaRrPZBKUczWZz4HvlXA8510OQhvNW6phHEesZ/8gYg23bKBbHkcQRoiQC4wzlchlhFMGz8geYgExLg8EBg6Pg5Ud6SPN5D66bQxSFKc9zZ88IpZP2dHHOYDtuT5g+MM8zqKfqJNnhbP3GsR0Ui6UTzShXvDyUUiRJ0ifABjzPQ6VS0Tw8rVYLtXr7UA1J05BZbXgcywEjipG902lpIaNMsmF4+fwQh6p3TELHD05By0v/SLVb7/c9h9nX/WayK7aRg30eYulWlFEtx3ZQKo2PQBj5HvLvrnlIndScAZNQUCY3idIkJRso6ue+Xn6H5eVlrK6uIgwjlEolzM7M4+rVqyiWgFKpAotIhrI3b9/j1atXaDRr4JzjyuUlTE1NoV5/pQerTExM4NYXt/HZtct7BEdpHMDYk94HgB//9g/s7OwgjhMsLCzg93/4+sSmjFKKMOwV0pPipAYVzq2japLDVF/2OepnLueN7ITp2etGl2swW84QQuixR4r9tFzuhsP/939+wMOHD/XwW5laMFHwSrh69Sr++Kf7kguwOJ72rrfx7NkzvHv/RvosvmQF29zcxsbGhs4xvXy9jP/6r//Cvduf7evzSHPZDX0f/vII//M//4O1tTUUCkXdc3/yBKul+9qVlk/o4TPXj7rX1l4bWkCn3djzJiqc7fl9gH/TP2JxvDI1aiWd8jULyZNspJshpPapVquaeUyNmvTy8gb+7cd/4L//+7+xu7uLJEnnUHACw+AI4wYavz4CjAT/8R//gempOTSabTAmEIYxwkBGY48fP4NhGPDDMCVasAAkePlyBRMTv2Jhdhrj47Lfnhhdhnti2+AAqvU2piZK4Fzg0aMnePPuHSiluHpVJjZH6QupNmnHcXWnaRT7PWMh9vOF9rCiWvaAneh/wDCl6ep7434i70GCY2XmkzuOewqCg16mU8PoaReKIoZ3796hWq1qVatmlL5f3cTPP/+MnZ0dTXFi25KAWzGBRVGkzdn2ThVevhtqKzLMIAgQhqFMJHqe9sGCIMDa2hrq9foehzn7Hq4rN+HHn/6BR48eIY5jlEol3L9/H9dvXBnpvSoWSyiVyqkPF+3Zq/5ZowcVaAflAAearXyugDD0B6qww2owtuUeO5o6NIRMB5LIdmWBWq2GBw8eYm1tHX47wO7uLp4+e4FGtQUDFmYuzWN8XNK5ra2tYWNjA5TGMAyBpaVF3L9/H7lcDi9evMDT5y/g+z52dmrY2trFjc98wJAaQgipoWQNzcL9+/dx5cplVKtV/OvhE9RqNRgAGvWWrrupSE3X4LiKSA1sbDfx4MFD1Gp12LaFzz+/hTt3bp9aLSrrryiWDZrxgfbbU9U+vR9Fr3Vo8Sudv9RvAwfZRMpYmvRzcZpLsaDW63X89NNPcl5XJEmTGAeSJEGhkJezO2/f1Bs5PT2NsbEiXNfF3btf4vbt25rldG1jE61WC1bKXhrHMeI46ZlPAQBTU1O4ffs2vvv2Pt68XcX6ZhU7OzvgDOlr4n1MuZyv0fEj/PLLL3jz5g0opZibm8U333yDSzMTp3a/spOV1b0YJCz7TTnaL4Lb12FWPDRC0D0C0u/3ZE3cUWZ7HyvPY0BOq6BAyGLEYVs+rscEGBgfH8cf/vA7/OlPf9SwyX///ndYXLyMJEnQ6XQwNjYGO6Wwk0I1hvX1dUCYCPwIcRyC8QSAyGCLeDrLq4AgDDAxOYap8QocYoKBwQTtiQCz5spIT//bt+/x+PFT1JttWE4O9+7dw7fffHnqRUyFTMhS2BzkgvS+1jma8KjC47BDSxzbgX3KGkedYtM0ISBZ4cdKZVnPqjb07NArV67g22+/xdRUryAvzM8CAGr1JsYrY1jf2EKnE2hQt3KyNatp5sR1WS5MuK4C4FvaX8peW/9r1P9brRb++c9/alTAzZs3ce/ePZzVynIVURYfGlEdZkn21zxuDr7fOTS6UoJVKJTPDMqqNmt+YRZ/+tO/YXp6Gn/981/x448/gjIf7c4ugrAJYH7Pa588fY5nz55he7uKIAjAqKTw3dzZhesW5NQawwCgOKK5JotUjwshRzPZtgPD5DBMOR7JMEUPy4f8XehZEuvrm4gjilazowunlnW2eDyVjT5IIQyLL7KO4l1r52qACTtLDHSXncvC7OwsPrt2Gevv1/Hy5UtUa5tYX19P2da/6Hnd3376ET/8+a/Y3NxEuy2HukHIqjxNmeJJ3wTAbK4myxlNCEGr3dIjJSlleqrgIE1JKcfW1haQVv8d1+lGhjeundm963JTkyEOKTskaTJEujoLzlYCo1PdgqBUrJzRVzdgcAYjnStFiAFDyM26ceMKpqbGkDCAcgPLb99hc7cbNr968x5//8dDPH/1GvVWGxGNwQ0B4hA4eQeECBgGgwCFSUSaT5K3yDAIDEPIyYGQGiZJ0snPJgHlAsKwQbmpuzcAgAsDMB1QbgJC/lPCpuaePnjwCza3qmeqfVTexzQO7h2TZKGFo2ue4dWgq2edn4n4qKxy+lOFoVeuyNkUpvkKlFKsra2hVqthZlIK9srKClZXV/fOy5qd75mXZYz4lGc1mHS4JT/z+sY7NBoNrKys4O3bt5i5NHGmAqTYXPcbdEIzaYZjaZ4ujmVvL5J68/088VMTHlMABpdjGVmviZibm8N4uQwTwNb6Jlbfvtd/q27vIuwEoFGCnO3iyzv38P3v/w33bt/D4sIiivkiLMNKa1AGADPNHnd/B7oaxLZdOLarHtWPS7p/5YAnMAWHKTgMUyCXd3D33m387//zH7h6dRGGIVCt1vD48RPs7NTP9D6qEka/aeqH0pzIbB1mD50ziLD2K39ka1sAMD8/j/HxcRiGgTiO8fbtWyyvrCKK5IijKIr2zMvSobRhjOz6VHJQsb+rbPjs7Cy++uorfPvVLVy9ehX5tCr/4sULLK+s4KzXQV3Cw7QDmcd98w+1tLAYHMTqFZ4vvriFqclLMA0LECbevnmPzY1t+H6iNzVJ0nlZnVBrCgm5kKMElAYZxhc0Tav7/LR6LoQB23YQRTGSJAEXVPpJBsP09DhmZiYBAJ9dv4752TR1UKvhyePniCJ6xtrnZITfQ2se1WeUVWVnrXWyp1hFP/3RzcLCgiTX5hy7u7vY3t6G7wfI5/NwHAeWZel5WU+ePMHy8nLPvKxRXJ/K5MrRSVQLeC6X00XaWzevYmlpCbZtQwiBp0+f4tdfn53pvcxS9h5L+I5cX9J9396+yP+z1EKm0VvFn1+YxfhEGe1OE5TFWF17h2vXl1Aul5HL5dBsNg+cl0UpTfE3Kr8jZJa5O/m616lONY72bdJirRxxAAAMhsEBwWGCIQthvnbtKp49e4aNjQ00Gg28fPkSt29fGxk0Y1il0J/PUSWpw/I8B2oedg6b0LKk34Zh7In0pqamUC6XtXZaX5fTgOfm5oaalzXKPFT/1GaZie9e7/0v7+Ly5cv6uY8ePcKrV6/OVvv01a2O0vo8lM/T3/vzofwh0zTAGIXrOhCCw7IIkqQXapDL2ZiaGofnuWAsRqNRxdraO1QqJXz//e+xuLgA2zYhBEWxmMe9e7dx//5dTE5OwDCQDrc3AMHke4sEFhGyP8xIZ8GzBEIwRFEHnCcwTQGTMMBI0qo9QIgJw5CakbMEtkNAWYx6s55Jc9i4enUJExPjsAhBdXcXT58+PbPZZ9KC5HvanBRdTXav9zXRisR70AoCH2Hk98xNUBnlnOsdufNhFOv96qac0ck5SqUSrl3tQj8VZOPlq2Xs7u5qDTUxMYGrS4vY3JLjp3d2dpAkCTzPw+TkJHK5HOr1Jnzf1/M+p6YKKBVLaDTk2Gq/I8sW4xNFTE5OwjAZLMvG+vouGo2GjtgW5i9hbm4elDJUq1Vsb28jDENwyAG1n9+8tUdbPnv+GiyRGrVcyeHy5ctndj/7R2VxzpDLebojY3Ji5njC0263dHNZP839hxKe/VaSREjiGFxgDwSz3W6lYyA9xHGMTqeth4Soxjw5EyKX4qQ52p2dVPgkbUs+XwJjHK12NX0+Ry7ngXPouV+27cD3W+CcoVSs9FSx1WcbJj64rzhon5N98D0HAfrM4czFXqfqPIXxnHO0MuYgO28CkIg6NZ03CHyMjZVRqYzD87yU6k3OGJXzRjkIMXVnqmEYiBOJ7VHRlJo/qgBzSRKnHRWs5xqkAHdnYDBGEYb+Bx/RcFBeJzs6KnsPjxVtnffGe8YowiiAYQBh2IHQZQv51fygpYe3ci7nkIaR39PTHcU+krT9OJ8bkxvNk9Tp1t4AANGj0uVkwO4opSD007ZcAj+QNa4oAizb6hGYdrsJxti500D9wiR739nRNU9W4gaRS54XjVNv7IKnPVfKvLppC4rC6Sqt6XnFnnzMnplf6j0cW9d0VF99LpdLs8Z+T55ECbDyB1lGA5mmiTAlK1CP5XKenvXVatXOzb3cDxh2LOHZ70XqJnzoMJ5SCj/owDSlmlUjhhSZUxj6iJM4HZYm8zVR5COKQwghnUJFOJnFZ3teXrbrlC5121aSWI/QVs/NZrbz+QJMQ2F+jR5NZZqmFmIZhHTSuaVAFIcyIBH8gx7APfPS+4Dx+5kucz+tw84x0RClVIe8amPUphmGAdtxe/C4SnuoKrwQQk/oU+/hOG5PY6JpWih6UyiPTWTSALnMe5I0IUjBGdUUvkJIkJgc8Ma1kKoNUqMpHcdNuy58NBrVD3gvk4GJw2EUyZ5oK0mi1EEc3DyvbriXL515tMUYRbNVP+FJk2kH1/U0y0ShUDoUVtJut/YMhJXCSo78+YN8SbVho+isPcpqtWo92pexBJZla19P9XsNwqbv0TzsEN9Gkf3EcTSyjOywgpPQ0VD90gyP4TCCoyK2URyWfpOQvSbK2JneU/W52esZhC5gjA40XeYgX4dnSBYHfVhXS50Nb3McR2i26gMHzR7XMZQUL86RgWzq9RJdOPpItNNpnQn1nUoC9wdC/cITRj4oiweaLnPQRh1UENOs6mkrxyg29CDfpt1ujZRcXJkHRQpwlKUiuMPe+ySLEAtxHKOd4qNP80DGcTQ0ewZjbE/ZxNovPD98Y6PUESSpI+iN/FRIQY41De4o2EIVy+pxr7dQKCOKQp3HGXUeTIhu2B/F/qn5lpKOWI7mHqQgstySiuswisKeazGHjen7fZ4ub4ultcSohCYIfA1rUHmaUdHMqmzy8c2eCdfNHWrST+KDqPvspDjjIPBHdn8559paELJ/098gOsB++Tj2jFFlvoSgCKMIYSRHQx83WlDjAFQ0o1RpVuOMgmpWUdiezG8yNebltDK7QJcryQ98IEiJyC03Fd6jI4glIZb0XxIaIRkgj4f5cdmaoZWVyKOcjP6JNOnO6BHbtn24M6p4/mRmVmma7rSY/hMwChMxKhJvk1hAEveQhI9CuFUBOk5imH0jB8z09EdRqHuvJBrQPPAeU5rotES27/wgipX93IQ4jrXw6DxPu90ayVD3fgpcMmTCSUdwJ2SwYozq6TY9p9ggxyLQPCz3k4UynEUd8LA8kZW5/9l7fdL7mt1XlfM5ss9zHB/jLFcv0UAv08OoRwdkfaezKiAflidS9/ws7vvIu/UGSXhyhnmvfviIbbnHzukME7pHkZ8SArgj0dyjOqyjntWq3s+2XO33mP0q/2NbPWOLTkNYMyxqv4Uls83x6Wie87CyzB6cn26LUD5XgODn5+Cd5XRosz+W/5iWMl+nOSapn7btY18SoeD0ap6PdZ45IdapEzEo0oDzvLK8QcPkcw7SbG5KB2wOCvc+raNrn9/SImmbsv7WEiVv6Zbi/pnl5xWKusehEzFgcn3tB/HLjFJ4ZMb2/GpvhQLoRwMIwXr+ZX03zhlMg+g5Her/alBLz5EplUp7cgbZ3y/C3G+V57EyGdizWB+L1s76vaZJdE1LVQCySdZD520dNHztnBoRfa3H2dCt7XVYli0xxlGE2ZmFoV6Xy3loZ1jBLurKliXU/dtvvNWeY1kslHpMVNZ8XZR8hmTPYHv6sA9bzVYtZXSXv7uui44/nEAQy/4o8j39FkfVwwaVdcy9kYMEgruOtHHZQuhFGJ5qgsAQBiziwHWGm20VxxGifUD/w2KcTMO8UMNl9/OFOJNZ5JzrgTOA0v39xn0dAtVlmdU4F8GuK19nmBBdIRUBIDqgrBDFH2ca47Dlui5KpdL+zLgHvbhYLAFt9Iyopsz/KG4M51wzlybJwQVc32/B91twbDle8mMXmJ79P9S7PGB5XiH1uOmZAbNParMP8z0UxsWyLBgmECfDfa84ibC9s7F/muAjqA06jjP09xiCh9nUJowQC5xJbEzWkc622A7rWPc/b1Auqf85w7xv9osPEvZWq4ZGs5p2lB69uZEQa1/Q/yhIMRmjA++FaRDYlgvTIAP5k/vv2X73itJkYC5P+TmtVgvl8vhQuKcDKVb6l6IqieNYD/1SRUc1I73fN+p/rD+EzkJMlWNukeEGauzr8xBL3+AsZDNOpxmfVIMOGgs1ioZEdR+yXEgqt6ZAXnEcgRBrT0IyO8f1oNTKIL9VQUqGMVXHFh4lQAD28LkcNRfUjzjcbyVDzIUa5n0VC8agXNaxE2omAUn5jJM4OtIYxoOExzTJgXPL5GC5cA9SsP/+HPZ9pQZytD97VGz0kSuG0iYyJLR7cXEGAtFvXvpndKmToXj7VEU6W5nOIuGyN2QYwTzIXvcTVJ3YxHAGFrOhTeqRtM8BA+/UNGPF6tV/gPe7/1nh7Joxtm8eZ+SaJ+tPBIGvpbaffq7fVClEnwRQO+koZ/dAp1bdmKzmOHRoamYG2FnmXayUlzk+YX0r58pNPMpmqnvFGIVSHIPcgyzOybJcfXiPi+s+tvD0XzQXB1OyqPGER70prVZjoI3fXzO6Pf7XmUYqtjt05LZ/slHmqI4z9C6OI3RSWrus5ulvX1L7cdJxnicSnuxFKzPjB6094wYdxz02C5ZqAFSdlMddckbW+U9yciZzLcedmJhlOVGcRf1ByEn660YuPFlnWjlu2oFNx/OcVLsNq3myflVWVV8U4cm53kgaE7ng6LQbew5cuTyhIRXnSnhOayluHMdxzyUZ5CiXaZBD/cHzsi4EaJn8xhCOJx0ocmaC/kl4zuGmXBBY64W4yougwkd3UC5OB8uFudKPsSHxwmvIT7fg0/pNCM8wvo9tuUPXzT6t34jwfGzdrB+DeTYv1o0dPsOssC/9mKGzXP3w3Y/Nb/uojzMhVk/NbRSQiUNv6D5YpI+xG/ejE57+MsZJgGXHEZz+z+Gc4WONEz+6aGu/E54dHnJaqx8/nS0QH83c8U/C8yFWFnrA0wm9g+CxBy0D3R79glcCMQkgel+veruzwpnFECmMcLbfbdjPj6Lwk9kanePJj/BcNvDUD2s6BGMwMrOnLMZgmhZM09IOr0UIGO8KaHbWl/Kt4gEQ0GFM5yC+40/CcxJtQpM9NLAHLcd2YKtZWSm2uB9ZuF8uiIpIv4djuwijCHEco1yuII6hGdP7hVThZHrmsOY8Dbfdb4rQRQ7XL4TwHOUkmiYZiCEatLkDT75FwChDsVCGYZpw07GQ2Ygt1VEwDANOOrUvu+GmKWEV/deQnRL4Kdo6i+gpiTSGh9PDhcgivYKTcz1EYXRoVKbNHgPGxydgZCrbjuOi0aj1aBrl7yjBUloxOzo8uwpeCYIfzsAWxR0YhoGO3zrXM0gvhMPMjhipnGSuBABY1mBOH8dxzzTLzS+A6Tr/wnNE5zHba511Qod1WPeDf8jRj4f7Kwf5NMO93oJhkAvBhXTuhSc7GfhDZmkta7goaFTXyDk795DbT5CMY2iHYTZ+UHrhKO9tEefAnvRPwjOE1lGm4KxYt04zC31UROR5z/ec62iLZRrwo9g/Ez9gVPjh476Pvc/Umk+a5wOZkqMk3Q7a9LMA4n/C84xo5fMyQ5sdpJp1nvv5ZQ7Kiyge4X6+n6NwTNu2o5/Xz2esEIxRHMGxnX1pXPZDOqrHCbEQRRGiKDoTDumP1mxlBajjtxCl3DTZsFvz0gzZd93fu93/+GFa6TCfSPNAH7P3ijEKz/NOZSjtb054lKPZLQOw9F86+52QdJiGO9T7+EELNCN0PUI4hPAc+hmHEJ0rihrA1d9BMY0QQmBZhQvTt3WhwGDH7d9Sleqsz5KFSVDG9AzPYfI4Wa3V/7uqoe0nAB9TD9pvIs+jfId+PyRrpixCkHPzRzt5pBenIyvo9Mjk4Z+E5zx/SdPscT4VDidO4i6TRkrYeajTnGoOxqh+fZzIycFqPsN5L2iOal0IloxRrjDy9+BrLEJQKJaHph7hnKPRrPZEaF6+dOx555+E54KtJInAOEtJKe0jc9YwRpHQuCcV8Ftb/z/pIL5249oc9AAAAABJRU5ErkJggg==);background-size:4.6875rem 4.6875rem;object-fit:scale-down}.statblock[class*=bnb] .line.badassrank .property-text{font-size:clamp(.75rem,.84375rem + 5%,1rem);position:relative;bottom:-2rem;display:block;width:1rem;height:1rem;margin-right:auto;margin-left:auto}.statblock[class*=bnb] .line.movementtype{box-sizing:border-box;width:6.25rem;height:5rem;content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAADECAYAAAAiepUSAAAAzXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVBbEsMgCPznFD2CAiIexyRmpjfo8YtK25gpGTbIMssD2ut5wqMbogCnrFJEghkXLlgt0DCtDoyBBw7bybm45mFnJ9BSvcgLVbz+k49fgfmrFqWLkO5ObCtRvAHqTcgbUZ8ILThcqLgQ4SSiC9S5VpCi+brC1sJqOh06yMljEXGR+5uzXe9I1ocQG0UKhkQ8B6DuBFQtSAPRCvtX7a2GTHncztzG+3dw+uVhELxOC2/WxF8zi0izCQAAAXVpQ0NQa0NHQ29sb3JTcGFjZURpc3BsYXlQMwAAeJx1kL1Lw1AUxU+rUtA6iA4dHDKJQ9TSCnZxaCsURTBUBatTmn4JbXwkKVJxE1cp+B9YwVlwsIhUcHFwEEQHEd2cOim4aHjel1TaIt7H5f04nHO5XMAbUBkr9gIo6ZaRTMSktdS65HuDh55TqmayqKIsCv79u+vz0fXeT4hZTbt2ENlPXJfOLpd2ngJTf/1d1Z/Jmhr939RBjRkW4JGJlW2LCd4lHjFoKeKq4LzLx4LTLp87npVknPiWWNIKaoa4SSynO/R8B5eKZa21g9jen9VXl8Uc6lHMYRMmGIpQUYEEBeF//NOOP44tcldgUC6PAizKREkRE7LE89ChYRIycQhB6pC4c+t+D637yW1t7xWYbXDOL9raQgM4naGT1dvaeAQYGgBu6kw1VEfqofbmcsD7CTCYAobvKLNh5sIhd3t/DOh74fxjDPAdAnaV868jzu0ahZ+BK/0HFylqvEpYpe4AAA5aaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NDUyNzliMzgtNzFjNy00MGNmLWFmZjgtZTU1NGI0ZTFiZjlkIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc1MjFmOWJmLTEyYWItNDY0Ny05MTgyLTZmOTE5ZmRhNzg4NiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjVlYWUyMjI5LWU1ZGQtNDJjNS05YmJmLWY4YmY5Y2I3ZWVmMSIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iTWFjIE9TIgogICBHSU1QOlRpbWVTdGFtcD0iMTY4MzAwNzEyNzUxMTczNiIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjM0IgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjE5NSIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjE5NiIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPSIyIgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI0NTgiCiAgIHRpZmY6WVJlc29sdXRpb249IjQ1OCIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjM6MDU6MDJUMDA6NTg6NDctMDU6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzOjA1OjAyVDAwOjU4OjQ3LTA1OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDhhMzMwNTgtYzk4My00Yzc2LTlhZWEtMjY2YjAyNzcwMDY2IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKE1hYyBPUykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDUtMDJUMDA6NTg6NDctMDU6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+hATtDgAAAAZiS0dEANsAmAA5q2OUdwAAAAlwSFlzAABGbwAARm8Bom5tcgAAAAd0SU1FB+cFAgU6Ly3P56oAACAASURBVHja7b3ZdxzHne/5iYjMrKrEXgBIcAFXkaJla7EtWYttye3uttvWbS9t33O6faZnzj3zOk/zMOfM+zzNw/wPM/fO0vf0dbdvX8nyvsmyLUuURIkUJZKgRIgkSAKFpQpZVZkZEfMQWYkCCBAABZIAlb9z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);background-repeat:no-repeat;background-size:5rem 5rem;object-fit:scale-down}.statblock[class*=bnb] .line.movementtype .property-text{font-size:clamp(.75rem,.84375rem + 5%,1rem);font-weight:400;position:relative;bottom:-2.3rem;left:.125rem;margin-right:auto;margin-left:auto}.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.move-shat{display:flex;align-content:center;flex-wrap:wrap-reverse;justify-content:center}.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams{display:grid;align-content:center;align-items:center;justify-content:stretch;padding:.5rem;background-color:#e0e1dde6;grid-row:2;grid-template-columns:repeat(2,1fr)}.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .health,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .regen,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .shield,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .charge,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .armor,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .repair,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .traits{line-height:1;position:relative;display:inline;box-sizing:border-box;width:1rem;padding-left:.1875rem}.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .health .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .regen .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .shield .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .charge .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .armor .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .repair .property-name,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .traits .property-name{font-family:var(--statblock-property-name-font-family);font-weight:700}.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .health p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .regen p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .shield p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .charge p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .armor p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .repair p,.statblock.basic-bnb-familiar-layout .statblock-item-container.inline-container.statblock-item-inline.familiar-tams .traits p{font-family:var(--statblock-content-font)}.statblock.basic-bnb-bestiary-layout .health,.statblock.basic-bnb-bestiary-layout .shield,.statblock.basic-bnb-bestiary-layout .armor,.statblock.basic-bnb-bestiary-layout .traits{line-height:1;position:relative;display:inline-block;box-sizing:border-box;width:10.3125rem;padding-left:.1875rem;border-width:1rem;border-color:#e0e1dde6;background-color:#e0e1dde6}.statblock.basic-bnb-bestiary-layout .health.property-name,.statblock.basic-bnb-bestiary-layout .shield.property-name,.statblock.basic-bnb-bestiary-layout .armor.property-name,.statblock.basic-bnb-bestiary-layout .traits.property-name{font-family:var(--statblock-property-name-font-family);font-weight:700}.statblock.basic-bnb-bestiary-layout .health p,.statblock.basic-bnb-bestiary-layout .shield p,.statblock.basic-bnb-bestiary-layout .armor p,.statblock.basic-bnb-bestiary-layout .traits p{font-family:var(--statblock-content-font)}.statblock[class*=bnb] .statblock-item-container.inline-container.statblock-item-inline.bomshat{display:flex;flex-direction:row;justify-content:space-between}.statblock[class*=bnb] .statblock-item-container.inline-container.statblock-item-inline.shat{position:relative;right:.625rem;display:inline-block;box-sizing:border-box;width:11em;padding-left:.188em;border-radius:.625em;background-color:#e0e1dd}.statblock[class*=bnb] .property.Actions .property-name,.statblock[class*=bnb] .property .Mayhem .property-name,.statblock[class*=bnb] .property .Loot .property-name{font-style:italic}.statblock.basic-bnb-bestiary-layout .actions{display:inline-block;word-break:break-word}.statblock[class*=bnb] .property-text{font-family:var(--statblock-content-font)}.statblock[class*=bnb] a{text-decoration:none;color:#b84c82}.statblock[class*=bnb] em:not(strong),.statblock[class*=bnb] em a{font-family:Fira-Sans-Book-Italic,BnB-Font,sans-serif;font-style:italic;color:#535468}.statblock[class*=bnb] strong:not(.name),.statblock[class*=bnb] strong a{font-family:Din-Rundschrift-Eng,BnB-Font,sans-serif;font-weight:700;color:#8a3961}.statblock[class*=bnb] strong a>em a{color:#ad5c3c}@media screen and (max-width: 400px){.statblock[class*=bnb] .statblock-content>:global(.column){width:75vw}}.statblock[class*=bnb] :is(.dnd,.wotc,.wotc-beyond):not(.illusion,.basic-bnb-bestiary-layout):not(.h-line):not(.hcl):not(.sphd-und-1) :is(.markdown-preview-view,.markdown-source-view):not(.h-line) .statblock[class*=bnb] :is(h1,.HyperMD-header-1):after{width:unset}.statblock[class*=bnb] :is(h1,.HyperMD-header-1):not(.basic-bnb-bestiary-layout):after{width:unset}.statblock[class*=bnb] :is(.dnd,.wotc,.wotc-beyond):not(.illusion,.basic-bnb-bestiary-layout):not(.h-line):not(.hcl):not(.sphd-und-3) :is(.markdown-preview-view,.markdown-source-view):not(.h-line) :is(h3,.HyperMD-header-3):after{width:unset;height:unset;background:unset}.statblock[class*=bnb] :is(h3,.HyperMD-header-3):after{width:unset}.is-live-preview .statblock[class*=bnb] .cm-header:before,.statblock[class*=bnb] h1:before,.statblock[class*=bnb] h2:before,.statblock[class*=bnb] h3:before,.statblock[class*=bnb] h4:before,.statblock[class*=bnb] h5:before,.statblock[class*=bnb] h6:before,.markdown-rendered .is-live-preview .statblock[class*=bnb] .cm-header:before,.markdown-rendered .statblock[class*=bnb] h1:before,.markdown-rendered .statblock[class*=bnb] h2:before,.markdown-rendered .statblock[class*=bnb] h3:before,.markdown-rendered .statblock[class*=bnb] h4:before,.markdown-rendered .statblock[class*=bnb] h5:before,.markdown-rendered .statblock[class*=bnb] h6:before,.workspace .is-live-preview .statblock[class*=bnb] .cm-header:before,.workspace .statblock[class*=bnb] h1:before,.workspace .statblock[class*=bnb] h2:before,.workspace .statblock[class*=bnb] h3:before,.workspace .statblock[class*=bnb] h4:before,.workspace .statblock[class*=bnb] h5:before,.workspace .statblock[class*=bnb] h6:before,.print .is-live-preview .statblock[class*=bnb] .cm-header:before,.print .statblock[class*=bnb] h1:before,.print .statblock[class*=bnb] h2:before,.print .statblock[class*=bnb] h3:before,.print .statblock[class*=bnb] h4:before,.print .statblock[class*=bnb] h5:before,.print .statblock[class*=bnb] h6:before{display:none}@font-face{font-family:BnB-Font;font-weight:400;font-style:normal;font-display:block;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAMAIAAAwBAR1NVQjsvRIoAAADMAAAGuk9TLzIPEg0lAAAHiAAAAGBjbWFwAi9BSAAAB+gAAAF0Z2FzcAAAABAAAAlcAAAACGdseWYi8bN9AAAJZAAAfcBoZWFkI9XeuQAAhyQAAAA2aGhlYQhXBNMAAIdcAAAAJGhtdHj3Jw5+AACHgAAAAaxsb2Nh5kQGdgAAiSwAAADYbWF4cADGBHkAAIoEAAAAIG5hbWWQJI+BAACKJAAABAhwb3N0AAMAAAAAjiwAAAAgAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAoAAAABAD4AHAB6AKIAwAH6Ai4CUgKSAqQCwgLqAwIDIAM6A04DYANwA7QEHgRABGwE1gTsBQIFKAVUBXgGRgZcAAEAHAAHAAgACQALAAwADQAOAA8AEgATABQAFQAWABcAGAAZABoAHAAdAB8AIAAiACMAJgAnACgAKQAqAAEABABQABEABAAMABgAJwAjACIAHAAoACgABAASACUAKQAgACUAJAACAAYAFABaAAYAGAAnACcAHAAiAEIABAARABAADgAHABAAOgCQANIBBgEQASQAUQAUACoAJwAcAAQADAAYACQAHgAlACsAHAAnAAQAEgAlACkAIAAlACQATAAqACoAIgApAAQAJQAdAAQAKQAfABwABAAXABgAKgAiACkABAASACUAKQAgACUAJAAEAA0AKQAEABMAGAAbACAAGAApABwAKAAEAA8AJQAkABwALgBNACAAKgAiACkABAAlAB0ABAApAB8AHAAEAA8AGAAnABoAKgAoAAQAEgAlACkAIAAlACQABAAJACUAJQAiABwAJwBOABkAKgAiACkABAAlAB0ABAApAB8AHAAEAAoAJwAYAB4AJQAkAAQAEgAlACkAIAAlACQAaAAEACcALgAlAGcACQAlACcAJwAlACgAIAAlACQAZgAKACUAJwAnACUAKAAfACUAGgAhAAIABgAaAGoACQAtACYAIgAlACgAIAArABwAaQAMAC0AJgAiACUAKAAgACsACQAnAC4AJQABAAQATwAPABgAJAAbACgAJQAjABwABAASACUAKQAgACUAJAACAAYAHABiAAoAJAAaABwAJAAbACAAGAAnAC4AYwARACQAGgAcACQAGwAgABgAJwAYABsAIAAYACkAIAAlACQAAQAEAEMABgAiABwAGAArABwAAQAEAFIADAAlAC0ALQAgAAQAEgAlACkAIAAlACQAAgAGABQASwAGACIAGAAoACMAGABBAAkAGAAkAB4AJQAZACIAIAAkAAEABABkAAkAGAAbACAAGAApACAAJQAkAAIABgASAEQABQAsACAAHQApAGUABQAfACUAGgAhAAEABABTAAoAIAAkABgAEgAlACkAIAAlACQAAQAEAD8ABwAkABgAJwAjABwAGwABAAQAQAAGABgAIgAlACcAGAABAAQAVAAFACcAIwAlACcAAwAIACAAMAA2AAsAKgAnACcAJQAsAAQAIwAlACIAHABeAAcAKgAiACIAHAApACgASQAJACUAIgApAAQAGQAlACMAGQADAAgAJgBEAEYADgAlACcAJwAlACgAIAArABwABAAZACUAIwAZADUADgAiACAAIwAZAAQAIwAlACoAJAApABgAIAAkAFsAEgAiABgAJgApACcAGAAmAAQALAAYACkAHAAnAAQAHgAqACQAAQAEAEcADgAtACYAIgAlACgAIAArABwABAAZACUAIwAZAAIABgAYADIACAAiAC4ABAAsACAAJAAeAEoACQAgACcAHAAEABkAJQAjABkABQAMACAAPABQAFwAMAAJACUAKwAcACcABAAqAB0AJQBcAA0AHAAYACsALgAEABkAKgAiACIAHAApACgAVgAJABwAGAAnACkAGQAcABgAKQBXAAUAHAAYACcAKQBVAAYAHAAYACIAKQAfAAEABABFAAgAGgAcAAQAGQAlACMAGQABAAQAMQAIABwAGAAmAB0AJwAlAB4AAgAGAA4ANwADACYABgBZAAsAGAAeACAAGgAEACgALAAgACcAIgACAAYAFAA+AAYAIAAoACkAJQAiADoACwAYACQALwAcACcAHQAYACoAKAApAAIABgASAF0ABQAgAB0AIgAcAD0ACAAcACsAJQAiACsAHAAnAAgAEgAuAEgAXAByAH4AnACqADQADQAsACAAIwAjACAAJAAeAAQAKQAYACAAIgA4AAwAKQAqACQABAAeACcAHAAkABgAGwAcADsACQApABwALgAnAAQAGAAqAB4AYAAKACEAKgAiACIABAAZACoAJwAkAGEABQAhACoAIgAiAF8ADgAfACUAKQAe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) format("truetype")}[class^=BnB-Font],[class*=" BnB-Font"]{font-family:BnB-Font,serif!important;font-weight:400;font-style:normal;font-variant:normal;line-height:1;letter-spacing:0;text-transform:none;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.BnBFonthover-ufo:before{content:"\e1940"}.BnBFontleapfrog:before{content:"\e1941"}.BnBFontfly-wing:before{content:"\e1942"}.BnBFontteleport:before{content:"\e1943"}.BnBFontswimming-tail:before{content:"\e1944"}.BnBFontclimb-mountain:before{content:"\e1945"}.BnBFontburrow-mole:before{content:"\e1946"}.BnBFontmp5-SMG:before{content:"\e1947"}.BnBFontstun-grenade:before{content:"\e1948"}.BnBFontsawed-off-shotgun:before{content:"\e1949"}.BnBFontpanzerfaust-RPG:before{content:"\e194a"}.BnBFontsteyr-aug-AR:before{content:"\e194b"}.BnBFontuzi-SMG:before{content:"\e194c"}.BnBFontrevolver:before{content:"\e194d"}.BnBFontpistol:before{content:"\e194e"}.BnBFontUnarmed:before{content:"\e194f"}.BnBFontValora:before{content:"\e1950"}.BnBFontPangoblin:before{content:"\e1951"}.BnBFontBONK:before{content:"\e1952"}.BnBFontKleave:before{content:"\e1953"}.BnBFontSwift:before{content:"\e1954"}.BnBFontice-bomb:before{content:"\e1955"}.BnBFontcorrosive-bomb:before{content:"\e1956"}.BnBFontexplosive-bomb:before{content:"\e1957"}.BnBFontunlit-bomb:before{content:"\e1958"}.BnBFontbolt-bomb:before{content:"\e1959"}.BnBFontfire-bomb:before{content:"\e195a"}.BnBFontPlasma:before{content:"\e195b"}.BnBFontCult-of-the-Vault-Potion-It-Radiates-Money:before{content:"\e195c"}.BnBFontCult-of-the-Marcus-Potion-Cooler:before{content:"\e195d"}.BnBFontCult-of-the-Dragon-Potion:before{content:"\e195e"}.BnBFontHandsome-Potion:before{content:"\e195f"}.BnBFontA-Harmless-Potion:before{content:"\e1960"}.BnBFontCure-Hangover-Potion:before{content:"\e1961"}.BnBFontMoxxi-Potion:before{content:"\e1962"}.BnBFontTinaPotion:before{content:"\e1963"}.BnBFontarmor:before{content:"\e1964"}.BnBFonthealth:before{content:"\e1965"}.BnBFontheartbeat:before{content:"\e1966"}.BnBFontheart:before{content:"\e1967"}.BnBFontshield:before{content:"\e1968"}.BnBFontmagic-swirl:before{content:"\e1969"}.BnBFontBarrel:before{content:"\e196a"}.BnBFontclaptrap-water-gun:before{content:"\e196b"}.BnBFontheavy-bullets:before{content:"\e196c"}.BnBFontrifle:before{content:"\e196d"}.BnBFontbullets:before{content:"\e196e"}.BnBFontshotgun-rounds:before{content:"\e196f"}.BnBFontskull-burn:before{content:"\e1970"}.BnBFontskull:before{content:"\e1971"}.BnBFontIncendiary:before{content:"\e1972"}.BnBFontIncendiaradiation:before{content:"\e1973"}.BnBFontRadiation:before{content:"\e1974"}.BnBFontShock:before{content:"\e1975"}.BnBFontCorroshock:before{content:"\e1976"}.BnBFontCorrosion:before{content:"\e1977"}.BnBFontCryo:before{content:"\e1978"}.BnBFontExplosivCryo:before{content:"\e1979"}.BnBFontExplosive:before{content:"\e197a"}.statblock[class*=bnb]{--statblock-background-color: #fafafa;--statblock-border-color: rgba(203, 206, 208, 1);--statblock-border-size: .0625em;--statblock-box-shadow-blur: 0;--statblock-box-shadow-color: rgba(254, 254, 254, 1);--statblock-box-shadow-x-offset: 0;--statblock-box-shadow-y-offset: 0;--statblock-font-color: rgba(79, 82, 93, 1);--statblock-font-weight: 300;--statblock-heading-font-color: rgba(79, 82, 93, 1);--statblock-heading-font-size: clamp(1rem, calc(18px + 1.5vw) , 24px);--statblock-heading-font-variant: petite-caps;--statblock-heading-font-weight: 700;--statblock-heading-font: "Probert-Regular", "BnB-Font", sans-serif;--statblock-heading-line-height: 1;--statblock-section-heading-border-color: rgba(98, 97, 108, 1);--statblock-section-heading-border-size: .0625em;--statblock-section-heading-font-color: rgba(79, 82, 93, 1);--statblock-section-heading-font-family: "Roadgeek-2005-Engschrift-Regular", "BnB-Font", sans-serif;--statblock-section-heading-font-size: clamp( 1.0625rem, calc(1.125rem + .8333vw) , 1.25rem );--statblock-section-heading-font-variant: small-caps;--statblock-section-heading-font-weight: 600;--statblock-subheading-font-size: .9rem;--statblock-subheading-font-style: italic;--statblock-subheading-font-weight: normal;--statblock-primary-color: rgba(98, 97, 108, 1);--statblock-rule-color: rgba(98, 97, 108, 1);--statblock-saves-line-height: 1.4;--statblock-spells-font-color: rgba(79, 82, 93, 1);--statblock-spells-font-style: italic;--statblock-property-font-color: rgba(79, 82, 93, 1);--statblock-property-line-height: 1;--statblock-property-name-font-color: rgba(79, 82, 93, 1);--statblock-property-name-font-family: "Roadgeek 2005 Series 1w", "BnB-Font", sans-serif;--statblock-property-name-font-size: 1rem;--statblock-property-name-font-weight: 700;--statblock-content-font-size: 16px;--statblock-content-font-weight: 400;--statblock-content-font: "Exo2-Regular", "BnB-Font", sans-serif;--statblock-table-header-font-weight: bold;--statblock-link-style: italic;--statblock-image-border-color: rgba(78, 84, 94, 1);--statblock-image-border-size: 0;--statblock-image-height: unset;--statblock-image-width: unset}@font-face{font-family:"Roadgeek 2005 Series 1w";font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}@font-face{font-family:Din-Rundschrift-Eng;font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAFSAABAAAAAAy7QAAFQdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GYACDEgg+CYRlEQgKgvMAgsAeC4MwAAE2AiQDhlwEIAWFTgeFJQyCSBuFrzWq1+xw0B2QYKlexRhwhz0OqMHqHYkINg4Adr9J2f9/QtI4Rtvpt0MJeSiyYaRQa20V/X56bzQSqYxkv9NoFZ6cSK426gr30k5OsllFS+y86inJDnMLNaFkGQqeKxMfzQmnSgZkxUfDgYtbNJrw9UBHwSs3saCSIyENia3rJmqkEv2KVGgVD4VNF0hL/O8b+9CfbSM5k9yb6qL8K7dx0z2e4Ht7viyc4AxsG/mTnLw8z3PI/r7GHpTt42kayJpWQGEYBRi1Rdei+p/Sv+YAv80eBCkJ4SGIYgMWIiG0RUpZ2IE2Vkx7oj3thYty6dq7uXThbS7qai7y3y52Vbs/Hv//gN1t73fCQDTAgEKJtPma64v+0gJSBYUECUUUCSKICgpi7Jgn9MzrPxtiPN7+znFvczxsHGRbFX+ZXFsJuiEMc8oQBaPhKuPh/2nNvuohTn/OAGYo3MlATfIB2fl16p5XL0tqjfrCo1pF899mBq0nr7cR94oY8Gd8RU9mucCuZ65fkEAqUWIjylRE4LMql0OtuR2341lvSzLGEONC9bFcTLZkM5iCPnTvbvy12hYtkXxMmhRFE8d+4V3px3CCJBQOjKD+By8H+dfab99cYn99soLoFw2VUH1RCZm5UrlD3EJlqJoSAwQwzm7KbSWTfsGNyMT53UgVKPBBa7+9L767d4jYYPa1FCQ1MqGR8iAtEsrzy/0yf3wJU9hMWt70bAFhU6TxgPomTr1rhUGLqGTv1dknrWWKLWVGdhAXsl5tRkv6BNxeRVQRVu0VXZrK76ryuuvYlbzk/7eW2vmXTIALrJiEilBVsnJv5ugvBHg3hHvBuwsAPt/IKpXbpLApASmyhEq2qt62srr+k6lm+94MQPxZHS9k3jn3uaio5JCr0iU4i+UsZxciMAsqAJRMAZRPCL6jwIvkJaYLMbd2LinKOfYuKhdF587zr9Nc/zcEypx75xJMXQmndu7WGSfpf8lfFhikGLCOcj4C5wisH0nnqLES69hlF2hCPuKpjFPXbjdM5f2m5V5/9tv7O7SJjl0BlSj5fZXbfvqX7kUXagsUI6Ya3W+s796732/xf7Buv/fpVogJCjJDOWwcQ9VezrDd1s3vvPN1xrIwoAkCpAPuQLQLELeX34oRsXD2H/YUvt5PtzexCkGLWgDM8HOQoJILpFcp+J5RkG2Kx4pngNLrWXgvr/Zl+RzbQiul0JzDKU1/mwpA7TDDf2AF/74DVDqT3yksKLwsTpD6JKVwK3XBDPYk8HAGVKXaxp4D4nirbXDYx1nuTWvNtc/uh+gfPuLmjt1td7QP5P41wf5/dy+e21uef77y3Fvhp69xewPJKYmH7cIT3u3dKqDiktK209GKOj5PvcLrG1w3tyrbO7t7+9VavdFstYtO9+Dw6Die9PoXL12+kkxJRE4rmayq5fKFYqlcqdbqDd2YX1hcWkaVyRVKlZp8oVTpDOcry6vraxtbO9u7ewf7h0cnZ6fnlxe3N3f3uHV6M8ElrPgtFMd4wBgg1swWZfM6pa3sGtljaNK5AXzfjH2ueMK/AYbg9LPVTK3caLbqvT7d6WwCuIAwOfP8PbEzYYENdjjjijvePLjgwYuvyOpAteYOWWOJNId8KCGVKBAPxmAZAxgcFfTveSjbkougWpq8/5qfenoFz6jJdeBM30irHdZ4YFy6rDcOHu/kEs6MisEZ7yD4MT/GmiP503det+TJv/5phCABfnQRuve8sJ1/roPPSfMpDgEnxlF8VEDxF/MazDuEnJh6g1uNI05Po7qYQ8x0GsG+b/WdJ3ilfZYgyvqhat1hI6zQ0bdWG+N1kALGeWRyhVhGqk51fRwSpudncaXmBGIIq+eFqMd2r+yS0Prq48xElE6tNIFCjoQEG4w0iUq0ISeilSd6fcGouNG3tkvKid+m91xjNL2H6+My1ekjsCkJletkVNkW7BELdl8yMKENuE8KUFmfrRYG11UurnT4kB80B8gC0CLGHnRsWgwdl6VDlhPB+nkZU1jFn9IsoX99yQhBQm3Ul8n95nzBWqMweXukX0pVuWrPNJMeCsg5zz2xqwRm2zUFTz2kZ8LznStSirX284gidGvQGvI2CtycqDESJyzYh3cN1AA8O1bmC9IE3wOW+BL2fgzfgoqCDyoym347eM3L5vBQvczPtLZl80lbW9bWh5qaaiOegx1Z0kOFRmVbzupTO2Gb8CfjrF1no/qhcvPBscWctA146KFuvdqYMAU6IUWOCByxbf4M/bqLYBfWHIcM4yz3b8tQjelDfTPs+n0Ah0Ivgt9//wl649wB9pQl4vPoJUfmWJ0PpZ7Oe1aAPnN8c5F7kYMcjFCFDBgO9QjWjRgjpKGxvo4Uzoe+6C7zzCyzMCpQESJ0+v1odBJCTypCHCpRzqmqihAAORrvUDVGiY4Qq6o6KvXJuyfI4YEDeAcDx4aJCCAHsEk7mJ4jKmCeQDwWcYy36thDR0I9qYckLEtO75oV5TnkfLT3YB8hT91WRON8hROVzdnbHwEAehTgU8TDCPIRhgGCeO+653xsBXEKhxT8StjchYhOSgCboR257gmRD0MEn+z3pN0f+cZvYJCgRWo1l8jYMm4+FWPaEiZ0wfAcohBWHTwoe7k3ZdlnqicEEPEsKcPJqQ7B8o4hCFDP2+5Pe6ClwW9JZmwINlalzMkJryuMIEj6kEL75k8Ekn+UdCtZKZiurrI5cE+glMIFJAFPVomT47hH+BmjmjYR21uPnKwkCcWr7/KquM3to2FM691NpgJdrcZsyfXKImC8byk5lX7mI1EOD4KheCzeJmaA4xJpfUGl7hBwT5y0ykGmlGMN0e7mk4lHUTkPGA6T86lKEncAF+AI2giCQ2cBROVh1Zv/d8epR0guu9DymUfkWfn3L12wczGsxh9W7X/kUeCsFtOffFgT5WVyftxwUjH5P1p+Xo2fXgSlMXo+O4ANadUWO6rDK+n3Ry/nHjc3owDWhc521CPdNME5rokspdRCVntVaMG1TJhPc2UCuF2Wjrtc/gOHBc44y2HCKLMPv0pGLmYNQ42plxnaDJ/FHh8BsB/+FGF96P0CtzWJMu+tDhMP54da3PBYHwrOHkTe5+PS9RKG0FjVj1tLSSNCxSPajAcM1AXAxL26IzErHgeuEHkojObeQq7k/JuiwfAEq+7oE1nqhmVjNn0lWVkBI1uOPMqILFbxGcMzatGksSu64teepToM0MUdWuE5OmbOBXZlSf5PjUo0sNp+cAaGiVvgnyDO9jEbTAXO94o2M6dAVS5ZjQySx1PO4XW4dnO2NrJeBcRiuOVqV2S+yn3v26kwJMX9iyunk+oj9pQLRmau1StCdVq37HPeWoXpgGhsp1ppcBL5pB40kQreYcJqXqv46cmUCwLXFUwLj1+DUNRkoesayxHBO6bPZM8+nLKXvVaM0z2LI4Mjp+j8ioadBnEJxsdo4osuV+O7IbHjPXR/ylL2c6x2C0ZA4BTlYmATP4hK2ffbAJy80vEZyuGnIcRBFxdN3BQ+krsB1sKF04J45V/qgj6kvq4/eYZgg/S3mA2Sx5hcobIcWE4joqG4TJjWMoVA97glxgzbOyPjD3BBYjuJgi5u25LtnPiX8I54FU2+znJcg23Y6Y6mz5SHs4DNAK6b83IcqwOdYPjrwUYA8CG1/wCENDPJdmaM4XfJJd58KlFIcgv3I9iCZLVZgz25ZA1CpPJUYGMCaLc6gCvvaQtIkYZwv7DLFVsT2hJFNKXaNqWApHBOEoYB1Uzez6qggOQfEWegOhnNfzVq8nJQYrBWel7cJK//gCqzaaupO4L0lKZkQMlroAyL350JkliIpkCWprXZ84CUBAJjYFAqAypmAfG85Fn1p1QLSPXFKYoa6Pdz4aK+RwnHq6JTOOKDpg1Cmd6ORK97WL2Vx0GGw9J1g0Eyx5gy6SfIc+LzdeveDKIFD+W18FyhDhPm30Dtl+PyjcekU8ktWE/iVCLMUF1UNgo0gO0SNNDTlK/hImx0lZ/GgmFl5HHzBykaji+2VwQV4pGOJ+AcH8MLVqTtujZ4l726w1pCeBs25DRZJBQFFYBSG4UEc2VMWfK4fYT/SPGIMbe0h8wguSzRF7FVqmUBbTDtOADX+3gkUY7DVd2w2XmdkQtOn2BXyqeuRnL5zYQk5kb5gW8IjNBPCNcc46r1bEZZH5ggUqBkmsYmIXbWKBRpTPHDI5WOm11WHy9CJahXJZssCGwt6NS47TTNpBDZPeird7VRnw4bc4gvCWwyn4Z6wcoSlUwEtFWJr1TClqFEJPaFHPrCfh7+Ga6jeRRYj+CCpRSnn38HX5xCXXWm/z0vOst+pTulYlxPAVeoadjcUit7wUFmDIhZIiwd8Z3TPMqojFZU5NvGOJuZEPQo/LISxqOHERaTl5toLPYtU11JAnWrYCkJKjQhoBr7BCqODl3nZ9VL5+uKFsdhCQmLOCJrjwvXjb31tiWdNWmMhK44xT3KvFQghcDHxEBeDPwqMTlnkOwnDp76+bPadYHXigIFsHRlCu4vJgGpTk38DG3BVAiQWbHx2NTSIMuhjeaOVCXSVe1o7CeRBNTg+kA41W3IuT7Jq5OYrj21zPY8rTCsGpFgCxRp/G+dsMsMddXtuGIoF0OGBrX3I9KIEBsrAktfWyEUGE5rCnpLh9ScideFq+F9eSf5k+4YkV0wADhqlh7IYaJo8txU5xXwxkJhF+EhjMuubktWjhYn8GsP7l/OD4nc/22uMLS8KojumjwX82hYW3eoC8/ZHA3moZ4b9J0rxjsBVDdgM3649+DdV7NDOwkS8TvCKiXuAlAJkYpLQqQV0u2gggMAvwxZDWbGMNmZqvV1sMlko+nDhr9+MJxWRrSC4SLEKzcLQWlQzocQEJS8F20TU3PQxK8Pkx+XAiL51JvXYOglqzcilPKKYhJis7l220aGuIXIoyQixmstQmsK9BD2w9COpq3kEzm3e/92IjFHTPgSgDPlIFHGg2Jx8j8plwCIfNq6nsutJDdRvxXp6PkQqV3PkaUTMMLbhnzaOIr16QbrI3D2IJkPBcYQ6WiX9O8DGp34I2i2WDLD0hKCLsFJ7drn3xQn5eQjEHHFoknrcE8KMBvZG36zj4epQ6kTfj67Dy6wgIMFRNQljLL1/kuynUwSj8KyMvM+tCjAY1ZVRMqBwMtoSacuY49APwvMmJ1D7q5vw5J8eUBF9W5isPC6qDkuhebMIWZQRN9s5UFz137SKXXw4VNjHaN5dM/XwssbG54Y3Ac8dPWRMh4GitiRXhfp8M3/gHhr3HGq7yqt+WmzcPM4L5hT1KlxEnemGrCQYFofFq2h8Wj8IN+ho0m53S7hUEQY4C09d+xxd5yOo8pf/7/p9GhRduBs5ygMi+OBoyR0O3WwGruvL2oKnCgIzVFpAFkD4KTF33sxabU4IsRoKKrbq0RoGRLSLL9k4HzvP39ZggsJWsJy3dm3T3En93/IfdMWqTKGyVkeKfyx3Gl44++XSDxqGB3gUekVx/gUz998DG5QDztpHafR+DcWEx7ebYO0ipo70h/AJIZVN+4Za8qJnw4trqdxzw9CpByxBSr8dUV4Yfr5VMpTXN49pIu+j5WrrX0i9JBkDY5xcFeo4HYbeV0PJlgZT+M6uioZQUdcb9jazvut5rIkSl04cW7/kHHIiTVBQY509BCBlKqZYdpa+ZClRLGouTjGV3KwEpDuZWYNBYkFkuHNKbyORHwtZk2/ZPKC6/6ZHue8ZwruWwMYN9KrnFw0SgpYNtXt7kw1riBBrrleaCB5iP566ajSsuGmbpgDKiuQ9eGpXRIAs+8bZ+/grkBewzPoCx36WcJTSMwAk2vXCJ+RK7YRMaN+MyYBS6xxlNPvRVz5uGaMoM4ZzrbLp2N3VsMmnET7oHLya7bVY+g06nnuTXSoScdmYCeC8+3Bg4gekGyGMk/bipToMIla3YeyYneb25G094SyOOhNFa3CEOw+wKNcF6yxbA9qOkuRK2oYau+5DoZFtbEyp1j2s7Eym9OnDomcBqfFjM1iiWkpafXQpbD0FtJXgt0RUpJUzeYsOUnvA5toMrr5lQL2kxtTNBpVPYbxGa1mFwbn9CrM4BxNd/XjbtcrKd5DfS0N6dfneIWjVexqhmG4TH+OCiBlaXlF5CCG6dKkdw5PYr+M1dIJr1zyw3H1lNMtEQmSKrx5nHnTs8O6+SiWhofvA5rkuWzOBC6r5RjOQ9ytgVpKgqUHmjco03n0cbX+cdrIWazMj6T1cy1Na4uUIOFOrFTtTD7MFh4cc28W63BUnncPP7bbKKbCmMeoLQ/iZIRlp7L4B5mSGTyIXC4IH33q0RC/QVmKnhsYc6kUOWz+V23dchHV9ChbFds6exNTmliw/8UlDAo3KEvqW8uFhynvg8pL7DV7Vu+PcTBEED460hqN+hHYkHTsxyuX1WbODf+x9wu1dR4wi4AlBLGTjnxc9rrohyWNopsnxGBKkWDaLD1kTCL70WSHV69tOd+0HrvVE8jfRLdgxjY1cgCV4PpgkFO+uoZU8jkTlaW3PllYDW3Pz7peeRARpkK6jwtZmyVAtNPT1zh2/Y3RaodH8wKiyxt5gib5I6MYek46faty2KXixdIWotnshDeJRNMtpxGZtopeG9UG9ZyJj5vua8v8rDTM8ucNQ0T/OF21nMZpmMys9JwIT8lTn3jEs/X/v59r5LYSjWdYjssh+zKL1h/WsekrijgzBG3eP4TyHE+INwuBlpO+lkfByxN4K4+TsXDqYNl5Jm2gbKxMDqCRCS7paSA5uGOAFfOYO91jITj5sJlKwWPOVXbwaOBzUWn4oPXTnpVMRC73LOlAWEXXu0KnhCVVRoIdUtZATk3ExQ4gFQfbKIEyqxW2Zso9YobYo9RNEz2i7QGp2780uqujfayYuTXDgvxOhxwijhAPAVDFXvw0Hq1WZ8cUAbOA2V7/oDBovjfhILGLeJDgumqzD6/G77MJXr06Ww1hPzgQ8itdARwAlrCbmOwdzHFsNGVTnXtFQQelIrCwzsZA3pTgWZHY7ogl9gMKYBZIwuz2p+YnbCJX31CljD5Fb/IX7PHfiVWDO65altjhWIYdh3lLrKelto2MIlorVSvRmBSQ37pNlHLibNr2hE3kSs/iihXoxf2Y1GiioJ7YjSP/Q1FsiXCcA1WgLxlKnNKFRSkIVjgYpTk2VxT9aZTLt4m/BZf3nDO7XGnB+ANWIhSYBfyxqZdLnYZPtLqiPdE9GBu0K+1U55Q6TJMkDYYj4QTdfEPSD3STWzZteutgRYp7ikAdpCwmvmzBBaBfDSjRCgRiU19WO4Uma4uaIQ/aUIE2cyHG1ISqyhRUqCzn3xpWssViq8AyJwWibUgXIqaT2cMTzSOdicGQ8fZIlccP7ih3rYurwYW6a7VYkPtvbqC7MytS7c7xmopc3AzUIUGvteJ8QfL+2lTvSDeLonhiurFyS39VAd/AkptM9ZmSzIeSSv+3uEEcGmsGesHQ67E/eGEB09LeaacG1JiuS1+wP1lXevjCi2vL6abm2Eh2lADK6JVVLa2XVIwNwGIdo9DeK6a3QZFBDA6NOYGHICsY7qSnaMjV7YVzofRx7YpgCxKNQ7LSt165zH/Cv2JE47BwpiZxoEIAQAuajR9wOIRzROJApcCfBKK6vXywnvhB4w3BVnL1XNZJ0JU3Hd++LAWnQb7N3ZY7KkL5BnApbsAsoN0abhR5cOx06mSqv72XBi69/0/HWPew9zf6VAXF6am5E5nn748Sjnb7hPTHAbNEX6ikAFZiUg3+YpyR84lWgAQ0qa4vcTZWI7gFf6M2xJLJbMz+y0X72hHIDwqQZbhpmTzdSnSRaYlW39e4vA+sPTh/0jAfF8cI8+kyav8sBWyc5i2CMsGIC3gcrAq4IwszljpdXJSAL4GJMZ6wcmJ/99XGU0SefedAgT/YGQxcOgm7QtN21oJdwBKoMjYDsWTa1fAnqm9WPkx1E2xcEdmM7L98IL9+4EcGV0krTtfEJJqSLS0mZhyetLSR+q4RfqdMW8EccP7pLnaB35K3T52XwX8wxcBCZrjI116Nb8Zw0e5QEsLGL7wymcvPbXsg/lcK2BOssH440Fy1GwKl1vvoAoP+4wiXeE8AYdP8yd6G/Qs920ujFPs9pq8yTMp7bQcPt0VMpmyem+gR/TeCB/Yzx7GVju2J9l5piR2OGl/sD8wSix3upaQ5CdYjUsxqZoizKAznAvb2u+ELMABChGN9I1sTMzjZ1R4Q4AZGT27wDnobvLCrsg2wEh8NAt63ywv5V/4Ng74lx15XF8TL49VFsA3c9JZdx1pULNiZqVg5Td26cKB7CfeSL+YwJ+s8iYi/c/YaisGt7RaYnqxmRsgyh61H966MB/HVtrCE2i+cHCom3V1e1Ez5xkMeBnwArMT3uJgeTAEDca3+uzEWylgC4WFAgh8SEKhJ7E/cpGD9lKgM78PWqdXlS36PLsuiRLoZVU5QcUh49WK2PLTBq14eav6zevex2s4DBy6M1Bel1f8UmOQfaPAv50YF5FYt+s56M5u9i6G5XrBQt7LQ5GKeynp078QvG/ycLATuZNH5XKpxqNjjIXDGF0HClUDHS9ev+/XhVs7H89d3AloF7701KQV2cCXy9R1vGeFVzXbvujj3egYanCpQyG6G7bJomWHbjUSVOU2XpDw3dr0DaT+JrccsZa8XVMYAc5FzQF2n8G8q7N51dYvpemcHDc36uhGoZhSye+BjTwRBTnzgRCn6B1PSyg4u1NTms2Ib7u8yhmGFAAcMSyKlphXs+8lQ4jvql2bhCFxs9+ty0UN7/cfLM1wgvXM74hkr6rvz5UBwl2TH85jjCceFVW3PS5uLGgokeeJkQQ0FCouXmVJlBVEDoQ5PFNmVuiRemPIVHIGvx0cCswDfyyMiuy6zeufVusSGpGSPNM/0/39y/NNToK781we3vk5umf61UGEccFGVwAOc6097aqPzVLxI6Xtj1x/t32V+nrmP7x3IQ3GDfX9h0PfR9l3D//aBOYnNwU4y+Z4F8+Rq3B6Wz9esPbjjxTFZyPN+P9K3kQykbXTGWqwhtlfLtP1zJSbHipQsZV2uWSctD/CAc8r1Y9vPTObLWRYQMHvBGs5WST5msjlYPXnFAV/nTN3uRp0VUstybRpOvJADswBMTRPRscXkaserf9zQwENduvO8JKsSL13Zma5iqPuXT2+i41S4elw8jh6s0IilwQbRJSgG6ZN5pnm/QscNHfLxwsZhNiLXkOQoXOzLX8dSIusXu4lVU5l68cwQ7ZfO9FwfOHJt1gaYvbCKmwZNbrkuidNJJFcSW9WAe1IlJVCzW/h/oWTUivCeXMKTrAnnVr57Cv4QBh+UtBp+IwX3PEybekh0fkWWFpq9VHasm1w0I6eiQWAj+ic0FUqCgchgUdmWpKmIWHPeCcYhqKMtmBioaRsuOqCP02mqWCuKsyqIBujJlcXiNC99FIMJuaXHuymFmLAKI/ODNeB7TbcrhRKwgIQIRLeTgkGh3PKHq4N7xKZ5o7P03xqyBAkyRivji0f+r+acdE4/0F/eXpgc+H0bd8Hr1Oqlwj67sl08apdC7Vt6cZOOcHB609dFqUDvlB5+eajmO0E+D8joNXOWrVARmEEIvlBCvpOZAqD5we5uh8yHHl0Nke5Em8UhZkF7kJMO5me5JdCzLJji/M0R5PtyZDd/xegx3Rq75oCWbO8oRQxLErVvc2vmxGQC5wNUa2OWitK2xDFVtKih5bNblh7sy1b7xCXtS/NUPkaHXwqm+Ly1/VqrkSYoluAoOF4337AxXKFODpEgwpiQMZ7rZ/qEc21q8ey2Ei4Rc+ilN5tLxjpuSiM0It2LJZel7k/WbdlcWNhx7ezGlegvGcn5+pCbgkOGw4rHw/vYe6OCSlWd4cd+dSm9HO0KW31xSk709iB5vP2Ovhy1RbHaV4RpUxoSQzTBSYqM7z8AC4Bv19mlgba97flT9/0WSXXVFAt6p3SXnXQnOuBN+kmGggU0D4m45kp5sqJNrtaHqP1NzAw3UezWUROodTuaaRann50pzLZeujzuiiage1Vv0spjL2BodDrjSIX85NGIDGXywRMGS2R1A6TmFtxBBGlklEcbxVyTwWKJPvx/Vwb/8zw5sjtUIjOJrixF125lPlPllxC1NQZ9FYgVQh55qI6QK/A9rNJeelWHoKyX1YO3kIdV9t3k5YgzcHtYJsgpL9qQQy1+2lX8I716VJ35KzZJIo4Wm/23arSaIfnVdRpfTWqh29E+sPbhykiTEq7Kks0v5bZcHTNuH8tPK/u7i0giPhP29lDK0GN+6eDzIefTwX5j6DJKT+8LoQz9uwvKQ2tCQutCSPlRSaD5znXjlFL0Lpk5t0M5UpIv29XeZrzuz2tgFzB5OTrZhXuo2fVyyD3Q101ZJKSJj5afCHZNLF7s7aLYQAn5yc0JdwXB9EQIKYAwDcoHQLZeL6VYq4RgEgj53YM/TPLFnWLhaj5Yb3/cHpZR8doJrEgD2Xp0YgmENQCCfTgrHI3IdoXjSdBsRS0hhzQ0wpKVmmbKHravClY/mmqGkClUq1fiiSfKnTCGd+aH7gJ7pI2iauGDqvn7T38msqBFnqtXSZpPbO3tKyrDOTG+mhR8PeDrDLr9stTgO88IhbeS44NweVtGLbXH9jYNbXfH7gC/GhQSn9chtkRUKv0ub/A/6+vW8LPWQxzG69Sn1ej9/s/1Ko0gaPEhmswGw31A5f/CpjExLim+oX7v4kpPdS6TI/ezstOY/jyFb6zKrzVC0d+bGW/ZM21X7ZnrUI+Kd+pkeWRVt1bn0p/lOuKQrQ5mL0TRwdnKxt2HpfrzcBYMa6pqy0iRa722d9uO6ytpAXAv9vchUWBXaGGJub0eERNPRwwXezEQZ5KfKJUOknK/8N8NP0F3rXMscs60wdZoZNUNR443NO1b6Hihp3PLdzvt7u24wZsN346yQzN4rsEKmbyreGc3viRlxRKZH56Q15iV3ZgJOZElB6ySbTFHUdPjFkeP9sAqMOW4eJxXhCElCQIW93QB0Qp8pWkxgZ9Uon7RzgbpQn+FXP20IEmtTaAhETB5wL/VBKgiGvQxZQet+GJ6mUMzQu5dIfQM3VfFmoHtUYQn5wnzpc0jB6IvzTnhzt8v5YXd/+Bb7UWJsXpkN3ZFR6b8gw0hBepwTZ6qIgWtVAV+Br1WbRUZTIHKt61BcZSRWdvUXkcsFFBgN+yQhyg7hLhC+gu6D2qjfE7W9uXn28M/gcEFspxb9kwSRxUovjEpnmF45vhHzRky1Xnw82N+GpTwh9/3TjvVo8Z0G4IOBMGPpOIe0PJiSfjPwgmPz57nzEbY8Gy2Is8hyDHN4RSlPVMv38mX4mfxUCQtPlSelRqqbWivV2nzsnr6C5dHb9vDI7P8g+Q+PbN09wSWJPBPOYsu1MsIUFY1inI/S9TINh1lWcwghW/HQ1Fp/XqSUwZ19PPhpkrpe254eU9W3LDWe0RZfKAdXxi34sPlhwWII0UdrEhfdmCARJ/4T88nDMAe0RWmgri6DSkcqSJvJrtUHBFPg489usiVzeJQflJjKzvNj8UNY6brP+dFWzqTs8K0AjUSZnrlH3luyzQcwpcbM9RNqUgVb6WW+ZEuAAmlDLWkllMSEPiUVWuTp5rRiTkgfeIjNQUY+ZTDOBzRS8oq6E7FsucqMPxf5+eYZmSe747NXuzvfQX7PttdbtLQtWG0zHDLzqPtFkN8qNIuCUSwr0bG+lTE0/y5YT7sTLffru34TR1V3rhwtL7i0IwFUp0TltgZLQDRiCVTUVQWwiU1UXCJEuDgsVRciwsUsFhh/HnxareFECxStKspQ5DRVThLWvtMEeDQIGlMtr4lF6HHq6BeUwlj5Erc7oCYbn62RRXTHbAbV0EZS8DuqvXfjSnA7PbnQr1mVO3kKuwkS2WKNcTKTKw9OCVuDyvUxJ0sNyW2NUbjMUCtEViESZRKakIlkiubhTlp9DOFr22vqV5uX+pzKkONRYTNPa5c18yJR+3M1L6lC+3VNSu7Tm+kmtHx1fVnzo6ux5zxKnbqk0IVclnK51epsrNJFZ/k2tjvlkmfPyEh15HDRKKD/3IlfdaGYDP0fQk4zMZBtH/G6QgwC1B83K08EsAcG5IkAlch6/n6FFjgCG5k2BnH4327c/oHN+znAQtAPv4sPtVWos9yjnTN6NjvvV8TOkkslBuTbPFNhDRgAdBOWrtm9VrPeNuJCo3RBwSLBqzE5jgB0aTZkCz4EX8WnGorNWQ59TBjxnuGOAQYML1B1DFigDgZNT70qK37g+a7H6yvoG8JNibKUxV12t2qrXKtj54+9UuCJz7cZ9ZmQKTTB2ca2/QHFIeUtGioY1pDdgMjUFIOVewF7cOj8PtAdjfAIeIm4iHwxG7zW1+gefc02b+tGWV7k9wu38Xkva6fSx766PEocmW3XYpXE7Eele/U6erBDVQEtlbnRYGDuiE7AJUNIrm2z+R4vBTT9XL/j9qF3nol1bV8Shs0iK/HB2BPl3Di1yWClOSdysCNqWu9r+L4cdo65AykDyjF19vbZIv04a08XfXB2jJPUkQzO2pUcxx1hDCNJ8wQ6kjH6eQd2vTgvz3D7e1zfQSx2V55NEZrevbCeHqg+UZ8f8tQ5FbuHAcINrkeWSIOSBOHC7/WCJKnEzgUlf8YuhBf/wSa18t48v6m99nR0b5fJvONrnJHg2WD9jRn/9DwY/rZ908Y6319fYxmbVNHhGcJLSyV1tfffxO2jF2mr/dtnAXO1GuH6zu1Z7h9fdY1n7X3ZxnnevtmSM3Kqm4drSK9mT872A8+335msbH5xKnm9pPHmlpOnlyCVGcR+gg6ykRdjalunPJR8zoV5XYo5kvzmePYUkpXr8XU203RArN4YBbYiN4pZQ8XWCxGsMeFnka0AhOalhSmAY1AX7sfr+Ns8t+E3gg0thjtwCXzq2zgl4yLwIy/lIsgeWFH7J624hBlbl+VulI1NHVji/2IVytRi3/vho4siTMZJrqN8ouncvij6pLbMazCqL9wKZHpXVrPU2FWna585NnmmcGlXN8qJ70Yh8Y0oEGGzDqV7yeNtcRo0xMll/97bp/Fau4Om984P8hOTA541pAR1I9HgI/EpIiCioqSQf0R8tTAG6gd+vjT0CtL/YCVaAli/wvXrojWCkJ2RHxJr27rVm+P27fv3vXyvH3v1l0a3ZoE/fp2x+7d+16/md+3Y+EFr7Fzz8tvtu/SpqVH9mpuPUs1VZYmkZC3kGp1DUnRBlqw596ciRwcGpsErYfiYM5wgIihS5NLNSYDj6OujEGrYo9ou707osBe/ybBAQp2SMY3gI8/8jnK0e1TCtnJpEVLyeygL9Miw7XF2YZWYBYIwIKgDWw3LUPkZxClOtepeKtjl2ShyFtIss9bjzqj2Gfd3Y0HUCNt93Inpta8b05McffaRrsAPHf3arTP2oPt170faxLNiW8lQGV0FqrkgLfS4f0+RBaAoLv/ck38Q9nr60mH/ObWvOuT/voTx1obTx5rrD11IK3Z1NIYldLQEZXU1GJKr+4yQL1gcYD1uyglx0am9gH2mhVsaaxkPSRZZ5EJVXZ56MoqErQV+QZDwDeTxNNWagawAHgrdJevpxgfvz71qUsw+SaJfBbwxtXjlBjPesVzF7uPjoB8giRRfesd+YpWV4Y7zh4fh7XHKUKyxByh2APnhVXjvHAe2qLyOENFYXSG5H08Kf4zeVlCYUWKvNCElE/CanJwi/P3VYNwHTWUd/2qZyPUn6rHn/RhzojmJXKr8010+kXNYJ7SGQ911uuFqZ7jEEcydRxpENP3/VvPD5IW0q8A9Yx6wInmw1A8sA+uB8Iz7o9cQ8RMP1hNMO0RXZDtQpdQOgrEF2U70cWUjsS0moEWm9QDJ0yuEbxwjo9fOJ2DJhfs6tsoNOsrBVuQBNzp5iBjjAYBi8g2qg0dyQVZBYxQqHIpELFkSg//0+4llyWjItvwtZxOeUrlfIxSKIHeptx3BnOBSp+XF/lOmVqrC8vTrJErmMoQofId9Y2TTG4I8Ym07QUe9JJfJnBb91l3d+f91uH8FlwHdfgyM2PNZ+0gryWQmqVA+GpcevifSL0YMwKJVvNHnv5y6MkdLu1Mur1mG8qZaC38Y3By2WfY58Icx3Io43WbHsbqiSLqQ4CVyNGGWzAg1R0djPFwBKHPdQ7RCngAmSF6aQEyMc1hdtrwnIux0IesZxjpAmDQfl0nv0zY3TrgzKzzpU6KXjqjQJ2kKapmvhJbdGGV8zmNkqk7KB4YfkIE1gvTWbzbAkLBNU1JQpElKaawZLkXI4ry3/79nKn7Qql7XGS70Lxlj7lvkhHheBaYZTn0T1T/GY2xL9EdzIQ5VfxIM4fFNpXQ6FIIhXOnpeXvA+uLk5VcxCXKRUMXOFCD5h0xA/2VhTnAHLm4kIwp/smIgo5QFy1skL/j3nkboj9adu0qktiKM9pOTf6HIKw/X9x2jz8IM1ADedeuMrG+dewVYnKf4MHmVf4ArBE2wJ9afcWg8M3M2e2X766kb4g9DcFBjJ/h4sIOlvsZrPY9TmFMVkvUTC3LneeocfgO7m132xejDU+Ss+P8EpmuMsBYBRCJdHTXd7VfAwcrcP4Z61IVsK5j13WShdfY32+5sFTrfoLamxxd35lsamtKiqlvSzW1NpgS+VoNT6gxsAW6iCCB2mjzcI7LwndNIV4nP4hH7WJ7OcVSJwAJgf/ADOUfmiLqi6mybuSm3ot7qDFdzre6MVSpU8/cL729lOxI1WuSaKG7igyGe65YtS8kskjBuiPoztsC1W7bqfbqlE+aTddoH9lqEWrHXhurdpSxPSm6Ygn9mu3/znE+t9PxwKugqG0U78/0k6aoOPaeEAYLrIL/KRn3QEg24H0RfHojWXLsvae/uBtFKw/ExG//aXHbvfnj6CjearMmRo7hsBjUs6r1vTlMejWzyh9A1CPUN0uiCMy4zPaXi9Xq5ZVLVQHln7PS0Py9VwXhUdsW2Okd07gNQpD1AY/2pCvw59lsHLY/X5w302248a5elWF86TD6dcarWfFhnTRtgJTqKPipOVjA37dTQhy+ECeHujr9Cr40d++Jjm9DWaHYrL0SRCqPfKtLyPaLqYITiVbAQaCCKtqzXMw3seW6JF4nErrdADfiDZI+0/fg9QONlPRakEe/uYFuDy7897znfUecw58H+Ny6CA4NtOLXa9vaDqnckQHQxvtl+0ZKaY+IHA1/Vc3Rnxbn76ladNIUG7jnRVnHKmyDFhXw6O0rGa/bNq/W60bl18MXasAsYTWE+I/v1iZRv3V58t6V/i/Mm6DAOySRIliCmSIe7M2C2SGJgAAZd6AtjdTV73VyRUPuF6Kmio3nuzWj2FNtK+PJu/+dYyz/7+VZ21ufrtOX375+QnvysRfL3msHnjAev369xrj1+s0TxvpCcGDR6/+tM5a/ebdGW39cpQdOVHLLaFQvJ3nq0sOjaSpadElq2JJtmiRLBsfDdlayC+kudKrSuPRgIVvrE2sxhazSy2VZwXD8lcdeatydo3VRvlMGsY9MlxBq+zstPYMTIS90pod6ReDuHK5UNlLxJahqUq18t2FRfehnbyNt14bd4a3toUfsmFuhnLWJs5OfqA69csksRysI8ebwSJWW68goYOGIBSDKjXxiv8pGYQYtzjcpoAVFpSANE8WOxCrNCE4ZXeJm4LXJY8vbRLLDG90r4vcTxSuMhuOSqAhxxMd+dT3zL5Zl0piD/jyqeml7bWuuXrQRVK+X55tVtPh3zFQS8hxyFoFAKqLbqK47Le/hQ3AYXKPoYt0IEPuHSf6yJiNZRMu3hv62QPW3gkFJaP2QFg6nJBH6CDMx6NqjDu5U5aRUndXdROuzPaLJ47PI/+587OLgFcKPi/P3+S0eGnL6a6BR0YpD8tv3CtJ1zfvVzHXVILwePqiauv6KTOEbMcvmJNI3xNrx4F6aNo3kfM+VwHGu1uj6XlxfAPR8XRySA8C38xriGrh0uy7PlUf5qD1tlDrcCvlrO/tWGCBH8Udye1sfkO3JUjDYCqx0FeELLGuellUoQRCaLI7QR/B3Aq29yvCnU+YFOK3ZboFO2Xt5oyYsp3HhYMcLYCHe/9rTaAc8vfRbSTj4TkgdFMWipzb29CirFQ0pTimqYrWijab87osVS2BigDPKMuWfoVUfJHgusJsK9BOLgDmA35iT3XhOkTPa+N4pdA2DVY+M96tieVKFOcZPOV//wYmFBETmprl0BKxcxVETVNAxuHgwm7oPRfFbH/4e5Z47sZwdOphovZsM+Ly3O2IbugqaJw500UGlI+6fBw/AyK5eLbp6yyeM3CysrWkl48znwF/4cXHb/ejHzZz0VTubVwlkMzpGAG8BGXoLPKgF4SHc3sR+jay6fvFEnaw9TBdUmOZ5de48CVbisLWmo3zRvS46vNbXCYvX/mtJ+qoLy6zAehC1IAvWCkUo52JkPgmagTkPDoqwMMbNEbQCb9QqWAemJW8HgTd8pZ4Un0tYoKuumtNwrnPuyCt11bCIv2+Fjtvy9gFgatW/JDp215nObJU6bGfnV0hUhrwxobhYG2yW4M3av6nzT84ZJ89IlzrLxPEMnbQvZzpfE3VGyokSvGOeT26K4Wx5VrfrbNeoMIrf9F2fbCUkSBbI8wtjP+M/ZQWx5ZyMTNU+Ab3e7bu1SahlqZlefhOBnHEOeSzxBzUZrVsKM1lK0G7NbAFuBwI8ulFpriHqGqymxaYSj31cPFNnBGBayaztwOZVnveDuev8QVgjbJCvnueHtfBz2i9fbMOFP5ByaKRYogcOerXcPS3sdnXUenU6W4K7FkMTj5Waz3tdAX87MUNzFg9TRHygtndE64Y4TyGDnsugefvS4lBeAh+a6fotedPz2HGOk8N9dCp9RN9zZk/c/4PTVKwvv2n9uGT0DJsFIIZTeGjP+fmkEXmelnv692JL3mfHSdSoL0uXR7eus5l8uR/+9peCtOqNT5/YT09X6jNxraHd4/rgckwdOmb80EcM1RBniMbNDVuJh1uJ3UTrWCItNCa9HQRYFGpFhG9whad3E6dOrjfTAW4jDhtOzAjawqb2PHDXtzCS9shNc9YvByo4cNJIGc8xqk8EwToOjczliM/WmCvYJmrzMd0s5FxBQzf2yx7tb4zS708E+u/lOL1vy5OerzxyPL7C97iaOYWiKA0DKcZ64H8NJEvowykl5D4oXLjs6o40FUPTf47wqY8vAQSySNmSJcXdDLo7hcjfVhjE1in4+rb9Ci03bMjbC6vEbkSuI8lGvOnVryMpkfUnuolVzWFhTjIXQLe2m8oHbcmxzwEb940Smz+LtP3/s7u1xsR8Ld/hxFLB1v/Uf7CgmSyE5NHyi4Qks8mIL0ergEYkGhKKVucEkkAGTRKXK9DKS7lY12qHRxaQaB2kga7XDLKfQpTp5ZrvRY+VctoYY+Bfjd4MqxuzDt8KSPHxtLC3Dyil3cs4pHRC+rFh9HVuD4OQvpGmEfmREYOzmDK/0X/t77DQvP3n+ty/5kx1KtkAMas8Nv4xWsUu//zfNZwl0GTXbDqr/O0S/QQ5X9WjuUy4i3B5mXpVw+5S94wT0mRk7+oHfOpf9Y+m7z808TP1uzkr/PqdX5xf+0Gq8qjvO9HOFnuFn0GYqbGQquLyyRlnd9eFK/lEtyydv7C2HqaXjd93UnJRZQNr9RhkOj3t2lmKIpDdrT8p87VRUHInQZPuAAJsRJg7/ZhLKfl3MjUtC/hO0DjfTd5ql1bEb/AJ7ubk3/yF04/Rhen+s5/TzkV9R6Ncq6M0tPrpN8Q2fQtk+cyHrFcK2lOJCLuljfFjxA2uUHILPvP97cyFUtGfp4KRupMHhFzekdDhuLTHnme6/k9wz4XHSrlcpxDhg2Hk7Cw+Z7Mfo2qUFhNJ2V+VUHE4J1Ypng0g4KmXxf+GGr4mxoUJcSFRAw9c8Irz7+yw8hDD1oj4mIs6rnJRThdoraA5jFE7neYnZl7S4uMPiFhLeX8K91rdPQKropRbbLt6t3/GARHnkxs33NWNZNTJPJD0aykMlQYCWMLVBKZ+6kEZDr+CR6laVWKJbThKKddI33xVqktesrWsE+cmv1GpEbaQESSyVFQeKSonjSzqUfWpOIDoLE24qgYocjfM6EIUjWQjLDBBC6ShbQn+AlqiQzAS6uOCBtJjazWWILhyzBPCApmduWOSBtbebjdqFUa2QLW7QutcqOnXbf79+8PKhpt25txML8y0/mm4Y/VfE+9068sLvpvj6hBMjcjYqYK30yIM+CoV8LK8egaKAoVOGyHPykVUpwB5FAdNYQriGICvJqZ8mCwjdugN5KWbh2sGYf/GzdFORwYiA2aChP3QkRnRZCZ9UojhjPcxQb+cK09pZxKApwNjSGegzPirsEVMC/FatBgJtnSCZPc57XvLWeFE3MzaCHUJc2HkUkZiBsh99YnzYbAmky+HIbWl2/HIhRxXWJbX+jpHHaGm0/Zkd+E4ibWFghgwi5P2F3kpL0ejZFrKGAMyuI8V5GJBgogJBBkCtGi4NFsb0WRLLbFMSQ5KOUyUTHMo9YG6lK4Xda8aPaxGUsZTm8HdUWMT5iL7VBhU/CY/n1PeJrW4gSLVdg41pDtyIpETt+dayZXy5O1futvLp09QBTObgW5UiPQ3mRusCNBIMhyqKKI4gPbbDEkakHMJEZ5t/Q2suchbpdwOuzuxMcY60AaFYKT00Ipq0y+01kXObQaEnAB5auK9MuDC5FWOqIaraDSudrY+o6EGdI4z8MDzdaaV+RmbLtbmo5j6YmbEVE77UozRZ4iCZkmSPit0aD/Fqf5+mVqqC0wXpTy1GuUxZ+U5LjSDqWSW3pk9FRqyCJWhbU6M1AZbyYaGEu4JzeibvCq5EnerZ2112ASTrcN3lqLBPCAlMMF2KJlcdSnT3eRtCCCgLoVuF/xAWh7VpqP4RdsGVR0ZT066JjrqiLHCI4EiBazgKPl7VZzoTxP/OFsAZhKAiZsixbTNYftWItOj24kVXsfOfXr+tJfM5eg/QzQyLIVHvhbiuwb/wMbTQ4TDXY9KDhdvCm+M39wtJp+qkI9IUw9Vw6FA0ORHNXt+8yU+/1XrbE3Mbr/q7i5TpJfFCDyibW7uyWK+ljXVGxH57t4gTeXztQ+t8NHCok3j4aTZEbDqOObyZHkkGv/NeXyG1LkufzXyv999KbiAhPaazOrWSILqnqqmcEu7N+DpCi4MQEo1kfgs7sRBk3v8g5yUcsXOWcJe5NN+xUPM9sdoN4r9wPmaJjSDxc03JAyk4IQSOvzISMUYcoH9Maedq6ahjAe3qGuRZLQf1271q3Nw3yGrcIh6twgERlwaswlBc3DVvsDRzaU6SajJoMCCGCuRN/osm2NEBAQlVlo69qMqFT9VJGB3Uq/e3UrKAp+DG8+5mmGvI5qW3vhbXAcH9/r85WZeUebBXJhMduXY34sgM09R4npT6wv38LPrkBOs7RFdY7g0IoUDK0i8TDseLhs7bYud6XezW7/A2KnCRI06j72eY2s7sj7VrxJeJck6mLX3EhDlsU+KOHf6Hppr6QTcFjTwelOESjP0DswAUPZWNGKo9uoDJ4QiRdlvNEA2M+t0Lw0DCH3+cSG3F2En+qNkAWmN/wRdlOlbiasFNDH8jO10FTwIP3a7VQEcy4TFCcaMgP4bMQLiYZSsBV2AtKWczoCrDxmVNQrawz76CgKYlPtdiDIZcF3YoXPY1OttKNJ5vCwoQaIpHcmRmPlJuAC+S4/V1BqD7vjeOVM0fKzdFKFDhNOAFc0MhXGynDvbY76M5pV6/OriGosH8FgJA9ybaizYXycGE1BLZUWSqNs1VF2F0KMVwiWtYn9RXctyfBozY3NTPGNEmhcbEMCupxy4kHQQ1LsVg/EiZIzJG3inuG7/seBK8Y8GWeojC5aI377g0ZIQpmcCq2xhmWIAyLbwihrmfOhmxOd81zEhNzaNw2hplfuLa9cJIcNarRsXCOql/2Jlc1MbZguImaGOCZIKTTEMTgYVN9IMblZTFrlYWyhrGxkwFKhzYIQ4t0aI2oK11NXOlnXL6V9p+JyiCVio9jp69R0RdjYceu3onLlptdhJJgEGbLVBvR4KghnlmQbYM9Zp1BYflcLJaccQ2wO0CgONv6rXeVWeIFR2lSDQhW5iHiuWE5l8ankCW1RgX9RBAQslTaurGTWoYydRwDjLWkwC19o2Hz9YM8p1RAI4SD7sqwr6MJHI9MzQERQPYGb7PgfSbB2kfMlXPuivUFeGnTzZXk34sgVQFtfZpXhC1YuUp8CtN0ex9bzt2dS0piFWoBBFbIDZrlTKWOXm60MB462gu/ZvLKqL2FI28xbv0sC/EGwyRHcNLY1HHU4KBWnIXPLyWmcuctZmBRNSI7OSLJlENXRUgXM6Ds9wXfiBSwOHaGjOkFzPNNbavgH/kh1+QKcoAhLUTVUOxnGEP7vAFQbMGLnheEQCFfuOdqDZDnCwTJhkKBJFM1M+e6E3/S6N5VN2yOML7ccRcOasH/ICUePZF2lSpF6QRVG7NAkagBW0g6CFvUUovNleHlLhqdl7iAYmQk1EM8XEOJtp4wvBT0AlecBlAcVZNxfm6QkvGJJzOpWk+yM+6e085HEAQkR7jucop4uJ+UwDGCQgljetzbUUinUBHLkuvZha40M092fjtoPRL6Uu7W8I9ISBqYJ732EGUa6T4TUAhSc+N0wWwx4bbLYzF7qszyGaYaoBMsNfpMp71WB5swxTp7eDqjT3e9IQS1ybAyEd2QNUh3cSsBeqZ5VGWdpd8uCVDQ7FGAdxt/v3HfyAlGgi+IbgpAQVCGa+byGotH4kG95VOKftZmjkBy5Zu9oBEqzYiz84+CVWZqL4AIJRmSZqGkOdeM5DmaiUJveHssHlWfCi0+kgb5DKrsRPMCWpY/m8ezDHOL5wHk0xatwU44OeOkcRIoJY62jJLiBPbW6OA6AGUITjHxBpMc225MKlXhaP6qNv8z0CWQQW0DwXcuMk2iYKQCGug+WsieswXYihjuON9DjXDDoIcwl6WnCYjNnltBn3fnlEXMP3ZMnMkFj07rfhCpGUjaENbhewmDiAMvFEMV5gH8eK8I3GO0VRVKyMNo3IgbHr0ICN2TbkUlO0nOBe0Z7M/D3X9UB5x7i6OGrhOwrnD0fbV2gSo3NEnUZt3A4bcbCDniQqTzxIKRQbSRpdxHC4HR/QulxpHlmL1YU2a9CK4S0rT+jtjW2t0ZAk9Z+ECTs8HLCfZzyUbRGmVGyupzIzemv9FfT7Egk8cKz6iBcRNmkoB10qPPZrszr0D0j5BaHURs9ETeiTR3wXIT3n8iqmvq8SWIbiFMGQQE2NwUYuNC5s3ETUQs9mpRlINVhexrxTqHqEW1753f9zjmD0N8POP/ZW8iCB8ex8NfX/od07qib4JCAXzmxspn9Och3DhqS1uqP7btYTXAmIez3Tw4NniL0nMbjflpZqEzZ+lUxmFyQb5oMGPvV5ZQy/lEZgKI9oLdw4tigH14VrRI0xY4hlHW3wHMGK2tsmuIOCtgL1gF3ySegX7CScVVmbEO2kW+M5OmDhlOZgYtoVxW8gk1qoJIdiK2bfV4/cBJvCWKf5INlosRmKIl8kRqyMc2fPxGe/X8dOG4Q8J45aaJx5LRmKpm8MqQs6/5fr3nCa4BS0H34p5TnAd4xmFngh210jyrxv9LXSQj6KFm/ksNVI/rUrLVj8KtbgYzpip5KEJ2gRSvIH8rXkvN4K3lMLaOcii6nz8dHx/uXnv0EYrzDler17fPU0Kma/StYmXb6YzPJ8u6FPmmV/cZCaUx/fXy99B1NV8llMgutZc9205jH2HNPyvgRm/2JICeUSLtacUc1dZcq8ZHRRelDR6OKOuQIe7kgPkESZcyFyH8moPIObvK17P1zB578dhqP+9VNDpBD4eIrOOsc/Q67+Ve6uVHYanmLzeb/uc8LNVnF8cvV47BXNvHAzH6Zc9C5E2K1OlZceUZb5ZmRj23JHP7sRMh2lzNa6fliStx4+RVBq/UabMhtG+9ISvtryrJRybHPmhaJt+2OPorMgOasd45WLZc4poKxHDet5gW8tZxr7CPtovETDFZoZTnwWTmxdckE6JtU466dsOqYmoZ3PnTUOQAGvu6fueEdOUIB2quVPxy4Fqowk32KFwDhvkldf9n73NiLkv4YfcrG9J+T2zm8MZznv7nmlszS927lxl5ySXdiJ4+8xJbVG/cHn02ePgHpByBO1+1ataqjqWmHrZBr8ETooOc5GRgWjXDZQFaqn+y4TvkRfYGIYa5ZVfzAm0mZWt+/Q9XFnWOSjxS057Fkz963IB9Xlg3JcSwMHbn3By3RlDZnqZeS7RzbWxw5KyymqlC9S7a8asLq8OaxV//QOdeUCi1tCrkunCQ6IMC3t32neyEkRnjOVuXJcZxmGglqgd6G/BVuBjhBc7Q7lEvrFqV/KCpr8V7+zNeLOV6tEU7Z6E0+uxChNjnrXOXYyB0gowI5BnkDB/EhtEvQfGgMZjQYtM6s+2SJ6zPqYigTtkb2tVkYoPgqBnHKtwj75d/OsnH0HGM03JFvdSlCv1kCTrgVAt/D2SSxY6KaQOXhDD5DVfUTwo9faUESkHQ8BZzF4nb1Dy+L9D9xHujaDjMfC/DszrfYU41zSOQHPbTpNABiJF9ty+iTrAupFIgbz1jjorEhbM/rh6ZkzgVeZSZkf6/QJC3tJbc/Oh6ykKwDEtmPwxOChYTNGRhMZFgJxiclckoh8isNSjbxbg8olQhQ1UgylIsWErw8SHNT7Nlnq/aZmIFreYXYgkM2lz7ej9qB3Wulid5XAE6GSJaSRLA5ulADE0PUm3WZGVFGWS4bAJkJgB2ok3EIvZj72cvZlu7UcYI6dZo8lwzG0dE931Ke+Xw5Ld3QGTkFkuTg46BWOXuoYamgpJ6fncUtq/7oEOWh1ISn0eIln/3ru9zAS6iNFxmlZU87Cq2N3D+8yW26g0dkIXCP6bnrnV5VlZJ4KreIMPM6PxIKLIxdE80NOPFcQJtjaxJaMGQZP4Hd5SR3qXutx765JfTjmqtvgyPhDMfIjwUKAohhRmQkHICDSZhLZCzPYmqaquDhFVKH4ezNBFt0La3815aDFPS4NBr2IyzMvNKsjVjGMHjo/sKdZdvJDHykCvPTGQAJW0s+VklqYvuCL7gmsRXdZU/bzOHoPrDIrdxBjqUQbgmiBuQhvq33QWyuKh+dS6Ahhs7KudKaA26OOmsFFBSYU6iIe8jw9IKVKWvGgthzs3hgFLIgmFc/eUkSpgwMmtHl8h7cBAORaCL+8pjDow/3dO40paNqZbEReVew+QWMEDWnoFlSsZrDd4at1Na65gpNo5Sta2ZGVxjke633MzB6J89CxuWY0oocDtLrgD03zHgdSsWCqFO4FgfXDE+lfbCic4xs2Svc4iO7f5P6ibW/5IG+lBf6b0yL4eY3yRQVVWZzmwvWV6sJifHTRhvR3do2JXR3Qc8ODCol6+4NqQQOGu3BC3Fj/fBXd87W0E9JgxeaLL2JbvYdmq67pqJB/3fDO9Tk/B4I02TfaEdY8q/SNNuVkBtFP29mSvpwGEDlgdD+BghIiXviKvHDJ4ZG7chXBwyEJDmD9H0iibl5NJKzXbhyUdrAZwoCifUqyYu1HSBSJJPIVJXLJdeJOXMWElwHP0wkKV0lBgPVCfCA5rUcTVYe2srpAO2BuP4WKUqK08hXTyiW3FHfiKqaQGcJBItFI7mGlU2UYezHDDHRbz9xRYLDaBCa6C/eAjqby+ZTJS7wfIlIoEtBXFNDk0bE7cdNN3KYT0JMM0XowZ7i1zJXIGTfrbLRTtdrazkTkbrlvqUl9EqBwx8lTIt/th4kVjhL4Kybw5OUrrnJVxdcFg+amMW0LGOknRUJs5okOU3LoKaIwZ76Pkx6KS59nebr6AQrxNBF0efRAYU4Xmz8QcFZruUGCKEZ6i1aV6ooDRjDrWnehDAHUOysM1MtmWi4Y0AMlq/YFFaKwPNaBWAnQCNHHSbbe0H+7CoNXehZGV4rDkytazZhfDGWbZS3/CTl2p1bfWxiULqp3yGed8c3tDssGDgsfSVI7DNz/de2sjhVkFp6KB5k/18gJr06VHbGt58VsE1QUwsjUo5PaH8RgTMs5kwRJit4QqPGx68GKirwoJtQzsWT7WCYe1NME8+WtAVhziQ6aS5UzY+MyjRTj8o45foVUDqqpyKZlCuW52jsMw0qCiuHE0dpYW1A5EMjU5hs6dcEHzAFTGXQLFEzByMO6OMGTbISNxPWImffJ140hOJNUntDgWAvloGCQWDSO2MOOZHLt9PjpWRujyTRcR1LmhJEajYkDyCKnGYZHqefyMPZYEdjctO3K5UA/L5FBc5PmSKgs4WGZNQ1/h44MqcCc0qS4Rss3bv9h1UKH8vXQ6KtKMUl9MzeL9qVrlFZgdutKH2J6zpxdfsOR1kkhxMRQLXSEPvxyemSF8kEaS9G4YIPpdkopDhopr2D+XMo3dlDF2RMl9jPoOLpws5igl83NU8oIh5RcIq8v6uSZ5KyBTKydGCVuXh0rE23KYSYOdKi4I0sePEcC5eexKen16oQ87GatsUBRXx94owozK+66xgFXL++MqSQ1wuOqa10ol+8gQWW9a1MWy+fWVfXk9oFabweZgS4lSDDvPQBB8zxOYjGk6fUSF5zlI76ToqYodeFCbNixGHuO9dRHkbBpcDaXDOLcw3KmDktNkemb3jrU6LBn/KKgacWBMf3reb2z3xQ2nam2t77iCghk60nCaobjaw2ABkZyQM4TcYE3ksej1BLHjVWmozSQD/fozGHiG4tLu7CdrYk0ayfjqtEsun1MYXEKZeXlbaztOCjH0jDM+2lkD13xWIbPemEFsLFm0B9BWrVUo2G6Ftdpa0PzxlbsuDcMM4Pj4wKadXgSGVcDyQ/agdrCY7Elj5tPjHbWI9VhpQkZMCqlD5+p41gFVXDN06xYN4L+w4SbCijPYE+1H7e0ax7V5b3ZKnqdgZ0HgLgOEN5IKnJcMkRUasaOgXWHQaxpLE5MafVRBRIgpJJ55VEgF0mB5dCm5ptI/Ya1q6V5JPTeSSRImRqn7Ss4s2wcFvuIpHKrNg5Jm1afMJgpZ8olzjPzJngUt/eUbUhYDNFWb6j6jlaMHGhR6VvvlGEvOknzV5nad1muRA4oH0xX5Yn1FfIscSoT5eOSV26lCsi01QuslWvlJW6zNjRefCxu1aB1v7BtQ1StmdcPaj0kv3A/WBONCxJu2ZsEKVJcPPy4Q3ATpm3IPLF16tkVD/rphHSqKy/78HVd1tLqB5QG7BXctNHLxf0PKAo92X8YxbXKgt6CVnVNtYbiY1lWKDuDLW9Bjxoul7AHJMm+kAFFMg1qwPYpVjNw2KhtDa2VYBOj740Gy7704k0mqrcDpXtEVdkqy8Mk6wq1S/NWR05lWutXliJSKqFlxDqp6iVJlTFTc5lqq+r4k1ivUFK/9XpXlby0lWq+rBZQesRR3CoJOXBjasA4SWLhTkIyMougTQdJdvGjqNsXfWGFf7u4bs1yvMm3gyFFmU+diDwCHvkKViaAb5yZAN8v6JjaED/zjwsFlDWv6FRt5d6NKqya6ORMbpnY+PcxpbPj6w/dSGtUtpSfR8KaKd5PYGnyEO7qqrigioIWBKdHKoxvuxmnSIBjH0dXKEPGUcsnXz3nuoUGPovMxgfVydtX+ighfssRXmGr0eWtvUb38s0b5c241ZuYFHonZsDpodfL/h35uwnqWr8bllaKOPZ7yP0d/TFBY/a3X2jFfWmplhWiF9M2PBXEgiK/817lVkMNuxu399GKrkMk5VPl+eHNq4I9xZx3pXOc27RMIxMN0XpHTh7dRkeUuXxJfTLtuv7Usg7x6aIrPzi0epe2PWP3TuZLsxaPoulO7ko16oYZWb63Pkwn3nhOmasC9MgOim0jUHMIzDGsOdE8K0/nRpHce9C6vI03G0K26VzDvUO1w+ZfSL4hSjs0/8BwCtijly3Yap940GGeLm5m0ZUa8rwxlysfZM8Gqdta63XD2nMc0Li9F2d+GMw1w6Vc5sT1Nw76un4wu1bLDNcwW7sVXLZ1eUIOEc+blHAp5aSI9oXvp+uGYi5eiHu2w/C0D9k1bvui0a0QtWUHPepKvOLVj3J8IWhL/LiCr4lY5ZpjgKA8YlkPLFcxwrKvQqCkeTtlYwflyiUsHMazvxmVTpRY2egJuNOkmz5jZT4HvDIFTFmVgZqaXrGqwiRs1qK0FEyRt2GSQMdKYKXU4Npw+PThZl3ouHZ5bDuP1O9QULZ8vEPJhoAnpjRGLW7RYBLaVZ49w9O9rz6O2cyEkD6CcX8HfdD9pa4n/R8s2tfSk8lgtFXQ3oHtJ43mhXhmwO9gx9AM4gHYIkUpoEe/DhmzOebRr6coj7WBvDFLTBCZiSIFJvnpSTYDC75yvIsDrMv9g10013ny+iqtK7JzZanHhdo0r0lPjaAGdbZbF6EdSpxbwzCf/aLmQLETXuRdQdp9X1vox1aV5t1h1KKmFTo2FGKKjvfkfHBHF4SYbM2c14ZhZnxx2EeLz1InKQ5kecZxChw7br1HEqvhEZEjtC0INnexUNG+kSsb5cYPFmwL4GE5es0PssdMKD69oiK5ivB/Xf2G9Ba7ra1ze9V7UFByfj+VjVaCDQXFWzXZ2qXlY+vJ3IBm5terKIRxLFfkj+zUgy46xKLysACK3HlMpS/uxG0ksB5EkUovBT0vIFQb6huSBAlJpQonSdm1Muf1TMi7szpoaTcmjFlfZ/vuSM89ScQ8gpTEJR430Yn9uTL8wNJBqKO/GrPuODC0KCzakjZGxPBIyDXLXiyg4si+XAzpdpmRAkzXnUvTz0j+nGg8YeDC6183lK5X6wVJb+hH0ewknbGIj9ExSDJj0el7/YEBeNEIu0sni/dXfoAo8+TQOrZthAQs/cdOyftHP6TPxMm+ItzKQC8+6Qn6N1Z1pQaGZSCCjBOA3MR/LPXeB/qvTO13Xbkf+z0lhBQccgHIxV3KipBeoTxXoXMUfAmCt0SYcsrcIM6a8DYwnFBoYkT0MV1MSv+TtF+5nmjKrgoFt3yOxMKw96l7UXBvU16mTQpDkhj2J/kZ6cCky6QfgQSrJB4qdNm0hAzLTDkOeiKVKLIPI10z00xCu0Z5MJFTKKSVENquNgjGaug84VxBoKkRGBZOdNNESxA+qZBeJM2P5HT3m58pDyH6vpBUe2X09RcMvQuZzxhkbx/SvqK/1ThZInNa6MJVQ7OP/MwMGAdM8K1kpLtqWP4l7Jv82ZO16MHDirh8QzoutA18ipGi8P5m4F2bI+ZolevBf+iU1ahDzj+ki2XvX9K0qbptCGUY74l9pZo+FHrB5IUC2oCGlUBhH0fFzw7G5omLFSXk57bQdQmhl/CaiF/eaMcJ+e5xm/Kc+CzsY3F5kPmVWJGJUpLHjY+IagvOqpCT/263cFozCut0AQalQ4jgV0CzlH3MLhwKL42yvOz0hQhokf/kFyrSdaaVMJ/oC1snXmeP4Vr+Od+6dHkeHOKFur11JQUEXQVbidyqwFTCO8BtsIz55jtdNwE/0W1kKhTiQvDW6t4cHvWxrVYRsBJJQUnwbHfBGkdAgIvKGdjlLyEwV90hGzA7QxAC+0NQDE9DtqiBhmA84x7CEEQewgpKQ2gVKYdCn2HncugGbD5hXHYTrMBZPBeCnArjI5cvd7Eq5MhXpYbP0MnG0tBfuWoligRShDPKlTMlau2MGhWqSWVSzZW/SGpjrOHIxOXhSpXilhcpZJ4xCfM1c4J1c8s8LEpakTexthPyMLcRqzqwgKEqHEuhWnEffi3c1eFgYWLjElpICUQyqxURF92t7QPZHXpPCkxgcEeplN9xMoDuKbGIFcYg5wZ9GlCdkHyZwJrmcolAgZhsAJWZ1Vg0sFRjRSK7UKBF7UT5chQgOylmmdQ65Ap0B+QrZPPFEjwClUMcSNzkNOXJk69ANtNL1Sh1BleQVU0sycVFqlQppe83qn8H7T2u9vwIlIIUpijFIK/w+1xCQEKxg4aBhWMPjwBA5ICEzBGFE2dULly5cefBkxcaOgZvPnz58ccUgCUQG4f2f4MgfAJCImISUjLBQoQKE05OQUlFTSOClo6egVGkKNFixDKJEy9BoiTJUqRKky5DpizZgdmlW49zpnyj17ABWy3YHcrXuoyHTrkh0/qseBqUbQ743W/+sNNhn7nuiBy5RuW5Kd+qG+5Yc8tt7xR44K57jir0kzGfe+gRs+/8wKpYkRJlSpXbroJFpSrVatWoU+9bDZo0ataqxZId2mzQrsP33vs0bKpSnZrUpi74EAKEGIeQQo6j405Ei1OcQy0p3GisNAfmHAK5NXjjH+VFbCTfEJFXc7ucem0KdGapkVttB9qmBe3QLj2gh/SIHtMYeDWy3UppT71YblFedrV5HlHc0g5ukf+Hio+E66yPl/j/PeCPpuuK7iQd4/xr/p9Lgd64Qk+vF/N74jz+NthTe/HhU5Baw5sfvMWND8nw5pfef9RUkJXJ5HvGk5VnjCbjYwwno10Gk+EM/i3+yYJiJ4znRGbSB5Ve5RXx5IF73VOJ/Ps0rUt13FdNbpCfH/kUfFO1OASe+hK+GpkP+hJMmV2iI+aXZCFrl+Q56xfXZPd1MV8AAAA=) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}@font-face{font-family:Din-Rundschrift-Mittel;font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}@font-face{font-family:Exo2-regular;font-weight:400;font-style:normal;src:url(data:font/truetype;charset=utf-8;base64,AAEAAAASAQAABAAgRkZUTZDvHzwAAAEsAAAAHEdERUYGQwcuAAABSAAAAEJHUE9TI5wknwAAAYwAAABAR1NVQhwJ6z4AAAHMAAAHzk9TLzJ6Y68pAAAJnAAAAGBjbWFwDdDjNwAACfwAAAIKY3Z0IDygIroAAAwIAAAAqGZwZ21iLwN/AAAMsAAADgxnYXNwAAAAEAAAGrwAAAAIZ2x5Zl3Th9MAABrEAADAqGhlYWQds/phAADbbAAAADZoaGVhEIQHGwAA26QAAAAkaG10eO9FfBAAANvIAAAE5GxvY2FlRJY0AADgrAAAAnRtYXhwApQCZwAA4yAAAAAgbmFtZWpADjoAAONAAAAEPXBvc3R5F8KDAADngAAABoFwcmVwBMWYFQAA7gQAAADWAAAAAQAAAADah2+PAAAAANZXCRQAAAAA4BCmmAABAAAADAAAADoAAAACAAcAAQD3AAEA+AD4AAIA+QD6AAEA+wD8AAIA/QD/AAEBAAEFAAIBBgE4AAEABAAAAAIAAAAAAAEAAAAKADwAPgADREZMVAAUY3lybAAebGF0bgAoAAQAAAAA//8AAAAEAAAAAP//AAAABAAAAAD//wAAAAAAAAABAAAACgGqArAAA0RGTFQAFGN5cmwAPGxhdG4AZAAEAAAAAP//AA8AAAABAAIAAwAEAAUABgANAA4ADwAQABEAEgATABQABAAAAAD//wAPAAAAAQACAAMABAAFAAYADQAOAA8AEAARABIAEwAUADQACEFaRSAAWENBVCAAfkNSVCAApEtBWiAAyk1PTCAANFJPTSAANFRBVCAA8FRSSyABFgAA//8ADwAAAAEAAgADAAQABQAGAA0ADgAPABAAEQASABMAFAAA//8AEAAAAAEAAgADAAQABQAGAAcADQAOAA8AEAARABIAEwAUAAD//wAQAAAAAQACAAMABAAFAAYACAANAA4ADwAQABEAEgATABQAAP//ABAAAAABAAIAAwAEAAUABgAJAA0ADgAPABAAEQASABMAFAAA//8AEAAAAAEAAgADAAQABQAGAAoADQAOAA8AEAARABIAEwAUAAD//wAQAAAAAQACAAMABAAFAAYACwANAA4ADwAQABEAEgATABQAAP//ABAAAAABAAIAAwAEAAUABgAMAA0ADgAPABAAEQASABMAFAAVYWFsdACAY2NtcACI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A+EAWgS4AJgDlQCTBGwAbwMzAH0C5wBqBLQAmgNPAHUDQQBzAoMAZASdAKAEvgBSAeMAkwHfAEYCWgA9A40AeQPhAG0G5wBOBxgATgehAHMEAABUBPkAFAT5ABQE+QAUBPkAFAT5ABQE+QAUB03//gSPAH0EegCmBHoApgR6AKYEegCmAhj/vAIYAHsCGP++AhgACAVaAC0FowCyBVgAfQVYAH0FWAB9BVgAfQVYAH0D3wBeBVgAfQVTAKgFUwCoBVMAqAVTAKgEjQAXBLwAsgVmADkEZABoBGQAaARkAGgEZABoBGQAaARkAGgG9wBoA+kAbwRLAG8ESwBvBEsAbwRLAG8B/f+wAf0AbwH9/7IB/f/8BHgAcQSlAKAEiwBxBIsAcQSLAHEEiwBxBIsAcQSRAIcEiwBxBI8AmgSPAJoEjwCaBI8AmgQ7ACUElwCgBDsAJQH9AKgHTQB9B0EAcQSNABcCAAA3A1wAYgNaAF4DvAAAB3kAAAO8AAAHeQAAAn0AAAHeAAABPgAAAT4AAADvAAABfgAAAGoAAAOXAJMDlwCTA5cAkwS8AJMHKwCTAbwAhQG2AH8B0gCNAvMAhQLvAH8DDACNAucAugbCAIUBfgAAAkcASgJLAFgBR/6cAd4AAAM9AHEDYABHAwYAbQNFAIEC+QBcA3AAiQNDAIcDPQBxAloAPQNPAHUDQQBzA2AARwMGAG0DRQCBAvkAXANwAIkDQwCHBRwAbQiLALIHtgCJA+EAAATZADkFWAA5B24AOQgAADkB/QCoBqEAbwmhADkFuAA5BvsAOQXQADcHKAA3BLwAcwLb/+MEHgBqBBAAVAS2AEUD9wBaBGgAiQPSAD8EhQB3BGAAbwT1AJYE9QDDBPUAqAT1ALYE9QBCBPUAxwT1AK4E9QC2BPUAmgT1AK4DPQBxAloAPQNPAHUDQQBzA2AARwMGAG0DRQCBAvkAXANwAIkDQwCHA0kAcQJmAD0DXAB1A0sAcwNsAEcDEgBtA08AgQMGAFwDegCJA08AhwM9AHECWgA9A08AdQNBAHMDYABHAwYAbQNFAIEC+QBcA3AAiQNDAIcAVv+gAAAALAAsACwALABoAJABCAHCAnIC+gMWAzoDXgOaA9oECAQmBE4EagSsBNIFIAWIBcwGLAaiBswHTgfGCAoIVAhsCJgIsAkuCdoKGgqECtILGAteC5YMAAwqDEQMcAywDNwNMA1yDb4ODA5sDsIPKA9MD34PtBAWEFAQghCsEOQRABE6EWIRghGUEg4SZBKkEwgTYBO0FFIUkBTUFR4VYBWOFfAWOhZ2FuoXPBd8F94YGhheGI4Y8hksGWoZlBnmGgAaUBqgGqAbLhuCG+AcQhycHModVh2UHh4emB7AHvAfDh+aH7wf/CA2IH4g4CDyIWIhmiHGIfIiGCJSInwi5CNgJGwk5iUyJX4l1iY8JqgnFid8KAAoUiimKQQpdCmaKcAp9io6KpAq+CtQK6YsDCx8LPAtFi2ELcQuAi5SLrAu7i9AL+YwbDDyMZwyXjMKM7g0UjTKNS41kjYYNpw2wjboNy43dDfcOGg4sDj2OWI5xDoqOoI66Ds4O4g7+DxwPLo9FD1+PZg+fD8EP2A/gj+qP9w/3D/cP9w/3D/cP9w/3D/cP9w/3D/cP+o/+EAGQCRAQkByQKJA0EEeQWxBtkHiQjxCPEJUQm5CikKKQsJC/kNWQ7xD5kRGRKpE4kUIRVBFskXsRkRGqEbSRzJHlkf+SIJI7EkCSYxKFksCTBxMTkzKTbxOXk74T1BP6lA6UGBQrlEWUVpRuFIyUmBS4FNUU5pTxlQWVH5UwlUiVZhVwlZEVrpW9FccV2RXxlgWWG5Y1FkCWWRZyloCWihablrOWwpbYFvGW/BcUFyyXPxdJF18XfBeLl6EXxZfRF+4YDBgVAABAAABOQBNAAUAAAAAAAIAPAByAI0AAACMAaYAAAAAAAAAFAD2AAEAAAAAAAEAAAAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAAABAAEAAAAAAAQAFQABAAEAAAAAAAYAAQAWAAMAAQQJAAABdAAXAAMAAQQJAAEABAGLAAMAAQQJAAIAAAGPAAMAAQQJAAMAAAGPAAMAAQQJAAQABAGPAAMAAQQJAAUAeAGTAAMAAQQJAAYAAgILAAMAAQQJAAkAGgINAAMAAQQJAAwAJgInAAMAAQQJAA4AfgJNAAMAAQQJAMgAFgLLAAMAAQQJAMkAMALhAAMAAQQJAMoADgMRAAMAAQQJAMsADgMfAAMAAQQJ2QMAGgMtf0V4byAyIFJlZ3VsYXIgV2ViZm9udH8AQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEAMwAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQAsACAAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAARQB4AG8ALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ALgB/AC4AfwBWAGUAcgBzAGkAbwBuACAAMQAuADAAMAAxADsAUABTACAAMAAwADEALgAwADAAMQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADgAOAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADYANAA3ADcANQB/AE4AYQB0AGEAbgBhAGUAbAAgAEcAYQBtAGEAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8AYwBtAHMALwBzAGMAcgBpAHAAdABzAC8AcABhAGcAZQAuAHAAaABwAD8AcwBpAHQAZQBfAGkAZAA9AG4AcgBzAGkAJgBpAGQAPQBPAEYATABXAGUAYgBmAG8AbgB0ACAAMQAuADAATQBvAG4AIABGAGUAYgAgADEAMwAgADIAMQA6ADQANgA6ADQAOAAgADIAMAAyADMAZABlAGYAYQB1AGwAdABwAGUAcgBzAGUAdQBzAEYAbwBuAHQAIABTAHEAdQBpAHIAcgBlAGwAAAAAAgAAAAAAAP9nAGYAAAAAAAAAAAAAAAAAAAAAAAAAAAE5AAABAgEDAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQEEAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQUAigDaAIMAkwEGAQcAjQCXAIgAwwDeAQgAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugDXALAAsQC7AQkA2ADZAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwCyALMAtgC3AMQAtAC1AMUAhwCrARgAvgC/ALwBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAIwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsGZ2x5cGgxBmdseXBoMgd1bmkwMEEwB3VuaTAwQUQHdW5pMDBCMgd1bmkwMEIzB3VuaTAwQjkHdW5pMDIzNwd1bmkyMDAwB3VuaTIwMDEHdW5pMjAwMgd1bmkyMDAzB3VuaTIwMDQHdW5pMjAwNQd1bmkyMDA2B3VuaTIwMDcHdW5pMjAwOAd1bmkyMDA5B3VuaTIwMEEHdW5pMjAxMAd1bmkyMDExCmZpZ3VyZWRhc2gHdW5pMjAyRgd1bmkyMDVGB3VuaTIwNzAHdW5pMjA3NAd1bmkyMDc1B3VuaTIwNzYHdW5pMjA3Nwd1bmkyMDc4B3VuaTIwNzkHdW5pMjA4MAd1bmkyMDgxB3VuaTIwODIHdW5pMjA4Mwd1bmkyMDg0B3VuaTIwODUHdW5pMjA4Ngd1bmkyMDg3B3VuaTIwODgHdW5pMjA4OQRFdXJvB3VuaTIxMTYHdW5pMjVGQwd1bmlGQjAxB3VuaUZCMDIHdW5pRkIwMwd1bmlGQjA0BmkubG9jbAhjX3QuZGxpZwpmX2ZfeS5kbGlnCGZfdC5kbGlnCGZfeS5kbGlnCHRfdC5kbGlnCHRfeS5kbGlnDXplcm8ub2xkc3R5bGUMb25lLm9sZHN0eWxlDHR3by5vbGRzdHlsZQ50aHJlZS5vbGRzdHlsZQ1mb3VyLm9sZHN0eWxlDWZpdmUub2xkc3R5bGUMc2l4Lm9sZHN0eWxlDnNldmVuLm9sZHN0eWxlDmVpZ2h0Lm9sZHN0eWxlDW5pbmUub2xkc3R5bGUJemVyby50bnVtCG9uZS50bnVtCHR3by50bnVtCnRocmVlLnRudW0JZm91ci50bnVtCWZpdmUudG51bQhzaXgudG51bQpzZXZlbi50bnVtCmVpZ2h0LnRudW0JbmluZS50bnVtCXplcm8uc2luZghvbmUuc2luZgh0d28uc2luZgp0aHJlZS5zaW5mCWZvdXIuc2luZglmaXZlLnNpbmYIc2l4LnNpbmYKc2V2ZW4uc2luZgplaWdodC5zaW5mCW5pbmUuc2luZgl6ZXJvLmRub20Ib25lLmRub20IdHdvLmRub20KdGhyZWUuZG5vbQlmb3VyLmRub20JZml2ZS5kbm9tCHNpeC5kbm9tCnNldmVuLmRub20KZWlnaHQuZG5vbQluaW5lLmRub20JemVyby5udW1yCG9uZS5udW1yCHR3by5udW1yCnRocmVlLm51bXIJZm91ci5udW1yCWZpdmUubnVtcghzaXgubnVtcgpzZXZlbi5udW1yCmVpZ2h0Lm51bXIJbmluZS5udW1yE3BlcmlvZGNlbnRlcmVkLmFhbHQAAAAAS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAdCtgAAPy8hBQAqsQAHQkAMTAREBDQIJgcYBwUKKrEAB0JADFACSAI8Bi0FHwUFCiqxAAxCvhNAEUANQAnABkAABQALKrEAEUK+AEAAQABAAEAAQAAFAAsquQADAABEsSQBiFFYsECIWLkAAwBkRLEoAYhRWLgIAIhYuQADAABEWRuxJwGIUVi6CIAAAQRAiGNUWLkAAwAARFlZWVlZQAxOAkYCNgYoBRoFBQ4quAH/hbAEjbECAESzBWQGAEREAAA=) format("truetype")}@font-face{font-family:Fira-Sans-Book-Italic;font-weight:400;font-style:normal;src:url(data:@file/vnd.ms-opentype;base64,T1RUTwAMAIAAAwBAQ0ZGICCSu6MAAIdsAAS9+EdERUZZxFvcAAVFZAAAAehHUE9Tm1OqRQAFR0wAAlpYR1NVQpoX0VUAB6GkAABWbE9TLzI8VPXcAAAuSAAAAGBjbWFwQbn49wAAOCAAAE8qaGVhZA+Z+wEAAADUAAAANmhoZWEHBxKoAAAuJAAAACRobXR4djJLgQAAAQwAAC0YbWF4cAtGUAAAAADMAAAABm5hbWUCls9MAAAuqAAACXVwb3N0/7AAMgAAh0wAAAAgAABQAAtGAAAAAQAAAARNDoBxFjlfDzz1AAMD6AAAAADW1rUcAAAAANbWtRz9R/6iBYkEOQACAAMAAgAAAAAAAAKVACMCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAgb/5AIG/+QCZAA5Agb/5AIG/+QCBv/kAgb/5AIG/+QCBv/kAtf/1gLX/9YC1//WAiQANAIkADQCJAA0AiEAGQJtADUCLQAHAgUANAH4ADkB+AA5AfgAOQH4ADkB+AA5AfgAOQHX/84B9QA5AfgAOQJIADQEAAA0BAAANAJQABwCUAAcAkgANAJIADQCUAAcAkgANAJIADQCkgA1AkgANAIGABQDwwA0A8MANAHXADQB1wA0AdcANAHXADQB1wA0AdcANAHXADQB1wA0AdcANAHXADQB1wA0AdcANAHXADQB1wA0AdcANAHXADQB1wA0AdcANAHXADQB1wA0AdcAHwHXAAcBxgADAdcANAHXADQByv/yAcr/8gHLABkBsgA0AbIANAGy/4QCNwA4AjcAOAI3ADgCNwA4AjcAOAI3ADgCNwA4Ag4AOAGmADwCPwA4Ab8AAAJdADQCXwA1Al0ANAJdADQCXQA0AqYANQIjADkDYAA0AQUANAIWADQBBQA0AQUANAEFADQBBQA0AQUAKgEFADQBBQA0AQUANAEFABMBBQA0AQUANAEFADQBBQA0AQX/sQE8ADoBGwAYAQUANAER/9UBEf/VASj/iQEe/9kCDAA0AgwANAIMADQCLAA0AbQANAKzADQBtAA0AbwAGQHlABkBtAA0AbQALAG0ADQBtAA0AbQANAKgADQBwwAYAsAAFwLAABcCwAAXAz4AQAJfADQDbwA0Al8ANAJfADQCXwA0Al8ANAJfADQCXwA0Al8ANAJfADQCX/+EA1oANAJTADQCXwA0AnAAOAJHACoCcAA4AnAAOAJwADgCcAA4AnAAOAJwADgCcAA4AnAAOAJwADgCcAA4AnAAOAJwADgCcAA4AnAAOAJwADgCcAA4AnAAOAJwADgCfQA4An0AOAJ9ADgCfQA4An0AOAJ9ADgCcAA4AzwAOAJwADgCcAA4AnAAOAJwADgC/QA6AnAAOAJwADgB+//1AnAAOAJwADgCcAA4AnAAOAJwADgDHAA4AgAANAIAADQCAAA0AkkANQIDADQCbgA4Al8AOQIcADQCHAA0AhwANAIcADQCHAA0AhwANAIcADQCJgAYAhwAKAHo//oB6P/6AMkAUgHo//oB6P/6Aej/+gHo//oB6P/6Aej/+gJMADQCRwAsAcsAPgHLAD4BywA+AcsAPgHLABYBywA+AcsANgHLAD4BywA+Ae0ANQHLADgBzP//AgMAOAHcABoBywA+AksAQwJLAEMCYgBCAksAQwJLAEMCSwBDAksAQwJLAEMCSwBDAksAQwJLAEMCSwBDAksAQwJLAEMCSwBDAloAQwJaAEMCWgBDAloAQwJaAEMCWgBDAksAQwJLAEMCSwBDAksAQwJ2ADsCSwBDAksAQwJLAEMB9gBFAfYARQJBAEMCBv/kAuUAVQLlAFUC5QBVAuUAVQLlAFUDAwBVAgIANAHe/98B6ABBAegAQQHoAEEB6ABBAegAQQHoAEECAQBBAegAQQHoAEECHgA0AegALwHoAEEB0P/2AdD/9gHQ//YB0P/2AdD/9gHQ//YB0P/2Agb/5AHXADQBBQA0AnAAOAJLAEMB+AA5Al8ANAJwADgB6P/6AdD/9gJVADQCVf+EAXAAKAIFADQCGQAvAeAAMAH2AC8B9QAuAhAAMAEf/+0BfwAwAhIAMAKZAC4B1AAwAdYAMAGqADACBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUALAIFACwCBQAsAgUAKgIFACwCBQAsAgUALAIFACwCBQAsAgUALAHkAEAC6QAXAukAFwLpABcCDQAzAg0AMwINADMCFgASAg0AMwE2//kCywA6AaUAIQIVADoCDQAzAaoALgGqAC4BqgAuAaoALgGqAC4BtAAuAaoALgGo/8YBqgAuAb0ALgGqAC4CEQAtAgsAKwL/AC4CKwAtAhEALQIaAC0CjgAtAhEALQIRAC0CBwAgA0wALQIRAC0CEQAtAhIALQIRAC0DlgAtAyoALQOWAC0DOgAtAdgALgHYAC4B2AAuAdgALgHYAC4B2AAuAdgALgHYAC4B2AAuAdgALgHYAC4B2AAuAdgALgHYAC4B2AAuAdgALgHYAC4B2AAuAdgALgHYAC4BtQAjAgAAIgG8//0B9QAuAoD//QHYAA0A+v99ART/ggEe//8BhwAgAdgALgHYAC4B2AAXAdgAFwKdABcBrP/NAaz/zQGs/7cBrv/0AaD/6AEl/8cBJf/HASX/xwEl/8cDEv/HAggAFQIIABUBuAAwAggAFQIIABUCCAAVAggAFQIIABUCDAAVAcX//AGOADEBxf/8AYsAOgGKAB8BjgAqAYsAOgIIABUB7gAVAbIAEwIKADACEQA3AgoAMAIKADACCgAwAgsAMQILADECBgA9AmAALgJhAC4DFgAwAPoAMAD6ADAA+gAwAPoAMAD6ACoA+gAiAPoAFAD6ACwA+gAjAPoAMAD6AA0A+gABAPoAMAD6ADAA+gAqAfUAMAD6ADAA+v+kAQQANwEVAA4A+gAlAPv/vQD7/70A+/+9APv/vQEu/4IBGf/NATb/0QEZ/80B6wAwAesAMAHrADABygAwAesAMAHH//MBBQA4AQUAOAG0//ABFgAYAUcAEwEFADgBBf/dAQUAKQFwADMBJQA4AQUAOAJQADgA+gAkAgAAOAFQ/+8CUgBCAQ4AGAJLADcC/AAwAvwAMAL8ADAC/AAwAvcAPQL8AD0CCgAwAgoAMAJpAE8CCgAwAgoAMAIKADACiwAwAgoAMAIKADACCgAwAgoAMAIK/34CCgAwAwUAMAIKADACCgAwAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIWAC4CFgAuAhYALgIWAC4CFgAuAhYALgIKAC4CvgAuAgoALgIKAC4CCgAuAgoALgK5ADMCqwAqAgoALgIKAC4Brv/4AgoALgIKAC4CCgAuAgoALgIKAC4CAwAqAyUALgINABICDQASAg0AEgI2ACYCDgATAg4AEgIHACwCCgAsAggALAL/AC4BWAAwAVgAMAHaACQBWAAwAVj/+QFYADABWAAOAUcAKwFKAC4BWAAkAVj/5AFYADABWQASAVj/5AFkAAsBWP/kAab/+gGm//oAxgBWAab/+gGm//oBpv/6Aab/+gGm//oBpv/6Ag//vQGm/+cBqf/+ASX/xwFCACcBQgAZAUIAJwKtACcBQgAnAUIACgFCACcBfAAnAUH/+gFCACcBQgAnAfsAJwFCACcBQgAnAZD//gHKADEBpQARAUIAHQFDACcCbgAnAUMAAQIGAD0CBgA9Ah0AGAIGAD0CBgA9AgYAPQIGAD0CBgA9AgYAPQIGAD0CBgA9AgYAPQIGAD0CBgA9AgYAPQIiAD0CIgA9AiIAPQIiAD0CIgA9AiIAPQIGAD0CBgA9AgYAPQJlAEkCaQAtAXD/2AMmAAcCNgAHAg3/mQGaAAkBkQAJAbD//wFY/+MBj//5AhEALQIGAD0CCwAsAgYAPQIGAD0CBgA9AbgAMAICAD8BwgAwAbj/5gKGADsChgA7AoYAOwKGADsChgA7Ao0AOwKG//ECDwASAbD/4QG4//QBuP/0Abj/9AG4//QBuP/0Abj/9AG2//QBuP/0Abj/9AG7//UBuP/0Abj/5gGE//EBhP/xAYT/8QGV//EBhP/xAYT/8QGC//EBhP/xAYT/8QF///EBJQAqASUAKgIFACwB2AAuAPoAMAIKAC4CBgA9AaoALgIKADACCgAuAab/+gGE//ECEwASAiz/xwMS/8cDE//HAyT/xwIs/8cDTv/HAgv/xwIM/8cCHf/HAkf/xwIL/8cCHf/HAi0AKgIsACoDEgAqAxMAKgMkACoCCwAqAgwAKgIeACoCCwAqAh4AKgIlADAB8QAZAaf/0gIXACcBjv+CAmMAJAHyADADCQA0AT4AOwEn/4kBwAAPAiAANQLMADYB7QA0AesAKAIyADMBvQAzAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAiUAMAHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AKB/9YCgf/WAoH/1gHzADUB8wA1AfMANQIqACQB7gADAdcANAHDADIBwwAyAcMAMgHDADIBwwAyAcMAMgG/ADIBwwAyAhUANQIXACcCFQA1AhUAIgIXACcCFQA1AkwAJAIVADUCFwAnAdYADgOkADUDpAA1Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBpgAaAa4ABgGYAAIBrQA0Aa0ANAIJACUCCQAlAaL/8QGi//EBowAVAY4ANAKRADQDHAA0AY4ANAKRADQDHAA0AgAAMQIAADECAAAxAgAAMQIAADECAAAxAgAAMQH8ADEBeAAsAgQAMQGU//MCLAA0AiYAMQIsADQCLAA0AiwANAEEADQBBAA0AQQANAEEADQBBAAzAQQAKQEEAB8BBAA0AQQALgEEADQBBAASAQQANAEEADQBBAA0AgUANAEEADQBBP+vARsAEAEEADABAf/XAQH/1wET/9wB3AA1AdwANQHcADUB3AA1AeYANQGOADQBjgA0AZkAEAGOADQBjgAdAY4ANAGOADQBjgA0AoEANAHJ/+QBrQA0AQQANAItADECGQBBAcMAMgIsADUCLQAxAbb/+AGg//YBkgAOAnkAFwJ5ABcCeQAXAuoAPAIsADUCLAA1AiwANQIsADUCLAA1AiwANQIsADUCLAA1AiwANQIsADUCLP+EAy0ANQIsADUCLQAxAi0AMQItADECLQAxAi0AMQItADECLQAxAi0AMQItADECLQAxAi0AMQItADECLQAxAi0AMQItADECLQAxAi0AMQItADECLQAxAlIAMQJSADECUgAxAlIAMQJSADECUgAxAi0AMQLmADECLQAxAi0AMQItADECLQAxAi0AMQItADEBx//0Ai0AMQItADECLQAxAi0AMQItADECCgAmAsIAMQHSADUB0gA1AdIANQIIACQB1AA1AiUAMQIkADAB6wA1AesANQHrADUB6wA1AesANQHrADUB6wAoAesANQHmABABtv/4Abb/+AG2//gBtv/4Abb/+AG2//gBtv/4Abb/+AIZADUBlAAtAZQALQGUAC0BlAAtAZT//AGUAC0BlQAhAZQALQGUAC0BtQAkAZQAHQGl//wB0AA0AacAFgGUAC0CGQBBAhkAQQIfADACGQBBAhkAQQIZAEECGQBBAhkAQQIZAEECGQBBAhkAQQIZAEECGQBBAhkAQQIZAEECKQBBAikAQQIpAEECKQBBAikAQQIpAEECGQBBAhkAQQIZAEECGQBCAhkAQQIZAEECGQBBAbsAMwIPAD8Byf/kAo4AQwKOAEMCjgBDAo4AQwKOAEMCmgBDAdMANAGm/98BsAAvAbAALwGwAC8BsAAvAbAALwGwAC8BsQAvAbAALwGwAC8BsQAfAbAALwGg//YBoP/2AaD/9gGg//YBoP/2AZ//9gGg//YBVAAoAiAANQIi/4QB6AAoAdcANAHBABUBwQAUAeMAGQIFADEBGwAPAP0ANAGhADQBKwA7ARkANAEaADQAvQAsAKwAOwEWADQA3QA0ARcAOQG6//wBpQBZATsANAE6AD4CUQA0Agb/5AIFADQCJAA0AccANQHHADUByAA1Aif/vQHXADQB1wA0AdcANALo/+wB1v/0Al8ANAJfADQCXwA0AmsANAIWADQCFgA0Akr/9ALAABcCXQA0AnAAOAJYADQCAAA0AfgAOQHLAD4B3wA2Ad8ANgLjADAB3v/fAiMAOQJRADQDNQA0AzUANAJRADQB/wA0AmIAPgLbADQDJf/0A0kANAHo//oB/QA5Ae3/+wEFADQBBQA0ARH/1QKBAD4DIwA0AiL//AKBAD4C/QA6AjMAJQLGADQCFP/kAtcANAKn/+QDFAA0AcD/9wJuADMCcAA4AhYARQIWAEUEKAA4AcwAFQIfADQC6//sAdb/9AIdADQCHAA0Ah8AOgJ4AD4CXQA0AucANANtADQCWQA0AoQAOQH4ADkBywA+Ad7/3wK1AD4CIgA5AiMAOQIeADQCVQA0ApcAFwKXABcBBQA0Auj/7AIcADUCV//0Al0ANAJqADQCIwA5AusAFwIG/+QCBv/kAtf/1gHXADQCRwAsAkcALALo/+wB1v/0Acr/8gJfADQCXwA0AnAAOAJwADgCcAA4Ae3/+wHfADYB3wA2Ad8ANgIjADkBxwA1AtsANAHM/9oB3v/fAd7/3wIAAA4C8gANAqUARgGyAEoDQP/0A1EANAI3ADgCXQA+AdcAHwJK//QC5f/0ArQANAL0//wCbgA4AuUAVQIaADQDY//0A3gANAIJADkCAAA0Al3/hANb/70CZf/tAkv/9AH9/8QCBv/kAu0AOQLu/+QBxwA1AlkANANH/8QCOP//Agr/5AJB/+QCXQA0AcwAFQHe/98DEf/kAgj/5AKu/+QDKf/kAl0ANAIFACwCCwA3AeIALgGlABEBpQARAZIAMAIBAC0B2AAuAdgALgHYAC4CpQADAbz//QIGAD0CBgA9AgYAPQIXAD0B4wAwAeMAMAICAAUCXAAUAhAAMAIKAC4CCgAwAg0AEgGqAC4C/AAwAbj/9AG4//QC5wAvAbD/4QHtADcCEAA9AvwAPQMEAD0CBgA9AcoAMgIWACECigAyAsQABQLWADABpv/6Aa0ALgGw//oA+gAwAPoALAD7/70CEQA3AsEAMAHs//wCEgA3ArkAMwHTADYCdAAwAdH/5gJ8ADACdgACAq0AMAGg/+gCsABFAgoALgHCADABwgAwA78ALgGmABEB6QAwAqcAAwG8//0B5QAwAfAAMAHsADgCGQAhAhoAMAJdADACGQAwAv0AMAIeAC4BqgAuAwwAMAHJ/+ECSAAQAfYANwHtADcCAwAwAhgAMAIgAA0CIAANAQUAOAKlAAMB4AAwAhMABQIQADACIQAwAe0ANwJ7ABQCBQAsAgUALALpABcB2AAuAdkAFgHZABYCpQADAbz//QGs/80CBgA9AgYAPQIKAC4CCgAuAgoALgGw//oBuP/0Abj/9AG4//QB7QA3AaUAEQKKADIBpQARAcv/4QGw/+ECEQAtAwwALQJjADoBigA6AvoABQMKADAB9gAvAisAEAG1ACMCAgAFAnsABQLiABIC0f/8AgcALAKGADsB5AAwAvEABQL+ADAB2AAvAg0AEgIQ/34DTP/5Aiv/4QIMAAUCEQAzAZL/fgIIABUCpQADAeIAMAHiADABuP/mAnv/5gLAAD4BpQARAqQAAwHiADAB8AAwAhoAMAIZADACTwAQA0wAEAJ8AEMB2f/mAqUAAwHnADAB6//mAhoAMAGaABAByf/hAqP/5gPzADABuv/mAlv/5gK9/+YCGgAwAgcALQD6ADACCAAVAgYAPQL8AD0CDgAwAYwANAIyADQCNwA0AYYACQG6/98CNwA0Acn/5AHXADQB8wA1AYwANAGMADQBjAA0Aef/vQGtADQBrQA0Aa0ANAKQ/+kBp//yAiwANQIsADUCLAA1AjEANQHlADQB5QA0Ag3/9AJ5ABcCLAA0Ai0AMQIoADQB0gA1AcMAMgGUAC0BpQAqAaUAKgKTACgBpv/fAfIAMAI1ADQC5wA0AvIANAIrADQB0QA0AgYALgKcADQCwP/0AuoANQG2//gByAAyAbj/+QEEADQBBAA0AQH/1wItAC4C2AA0AfL//AIuAC4CzAA2AfAAJgKKADUB1//kApsANAJU/+QCxwA1AY3/8gIsACsCLQAxAcgAMwHIADMDzAAxAYYACQHuADQCoP/pAaf/8gHxADQB5QA0AdMAIgIaAC4CNwA0AnIANAIyADQDEwA0AkYAMgHDADIBlAAtAbr/3wIJADwB8gAwAe4ANQIvADUCLP+CAvf/vQIe/+0CGP/0AmAADwJgAA8BBAA0ApD/6QHwADQCEv/0AiwANAIvADQB8gAwApwAFwHJ/+QByf/kAoH/1gGtADQCCQAlAgkAJQKQ/+kBp//yAaL/8QIsADUCLAA1Ai0AMQItADECLQAxAbj/+QGlACoBpQAqAaUAKgHyADABjAA0ApwANAGG/84BqP/fAab/3wHQAAgCngAHAlsAOgF8ADsC1//0AvkANAIAADECGgAtAaYAGgIN//QChv/0AlwANQKc//wCJQAxAo4AQwHlADQC+P/0AxYANAHTADcB1wA1Ac//xAHJ/+QCoAAxAqn/5AMG/8QCBwAHAeb/5AID/+QCyv/tAcz/5AJL/+QCyP/kAisANAIJADABEf/VAgb/5AIkADQBxwA1Ag//5AHXADQB0P/2Al0ANAJwADgBBQA0AgwANAIG/+QCwAAXAl8ANAHHAAQCcAA4AlgANAIAADQBxgADAcsAPgHoAEEC1gAqAd7/3wJuADMCdgAkAg7/7QIrADkCsAA5AVkAOQKtADkCWQAsArEAOQEFADQB6ABBAdAANAIEACECXwA0AnAAOAHoAEEB0wA1AaEAJAIN/+QCIAA0AgEAQQJ6AEgCAQBBAnAAOAIDADQCDAA5AsAAFwIU//UCDAA5AhT/9QIO/+0CFf/zAoEAMAKLAEcCaQAwAn0ARwKSAEMCkABDAhj/9gIR/+8CBv/kAgb/5AIG/+QCDv/tAhX/8wKBADACiwBHAmkAMAJ9AEcCkgBDApAAQwIkADgCKgBOAqQANwKnAE0CjgA3Ap4ATQI1AFQCJwA6AqkAOAKwAE4DKgA3Ay0ATQMUADcDJABNA1gASgNYAEoCuwBUAqwAOgJdADQCqQA4ArAATgMqADcDLQBNAxQANwMkAE0DWABKA1gASgFSADgBWABOAdIANwHWAE0BvQA3AcwATQIAAEoCAABKAWMAVAFVADoBBQA0AQUANAKuADgCyABPAzwANwNLAE4DGQA3Ay8ATgLIAFQCrwA6AlMATgJhAEIC2QBBAugAQQMYAD0CYQBIAnEALQHoAEEB6ABBArIAOALPAE8DQgA3A1AATgMhADcDMwBOAzwASgM9AEoC1gBUArgAOgJ2ACQCsgA4As8ATwNCADcDUABOAyEANwMzAE4DPABKAz0ASgIcACwCFgASAa8AIQIHAC0BtQAjAVgAIgIQADYCBwA5APUAOgHhADYBtP/wAg0AEgGvACEBhwAsAgoALgILAC4CCQAJAZ8AMQIPAC4BjwAXAf0AQAKRADUBl/+7ArAARQK5ADMA9QA6APUAKAD1AB0B/QBAAf0AQAH9AEACCgAuArkAMwIcACwBtQAjAhAANgGsADYBpQAXAhEAMAHM//kBxQAvAcz/+QIKAC4BowAzAYkADgGUABgCIv/hAgsAMwIBADQB4wAlAjYAJgKNADcCCwAzAggAJgHFAC8A+/+9Aa0ALgIOABICXv/pAgn/0gIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwCHAAsAhwALAIcACwBtQAjAbUAIwG1ACMBtQAjAbUAIwG1ACMBtQAjAbUAIwIQADYCEAA2AhAANgIQADYCEAA2AhAANgIQADYCEAA2AhAANgIQADYCEAA2AhAAKQIQACkCEAApAhAAKQIQACkCEAApAhAAKQIQACkCEAApAhAAKQIQACkCEAApAPUAOgD1ADoA9QAyAPUAJwD1ADoA9QA6APUAOgD1ABkA9QA6APUAOgD1ACIA9QA4APUAOgD1ACIA9QAfAPUAIwIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgIKAC4CCgAuAgkACQIJAAkB/QBAAf0AQAH9AEAB/QBAAf0AQAH9AEAB/QBAAf0AQAH9AEAB/QBAAf0AQAH9AEAB/QBAAf0AQAH9AEAB/QBAArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMCuQAzArkAMwK5ADMA8//tAgEANAFYACICDQAuAcn/5AHzADUBjAA0AdH/5AGtADQBoP/2AiwANAItADEBBAA0AdwANQHJ/+QCeQAXAiwANQGbAAUCLQAxAigANAHSADUBmAACAZgAAgGUAC0BsAAvAocAIgGm/98CLAArAjMAHQEEADQBBAA0AQQANAGwAC8BsAAvAbAALwItADECMwAdAcn/5AGtADQCLAA0AZsANAHIABcCLAA1Adv/9AHaADIB2//0Ai0AMQG7ADUBmAA0AXUAGwHE/+QB8wA1AfMANQItADEBsQAvAbEALwGxAC8ChwAiAigANAHcADUB0gA1AdoAMgEB/9cByAAyAdQANQJ5ABcB5AAOAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AHJ/+QByf/kAcn/5AGtADQBrQA0Aa0ANAGtADQBrQA0Aa0ANAGtADQBrQA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQCLAA0AiwANAIsADQBBAA0AQQANAEEADQBBAA0AQQANAEEADQBBAA0AQQANAEEADQBBAA0AQQANAEEADQBBAA0AQQANAEEADQBBAA0Ai0AMQItADECLQAxAi0AMQItADECLQAxAi0AMQItADEB0gA1AdIANQGwAC8BsAAvAbAALwGwAC8BsAAvAbAALwGwAC8BsAAvAbAALwGwAC8BsAAvAbAALwGwAC8BsAAvAbAALwGwAC8CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQIzAB0CMwAdAjMAHQDz/+0CCAAVASwAQwEyAEoCBAA6AYYAQgG6//wBv//sAdsAFgHC//4B6AA3AY0AJgHwAB0B2QAsAikAKQF2ADMBv//3Ab3/3wG2//UBu//uAd8ALwGQABgB8QAeAdoAHgIpACkB+AA0AfgAPAH4AA8B+AAFAfgAJAH4ABoB+AA5AfgAVgH4ACEB+AA4AfgANAH4ABoB+AA5AfgAEgH4//sB+AAVAfgACgH4ADoB+ABIAfgAIQH4ACwB+AAaAgQAOgFkAAIBZAAnAWT/+QFk//ABZP/0AWT/9QFkAAIBZAAaAWT/9AFkAAsBZAAeAWQAQwFkABUBZAAMAWQAEAFkABEBZAAeAWQANgFkABABZAAnAWQARAFkAGkBZAA7AWQAMgFkADYBZAA3AWQARAFkAFwBZAA2AWQATQFkAEsBZABwAWQAQgFkADkBZAA9AWQAPgFkAEsBZABjAWQAPQFkAFQAcf82AdUAaQM6AGkDOgBpAzoAOwM6AGkDOgAyAzoAaQM6ADsDOgAyAzoANgM6AGkDOgA3AzoAaQM6ADIDOgA3AvUAVADWABEA1f/qANcAEQDa/+oCigARAOEAGADhAAYBoABPAaD/8QDWADYBKgA+AZUARAIVAF4BzwAAAdcAMAHVAKwB3AAsAlr/0QDiACYBnwANAc8AAAH4ABUB+AAVAWQAPgFkABoBIAAoASD/8AEiACABIv/2AR4ABwEf//oBZACCAWQAXgEhACcBIP/uASIAHgEi//UBHwAFAR//+QFrADoBawA6AdUAIgLEACIB9gAfAdUAIgFuADoBbgA6Adf/3QFrAEABawBAAdUAKQLEACkB9gAfAfgAIAH4ACAA0P/uAXv/7gF7AFcBewBKANAAVwDQAEoCDgA2Ag4AHAE3ADYBNwAcAXQAXADGAFwCDgA8Ag4AIgE3ADwBNwAiAWQAWwFkADcBZACCAWQAXgDWADYA2v/qAfMAAAFGAAAA6gAAAOsAAAAAAAAAHwAAAAD/vAAA/7sAAP+7AAD/uwDqAAAAAAAAAhcANAGqAC4B6wA4AfgAIQHc//oCGgAtBB0AMgIKABYBJf/HAeMAFAHnACUCTwAVAfUAFQHdADsDNAAzAdEABALPABUB2wA5AhcANAGqAC4B6wA4AfgAIQHc//oCGgAtBB0AMgIKABYB4wAUAecAJQJPABUB9QAVAd0AOwM0ADMB0QAEAs8AFQHbADkB+AANAfgATAH4ADgB+AAlAfgABgH4AB4D3gA3AfgAGAH4ACAB+AA5Afj//wH4ACcB+ABaA0wAPwH4ABYDTABSAfgARwH4AA0B+ABMAfgAOAH4ACUB+AAIAfgAHgPeADIB+QAlAfgAHwH4ADYB+P/+AfgAJgH4AFcDTAA/AfgAKANMAFQB+ABIANYANgBx/zYA1gA2AskAGALJAGEBZAAYAWQAYQHFAEABxABAAcYAOQHEAEABxAAyAcQALwHDACQBxAAzAcMAFgHEABYBxQAXAbgAHAG4ACgBxwA+AecATgN3AFQDJQA8AVP/oQJ2ACQCD//kAhwANQHEAAoB+ABKAg0AEgHQABMC4wBPBCkAUAFlABgBZQBhAnQAVQMkAEEBxQBAAcQAQAHGADkBxABAAcQAMgHEAC8BwwAkAcQAMwHDABYBxAAWAcUAFwG4ABwBuAAoAccAPgMlADwBU/+hAhwANQHEAAoB+ABKAdAAEwLjAE8EKQBQAfgAWgH4AFkB+ABSAfgAWgH4AE0B+ABKAfgAPwH4AE0B+AAxAfgAMQH4ADAB+AA7AfgASQH4AFcDKgA/Afj/9AH4ACQB+AAcAfgASgH4ACkDKgB1BBQAUAH4AFoB+ABZAfgAUgH4AFoB+ABNAfgASgH4AD8B+ABNAfgAMQH4ADEB+AAwAfgAOwH4AEkB+ABXAyoAPwH4//QB+AAkAfgAJQH4AEoB+AApAyoAcwQUAEcDhACfAxwAewOFAIgDRwCvA4QAiwOEAOADhACCA0gAnwUEAIIDyQC6AtAAYgPAADUC0AA0A8AAKgLQAGIC0AA0A+gAPgPoAEgDbQBXAdgAKQISAF4DbgBFA24AgwNuAEUDbgBgAlgAYwJYADsB9QAjAfQAYgH1ACMB9ABCAdgAKQH4ADQB+AA3AyMANAOcADwClABFAo8AcQHsACIC2gBtAkAAXgMXAFYB0gBcAWsAXgFrAF4BewANAc4AQwHQABwDsgBHA90ANASrAFgDYQAyAtAAYgTYAHEFtABaBeEAnQW0AIUD6AAjAewAIgHSAFwBzgBDAdAAHAMmADEB+AAjAfgAcgH4AFMB+AAuAfgAKAH4AG8B+ABZAfgAMQDLABABXgBNAaMAOwGjADsBWAA3AaMAMAEzAFIBM//6ATMAPAEzABIBMwAnAX8AMQFlADUBZAA1AskANQFlAFwBZABcAskAXAEqAFgBsP/6ARMAUQETAAIBSgBhARH/4wDYAE4A2QAKALcAVAFvADUBDQBfAO8AbAEL/+gBEwBRAKQAXwERAFkAiP/PAIgAUQAA/wMAAP+zAAD/UgAA/0gAAP79AAD++AAA/wEAAP8iAAD/WgAA/vgAAP8sAAD+2wAA/30AAP/JAAD/HwAA/w0AAP+tAAD/pgAA/t0AAP7SAAD+6wAA/tsAAP+AAAD/iQAA/z8AAP6JAAD+nAAA/rsAAP68AAD+ugAA/zsAAP6NAAD+2wAA/yoAAP7iAAD++AAA/0cAAP6jAAD+aQAA/okAAP6AAAD+mgAA/oIAAP63AAD+PgAA/nAAAP7PAAD9RwAA/zAAAP6iAAD+pAAA/lwAAP8YAAD+ngAA/wUBEABYAAD+sgAA/t0BQwBlAWAAYQD5/9sBYABYAVkAXACrAF4BDQBfAAD+uwAA/ukBSgBRASsAVwAA/toAAP7jAO//5wEFAF8BYgBaAPj/2wDw/9sAfQBeAAD/FgAA/8UAAP9iAAD/WAAA/xEAAP8JAAD/EgAA/zEAAP9sAAD/CQAA/z4AAP+SAAD/MAAA/6EAAP8qAAD+4gEOAGkBQwB0AV8AcgD5/9sBXwBpAVgAbgCoAG8BEABuAUoAYwErAGkBBQBxAWIAawAA/3oA1wBRAAD/jgDWAGQAAP96ANYAUQAA/44A1gBkAVkAYQCrAGIBDQBjARAAXAFUAFUBYABcAWAAZQFDAGoBBQBjAWIAXgErAFwApv/QAPn/2wDv/+cBEQBdAUMAagFgAGUA+f/bAWAAXAFZAGEAqQBiAQ0AYwFLAFUA1wBUANcAVAErAFwA7//nAQUAYwDw/+gBYgBeAPv/9gAA/vgAAP75AJMATQCTAD8BZgBYAKUASwCmAD0ApQBLAKMAYQCkAFQBIABLAScAYQEnAFMBHgBLAR4APQEtAGEBLQBTAWIAZwFiAFABYgBnAWIAUAFZAFkBWQBYAWgAZACvAGcAtwBaAKoATQCxAD8BYgBaASAAPQD4/9sAq//8APj/2wCr//gA0ABKA0QAMANhADIBJgBkAqoAZAFX//UBQf/0AegAQQHoAEEBuAAwAbgAMAGwAC8BsAAvASsAVwFDAGQBQwB1AUMAaAAAAAAA8P/bAKv/5QFZAFgBWQBZAKv//gFDAF4BRgBhAUMAXgF7AGcBtQBRAbkAbgGyAFEBZQBRAUMAcgFGAHQBQwByAWIAfAG0AGMBuQCBAbYAYwFlAGQA1wBVANUAYwF8AFwBZQBiAVkAaQFZAGkBYgBwAVkAWAFZAGkBKwBQASsAUAFiAFEBYgBoASsAZAErAGQBFf+CAWgAZAEk/+QBPQBFAT0ARgEk/+UAvQA1AST/8AEk//EAwABMAVgANwErAGUBKwB3ARcAawEbAH4BYgBRAWIAaAF/AHcAsP/qALD/6QHA//cBjf/yAXwAVwABAAADp/73AAAF4f1H/qIFiQPoAI0AAAAAAAAAAAAAAAALRgAEAfYBXgADAAACigJY//UASwKKAlgAMQFeADIBOwAAAgsFAwUAAAIABGAAAv8CAAABAAAAAAAAAABiQiAgAIEADf//A6f+9wAAA6cBCSAAAZ8AAAAAAg4CsAAAACAABAAAACIBngABAAAAAAAAAJgAAAABAAAAAAABABMAmAABAAAAAAACAAsAqwABAAAAAAADACcAtgABAAAAAAAEAB8A3QABAAAAAAAFADwA/AABAAAAAAAGABwBOAABAAAAAAAHADQBVAABAAAAAAAIADsBiAABAAAAAAAJADsBiAABAAAAAAALABgBwwABAAAAAAAMABgBwwABAAAAAAANADoB2wABAAAAAAAOABoCFQADAAEECQAAATACLwADAAEECQABADADXwADAAEECQACAAwDjwADAAEECQADAE4DmwADAAEECQAEAD4D6QADAAEECQAFAHgEJwADAAEECQAGADgEnwADAAEECQAHAGgE1wADAAEECQAIAHYFPwADAAEECQAJAHYFPwADAAEECQALADAFtQADAAEECQAMADAFtQADAAEECQANAHQF5QADAAEECQAOADQGWQADAAEECQAQACYGjQADAAEECQARABYGswADAAEECQEAAHIGyQADAAEECQEBADYHOwADAAEECQECADYHcQADAAEECQEDADAHp0RpZ2l0aXplZCBkYXRhIGNvcHlyaWdodCAyMDEyLTIwMTgsIFRoZSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIFRlbGVmb25pY2EgUy5BLiwgYkJveCBUeXBlIEdtYkggYW5kIENhcnJvaXMgQ29ycG9yYXRlIEdiUiwgd2l0aCBSZXNlcnZlZCBGb250IE5hbWUgIkZpcmEiRmlyYSBTYW5zIENvbmRlbnNlZEJvb2sgSXRhbGljNC4zMDE7YkIgIDtGaXJhU2Fuc0NvbmRlbnNlZC1Cb29rSXRhbGljRmlyYSBTYW5zIENvbmRlbnNlZCBCb29rIEl0YWxpY1ZlcnNpb24gNC4zMDE7UFMgMDA0LjMwMTtob3Rjb252IDEuMC44ODttYWtlb3RmLmxpYjIuNS42NDc3NUZpcmFTYW5zQ29uZGVuc2VkLUJvb2tJdGFsaWNGaXJhIFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGhlIE1vemlsbGEgQ29ycG9yYXRpb24uYkJveCBUeXBlIEdtYkggJiBDYXJyb2lzIENvcnBvcmF0ZSBHYlIgJiBFZGVuc3BpZWtlcm1hbm4gQUdodHRwczovL3d3dy5iYm94dHlwZS5jb21MaWNlbnNlZCB1bmRlciB0aGUgT3BlbiBGb250IExpY2Vuc2UsIHZlcnNpb24gMS4xIG9yIGxhdGVyaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwARABpAGcAaQB0AGkAegBlAGQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQAyAC0AMgAwADEAOAAsACAAVABoAGUAIABNAG8AegBpAGwAbABhACAARgBvAHUAbgBkAGEAdABpAG8AbgAgAGEAbgBkACAAVABlAGwAZQBmAG8AbgBpAGMAYQAgAFMALgBBAC4ALAAgAGIAQgBvAHgAIABUAHkAcABlACAARwBtAGIASAAgAGEAbgBkACAAQwBhAHIAcgBvAGkAcwAgAEMAbwByAHAAbwByAGEAdABlACAARwBiAFIALAAgAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgACIARgBpAHIAYQAiAEYAaQByAGEAIABTAGEAbgBzACAAQwBvAG4AZABlAG4AcwBlAGQAIABCAG8AbwBrAEkAdABhAGwAaQBjADQALgAzADAAMQA7AGIAQgAgACAAOwBGAGkAcgBhAFMAYQBuAHMAQwBvAG4AZABlAG4AcwBlAGQALQBCAG8AbwBrAEkAdABhAGwAaQBjAEYAaQByAGEAIABTAGEAbgBzACAAQwBvAG4AZABlAG4AcwBlAGQAIABCAG8AbwBrACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADQALgAzADAAMQA7AFAAUwAgADAAMAA0AC4AMwAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADgAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADQANwA3ADUARgBpAHIAYQBTAGEAbgBzAEMAbwBuAGQAZQBuAHMAZQBkAC0AQgBvAG8AawBJAHQAYQBsAGkAYwBGAGkAcgBhACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAaABlACAATQBvAHoAaQBsAGwAYQAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAuAGIAQgBvAHgAIABUAHkAcABlACAARwBtAGIASAAgACYAIABDAGEAcgByAG8AaQBzACAAQwBvAHIAcABvAHIAYQB0AGUAIABHAGIAUgAgACYAIABFAGQAZQBuAHMAcABpAGUAawBlAHIAbQBhAG4AbgAgAEEARwBoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBiAGIAbwB4AHQAeQBwAGUALgBjAG8AbQBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAdgBlAHIAcwBpAG8AbgAgADEALgAxACAAbwByACAAbABhAHQAZQByAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABGAGkAcgBhACAAUwBhAG4AcwAgAEMAbwBuAGQAZQBuAHMAZQBkAEIAbwBvAGsAIABJAHQAYQBsAGkAYwBTAHQAeQBsAGkAcwB0AGkAYwAgAHYAYQByAGkAYQBuAHQAcwAgAEIAdQBsAGcAYQByAGkAYQBuACwAIABkAGkAZgBmAGUAcgBlAG4AdAAgAEEAZgByAGkAYwBhAG4AIABsAGEAbgBnAHUAYQBnAGUAcwBTAHQAeQBsAGkAcwB0AGkAYwAgAHYAYQByAGkAYQBuAHQAcwAgAEwAaQBiAGUAcgBpAGEAbgBTAHQAeQBsAGkAcwB0AGkAYwAgAHYAYQByAGkAYQBuAHQAIABhAG0AcABlAHIAcwBhAG4AZABTAHQAeQBsAGkAcwB0AGkAYwAgAHYAYQByAGkAYQBuAHQAcwAgAEcAcgBlAGUAawAAAAAAAAQAAAADAAAAJAADAAEAAAAkAAAABAAAEFYAAwAK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AXMBeAGIAbIBpAGoAa8B+gHwAfMB9QGRAjgCSgI6Aj4CXwJFCX4CXQKtAqECpQKnAtcCaQLZABoBcQADAVkAGwFyACsBhgAuAYkALwGLACwBhwA4AZMAOgGVAFQBtQBEAaUATwGwAFUBtgBFAaYAZQHVAGMB0wBnAdcAZgHWAG8B5gBtAeQAhgICAIIB/gB3AfEAgwH/AH0B7wB1Af0AiAIGAI0CDQIOAJECEgCWAhgAlAIWAJcCGgCaAiEAoQIqAKQCLgCiAiwCKwCoAjMAygJVALACPADHAlIA1gJjAN8CbwDhAnIA4AJxAOgCfwDsAoMA6wKCAOoCgQD1Ao8A9AKNAPMCjAEcAscBGAK3AQQCowEbAsYBFgK1ARkCxAEkAs8BLALYAS0BNwLjATkC5gE4AuQCigGDACcAKQGEAP4CmgDQADEBjQA2AD0APwGeAZkAVwDxAFYAYAk3AGgBHwHtAIQAhQCOAg8CFAITAJ4AqQI3ALIAwQJMAMgCUwDaAmgBMwD/ApsAWAG/ApwA+wKXAQABEAKvARoBIAEwAtwBPALqAFsAXQHJAcoEbgD9ApkB2QLUBGQEZQRjBGYANQBBAaEAkACZAh4AoACqAjYACQFfAHgB8gCxAj0BBQKkAQwCqwEJAqgBCgKpAQsCqgHDABIBaAAVAWsAIgF6AGoB4QBkAdQAjAIMAM4CWgDPAlsAXAHHAgUANABAAZ8AYgHRAHMBKACnAjIAHQF0ACEBeQDSAl4AEAFmABgBbgBNAa4AUwG0AHoB9ACBAfwAuQJEAMkCVADiAnMA5AJ5AQcCpgEXArYA7QKEAPcCkQBrAeIAbgHlAKsBlgCuAmIBOwLoABMBaQBGAacAuwJGANUCYQC8AkcAvQJIATIC3gIZAi8CkgIEAZICbQAeADIBjwCSAPgCiQLrAGkB3QAoAQMBIQBZAcEAigIKAN0CbADlAnwBNALfAXcBbwFwAX8CXAGKAZ0BmwG8AcQBxQG3AbkBuwG6AggB2AHgAU0B0gJwAeoB6QHoAgECAAFQAh8CFQIdAhwCKAInAiYCNAI1AVICOwFTAlkCZwJ9AnsCeAJ6AncCdQJ2AVQBVQKIAb0CCQHAAb4CnwKdAqICxQLKAswC0wLhAVYC6QLlAcYByAHaAdwB2wGOAYEBTAG4AU4BTwIHAhABUQJrAd4B3wGgAZoBogKeApYCjgHPAiACIgGCAYAB6wHsBGgEZwRpBG8EcQpCCj4KPQr5CkMKQAqECoIKRgpECj8KRQpBCjoKPAo7CiYKJQqBCoYKjwqOCpAKigonCjkEagRtBHAKNQopCisKLQosCioKSQpKCkwKUApRClIKTgpICkcKUwpPCksKTQpUBokHIAaKByEKNwo4BosHIghtByMHJAclCSIGZwrZCtsGgAkhBoEGggaDBoUGhgcXBocGiAcdBx4HHwcVBxoHFgcZBxsHGAccBpEHLActBpIGkwaUBy4HLwcrBowHJgaNBycGjgcoBo8HKQaQByoHMAcxBzIHMwaVBzQKNgaWBzUGlwaYBzYHNwaZBpoGmwR7BHwEpAR3BJwEmwSeBJ8EoASZBJoEoQSEBIEEjgSVBHMEdAR1BHYEeQR6BH0EfgR/BIAEgwSPBJAEkgSRBJMElASXBJgElgSdBKIEowUZBRoFIwUvBTAFMgUxBTMFNAU3BTgFNgU9BUIFQwUbBRwFRAUXBTwFOwU+BT8FQAU5BToFQQUkBSEFLgU1BKUFRQSmBUYEpwVHBKgFSASpBUkEqgVKBKsFSwSsBUwErQVNBK4FTgSvBU8EsAVQBLEFUQSCBSIE+wWbBPwFnAR4BRgEsgVSBLMFUwS0BVQEtQVVBLYFVgS3BVcEuAVYBLkFWQS6BVoEuwVbBLwFXQS+BV4EvwVfBMAFYAsACwILAQsDBMEFYQTCBWIEwwVjBMQFZATFBWUExwVnBMgFaATJBMoFagTLBWsEzAVsBM0FbQTOBW4EzwVvBNAFcAVpBNEFcQTSBXIE0wVzBNQFdATVBXUE1gV2BNcFdwTYBXgE2QV5BNoFegTbBXsE3AV8BN0FfQTeBX4E3wV/BOAFgAThBYEE4gWCBOMFgwTkBYQE5QWFBOYFhgTnBYcE6AWIBOkFiQTqBYoE6wWLBOwFjATtBY0E7gWOBO8FjwTwBZAE8QWRBPIFkgTzBZME9AWUBPUFlQT2BZYE9wWXBPgFmAT5BZkE+gWaBL0FXATGBWYE/QWdBP4FngT/BZ8FAAWgCowKiQqNCoAKiAp/ACQBfAAlAX0AOwGXADwBmAA+AZwAOQGUAF8BzQBwAecAfAH2AJgCGwCVAhcAnAIkAJ0CJQClAjAApgIxAKMCLQDUAmAAzAJXAMsCVgDYAmUA2QJmAOMCdADuAoUA7wKGAPkClAD6ApUA/AKYAPYCkAEdAsgBJgLRASMCzgElAtABOgLnABQBagAXAW0ACwFhAA0BYwAOAWQADwFlAAwBYgAEAVoABgFcAAcBXQAIAV4ABQFbAFABsQBSAbMAWgHCAEgBqQBKAasASwGsAEwBrQBJAaoAgAH7AH4B+AC+AkkAwAJLALQCPwC2AkEAtwJCALgCQwC1AkAAwgJNAMQCTwDFAlAAxgJRAMMCTgENAqwBDwKuARECsAETArIBFAKzARUCtAESArEBLwLbAS4C2gExAt0BNQLgBuQHQAdBB1cHWAdhB2IHeAd5B4YHhweSB5MHogejB0MHRAdGB0UHRwdCB1AGpganBqQGpQaoCt4HsQrcCvMK7gdlB2QHZgdjB28Gtwa4BsEGwgbDCuEK5AroB3oHfwbWBtcG1AbVCuIK5grqB5UHlgeXB5gHiAeJB5QHmQbnBugG5QbmBuAK7ArtCu8HpgelB6cHpAewBt4G3wbxBvIG8wrxCt8JJwksCSsJKQkqCQMJBAkBCP8JAAkCCOIJEQkSCQ0JDwkQCQ4KCgoLCOAJlwl6CXgI9Qj2BGsJlgl5CXcI7QjuCT8JPQk0CTYJPAk5CMgIyQniCdwJ3gngCeQJ5QnjCd0J3wnhCekJ5gnnCegKEAmKCY4JkAl8CXQJkQmECYMKEwoRChQA5gF1ApMCywEnAtIKIwooAOkCgAByAJMK/gCJADAAJgF+AM0CWAAMAAAAAD7UAAAAAAAABTsAAAANAAAADQAACS0AAAAgAAAAIAAACSUAAAAhAAAAIQAACNsAAAAiAAAAIgAACRcAAAAjAAAAIwAACOMAAAAkAAAAJAAACTMAAAAlAAAAJQAACZQAAAAmAAAAJgAACgAAAAAnAAAAJwAACRgAAAAoAAAAKQAACO8AAAAqAAAAKgAACOEAAAArAAAAKwAACXsAAAAsAAAALAAACNcAAAAtAAAALQAACP0AAAAuAAAALgAACNYAAAAvAAAALwAACOQAAAAwAAAAOQAACHEAAAA6AAAAOwAACNgAAAA8AAAAPAAACYIAAAA9AAAAPQAACX8AAAA+AAAAPgAACYEAAAA/AAAAPwAACN0AAABAAAAAQAAACf8AAABBAAAAQQAAAAEAAABCAAAAQgAAACMAAABDAAAAQwAAACoAAABEAAAARAAAADMAAABFAAAARQAAAEIAAABGAAAARgAAAF4AAABHAAAARwAAAGEAAABIAAAASAAAAGwAAABJAAAASQAAAHQAAABKAAAASgAAAIcAAABLAAAASwAAAIsAAABMAAAATAAAAI8AAABNAAAATQAAAJsAAABOAAAATgAAAJ8AAABPAAAATwAAAK0AAABQAAAAUAAAANcAAABRAAAAUQAAANwAAABSAAAAUgAAAN4AAABTAAAAUwAAAOcAAABUAAAAVAAAAPIAAABVAAAAVQAAAQEAAABWAAAAVgAAAR4AAABXAAAAVwAAASIAAABYAAAAWQAAASkAAABaAAAAWgAAATYAAABbAAAAWwAACPMAAABcAAAAXAAACOUAAABdAAAAXQAACPQAAABeAAAAXgAACYkAAABfAAAAXwAACQUAAABgAAAAYAAACocAAABhAAAAYQAAAVcAAABiAAAAYgAAAXsAAABjAAAAYwAAAYUAAABkAAAAZAAAAZAAAABlAAAAZQAAAaMAAABmAAAAZgAAAcsAAABnAAAAZwAAAdAAAABoAAAAaAAAAeMAAABpAAAAaQAAAe4AAABqAAAAagAAAgMAAABrAAAAawAAAgsAAABsAAAAbAAAAhEAAABtAAAAbQAAAiMAAABuAAAAbgAAAikAAABvAAAAbwAAAjkAAABwAAAAcAAAAmQAAABxAAAAcQAAAmoAAAByAAAAcgAAAm4AAABzAAAAcwAAAn4AAAB0AAAAdAAAAosAAAB1AAAAdQAAAqAAAAB2AAAAdgAAAskAAAB3AAAAdwAAAs0AAAB4AAAAeQAAAtUAAAB6AAAAegAAAuIAAAB7AAAAewAACPEAAAB8AAAAfAAACgcAAAB9AAAAfQAACPIAAAB+AAAAfgAACYcAAACgAAAAoAAACSYAAAChAAAAoQAACNwAAACiAAAAogAACTAAAACjAAAAowAACT4AAACkAAAApAAACTIAAAClAAAApQAACUAAAACmAAAApgAACggAAACnAAAApwAACgIAAACoAAAAqAAACoUAAACpAAAAqQAACgMAAACqAAAAqgAABF8AAACrAAAAqwAACRMAAACsAAAArAAACYgAAACtAAAArQAACP4AAACuAAAArgAACgQAAACvAAAArwAACosAAACwAAAAsAAACgYAAACxAAAAsQAACYUAAACyAAAAswAACL0AAAC0AAAAtAAA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AncAAAJ+AAACfwAAAnUAAAKAAAACgQAAAVQAAAKCAAACggAAAogAAAKDAAACgwAAAb0AAAKEAAAChAAAAgkAAAKFAAAChQAAAcAAAAKGAAAChgAAAb4AAAKHAAAChwAAAp8AAAKIAAACiAAAAp0AAAKJAAACiQAAAqIAAAKKAAACigAAAsUAAAKLAAACiwAAAsoAAAKMAAACjAAAAswAAAKNAAACjQAAAtMAAAKOAAACjgAAAuEAAAKPAAACjwAAAVYAAAKQAAACkAAAAukAAAKRAAACkQAAAuUAAAKSAAACkgAAAcYAAAKTAAACkwAAAcgAAAKUAAAClAAAAdoAAAKVAAAClQAAAdwAAAKWAAAClgAAAdsAAAKXAAAClwAAAY4AAAKYAAACmAAAAYEAAAKZAAACmQAAAUwAAAKaAAACmgAAAbgAAAKbAAACnAAAAU4AAAKdAAACnQAAAgcAAAKeAAACngAAAhAAAAKfAAACnwAAAVEAAAKgAAACoAAAAmsAAAKhAAACogAAAd4AAAKjAAACowAAAaAAAAKkAAACpAAAAZoAAAKlAAACpQAAAaIAAAKmAAACpgAAAp4AAAKnAAACpwAAApYAAAKoAAACqAAAAo4AAAKpAAACqQAAAc8AAAKqAAACqgAAAiAAAAKrAAACqwAAAiIAAAKsAAACrAAAAYIAAAKtAAACrQAAAYAAAAKuAAACrwAAAesAAAKwAAACsAAABGgAAAKxAAACsQAABGcAAAKyAAACsgAABGkAAAK0AAACtAAABGwAAAK3AAACtwAABG8AAAK4AAACuAAABHEAAAK5AAACuQAACkIAAAK6AAACugAACj4AAAK7AAACuwAACj0AAAK8AAACvAAACvkAAAK/AAACvwAACkMAAALAAAACwAAACkAAAALGAAACxgAACoQAAALHAAACxwAACoIAAALIAAACyAAACkYAAALKAAACygAACkQAAALLAAACywAACj8AAALMAAACzAAACkUAAALOAAACzgAACkEAAALPAAACzwAACjoAAALQAAAC0AAACjwAAALRAAAC0QAACjsAAALUAAAC1AAACi4AAALWAAAC1gAACiYAAALXAAAC1wAACiUAAALYAAAC2AAACoEAAALZAAAC2QAACoYAAALaAAAC2gAACo8AAALbAAAC2wAACo4AAALcAAAC3AAACpAAAALdAAAC3QAACooAAALeAAAC3gAACicAAALgAAAC4AAACjkAAALhAAAC4QAABGoAAALiAAAC4gAABG0AAALjAAAC4wAABHAAAALkAAAC5AAACjUAAALlAAAC5QAACikAAALmAAAC5gAACisAAALnAAAC5wAACi0AAALoAAAC6AAACiwAAALpAAAC6QAACioAAALuAAAC7gAACiQAAAMAAAADAQAACkkAAAMCAAADAgAACkwAAAMDAAADBQAAClAAAAMGAAADBgAACk4AAAMHAAADBwAACkgAAAMIAAADCAAACkcAAAMJAAADCQAAClMAAAMKAAADCgAACk8AAAMLAAADCwAACksAAAMMAAADDAAACk0AAAMNAAADDQAAClQAAAMPAAADDwAAClUAAAMRAAADEwAAClYAAAMWAAADIQAAClkAAAMjAAADLQAACmUAAAMvAAADMgAACnAAAAM0AAADNgAACnQAAAM5AAADPQAACncAAANCAAADQgAACtcAAANFAAADRQAACtgAAANcAAADXAAACnwAAANhAAADYQAACn0AAANwAAADcAAABokAAANxAAADcQAAByAAAANyAAADcgAABooAAANzAAADcwAAByEAAAN0AAADdQAACjcAAAN2AAADdgAABosAAAN3AAADdwAAByIAAAN6AAADegAACG0AAAN7AAADfQAAByMAAAN+AAADfgAACSIAAAN/AAADfwAABmcAAAOEAAADhAAACtkAAAOFAAADhQAACtsAAAOGAAADhgAABoAAAAOHAAADhwAACSEAAAOIAAADigAABoEAAAOMAAADjAAABoQAAAOOAAADjwAABoUAAAOQAAADkAAABxcAAAORAAADoQAABmgAAAOjAAADqQAABnkAAAOqAAADqwAABocAAAOsAAADrgAABx0AAAOvAAADrwAABxUAAAOwAAADsAAABxoAAAOxAAADyQAABvwAAAPKAAADygAABxYAAAPLAAADywAABxkAAAPMAAADzAAABxsAAAPNAAADzQAABxgAAAPOAAADzgAABxwAAAPPAAADzwAABpEAAAPQAAAD0QAABywAAAPSAAAD1AAABpIAAAPVAAAD1gAABy4AAAPXAAAD1wAABysAAAPYAAAD2AAABowAAAPZAAAD2QAAByYAAAPaAAAD2gAABo0AAAPbAAAD2wAABycAAAPcAAAD3AAABo4AAAPdAAAD3QAABygAAAPeAAAD3gAABo8AAAPfAAAD3wAABykAAAPgAAAD4AAABpAAAAPhAAAD4QAAByoAAAPwAAAD8wAABzAAAAP0AAAD9AAABpUAAAP1AAAD9QAABzQAAAP2AAAD9gAACjYAAAP3AAAD9wAABpYAAAP4AAAD+AAABzUAAAP5AAAD+gAABpcAAAP7AAAD/AAABzYAAAP9AAAD/wAABpkAAAQAAAAEAQAABHsAAAQCAAAEAgAABKQAAAQDAAAEAwAABHcAAAQEAAAEBAAABJwAAAQFAAAEBQAABJsAAAQGAAAECAAABJ4AAAQJAAAECgAABJkAAAQLAAAECwAABKEAAAQMAAAEDAAABIQAAAQNAAAEDQAABIEAAAQOAAAEDgAABI4AAAQPAAAEDwAABJUAAAQQAAAEEwAABHMAAAQUAAAEFQAABHkAAAQWAAAEGQAABH0AAAQaAAAEGgAABIMAAAQbAAAEIwAABIUAAAQkAAAEJQAABI8AAAQmAAAEJgAABJIAAAQnAAAEJwAABJEAAAQoAAAEKQAABJMAAAQqAAAEKwAABJcAAAQsAAAELAAABJYAAAQtAAAELQAABJ0AAAQuAAAELwAABKIAAAQwAAAEMwAABRMAAAQ0AAAENQAABRkAAAQ2AAAEOQAABR0AAAQ6AAAEOgAABSMAAAQ7AAAEQwAABSUAAAREAAAERQAABS8AAARGAAAERgAABTIAAARHAAAERwAABTEAAARIAAAESQAABTMAAARKAAAESwAABTcAAARMAAAETAAABTYAAARNAAAETQAABT0AAAROAAAETwAABUIAAARQAAAEUQAABRsAAARSAAAEUgAABUQAAARTAAAEUwAABRcAAARUAAAEVAAABTwAAARVAAAEVQAABTsAAARWAAAEWAAABT4AAARZAAAEWgAABTkAAARbAAAEWwAABUEAAARcAAAEXAAABSQAAARdAAAEXQAABSEAAAReAAAEXgAABS4AAARfAAAEXwAABTUAAARgAAAEYAAABKUAAARhAAAEYQAABUUAAARiAAAEYgAABKYAAARjAAAEYwAABUYAAARkAAAEZAAABKcAAARlAAAEZQAABUcAAARmAAAEZgAABKgAAARnAAAEZwAABUgAAARoAAAEaAAABKkAAARpAAAEaQAABUkAAARqAAAEagAABKoAAARrAAAEawAABUoAAARsAAAEbAAABKsAAARtAAAEbQAABUsAAARuAAAEbgAABKwAAARvAAAEbwAABUwAAARwAAAEcAAABK0AAARxAAAEcQAABU0AAARyAAAEcgAABK4AAARzAAAEcwAABU4AAAR0AAAEdAAABK8AAAR1AAAEdQAABU8AAAR2AAAEdgAABLAAAAR3AAAEdwAABVAAAAR4AAAEeAAABLEAAAR5AAAEeQAABVEAAASKAAAEigAABIIAAASLAAAEiwAABSIAAASMAAAEjAAABPsAAASNAAAEjQAABZsAAASOAAAEjgAABPwAAASPAAAEjwAABZwAAASQAAAEkAAABHgAAASRAAAEkQAABRgAAASSAAAEkgAABLIAAASTAAAEkwAABVIAAASUAAAElAAABLMAAASVAAAElQAABVMAAASWAAAElgAABLQAAASXAAAElwAABVQAAASYAAAEmAAABLUAAASZAAAEmQAABVUAAASaAAAEmgAABLYAAASbAAAEmwAABVYAAAScAAAEnAAABLcAAASdAAAEnQAABVcAAASeAAAEngAABLgAAASfAAAEnwAABVgAAASgAAAEoAAABLkAAAShAAAEoQAABVkAAASiAAAEogAABLoAAASjAAAEowAABVoAAASkAAAEpAAABLsAAASlAAAEpQAABVsAAASmAAAEpgAABLwAAASnAAAEpwAABV0AAASoAAAEqAAABL4AAASpAAAEqQAABV4AAASqAAAEqgAABL8AAASrAAAEqwAABV8AAASsAAAErAAABMAAAAStAAAErQAABWAAAASuAAAErgAACwAAAASvAAAErwAACwIAAASwAAAEsAAACwEAAASxAAAEsQAACwMAAASyAAAEsgAABMEAAASzAAAEswAABWEAAAS0AAAEtAAABMIAAAS1AAAEtQAABWIAAAS2AAAEtgAABMMAAAS3AAAEtwAABWMAAAS4AAAEuAAABMQAAAS5AAAEuQAABWQAAAS6AAAEugAABMUAAAS7AAAEuwAABWUAAAS8AAAEvAAABMcAAAS9AAAEvQAABWcAAAS+AAAEvgAABMgAAAS/AAAEvwAABWgAAATAAAAEwQAABMkAAATCAAAEwgAABWoAAATDAAAEwwAABMsAAATEAAAExAAABWsAAATFAAAExQAABMwAAATGAAAExgAABWwAAATHAAAExwAABM0AAATIAAAEyAAABW0AAATJAAAEyQAABM4AAATKAAAEygAABW4AAATLAAAEywAABM8AAATMAAAEzAAABW8AAATNAAAEzQAABNAAAATOAAAEzgAABXAAAATPAAAEzwAABWkAAATQAAAE0AAABNEAAATRAAAE0QAABXEAAATSAAAE0gAABNIAAATTAAAE0wAABXIAAATUAAAE1AAABNMAAATVAAAE1QAABXMAAATWAAAE1gAABNQAAATXAAAE1wAABXQAAATYAAAE2AAABNUAAATZAAAE2QAABXUAAATaAAAE2gAABNYAAATbAAAE2wAABXYAAATcAAAE3AAABNcAAATdAAAE3QAABXcAAATeAAAE3gAABNgAAATfAAAE3wAABXgAAATgAAAE4AAABNkAAAThAAAE4QAABXkAAATiAAAE4gAABNoAAATjAAAE4wAABXoAAATkAAAE5AAABNsAAATlAAAE5QAABXsAAATmAAAE5gAABNwAAATnAAAE5wAABXwAAAToAAAE6AAABN0AAATpAAAE6QAABX0AAATqAAAE6gAABN4AAATrAAAE6wAABX4AAATsAAAE7AAABN8AAATtAAAE7QAABX8AAATuAAAE7gAABOAAAATvAAAE7wAABYAAAATwAAAE8AAABOEAAATxAAAE8QAABYEAAATyAAAE8gAABOIAAATzAAAE8wAABYIAAAT0AAAE9AAABOMAAAT1AAAE9QAABYMAAAT2AAAE9gAABOQAAAT3AAAE9wAABYQAAAT4AAAE+AAABOUAAAT5AAAE+QAABYUAAAT6AAAE+gAABOYAAAT7AAAE+wAABYYAAAT8AAAE/AAABOcAAAT9AAAE/QAABYcAAAT+AAAE/gAABOgAAAT/AAAE/wAABYgAAAUAAAAFAAAABOkAAAUBAAAFAQAABYkAAAUCAAAFAgAABOoAAAUDAAAFAwAABYoAAAUEAAAFBAAABOsAAAUFAAAFBQAABYsAAAUGAAAFBgAABOwAAAUHAAAFBwAABYwAAAUIAAAFCAAABO0AAAUJAAAFCQAABY0AAAUKAAAFCgAABO4AAAULAAAFCwAABY4AAAUMAAAFDAAABO8AAAUNAAAFDQAABY8AAAUOAAAFDgAABPAAAAUPAAAFDwAABZAAAAUQAAAFEAAA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COcAACBEAAAgRAAACMUAACBKAAAgSgAACOYAACBwAAAgcAAACLsAACB0AAAgeQAACL8AACB6AAAgegAACZcAACB7AAAgewAACXoAACB8AAAgfAAACXgAACB9AAAgfgAACPUAACB/AAAgfwAABGsAACCAAAAgiQAACJ0AACCKAAAgigAACZYAACCLAAAgiwAACXkAACCMAAAgjAAACXcAACCNAAAgjgAACO0AACChAAAgoQAACTEAACCmAAAgpgAACToAACCpAAAgqQAACT8AACCqAAAgqgAACT0AACCrAAAgqwAACTQAACCsAAAgrAAACTYAACCvAAAgrwAACTUAACC0AAAgtAAACTgAACC5AAAguQAACTwAACC6AAAgugAACTkAACC9AAAgvQAACTsAACEKAAAhCgAACG4AACETAAAhEwAACgkAACEWAAAhFgAACg0AACEiAAAhIgAACgUAACEmAAAhJgAACY0AACEuAAAhLgAACgwAACFTAAAhVAAACMgAACFVAAAhXgAACMwAACFfAAAhXwAACMYAACGQAAAhkAAACeIAACGRAAAhkQAACdwAACGSAAAhkgAACd4AACGTAAAhkwAACeAAACGUAAAhlQAACeQAACGWAAAhlgAACeMAACGXAAAhlwAACd0AACGYAAAhmAAACd8AACGZAAAhmQAACeEAACHmAAAh5gAACekAACHnAAAh6QAACeYAACHqAAAh6gAAChAAACICAAAiAgAACZMAACIFAAAiBQAACYoAACIGAAAiBgAACY4AACIPAAAiDwAACY8AACIRAAAiEQAACZAAACISAAAiEgAACXwAACIVAAAiFQAACXUAACIZAAAiGQAACXQAACIaAAAiGgAACZEAACIeAAAiHgAACYsAACIrAAAiKwAACYwAACJIAAAiSAAACYYAACJgAAAiYAAACYAAACJkAAAiZAAACYQAACJlAAAiZQAACYMAACLFAAAixQAACXYAACMmAAAjJgAAChMAACMnAAAjJwAAChEAACMoAAAjKAAAChQAACMrAAAjKwAAChIAACPOAAAjzgAAChUAACP7AAAj/gAACvoAACWvAAAlrwAACfAAACWyAAAlsgAACfEAACW0AAAltAAACfcAACW2AAAltgAACfIAACW4AAAluAAACfgAACW6AAAlugAACfUAACW8AAAlvAAA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UM1Q1FDdUORQ61D4UP9RBlENURRRG1EiUSlRMFE3UT5RRVFMUVNRWlFhUWhRb1F7UYJRiVGQUZdRnlGlUaxRs1G6UcFRyFHPUdZR3VHkUetR8lH5UgBSB1IOUhVSHFIjUipSMVI4Uj9SRlJNUltSZFJ0UoBSjFKaUqhStFLAUsxS2FLkUvBTAlMOUxxTJlMyUz5TSlNUU2BTalN5U4ZTl1OhU69TulPHU9BT2lPrVAFUE1QpVDpUR1RRVGNUbVR5VINUj1SZVKNUrVS3VMFUy1TXVOFU6VTzVPtVA1UNVRpVJlUxVTlVSVVYVWhVcVV6VYhVj1WXVaJVqVWwVbVVv1XMVdNV31XmVe1V+VYAVgdWE1YaViZWLVY5VkBWR1ZTVl9WZlZtVnRWe1aHVpNWmlahVq1WuFbGVtFW4FbzVvpXAVcRVyFXLlc4V0JXTFdcV2hXeleKV5ZXolepV7NXt1fGV9hX6Vf6WBFYG1glWDNYQlhRWFtYblh9WIxYm1iuWL1Y0VjpWP1ZBVkZWSFZKVk/WVVZZll8WY5ZpVm2WcdZ0VngWfNaAFoWWixaNlpGWlVaZFp5WohanFqvWr5ay1rdWupa/FsGWxpbKVs7W0pbVVtjW3NbelwSXDFBYnJldmV1bmkxRUFFdW5pMUVCNnVuaTFFQjB1bmkxRUIydW5pMDFDRHVuaTFFQTR1bmkxRUE2dW5pMUVCNHVuaTFFQTh1bmkxRUFDdW5pMDIwMHVuaTFFQUF1bmkwMURFdW5pMDIyNnVuaTAxRTB1bmkxRUEwdW5pMUVBMnVuaTAyMDJ1bmkyQzZEQW1hY3JvbnVuaTAyM0FBcmluZ2FjdXRlQW9nb25la3VuaTAxRTJBRWFjdXRldW5pMUUwMnVuaTFFMDR1bmkwMTgxdW5pQTdCNHVuaTAxODJ1bmkwMjQzQ2FjdXRlQ2Nhcm9uQ2RvdGFjY2VudHVuaTAxODdDY2lyY3VtZmxleHVuaUE3QjN1bmkwMjNCdW5pMDFGMXVuaTAxODl1bmkwMUM0RGNhcm9uRGNyb2F0dW5pMUUxMnVuaTFFMEF1bmkxRTBDdW5pMDE4QXVuaTAxRjJ1bmkxRTBFdW5pMDE4QnVuaTAxQzVFYnJldmVFY2Fyb251bmkxRUJFdW5pMDIyOHVuaTFFQzZ1bmkxRUMwdW5pMUVDNHVuaTFFQzJ1bmkwMjA0dW5pMUVCOEVkb3RhY2NlbnRFbWFjcm9udW5pMDIwNnVuaTFFQkFFb2dvbmVrdW5pMDE4RXVuaTAxQTl1bmkwMTkwdW5pMDI0NnVuaTFFQkN1bmkwMUI4dW5pMDFFRXVuaTAxQjd1bmkwMUY0dW5pMDE5MXVuaTFFMUVHYnJldmVHY2Fyb251bmkwMTIyR2RvdGFjY2VudEdjaXJjdW1mbGV4dW5pMDE5M3VuaTAyMUN1bmkwMjQxdW5pMDFFNHVuaTFFMjRIY2lyY3VtZmxleHVuaUE3QUF1bmlBNzhEdW5pMDIxRUhiYXJ1bmkwMUY2SUpJYnJldmV1bmkwMUNGdW5pMDIwOHVuaTFFMkVJZG90YWNjZW50dW5pMDIwQXVuaTFFQzh1bmkxRUNBSW1hY3JvbklvZ29uZWt1bmkwMTk3dW5pMDE5Nkl0aWxkZXVuaUE3QjJKY2lyY3VtZmxleHVuaTAyNDh1bmkwMUU4dW5pMDFDN3VuaTAxMzZ1bmkwMTk4dW5pMDIzRExhY3V0ZXVuaUE3QURMY2Fyb251bmkwMTNCdW5pMUUzQ0xkb3R1bmkxRTM2dW5pMDFDOHVuaTFFNDB1bmkxRTNFdW5pMDE5Q05hY3V0ZXVuaTAxQ0FOY2Fyb251bmkxRTQ0dW5pMDE0NXVuaTFFNEF1bmkxRTQ2dW5pMDFGOHVuaTAxOURFbmd1bmkwMUNCdW5pMDIyMHVuaTAyMjJ1bmkwMUQxT2JyZXZldW5pMDE5RnVuaTFFRDB1bmkxRUQ4dW5pMUVENHVuaTFFRDJ1bmkwMjBDdW5pMUVENnVuaTAyMzB1bmkwMjJFdW5pMDIyQXVuaTFFQ0N1bmkxRUNFT2hvcm51bmkxRUUydW5pMUVERXVuaTFFREF1bmkxRURDdW5pMDIwRU9tYWNyb251bmkxRUUwT2h1bmdhcnVtbGF1dHVuaTAxQTJ1bmkwMUVBdW5pMUU1MHVuaTFFNTJ1bmlBN0I2dW5pMDFFQ3VuaTFFNEN1bmkwMTg2T3NsYXNoYWN1dGV1bmkwMjJDdW5pMUU1NHVuaTFFNTZ1bmkwMUE0UmNhcm9uUmFjdXRldW5pMDI0QXVuaTAyMTB1bmkwMTU2dW5pMUU1QXVuaTAyMTJ1bmkwMjRDdW5pMkM2NFNhY3V0ZXVuaUE3OEJTY2VkaWxsYXVuaTFFNjJ1bmkwMjE4U2NpcmN1bWZsZXh1bmkxRTYwdW5pMUU5RXVuaTAxOEZUYmFydW5pMDE2MlRjYXJvbnVuaTFFNzB1bmkxRTZBdW5pMDIxQXVuaTAyM0V1bmkxRTZDdW5pMDFBQ3VuaTFFNkV1bmkwMUJDdW5pMDE4NHVuaTAxQTd1bmkwMUFFdW5pMDI0NFVicmV2ZXVuaTAxRDN1bmkwMjE0dW5pMDFEQnVuaTAxRDd1bmkwMUQ5dW5pMUVFNHVuaTAxRDV1bmkxRUU2dW5pMUVFOFVob3JudW5pMUVGMHVuaTFFRUN1bmkxRUVBdW5pMUVFRVVodW5nYXJ1bWxhdXR1bmkwMUIxdW5pMDIxNlVtYWNyb25Vb2dvbmVrVXJpbmdVdGlsZGV1bmkwMUIydW5pMUU3OHVuaTAxOTR1bmkwMjQ1V2FjdXRlV2RpZXJlc2lzV2NpcmN1bWZsZXh1bmkyQzcyV2dyYXZldW5pMDFGN1lncmF2ZXVuaTFFRjR1bmkxRUY2dW5pMDFCM1ljaXJjdW1mbGV4dW5pMDFBNnVuaTAyMzJ1bmkxRUY4WmFjdXRldW5pMDI0RVpkb3RhY2NlbnR1bmkxRTkyQWFjdXRlLmxvY2xIVU5FYWN1dGUubG9jbEhVTnVuaTAyMjR1bmkwMUI1T2FjdXRlLmxvY2xIVU5JYWN1dGUubG9jbEhVTlVhY3V0ZS5sb2NsSFVOQ2FjdXRlLmxvY2xQTEtPYWN1dGUubG9jbFBMS05hY3V0ZS5sb2NsUExLWmFjdXRlLmxvY2xQTEtTYWN1dGUubG9jbFBMS3VuaTAxODEuc3MwMkVuZy5zczAxdW5pMDE5RC5zczAxdW5pMkM2NC5zczAxdW5pQTc4RC5zczAydW5pMDI5OXVuaTAyNjJ1bmkwMjlDdW5pMDI5QnVuaTAyNkF1bmkwMjlGdW5pMDI3NnVuaTAyNzR1bmkwMjgwdW5pMDI4MXVuaTAyOEZhYnJldmV1bmkxRUFGdW5pMUVCMXVuaTFFQjd1bmkxRUIzdW5pMUVCNXVuaTAxQ0V1bmkxRUFEdW5pMUVBNXVuaTFFQTd1bmkxRUE5dW5pMDFERnVuaTFFQTF1bmkwMjI3dW5pMUVBQnVuaTAyMDF1bmkwMUUxdW5pMDI1MXVuaTFFQTN1bmkwMjAzdW5pMDI1MmFvZ29uZWthbWFjcm9udW5pMDI1MGFyaW5nYWN1dGV1bmkyQzY1dW5pMDFFM2FlYWN1dGV1bmkxRTA1dW5pMUUwM3VuaTAyNTN1bmlBN0I1dW5pMDJBRHVuaTAyQUN1bmkwMjk4dW5pMDE4MGNjYXJvbnVuaTAxODNjYWN1dGVjZG90YWNjZW50dW5pMDI1NWNjaXJjdW1mbGV4dW5pQUI1M3VuaTAyOTd1bmkwMjNDdW5pMDE4OHVuaTFFMTNkY2Fyb251bmkwMjM4ZGNyb2F0dW5pMUUwRHVuaTFFMEJ1bmkwMjIxdW5pMDE4RHVuaTAyNTd1bmkwMkE0dW5pMUUwRnVuaTAyNTZ1bmkwMUYzdW5pMDE4Q3VuaTAxQzZ1bmkwMkEzdW5pMDJBNWVicmV2ZXVuaTAyMjllY2Fyb251bmkxRUJGdW5pMUVDMXVuaTFFQzd1bmkxRUMzdW5pMUVDNXVuaTAyMDVlZG90YWNjZW50dW5pMUVCOXVuaTFFQkJlbWFjcm9uZW9nb25la3VuaTAyMDd1bmkwMjVCdW5pMDI1Q3VuaTAyNUV1bmkwMjlBdW5pMDI1RHVuaTAyODZ1bmkwMjU4dW5pMDI4M3VuaTFFQkR1bmkwMjQ3dW5pMDFBQXVuaTAyODV1bmkwMUREdW5pMDI1OXVuaTAyOTJ1bmkwMjVBdW5pMDFFRnVuaTAyOTN1bmkwMUI5dW5pMDFCQWZfc2hvcnRmZG90YWNjZW50X3Nob3J0dW5pMUUxRnVuaTAyQTl1bmkwMUY1Z2Nhcm9udW5pMDI2M2dicmV2ZWdjaXJjdW1mbGV4dW5pMDFCRXVuaTAxMjNnZG90YWNjZW50dW5pMDI2MHVuaTAyOTR1bmkwMjQydW5pMDI5NXVuaTAyOTZ1bmkwMkExdW5pMDFFNXVuaTAyNjF1bmkwMkEydW5pMDIxRGhjaXJjdW1mbGV4dW5pMDIxRmhiYXJ1bmkxRTI1dW5pMDI2NXVuaTAyQUV1bmkwMjY3dW5pMDI2NnVuaTAyQUZ1bmkwMTk1aWJyZXZldW5pMDFEMHVuaTFFMkZ1bmkwMjA5aS5sb2NsVFJLdW5pMUVDOXVuaTFEN0J1bmkxRUNCdW5pMDIwQmlvZ29uZWtpamltYWNyb251bmkwMjY5dW5pMDI2OGl0aWxkZXVuaTAyMzd1bmkwMUYwdW5pMDI5RGpjaXJjdW1mbGV4dW5pMDI1RnVuaTAyODR1bmkwMjQ5dW5pMDFFOXVuaTAxMzd1bmkwMTk5a2dyZWVubGFuZGljdW5pMDI5RXVuaTAxOUJsYWN1dGV1bmkwMTlBbGNhcm9udW5pMDI2Q3VuaTFFM0R1bmkwMTNDdW5pMUUzN3VuaTAyMzRsZG90dW5pMDI2RXVuaTAyNkR1bmkwMUM5dW5pMDI2QnVuaTAyQUF1bmkxRTNGdW5pMDJBQnVuaTAyNzF1bmkxRTQxdW5pMDI3MHVuaTAyNkZuY2Fyb25uYXBvc3Ryb3BoZW5hY3V0ZXVuaTFFNEJ1bmkwMjM1dW5pMUU0NXVuaTAxNDZ1bmkxRTQ3dW5pMDI3MmVuZ3VuaTAxRjl1bmkwMjczdW5pMDFDQ3VuaTAxOUVvYnJldmV1bmkwMjc1dW5pMDFEMnVuaTFFRDl1bmkxRUQxdW5pMUVEM3VuaTAyMER1bmkxRUQ3dW5pMUVENXVuaTAyMzF1bmkwMjJCdW5pMDIyRnVuaTFFQ0R1bmkxRUNGb2hvcm51bmkxRURGdW5pMUVEQnVuaTFFRTN1bmkxRUREb2h1bmdhcnVtbGF1dHVuaTFFRTF1bmkwMjBGdW5pMDFBM29tYWNyb251bmkxRTUzdW5pMDFFQnVuaTAyNzd1bmkxRTUxdW5pQTdCN3VuaTAxRUR1bmkwMjU0b3NsYXNoYWN1dGV1bmkxRTREdW5pMDIyM3VuaTAyMkR1bmkxRTU1dW5pMDI3OHVuaTFFNTd1bmkwMUE1dW5pMDI0QnVuaTAyQTB1bmkwMjY0dW5pMDIzOXJhY3V0ZXVuaTFFNUJ1bmkwMTU3dW5pMDIxMXVuaTAyN0Z1bmkwMjdFcmNhcm9udW5pMDI3QnVuaTAyN0R1bmkwMjEzdW5pMDI3Q3VuaTAyNER1bmkwMjdBdW5pMDI3OXVuaUE3OENzYWN1dGVzY2lyY3VtZmxleHNjZWRpbGxhdW5pMDIxOXVuaTFFNjF1bmkxRTYzdW5pMDI4MnVuaTAyM0Zsb25nc3RiYXJ1bmkwMkE4dGNhcm9udW5pMUU3MXVuaTAxNjN1bmkwMjFCdW5pMDIzNnVuaTFFNkJ1bmkyQzY2dW5pMUU2RHVuaTFFNkZ1bmkwMUJEdW5pMDFBRHVuaTAyQTd1bmkwMjg4dW5pMDFBQnVuaTAxODV1bmkwMUE4dW5pMDI4N3VuaTAyQTZ1bmkwMjg5dWJyZXZldW5pMDFENHVuaTAyMTV1bmkwMURDdW5pMDFEQXVuaTFFRTV1bmkwMUQ4dW5pMDFENnVuaTFFRTl1aG9ybnVuaTFFRjF1bmkxRUU3dW5pMUVFQnVuaTFFRUZ1aHVuZ2FydW1sYXV0dW5pMUVFRHVuaTAyMTd1bWFjcm9udW5pMUQ2RHVuaTFENkN1bmkxRDZFdW5pMUQ2RnVuaTFENzB1bmkxRDcydW5pMUQ3MXVuaTFENzZ1bmkxRDc0dW5pMUQ3M3VuaTFENzV1b2dvbmVrdW5pMUQ5MXVyaW5ndXRpbGRldW5pMDI4QXVuaTJDNzF1bmkxRTc5dW5pMDI4Q3VuaTAyOEJ3Z3JhdmV3YWN1dGV3Y2lyY3VtZmxleHdkaWVyZXNpc3VuaTJDNzN1bmkwMUJGdW5pMDI4RHljaXJjdW1mbGV4dW5pMUVGNXlncmF2ZXVuaTFFRjd1bmkwMUI0dW5pMDI4RXVuaTFFRjl1bmkwMjRGdW5pMDIzM3pkb3RhY2NlbnR1bmkxRTkzdW5pMDI5MXphY3V0ZXVuaTAyMjVmLmxvY2xFV0V1bmkwMUI2dW5pMDI0MHVuaTAyOTBmLmxvY2xFV0Vfc2hvcnRvYWN1dGUubG9jbEhVTmVhY3V0ZS5sb2NsSFVOYWFjdXRlLmxvY2xIVU5pYWN1dGUubG9jbEhVTnVhY3V0ZS5sb2NsSFVOb2FjdXRlLmxvY2xQTEtuYWN1dGUubG9jbFBMS2NhY3V0ZS5sb2NsUExLc2FjdXRlLmxvY2xQTEtmX2ZfaWZfZnVuaTAxQTUuc3MwMWZfZl9qemFjdXRlLmxvY2xQTEtmX2Zfc2hvcnRmX2ZfbGZfZl90Zl9sZl9qZl9pZl90Zl9mLmxvY2xFV0Vfc2hvcnRmX2ZfbC5sb2NsRVdFZl9mX2oubG9jbEVXRWZfZl9pLmxvY2xFV0VmX2YubG9jbEVXRWZfaS5sb2NsRVdFZl9qLmxvY2xFV0VmX2wubG9jbEVXRWZpLmxvY2xFV0VmbC5sb2NsRVdFdW5pQTdCNC5zY3VuaTJDNkQuc2N1bmlBN0FBLnNjdW5pMDE5MS5zY3VuaUE3OEQuc2N1bmkwMTg5LnNjdW5pQTdCMy5zY3VuaTAxRjYuc2N1bmkwMTk2LnNjdW5pMDIyMC5zY3VuaUE3QjIuc2N1bmlBN0FELnNjdW5pQTdCNi5zY3VuaTAyODAuc2N1bmkwMUIxLnNjdW5pMkM2NC5zY3VuaTAxOTQuc2NhLnNjYWFjdXRlLnNjdW5pMUVCMS5zY3VuaTFFQjcuc2N1bmkxRUFGLnNjdW5pMUVCMy5zY3VuaTFFQjUuc2N1bmkwMUNFLnNjYWJyZXZlLnNjdW5pMUVBNS5zY2FjaXJjdW1mbGV4LnNjdW5pMUVBRC5zY3VuaTFFQTcuc2N1bmkxRUE5LnNjdW5pMDFERi5zY3VuaTFFQUIuc2N1bmkwMjAxLnNjYWRpZXJlc2lzLnNjdW5pMDIyNy5zY3VuaTFFQTEuc2N1bmkwMUUxLnNjYWdyYXZlLnNjdW5pMDIwMy5zY3VuaTFFQTMuc2N1bmkwMjUxLnNjYW1hY3Jvbi5zY2FyaW5nLnNjYXJpbmdhY3V0ZS5zY2FvZ29uZWsuc2N1bmkyQzY1LnNjYWUuc2NhZWFjdXRlLnNjYXRpbGRlLnNjdW5pMDFFMy5zY3VuaTFFMDUuc2N1bmkxRTAzLnNjYi5zY3VuaTAxODAuc2N1bmkwMjUzLnNjdW5pMDE4My5zY2Muc2NjY2Fyb24uc2NjYWN1dGUuc2N1bmkwMTg4LnNjY2NpcmN1bWZsZXguc2NjY2VkaWxsYS5zY2Nkb3RhY2NlbnQuc2N1bmkwMjNDLnNjdW5pMUUxMy5zY2Rjcm9hdC5zY3VuaTFFMEQuc2NkY2Fyb24uc2NldGguc2NkLnNjdW5pMDI1Ny5zY3VuaTAxOEMuc2N1bmkxRTBGLnNjdW5pMDFGMy5zY3VuaTAyNTYuc2NlLnNjdW5pMDFDNi5zY2VhY3V0ZS5zY2VicmV2ZS5zY2VjYXJvbi5zY3VuaTAyMjkuc2NlY2lyY3VtZmxleC5zY3VuaTFFQkYuc2N1bmkxRUM3LnNjdW5pMDIwNS5zY3VuaTFFQzEuc2N1bmkxRUM1LnNjdW5pMUVDMy5zY2VkaWVyZXNpcy5zY2VncmF2ZS5zY2Vkb3RhY2NlbnQuc2N1bmkxRUJCLnNjdW5pMDIwNy5zY3VuaTFFQjkuc2NlbWFjcm9uLnNjdW5pMDI1OC5zY2VvZ29uZWsuc2N1bmkwMjVCLnNjdW5pMDFERC5zY3VuaTAyNTkuc2N1bmkwMjQ3LnNjdW5pMDI4My5zY3VuaTFFQkQuc2N1bmkwMjkyLnNjZi5zY3VuaTAxRUYuc2N1bmkwMUI5LnNjdW5pMUUxRi5zY2ZpLnNjZl9sLnNjZl9pLnNjZ2JyZXZlLnNjdW5pMDFGNS5zY2cuc2NmbC5zY2dkb3RhY2NlbnQuc2NnY2Fyb24uc2N1bmkwMTIzLnNjZ2NpcmN1bWZsZXguc2N1bmkwMjYwLnNjdW5pMDI5NC5zY3VuaTAyMUQuc2N1bmkwMUU1LnNjaC5zY2hiYXIuc2NpLnNjaGNpcmN1bWZsZXguc2N1bmkwMjFGLnNjdW5pMUUyNS5zY2RvdGxlc3NpLnNjaWFjdXRlLnNjaWNpcmN1bWZsZXguc2N1bmkwMUQwLnNjaWJyZXZlLnNjdW5pMDIwOS5zY2lkaWVyZXNpcy5zY3VuaTFFMkYuc2NpLnNjLmxvY2xUUkt1bmkxRUNCLnNjaWdyYXZlLnNjaWouc2NpbWFjcm9uLnNjdW5pMDIwQi5zY3VuaTFFQzkuc2NpdGlsZGUuc2N1bmkwMjY4LnNjaW9nb25lay5zY2ouc2NqY2lyY3VtZmxleC5zY3VuaTAxRTkuc2NrLnNjdW5pMDI0OS5zY3VuaTAxMzcuc2NrZ3JlZW5sYW5kaWMuc2N1bmkwMTk5LnNjbC5zY3VuaTFFM0Quc2NsYWN1dGUuc2N1bmkwMTlBLnNjdW5pMDEzQy5zY2xjYXJvbi5zY2xkb3Quc2N1bmkwMUM5LnNjdW5pMUUzNy5zY2FhY3V0ZS5sb2NsSFVOLnNjZWFjdXRlLmxvY2xIVU4uc2NpYWN1dGUubG9jbEhVTi5zY29hY3V0ZS5sb2NsSFVOLnNjbmFjdXRlLmxvY2xQTEsuc2N1YWN1dGUubG9jbEhVTi5zY29hY3V0ZS5sb2NsUExLLnNjY2FjdXRlLmxvY2xQTEsuc2NzYWN1dGUubG9jbFBMSy5zY3phY3V0ZS5sb2NsUExLLnNjbS5zY2xzbGFzaC5zY3VuaTFFM0Yuc2N1bmkxRTQxLnNjbmFwb3N0cm9waGUuc2N1bmkwMjZGLnNjbi5zY25hY3V0ZS5zY25jYXJvbi5zY3VuaTFFNEIuc2N1bmkwMTQ2LnNjdW5pMUU0Ny5zY3VuaTFFNDUuc2N1bmkwMjcyLnNjZW5nLnNjdW5pMDFGOS5zY3VuaTAxQ0Muc2N1bmkwMjc1LnNjby5zY250aWxkZS5zY29hY3V0ZS5zY29icmV2ZS5zY3VuaTFFRDkuc2N1bmkwMUQyLnNjb2NpcmN1bWZsZXguc2N1bmkxRUQxLnNjdW5pMUVEMy5zY3VuaTFFRDUuc2N1bmkxRUQ3LnNjdW5pMDIwRC5zY3VuaTAyMkIuc2NvZGllcmVzaXMuc2N1bmkwMjJGLnNjdW5pMDIzMS5zY3VuaTFFQ0Quc2NvZ3JhdmUuc2N1bmkxRUNGLnNjb2hvcm4uc2N1bmkxRUUzLnNjdW5pMUVEQi5zY3VuaTFFREQuc2N1bmkwMUEzLnNjdW5pMUVERi5zY29odW5nYXJ1bWxhdXQuc2N1bmkxRUUxLnNjdW5pMDIwRi5zY29tYWNyb24uc2N1bmkwMUVCLnNjdW5pMUU1MS5zY3VuaTFFNTMuc2N1bmkwMUVELnNjdW5pMDI1NC5zY29zbGFzaC5zY290aWxkZS5zY29zbGFzaGFjdXRlLnNjb2Uuc2N1bmkxRTRELnNjdW5pMDIyRC5zY3VuaTAyMjMuc2NwLnNjdW5pMUU1NS5zY3VuaTFFNTcuc2N1bmkwMUE1LnNjdGhvcm4uc2NxLnNjdW5pMDI0Qi5zY3JjYXJvbi5zY3JhY3V0ZS5zY3Iuc2N1bmkxRTVCLnNjdW5pMDIxMS5zY3VuaTAyN0Quc2N1bmkwMTU3LnNjc2FjdXRlLnNjdW5pMDI0RC5zY3VuaTAyMTMuc2NzLnNjdW5pMDIxOS5zY3NjZWRpbGxhLnNjc2Nhcm9uLnNjc2NpcmN1bWZsZXguc2N1bmkxRTYzLnNjdW5pMUU2MS5zY2dlcm1hbmRibHMuc2N0LnNjdGJhci5zY3RjYXJvbi5zY3VuaTJDNjYuc2N1bmkwMTYzLnNjdW5pMUU3MS5zY3VuaTAyMUIuc2N1bmkxRTZCLnNjdW5pMUU2RC5zY3VuaTAxQUQuc2N1bmkxRTZGLnNjdW5pMDE4NS5zY3VuaTAxQTguc2N1bmkwMUJELnNjdW5pMDI4OC5zY3VhY3V0ZS5zY3Uuc2N1bmkwMjg5LnNjdWJyZXZlLnNjdW5pMDFENC5zY3VjaXJjdW1mbGV4LnNjdW5pMDIxNS5zY3VkaWVyZXNpcy5zY3VuaTAxREEuc2N1bmkwMUQ4LnNjdW5pMDFEQy5zY3VuaTAxRDYuc2N1bmkxRUU3LnNjdWdyYXZlLnNjdW5pMUVFNS5zY3Vob3JuLnNjdW5pMUVFQi5zY3VuaTFFRUQuc2N1bmkxRUYxLnNjdW5pMUVFOS5zY3VuaTFFRUYuc2N1bWFjcm9uLnNjdWh1bmdhcnVtbGF1dC5zY3VuaTAyMTcuc2N1b2dvbmVrLnNjdW5pMUU3OS5zY3VyaW5nLnNjdi5zY3V0aWxkZS5zY3cuc2N1bmkwMjhDLnNjdW5pMDI4Qi5zY3dncmF2ZS5zY3dhY3V0ZS5zY3djaXJjdW1mbGV4LnNjd2RpZXJlc2lzLnNjdW5pMkM3My5zY3guc2N1bmkwMUJGLnNjeS5zY3lhY3V0ZS5zY3ljaXJjdW1mbGV4LnNjeWRpZXJlc2lzLnNjdW5pMUVGNS5zY3lncmF2ZS5zY3VuaTAxQjQuc2N1bmkxRUY3LnNjdW5pMDIzMy5zY3VuaTAyNEYuc2N1bmkxRUY5LnNjei5zY3VuaTFFOTMuc2N6ZG90YWNjZW50LnNjemNhcm9uLnNjdW5pMDIyNS5zY3phY3V0ZS5zY3VuaTAyNzIuc2Muc3MwMXVuaTJDNjQuc2Muc3MwMXVuaTAxQjYuc2Nlbmcuc2Muc3MwMXVuaUE3OEQuc2Muc3MwMnVuaTAyNTMuc2Muc3MwMm9yZGZlbWluaW5lLjAwMW9yZG1hc2N1bGluZS4wMDF1bmkwMUMzdW5pMDFDMnVuaTAxQzF1bmkwMUMwdW5pMDJCMXVuaTAyQjB1bmkwMkIydW5pMDJFMXVuaTAxQkJ1bmkyMDdGdW5pMDJCNHVuaTAyRTJ1bmkwMkI4dW5pMDJCN3VuaTAyRTNUc2VIZWxwZXJjeXVuaTA0MTB1bmkwNDExdW5pMDQxMnVuaTA0MTN1bmkwNDE1dW5pMDQwM3VuaTA0OTB1bmkwNDE0dW5pMDQwMHVuaTA0MDF1bmkwNDE3dW5pMDQxNnVuaTA0MTl1bmkwNDE4dW5pMDQwRHVuaTA0OEF1bmkwNDFBdW5pMDQwQ3VuaTA0MUJ1bmkwNDFDdW5pMDQxRHVuaTA0MUV1bmkwNDIwdW5pMDQxRnVuaTA0MjF1bmkwNDIydW5pMDQyM3VuaTA0MEV1bmkwNDI0dW5pMDQyNXVuaTA0Mjd1bmkwNDI2dW5pMDQyOHVuaTA0Mjl1bmkwNDBGdW5pMDQyQnVuaTA0MkN1bmkwNDBBdW5pMDQyQXVuaTA0MDl1bmkwNDA1dW5pMDQwN3VuaTA0MDZ1bmkwNDJEdW5pMDQwNHVuaTA0MDh1bmkwNDBCdW5pMDQyRXVuaTA0NjB1bmkwNDAydW5pMDQyRnVuaTA0Njh1bmkwNDY2dW5pMDQ2MnVuaTA0NjR1bmkwNDZBdW5pMDQ2Q3VuaTA0NzJ1bmkwNDZFdW5pMDQ3MHVuaTA0NzR1bmkwNDc4dW5pMDQ3NnVuaTA0OTJ1bmkwNDk0dW5pMDQ5OHVuaTA0OTZ1bmkwNEEwdW5pMDQ5QXVuaTA0OUN1bmkwNDlFdW5pMDRBNHVuaTA0QTJ1bmkwNTI0dW5pMDRBNnVuaTA0QUF1bmkwNEE4dW5pMDRCMnVuaTA0QUN1bmkwNEI0dW5pMDRCNnVuaTA0Qjh1bmkwNTI2dW5pMDRCQXVuaTA0QzF1bmkwNEJDdW5pMDRCRXVuaTA0QzV1bmkwNEMzdW5pMDRDMHVuaTA0Q0R1bmkwNEM3dW5pMDRDOXVuaTA0Q0J1bmkwNEQwdW5pMDREMnVuaTA0RDh1bmkwNEQ0dW5pMDRENnVuaTA0REF1bmkwNERDdW5pMDRERXVuaTA0RTJ1bmkwNEUwdW5pMDRFQXVuaTA0RTR1bmkwNEU4dW5pMDRFNnVuaTA0RUN1bmkwNEVFdW5pMDRGNHVuaTA0RjJ1bmkwNEYwdW5pMDRGNnVuaTA0RkV1bmkwNEZDdW5pMDRGOHVuaTA0RkF1bmkwNTAwdW5pMDUwMnVuaTA1MDZ1bmkwNTA0dW5pMDUwOHVuaTA1MEF1bmkwNTBDdW5pMDUxMHVuaTA1MEV1bmkwNTE0dW5pMDUxMnVuaTA1MTZ1bmkwNTE4dW5pMDUxQXVuaTA1MUN1bmkwNTFFdW5pMDUyMnVuaTA1MjB1bmkwNDhDdW5pMDUyOHVuaTA0OEV1bmkwNTJBdW5pMDUyQ3VuaTA0MTQubG9jbEJHUnVuaTA1MkV1bmkwNDFCLmxvY2xCR1J1bmkwNDI0LmxvY2xCR1J1bmkwNDA5LmxvY2xCR1J1bmkwNDk0LmxvY2xCR1J1bmkwNEE2LmxvY2xCR1J1bmkwNTJBLmxvY2xCR1J1bmkwNTJFLmxvY2xCR1J1bmkwNTJDLmxvY2xCR1J1bmkwNEM1LmxvY2xCR1J1bmkwNEM3LmxvY2xCR1J1bmkwNEZDLmxvY2xCR1J1bmkwNEZBLmxvY2xCR1J1bmkwNTA4LmxvY2xCR1J1bmkwNTEyLmxvY2xCR1J1bmkwNTE0LmxvY2xCR1J1bmkwNTIwLmxvY2xCR1J1bmkwNTIyLmxvY2xCR1J1bmkwNDMxdW5pMDQzMHVuaTA0MzN1bmkwNDMydW5pMDQ1M3VuaTA0OTF1bmkwNDM1dW5pMDQzNHVuaTA0NTB1bmkwNDUxdW5pMDQzNnVuaTA0Mzd1bmkwNDM4dW5pMDQzOXVuaTA0NUN1bmkwNDVEdW5pMDQ4QnVuaTA0M0F1bmkwNDNCdW5pMDQzQ3VuaTA0M0Z1bmkwNDNEdW5pMDQzRXVuaTA0NDN1bmkwNDQydW5pMDQ0MXVuaTA0NDB1bmkwNDQ0dW5pMDQ1RXVuaTA0NDd1bmkwNDQ1dW5pMDQ0OHVuaTA0NDZ1bmkwNDRBdW5pMDQ0OXVuaTA0NUZ1bmkwNDRCdW5pMDQ0Q3VuaTA0NTR1bmkwNDU1dW5pMDQ1OXVuaTA0NUF1bmkwNDREdW5pMDQ1NnVuaTA0NTd1bmkwNDU4dW5pMDQ0RnVuaTA0NUJ1bmkwNDRFdW5pMDQ2M3VuaTA0NjF1bmkwNDUydW5pMDQ2NXVuaTA0NkR1bmkwNDY5dW5pMDQ2N3VuaTA0NkJ1bmkwNDc1dW5pMDQ3M3VuaTA0Nzd1bmkwNDcxdW5pMDQ2RnVuaTA0Nzl1bmkwNDk3dW5pMDQ5NXVuaTA0OTN1bmkwNDlGdW5pMDRBMXVuaTA0OUR1bmkwNDlCdW5pMDQ5OXVuaTA0QTN1bmkwNEE1dW5pMDUyNXVuaTA0QTd1bmkwNEE5dW5pMDRBRHVuaTA0QUJ1bmkwNEIzdW5pMDRCNXVuaTA1Mjd1bmkwNEI3dW5pMDRCQnVuaTA0Qjl1bmkwNEJEdW5pMDRCRnVuaTA0Q0Z1bmkwNEM2dW5pMDRDNHVuaTA0QzJ1bmkwNENFdW5pMDRDQXVuaTA0Q0N1bmkwNEM4dW5pMDRENXVuaTA0RDN1bmkwNEQxdW5pMDREN3VuaTA0RER1bmkwNERCdW5pMDRERnVuaTA0RDl1bmkwNEU3dW5pMDRFNXVuaTA0RTF1bmkwNEUzdW5pMDRFOXVuaTA0RjF1bmkwNEVCdW5pMDRFRHVuaTA0RUZ1bmkwNEYzdW5pMDRGNXVuaTA0Rjl1bmkwNEY3dW5pMDRGQnVuaTA0RkZ1bmkwNEZEdW5pMDUwN3VuaTA1MDF1bmkwNTAzdW5pMDUwNXVuaTA1MDl1bmkwNTExdW5pMDUwQnVuaTA1MER1bmkwNTBGdW5pMDUxOXVuaTA1MTN1bmkwNTE1dW5pMDUxQnVuaTA1MTd1bmkwNTFEdW5pMDUxRnVuaTA1MjF1bmkwNDhEdW5pMDUyM3VuaTA0OEZ1bmkwNTJEdW5pMDUyQnVuaTA1Mjl1bmkwNTJGdW5pMDQzNC5sb2NsQkdSdW5pMDQzQS5sb2NsQkdSdW5pMDQzNi5sb2NsQkdSdW5pMDQzMi5sb2NsQkdSdW5pMDQ5MS5sb2NsQkdSdW5pMDQ1Qy5sb2NsQkdSdW5pMDQzQi5sb2NsQkdSdW5pMDQ1OS5sb2NsQkdSdW5pMDQ0RS5sb2NsQkdSdW5pMDQ5Ny5sb2NsQkdSdW5pMDQ5NS5sb2NsQkdSdW5pMDQ5Qi5sb2NsQkdSdW5pMDQ5RC5sb2NsQkdSdW5pMDRBNy5sb2NsQkdSdW5pMDRCNS5sb2NsQkdSdW5pMDRBNS5sb2NsQkdSdW5pMDUyQi5sb2NsQkdSdW5pMDUyRC5sb2NsQkdSdW5pMDRDMi5sb2NsQkdSdW5pMDUyRi5sb2NsQkdSdW5pMDRDNC5sb2NsQkdSdW5pMDRDNi5sb2NsQkdSdW5pMDRGRC5sb2NsQkdSdW5pMDRGQi5sb2NsQkdSdW5pMDRDOC5sb2NsQkdSdW5pMDUwOS5sb2NsQkdSdW5pMDUwRi5sb2NsQkdSdW5pMDUxNS5sb2NsQkdSdW5pMDUxMy5sb2NsQkdSdW5pMDUyMS5sb2NsQkdSdW5pMDUyMy5sb2NsQkdSdW5pMDQzRi5sb2NsU1JCdW5pMDQzMy5sb2NsU1JCdW5pMDQzMS5sb2NsU1JCdW5pMDQzNC5sb2NsU1JCdW5pMDRBNy5zYy5sb2NsQkdSdW5pMDQ5NS5zYy5sb2NsQkdSdW5pMDQzRi5vbGR1bmkwNDQyLmxvY2xTUkJ1bmkwNTIzLnNjLmxvY2xCR1J1bmkwNEZCLnNjLmxvY2xCR1J1bmkwNEM4LnNjLmxvY2xCR1J1bmkwNEZELnNjLmxvY2xCR1J1bmkwNDMxLnNjdW5pMDQzMC5zY3VuaTA0MzIuc2N1bmkwNDMzLnNjdW5pMDQ5MS5zY3VuaTA0NTMuc2N1bmkwNDM0LnNjdW5pMDQzNS5zY3VuaTA0NTEuc2N1bmkwNDUwLnNjdW5pMDQzNi5zY3VuaTA0NUQuc2N1bmkwNDM4LnNjdW5pMDQzNy5zY3VuaTA0Mzkuc2N1bmkwNDNCLnNjdW5pMDQzQS5zY3VuaTA0NUMuc2N1bmkwNDhCLnNjdW5pMDQzRS5zY3VuaTA0M0Quc2N1bmkwNDNDLnNjdW5pMDQzRi5zY3VuaTA0NDEuc2N1bmkwNDQwLnNjdW5pMDQ0My5zY3VuaTA0NUUuc2N1bmkwNDQ0LnNjdW5pMDQ0Mi5zY3VuaTA0NDUuc2N1bmkwNDQ4LnNjdW5pMDQ0Ni5zY3VuaTA0NDcuc2N1bmkwNDQ5LnNjdW5pMDQ0Qy5zY3VuaTA0NUYuc2N1bmkwNDRBLnNjdW5pMDQ1OS5zY3VuaTA0NEIuc2N1bmkwNDVBLnNjdW5pMDQ1NS5zY3VuaTA0NEQuc2N1bmkwNDU0LnNjdW5pMDQ1Ny5zY3VuaTA0NTYuc2N1bmkwNDRGLnNjdW5pMDQ1Qi5zY3VuaTA0NTguc2N1bmkwNDRFLnNjdW5pMDQ2MS5zY3VuaTA0NTIuc2N1bmkwNDY1LnNjdW5pMDQ2My5zY3VuaTA0Njcuc2N1bmkwNDZCLnNjdW5pMDQ2RC5zY3VuaTA0Njkuc2N1bmkwNDcxLnNjdW5pMDQ2Ri5zY3VuaTA0NzMuc2N1bmkwNDc1LnNjdW5pMDQ3Ny5zY3VuaTA0Nzkuc2N1bmkwNDk1LnNjdW5pMDQ5My5zY3VuaTA0OTcuc2N1bmkwNDlGLnNjdW5pMDQ5OS5zY3VuaTA0OUQuc2N1bmkwNDlCLnNjdW5pMDRBMS5zY3VuaTA1MjUuc2N1bmkwNEE1LnNjdW5pMDRBMy5zY3VuaTA0QTkuc2N1bmkwNEE3LnNjdW5pMDRBRC5zY3VuaTA0Qjcuc2N1bmkwNEFCLnNjdW5pMDRCMy5zY3VuaTA0Qjkuc2N1bmkwNTJCLnNjdW5pMDRCQi5zY3VuaTA1Mjcuc2N1bmkwNTI5LnNjdW5pMDUyRC5zY3VuaTA1MkYuc2N1bmkwNEJELnNjdW5pMDRCRi5zY3VuaTA0Q0Yuc2N1bmkwNEMyLnNjdW5pMDRDNC5zY3VuaTA0Qzguc2N1bmkwNEM2LnNjdW5pMDRDQS5zY3VuaTA0Q0Muc2N1bmkwNEQxLnNjdW5pMDREMy5zY3VuaTA0Q0Uuc2N1bmkwNEQ1LnNjdW5pMDRERC5zY3VuaTA0RDkuc2N1bmkwNERCLnNjdW5pMDRENy5zY3VuaTA0REYuc2N1bmkwNEU3LnNjdW5pMDRFMS5zY3VuaTA0RTMuc2N1bmkwNEU1LnNjdW5pMDRFOS5zY3VuaTA0RUIuc2N1bmkwNEVELnNjdW5pMDRGNS5zY3VuaTA0RjMuc2N1bmkwNEVGLnNjdW5pMDRGMS5zY3VuaTA0Rjcuc2N1bmkwNEZGLnNjdW5pMDRGQi5zY3VuaTA0Rjkuc2N1bmkwNEZELnNjdW5pMDUwMS5zY3VuaTA1MDMuc2N1bmkwNTA3LnNjdW5pMDUwNS5zY3VuaTA1MDkuc2N1bmkwNTExLnNjdW5pMDUxMy5zY3VuaTA1MEYuc2N1bmkwNTBELnNjdW5pMDUwQi5zY3VuaTA1MTcuc2N1bmkwNTE1LnNjdW5pMDUxQi5zY3VuaTA1MTkuc2N1bmkwNTFGLnNjdW5pMDUxRC5zY3VuaTA1MjMuc2N1bmkwNTIxLnNjdW5pMDQ4Ri5zY3VuaTA0OEQuc2N1bmkwNDNCLmxvY2xCR1Iuc2N1bmkwNDM0LmxvY2xCR1Iuc2N1bmkwNDU5LmxvY2xCR1Iuc2N1bmkwNDQ0LmxvY2xCR1Iuc2N1bmkwNTJELmxvY2xCR1Iuc2N1bmkwNTJCLmxvY2xCR1Iuc2N1bmkwNTJGLmxvY2xCR1Iuc2N1bmkwNEM2LmxvY2xCR1Iuc2N1bmkwNTA5LmxvY2xCR1Iuc2N1bmkwNTEzLmxvY2xCR1Iuc2N1bmkwNTE1LmxvY2xCR1Iuc2N1bmkwNTIxLmxvY2xCR1Iuc2N0c2VoZWxwZXJjeS5zY3RzZWhlbHBlcmN5dW5pMDM3RkFscGhhQmV0YUdhbW1hRXBzaWxvbnVuaTAzOTRFdGFaZXRhSW90YVRoZXRhS2FwcGFMYW1iZGFOdU11WGlPbWljcm9uUGlTaWdtYVJob1RhdVVwc2lsb25DaGlQaGlQc2l1bmkwM0E5RXBzaWxvbnRvbm9zQWxwaGF0b25vc0V0YXRvbm9zSW90YXRvbm9zT21pY3JvbnRvbm9zVXBzaWxvbnRvbm9zT21lZ2F0b25vc0lvdGFkaWVyZXNpc1Vwc2lsb25kaWVyZXNpc3VuaTAzNzB1bmkwMzc2dW5pMDM3MnVuaTAzRDh1bmkwM0RDdW5pMDNEQXVuaTAzREV1bmkwM0QydW5pMDNDRnVuaTAzRTB1bmkwM0QzdW5pMDNGN3VuaTAzRjl1bmkwM0Q0dW5pMDNGNHVuaTAzRkF1bmkwM0ZFdW5pMDNGRnVuaTAzRkR1bmkxRjA4dW5pMUYwQnVuaTFGMEF1bmkxRjA5dW5pMUYwRnVuaTFGMEN1bmkxRjBFdW5pMUYwRHVuaTFGQkF1bmkxRkJCdW5pMUZCOHVuaTFGQjl1bmkxRkJDdW5pMUY4OHVuaTFGOEF1bmkxRjg5dW5pMUY4Q3VuaTFGOEJ1bmkxRjhFdW5pMUY4RHVuaTFGMTh1bmkxRjhGdW5pMUYxQXVuaTFGMTl1bmkxRjFCdW5pMUYxQ3VuaTFGMUR1bmkxRkM4dW5pMUZDOXVuaTFGMjh1bmkxRjI5dW5pMUYyQXVuaTFGMkJ1bmkxRjJDdW5pMUYyRHVuaTFGMkV1bmkxRkNBdW5pMUYyRnVuaTFGQ0N1bmkxRkNCdW5pMUY5OHVuaTFGOTl1bmkxRjlBdW5pMUY5QnVuaTFGOUR1bmkxRjlDdW5pMUY5RXVuaTFGMzh1bmkxRjlGdW5pMUYzOXVuaTFGM0N1bmkxRjNEdW5pMUYzQXVuaTFGM0J1bmkxRjNFdW5pMUYzRnVuaTFGREF1bmkxRkRCdW5pMUZEOHVuaTFGRDl1bmkxRjQ4dW5pMUY0OXVuaTFGNEF1bmkxRjRDdW5pMUY0QnVuaTFGNER1bmkxRkVDdW5pMUZGOXVuaTFGRjh1bmkxRjU5dW5pMUY1QnVuaTFGNUR1bmkxRjVGdW5pMUZFQXVuaTFGNjh1bmkxRkU4dW5pMUZFQnVuaTFGRTl1bmkxRjY5dW5pMUY2Q3VuaTFGNkJ1bmkxRjZBdW5pMUY2RHVuaTFGNkV1bmkxRkZBdW5pMUY2RnVuaTFGRkJ1bmkxRkZDdW5pMUZBQXVuaTFGQTh1bmkxRkE5dW5pMUZBQnVuaTFGQUV1bmkxRkFDdW5pMUZBRHVuaTFGQUZnYW1tYWJldGFkZWx0YWFscGhhdGhldGFldGFlcHNpbG9uemV0YWlvdGFrYXBwYWxhbWJkYW51eGl1bmkwM0JDcmhvdW5pMDNDMm9taWNyb25zaWdtYXRhdXBpdXBzaWxvbmNoaXBoaXBzaWlvdGFkaWVyZXNpc2lvdGF0b25vc29tZWdhaW90YWRpZXJlc2lzdG9ub3NvbWljcm9udG9ub3N1cHNpbG9uZGllcmVzaXN0b25vc3Vwc2lsb250b25vc3Vwc2lsb25kaWVyZXNpc29tZWdhdG9ub3NhbHBoYXRvbm9zZXBzaWxvbnRvbm9zZXRhdG9ub3N1bmkwMzcxdW5pMDM3QnVuaTAzNzN1bmkwMzc3dW5pMDM3Q3VuaTAzRDl1bmkwMzdEdW5pMDNEQnVuaTAzRER1bmkwM0RGdW5pMDNEN3VuaTAzRDB1bmkwM0UxdW5pMDNEMXVuaTAzRDZ1bmkwM0Q1dW5pMDNGMHVuaTAzRjJ1bmkwM0YzdW5pMDNGMXVuaTAzRjV1bmkwM0Y4dW5pMUYwMHVuaTAzRkN1bmkwM0ZCdW5pMUYwMXVuaTFGMDJ1bmkxRjA1dW5pMUYwNHVuaTFGMDN1bmkxRjA2dW5pMUZCNnVuaTFGNzF1bmkxRjcwdW5pMUYwN3VuaTFGQjB1bmkxRkIydW5pMUY4MHVuaTFGQjN1bmkxRkIxdW5pMUZCNHVuaTFGODF1bmkxRjgzdW5pMUY4NHVuaTFGODJ1bmkxRjg1dW5pMUZCN3VuaTFGODd1bmkxRjg2dW5pMUYxMHVuaTFGMTR1bmkxRjEydW5pMUYxMXVuaTFGMTN1bmkxRjE1dW5pMUY3M3VuaTFGNzJ1bmkxRjIxdW5pMUYyMHVuaTFGMjJ1bmkxRjI2dW5pMUYyM3VuaTFGMjd1bmkxRjI1dW5pMUYyNHVuaTFGQzN1bmkxRjc1dW5pMUY3NHVuaTFGQzZ1bmkxRjkxdW5pMUY5MHVuaTFGQzJ1bmkxRkM0dW5pMUY5MnVuaTFGOTV1bmkxRjk0dW5pMUY5M3VuaTFGOTZ1bmkxRjMwdW5pMUZDN3VuaTFGOTd1bmkxRjMxdW5pMUYzNXVuaTFGMzJ1bmkxRjMzdW5pMUYzNHVuaTFGMzZ1bmkxRjM3dW5pMUZENnVuaTFGNzZ1bmkxRjc3dW5pMUZEMHVuaTFGRDJ1bmkxRkQxdW5pMUZEM3VuaTFGRDd1bmkxRjQwdW5pMUY0MnVuaTFGNDF1bmkxRjQzdW5pMUY3OHVuaTFGNDV1bmkxRjQ0dW5pMUY3OXVuaTFGRTV1bmkxRkU0dW5pMUY1MHVuaTFGNTN1bmkxRjU0dW5pMUY1MnVuaTFGNTF1bmkxRjdBdW5pMUY1N3VuaTFGNTZ1bmkxRjU1dW5pMUZFMXVuaTFGN0J1bmkxRkU2dW5pMUZFMHVuaTFGRTJ1bmkxRjYxdW5pMUZFM3VuaTFGRTd1bmkxRjYwdW5pMUY2NXVuaTFGNjN1bmkxRjYydW5pMUY2NnVuaTFGNjR1bmkxRjdDdW5pMUY2N3VuaTFGRjJ1bmkxRkY2dW5pMUY3RHVuaTFGRjN1bmkxRkY0dW5pMUZBMXVuaTFGQTB1bmkxRkEzdW5pMUZBMnVuaTFGQTV1bmkxRkE0dW5pMUZBN3VuaTFGQTZ1bmkxRkY3dW5pMUZCRWFscGhhLnNjc2lnbWEuc3MxMGJldGEuc3MxMHpldGEuc3MxMGdhbW1hLnNjYmV0YS5zY2Vwc2lsb24uc2N6ZXRhLnNjZGVsdGEuc2NldGEuc2N0aGV0YS5zY2thcHBhLnNjaW90YS5zY2xhbWJkYS5zY3VuaTAzQkMuc2N4aS5zY251LnNjb21pY3Jvbi5zY3VuaTAzQzIuc2NyaG8uc2NwaS5zY3NpZ21hLnNjcGhpLnNjdXBzaWxvbi5zY3RhdS5zY2NoaS5zY2lvdGF0b25vcy5zY3BzaS5zY29tZWdhLnNjaW90YWRpZXJlc2lzLnNjaW90YWRpZXJlc2lzdG9ub3Muc2N1cHNpbG9udG9ub3Muc2N1cHNpbG9uZGllcmVzaXN0b25vcy5zY3Vwc2lsb25kaWVyZXNpcy5zY29taWNyb250b25vcy5zY2V0YXRvbm9zLnNjYWxwaGF0b25vcy5zY29tZWdhdG9ub3Muc2NlcHNpbG9udG9ub3Muc2N1bmkwMzcxLnNjdW5pMDM3Qi5zY3VuaTAzNzcuc2N1bmkwMzczLnNjdW5pMDM3Qy5zY3VuaTAzN0Quc2N1bmkwM0Q5LnNjdW5pMDNERC5zY3VuaTAzREIuc2N1bmkwM0RGLnNjdW5pMDNEMC5zY3VuaTAzRDcuc2N1bmkwM0UxLnNjdW5pMDNEMS5zY3VuaTAzRDIuc2N1bmkwM0QzLnNjdW5pMDNENC5zY3VuaTAzRDYuc2N1bmkwM0Q1LnNjdW5pMDNGMC5zY3VuaTAzRjEuc2N1bmkwM0YzLnNjdW5pMDNGMi5zY3VuaTAzRjUuc2N1bmkxRjAwLnNjdW5pMDNGQi5zY3VuaTAzRkMuc2N1bmkwM0Y4LnNjdW5pMUYwMy5zY3VuaTFGMDQuc2N1bmkxRjAxLnNjdW5pMUYwMi5zY3VuaTFGMDUuc2N1bmkxRjcwLnNjdW5pMUYwNy5zY3VuaTFGMDYuc2N1bmkxRjcxLnNjdW5pMUZCNi5zY3VuaTFGQjEuc2N1bmkxRkIwLnNjdW5pMUZCMy5zY3VuaTFGODAuc2N1bmkxRkI0LnNjdW5pMUZCMi5zY3VuaTFGODEuc2N1bmkxRjgzLnNjdW5pMUY4NC5zY3VuaTFGODIuc2N1bmkxRjg1LnNjdW5pMUYxMC5zY3VuaTFGQjcuc2N1bmkxRjg3LnNjdW5pMUY4Ni5zY3VuaTFGMTEuc2N1bmkxRjE1LnNjdW5pMUYxMi5zY3VuaTFGMTMuc2N1bmkxRjcyLnNjdW5pMUYxNC5zY3VuaTFGMjAuc2N1bmkxRjczLnNjdW5pMUYyMi5zY3VuaTFGMjEuc2N1bmkxRjI1LnNjdW5pMUYyMy5zY3VuaTFGMjQuc2N1bmkxRjI2LnNjdW5pMUY3NC5zY3VuaTFGMjcuc2N1bmkxRjc1LnNjdW5pMUZDNi5zY3VuaTFGQzMuc2N1bmkxRkMyLnNjdW5pMUY5MS5zY3VuaTFGOTIuc2N1bmkxRjkwLnNjdW5pMUZDNC5zY3VuaTFGOTMuc2N1bmkxRjk3LnNjdW5pMUY5NS5zY3VuaTFGOTQuc2N1bmkxRjk2LnNjdW5pMUYzMC5zY3VuaTFGMzEuc2N1bmkxRjMyLnNjdW5pMUZDNy5zY3VuaTFGMzMuc2N1bmkxRjM2LnNjdW5pMUYzNC5zY3VuaTFGMzUuc2N1bmkxRjc2LnNjdW5pMUYzNy5zY3VuaTFGRDYuc2N1bmkxRjc3LnNjdW5pMUZEMy5zY3VuaTFGRDIuc2N1bmkxRkQxLnNjdW5pMUZEMC5zY3VuaTFGNDIuc2N1bmkxRjQxLnNjdW5pMUZENy5zY3VuaTFGNDAuc2N1bmkxRjQ1LnNjdW5pMUY0NC5zY3VuaTFGNzguc2N1bmkxRkU0LnNjdW5pMUZFNS5zY3VuaTFGNDMuc2N1bmkxRjUxLnNjdW5pMUY3OS5zY3VuaTFGNTAuc2N1bmkxRjUyLnNjdW5pMUY1NS5zY3VuaTFGNTMuc2N1bmkxRjU0LnNjdW5pMUY1Ni5zY3VuaTFGN0Iuc2N1bmkxRjU3LnNjdW5pMUY3QS5zY3VuaTFGRTAuc2N1bmkxRkU2LnNjdW5pMUZFMi5zY3VuaTFGRTEuc2N1bmkxRkUzLnNjdW5pMUZFNy5zY3VuaTFGNjAuc2N1bmkxRjYyLnNjdW5pMUY2MS5zY3VuaTFGNjMuc2N1bmkxRjY3LnNjdW5pMUY2NS5zY3VuaTFGNjQuc2N1bmkxRjY2LnNjdW5pMUZGNi5zY3VuaTFGN0Quc2N1bmkxRkYzLnNjdW5pMUY3Qy5zY3VuaTFGRjQuc2N1bmkxRkYyLnNjdW5pMUZBMS5zY3VuaTFGQTAuc2N1bmkxRkEzLnNjdW5pMUZBMi5zY3VuaTFGQTQuc2N1bmkxRkE1LnNjdW5pMDM3QXVuaTFGQTcuc2N1bmkxRkE2LnNjdW5pMUZGNy5zY3VuaTIxMEF1bmkxREJGdW5pMUQ0QXplcm8ub3NmdHdvLm9zZm9uZS5vc2ZzaXgub3NmZml2ZS5vc2Z0aHJlZS5vc2Zmb3VyLm9zZm5pbmUub3NmemVyby5vc2YuemVyb2VpZ2h0Lm9zZnNldmVuLm9zZnR3by50Zm9uZS50Znplcm8udGZ0aHJlZS50ZnNldmVuLnRmZml2ZS50ZmZvdXIudGZzaXgudGZlaWdodC50Znplcm8udG9zZnplcm8udGYuemVyb25pbmUudGZmb3VyLnRvc2Z0aHJlZS50b3NmdHdvLnRvc2ZvbmUudG9zZmZpdmUudG9zZnNldmVuLnRvc2ZzaXgudG9zZmVpZ2h0LnRvc2Z6ZXJvLnplcm9uaW5lLnRvc2Z6ZXJvLnRvc2YuemVyb3VuaTIwODB1bmkyMDgydW5pMjA4MXVuaTIwODN1bmkyMDg0dW5pMjA4NnVuaTIwODV1bmkyMDg3dW5pMjA4OHR3by5kbm9tdW5pMjA4OW9uZS5kbm9temVyby5kbm9tdGhyZWUuZG5vbWZvdXIuZG5vbXNpeC5kbm9tZml2ZS5kbm9tZWlnaHQuZG5vbXNldmVuLmRub21uaW5lLmRub216ZXJvLm51bXJvbmUubnVtcmZvdXIubnVtcnRocmVlLm51bXJ0d28ubnVtcmZpdmUubnVtcmVpZ2h0Lm51bXJzZXZlbi5udW1yc2l4Lm51bXJuaW5lLm51bXJ1bmkwMEIydW5pMjA3MHVuaTAwQjl1bmkwMEIzdW5pMjA3N3VuaTIwNzV1bmkyMDc2dW5pMjA3NHVuaTIxNUZ1bmkyMDc5dW5pMjA3OHVuaTIxNTR1bmkyMTUzdW5pMjE1NXVuaTIxNTZ1bmkyMTU3dW5pMjE1OHVuaTIxNTl1bmkyMTVBdW5pMjAxNnVuaTIwM0Z1bmkyMDRBZXhjbGFtZG93bi5jYXNlbnVtYmVyc2lnbi5vc2ZudW1iZXJzaWduLnRmcXVlc3Rpb25kb3duLmNhc2VudW1iZXJzaWduLnRvc2Z1bmkyMDhFdW5pMjA4RHVuaTIwN0R1bmkyMDdFcGFyZW5sZWZ0LmNhc2VwYXJlbnJpZ2h0LmNhc2VicmFjZXJpZ2h0LmNhc2VicmFjZWxlZnQuY2FzZWJyYWNrZXRsZWZ0LmNhc2VicmFja2V0cmlnaHQuY2FzZXVuaTAwQUR1bmkyMDEwdW5pMjAxNXVuaTIwMTFoeXBoZW4uY2FzZWVuZGFzaC5jYXNldW5pMDBBRC5jYXNlZmlndXJlZGFzaC50ZmZpZ3VyZWRhc2gub3NmZW1kYXNoLmNhc2VmaWd1cmVkYXNoLnRvc2ZndWlsbGVtb3RsZWZ0LmNhc2VndWlsbGVtb3RyaWdodC5jYXNlZ3VpbHNpbmdsbGVmdC5jYXNlZ3VpbHNpbmdscmlnaHQuY2FzZXBhcmVubGVmdC5kbm9tcGFyZW5sZWZ0Lm51bXJwYXJlbnJpZ2h0LmRub21wYXJlbnJpZ2h0Lm51bXJhbm90ZWxlaWF1bmkyMDA3dW5pMDM3RXVuaTIwMDh1bmkyMDBCdW5pMDBBMHNwYWNlLmZyYWN1bmkyMDBGdW5pMjAwRXVuaTIwMEN1bmkyMDBEQ1J1bmlGRUZGdW5pMEUzRkV1cm91bmkyMEFGZG9uZ3VuaTIwQkF1bmkyMEE2dW5pMjBCNHVuaTIwQkR1bmkyMEFBdW5pMjBCOXVuaTIwQTljZW50Lm9zZmNvbG9ubW9uZXRhcnkub3NmdW5pMEUzRi5vc2Zkb2xsYXIub3NmY3VycmVuY3kub3NmdW5pMjBCNC5vc2Z1bmkyMEJBLm9zZnVuaTIwQUYub3NmZG9uZy5vc2ZFdXJvLm9zZnVuaTIwQkQub3NmdW5pMjBCOS5vc2Z1bmkyMEE2Lm9zZnVuaTIwQUEub3Nmc3Rlcmxpbmcub3NmdW5pMjBBOS5vc2Z1bmkwRTNGLnRmeWVuLm9zZmNvbG9ubW9uZXRhcnkudGZjZW50LnRmY3VycmVuY3kudGZkb2xsYXIudGZ1bmkyMEFGLnRmZG9uZy50ZkV1cm8udGZ1bmkyMEI0LnRmdW5pMjBCQS50ZnVuaTIwQTYudGZ1bmkyMEJELnRmdW5pMjBBQS50ZnVuaTIwQjkudGZzdGVybGluZy50ZnVuaTBFM0YudG9zZnVuaTIwQTkudGZ5ZW4udGZjZW50LnRvc2ZjdXJyZW5jeS50b3NmZG9sbGFyLnRvc2Zjb2xvbm1vbmV0YXJ5LnRvc2Zkb25nLnRvc2Z1bmkyMEFGLnRvc2ZFdXJvLnRvc2Z1bmkyMEI0LnRvc2Z1bmkyMEJBLnRvc2Z1bmkyMEI5LnRvc2Z1bmkyMEE2LnRvc2Z1bmkyMEJELnRvc2Z1bmkyMEFBLnRvc2ZzdGVybGluZy50b3NmeWVuLnRvc2Z1bmkyMjE5dW5pMjBBOS50b3NmdW5pMjIxNXVuaTIwOENkb3RtYXRodW5pMjA3Q3VuaTIwOEJ1bmkyMDdCbm90ZXF1YWxsZXNzZXF1YWxhcHByb3hlcXVhbGdyZWF0ZXJlcXVhbGVtcHR5c2V0aW5maW5pdHlpbnRlZ3JhbHByb2R1Y3R1bmkyMjA2dW5pMjEyNnBhcnRpYWxkaWZmc3VtbWF0aW9ucmFkaWNhbHVuaTAwQjV1bmkyMDhBdW5pMjA3QXVuaTI5ODFpbmZpbml0eS5jYXNlcGx1cy5vc2ZkaXZpZGUub3NmbXVsdGlwbHkub3NmbWludXMub3NmZXF1YWwub3NmZ3JlYXRlcmVxdWFsLm9zZm5vdGVxdWFsLm9zZmxlc3Mub3NmZ3JlYXRlci5vc2ZwbHVzbWludXMub3NmbGVzc2VxdWFsLm9zZmFzY2lpdGlsZGUub3NmYXBwcm94ZXF1YWwub3NmcHJvZHVjdC5vc2ZpbnRlZ3JhbC5vc2ZpbmZpbml0eS5vc2Zsb2dpY2Fsbm90Lm9zZnN1bW1hdGlvbi5vc2ZwYXJ0aWFsZGlmZi5vc2ZwZXJjZW50Lm9zZnJhZGljYWwub3NmcGVydGhvdXNhbmQub3NmbXVsdGlwbHkudGZwbHVzLnRmbWludXMudGZkaXZpZGUudGZncmVhdGVyLnRmZXF1YWwudGZub3RlcXVhbC50Zmxlc3MudGZncmVhdGVyZXF1YWwudGZhcHByb3hlcXVhbC50ZnBsdXNtaW51cy50Zmxlc3NlcXVhbC50ZmFzY2lpdGlsZGUudGZsb2dpY2Fsbm90LnRmaW5maW5pdHkudGZwcm9kdWN0LnRmaW50ZWdyYWwudGZzdW1tYXRpb24udGZwZXJjZW50LnRmcGFydGlhbGRpZmYudGZyYWRpY2FsLnRmcGVydGhvdXNhbmQudGZtdWx0aXBseS50b3NmbWludXMudG9zZnBsdXMudG9zZmdyZWF0ZXIudG9zZmVxdWFsLnRvc2ZkaXZpZGUudG9zZm5vdGVxdWFsLnRvc2ZwbHVzbWludXMudG9zZmxlc3MudG9zZmxlc3NlcXVhbC50b3NmZ3JlYXRlcmVxdWFsLnRvc2Zsb2dpY2Fsbm90LnRvc2ZpbmZpbml0eS50b3NmYXNjaWl0aWxkZS50b3NmYXBwcm94ZXF1YWwudG9zZmludGVncmFsLnRvc2Zwcm9kdWN0LnRvc2ZzdW1tYXRpb24udG9zZnJhZGljYWwudG9zZnBhcnRpYWxkaWZmLnRvc2ZhcnJvd3VwcGVyY2VudC50b3NmcGVydGhvdXNhbmQudG9zZnVuaTIxOTh1bmkyMTk3YXJyb3dyaWdodGFycm93ZG93bmFycm93Ym90aHVuaTIxOTZhcnJvd2xlZnR1bmkyMTk5dW5pMjFFOXVuaTIxRTdhcnJvd3VwZG51bmkyMUU4dW5pMjFFNnVuaTJCMDV1bmkyN0ExdW5pMkIwN3VuaTJCMDZ0cmlhZ3VwdW5pMjVBRnVuaTI1Q0Zsb3plbmdldHJpYWdkbnVuaTI1QjZ0cmlhZ3J0dW5pMjVDMHVuaTI1QjR1bmkyNUI4dW5pMjVCRXRyaWFnbGZ1bmkyNUMybG96ZW5nZS50b3NmdW5pRjhGRmxvemVuZ2UudGZsb3plbmdlLm9zZnVuaTIxMTN1bmkyMTE2ZXN0aW1hdGVkdTFGMzEwdW5pMjMyN3VuaTIxRUF1bmkyQjU4dW5pMjMyOHVuaTIzMkJ1bmkyM0NFdW5pMjMyNnNlY3Rpb24ub3NmZGFnZ2VyLm9zZmRhZ2dlcmRibC5vc2ZkZWdyZWUub3NmZGVncmVlLnRmc2VjdGlvbi50ZmFtcGVyc2FuZC5zczAzZGFnZ2VyLnRmZGFnZ2VyLnRvc2ZkZWdyZWUudG9zZnNlY3Rpb24udG9zZmRhZ2dlcmRibC50ZnVuaTAyRDd1bmlBNzg5dW5pMDJFRWRhZ2dlcmRibC50b3NmdW5pMDJENnVuaUE3OEF1bmkwMkU1dW5pMDJERXVuaTAyRTl1bmkwMkU4dW5pMDJFNnVuaTAyRDR1bmkwMkU3cGx1cy5udW1yZXF1YWwuZG5vbXBsdXMuZG5vbW1pbnVzLmRub211bmkwMkU0bWludXMubnVtcnVuaTAzRjZlcXVhbC5udW1ydW5pMDM3NXVuaTAzNzR1bmkwMkQxdW5pMDJEMHVuaTAyQ0Z1bmkwMkUwdW5pMDJCQXVuaTAyQkJ1bmkwMkNCdW5pMDJDMHVuaTAyQjl1bmkwMkNFdW5pMDJCRnVuaTAyQ0F1bmkwMkM4dW5pMDJDQ3VuaTAzMDd1bmkwMzA4Z3JhdmVjb21iYWN1dGVjb21idW5pMDMwQnVuaTAzMEN1bmkwMzAydW5pMDMwQXVuaTAzMDZ0aWxkZWNvbWJ1bmkwMzA1dW5pMDMwNGhvb2thYm92ZWNvbWJ1bmkwMzBEdW5pMDMxMXVuaTAzMEZ1bmkwMzEydW5pMDMxM3VuaTAzMTZ1bmkwMzE3dW5pMDMxOXVuaTAzMTh1bmkwMzFBdW5pMDMxQnVuaTAzMUZ1bmkwMzFDdW5pMDMxRXVuaTAzMUR1bmkwMzIwdW5pMDMyMWRvdGJlbG93Y29tYnVuaTAzMjR1bmkwMzI1dW5pMDMyOHVuaTAzMjd1bmkwMzI2dW5pMDMyOXVuaTAzMkR1bmkwMzJGdW5pMDMyQnVuaTAzMkN1bmkwMzJBdW5pMDMzMXVuaTAzMzR1bmkwMzMydW5pMDMzMHVuaTAzMzV1bmkwMzNBdW5pMDMzNnVuaTAzMzl1bmkwMzNCdW5pMDMzRHVuaTAzNUN1bmkwMzYxdW5pMDMzQ3VuaTFEQzd1bmkxREM5dW5pMURDOHVuaTFEQzR1bmkxREM1dW5pMURDNmNlZGlsbGEuc2MuQUxUY2Fyb24uYWx0Y2VkaWxsYS5jYXNlLkFMVHVuaTAzMDguY2FzZXVuaTAzMDcuY2FzZWFjdXRlY29tYi5jYXNlZ3JhdmVjb21iLmNhc2V1bmkwMzBCLmNhc2V1bmkwMzBDLmNhc2V1bmkwMzBBLmNhc2V1bmkwMzAyLmNhc2V1bmkwMzA2LmNhc2V1bmkwMzBGLmNhc2Vob29rYWJvdmVjb21iLmNhc2V1bmkwMzA0LmNhc2V0aWxkZWNvbWIuY2FzZWFjdXRlLmNhc2V1bmkwMzI2LmNhc2V1bmkwMzI3LmNhc2V1bmkwMzFCLmNhc2VjYXJvbi5jYXNlY2VkaWxsYS5jYXNlYnJldmUuY2FzZWNpcmN1bWZsZXguY2FzZWRpZXJlc2lzLmNhc2VodW5nYXJ1bWxhdXQuY2FzZWdyYXZlLmNhc2Vkb3RhY2NlbnQuY2FzZW1hY3Jvbi5jYXNlYWN1dGUubG9jbEhVTnJpbmcuY2FzZXRpbGRlLmNhc2VhY3V0ZWNvbWIubG9jbEhVTmFjdXRlY29tYi5jYXNlLmxvY2xIVU5hY3V0ZS5jYXNlLmxvY2xIVU5hY3V0ZWNvbWIuY2FzZS5sb2NsUExLYWN1dGVjb21iLmxvY2xQTEthY3V0ZS5sb2NsUExLdW5pMDMwOC5zY2FjdXRlLmNhc2UubG9jbFBMS3VuaTAzMDcuc2NncmF2ZWNvbWIuc2N1bmkwMzBCLnNjYWN1dGVjb21iLnNjdW5pMDMwQS5zY3VuaTAzMDIuc2N1bmkwMzA2LnNjdW5pMDMwQy5zY3VuaTAzMDQuc2N1bmkwMzI3LnNjdGlsZGVjb21iLnNjdW5pMDMyNi5zY2Nhcm9uLnNjdW5pMDMyOC5zY2JyZXZlLnNjYWN1dGUuc2NjZWRpbGxhLnNjY2lyY3VtZmxleC5zY2RvdGFjY2VudC5zY2RpZXJlc2lzLnNjZ3JhdmUuc2NhY3V0ZS5sb2NsUExLLnNjaHVuZ2FydW1sYXV0LnNjYWN1dGUubG9jbEhVTi5zY21hY3Jvbi5zY29nb25lay5zY29nb25lay50aGluLnNjcmluZy5zY3RpbGRlLnNjb2dvbmVrLnRoaW51bmkwMzQ1dW5pMDM0MnRvbm9zdG9ub3MuY2FzZWRpZXJlc2lzdG9ub3N1bmkxRkJGdW5pMUZCRi5jYXNldW5pMUZCRHVuaTFGRkV1bmkxRkZFLmNhc2V1bmkxRkNEdW5pMUZDRXVuaTFGREQuY2FzZXVuaTFGRER1bmkxRkNFLmNhc2V1bmkxRkNGdW5pMUZERS5jYXNldW5pMUZERXVuaTFGRUR1bmkxRkRGLmNhc2V1bmkxRkNGLmNhc2V1bmkxRkRGdW5pMUZDMXVuaTFGRUV1bmkxRkVGdW5pMUZFRi5jYXNldW5pMUZGRC5jYXNldW5pMUZGRHVuaTFGQzB1bmkxRkNELmNhc2VkZXNjUm91bmRjeWRlc2NTdHJhaWdodGN5UG93ZXJTeW1ib2xkZXNjUm91bmRjeS5BTFRkZXNjU3RyYWlnaHRjeS5jYXNldW5pMDJCQ3VuaUE3QUVwb3dlclNsZWVwU3ltYm9scG93ZXJPbk9mZlN5bWJvbHBvd2VyT25TeW1ib2x1bmlBN0FFLnNjVXN0cmFpdC1jeXVzdHJhaXQtY3lVc3RyYWl0c3Ryb2tlLWN5bWFjcm9uY29tYmN5dXN0cmFpdHN0cm9rZWN5LnNjdXN0cmFpdHN0cm9rZS1jeXVzdHJhaXRjeS5zY2JyZXZlY3kuY2FzZWJyZXZlY3licmV2ZWN5LnNjbnVsbGNlZGlsbGFUY2VkaWxsYWRlc2NTdHJhaWdodGxlZnRjeWRpZXJlc2lzYWN1dGVjb21iZGllcmVzaXNncmF2ZWNvbWJkZXNjU3RyYWlnaHRsZWZ0Y3kuY2FzZWJyZXZlYWN1dGVicmV2ZWdyYXZlYnJldmVob29rYWJvdmVjaXJjdW1mbGV4Z3JhdmVjaXJjdW1mbGV4YWN1dGVicmV2ZXRpbGRlY2lyY3VtZmxleGhvb2thYm92ZWNpcmN1bWZsZXh0aWxkZWJyZXZlZ3JhdmUuY2FzZWJyZXZlYWN1dGUuY2FzZWJyZXZlaG9va2Fib3ZlLmNhc2VicmV2ZXRpbGRlLmNhc2VjaXJjdW1mbGV4YWN1dGUuY2FzZWNpcmN1bWZsZXhob29rYWJvdmUuY2FzZWNpcmN1bWZsZXhncmF2ZS5jYXNlYWN1dGVkYmxjaXJjdW1mbGV4dGlsZGUuY2FzZWdyYXZlZGJsdGlsZGVkYmxkaWVyZXNpc2dyYXZlY29tYi5jYXNlZGllcmVzaXNhY3V0ZWNvbWIuY2FzZWRpZXJlc2lzY2Fyb25jb21iZGllcmVzaXNjYXJvbmNvbWIuY2FzZWRpZXJlc2lzbWFjcm9uY29tYmRpZXJlc2lzbWFjcm9uY29tYi5jYXNlbWFjcm9uYWN1dGVzaW5nbGVtYWNyb25ncmF2ZXNpbmdsZXRpbGRlYWN1dGV0aWxkZWFjdXRlLmNhc2VqY3Jvc3NlZHRhaWxkb3RsZXNzZGllcmVzaXN0aWxkZW1hY3JvbmdyYXZlc2luZ2xlLmNhc2VtYWNyb25hY3V0ZXNpbmdsZS5jYXNlaG9va0hFTFBFUmhvb2thYm92ZUhFTFBFUjJob29rYWJvdmVIRUxQRVJob29rSEVMUEVSLmNhc2Vob29rYWJvdmVIRUxQRVIyLmNhc2Vob29rSEVMUEVScmlnaHRob29rSEVMUEVScmlnaHQuY2FzZWhvb2thYm92ZUhFTFBFUjIuc2Nob29rcmlnaHRIRUxQRVJkb3RtYWNyb25jb21icmluZ2FjdXRlY29tYi5jYXNlcmluZ2FjdXRlY29tYmRvdG1hY3JvbmNvbWIuY2FzZWRlc2NUYWlsY3l0aWxkZW1hY3JvbmNvbWIuY2FzZXRpbGRlbWFjcm9uY29tYmRpZXJlc2lzdGlsZGUuY2FzZWRlc2NUYWlsY3kuY2FzZUtzaWN5SEVMUEVSa3NpY3loZWxwZXIuc2NtYWNyb25sb25nY29tYmN5MDA0LjMwMURpZ2l0aXplZCBkYXRhIGNvcHlyaWdodCAyMDEyLTIwMTgsIFRoZSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIFRlbGVmb25pY2EgUy5BLiwgYkJveCBUeXBlIEdtYkggYW5kIENhcnJvaXMgQ29ycG9yYXRlIEdiUiwgd2l0aCBSZXNlcnZlZCBGb250IE5hbWUgIkZpcmEiRmlyYSBTYW5zIENvbmRlbnNlZCBCb29rIEl0YWxpYwAAAAAiAKsBhwGIAYkBigGLAY8BjACsAY0BkQGOAZABkwGSAK0BlAGVAZcBlgCuAZgBmQGaAZsBngCvAZ0BnACwAIoBoAGfACMBoQGiAaQBowGmAaUAJAGnAagAsQGrAakBrAGqAa0AJQGuAbABrwCaAbEBswGyAbQBtQG2AbgBuQG3AboAJgCyAbsBvAG+ALMBvQG/AcABwgHBAcMAtAHFAcQAtQHIAccBxgHJAcwBygHLAc0BzgHRAdABzwAnAdQB0wAoAdIB1QHWAdkB1wHYAdoB3AHdAdsAKQHjAeIB3wHeAeAB4QHkACoB5QC2AeYB5wC3AegAuAHpAeoB7QC5AewB6wHuAe8B8QHwAfIAKwH0AfMB9QAsAfYB+AH5AC0B9wH7AfoB/AH9Af8B/gIAAgECAgCMAC4CBAIDAgUALwIHAgYCCAILAgoCCQIMAg0CDwIOAhACEQC6ADACEgC7AhQCEwIVALwCFgIXAhkCGAIbAhoAvQIeAh0CHAIfAL4CIAIhAiQCIgIlAiMCKAIpAioCJgInAi0CLAIuAisCLwIxAI0CMgC/AjACMwCOADECNAI1AjYAnQAyAjkAMwI4AjcCOwI6AjwCPQI+Aj8ANAJAAkEAwAJCAkUCRAJGAkMCRwJIADUCSQJLAkoCTAJOAk8CTQJQAlECUgJTAlQCVQJWADYAwQJXAlgCWQDCAloAwwJcAl0CWwJfAl4AxAJgAmICYQJjAmUCZAJmAmcCaQJqAmsCaAJsAm0CbwA3AnACbgJxADgCcgJ0AnMCdgJ1AncAOQA6AMUCfADGAnkCeAJ7AnoCfgJ9AoECfwA7AoAAxwKCAoMChgKHAoQChQKJAogCigKLAo0CjAKPAo4CkQKSApMCkAKUApUClgKYApcCmQKaApwCmwKdAp4CnwBCAMgCoAKhAqMCogKkAqUCpgDJAqgCpwKpAqoCrgKvAMoCqwKtAqwCsADLArICswKxArQCtgK1AMwCuAK5AM0CtwCQArsCugBDAr0CvAK/Ar4CwALCAsECwwLFAEQCxgLEAM4CyQLIAscCygLNAssCzABFAKcC0ALPAs4C0QLUAtMC0gLVAtcC1gLYAtkC2wLaAt0C3ALeAEYAzwLfAuEC4ADQAuIC5ALjAuUC5gLnANEC6ALpANIC6gLtAusC7ALuAvEC7wLwAvIC9AL1AvMC+AL5AvcC9gL6AvsC/QL8Av4C/wMAAwEARwMCAwQDAwMFAEgDBgMIAwkDBwMKAwwDDQMOAwsDDwMSAxEDEAMTAxYDFQMUAxcASQMaAxkDGAMbAx4DHwMcAx0DIAMhAEoAkQDTAyIDIwDUAyUA1QMkAyYDKQMoANYDJwMqAywDLQMrAy4DLwMwAEsDMQMyAzQDMwM1AzYDNwBMAzgDOQM7AzoDPABNAz4DPQM/A0EDQANCA0MDRQNGA0QDRwNIA0kDSgNLAJIDTQBOA0wDTwNOA1ADUQBPA1QDUwNSA1UDWANWA1cDWQNcA1sDWgNdA14DXwDXAFAA2ANhA2ADYgDZA2QDYwNlA2gDZwNmANoDagNrA2kDbADbA20DbgNwA3EDcgNvA3QDcwN2A3UDdwN4A3sDfAN6A3kDfQN+AJMDfwDcA4ADggOBAJQAUQODA4UDhAOGAKIAUgOIA4cDigBTA4sDiQORA40DjgOMA5ADjwOTA5IDlAOVA5cDlgOYAFQDmgOZAN0DnAObA50DngOfAJUDoAOhA6IAVQOjA6UDpAOnA6YDqAOpA6sDqgOsA7ADrwOtA64DswO0A7IDsQO2A7UAVgDeA7cDuAO5AN8DugDgA74DvAO7A78DvQDhA8MDwQPAA8IDxAPHA8UDxgPIA8kDywPKA8wDzQPOA9ADzwPTA9ID1APRA9YD1QPZA9cD2APbAFcD3QPaA9wAWAPfA+AD4QPeA+ID5APjAFkAWgDiA+UA4wPmA+cD6QPoA+0D7APrA+oAWwPxAOQD8APuA+8D8gP2A/QD9QPzA/cD+gP5A/sD+AP8A/8D/gP9BAAEBQQDBAIEAQQEBAcEBgQIBAsECgQJBAwAbQBuBA0EEQQQBA8EDgQSBBMEFAQVBBYEGAQXBB0EHAQaBBkEGwQeBB8EIQQiBCAEIwQkBCYEJQQnBCgEKQQwBCwEKwQqBC0ELgQvBDIEMQQzBDQENQQ3BDgEOQQ2BDoEOwQ8BD0EPwQ+BEAEQQREBEIEQwRFBEgERgRHBEkETARLBEoETgRNBE8EUARSBFEEVQRUBFYEUwRXBF0EXARbBFgEWQRaBF4EYARiBF8EYQRkBGMEZQRmBGcEaARpBGoEawRtBG8EbgRsBHAEcgR1BHEEcwR0BHYEeAR5BHcEfQR8BH4EegR7BH8EgQSCBIAEhgSFBIMEhASKBIkEiASHBIwEjgSNBIsEjwSQBJIEkQSTBJQElwSWBJgElQSZBJoEnQScBJsEngSfBKAEoQSiBKMEpwSmBKQEpQSqBKkEqASrBKwErwSuBK0EsASxBLIEswS1BLYEuAS0BLcEuQS7BLoEvAS9BL4EvwTBBMMEwATCBMQExQTHBMYEyATJBMsEzATNBMoEzgTPBNAE0gTRBNUE1ATTBNYE2QTYBNoE1wTbBN0E3gTfBNwE4AThBOIE4wTlBOQE5gTnBOgE6QTqBOsE7QTsBO4E8ATyBPEE7wTzBPQE9wT2BPUE+AT5BPoE/AT7BP4E/wUABP0FAQUCBQMFBAUFBQYFBwUKBQkFCAUOBQwFCwUNBREFEAUSBQ8FFQUUBRYFEwUYBRcFGQUaBRsFHAUeBR8FIAUdBSEFIgUjBSQFJwUlBSYFKAUqBSkFKwUsBS0FLgUvBTAFMgUxBTMFNAU3BTYFNQU4BTwFOwU5BToFPQU/BUAFPgVBBUMFRQVCBUQFSAVHBUYFSgVLBUwFSQVNBU8FTgVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVgBV4FXQVcBV8FYwViBWQFYQVlBWYAiwCPBWcFaAVqBWwFawVpBW0FbgVvBXAFcgVzBXQFcQV2BXcFdQV4BXkFegV7BXwFfgV/BYAFfQWBBYIFhAWDBYYFhQWHBYgFiQWKBYsFjAWNBY4FkAWPBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWdBZ8FnAWgBZ4FoQWlBaQFowWiBaYFpwWoBasFqgWpBa4FrwWtBawFsAWxBbMFtAWyBbUFtwW2BbgFuQW7BboFvQW+Bb8FvAXBBcAFwwXCBcUFxAXHBcYFyAXJBcoFzAXLBc4FzwXSBc0F0QXQBdQF1QXWBdMF1wXYBdoF2wXZBdwF3QXeBeAF3wXiBeQF4wXhBeUF5gXpBegF5wXqBe0F7gXsBesF7wXwBfIF8QXzBfQF9QX3BfYF+QX4BfoF+wX8Bf0F/gYABf8GAQYDBgIGBAYFBgcGBgYIBgkGCgYLBgwGDQYPBg4GEAYRBhMGEgYUBhUGFgYXBhgGGgYZBhwGGwYdBh4GIAYfBiEGIgYjBiQGJQYmBigGKQYqBicGKwYsBi4GLwYtBjMGMgYxBjAGNQY0BjcGNgY5BjgGOwY8Bj4GOgY9BkEGQgZABj8GQwZEBkUGRgZIBkkGRwZMBksGSgZNBlAGTwZRBk4GVgZVBlMGUgZUBlcGWgZZBlgGXwZeBl0GWwZcBmAGYQZiBmMGZAZmBmUGZwZoBmoGbAZrBmkGbQZuBm8GcgZxBnAGdgZ0BnUGcwZ5BngGdwZ6Bn4GfAZ7Bn0GgQaCBoAGfwaDBoUGhgaHBoQGiAaJBosGigaMBo4GjQaQBpEGkgaPBpMGlQaWBpcGlAaZBpoGnAaYBpsGnQaeBp8GoQagBqIGpQakBqMGpgaqBqsGpwapBqgGrAatBq4GrwaxBrAGsgazBrYGtAa1BrcGuAa6BrkGuwa8Br8Gvga9BsAGwQbDBsIGxAbFBsgGxwbJBsYGzQbMBssGygbQBs8G0QbOBtMG0gbUBtUG1wbWBtgG2QbbBtoG3AbfBt4G4AbdBuQG4gbjBuEG5wbmBuUG6AbqBukG7gbrBuwG7QbvBvIG8QbwBvMG9Qb0BvYG+Ab3BvkG+gb8BvsG/gb9BwEHAAcCBv8HBAcDBwYHBQcHBwoHCAcJBwwHCwcNBw4HDwcQBxIHEQcTBxUHFwcWBxQHGAcbBxoHGQcdBxwHIAceByEHHwciByQHJQcmByMHJwcoBykHKgcrBywHLQcvBy4HMAcxBzQHMgczBzUHOQc3BzgHNgc6BzwHPQc+BzsHPwdAB0EHRAdFB0MHQgdGB0kHSAdKB0cHSwdMB04HTQdPB1QHUwdSB1AHUQdWB1UHWAdXB1oHWQdcB1sHXgddB2AHXwdiB2EHZAdjB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3IHcQd0B3MHdgd1B3cHeAd6B3kHewd8B30Hfwd+B4AHgQeDB4IHhAeFB4cHhgeIB4kHigeLB4wHjQeOB48HkQeQB5IHlAeTB5UHmAeXB5YHmQecB50HmgebB54HoQefB6AHogelB6QHowenB6kHqAemB6oHqwesB60HrgevB7EHsAezB7IHtQe0B7cHtge5B7gHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxwfGB8kHyAfKB8sHzAfNB88HzgfQB9IH0QfTB9YH1wfUB9UH2AfZB9oH2wfcB90H3gffB+AH4gfhB+MH5gflB+QH5wfoB+kH6gfrB+4H7QfvB+wH8AfzB/IH8Qf0B/UH9wf2B/gH+Qf7B/wH+gf9B/8IAAf+CAEIBQgDCAIIBAgICAkIBwgGCAoICwgMCA8IDQgOCBIIFQgQCBEIEwgUCBYIGAgXCBkIHAgbCBoIHQggCCEIHwgeCCIIIwgkCCUIJggoCCkIJwgqCCwIKwgtCC4ILwgyCDAIMQgzCDUINAg2CDkINwg4CDoIOwg+CD0IPAg/CEAIQwhCCEEIRAhICEcIRghFCEkITQhMCEoITghLCE8IUghQCFEIUwhWCFUIVAhXCFoIWQhbCFgIXAheCF0IYAhfCGEIYwhmCGUIYghkCGkIaAhqCGcIbQhuCGwIawhvCHIIcQhwCHMIdgh1CHQIdwh5CHoIewh4CHwIfQh/CIAIfgiBCIMIggiECIUIhgiICIcIiQiMCIsIigiNCI8IjgiQCJQIkwiRCJIImAiXCJYIlQiaCJsInAiZCJ0InwigCKEIngikCKMIpgiiCKUIqAinCKsIqgisCKkIrQivCK4IsQiwCLMIsgi1CLQItgi3CLoIuwi5CLgIvQi8CMAIvgi/CMEIwgjECMMIxQjGCMgIxwjJCMwIywjKCM0I0AjPCM4I0QjTCNQI0gjVCNYI1wjZCNgI2gjdCNwI3gjbCN8I4gjhCOAI4wjkCOUI5wjmCOgI6wjqCOkI7AjtCO4I7wjxCPAI8gjzCPUI9Aj2CPoI+Aj5CPcI/Qj+CPsI/Aj/CQIJAQkACQMJBAkGCQUJBwkKCQkJCAkLCQ4JDAkNCQ8JEwkSCREJEAkUCRYJFwkZCRUJGAkbCRoJHQkcCR8JIAkeCSEJIwkiCSQJJQkmCScJKwkqCSgJKQksCS8JLgkwCS0JNAkxCTIJMwk1CTcJOAk2CToJOQk8CTsJQAk/CT4JPQlDCUQJQglBCUoJRglFCUcJTAlICUkJTQlLCU4JUAlRCU8JUglUCVUJUwlXCVYJWQlYCVoJWwlcCV4JXQlfCWIJYQljCWAJZwllCWQJZglpCWgJawlqCW0JbAluCW8JcglxCXMJcAl0CXYJdQARABIAEwAUABUAFgAXABgAGQAaCXcJeQl4CXwJfQl7CXoJgQmACX4JfwmECYMJggmFCYgJhwmJCYYJigmNCYwJiwmRCZAJjwmOCZIJlAmTCZUJlwmYCZYJmQmbCZoJnAmdCZ8JngmgCaEJowmlCaQJogmmCacJqQmoCasJqgmsCa0JrgmxCbAJrwmyCbUJtAmzCbYJuAm5CbcJugm+CbwJvQm7CcEJwABjCb8AmwnDCcIAngCjCcQJxQnGCccJyAnJAUABQQFCAUMADwANABsAHAB5AAIAYAAgAHsAcgB0AAsJygAEABAAPQnMCcsJzQnQCc4JzwnRCdMJ0gAJAAoAXABeADwAPgnUCdUJ1gnXCdkJ2AnaCdsADgncAG8AiQE6Cd4J3QnfAEAJ4AniCeEJ5QnkCeMJ5gB1AHYAaQB3AEEACABqAHgAawBsAAMAaAnnCegJ6QnqCesJ7QnsCe4J7wnxCfAJ8gABCfQJ8wn1CfcJ9gn5CfgJ+gn7CfwAYQEsAGcABQn/Cf4J/QBlCgIKAAoBCgMKBQoEAGIKBgBkCgkKBwoICgsKCgoPCg4KEAoMCg0KEwoRChIKFAoVChYKGAoXChoKGQobChwKHgodCh8KIAohCiIKIwolCiQKJgooCikKJwoqCi0KKwosCi4KLwowCjEKMgo0CjUKMwo2CjcKOgo4CjkKOwo9CjwKPgo/CkAADACmAKgAnwAeCkEAHwAdCkQKQgCcCkMAXwCXAD8KRQpGCkcKSgpJCkgKTApNCk4KSwAGAHoKTwpQClEKUgpTClYKVQpUClcKWQpbCloKWApdClwKXwpeCmMKYgphCmAKZApnCmUKZgpoCmoKawppCmwKbgpvCm0KcApxCnQKcwpyCnUKdgp3CnkKeAp6Cn0KfAp7Cn4KgQqACn8KhAqDCoUKggqHCokKiAqGCo0KjAqKCosKjgqPCpAKkQqSCpQKlQqTCpcKmAqWCpkKnQqcCpsKmgqgCp8KoQqeCqIKpgqlCqMKpAqpCqoKqAqnCqwKqwquCq0KsgqvCrAKsQqzCrcKtgq0CrUAIQAHAHMAZgCqAKUAmQChAF0AoAq4AHAAcQq6CrkKuwq+Cr0KvArACsIKvwrBCsMKxgrECsUKyQrICscKygrOCs0KzArLCtIK0ArRCs8K0wrWCtQK1QrXCtkK2ArbCtoK3grfCt0K3ArhCuMK4AriCuUK5ArpCugK5grnCusK6grsCu0K7wruCvAK8QrzCvIK9Qr0CvYK9wr4CvoK+Qr8CvsK/Qr/Cv4LAAsBCwMLAgsECwULBgsHCwkLCAsKCwsLDQsPCw4LDAsQCxELEgsTCxQLFwsWCxULGAsdCxsLHAsZCxoLIQseCyALHwsiCyQLJQsjCyYLKgsnCygLKQB9CywLKwCBAIgAhQB+AIMAggB8Cy0LLwCGAIALLgswAIcAhAB/CzMLMQsyCzQLNQs3CzYLOAs7CzkLPAs6C0ALPws+Cz0LRAtCC0MLQQtHC0ULRgtIC0kLTAtLC0oLTQtPC1ALUQtOC1ILUwtVC1YLVAtYC1cLWQtaC1wLWwteC2ALXwtdC2MLYQtkC2ILZgtoC2cLZQtpC2oLbAtrC20LbwtwC24LcQtyC3QLcwt1C3YLeAt3C3kLegt7C3wLfQt+C38LgAuBC4QLgwuCC4ULiAuHC4YLiwuMC4oLiQuOC40LjwuQC5ILkQuTC5QLlQuWC5gLmQuaC5cL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LYvK91bK90jKAb/4CgP4PvjHFfu6Bjv8xwX3vQaUygX7bQam91YF90cGlMoF+0YGpPdIBfdgBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsGO/zHBdsGsfebBfdrBmf7mwXbBg6soHb3m833fncBv/hcA/iQ+McVOwZq+34F+2wGrPd+BTsG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AAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAACAAEAAgAAAAIAAQACAAAAAgABAAIAAAACAAEAAgAAAAIAAQACAAAAAgABAAIAAAACAAEAAgAAAAIAAQACAAAAAgABAAIAAAACAAEAAgAAAAIAAQACAAAAAgABAAIAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAEAAMABAAFAAYAAAAFAAcACAAJAAoACwAAAAUABwAIAAkACgALAAAABQAHAAgACQAKAAsAAAAFAAcACAAJAAoACwAAAAUABwAIAAkACgALAAAABQAHAAgACQAKAAsAAAAFAAcACAAJAAoACwAAAAUABwAIAAkACgALAAAABQAHAAgACQAKAAsAAAAFAAcACAAJAAoACwAAAAUABwAIAAkACgALAAAABQAHAAgACQAKAAsADAAaACIAMABaAGIAagByAHoAggCKAJIAmgABAAAAAQCIAAkACAAEAIoAkgCaAKIACQAIABIAnACkAKwAtAC8AMQAzADUANwA5ADsAPQA/AEEAQwBFAEcASQACQAAAAEBAgAJAAAAAQECAAkAAAABAQIACQAAAAEBAgAGAQAAAQECAAYCAAABAyAABgMAAAEG2gAGAQAAAQcgAAYCAAABCEgAAQo4AAUABQAKAAEAAgAAC7IAAQACAAAMTgABAAIAABjuAAEAAgAAIo4AAQACAABRRgABAAIAAGC4AAEAAgAAYZAAAQACAABjFAABAAIAAKugAAEAAgAAwDgAAQACAAD9CgABAAIAARz4AAEAAgABL2gAAQACAAFhpAABAAIAAWIMAAEAAgABgC4AAQACAAGNYgABAAIAAZikAAEAAgABms4AAQACAAGskAABAAIAAbliAAEAAgABvF4AAQAEAAHDMgABAAQAAcrGAAEABAAB7N4AAQAEAAIOkAABCXQJnAABAAwAigAfAAAAxAAAAMoAAADQAAAA1gAAANwAAADiAAAA6AAAAO4AAADK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//MAFAALAAoACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/2/+IAAAAA/+wAAP/2/+wAAP/4//v//f/fAAD/4v/s/+z/2AAAAAAAAAAA//YAAP/lAAAAAAAA//YAAAAA/+4AAAAA/+wAAAAAAAD/zv/xAAAAAAAAAAD/9v/sAAD/nAAA//b/9v/sAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA/9gAAAAAAAAAAAAAAAAAAP/Y/+wAAAAA//b/7AAA//b/7AAAAAAAAAAAAAAAAP/vAAAAAAAA/+wAAAAAAAAAAP/IAAD/2AAA//QAAP/s//b/9//2//YACv/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2wAAAAAAAAAA/+IAAAAA/9gAAP/s//YAAP/bAAD/2P/s/+z/zgAAAAD/9gAA//H/+f/vAAAAAAAA//YAAP/6AAD/6QAA/+L/9gAAAAD/2AAA/+z/9gAA/+v/7AAA//b/sAAA//b/8f/s//EACgAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/iAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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//YAAP/1AAAAAP/7AAAAAP/2AAAAAP/3AAD/7AAA//T/7P/xAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAD/9gAAAAAAAAAA/+IAAP/s//YAAP/l/+z/4gAAAAD/2AAAAAD/7AAAAAAAAP/iAAAAAAAAAAAAAP/xAAD/6gAA/9j/9v/sAAAAAAAA//cAAP/2//f/7AAAAAAAAAAA/+wAAAAAAAAAAAAUAAAAAAAAAAAAAAAA//EAAP/2//MAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/xAAD/9v/s//YAAAAA/+wAAP/x//YAAP/iAAD/4gAAAAD/7P/sAAAAAP/x/+IAAP/iAAD/9gAAAAD/+AAA/+gAAP/2//YAAP/wAAAAAP/4AAD/+P/2AAAAAAAAAAAAAP/4//H/8QAAAAAAAAAAAAD/8AAAAAD/7P/jAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAA//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//f/6gAA//EAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAD/9v/xAAAAAAAA/+IAAP/s//EAAP/Y/+wAAAAAAAD/zv/2AAAAAAAA/+L/6v/iAAD/9gAAAAAAAP/rAAD/4QAA/9j/8f/s//YAAAAA/+7/7P/u/+b/7AAAAAAAAAAA/+z/4gAAAAAAAAAAAAD/7gAA//f/7P/x//H/9v/u/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8wAA//kAAAAA/+wAAAAA/+IAAP/sAAD//f/s/+wAAP/p/+z/9gAAAAAAAAAAAAAAAP/0AAAAAAAA//b/9wAA/+YAAAAA/+z/9gAAAAD/4v/tAAAAAAAAAAD/7P/1AAD/4gAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAA//YAAP/9AAAAAAAA//n/9gAAAAAAAAAAAAAAAP/3AAAAAAAAAAAAAAAAAAAAAP/0AAD/7AAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/8T/2P/s/+IAAP+9AAD/4gAAAAD/sAAD//YAAAAF/+IAAP/v/+wAAAAAAAAAAAAD/8QAAAAA/9j/zv/zAAAAAP/s/9j/7P/s/+L/7AAAAAD/7P/2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APEA8QB5APIA+gAMAPsA+wANAPwA/AAMAP0A/QBOAP8A/wBuAQABAAAMAQEBGQCqARoBGgB5ARsBHQCqAR4BHgAPAR8BHwARASABIACqASEBIQBUASIBJwBKASkBKQAQASoBMgARATQBNQARATYBPABYAT0BPQBUAUABQAB5AUEBQQCqAUIBQgB5AUQBRAB5AUUBRQALAUYBRgBYAUsBSwBJAUwBTACGAU0BTgCIAU8BUgCGAVMBUwCIAVQBVQCGAVYBVgA1AVcBbwCIAXABcACGAXEBdgCIAXcBdwCPAXgBegBvAYEBgQB5AYUBiwCIAYwBjAAYAY0BjQCIAY8BtgCIAbcBuACBAbkBuQA5AboBugCIAbsBuwCKAbwBvACIAb0BvgCtAb8BvwBhAcABwAApAcEBxQCIAcYByAAbAckByQBjAcoBygAbAcsBzwBMAdAB0QCIAdIB0gA1AdMB2ACIAdkB2QCKAdoB2gAdAdsB2wCKAdwB3AAeAd0B3QCKAd4B3gAdAd8B3wAeAeAB4QCIAeIB4gA3AeoB6gCPAesB7AApAe8B7wCGAfAB9gB1AfoB+gB1AfwB/AB1Af4B/gB1AgACAACPAgICAgB1AgMCBABmAgUCBgB1AgcCBwBnAggCCgBmAg4CDgCGAhACEABTAhMCEwAhAhQCFQCFAh8CHwCFAiECIQCFAiMCJgCGAicCKACPAikCKgCGAisCKwAoAiwCMwCGAjQCNACtAjUCOACGAjkCWwCIAlwCXACKAl0CYwCIAmQCZACGAmYCZgCGAmcCZwCIAmoCbQCIAm4CbwCGAnACcAA1AnECdQCGAnYCdgApAncCdwCGAngCeABqAnkCegCGAnsCewBqAnwCfACGAn0CfQBqAn4CfwBrAoACgAAoAoEChgBrAocChwBmAogCiQBrAooCigBMAosCmACiApkCmgCGApsCmwCYApwCngCiAqACtwCPArkCuQCIAr0CvQCGAsMCwwCIAsQCxACPAsUCxQCQAsYCyACPAskCyQA1AsoCygCPAssCywA1AswCzABsAs0C0gCkAtMC0wBsAtQC1ACGAtUC1QBTAtYC4AA1AuEC4QBsAuIC6wBtAuwC7QBNAu4C7gBvAu8C7wCIAvAC8AB1AvEC8QCIAvIC8gCPAvMC8wCIAvQC9ACGAvUC9QCIAvYC9gBrAvcC9wBtAvkDDgBMAw8DDwCJAxEDEQCRAxQDFACOAxUDFQBdAxsDGwCJAx4DHgCJAx8DHwBFAyADNwB7AzgDOACJAzkDPgB7Az8DQQBZA0UDRQCOA0gDTwCJA1YDVgCOA1kDWQB/A3IDcgChA3UDdgCJA3cDeAB0A4ADhwCJA4gDiACZA4kDiQCJA4oDigCdA6MDowCDA6UDpQCDA7QDtAB7A7cDtwCJA7kDuQCJA7sDuwCJA7wDvACMA70DvQCoA78DwQCuA9AD0QCJA9ID0gB5A9MD8ACJA/ED8QCnA/ID+ACJA/wD/ACOA/4D/wCJBAkEEACMBBIEGgCjBBsEGwCOBBwEHACjBCAEIACjBD0EPQBzBD8EPwB7BEAERQClBEcERwCRBEgEUgBFBFMEWQCoBF0EXQBdBGEEYQBvBGIEYgCIBHMEcwBUBHkEeQA7BH0EfQAQBH4EfgAVBIUEhQBXBIgEiAB5BIsEiwB5BIwEjAAMBI0EjgAOBI8EjwB5BJAEkAAQBJEEkQBJBJcElwAMBJkEmQBXBJsEmwALBJwEnAB5BJ0EnQAVBKAEoAAFBKEEoQAMBKMEowB3BKQEpAAMBKUEpQB5BKYEpgASBKgEqABUBKoEqgAUBKwErAAVBK0ErQAKBK4ErgB5BK8EsAAPBLEEsQB5BLQEtAAQBLUEtQAVBLkEuQAMBL4EvwB5BMAEwAAMBMEEwQAQBMIEwgAMBMMExABJBMcEyAACBMoEygAQBMwEzABXBM8EzwBJBNEE0gBUBNME0wBVBNUE1gB5BNcE1wAQBNgE2QAVBNwE3gB5BOAE4gAOBOME4wBJBOcE6AAQBOkE6gB4BOsE7AAHBO0E7QBXBO8E7wB5BPAE8AAMBPEE8QCpBPIE8wBXBPUE9QB3BPYE9gB5BPcE9wBKBPkE+QBXBP4E/gA7BP8E/wBWBQAFAABXBQEFAgBUBQMFAwB5BQQFBABUBQcFBwBUBQgFCABWBQkFCgBUBQ0FDQAQBQ4FEQBUBRMFEwCIBRQFFABbBRUFFQCIBRYFFwCYBRgFGACGBRkFHACIBR0FHQBTBR4FHgA5BR8FIgCPBSMFJACGBSUFJQBfBSYFJgCABScFJwCGBSgFKACIBSkFKQCGBSsFKwCIBSwFLACGBS0FLgA1BS8FLwCIBTAFMABTBTEFMQA9BTIFNQCPBTYFNgCGBTcFNwAvBTgFOACGBTkFOQBfBToFOgCGBTsFOwBrBTwFPACIBT0FPQA5BT8FPwB1BUAFQABmBUIFQgCGBUMFQwBlBUcFRwCGBUgFSABsBUkFSQCGBUoFSgA4BUsFSwCGBU0FTQCPBU4FTgCIBU8FUAA1BVEFUQCIBVIFUgCYBVMFUwCGBVQFVABTBVUFVQA5BVYFVwCGBVkFWQAvBVoFXQCGBV4FXwCIBWAFYACGBWEFYQBTBWIFYgAvBWMFZAA9BWcFaAAXBWoFagBTBWsFawCGBWwFbABfBW0FbgCGBW8FbwA9BXAFcACABXEFcgCIBXMFcwBvBXQFdgCIBXcFdwBTBXgFeAA5BXkFeQAbBXoFewCPBXwFfgCIBYAFggA1BYMFgwA9BYQFhACYBYUFhgCGBYcFiABTBYkFigCIBYsFjAAfBY0FjQBfBY4FjgCGBY8FjwCIBZAFkAAvBZEFkQCBBZIFkwBfBZQFlACGBZUFlQBlBZYFlgCIBZcFlwCkBZgFmACGBZkFmQBfBZoFnQCGBZ4FngBfBZ8FnwCGBaAFoABfBaIFogCtBaMFowCIBaQFpABTBacFqABsBaoFqgCYBasFqwBTBa4FrwCGBbAFsAAvBbEFsQCIBbIFsgA9BbMFswBsBbQFtABTBbYFtgBsBbcFuACGBbkFuQBTBboFugBsBbsFuwCGBbwFvgBsBb8FvwCGBcAFwABbBcEFwQCYBcIFwgCIBcMFxQCGBcoFygCRBcwFzAB7BdYF1gCRBdcF1wB0Bd4F3gBgBd8F3wCuBeEF4QCJBeQF5ACJBeUF5QCjBeYF5wBSBegF6ACJBekF6QCRBeoF6gBdBfAF8ACjBfIF8gBgBfQF9ACMBfUF9QCJBfYF9gB0BfkF+QCDBfoF+gCjBfwF/ACVBf0F/QCjBf4F/gCJBf8F/wCcBgEGAQB7BgMGAwCSBgUGBQB0BgYGBgBpBgcGBwCJBggGCQBzBgoGCgCJBg0GDQCRBg4GDgB0BhIGEgCjBhcGGACJBhkGGQCjBhoGGgCRBhsGHABdBiIGIgBgBiMGJACXBiYGJgCRBigGKABgBisGKwBdBiwGLACuBi0GLgB7Bi8GLwBZBjEGMgCJBjMGMwCRBjQGNQB0BjgGOgCJBjwGPgBSBj8GPwBdBkMGRACRBkUGRgBxBkcGSACfBkkGSQBgBksGSwCJBkwGTACjBk4GTwBgBlEGUQCVBlIGUgCJBlMGUwClBlUGVQBgBlkGWgB7BlsGWwCJBlwGXQB7Bl8GZAB7BmYGZgCGBmcGZwAFBmgGaABUBmsGawBUBm0GbQBYBm8GbwB5BnIGcgBUBnUGdQADBnYGdgB5BnoGegAMBnsGewARBnwGfAB5Bn0GfQAQBn4GfgAKBn8GfwB6BogGiAARBooGigABBowGjQB5Bo8GjwAIBpAGkABUBpIGlAARBpUGlQB5BpcGlwB5BpkGmQAJBpoGmgB5BpsGmwAJBqYGqABUBucG6AARBvwG/ACIBv4G/gA1Bv8G/wCIBwAHAACBBwEHAQCUBwIHAgCGBwMHAwCbBwQHBACPBwUHBQCGBwYHBgAhBwcHBwCGBwgHCAA1BwkHCgCIBwsHCwAmBwwHDACLBw0HDgCIBw8HDwAuBxAHEACPBxEHEQCIBxIHEgAYBxMHEwCPBxQHFACIBxYHFwB1BxgHGgCPBxsHHQCIBx4HHgCBBx8HIACGByEHIQAuByIHIgCGByMHIwCKByQHJACIByUHJQCKByYHJwCIBygHKACLBykHKQAgByoHKgArBysHKwCGBywHLABbBy4HLgCIBy8HLwCaBzAHMACGBzEHMQCLBzIHMgCIBzMHMwBmBzQHNACIBzYHNgCABzcHNwCLBzgHUACIB1EHWACBB1kHbwCGB3AHcQCPB3IHeAB1B3oHfwB1B4AHhwCIB4gHiQCLB4oHmQCPB5oHsACIB7IHsgBbB7MHswCUB7QHtACIB7UHtQB7B7gHuAB7B7oHugCoB7wHvACJB78HvwB7B8AHwACuB8MHwwCJB8YHxwChB8gHyACjB8kHyQBFB8oHygCJB8sHywCRB8wHzABpB80HzQCWB9EH0wBFB9QH1ACJB9UH1QCWB9YH1gB7B9oH2gBaB9wH3ACnB90H3QCJB94H3gCnB98H4ACJB+IH4gCEB+MH4wB7B+UH5QB5B+YH5gCJB+cH6QBFB+oH6gCJB+sH6wCaB+0H7QCLB+4H7gCJB+8H7wCDB/AH8ACJB/IH8gCuB/QIDAB7CDwIQwCJCEYIVQBFCFYIbACWCG4IbgCICHEIcQCTCHIIcgAkCHMIcwAyCHQIdABRCHUIdQBwCHYIdgBOCHcIdwBECHgIeAAsCHkIeQA/CHoIegAiCHsIewBHCHwIfAAlCH0IfQAzCH4IfgAwCH8IfwBkCIAIgAAcCIEIgQBECIIIggAtCIMIgwA/CIQIhAAjCIUIhQBHCJwInACTCJ0IpgBICKcIsAA6CLEIxABGCMYI1QBGCNYI1wBoCNgI2QBeCNoI2gBoCNsI2wBiCN0I3QAnCN4I3gCgCN8I3wBBCOAI4AA8COEI4QBLCOMI4wCHCOQI5ABQCOUI5QAWCOYI5gAtCOcI5wA0COoI6gCHCO0I7gBICPAI8ACvCPII8gCrCPQI9ABcCPUI9gBGCPgI+ACvCPoI+gCrCPwI/ABcCP0JBABBCQUJBQA0CQYJCgBBCQ0JDgBoCQ8JEgAoCRMJEwBACRQJFABPCRUJFQBACRYJFgBPCRcJGAAoCRkJGQBACRoJGgBPCRsJGwBACRwJHABPCR0JHgA6CR8JIABGCSEJIQBBCSIJIgBeCTAJMACICTEJMQB5CTMJMwALCTQJNACICTUJNQANCTYJNgAaCTcJNwBMCTgJOACCCTkJOQBCCTsJOwByCTwJPAAqCT4JPgCNCT8JPwCmCUAJQAA2CUIJQgCICUMJQwB5CUUJRQALCUYJRgCICUcJRwAZCUgJSAAaCUkJSQCCCUoJSgBCCUwJTAByCU0JTQAqCU8JTwCNCVAJUACmCVEJUQA2CXQJdABBCXYJdgBBCXcJdwBICXgJeABGCXkJeQBICXoJegBGCXsJfABBCX4JfgBBCYcJiABBCY0JjQB6CY4JjgBUCZEJkQCwCZIJkgCGCZQJlQBDCZYJlgBICZcJlwBGCZoJmwBBCZ0JnQBBCaYJpwBBCawJrACwCa4JrwBDCf8J/wB+CgAKAAB8CgMKAwCsCgQKBABLCgUKBQAxCgYKBgA+CgoKCgCeCgwKDAB5ChcKFwA+ChgKGACeChoKGgB9CiMKIwBeCiQKJAAoCiUKJgBBCi8KMQA6CjIKNABGCjYKNgA5CjcKNwAoCjgKOABoCjsKOwBBCjwKPABeCj4KPgAoCkIKQgAoCnUKdQBBCwALAQARCwILAwA1CwQLBQBFCy8LLwBnAAENvgAEAAAA3AHCAdAB3gHsAfoCCAIWAjwCSgJYAmICfAKCApgCngK4AtIC2ALeAuQC6gLwAvYC/AMCAwgDDgMUA5IDoAOmA6wDsgO4A74DxAPKA9AD1gPcA+ID6APuA/QD+gQABAYEDAQSBBgEHgQkBCoEMAQ2BDwEQgRIBE4EVARaBGAEagR0BH4EiASSBJwEpgTIBM4E1ATaBOAE5gTsBPIE+AT+BQQFCgUQBRYFHAUiBSgFLgU0BToFQAVGBUwFUgVYBV4FZAVqBXAFdgV8BYIFiAWOBZQFmgWgBaYFrAWyBbgFvgXEBcoF0AXWBdwF4gX8BgIGHAYmBywHYgd8B4IHiAeOB5QHmgegB6YHrAeyB7gH0gfsCGoIhAiKCJAIlgicCKIIqAiuCLgIvgjICNII2AjeCOgI8gj8CQ4JMAlSCVwJdgmACYYJjAmSCZgJngmkCaoJvAneCfAKAgoMClIKkArSCxgLVguYC94L6AvyC/wMBgwQDBoMJAwuDHQMfgyIDJIMnAymDLgMygzUDNoM6AzuDPQM+g0IDQ4NGA0iDSwNNg1ADUoNVA1eDWgNcg18DYYNjA2eDagNsg24AAMG/v+6Bwj/ugj9/8QAAwb+/7oHCP+6CP3/xAADBv7/ugcI/7oI/f/EAAMG/v+6Bwj/ugj9/8QAAwb+/7oHCP+6CP3/xAADBv7/ugcI/7oI/f/EAAkG/v+6Bwj/ugjwAG4I8gBoCPQAbgj4AG4I+gBoCPwAbgj9/8QAAwb+/7oHCP+6CP3/xAADBv7/ugcI/7oI/f/EAAIIgv/ECOb/xAAGCPAAbgjyAGgI9ABuCPgAbgj6AGgI/ABuAAEBv//5AAUBv//KCPIAAAj0AAAI+gAACPwAAAABAZH/8QAGCPAAAwjyAAwI9AAMCPgAAwj6AAwI/AAMAAYI8AA2CPIAKQj0ACkI+AA2CPoAKQj8ACkAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAAQUZ/8sAHwjf/+YI/f/mCP7/5gj//+YJAP/mCQH/5gkC/+YJA//mCQT/5gkG/+YJB//mCQj/5gkJ/+YJCv/mCSH/5gl0/+YJdv/mCXv/5gl8/+YJfv/mCYf/5gmI/+YJmv/mCZv/5gmd/+YJpv/mCaf/5gol/+YKJv/mCjv/5gp1/+YAAwb+/7oHCP+6CP3/xAABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAsX/9gABAsX/9gABAsX/9gABAsX/9gABAsX/9gABAsX/9gABAsX/7gABAsX/9gABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAb//+QABAZH//gABAZH//gABAZH//gABAZH//gABAb//+QABAb//+QABAb//+QABAb//+QACAcgAAAUZAA8AAgHIAAAFGQAPAAIByAAABRkADwACAcgAAAUZAA8AAgHIAAAFGQAPAAIByAAABRkADwACAcgAAAUZAA8ACAjnAEsI8AA9CPIAMAj0ADAI+AA9CPoAMAj8ADAJBQBLAAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBUAAHAAEBUAAHAAEBUAAHAAEBUAAHAAEBUAAHAAEBUAAHAAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAEBv//5AAYI8AAHCPIACwj0AAsI+AAHCPoACwj8AAsAAQG///kABgjwAAoI8gAKCPQACgj4AAoI+gAKCPwACgACCPQAIgj8ACIAQQDpAAcCKwAHAoAABwixAAkIsgAJCLMACQi0AAkItQAJCLYACQi3AAkIuAAJCLkACQi6AAkIuwAJCLwACQi9AAkIvgAJCL8ACQjAAAkIwQAJCMIACQjDAAkIxAAJCMYACQjHAAkIyAAJCMkACQjKAAkIywAJCMwACQjNAAkIzgAJCM8ACQjQAAkI0QAJCNIACQjTAAkI1AAJCNUACQjwABMI8gAVCPQAFQj1AAkI9gAJCPgAEwj6ABUI/AAVCQ8ABwkQAAcJEQAHCRIABwkXAAcJGAAHCR8ACQkgAAkJeAAJCXoACQmXAAkKJAAHCjIACQozAAkKNAAJCjcABwo+AAcKQgAHAA0A6QAAAisAAAKAAAAJDwAACRAAAAkRAAAJEgAACRcAAAkYAAAKJAAACjcAAAo+AAAKQgAAAAYI8AAKCPIACwj0AAsI+AAKCPoACwj8AAsAAQFQ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AAD/9AAAAAAAAAAA//YAAAAA//MAAAAA//sAAAAAAAAAAAAA//b/2P/YAAAAAP/zAAAAAP/z/+wAAAAA/+L/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAIAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAD/0QAA/8oAAP/oAAD/xP/K//j/+AAA/+L/0QAA/9j/7AAA/8T/vQAAAAD/xP/lAAAAAAADAAAAAAAD/87/6QAK/9j/2//LAAAAAP/v/+//yv/YAAMAAAAA/9H/sP/E//H/5P/iAAAAAP/R/9EAAAAA/9gAAAAA/8sABwANAAAAAP/zAAAAAP/5AAD/+AAAAAAAAAAAAAD/2wAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/5AAD/4v/2//gAAAAAAAD/9v/sAAAAAAAAAAD/9gAA/98AAP/v/+8AAAAA/8r/3wAAAAAAAAAAAAAAAAAAAAD/+QAA/+gAAP/v//MAAAAAAAAAAP/z/+oAAAAA//kAAAAA//n/6f/vAAr/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAcAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAA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//kAAP/5/+cAAP/sAAAAAAAA/+wAAwAH/+wAAAAAAAAAAAAAAAAAAP/s/+wAAP/2AAD/6QAAAAD/+wAA//f/8AAAAAAAAP/sAAAAAP/x//YAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAcAAAAAAAD/9gAA//j/+QAAAAAAAAAA//n/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/9AAAAAAAA//b/9gAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7//s/+IAAAAAAAD/6v/pAAAAAP/4/+z/7P/i//EAAAAAAAD/4gAAAAAAAP/2AAAAAAAAAAAAAAAA/+IAAAAA//H/9gAAAAAAAP/vAAD/5f/pAAAAAAAA/+z/9v/p/+7/4v/xAAD/7P/0//H/9gAA/+cAAAAA/+z/9v/7//b/9v/9/+L/9v/0AAD/9v/5AAD/8f/xAAD/9gAA//MAAAAA/+z/4v/5AAAAAAAA/+wAAP/2AAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAA//sAAAAAAAAAAAAAAAD/6AAAAAD/9gAAAAD/8QAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/9wAA/+AAAAAA//cAAAAAAAAAAP/4AAD/8P/s//YAAP/sAAAAAP/i/+IAAAAAAAAAAAAAAAD/4v/uAAAAAP/s/84AAP/s/+z/7P/j/9gAAP/2AAAAAAAK/9EAAP/2/+z/y//L/9EAAAAAAAD/6v/2AAAAAAAAAAAAAAAA//0AAAAAAAAAAAAAAAAAAP/6AAAAAP/pAAAAAAAAAAD/9gAAAAD/9AAAAAD/0gAAAAAAAAAAAAD/8QAAAAAAAP/p/+0AAAAA/98AAAAA/+b/7AAAAAAAAP/z//gAAAAA/+wAAP/zAAAAAP/Y/+4AAAAAAAAAAAAAAAD/7P/3AAD/6P/u/+z/5wAA/+4AAAAA/+z/5P/2AAD/8gAAAAD/9gAAAAAAAP/s//EAAAAAAAAAAAAAAAAAAAAA//oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//P/9v/i/+wAAP/0/8v/2AAAAAD/2P/p/8T/2P/dAAAAAP/i/84AAAAAAAAAAAAAAAAAAAAAAAAAAP/pAAAAAP/i/+kAAP/7AAD/7gAA/9H/4gAAAAAAAP/R/+L/7//Y/+L/6QAA//P/9P/E/+4AAP/pAAAAAP/2//YAAP/7AAD/+f/v//P/8f/x//P/7P/s/+7/7AAA//3/8f/2AAAAAP/i/+z//f/4//n/9v/i//b/7P/z//3/+wAA//n/4v/x//kAAAAAAAAAAP/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAA//0AAAAAAAAAAAAAAAAAAAAA//YAAAAF//EAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP/dAAAAAAAA/+wAAAAAAAAAAAAAAAD/4gAAAAP/4gAAAAf/zv/k/8QAAP/YAAAAAAAD/8T/zv/EAAD/0v/O/+L/7P/s/9j/7v/Y/8QAAAAAAAAACv/YAAAAAAAA/87/zv/EAAAAAP/i/+wAAAAAAAD/zv/O/7cAAP/z/+UAAP/sAAAAAAAA/9r/7gAA/9H/zv/s/63/zv/S/9j/zv/L/9//7AAA/8QAAP/EAAD/2P/z/+n/zv/OAAD/2P/n//b/y//m/+z/zv/Y/87/4v/i/87/7P/OAAAAAP/Y/9j/0gAAAAD/2P/sAAD/3v/OAAD/4v/iAAD/9//T/+X/4v/J/84AAP/O/9j/zv/Y/9wAAP/x/9gAAAAA/84AAP/i/9j/4v/Y//b/4gAA/9z/vf/I/9YAAP/OAAD/xP/X/87/4v/4/8T/zgAAAAAAAAAAAAAAAAAKAAAAAAAAAAD/0QAAAAAAAP/Y//EAAAAAAAD/6f/RAAD/2AAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAD/5v/w/+L/4gAAAAAAAAAA//YAAP/fAAD/sAAAAAD/3//2AAD/zv/uAAAAAAAAAAD/4v/i//H/8//sAAAAAP/E/+z/zv/n/+//2P/b/+z/4v/z/94AAP/d/87/3//2//b/xP/r/87/7P+c/+X/9v/xAAD/7AAAAAAAAAAAAAAAAAAA/9j/2AAA/+7/8QAAAAD/8//a/+wAAAAAAAAAAP/x/+wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//MAAAAA/+IAAP/sAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAD/9gAAAAD/7AAAAAAAAAAAAAD/7P/VAAD/9gAA/+wAAAAA//b/7P/xAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/4//MAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAP/o/+IAAP/iAAAAAAAAAAAAAP/2//j/9AAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/zAAAAAAAA//j/+QAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//YAAAAAAAD/9v/2//b/7P/2AAAAAAAAAAAAAAAAAAAAAP/xAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2/+wAAP/9/+//8f/5AAAAAP/9AAD/9gAAAAAAAAAA/+QAAAAAAAD/4v/5AAAAAAAAAAAAAP/7AAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA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AAgA+wD7AAkA/AD8AAgA/QD9AE4A/wD/AAoBAAEAAAgBAQEZAAsBGgEaAAYBGwEdAAsBHgEeAA0BHwEfAA4BIAEgAAsBIQEhAD8BIgEnAEcBKQEpAEgBKgEyAA4BNAE1AA4BNgE8AEoBPQE9AD8BQAFAAAYBQQFBAAsBQgFCAAYBRAFEAAYBRQFFAEUBRgFGAEoBSwFLAAIBTAFMAIMBTQFOAIQBTwFSAIMBUwFTAIQBVAFVAIMBVgFWAGIBVwFvAIQBcAFwAIMBcQF2AIQBdwF3AI4BeAF6AGgBewF/AHkBgQGBAAYBgwGEAHkBhQGLAIQBjAGMAE0BjQGNAIQBjgGOAJwBjwG2AIQBtwG4AG8BuQG5AFoBugG6AIQBuwG7AKcBvAG8AIQBvQG+AJ4BvwG/AB0BwAHAADABwQHFAIQBxgHIAB8ByQHJAJ8BygHKAB8BywHPAHIB0AHRAIQB0gHSAGIB0wHYAIQB2QHZAKcB2gHaACIB2wHbAKcB3AHcAHYB3QHdAKcB3gHeACIB3wHfAHYB4AHhAIQB4gHiAFgB4wHpAHkB6gHqAI4B6wHsADAB7QHtAHkB7gHuAKAB7wHvAIMB8AH2AJkB9wH4AKAB+gH6AJkB+wH7AKAB/AH8AJkB/QH9AKAB/gH+AJkB/wH/AKACAAIAAI4CAQIBAKACAgICAJkCAwIEAH0CBQIGAJkCBwIHAKECCAIKAH0CCwINAHkCDgIOAIMCDwIPAHkCEAIQAFUCEQIRAIACEgISAHkCEwITAIECFAIVAIICFgIYAHkCGQIZAIACGgIbAHkCHAIcAIACHQIeAHkCHwIfAIICIAIgAIACIQIhAIICIgIiAIACIwImAIMCJwIoAI4CKQIqAIMCKwIrAC8CLAIzAIMCNAI0AJ4CNQI4AIMCOQJbAIQCXAJcAKcCXQJjAIQCZAJkAIMCZgJmAIMCZwJnAIQCaAJpAHkCagJtAIQCbgJvAIMCcAJwAGICcQJ1AIMCdgJ2ADACdwJ3AIMCeAJ4AE8CeQJ6AIMCewJ7AE8CfAJ8AIMCfQJ9AE8CfgJ/AIkCgAKAAC8CgQKGAIkChwKHAH0CiAKJAIkCigKKAHICiwKYAIsCmQKaAIMCmwKbAHUCnAKeAIsCoAK3AI4CuAK4AHkCuQK5AIQCvQK9AIMCwwLDAIQCxALEAI4CxQLFAJECxgLIAI4CyQLJAGICygLKAI4CywLLAGICzALMAFQCzQLSAJMC0wLTAFQC1ALUAIMC1QLVAFUC1gLgAGIC4QLhAFQC4gLrAJQC7ALtAHMC7gLuAGgC7wLvAIQC8ALwAJkC8QLxAIQC8gLyAI4C8wLzAIQC9AL0AIMC9QL1AIQC9gL2AIkC9wL3AJQC+QMOAHIDDwMPAIUDEAMQAHoDEQMRAFYDEgMTAHoDFAMUADYDFQMVABgDFgMWAHoDFwMXAJADGQMaAHoDGwMbAIUDHQMdAHoDHgMeAIUDHwMfADoDIAM3AEwDOAM4AIUDOQM+AEwDPwNBAJsDQgNEAHoDRQNFADYDRgNHAHoDSANPAIUDUANVAHoDVgNWADYDVwNYAHoDWQNZAG0DWgNvAHoDcQNxAHEDcgNyAKUDcwN0AHoDdQN2AIUDdwN4ADwDegN6AHoDfQN/AHoDgAOHAIUDiAOIACMDiQOJAIUDigOKADsDiwORAHoDmQOaAHoDnAOcAHoDngOeAHoDoAOhAHoDowOjAH4DpQOlAH4DpgOrAHoDrQOzAHoDtAO0AEwDtQO1AHoDtwO3AIUDuAO4AJADuQO5AIUDugO6AHoDuwO7AIUDvAO8AFADvQO9AJoDvgO+AHoDvwPBAKIDwgPCAJADwwPPAHoD0APRAIUD0gPSAAYD0wPwAIUD8QPxAKQD8gP4AIUD+QP7AHoD/AP8ADYD/QP9AHoD/gP/AIUEAAQIAHoECQQQAFAEEQQRAHoEEgQaADMEGwQbADYEHAQcADMEHQQfAHoEIAQgADMEIQQ8AJAEPQQ9AJIEPgQ+AJAEPwQ/AEwEQARFAKoERgRGAHoERwRHAFYESARSADoEUwRZAJoEWgRcAHoEXQRdABgEXgReAHoEYQRhAGgEYgRiAIQEcwRzAD8EeQR5AJgEfQR9AEgEfgR+AEsEhQSFAFwEhgSGAGcEiASIAAYEiwSLAAYEjASMAAgEjQSOAAwEjwSPAAYEkASQAEgEkQSRAAIElwSXAAgEmQSZAFwEmwSbAEUEnAScAAYEnQSdAEsEoASgAEIEoQShAAgEowSjAF0EpASkAAgEpQSlAAYEpgSmAA8EqASoAD8EqgSqAEkErASsAEsErQStAAcErgSuAAYErwSwAA0EsQSxAAYEtAS0AEgEtQS1AEsEuQS5AAgEvgS/AAYEwATAAAgEwQTBAEgEwgTCAAgEwwTEAAIExwTIAAMEygTKAEgEzATMAFwEzwTPAAIE0ATQAGcE0QTSAD8E0wTTAEAE1QTWAAYE1wTXAEgE2ATZAEsE3ATeAAYE4ATiAAwE4wTjAAIE5wToAEgE6QTqAGUE6wTsAAUE7QTtAFwE7wTvAAYE8ATwAAgE8QTxAGQE8gTzAFwE9QT1AF0E9gT2AAYE9wT3AEcE+QT5AFwE/gT+AJgE/wT/AFsFAAUAAFwFAQUCAD8FAwUDAAYFBAUEAD8FBwUHAD8FCAUIAFsFCQUKAD8FDQUNAEgFDgURAD8FEwUTAIQFFAUUAGsFFQUVAIQFFgUXAHUFGAUYAIMFGQUcAIQFHQUdAFUFHgUeAFoFHwUiAI4FIwUkAIMFJQUlAF8FJgUmAJ0FJwUnAIMFKAUoAIQFKQUpAIMFKwUrAIQFLAUsAIMFLQUuAGIFLwUvAIQFMAUwAFUFMQUxAGwFMgU1AI4FNgU2AIMFNwU3ADUFOAU4AIMFOQU5AF8FOgU6AIMFOwU7AIkFPAU8AIQFPQU9AFoFPgU+AKAFPwU/AJkFQAVAAH0FQQVBAHkFQgVCAIMFQwVDAHsFRAVEAHkFRgVGAHkFRwVHAIMFSAVIAFQFSQVJAIMFSgVKAFkFSwVLAIMFTQVNAI4FTgVOAIQFTwVQAGIFUQVRAIQFUgVSAHUFUwVTAIMFVAVUAFUFVQVVAFoFVgVXAIMFWAVYAHkFWQVZADUFWgVdAIMFXgVfAIQFYAVgAIMFYQVhAFUFYgViADUFYwVkAGwFZQVmAHkFZwVoABkFaQVpAHkFagVqAFUFawVrAIMFbAVsAF8FbQVuAIMFbwVvAGwFcAVwAJ0FcQVyAIQFcwVzAGgFdAV2AIQFdwV3AFUFeAV4AFoFeQV5AB8FegV7AI4FfAV+AIQFgAWCAGIFgwWDAGwFhAWEAHUFhQWGAIMFhwWIAFUFiQWKAIQFiwWMACUFjQWNAF8FjgWOAIMFjwWPAIQFkAWQADUFkQWRAG8FkgWTAF8FlAWUAIMFlQWVAHsFlgWWAIQFlwWXAJMFmAWYAIMFmQWZAF8FmgWdAIMFngWeAF8FnwWfAIMFoAWgAF8FoQWhAHkFogWiAJ4FowWjAIQFpAWkAFUFpQWmAHkFpwWoAFQFqQWpAHkFqgWqAHUFqwWrAFUFrAWtAHkFrgWvAIMFsAWwADUFsQWxAIQFsgWyAGwFswWzAFQFtAW0AFUFtQW1AHkFtgW2AFQFtwW4AIMFuQW5AFUFugW6AFQFuwW7AIMFvAW+AFQFvwW/AIMFwAXAAGsFwQXBAHUFwgXCAIQFwwXFAIMFxgXJAHoFygXKAFYFywXLAHoFzAXMAEwFzQXRAHoF0wXVAHoF1gXWAFYF1wXXADwF2AXdAHoF3gXeABwF3wXfAKIF4AXgAHoF4QXhAIUF4gXjAHoF5AXkAIUF5QXlADMF5gXnAI8F6AXoAIUF6QXpAFYF6gXqABgF6wXvAHoF8AXwADMF8QXxAHoF8gXyABwF8wXzAHoF9AX0AFAF9QX1AIUF9gX2ADwF9wX3AHoF+QX5AH4F+gX6ADMF+wX7AHoF/AX8AHwF/QX9ADMF/gX+AIUF/wX/AFcGAAYAAHoGAQYBAEwGAgYCAHoGAwYDAKwGBAYEAHoGBQYFADwGBgYGAC0GBwYHAIUGCAYJAJIGCgYKAIUGCwYMAHoGDQYNAFYGDgYOADwGDwYRAHoGEgYSADMGEwYUAHoGFgYWAHoGFwYYAIUGGQYZADMGGgYaAFYGGwYcABgGHQYfAHoGIgYiABwGIwYkABoGJQYlAHoGJgYmAFYGJwYnAHoGKAYoABwGKQYqAHoGKwYrABgGLAYsAKIGLQYuAEwGLwYvAJsGMAYwAHoGMQYyAIUGMwYzAFYGNAY1ADwGNgY3AHoGOAY6AIUGPAY+AI8GPwY/ABgGQAZCAHoGQwZEAFYGRQZGAKsGSQZJABwGSgZKAHoGSwZLAIUGTAZMADMGTgZPABwGUAZQAHoGUQZRAHwGUgZSAIUGUwZTAKoGVAZUAHoGVQZVABwGVgZYAHoGWQZaAEwGWwZbAIUGXAZdAEwGXwZkAEwGZgZmAIMGZwZnAEIGaAZoAD8GawZrAD8GbQZtAEoGbwZvAAYGcgZyAD8GcwZzAGcGdQZ1AEEGdgZ2AAYGeQZ5AEYGegZ6AAgGewZ7AA4GfAZ8AAYGfQZ9AEgGfgZ+AAcGfwZ/AF4GiAaIAA4GigaKAAEGjAaNAAYGjwaPAGYGkAaQAD8GkgaUAA4GlQaVAAYGlwaXAAYGmAaYAGcGmQaZAEQGmgaaAAYGmwabAEQGpgaoAD8G5wboAA4G/Ab8AIQG/Qb9AHkG/gb+AGIG/wb/AIQHAAcAAG8HAQcBAJcHAgcCAIMHAwcDAIwHBAcEAI4HBQcFAIMHBgcGAIEHBwcHAIMHCAcIAGIHCQcKAIQHCwcLACwHDAcMAIgHDQcOAIQHDwcPADQHEAcQAI4HEQcRAIQHEgcSAE0HEwcTAI4HFAcUAIQHFgcXAJkHGAcaAI4HGwcdAIQHHgceAG8HHwcgAIMHIQchADQHIgciAIMHIwcjAKcHJAckAIQHJQclAKcHJgcnAIQHKAcoAIgHKQcpACYHKgcqAFEHKwcrAIMHLAcsAGsHLQctAI0HLgcuAIQHLwcvAIcHMAcwAIMHMQcxAIgHMgcyAIQHMwczAH0HNAc0AIQHNQc1AHkHNgc2AJ0HNwc3AIgHOAdQAIQHUQdYAG8HWQdvAIMHcAdxAI4Hcgd4AJkHegd/AJkHgAeHAIQHiAeJAIgHigeZAI4HmgewAIQHsgeyAGsHswezAJcHtAe0AIQHtQe1AEwHtge3AHoHuAe4AEwHuQe5AHoHuge6AJoHuwe7AHoHvAe8AIUHvQe+AHoHvwe/AEwHwAfAAKIHwQfBAHoHwgfCAHEHwwfDAIUHxAfFAHoHxgfHAKUHyAfIADMHyQfJADoHygfKAIUHywfLAFYHzAfMAC0HzQfNAIYHzgfOAHoH0QfTADoH1AfUAIUH1QfVAIYH1gfWAEwH1wfZAHoH2gfaABIH2wfbAHoH3AfcAKQH3QfdAIUH3gfeAKQH3wfgAIUH4QfhAHoH4gfiAH8H4wfjAEwH5AfkAHoH5QflAAYH5gfmAIUH5wfpADoH6gfqAIUH6wfrAIcH7QftAIgH7gfuAIUH7wfvAH4H8AfwAIUH8QfxAHoH8gfyAKIH8wfzAHoH9AgMAEwIDQg7AHoIPAhDAIUIRAhFAHoIRghVADoIVghsAIYIbghuAIQIcQhxAJUIcghyACkIcwhzADgIdAh0AGEIdQh1ACAIdgh2AE4Idwh3AIoIeAh4ADEIeQh5AG4Iegh6ACcIewh7AJYIfAh8ACoIfQh9ADkIfgh+AFIIfwh/ACEIgAiAAHQIgQiBAIoIggiCADIIgwiDAG4IhAiEACgIhQiFAJYInAicAJUInQimAD4IpwiwAKYIsQjEAD0IxgjVAD0I1gjXACsI2AjZABsI2gjaACsI2wjbAB4I3QjdAC4I3wjfACQI4AjgABcI4QjhABMI4wjjAKMI5AjkAGAI5QjlABQI5gjmADII5wjnAFMI6AjoAK4I6gjqAKMI7QjuAD4I8AjwAKgI8gjyABUI9Aj0ABYI9Qj2AD0I+Aj4AKgI+gj6ABUI/Aj8ABYI/QkEACQJBQkFAFMJBgkKACQJDQkOACsJDwkSAC8JEwkTAHcJFAkUAHgJFQkVAHcJFgkWAHgJFwkYAC8JGQkZAHcJGgkaAHgJGwkbAHcJHAkcAHgJHQkeAKYJHwkgAD0JIQkhACQJIgkiABsJMAkwAIQJMQkxAAYJMwkzAEUJNAk0AIQJNQk1AAkJNwk3AHIJQAlAAK0JQglCAIQJQwlDAAYJRQlFAEUJRglGAIQJUQlRAK0JdAl0ACQJdgl2ACQJdwl3AD4JeAl4AD0JeQl5AD4Jegl6AD0Jewl8ACQJfQl9AHAJfgl+ACQJfwmCAHAJhwmIACQJiwmLAHAJjQmNAF4JjgmOAD8JkAmQAEYJkgmSAIMJlgmWAD4JlwmXAD0JmQmZAHAJmgmbACQJnAmcAHAJnQmdACQJngmeAHAJpgmnACQJqwmrAEYJ/wn/AGoKAAoAAGkKAwoDAKkKBAoEABMKBQoFADcKDAoMAAYKGgoaABEKIwojABsKJAokAC8KJQomACQKLwoxAKYKMgo0AD0KNgo2AFoKNwo3AC8KOAo4ACsKOwo7ACQKPAo8ABsKPgo+AC8KQgpCAC8KdQp1ACQLAAsBAA4LAgsDAGILBAsFADoLLwsvAKEAAgUuAAQAAAayCN4ABQCDAAD/8//p//v/6f/9//3/6f/2/+z/7P/x/9j/5f/i/+L/7P/Y/9j/4v/i//H/6f/s/+L//f/2/+z/+//5/+L/7P/7/+z/7AAH//b/9v/x//H/z//x/+z/9v/s/+L/5f/s/+z/9v/b/+v/7P/5/+f/7P/5/+z/9f/s//j//f/+//j/7//n/+n/7P/5//H/9gAD//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAA//b/zv/vAAAAAP/2/9j/4v/s//b/2//iAAD/9gAA//H/9P/O/+wAAP/x/9j/9v/p/+wAAAAA/9j/2AAAAAD/3f/o/+z/4v/s/+z//f/7AAD/9QAAAAD/6v/s//n/5wAAAAD/+wAA//f/+//s//b/9v/2/+L/7P/x/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAA/+IAAAAA/+z/2AAU//YAAAAAAAoAAAAAAAoAAAAKAAAAAP/i//YAAAAKAAAADQAAAAD/4gAUAAD/9gAAAAAAAAAoABQAAP/sAAAAAAAAAAAAAwAAAAAAAP+cAAD/9v/iAAf/nAAKAAoACgAAAAAAAP+cAAD/xAAAAAAAAAAKAAD/zv/2AAAAAP/OAAAAAP/x/9gAAP/sAAD/nAAUAAAAAP+c/+L/xAAU/93/4v/YABQACv/2/9j/sP/2/+wACgAK/90AFP/i//H/4v/2/9j/7P/2/9j/2P/x/+L/9gAK/5z/xP/2//b/4gAKAAoAFP/s//b/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAA//oAAP/sAAAAAAAAAAAAAAAA//gAAAAAAAD/4gAAAAAAAAAA//wAAP/4AAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/3AAAAAAAAAAD/8wAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2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ADEC9wL3AEQDHwMfAEADIAM3AF0DOQM+AF0DPwNBAF4DWQNZAGUDdwN4AEYDowOjAGsDpQOlAGsDtAO0AF0EEgQaAHcEHAQcAHcEIAQgAHcEPQQ9AHkEPwQ/AF0ESARSAEAEYQRhAEoEYgRiAHAEcwRzAFQEeQR5AFcEfgR+ABYEhQSFAAMEjASMAAwEjQSOAA4EkQSRAFYElwSXAAwEmQSZAAMEmwSbAAsEnQSdABYEoASgAAYEoQShAAwEowSjAAUEpASkAAwEpgSmABIEqASoAFQEqgSqABQErASsABYErQStAFoErwSwAA8EtQS1ABYEuQS5AAwEwATAAAwEwgTCAAwEwwTEAFYExwTIAAIEzATMAAMEzwTPAFYE0QTSAFQE0wTTAFUE2ATZABYE4ATiAA4E4wTjAFYE6QTqAFkE6wTsAAgE7QTtAAME8ATwAAwE8gTzAAME9QT1AAUE9wT3ABAE+QT5AAME/gT+AFcFAAUAAAMFAQUCAFQFBAUEAFQFBwUHAFQFCQUKAFQFDgURAFQFEwUTAHAFFQUVAHAFGQUcAHAFHQUdAD8FHgUeAEUFHwUiAIEFJQUlABwFKAUoAHAFKwUrAHAFLQUuADwFLwUvAHAFMAUwAD8FMgU1AIEFNwU3ADcFOQU5ABwFOwU7ADEFPAU8AHAFPQU9AEUFPwU/ACMFQwVDAE0FSAVIAD0FSgVKAEMFTQVNAIEFTgVOAHAFTwVQADwFUQVRAHAFVAVUAD8FVQVVAEUFWQVZADcFXgVfAHAFYQVhAD8FYgViADcFagVqAD8FbAVsABwFcQVyAHAFcwVzAEoFdAV2AHAFdwV3AD8FeAV4AEUFeQV5AB4FegV7AIEFfAV+AHAFgAWCADwFhwWIAD8FiQWKAHAFiwWMACQFjQWNABwFjwWPAHAFkAWQADcFkQWRAGgFkgWTABwFlQWVAE0FlgWWAHAFlwWXAD4FmQWZABwFngWeABwFoAWgABwFogWiAEkFowWjAHAFpAWkAD8FpwWoAD0FqwWrAD8FsAWwADcFsQWxAHAFswWzAD0FtAW0AD8FtgW2AD0FuQW5AD8FugW6AD0FvAW+AD0FwgXCAHAFzAXMAF0F1wXXAEYF3gXeAGcF5QXlAHcF5gXnAHgF8AXwAHcF8gXyAGcF9gX2AEYF+QX5AGsF+gX6AHcF/QX9AHcGAQYBAF0GAwYDAHoGBQYFAEYGBgYGAHEGCAYJAHkGDgYOAEYGEgYSAHcGGQYZAHcGIgYiAGcGKAYoAGcGLQYuAF0GLwYvAF4GNAY1AEYGPAY+AHgGRQZGAG0GSQZJAGcGTAZMAHcGTgZPAGcGVQZVAGcGWQZaAF0GXAZdAF0GXwZkAF0GZwZnAAYGaAZoAFQGawZrAFQGbQZtABUGcgZyAFQGeQZ5AFsGegZ6AAwGewZ7ABEGfgZ+AFoGiAaIABEGigaKAAEGjwaPAAkGkAaQAFQGkgaUABEGmQaZAAoGmwabAAoGpgaoAFQG5wboABEG/Ab8AHAG/gb+ADwG/wb/AHAHAAcAAGgHBAcEAIEHBgcGACYHCAcIADwHCQcKAHAHCwcLACsHDAcMAHQHDQcOAHAHDwcPADYHEAcQAIEHEQcRAHAHEgcSABkHEwcTAIEHFAcUAHAHFgcXACMHGAcaAIEHGwcdAHAHHgceAGgHIQchADYHIwcjACkHJAckAHAHJQclACkHJgcnAHAHKAcoAHQHKQcpACUHKgcqADIHLgcuAHAHMQcxAHQHMgcyAHAHNAc0AHAHNwc3AHQHOAdQAHAHUQdYAGgHcAdxAIEHcgd4ACMHegd/ACMHgAeHAHAHiAeJAHQHigeZAIEHmgewAHAHtAe0AHAHtQe1AF0HuAe4AF0Hvwe/AF0HyAfIAHcHyQfJAEAHzAfMAHEH0QfTAEAH1gfWAF0H4wfjAF0H5wfpAEAH7QftAHQH7wfvAGsH9AgMAF0IRghVAEAIbghuAHAIcQhxAHsIcghyACgIcwhzADoIdAh0ADgIdQh1AGkIdgh2ACAIdwh3AHUIeAh4ADMIeQh5AGYIegh6ACcIewh7AHwIfAh8AE4IfQh9AFIIfgh+AFEIfwh/AEsIgQiBAHUIggiCAFAIgwiDAGYIhQiFAHwInAicAHsInQimAFMIpwiwAEcIsQjEAEgIxgjVAEgI1gjXAE8I2AjZAH8I2gjaAE8I3QjdACwI3gjeAHII3wjfAIAI4AjgAH4I4QjhABcI4wjjAG8I5AjkADQI5QjlABgI5gjmAFAI5wjnADsI6QjpAHMI6gjqAG8I7QjuAFMI8gjyAGEI9Aj0AGII9Qj2AEgI+gj6AGEI/Aj8AGII/QkEAIAJBQkFADsJBgkKAIAJDQkOAE8JDwkSAC0JEwkTAGoJFAkUAEwJFQkVAGoJFgkWAEwJFwkYAC0JGQkZAGoJGgkaAEwJGwkbAGoJHAkcAEwJHQkeAEcJHwkgAEgJIQkhAIAJIgkiAH8JMAkwAHAJMwkzAAsJNAk0AHAJNQk1AA0JPAk8ADAJPgk+AHYJQAlAAEEJQglCAHAJRQlFAAsJRglGAHAJRwlHABsJTQlNADAJTwlPAHYJUQlRAEEJdAl0AIAJdgl2AIAJdwl3AFMJeAl4AEgJeQl5AFMJegl6AEgJewl8AIAJfgl+AIAJhwmIAIAJjgmOAFQJkAmQAFsJlAmVACoJlgmWAFMJlwmXAEgJmgmbAIAJnQmdAIAJpgmnAIAJqwmrAFsJrgmvACoJ/wn/AGAKAAoAAH0KBAoEABcKBQoFADkKBgoGABoKCgoKAGQKFwoXABoKGAoYAGQKGgoaAF8KIwojAH8KJAokAC0KJQomAIAKLwoxAEcKMgo0AEgKNgo2AEUKNwo3AC0KOAo4AE8KOwo7AIAKPAo8AH8KPgo+AC0KQgpCAC0KdQp1AIALAAsBABELAgsDADwLBAsFAEALLwsvAGwAAifgAAQAACqcMcAAMQBoAAD/7P/s/7D/nP/E/+X/sP/4/+L/uf/E/+n/6//s/+z/x/+w/9j/7P+w//b/4v/Y/9j/7v+p/7AACv+w/7D/uv/f/9H/7P/m//b/sP/2//H/1v/x/9j/7P+w/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+IAAAAAAAAAAAAA//f/6QAD//cAAP/2/+wAAAAAAAD/9gAAAAAAAAAA//wAAAAEAAD/4v/2//X/8QAAAAAAAwAAAAD/+f/9//D/9v/mAAD/+wAA//UAAwAH//YADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/pAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAP/2AAAAAAAA//b/7P/2//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/4gAA//YAAAAAAAD/+f/sAAAAAAAAAAD/4v/sAAAAAAAAAAAAAP/2AAAAAP/f/+IAAP/i/+z/5f/z/+wAAAAA/+z/7AAAAAD/+P/+AAAAAP/2AAAAAAAAAAAAAAAA//EAAAAA//H/9v/4//b//f/s/+D/9v/i//v/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/8QAA/+L/5wAAAAD/9v/sAAD/+AAAAAAAAP/i/9sAAP/iAAD/1AAA//YAAP/2//H/8//4AAr/3QAAAAD/5gAHAAAAAAAA//H/9wAAAAAAAAAA//YADv/s//YAAAAA//EAAwAAAAAAAAAA/+wAAAAAAAAAAP/+AAAAAAAAAAD/7P/5//3/7wADAAX/9P/4//YACv/s/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/+wAAAAAAAAAAAAA//EAAAAAAAAAAP/l/+wAAAAA/+IAAP/4AAAAAP/2/+//7wAD/9v/9gAAAAAAAAAA//8AAP/vAAAAAP/4//0AAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAFAAAAAAAAAAAAAAAAAAwADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAf/2P/2AAAAAP/xAAAAAAAAAAAAAP/2//MAAAAA/+wAAP/sAAD/7AAA//H/7AAA/+z/6f/fAAoAAP/sAAD/9gAAAAD/9v/xAAAAAAAAAAD/8QADAAD/6QAAAAD/7AAD/9oAAP/z//b/8//n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AAAAAAAAAAAAAAAAAAAAAAAA//oAAP/8//gAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAD/2P/iAAD/8QAAAAAAAP/v/+f/9gAAAAAAAP/b/9gAAAAA//YAAAAA/+f/7QAA/87/4gAA/+L/3f+0/+L/4gAA//b/7P/iAAAAAP/0//7/3QAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/7AAAAAAAAP/sAAAAAP/sAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAD/4gAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAD/7P+w/8T/2P/fAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAA/+X/8wAA/+z/5f/bAAD/7wAAAAD/0f/lAAD/2//VAAD/7P/Y/+z/2AAA/+//7//R/87/0f/R/+UAAAAA/8oAAP/Y/+L/7//YAAD/5f/l/+X/7//R/+cAAP/i/94AAAAA/9v/xP/RAAD/5f/bAAD/4v/YAAAAAAAA/+z/2P/l/+X/4gAAAAAAAP/l/98AAAAAAAD/7AAAAAD/5f/v/9gAAP/sAAAAAP/l/+wAAAAiAAD/5QAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAEQAAAAAAAAAAAAAANgAAAAAAAAAAAAAAJQAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAKABQAAAAYAAAAAAAAAAAALwAAAAAAAAAAAAAAAAAKAAAAAAAsACwAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAANAAAAAAAAAAAAHgAAACgAAAAAAAAAAAAAAAAACgAAAAAAAAANAAAAAAAAAAAAAAAA/+wAAP/5AAAAAAAAAAD/7AAAAAAAAAAA/+8AAAAAAAD/+QAAAAAAAAAAAAD/5gAAAAD/7P/6//r/7gAAAAAAAAAA/+wAAAAA//sAAAAAAAD/9wAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAA//sAAP/3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAP/vAAAAAAAAAAAAAAAAAAAAAP//AAAABAAA/9gAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/2//YAAAAAAAD//f/sAAAAAAADAAD/8//s//YAAP/2AAAAAAAAAAD/+//p/+wAA//x//H/6//z//MAAAAAAAf/8QAAAAD/9gAA//EAAP/xAAD/+wAFAAUAAAAUAAUAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/xAAoAAwAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAD/7wAAAAAAAAAA//EAAAAAAAAAAAAA//YAAP/Y/8T/7P/xAAAAAAAA/+wAAP/2AAAAAP/r/+L/2P/s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AAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAA/9j/7AAAAAAAAAAAAAD/7AAAAAAAAP/s/+8AAP/sAAD/2P/2/+r/+wAA/+3/8P/uAAr/4v/xAAD/7gAA//YAAAAA/+wAAP/x//wAAAAA//YAAP/2//QAAAAK//YAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAADAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAP/sAAAAAP/sAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAD/7AAAAAAAAAAA/+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/7AAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD//f/5AAD/8f/2AAAAAAAAAAD/7P/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAACf/sAAAAAAAAAAAAAAAaAAAAAAAAAAD/9v/y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ANECbgJ/ANQCgQK3AOYCuQK5AR0CwwLJAR4CywLTASUC1QLhAS4C5QLlATsC7ALtATwC8ALwAT4C8gL0AT8C9gL2AUIC+AL6AUMC/AL/AUYDAQMHAUoDCQMKAVEDDAMOAVMEYQRhAVYEsQSxAVcFEwUTAVgFFQUXAVkFGgUhAVwFIwUlAWQFJwUnAWcFKQUpAWgFKwUuAWkFMAUxAW0FMwUzAW8FNQU8AXAFPgU/AXgFQQVBAXoFQwVEAXsFRgVJAX0FTQVNAYEFTwVTAYIFVQVVAYcFVwVZAYgFXQVdAYsFXwVfAYwFYQVhAY0FZAVlAY4FaQVrAZAFbQVtAZMFbwVvAZQFcQV0AZUFdwV7AZkFgAWGAZ4FiAWLAaUFjQWOAakFkAWUAasFlgWXAbAFmQWbAbIFnQWeAbUFoQWhAbcFowWoAbgFqgWqAb4FrQWtAb8FsQWyAcAFtAW2AcIFuAW4AcUFugW+AcYFwQXFAcsGZgZmAdAG/Qb+AdEHAAcAAdMHAgcCAdQHBAcEAdUHBgcIAdYHEgcSAdkHFQcaAdoHHgcfAeAHIQciAeIHJAckAeQHKwcrAeUHMAcwAeYHMgcyAecHNAc0AegHUQd/AekHigeZAhgH5QflAigH7AfsAikIbghuAioJMAkwAisJNAk0AiwJNwk3Ai0JQglCAi4JRglGAi8JkgmSAjALAgsDAjEAAgEwAUwBTAAqAU4BTgANAU8BUAAnAVIBUwAnAVQBVAABAVUBVQACAVYBVgApAVcBbwAZAXEBdgAZAXgBegALAX4BfgADAYUBiQAEAYoBigAFAYsBiwAEAYwBjAAGAY0BjQANAY4BjgAHAY8BjwAEAZABkAAIAZMBkwAJAZQBlQAIAZYBlgAKAZcBmAAIAZoBmgAQAZsBmwANAZwBnAAIAZ0BnQAOAZ4BngAIAaIBogAvAaMBtgALAbcBtwAMAbkBugAqAbsBuwAjAb0BvgANAb8BvwAOAcABwAAPAcEBwgALAcUBxQAjAcYByAAQAckByQARAcoBygAQAcsBzgASAc8BzwAeAdAB0QAgAdIB0gApAdMB1wAgAdgB2AANAdoB2gAVAdwB3AAWAd4B3gAVAd8B3wAWAeAB4QAgAeIB4gAwAeMB6QAeAeoB6wAgAewB7AAOAe4B7gAXAe8B7wAnAfAB9gAYAfcB+AAXAfoB+gAY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AfoAVwH7AfsAZQH8AfwAVwH9Af0AZQH+Af4AVwH/Af8AZQIAAgAAJgIBAgEAZQICAgIAVwIDAgQAUwIFAgYAVwIHAgcAZwIIAgoAUwILAg0AYQIOAg4AWQIPAg8AYQIQAhAAPwIRAhEAFQISAhIAYQITAhMAOAIUAhUAFgIWAhgAYQIZAhkAFQIaAhsAYQIcAhwAFQIdAh4AYQIfAh8AFgIgAiAAFQIhAiEAFgIiAiIAFQIjAiYAWQInAigAJgIpAioAWQIrAisAHgIsAjMAWQI0AjQAYAI1AjgAWQI5AlsAGQJcAlwAOQJdAmMAGQJkAmQAWQJmAmYAWQJnAmcAGQJoAmkAYQJqAm0AGQJuAm8AWQJwAnAAKAJxAnUAWQJ2AnYAHwJ3AncAWQJ4AngAMwJ5AnoAWQJ7AnsAMwJ8AnwAWQJ9An0AMwJ+An8AVAKAAoAAHgKBAoYAVAKHAocAUwKIAokAVAKKAooADAKLApgAIwKZApoAWQKbApsARwKcAp4AIwKgArcAJgK4ArgAYQK5ArkAGQK9Ar0AWQLDAsMAGQLEAsQAJgLFAsUAJwLGAsgAJgLJAskAKALKAsoAJgLLAssAKALMAswANQLNAtIAKQLTAtMANQLUAtQAWQLVAtUAPwLWAuAAKALhAuEANQLiAusATQLsAu0ADQLuAu4ALgLvAu8AGQLwAvAAVwLxAvEAGQLyAvIAJgLzAvMAGQL0AvQAWQL1AvUAGQL2AvYAVAL3AvcATQL5Aw4ADARhBGEALgRiBGIAGQUTBRMAGQUUBRQAQgUVBRUAGQUWBRcARwUYBRgAWQUZBRwAGQUdBR0APwUeBR4AQAUfBSIAJgUjBSQAWQUlBSUAWwUmBSYAUAUnBScAWQUoBSgAGQUpBSkAWQUrBSsAGQUsBSwAWQUtBS4AKAUvBS8AGQUwBTAAPwUxBTEAQwUyBTUAJgU2BTYAWQU3BTcAXgU4BTgAWQU5BTkAWwU6BToAWQU7BTsAVAU8BTwAGQU9BT0AQAU+BT4AZQU/BT8AVwVABUAAUwVBBUEAYQVCBUIAWQVDBUMAUgVEBUQAYQVGBUYAYQVHBUcAWQVIBUgANQVJBUkAWQVKBUoAVgVLBUsAWQVNBU0AJgVOBU4AGQVPBVAAKAVRBVEAGQVSBVIARwVTBVMAWQVUBVQAPwVVBVUAQAVWBVcAWQVYBVgAYQVZBVkAXgVaBV0AWQVeBV8AGQVgBWAAWQVhBWEAPwViBWIAXgVjBWQAQwVlBWYAYQVnBWgARAVpBWkAYQVqBWoAPwVrBWsAWQVsBWwAWwVtBW4AWQVvBW8AQwVwBXAAUAVxBXIAGQVzBXMALgV0BXYAGQV3BXcAPwV4BXgAQAV5BXkACwV6BXsAJgV8BX4AGQWABYIAKAWDBYMAQwWEBYQARwWFBYYAWQWHBYgAPwWJBYoAGQWLBYwAYwWNBY0AWwWOBY4AWQWPBY8AGQWQBZAAXgWRBZEAMQWSBZMAWwWUBZQAWQWVBZUAUgWWBZYAGQWXBZcAKQWYBZgAWQWZBZkAWwWaBZ0AWQWeBZ4AWwWfBZ8AWQWgBaAAWwWhBaEAYQWiBaIAYAWjBaMAGQWkBaQAPwWlBaYAYQWnBagANQWpBakAYQWqBaoARwWrBasAPwWsBa0AYQWuBa8AWQWwBbAAXgWxBbEAGQWyBbIAQwWzBbMANQW0BbQAPwW1BbUAYQW2BbYANQW3BbgAWQW5BbkAPwW6BboANQW7BbsAWQW8Bb4ANQW/Bb8AWQXABcAAQgXBBcEARwXCBcIAGQXDBcUAWQZmBmYAWQZ7BnsAZgaIBogAZgaSBpQAZgbnBugAZgb8BvwAGQb9Bv0AYQb+Bv4AKAb/Bv8AGQcABwAAMQcBBwEATAcCBwIAWQcDBwMASAcEBwQAJgcFBwUAWQcGBwYAOAcHBwcAWQcIBwgAKAcJBwoAGQcLBwsAOgcMBwwAXQcNBw4AGQcPBw8APAcQBxAAJgcRBxEAGQcSBxIABgcTBxMAJgcUBxQAGQcWBxcAVwcYBxoAJgcbBx0AGQceBx4AMQcfByAAWQchByEAPAciByIAWQcjByMAOQckByQAGQclByUAOQcmBycAGQcoBygAXQcpBykANwcqByoAOwcrBysAWQcsBywAQgctBy0ASQcuBy4AGQcvBy8AXAcwBzAAWQcxBzEAXQcyBzIAGQczBzMAUwc0BzQAGQc1BzUAYQc2BzYAUAc3BzcAXQc4B1AAGQdRB1gAMQdZB28AWQdwB3EAJgdyB3gAVwd6B38AVweAB4cAGQeIB4kAXQeKB5kAJgeaB7AAGQeyB7IAQgezB7MATAe0B7QAGQfrB+sAXAftB+0AXQhuCG4AGQhxCHEAKwhyCHIAGghzCHMAPQh0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AAD/8//sAAD/7AAA//kAAAAAAAAAAP/sAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAA/+z/7AAAAAD/7AAA/+f/5//sAAAAAAAA/+8AAP/s//sAAAAAAAAAAAAAAAAAAP/9AAAAAP/xAAD/9v/sAAD/9gAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAP/EAAAAAAAA//YAAP/sAAAAAAAA//MAAP/s//YAAAAA/9j/8//b/+z/+f/9AAAAAP/pAAAAAAAA/+IAAP/EAAAAAAAA/+wAAAAAAAD/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAD/xAAAAAAAAP/sAAAAAAAAAAAAAAAA/8T/sAAAAAD/4gAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7D/nAAAAAAAAP/EAAAAAAAAAAD/x/+wAAAAAP/a/73/qQAA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CBQABQg3CDgACQg8CEMADghECEUAEAhGCFUAHQsECwUAHQACARIA6QDpABYA/QD9AEICKwIrABYCgAKAABYDDwMPABADEQMRADMDFAMUABgDFQMVAAcDFwMXABsDGAMYACkDGwMbABADHgMeABADHwMfAB0DIAM3ACQDOAM4ABADOQM+ACQDPwNBACUDRQNFABgDSANPABADVgNWABgDWQNZADkDcANwADoDcQNxACcDcgNyAE0DdQN2ABADdwN4ADUDeQN5ADoDgAOHABADiAOIAAwDiQOJABADigOKAB8DowOjACgDpQOlACgDtAO0ACQDtwO3ABADuAO4ABsDuQO5ABADuwO7ABADvAO8ACwDvQO9ACADvwPBAD4DwgPCABsD0APRABAD0wPwABAD8QPxACsD8gP4ABAD/AP8ABgD/gP/ABAECQQQACwEEgQaABcEGwQbABgEHAQcABcEIAQgABcEIQQ8ABsEPQQ9ABwEPgQ+ABsEPwQ/ACQEQARFADIERwRHADMESARSAB0EUwRZACAEXQRdAAcFygXKADMFzAXMACQF0gXSAAoF1gXWADMF1wXXADUF3gXeADcF3wXfAD4F4QXhABAF5AXkABAF5QXlABcF5gXnABoF6AXoABAF6QXpADMF6gXqAAcF8AXwABcF8gXyADcF9AX0ACwF9QX1ABAF9gX2ADUF+QX5ACgF+gX6ABcF/AX8ADgF/QX9ABcF/gX+ABAF/wX/AB4GAQYBACQGAwYDADQGBQYFADUGBgYGABQGBwYHABAGCAYJABwGCgYKABAGDQYNADMGDgYOADUGEgYSABcGFwYYABAGGQYZABcGGgYaADMGGwYcAAcGIAYgAAoGIQYhADYGIgYiADcGIwYkAAgGJgYmADMGKAYoADcGKwYrAAcGLAYsAD4GLQYuACQGLwYvACUGMQYyABAGMwYzADMGNAY1ADUGOAY6ABAGPAY+ABoGPwY/AAcGQwZEADMGRQZGAD0GRwZIAA4GSQZJADcGSwZLABAGTAZMABcGTQZNADoGTgZPADcGUQZRADgGUgZSABAGUwZTADIGVQZVADcGWQZaACQGWwZbABAGXAZdACQGXgZeADYGXwZkACQHtQe1ACQHuAe4ACQHuge6ACAHvAe8ABAHvwe/ACQHwAfAAD4HwgfCACcHwwfDABAHxgfHAE0HyAfIABcHyQfJAB0HygfKABAHywfLADMHzAfMABQHzQfNACoH0QfTAB0H1AfUABAH1QfVACoH1gfWACQH2gfaAAEH3AfcACsH3QfdABAH3gfeACsH3wfgABAH4gfiAA8H4wfjACQH5gfmABAH5wfpAB0H6gfqABAH7gfuABAH7wfvACgH8AfwABAH8gfyAD4H9AgMACQIPAhDABAIRghVAB0IVghsACoIcQhxAEcIcghyABEIcwhzAEYIdAh0AEUIdQh1AEsIdgh2AEIIdwh3AEwIeAh4AC0IeQh5AEEIegh6AEQIewh7AEAIfAh8ABIIfQh9AFAIfgh+ADAIfwh/AEgIgQiBAEwIggiCAC4IgwiDAEEIhAiEAD8IhQiFAEAInAicAEcInQimACMIpwiwACEIsQjEACIIxgjVACII1gjXABMI2AjZAAkI2gjaABMI2wjbAAsI3QjdABUI3wjfAA0I4AjgAAYI4QjhAAII5AjkAC8I5QjlAAMI5gjmAC4I5wjnADEI7QjuACMI8AjwAEkI8gjyAAQI9Aj0AAUI9Qj2ACII+Aj4AEkI+gj6AAQI/Aj8AAUI/QkEAA0JBQkFADEJBgkKAA0JDQkOABMJDwkSABYJEwkTADwJFAkUAEMJFQkVADwJFgkWAEMJFwkYABYJGQkZADwJGgkaAEMJGwkbADwJHAkcAEMJHQkeACEJHwkgACIJIQkhAA0JIgkiAAkJdAl0AA0Jdgl2AA0Jdwl3ACMJeAl4ACIJeQl5ACMJegl6ACIJewl8AA0JfQl9ADsJfgl+AA0JfwmCADsJhwmIAA0JiwmLADsJlAmVAE4JlgmWACMJlwmXACIJmQmZADsJmgmbAA0JnAmcADsJnQmdAA0JngmeADsJpgmnAA0JrgmvAE4J/wn/AE8KAAoAACYKBAoEAAIKBQoFABkKGgoaAEoKIwojAAkKJAokABYKJQomAA0KLwoxACEKMgo0ACIKNwo3ABYKOAo4ABMKOwo7AA0KPAo8AAkKPgo+ABYKQgpCABYKdQp1AA0LBAsFAB0AAgeQAAQAAAfYCJAADwBAAAD/2P/R//v/sP+9/9v/8/+9/8T/+P/4//H/8//z/97/2P/s/+z/7P/4/87/2P/Y/+z/sP/H/9j/4v/s/+z/7P/s//f/xP/i/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/8T/+P/EAAD/9gAA/9j/2P/O/9j/4gAAABYAAAAAAAoAAAAAAAD/4gAAAAAAAAAKAAAAAAAKAAAAAAAAAAD/7AAAAAAAAP/Y/87/9v/i/7D/7P/i/9j/4v/O//b/xAAM/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/84AAP/x//b/0v/i/+z/7AAAAAD/9gAA/+wAAAAAAAAAAP/iAAAAAAAA/+z/7AAAAAAAAAAAAAAAAP/2/+z/7AAAAAD/7P/2AAD/7P/s/+IAAAAAAAAAAP/iAAD/9v/s//b/9v/2/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/7AAAAAAAAAAAAAAAA/+b/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/xAAD/9v/2AAAAAAAA//P/yAAA/+L/7AAAAAAAAAAAAAAAAP/sAAD/8QAAAAD//f/o//H/8P/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/pAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA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AAwFdAV2AC8FdwV3ADUFeAV4ADcFeQV5ABAFfAV+AC8FgAWCAB4FhAWEABQFhwWIADUFiQWKAC8FjwWPAC8FlgWWAC8FlwWXACAFowWjAC8FpAWkADUFpwWoADIFqgWqABQFqwWrADUFsQWxAC8FswWzADIFtAW0ADUFtgW2ADIFuQW5ADUFugW6ADIFvAW+ADIFwQXBABQFwgXCAC8FygXKACEF1gXWACEF1wXXADwF4QXhABgF5AXkABgF5QXlABsF6AXoABgF6QXpACEF6gXqAA0F8AXwABsF9QX1ABgF9gX2ADwF+QX5ADgF+gX6ABsF/QX9ABsF/gX+ABgGBQYFADwGBwYHABgGCAYJAB8GCgYKABgGDQYNACEGDgYOADwGEgYSABsGFwYYABgGGQYZABsGGgYaACEGGwYcAA0GJgYmACEGKwYrAA0GLwYvACwGMQYyABgGMwYzACEGNAY1ADwGOAY6ABgGPwY/AA0GQwZEACEGSwZLABgGTAZMABsGUgZSABgGWwZbABgGZwZnAAMGaAZoACUGawZrACUGbQZtAAoGbwZvAD8GcgZyACUGdQZ1ACcGdgZ2AD8GeQZ5ACoGegZ6AAQGewZ7AAgGfAZ8AD8GfQZ9ACsGiAaIAAgGjAaNAD8GkAaQACUGkgaUAAgGlQaVAD8GlwaXAD8GmQaZACkGmgaaAD8GmwabACkGpgaoACUG5wboAAgG/Ab8AC8G/gb+AB4G/wb/AC8HBgcGAC4HCAcIAB4HCQcKAC8HDQcOAC8HEQcRAC8HEgcSAA4HFAcUAC8HGwcdAC8HIwcjADMHJAckAC8HJQclADMHJgcnAC8HLgcuAC8HMgcyAC8HNAc0AC8HOAdQAC8HgAeHAC8HmgewAC8HtAe0AC8Huge6ADsHvAe8ABgHwwfDABgHxgfHADoHyAfIABsHyQfJACIHygfKABgHywfLACEH0QfTACIH1AfUABgH3AfcADkH3QfdABgH3gfeADkH3wfgABgH5QflAD8H5gfmABgH5wfpACIH6gfqABgH7gfuABgH7wfvADgH8AfwABgIPAhDABgIRghVACIIbghuAC8IbwhwAD0Idgh2ABMJDwkSABkJFwkYABkJMAkwAC8JMQkxAD8JMwkzAD4JNAk0AC8JNQk1AAUJNwk3ABEJQglCAC8JQwlDAD8JRQlFAD4JRglGAC8JjgmOACUJkAmQACoJqwmrACoKDAoMAD8KJAokABkKJwouAD0KNQo1AD0KNgo2ADcKNwo3ABkKOQo6AD0KPQo9AD0KPgo+ABkKPwpBAD0KQgpCABkKQwpGAD0LAAsBAAgLAgsDAB4LBAsFACIAAhxyAAQAAB0GHkIAFQCtAAD/4v/OAA0AB//sAAP/4gAHAAMABwADAAMAA//s/+z/7AAHAAMAB//i/+L/4gAHAB4ABwAHAAf/7AAb/8QAB//2AAf/nAAJAAcABwAKAAP/7P+wAAcABwAHAA0ADQAHABQACQAO/98ABwAHAAUABwAKAAf/4v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/R/8QAAAAAAAD/2P/O/9j/4v/gAAAAAP/sAAD/0f/OAAD/4gAAAAAAAP/Y/+3/7P/OAAAAAP/i/+IAAAAAAAAAAAAA/9v/nP/RAAAAAAAA/+z/4v/O/+L/4gAAAAAAAAAAAAAAAAAAAAD/2gAAAAAAAP/2/9gAI//Y/+z/xP/i/+z/zv/E/9j/4v/EABT/4v/i/+z/7P/i/8T/7P/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABwAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAwAsAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAHAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAKQAHACAACQADAAcABwAHAAcALAAKAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACgAAAAAAAAAAAAAAAAADAAAABwAKAAMABwAAAAkAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAcALAAAAAAAAAAAAAAAAAAAAAAACgAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAHAAcAAAAAAAUABwAAAAAAOQAAAAAABwAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAACUABwAeAAkABwAHAAoABwAHACwACgAHAAcAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAD/zgAA/+z/9gAA/+z/9v/sAAMAAP/2AAD/7AAAAAD/+QAAAAD/7AAAAAAAAAAAAAD/2AAAAAAAAAAAAAD/7AAA/9j/7AAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/6//l/+z/4v/Y/+IAAP/O/+UAAP/E/9v/zv/YAAcAB//lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+8AAAAA/+wAAAAAAAD/0f/2AAD/7P/n/+z/7P/E/+z/9v/s//v/7P/i/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAUAAAAAAAAAAAAAAAA/9gAAP/i//YAAAAAAAAABwANAAAAAwAAAAMAAwAAAAAAAwADAAAACgAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAHAAMAAwADAAoACgAAAAAAAwADAAMAAwAAAAMAAP/sAAAAAAADAAD/zgAUAAAAAP/L/9gAAwADAAf/5QAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAANAAAAAAAAAA0AAAAAAAoAAAAAABQAAAAAAAMAAAAA/+wAAAAAAAMAAAADAAMAAAAKAAr/zgADAAP/+wADAAr/1gADAAP/5f/2AAoACv/n//QAB//2AAoAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4AAAAAD/7AAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/lAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/7AAAAAAAAP/xAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//n/7AAAAAAAAAAA/+z/7AAA/+7/7P/s/+7/7AAA/+wAAP/OAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+f/sAAAAAAAAAAD/+P/s//D/7gAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4P/2AAD/7AAAAAD/2P/Y/+L/7AAA/+z/8QAA//sAAP/sAAD/9v/2//b/2P/2AAD/7AAAAAAAAAAAAAD/7P/Y//YAAAAA/+z/5QAA/9j/7AAA/+L/7P/sAAD/7P/2AAD/7P/7AAD/7P/s/9//7P/s/+wAAP/Y/9gAAP/Y/9j/2P/aAAAAAP/YAAAAAAAA//YAAAAAAAoAAP/9/+wAAAAAAAAAAP/xAAD/7AAA/+wAAAAA/+z/2P/sAAD/7P/s/+T/2P/Y/+z/7P/sAAD/7P/s/+wAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/i/+AAAAAA/+wAAAAA/87/2//Y/+YAAP/i//H/7AAKAAD/7AAA/+z/7P/i/+j/8QAA/9j/8gAAAAAAAAAA/9j/zv/wAAAAAAAA/+UAAP/E/+b/+//s/+z/7AAA/+z/9gAA/+kAAAAA/93/2P/i/9j/2P/iAAD/zv/YAAD/sP/L/87/4gADAAf/2AAAAAD/9v/sAAAAAAAAAAAAAP/sAAAAAP/iAAD/+P/f/9EAAP/cAAAAAP/9/8T/8wAA/+L/1//c/9H/sP/c//b/4v/i/+L/4v/OAAD/xAAA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/+IAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAP/sAAAAAAAA/8QAAAAA/9j/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/xAAAAAAAAP/EAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+D/2AAAAAD/zgAA/+IAAAAAAAAAAAAAAAD/4v/O/87/2//E/9j/xP/i/8T/2AAA/+L/7P/E/84AAP+cAAD/zv/Y/3T/2P/Y/9sAAP/E/9j/sP/Y/+L/4v/E/+L/4gAA/+wAAP/E/+wAAP/i/9j/7P/E/8T/xAAA/9j/xAAA/9gAAAAA/+z/zv/EAAD/7P/EAAD/4v/i/9j/8v/Y/9j/2P/lAAAAAAAHAAD/7P/EAAD/2AAAAAD/2//OAAD/zv/YAAAAAAAA/+IAAP/s/9j/4v/O/9j/zgAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAP/i/84AAAAAAAAAAAAAAAD/zgAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/O/+L/4v/iAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/4gAAAAD/7P/O/+L/2P/O/+wAAAAAAAAAAAAAAAD/nP9q/+IAAP/s/5z/zv/OAAD/zv/EAAD/7AAA/5z/agAK//YAAAAAAAD/1wAO//P/2AAAAAD/7P/O/+wAAAAA/+L/7P+c/5z/sAAAAAAAAP/s/87/sP/E/+L/4v/iAAAAAP/sAAAAAAAAAAAAAAAAAAAAAP/iAFcAAAAA/7AAAAAA/2r/nP/Y/8T/sAAb/8T/nP/O/+3/7P+c/+z/nABUACMAAAAXAAAAAAAAAAcAAAAAABEAAAAAAAAAAP/sAAD/2AAAAAAAAAAAAAAAAAAAAAD/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+IAAAAAAAD/7P/O/+IAAAAA/4gAAAAAAAAAWgAAAAAAAP/i/+wAAAAAAAD/7AAAAAAAAP/sAAMAZP/2AAEASAjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOcI6AjpCOoI7wjxCPMI9wj5CPsI/Qj+CP8JAAkBCQIJAwkECQUJBgkHCQgJCQkKCQ0JDgkTCRQJFQkWCRkJGgkbCRwJIQkiCXQJdgl7CXwJfgmHCZoJmwmdCaYKBAoHCggKIwolCiYKOAo7CjwKdQACADQI1gjXAA8I2AjZAAYI2gjaAA8I2wjbAAcI3AjcAAgI3QjdABAI3gjeABEI3wjfAAwI4AjgAAUI4gjiAAII4wjjAA0I5AjkABMI5QjlAAEI5wjnABQI6AjoAAkI6QjpABII6gjqAA0I7wjvAA4I8QjxAAMI8wjzAAQI9wj3AA4I+Qj5AAMI+wj7AAQI/QkEAAwJBQkFABQJBgkKAAwJDQkOAA8JEwkTAAoJFAkUAAsJFQkVAAoJFgkWAAsJGQkZAAoJGgkaAAsJGwkbAAoJHAkcAAsJIQkhAAwJIgkiAAYJdAl0AAwJdgl2AAwJewl8AAwJfgl+AAwJhwmHAAwJmgmbAAwJnQmdAAwJpgmmAAwKBwoIAAIKIwojAAYKJQomAAwKOAo4AA8KOwo7AAwKPAo8AAYKdQp1AAwAAgNVAAEAGAABABkAGQCOABoAHwABACAAIgACACcAJwAKACoALwCOADAAMABWADEAMgCOAD0APQAKAD8APwAFAFYAVgA8AFcAVwAGAFgAWABiAFsAXABkAF0AXQA8AGEAaACOAGkAaQA9AGoAagCOAGsAawBCAHEAcQAKAHIAcgAEAHYAfABUAIEAggBUAIQAhACVAIYAhgBUAIcAhwBVAIgAiABUAIkAiQA+AIoAigBVAJ4AngCVAK0AzwCOANAA0ABAANEA1gCOANoA2gAKANwA3QCOAOcA6ABhAOkA6QAmAOoA7wBhAPEA8QCOAPIA+gAJAPsA+wAKAPwA/AAJAP0A/QBmAP8A/wCPAQABAAAJAQEBGQCVARoBGgCOARsBHQCVAR4BHgAMAR8BHwBBASABIACVASEBIQABASIBJwANASkBKQBWASoBMgBBATQBNQBBATYBPABDAT0BPQABAT8BPwBUAUABQACOAUEBQQCVAUIBQgCOAUQBRACOAUUBRQBhAUYBRgBDAUsBSwAEAUwBTACSAU0BTgAgAU8BUgCSAVMBUwAgAVQBVQCSAVYBVgAxAVcBbwAgAXABcACSAXEBdgAgAXcBdwCTAXgBegAPAYEBgQCOAYUBiwAgAYwBjAATAY0BjQAgAY4BjgCQAY8BtgAgAbcBuAClAbkBuQBqAboBugAgAbsBuwB1AbwBvAAgAb0BvgBSAb8BvwAYAcABwAAnAcEBxQAgAcYByABZAckByQBlAcoBygBZAcsBzwAZAdAB0QAgAdIB0gAxAdMB2AAgAdkB2QB1AdoB2gBGAdsB2wB1AdwB3ABHAd0B3QB1Ad4B3gBGAd8B3wBHAeAB4QAgAeIB4gCAAeoB6gCTAesB7AAnAe8B7wCSAfAB9gAdAfoB+gAdAfwB/AAdAf4B/gAdAgACAACTAgICAgAdAgMCBABJAgUCBgAdAgcCBwCcAggCCgBJAg4CDgCSAhACEAA2AhECEQCsAhMCEwBnAhQCFQBNAhkCGQCsAhwCHACsAh8CHwBNAiACIACsAiECIQBNAiICIgCsAiMCJgCSAicCKACTAikCKgCSAisCKwAmAiwCMwCSAjQCNABSAjUCOACSAjkCWwAgAlwCXAB1Al0CYwAgAmQCZACSAmYCZgCSAmcCZwAgAmoCbQAgAm4CbwCSAnACcAAxAnECdQCSAnYCdgAnAncCdwCSAngCeAApAnkCegCSAnsCewApAnwCfACSAn0CfQApAn4CfwB4AoACgAAmAoEChgB4AocChwBJAogCiQB4AooCigAZAosCmAArApkCmgCSApsCmwCDApwCngArAqACtwCTArkCuQAgAr0CvQCSAsMCwwAgAsQCxACTAsUCxQChAsYCyACTAskCyQAxAsoCygCTAssCywAxAswCzAAzAs0C0gA0AtMC0wAzAtQC1ACSAtUC1QA2AtYC4AAxAuEC4QAzAuIC6wBoAuwC7QAaAu4C7gAPAu8C7wAgAvAC8AAdAvEC8QAgAvIC8gCTAvMC8wAgAvQC9ACSAvUC9QAgAvYC9gB4AvcC9wBoAvkDDgAZAw8DDwBOAxADEACmAxEDEQA3AxIDEwCmAxQDFABPAxUDFQCYAxYDFgCmAxcDFwCpAxgDGACrAxkDGgCmAxsDGwBOAx0DHQCmAx4DHgBOAx8DHwA4AyADNwAQAzgDOABOAzkDPgAQAz8DQQBXA0IDRACmA0UDRQBPA0YDRwCmA0gDTwBOA1ADVQCmA1YDVgBPA1cDWACmA1kDWQAUA1oDbwCmA3EDcQAXA3IDcgAqA3MDdACmA3UDdgBOA3cDeABrA3oDegCmA30DfwCmA4ADhwBOA4gDiAAbA4kDiQBOA4oDigA5A4sDkQCmA5IDmABbA5kDmgCmA5sDmwBbA5wDnACmA50DnQBbA54DngCmA58DnwBbA6ADoQCmA6IDogBbA6MDowBcA6QDpABbA6UDpQBcA6YDqwCmA6wDrABbA60DswCmA7QDtAAQA7UDtQCmA7YDtgBbA7cDtwBOA7gDuACpA7kDuQBOA7oDugCmA7sDuwBOA7wDvAB5A70DvQBpA74DvgCmA78DwQCnA8IDwgCpA8MDzwCmA9AD0QBOA9ID0gCOA9MD8ABOA/ED8QAhA/ID+ABOA/kD+wCmA/wD/ABPA/0D/QCmA/4D/wBOBAAECACmBAkEEAB5BBEEEQCmBBIEGgAsBBsEGwBPBBwEHAAsBB0EHwCmBCAEIAAsBCEEPACpBD0EPQAyBD4EPgCpBD8EPwAQBEAERQA1BEYERgCmBEcERwA3BEgEUgA4BFMEWQBpBFoEXACmBF0EXQCYBF4EXgCmBGEEYQAPBGIEYgAgBHMEcwABBHkEeQBTBH0EfQBWBH4EfgBkBIUEhQBgBIgEiACOBIsEiwCOBIwEjAAJBI0EjgALBI8EjwCOBJAEkABWBJEEkQAEBJcElwAJBJkEmQBgBJsEmwBhBJwEnACOBJ0EnQBkBJ8EnwBUBKAEoABVBKEEoQAJBKMEowBeBKQEpAAJBKUEpQCOBKYEpgBjBKgEqAABBKoEqgAOBKwErABkBK0ErQAIBK4ErgCOBK8EsAAMBLEEsQCOBLQEtABWBLUEtQBkBLkEuQAJBL4EvwCOBMAEwAAJBMEEwQBWBMIEwgAJBMMExAAEBMcEyABsBMoEygBWBMwEzABgBM8EzwAEBNEE0gABBNME0wACBNUE1gCOBNcE1wBWBNgE2QBkBNwE3gCOBOAE4gALBOME4wAEBOcE6ABWBOkE6gAHBOsE7AA/BO0E7QBgBO8E7wCOBPAE8AAJBPEE8QA8BPIE8wBgBPUE9QBeBPYE9gCOBPcE9wANBPkE+QBgBP4E/gBTBP8E/wCqBQAFAABgBQEFAgABBQMFAwCOBQQFBAABBQcFBwABBQgFCACqBQkFCgABBQ0FDQBWBQ4FEQABBRMFEwAgBRQFFACXBRUFFQAgBRYFFwCDBRgFGACSBRkFHAAgBR0FHQA2BR4FHgBqBR8FIgCTBSMFJACSBSUFJQAVBSYFJgCRBScFJwCSBSgFKAAgBSkFKQCSBSsFKwAgBSwFLACSBS0FLgAxBS8FLwAgBTAFMAA2BTEFMQASBTIFNQCTBTYFNgCSBTcFNwAuBTgFOACSBTkFOQAVBToFOgCSBTsFOwB4BTwFPAAgBT0FPQBqBT8FPwAdBUAFQABJBUIFQgCSBUMFQwAcBUcFRwCSBUgFSAAzBUkFSQCSBUoFSgA6BUsFSwCSBU0FTQCTBU4FTgAgBU8FUAAxBVEFUQAgBVIFUgCDBVMFUwCSBVQFVAA2BVUFVQBqBVYFVwCSBVkFWQAuBVoFXQCSBV4FXwAgBWAFYACSBWEFYQA2BWIFYgAuBWMFZAASBWcFaABEBWoFagA2BWsFawCSBWwFbAAVBW0FbgCSBW8FbwASBXAFcACRBXEFcgAgBXMFcwAPBXQFdgAgBXcFdwA2BXgFeABqBXkFeQBZBXoFewCTBXwFfgAgBYAFggAxBYMFgwASBYQFhACDBYUFhgCSBYcFiAA2BYkFigAgBYsFjABKBY0FjQAVBY4FjgCSBY8FjwAgBZAFkAAuBZEFkQClBZIFkwAVBZQFlACSBZUFlQAcBZYFlgAgBZcFlwA0BZgFmACSBZkFmQAVBZoFnQCSBZ4FngAVBZ8FnwCSBaAFoAAVBaIFogBSBaMFowAgBaQFpAA2BacFqAAzBaoFqgCDBasFqwA2Ba4FrwCSBbAFsAAuBbEFsQAgBbIFsgASBbMFswAzBbQFtAA2BbYFtgAzBbcFuACSBbkFuQA2BboFugAzBbsFuwCSBbwFvgAzBb8FvwCSBcAFwACXBcEFwQCDBcIFwgAgBcMFxQCSBcYFyQCmBcoFygA3BcsFywCmBcwFzAAQBc0F0QCmBdIF0gBYBdMF1QCmBdYF1gA3BdcF1wBrBdgF3QCmBd4F3gAWBd8F3wCnBeAF4ACmBeEF4QBOBeIF4wCmBeQF5ABOBeUF5QAsBeYF5wAwBegF6ABOBekF6QA3BeoF6gCYBesF7wCmBfAF8AAsBfEF8QCmBfIF8gAWBfMF8wCmBfQF9AB5BfUF9QBOBfYF9gBrBfcF9wCmBfgF+ABbBfkF+QBcBfoF+gAsBfsF+wCmBfwF/ABaBf0F/QAsBf4F/gBOBf8F/wBQBgAGAACmBgEGAQAQBgIGAgCmBgMGAwA7BgQGBACmBgUGBQBrBgYGBgAlBgcGBwBOBggGCQAyBgoGCgBOBgsGDACmBg0GDQA3Bg4GDgBrBg8GEQCmBhIGEgAsBhMGFACmBhYGFgCmBhcGGABOBhkGGQAsBhoGGgA3BhsGHACYBh0GHwCmBiAGIABYBiIGIgAWBiMGJABFBiUGJQCmBiYGJgA3BicGJwCmBigGKAAWBikGKgCmBisGKwCYBiwGLACnBi0GLgAQBi8GLwBXBjAGMACmBjEGMgBOBjMGMwA3BjQGNQBrBjYGNwCmBjgGOgBOBjwGPgAwBj8GPwCYBkAGQgCmBkMGRAA3BkUGRgAeBkcGSAAfBkkGSQAWBkoGSgCmBksGSwBOBkwGTAAsBk4GTwAWBlAGUACmBlEGUQBaBlIGUgBOBlMGUwA1BlQGVACmBlUGVQAWBlYGWACmBlkGWgAQBlsGWwBOBlwGXQAQBl8GZAAQBmYGZgCSBmcGZwBVBmgGaAABBmsGawABBm0GbQBDBm8GbwCOBnIGcgABBnUGdQAGBnYGdgCOBnkGeQBiBnoGegAJBnsGewBBBnwGfACOBn0GfQBWBn4GfgAIBn8GfwCkBocGhwBUBogGiABBBooGigADBowGjQCOBo8GjwCUBpAGkAABBpIGlABBBpUGlQCOBpcGlwCOBpkGmQBABpoGmgCOBpsGmwBABqYGqAABBtYG1wBUBucG6ABBBvwG/AAgBv4G/gAxBv8G/wAgBwAHAAClBwEHAQBRBwIHAgCSBwMHAwCgBwQHBACTBwUHBQCSBwYHBgBnBwcHBwCSBwgHCAAxBwkHCgAgBwsHCwAjBwwHDAAoBw0HDgAgBw8HDwAtBxAHEACTBxEHEQAgBxIHEgATBxMHEwCTBxQHFAAgBxYHFwAdBxgHGgCTBxsHHQAgBx4HHgClBx8HIACSByEHIQAtByIHIgCSByMHIwB1ByQHJAAgByUHJQB1ByYHJwAgBygHKAAoBykHKQBLByoHKgBdBysHKwCSBywHLACXBy0HLQAvBy4HLgAgBy8HLwAkBzAHMACSBzEHMQAoBzIHMgAgBzMHMwBJBzQHNAAgBzYHNgCRBzcHNwAoBzgHUAAgB1EHWAClB1kHbwCSB3AHcQCTB3IHeAAdB3oHfwAdB4AHhwAgB4gHiQAoB4oHmQCTB5oHsAAgB7IHsgCXB7MHswBRB7QHtAAgB7UHtQAQB7YHtwCmB7gHuAAQB7kHuQCmB7oHugBpB7sHuwCmB7wHvABOB70HvgCmB78HvwAQB8AHwACnB8EHwQCmB8IHwgAXB8MHwwBOB8QHxQCmB8YHxwAqB8gHyAAsB8kHyQA4B8oHygBOB8sHywA3B8wHzAAlB80HzQCoB84HzgCmB88H0ABbB9EH0wA4B9QH1ABOB9UH1QCoB9YH1gAQB9cH2QCmB9oH2gARB9sH2wCmB9wH3AAhB90H3QBOB94H3gAhB98H4ABOB+EH4QCmB+IH4gBMB+MH4wAQB+QH5ACmB+UH5QCOB+YH5gBOB+cH6QA4B+oH6gBOB+sH6wAkB+0H7QAoB+4H7gBOB+8H7wBcB/AH8ABOB/EH8QCmB/IH8gCnB/MH8wCmB/QIDAAQCA0IOwCmCDwIQwBOCEQIRQCmCEYIVQA4CFYIbACoCG4IbgAgCHEIcQCiCHIIcgBzCHMIcwCKCHQIdAB8CHUIdQBwCHYIdgBmCHcIdwCfCHgIeAB6CHoIegCFCHwIfAB0CH0IfQB+CH4IfgB9CH8IfwBxCIEIgQCfCIIIggB7CIQIhACeCJwInACiCJ0IpgCNCLEIxACjCMYI1QCjCNYI1wAiCNgI2QBfCNoI2gAiCN0I3QB2CN4I3gCHCN8I3wBICOEI4QCWCOQI5ACICOUI5QBtCOYI5gB7COcI5wCLCO0I7gCNCPQI9ABuCPUI9gCjCPwI/ABuCP0JBABICQUJBQCLCQYJCgBICQ0JDgAiCQ8JEgAmCRMJEwCbCRQJFACECRUJFQCbCRYJFgCECRcJGAAmCRkJGQCbCRoJGgCECRsJGwCbCRwJHACECR8JIACjCSEJIQBICSIJIgBfCTAJMAAgCTEJMQCOCTMJMwBhCTQJNAAg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BMwEzAACBM4EzgACBNAE0AACBOQE5AADBOYE5gADBOwE7AAFBPkE+gAHBP8E/wABBQAFAAACBQUFBQADBQYFBgACBQkFCgAFBQsFCwACBQwFDAADBQ0FDQAFBRIFEgACBSIFIgAKBTIFMgAKBTQFNAAKBVoFWgAKBVwFXAAKBWAFYAAKBWIFYwAKBWYFZgAKBWwFbAAKBW4FbgAKBXAFcAAKBaAFoAAKBa4FsAAKBbcFtwAKBb8FvwAKBmoGagADBn4GfgAGBpEGkQAFAAIC3gABABgAPAAZABkAKQAaAB8APAAgACIABQAqAC8AKQAwADAAeQAxADIAKQBbAFwARgBhAGgAKQBqAGoAKQByAHIAKACbAJ0AQQCtAM8AKQDQANAAQwDRANYAKQDcAN0AKQDnAOgARADpAOkAHgDqAO8ARADxAPEAKQDyAPoACAD8APwACAD9AP0AUgEAAQAACAEaARoAKQEeAR4AKwEfAR8ACQEhASEAPAEpASkAeQEqATIACQE0ATUACQE9AT0APAFAAUAAKQFCAUIAKQFEAUQAKQFFAUUARAFLAUsAKAFMAUwAWwFNAU4AXQFPAVIAWwFTAVMAXQFUAVUAWwFWAVYAIwFXAW8AXQFwAXAAWwFxAXYAXQF3AXcAagF4AXoARwGBAYEAKQGFAYsAXQGMAYwATAGNAY0AXQGPAbYAXQG3AbgAEwG5AbkAdQG6AboAXQG7AbsAXwG8AbwAXQHBAcUAXQHGAcgAUQHKAcoAUQHQAdEAXQHSAdIAIwHTAdgAXQHZAdkAXwHbAdsAXwHdAd0AXwHgAeEAXQHqAeoAagHvAe8AWwIAAgAAagIDAgQAGAIIAgoAGAIOAg4AWwIQAhAAcAITAhMAWQIjAiYAWwInAigAagIpAioAWwIrAisAHgIsAjMAWwI1AjgAWwI5AlsAXQJcAlwAXwJdAmMAXQJkAmQAWwJmAmYAWwJnAmcAXQJqAm0AXQJuAm8AWwJwAnAAIwJxAnUAWwJ3AncAWwJ5AnoAWwJ8AnwAWwJ+An8AHwKAAoAAHgKBAoYAHwKHAocAGAKIAokAHwKZApoAWwKbApsABAKgArcAagK5ArkAXQK9Ar0AWwLDAsMAXQLEAsQAagLGAsgAagLJAskAIwLKAsoAagLLAssAIwLMAswAbQLNAtIAbgLTAtMAbQLUAtQAWwLVAtUAcALWAuAAIwLhAuEAbQLuAu4ARwLvAu8AXQLxAvEAXQLyAvIAagLzAvMAXQL0AvQAWwL1AvUAXQL2AvYAHwMPAw8AXgMQAxAAVQMRAxEAcQMSAxMAVQMVAxUASgMWAxYAVQMZAxoAVQMbAxsAXgMdAx0AVQMeAx4AXgMfAx8AJAMgAzcACwM4AzgAXgM5Az4ACwM/A0EADANCA0QAVQNGA0cAVQNIA08AXgNQA1UAVQNXA1gAVQNaA28AVQNzA3QAVQN1A3YAXgN3A3gAJQN6A3oAVQN9A38AVQOAA4cAXgOJA4kAXgOLA5EAVQOZA5oAVQOcA5wAVQOeA54AVQOgA6EAVQOjA6MAGQOlA6UAGQOmA6sAVQOtA7MAVQO0A7QACwO1A7UAVQO3A7cAXgO5A7kAXgO6A7oAVQO7A7sAXgO8A7wAYwO9A70AfgO+A74AVQO/A8EAWgPDA88AVQPQA9EAXgPSA9IAKQPTA/AAXgPyA/gAXgP5A/sAVQP9A/0AVQP+A/8AXgQABAgAVQQJBBAAYwQRBBEAVQQSBBoAfwQcBBwAfwQdBB8AVQQgBCAAfwQ9BD0AbAQ/BD8ACwRABEUAbwRGBEYAVQRHBEcAcQRIBFIAJARTBFkAfgRaBFwAVQRdBF0ASgReBF4AVQRhBGEARwRiBGIAXQRzBHMAPAR5BHkAPQR9BH0AeQR+BH4ARgSFBIUAPgSGBIYAQQSIBIgAKQSLBIsAKQSMBIwACASNBI4AKgSPBI8AKQSQBJAAeQSRBJEAKASXBJcACASZBJkAPgSbBJsARAScBJwAKQSdBJ0ARgShBKEACASjBKMAPwSkBKQACASlBKUAKQSmBKYACgSoBKgAPASqBKoARQSsBKwARgStBK0AeASuBK4AKQSvBLAAKwSxBLEAKQS0BLQAeQS1BLUARgS5BLkACAS+BL8AKQTABMAACATBBMEAeQTCBMIACATDBMQAKATHBMgABgTKBMoAeQTMBMwAPgTPBM8AKATQBNAAQQTRBNIAPATTBNMABQTVBNYAKQTXBNcAeQTYBNkARgTcBN4AKQTgBOIAKgTjBOMAKATnBOgAeQTpBOoAAQTrBOwABwTtBO0APgTvBO8AKQTwBPAACATyBPMAPgT1BPUAPwT2BPYAKQT5BPkAPgT+BP4APQUABQAAPgUBBQIAPAUDBQMAKQUEBQQAPAUHBQcAPAUJBQoAPAUNBQ0AeQUOBREAPAUTBRMAXQUUBRQASQUVBRUAXQUWBRcABAUYBRgAWwUZBRwAXQUdBR0AcAUeBR4AdQUfBSIAagUjBSQAWwUlBSUAEAUmBSYAEgUnBScAWwUoBSgAXQUpBSkAWwUrBSsAXQUsBSwAWwUtBS4AIwUvBS8AXQUwBTAAcAUxBTEADgUyBTUAagU2BTYAWwU3BTcAIAU4BTgAWwU5BTkAEAU6BToAWwU7BTsAHwU8BTwAXQU9BT0AdQVABUAAGAVCBUIAWwVDBUMAVgVHBUcAWwVIBUgAbQVJBUkAWwVKBUoAcwVLBUsAWwVNBU0AagVOBU4AXQVPBVAAIwVRBVEAXQVSBVIABAVTBVMAWwVUBVQAcAVVBVUAdQVWBVcAWwVZBVkAIAVaBV0AWwVeBV8AXQVgBWAAWwVhBWEAcAViBWIAIAVjBWQADgVnBWgAMAVqBWoAcAVrBWsAWwVsBWwAEAVtBW4AWwVvBW8ADgVwBXAAEgVxBXIAXQVzBXMARwV0BXYAXQV3BXcAcAV4BXgAdQV5BXkAUQV6BXsAagV8BX4AXQV/BX8ATwWABYIAIwWDBYMADgWEBYQABAWFBYYAWwWHBYgAcAWJBYoAXQWLBYwAMgWNBY0AEAWOBY4AWwWPBY8AXQWQBZAAIAWRBZEAEwWSBZMAEAWUBZQAWwWVBZUAVgWWBZYAXQWXBZcAbgWYBZgAWwWZBZkAEAWaBZ0AWwWeBZ4AEAWfBZ8AWwWgBaAAEAWjBaMAXQWkBaQAcAWnBagAbQWqBaoABAWrBasAcAWuBa8AWwWwBbAAIAWxBbEAXQWyBbIADgWzBbMAbQW0BbQAcAW2BbYAbQW3BbgAWwW5BbkAcAW6BboAbQW7BbsAWwW8Bb4AbQW/Bb8AWwXABcAASQXBBcEABAXCBcIAXQXDBcUAWwXGBckAVQXKBcoAcQXLBcsAVQXMBcwACwXNBdEAVQXTBdUAVQXWBdYAcQXXBdcAJQXYBd0AVQXeBd4AEQXfBd8AWgXgBeAAVQXhBeEAXgXiBeMAVQXkBeQAXgXlBeUAfwXmBecAawXoBegAXgXpBekAcQXqBeoASgXrBe8AVQXwBfAAfwXxBfEAVQXyBfIAEQXzBfMAVQX0BfQAYwX1BfUAXgX2BfYAJQX3BfcAVQX5BfkAGQX6BfoAfwX7BfsAVQX8BfwAFwX9Bf0AfwX+Bf4AXgX/Bf8AcgYABgAAVQYBBgEACwYCBgIAVQYDBgMAdAYEBgQAVQYFBgUAJQYGBgYAYQYHBgcAXgYIBgkAbAYKBgoAXgYLBgwAVQYNBg0AcQYOBg4AJQYPBhEAVQYSBhIAfwYTBhQAVQYWBhYAVQYXBhgAXgYZBhkAfwYaBhoAcQYbBhwASgYdBh8AVQYiBiIAEQYjBiQASwYlBiUAVQYmBiYAcQYnBicAVQYoBigAEQYpBioAVQYrBisASgYsBiwAWgYtBi4ACwYvBi8ADAYwBjAAVQYxBjIAXgYzBjMAcQY0BjUAJQY2BjcAVQY4BjoAXgY8Bj4AawY/Bj8ASgZABkIAVQZDBkQAcQZFBkYAVwZJBkkAEQZKBkoAVQZLBksAXgZMBkwAfwZOBk8AEQZQBlAAVQZRBlEAFwZSBlIAXgZTBlMAbwZUBlQAVQZVBlUAEQZWBlgAVQZZBloACwZbBlsAXgZcBl0ACwZfBmQACwZmBmYAWwZoBmgAPAZrBmsAPAZvBm8AKQZyBnIAPAZzBnMAQQZ2BnYAKQZ6BnoACAZ7BnsACQZ8BnwAKQZ9Bn0AeQZ+Bn4AeAZ/Bn8AQgaIBogACQaMBo0AKQaPBo8AQAaQBpAAPAaSBpQACQaVBpUAKQaXBpcAKQaYBpgAQQaZBpkAQwaaBpoAKQabBpsAQwamBqgAPAbnBugACQb8BvwAXQb+Bv4AIwb/Bv8AXQcABwAAEwcBBwEAdwcCBwIAWwcEBwQAagcFBwUAWwcGBwYAWQcHBwcAWwcIBwgAIwcJBwoAXQcMBwwAYgcNBw4AXQcPBw8AZgcQBxAAagcRBxEAXQcSBxIATAcTBxMAagcUBxQAXQcYBxoAagcbBx0AXQceBx4AEwcfByAAWwchByEAZgciByIAWwcjByMAXwckByQAXQclByUAXwcmBycAXQcoBygAYgcpBykAWAcqByoAZAcrBysAWwcsBywASQctBy0AZwcuBy4AXQcvBy8AYAcwBzAAWwcxBzEAYgcyBzIAXQczBzMAGAc0BzQAXQc2BzYAEgc3BzcAYgc4B1AAXQdRB1gAEwdZB28AWwdwB3EAageAB4cAXQeIB4kAYgeKB5kAageaB7AAXQeyB7IASQezB7MAdwe0B7QAXQe1B7UACwe2B7cAVQe4B7gACwe5B7kAVQe6B7oAfge7B7sAVQe8B7wAXge9B74AVQe/B78ACwfAB8AAWgfBB8EAVQfDB8MAXgfEB8UAVQfIB8gAfwfJB8kAJAfKB8oAXgfLB8sAcQfMB8wAYQfNB80AfQfOB84AVQfRB9MAJAfUB9QAXgfVB9UAfQfWB9YACwfXB9kAVQfaB9oAewfbB9sAVQfdB90AXgffB+AAXgfhB+EAVQfiB+IAfAfjB+MACwfkB+QAVQflB+UAKQfmB+YAXgfnB+kAJAfqB+oAXgfrB+sAYAftB+0AYgfuB+4AXgfvB+8AGQfwB/AAXgfxB/EAVQfyB/IAWgfzB/MAVQf0CAwACwgNCDsAVQg8CEMAXghECEUAVQhGCFUAJAhWCGwAfQhuCG4AXQhxCHEAOghyCHIAGghzCHMAaAh0CHQAegh1CHUAUwh2CHYAUgh3CHcAOAh4CHgANgh5CHkATQh6CHoAMwh7CHsAdgh8CHwAGwh9CH0AaQh+CH4AIQh/CH8AFQiACIAAFAiBCIEAOAiCCIIANwiDCIMATQiECIQANAiFCIUAdgicCJwAOgidCKYAJwinCLAAJgixCMQAOwjGCNUAOwjWCNcAHQjYCNkADwjaCNoAHQjbCNsAUAjdCN0ANQjfCN8AFgjgCOAALwjhCOEALgjjCOMAXAjkCOQAZQjlCOUADQjmCOYANwjnCOcAIgjqCOoAXAjtCO4AJwjwCPAAHAjyCPIAAgj0CPQAAwj1CPYAOwj4CPgAHAj6CPoAAgj8CPwAAwj9CQQAFgkFCQUAIgkGCQoAFgkNCQ4AHQkPCRIAHgkTCRMAMQkUCRQAVAkVCRUAMQkWCRYAVAkXCRgAHgkZCRkAMQkaCRoAVAkbCRsAMQkcCRwAVAkdCR4AJgkfCSAAOwkhCSEAFgkiCSIADwkwCTAAXQkxCTEAKQkzCTMARAk0CTQAXQlCCUIAXQlDCUMAKQlFCUUARAlGCUYAXQl0CXQAFgl2CXYAFgl3CXcAJwl4CXgAOwl5CXkAJwl6CXoAOwl7CXwAFgl9CX0ATgl+CX4AFgl/CYIATgmHCYgAFgmLCYsATgmNCY0AQgmOCY4APAmSCZIAWwmWCZYAJwmXCZcAOwmZCZkATgmaCZsAFgmcCZwATgmdCZ0AFgmeCZ4ATgmmCacAFgn/Cf8ASAoACgAALAoECgQALgoF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Bf4F/gAVBf8F/wAOBgEGAQACBgMGAwAyBgUGBQAzBgYGBgA1BgcGBwAVBggGCQAeBgoGCgAVBg0GDQAMBg4GDgAzBhIGEgALBhcGGAAVBhkGGQALBhoGGgAMBhsGHAAPBiAGIAAQBiEGIQA3BiIGIgAHBiMGJAAGBiYGJgAMBigGKAAHBisGKwAPBiwGLAAsBi0GLgACBi8GLwADBjEGMgAVBjMGMwAMBjQGNQAzBjgGOgAVBjwGPgAcBj8GPwAPBkMGRAAMBkUGRgABBkcGSAAJBkkGSQAHBksGSwAVBkwGTAALBk4GTwAHBlEGUQAqBlIGUgAVBlUGVQAHBlkGWgACBlsGWwAVBlwGXQACBl4GXgA3Bl8GZAACB7UHtQACB7gHuAACB7wHvAAVB78HvwACB8AHwAAsB8MHwwAVB8gHyAALB8kHyQANB8oHygAVB8sHywAMB8wHzAA1B80HzQAtB9EH0wANB9QH1AAVB9UH1QAtB9YH1gACB9wH3AAuB90H3QAVB94H3gAuB98H4AAVB+IH4gArB+MH4wACB+YH5gAVB+cH6QANB+oH6gAVB+4H7gAVB+8H7wAIB/AH8AAVB/IH8gAsB/QIDAACCDwIQwAVCEYIVQANCFYIbAAtCHIIcgAWCHMIcwA5CHUIdQApCHgIeAA4CHsIewA0CHwIfAAXCH8IfwASCIIIggAaCIUIhQA0CJ0IpgAhCKcIsAAfCLEIxAAgCMYI1QAgCNYI1wAvCNgI2QA2CNoI2gAvCNsI2wAoCN0I3QAYCN8I3wAUCOAI4AAnCOEI4QAkCOQI5AAxCOUI5QAmCOYI5gAaCOcI5wAdCO0I7gAhCPAI8AAKCPII8gAECPQI9AAFCPUI9gAgCPgI+AAKCPoI+gAECPwI/AAFCP0JBAAUCQUJBQAdCQYJCgAUCQ0JDgAvCQ8JEgAZCRMJEwATCRUJFQATCRcJGAAZCRkJGQATCRsJGwATCR0JHgAfCR8JIAAgCSEJIQAUCSIJIgA2CXQJdAAUCXYJdgAUCXcJdwAhCXgJeAAgCXkJeQAhCXoJegAgCXsJfAAUCX0JfQARCX4JfgAUCX8JggARCYcJiAAUCYsJiwARCZYJlgAhCZcJlwAgCZkJmQARCZoJmwAUCZwJnAARCZ0JnQAUCZ4JngARCaYJpwAUCf8J/wAlCgAKAAAiCgQKBAAk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AScAPQEpASkAPgEqATIANAE0ATUANAE2ATwAHwE9AT0AAQFAAUAAQAFCAUIAQAFEAUQAQAFGAUYAHwFMAUwAEAFNAU4AEQFPAVIAEAFTAVMAEQFUAVUAEAFWAVYAOgFXAW8AEQFwAXAAEAFxAXYAEQF3AXcAVQGBAYEAQAGFAYsAEQGMAYwAIgGNAY0AEQGPAbYAEQG3AbgABwG5AbkAMgG6AboAEQG7AbsAJAG8AbwAEQHBAcUAEQHQAdEAEQHSAdIAOgHTAdgAEQHZAdkAJAHbAdsAJAHdAd0AJAHgAeEAEQHqAeoAVQHvAe8AEAIAAgAAVQIOAg4AEAITAhMADgIjAiYAEAInAigAVQIpAioAEAIrAisAFAIsAjMAEAI1AjgAEAI5AlsAEQJcAlwAJAJdAmMAEQJkAmQAEAJmAmYAEAJnAmcAEQJqAm0AEQJuAm8AEAJwAnAAOgJxAnUAEAJ3AncAEAJ5AnoAEAJ8AnwAEAKAAoAAFAKZApoAEAKgArcAVQK5ArkAEQK9Ar0AEALDAsMAEQLEAsQAVQLGAsgAVQLJAskAOgLKAsoAVQLLAssAOgLUAtQAEALWAuAAOgLvAu8AEQLxAvEAEQLyAvIAVQLzAvMAEQL0AvQAEAL1AvUAEQMPAw8ATQMQAxAASgMRAxEALwMSAxMASgMWAxYASgMZAxoASgMbAxsATQMdAx0ASgMeAx4ATQMfAx8AMAMgAzcAAgM4AzgATQM5Az4AAgNCA0QASgNGA0cASgNIA08ATQNQA1UASgNXA1gASgNaA28ASgNxA3EASANyA3IAKANzA3QASgN1A3YATQN6A3oASgN9A38ASgOAA4cATQOJA4kATQOLA5EASgOZA5oASgOcA5wASgOeA54ASgOgA6EASgOmA6sASgOtA7MASgO0A7QAAgO1A7UASgO3A7cATQO5A7kATQO6A7oASgO7A7sATQO9A70AMQO+A74ASgO/A8EADwPDA88ASgPQA9EATQPSA9IAQAPTA/AATQPxA/EAOAPyA/gATQP5A/sASgP9A/0ASgP+A/8ATQQABAgASgQRBBEASgQSBBoAOQQcBBwAOQQdBB8ASgQgBCAAOQQ/BD8AAgRGBEYASgRHBEcALwRIBFIAMARTBFkAMQRaBFwASgReBF4ASgRiBGIAEQRzBHMAAQR9BH0APgSIBIgAQASLBIsAQASMBIwAMwSNBI4AOwSPBI8AQASQBJAAPgSXBJcAMwScBJwAQAShBKEAMwSkBKQAMwSlBKUAQASoBKgAAQSuBK4AQASvBLAAPASxBLEAQAS0BLQAPgS5BLkAMwS+BL8AQATABMAAMwTBBMEAPgTCBMIAMwTKBMoAPgTRBNIAAQTVBNYAQATXBNcAPgTcBN4AQATgBOIAOwTnBOgAPgTvBO8AQATwBPAAMwT2BPYAQAT3BPcAPQUBBQIAAQUDBQMAQAUEBQQAAQUHBQcAAQUJBQoAAQUNBQ0APgUOBREAAQUTBRMAEQUUBRQARAUVBRUAEQUYBRgAEAUZBRwAEQUeBR4AMgUfBSIAVQUjBSQAEAUmBSYABgUnBScAEAUoBSgAEQUpBSkAEAUrBSsAEQUsBSwAEAUtBS4AOgUvBS8AEQUyBTUAVQU2BTYAEAU4BTgAEAU6BToAEAU8BTwAEQU9BT0AMgVCBUIAEAVHBUcAEAVJBUkAEAVLBUsAEAVNBU0AVQVOBU4AEQVPBVAAOgVRBVEAEQVTBVMAEAVVBVUAMgVWBVcAEAVaBV0AEAVeBV8AEQVgBWAAEAVrBWsAEAVtBW4AEAVwBXAABgVxBXIAEQV0BXYAEQV4BXgAMgV6BXsAVQV8BX4AEQWABYIAOgWFBYYAEAWJBYoAEQWOBY4AEAWPBY8AEQWRBZEABwWUBZQAEAWWBZYAEQWYBZgAEAWaBZ0AEAWfBZ8AEAWjBaMAEQWuBa8AEAWxBbEAEQW3BbgAEAW7BbsAEAW/Bb8AEAXABcAARAXCBcIAEQXDBcUAEAXGBckASgXKBcoALwXLBcsASgXMBcwAAgXNBdEASgXTBdUASgXWBdYALwXYBd0ASgXfBd8ADwXgBeAASgXhBeEATQXiBeMASgXkBeQATQXlBeUAOQXoBegATQXpBekALwXrBe8ASgXwBfAAOQXxBfEASgXzBfMASgX1BfUATQX3BfcASgX6BfoAOQX7BfsASgX9Bf0AOQX+Bf4ATQYABgAASgYBBgEAAgYCBgIASgYEBgQASgYGBgYAUQYHBgcATQYKBgoATQYLBgwASgYNBg0ALwYPBhEASgYSBhIAOQYTBhQASgYWBhYASgYXBhgATQYZBhkAOQYaBhoALwYdBh8ASgYlBiUASgYmBiYALwYnBicASgYpBioASgYsBiwADwYtBi4AAgYwBjAASgYxBjIATQYzBjMALwY2BjcASgY4BjoATQZABkIASgZDBkQALwZKBkoASgZLBksATQZMBkwAOQZQBlAASgZSBlIATQZUBlQASgZWBlgASgZZBloAAgZbBlsATQZcBl0AAgZfBmQAAgZmBmYAEAZoBmgAAQZrBmsAAQZtBm0AHwZvBm8AQAZyBnIAAQZ1BnUAHAZ2BnYAQAZ5BnkAHgZ6BnoAMwZ7BnsANAZ8BnwAQAZ9Bn0APgZ/Bn8AQQaIBogANAaMBo0AQAaPBo8APwaQBpAAAQaSBpQANAaVBpUAQAaXBpcAQAaZBpkAHQaaBpoAQAabBpsAHQamBqgAAQbnBugANAb8BvwAEQb+Bv4AOgb/Bv8AEQcABwAABwcBBwEAGwcCBwIAEAcDBwMAUwcEBwQAVQcFBwUAEAcGBwYADgcHBwcAEAcIBwgAOgcJBwoAEQcLBwsATwcMBwwAFQcNBw4AEQcPBw8AKQcQBxAAVQcRBxEAEQcSBxIAIgcTBxMAVQcUBxQAEQcYBxoAVQcbBx0AEQceBx4ABwcfByAAEAchByEAKQciByIAEAcjByMAJAckByQAEQclByUAJAcmBycAEQcoBygAFQcpBykASwcqByoAFgcrBysAEAcsBywARActBy0AVAcuBy4AEQcvBy8AUAcwBzAAEAcxBzEAFQcyBzIAEQc0BzQAEQc2BzYABgc3BzcAFQc4B1AAEQdRB1gABwdZB28AEAdwB3EAVQeAB4cAEQeIB4kAFQeKB5kAVQeaB7AAEQeyB7IARAezB7MAGwe0B7QAEQe1B7UAAge2B7cASge4B7gAAge5B7kASge6B7oAMQe7B7sASge8B7wATQe9B74ASge/B78AAgfAB8AADwfBB8EASgfCB8IASAfDB8MATQfEB8UASgfGB8cAKAfIB8gAOQfJB8kAMAfKB8oATQfLB8sALwfMB8wAUQfNB80AEgfOB84ASgfRB9MAMAfUB9QATQfVB9UAEgfWB9YAAgfXB9kASgfaB9oAIAfbB9sASgfcB9wAOAfdB90ATQfeB94AOAffB+AATQfhB+EASgfiB+IADQfjB+MAAgfkB+QASgflB+UAQAfmB+YATQfnB+kAMAfqB+oATQfrB+sAUAftB+0AFQfuB+4ATQfwB/AATQfxB/EASgfyB/IADwfzB/MASgf0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IFIVhCBSIFIViiBSFZAgUiBSFZYgUhWiFZwgUhWWFagVriBSFbQVuiBSFcAgUiBSFcYgUhXMIFIgUhXSIFIV2CBSIFIV3iBSFeoV5CBSFfAgUhX2IFIgUhXwIFIV9iBSIFIV/CBSFgIgUiBSFgggUhYOIFIgUhYUIFIWGiBSIFIU7iBSIFIgUiBSFiAgUhYmIFIgUhYgIFIWJiBSIFIU7iBSIFIgUiBSFiwgUhYyIFIgUhY4IFIWPiBSIFIWRCBSFkogUiBSFlAgUhZWIFIgUhZcIFIWYiBSIFIWaCBSFm4gUiBSFnQgUhZ6IFIgUhXwIFIWgCBSIFIWhhaMFpIgUiBSFoYWjBaYIFIgUiBSIFIWniBSIFIV/CBSFqQgUiBSFqogUhawIFIgUha2IFIWvCBSIFIgUiBSFsIgUiBSFsggUhbOIFIgUhbUIFIW2iBSIFIW4CBSFj4gUiBSFXIgUhbmIFIgUhbsIFIW8iBSIFIW+CBSFv4gUiBSFwQgUhcKIFIgUiBSIFIXECBSIFIXFiBSFxwgUiBSFyIgUhcoIFIgUhcuIFIXNCBSIFIXLiBSFzQgUiBSFzoVqBdAIFIVtBdGIFIXTCBSIFIgUiBSF1IgUiBSFUggUhVOIFIgUhVUIFIVWiBSIFIVciBSFXggUiBSF1ggUhdeIFIgUhYUIFIXZCBSIFIXaiBSF3AgUiBSFZYgUhWiFZwgUhWWIFIVohWcIFIVuiBSF3YgUiBSFbogUhXAIFIgUiBSIFIXfCBSIFIV0iBSFdggUiBSFd4gUhXqFeQgUhYIIFIWDiBSIFIXBCBSF4IgUiBSFhQgUhYaIFIgUhYUIFIWGiBSIFIXiCBSF1IgUiBSF4ggUhdSIFIgUheOF5QXmiBSIFIXjheUF5ogUiBSFoYWjBaSIFIgUhVIIFIVTiBSIFIgUiBSF6AgUiBSFO4gUhWEIFIgUhWWIFIVohWcIFIVliBSFaIVnCBSFhQgUhYaIFIgUhWKIFIVkCBSIFIU9BT6FQAgUiBSFPQU+hemIFIgUhZEIFIXrCBSIFIVMBU2FQYgUiBSFXIgUheyIFIgUhVyIFIXuCBSIFIVSCBSF74gUiBSFVQgUhfEIFIgUhXeIFIXyiBSIFIVYCBSF9AgUiBSFWAgUhfWIFIgUhWWFagX3CBSFbQXIiBSFyggUiBSFyIgUhfiIFIgUhXwIFIX6CBSIFIV8CBSF+4gUiBSFfAgUhf0IFIgUhXwIFIV9iBSIFIWFCBSF/ogUiBSFRggUhUeIFIgUhZEIFIYACBSIFIXRiBSF0wgUiBSFgggUhYOIFIgUhYIIFIWDiBSIFIWdCBSGAYgUiBSGAwgUhgSIFIgUhgYIFIYHiBSIFIgUiBSGCQgUiBSGCogUhgwIFIgUhg2IFIYPCBSIFIVYCBSGEIgUiBSGEggUhUAIFIgUhUwIFIYTiBSIFIU7iBSFYQgUiBSGFQgUhhaIFIgUhhgIFIYZiBSIFIYbCBSGHIgUiBSFdIgUhh4IFIgUhX8IFIWAiBSIFIVciBSFXggUiBSFO4gUhh+IFIgUhWWIFIYhBWcIFIYiiBSGJAgUiBSGJYgUhicIFIgUhWWIFIVohWcIFIgUiBSGKIgUiBSIFIgUhioIFIgUhTuIFIVhCBSIFIYriBSFQAgUiBSFPQgUhicIFIgUhi0IFIYuiBSIFIYwCBSGMYgUiBSFRggUhUeIFIgUhW6IFIVwCBSIFIYzCBSGNIgUiBSGNggUhh4IFIgUhT0IFIYnCBSIFIU9CBSGJwgUiBSFZYgUhWiFZwgUhdGIFIXTCBSIFIWCCBSFg4gUiBSGN4gUhjkIFIgUhjqIFIY8CBSIFIY9iBSGPwgUiBSGQIgUhkIIFIgUhWWIFIVohWcIFIVDBkOGRQgUiBSFiwgUhkaIFIgUhkgIFIZJiBSIFIZICBSGSwgUiBSIFIgUhkyIFIgUhYsGTgZPiBSIFIWLBk4GUQgUiBSFiwZOBlKIFIgUhlQIFIZViBSIFIZXCBSGWIgUiBSF1gZaBluIFIZdBdYGWgZbiBSGXQXWBloGXogUhl0GJYZaBk+IFIZdBXwIFIZgCBSIFIV8CBSGYYgUiBSFTAgUhmMIFIgUhhIIFIZkiBSIFIZmCBSGZ4gUiBSFPQZpBmqIFIZsBdYIFIZqiBSGbYZvCBSGcIgUhnIGc4gUhmeIFIZ1BnaIFIZ4CBSGeYZ7CBSGfIgUiBSGewgUhnyIFIgUiBSIFIZ+CBSIFIZ/iBSGgQgUiBSGgogUhoQIFIgUhiWGWgZPiBSGXQaFiBSGhwgUiBSGhYgUhocIFIgUhiWGWgZPiBSGXQaIiBSGhAgUiBSGiggUhouIFIgUho0IFIaOiBSIFIWOCBSGkAgUiBSGkYgUhpMIFIgUhlcIFIaUiBSIFIaWCBSGl4gUiBSGVwgUhpkIFIgUhpqGnYafBpwIFIaahp2GoIacCBSGoggUhqUGo4amheIIFIaphqgIFIarCBSGrIgUiBSGgogUhq4IFIgUhq+IFIaxBqgIFIarCBSGsogUiBSGtAgUhrWIFIgUhrcIFIa4iBSIFIa6CBSGu4gUiBSGvQgUhr6IFIgUhsAIFIbBiBSIFIY9iBSGVYgUiBSGwwgUhsSIFIgUhsYIFIbHiBSIFIYliBSGyQgUiBSGyogUhoEIFIgUhsqIFIbMCBSIFIbNhmkGzwgUhmwIFIgUhmAIFIgUhlQIFIZViBSIFIZXCBSGWIgUiBSFfAgUhmAIFIgUhcuIFIbQiBSIFIbSCBSG04gUiBSGZggUhmeIFIgUhmYIFIZniBSIFIXWCBSGaogUhm2F1ggUhtUIFIgUiBSIFIZbiBSIFIZziBSGZ4gUhnUGdogUhngIFIZ5hn+IFIaBCBSIFIa3BtaG2AgUhtmGgogUhoQIFIgUhoKIFIaECBSIFIYliBSG2wgUiBSGJYgUhtsIFIgUhtyG3gbfiBSIFIbcht4G34gUiBSG4QgUhuQG4ogUhlQIFIZViBSIFIgUiBSG5YgUiBSFTAgUhmMIFIgUhmYIFIZniBSIFIZmCBSGZ4gUiBSGgogUhoQIFIgUhhIIFIZkiBSIFIVDBkOGRQgUiBSFQwZDhucIFIgUhuiIFIbqCBSIFIWLBk4GT4gUiBSFfAbrhu0IFIgUhXwG64buiBSIFIZUCBSG8AgUiBSGVwgUhvGIFIgUhvMIFIb0iBSIFIXWBloG9ggUhl0F1gZaBveIFIZdBT0GaQb5CBSGbAYliBSGyQgUiBSGJYgUhvqIFIgUhlcIFIb8CBSIFIZ7CBSG/YgUiBSGewgUhv8IFIgUhnsIFIZ8iBSIFIaCiBSHAIgUiBSGSAgUhkmIFIgUho0IFIcCCBSIFIgUiBSHA4gUiBSGf4gUhruIFIgUhVUIFIaBCBSIFIYliBSHBQaoBwaGMAgUhwgIFIgUhwmIFIcLCBSIFIgUiBSHDIgUiBSHDggUhw+IFIgUhxEIFIcSiBSIFIcUCBSGW4gUhxWHFwgUhxiIFIgUhxoIFIcbiBSIFIVMCBSGYwgUiBSHHQgUhx6IFIgUhm8IFIcgCBSGcgchiBSHIwgUiBSHJIgUhyYIFIcnhykIFIcqiBSIFIcsCBSHLYgUiBSFTAgUhuoIFIgUhmYIFIbVCBSIFIcvCBSHMIgUiBSIFIgUhmqIFIgUhmYIFIZniBSIFIgUiBSHMggUiBSIFIgUhluIFIgUhUwIFIZjCBSIFIcziBSHNQgUhyeGVAgUhzaIFIgUhXwIFIc4CBSIFIV8CBSHOYgUiBSHOwgUhzyIFIgUhz4IFIc/iBSIFIarCBSGrIgUiBSGSAgUhkmIFIgUhlQIFIc2iBSIFIV8CBSHOAgUiBSGZggUhmeIFIgUhdYIFIZqiBSGbYcpCBSHQQgUiBSHQogUh0QIFIgUh0WIFIdHCBSIFIc7CBSHPIgUiBSGVAgUhzaIFIgUiBSIFIbliBSIFIc7CBSHPIgUiBSGZggUhmeIFIgUhn+IFIaBCBSIFIV/CBSHSIgUiBSHSggUh0uIFIgUh00IFIdOiBSIFIarCBSHUAgUiBSHUYgUh1MIFIgUhmYIFIZniBSIFIYliBSGqYgUiBSGmoadh1SGnAgUhzOIFIc1CBSHJ4YlhloHVggUhl0GhYgUh1eIFIgUhdYIFIZqiBSIFIdZCBSHWogUiBSHXAgUh12IFIgUh18IFIdiB2CIFIdjiBSHZQgUiBSGVwgUh2aIFIgUh18IFIdiB2CIFIV3h2gHaYgUiBSHawgUh2yIFIgUhcuIFIduCBSIFIdZCBSHWogUiBSHWQgUh2+IFIgUh1kIFIdaiBSIFIgUiBSHcQgUiBSHcod0B3WIFIgUh3KHdAd1iBSIFIdyh3QHdYgUiBSHdwgUh3iIFIgUh3oIFId7iBSIFIdfCBSHfQgUiBSHXwgUh30IFIgUh18IFId9CBSIFIdfCBSHfQgUiBSHcogUh36IFIgUh3KIFIeACBSIFIXWCBSHgYgUiBSHgwgUh4SIFIgUh18IFIdiB2CIFIeGB4eHiQgUh4qHXAgUh12IFIgUh4wIFIdlCBSIFIeNiBSHiQgUiBSHjwgUh5IHkIgUhlcIFIeTiBSIFIZXCBSHk4gUiBSHlQgUh5aIFIgUhlcIFIdmiBSIFIZziBSHmAgUiBSHFwgUiBSIFIgUh5mIFIebCBSIFIeZiBSHmwgUiBSHFwgUiBSIFIgUh5yIFIeeCBSIFIefiBSHoQgUiBSGBggUh6KIFIgUhY4IFIekCBSIFIYtCBSHpYgUiBSGVwgUh6cIFIgUhoiIFIeoiBSIFIeqCBSHkggUiBSHq4etB66IFIgUh6uHrQeuiBSIFIgUiBSHsAgUiBSHsYgUh7MIFIgUhbsIFIe0iBSIFIWdCBSHtggUiBSFrYgUh30IFIgUhWKIFIe3iBSIFIe5CBSHtggUiBSHKQgUh7qIFIgUhxoIFIdlCBSIFIeVCBSHlogUiBSHvAgUh72IFIgUhbgIFIe/CBSIFIgUiBSHwIgUiBSHXwgUh8IIFIgUh4YIFIfDiBSIFIfFCBSHxogUiBSHxQgUh8gIFIgUh8mHh4fLCBSHiodjiBSHZQgUiBSIFIgUh8yIFIgUh3cIFId4iBSIFId6CBSHe4gUiBSHcogUh36IFIgUhywIFIdaiBSIFIbKiBSHzggUiBSG0ggUh8+IFIgUh18IFIdiB2CIFIdfCBSHYgdgiBSHXAgUh12IFIgUh1wIFIfRCBSIFIgUiBSH0ogUiBSHjYgUh4kIFIgUh48IFIeSB5CIFIZXCBSHZogUiBSH1AgUh2UIFIgUhnOIFIeYCBSIFIaCiBSHzIgUiBSGgogUh8yIFIgUh18IFIdiB2CIFIgUiBSH1YgUiBSIFIgUh9cIFIgUhdYIFIeBiBSIFIVYB9iH2ggUiBSFWAfYh9oIFIgUh6uHrQeuiBSIFId3CBSHeIgUiBSIFIgUh8yIFIgUhdYIFIeBiBSIFIdfCBSHYgdgiBSHXwgUh2IHYIgUhnOIFIeYCBSIFIeDCBSHhIgUiBSFd4doB2mIFIgUhXeHaAdpiBSIFIeDCBSH24gUiBSHcod0B3WIFIgUh7kIFIfdCBSIFIe5CBSH3QgUiBSHdwgUh3iIFIgUh3oIFId7iBSIFIZICBSHe4gUiBSHXwgUh30IFIgUh18IFId9CBSIFIeGB4eHiQgUh4qHhggUh8OIFIgUh4YIFIfDiBSIFIeqCBSH3ogUiBSGVwgUh5OIFIgUhlcIFIeTiBSIFIZXCBSHk4gUiBSGc4gUh5gIFIgUh1kIFIdaiBSIFIYGCBSHoogUiBSHY4gUh2UIFIgUhlcIFIdmiBSIFIZXCBSHZogUiBSGuggUh+AIFIgUh+GIFIfjCBSIFIfkiBSHvYgUiBSIFIgUh+YIFIgUhdqIFIfbiBSIFIfniBSH6QgUiBSHhggUh+qIFIgUh+wIFIftiBSIFIfvCBSHxogUiBSF1ggUh4GIFIgUh/CIFIfyCBSIFIcJiBSH84gUiBSGPYgUh/UIFIgUhxQIFIf2iBSIFIaNCBSH+AgUiBSHcogUh36IFIgUhdYIFIf5iBSIFIdfCBSH+wdgiBSGtAgUh/yIFIgUh2sIFIf+CBSIFIf/iBSHZQgUiBSHOwgUiAEIFIgUiAKIFIgECBSIFIgFiBSIBwgUiBSICIgUiAoIFIgUiAuIFIe9iBSIFIc7CBSIAQgUiBSHOwgUiAEIFIgUhY4IFIekCBSIFIgNCBSIDogUiBSF1ggUiBAIFIgUiBGIFIgTCBSIFIcXCBSIFIgUiBSGIogUiBSIFIgUgAB/1YAAAAB/1AAAAAB/3UAAAAB/1UAAAAB/48AAAAB/zQAAAAB/zgAAAAB/08AAAAB/5QAAAAB/4UAAAAB/y0AAAAB/1cAAAAB/4oAAAAB/1QAAAAB/5gAAAAB/0EAAAAB/yAAAAAB/ysAAAAB/zwAAAAB/yoAAAAB/0AAAAAB/wkAAAAB/4MAAAAB/w8AAAAB/4gAAAAB/yMAAAAB/8QAAAAB/3kCDgAB/9ICDgAB/5UCDgAB/5wCDgAB/0gCDgAB/3cCDgAB/3gCDgAB/4cCDgAB/6QCDgAB/3QCDgAB/48CDgAB/4gCDgAB/6MCDgAB/+ECDgAB/6wCDgAB/4QCDgAB/88CDgAB/8sCDgAB/1ICDgAB/20CDgAB/1ACDgAB/2sCDgAB/2wCDgAB/2kCDgAB/48CsAAB/+YCsAAB/7ICsAAB/7QCsAAB/2oCsAAB/5ECsAAB/4wCsAAB/54CsAAB/7kCsAAB/4sCsAAB/6YCsAAB/7gCsAAB/8UCsAAB/5kCDgAB/7ECsAAB/ycBPQAB/1EBOAAB/1cCfgAB/6cCDgAB/74CsAABAQAAAAABAN4AAAABAb8AAAABAT8CsAABAT4CsAABAPQAAAABAUUCsAABAF4AAAABAVcCsAABAW4DhwABAWYCsAABAN0AAAABAW0AAAABAVUDhwABAVYDdQABAVAAAAABAbYCsAABALMAAAABASgCsAABAQoAAAABAWwCsAABAWMCsAABAOUAAAABAU4CsAABAWUDhwABAWECsAABAUEAAAABAZcCsAABAQ4AAAABATkBWAABAWoCsAABAWgAAAABAXkCsAABAi0CsAABAQcAAAABAWgCsAABANMAAAABAUECsAABAQwAAAABAXcCsAABAMEAAAABAPEBWQABASECsAABAMsAAAABAS0CsAABAU0AAAABAa4CsAABAMoAAAABASsCsAABAO4AAAABATMCsAABAXUAAAABAdYCsAABANwAAAABATwCsAABAT4AAAABAZ4CsAABAUgAAAABAakCsAABAW8AAAABAdACsAABAYAAAAABAeECsAABAM8AAAABATQCsAABANoAAAABAToCsAABARQCsAABAF0AAAABAH4AAAABAL8CsAABANcDdQABAM4CsAABAa0CsAABAWwAAAABAcwCsAABAPIAAAABAVMCsAABAXwCsAABAVkAAAABAboCsAABAPUAAAABAPICsAABAT0AAAABAUYCsAABAUUAAAABAaUCsAABAS8AAAABAY8CsAABAWQAAAABAcQCsAABASUDhgABARIAAAABAXMCsAABARMAAAABAXQCsAABANcAAAABATYCsAABAxX/NwABA3ACDgABAGIAAAABAVsCsAABAUoCsAABAOIAAAABAUMCsAABAVYCsAABAUcAAAABAbACsAABAfMCsAABAX0CsAABAaACsAABAOoAAAABAR8AAAABAbMAAAABAY0CsAABAUkCsAABAVcDdQABAeMCsAABAV0CsAABAXUDdQABAc4DdQABAT8DdQABARUCsAABAYEDWQABAYQDdQABAZEDdQABAYwDdQABASwDdQABAUIDWQABAUUDdQABAUsDdQABAcEDdQABATsCsAABAVMAAAABAbQCsAABASkAAAABAYoCsAABAQ4CsAABAXoAAAABAdsCsAABAYQAAAABAeUCsAABAX4CsAABAQkAAAABAUQCsAABAVQAAAABAbUCsAABATQAAAABAZUCsAABAVwAAAABAb0CsAABAXoCsAABAe8CsAABAfkCsAABAOAAAAABAMgCsAABAN8AAAABAUACsAABAecCsAABAW4CsAABANT/NwABAVEAAAABAbICsAABAV4AAAABAb4CsAABAVH/NwABAc0CsAABAQz/NwABAXwAAAABAd0CsAABAML/NwABAT0CsAABATAAAAABAZECsAABAa//NwABAa8CsAABAaf/9AABATwCDgABAVIC4gABAKwAAAABAQgCDgABAScDGwABASoC4gABAT8ABgABASYCDgABAU0DGwABAUIC9wABAS4AAAABAXoCDgABAK4AAAABAPkCDgABAZQAAAABATMCDgABAd8CDgABAVoDGwABARgCDgABATcDGwABATUCDgABAVMCDgABAOMAAAABASkCDgABAS4AAAABASwCDgABAdQCDgABAW4C4gABAMP/NwABATcCDgABAWAC4gABANUAAAABAUEC4gABAVsAAAABAaUCDgABAm0C4gABAKX/NwABAQACDgABAbYC4gABALQAAAABAP0CDgABANIAAAABAQoCDgABAVYAAAABAZ8CDgABAMAAAAABAQ0AAAABAVcCDgABASIAAAABAWwCDgABAYgCDgABAUYAAAABAZACDgABAPoCDgABALIAAAABAPwCDgABAO0CDgABAFcAAAABAIMBLgABAHEAAAABAMIDAwABAL4C9wABADf/OAABAHsA8AABAMUDAwABAJAC4gABAQ0BBwABAVAC4gABAToAAAABAYQCDgABARsCDgABAOYAAAABAU4C4gABAX0CDgABAMUAAAABAL0CiQABARcAAAABAWECDgABAMMAAAABAQ0CDgABARgAAAABAWICDgABARYAAAABAWACDgABAJr/NwABAQUDDAABAR3/NwABAX8CDgABASsCDgABALoAAAABAPEDOQABAqz/NwABAwcCDgABASECDgABAQEAAAABAU0CDgABAaQCDgABAcwAAAABAVECDgABAhcCDgABAUYC4gABASQAAAABAYcABgABAW0CDgABAIgAAAABARsBewABALoC4gABARMCDgABAVgC9wABAUwAAAABAZwCDgABAJkCCAABAQ8CDgABASwC9wABAZYC9wABARUC9wABAH3/OAABAPACDgABAU8C2wABAVAC9wABAUgC9wABAUcC9wABAQkC9wABARwC2wABARwC9wABAScC9wABAYgC9wABAPYCDgABAUcC4gABAb4DFAABAcYC4gABAQgAAAABAVICDgABAOcCDgABAVgAAAABAaICDgABAWAAAAABAakCDgABAOgAAAABAVwC4gABAPAAAAABAToCDgABAMcAAAABAQkCDgABARkAAAABAWMCDgABAZYCDgABAUkAAAABAZMCDgABAK7/NwABATYCDgABAaQC4gABAR4AAAABAWgCDgABAM4AAAABARcCDgABAMkAAAABARICDgABAcICDgABALH/OAABATQCDgABAZcC4gABATsC4gABAVIDuQABALgAAAABAP8CDgABATIAAAABAXwCDgABAWUCDgABAVj/NwABAb4CDgABAPj/NwABAV4CDgABAZcCDgABAc4AAAABAhgCDgABAJz/NwABAQECDgABAYYCDgABAXn/NwABAXkCDgABAL0C2wABAUIC2wABAboC2wABAKEAAAABAR0CMwABAO8AAAABAT4CMwABAPEAAAABARgBGwABAT8CMwABAJsAAAABARYCMwABAP0CMwABAYkAAAABARACMwABAMgAAAABARgCMwABASwCMwABAToDOQABARoCMwABAM0AAAABAUwAAAABARkCMwABASYAAAABAXYCMwABAJ8AAAABAPECMwABAUECMwABATMCMwABAVADOQABATsCMwABAR0AAAABAWYCMwABAOsAAAABAUEAAAABAUcCMwABAfECMwABALsAAAABAO0AAAABAKcAAAABAM0BJQABAPMCMwABAP8CMwABASUAAAABAXQCMwABAQoCMwABAU4AAAABAZ4CMwABAMQAAAABARMCMwABAPkAAAABAUgCMwABAXkCMwABAY0CMwABAaECMwABAQ4CMwABAQ8CMwABALEAAAABAFwAAAABAH8AAAABAKwCMwABAK0CMwABAREAAAABAWACMwABAZUCMwABASkCMwABAZACMwABANkAAAABAW4CMwABAQYAAAABAVUCMwABAYwCMwABAOICMwABAUACMwABAUUCMwABALwAAAABAQUCMwABAPkDXgABAs4AAAABAyACMwABASECMwABASACMwABAWcCMwABAbYCMwABAU0CMwABAOEAAAABAZ0CMwABATkCMwABAZIAAAABAVkCMwABAZYCMwABAS8CMwABARADHAABARICMwABASgAAAABAXgCMwABAQUAAAABAOgCMwABAVcAAAABAaYCMwABAU4CMwABAOcAAAABATUCMwABAKoAAAABASAAAAABAW8CMwABAVcCMwABAX8CMwABAUICMwABAXECMwABAakCMwABAbgCMwABARQCMwABARcCMwABALj/NwABAQwCMwABASsAAAABAXoCMwABATYAAAABAYUCMwABAUL/NwABAa8CMwABAOv/NwABAKD/NwABARECMwABATECMwABAXf/NwABAXcCMwABAAAAAAACAAsKRwp1AAAKdwp7AC8KfwqAADQKiAqJADYKjAqNADgKlAqjADoKsAqwAEoKsgqyAEsKtAq0AEwKtgq2AE0K1wrYAE4AAgAIBHIFFAAABRYFFwCjBRkFUQClBVMFVwDeBVkFoADjBaMFrAErBa4FtwE1BbkGZgE/AAEhUiGYAAUADAFOAFAAABV2AAAVfAAAFYIAABWIAAAVjgAAFZQAABWaAAAVoAAAFaYAABWsAAAVsgAAFbgAABW+AAAVxAAAFcoAABXQAAAV1gAAFdwAARZgAAEWZgABFmwAARZyAAQXDgAEFxQAARZ4AAEWfgABFoQAARaKAAEWZgABFpAAARaWAAEWnAABFqIAARaoAAEWrgACFvwAARa0AAEWugABFsAAARacAAEWxgABFswAARbSAAEW2AABFt4AAxcCAAMXCAABFuQAARbYAAEWugABFuoAABW4AAAV4gAAFegAABXuAAAV9AAAFfoAABYAAAAWBgAAFgwAABYSAAAWGAAAFh4AABYkAAAWKgAAFjAAABY2AAAWPAAAFkIAABZIAAAWTgAEFxoAARbwAAEWigAAFlQAABZaAAAWVAAAFloAABWsAAEW9gIFFd4f/h/+H/4f/hXwFeQV6h/+H/4V/BX2H/4f/h/+FggWAh/+H/4f/hYUFg4f/h/+H/4WJhYaFiAf/h/+FjIWLB/+H/4f/hZEFjgf/hY+H/4WUBZKH/4f/h/+FmIWVhZcH/4f/hZoFfYf/h/+H/4WbhXkH/4f/h/+FnoWdB/+H/4f/haGFoAf/h/+H/4WkhaMH/4f/h/+Fp4WOBaYH/4WpBawFqof/h/+H/4WvBa2H/4f/h/+FpIWwh/+H/4f/hbUFsgf/hbOH/4W4BbaH/4f/h/+FuwW5h/+H/4f/hb4FvIf/h/+H/4W/hZKH/4f/h/+FwoXBB/+H/4f/hccFxAXFh/+H/4XLhciFygf/h/+F0AXNB/+Fzof/hdSF0YXTB/+H/4XZBdYF14f/hdqF3YXcB/+H/4f/hdkF3wf/h/+H/4XghZWFlwf/h/+F4gW2h/+H/4f/heUF44f/h/+H/4WJhYaH/4f/h/+F6AXmh/+H/4f/haeFjgWmB/+FqQXph/+H/4f/h/+FggWAh/+H/4f/heyF6wf/h/+H/4Xvhe4H/4f/h/+FmgV9h/+H/4f/hXwFtof/h/+H/4XyhfEH/4f/h/+F9AW2h/+H/4f/hZQFkof/h/+H/4V8BXkH/4f/h/+FhQX1h/+F9wf/hZ6FnQf/h/+H/4X7hfiH/4X6B/+F/QX1h/+F9wf/hf6F+If/hfoH/4XHBcQFxYf/h/+GAwYABgGH/4f/hgeGBIYGB/+H/4YMBgkGCof/h/+GDwXcBg2H/4f/hhOGEIYSB/+H/4YYBhUGFof/h/+GHIYZhhsH/4f/hiEGHgYfh/+H/4YlhiKGJAf/h/+GJwV5BXqH/4f/hiiFeQV6h/+H/4V8BioFeof/h/+FxwYrhcWH/4f/hgMGLQYBh/+H/4YHhi6GBgf/h/+GDAYwBgqH/4f/hg8GMYYNh/+H/4YThjMGEgf/h/+GGAY0hhaH/4f/hhyGNgYbB/+H/4Y6hjeGOQf/h/+GPwY8Bj2H/4f/hkOGQIZCB/+H/4ZDhkUGRof/h/+GSwZIBkmH/4f/hksGTIZOB/+H/4ZShk+GUQf/h/+GVwZUBlWH/4f/hjqGWIf/hloH/4Y/Bc0H/4Zbh/+GQ4ZdB/+GXof/hkOGYAf/hmGH/4ZLBmMH/4Zkh/+GSwZmB/+GZ4f/hmwGaQf/hmqH/4ZsBmkH/4Zqh/+GcIZth/+Gbwf/hnUGcgf/hnOH/4WRBnaH/4WPh/+GOoZ4B/+GWgf/hj8GeYf/hluH/4ZDhnsH/4Zeh/+GQ4Z8h/+GYYf/hksGfgf/hmSH/4ZLBn+H/4Znh/+GbAaBB/+Gaof/hmwGgQf/hmqH/4Y6hoKGhAf/h/+GPwaFhocH/4f/hkOGN4aIh/+H/4ZDhlQGigf/h/+GSwaLho0H/4f/hksGjoaQB/+H/4YHhgSGkYf/h/+GB4YEhpGH/4f/hpYGkwaUh/+H/4aahpeGmQf/h/+GnAWVhZcH/4f/hp2FlYWXB/+H/4aiBp8GoIf/hqOGpoalBcoH/4aoBqmGXQZOB/+GqwavhqyGrgf/hrEGtYayhrQH/4a3BruGuIa6B/+GvQamhhmFygf/hqgGB4a+hsAH/4bBhsSGwwf/h/+H/4bHhsYH/4f/h/+GyobJB/+H/4f/hs2GzAf/h/+H/4bQhs8H/4f/h/+G0gXxB/+H/4f/hfKGBIf/h/+H/4bThbaH/4f/h/+G1QW2h/+H/4f/hdkF3wf/h/+H/4bYBtaH/4f/h/+G2wbZh/+H/4f/ht4G3If/h/+H/4bhBt+H/4f/h/+G5Abih/+H/4f/hucG5Yf/h/+H/4bqBuiH/4f/h/+G7Qbrh/+H/4f/hvAG7of/h/+H/4XChvGH/4f/h/+F2QbzB/+H/4f/htgG9If/h/+H/4bbBvYH/4f/h/+G3gb3h/+H/4f/huEG+Qf/h/+H/4bkBvqH/4f/h/+G5wb8B/+H/4f/huoG/Yf/h/+H/4b/Bh4H/4f/h/+HAIf/h/+H/4f/hwIH/4f/h/+H/4cFBwOH/4f/h/+HCAcGh/+H/4f/hwsHCYf/h/+H/4cOBwyH/4f/h/+HEQcPh/+H/4f/hxQHEof/h/+H/4cXBxWH/4f/h/+HGgcYh/+H/4f/hxuH/4f/h/+H/4cCBx0H/4f/h/+HIAceh/+H/4f/hxuFeQchh/+HIwcmBySH/4f/h/+HJ4f/h/+H/4f/hyqHKQf/h/+H/4csBYaH/4f/h/+HLwcth/+H/4f/hv8HMIf/h/+H/4cyB/+H/4f/h/+HM4f/h/+H/4f/hzaHNQf/h/+H/4c5hzgH/4f/h/+HFAcSh/+H/4f/hzsHEof/h/+H/4cUBxKH/4f/h/+G/wcwh/+H/4f/hzyHMIf/h/+H/4b/BzCH/4f/h/+HG4V5ByGH/4cjBzmHOAf/h/+H/4b/Bh4H/4f/h/+HCAcGh/+H/4f/hw4HDIf/h/+H/4c/hz4H/4f/h/+HAgf/h/+H/4f/hxuF9Yf/h/+H/4dEB0EH/4dCh/+HRwWjB/+HRYf/h0iHQQf/h0KH/4cbhXkHIYf/hyMHSgf/h/+H/4f/h0uH/4f/h/+H/4dOh00H/4f/h/+HEQf/h/+H/4f/h1AH/4f/h/+H/4dRhxWH/4f/h/+HVIdTB/+H/4f/hzIHVgf/h/+H/4dQBe4H/4f/h/+HV4f/h/+H/4f/hwgFowf/h0WH/4dcB1kH/4dah12HAgcdB/+H/4f/h18H/4f/h/+H/4dgh/+H/4f/h/+HYgf/h/+H/4f/h2OGHgf/h/+H/4dlBh4H/4f/h/+G/wYeB/+H/4f/hv8GHgf/h/+H/4b/Bh4H/4f/h/+G/wYeB/+H/4f/hv8GHgf/h/+H/4b/Bh4H/4f/h/+HZoYeB/+H/4f/h2gGHgf/h/+H/4b/Bh4H/4f/h/+HaYYeB/+H/4f/h2sGHgf/h/+H/4b/B2yH/4f/h/+HZodsh/+H/4f/h2gHbIf/h/+H/4djh2yH/4f/h/+HZQdsh/+H/4f/hv8HbIf/h/+H/4b/B2yH/4f/h/+G/wdsh/+H/4f/hv8HbIf/h/+H/4b/B2yH/4f/h/+G/wdsh/+H/4f/h24HbIf/h/+H/4dvhwaH/4f/h/+HcQcGh/+H/4f/hwgHBof/h/+H/4cIBwaH/4f/h/+HCAcGh/+H/4f/hwgHBof/h/+H/4dyhwaH/4f/h/+HdAcGh/+H/4f/h3WHDIf/h/+H/4d3BwyH/4f/h/+HDgcMh/+H/4f/hw4HDIf/h/+H/4cOBwyH/4f/h/+HDgcMh/+H/4f/hw4HDIf/h/+H/4cOBwyH/4f/h/+HeIcMh/+H/4f/h3oHDIf/h/+H/4cOBwyH/4f/h/+HDgd7h/+H/4f/h3iHe4f/h/+H/4d6B3uH/4f/h/+HdYd7h/+H/4f/h3cHe4f/h/+H/4cOB3uH/4f/h/+HDgd7h/+H/4f/hw4He4f/h/+H/4cOB3uH/4f/h/+HDgd7h/+H/4f/hw4He4f/h/+H/4d9B3uH/4f/h/+HfocSh/+H/4f/h4AHEof/h/+H/4cUBxKH/4f/h/+HFAcSh/+H/4f/hxQHEof/h/+H/4cUBxKH/4f/h/+HFAcSh/+H/4f/hxQHEof/h/+H/4eBhxKH/4f/h/+HgwcSh/+H/4f/hxQHEof/h/+H/4eEhxKH/4f/h/+HhgcSh/+H/4f/hxQHEof/h/+H/4cUBxKH/4f/h/+Hh4cSh/+H/4f/h4kFeQchh/+HIweKhXkHIYf/hyMHG4V5ByGH/4cjBxuFeQchh/+HIwcbhXkHIYf/hyMHG4V5ByGH/4cjB4wFeQchh/+HIweNhXkHIYf/hyMHjwf/h/+H/4f/h5CH/4f/h/+H/4djhzCH/4f/h/+HZQcwh/+H/4f/hv8HMIf/h/+H/4b/BzCH/4f/h/+G/wcwh/+H/4f/hv8HMIf/h/+H/4b/BzCH/4f/h/+G/wcwh/+H/4f/h2aHMIf/h/+H/4doBzCH/4f/h/+G/wcwh/+H/4f/h5IHMIf/h/+H/4eThzCH/4f/h/+G/wcwh/+H/4f/hv8HMIf/h/+H/4eVBzCH/4f/h/+Hloc4B/+H/4f/h5gHOAf/h/+H/4c5hzgH/4f/h/+HOYc4B/+H/4f/hzmHOAf/h/+H/4c5hzgH/4f/h/+HOYc4B/+H/4f/hzmHOAf/h/+H/4eZhzgH/4f/h/+Hmwc4B/+H/4f/hzmHOAf/h/+H/4c5h5yH/4f/h/+HmYech/+H/4f/h5sHnIf/h/+H/4eWh5yH/4f/h/+HmAech/+H/4f/hzmHnIf/h/+H/4c5h5yH/4f/h/+HOYech/+H/4f/hzmHnIf/h/+H/4c5h5yH/4f/h/+HOYech/+H/4f/h54HnIf/h/+H/4f/h5+H/4f/h/+HoQcJh/+H/4f/h6QFsgeih/+H/4enB6WH/4f/h/+Hqgeoh/+H/4f/h60Hq4f/h/+H/4ewBxWHrof/h/+Hswexh/+H/4f/h7eHtIf/h7YH/4e5B7SH/4f/h/+HvYe6h7wH/4f/h78F9Yf/h/+H/4fCB8CH/4f/h/+HxQfDh/+H/4f/h8aHtIf/h/+H/4fJh8gH/4f/h/+HzgfLB8yH/4fPh9KH0Qf/h/+H/4fUBpMH/4f/h/+H1wfVh/+H/4f/h9cH1Yf/h/+H/4faB9WH/4fYh/+H24cdB/+H/4f/h96H3Qf/h/+H/4fhh+AH/4f/h/+HuQe0h/+H/4f/h+MGHgf/h/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h72Huoe8B/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fOB8sHzIf/h8+H4wYeB/+H/4f/h6QFsgeih/+H/4ewBxWHrof/h/+Ht4e0h/+Htgf/h8mGgof/h/+H/4fkhaMH/4f/h/+Hxoe0h/+H/4f/h+eF44f/h+YH/4fqh/+H/4fpB/+H7AXjh/+H5gf/h84HywfMh/+Hz4fth/+H/4f/h/+Hqgeoh/+H/4f/h/CH7wf/h/+H/4fCB/IH/4f/h/+HvwX1h/+H/4f/h6cHpYf/h/+H/4e5B7SH/4f/h/+H9Qfzh/+H/4f/h/UH84f/h/+H/4f1B/OH/4f/h/+H3ofdB/+H/4f/h9KH0Qf/h/+H/4e/BfWH/4f/h/+H1AaTB/+H/4f/h/+H/4f/h+kH/4f2h/+H/4f/h/+H5If4B/+H/4f/h/sH+Yf/h/+H/4fFB8OH/4f/h/+H/IcVh/+H/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ekBbIHoof/h/+HpAWyB6KH/4f/h6QFsgeih/+H/4ewBxWHrof/h/+HsAcVh66H/4f/h7AHFYeuh/+H/4ewBxWHrof/h/+HsAcVh66H/4f/h7AHFYeuh/+H/4ewBxWHrof/h/+HsAcVh66H/4f/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+Ht4e0h/+Htgf/h7eHtIf/h7YH/4e3h7SH/4e2B/+HvYe6h7wH/4f/h72Huoe8B/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h72Huoe8B/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h72Huoe8B/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h72Huoe8B/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h72Huoe8B/+H/4e9h7qHvAf/h/+HvYe6h7wH/4f/h84HywfMh/+Hz4fOB8sHzIf/h8+HzgfLB8yH/4fPh84HywfMh/+Hz4fOB8sHzIf/h8+HzgfLB8yH/4fPh84HywfMh/+Hz4fOB8sHzIf/h8+H1AaTB/+H/4f/h9QGkwf/h/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fbhx0H/4f/h/+H24cdB/+H/4f/h9uHHQf/h/+H/4fbhx0H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4fjBh4H/4f/h/+H4wYeB/+H/4f/h+MGHgf/h/+H/4f/h5+H/4f/h/+H/gfgB/+H/4f/gAB/3kCDgAB/9ICDgAB/5UCDgAB/5wCDgAB/0gCDgAB/3cCDgAB/3gCDgAB/4cCDgAB/6QCDgAB/3QCDgAB/48CDgAB/4gCDgAB/6MCDgAB/+ECDgAB/6wCDgAB/4QCDgAB/88CDgAB/8sCDgAB/1ICDgAB/20CDgAB/1ACDgAB/2sCDgAB/2wCDgAB/2kCDgAB/48CsAAB/+YCsAAB/7ICsAAB/7QCsAAB/2oCsAAB/5ECsAAB/4wCsAAB/54CsAAB/7kCsAAB/4sCsAAB/6YCsAAB/7gCsAAB/8UCsAAB/5kCDgAB/7ECsAAB/1YAAAAB/1AAAAAB/3UAAAAB/1UAAAAB/48AAAAB/zQAAAAB/zgAAAAB/08AAAAB/5QAAAAB/4UAAAAB/y0AAAAB/1cAAAAB/4oAAAAB/1QAAAAB/5gAAAAB/0EAAAAB/yAAAAAB/ysAAAAB/zwAAAAB/yoAAAAB/0AAAAAB/wkAAAAB/4MAAAAB/w8AAAAB/4gAAAAB/yMAAAAB/8QAAAAB/ycBPQAB/1EBOAAB/1cCfgAB/6cCDgAB/74CsAABAM4CsAABAN4AAAABAb8AAAABAT8CsAABAPQAAAABAUUCsAABAF4AAAABAVcCsAABAOMAAAABAUMCsAABAN0AAAABAW0AAAABAT4CsAABALkAAAABAS0CsAABAQ4AAAABATkBWAABAWoCsAABARIAAAABAXUCsAABAF0AAAABAH4AAAABAL8CsAABAVwCsAABAUACsAABAUEAAAABAZcCsAABAQsAAAABAXQCsAABAL8AAAABAR8CsAABAWgAAAABAXkCsAABAi0CsAABAQcAAAABAWgCsAABANMAAAABAUECsAABAL4AAAABAMEAAAABAPEBWQABASECsAABAM8AAAABAS8CsAABAUYAAAABAacCsAABAMoAAAABASsCsAABAXMCsAABARQAAAABAXsCsAABAOYAAAABAccAAAABAUcCsAABATEAAAABAcEAAAABAZICsAABAWEAAAABAY0BWAABAb4CsAABALEAAAABANEAAAABARICsAABAUsAAAABAaUAAAABAbYCsAABAmoCsAABAUAAAAABAaECsAABAU8AAAABANcDdQABAUcDdQABAMQAAAABASUCsAABAQoAAAABAWwCsAABATACsAABAKgAAAABAQkCsAABAOEAAAABAUICsAABAUgAAAABAbgCsAABAVcDdQABAOIAAAABAVMBWgABAOUAAAABANgBWgABAVMCsAABAVkBjwABAN4BjwABAO0AAAABAc4AAAABAU4CsAABAVgAAAABAjkAAAABAbkCsAABAWIAAAABAkMAAAABAcQCsAABAiIAAAABAaICsAABAVQAAAABAjUAAAABAbUCsAABAWoAAAABAksAAAABAcsCsAABAWcAAAABAkgAAAABAckCsAABAPAAAAABAdEAAAABAVECsAABAOgAAAABAcoAAAABAUoCsAABAVgDeQABAVQDWQABAQj/SAABARD/SAABARf/SAABAYL/SAABAYz/SAABAWr/SAABAX7/SAABAZT/SAABAZH/SAABASoAAAABAboAAAABAIkCuQABATAAAAABAcAAAAABAIMCugABAaoAAAABAjoAAAABAQoCtAABAa0AAAABAj0AAAABAZQAAAABAiQAAAABANACtAABAaQAAAABAjQAAAABATsAAAABAcsAAAABAZwCsAABAS0AAAABAbwAAAABAY4CsAABAVoAAAABAYYBWAABAYwBWAABAdoAAAABAgYBWAABAd4AAAABAgkBWAABAcUAAAABAfEBWAABAdUAAAABAgABWAABAggAAAABAjQBWAABAmUCsAABAWwAAAABAZcBWAABAcgCsAABAV0AAAABAYkBWAABAboCsAABATj/SAABAYT/SAABAYv/SAABAgT/SAABAgj/SAABAe//SAABAf//SAABAjL/SAABAKoAAAABAMoAAAABALAAAAABANAAAAABAUoAAAABAU4AAAABARUAAAABATUAAAABASQAAAABAUQAAAABAXgAAAABALsAAAABANwAAAABAR0CsAABAK0AAAABAM0AAAABAQ4CsAABANcDeQABANQDWQABAU0AAAABAacAAAABAbcCsAABAmsCsAABAWYAAAABAdECsAABAoUCsAABAkUCsAABAvkCsAABAeoAAAABAkQAAAABAlQCsAABAwgCsAABAbgAAAABAhIAAAABAiMCsAABAtcCsAABAc4AAAABAigAAAABAjgCsAABAuwCsAABAU4AAAABAagAAAABAm0CsAABASYAAAABAIMCuQABAUkAAAABAakCsAABAcEAAAABAiECsAABAc8AAAABAi8CsAABAgAAAAABAmACsAABAagCsAABAUgDeQABAUQDWQABAW0AAAABAdQCsAABAeAAAAABAkcCsAABAe4AAAABAlUCsAABAb8AAAABAiYCsAABAdAAAAABAjcCsAABAdkAAAABAkACsAABAdsAAAABAkICsAABAXMAAAABAdoCsAABAVUAAAABAbwCsAABAT7/SAABAXn/SAABAZf/SAABAgr/SAABAhj/SAABAen/SAABAfr/SAABAgP/SAABAgX/SAABAR4CDgABAVUC4gABAPwCDgABANoAAAABAVAC4gABAMcAAAABAQkCDgABAHH/NwABARAC4gABAFMAAAABATACDgABANYAAAABAU0C4gABAFQAAAABAJ0CDgABAM0AAAABARcCDgABALcAAAABAR8C4gABASwCDgABALIAAAABAI3/NwABAToC4gABAS4AAAABAdQCDgABAN8AAAABASoCDgABAS4CDgABAI7/NwABAScCDgABATICDgABAKYAAAABAPACDgABANgAAAABAW0CDgABAPICDgABAR3/NwABAX8CDgABAToAAAABAX0CDgABALoC9wABAToC9wABALQAAAABAP0CDgABALwAAAABAKkBCQABARACDgABASQBCQABASoBPwABAK8BPwABAPsCDgABAOoCDgABAKUAAAABAQ0C4gABASsCDgABATUC4gABANj/NwABAVwC4gABASMAAAABASYCDgABADf/OAABAHsA8AABAMUDAwABAJAC4gABAUoC4gABAVUCDgABAS0CDgABAYMDHAABASEDHAABASgDGgABAT0DGwABAT8DEQABAToC2wABARr/SAABATsDAQABAW4DHAABAQwDHAABARMDGgABASkDGwABAZUDHAABATMDHAABAToDGgABAU8DGwABAH3/SAABAU0DAQABAQIDHAABAKADHAABAKgDGgABAL0DGwABAL4DEQABALkC2wABAMIDcgABAZEDHAABAS8DHAABATYDGgABAUwDGwABAZMDHAABATEDHAABAT4DEQABATkC2wABAUIDcgABAeIDHAABAYADHAABAYcDGgABAZ0DGwABAWT/SAABAZsDAQABAEH/SAABARcC4gABAYkAAAABARACMwABANcAAAABASwCMwABAKEAAAABAR0CMwABAMMAAAABARMCMwABAUwAAAABARkCMwABAKMAAAABAQMCMwABAPEAAAABARgBGwABAT8CMwABAUACMwABAFwAAAABAH8AAAABAKwCMwABATQCMwABALgAAAABAQwCMwABAR0AAAABAWYCMwABAUECMwABAKkAAAABAPkCMwABAOsAAAABAUEAAAABAUcCMwABAfECMwABAO8AAAABAT4CMwABARYCMwABAKcAAAABAPYCMwABAM0BJQABAPMCMwABAQQCMwABAR4AAAABAW4CMwABAK4AAAABAP0CMwABATsCMwABAQ8CMwABAK4BHQABAR4CMwABATUBHQABAToBSwABALMBSwABAQkCMwABAJIAAAABAOECMwABAL0AAAABALUAAAABAP4CMwABAK0CMwABAMAAAAABAMgAAAABARcCMwABASgCMwABAO0CDgABAAAAAAACAAsKRwp1AAAKdwp7AC8KfwqAADQKiAqJADYKjAqNADgKlAqjADoKsAqwAEoKsgqyAEsKtAq0AEwKtgq2AE0K1wrYAE4AAgAFBmcHKwAABy0HsQDFB7MHswFKB7UIbQFLCjYKNgIEAAFFikXQAAUADAFOAFAAAiwWAAIsHAACLCIAAiwoAAIsLgACLDQAAiw6AAIsQAACLEYAAixMAAIsUgACLFgAAixeAAIsZAACLGoAAixwAAIsdgACLHwAACt0AAAregAAK4AAACuGAAMtAAADLQYAACuMAAArkgAAK5gAACueAAAregAAK6QAACuqAAArsAAAK7YAACu8AAArwgABLBAAACvIAAArzgAAK9QAACuwAAAr2gAAK+AAACvmAAAr7AAAK/IABC0SAAQtGAAAK/gAACvsAAArzgAAK/4AAixYAAIsggACLIgAAiyOAAIslAACLJoAAiygAAIspgACLKwAAiyyAAIsuAACLL4AAizEAAIsygACLNAAAizWAAIs3AACLOIAAizoAAIs7gADLQwAACwEAAArngACLPQAAiz6AAIs9AACLPoAAixMAAAsCgQ4K9wr4ivoRDZENivcK+Ir7kQ2RDYr3CviK/RENkQ2K9wr4iv6RDZENiwAK+Ir9EQ2RDYr3CviLAZENkQ2K9wr4iwMRDZENivcK+IsEkQ2RDYr3CviLBhENkQ2K9wr4iweLCRENivcK+IsKiwwRDYsACviLB4sJEQ2K9wr4iw2LDxENivcK+IsQixIRDYr3CviLE4sSEQ2K9wr4ivoRDZENivcK+IsVEQ2RDYr3CviLFpENkQ2K9wr4ixgRDZENiwAK+Ir6EQ2RDYr3CviLGZENkQ2K9wr4ivuRDZENivcK+IsbEQ2RDYr3CviLHJENkQ2LHhENix+RDZENivcK+IshEQ2RDYr3CviK+hENkQ2K9wr4iyKRDZENivcK+IskEQ2RDYr3EQ2K+hENkQ2K9wr4iyWRDZENiycRDYsokQ2RDYsnEQ2LKhENkQ2LJxENiyuRDZENiy0RDYsukQ2RDYstEQ2LMBENkQ2LMZENiy6RDZENkQ2RDYszEQ2RDYs0kQ2LNhENkQ2LN5ENizkRDZENivcRDYs6kQ2RDYs8EQ2LPZENkQ2LPBENiz8RDZENizwRDYtAkQ2RDYtCEQ2LPZENkQ2LPBENi0OLRRENizwRDYtGkQ2RDZENkQ2LSBENkQ2LSZENi0sRDZENi0mRDYtMkQ2RDYtOEQ2LURENi0+LUpENi1QRDYtPi1KRDYtVkQ2LT4tXEQ2LWhENi1iLVxENi1oRDYtYi04RDYtbkQ2LT4tdEQ2LURENi0+LVxENi1oRDYtYi04RDYtekQ2LT4tgEQ2LURENi0+LYZENi2SRDYtjC2YRDYtREQ2LT4r3EQ2K+hENkQ2LZ5ENi2kRDYtPi2eRDYtqkQ2LT4tsC22LOpENkQ2LbAtti28RDZENi2wLbYtwkQ2RDYtsC22LchENkQ2LbAttizqRDZENi2wLbYtzi3URDYtsC22Ldot4EQ2LeYtti3OLdRENi2wLbYt7C3yRDYtsC22LfgsPEQ2LbAtti3+LDxENi2wLbYs6kQ2RDYtsC22LgRENkQ2LbAtti4KRDZENi3mLbYs6kQ2RDYtsC22LbxENkQ2LbAtti4QRDZENi2wLbYuFkQ2RDYtsC22LhxENkQ2LbAttizqRDZENi2wRDYuIkQ2RDYuKEQ2Li5ENkQ2LjQtti46RDZENi2wLbYuQEQ2RDYuRkQ2LkxENkQ2LkZENi5SRDZENi5YRDYuXkQ2RDYuZEQ2LmpENkQ2LmRENi5wRDZENi5kRDYuakQ2RDYudkQ2LnxENkQ2LnZENi6CRDZENi52RDYuiEQ2RDYudkQ2Lo5ENkQ2LnZENi6ULppENi52RDYufEQ2RDYudkQ2LqBENkQ2LThENiy6RDZENi6mRDYurEQ2RDYs3kQ2LWhENkQ2RDZENi5eRDZENi6yRDYuvkQ2LrguxEQ2LspENi1iLrJENi7QRDYuuC6yRDYu1i7cLrgu4kQ2Lr5ENi64LuhENi70RDYu7i76RDYvAEQ2RDYvBkQ2LwxENkQ2LxIvGC8eRDZENi8SLxgvJEQ2RDYvEi8YLypENkQ2LxIvGC8wRDZENi8SLxgvNkQ2RDYvEi8YLzwvQkQ2LxIvGC8eRDZENi8SLxgvSEQ2RDYvEi8YLx5ENkQ2LxIvGC9ORDZENi9ULxgvHkQ2RDYvEi8YL1pENkQ2LxIvGC9gRDZENi8SLxgvZkQ2RDYvEi8YL2xENkQ2LxIvGC8eRDZENi9yRDYveEQ2RDYvfi+EL4pENkQ2LxIvGC+QRDZENkQ2RDYvlkQ2RDZENkQ2L5wvokQ2RDZENi+oRDZENkQ2RDYvrkQ2RDYstEQ2L7RENkQ2LLRENi+6RDZENiy0RDYvtEQ2RDYvwEQ2L8ZENkQ2L8xENi8eL9gv0i/MRDYv3i/YL9IvzEQ2Lyov2C/SL+RENi/wL/Yv6i/8RDYwCDAOMAIvzEQ2Lx4v2C/SMBRENi8eL9gv0i/MRDYvHi/YL9IvzEQ2MBov2C/SMCBENi8eL9gv0jAmRDYwMjA4MCwwPkQ2MEowUDBEMFZENjBcRDZENjBWRDYwYkQ2RDYwVkQ2MGhENkQ2MG5ENjB0RDZENjB6RDYwgEQ2RDYwekQ2MIZENkQ2MHpENjCMRDZENjB6RDYwkkQ2RDYwmEQ2MIBENkQ2MHpENjCARDZENjB6RDYwnkQ2RDYwpEQ2MIBENkQ2MHpENjCMRDZENjB6RDYwgEQ2RDYwekQ2MIBENkQ2MKpENjC2MLwwsEQ2RDYwwkQ2RDYwekQ2MMhENkQ2LrIwzjDUMNpENjDgRDYtaEQ2RDYusjDOMOYw2kQ2LrIwzjDsMNpENi6yMM4w8jDaRDYw+EQ2MIBENkQ2LrIwzjD+MQRENi6yMM4xCjEQRDYxFjDOMP4xBEQ2LrIwzjEcMSJENi6yMM4xKDEuRDYusjDOMTQxLkQ2LrIwzjDUMNpENi6yMM4xOjDaRDYusjDOMUAw2kQ2LrIwzjFGMNpENi6yMM4xTDDaRDYxFjDOMNQw2kQ2LrIwzjDmMNpENi6yMM4xUjDaRDYusjDOMNQxWEQ2LrIwzjDmMVhENjEWMM4w1DFYRDYusjDOMOYxWEQ2LrIwzjFSMVhENi6yMM4xXjFYRDYusjDOMNQw2kQ2RDZENjB0RDZENi6yMM4xZDDaRDYusjDOMWow2kQ2LrIwzjFwMNpENi6yMM4xcDDaRDYxdkQ2MXxENkQ2LrIwzjDUMNpENi6yMM4xajDaRDYxgkQ2LkxENkQ2MPhENjGIRDZENjD4RDYxjkQ2RDYusjDOMV4w2kQ2LrIwzjGUMNpENi6yMM4xmjDaRDYxoEQ2MaZENkQ2MaxENjGyRDZENjGsRDYxuEQ2RDYxrEQ2Mb5ENkQ2McRENjHKRDZENivcRDYr6EQ2RDYs8EQ2MdBENkQ2RDZENjHWRDZENjHcRDYtMkQ2RDYx3EQ2MeJENkQ2MdxENjHoRDZENjHcRDYtMkQ2RDYx3EQ2LTJENkQ2Me5ENi0yRDZENjHcRDYx9EQ2RDYx+kQ2MgBENkQ2MdxENi0yRDZENjIGRDYyDEQ2RDYyBkQ2MhJENkQ2MgZENjIYRDZENjIeRDYyDEQ2RDYyBkQ2MiQyKkQ2MgZENjIMRDZENjIGRDYyMEQ2RDYyNkQ2MgxENkQ2LThENjI8RDZENi5GRDYuXkQ2MkIuRkQ2Ll5ENjJCLkZENjJIRDYyQi5GRDYuXkQ2MkIyTkQ2Ll5ENjJCLkZENi5eRDYyQi5GRDYuXkQ2RDYuRkQ2MlRENjJCMlpENi5eRDYyQjJgRDYyZkQ2RDYybEQ2Ll5ENjJCK9xENivoRDZENjJyRDYuakQ2RDYuRkQ2Ll5ENjJCMngyfjKEMopENjJ4Mn4ykDKKRDYs8DKWMpwyokQ2MngyfjKoMopENjJ4Mn4yrjKKRDYyeDJ+MrQyukQ2MngyfjKEMopENjJ4Mn4ywDKKRDYyeDJ+MoQyikQ2MngyfjLGMopENjJ4Mn4yhDKKRDYyeDJ+MswyikQ2MtIyfjKEMopENjJ4Mn4y2DKKRDYyeDJ+Mt4yikQ2MngyfjKEMuRENjJ4Mn4ykDLkRDYy0jJ+MoQy5EQ2MngyfjKQMuRENjJ4Mn4y3jLkRDYyeDJ+Muoy5EQ2MngyfjKEMopENjJ4Mn4y8DKKRDYyeDJ+MvYyikQ2MngyfjKEMopENix4RDYx0EQ2RDYyeDJ+MvwyikQ2MngyfjLqMopENjJ4Mn4zAjKKRDYzCEQ2Mw5ENkQ2RDZENjMORDZENi/ARDYvxkQ2RDYr3EQ2LMxENkQ2MxRENjMaRDZENjMURDYzIEQ2RDYzFEQ2MyYzLEQ2MxRENjMyRDZENjMURDYzIEQ2RDYzFEQ2MzhENkQ2K9xENivoRDZENjJyRDYzPkQ2RDYyBkQ2M0RENkQ2MgZENjNKRDZENjIGRDYzUDNWRDYyBkQ2M1xENkQ2MjZENjNERDZENjIGRDYzYkQ2RDYyBkQ2K+hENkQ2MgZENjNoRDZENjIGRDYzbkQ2RDZENkQ2M3RENkQ2MgZENjN6RDZENjIGRDYzgEQ2RDYzhkQ2M4xENkQ2M4ZENjOSRDZENjOGRDYzmEQ2RDYzhkQ2M55ENkQ2M6RENjOMRDZENkQ2RDYzqkQ2RDYzsEQ2M7ZENkQ2K9wr4ivoRDZENi2wLbYs6kQ2RDYvEi8YLx5ENkQ2LrIwzjDUMNpENjJ4Mn4yhDKKRDYs8EQ2LPZENkQ2MHpENjCARDZENi6yMM4w1DDaRDYyBkQ2MgxENkQ2M4ZENjOMRDZENkQ2RDYzvEQ2RDZENkQ2M7xENkQ2RDZENjPCRDZENivcRDYs6kQ2RDYzyEQ2MgxENkQ2M85ENjPURDZENjPaRDYz4DPmRDYwPkQ2M+xENkQ2MD5ENjPyRDZENi9+RDYz+EQ2RDYz/kQ2NARENkQ2NApENjQQNBZENjMURDY0HEQ2RDYvzEQ2NCJENkQ2NChENjQuRDZENiy0NDQ0OkQ2RDYstDQ0NEBENkQ2LLQ0NDRGRDZENiy0NDQ0TEQ2RDYsxjQ0NEZENkQ2LLQ0NDRMRDZENiy0NDQ0UkQ2RDYstDQ0NFhENkQ2LLQ0NDReRDZENiy0NDQ0ZEQ2RDYstDQ0NGo0cEQ2LMY0NDRkRDZENiy0NDQ0djR8RDYstDQ0NII0iEQ2LLQ0NDSONJRENiy0NDQ0mkQ2RDYstDQ0NKBENkQ2LLQ0NDSmRDZENiy0NDQ0rEQ2RDYsxjQ0NDpENkQ2LLQ0NDSyRDZENiy0NDQ0uEQ2RDYstDQ0NL5ENkQ2LLQ0NDTERDZENivcRDY0ykQ2RDYr3EQ2NMpENkQ2LLQ0NDTQRDZENiy0NDQ0OkQ2RDYstDQ0NNZENkQ2LLQ0NDTcRDZENjTiRDY06EQ2RDYstDQ0NO5ENkQ2NPRENjT6RDZENjUARDY1BkQ2RDY1AEQ2NQxENkQ2NQBENjUSRDZENi/kRDY1GDUeRDYv5EQ2NSQ1HkQ2NSpENjUYNR5ENkQ2RDY1MEQ2RDY1NkQ2NTxENkQ2NUJENjVIRDZENjVORDY1VEQ2RDYwPkQ2NVo1YEQ2NTZENjU8RDZENjVmRDY1bDVyRDY1ZkQ2NXg1ckQ2NWZENjV+NXJENjIeRDY1bDVyRDY1ZkQ2NYQ1ckQ2MaxENjWKRDZENjVmRDY1kDVyRDZENkQ2NZZENkQ2NZxENjWiRDZENjWoRDY0OkQ2RDY1ZkQ2NWw1ckQ2L+RENjU8NbQ1rjW6RDYz7EQ2RDY1wEQ2NcZENkQ2L+RENjU8NbQ1rjXMRDY1PDW0Na4v5EQ2NTw1tDWuRDZENjXSRDZENi/kRDY12DW0Na41KkQ2NTw1tDWuRDZENjXeRDZENjXkRDY16jW0Na418EQ2NfZENkQ2NfxENjU8NbQ1rjYCRDY2CDW0RDY0CkQ2Ng5ENkQ2NhRENjYaNbQ1rjYgRDY2JjW0Na42FEQ2Niw1tDWuL+RENjYyNbQ1rjTiNjg06EQ2RDY04jY4Nj5ENkQ2NOI2ODZERDZENjTiNjg2SkQ2RDY2UDY4NOhENkQ2NOI2ODZWRDZENjTiNjg2XDZiRDY2aDY4NlZENkQ2NOI2ODZuNnRENjTiNjg2ejaARDY04jY4NoY2jEQ2NOI2ODaSRDZENjTiNjg2mEQ2RDY04jY4Np5ENkQ2Nmg2ODToRDZENjTiNjg2pEQ2RDY04jY4NqpENkQ2NOI2ODawRDZENjTiNjg2tkQ2RDY04jY4NOhENkQ2NrxENjbCRDZENi40RDY2yEQ2RDY2zkQ2NtRENkQ2NtpENjbgRDZENjbORDY21EQ2RDY25kQ2NuxENkQ2NvJENjb4RDZENjb+RDY3BEQ2RDZENkQ2NwpENkQ2NxBENjcWRDZENjPORDYz1EQ2RDY04jY4NxxENkQ2M843IjcoRDZENjPONyI3KEQ2RDYzzjciNyhENkQ2Ny5ENjc0RDZENjcuRDY3OkQ2RDY3QEQ2N0ZENkQ2RDZENjdMRDZENjdSRDY3WEQ2RDY3XkQ2N2RENkQ2N15ENjdkRDZENjdeRDY3akQ2RDY3XkQ2N2pENkQ2N3BENjd2N3xENjeCRDY3iDeORDY3gkQ2N5Q3jkQ2N5pENjegRDZENjeCRDY3pjeORDY3gkQ2N6w3jkQ2N4JENjeyN45ENjeCRDY3iDeORDY3gkQ2N7g3jkQ2N75ENjfERDZENjfKRDY30EQ2RDY31kQ2N9w34kQ2N8pENjfQRDZENjfoRDY37kQ2RDY39EQ2N/pENkQ2N9ZENjfcN+JENjfoRDY37kQ2RDY3gkQ2N4g3jkQ2RDZENjgARDZENkQ2RDY4BkQ2RDY18EQ2OBJENjgMM8hENjgYRDY1rjXwRDY4HkQ2OAw18EQ2OCQ4KjgMODBENjgSRDY4DDg2RDY4PEQ2RDY4QkQ2ODxENkQ2OEhENjhORDZENjhURDY4WkQ2RDY4VEQ2OFpENkQ2OGBENjhmRDZENjhsOHg4fkQ2OHI4bDh4OIRENjhyOGw4eDiKRDY4cjhsOHg4kEQ2OHI4bDh4OJZENjhyOGw4eDicRDY4cjhsOHg4okQ2OHI4bDh4OKhENjhyOGw4eDiERDY4cjhsOHg4fkQ2OHI4rjh4OH5ENjhyOGw4eDiERDY4cjhsOHg4tEQ2OHI4bDh4OLpENjhyOGw4eDjARDY4cjjGOHg40jjYOMw4bDh4ON5ENjhyOGw4eDh+RDY4cjjkRDY46kQ2RDY48C8YOPxENjj2OGw4eDkCRDY4cjkIRDY5FDkaOQ45CEQ2OSA5GjkOOQhENjkmORo5DjkIRDY5LDkaOQ45MkQ2OThENkQ2OT5ENjP4OUo5RDlQRDY5VkQ2RDY5PkQ2OVw5SjlENfBENjliOWhENjXwRDY5bjloRDY18EQ2OWI5aEQ2OXRENjbCRDZENjl6RDY3WEQ2RDY5gEQ2OYxENjmGOYBENjmSRDY5hjmYRDY5nkQ2RDY5pEQ2ObBENjmqM/5ENjm8RDY5tjmARDY5jEQ2OYY5wkQ2OYxENjmGOYBENjmMRDY5hkQ2RDY5yEQ2RDY5gEQ2Oc5ENjmGOdRENjmMRDY5hjna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RDY60EQ2RDY+NkQ2PjxENkQ2PkJENjxERDZENj5CRDY+SEQ2RDY+QkQ2Pk5ENkQ2PkJENj5URDZENj5aRDY8REQ2RDY+QkQ2PmBENkQ2RDZENj5mRDZENj5CRDY+bEQ2RDY+QkQ2PnJENkQ2PnhENjegRDZENj5CRDY+fkQ2RDY+hEQ2PopENkQ2PaxENjdGRDZENj2sRDY+kEQ2RDY9rEQ2PpZENkQ2PpxENjdGRDZENj2sRDY+okQ2RDY+qEQ2N0ZENkQ2RDZENj6uRDZENj60RDY3RkQ2RDY+ukQ2PsBENkQ2RDZENj7ARDZENiy0NDQ0OkQ2RDY04jY4NOhENkQ2OGw4eDiERDY4civcOso60DrWRDYv5D0oNOg9LkQ2NWZENjVsNXJENjXwRDY6ajUeRDYr3DrKOtA61kQ2Ns5ENjQuRDZENj2sRDY3RkQ2RDZENkQ2OWJENkQ2RDZENj7GRDZENkQ2RDY+zEQ2RDYyBkQ2PthENj7SLxJENj7eRDZENj0QRDY+6kQ2PuQ1ZkQ2PvBENkQ2N9ZENj72RDZENkQ2RDY+/EQ2RDYx3EQ2Pwg/Dj8CPxRENj8aRDZENjBWRDY/IEQ2RDZENkQ2PyZENkQ2L+RENj8sRDZENj8yRDY/OEQ2RDZENkQ2Pz5ENkQ2LkY/RD9KRDZENi5GP0Q/UEQ2RDYuRj9EP0pENkQ2LkY/RD9WRDZENj9cP0Q/SkQ2RDYuRj9EP1ZENkQ2LkY/RD9iRDZENi5GP0Q/aEQ2RDYuRj9EP25ENkQ2LkY/RD9KRDZENi5GP0Q/dD96RDY/XD9EP0pENkQ2LkY/RD+AP4ZENi5GP0Q/jD+SRDYuRj9EP5g/nkQ2LkY/RD+kRDZENi5GP0Q/SkQ2RDYuRj9EP6pENkQ2LkY/RD9KRDZENj9cP0Q/SkQ2RDYuRj9EP7BENkQ2LkY/RD9KRDZENi5GP0Q/tkQ2RDYuRj9EP7xENkQ2LkY/RD9KRDZENi5GP0Q/SkQ2RDYuRj9EP0pENkQ2LkY/RD/CRDZENi5YRDY/yEQ2RDYuRj9EP0pENkQ2P85ENj/URDZENj/ORDY/2kQ2RDY/zkQ2P9RENkQ2L8xENj/gRDZENi/MRDY/4EQ2RDYwIEQ2P+BENkQ2LrJENj/mRDZENjIGRDY/JkQ2RDY36EQ2P+xENkQ2LVxENj/yRDZENi1c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aWcIsmRsaWcIuGRsaWcIvmRsaWcIxGRsaWcIymRsaWcI0GRsaWcI1mRsaWcI3GRsaWcI4mRsaWcI6GRsaWcI7mRub20I9GRub20I+mRub20JAGRub20JBmRub20JDGRub20JEmRub20JGGRub20JHmRub20JJGRub20JKmRub20JMGRub20JNmZyYWMJPGZyYWMJRmZyYWMJUGZyYWMJWmZyYWMJZGZyYWMJbmZyYWMJeGZyYWMJgmZyYWMJjGZyYWMJlmZyYWMJoGZyYWMJqmxpZ2EJtGxpZ2EJumxpZ2EJwGxpZ2EJxmxpZ2EJzGxpZ2EJ0mxpZ2EJ2GxpZ2EJ3mxpZ2EJ5GxpZ2EJ6mxpZ2EJ8GxpZ2EJ9mxudW0J/GxudW0KAmxudW0KCGxudW0KDmxudW0KFGxudW0KGmxudW0KIGxudW0KJmxudW0KLGxudW0KMmxudW0KOGxudW0KPmxvY2wKRGxvY2wKSmxvY2wKUGxvY2wKVmxvY2wKXGxvY2wKYmxvY2wKaGxvY2wKbmxvY2wKdGxvY2wKemxvY2wKgGxvY2wKhmxvY2wKjGxvY2wKkmxvY2wKmG1ncmsKnm1ncmsKpG1ncmsKqm1ncmsKsG1ncmsKtm1ncmsKvG1ncmsKwm1ncmsKyG1ncmsKzm1ncmsK1G1ncmsK2m1ncmsK4G51bXIK5m51bXIK7G51bXIK8m51bXIK+G51bXIK/m51bXILBG51bXILCm51bXILEG51bXILFm51bXILHG51bXILIm51bXILKG9udW0LLm9udW0LNG9udW0LOm9udW0LQG9udW0LRm9udW0LTG9udW0LUm9udW0LWG9udW0LXm9udW0LZG9udW0Lam9udW0LcG9yZG4Ldm9yZG4Lfm9yZG4Lhm9yZG4Ljm9yZG4Llm9yZG4Lnm9yZG4Lpm9yZG4Lrm9yZG4Ltm9yZG4Lvm9yZG4Lxm9yZG4LznBudW0L1nBudW0L3HBudW0L4nBudW0L6HBudW0L7nBudW0L9HBudW0L+nBudW0MAHBudW0MBnBudW0MDHBudW0MEnBudW0MGHNhbHQMHnNhbHQMJHNhbHQMKnNhbHQMMHNhbHQMNnNhbHQMPHNhbHQMQnNhbHQMSHNhbHQMTnNhbHQMVHNhbHQMWnNhbHQMYHNtY3AMZnNtY3AMbHNtY3AMcnNtY3AMeHNtY3AMfnNtY3AMhHNtY3AMinNtY3AMkHNtY3AMlnNtY3AMnHNtY3AMonNtY3AMqHNzMDEMrnNzMDEMtHNzMDEMunNzMDEMwHNzMDEMxnNzMDEMzHNzMDEM0nNzMDEM2HNzMDEM3nNzMDEM5HNzMDEM6nNzMDEM8HNzMDIM9nNzMDIM/HNzMDINAnNzMDINCHNzMDINDnNzMDINFHNzMDINGnNzMDINIHNzMDINJnNzMDINLHNzMDINMnNzMDINOHNzMDMNPnNzMDMNRHNzMDMNSnNzMDMNUHNzMDMNVnNzMDMNXHNzMDMNYnNzMDMNaHNzMDMNbnNzMDMNdHNzMDMNenNzMDMNgHNzMTANhnNzMTANjHNzMTANknNzMTANmHNzMTANnnNzMTANpHNzMTANqnNzMTANsHNzMTANtnNzMTANvHNzMTANwnNzMTANyHN1YnMNznN1YnMN1HN1YnMN2nN1YnMN4HN1YnMN5nN1YnMN7HN1YnMN8nN1YnMN+HN1YnMN/nN1YnMOBHN1YnMOCnN1YnMOEHN1cHMOFnN1cHMOHHN1cHMOInN1cHMOKHN1cHMOLnN1cHMONHN1cHMOOnN1cHMOQHN1cHMORnN1cHMOTHN1cHMOUnN1cHMOWHRudW0OXnRudW0OZHRudW0OanRudW0OcHRudW0OdnRudW0OfHRudW0OgnRudW0OiHRudW0OjnRudW0OlHRudW0OmnRudW0OoHplcm8Opnplcm8OrHplcm8Osnplcm8OuHplcm8Ovnplcm8OxHplcm8Oynplcm8O0Hplcm8O1nplcm8O3Hplcm8O4nplcm8O6AAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAEAJAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAQALQAuAC8AMAAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAEAJgAAAAMAAgADAAQAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABACwAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABABEAAAABABMAAAABABIAAAABAA8AAAABAAYAAAABAAoAAAABAAcAAAABABAAAAABAAgAAAABAAsAAAABAAwAAAABAA4AAAABAA0AAAABAAkAAAABAAUAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAACABwAHQAAAAIAHAAdAAAAAgAcAB0AAAACABwAHQAAAAIAHAAdAAAAAgAcAB0AAAACABwAHQAAAAIAHAAdAAAAAgAcAB0AAAACABwAHQAAAAIAHAAdAAAAAgAcAB0AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACUAAAABACULCAABACMLAgABACMK/AABACMK9gABACMK8AABACMK6gABACMK5AABACMK3gABACMK2AABACMK0gABACMKzAABACMKxgABACMWtgABACgWsAABACgWqgABACgWpAABACgWngABACgWmAABACgWkgABACgWjAABACgWhgABACgWgAABACgWegABACgWdAABACgWgAABACkWegABACkWdAABACkWbgABACkWaAABACkWYgABACkWXAABACkWVgABACkWUAABACkWSgABACkWRAABACkWPgABACkWQgABACoWPAABACoWNgABACoWMAABACoWKgABACoWJAABACoWHgABACoWGAABACoWEgABACoWDAABACoWBgABACoWAAABACoAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcAAAABACcANABqAHIAegCCAJIAnACkAKwAtAC8AMQAzgDWAN4A5gDuAPYA/gEGAQ4BFgEeASYBLgE2AT4BRgFOAVgBYgFqAXIBegGCAYoBkgGaAaIBqgGy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Cf0KGwocCh0KHgofCiAKIQoiAAItCgBwCHsIfAh9CH4IfwiACIEIggiDCIQIkQiSCJMIlAiVCJYIlwiYCJkImgjqCOwJCgkMCUEJQglDCUQJRQlGCUcJSAlJCUoJSwlMCU0JTglPCVAJUQljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCfsJ/QoWChcKGAoZCh8KIAohCiIAAiygADgBRwFIAUkC+ARaBFsEXAUBBQIFAwUEBQUFBgUKBQsFDAUNBQ4FDwUQBREFEgUHBQgFCQWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BbEFsgWzAAABAAACLCYAOAFHAUgBSQL4BFoEWwRcBQEFAgUDBQQFBQUGBQoFCwUMBQ0FDgUPBRAFEQUSBQcFCAUJBaEFogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFtAW1BbYFtwW4BbkFugW7BbwFvQW+Bb8FsQWyBbMAAiwkApYDIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDDwM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRAMQA0UDRgNHA0gDSQNKA0sDTANNAxEDTgNPA1ADWgNbAxIDUQNSA1MDVANVA1YDVwNZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3cDeAN5A3oDfQMTA4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DFAMVAxYDkAOeA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA58DoAMXA6EDogOjA6QDGAOlA6YDpwOoA6oDqwOzA6wDrQMZA64DrwOwA7EDsgOzA74DvwPAA8EDwgPDA84DxAPGA8cDyAPJA8oDywPMA80DzgMaA88D0AP3A9ED0wPUA9ID1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuAxsD7wPwA/ED8gPzA/QD9QP2A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQHBAgDHQQJBAoECwQMBA0EDgQPBBAEEQN2BBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkDHgQ6BDsEPAQ9Ax8EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUAMcBFEEUgRTBFQEVQRWBFcEWARZA7QDtQO2A7cDuAO5A7oDuwO8A70GZQXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BgAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhYGFQYXBhgGGQYaBhsGHAYdBh4GIwYkBiUGJgYnBigGKQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGHwYgBiEGIgZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAfvB7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfHB8gHyQfKB8sHzAfNB9YH1wfYB84H1AfRB9UHzwfSB9kH2gfbB98H4AfhB+IH4wfkB+cH6AfpB7wH8QfuB/IH3AfdB94H9Af1B/YH9wf4B/kH+gf7B/wH/Qf/CAAIAQgECAUIBggHCAgICQgKCAsIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IIAgjCCQIJQgmCCcIKAgpCCoILAgtCC4ILwgwCDEIMggzCDQINQg3CDgIPAg9CD4IPwhACEEIQghDCEUIRwhJCEsITQhOCE8IUQhSCFYIVwhYCFkIWghbCFwIXQheCF8IYQhkCGUIZghnCGgIaQhqCGsKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCtEK0grTCtUKzwrQCtQK/wsECwULCQs4AAIndALGAxwDIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN9A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkDegN6A7QDtQO2A7cDuAO5A7oDuwO8A70DewN8A34DfwXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BgAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GIwYkBiUGJgYnBigGKQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGHwYgBiEGIgXOBdEGWQXWBdwF3QZaBlwF+wYMBg0GDwYQBhQGFgZdBl4GXwYmBicGYAYpBkIGQwZhBkwGYgZjBmQGVgXNBc8F0gXiBeUGZQe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wgACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrRCtIK0wrVCs8K0ArUCv8LBAsFCwkLOAACI+QAUgjoCOkI9wj4CPkI+gj7CPwJBgkHCQgJCQkZCRoJGwkcCZkKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwraCt0K4Ar0CuMK5QrnCukK6wrwCvIK+AsICw8LJAslCxgLGQsaCxsLHAsdCx4LHwsmCygLLQsuCywLQAs0CzULNws7Cz0LPwtCAAIj4gAECJwIhQiQCJsAAAEBAAIj3AAEAUoBSwRdBF4AAAECAAEj1gAaAAABAwACI9IAAweyB7MHtAABI9AAAgAKAEoABwAQABgAIAAoAC4ANAA6AvoAAwHLAe4C+wADAcsCAwL8AAMBywIRAvkAAgHLAwMAAgHuAwAAAgIDAwQAAgIRAAcAEAAYACAAKAAuADQAOgMHAAMC7AHuAwgAAwLsAgMDCQADAuwCEQMKAAIB7gMLAAICAwMMAAICEQMGAAIC7AABI0YAAgAKAEAABgAOABYAHgAkACoAMAL7AAMBywIDAv4AAwHLAosDDQACAe4DAAACAgMDDgACAhEDAgACAosAAQAEAwYAAgLsAAMAAAABIwQAASMSAAEAAAAzAAEjcAAMAB4AKAAyADwARgBQAFoAZABuAHgAggCMAAEABAK4AAIKdAABAAQCuQACCnQAAQAEAroAAgp0AAEABAK7AAIKdAABAAQCvAACCnQAAQAEAr0AAgp0AAEABAK+AAIKdAABAAQCvwACCnQAAQAEAsAAAgp0AAEABALBAAIKdAABAAQCwgACCnQAAQAEChoAAgoAAAMAASL2AAEjZgAAAAEAAAAzAAMAASNaAAEjoAAAAAEAAAAzAAMAASLSAAEjlAAAAAEAAAAzAAMAASM2AAEjiAAAAAEAAAAzAAMAAAABI3wAASOMAAEAAAAzAAMAAAABJA4AASN6AAEAAAAzAAMAAAABJAwAASNoAAEAAAAzAAMAAAABJAoAASNWAAEAAAAzAAMAAAABJAgAASNEAAEAAAAzAAMAAAABJAYAASMyAAEAAAAzAAMAAAABI/oAASMgAAEAAAAzAAMAASMOAAEi/gAAAAEAAAAzAAMAASL8AAEjkAAAAAEAAAAzAAMAASLqAAEjjgAAAAEAAAAzAAMAASLYAAEjjAAAAAEAAAAzAAMAASLGAAEjigAAAAEAAAAzAAMAASK0AAEjiAAAAAEAAAAzAAMAASKiAAEjfAAAAAEAAAAzAAMAARoaAAEjegAAAAEAAAAzAAMAASO6AAEjaAAAAAEAAAAzAAIj+gSlAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDDwM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRAMQA0YDRwNIA0oDSwNMA00DEQNOA08DUANaA1sDEgNRA1IDUwNUA1UDVgNXA1kDWgNbA1wDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3cDeAN5A3oDfQMTA4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DFAMWA5ADngOTA5QDlQOWA5cDmAOZA5oDmwOcA50DnwOgAxcDoQOiA6MDpAMYA6UDpgOnA6gDqgOrA7MDrAOtAxkDrgOvA7ADsQOyA7MDvgO/A8ADwQPCA8MDzgPGA8cDyAPJA8oDywPOAxoDzwP3A9MD1APSA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gMbA+8D8APxA/ID8wP0A/UD9gP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBwQIBAkECwQNBA4EDwQQBBEDdgQSBBMEFAQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkDHgQ6BDsEPAQ9Ax8EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUAMcBFEEUgRTBFUEVgRXBFgEWQO0A7UDtgO3A7gDuQO6A7sDvAO9AxwDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A4ADgQOCA4MDhAOFA4YDhwOICjUDiQOKA4sDjAONA44DjwORA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO+A78DwAPBA8IDwwPFA8YDxwPIA8kDygPLA8wDzQPOA88D0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQLBA0EDgQPBBAEEQQSBBMEFAQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFUEVgRXBFgEWQN6A7QDtQO2A7cDuAO5A7oDuwO8A70DBwMIAwkDCwMFBF0EWgReBFsEXAZlBcwFzQXOBc8F0AXRBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXfBeAF4QXiBeMF5AXlBeYF5wXpBeoF6wXsBe0F7gXvBfAF8QXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BgAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBg0GDgYPBhAGEQYSBhMGFAYVBhcGGAYZBhoGGwYcBh0GHgYjBiQGJQYmBicGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGRAZFBkYGRwZIBkoGSwZMBk0GUAZRBlIGUwZUBlcGWAYfBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBcwF0AXTBdQF1QXXBdgF2QXaBdsF3wXgBeEF4wXkBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfMF9AX1BfYF9wX4BfkF+gX8Bf0F/gX/BgAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBg4GEQYSBhMGFQYXBhgGGQYaBbAGGwYcBh0GHgYjBiQGJQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZEBkUGRgZHBkgGSgZLBk0GUAZRBlIGUwZUBlcGWAYfBc4F0QZZBdYF3AXdBloGXAX7BgwGDQYPBhAGFAYWBl0GXgZfBiYGJwZgBikGQgZDBmEGTAZiBmMGZAZWBc0FzwXSBeIF5QZlB+8HtQe2B7cHuQe6B7sHvAe+B78HwAfBB8IHwwfFB8gHygfLB8wH0QfPB9IH2QfaB9sH3wfgB+EH4gfjB+QH5wfoB+kHvAfxB+4H8gfcB90H3ghHCEkISwhNCE4ITwhRCFIHtQe3B7gHuQe7B7wHvQe+B78HwQfCB8MHxAfFB8YHyAfJB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wgACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsB88H0ginCKgIqQiqCKsIrAitCK4IrwiwCOgI6QjFCPkI+gj7CPwJBgkHCQgJCQkZCRoJGwkcChoKnwqgCqEKxQrSCs8K1AraCt0K4Ar0CuMK5QrnCukK6wrwCvIK+Ar/CwQLBQsPCyQLJQsYCxkLGgsbCxwLHQseCx8LJgsoCy0LLgssC0ALNAs3CzsLPQs/C0IAAR8WAcUDkAOWA5wDogOoA64DtAO6A8ADxgPMA9ID2gPgA+YD7APyA/gD/gQEBAoEEAQWBB4EJAQsBDIEOAQ+BEQETARSBFgEXgRkBGoEcAR2BHwEggSIBI4ElASaBKAEpgSsBLIEuAS+BMQEygTQBNYE3ATiBOgE7gT0BPoFAAUGBQwFEgUYBSAFJgUsBTIFOAU+BUQFSgVQBVYFXAViBWgFbgV0BXoFgAWGBYwFkgWYBZ4FpAWqBbAFtgW8BcIFyAXOBdQF2gXgBeYF7AXyBfgF/gYEBgoGEAYWBhwGIgYoBi4GNAY6BkAGRgZMBlIGWAZeBmQGagZwBnYGfAaCBogGjgaUBpoGoAamBqwGsga4Br4GxAbKBtAG1gbcBuIG6AbuBvQG+gcABwYHDAcSBxgHHgckByoHMAc2BzwHQgdIB04HVAdaB2AHZgdsB3IHeAd+B4QHigeQB5YHnAeiB6gHrge0B7oHwAfGB8wH0gfYB94H5AfqB/AH9gf8CAIICAgOCBQIGgggCCYILAgyCDgIPghECFQIYghwCH4IjAiaCKgItgjECNII2gjgCOYI7AjyCPgI/gkECQoJEAkYCR4JJAkqCTAJNgk8CUIJSAlOCVQJWAlcCWAJZAloCWwJcAl0CXgJfgmECYoJjgmaCaYJrAmyCbgJvAnCCcgJzgnUCdoJ4AnmCewJ8gn4Cf4KBAoKChAKFgocCiIKKAouCjQKOgpACkYKTApSClgKXgpkCmoKcAp2CnwKggqICo4KlAqaCqAKpgqsCrIKuAq+CsQKygrQCtYK3AriCugK7gryCvYK+gr+CwILBgsKCw4LEgsWCxoLHgsiCyYLKgsuCzILQAtOC1QLWgtoC24LdAt6C4ALhguMC5ILmAueC6YLrAuyC7gLvgvEC8oL0AvWC9wL4gvoC+4L9Av6DAAMBgwMDBIMGAweDCQMKgwwDDYMPAxCDEgMTgxUDFoMYAxmDGwMcgx4DH4MhAyKDJAMlgycDKIMqAyuDLQMugzADMYMzAzSDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA02DTwNQg1GDUwNUg1YDV4NZA1qDXANdg18DYINiA2ODZINlg2aDZ4NpA2qDbANug3ADcYNzA3SDdgN3g3kDeoN8A36DgAOBg4MDhIOGA4eDiQOKg4wDjYOPA5CDkgAAgRfAyAAAgE9AyEAAgNFAUoAAgFCA0kAAgE+A10AAgMVAUsAAgE/A5IAAgFDA8QAAgFHA8wAAgFIA80AAgRgA9AAAwFAAUQD0QACAUkDHQACAUUECgACAO0EDAACAPcEFQACAUEEIgACAUYEVAACBF8DIAACAu4DIQACAvMDSQACAu8DXQADAuwDegHMAAIDfQHOAAMB7wH3A5AAAgLwA5IAAgIEA6MAAgL0A8QAAgRgA9AAAwLxAvUD0QACAvgD/AACAvYECgACAoQEDAACApEEFQACAvIEIgACAvcEVAACA3oC7QACAwYC/QACAwoDewACAwwDfAACAw0DfgACAw4DfwACBQEF0gACBQIF3gACBQMF6AACBQQF8gACBQUGDAACBQYGFgACBQoGKAACBQsGKQACBQwGQgACBQ0GQwACBQ4GSQACBQ8GTgACBRAGTwACBREGVQACBRIGVgACBQcGIAACBQgGIQACBQkGIgACBcAFzQACBaEFzgACBcEFzwACBaIF0QADBaMFwgXSAAIFpAXWAAIFpQXcAAIFpgXdAAIFpwXeAAIFwwXiAAIFxAXlAAIFqAXyAAIFqQX7AAIFqgYMAAIFqwYNAAIFrAYPAAIFrQYQAAIFrgYUAAIFrwYWAAIFtAYmAAIFtQYnAAIFtgYoAAIFtwYpAAIFuAZCAAIFuQZDAAIFugZJAAIFuwZMAAIFvAZOAAIFvQZPAAIFvgZVAAIFvwZWAAIFsQYgAAIFsgYhAAIFswYiAAIJjge4AAIHvQaHAAIJjwfEAAIJkAfHAAIHyQaIAAIJjQfNAAIH1gZoAAIH1wZsAAIH2AZuAAIHzgZwAAIH1AZ2AAIH1QZ/AAIH9AZoAAIH9QZoAAIH9gZoAAIH9wZoAAIH+AZoAAIH+QZoAAIH+gZoAAIH+wZoAAIH/AZoAAIH/QZoAAIH/wZoAAIIAAZoAAIIAQZoAAIIBAZoAAIIBQZoAAIIBgZoAAIIBwZoAAIICAZoAAIICQZoAAIICgZoAAIICwZoAAIIDQZsAAIIDgZsAAIIDwZsAAIIEAZsAAIIEQZsAAIIEgZsAAIIEwZsAAIIFAZsAAIIFQZuAAIIFgZuAAIIFwZuAAIIGAZuAAIIGQZuAAIIGgZuAAIIGwZuAAIIHAZuAAIIHQZuAAIIHgZuAAIIIAZuAAIIIwZuAAIIJAZuAAIIJQZuAAIIJgZuAAIIJwZuAAIIKAZuAAIIKQZuAAIIKgZuAAIILAZwAAIILQZwAAIILgZwAAIILwZwAAIIMAZwAAIIMQZwAAIIMgZwAAIIMwZwAAIINAZwAAIINQZwAAIINwZwAAIIOAZwAAIIPAZ2AAIIPQZ2AAIIPgZ2AAIIPwZ2AAIIQAZ2AAIIQQZ2AAIIQgZ2AAIIQwZ2AAIIRQZ4AAIIVgZ/AAIIVwZ/AAIIWAZ/AAIIWQZ/AAIIWgZ/AAIIWwZ/AAIIXAZ/AAIIXQZ/AAIIXgZ/AAIIXwZ/AAIIYQZ/AAIIZAZ/AAIIZQZ/AAIIZgZ/AAIIZwZ/AAIIaAZ/AAIIaQZ/AAIIagZ/AAIIawZ/AAIHtgeyAAIHugezAAIJkgfAAAIHxwe0AAIHLgfKAAcInQi7CLEIpwiGCHsInAAGCJ4IvAiyCKgIhwh8AAYInwi9CLMIqQiICH0ABgigCL4ItAiqCIkIfgAGCKEIvwi1CKsIigh/AAYIogjACLYIrAiLCIAABgijCMEItwitCIwIgQAGCKQIwgi4CK4IjQiCAAYIpQjDCLkIrwiOCIMABgimCMQIugiwCI8IhAADCHEIkQiFAAIIcgiSAAIIcwiTAAIIdAiUAAIIdQiVAAIIdgiWAAIIdwiXAAIIeAiYAAIIeQiZAAIIegiaAAMIcQiRCJAAAghyCJIAAghzCJMAAgh0CJQAAgh1CJUAAgh2CJYAAgh3CJcAAgh4CJgAAgh5CJkAAgh6CJoAAgh7CJsAAQh8AAEIfQABCH4AAQh/AAEIgAABCIEAAQiCAAEIgwABCIQAAgjrCOoAAgjjCOwAAgjjCOwAAQjqAAUI7Qj1CR8JHQj3AAUI7gj2CSAJHgj4AAIJCwkKAAIJAQkMAAIJAQkMAAEJCgACCVIJQQACCVMJQgACCVQJQwACCVUJRAACCVYJRQACCVcJRgACCVgJRwACCVkJSAACCVoJSQACCVsJSgACCVwJSwACCV0JTAACCV4JTQACCV8JTgACCWAJTwACCWEJUAACCWIJUQACCS8JYwACCTAJZAACCTEJZQACCTIJZgACCTMJZwACCTQJaAACCTUJaQACCTYJagACCTgJawACCTkJbAACCToJbQACCTsJbgACCTwJbwACCT0JcAACCT4JcQACCT8JcgACCUAJcwACCS8JYwACCTAJZAACCTEJZQACCTIJZgACCTMJZwACCTQJaAACCTUJaQACCTYJagACCTgJawACCTkJbAACCToJbQACCTsJbgACCTwJbwACCT0JcAACCT4JcQACCT8JcgACCUAJcwABCUEAAQlCAAEJQwABCUQAAQlFAAEJRgABCUcAAQlIAAEJSQABCUoAAQlLAAEJTAABCU0AAQlOAAEJTwABCVAAAQlRAAYJlgmXCjIKLwmwCZoABgl5CXoKMwowCbEJmwACCbIJnAACCbMJnQAGCXcJeAo0CjEJtAmeAAIJtQmfAAIJtgmgAAIJtwmhAAIJuAmiAAIJuQmjAAIJugmkAAIJuwmlAAIJvAmmAAIJvQmnAAMJvgmoCZkAAgm/CakAAgnACaoAAgnBCasAAgnCCawAAgnDCa0AAgnECa4AAgnFCa8AAgl7CcYAAgl8CccAAgl9CcgAAgl+CckAAgl/CcoAAgmACcsAAgmBCcwAAgmCCc0AAgmDCc4AAgmECc8AAgmFCdAAAgmGCdEAAgmHCdIAAgmICdMAAgmLCdQAAgmMCdUAAgmPCdYAAgmQCdcAAgmRCdgAAgmTCdkAAgmUCdoAAgmVCdsAAgl7CcYAAgl8CccAAgl9CcgAAgl+CckAAgl/CcoAAgmACcsAAgmBCcwAAgmCCc0AAgmDCc4AAgmECc8AAgmFCdAAAgmGCdEAAgmHCdIAAgmICdMAAgmLCdQAAgmMCdUAAgmPCdYAAgmQCdcAAgmRCdgAAgmTCdkAAgmUCdoAAgmVCdsAAQmaAAEJmwABCZwAAQmd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BLwEzATNBOYE5wTtBPIE8wT5BPoE/gT/BQAFFQUYBRkFHQUjBSQFJQU5BUIFUwVUBVYFVwVbBV0FYgVqBWsFbAVtBYYFhwWNBZAFkgWTBZkFmgWeBZ8FoAACABUAAQA6AAAAPADoADoA6gFGAOcEcgTBAUQEwwUEAZQFBwUKAdYFDgURAdoGZwb7Ad4KRwpRAnMKaApqAn4Kfgp+AoEKgQqHAoIKigqLAokKjgqQAosKsQqxAo4KtQq1Ao8K1grWApAK/gr+ApELAgsDApILBwsHApQLMwszApUAAgBVAVQBVAAAAVcBbwABAXEBdgAaAXgBfQAgAX8BfwAmAYMBiQAnAYsBiwAuAY0BjQAvAY8BkQAwAZMBlQAzAZgBmAA2AZsBnwA3AaEBoQA8AaMBtwA9AbwBvQBSAcEBxABUAcYBxwBYAckByQBaAcsBywBbAc0BzQBcAdAB0QBdAdMB2ABfAdoB2gBlAeEB5wBmAe4B+ABtAfoB/wB4AgECAwB+AgYCBgCBAgoCDwCCAhECEgCIAhQCFACKAhYCGACLAhoCGwCOAh4CHgCQAiECIQCRAiMCJQCSAigCLgCVAjACNACcAjYCNgChAjgCVwCiAloCZgDCAmgCagDPAmwCbADSAm4CbwDTAnECdADVAncCdwDZAnkCeQDaAnwCfADbAn4CfwDcAoEChwDeAosCjQDlAo8CkQDoApMClQDrApcCmwDuAp0CnQDzAqACtwD0AsQCxAEMAsYCygENAswC0gESAtQC4AEZAuIC5AEmAuYC6AEpAuoC6gEsAuwC9wEtAv8C/wE5AwEDAQE6AwMDBAE7BRMFYQE9BWMFrwGMBbEFxAHZBmYGZgHtBvwHsAHuCkcKUQKjCmgKagKuCn4KfgKxCoEKhwKyCooKiwK5Co4KkAK7CrEKsQK+CrUKtQK/CtYK1gLACv4K/gLBCwILAwLCCwcLBwLECzMLMwLFAAEAUgjcCN4I7wjwCPEI8gjzCPQI/Qj+CP8JAAkTCRQJFQkWCYsKRwpICkkKSgpLCkwKTQpOCk8KUApRClMKVQpeCmgKaQp+CoEKggqDCoQKhQqGCocKigqLCo8KkArZCtwK3wrhCuIK5ArmCugK6grvCvEK9gsHCwwLDQsOCxALEQsSCxMLFAsVCxYLFwsjCycLKQsqCysLMAsxCzMLNgs6CzwLPgtBAAEABAhxCHsIhgiRAAEABAAnAHIDFQNFAAEAAQoAAAEAAwb9BwEHDgABAAIBywLsAAEABQHLAc0C7AL5AwYAAgASAXsBfwAAAYMBhAAFAb0BvwAHAdoB2gAKAdwB3AALAd4B3wAMAeMB6QAOAe0B7QAVAgsCDQAWAg8CDwAZAhECHgAaAiACIAAoAiICIgApAmICYgAqAmgCaQArAocChwAtAooCmAAuApwCngA9AAEADAF7AZABywIjAikCZAJuAnUCfgKLAuII4wACABIGgAaBAAAGhAaFAAIGnAa4AAQG2AbfACEG4QboACkH0QfRADEH1AfUADIH1gfXADMH9Af9ADUH/wgBAD8IBAgLAEIIDQgUAEoIPAhDAFIIRwhHAFoISQhJAFsISwhLAFwITQhPAF0IUQhSAGAAAQABBnAAAgALBoAGgQAABoQGhAACBpwGuAADBtgG3wAgB9QH1AAoB9YH1wApB/QH/QArB/8IAQA1CAQICwA4CA0IFABACDwIQwBIAAEAAQZ7AAEAAQe9AAEAAQfJAAIAAgaABoAAAAacBrAAAQACABgGaAaIAAAGnAb7ACEHtQfFAIEHxwfPAJIH0QfSAJsH1AfYAJ0H9Af9AKIH/wgBAKwIBAgLAK8IDQgeALcIIAggAMkIIwgqAMoILAg1ANIINwg4ANwIPAhDAN4IRQhFAOYIRwhHAOcISQhJAOgISwhLAOkITQhPAOoIUQhSAO0IVghfAO8IYQhhAPkIZAhrAPoAAgACBoEGgQAABrEGuAABAAIAAgaCBoIAAAa5BssAAQACAAIGgwaDAAAGzAbXAAEAAgACBoQGhAAABtgG3wABAAEAAQbgAAIAAgaGBoYAAAbpBvsAAQABACcKRwpICkkKSgpLCkwKTQpOCk8KUApRClMKXgpoCmkKfgqBCoIKgwqECoUKhgqHCooKiwqPCpAKtQrZCtwK3wrhCuIK5ArmCugK6grvCvEAAQAnCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrcK2grdCuAK4wrlCucK6QrrCvAK8gr0AAIAvAADACYAAAAoACoAJAAsADoAJwA8AEIANgBEAHEAPQBzAHUAawB3AKAAbgCiAKcAmACqAKwAngCuAK4AoQCwAOUAogDnAOcA2ADqAOoA2QDsAPQA2gD2AQEA4wEDATYA7wE4AUYBIwFUAVQBMgFZAW8BMwFxAXYBSgF4AX0BUAF/AX8BVgGDAYUBVwGHAYkBWgGLAYsBXQGNAY0BXgGPAZEBXwGTAZUBYgGYAZgBZQGbAZ8BZgGhAaEBawGjAaMBbAGlAbcBbQG8Ab0BgAHBAcQBggHGAccBhgHJAckBiAHQAdEBiQHTAdgBiwHaAdoBkQHcAdwBkgHhAecBkwHvAe8BmgHxAfgBmwH6Af8BowIBAgIBqQIGAgYBqwIKAg8BrAIRAhIBsgIUAhQBtAIWAhgBtQIaAhsBuAIeAh4BugIhAiEBuwIjAiUBvAIoAikBvwIrAi4BwQIwAjQBxQI2AjYBygI4AjgBywI7AlcBzAJaAmYB6QJpAmoB9gJsAmwB+AJuAm8B+QJxAnQB+wJ3AncB/wJ5AnkCAAJ8AnwCAQJ+An4CAgKBAoECAwKDAocCBAKLAo0CCQKQApECDAKTApUCDgKXApsCEQKdAp0CFgKgAqACFwKiArcCGALEAsQCLgLGAsoCLwLMAtICNALUAuACOwLiAuICSALkAuQCSQLmAugCSgLqAuoCTQLtAvcCTgL6AvwCWQMAAwACXAMGAwYCXQMVAxUCXgMdAx0CXwNFA0UCYAPMA80CYQRyBHgCYwR6BIQCagSGBI4CdQSQBJgCfgSaBLIChwS0BLsCoAS9BMECqATDBMsCrQTOBOUCtgToBOwCzgTuBPEC0wT0BPgC1wT7BP0C3AUBBQQC3wUHBQoC4wUOBREC5wUTBRMC6wUXBRcC7AUaBRwC7QUeBSIC8AUmBSgC9QUqBSsC+AUtBTgC+gU6BUEDBgVDBVIDDgVVBVUDHgVYBVoDHwVcBVwDIgVeBWkDIwVuBYUDLwWIBYwDRwWOBY8DTAWRBZEDTgWUBZgDTwWbBZ0DVAWhBa8DVwWxBcQDZgZmBmoDegZsBm8DfwZxBnYDgwZ4BngDiQZ6BnoDigZ8Bn4DiwaFBoUDjgaHBpsDjwbhBugDpAb8BvwDrAb+BwADrQcCBwYDsAcIBw0DtQcPBxADuwcSB7ADvQe9B70EXAfJB8kEXQixCLoEXgjcCNwEaAjeCN4EaQjkCOQEagjxCPQEawj9CQAEbwkTCRYEcwoACgAEdwpTClMEeApVClUEeQpeCl4EegpqCmoEewqOCo4EfAqxCrEEfQrWCtYEfgrZCtkEfwrcCtwEgArfCt8EgQrhCuIEggrkCuQEhArmCuYEhQroCugEhgrqCuoEhwrvCu8EiArxCvEEiQr2CvYEigr+Cv4EiwsCCwMEjAsMCw4EjgsQCxcEkQsjCyMEmQsnCycEmgspCysEmwswCzEEngs2CzYEoAs6CzoEoQs8CzwEogs+Cz4EowtBC0EEpAACAHEAAQACAAAAJwAnAAIAKwArAAMAQwBDAAQAcgByAAUAdgB2AAYAoQChAAcAqACpAAgArQCtAAoArwCvAAsA5gDmAAwA6ADoAA0A6wDrAA4A9QD1AA8BAgECABABNwE3ABEBVwFYABIBhgGGABQBpAGkABUBywHLABYBzQHNABcB7gHuABgB8AHwABkCAwIDABoCKgIqABsCOQI6ABwCaAJoAB4CfwJ/AB8CggKCACACjwKPACECoQKhACIC4wLjACMC7ALsACQC+QL5ACUC/wL/ACYDAQMBACcDAwMEACgEeQR5ACoEhQSFACsEjwSPACwEmQSZAC0EswSzAC4EvAS8AC8EzATNADAE5gTnADIE7QTtADQE8gTzADUE+QT6ADcE/gUAADkFFAUWADwFGAUZAD8FHQUdAEEFIwUlAEIFKQUpAEUFLAUsAEYFOQU5AEcFQgVCAEgFUwVUAEkFVgVXAEsFWwVbAE0FXQVdAE4FagVtAE8FhgWHAFMFjQWNAFUFkAWQAFYFkgWTAFcFmQWaAFkFngWgAFsGawZrAF4GcAZwAF8GdwZ3AGAGeQZ5AGEGewZ7AGIGfwaEAGMGhgaGAGkGnAbgAGoG6Qb7AK8G/Qb9AMIHAQcBAMMHBwcHAMQHDgcOAMUHEQcRAMYIcQiEAMcIhgiPANsIkQiaAOUI4wjjAO8I6gjsAPAI7wjwAPMJAQkBAPUJCgkMAPYJLwk2APkJOAlzAQEJewmIAT0JiwmMAUsJjwmRAU0JkwmVAVAJmgnbAVMJ7wnvAZUJ+wn9AZYKAgoCAZkKBgoGAZoKCgoLAZsKFgoZAZ0KGwoiAaEKRwpRAakKaAppAbQKfgp+AbYKgQqHAbcKigqLAb4KjwqQAcAKtQq1AcILBwsHAcMLMwszAcQAAQApAe4CAwpHCkgKSQpKCksKTApNCk4KTwpQClEKUwpVCl4KaAppCn4KgQqCCoMKhAqFCoYKhwqKCosKjwqQCtkK3ArfCuEK4grkCuYK6ArqCu8K8QABAAIAjwIRAAIAJQABAAEAAACtAK0AAQFXAVcAAgHLAcsAAwHNAc0ABAI5AjkABQLsAuwABgL5AvkABwMGAwYACAZwBnAACQZ7BnsACgaABoQACwaGBoYAEAacBuAAEQbpBvsAVge9B70AaQfJB8kAagixCLoAawpHClEAdQpTClMAgApeCl4AgQpoCmkAggp+Cn4AhAqBCocAhQqKCosAjAqPCpAAjgq1CrUAkArZCtkAkQrcCtwAkgrfCt8AkwrhCuIAlArkCuQAlgrmCuYAlwroCugAmArqCuoAmQrvCu8AmgrxCvEAmw==)}@font-face{font-family:Pixochrome-Regular;font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}@font-face{font-family:Probert-Regular;font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAEFQABIAAAAAjZAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABlAAAABwAAAAciVvK00dERUYAAAGwAAAAKAAAACoBOAHtR1BPUwAAAdgAAAGFAAACNIjBnTJHU1VCAAADYAAAACAAAAAgbJF0j09TLzIAAAOAAAAAVQAAAGB2+md4Y21hcAAAA9gAAAGBAAAB2i9Jb0ZjdnQgAAAFXAAAABoAAAAaCKYELWZwZ20AAAV4AAABsQAAAmVTtC+nZ2FzcAAABywAAAAIAAAACAAAABBnbHlmAAAHNAAAMvAAAHj4xkSGp2hlYWQAADokAAAANgAAADYYlCZOaGhlYQAAOlwAAAAeAAAAJBH6ClFobXR4AAA6fAAAAVAAAAOYmIJS6mxvY2EAADvMAAABwAAAAc7kecV0bWF4cAAAPYwAAAAgAAAAIAICAQNuYW1lAAA9rAAAAVgAAALsH2pzX3Bvc3QAAD8EAAAB2wAAAra16VdNcHJlcAAAQOAAAABwAAAAgD9q32AAAAABAAAAANqHb48AAAAAzs9qawAAAADgBPDYeNpjYGRgYOABYiUgZmJgBuI6BkaGeoZGIKuJ4SmQzQKWYQAANU0DJnjaVZE/a1pRHIbfk7RFShS1na+LN0PpIChFvNxRVBroYKPx2lvoIBR6KSKBQIes3UqWDH6CDv0IhW5CzegkJJAlcz9A9J7T55opHB7e8+d9z+/8kZH0XJ5eyySfTr8qpyfMyDllK+bLZJbN6WHE2t5OczLmZucs6FBdDTTVuS60MjnTMlPzx/yFFb5mmqiV5hWkVwrRKP2lse0qRtes7au4MSqDb1/qGf4Qf4z/XuH2Ft9vrTeTR74GlZvuh1qupsC9U+iKoqVDlaAMHlTAT89Ux9mm34Ee9GEAQxjBGGLIs0Oikv3ODok8tAI+Z647X237Uz3GfRi4pxpBDAcq2hyphcqoh1bAT5ck7kgsSCxIVElUSVSzOtt/nDRRGfXQCmR12rxRj3fpw3v7WcfoCI3gBfdfquTmvMFSHbQLPXgLR9CHYxjAiftGvbkiF2jsIn2wW2oH+sj82p7zi8X0mnteZ73sxrCnob0kOeN/C/L1SjU19EZNtRQo5I8jjRVr/R/9Gr+TAAAAAAEAAAAKABwAHgABbGF0bgAIAAQAAAAA//8AAAAAAAB42mNgYVVlnMDAysDCOovVmIGBURpCM19kSGMSYmBgAkpBQAMDw/IABgYvKJchICLYndGBgVf1D1vavzQGBvYcxjagMCNIjsWHdRWQUmBgAgAyFAxGAAAAeNpjYGBgZoBgGQZGBhC4AuQxgvksDDuAtBaDApDFBWTxMsgy1DH8ZwxmOsZ0R4FLQURBSkFOQUlBTUFfwUohXmGNopLqn///waaA1CowLGAMAqtlUBBQkFCQgaq1RFLL/P/r/2f/n/w//L/w7/+/rx4cf3Dowf4H+x7sfrDjwYYHyx80PzC/f+jWS6jbiASMbBAvgdlMQIIJTQFQkoWVjZ2Dk4ubh5ePX0BQSFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTS1tHV0/fwNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXzz8gMCg4JDQsPCIyKjomNi4+ITGJob2jq2fKzPlLFi9dvmzFqjWr167bsH7jpi3btm7fuWPvnn37GYpT07LuVi4qzHlSns3QOZuhhIEhowLsutxahpW7m1LyQey8unvJzW0zDh+5eu3W7es3djEcYmB4/OAhUKbq5h2G1t6Wvu4JEyf1T5vOMHXuvDkMR48VAaWqgRgAkWuFxwAAAAAAAMgAxwDIAK8AyQDhANIA1QC+AGkARAURAAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942u19DZBb13Xeve8BePgHHv6B/cVif0jukpAeuFxDlknGpthQVBVFikWljaQ0frYVWU4o/8iKrJWdlLFNjVsz8RjJ2JNpRLpTWXXE90BEmbE1LiN74ic7nqYqRc0o8oRUO6rZyoonUacRdgH3nHPve3jYBZf6czKdKcldvMWC75577rnnfOfvPqawA4wpZvC9TGUa22VzVr+2rQViPzbsUPCFa9uqApfMVvHtIL7d1kLx9WvbHN9v6FV9rqpXDyjT/Vn+h/27gu/t/scDgR8wuCUzGeNLwcfovlezNry3aHN+yQrWuRWuW+y8FTBsVb1khQxbUy/ZEb7I7CDXM1agedXVjeVGXtUbuungH34iUFl7iYn7Bm5QboP7RliWfYhZobqVanQ0haUDi5ZuWKxuRRs0UMzgVg4HolHUdCcSoA9F6u2IGl08sz8SiizC+3aUL9oJ+Egi3cmKj2Tr7WwCP5JNRxbtPFB21dVZoCi3yJeN5YZ3ZTqmYTj4LfCi0zVNg75JOpkTsAIvsjE2xT7PgC47W2wQZbY+bhhtxnEAVgEa8oYVqNupSfh1EH4dScCvgwH8dVCDX+NEputW5bythAzDLgOzwniHShk/UmHwkYBhldN2ASYSnYCP5OEj8TR8JF/Aj+Sz8JGkYVfdiSzXaBJV+Grka/RVW67C10p1uUos50vEeKd/Dq/75/gJpyvecV8YrCyscfAFWIsZtoMZ7CRrT8EqW9W6Nd6wVViCRQPX5+qGPQc/FA1rW93KN+wY/JAyrAQIQqNuhc9bzLBroUs2hzWope0pvtgOxOcNmMekeqmdLCzCpTWZtnfB9CqhS1bGsCppOwufztbt3fAmD4PURJv2rkl4HW/alSy86k1mh1S4YE172xy8ZkCsso1cEQR2Xl3JrODsq4VsbX6R6/Ca1pAB1fls4Z1cr83kecNYWd69yE1nlWf7j1wo8+JFfqfDb3855SSPv8bv/Afe7Z90+scvXuAPrq2tKvu7D8IFf2q1zK8zeNbgS4Zp1vv/pdX/Zrn/zf434SdDPXiKX/fHvRtP8Uck/0JfBf6VWY3tZKdYO438yzbseWDRUh0k89KZ8ehSeNEuwRszdVvhuF+4tYvkugIsqBDDQITsIPwUTNuZ2KI9C5dhw5pN29uFbNt1eJ2q6Jl2tphrNpv2bBA4Empa23VbSzWBVaV5PXMmkZndPltsWku6lW/a0XH4TLhpzehnWLAyBb8ABqZXqoUx3lD3wKsOPJuP8Vo2BK/Z3Du5gQyb4d6V2eVLr3Gn26+M86Vut39O/tA/13VaZgv+qdPy9Uf8hGH0P8a/1fteNGT0j/aPGgb/fP/dyh74kZ/odrvrF+Cbu7dY6PPAt3E2D3urPYa6ZQpYk6jbIX6JWwvEnongJWsibaWmz+t2ADiCe0zFt+wMcCMfuHQmks8Ab6OBS1a0bkcCl+xt8IuJAExbaVop3ZptWtGMVWtaGd2uzADb8hH4XQnYNTUGF8CphP5EQIlGCqWaYM+elfnl9E5e0Gu7a8FQPlfkyw29qC0Ah6azuUbVWOG1UN7kpw/zrHKqe3q19+erp5VXTp8un7rhkfUv9X/srKraoR3rn6m8j3/5J6vl1/gnyrzcP+5w/hcXjf7f/G3/Bwecfd/RYT/exH85fwb5wVEnkq6NsP2oEV11CDqHIzuirhbcShPCthxWc6ZPr+EYP32HclvoIyyF2jyGHE+iMNZxo3MrTUNEYL9GGN0xQVrJ1sVN9fQKKJmZMk+/k+dr82a324I/XRAP9Wb+lAFqZv1xUDWbxiGrkYJxtLodluOo5+04jKPGcRw1BeNo7jggdzAEUN8owKtWM8Uocpwlx+jvhXH2Gsizu9SiOhu0WJJdxaw4Wo2OypkWWORWqm4p5+0gyEMa5CGowFLHYM3VOF3AdFaKwKWVogYLqy2s3NX83hPfa35/9Yur8C9w9E9+7ty5n/uTd3/9Q1+Hf3J92GmwBWssxm5GS2BpwkIFPSsQjSy2OTGOqxGgAOk5bykGchTY2I5EialgDdrRCF5GQevbCbliVTCU1XxVr+kmf8rhT/X3Osq94rW/lz8lafjp3XyJOSAj7/ZZY09Y3piUbDSBrowo9wYstQmarcik9AkJhK0XdInNowW/13GIL4xoUtn2AU3eBf43H0nyDjg0mijBV6E/VZYT/9/idd9gDd7gZvBgt/uN4GPdW6Xe2A+fjwF9e1g76kpxXkpxicYD6bLiaRQpAiZleNVx6SNNKcpVki5QeWnY0HBZq87oZlf9EeioEig20Gmt9Qst/ip/CmQbZA7/gjZ7CszoErwH5lTQrswDLSG2i7UDSDuYSiRfq1sBMekwjKyiNuIgfTwEF0GSvgastGaCIW7h9rw18J37xf2CPySduCo1ItqMcB2kBGY2ATb5PCAJuwSTixrt0jiuaAnRRxrsLFiQPZVvaJfOPsTyi9GkpaQt9ayd116zcmfZGUXN5XfBH+5dWfsr3C6hfYgDaeESGJZoTAfDAuRlVuaMlXngiVYDI1vIag1FC85oRZRQs3xBra2WCp/uHTgedxIvq8culjkvX1j/4WqJB6zu5/gdYDxN52KXf7Fu9K39aDadVYAgch+JOc6w32ftKs4Rlq2tVkkTIA4CNY7oQq/bRZx1DfDGeTsHU86lLY52gIFNQMEM4luw9oAoAoAxKniHZBRhUtoK4QcnYffPwq+TOZjkNGCKEGELZkcRU0w2rZgOP1ow8Vy+IibeQP3+Lr67BiAK7F+tGprgtfQc2MmcVsiDwEybT4N2X13tx/lfm6u922FeWVXr3vBQFzT/T0ClO5XvOhcd/hcctD4o/a5h/qT/qfLA5qHsRlmC3chAzTJU8FZI4CkAgArITrJuRc5bccMO4xY22mFSFmHYuO1ImPYw6o0UQm0lpmdsniDKdV7VV/I1ECuA8ybYYkR/67+s/gd+gi8pr6w/zp/uHwX6lP/q6jNBywT7AGuP4zqA2QWlBQj0klVId5KcrRCMBgUKyzBJcD9lkBXOAthNI9pHIAuIHeEL2F4gJjmGQCQJjG7zSBlRSgG3Xa5JVgmMaUOwdUarkrrzIIj5NJebbnmm/1rwhe7LpYrcjfxr5Xji4kWnrN7s9G8MqcDV/tFy2cfPAptmv8raeZxFGcifqpPBiUqVUCWVUESVYFjFtD3Oyd5khOMyA7SPF4lIwAiwPQEZlAlrInxIEHwINV2tAVgTVUXeIzzrTQnUx6WXE078+PrftDziB6rka0oCVEm9/2HAUJ/xZsFPwMzcffEC6ZJp1g4KybC5cokLuwmrzRDvqU2hgHkN1OL964931ZsD/+27ztokuCnMxfO4v3RY2QX22wKP2jlgx1jdnoaXeQmwtpGOAngOuNzK+DZWJohv2TVaU8D8+KsEbCXEoRkBrOwawvRU044UpWEdwz0GzJrW7ZjSbFrzGfjPTQ9O+XdQ1ttjM3mPeyGTrx72bSUCUaur66+tGu9TztNOAzBlGt2hbSX3m/KRF2HLDe8xv0yoQhikaCQ9mcBdhh4LuDU8DVxZtMZJLEgmOIMZFZpWSAfJkDqDNa2ybmlNawq1JuqLAtCvLyN49huVgUyAOKhVEAcQBWFdii9/0xOJpwDUoCjwT/ATMKujvb8HI1NXn3GciwP/m2yxBr7FwOKTdby02QdXpQ8ufW9pZR2HTDXeD/ED3C8C+ucXRiEIqXxJCcGdo+LOcWNLOJHaACfEuAApYHAEFWJ0IeNO4KFgjoF4Z3k1wqumqvFsL6O80v+x8ooy33u+9zzRyU8A1qrQvCsuCvHNWk6S9oEAI2sdgM8gDICdNo+1EsHBTOWVXgYlbP01R5mXgxGPg38N8lIEL/9rrF1ydUiePDVujXvKAzRHCUQkYdhjQpWMCS8kBFyfENY39KGztwjrCzYofdaOgvUNnz0TiYazaJbOpJLp7GIbvk8/PP1wLZTUM03AheD6Nhl8KJUWFtq9IgtdZBI85EEptUMs7lpo2FH5hpLiM/laZh/fI7QqR96jTX6N839Yaz3Nu2tfaqGh5rc7YBPQIP/75f7Jctnhdxjl4Lcvgo6SsiH1zxxgmY+z9izyoYohmDp4VGBpDXRmwRQAQ4RWrRNjpgDGTxHqnaqB6Z1KI6K154FB88JzFZYbbPkiGjT7KnwtEgxidnoJHNaQVioLx0so2GIewRjoB/AEJnhjz7s4qVzYWQ2wGPPomcJcZ/Kgbo+9nAAHPt7tml1QHvHjvQOtlnrz+vVd5TYT/kj0Vu//Bl/tz3XBi3D4hdOgfgHMgaOiPGy2TNPVGYhBNbDM8xKFqg10jMBhIUAHXIijDpZhCsSlVV5Tq2q2CoL1MFjYh7ufWT/7mQvK5/uEVCng8qryHPPHWKKglUvs/XLnSZSTgZeS9PLKxNOYSgGSWBrDVnYAdHASdXAYdHAFvd6YCJUEkuT/M1uPCScfrFeoaZVk9E33VO6cUEYS0cBuIR17vXoM9OuD6ofM1fXHg48NlKrzzHOOZ5NCp2hv3MTaBdePiw4hbRF1w42ANjUrFBHi7UwCqMo3raxuB3OICqIpFOBMVgiwz5rS0horgDEBB3QDNwgj+iCs5TFCmGudrreUH5bL1+1/uG749b0G3uYeyVlctZRkqfBqEUuF0+j5YIyF/IIYLqWG/gCyChX3nPQEzMCL3e7aS+oToKWvDz7mon9HIH+frY6xn5MjRgRODwo1RQPHXXeanD/hUcdgiyiG8AKl6yfcPvEFFn3tJlJmVvAxp38E//mxQYRdI6Vzw1jREWOBEyoHim0YyBtGDNL7gt8Pm2B3STyYElqw4FvySf+SZ8WSl2jJ29kSBVvzkUVCg1lc/TGQRlj9Cq5+HlbfLgEktKMFfTOicmVgGcRU10ZKAu89qk7zy4jDaad/nPd/o2745xJjTckvrSHnALvZCjbc1cGdptBOA4SFhhSdRXddMDSObhowzAlYjrN2U/Cx3heUe7u3Kvd6PJPx8akh33WEx0txcHJhfeuZYsusnURew2K2g0kKF/MIGlhXcIXhJTcyJgQX7raig63dzqeX4a4heDVRNE+I4Ej/aH8vwAqn1YIVvqnrYf2PwHhx1nDlp4EqzcePhOc2Kwb6VMxWY7Q/JCd4IwKQE1mhhJSD3d7tyqlu7xu9rmBJb7G3SEwRc7sfxgqyHXJvqFKHhtwJtVWSUDUIsqINmA2gIXBD8LG1SVfmtXuI5gPyPqFIo4HkBobIBS9fk0YYXUEN3A1bCaDEIYBrq+EY6Ru4P6AAWE3Q27rJ70AEwO9wes/3z/Weh0GXA98HL/z7+Lq27JchjMcJnoW80QfbLZKG6YnRUbeoERxdc0e31bAcmxMPceBAxemfXHsJROFccKl7K3ydY34b9DOJa4DK78K2AWfkGOi0B7eOawywQBgk9IC7g+qk5Dar1YiBmjUuLBVRFg9Lw5SK6D5jBGSVuWuDHup6FghtzwNgd3pfUJvPPCd5oV0D46dZld3M2inkRVaAd+LFDA2uo++ZtsckL9BfGdNhwGTT0vR2JIZIidlZ1DtxEAJrSrejkYHtKfOcJqK6glkrfCW4Z1kfcCzy71rv2Xe/ZNve2X6yxb/AN3Lvl/7Zna1tHysRBxt8sfWTXE6y0cfHFHgjt0g+RhoArglIFSQrizQbDGunDStFRgo8bDT3qJFKCJhikqFpYfKtgj5s49WaDlz1c/fQIf44WvcBh//qg3c90/8A//JzLp8HMj7D7pf2fQzoqgrvGfRDQAZgSpTfQV8/QUmqsGA5gBSKr5QxdjSjFoHfVlg/k85PVzEDoQG203OTcMns6hgF3dGj1ptWLNPmGpMRl4WMZwQ08KYKWdL+KnlWGIOaNzkvX/RswafzpQfV/3mhzEsX1zr0nnrs04XS6nrhgvqj/fwmMgoXQRN+0+g/cnWdfxF/8Olcjb2DAYwWkRe1IZYAHKnQeUQG7WCIlDAYz3YoiJchjLYM/A2K0Abv7z3qBF50hNs9iKWk0Etz9Tkqi0jjSnpc36THX5V6PA56PGCtdTxFPlivENqbwRx8IYIQuefI1ggHiGp2Uc91e/f1z7k6Tt4nvE669dusHYf7tMORWAO0K6t3uBoIabNFT8fy0CXpHNtaiHQsOjrf3vVyHh0di6Wt+NkkfMJSzn7j2mfEu0FL3WVzJQzvJe1o+LWgFTs7+C+RXXYsGrai8Lsg/i4w+I92IBi2QmkreDZoaWlwnVTWVoJR9Ir2RxQVfhuJxuK73D/gIDE5V5xuDUyUeRGc6U908dtFwPz94wBrYeqfDfwWfoGKh1c2jBFmBzZRccEBgQBbQR0eiJIOF2NEcBBTOdW7XXKW7CB4ksqzyrM9W/kFsoS/0LOHxohifDjsW68Y5kxJa6He1MK0arB84aHl00DWFtwlvL3slMHY0hBjvYPKN8a8OJ7Ehq691UD2VNi8CgFDQn+2JrxIS9UJeTWW+Rw6z9J3BjwI/rMTqPDvOmsvOTLXIHI4GlsR8Sib+QAnRR46GmyOACJa3DruT6oht0vRRbX8VbQujnaN0711c8xfFXzxJxhgKc1u8GDXw0seLfs3zFHSop2HYTshQUAoTUEd2H6htEuU5sYMGkARIMyqKRy0fhww8D/8BY4RSqpPaPfA3qoysUwdzlkcsyru7qKIEIXvUdgWNLgHIK3u6dOhJL+jf/Iv/1LSGnyBvL7KAP/QhT+rAZwBLdL9nOQ1jD2theH/TDKYFg5cDgw+D9Oh2BMMXA3WTEJ6WniQRw3mAjeAXzmDnmURuZlpuIock80RGfKquSEvVOQxUuQI4YMi5IWKPFumuDizx2Q8tKpjyEvBWVsR3UaTKvLHRnEBFXa+JixpbTlUk2EvShuA0D4MLnLhU/14y+kqT3Ydw+jdB4aUv3r31NTd8C6/gy8Zjfe3WvBiAAbLGIBCllqtljcn0qdj7BeFhrJYgzzlcl3qVjcyA3bTVtIGWU50lyMiGkP+BkUmM3HCBHawLMOnCDb3NDB8AohkZiGvpymGJww/EAquPGhMwwBiWy0gNfgYJrL7e01ESoYQZlOYeLn/kP9F9vNv2kfe6BsvI1cx/YyRZqRuuUExcuIkkoSkOd3eAXCETEIi51r9cyZ9NwyfXEgeHhJWCcyRy0OV8rEuD9OIPUQRTShvGC4PgXdJYqKtll2XbZkWH/0iseR+3sGiYymNt9TEPUkhP9G91XCBpunDmci7DCtjhEFH7kWFJ50VURFiYkVgzSAlHsIUYbJy4KUIPiL+S6DiTGMaKwoaO5EccBEwUcFjYLYqA/XAx/Vy/LjLxafVKSD1uMdM8CeJk8ptZkuusfIKxdQPy/oOUBAJt0RJOuPcytStNGV8UyJBl0ojgEhhGh0c5HQKf0ojnMh6RTy7Kac+wSWwaGFSHZnjqMcco2s4puEgiENe9U8Sr8psjv0r6R+Me0yCzU1ylzW4Ne8PbVfc0LadmZJVRQu4zJxqHwZh7XEMa9upmiyyKcpEGK6xLtZ8GbCKtmHFaZVpvcXaIzO9lTdM08QVJ6Yaa7/TNQx12rd5uCejOnvnEDp2d3jGw/ngpOtCQFE2s1Rnltywn0ENEXovc7mLHf/u7T2q3Ibj9h5lm2rbljzv/fWE1mE4N7ROsRrAgWJ9+FPkM8XBq0eZYGSjUP1G8Y4JrEgAb4mKfGIG4hqQByUcWSR/G3huIA7MaTWs3zBBMuGrBVgeORfaP4hrs+DBy/jyQZF9voIv36DQOzDLdB5RPuDG33tffiT42PoF/hSiGaw7eGvxjdBXQVYn2RFpA5MFQJdjdbRMWB7HoyAY4M7hjSbF8k6KGHFBxewj5hRwf9vT+FaRwpuw4mM+l7qRxzUv7lmRC7/IZwavKAD8jl+55ppfAb3jtMTfwA2GkTl0KDMkDD6hGOjykfJovAF5zF9eHpGKYXEc6MG34vsLm5FPa5uU8pPdoW3pajlhz/wKWewLqWd8tpeMBmi88oATb9b2ZiVvpO0VUb8tbC8Q85jhEds/qt48ZD98tEobR7RG656NM960jVvG2N8bsnFG91asgPOzdCBTKbZXylR8wMa05/orxMSIzJKge2jHmQjrB/UhsRK4YJRQofkHeRqMOYWWYtKNwYEiwnKSnCwnmSYNFxNmouBlQHWR3kpTqSnZiXakPEGhlAjYCpuNNZt2Djx+O5YelEygXZ33wRZM9FO2d17YiFbv0e4AvSi3kUjyO1otzOgSAqRLgi8b7G3SzZX4i65AsfrsrRv4TrsVVmD92unIZnsri6xyVMG2DPaWCmOxvgzsLWJ4p/co8LWr3LZZH5DdjzX8rn3G79qDJ2eFDfLuhT5IU0acZF4X0TgXNQmeSCniryq39R5FkVFuW+sYAr/JOCqM/Xp9/ZrpYFTK6T0PVgkxw1qH+XXx6/L11YGvrw58ffXlL4/w9Xvi3WFfPyJ9ffe/+H39iPT15X98k77+GMd/vBbDGXe7+A+WDb7DrF9RM/i11sFXHw/flI+f6P19F1ytE93e3yuJLlazoiPev52fIgt5qn+74C/oIBwjiX6jsPXuSqUwzocrFR1260NY3Wjs496KHTaPP3zbkfk5d+FANA4f9snfZt+eb+nbV6Vvrx5bfzBg4T0d5UnH6R1wMQT406+AP11mv8naGbxvnl9y0+wRWR8CqLuIbrWdDhJeKdLuKmKJVjHdyUm/WuDvNJjodjBZIDXBMsDRdLHZtLiOwdhI5owaiMVFjnfZ0BsZAr1aLa0V9AJtRXU5bbZ44uVu63icP/RQ4nir+8NJrH/8BP9i3QHmG1f339V1lngryD8i54A7JnSe6hRHY5IsYZL+ubDyf/ob5/1JyU/M9GdFDpZSvGLe6nmcWCGINe7tAlU6FLD+vpDulMW8y3VUBTh1MhslDMkCA4qCAWVRWJzVbRVYYmXIf46JMm2qcF1Jr8zrWLW+3ChkG+lGHvw8BWtdjyceeojHYfovJ3jrS5M/7Hb5t69G58mp9z/cP+70/22wf/eSjBkEflG7heXZPkblGg0UjjMZLRmWBS9gXwrEFgD9Vl6YPtROCLOieYRS4Cchn3bvaRjFQsPYs9zIhWoz4NnPhPLmtz772X9x4+7dhxy4uPMQXISSn/3WYePQbvH9Mv0hVwTQdkCI6wYgXVl7iYC057tiTcYYq7FPiJoMXJZ8w54UfQdVcr+EgadulFma6DgMNU5VGnYAvZ0ijBlKGlT0hc53TDjfUcOeQ4eo6CWoI5Sgrk5iDaTfCfe1FzREglr0F6SpvwDQAL8DzAZFobtdylVjO8FJMHPgyIGVA1SA/QMf7q4/jglr8IcQHCCIGYrdldn7fNU4Req4yNJ6YjtMUtbkVLBgC01MnuxzO0/tJfkymTvRIdIO5PG9ACOXk+QzHxCeHlXoAIzBthGYWR5DC/A9Dz5d3jRA43TVJ9Yfb2FIbHtAB7u46qyKsm64+LOPyxqRFui6F6my7GEGBGFBWbsyTT0sE6ILZp5UYDs6TyXOGnWtULGZ6habUaYGQ05YHjIJmOJPeVALj09gzqCmW2XcMH+aSKZzhSLlDqYreuZMjhfH8QPzOvzXJhblnQmGE2lSKvv4PDjSCw1yBoorDa0AsyrWKLWzoAn4hujN/MHKyg+619e281e3167vuj/BhGvXg/pZAiwHWOC5T54798nnbsyFw7kb/deg+zFHtuSLXxbY3TKykiZ9oHNKh+UIqOQFUJG2oFi3kucxYZKgvo52gpK9iZiIDSSpUymZjlBgA+U3kXRjwvnhkH5e/K1hohz/uvHhj/Hfx0JxWS8OX78vo8UHHLKTpru3PL2pwTpu5eii/nT7t0Bo/2j9fYH343d5n5++I/RV0KU72Qo7LqK49pKoIL0KXvbU7RlRc5hD2X0HjaILsDnhgc2SYW+n+ju7KSvu2jvTuP+skN5Jzi3uauCab8+0Cws7SLVeheldzuADe/Q/Taam5+Yj+ImZjF0q4q5dEWmj5fkFSiKhZfGll/KFIv0ESjePv+cD0RB5pGL2lsKL/fh/zy1fKFd8Oadi7taZZ/irz0418f21zsv8f7jyAqx1zsz1/83OXfyTBv8E1lXhhv/u0382w6/bsdjvGKi2H7m6rr5Xyo+Cult5Uq5BnaLNARfY+sLrLrAMSDgW8Zo73Pr5UNJxhM5Uh/LHdfZpnxe5q95ZENV9M/XOmLhyPcur/J4lyF1nTlT4zaXtHbA+U0ZnUbwxaViLA9/zanjdgQ1ZO5u2vih8UHtmAZZvcsdi059j3ZiLzsJOhU1K6zHBKWDcCMlqj+EctbOqzN+nmaHr+nsPH+ZPXRcytft6z69ulbruf/PixXLxe6uti63Vp0tlIafKs+oxWdtVpc6asGDByLIuEdmvaitV1eTXtfh1q+/p/+p7jvKDpyjBswiuAr/H7Q0Mnaf6wphbzahurGk8vbm80as8JP3Ps+rXlZ8Cxt/DCI8TZW5DSTBCuQcreL6j0iK0gwRFgujShL2+Ea2mm+rP819TvmL285x/bqiHg/mbNeBPYEhOFtgu9ns+SZmvd7YJEua34UjzJVBIVQMlqDwsN/WNcrMgxGSbYS2ksXzWWjQ6VfHeONjrgehgASDIAdXf6zoJzrZ58eMuLMffQnT0Kir2wgSvLfuz3Zskp6vsW52dPbIPFeE+/L6FyPT+XHk2/u27du/+9R/84J7+d/kf/fqHJFYMPhZ8AfTbFfpgsNZFxP/U+5QTwZPE1xvQE+ikXJZ1VNmeQ3GcTlywJU6YpBOin0Q2AJVbRPWqpUKMdhLCM5g4ILP5lRzBtN2I0MxTH/voya9+9ON/fPCBI0fu/61bb/1k4PMfO3nqox/56smPHrn//iNHHnhgUB/3AtF1jej66iQ9ygIDyrifMlitTtijDCZrLOu7YSnyeq5WXaCIuk4Fp1iz4zhrndP88cA/f/z0WudxLt9xnNNW4PDp0ySPz6pV6ms5xsAkdEpi/HC9k5Dju70tnZIg4bLtLf9rQ3tL9M20t+wZtLcQZNBABcn2lmUzcZT/3r54bH//JKkc/tTRBOeJo/3f3Bfn4KkfUI+dKhvm0dXvFcuPTp+Ey31myzfHGfYoA3wq13y4saUTkz3O9U5RTpySch0uZg2edW76vN7JB9z1ybm/QGe8UxFqYHOrS2dSrNWb7HYhf5RSI7C3UD/jNkNkOGO+fy8/tndv98fG3v7je83j/Njq/L7V/vWfU//INBOmedR8H38yHn9ytWzcfzYxnMssCJ02nMuEUeeqQRPr1frxULLbdX1o9HOz7D3DcRZWd0Mtogs8KyJl2aFoS96NttiJTHNUvAUMky/i8igogpOAjfwhl/7RITwex/466s4JNDDeosr4fcQtJO2AytaoOxPzUUH0N0S8BLzxiJurBS1G1YPwhebtIWzExpqOGP9MuXtr4MU18HDLYlzlXlnnP7NR14xwa8n4S4VOvFPm4YpiBNSDFqHUA1WpAeYOYb0dFbWoEa8WtNiAZad6fdMxAPq3DLPlxgaUZ/l1VGMC1tLrZZMWaKidbdDGtmqah4MHzd6i8mvXujb3Zmlj9jMU/OQVdSFqHG2gC/2RbZRIwApgDlZ8rSMmQAHsw1o1D/MThw/3jx5W/zOY//JF+tYCDNDaZKdFJ0B1Yz8Av25Eb8Bwj8A/sQ79/zT4aPD6NTqsnUPskhB50LLs1yiIwt6Y6NcIioB2iPo1sBlYH9WvwcmcRLTXLO0s/HBG4WoWtlL6TDiiZRfb8KOvZQPeo5YNRQ1HXKsjrsjqpLHYLUvwJoNt+Qk902GgoIoiBJbZx41l7NwQ7XCi7l1fptaNQdOG8iTFE9YffE05jnHCO8plp39S9Gxg7Tv/l8vqNOkAif1B52qwMskNHQxxmUt1g5FcpGT8HQzBGh/uYnCoxKQ/629m0MLdtZcG/QxvYTzQ/+rG8cgcWP7x0DaIAd3x7oHxkkzfMF7KyxWLsDtP0cERvvFEsc6GIVfd2p0/GB5UFPLQwO64t5CnPM0+PDTupEgDFMACNJCIM5VUISwSFRmD+svC5+2JwVkFWdlWNhFGZDeJYUG9w2NKYRod2GzGDk5R2fAkWW8f+SOjcxtmY2wK1lWGp+WP3MlldH0B8EPRN0qyDPvlEb0vWKuWatCypmFeWXjjPJVeJEWWFgM5OYQdMRGFTungSGHIE4MXI9plItx1YDe2zeA5JY6/d4a/h9xb//pHAVUcHEVlro4dq1SuVUQSO3qIxQKLFEvB/hjYwVGKIIzq4FF9EHsTWc7Hb7nl4/g1RNrfHfrABw79/Ac/6MYrI7tAJ2VYnr1X1CtjPDYuGnyyIrgcFkcgBGTqr0DJK9UgJ0oz2nEKr8eTEdJYRYISKCpqvimIzfoaReDL6zwS6Z7p9QuYOegpbgtS/938W7KFxNeLRHiBenqq7ChrTyOleZJfjOaN+SqXZvyVS4C+MZjaniwikZMVygFsqGeqDYdUX3/PD7UNIiAZ3f3T3+t0sSB2dA8QYjrTcGutQSfFWGqrrpz0lbpy9E1dORyL7gadOWsvkXb0GnSoEu9nOj4C5qHxSVt6BAgUPaDhHqAhsxUN2SvRkNtEQ0RWPPrI+IqrQX2EuGWQbs8b6BbkRxZ+ugw12IiTbpAF173Dni5PGjZcYMkspsxTwpxnpQuwgWmulhlQjJ2Ojo9YN3ZGfJM+i8ZqEkXLM64C593Ym60NcC9IBEVGSRK6KAKv/d3gfIo3di9YXcpUiVU1aDnl3ZC206CoOdWlRvF+muj+ohJi7Tz4dqKEOKqJlkqvNhVvedpdocPe0rg3pvXxYpAxrE2QlJJPI6KREcPtk3IjkTFR96+l7XBMJJMSnk8C7laZ+wKTYii8GurLRux4p4w5xYWLVxDD5QxMxbkFL+LslDidNtCO09kp8QKenRJ3z05BbJnyFcOkfC6D29JX1bMyfoRyAQCzgqjCUV5ptXoZ5cneAfCjlHvdyJByb/+IDAwdcdyeHLD/ETbFfmtDFxDRSCH/M+N6KSxAaM6QdRVucxDm3KbgcipNRlJm4tyWIaywmBLJYSun24kSoII8NSWObh+6TKbOayranLPztxltzN8NcFyM0PQ1IyqPxkdVHk1I/6wdKWEgYYvOI6pX3hyfo22zVVROvbn7j0MfqtYR9NFW3IpArGDxxd1J5xbZ5Egap0bROD2gcewKNErVu4lMb3tvTeiwTiZ5Rlp3Ip7dQCuWjpYaeAzXmR1T82HRDjTjnVU2CPfaO+FyJwV67Zo48s2dGJ5SNrMThHdsvtm09dqVmtMuI9ObZrtZtree9rCsD7CukKUpxLobZ1+iQ++wJGDC28e+OaMXOUanh7hb2p0z7mN96koz9UzS5nY8PKtl6+lIY0U5g4AV+APKOvjrVfjX+kdQcJe6oMO+hgjpHM/iHfvf4dfiHeH7d3x5ogTLAR9+TdplTFZmZOHHOBVAMMNF+SVRN4BQb4LKMgXQL+nthJ7HXF1MlGfmZR1KRgcPGFN4+Daor5V5YMBKVSOW8FyRk2IAruxeMG+/vRs8CN/WfmdJ/cP1Z1ovq7taS+ZDPEO8MB/qv0LM4K+eOqy+gG0CyJFTh117ooUJXaxs7rrKjeq6ylN5HVanZGjLbey/IqS3oQeL3yGMvK8Vy9978fbTgCppIw0nhEbyEyFQn0vDPdRjOIKG4igaSh4N2ZE0uGhvIxlZV+MMEyI1jJCt/bDHkB90ZsAwNQh+cyJLnjfcqlZJmkRyGNrNCWcDPQyX4PLIdjlvQ21iFx5uOUTiENYjmxKlU+OGurJSXldWWnZl2Uq8eZm+LJVMx6A366KLyv0tWmoTFkkZOv/hkFtZ7B1zpQ5VuyOiU2KGYUXF2VahANUT2smorILWY7JOFQtCN7TVOuoT/r7armis7R9X9j3znC++PcnuY+2E9FKToiY0L7L1PoslqzVKgoh2iYLIpQTVKFiltKXjoRTRgLBlpUnKtNghXZKZS5KfbeV1rGEdc0lOb+feSUDLQ+dSzOQRA6vTeDhF7z7lttXV3qPKPnO1d6AVqPATG8+ncOgwWdXrIcD+p3n2sS06oKxaXR4redkmqG2yCao9WZujaMEWjVB2DWc49/oaogQQulJTlCGA0eVao2Bx2Rud8+zbO+dZnHPtdc5Z7JArzlmArctNGsvXvTmHkjDnKbYdq8LcOWOZybbhTrcd7oSnxYSnhya8CBOeRltVxkBFpzI2MTWHMbiMSJfNyOlve2O9bzLKeKUWOA+0Xdy6Fy7wkNCq649TT5y75v8b5r+LvYO1BvO/Gia+MrTmsN7lBpZmnVmcXgiLNqEaKNymy5a6lAPcwLvguu7nj1XDt2eBUdcgutsFWnB8oYmssnYDe66W7Fl5Y+wZHcW8Erfu3AT67rwS2/y4TzAvIHl3v9wvO9jnttYS1kLDnkWpAp4tbt47tcEBR9hKtQMudwwJ2BLuqB1vUyulV+9zxZ2EjvcW22gQS5X7aAYkaXUrTizVO/MyplofyYbOdgqyWtuHpo8VHtntb9f0/aHZK7LAi9VeXod+yAvcqqIPPnADSMRu9k72KGtvR7wyPdto2Ds59c6V6vayqONr4K4QzLGawmpis921LmMWBWMW01hbiqzAHVRaNugIZ0o30VnYVsGw3wUMmsOqqaua1iwdiDCBMX9m7wSu2TXwmwBcd9jE5OJVoJfsiILNFsAwK6lTZmMT22QX1KDTcWYhv5GRc17v4xAPzWtX3jvUDXmfYWxiq3pJNkj6uJq7dp/ua5U0XAa3sGXSl9Ov4nlCP6M48+vqm6158eXapg7aLoaWu6O6aGVceWBrsUd1AiNXo7tUYVru8UiXa1Sdko2q7XRlnAyt16xqV1Sq1diqaVUiiJGNq3MyoDKifRXg6TBmuNI8xt7KPMZwHpWt5yFQwWXmIQMvIyaCh4/7cQDOYxr9V/88Kr5DYqreJCreJMa8SWDkIsxEnjahd9K5fBFPobOSeObjFfuI3ZTi6HZiz8ZfuExfsWvce8/jZhnYJ7E2VfbRLaTMmhSqespw985gnfB0OJlyxJ1UhcvqxtXD7ZOovpF2aZ8FGrlqRyh4MXLJyObImLjsE9jljzRfLiwuzjpVmptD7eDUiHg+u/x9+eXvy4Nudc7GsHvA6np39uLuIGdvLe4esGRCWd5Zxt0lzW973F2eSeN2JUseBV6U56Ga4jxUTLhglAu2eVJ0UcQN73T2qv+8SwxwBcYNg7onY0Y7rVNPXTKy2NYpX6ljumgGk5XlvPt8Bmqc2F1bbhQmeANPJB6cFFDmoodyvmV2Wy0Hg11oZ5Za/b1uE6VJfe/rD3qHBcDyeGcFAP7V2QL7jRHduRivy9C8zsyWp8MipDUuWg8GTbt0zu2CODhKdu9a4/jehOxHGF+AHZGfRrW2RUOvOjpo6evI/PVNyHVT42/AGhGPJx0tYpTXjYpQvs6Qt10a1sSbG4M9ezLcsz9kSTa1CA/i8lvTWX7ddJZVap/agk7XXmygc8hSbCJ0KD5P9gJzopN4RkfUjXeOD0U7ZPCp5IvPZxnFNBCMRZLpREYcamWlNvVbS3Mwqu16yN8b0X/tmYIDQ33YA38vBvZgJ/ugpBvdkkXPFMQbaBvOTGYrYXHsSMGL1c8g31Gw0QjMCE8FVUgB3yvKOH0B7ICdgoWwFvQRbeSjfbZRsxztp42crl/mhyc9sIP/CDH6y0mb39YNSZzps3IjxE0GGFVAu07g64EXpX7fxWRDnNtdSYcXi9NBRTOXJhrSEr4TjcXRzXcFDvQewMObj/7VX/Xh/urNnv+G/aZ5Ng526W7Rv4lxvAmBrUOy9W+Wqj/lcQrTImVObW8FDPzyfBPP6u5EI3qZGq9Sok56Ans3eQ5+WdHtUo2i+HaEnLXGyvy7eNrtsJqg9MaCpnvxfH1594L54PXAuHw22oWL3gG4mFTe019u/Sf+/dbkb3+K2BfQYngFHIQr/urvXq/cCbDhKHDyd6/3nVujwwxvGtF1bWXqbl/j5sZrbG2M4/wyVH0iW7DBgXDPoN/Uik1q0N+O7SYnNzRlB+/vDp+rc1n6sm+cvix3bedm+igdMESf1HwbCMQTFT36Qkk6afiXRnatly9DHKJHlYmT7+P6mWyuUELJiAlPa4t2djdD6SfTl5zcRKg/X0D7HXlZZneMXm0sD8hSW6R7EpAkPTNIqBfkowjKQxMau0Ib/iB/4G/HF7m4TUSLDS7OnMDzTdED2THc8W2l61hcQ+UzbtO3ldbBYGxq/VZFlme4/Vsu7VAXOMLSwbkcw2dibTyXo/6WzuXQ39i5HFrYdyrW8MEcwn4Rn+4nPhXYjRs4laIG17QsmSjWrdR5ij1mKJKEaovUeSYlzvPM6qIX8jKN9OogETTMUYfO6Blip7eOjEU/T3XENTzvHE/usvQGeZApt+cWwXCk4R0kIpqM8bzjEoV07FDGEH5V1GgnJ6gpQ4+g+MFFAoAxqtuJkgxVVArkbdpqdej44+Kyr6xvOTTikTSVUjC31lF/tF4K3ICPxRjxgJpgNCXLmlLR4PBprv441zjbxursX4tny2A8Zsp9jBtgX8r+7xSzDRtua6B0J9FdToCfud1wDzLbIQIyMYOaAWcmCG6CK22HSqLlPe8+YqtEb2OMxlbn/WesbI5bzQ+OY5XCNwhbPYnH+Qx7oPiO30Z7cSoyNOKsH9cjpZ98Jttw41Rv17l//+T9+Fv1/b2131Wu/Dwo9Qn3eVDKvcGDr+P5US+6n/eee3YNA453QqKfICAfvzD0RKtOQDRABagwMKANPfGslsNTJcSDJ0BrOob5j/hctZ/1c7mGn5l5J3IKtJXLrDQ+fBJPRFA2PjNzM8d8T8vsJGU/WdRVXb7nZAp2zm1gLFjHAX9NweT/h57n+dO7ldtonbJeNb9H2Uay31ZKG1tSOkwn1vicUI8FKuA/TFD3lHionfdsO3l0DWlR1JT0wAzTVYLKkwbpt4HuB83vSH/kOimfgbB8jmkwgs8x9Z7WFh/ReE5hJ+4POzWkvW14T5gRf17/M15e7/NZBs+gqLE/ls8LqwgUURQLRw9eRTARFKdlpGQca5YeABiqyUMP9RI+SlWhEzOKsHIZo63QWRmKfPZqXmRp4iJLExNHhOQx9aLNgEGb0K3ppjWZsaNT3unuE5Ng0oIBmZ3xnsrqO3BAntZQ8Np8VGDX9ys/xCeXOPi8kgeKyp/1DihP9g4VH/A6fn5YoUe1cnMJa93pca1Y6r7ETdFbF/pb6mfPsfs8i0VCC47a4KG0+LywcFLHMBr4zlbofCcom8hHnXCNTx2FNXb7TXNUWSv1A6HrVA6mGY0LAyXPweY6wjC8qHHdVJ7snzP5X5/mWZ49bfZ/3Or/OHjQNOnxAF9Qnu19RXl/b1H5QO/L+CXkHJ3+G0A6VTa38XzBjhoSMk8v0nJcrVd1/A8Uo/2/e4P4lwABAAAAAYAA2XkIkV8PPPUAHwgAAAAAAM7PamsAAAAA4ATw2AAA/qIKjAdsAAAACAACAAAAAAAAeNpjYGRgYM/5V8XAwPWBAQi4ehgYGVDBMwBeaARkAAB42nVToU7EQBCdu7ZXDoVAoVB8BCG5khAUCn4AseJI+ABICAoMivABqBowoE7xESgMVagTkJzgA3hvZ6fbPXpNXt52Zt7szszu8FsOhJ9TZNsig3txwzdxxaa4USWuXAMvxJmdyG5kSj9txj6uhv8OvB9Qd1BFG+OJ/Ev15NGksx+57OiCnaDO2z6gbWB7jz4f95jmYQ6ux6dpHOvgmpxvqQ11ueLiP7LjuPZ92MH6Odbdp0l0TYhrAoKPenL+Cg69tz6YxvaAX3kO3oVmQ3vX1vOrtWa3AaEW+vyZMZfBE+wz1SezmcTeLGP8EGZRpWB+Amd/4dmsz31oz1mnaGdUre4h59bb26X9i8PVObD/1PqeoIm8vtC9eBf8PGYi5TneRODhJebzCewp5Ad8BT4TYX2G/DreDYO9G/925pqfWt57gnnZ4/IE/0cif3ZHtqZ42mNgYNCBwwiGNYxyjPuYopgeMYswezDXMG9i/sKixmLHEsdSxrKH5QlrGOsVNim2GrZH7GzsbexvOEQ4QjgyOLo45nEqcS7gvMClw1XHtYPrA7cSdwf3Hu4bPAI8bjxZPKt4HvFq8GbwnuGT4ZvEd4DvC78E/yz+M/z/BLQEIgQKBBYJHBN4IPBPMENwnxCXUIzQBqFPwjHCs4QPCX8T0RHxEFki8kBUTbRG9JwYh1iG2BqxV+J84j3i+8TfSEhIVElMkfglaQOEGZJ3pEykdkiLSVtJ35BhkumT2SVzR5ZDVkx2lewhOT65ALlD8m7yCfJL5B/I/1NQU/BQ6FPYoPBJ0USxTIlByUKpQGmNsoxygfIBFTGVJpVDqiyqXqoLVI+pvlOTUgtSW6Muo56jvk9DRGOSxjdNMc0qzT2a/7RctKZpXdAW0a7T/qFTpPNJd4KemN4cfS/9dQZCBmUGDwwDDGsMVxleM+IzKjJ6Ymxh3Gf8yiTF5JjJN9M0021mbGYxZtvMPpl7mc+yELCYZ3HIkgUHFLJUsNSzdLOMs+yzPGD5ycrBaorVC2s+azcgjLLOA8JvNjE2NQCDWIcfAAEAAADmADwABAAAAAAAAgABAAIAFgAAAQAAwwAAAAB42p2Su0oDQRSG/9mNS4IhWKUQkS0jSFhHYxFsBLEMYkAbm1w260piNLtGSyvfxcbCh5B4eQHfxNJ/Zo9CFkwhw5n5zpzb/sMCWMELXKhCCcAFLWOFCr2MHfKdsIsaHoQLWMeT8BL28CHsoaKKwkWsqapwiayFl6FVS7hMvheeoaqehV8RqJnwG3t+Cb/Dc7yMP12sOmUcYYIxugh5pvDxSKuhRb+DIXcfB6QpYvSRMPMSG6jzViPAFpfhfWYOeR4zK8I5+yTWC3mavlPu/dwkE41ww7oO/flYEyeWEvYzE307p8GJ+a+d7/JXldEQokcbSa2JaWz+6tjOdV6kf1HMaE9xRQVnXLd21enH/AtC1iTMj2gJb3usGP2j4pT3XQzsvFRUBmjzFYzmQxv1uRq0gHuT6na5a+yIXs2bPvMG7GveLrVqxqz96dnGNSMx32JivuIbEo1u73jabc9HTFRxEMfx78DCwtJ7sSuIiuW9tyzFylJWxI4N7ChtLZTFtddgb9GYyEkD6kWMgg2NiXpQY8MWS9SDRyOohIN61ZX9e3OSySe/SWaSwYfe+p3CSf5Xnz0t4iO++GLCD3/MBBCIhSCCCSGUMMKJIJIoookhljjiSSCRPvSlH/0ZwEAGMZghJJHMUFIYxnBGkMpIRjGaMWjoGFhJw0Y6GWSSxVjGMZ4JTGQS2djJIZc88nEwmQKmUMhUpjGdGcxkFrMpYg5zmcd8FlBMCQtZxGKWsJRlLKdUTJxlN3u47fnzC3s5yiFOcZ5z4sdBPtLACfEXM0doZD/3+CQBnKaFn/zgF2e4yGMecokVrOQYZTylnEc84QUdPOM5nVTwmpe8opVKejjOO97wliq+8p0DrMLJatayhmqaqKGOWlzU42Yd69lAFxvZzCa2sI2t3KSZHWxnJ7v4Rje3aOMy7/kggWKRIAmWEAmVMAmXCImUKImWGInlCldp5wb3ucZ1HrCPCxLHHe5KvCRwWBLN7mqnpml5XnWlXVOqnGMorcqsvxqeRaWuNJRWZZrSpkxXZigzlf/u2b3q6q6uWyqclW5XeVlpfZV3ZDi82hymfLerpjfYHLl/AFFdksMAeNrbwfi/dQNjL4P3Bo6AiI2MjH2RG93YtCMUNwhEem8QCQIyGiJlN7Bpx0QwbGBUcN3ArO2ygUnBdRcDI4sKA5M2iM+4gRkqwaLguolZj0l7I7NbGZDLClLHzGLBABdhAypgNYdxIzeIaAMArtoj0A==) format("woff")}@font-face{font-family:Roadgeek-2005-Engschrift-Rg;font-weight:400;font-style:normal;src:url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"),url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}@font-face{font-family:Willow Body;font-weight:400;font-style:normal;src:url(data:@file/x-font-ttf;base64,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ERKxAAE5OTAxExEBIREhBxEXIREhUgElA1r9N5ePAtH8oAEhBEwBIv7ilPzRj/7hAAIAUgAABQgGkQAFAAsASgCyAAAAK7EGCumyAQIAK7ELCOkBsAwvsADWsQYM6bAGELEIASuxBAzpsQ0BK7EIBhESsQUCOTkAsQYAERKwBDmxAQsRErADOTAxMxEhAREJASE3ESchUgONASn+2/2OAfWDhf4NBpH+2fu9/tkBOYMDJ4MAAAEAUgAABI0GjwALAEcAsgAAACuxCQPpsgECACuxBAPptAgFAAENK7EIA+kBsAwvsADWsQkM6bAEMrIJAAors0AJCwkrsAIys0AJBwkrsQ0BKwAwMTMRIREhESERIREhEVIEO/zkAsD9QAMcBo/+4v5m/t/+af7hAAEAUgAABI0GjwAJAEAAsgAAACuyAQIAK7EEA+m0CAUAAQ0rsQgD6QGwCi+wANaxCQzpsAQysgkACiuzQAkDCSuzQAkHCSuxCwErADAxMxEhESERIREhEVIEO/zkAsD9QAaP/uL+Zv7f/UoAAAEAUgAABSUGjwARAIEAshEAACuxCAPpsgICACuxBQPptAwNEQINK7EMA+kBsBIvsADWsQcM6bIHAAors0AHBAkrsAcQsQoBK7EPEOmyCg8KK7NACgwJK7ETASuxBwARErARObAKEbICBRA5OTkAsQgRERKwADmwDBGxBw85ObEFDRESsAY5sAIRsAE5MDETEQEhESEHERchNxEhESERASFSASUDH/1wlZ8BeY7+1wI3/tn9cwEfBFIBHv7glPzjnZEBBAEd/VD+3QAAAAEAUgAABOEGjwALAD8AsgAAACuwBzOyAQIAK7AFM7QKAwABDSuxCgPpAbAML7AA1rELDOmwAjKwCxCxCAErsAQysQcM6bENASsAMDEzESERIREhESERIRFSAR8CUgEe/uL9rgaP/UgCuPlxArj9SAABAGYAAALZBo8ACwA/ALIAAAArsQED6bAJMrIFAgArsQQD6bAHMgGwDC+wANawBDKxCw3psAYysQsN6bENASuxCwARErECCDk5ADAxMxEzESMRIREjETMRZqqqAnOqqgEfBFIBHv7i+67+4QABAFIAAAOFBo8ABwAxALIAAAArsQED6bIEAgArAbAIL7AD1rEGDOmxCQErsQYDERKwBzkAsQEAERKwBjkwMTMRITcRIREBUgGFjwEf/uEBH48E4fqQ/uEAAQBSAAAD6QaRAA4ASQCyAAAAK7AKM7IBAgArsAUzAbAPL7AA1rEODOmwAjKwDhCxCwErsAQysQoM6bAGMrEQASuxCw4RErAIOQCxAQARErEDDTk5MDEzESERAREhEQkBESERARFSAR8BWgEe/nEBj/7i/qYGkf2KAUcBL/5I/oX+gf4hAU4BQ/1vAAABAFIAAAQCBo8ABQAsALIAAAArsQMD6bIBAgArAbAGL7AA1rEDDOmyAwAKK7NAAwUJK7EHASsAMDEzESERIRFSAR8CkQaP+pD+4QAAAQBSAAAFMQaWAAsARgCyAAAAK7AGM7IBAgArsAQzAbAML7AA1rELDOmwCxCxBwErsQYM6bENASuxCwARErACObAHEbAEOQCxAQARErEDCDk5MDEzESEJASERIREJARFSAR8BUgFPAR/+4f6x/q4Glv3hAh/5agT0/eECH/sMAAABAFIAAAThBo8ACQBIALIAAAArsAYzsgECACuwBDMBsAovsADWsQkM6bAJELEDASuxBhDpsQsBK7EJABESsAI5sQYDERKwBzkAsQEAERKxAwg5OTAxMxEhAREhESEBEVIBHwJgARD+/v2SBo/7lgRq+XEEZPucAAACAGYAAAVGBo8ABwAPAE8AsgcAACuxCQbpsgICACuxDgbpAbAQL7AA1rEIDOmwCBCxCwErsQUM6bERASuxCAARErECBzk5sAsRsQMGOTkAsQ4JERKzAQQFACQXOTAxExEBIQERASERFyE3ESchB2YBHwKiAR/+4f1ejwF9lpb+hpIBHwRSAR7+4vuu/uEBmI6UA1iPjwAAAAIAUgAABQQGjwAHAA0AVACyAAAAK7IBAgArsQ0D6bQIBgABDSuxCAPpAbAOL7AA1rEHDOmwCDKwBxCxCgErsQQM6bEPASuxBAoRErECBTk5ALEIBhESsAQ5sQENERKwAzkwMTMRIRcRByEZASE3NSchUgO+9PT9YQIWXl796gaP9f4S8v1GA9li02MAAgBS/5oF8gaPAAsAFQBqALILAAArsQ0J6bICAgArsRQD6QGwFi+wANaxDAzpsAwQsREBK7EFEumyEQUKK7NAEQ8JK7EXASuxEQwRErQCAwsKDiQXObAFEbIGCAk5OTkAsQ0LERKzAAYHCSQXObAUEbIEAQU5OTkwMRMRASEBEQcXBycHIQMXIScRAREnIQdSAS8CwwEtQMG31WD9exCmAX+5AXmu/nOqAS8EMQEv/tP8Bj3DzsJcAd+stgF9/oYC1bKyAAIAUgAABN8GjwAMABIAZwCyAAAAK7AHM7IBAgArsRID6bQLDQABDSuxCwPpAbATL7AA1rEMDOmwDTKwDBCxCAErsA8ysQcM6bADMrEUASuxCAwRErACObAHEbAFOQCxCwARErAGObANEbAFObASErEDBDk5MDEzESEBEQcXESERJyEZASE3NSchUgNvAR6Xl/7iaf4ZAedpa/4bBo/+4v5ul5T9TAJOav1IA9dmx20AAQBSAAAFAAaPABMAdQCyAAAAK7EBA+myCQIAK7EMA+m0Bg8ACQ0rsQYH6QGwFC+wB9awADKxDgzpsA4QsQMBK7ESDOmxFQErsQ4HERKxBgk5ObADEbICDA85OTmwEhKzCgsQEyQXOQCxAQARErASObEPBhESsBE5sAwRsQgHOTkwMTMRITc1JyEBEQEhESEHFRchAREBUgMdcnf+B/7hAR8DAv10dnYCEwEG/uUBH3K3dgEfAZQBHv7id7R1/vb+VP7lAAEAUgAABYUGjQAHADoAsgYAACuyAQIAK7EAA+mwAzIBsAgvsAbWsQUM6bIFBgors0AFAwkrsgYFCiuzQAYACSuxCQErADAxExEhESERIRFSBTP99v7hBW8BHv7i+pEFbwAAAAABAFIAAAUfBpEACwBDALILAAArsQQD6bIBAgArsAczAbAML7AA1rEDDOmwAxCxBgErsQkM6bENASuxBgMRErEKCzk5ALEBBBESsQAJOTkwMRMRIREXITcRIREBIVIBH4cBf4kBH/7R/Y8BLQVk+xmLiwTn+pz+0wABAFIAAAUUBpEACgA9ALIKAAArsgECACuwBjMBsAsvsADWsQMM6bADELEFASuxCAzpsQwBK7EFAxESsQkKOTkAsQEKERKwBDkwMRMRIREJAREhEQEjUgEfAT8BRgEe/hPqAvYDm/zF/gYB/AM5/Gf9CAAAAAEAUgAABTkGjwALAEYAsgAAACuwCDOyAQIAK7AGMwGwDC+wANaxAwzpsAMQsQUBK7EIDOmxDQErsQMAERKwCzmwBRGwCTkAsQEAERKxAwo5OTAxMxEhEQkBESERIQkBUgEfAVYBVAEe/uL+rP6qBo/7GwFa/qYE4/lzAVr+pgAAAQBSAAAFEAaRAAsAJgCyAAAAK7AIM7ICAgArsAUzAbAML7ENASsAsQIAERKxBAo5OTAxMwkBIQkBIQkBIQkBUgG0/kwBSAEWARkBR/5SAa7+uf7n/uoDSgNH/egCGPy5/LYCHf3jAAABAFIAAAU5BpEACAAwALIHAAArsgACACuwAzMBsAkvsAfWsQYU6bEKASuxBgcRErACOQCxAAcRErACOTAxEyEJASEBESERUgFcARcBGAFc/i/+uQaR/egCGPyk/MsDNQABAFIAAAT8BpEACQAsALIAAAArsQcE6bIEAgArsQMD6QGwCi+xCwErALEHABESsAE5sAMRsAY5MDEzEQEhESERASERUgNI/LgEqvy0A0wBSAQrAR7+4vvV/rgAAAEAUv9SAuwHTgAHAC8AsAAvsQUD6bAEL7EBA+kBsAgvsADWsQcN6bACMrEFDOmxBw3psAMysQkBKwAwMRcRIREhESERUgKa/osBda4H/P7b+k7+2wAAAAABAFL/1wO4Bo8AAwAdALIDAAArsgACACsBsAQvsAPWsQIT6bEFASsAMDETIQEhUgEpAj3+xQaP+UgAAAABAFL/UgLsB04ABwA4ALAHL7EAA+mwAy+xBAPpAbAIL7AH1rADMrEGDemwBhCxARDpsAEvsAYQsQcN6bAHL7EJASsAMDE3IREhESERIVIBif53Apr9ZncFsgEl+AQAAAABAFIFCgTbBpoABgAhALAAL7ADM7QBBAAQBCsBsAcvsQgBKwCxAQARErAFOTAxEwEhASEnB1IBjwFrAY/+YrS0BQoBkP5wtLQAAAAAAQBS/qQEFP9xAAMAHQCwAy+0AAsAEgQrtAALABIEKwGwBC+xBQErADAxFyEVIVIDwvw+j80AAAABAFIGxwKPCJ4AAwAdALADL7QBBAAJBCsBsAQvsADWsQIN6bEFASsAMDETNQUVUgI9B7zi9uEAAAIAUgAABI8EpAAFAAsASACyBQAAK7EHBumyAgEAK7EKBukBsAwvsADWsQYR6bAGELEIASuxBBDpsQ0BK7EGABESsAU5sAgRsAI5ALEKBxESsQABOTkwMRMRASERIRMXIREhB1IBGAMl/NUEmgF7/oOYARACewEZ+1wBopgCkJgAAgBSAAAESgaYAAcADQBYALIAAAArsQgD6bIDAQArsQ0D6bIDDQors0ADAQkrAbAOL7AA1rEIDOmwAjKwCBCxCgErsQYO6bEPASuxBgoRErEEBzk5ALEIABESsAY5sQMNERKwBTkwMTMRIREhFxEHASE3ESchUgEfAf7b4v4JAWhxc/6aBpj+ANz9JeEBH3ABb3kAAAEAUgAAA80EogALAFAAsgsAACuxCAPpsgIBACuxBQPpAbAML7AA1rEHDOmyBwAKK7NABwkJK7NABwQJK7ENASuxBwARErECCzk5ALEICxESsAA5sQIFERKwATkwMTcRNyERIQcRFyERIVLjAm/+K15eAf79auUC2eT+4Vr+VF7+4QAAAAIAUgAABAoGmAAHAA0AWACyBwAAK7EJA+myAgEAK7EMA+myAgwKK7NAAgQJKwGwDi+wANaxCAzpsAgQsQoBK7ADMrEGDOmxDwErsQgAERKxAgc5OQCxCQcRErAAObECDBESsAE5MDE3ETchESERIRMXIREhB1LfAbsBHv0tOm4BDf7zbuUC4N0B9vloAY9wAmJzAAACAFIAAAQtBKYACwARAG4AsgsAACuxCAbpsgIBACuxEAvptAYMCwINK7EGBukBsBIvsADWsQcM6bAMMrAHELENASuxBBXpsRMBK7EHABESsQILOTmwDRGwCDmwBBKyAwkKOTk5ALEGCBESsAA5sRAMERKwATmwAhGwBDkwMRMRASEXESEVFyERIREhNScjB1IBHwHV5/1ERQH+/b0BxnLkcAEfAmgBH+j+B3NI/vYCz3B1dQABAD0AAAPFBp4ADwBeALIOAAArsAAvsAszsQED6bAJMrAHL7EEA+kBsBAvsA7WsAIysQ0M6bAIMrINDgors0ANCwkrs0ANBgkrsg4NCiuzQA4ACSuxEQErsQ0OERKwBDkAsQQHERKwAzkwMRMRMxE3IREhBxUhESERIRE9xeEB4v7RdQEc/uT+4QNtASABL+L+4Xd7/uD8kwNtAAACAFL9wwQnBJYACwARAHMAsgsAACuxDQXpsgIBACuxEAvpsAYvsQcD6QGwEi+wANaxDA/psAwQsQkBK7AOMrEEDOmyCQQKK7NACQcJK7ETASuxDAARErECCzk5sAkRsAg5sAQSsAU5ALEHBhESsAQ5sQ0LERKwADmxAhARErABOTAxNxE3IREHIREhNzUhExchESEHUt0C+Pj9rgG2df4rKXcBNf7FceEC1eD6JPcBHnOsAXt3AqBxAAAAAAEAUgAABAoGnAALAE0AsgAAACuwBjOyAwEAK7EKA+myAwoKK7NAAwEJKwGwDC+wANaxCwzpsAIysAsQsQcBK7EGDOmxDQErsQYHERKwBDkAsQMKERKwBTkwMTMRIREhAREhEScjEVIBHwGPAQr+4pDrBpz+Bv70/GoC9o/8ewAAAgBSAAABcQagAAMABwAxALIAAAArsAQvsQUD6QGwCC+wANawBDKxAwzpsAYysQMM6bEJASsAsQQAERKwATkwMTMRIREBESERUgEf/uEBHwSL+3UFgQEf/uEAAAAC/9f+ZAJEBp4ABwALAE0AsAcvsQAD6bIABwors0AAAwkrsAgvsQkD6QGwDC+wAtawCDKxBQzpsAoysgIFCiuzQAIACSuxDQErsQUCERKwBjkAsQAHERKwBTkwMQczNxEhEQchAREhESn6VAEfyf5cAU4BH31QBNf6g8kHGwEf/uEAAAABAFIAAAQ7BpwACgAtALIAAAArsAczsgQBACsBsAsvsADWsQoM6bACMrEMASsAsQQAERKxAwk5OTAxMxEhEQEhCQEhARFSAR8BSwFt/bgCWv6Y/p4GnPy4AUz9uv2mAWL+ngAAAQBSAAABcQZqAAMAHwCyAAAAK7ABLwGwBC+wANaxAwzpsQMM6bEFASsAMDEzESERUgEfBmr5lgABAFIAAAX8BKYAFABuALIAAAArsQgOMzOyAgEAK7AFM7ESA+mwCzIBsBUvsADWsRQM6bAUELEPASuxDgzpsA4QsQkBK7EIDOmxFgErsRQAERKwAjmwDxGwAzmwDhKwBDmwCRGwBTmwCBKwBjkAsQISERKyAQQHOTk5MDEzEQEhFzchAREhEScjBxEhEScjBxFSAQIBQpWWATUBBv7hXlJ3/uJpVmgDpAEClpb++vxgAx1qavzjAx9oaPzhAAEAUgAABDUEpgALAEkAsgAAACuwBTOyAgEAK7EJA+kBsAwvsADWsQsM6bALELEGASuxBQzpsQ0BK7ELABESsAI5sQUGERKwAzkAsQIJERKxAQQ5OTAxMxE3IRcRIREnIwcRUs8CRc/+4mnXZgPXz8/8KQMhZmb83wAAAAACAFIAAAS4BKYABwAPAFgAsgcAACuxCQPpsgIBACuxDgPpAbAQL7AA1rEIDOmwCBCxCwErsQUM6bERASuxCAARErECBzk5sQULERKxAwY5OQCxCQcRErEABTk5sQIOERKxAQQ5OTAxNxE3IRcRByETFyE3ESchB1LVArzV1f1IRm4BSHNx/rhw2wL019f9CNcBj3ByAYhucwAAAAACAFL99gQfBKIABwANAFAAsgYAACuxCAPpsgEBACuxDQPpsAAvAbAOL7AA1rEHDOmwCDKwBxCxCgErsQQM6bEPASuxBAoRErECBTk5ALEIBhESsAQ5sQENERKwAzkwMRMRIRcRByEZASE3ESchUgLT+vb+SAEadW/+4P32Bqz6/U72/fYDJ3IBimoAAAIAUv32BB8EogAHAA0AUACyBwAAK7EJA+myAgEAK7EMA+mwBS8BsA4vsADWsQgM6bAIELEFASuwCjKxBAzpsQ8BK7EIABESsQIHOTkAsQkHERKwADmxAgwRErABOTAxNxE3IREhESETFyERIQdS+gLT/uH+SCl0ARv+3272ArL6+VQCCgGPcgJmagAAAQBSAAADFwSmAAcAPACyAAAAK7ICAQArsQUD6QGwCC+wANaxBwzpsgcACiuzQAcECSuxCQErsQcAERKwAjkAsQIFERKwATkwMTMRNyERIQcRUtkB7P7McgPN2f7hcPzpAAAAAAEAUgAABDsEpgAPAHcAsgAAACuxAQPpsgcBACuxCgPptAsEAAcNK7ELA+kBsBAvsAXWsAAysQsT6bILBQors0ALCQkrsAsQsQIBK7EODOmxEQErsQsFERKxBAc5ObEOAhESsQwPOTkAsQEAERKwDjmxCwQRErEFDTk5sQcKERKwBjkwMTMRITUhJxE3IREhFSEXEQdSAsv+CtW4Asn9tAHozMoBH6zVAU64/uGezv6yzQAAAAEAPQAAA4cFrgAPAGYAsg0AACuxCgPpsAAvsAczsQED6bAFMrIBAAors0ABBAkrAbAQL7AO1rACMrEJDOmwBDKyCQ4KK7NACQcJK7NACQsJK7IOCQors0AOAAkrsREBK7EJDhESsA05ALEKDRESsA45MDETETMRIREzESMRFzMRIScRPdoBHt/fc9/+ceEDjwEfAQD/AP7h/gJy/uHhAq4AAAAAAQBSAAAEIQSmAAsASQCyCwAAK7EEA+myAQEAK7AHMwGwDC+wANaxAwzpsAMQsQYBK7EJDOmxDQErsQMAERKwCzmxCQYRErAKOQCxBAsRErEACTk5MDE3ESERFzM3ESERByFSAR9wtWwBH/j+IfgDrvzrcm4DGfxS+AAAAAEAUgAABCMEqAAKAD0AsgoAACuyAQEAK7AGMwGwCy+wANaxAwzpsAMQsQUBK7EIDOmxDAErsQUDERKxCQo5OQCxAQoRErAEOTAxExEhERc3ESERASNSAR/KyQEf/mCRAaADCP15ycsChfz4/mAAAAABAFIAAAX8BKYAFABuALIUAAArsBAzsQQD6bAKMrIBAQArsQcNMzMBsBUvsADWsQMM6bADELEGASuxCQzpsAkQsQwBK7EPDOmxFgErsQMAERKwFDmwBhGwEzmwCRKwEjmwDBGwETmwDxKwEDkAsQQUERKyAA8SOTk5MDETESERFzM3ESERFzM3ESERASEnByFSAR9oVmkBHndSXgEf/vr+y5aV/r4BAgOk/OFoaAMf/ONqagMd/GD++paWAAEAUgAABRAEpgALACYAsgAAACuwCDOyAgEAK7AFMwGwDC+xDQErALECABESsQQKOTkwMTMJASEJASEJASEJAVIBtP5MAUgBFgEZAUf+UgGu/rn+5/7qAlQCUv6DAX39rv2sAX/+gQAAAQBS/cMD/gSYAA8AaACyDwAAK7EEA+myAQEAK7AGM7AKL7ELA+kBsBAvsADWsQMM6bADELENASuwBTKxCAzpsg0ICiuzQA0LCSuxEQErsQMAERKwDzmwDRGwDDmwCBKwCTkAsQsKERKwCDmxBA8RErAAOTAxNxEhERczESERByERITc1IVIBH3L8AR/h/icBQVr+VOMDtfz3cAN3+hDjAR5axQABAFIAAAQhBKYACQAsALIAAAArsQcD6bIEAQArsQMG6QGwCi+xCwErALEHABESsAE5sAMRsAY5MDEzEQEhESERASERUgKH/XkDz/2VAmsBEgKKAQr+4f2Y/uEAAAEAUv8KAdcHXAAYAHMAsBQvtBILAAsEK7AAL7QBCwASBCuwCC+0BgsACwQrAbAZL7AW1rADMrQQFQASBCuwCjKyEBYKK7NAEBMJK7AHMrIWEAors0AWAQkrsRoBK7EQFhESsA05ALEAEhESsQ8WOTmwARGwDTmwCBKxBAs5OTAxEzU2NRE0OwEVIhURFAcWFREUMxUjIicRNFJm4D9mSEhmP98BAs/EBIgCR/a4Pv25mFZak/28Pbn2AkSHAAAAAAEAPf8KATMHXAADABcAAbAEL7AA1rEDFemxAxXpsQUBKwAwMRcRMxE99vYIUveuAAEAUv8KAdcHXAAYAHMAsBgvtAALAAsEK7ASL7QRCwASBCuwCi+0CwsACwQrAbAZL7AC1rAHMrQVFQASBCuwDjKyFQIKK7NAFRIJK7ICFQors0ACGAkrsAoysRoBK7EVAhESsAU5ALESABESsQMVOTmwERGwBTmwChKxBw45OTAxFzI1ETQ3JjURNCc1MzIXERQXFQYVERQrAVJmRkZmP98BZmbgPz09AkiWV1iWAkM9Abj2/b2HBMUEh/249gAAAAEAUgK4B1YEiQAcAJYAsBovsQQL6bAFMrMLBBoIK7ESC+kBsB0vsR4BK7A2Grrs3sLtABUrCrAFLg6wCcCxGBf5sBTAsAUQswYFCRMrswcFCRMrsBgQsxYYFBMrsgYFCSCKIIojBg4REjmwBzmyFhgUERI5ALUHCRQWGAYuLi4uLi4BtgcJFBYYBQYuLi4uLi4usEAaAQCxCxoRErEBDzk5MDETNT4BMzIWFxYXFjMyNjcVDgEjIicmJyYnJiMiBlKN/ndSroMUKdVrdfOaifx/e9kfDggN6YFx8QK4+F5hIy8GEUxjbPhgXE4KBgIEUGIAAAACAFL/XAGHBdUAAwAHACQAsAQvsQUE6QGwCC+wANawBDKxAxPpsAYysQMT6bEJASsAMDEXESERAREhEVIBNf7LATWkBIP7fQUxAUj+uAAAAAIAUv8KA80FrgARABcAigCyEAAAK7AMM7ETA+mwCjKyEBMKK7NAEA8JK7IDAQArsAYzsRYD6bAIMrIDFgors0ADBAkrAbAYL7AA1rESDOmwEhCxDwErsQMUMjK0DhUAEgQrsQUJMjKyDg8KK7NADgsJK7NADggJK7EZASuxEgARErECETk5ALETEBESsAA5sQMWERKwATkwMTcRNzMRMxEzESMRMxEjFSM1IxMXMxEjB1Lj383Dw+zszd06XkVFXuUC2eQBDP70/uH9nP7h9vYBfV4CZFoAAAEAUv/XA9cGjwATAF4AshIAACuxDwvpsgUCACuxCAvptAEAEgUNK7ANM7QBCwALBCuwCzIBsBQvsBLWsAIysQ8V6bAKMrIPEgors0APDQkrs0APEQkrsAYyshIPCiuzQBIACSuxFQErADAxEzUzERApARUhIhcRMxUjESEVIRFSZgFcAcP+ZqQBzMwCPfzhAwq5AXABXOGk/rm5/a7hAzMAAAAAAQBSAAAFrAVxABUAMgCyEgAAK7QABAAIBCuwDTKwAy+wCzO0BwQACAQrAbAWL7AB1rQNFAALBCuxFwErADAxEzMRIzY3NiEgFxYXIREhBgcGISAnJlK2tiWZzQEhASHNmib83QMjJ5nN/t/+382aAi8BE8uZy8uayv7ty5fNzZgAAAAAAQBSAAAGxQZqAA8AWwCyBwAAK7AJL7QKCwALBCuwDS+0DgsACwQrsAEvsAMzAbAQL7AH1rALMrEGFOmyBwYKK7NABwkJK7ANMrERASuxBgcRErACOQCxDg0RErAFObABEbECBDk5MDEbAQkBFwERIREhNSE1ITUzUukCTAJI9v1u/qT+8AEQ/vCXBWgBAv21Akv1/W79HQEKueG4AAAAAAIAUv8KAQoHXAADAAcAIwABsAgvsADWsAQytAMVABIEK7AGMrQDFQASBCuxCQErADAxFxEzEQMRMxFSuLi49gPs/BQFMwMf/OEAAAACAFL/+gOkBo8AHgAmAMYAsgAAACu0AQsAEgQrsg8CACu0EgsAEgQrshUBACu0JQsAEgQrsg0BACu0IAYAFQ0rtCALABIEK7AIMgGwJy+wCtaxAA0yMrQfFQASBCuwEzKwHxCxAwErtB0VABIEK7AdELAaINYRtCIVABIEK7AiL7QaFQASBCuxKAErsR8KERKyBgwPOTk5sCIRtAUCEhYXJBc5sAMSsBg5sBoRsxARGx4kFzkAsSAGERKxGhw5ObAlEbALObAVErEMGTk5sBIRsA45MDEXNSE3NSchLwEzJxE3JxE3IRUhBxUXIRUzFxEHFxEHARczNzUnIwdSAjVSUP6Suw4EBGhoywIi/jJUUAEvMbpQbcn+QlD9UFD5VAbLUoFUvgoEAR1oaQEfyspUgU4Ev/7RXmD+0ckDCE5QgVBUAAACAFIG9gL2CBQAAwAHAC8AsAAvsAQzsQED6bAFMrEBA+kBsAgvsADWsQMM6bADELEEASuxBwzpsQkBKwAwMRMRIREzESERUgEfZgEfBvYBHv7iAR7+4gAAAwBS/9cGpAaPAAsAFwAjAIgAsgoAACu0DgsACwQrsgMCACu0FQsACwQrtCMgCgMNK7EjC+m0Gh0KAw0rsRoL6QGwJC+wANa0DBUAEgQrsAwQsRgBK7EfD+myHxgKK7NAHyEJK7NAHxwJK7AfELERASu0BxUAEgQrsSUBK7EfGBESsRojOTkAsSAjERKwGDmxGh0RErAZOTAxExEQKQEgGQEQKQEgExQzITI1ETQjISIVExE3IRUhBxEXIRUhUgFcA5oBXP6k/Gb+pLikA5qkpPxmpKDjAm/+K3VxAgL9agEzBAABXP6k+/z+qAFcpKAEBKSk/NMCXuTwdf6mcPgAAAIAUgQKAqQGjwARABsAPwCyCQIAK7QICwASBCuwEC+0FAsAEgQrsBkvtAMLABIEKwGwHC+wANaxDQ3psR0BK7ENABESsgwSFzk5OQAwMRM1NDsBNTQnITUhMh0BFCsBIjcUOwEyPQEjIgdSz8YS/qoBVs/PtM+8E7QSxhIBBNsCzxISAb7R49HREhITEQAAAAIAUgBvA9cD+AAGAA0AABM1ARUNARUDNQEVDQEVUgHr/tcBKVEB6/7XASkB4agBb+jb4eUBcqgBb+jb4eUAAAABAFIBxwQZA/4ABQA2ALAAL7QBCwALBCuyAAEKK7NAAAQJKwGwBi+wBNa0AxUADQQrsgQDCiuzQAQACSuxBwErADAxEzUhESMRUgPHcQOLc/3JAcQAAAAAAQBSAdcDCgLNAAMAABM1IRVSArgB1/b2AAAAAAQAUgHVBKQGjQALABcAIwArAJMAsgMCACu0FQsACwQrsAovtA4LAAsEK7ArL7QZCwASBCuyKxkKK7NAKxgJK7AgMgGwLC+wANa0DBUAEgQrsAwQsRgBK7QjFQASBCuwJDKwIxCxJwErtB0VABIEK7AdELERASu0BxUAEgQrsS0BK7EnIxESsCE5sB0RsRQfOTmwERKwIDkAsSsOERKyHyIkOTk5MDETERApASAZARApASATFDMhMjURNAchIhUTESEyHQEUBxMhJxURMzI3NTQnI1IBXAGaAVz+pP5m/qSkpAGuuLj+UqRoAYPPpt/+/szGEgETxgMxAgABXP6k/fz+qAFIpKACLaQBo/2HAu/XNb4X/vL6+gHNFjUUAQAAAAEAUgfDAqQIewADACUAsAAvtAELAAsEK7QBCwALBCsBsAQvsQABK7EDDemxBQErADAxEzUhFVICUgfDuLgAAAACAFID1wMKBo8ABwAPAE4AsgICACu0DgsACwQrsAYvtAoLAAsEKwGwEC+wANa0CBUAEgQrsAgQsQwBK7QEFQASBCuxEQErsQwIERKxBgI5OQCxDgoRErEEADk5MDETECEgERAhIBMUMzI1NCMiUgFcAVz+pP6kuKSkpKQFMwFc/qT+pAFcpKCoAAAAAAEAUv/VBEgEfwAPAF0AsAwvsQ0L6bAJMrAAL7AHM7EBCemwBTKyAQAKK7NAAQMJKwGwEC+wDtawAjKxCRPpsAQysgkOCiuzQAkHCSuzQAkLCSuyDgkKK7NADgAJK7NADgwJK7ERASsAMDETESERIREhESERMxUhNTMRUgFiAS8BZf6btf1H1QHnATIBZv6a/s7+5Pb2ARwAAQBSAwoCcQaPABcAXACyCwIAK7QKCwASBCuwAC+0FQsAEgQrsBIvtAMLABIEKwGwGC+wAda0FRUAEgQrsBUQsQYBK7QPFQASBCuwFjKyBg8KK7NABgoJK7EZASuxBhURErEDETk5ADAxExE0OwEyPQE0IyE1ITIdARQrASIHFSEVUs2FEBD+2QEnzc2FEgEBZQMKAWXXFF4XwNde1xSkwQAAAAABAFIDCgJxBo8AHQBcALIRAgArtBALABIEK7AAL7QBCwASBCuwCC+0CQsAEgQrAbAeL7AE1rAMMrQbFQASBCuwFDKyBBsKK7NABAgJK7EAEDIysR8BK7EbBBESsBg5ALEJCBESsBg5MDETNSEyPQE0IyE1ITI9ATQjITUhMh0BFAYHFh0BFCNSAVIQEP6uAVYMEP6uAVLNDw4dzQMKwRaOFMMUXhfA114lORkzQY7XAAEAUgcAAj0ImgADACEAsAAvtAIEAAoEKwGwBC+xAAErtAMNABAEK7EFASsAMDETNSUVUgHrBwDPy80AAAEAUv/XA7YGjwAMAFQAsgkAACuwBDOyAgIAK7QKCwALBCuyCgIKK7NACgAJK7AGMgGwDS+wANa0DBUAEgQrsAwQsQkBK7QIFQASBCuwCBCxBQErtAQVABIEK7EOASsAMDETECkBESMRIxEjEQYVUgFcAgi4mriiBQoBhflIBTP6zQYAAssAAAABAVz/1wJSANEAAwApALIAAAArsQEL6bIAAAArsQEL6QGwBC+wANaxAxXpsQMV6bEFASsAMDEFNTMVAVz2Kfr6AAAAAAEAUv5SAaj/1wANAEIAsgAAACu0DQsACwQrsAYvtAcLAAsEKwGwDi+wCta0AxUAEgQrsgoDCiuzQAoGCSuwADKxDwErALENBxESsAM5MDEXMzIVFCcjNTMyNTQrAVKPx8uLiycniynDwwGkHh8AAAABAFIDCgE9Bo8ABwAmALIBAgArAbAIL7AF1rQEFQASBCuyBQQKK7NABQAJK7EJASsAMDETNTIHESMRNFLsAaMFz8DX/VICrhcAAAAAAgBSA30CywaPAAcADwBPALICAgArtA4LABIEK7AGL7QKCwASBCsBsBAvsADWtAgVABIEK7AIELEMASu0BBUAEgQrsREBK7EMCBESswYCCg4kFzkAsQ4KERKwADkwMRMQISATECEgEwYzMjc0IyJSAT0BOwH+xP7DqAGWkwGUlgUGAYn+d/53AYm4tLwAAAAAAgBSAG8D1wP4AAYADQAANzUtATUBFQM1LQE1ARVSASf+2QHrUQEm/toB62/n2+Hm/o2o/pLn2+Hm/o2oAAAAAAQAUv/XBXMGjwADAAcAEgAVAJUAsgAAACuwEDOyBQIAK7ABM7ESABAgwC+wDjO0EwsAEgQrsAwyshMSCiuzQBMKCSsBsBYvsATWsAAytAcVABIEK7AHELERASuwFDK0EBUAEgQrsAsyshARCiuzQBAOCSuyERAKK7NAEQgJK7EXASuxEQcRErMDAQoTJBc5sBARsAI5ALETEhESsAk5sAURsQQVOTkwMRcBMwEDETMRATUTIREzFSMVIzUnMxFSA7zT/ELPwwG8/gFzLy/DxcUpBrj5SAMzA4X8e/1ajgJq/cvDjY3DAeMAAAAAAwBS/9cFiQaPAAMABwAfAJ0AsggAACuwBDO0HQsAEgQrsgECACuwBTO0GgsIAQ0rtBoLABIEK7QSEwgBDSu0EgsAEgQrAbAgL7AA1rQDFQASBCuwAxCxCQErtB0VABIEK7AdELEOASu0FxUAEgQrsB4ysg4XCiuzQA4SCSuxIQErsQMAERKwBDmwCRGwBzmxDh0RErILBRk5OTmwFxGwBjkAsRMSERKxAwA5OTAxExEzEQMBMwEhETQ7ATI9ATQjITUhMh0BFCsBIh0BIRVSxbcDvdP8QQIR25EXF/7DAT3b25EXAYMDCgOF/Hv8zQa4+UgBZNcVXhfA117XFaPBAAQAUv/XBlIGjwAcACAAKwAuANUAsh0AACuwKTOyEQIAK7AeM7QQCwASBCuxKx0QIMAvsCcztCwLABIEK7AlMrIsKwors0AsIwkrtAEAHRENK7AuM7QBCwASBCu0CQgdEQ0rtAkLABIEKwGwLy+wBNawDDK0GhUAEgQrsBQysgQaCiuzQAQICSuxABAyMrAaELEqASuwLTK0KRUAEgQrsCQysikqCiuzQCknCSuyKikKK7NAKiEJK7EwASuxGgQRErEXIDk5sCoRsh4jLDk5ObApErAfOQCxLCsRErAiObEJCBESsBc5MDETNSEyPQE0JyE1ITI9ATQjITUhMhcVFAcWHQEUIwMBMwElNQEhETMVIxUjNSczEVIBbBcX/pQBcRIX/pQBbNsBHR3cgwO90/xBAZwBAgF3MTHFzc0DCsEWjhAEwxReF8DXXkotLUeO1/zNBrj5SI2IAnD9y8ONjcMB4wAAAgAAAAAECAaPAAsADwBxALILAAArsQgD6bINAgArsQwD6bQHAgsNDSuxBwPpsgIHCiuzQAIECSsBsBAvsADWsQgM6bAIELEDASuwDDKxBQzpsA4ysgUDCiuzQAUJCSuxEQErsQgAERKxAgs5OQCxCAsRErAAObECBxESsAE5MDE1ETchESERIREhESEBESERzQEaASP+FQLp/LsBJAEjxwIxzQEK/df+ef7hBXEBHv7iAAAAAwCPAAAFjwieAAkADwATAFcAsgAAACuwBTOyAgIAK7EOA+m0CAoAAg0rsQgD6QGwFC+wANaxCQzpsAoysAkQsQYBK7ALMrEFDOmxFQErsQYJERKzAwIQEiQXOQCxDgoRErEEATk5MDEzEQEhAREhESEZASERJyMHEzUFFY8BmgHMAZr+4f0+AsL22/FEAj0E/AGa/mb7BAIA/gADHwFm8vIDN+L24QAAAwCaAAAFmgiaAAkADwATAFcAsgAAACuwBTOyAgIAK7EOA+m0CAoAAg0rsQgD6QGwFC+wANaxCQzpsAoysAkQsQYBK7ALMrEFDOmxFQErsQYJERKzAwIQEiQXOQCxDgoRErEEATk5MDEzEQEhAREhESEZASERJyMHEzUlFZoBmgHMAZr+4f0+AsL22/FsAesE/AGa/mb7BAIA/gADHwFm8vICe8/LzQAAAwCUAAAFlAjBAAkADwAWAFcAsgAAACuwBTOyAgIAK7EOA+m0CAoAAg0rsQgD6QGwFy+wANaxCQzpsAoysAkQsQYBK7ALMrEFDOmxGAErsQYJERKzAwIQEyQXOQCxDgoRErEEATk5MDEzEQEhAREhESEZASERJyMHGwEzEyMnB5QBmgHMAZr+4f0+AsL22/GAwqi/zUhHBPwBmv5m+wQCAP4AAx8BZvLyArYBhv56kJAAAAAAAwCkAAAFpAinAAkAJwAtATkAsgAAACuwBTOyAgIAK7EsA+m0CCgAAg0rsQgD6bAdL7EeJzMztBULABIEK7AUMrAVELAOINYRsQ8YMzO0JAsAEgQrsCMyAbAuL7AA1rEJDOmwKDKwCRCxBgErsCkysQUM6bEvASuwNhq68BHCBAAVKwqwIy6wFC6wIxCxDxj5sBQQsR4Y+brvCMJKABUrC7APELMQDxQTK7MSDxQTK7MTDxQTK7AjELMfIx4TK7MhIx4TK7MiIx4TK7IQDxQgiiCKIwYOERI5sBI5sBM5siIjHhESObAhObAfOQC1EiEQEx8iLi4uLi4uAUAKEiEPEBMUHh8iIy4uLi4uLi4uLi6wQBoBsQkAERKwCjmwBhG3AwIOERgdICckFzmwBRKwGTkAsSwoERKxBAE5ObEVHRESsgoZIDk5OTAxMxEBIQERIREhEQM3PgEzMhYXIx4BMzI2NxcHDgEjIiYnMy4BIyIGBwMhEScjB6QBmgHMAZr+4f0+TFYpSiUvbC8CKVYpGTsng1YpSiQxay8CKVgnGTsnNwLC9tvxBPwBmv5m+wQCAP4ACBpUHRYYEQoaJC+JVB0WGRAKGyUv+44BZvLyAAAEAKQAAAWkCI8ACQAPABMAFwB3ALIAAAArsAUzsgICACuxDgPptAgKAAINK7EIA+mwEC+wFDOxEQPpsBUyAbAYL7AA1rEJDOmwCjKwCRCxEAErsRMM6bATELEUASuxFwzpsBcQsQYBK7ALMrEFDOmxGQErsRMQERKxDgI5ObEXFBESsQ0DOTkAMDEzEQEhAREhESEZASERJyMHExEhETMRIRGkAZoBzAGa/uH9PgLC9tvxEAEfZgEfBPwBmv5m+wQCAP4AAx8BZvLyAuwBHv7iAR7+4gAAAAAEAKQAAAWkCLwACQAPABcAHwCkALIAAAArsAUzsgICACuxDgPptAgKAAINK7EIA+mwFi+0GgsACwQrsB4vtBILAAsEKwGwIC+wANaxCQzpsAoysAkQsRABK7QYFQANBCuwGBCxHAErtBQVAA0EK7AUELEGASuwCzKxBQzpsSEBK7EQCRESsAI5sBgRsA45sBwSsBY5sBQRsA05sAYSsAM5ALEOChESsQQBOTmxHhoRErEUEDk5MDEzEQEhAREhESEZASERJyMHEzQXMhUUIyI3FDMyNTQjIqQBmgHMAZr+4f0+AsL22/Gdw8XFw5IxNzcxBPwBmv5m+wQCAP4AAx8BZvLyA3XDAcLFxTczNQAAAAIAUv/XB3MGjwAPABIAVwCyDAAAK7AAM7EJC+myAQIAK7EEC+m0DhAMAQ0rsAUzsQ4G6bAHMgGwEy+wDNawETKxCRXpsAQysgkMCiuzQAkLCSuxAgYyMrEUASsAsQQQERKwEjkwMRcBIRUhESERIREhFSERIQkBIRFSA9UDTP3pAhf96QIX/PP+c/6gAd0BECkGuPX9rv71/pD2Amb9mgNxAagAAgBS/lIE0QaPAAsAGQB7ALIMAAArtBkLAAsEK7ILAAArsQgD6bICAgArsQUD6bASL7QTCwALBCsBsBovsADWsQcM6bAHELEWASu0DxUAEgQrshYPCiuzQBYSCSuwDDKxGwErsQcAERKwCzmwFhGyAgUIOTk5ALEZExESsA85sQUIERKxAAE5OTAxExEBIREhBxEXIREhFzMyFRQnIzUzMjU0KwFSASUDWv03l48C0fyg2Y/Hy4uLJyeLASEETAEi/uKU/NGP/uEpw8MBpB4fAAIAZgAABKEIngALAA8AUQCyAAAAK7EJA+myAQIAK7EEA+m0CAUAAQ0rsQgD6QGwEC+wANaxCQzpsAQysgkACiuzQAkLCSuwAjKzQAkHCSuxEQErsQkAERKxDA05OQAwMTMRIREhESERIREhEQE1BRVmBDv85ALA/UADHPzFAj0Gj/7i/mb+3/5p/uEHvOL24QAAAAACAFQAAASPCJoACwAPAEcAsgAAACuxCQPpsgECACuxBAPptAgFAAENK7EIA+kBsBAvsADWsQkM6bAEMrIJAAors0AJCwkrsAIys0AJBwkrsREBKwAwMTMRIREhESERIREhEQE1JRVUBDv85ALA/UADHPzuAesGj/7i/mb+3/5p/uEHAM/LzQAAAgBUAAAEjwiYAAsAEgBPALIAAAArsQkD6bIBAgArsQQD6bQIBQABDSuxCAPpAbATL7AA1rEJDOmwBDKyCQAKK7NACQsJK7ACMrNACQcJK7EUASuxCQARErAMOQAwMTMRIREhESERIREhEQETMxMjJwdUBDv85ALA/UADHPzPwqi/zUhHBo/+4v5m/t/+af7hBxIBhv56kJAAAAAAAwBWAAAEkQgUAAsADwATAGkAsgAAACuxCQPpsgECACuxBAPptAgFAAENK7EIA+mwDC+wEDOxDQPpsBEyAbAUL7AA1rEJDOmwBDKyCQAKK7NACQsJK7ACMrNACQcJK7MMCQAIK7EPDOmwCRCxEAErsRMM6bEVASsAMDEzESERIREhESERIREBESERMxEhEVYEO/zkAsD9QAMc/JIBH2YBHwaP/uL+Zv7f/mn+4Qb2AR7+4gEe/uIAAAL/sAAAAiMIngALAA8AQgCyAAAAK7EBA+mwCTKyBQIAK7EEA+mwBzIBsBAvsADWsAQysQsN6bAGMrELDemxEQErsQsAERKzAggMDiQXOQAwMSMRMxEjESERIxEzEQE1BRVQqqoCc6qq/Z4CPQEfBFIBHv7i+67+4Qe84vbhAAAAAv/dAAACUAiaAAsADwBCALIAAAArsQED6bAJMrIFAgArsQQD6bAHMgGwEC+wANawBDKxCw3psAYysQsN6bERASuxCwARErMCCAwOJBc5ADAxIxEzESMRIREjETMRATUlFSOqqgJzqqr9xwHrAR8EUgEe/uL7rv7hBwDPy80AAAAC/9sAAAJOCJgACwASAEIAsgAAACuxAQPpsAkysgUCACuxBAPpsAcyAbATL7AA1rAEMrELDemwBjKxCw3psRQBK7ELABESswIIDA8kFzkAMDEjETMRIxEhESMRMxEBEzMTIycHJaqqAnOqqv2owqi/zUhHAR8EUgEe/uL7rv7hBxIBhv56kJAAA/99AAACIQgUAAMADwATAGoAsgQAACuxBQPpsA0ysgkCACuxCAPpsAsysAAvsBAzsQED6bARMgGwFC+wBNawCDKxDw3psAoysAAg1hGxAwzpsA8QsBMg1hGxEAzpsBAvsRMM6bEVASuxAwQRErAGObEPEBESsAw5ADAxAxEhEQMRMxEjESERIxEzEQERIRGDAR/9qqoCc6qq/vABHwb2AR7+4vkKAR8EUgEe/uL7rv7hBvYBHv7iAAIAKwAABekGjwAJABMAfwCyCAAAK7EKCumyAwIAK7EPCOm0AQAIAw0rsBIzsQEL6bAQMgGwFC+wCNawAjKxCgzpsA8ysgoICiuzQAoSCSuyCAoKK7NACAAJK7AKELEMASuxBgzpsRUBK7EGDBESsQQHOTkAsQoIERKwBjmwABGwDDmxDwERErEFDTk5MDETNSERIQERASERASE3ESchETMVIysBCAOQASb+3vxsASkB44KE/h+HhwLN9gLM/tf7wf7ZAs3+bIMDJ4P+XfYAAAACAI8AAAUeCGoACQAnATUAsgAAACuwBjOyAQIAK7AEM7AdL7EeJzMztBULABIEK7AUMrAVELAOINYRsQ8YMzO0JAsAEgQrsCMyAbAoL7AA1rEJDOmwCRCxAwErsQYQ6bEpASuwNhq68BHCBAAVKwqwIy6wFC6wIxCxDxj5sBQQsR4Y+brvCMJKABUrC7APELMQDxQTK7MSDxQTK7MTDxQTK7AjELMfIx4TK7MhIx4TK7MiIx4TK7IQDxQgiiCKIwYOERI5sBI5sBM5siIjHhESObAhObAfOQC1EiEQEx8iLi4uLi4uAUAKEiEPEBMUHh8iIy4uLi4uLi4uLi6wQBoBsQkAERKxAgo5ObADEbUOERUdICckFzmwBhKyBxgZOTk5ALEBABESsQMIOTmxJB0RErAgObAVEbEKGTk5sA4SsBE5MDEzESEBESERIQERAzc+ATMyFhcjHgEzMjY3FwcOASMiJiczLgEjIgYHjwEfAmABEP7+/ZJkVilKJS9sLwIpVikZOyeDVilKJDFrLwIpWCcZOycGj/uWBGr5cQRk+5wH3VQdFhgRChokL4lUHRYZEAobJS8AAAMAUgAABTIIngAHAA8AEwBaALIHAAArsQkG6bICAgArsQ4G6QGwFC+wANaxCAzpsAgQsQsBK7EFDOmxFQErsQgAERKxAgc5ObALEbMDBhARJBc5sAUSsRITOTkAsQ4JERKzAQQFACQXOTAxExEBIQERASERFyE3ESchBxM1BRVSAR8CogEf/uH9Xo8BfZaW/oaSZgI9AR8EUgEe/uL7rv7hAZiOlANYj48CxuL24QAAAwBSAAAFMgiaAAcADwATAFIAsgcAACuxCQbpsgICACuxDgbpAbAUL7AA1rEIDOmwCBCxCwErsQUM6bEVASuxCAARErECBzk5sAsRswMGEBIkFzkAsQ4JERKzAQQFACQXOTAxExEBIQERASERFyE3ESchBxM1JRVSAR8CogEf/uH9Xo8BfZaW/oaSjwHrAR8EUgEe/uL7rv7hAZiOlANYj48CCs/LzQAAAwBSAAAFMgiYAAcADwAWAFIAsgcAACuxCQbpsgICACuxDgbpAbAXL7AA1rEIDOmwCBCxCwErsQUM6bEYASuxCAARErECBzk5sAsRswMGEBMkFzkAsQ4JERKzAQQFACQXOTAxExEBIQERASERFyE3ESchBxsBMxMjJwdSAR8CogEf/uH9Xo8BfZaW/oaSccKov81IRwEfBFIBHv7i+67+4QGYjpQDWI+PAhwBhv56kJAAAAAAAwBSAAAFMghqAAcAJQAtATIAsgcAACuxJwbpsgICACuxLAbpsBsvsRwlMzO0EwsAEgQrsBIysBMQsAwg1hGxDRYzM7QiCwASBCuwITIBsC4vsADWsSYM6bAmELEpASuxBQzpsS8BK7A2GrrwEcIEABUrCrAhLrASLrAhELENGPmwEhCxHBj5uu8IwkoAFSsLsA0Qsw4NEhMrsxANEhMrsxENEhMrsCEQsx0hHBMrsx8hHBMrsyAhHBMrsg4NEiCKIIojBg4REjmwEDmwETmyICEcERI5sB85sB05ALUQHw4RHSAuLi4uLi4BQAoQHw0OERIcHSAhLi4uLi4uLi4uLrBAGgGxJgARErICBwg5OTmwKRG3AwYMDxMbHiUkFzmwBRKxFhc5OQCxLCcRErMBBAUAJBc5sRMbERKyCBceOTk5MDETEQEhAREBIQM3PgEzMhYXIx4BMzI2NxcHDgEjIiYnMy4BIyIGBwMXITcRJyEHUgEfAqIBH/7h/V4pVilKJS9sLwIpVikZOyeDVilKJDFrLwIpWCcZOydajwF9lpb+hpIBHwRSAR7+4vuu/uEH3VQdFhgRChokL4lUHRYZEAobJS/6RI6UA1iPjwAAAAAEAFIAAAUyCD0ABwAPABMAFwCFALIHAAArsQkG6bICAgArsQ4G6bAQL7AUM7ERA+mwFTIBsBgvsADWsQgM6bAIELEQASuxEwzpsBMQsQsBK7EFDOmzFwULCCuxFAzpsBQvsRcM6bEZASuxEAgRErEHAjk5sBMRsQkOOTmxFxQRErMGAwoNJBc5ALEOCRESswEEBQAkFzkwMRMRASEBEQEhERchNxEnIQcTESERMxEhEVIBHwKiAR/+4f1ejwF9lpb+hpIzAR9mAR8BHwRSAR7+4vuu/uEBmI6UA1iPjwIpAR7+4gEe/uIAAQAnANkDxQTBAAsAABM3CQEXCQEHCQEnASeaATUBO4v+swFWmv7L/sSLAUwEUmj+nAFrd/6D/ntnAWH+l3cBfQAAAAADAI8AAAX+BnkABwALAA8AYgCyBwAAK7EMCumwCi+xAgrpAbAQL7AA1rEIE+mwCBCxDgErsQUT6bERASuxCAARErECBzk5sA4RsQkMOTmwBRKxAwY5OQCxDAcRErEFADk5sAoRsQgPOTmwAhKxAQQ5OTAxExEBIQERASETASEHEyE3EY8BNAMIATP+z/zxCwJY/h52qAHfeQEvBBcBM/7N++n+0QHdA2J2/HB3AuwAAAIAUgAABR8IngALAA8ARgCyCwAAK7EEA+myAQIAK7AHMwGwEC+wANaxAwzpsAMQsQYBK7EJDOmxEQErsQYDERKzCgsMDiQXOQCxAQQRErEACTk5MDETESERFyE3ESERASETNQUVUgEfhwF/iQEf/tH9jxsCPQEtBWT7GYuLBOf6nP7TB7zi9uEAAAAAAgBmAAAFMwiaAAsADwBGALILAAArsQQD6bIBAgArsAczAbAQL7AA1rEDDOmwAxCxBgErsQkM6bERASuxBgMRErMKCwwOJBc5ALEBBBESsQAJOTkwMRMRIREXITcRIREBIRM1JRVmAR+HAX+JAR/+0f2PRAHrAS0FZPsZi4sE5/qc/tMHAM/LzQAAAAACAGYAAAUzCJgACwASAEYAsgsAACuxBAPpsgECACuwBzMBsBMvsADWsQMM6bADELEGASuxCQzpsRQBK7EGAxESswoLDA8kFzkAsQEEERKxAAk5OTAxExEhERchNxEhEQEhGwEzEyMnB2YBH4cBf4kBH/7R/Y8mwqi/zUhHAS0FZPsZi4sE5/qc/tMHEgGG/nqQkAAAAwBmAAAFMwgUAAsADwATAHUAsgsAACuxBAPpsgECACuwBzOwDC+wEDOxDQPpsBEyAbAUL7AA1rEDDOmzDAMACCuxDwzpsAMQsQYBK7EJDOmzEwkGCCuxEAzpsBAvsRMM6bEVASuxDwwRErEECzk5sRMQERKxBQo5OQCxAQQRErEACTk5MDETESERFyE3ESERASEDESERMxEhEWYBH4cBf4kBH/7R/Y8YAR9mAR8BLQVk+xmLiwTn+pz+0wb2AR7+4gEe/uIAAAACAD4AAAUlCJoACAAMADQAsgcAACuyAAIAK7ADMwGwDS+wB9axBhTpsQ4BK7EGBxESsgIJCjk5OQCxAAcRErACOTAxEyEJASEBESEREzUlFT4BXAEXARgBXP4v/rlsAesGkf3oAhj8pPzLAzUDy8/LzQAAAAIAZv/XA+wGjwALABMATQCyAAAAK7IBAgArshMBACu0AwsACwQrtAoMAAMNK7QKCwALBCsBsBQvsADWtAsVABIEK7ECDDIysAsQsQ8BK7QHFQASBCuxFQErADAxFxEzESEgExEQKQEVESEyNRE0IyFmuQFwAVwB/qP+kAFwpKT+kCkGuP7N/qT+AP6kzQGFpAIApAABAFL/4wUEBpEAMAB5ALIAAAArshUAACuxHAfpsgUCACuxLAPpAbAxL7AA1rEwDOmwMBCxKQErsQgT6bAmINYRsQsT6bMfCCkIK7ESD+mxMgErsSYwERKxBRk5ObALEbMaHCIsJBc5sQgpERKxDhU5OQCxHAARErAZObAsEbIIEho5OTkwMTMRNDYkMyAWFRQCFRQWFxYXFhUUBiMiJyYnNxYzMjY1NCYnJicmNTQSNTQmIyIGFRFSdQEOZAEQ9IUdM5FAK3m6i2VMSaApJI80PqxYIheFRTi8VAR7kfyJxI5c/vgnHzcth4Fab6bXLyVWnDEzJyFcplZDKzZEAQVCM0Rphft9AAADAHsAAAS4BssABQAJAA8AVACyBQAAK7ELBumyAgEAK7EOBukBsBAvsADWsQoR6bAKELEMASuxBBDpsREBK7EKABESsgUGBzk5ObAMEbACObAEErEICTk5ALEOCxESsQABOTkwMRMRASERIQM1BRUBFyERIQd7ARgDJfzVEgI9/dmaAXv+g5gBEAJ7ARn7XAXp4vbh/K6YApCYAAADAHsAAAS4BscABQALAA8ATACyBQAAK7EHBumyAgEAK7EKBukBsBAvsADWsQYR6bAGELEIASuxBBDpsREBK7EGABESsAU5sAgRsgIMDjk5OQCxCgcRErEAATk5MDETEQEhESETFyERIQcTNSUVewEYAyX81QSaAXv+g5gTAesBEAJ7ARn7XAGimAKQmAIrz8vNAAAAAwB7AAAEuAbaAAUACwASAFMAsgUAACuxBwbpsgIBACuxCgbpAbATL7AA1rEGEemwBhCxCAErsQQQ6bEUASuxBgARErAFObAIEbMCDA4QJBc5sAQSsA85ALEKBxESsQABOTkwMRMRASERIRMXIREhBxsBMxMjJwd7ARgDJfzVBJoBe/6DmAnCqL/NSEcBEAJ7ARn7XAGimAKQmAJSAYb+epCQAAADAHsAAAS4BpcABQAjACkBLQCyBQAAK7ElBumyCgIAK7ELFDMztCALABIEK7AfMrARINYRsBAztBkLABIEK7EaIzIysgIBACuxKAbpAbAqL7AA1rEkEemwJBCxJgErsQQQ6bErASuwNhq68BHCBAAVKwqwHy6wEC6wHxCxCxj5sBAQsRoY+brvCMJKABUrC7ALELMMCxATK7MOCxATK7MPCxATK7AfELMbHxoTK7MdHxoTK7MeHxoTK7IMCxAgiiCKIwYOERI5sA45sA85sh4fGhESObAdObAbOQC1Dh0MDxseLi4uLi4uAUAKDh0LDA8QGhseHy4uLi4uLi4uLi6wQBoBsSQAERKyBQYjOTk5sCYRtgIKDREZHCAkFzmwBBKxFBU5OQCxKCURErEAATk5sREZERKyBhUcOTk5MDETEQEhESEDNz4BMzIWFyMeATMyNjcXBw4BIyImJzMuASMiBgcTFyERIQd7ARgDJfzVoVYpSiUvbC8CKVYpGTsng1YpSiQxay8CKVgnGTsnIpoBe/6DmAEQAnsBGftcBgpUHRYYEQoaJC+JVB0WGRAKGyUv/CGYApCYAAQAewAABLgGkwAFAAsADwATAHcAsgUAACuxBwbpsg0CACuwETOxDAPpsBAysgIBACuxCgbpAbAUL7AA1rEGEemwBhCxDAErsQ8M6bAPELEIASuxBBDpsAQQsBMg1hGxEAzpsBAvsRMM6bEVASuxDAYRErACObAPEbEKBzk5ALEKBxESsQABOTkwMRMRASERIRMXIREhBxMRIREzESERewEYAyX81QSaAXv+g5gyAR9mAR8BEAJ7ARn7XAGimAKQmAJzAR7+4gEe/uIAAAQAewAABLgGwAAFAAsAEwAbAIoAsgUAACuxBwbpsgIBACuxCgbpsBIvtBYLAAsEK7AaL7QOCwALBCsBsBwvsADWsQYR6bAGELEMASu0FBUADQQrsBQQsRgBK7QQFQANBCuwEBCxCAErsQQQ6bEdASuxDAYRErACObAUEbEHCjk5sBgSsBI5ALEKBxESsQABOTmxGhYRErEQDDk5MDETEQEhESETFyERIQcTNBcyFRQjIjcUMzI1NCMiewEYAyX81QSaAXv+g5hMw8XFw5IxNzcxARACewEZ+1wBopgCkJgC/MMBwsXFNzM1AAAAAQBk/9cGtgSPADgAqgCyNwAAK7AxM7QLCwALBCuwLzKwBi+wHzO0AwsACwQrsCEysBMvsCcztBQLAAsEK7AZMgGwOS+wANa0CRUAEgQrsgkACiuzQAkFCSuwCRCxDgErtCwVABIEK7IsDgors0AsMAkrsg4sCiuzQA4TCSuwLBCxJAErtB0VABIEK7IkHQors0AkIQkrsToBK7EsDhESsRc0OTkAsQs3ERKwNDmxFBMRErAXOTAxEzUQITMVIyIdARQ7ATI1ETQmIyE1ITIXNjsBIBEVECEjNTMyPQE0KwEiBhURFBYzIRUhIicGKwEgZAFd9fWkpMykVk7+PgHCplpYqM0BXP6k9vakpM1MWFZOAcP+PaZaWqbM/qQBMwQBWLigBKSkAghOTrhiYv6kBP6ouKAEpFJU/gJUULhgYAACAI/+UgQKBKIACwAZAIoAsgwAACu0GQsACwQrsgsAACuxCAPpsgIBACuxBQPpsBIvtBMLAAsEKwGwGi+wANaxBwzpsgcACiuzQAcJCSuzQAcECSuwBxCxFgErtA8VABIEK7IWDwors0AWEgkrsAwysRsBK7EHABESsQILOTmwFhGxBQg5OQCxGRMRErAPObEICxESsAA5MDE3ETchESEHERchESEXMzIVFCcjNTMyNTQrAY/jAm/+K15eAf79arGPx8uLiycni+UC2eT+4Vr+VF7+4SnDwwGkHh8AAwCPAAAEagbLAAsADwAVAHMAsgsAACuxCAbpsgIBACuxFAvptAYQCwINK7EGBukBsBYvsADWsQcM6bAQMrAHELERASuxBBXpsRcBK7EHABESswILDA0kFzmwERGwCDmwBBK0AwkKDg8kFzkAsQYIERKwADmxFBARErABObACEbAEOTAxExEBIRcRIRUXIREhAzUFFQEhNScjB48BHwHV5/1ERQH+/b1QAj3+EwHGcuRwAR8CaAEf6P4Hc0j+9gXp4vbh/dtwdXUAAAAAAwCPAAAEagbHAAsADwAVAHUAsgsAACuxCAbpsgIBACuxFAvptAYQCwINK7EGBukBsBYvsADWsQcM6bAQMrAHELERASuxBBXpsRcBK7EHABESswILDA0kFzmwERGyCA4POTk5sAQSsgMJCjk5OQCxBggRErAAObEUEBESsAE5sAIRsAQ5MDETEQEhFxEhFRchESEDNSUVASE1JyMHjwEfAdXn/URFAf79vScB6/48AcZy5HABHwJoAR/o/gdzSP72BS3Py8381XB1dQAAAwCPAAAEagbaAAsAEgAYAHcAsgsAACuxCAbpsgIBACuxFwvptAYTCwINK7EGBukBsBkvsADWsQcM6bATMrAHELEUASuxBBXpsRoBK7EHABESsgILDDk5ObAUEbQIDQ4QEiQXObAEErMDCQoPJBc5ALEGCBESsAA5sRcTERKwATmwAhGwBDkwMRMRASEXESEVFyERIQMTMxMjJwcDITUnIwePAR8B1ef9REUB/v29McKov81IR5wBxnLkcAEfAmgBH+j+B3NI/vYFVAGG/nqQkP17cHV1AAAABACkAAAEfwaTAAsADwAVABkAlQCyCwAAK7EIBumyDQIAK7AXM7EMA+mwFjKyAgEAK7EUC+m0BhALAg0rsQYG6QGwGi+wDNaxDwzpswcPDAgrsQAM6bAAL7EHDOmwEDKwDxCxFgErsRkM6bMRGRYIK7EEFemxGwErsQ8MERKzAggLFCQXObEZFhESsQMTOTkAsQYIERKwADmxFBARErABObACEbAEOTAxExEBIRcRIRUXIREhAxEhEQMhNScjBwERIRGkAR8B1ef9REUB/v29bQEfsgHGcuRwARgBHwEfAmgBH+j+B3NI/vYFdQEe/uL9WnB1dQI2AR7+4gAAAv+w/9cB7QaiAAMABwAYALIEAAArAbAIL7AE1rEHDOmxCQErADAxAzUFFQERIRFQAj3+ZwEfBcDi9uH7DAS4+0gAAAAC/9f/1wHCBp4AAwAHABgAsgQAACsBsAgvsATWsQcM6bEJASsAMDEDNSUVAREhESkB6/6QAR8FBM/LzfoGBLj7SAAAAAL/tP/XAd0GnAAGAAoAJQCyBwAAKwGwCy+wB9axCgzpsQwBK7EKBxESswECBAYkFzkAMDEDEzMTIycHAxEhEUzCqL/NSEczAR8FFgGG/nqQkPrBBLj7SAAD/3n/1wIdBlYAAwAHAAsASACyBAAAK7AAL7AIM7EBA+mwCTIBsAwvsATWsQcM6bMDBwQIK7EADOmwAC+xAwzpswgHBAgrsQsM6bENASsAsQAEERKwBTkwMQMRIREDESERAxEhEYcBH0gBH3EBHwU4AR7+4vqfBLj7SAVhAR7+4gAAAAACAFL/9gR3BZ4AHgAqAGMAshwAACu0IgsAEgQrsCgvsQQL6QGwKy+wANaxHwzpsB8QsSUBK7EZDumxLAErsR8AERKyDA0QOTk5sCURtgsIERMWHA4kFzmwGRKxFBU5OQCxKCIRErEZADk5sAQRsAg5MDETNDc2FzIXFhcuAScHJzcmJyEWFzcXBxYSFRQAIyIAJRQWMzI2NTQmIyIGUp6DpDU1J0YlMzbzKdNgcwEcNzSuLYu6ov7V7uP+1wElkWtqlppoaJICFOyYfQEODCdES0R1XmVYUisrVmE/vP6HqPz+0QEt1Z6oqJSWq6EAAAACAI8AAARyBm4ACwApATcAsgAAACuwBTOyAgEAK7EJA+mwHy+xICkzM7QXCwASBCuwFjKwFxCwECDWEbERGjMztCYLABIEK7AlMgGwKi+wANaxCwzpsAsQsQYBK7EFDOmxKwErsDYauvARwgQAFSsKsCUusBYusCUQsREY+bAWELEgGPm67wjCSgAVKwuwERCzEhEWEyuzFBEWEyuzFREWEyuwJRCzISUgEyuzIyUgEyuzJCUgEyuyEhEWIIogiiMGDhESObAUObAVObIkJSAREjmwIzmwITkAtRQjEhUhJC4uLi4uLgFAChQjERIVFiAhJCUuLi4uLi4uLi4usEAaAbELABESsgIMKTk5ObAGEbMQEyImJBc5sAUSswMXGx8kFzkAsQIJERKxAQQ5ObEmABESsCI5sBcRsQwbOTmwEBKwEzkwMTMRNyEXESERJyMHEQM3PgEzMhYXIx4BMzI2NxcHDgEjIiYnMy4BIyIGB4/PAkXP/uJp12aoVilKJS9sLwIpVikZOyeDVilKJDFrLwIpWCcZOycD18/P/CkDIWZm/N8F4VQdFhgRChokL4lUHRYZEAobJS8AAAADAGYAAATMBssABwALABMAXgCyBwAAK7ENA+myAgEAK7ESA+kBsBQvsADWsQwM6bAMELEPASuxBQzpsRUBK7EMABESswIHCAkkFzmxBQ8RErMDBgoLJBc5ALENBxESsQAFOTmxAhIRErEBBDk5MDE3ETchFxEHIRM1BRUBFyE3ESchB2bVArzV1f1IPAI9/c1uAUhzcf64cNsC9NfX/QjXBeni9uH8m3ByAYhucwAAAAMAZgAABMwGxwAHAA8AEwBeALIHAAArsQkD6bICAQArsQ4D6QGwFC+wANaxCAzpsAgQsQsBK7EFDOmxFQErsQgAERKxAgc5ObALEbEQEjk5sAUSsQMGOTkAsQkHERKxAAU5ObECDhESsQEEOTkwMTcRNyEXEQchExchNxEnIQcTNSUVZtUCvNXV/UhGbgFIc3H+uHAfAevbAvTX1/0I1wGPcHIBiG5zAhnPy80AAAAAAwBmAAAEzAbaAAcADwAWAF4AsgcAACuxCQPpsgIBACuxDgPpAbAXL7AA1rEIDOmwCBCxCwErsQUM6bEYASuxCAARErICBxA5OTmwCxGwEzmwBRKxAwY5OQCxCQcRErEABTk5sQIOERKxAQQ5OTAxNxE3IRcRByETFyE3ESchBxETMxMjJwdm1QK81dX9SEZuAUhzcf64cMKov81IR9sC9NfX/QjXAY9wcgGIbnMCQAGG/nqQkAAAAAMAZgAABMwGlwAHACUALQEwALIHAAArsScD6bIMAgArsQ0WMzO0IgsAEgQrsCEysBMg1hGwEjO0GwsAEgQrsRwlMjKyAgEAK7EsA+kBsC4vsADWsSYM6bAmELEpASuxBQzpsS8BK7A2GrrwEcIEABUrCrAhLrASLrAhELENGPmwEhCxHBj5uu8IwkoAFSsLsA0Qsw4NEhMrsxANEhMrsxENEhMrsCEQsx0hHBMrsx8hHBMrsyAhHBMrsg4NEiCKIIojBg4REjmwEDmwETmyICEcERI5sB85sB05ALUQHw4RHSAuLi4uLi4BQAoQHw0OERIcHSAhLi4uLi4uLi4uLrBAGgGxJgARErMCBwglJBc5sCkRtQwPExseIiQXObAFErMDBhYXJBc5ALECLBESsQEEOTmxExsRErIIFx45OTkwMTcRNyEXEQchAzc+ATMyFhcjHgEzMjY3FwcOASMiJiczLgEjIgYHExchNxEnIQdm1QK81dX9SFNWKUolL2wvAilWKRk7J4NWKUokMWsvAilYJxk7JxZuAUhzcf64cNsC9NfX/QjXBgpUHRYYEQoaJC+JVB0WGRAKGyUv/A5wcgGIbnMABABmAAAEzAZ+AAcACwATABcAgACyBwAAK7ENA+myAgEAK7ESA+mwCC+wFDOxCQPpsBUyAbAYL7AA1rEMDOmzCAwACCuxCwzpsAwQsQ8BK7EFDOmzFwUPCCuxFAzpsBQvsRcM6bEZASuxCwgRErENEjk5sRcUERKxDhE5OQCxDQcRErEABTk5sQISERKxAQQ5OTAxNxE3IRcRByETESERAxchNxEnIQcBESERZtUCvNXV/UgJAR/ibgFIc3H+uHABSAEf2wL019f9CNcFYAEe/uL8L3ByAYhucwJMAR7+4gADAD4AZwL2BEAAAwAHAAsALgCwBC+xBQTpsAAvsQEL6bAIL7EJBOkBsAwvsATWsAgysQcT6bAKMrENASsAMDETNSEVAREhEQERIRE+Arj+BgE9/sMBPQHX9vb+kAFD/r0ClQFE/rwAAAMAUgAABLgEpgAHAAsAEQBkALIHAAArsQ0D6bICAQArsQoD6QGwEi+wANaxCAzpsAgQsQ8BK7EFDOmxEwErsQgAERKxAgc5ObAPEbEJDDk5sAUSsQMGOTkAsQ0HERKxAAU5ObAKEbEIETk5sAISsQEEOTkwMTcRNyEXEQchEwEhBxMXITcRJ1LVArzV1f1IRgGs/sRwZggBSHML2wL019f9CNcBngHpc/4TCHIBiAoAAgBSAAAEIQbgAAsADwBRALILAAArsQQD6bIBAQArsAczAbAQL7AA1rEDDOmwAxCxBgErsQkM6bERASuxAwARErILDA05OTmxCQYRErIKDg85OTkAsQQLERKxAAk5OTAxNxEhERczNxEhEQchAzUFFVIBH3C1bAEf+P4hLwI9+AOu/OtybgMZ/FL4Bf7i9uEAAgBmAAAENQbHAAsADwBRALILAAArsQQD6bIBAQArsAczAbAQL7AA1rEDDOmwAxCxBgErsQkM6bERASuxAwARErILDA05OTmxCQYRErIKDg85OTkAsQQLERKxAAk5OTAxNxEhERczNxEhEQchAzUlFWYBH3C1bAEf+P4hBgHr+AOu/OtybgMZ/FL4BS3Py80AAgBmAAAENQbaAAsAEgBWALILAAArsQQD6bIBAQArsAczAbATL7AA1rEDDOmwAxCxBgErsQkM6bEUASuxAwARErELDDk5sAYRsw0OEBIkFzmwCRKxCg85OQCxBAsRErEACTk5MDE3ESERFzM3ESERByEDEzMTIycHZgEfcLVsAR/4/iEkwqi/zUhH+AOu/OtybgMZ/FL4BVQBhv56kJAAAAMAZgAABDUGfgALAA8AEwB1ALILAAArsQQD6bIBAQArsAczsAwvsBAzsQ0D6bARMgGwFC+wANaxAwzpswwDAAgrsQ8M6bADELEGASuxCQzpsxMJBggrsRAM6bAQL7ETDOmxFQErsQ8MERKxBAs5ObETEBESsQUKOTkAsQQLERKxAAk5OTAxNxEhERczNxEhEQchAxEhETMRIRFmAR9wtWwBH/j+IWIBH2YBH/gDrvzrcm4DGfxS+AVgAR7+4gEe/uIAAAACAI/9wwQ7BrMADwATAHAAsg8AACuxBAPpsgEBACuwBjOwCi+xCwPpAbAUL7AA1rEDDOmwAxCxDQErsAUysQgM6bINCAors0ANCwkrsRUBK7EDABESsg8QETk5ObANEbAMObAIErIJEhM5OTkAsQsKERKwCDmxBA8RErAAOTAxNxEhERczESERByERITc1IQM1JRWPAR9y/AEf4f4nAUFa/lQWAevjA7X893ADd/oQ4wEeWsUFGc/LzQAAAAIAj//XBBUGjwALABMATQCyAAAAK7IBAgArshMBACu0AwsACwQrtAoMAAMNK7QKCwALBCsBsBQvsADWtAsVABIEK7ECDDIysAsQsQ8BK7QHFQASBCuxFQErADAxFxEzESEgExEQKQEVESEyNRE0IyGPuQFwAVwB/qP+kAFwpKT+kCkGuP7N/qT+AP6kzQGFpAIApAADAI/9wwQ7BhgADwATABcAgQCyDwAAK7EEA+myAQEAK7AGM7AKL7ELA+mwEC+wFDOxEQPpsBUyAbAYL7AA1rEDDOmwECDWEbETDOmwAxCxDQErsAUysQgM6bINCAors0ANCwkrsxcIDQgrsRQM6bAUL7EXDOmxGQErsRMQERKwDzmwFBGwBDmwFxKxCQw5OQAwMTcRIREXMxEhEQchESE3NSEDESERMxEhEY8BH3L8AR/h/icBQVr+VHYBH2YBH+MDtfz3cAN3+hDjAR5axQT6AR7+4gEe/uIAAAAAAwA+AAAFPgh7AAkADwATAF8AsgAAACuwBTOyAgIAK7EOA+m0CAoAAg0rsQgD6bAQL7QRCwALBCsBsBQvsADWsQkM6bAKMrAJELEGASuwCzKxBQzpsRUBK7EGCRESswMCEBEkFzmwBRGxEhM5OQAwMTMRASEBESERIRkBIREnIwcTNSEVPgGaAcwBmv7h/T4Cwvbb8XICUgT8AZr+ZvsEAgD+AAMfAWby8gM+uLgAAAADAHsAAAS4BnkABQAJAA8AXgCyBQAAK7ELBumyAgEAK7EOBumwBi+0BwsACwQrAbAQL7AA1rEKEemwChCxDAErsQQQ6bERASuxCgARErIFBgc5OTmwDBGwAjmwBBKxCAk5OQCxDgsRErEAATk5MDETEQEhESEDNSEVARchESEHewEYAyX81RYCUv3ImgF7/oOYARACewEZ+1wFwbi4++GYApCYAAMAPgAABT4IoAAJAA8AGgCSALIAAAArsAUzsgICACuxDgPptAgKAAINK7EIA+mwGS+0EwsACwQrshMZCiuzQBMQCSuwFjIBsBsvsADWsQkM6bAKMrAJELEQASu0ERUAEgQrsBEQsQYBK7ALMrEFDOmzFwUGCCu0FRUAEgQrsBUvtBcVABIEK7EcASuxERARErEOAjk5sBURswMNExkkFzkAMDEzEQEhAREhESEZASERJyMHEzMUMzInNTMQISA+AZoBzAGa/uH9PgLC9tvxSLmkpAG5/qT+pAT8AZr+ZvsEAgD+AAMfAWby8gQbzaAt/nsAAAADAGYAAASjBqQABQAQABYAiwCyBQAAK7ESBumyAgEAK7EVBumwDy+0CQsACwQrsgkPCiuzQAkGCSuwDDIBsBcvsADWsRER6bMGEQAIK7QHFQASBCuwERCxEwErsQQQ6bMNBBMIK7QLFQASBCuwCy+0DRUAEgQrsRgBK7EHBhESsQUCOTmwCxGzCQ8SFSQXOQCxFRIRErEAATk5MDETEQEhESEDMxQzMic1MxAhIBMXIREhB2YBGAMl/NVPuaSkAbn+pP6kUpoBe/6DmAEQAnsBGftcBqTNoC3+e/yDmAKQmAAAAAADAD7+UgVFBpYACQAPAB4AhwCyEwAAK7QWCwALBCuyAAAAK7AFM7ICAgArsQ4D6bAdL7QaCwALBCu0CAoWAg0rsQgD6QGwHy+wANaxCQzpsAoysAkQsQYBK7ALMrEFDOmxFBsyMrAQINYRtBgVABIEK7EgASuxEAkRErIDAg05OTkAsRYaERKxEBg5ObEOChESsQQBOTkwMTMRASEBESERIRkBIREnIwcBNDY7ARUjIhUUNzMVIyI+AZoBzAGa/uH9PgLC9tvxApJYXaGLJyeLi8sE/AGa/mb7BAIA/gADHwFm8vL6j1ZtpB8fAaQAAAADAHv+UgS4BKQABQALABoAiACyDwAAK7QSCwALBCuyBQAAK7EHBumyAgEAK7EKBumwGS+0FgsACwQrAbAbL7AA1rEGEemwBhCxDAErtBQVABIEK7IUDAors0AUGAkrsBAysBQQsQgBK7EEEOmxHAErsQYAERKwBTmwDBGyAgcKOTk5ALESFhESsQwUOTmxCgcRErEAATk5MDETEQEhESETFyERIQcTNDY7ARUjIhUUNzMVIyJ7ARgDJfzVBJoBe/6DmNdYXaGLJyeLi8sBEAJ7ARn7XAGimAKQmPwSVm2kHx8BpAACAI8AAAUOCJoACwAPADcAsgsAACuxCAPpsgICACuxBQPpAbAQL7AA1rEHDOmxEQErsQcAERKwCzkAsQUIERKxAAE5OTAxExEBIREhBxEXIREhEzUlFY8BJQNa/TeXjwLR/KAtAesBIQRMASL+4pT80Y/+4QcAz8vNAAAAAgCPAAAECgaeAAsADwBTALILAAArsQgD6bICAQArsQUD6QGwEC+wANaxBwzpsgcACiuzQAcJCSuzQAcECSuxEQErsQcAERKzAgsMDSQXOQCxCAsRErAAObECBRESsAE5MDE3ETchESEHERchESEDNSUVj+MCb/4rXl4B/v1qAwHr5QLZ5P7hWv5UXv7hBQTPy80AAAIAjwAABQ4IngALABIANwCyCwAAK7EIA+myAgIAK7EFA+kBsBMvsADWsQcM6bEUASuxBwARErALOQCxBQgRErEAATk5MDETEQEhESEHERchESETMxc3MwMjjwElA1r9N5ePAtH8oDHNRUjNw6YBIQRMASL+4pT80Y/+4QiekpL+ewAAAAIAjwAABAoGogALABIAUgCyCwAAK7EIA+myAgEAK7EFA+kBsBMvsADWsQcM6bIHAAors0AHCQkrs0AHBAkrsRQBK7EHABESsgILDDk5OQCxCAsRErAAObECBRESsAE5MDE3ETchESEHERchESEDMxc3MwMjj+MCb/4rXl4B/v1qFM1FSM3DpuUC2eT+4Vr+VF7+4QaikpL+ewAAAAMAjwAABUUIngAFAAsAEgBNALIAAAArsQYK6bIBAgArsQsI6QGwEy+wANaxBgzpsAYQsQgBK7EEDOmxFAErsQgGERKzBQIMECQXOQCxBgARErAEObEBCxESsAM5MDEzESEBEQkBITcRJyETMxc3MwMjjwONASn+2/2OAfWDhf4NQM1FSM3DpgaR/tn7vf7ZATmDAyeDAziSkv57AAMAjwAABW4GmAAHAA0AFABuALIHAAArsQkD6bIPAgArsgIBACuxDAPpAbAVL7AA1rEIDOmwCBCxCgErsAMysQYM6bAGELEOASuxERXpsxMRDggrtBIVAA0EK7EWASuxERMRErAUOQCxCQcRErAAObECDBESsAE5sA8RsBI5MDE3ETchESERIRMXIREhBwE1MxUHIzeP3wG7AR79LTpuAQ3+824CyvY9jiXlAuDdAfb5aAGPcAJicwKI+dPhuwAAAAIAKwAABekGjwAJABMAfwCyCAAAK7EKCumyAwIAK7EPCOm0AQAIAw0rsBIzsQEL6bAQMgGwFC+wCNawAjKxCgzpsA8ysgoICiuzQAoSCSuyCAoKK7NACAAJK7AKELEMASuxBgzpsRUBK7EGDBESsQQHOTkAsQoIERKwBjmwABGwDDmxDwERErEFDTk5MDETNSERIQERASERASE3ESchETMVIysBCAOQASb+3vxsASkB44KE/h+HhwLN9gLM/tf7wf7ZAs3+bIMDJ4P+XfYAAAADAI8AAAROB/IABwANABEAcACyBwAAK7EJA+myAgEAK7EMA+myAgwKK7NAAgQJK7AOL7QPCwALBCsBsBIvsADWsQgM6bAIELEKASuwAzKxBgzpsBAysgoGCiuzQAoOCSuxEwErsQgAERKxAgc5OQCxCQcRErAAObECDBESsAE5MDE3ETchESERIRMXIREhBxM1IRWP3wG7AR79LTpuAQ3+825OAlLlAuDdAfb5aAGPcAJicwQsuLgAAgBSAAAEjQgAAAsADwBbALIAAAArsQkD6bIBAgArsQQD6bQIBQABDSuxCAPpsAwvtA0LAAsEKwGwEC+wANaxCQzpsAQysgkACiuzQAkLCSuwAjKzQAkHCSuxEQErsQkAERKxDA05OQAwMTMRIREhESERIREhEQE1IRVSBDv85ALA/UADHPy7AlIGj/7i/mb+3/5p/uEHSLi4AAAAAwDNAAAEqAYGAAsADwAVAH0AsgsAACuxCAbpsgIBACuxFAvptAYQCwINK7EGBumwDC+0DQsACwQrAbAWL7AA1rEHDOmwEDKwBxCxEQErsQQV6bEXASuxBwARErMCCwwNJBc5sBERsAg5sAQStAMJCg4PJBc5ALEGCBESsAA5sRQQERKwATmwAhGwBDkwMRMRASEXESEVFyERIQM1IRUBITUnIwfNAR8B1ef9REUB/v29WwJS/gkBxnLkcAEfAmgBH+j+B3NI/vYFTri4/YFwdXUAAAACAI8AAATKCJ4ACwAPAFkAsgAAACuxCQPpsgECACuxBAPptAgFAAENK7EIA+mwDC+xDQPpAbAQL7AA1rEJDOmwBDKyCQAKK7NACQsJK7ACMrNACQcJK7AJELEMASuxDwzpsREBKwAwMTMRIREhESERIREhEQERIRGPBDv85ALA/UADHP08AR8Gj/7i/mb+3/5p/uEHfwEf/uEAAAADAI8AAARqBqYACwARABUAigCyCwAAK7EIBumyAgEAK7EQC+m0BgwLAg0rsQYG6bASL7ETA+kBsBYvsADWsQcM6bAMMrAHELESASuxFQzpsBUQsQ0BK7EEFemxFwErsQcAERKxAgs5ObASEbAIObAVErEQDzk5sQQNERKyAwkKOTk5ALEGCBESsAA5sRAMERKwATmwAhGwBDkwMRMRASEXESEVFyERIREhNScjBxMRIRGPAR8B1ef9REUB/v29AcZy5HBsAR8BHwJoAR/o/gdzSP72As9wdXUCSAEf/uEAAAIAj/5SBMoGjwALABoAgwCyDwAAK7QSCwALBCuyAAAAK7EJA+myAQIAK7EEA+mwGS+0FgsACwQrtAUIEgENK7EFA+kBsBsvsADWsQkM6bAEMrIJAAors0AJCwkrsAIys0AJBwkrsAkQsQwBK7QUFQASBCuyFAwKK7NAFBgJK7AQMrEcASsAsRIWERKxDBQ5OTAxMxEhESERIREhESERBTQ2OwEVIyIVFDczFSMijwQ7/OQCwP1AAxz8/FhdoYsnJ4uLywaP/uL+Zv7f/mn+4exWbaQfHwGkAAMAj/5SBGoEpgALABEAIACwALIVAAArtBgLAAsEK7ILAAArsQgG6bICAQArsRAL6bAfL7QcCwALBCu0DAYYAg0rsQwG6QGwIS+wANaxBwzpsAwysAcQsRIBK7QaFQASBCuyGhIKK7NAGh4JK7AWMrAaELENASuxBBXpsSIBK7EHABESsQILOTmwEhGwCDmwGhKwEDmwDRGwDzmwBBKyAwkKOTk5ALEYHBESsRIaOTmxBggRErAAObEQDBESsAE5MDETEQEhFxEhFRchESERITUnIwcTNDY7ARUjIhUUNzMVIyKPAR8B1ef9REUB/v29AcZy5HBSWF2hiycni4vLAR8CaAEf6P4Hc0j+9gLPcHV1+9VWbaQfHwGkAAAAAgCPAAAEygieAAsAEgBPALIAAAArsQkD6bIBAgArsQQD6bQIBQABDSuxCAPpAbATL7AA1rEJDOmwBDKyCQAKK7NACQsJK7ACMrNACQcJK7EUASuxCQARErAMOQAwMTMRIREhESERIREhEQEzFzczAyOPBDv85ALA/UADHPy7zUVIzcOmBo/+4v5m/t/+af7hCJ6Skv57AAADAGYAAARBBqIACwASABgAdwCyCwAAK7EIBumyAgEAK7EXC+m0BhMLAg0rsQYG6QGwGS+wANaxBwzpsBMysAcQsRQBK7EEFemxGgErsQcAERKyAgsMOTk5sBQRtAgNDxESJBc5sAQSswMJChAkFzkAsQYIERKwADmxFxMRErABObACEbAEOTAxExEBIRcRIRUXIREhAzMXNzMDIwMhNScjB2YBHwHV5/1ERQH+/b1DzUVIzcOmewHGcuRwAR8CaAEf6P4Hc0j+9gaikpL+e/2ycHV1AAIAjwAABWIIoAARABwAyACyEQAAK7EIA+myAgIAK7EFA+m0DA0RAg0rsQwD6bAbL7QVCwALBCuyFRsKK7NAFRIJK7AYMgGwHS+wANaxBwzpsgcACiuzQAcECSuwBxCxEgErtBMVABIEK7ATELEKASuxDxDpsgoPCiuzQAoMCSuzGQ8KCCu0FxUAEgQrsBcvtBkVABIEK7EeASuxEgcRErECETk5sBMRsQgFOTmwFxKyCRUbOTk5sBkRsBA5ALEMCBESsQcPOTmxBQ0RErAGObACEbABOTAxExEBIREhBxEXITcRIREhEQEhEzMUMzInNTMQISCPASUDH/1wlZ8BeY7+1wI3/tn9czu5pKQBuf6k/qQBHwRSAR7+4JT8452RAQQBHf1Q/t0IoM2gLf57AAADAI/9wwRkBqYACwAWABwApgCyCwAAK7EYBemyAgEAK7EbC+mwBi+xBwPpsBUvtA8LAAsEK7IPFQors0APDAkrsBIyAbAdL7AA1rEXD+mwFxCwDSDWEbQMFQASBCuwDC+wBjO0DRUAEgQrsBcQsQkBK7AZMrEEDOmwESDWEbQTFQASBCuxHgErsQ0MERKxAgs5ObAREbQIDxUYGyQXObATErAFOQCxGAsRErAAObECGxESsAE5MDE3ETchEQchESE3NSEDMxQzMic1MxAhIBMXIREhB4/dAvj4/a4BtnX+K1S5pKQBuf6k/qR8dwE1/sVx4QLV4Pok9wEec6wGps2gLf57/Fp3AqBxAAAAAgCP/lIFYgaPABEAHwC6ALISAAArtB8LAAsEK7IRAAArsQgD6bICAgArsQUD6bAYL7QZCwALBCu0DQwfAg0rsQ0D6QGwIC+wANaxBwzpsgcACiuzQAcECSuwBxCxHAErtBUVABIEK7IcFQors0AcGAkrsBIysBUQsQoBK7EPEOmxIQErsQcAERKwETmwHBGyAgUIOTk5sBUSsQ0MOTmwChGxCRA5OQCxHxkRErAVObEIERESsAA5sAwRsQcPOTmxBQ0RErAGOTAxExEBIREhBxEXITcRIREhEQEhFzMyFRQnIzUzMjU0KwGPASUDH/1wlZ8BeY7+1wI3/tn9c8GPx8uLiycniwEfBFIBHv7glPzjnZEBBAEd/VD+3SnDwwGkHh8AAAMAj/3DBGQGWgALABEAGACCALILAAArsQ0F6bICAQArsRAL6bIWAQArsAYvsQcD6bAXLwGwGS+wANaxDA/psAwQsRIBK7EVFemzFxUSCCu0FhUADQQrsBUQsQkBK7AOMrEEDOmyCQQKK7NACQcJK7EaASuxFRIRErMNEAgYJBc5ALEQBhESsQQAOTmwAhGwATkwMTcRNyERByERITc1IRMXIREhBxM1MxUHIzeP3QL4+P2uAbZ1/ispdwE1/sVxZ/Y9jiXhAtXg+iT3AR5zrAF7dwKgcQIu+dPhuwAC/90AAAJQCHsACwAPAE0AsgAAACuxAQPpsAkysgUCACuxBAPpsAcysAwvtA0LAAsEKwGwEC+wANaxBAwyMrELDemwBjKxCw3psREBK7ELABESsgIIDjk5OQAwMSMRMxEjESERIxEzEQE1IRUjqqoCc6qq/ZMCUgEfBFIBHv7i+67+4QfDuLgAAv/F/9cCFwaBAAMABwAqALIEAAArsAAvtAELAAsEKwGwCC+wBNaxBwzpsQkBKwCxAAQRErAFOTAxAzUhFQERIRE7AlL+ZAEfBcm4uPoOBLj7SAAAAgAt/j4BgwZqAA4AEgBUALIPAAArsA0vtAoLAAsEK7AGL7QDCwALBCuwEC8BsBMvsA/WsAAysRIM6bISDwors0ASDAkrsAQysA8QtAgVABIEK7EUASsAsQYKERKxAAg5OTAxEzQ2OwEVIyIVFDczFSMiExEhES1YXaGLJyeLi8sCAR//AFZtpB8fAaQBwgZq+ZYAAAMAOf4+AY8GoAAOABIAFgBlALIPAAArsA0vtAoLAAsEK7AGL7QDCwALBCuwEy+xFAPpAbAXL7AP1rATMrESDOmwFTKwACDWEbQIFQASBCuyCAAKK7NACAwJK7AEMrEYASsAsQYKERKxAAg5ObETDxESsBA5MDETNDY7ARUjIhUUNzMVIyITESERAREhETlYXaGLJyeLi8sdAR/+4QEf/wBWbaQfHwGkAcIEi/t1BYEBH/7hAAIAWgAAAs0IngALAA8AUwCyAAAAK7EBA+mwCTKyBQIAK7EEA+mwBzKwDC+xDQPpAbAQL7AA1rAEMrELDemwBjKxCw3pswkLAAgrsQIM6bACL7AMM7EJDOmwDjKxEQErADAxMxEzESMRIREjETMRAREhEVqqqgJzqqr+LAEfAR8EUgEe/uL7rv7hB38BH/7hAAEAUv/XAXEEjwADABwAsgAAACsBsAQvsADWsQMM6bEDDOmxBQErADAxFxEhEVIBHykEuPtIAAAAAgCP/lIEJgaRAA4AHACMALIPAAArtBwLAAsEK7IAAAArsAozsgECACuwBTOwFS+0FgsACwQrAbAdL7AA1rEODOmwAjKwDhCxCwErsAQysQoM6bAGMrMSCgsIK7QZFQASBCuwGS+0EhUAEgQrshkSCiuzQBkVCSuwDzKxHgErsRkOERKwCDkAsRwWERKwEjmxAQARErEDDTk5MDEzESERAREhEQkBESERAREXMzIVFCcjNTMyNTQrAY8BHwFaAR7+cQGP/uL+pkKPx8uLiycniwaR/YoBRwEv/kj+hf6B/iEBTgFD/W8pw8MBpB4fAAAAAgCP/lIEeAacAAoAGABvALILAAArtBgLAAsEK7IAAAArsAczsgQBACuwES+0EgsACwQrAbAZL7AA1rEKDOmwAjKwChCxFQErtA4VABIEK7IVDgors0AVEQkrsAsysRoBK7EOFRESsAY5ALEYEhESsA45sQQAERKxAwk5OTAxMxEhEQEhCQEhAREHMzIVFCcjNTMyNTQrAY8BHwFLAW39uAJa/pj+nouPx8uLiycniwac/LgBTP26/aYBYv6eKcPDAaQeHwAAAAACABMAAARUCJoAAwAJACwAsgQAACuxBwPpsgUCACsBsAovsATWsQcM6bIHBAors0AHCQkrsQsBKwAwMRM1JRUBESERIRETAev+pgEfApEHAM/LzfgzBo/6kP7hAAIAAAAAAesImgADAAcAGwCyBAAAK7AFLwGwCC+wBNaxBwzpsQkBKwAwMRE1JRUBESERAev+mAEfBwDPy834MwZq+ZYAAgCF/lIENQaPAAUAEwBmALIGAAArtBMLAAsEK7IAAAArsQMD6bIBAgArsAwvtA0LAAsEKwGwFC+wANaxAwzpsgMACiuzQAMFCSuwAxCxEAErtAkVABIEK7IQCQors0AQDAkrsAYysRUBKwCxEw0RErAJOTAxMxEhESERBTMyFRQnIzUzMjU0KwGFAR8Ckf2Kj8fLi4snJ4sGj/qQ/uEpw8MBpB4fAAAAAgCP/lIB8gZqAAMAEQBcALIEAAArtBELAAsEK7IAAAArsAovtAsLAAsEK7ABLwGwEi+wANaxAwzpsAMQsAcg1hG0DhUAEgQrsA4vtAcVABIEK7ETASuxDgARErEECjk5ALERCxESsAc5MDEzESERBTMyFRQnIzUzMjU0KwGPAR/+7o/Hy4uLJyeLBmr5linDwwGkHh8AAAACAIUAAAQ1Bo8ABQAMAEwAsgAAACuxAwPpsgECACuwBzMBsA0vsADWsQMM6bADELEGASuxCRXpswsJBggrtAoVAA0EK7EOASuxCgsRErAMOQCxAQMRErAKOTAxMxEhESERATUzFQcjN4UBHwKR/wD2PY4lBo/6kP7hBZb50+G7AAIAFQAAAqwGjwADAAoAUACyAAAAK7IFAgArsQEFECDALwGwCy+wANaxAwzpsAMQsQQBK7EHFemzCQcECCu0CBUADQQrsQwBK7EICRESsAo5ALEBABESsgQHCDk5OTAxMxEhERM1MxUHIzcVAR+C9j2OJQZq+ZYFlvnT4bsAAAAAAf9o/9cESAaPAA0AQgCyCwAAK7QICwALBCuyAgIAKwGwDi+wC9awATK0CBUAEgQrsAMysggLCiuzQAgKCSuxDwErALECCBESsQwNOTkwMQM3ETMRNxcFESEVIREHmPS4lHX+9wM0/BR/ApjCAzX9XXaT1f2VuAKRZAAAAAH/aP/XAh0GjwALACYAsgkAACuyAgIAKwGwDC+wCdawATK0CBUAEgQrsAMysQ0BKwAwMQM3ETMRNxcHESMRB5j+uYl1/rmJAvzJAsr9yW+Sy/xtAwBtAAACAI8AAAUeCJoACQANAE4AsgAAACuwBjOyAQIAK7AEMwGwDi+wANaxCQzpsAkQsQMBK7EGEOmxDwErsQkAERKwAjmwAxGxCgw5ObAGErAHOQCxAQARErEDCDk5MDEzESEBESERIQEREzUlFY8BHwJgARD+/v2SPgHrBo/7lgRq+XEEZPucBwDPy80AAAIAjwAABHIGngALAA8AUwCyAAAAK7AFM7ICAQArsQkD6QGwEC+wANaxCwzpsAsQsQYBK7EFDOmxEQErsQsAERKwAjmwBhGxDA05ObAFErIDDg85OTkAsQIJERKxAQQ5OTAxMxE3IRcRIREnIwcREzUlFY/PAkXP/uJp12YGAesD18/P/CkDIWZm/N8FBM/LzQAAAAACAI/+UgUeBo8ACQAXAIIAsgoAACu0FwsACwQrsgAAACuwBjOyAQIAK7AEM7AQL7QRCwALBCsBsBgvsADWsQkM6bAJELEUASu0DRUAEgQrshQNCiuzQBQQCSuwCjKwDRCxAwErsQYQ6bEZASuxCQARErACObEGAxESsAc5ALEXERESsA05sQEAERKxAwg5OTAxMxEhAREhESEBERczMhUUJyM1MzI1NCsBjwEfAmABEP7+/ZKUj8fLi4snJ4sGj/uWBGr5cQRk+5wpw8MBpB4fAAAAAAIAj/5SBHIEpgALABkAmACyDAAAK7QZCwALBCuyAAAAK7AFM7ICAQArsQkD6bASL7QTCwALBCsBsBovsADWsQsM6bALELEGASuxBQzpsw8FBggrtBYVABIEK7AWL7QPFQASBCuyFg8KK7NAFhIJK7AMMrEbASuxCwARErACObAWEbAJObAGErAIObEFDxESsAM5ALEZExESsA85sQIJERKxAQQ5OTAxMxE3IRcRIREnIwcRFzMyFRQnIzUzMjU0KwGPzwJFz/7iaddmXo/Hy4uLJyeLA9fPz/wpAyFmZvzfKcPDAaQeHwACAI8AAAUeCJ4ACQAQAE4AsgAAACuwBjOyAQIAK7AEMwGwES+wANaxCQzpsAkQsQMBK7EGEOmxEgErsQkAERKwAjmwAxGxCg45ObAGErAHOQCxAQARErEDCDk5MDEzESEBESERIQEREzMXNzMDI48BHwJgARD+/v2SM81FSM3DpgaP+5YEavlxBGT7nAiekpL+ewAAAgCPAAAEcgaiAAsAEgBWALIAAAArsAUzsgIBACuxCQPpAbATL7AA1rELDOmwCxCxBgErsQUM6bEUASuxCwARErECDDk5sAYRsw0PERIkFzmwBRKxAxA5OQCxAgkRErEBBDk5MDEzETchFxEhEScjBxEDMxc3MwMjj88CRc/+4mnXZgLNRUjNw6YD18/P/CkDIWZm/N8GopKS/nsAAwCPAAAFbwh7AAcADwATAFwAsgcAACuxCQbpsgICACuxDgbpsBAvtBELAAsEKwGwFC+wANaxCAzpsAgQsQsBK7EFDOmxFQErsQgAERKxAgc5ObALEbMDBhASJBc5ALEOCRESswEEBQAkFzkwMRMRASEBEQEhERchNxEnIQcTNSEVjwEfAqIBH/7h/V6PAX2Wlv6Gki8CUgEfBFIBHv7i+67+4QGYjpQDWI+PAs24uAADAI8AAAT1Bn8ABwALABMAaACyBwAAK7ENA+myAgEAK7ESA+mwCC+0CQsACwQrAbAUL7AA1rEMDOmwDBCxDwErsQUM6bEVASuxDAARErMCBwgJJBc5sQUPERKzAwYKCyQXOQCxDQcRErEABTk5sQISERKxAQQ5OTAxNxE3IRcRByETNSEVARchNxEnIQeP1QK81dX9SCwCUv3IbgFIc3H+uHDbAvTX1/0I1wXHuLj7yHByAYhucwAABACPAAAFbwieAAcADwATABcAWwCyBwAAK7EJBumyAgIAK7EOBukBsBgvsADWsQgM6bAIELELASuxBQzpsRkBK7EIABESsQIHOTmwCxG2AwYQEhQVFyQXObAFErAWOQCxDgkRErMBBAUAJBc5MDETEQEhAREBIREXITcRJyEHGwEzAzMTMwOPAR8CogEf/uH9Xo8BfZaW/oaSAs3VzU7N1c0BHwRSAR7+4vuu/uEBmI6UA1iPjwJMAVz+pAFc/qQABACPAAAE9QaiAAcACwATABcAZwCyBwAAK7ENA+myAgEAK7ESA+kBsBgvsADWsQwM6bAMELEPASuxBQzpsRkBK7EMABESsgIHCDk5ObAPEbUJCwoUFRckFzmwBRKyAwYWOTk5ALENBxESsQAFOTmxAhIRErEBBDk5MDE3ETchFxEHIQMTMwsBFyE3ESchBxsBMwOP1QK81dX9SArN1c2FbgFIc3H+uHDTzdXN2wL019f9CNcFRgFc/qT8SXByAYhucwIyAVz+pAACAFIAAAYSBo8AEAAYAIoAsg0AACuxCgPpsg0AACuxEgbpsgMCACuxBQPpsgMCACuxFwbptAkGDQMNK7EJA+kBsBkvsADWsREM6bARELEUASuwDTKxCgzpsAUysgoUCiuzQAoICSuxGgErsREAERKxAhA5ObAUEbAPOQCxChIRErAAObAJEbERFDk5sQUGERKyARUYOTk5MDETEQEhESERIREhESERITUHIREXMzcRJyMHUgEfBKH+QAFk/pwBwP0hAv5Aj5yVlZqRAR8EUgEe/uL+Zv7f/mn+4QICAZiOlANYj48AAAAAAwBSAAAGkwSmABEAGQAfAKAAsg4AACuwEDOxCwbpsg4AACuxEwPpsgUBACuwAjOxHgvpsgUBACuxGAPptAkaDgUNK7EJBukBsCAvsADWsRIM6bISAAors0ASDAkrsBIQsRsBK7EHFemxIQErsRIAERKxAhE5ObAbEbcDBQsOEAkVGiQXObAHErAGOQCxCRMRErIKEhU5OTmxGBoRErMWGRwfJBc5sQUOERKxBA85OTAxNxE3IRc3IRcRIRUXIREhJwchExczNxEnIwcFITUnIwdS1QIYa2oBmOf9gUYB0/3namv97EZupHNxpHACowGKc6Zx2wL012tr6P4Hc0j+9mpqAY9wcgGIbnNFcHV1AAADAI8AAAUcCJoADAAQABYAcwCyAAAAK7AHM7IBAgArsRYD6bQLEQABDSuxCwPpAbAXL7AA1rEMDOmwETKwDBCxCAErsBMysQcM6bADMrEYASuxDAARErENDjk5sAgRsgIPEDk5ObAHErAFOQCxCwARErAGObAREbAFObAWErEDBDk5MDEzESEBEQcXESERJyERAzUlFQEhNzUnIY8DbwEel5f+4mn+GS8B6/5EAedpa/4bBo/+4v5ul5T9TAJOav1IBwDPy838CmbHbQACAI8AAANUBp4ABwALAD8AsgAAACuyAgEAK7EFA+kBsAwvsADWsAgysQcM6bIHAAors0AHBAkrsQ0BK7EHABESsAI5ALECBRESsAE5MDEzETchESEHEQE1JRWP2QHs/sxy/uMB6wPN2f7hcPzpBQTPy80AAAMAj/5SBRwGjwAMABIAIACmALITAAArtCALAAsEK7IAAAArsAczsgECACuxEgPpsBkvtBoLAAsEK7QNCyABDSuxDQPpAbAhL7AA1rEMDOmwDTKwDBCxHQErtBYVABIEK7IdFgors0AdGQkr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L7EMDOmzDQYHCCuxEAzpsRIBK7EHCRESsAE5sQ0MERKwAjmxEAYRErADOQCxAAcRErACOTAxEyEJASEBESERAxEhETMRIREpAVwBFwEYAVz+L/65rAEfZgEfBpH96AIY/KT8ywM1A9UBHv7iAR7+4gACAI8AAAU5CJoACQANACwAsgAAACuxBwTpsgQCACuxAwPpAbAOL7EPASsAsQcAERKwATmwAxGwBjkwMTMRASERIREBIREBNSUVjwNI/LgEqvy0A0z9CQHrAUgEKwEe/uL71f64BwDPy80AAAACAI8AAAReBscACQANACwAsgAAACuxBwPpsgQBACuxAwbpAbAOL7EPASsAsQcAERKwATmwAxGwBjkwMTMRASERIREBIREBNSUVjwKH/XkDz/2VAmv9SgHrARICigEK/uH9mP7hBS3Py80AAAACAI8AAAU5CLIACQANADoAsgAAACuxBwTpsgQCACuxAwPpsAovsQsD6QGwDi+wCtaxDQzpsQ8BKwCxBwARErABObADEbAGOTAxMxEBIREhEQEhEQERIRGPA0j8uASq/LQDTP17AR8BSAQrAR7+4vvV/rgHkwEf/uEAAAAAAgCPAAAEXgbPAAkADQBCALIAAAArsQcD6bIEAQArsQMG6bAKL7ELA+kBsA4vsArWsQ0M6bEPASuxDQoRErACOQCxBwARErABObADEbAGOTAxMxEBIREhEQEhEQERIRGPAof9eQPP/ZUCa/2oAR8BEgKKAQr+4f2Y/uEFsAEf/uEAAAAAAgCPAAAFOQiyAAkAEAAsALIAAAArsQcE6bIEAgArsQMD6QGwES+xEgErALEHABESsAE5sAMRsAY5MDEzEQEhESERASERATMXNzMDI48DSPy4BKr8tANM/OrNRUjNw6YBSAQrAR7+4vvV/rgIspKS/nsAAAACAI8AAAReBrcACQAQACwAsgAAACuxBwPpsgQBACuxAwbpAbARL7ESASsAsQcAERKwATmwAxGwBjkwMTMRASERIREBIREBMxc3MwMjjwKH/XkDz/2VAmv9Ms1FSM3DpgESAooBCv7h/Zj+4Qa3kpL+ewAAAAH/cf6kA0IGjwAPAG8AsgYCACu0BwsACwQrsAAvtAELAAsEK7ANL7QKCwALBCsBsBAvsREBK7A2Gro+kvKKABUrCg6wAxCwBMCxDhn5sAnABbMK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AGsAaQBuAGcAIABmAG8AbgB0AHMAIABpAHMAIABtAHkAIABmAHUAbABsAC0AdABpAG0AZQAgAGoAbwBiACAAYQBuAGQAIABlAHYAZQByAHkAIABkAG8AbgBhAHQAaQBvAG4ALAAgAGkAbgAgAGEAbgB5ACAAYQBtAG8AdQBuAHQALAAgAGUAbgBhAGIAbABlAHMAIABtAGUAIAB0AG8AIABjAG8AbgB0AGkAbgB1AGUAIAByAHUAbgBuAGkAbgBnACAAdABoAGUAIABzAGkAdABlACAAYQBuAGQAIABjAHIAZQBhAHQAaQBuAGcAIABuAGUAdwAgAGYAbwBuAHQAcwAuACAASQBmACAAeQBvAHUAIAB3AG8AdQBsAGQAIABsAGkAawBlACAAdABvACAAcwB1AHAAcABvAHIAdAAgAEwAYQByAGEAYgBpAGUAIABGAG8AbgB0AHMAIAB2AGkAcwBpAHQAIAB3AHcAdwAuAGwAYQByAGEAYgBpAGUAZgBvAG4AdABzAC4AYwBvAG0AIABmAG8AcgAgAGQAZQB0AGEAaQBsAHMALgBoAHQAdABwADoALwAvAHcAdwB3AC4AbABhAHIAYQBiAGkAZQBmAG8AbgB0AHMALgBjAG8AbQBoAHQAdABwADoALwAvAHcAdwB3AC4AdAB5AHAAbwBkAGUAcgBtAGkAYwAuAGMAbwBtAFcAZQBiAGYAbwBuAHQAIAAxAC4AMABUAHUAZQAgAFMAZQBwACAAIAA0ACAAMQA3ADoANAAwADoAMgA2ACAAMgAwADEAMgAAAAIAAAAAAAD/NABmAAAAAAAAAAAAAAAAAAAAAAAAAAABQwAAAAEAAgECAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBAwCjAIQAhQC9AJYA6ACGAI4AiwCdAKkApAEEAIoA2gCDAJMBBQEGAI0AiADDAN4BBwCeAKoA9QD0APYAogCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB/AH4AgACBAOwA7gC6AQgBCQEKAQsBDAENAP0A/gD/AQABDgEPARABEQESARMBFAEVARYBFwEYARkA+AD5ARoBGwEcAR0BHgEfAPoA1wEgASEBIgEjASQBJQEmAScA4gDjASgBKQEqASsBLAEtAS4BLwEwATEAsACxATIBMwE0ATUBNgE3ATgBOQE6ATsA5ADlATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHALsBSAFJAUoBSwDmAOcApgDYAOEA2wDcAUwA4ADZAN8AlwFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoAsgCzALYAtwDEALQAtQDFAIcAqwFbAMYAvgC/AVwBXQCMALwBXgDAAMEHdW5pMDAwRAx2aXNpYmxlc3BhY2UHdW5pMDBBRAd1bmkwMEIyB3VuaTAwQjMHdW5pMDBCOQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsGRGNhcm9uBmRjYXJvbgdEbWFjcm9uB2RtYWNyb24HRW1hY3JvbgdlbWFjcm9uCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgxHY29tbWFhY2NlbnQMZ2NvbW1hYWNjZW50B0ltYWNyb24HaW1hY3JvbgdJb2dvbmVrB2lvZ29uZWsMS2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAZMYWN1dGUGbGFjdXRlDExjb21tYWFjY2VudAxsY29tbWFhY2NlbnQGTGNhcm9uBmxjYXJvbgZOYWN1dGUGbmFjdXRlDE5jb21tYWFjY2VudAxuY29tbWFhY2NlbnQGTmNhcm9uBm5jYXJvbgdPbWFjcm9uB29tYWNyb24NT2h1bmdhcnVtbGF1dA1vaHVuZ2FydW1sYXV0BlJhY3V0ZQZyYWN1dGUMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudAZSY2Fyb24GcmNhcm9uBlNhY3V0ZQZzYWN1dGUMU2NvbW1hYWNjZW50DHNjb21tYWFjY2VudAxUY29tbWFhY2NlbnQMdGNvbW1hYWNjZW50BlRjYXJvbgZ0Y2Fyb24HVW1hY3Jvbgd1bWFjcm9uBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQJbnVuZGFnZXNoB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDEwB3VuaTIwMTEKZmlndXJlZGFzaAd1bmkyMDJGB3VuaTIwNUYERXVybwd1bmlFMDAwAAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYALADIEWwAytEsAQgRbIDIAIrsAMrRLAFIEWyBCMCK7ADK0SwBiBFsgW5AiuwAytEsAcgRbIGUgIrsAMrRLAIIEWyByMCK7ADK0SwCSBFsgiTAiuwAytEsAogRbIJQQIrsAMrRLALIEWyChkCK7ADK0QBsAwgRbADK0SwDSBFsgwHAiuxA0Z2K0SwDiBFsg0HAiuxA0Z2K0SwDyBFsg5NAiuxA0Z2K0SwECBFsg81AiuxA0Z2K0SwESBFshAlAiuxA0Z2K0SwEiBFshEdAiuxA0Z2K0SwEyBFshIUAiuxA0Z2K0SwFCBFshMNAiuxA0Z2K0SwFSBFshQYAiuxA0Z2K0RZsBQrAAABUEZ1SgAA)}.creature-view-container .creature-view-top-pane{display:grid;grid-template-columns:1fr auto;gap:1rem;margin-bottom:1rem}.creature-view-top-pane input{width:100%}.daggerheart-adversary{--statblock-section-heading-font-size: 16px;--statblock-rule-color: var(--color-accent);--statblock-background-color: #ede9ff;--statblock-bar-color: #7a7a7a;--statblock-heading-font-color: #000000;--statblock-property-name-font-color: #000000;--statblock-section-heading-font-color: #000000;--statblock-section-heading-border-color: #7a7a7a;--daggerheart-text-normal: #000000;--daggerheart-text-muted: #7a7a7a}.daggerheart-adversary .statblock-content.statblock-content.statblock-content{box-shadow:none;border-color:var(--background-secondary-alt);color:var(--daggerheart-text-normal);padding:0 .5em}.daggerheart-adversary .daggerheart-adversary-tier .line,.daggerheart-adversary .daggerheart-adversary-tier .line p,.daggerheart-adversary .daggerheart-adversary-tier .line span{font-size:1.25em;font-style:italic;font-weight:700}.daggerheart-adversary .daggerheart-adversary-tier .line .property-name{margin-right:0}.daggerheart-adversary .statblock-content .features{margin-top:1rem}.daggerheart-adversary .features .statblock-rendered-text-content{font-size:1.2em;font-weight:700}.daggerheart-adversary .traits-container .statblock-trait-prop,.daggerheart-adversary .statblock-item-container.statblock-trait-prop,.daggerheart-adversary .statblock-item-container.javascript-container,.daggerheart-adversary div.property-container div.experience,.daggerheart-adversary div.property-container div.motives_and_tactics,.daggerheart-adversary div.daggerheart-adversary-description div p{margin:.5rem}.daggerheart-adversary .daggerheart-adversary-description{font-style:italic}.daggerheart-adversary .statblock-item-container .feats,.daggerheart-adversary .statblock-item-container .adversary-block{margin:1.25em}.daggerheart-adversary .heading-container .name div{font-size:1.5em}.daggerheart-adversary div.property-container div.atk{min-width:60px}.daggerheart-adversary div.property-container div.difficulty p,.daggerheart-adversary div.property-container div.thresholds p,.daggerheart-adversary div.property-container div.hp p,.daggerheart-adversary div.property-container div.stress p,.daggerheart-adversary div.property-container div.atk p{font-size:1.25em;font-weight:700}.daggerheart-adversary div.property-container div.difficulty,.daggerheart-adversary div.property-container div.thresholds,.daggerheart-adversary div.property-container div.hp,.daggerheart-adversary div.property-container div.stress,.daggerheart-adversary div.property-container div.atk,.daggerheart-adversary div.property-container div.attack{display:flex;flex-direction:column;justify-content:center;align-items:center}.daggerheart-adversary .column .inline-container{margin:.5rem}.daggerheart-adversary div.property-container div.attack{margin-right:1.5rem}.daggerheart-adversary .adversary-block .stat-line{margin-bottom:.5rem}.daggerheart-adversary .adversary-block .stat-line span{font-weight:700}.daggerheart-adversary .adversary-block .stat-line .adversary-name{font-size:1.2rem}.daggerheart-adversary .adversary-block .stat-line .stat-name{margin-left:.5rem;margin-right:.5rem;line-height:1.5rem;width:150px}.daggerheart-adversary .adversary-block .stat-line input{vertical-align:middle}.daggerheart-adversary .adversary-block .stat-line input.hp-2,.daggerheart-adversary .adversary-block .stat-line input.hp-5,.daggerheart-adversary .adversary-block .stat-line input.hp-8,.daggerheart-adversary .adversary-block .stat-line input.hp-11,.daggerheart-adversary .adversary-block .stat-line input.hp-14,.daggerheart-adversary .adversary-block .stat-line input.hp-17,.daggerheart-adversary .adversary-block .stat-line input.hp-20{margin-right:.8rem}.daggerheart-card{--statblock-section-heading-font-size: 16px;--statblock-rule-color: var(--color-accent);--statblock-background-color: #ffffff;--statblock-bar-color: #7a7a7a;--statblock-heading-font-color: #000000;--statblock-property-name-font-color: #000000;--statblock-section-heading-font-color: #000000;--statblock-section-heading-border-color: #7a7a7a;--daggerheart-text-normal: #000000;--daggerheart-text-muted: #7a7a7a;--daggerheart-domain-color-Arcana: #603c73;--daggerheart-domain-color-Blade: #89251f;--daggerheart-domain-color-Bone: #afb5b9;--daggerheart-domain-color-Codex: #245990;--daggerheart-domain-color-Grace: #c44488;--daggerheart-domain-color-Midnight: #191c1e;--daggerheart-domain-color-Sage: #117240;--daggerheart-domain-color-Splendor: #e3c127;--daggerheart-domain-color-Valor: #b25c1e;--daggerheart-domain-color-Other: #ccc}.daggerheart-card .statblock-content.statblock-content.statblock-content{box-shadow:none;border-color:var(--background-secondary-alt);color:var(--daggerheart-text-normal);padding:0 .5em}.daggerheart-card .level .property-name,.daggerheart-card .domain .property-name,.daggerheart-card .recall .property-name,.daggerheart-card .text .property-name{display:none;visibility:hidden}.daggerheart-card .level p,.daggerheart-card .recall p{font-weight:bolder}.daggerheart-card .level p{font-size:2em}.daggerheart-card .domain p,.daggerheart-card .card-type span{font-weight:700;font-size:1.2em}.daggerheart-card .daggerheart-card-ribbon{margin-left:.5rem;margin-bottom:150px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.5rem;box-shadow:2px 2px 2px #000}.daggerheart-card .daggerheart-card-ribbon span{font-size:1.5em;font-weight:700;color:#fff;text-shadow:2px 2px 2px #000000}.daggerheart-card .daggerheart-card-ribbon:has(.Arcana){background-color:var(--daggerheart-domain-color-Arcana)}.daggerheart-card .daggerheart-card-ribbon:has(.Blade){background-color:var(--daggerheart-domain-color-Blade)}.daggerheart-card .daggerheart-card-ribbon:has(.Bone){background-color:var(--daggerheart-domain-color-Bone)}.daggerheart-card .daggerheart-card-ribbon:has(.Codex){background-color:var(--daggerheart-domain-color-Codex)}.daggerheart-card .daggerheart-card-ribbon:has(.Grace){background-color:var(--daggerheart-domain-color-Grace)}.daggerheart-card .daggerheart-card-ribbon:has(.Midnight){background-color:var(--daggerheart-domain-color-Midnight)}.daggerheart-card .daggerheart-card-ribbon:has(.Sage){background-color:var(--daggerheart-domain-color-Sage)}.daggerheart-card .daggerheart-card-ribbon:has(.Splendor){background-color:var(--daggerheart-domain-color-Splendor)}.daggerheart-card .daggerheart-card-ribbon:has(.Valor){background-color:var(--daggerheart-domain-color-Valor)}.daggerheart-card .daggerheart-card-ribbon:has(.Other){background-color:var(--daggerheart-domain-color-Other)}.daggerheart-card .daggerheart-heading:has(.Arcana) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Arcana),white)}.daggerheart-card .daggerheart-heading:has(.Blade) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Blade),white)}.daggerheart-card .daggerheart-heading:has(.Bone) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Bone),white)}.daggerheart-card .daggerheart-heading:has(.Codex) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Codex),white)}.daggerheart-card .daggerheart-heading:has(.Grace) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Grace),white)}.daggerheart-card .daggerheart-heading:has(.Midnight) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Midnight),white)}.daggerheart-card .daggerheart-heading:has(.Sage) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Sage),white)}.daggerheart-card .daggerheart-heading:has(.Splendor) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Splendor),white)}.daggerheart-card .daggerheart-heading:has(.Valor) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Valor),white)}.daggerheart-card .daggerheart-heading:has(.Other) .card-type{background-image:linear-gradient(to right,white,var(--daggerheart-domain-color-Other),white)}.daggerheart-card .daggerheart-card .card-type{display:flex;justify-content:center;align-items:center}.daggerheart-card .daggerheart-card .card-type span{color:#fff;line-height:2em;text-shadow:2px 2px 2px #000000}.daggerheart-card .recall .statblock-markdown{margin:.5em;border:1px solid var(--statblock-bar-color);background-color:var(--statblock-property-name-font-color);height:38px;width:38px;border-radius:50%;display:flex;justify-content:center;align-items:center}.daggerheart-card .recall p{color:#fff;font-size:1.5em}.daggerheart-card .heading-container{display:flex;justify-content:center;align-items:center}.daggerheart-card .text{margin:1.5em 2em}.daggerheart-environment{--statblock-section-heading-font-size: 16px;--statblock-rule-color: var(--color-accent);--statblock-background-color: #ede9ff;--statblock-bar-color: #7a7a7a;--statblock-heading-font-color: #000000;--statblock-property-name-font-color: #000000;--statblock-section-heading-font-color: #000000;--statblock-section-heading-border-color: #7a7a7a;--daggerheart-text-normal: #000000;--daggerheart-text-muted: #7a7a7a}.daggerheart-environment .statblock-content.statblock-content.statblock-content{box-shadow:none;border-color:var(--background-secondary-alt);color:var(--daggerheart-text-normal);padding:0 .5em}.daggerheart-environment .daggerheart-environment-tier .line{font-size:1.2em;font-style:italic;font-weight:700}.daggerheart-environment .daggerheart-environment-tier .line .property-name{margin-right:0}.daggerheart-environment .features .statblock-rendered-text-content{font-size:1.2em;font-weight:700}.daggerheart-environment .traits-container .statblock-trait-prop,.daggerheart-environment .statblock-item-container.statblock-trait-prop{margin:.5rem}.daggerheart-environment .daggerheart-environment-description{font-style:italic} +/*! +Pathfinder TTRPG General Statblock Layout CSS + +version: 1.6.1 +by: Moritz Jung (https://github.com/mProjectsCode) and Sigrunixia +repo: https://github.com/mProjectsCode/obsidian-pathfinder2e-statblocks + +This file was generated from SCSS. +Looking for `!important`? +- Check for: +Rare_0X +Trait_0X +Popover + +That is the only spots they are used in this file. +*/ +/*! +/* @settings +name: Pathfinder 2e Statblocks +id: pathfinder-2e-statblocks +collapsed: true +settings: + - + id: layout-theme-basic + title: Creature Statblock Theme + description: The theme of the creature statblock + type: class-select + allowEmpty: false + default: basic-pathfinder-2e-layout-theme-default + options: + - + label: Default + value: basic-pathfinder-2e-layout-theme-default + - + label: Kingmaker + value: basic-pathfinder-2e-layout-theme-kingmaker + - + id: layout-theme-action + title: Action Statblock Theme + description: The theme of the action statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-action-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-action-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-action-layout-theme-kingmaker + - + id: layout-theme-hazard + title: Hazard Statblock Theme + description: The theme of the hazard statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-hazard-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-hazard-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-hazard-layout-theme-kingmaker + - + id: layout-theme-influence + title: Influence Statblock Theme + description: The theme of the influence subsystem statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-influence-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-influence-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-influence-layout-theme-kingmaker + - + id: layout-theme-item + title: Item Statblock Theme + description: The theme of the item statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-item-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-item-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-item-layout-theme-kingmaker + - + id: layout-theme-misc + title: Misc Statblock Theme + description: The theme of the misc statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-misc-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-misc-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-misc-layout-theme-kingmaker + - + id: layout-theme-plane + title: Plane Statblock Theme + description: The theme of the plane statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-plane-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-plane-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-plane-layout-theme-kingmaker + - + id: layout-theme-quest + title: Quest Statblock Theme + description: The theme of the quest statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-quest-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-quest-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-quest-layout-theme-kingmaker + - + id: layout-theme-settlement + title: Settlement Statblock Theme + description: The theme of the settlement statblock + type: class-select + allowEmpty: false + default: pathfinder-2e-settlement-layout-theme-default + options: + - + label: Default + value: pathfinder-2e-settlement-layout-theme-default + - + label: Kingmaker + value: pathfinder-2e-settlement-layout-theme-kingmaker + */ diff --git a/.obsidian/plugins/obsidian-dice-roller/data.json b/.obsidian/plugins/obsidian-dice-roller/data.json new file mode 100644 index 0000000..bc72340 --- /dev/null +++ b/.obsidian/plugins/obsidian-dice-roller/data.json @@ -0,0 +1,80 @@ +{ + "position": "RIGHT", + "showFudgeIcon": false, + "rollLinksForTags": false, + "copyContentButton": true, + "customFormulas": [], + "displayFormulaForMod": true, + "displayResultsInline": false, + "displayFormulaAfter": false, + "escapeDiceMod": true, + "signed": false, + "displayLookupRoll": true, + "formulas": {}, + "defaultRoll": 1, + "defaultFace": 100, + "renderer": false, + "renderAllDice": false, + "addToView": false, + "renderTime": 2000, + "colorfulDice": false, + "scaler": 1, + "diceColor": "#202020", + "textColor": "#ffffff", + "textFont": "Arial", + "showLeafOnStartup": true, + "narrativeSymbolSet": "Genesys", + "displayAsSymbols": false, + "displayAsEmbed": true, + "round": "None", + "initialDisplay": "Roll", + "icons": [ + { + "id": "dice-roller-d4", + "shape": "Triangle", + "formula": "d4", + "text": "4" + }, + { + "id": "dice-roller-d6", + "shape": "Square", + "formula": "d6", + "text": "6" + }, + { + "id": "dice-roller-d8", + "shape": "Diamond", + "formula": "d8", + "text": "8" + }, + { + "id": "dice-roller-d10", + "shape": "Diamond", + "formula": "d10", + "text": "10" + }, + { + "id": "dice-roller-d12", + "shape": "Dodecahedron", + "formula": "d12", + "text": "12" + }, + { + "id": "dice-roller-d20", + "shape": "Icosahedron", + "formula": "d20", + "text": "20" + }, + { + "id": "dice-roller-d100", + "shape": "Circle", + "formula": "d%", + "text": "%" + } + ], + "showRenderNotice": true, + "diceModTemplateFolders": {}, + "replaceDiceModInLivePreview": true, + "viewResults": [], + "version": "11.4.2" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-dice-roller/main.js b/.obsidian/plugins/obsidian-dice-roller/main.js new file mode 100644 index 0000000..16f4ede --- /dev/null +++ b/.obsidian/plugins/obsidian-dice-roller/main.js @@ -0,0 +1,3107 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var v0=Object.create;var No=Object.defineProperty;var w0=Object.getOwnPropertyDescriptor;var b0=Object.getOwnPropertyNames;var _0=Object.getPrototypeOf,E0=Object.prototype.hasOwnProperty;var Ei=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),A0=(r,e)=>{for(var t in e)No(r,t,{get:e[t],enumerable:!0})},$d=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of b0(e))!E0.call(r,n)&&n!==t&&No(r,n,{get:()=>e[n],enumerable:!(i=w0(e,n))||i.enumerable});return r};var on=(r,e,t)=>(t=r!=null?v0(_0(r)):{},$d(e||!r||!r.__esModule?No(t,"default",{value:r,enumerable:!0}):t,r)),S0=r=>$d(No({},"__esModule",{value:!0}),r);var ag=Ei(Qi=>{"use strict";var UE=Qi&&Qi.__values||function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],i=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&i>=r.length&&(r=void 0),{value:r&&r[i++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(Qi,"__esModule",{value:!0});Qi.getWordsByCategory=Qi.wordList=void 0;Qi.wordList={noun:[{word:"accountant",categories:["profession"]},{word:"ability",categories:["thing"]},{word:"accident",categories:["thing"]},{word:"account",categories:["thing"]},{word:"action",categories:["thing"]},{word:"activity",categories:["thing"]},{word:"actor",categories:["profession"]},{word:"ad",categories:["media"]},{word:"addition",categories:["thing"]},{word:"address",categories:["thing"]},{word:"adult",categories:["people"]},{word:"advantage",categories:["thing"]},{word:"advertisement",categories:["media"]},{word:"afternoon",categories:["time"]},{word:"agency",categories:["thing"]},{word:"agent",categories:["people"]},{word:"air",categories:["thing"]},{word:"airline",categories:["transportation"]},{word:"airplane",categories:["transportation"]},{word:"airport",categories:["transportation","place"]},{word:"alarm",categories:["thing"]},{word:"alligator",categories:["animals"]},{word:"ambulance",categories:["health"]},{word:"analyst",categories:["profession"]},{word:"angle",categories:["thing"]},{word:"animal",categories:["animals"]},{word:"answer",categories:["thing"]},{word:"apartment",categories:["place"]},{word:"apple",categories:["food"]},{word:"application",categories:["thing"]},{word:"appointment",categories:["thing"]},{word:"architect",categories:["profession"]},{word:"argument",categories:["thing"]},{word:"area",categories:["thing"]},{word:"arm",categories:["thing"]},{word:"army",categories:["thing"]},{word:"art",categories:["thing"]},{word:"article",categories:["thing"]},{word:"artist",categories:["profession"]},{word:"australia",categories:["place"]},{word:"author",categories:["profession"]},{word:"autumn",categories:["time"]},{word:"baby",categories:["people","family"]},{word:"baker",categories:["profession"]},{word:"balloon",categories:["thing"]},{word:"banana",categories:["food"]},{word:"barista",categories:["profession"]},{word:"battery",categories:["thing"]},{word:"beach",categories:["place"]},{word:"bear",categories:["animals"]},{word:"beard",categories:["thing"]},{word:"bed",categories:["thing"]},{word:"belgium",categories:["place"]},{word:"bird",categories:["animals"]},{word:"bit",categories:["thing","technology"]},{word:"book",categories:["thing","education"]},{word:"boots",categories:["thing"]},{word:"boy",categories:["people"]},{word:"branch",categories:["thing"]},{word:"breakfast",categories:["thing"]},{word:"brother",categories:["family"]},{word:"businessperson",categories:["people","business"]},{word:"butcher",categories:["profession"]},{word:"byte",categories:["thing","technology"]},{word:"camera",categories:["thing"]},{word:"candle",categories:["thing"]},{word:"car",categories:["transportation"]},{word:"caravan",categories:["transportation"]},{word:"carpenter",categories:["profession"]},{word:"carpet",categories:["thing"]},{word:"cartoon",categories:["media"]},{word:"cat",categories:["animals"]},{word:"chef",categories:["profession"]},{word:"child",categories:["people","family"]},{word:"china",categories:["place"]},{word:"church",categories:["religion"]},{word:"city",categories:["place"]},{word:"coat",categories:["thing"]},{word:"coffeeshop",categories:["place"]},{word:"computer",categories:["thing","technology"]},{word:"continent",categories:["place"]},{word:"controller",categories:["thing","technology"]},{word:"country",categories:["place"]},{word:"cpu",categories:["thing","technology"]},{word:"crayon",categories:["thing"]},{word:"cricket",categories:["animals"]},{word:"crowd",categories:["people"]},{word:"daughter",categories:["family"]},{word:"dawn",categories:["time"]},{word:"daybreak",categories:["time"]},{word:"death",categories:["thing"]},{word:"denmark",categories:["place"]},{word:"dentist",categories:["profession"]},{word:"diamond",categories:["thing"]},{word:"dinner",categories:["food"]},{word:"disease",categories:["thing"]},{word:"doctor",categories:["profession"]},{word:"dog",categories:["animals"]},{word:"dream",categories:["thing"]},{word:"dress",categories:["thing"]},{word:"dusk",categories:["time"]},{word:"easter",categories:["religion"]},{word:"egg",categories:["food"]},{word:"eggplant",categories:["food"]},{word:"egypt",categories:["place"]},{word:"electrician",categories:["profession"]},{word:"elephant",categories:["animals"]},{word:"energy",categories:["thing"]},{word:"engine",categories:["transportation"]},{word:"engineer",categories:["profession"]},{word:"england",categories:["place"]},{word:"eve",categories:["time"]},{word:"evening",categories:["time"]},{word:"eventide",categories:["time"]},{word:"exabyte",categories:["thing","technology"]},{word:"eye",categories:["thing"]},{word:"fall",categories:["time"]},{word:"family",categories:["family"]},{word:"farmer",categories:["profession"]},{word:"father",categories:["people","family"]},{word:"finland",categories:["place"]},{word:"fireman",categories:["profession"]},{word:"fish",categories:["animals"]},{word:"flag",categories:["thing"]},{word:"florist",categories:["profession"]},{word:"flower",categories:["thing"]},{word:"football",categories:["sports"]},{word:"forest",categories:["place"]},{word:"fountain",categories:["thing"]},{word:"france",categories:["place"]},{word:"furniture",categories:["thing"]},{word:"garage",categories:["place"]},{word:"garden",categories:["food"]},{word:"gas",categories:["transportation"]},{word:"ghost",categories:["thing"]},{word:"gigabyte",categories:["thing","technology"]},{word:"girl",categories:["people"]},{word:"glass",categories:["thing"]},{word:"gold",categories:["thing"]},{word:"gpu",categories:["thing","technology"]},{word:"grandmother",categories:["people","family"]},{word:"grass",categories:["thing"]},{word:"greece",categories:["place"]},{word:"guitar",categories:["thing"]},{word:"hair",categories:["thing"]},{word:"hairdresser",categories:["profession"]},{word:"hamburger",categories:["food"]},{word:"helicopter",categories:["transportation"]},{word:"helmet",categories:["thing"]},{word:"holiday",categories:["thing"]},{word:"honey",categories:["food"]},{word:"horse",categories:["animals"]},{word:"hospital",categories:["place"]},{word:"house",categories:["place"]},{word:"hydrogen",categories:["science"]},{word:"ice",categories:["science"]},{word:"insect",categories:["animals"]},{word:"insurance",categories:["thing"]},{word:"intern",categories:["profession"]},{word:"iron",categories:["science"]},{word:"island",categories:["place"]},{word:"jackal",categories:["animals"]},{word:"jelly",categories:["food"]},{word:"jewellery",categories:["thing"]},{word:"jordan",categories:["place"]},{word:"journalist",categories:["profession"]},{word:"joystick",categories:["thing","technology"]},{word:"judge",categories:["profession"]},{word:"juice",categories:["food"]},{word:"kangaroo",categories:["animals"]},{word:"keyboard",categories:["thing","technology"]},{word:"kilobyte",categories:["thing","technology"]},{word:"king",categories:["people"]},{word:"kitchen",categories:["place"]},{word:"kite",categories:["thing"]},{word:"knife",categories:["thing"]},{word:"lamp",categories:["thing"]},{word:"laptop",categories:["thing","technology"]},{word:"lawyer",categories:["profession"]},{word:"leather",categories:["thing"]},{word:"librarian",categories:["profession"]},{word:"library",categories:["place"]},{word:"lifeguard",categories:["profession"]},{word:"lighter",categories:["thing"]},{word:"lion",categories:["animals"]},{word:"lizard",categories:["animals"]},{word:"lock",categories:["thing"]},{word:"london",categories:["place"]},{word:"lunch",categories:["food"]},{word:"machine",categories:["science"]},{word:"magazine",categories:["media"]},{word:"magician",categories:["people"]},{word:"man",categories:["people"]},{word:"manchester",categories:["place"]},{word:"market",categories:["place"]},{word:"match",categories:["thing"]},{word:"mechanic",categories:["profession"]},{word:"megabyte",categories:["thing","technology"]},{word:"memory",categories:["thing","technology"]},{word:"microphone",categories:["thing"]},{word:"midnight",categories:["time"]},{word:"minister",categories:["people","religion"]},{word:"monitor",categories:["thing","technology"]},{word:"monkey",categories:["animals"]},{word:"morn",categories:["time"]},{word:"morning",categories:["time"]},{word:"mother",categories:["people","family"]},{word:"motherboard",categories:["thing","technology"]},{word:"motorcycle",categories:["transportation"]},{word:"mouse",categories:["thing","technology","animals"]},{word:"musician",categories:["profession"]},{word:"nail",categories:["thing"]},{word:"napkin",categories:["thing"]},{word:"needle",categories:["thing"]},{word:"nest",categories:["thing"]},{word:"nigeria",categories:["place"]},{word:"night",categories:["time"]},{word:"nightfall",categories:["time"]},{word:"noon",categories:["time"]},{word:"notebook",categories:["thing"]},{word:"nurse",categories:["profession"]},{word:"ocean",categories:["place"]},{word:"oil",categories:["thing"]},{word:"optician",categories:["profession"]},{word:"orange",categories:["food"]},{word:"oxygen",categories:["science"]},{word:"oyster",categories:["animals"]},{word:"pager",categories:["thing","technology"]},{word:"painter",categories:["profession"]},{word:"painting",categories:["media"]},{word:"park",categories:["place"]},{word:"parrot",categories:["animals"]},{word:"pencil",categories:["thing","education"]},{word:"petabyte",categories:["thing","technology"]},{word:"pharmacist",categories:["profession"]},{word:"photographer",categories:["profession"]},{word:"piano",categories:["thing"]},{word:"pillow",categories:["thing"]},{word:"pilot",categories:["profession"]},{word:"pizza",categories:["food"]},{word:"planet",categories:["science"]},{word:"plastic",categories:["thing"]},{word:"plumber",categories:["profession"]},{word:"policeman",categories:["profession"]},{word:"portugal",categories:["place"]},{word:"postman",categories:["profession"]},{word:"potato",categories:["food"]},{word:"printer",categories:["thing","technology"]},{word:"processor",categories:["thing","technology"]},{word:"psychiatrist",categories:["profession"]},{word:"queen",categories:["people"]},{word:"quill",categories:["thing"]},{word:"rain",categories:["thing"]},{word:"rainbow",categories:["science"]},{word:"raincoat",categories:["thing"]},{word:"ram",categories:["thing","technology"]},{word:"receptionist",categories:["profession"]},{word:"refrigerator",categories:["food"]},{word:"restaurant",categories:["place"]},{word:"river",categories:["thing"]},{word:"rocket",categories:["science"]},{word:"room",categories:["place"]},{word:"rose",categories:["thing"]},{word:"russia",categories:["place"]},{word:"salesclerk",categories:["people","business"]},{word:"salesmen",categories:["profession"]},{word:"sandwich",categories:["food"]},{word:"school",categories:["education"]},{word:"scientist",categories:["profession"]},{word:"scooter",categories:["transportation"]},{word:"secretary",categories:["profession"]},{word:"shampoo",categories:["thing"]},{word:"shoe",categories:["thing"]},{word:"smartphone",categories:["thing","technology"]},{word:"soccer",categories:["sports"]},{word:"solstice",categories:["time"]},{word:"spoon",categories:["thing"]},{word:"spring",categories:["time"]},{word:"state",categories:["place"]},{word:"stone",categories:["thing"]},{word:"student",categories:["people","education"]},{word:"sugar",categories:["food"]},{word:"summer",categories:["time"]},{word:"sundown",categories:["time"]},{word:"sunset",categories:["time"]},{word:"sweden",categories:["place"]},{word:"table",categories:["thing"]},{word:"tailor",categories:["profession"]},{word:"teacher",categories:["people","education","profession"]},{word:"teenager",categories:["people","family"]},{word:"telephone",categories:["thing"]},{word:"television",categories:["media"]},{word:"tent",categories:["thing"]},{word:"terabyte",categories:["thing","technology"]},{word:"thailand",categories:["place"]},{word:"tiger",categories:["animals"]},{word:"toddler",categories:["people","family"]},{word:"tomato",categories:["food"]},{word:"toothbrush",categories:["thing"]},{word:"traffic",categories:["thing"]},{word:"train",categories:["transportation"]},{word:"translator",categories:["profession"]},{word:"truck",categories:["thing","transportation"]},{word:"twilight",categories:["time"]},{word:"uganda",categories:["place"]},{word:"umbrella",categories:["thing"]},{word:"van",categories:["transportation"]},{word:"vase",categories:["thing"]},{word:"vegetable",categories:["food"]},{word:"vr",categories:["thing","technology"]},{word:"vulture",categories:["animals"]},{word:"waiter",categories:["profession"]},{word:"waitress",categories:["profession"]},{word:"wall",categories:["thing"]},{word:"whale",categories:["animals"]},{word:"window",categories:["thing"]},{word:"winter",categories:["time"]},{word:"wire",categories:["thing"]},{word:"wolf",categories:["animals"]},{word:"woman",categories:["people"]},{word:"xylophone",categories:["thing"]},{word:"yacht",categories:["transportation"]},{word:"yak",categories:["animals"]},{word:"yottabyte",categories:["thing","technology"]},{word:"zebra",categories:["animals"]},{word:"zettabyte",categories:["thing","technology"]},{word:"zoo",categories:["animals"]}],adjective:[{word:"abandoned",categories:["condition"]},{word:"abiding",categories:["personality"]},{word:"able",categories:["condition"]},{word:"abrasive",categories:["condition","personality"]},{word:"abnormal",categories:["condition"]},{word:"absurd",categories:["condition"]},{word:"abundant",categories:["quantity"]},{word:"acceptable",categories:["condition"]},{word:"acidic",categories:["taste"]},{word:"acoustic",categories:["sounds"]},{word:"acrid",categories:["condition"]},{word:"adamant",categories:["personality"]},{word:"adorable",categories:["personality"]},{word:"adventurous",categories:["personality"]},{word:"aggressive",categories:["personality"]},{word:"agitated",categories:["personality"]},{word:"agreeable",categories:["personality"]},{word:"alert",categories:["condition"]},{word:"alive",categories:["condition"]},{word:"aloof",categories:["personality"]},{word:"ambitious",categories:["personality"]},{word:"ancient",categories:["time"]},{word:"angry",categories:["personality"]},{word:"annoyed",categories:["personality"]},{word:"antsy",categories:["personality"]},{word:"anxious",categories:["personality"]},{word:"appalling",categories:["personality"]},{word:"appetizing",categories:["taste"]},{word:"apprehensive",categories:["personality"]},{word:"arrogant",categories:["personality"]},{word:"ashamed",categories:["personality"]},{word:"astonishing",categories:["personality"]},{word:"attractive",categories:["appearance"]},{word:"average",categories:["appearance"]},{word:"bad",categories:["condition"]},{word:"bald",categories:["appearance"]},{word:"bashful",categories:["personality"]},{word:"beautiful",categories:["appearance"]},{word:"beefy",categories:["appearance"]},{word:"belligerent",categories:["personality"]},{word:"bent",categories:["condition"]},{word:"best",categories:["condition"]},{word:"better",categories:["condition"]},{word:"bewildered",categories:["personality"]},{word:"big",categories:["size"]},{word:"billions",categories:["quantity"]},{word:"billowy",categories:["appearance"]},{word:"bitter",categories:["taste"]},{word:"black",categories:["color"]},{word:"bland",categories:["taste"]},{word:"blue",categories:["color"]},{word:"blushing",categories:["appearance"]},{word:"bored",categories:["personality"]},{word:"boring",categories:["personality"]},{word:"boundless",categories:["personality"]},{word:"brainy",categories:["personality"]},{word:"brash",categories:["personality"]},{word:"brave",categories:["personality"]},{word:"breezy",categories:["touch"]},{word:"brief",categories:["time"]},{word:"bright",categories:["appearance"]},{word:"broad",categories:["shapes"]},{word:"broken",categories:["condition"]},{word:"brown",categories:["color"]},{word:"bulky",categories:["appearance"]},{word:"bumpy",categories:["touch"]},{word:"burly",categories:["appearance"]},{word:"busy",categories:["personality"]},{word:"cagey",categories:["personality"]},{word:"calm",categories:["personality"]},{word:"callous",categories:["personality"]},{word:"careful",categories:["condition"]},{word:"chilly",categories:["touch"]},{word:"chubby",categories:["appearance"]},{word:"clean",categories:["appearance"]},{word:"clever",categories:["condition"]},{word:"clumsy",categories:["personality"]},{word:"cold",categories:["touch"]},{word:"colossal",categories:["size"]},{word:"cool",categories:["touch"]},{word:"crashing",categories:["sounds"]},{word:"creamy",categories:["taste"]},{word:"crooked",categories:["shapes"]},{word:"cuddly",categories:["touch"]},{word:"curved",categories:["shapes"]},{word:"damaged",categories:["touch"]},{word:"damp",categories:["touch"]},{word:"dazzling",categories:["appearance"]},{word:"dead",categories:["condition"]},{word:"deafening",categories:["sounds"]},{word:"deep",categories:["shapes"]},{word:"defeated",categories:["personality"]},{word:"delicious",categories:["taste"]},{word:"delightful",categories:["personality"]},{word:"dirty",categories:["touch"]},{word:"disgusting",categories:["taste"]},{word:"drab",categories:["appearance"]},{word:"dry",categories:["touch"]},{word:"eager",categories:["personality"]},{word:"early",categories:["time"]},{word:"easy",categories:["condition"]},{word:"echoing",categories:["sounds"]},{word:"elegant",categories:["appearance"]},{word:"embarrassed",categories:["personality"]},{word:"enough",categories:["quantity"]},{word:"faint",categories:["sounds"]},{word:"faithful",categories:["personality"]},{word:"famous",categories:["condition"]},{word:"fancy",categories:["appearance"]},{word:"fast",categories:["time"]},{word:"fat",categories:["size"]},{word:"few",categories:["quantity"]},{word:"fierce",categories:["personality"]},{word:"fit",categories:["appearance"]},{word:"flabby",categories:["appearance"]},{word:"flaky",categories:["touch"]},{word:"flat",categories:["shapes"]},{word:"fluffy",categories:["touch"]},{word:"freezing",categories:["touch"]},{word:"fresh",categories:["taste"]},{word:"full",categories:["quantity"]},{word:"future",categories:["time"]},{word:"gentle",categories:["personality"]},{word:"gifted",categories:["condition"]},{word:"gigantic",categories:["size"]},{word:"glamorous",categories:["appearance"]},{word:"gorgeous",categories:["appearance"]},{word:"gray",categories:["color"]},{word:"greasy",categories:["touch","taste"]},{word:"great",categories:["size"]},{word:"green",categories:["color"]},{word:"grumpy",categories:["personality"]},{word:"hallowed",categories:["condition"]},{word:"handsome",categories:["appearance"]},{word:"happy",categories:["personality"]},{word:"harsh",categories:["sounds"]},{word:"helpful",categories:["condition"]},{word:"helpless",categories:["personality"]},{word:"high",categories:["shapes"]},{word:"hissing",categories:["sounds"]},{word:"hollow",categories:["shapes"]},{word:"hot",categories:["touch","taste"]},{word:"howling",categories:["sounds"]},{word:"huge",categories:["size"]},{word:"hundreds",categories:["quantity"]},{word:"icy",categories:["touch"]},{word:"immense",categories:["size"]},{word:"important",categories:["condition"]},{word:"incalculable",categories:["quantity"]},{word:"inexpensive",categories:["condition"]},{word:"itchy",categories:["personality"]},{word:"jealous",categories:["personality"]},{word:"jolly",categories:["personality"]},{word:"juicy",categories:["taste"]},{word:"kind",categories:["personality"]},{word:"large",categories:["size"]},{word:"late",categories:["time"]},{word:"lazy",categories:["personality"]},{word:"lemon",categories:["color"]},{word:"limited",categories:["quantity"]},{word:"little",categories:["size","quantity"]},{word:"lively",categories:["personality"]},{word:"long",categories:["time","appearance"]},{word:"loose",categories:["touch"]},{word:"loud",categories:["sounds"]},{word:"low",categories:["shapes"]},{word:"magnificent",categories:["appearance"]},{word:"mammoth",categories:["size"]},{word:"mango",categories:["color"]},{word:"many",categories:["quantity"]},{word:"massive",categories:["size"]},{word:"mealy",categories:["condition"]},{word:"melodic",categories:["sounds"]},{word:"melted",categories:["touch"]},{word:"microscopic",categories:["size"]},{word:"millions",categories:["quantity"]},{word:"miniature",categories:["size"]},{word:"modern",categories:["time"]},{word:"moldy",categories:["taste"]},{word:"most",categories:["quantity"]},{word:"muscular",categories:["appearance"]},{word:"mushy",categories:["condition"]},{word:"mysterious",categories:["personality"]},{word:"narrow",categories:["shapes"]},{word:"nervous",categories:["personality"]},{word:"nice",categories:["personality"]},{word:"noisy",categories:["sounds"]},{word:"numerous",categories:["quantity"]},{word:"nutritious",categories:["taste"]},{word:"nutty",categories:["taste"]},{word:"obedient",categories:["personality"]},{word:"obnoxious",categories:["personality"]},{word:"odd",categories:["condition"]},{word:"old",categories:["time"]},{word:"orange",categories:["color"]},{word:"panicky",categories:["personality"]},{word:"petite",categories:["size"]},{word:"pitiful",categories:["personality"]},{word:"plain",categories:["appearance"]},{word:"plump",categories:["appearance"]},{word:"polite",categories:["personality"]},{word:"poor",categories:["condition"]},{word:"powerful",categories:["condition"]},{word:"prehistoric",categories:["time"]},{word:"prickly",categories:["touch"]},{word:"proud",categories:["personality"]},{word:"puny",categories:["size"]},{word:"purple",categories:["color"]},{word:"purring",categories:["sounds"]},{word:"putrid",categories:["taste"]},{word:"quaint",categories:["appearance"]},{word:"quick",categories:["time"]},{word:"quiet",categories:["sounds"]},{word:"rancid",categories:["taste"]},{word:"rapid",categories:["time"]},{word:"rapping",categories:["sounds"]},{word:"raspy",categories:["sounds"]},{word:"red",categories:["color"]},{word:"refined",categories:["shapes"]},{word:"repulsive",categories:["personality"]},{word:"rhythmic",categories:["sounds"]},{word:"rich",categories:["condition"]},{word:"ripe",categories:["taste"]},{word:"rotten",categories:["taste"]},{word:"rough",categories:["touch"]},{word:"round",categories:["shapes"]},{word:"salmon",categories:["color"]},{word:"salty",categories:["taste"]},{word:"savory",categories:["taste"]},{word:"scarce",categories:["quantity"]},{word:"scary",categories:["personality"]},{word:"scrawny",categories:["size"]},{word:"screeching",categories:["sounds"]},{word:"scruffy",categories:["appearance"]},{word:"shaggy",categories:["touch"]},{word:"shallow",categories:["shapes"]},{word:"shapely",categories:["appearance"]},{word:"sharp",categories:["touch"]},{word:"short",categories:["size","appearance","time"]},{word:"shrilling",categories:["sounds"]},{word:"shy",categories:["condition"]},{word:"silly",categories:["personality"]},{word:"skinny",categories:["appearance","shapes"]},{word:"slimy",categories:["touch"]},{word:"slow",categories:["time"]},{word:"small",categories:["size"]},{word:"some",categories:["quantity"]},{word:"sour",categories:["taste"]},{word:"sparse",categories:["quantity"]},{word:"spicy",categories:["taste"]},{word:"spoiled",categories:["taste"]},{word:"square",categories:["shapes"]},{word:"squeaking",categories:["sounds"]},{word:"stale",categories:["taste"]},{word:"steep",categories:["shapes"]},{word:"sticky",categories:["touch"]},{word:"stocky",categories:["appearance"]},{word:"straight",categories:["shapes"]},{word:"strong",categories:["touch"]},{word:"substantial",categories:["quantity"]},{word:"sweet",categories:["taste"]},{word:"swift",categories:["time"]},{word:"tall",categories:["size"]},{word:"tangy",categories:["taste"]},{word:"tart",categories:["taste"]},{word:"tasteless",categories:["taste"]},{word:"tasty",categories:["taste"]},{word:"teeny",categories:["size"]},{word:"tender",categories:["condition"]},{word:"thankful",categories:["personality"]},{word:"thoughtless",categories:["personality"]},{word:"thousands",categories:["quantity"]},{word:"thundering",categories:["sounds"]},{word:"tight",categories:["touch"]},{word:"tinkling",categories:["sounds"]},{word:"tiny",categories:["size"]},{word:"ugly",categories:["appearance"]},{word:"uneven",categories:["touch"]},{word:"unimportant",categories:["condition"]},{word:"uninterested",categories:["condition"]},{word:"unkempt",categories:["appearance"]},{word:"unsightly",categories:["appearance"]},{word:"uptight",categories:["personality"]},{word:"vast",categories:["condition"]},{word:"victorious",categories:["personality"]},{word:"wailing",categories:["sounds"]},{word:"warm",categories:["touch"]},{word:"weak",categories:["touch"]},{word:"wet",categories:["touch"]},{word:"whining",categories:["sounds"]},{word:"whispering",categories:["sounds"]},{word:"white",categories:["color"]},{word:"wide",categories:["shapes"]},{word:"witty",categories:["personality"]},{word:"wonderful",categories:["personality"]},{word:"wooden",categories:["touch"]},{word:"worried",categories:["personality"]},{word:"wrong",categories:["condition"]},{word:"yellow",categories:["color"]},{word:"young",categories:["time"]},{word:"yummy",categories:["taste"]},{word:"zealous",categories:["personality"]}]};function HE(r,e){var t,i;e===void 0&&(e=[]);var n=new Set(e),s=[];try{for(var o=UE(Qi.wordList[r]),a=o.next();!a.done;a=o.next()){var l=a.value;(e.length===0||l.categories.some(function(c){return n.has(c)}))&&s.push(l.word)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(t)throw t.error}}return s}Qi.getWordsByCategory=HE});var ug=Ei(Cn=>{"use strict";var Zl=Cn&&Cn.__assign||function(){return Zl=Object.assign||function(r){for(var e,t=1,i=arguments.length;t{"use strict";var cd=Object.defineProperty,$E=Object.getOwnPropertyDescriptor,jE=Object.getOwnPropertyNames,XE=Object.prototype.hasOwnProperty,YE=(r,e)=>{for(var t in e)cd(r,t,{get:e[t],enumerable:!0})},ZE=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of jE(e))!XE.call(r,n)&&n!==t&&cd(r,n,{get:()=>e[n],enumerable:!(i=$E(e,n))||i.enumerable});return r},JE=r=>ZE(cd({},"__esModule",{value:!0}),r),pg={};YE(pg,{FileInputSuggest:()=>QE,FolderInputSuggest:()=>KE,FuzzyInputSuggest:()=>ud,setNodeIcon:()=>iA});fg.exports=JE(pg);var ld=require("obsidian"),ud=class extends ld.AbstractInputSuggest{constructor(r,e,t){super(r,e.inputEl),this.items=t}getSuggestions(r){let e=(0,ld.prepareSimpleSearch)(r),t=[];for(let i of this.items){let n=e(this.getItemText(i));n&&t.push({item:i,match:n})}return t}renderSuggestion(r,e){e.addClass("mod-complex");let t=e.createDiv({cls:"suggestion-content"});if(!r?.item){t.setText("No match found"),t.parentElement?.addClass("is-selected");return}let i=t.createDiv("suggestion-title");this.renderTitle(i,r);let n=t.createDiv("suggestion-note");this.renderNote(n,r)}renderMatches(r,e,t,i){(0,ld.renderMatches)(r,e,t,i)}},hg=require("obsidian"),KE=class extends ud{getItemText(r){return r.path}renderNote(r,e){let{item:t,match:i}=e;(0,hg.renderMatches)(r,t.path,i.matches)}renderTitle(r,e){let{item:t,match:i}=e;(0,hg.renderMatches)(r,t.name,i.matches,t.path.length-t.name.length)}},dg=require("obsidian"),QE=class extends ud{getItemText(r){return r.path}renderNote(r,e){let{item:t,match:i}=e;(0,dg.renderMatches)(r,t.path,i.matches)}renderTitle(r,e){let{item:t,match:i}=e;(0,dg.renderMatches)(r,t.name,i.matches,t.path.length-t.name.length)}},eA=require("obsidian"),tA={"has-node-icon":"helpers_has-node-icon","x-small":"helpers_x-small",small:"helpers_small",medium:"helpers_medium",large:"helpers_large","x-large":"helpers_x-large"};function iA(r,e){r.addClass(tA["has-node-icon"]),(0,eA.setIcon)(r,e)}});var xg=Ei((yg,Kl)=>{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof Kl=="object"&&Kl.exports?Kl.exports=e():r.moo=e()})(yg,function(){"use strict";var r=Object.prototype.hasOwnProperty,e=Object.prototype.toString,t=typeof new RegExp().sticky=="boolean";function i(A){return A&&e.call(A)==="[object RegExp]"}function n(A){return A&&typeof A=="object"&&!i(A)&&!Array.isArray(A)}function s(A){return A.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function o(A){var v=new RegExp("|"+A);return v.exec("").length-1}function a(A){return"("+A+")"}function l(A){if(!A.length)return"(?!)";var v=A.map(function(R){return"(?:"+R+")"}).join("|");return"(?:"+v+")"}function c(A){if(typeof A=="string")return"(?:"+s(A)+")";if(i(A)){if(A.ignoreCase)throw new Error("RegExp /i flag not allowed");if(A.global)throw new Error("RegExp /g flag is implied");if(A.sticky)throw new Error("RegExp /y flag is implied");if(A.multiline)throw new Error("RegExp /m flag is implied");return A.source}else throw new Error("Not a pattern: "+A)}function u(A,v){return A.length>v?A:Array(v-A.length+1).join(" ")+A}function h(A,v){for(var R=A.length,S=0;;){var B=A.lastIndexOf(` +`,R-1);if(B===-1||(S++,R=B,S===v)||R===0)break}var L=S0)throw new Error("RegExp has capture groups: "+H+` +Use (?: \u2026 ) instead`);if(!V.lineBreaks&&H.test(` +`))throw new Error("Rule should declare lineBreaks: "+H);N.push(a(ae))}}var ue=R&&R.fallback,we=t&&!ue?"ym":"gm",oe=t||ue?"":"|";L===!0&&(we+="u");var Ce=new RegExp(l(N)+oe,we);return{regexp:Ce,groups:C,fast:S,error:R||x}}function f(A){var v=g(y(A));return new M({start:v},"start")}function E(A,v,R){var S=A&&(A.push||A.next);if(S&&!R[S])throw new Error("Missing state '"+S+"' (in token '"+A.defaultType+"' of state '"+v+"')");if(A&&A.pop&&+A.pop!=1)throw new Error("pop must be 1 (in token '"+A.defaultType+"' of state '"+v+"')")}function w(A,v){var R=A.$all?y(A.$all):[];delete A.$all;var S=Object.getOwnPropertyNames(A);v||(v=S[0]);for(var B=Object.create(null),L=0;L{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.isNone=$t.isSome=$t.None=$t.Some=$t.OptionType=void 0;$t.OptionType={Some:Symbol(":some"),None:Symbol(":none")};function nA(r){return typeof r>"u"?bo():vg(r)}$t.Some=nA;$t.None=bo();function vg(r){return{type:$t.OptionType.Some,isSome(){return!0},isNone(){return!1},match(e){return e.some(r)},map(e){return vg(e(r))},andThen(e){return e(r)},or(e){return this},and(e){return e},unwrapOr(e){return r},unwrap(){return r}}}function bo(){return{type:$t.OptionType.None,isSome(){return!1},isNone(){return!0},match(r){let{none:e}=r;return typeof e=="function"?e():e},map(r){return bo()},andThen(r){return bo()},or(r){return r},and(r){return bo()},unwrapOr(r){if(r==null)throw new Error("Cannot call unwrapOr with a missing value.");return r},unwrap(){throw new ReferenceError("Trying to unwrap None.")}}}function sA(r){return r.isSome()}$t.isSome=sA;function rA(r){return r.isNone()}$t.isNone=rA});var wg=Ei(jt=>{"use strict";Object.defineProperty(jt,"__esModule",{value:!0});jt.isRight=jt.isLeft=jt.Right=jt.Left=jt.EitherType=void 0;var ec=Ql();jt.EitherType={Left:Symbol(":left"),Right:Symbol(":right")};function _o(r){return{type:jt.EitherType.Left,isLeft(){return!0},isRight(){return!1},left(){return(0,ec.Some)(r)},leftAndThen(e){return e(r)},right(){return ec.None},rightAndThen(e){return _o(r)},unwrap(){return r},unwrapLeft(){return r},unwrapLeftOr(e){return r},unwrapLeftOrElse(e){return r},unwrapRight(){throw new ReferenceError("Cannot unwrap Right value of Either.Left")},unwrapRightOr(e){return e},unwrapRightOrElse(e){return e(r)},match(e){return e.left(r)},map(e){return _o(e(r))},mapLeft(e){return _o(e(r))},mapRight(e){return _o(r)}}}jt.Left=_o;function Eo(r){return{type:jt.EitherType.Right,isLeft(){return!1},isRight(){return!0},left(){return ec.None},leftAndThen(e){return Eo(r)},right(){return(0,ec.Some)(r)},rightAndThen(e){return e(r)},unwrap(){return r},unwrapLeft(){throw new ReferenceError("Cannot unwrap Left value of Either.Right")},unwrapLeftOr(e){return e},unwrapLeftOrElse(e){return e(r)},unwrapRight(){return r},unwrapRightOr(e){return r},unwrapRightOrElse(e){return r},match(e){return e.right(r)},map(e){return Eo(e(r))},mapLeft(e){return Eo(r)},mapRight(e){return Eo(e(r))}}}jt.Right=Eo;function oA(r){return r.isLeft()}jt.isLeft=oA;function aA(r){return r.isRight()}jt.isRight=aA});var bg=Ei(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.isErr=Xt.isOk=Xt.Err=Xt.Ok=Xt.ResultType=void 0;var nc=Ql();Xt.ResultType={Ok:Symbol(":ok"),Err:Symbol(":err")};function tc(r){return{type:Xt.ResultType.Ok,isOk(){return!0},isErr(){return!1},ok(){return(0,nc.Some)(r)},err(){return nc.None},unwrap(){return r},unwrapOr(e){return r},unwrapOrElse(e){return r},unwrapErr(){throw new ReferenceError("Cannot unwrap Err value of Result.Ok")},match(e){return e.ok(r)},map(e){return tc(e(r))},mapErr(e){return tc(r)},andThen(e){return e(r)},orElse(e){return tc(r)}}}Xt.Ok=tc;function ic(r){return{type:Xt.ResultType.Err,isOk(){return!1},isErr(){return!0},ok(){return nc.None},err(){return(0,nc.Some)(r)},unwrap(){throw new ReferenceError("Cannot unwrap Ok value of Result.Err")},unwrapOr(e){return e},unwrapOrElse(e){return e(r)},unwrapErr(){return r},match(e){return e.err(r)},map(e){return ic(r)},mapErr(e){return ic(e(r))},andThen(e){return ic(r)},orElse(e){return e(r)}}}Xt.Err=ic;function lA(r){return r.isOk()}Xt.isOk=lA;function cA(r){return r.isErr()}Xt.isErr=cA});var dd=Ei(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.Ok=et.isOk=et.isErr=et.Err=et.Some=et.None=et.isSome=et.isNone=et.Right=et.Left=et.isRight=et.isLeft=void 0;var sc=wg();Object.defineProperty(et,"isLeft",{enumerable:!0,get:function(){return sc.isLeft}});Object.defineProperty(et,"isRight",{enumerable:!0,get:function(){return sc.isRight}});Object.defineProperty(et,"Left",{enumerable:!0,get:function(){return sc.Left}});Object.defineProperty(et,"Right",{enumerable:!0,get:function(){return sc.Right}});var rc=Ql();Object.defineProperty(et,"isNone",{enumerable:!0,get:function(){return rc.isNone}});Object.defineProperty(et,"isSome",{enumerable:!0,get:function(){return rc.isSome}});Object.defineProperty(et,"None",{enumerable:!0,get:function(){return rc.None}});Object.defineProperty(et,"Some",{enumerable:!0,get:function(){return rc.Some}});var oc=bg();Object.defineProperty(et,"Err",{enumerable:!0,get:function(){return oc.Err}});Object.defineProperty(et,"isErr",{enumerable:!0,get:function(){return oc.isErr}});Object.defineProperty(et,"isOk",{enumerable:!0,get:function(){return oc.isOk}});Object.defineProperty(et,"Ok",{enumerable:!0,get:function(){return oc.Ok}})});var _g=Ei(ac=>{"use strict";Object.defineProperty(ac,"__esModule",{value:!0});require("obsidian");var uA=r=>{var e;return r?(e=r.plugins.plugins.dataview)===null||e===void 0?void 0:e.api:window.DataviewAPI},hA=r=>r.plugins.enabledPlugins.has("dataview");ac.getAPI=uA;ac.isPluginEnabled=hA});var Dg=Ei((cc,So)=>{(function(r){var e=typeof cc=="object"&&cc,t=typeof So=="object"&&So&&So.exports==e&&So,i=typeof global=="object"&&global;(i.global===i||i.window===i)&&(r=i);var n=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,s=/[\x01-\x7F]/g,o=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,a=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,l={"\xAD":"shy","\u200C":"zwnj","\u200D":"zwj","\u200E":"lrm","\u2063":"ic","\u2062":"it","\u2061":"af","\u200F":"rlm","\u200B":"ZeroWidthSpace","\u2060":"NoBreak","\u0311":"DownBreve","\u20DB":"tdot","\u20DC":"DotDot"," ":"Tab","\n":"NewLine","\u2008":"puncsp","\u205F":"MediumSpace","\u2009":"thinsp","\u200A":"hairsp","\u2004":"emsp13","\u2002":"ensp","\u2005":"emsp14","\u2003":"emsp","\u2007":"numsp","\xA0":"nbsp","\u205F\u200A":"ThickSpace","\u203E":"oline",_:"lowbar","\u2010":"dash","\u2013":"ndash","\u2014":"mdash","\u2015":"horbar",",":"comma",";":"semi","\u204F":"bsemi",":":"colon","\u2A74":"Colone","!":"excl","\xA1":"iexcl","?":"quest","\xBF":"iquest",".":"period","\u2025":"nldr","\u2026":"mldr","\xB7":"middot","'":"apos","\u2018":"lsquo","\u2019":"rsquo","\u201A":"sbquo","\u2039":"lsaquo","\u203A":"rsaquo",'"':"quot","\u201C":"ldquo","\u201D":"rdquo","\u201E":"bdquo","\xAB":"laquo","\xBB":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","\u2308":"lceil","\u2309":"rceil","\u230A":"lfloor","\u230B":"rfloor","\u2985":"lopar","\u2986":"ropar","\u298B":"lbrke","\u298C":"rbrke","\u298D":"lbrkslu","\u298E":"rbrksld","\u298F":"lbrksld","\u2990":"rbrkslu","\u2991":"langd","\u2992":"rangd","\u2993":"lparlt","\u2994":"rpargt","\u2995":"gtlPar","\u2996":"ltrPar","\u27E6":"lobrk","\u27E7":"robrk","\u27E8":"lang","\u27E9":"rang","\u27EA":"Lang","\u27EB":"Rang","\u27EC":"loang","\u27ED":"roang","\u2772":"lbbrk","\u2773":"rbbrk","\u2016":"Vert","\xA7":"sect","\xB6":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","\u2030":"permil","\u2031":"pertenk","\u2020":"dagger","\u2021":"Dagger","\u2022":"bull","\u2043":"hybull","\u2032":"prime","\u2033":"Prime","\u2034":"tprime","\u2057":"qprime","\u2035":"bprime","\u2041":"caret","`":"grave","\xB4":"acute","\u02DC":"tilde","^":"Hat","\xAF":"macr","\u02D8":"breve","\u02D9":"dot","\xA8":"die","\u02DA":"ring","\u02DD":"dblac","\xB8":"cedil","\u02DB":"ogon","\u02C6":"circ","\u02C7":"caron","\xB0":"deg","\xA9":"copy","\xAE":"reg","\u2117":"copysr","\u2118":"wp","\u211E":"rx","\u2127":"mho","\u2129":"iiota","\u2190":"larr","\u219A":"nlarr","\u2192":"rarr","\u219B":"nrarr","\u2191":"uarr","\u2193":"darr","\u2194":"harr","\u21AE":"nharr","\u2195":"varr","\u2196":"nwarr","\u2197":"nearr","\u2198":"searr","\u2199":"swarr","\u219D":"rarrw","\u219D\u0338":"nrarrw","\u219E":"Larr","\u219F":"Uarr","\u21A0":"Rarr","\u21A1":"Darr","\u21A2":"larrtl","\u21A3":"rarrtl","\u21A4":"mapstoleft","\u21A5":"mapstoup","\u21A6":"map","\u21A7":"mapstodown","\u21A9":"larrhk","\u21AA":"rarrhk","\u21AB":"larrlp","\u21AC":"rarrlp","\u21AD":"harrw","\u21B0":"lsh","\u21B1":"rsh","\u21B2":"ldsh","\u21B3":"rdsh","\u21B5":"crarr","\u21B6":"cularr","\u21B7":"curarr","\u21BA":"olarr","\u21BB":"orarr","\u21BC":"lharu","\u21BD":"lhard","\u21BE":"uharr","\u21BF":"uharl","\u21C0":"rharu","\u21C1":"rhard","\u21C2":"dharr","\u21C3":"dharl","\u21C4":"rlarr","\u21C5":"udarr","\u21C6":"lrarr","\u21C7":"llarr","\u21C8":"uuarr","\u21C9":"rrarr","\u21CA":"ddarr","\u21CB":"lrhar","\u21CC":"rlhar","\u21D0":"lArr","\u21CD":"nlArr","\u21D1":"uArr","\u21D2":"rArr","\u21CF":"nrArr","\u21D3":"dArr","\u21D4":"iff","\u21CE":"nhArr","\u21D5":"vArr","\u21D6":"nwArr","\u21D7":"neArr","\u21D8":"seArr","\u21D9":"swArr","\u21DA":"lAarr","\u21DB":"rAarr","\u21DD":"zigrarr","\u21E4":"larrb","\u21E5":"rarrb","\u21F5":"duarr","\u21FD":"loarr","\u21FE":"roarr","\u21FF":"hoarr","\u2200":"forall","\u2201":"comp","\u2202":"part","\u2202\u0338":"npart","\u2203":"exist","\u2204":"nexist","\u2205":"empty","\u2207":"Del","\u2208":"in","\u2209":"notin","\u220B":"ni","\u220C":"notni","\u03F6":"bepsi","\u220F":"prod","\u2210":"coprod","\u2211":"sum","+":"plus","\xB1":"pm","\xF7":"div","\xD7":"times","<":"lt","\u226E":"nlt","<\u20D2":"nvlt","=":"equals","\u2260":"ne","=\u20E5":"bne","\u2A75":"Equal",">":"gt","\u226F":"ngt",">\u20D2":"nvgt","\xAC":"not","|":"vert","\xA6":"brvbar","\u2212":"minus","\u2213":"mp","\u2214":"plusdo","\u2044":"frasl","\u2216":"setmn","\u2217":"lowast","\u2218":"compfn","\u221A":"Sqrt","\u221D":"prop","\u221E":"infin","\u221F":"angrt","\u2220":"ang","\u2220\u20D2":"nang","\u2221":"angmsd","\u2222":"angsph","\u2223":"mid","\u2224":"nmid","\u2225":"par","\u2226":"npar","\u2227":"and","\u2228":"or","\u2229":"cap","\u2229\uFE00":"caps","\u222A":"cup","\u222A\uFE00":"cups","\u222B":"int","\u222C":"Int","\u222D":"tint","\u2A0C":"qint","\u222E":"oint","\u222F":"Conint","\u2230":"Cconint","\u2231":"cwint","\u2232":"cwconint","\u2233":"awconint","\u2234":"there4","\u2235":"becaus","\u2236":"ratio","\u2237":"Colon","\u2238":"minusd","\u223A":"mDDot","\u223B":"homtht","\u223C":"sim","\u2241":"nsim","\u223C\u20D2":"nvsim","\u223D":"bsim","\u223D\u0331":"race","\u223E":"ac","\u223E\u0333":"acE","\u223F":"acd","\u2240":"wr","\u2242":"esim","\u2242\u0338":"nesim","\u2243":"sime","\u2244":"nsime","\u2245":"cong","\u2247":"ncong","\u2246":"simne","\u2248":"ap","\u2249":"nap","\u224A":"ape","\u224B":"apid","\u224B\u0338":"napid","\u224C":"bcong","\u224D":"CupCap","\u226D":"NotCupCap","\u224D\u20D2":"nvap","\u224E":"bump","\u224E\u0338":"nbump","\u224F":"bumpe","\u224F\u0338":"nbumpe","\u2250":"doteq","\u2250\u0338":"nedot","\u2251":"eDot","\u2252":"efDot","\u2253":"erDot","\u2254":"colone","\u2255":"ecolon","\u2256":"ecir","\u2257":"cire","\u2259":"wedgeq","\u225A":"veeeq","\u225C":"trie","\u225F":"equest","\u2261":"equiv","\u2262":"nequiv","\u2261\u20E5":"bnequiv","\u2264":"le","\u2270":"nle","\u2264\u20D2":"nvle","\u2265":"ge","\u2271":"nge","\u2265\u20D2":"nvge","\u2266":"lE","\u2266\u0338":"nlE","\u2267":"gE","\u2267\u0338":"ngE","\u2268\uFE00":"lvnE","\u2268":"lnE","\u2269":"gnE","\u2269\uFE00":"gvnE","\u226A":"ll","\u226A\u0338":"nLtv","\u226A\u20D2":"nLt","\u226B":"gg","\u226B\u0338":"nGtv","\u226B\u20D2":"nGt","\u226C":"twixt","\u2272":"lsim","\u2274":"nlsim","\u2273":"gsim","\u2275":"ngsim","\u2276":"lg","\u2278":"ntlg","\u2277":"gl","\u2279":"ntgl","\u227A":"pr","\u2280":"npr","\u227B":"sc","\u2281":"nsc","\u227C":"prcue","\u22E0":"nprcue","\u227D":"sccue","\u22E1":"nsccue","\u227E":"prsim","\u227F":"scsim","\u227F\u0338":"NotSucceedsTilde","\u2282":"sub","\u2284":"nsub","\u2282\u20D2":"vnsub","\u2283":"sup","\u2285":"nsup","\u2283\u20D2":"vnsup","\u2286":"sube","\u2288":"nsube","\u2287":"supe","\u2289":"nsupe","\u228A\uFE00":"vsubne","\u228A":"subne","\u228B\uFE00":"vsupne","\u228B":"supne","\u228D":"cupdot","\u228E":"uplus","\u228F":"sqsub","\u228F\u0338":"NotSquareSubset","\u2290":"sqsup","\u2290\u0338":"NotSquareSuperset","\u2291":"sqsube","\u22E2":"nsqsube","\u2292":"sqsupe","\u22E3":"nsqsupe","\u2293":"sqcap","\u2293\uFE00":"sqcaps","\u2294":"sqcup","\u2294\uFE00":"sqcups","\u2295":"oplus","\u2296":"ominus","\u2297":"otimes","\u2298":"osol","\u2299":"odot","\u229A":"ocir","\u229B":"oast","\u229D":"odash","\u229E":"plusb","\u229F":"minusb","\u22A0":"timesb","\u22A1":"sdotb","\u22A2":"vdash","\u22AC":"nvdash","\u22A3":"dashv","\u22A4":"top","\u22A5":"bot","\u22A7":"models","\u22A8":"vDash","\u22AD":"nvDash","\u22A9":"Vdash","\u22AE":"nVdash","\u22AA":"Vvdash","\u22AB":"VDash","\u22AF":"nVDash","\u22B0":"prurel","\u22B2":"vltri","\u22EA":"nltri","\u22B3":"vrtri","\u22EB":"nrtri","\u22B4":"ltrie","\u22EC":"nltrie","\u22B4\u20D2":"nvltrie","\u22B5":"rtrie","\u22ED":"nrtrie","\u22B5\u20D2":"nvrtrie","\u22B6":"origof","\u22B7":"imof","\u22B8":"mumap","\u22B9":"hercon","\u22BA":"intcal","\u22BB":"veebar","\u22BD":"barvee","\u22BE":"angrtvb","\u22BF":"lrtri","\u22C0":"Wedge","\u22C1":"Vee","\u22C2":"xcap","\u22C3":"xcup","\u22C4":"diam","\u22C5":"sdot","\u22C6":"Star","\u22C7":"divonx","\u22C8":"bowtie","\u22C9":"ltimes","\u22CA":"rtimes","\u22CB":"lthree","\u22CC":"rthree","\u22CD":"bsime","\u22CE":"cuvee","\u22CF":"cuwed","\u22D0":"Sub","\u22D1":"Sup","\u22D2":"Cap","\u22D3":"Cup","\u22D4":"fork","\u22D5":"epar","\u22D6":"ltdot","\u22D7":"gtdot","\u22D8":"Ll","\u22D8\u0338":"nLl","\u22D9":"Gg","\u22D9\u0338":"nGg","\u22DA\uFE00":"lesg","\u22DA":"leg","\u22DB":"gel","\u22DB\uFE00":"gesl","\u22DE":"cuepr","\u22DF":"cuesc","\u22E6":"lnsim","\u22E7":"gnsim","\u22E8":"prnsim","\u22E9":"scnsim","\u22EE":"vellip","\u22EF":"ctdot","\u22F0":"utdot","\u22F1":"dtdot","\u22F2":"disin","\u22F3":"isinsv","\u22F4":"isins","\u22F5":"isindot","\u22F5\u0338":"notindot","\u22F6":"notinvc","\u22F7":"notinvb","\u22F9":"isinE","\u22F9\u0338":"notinE","\u22FA":"nisd","\u22FB":"xnis","\u22FC":"nis","\u22FD":"notnivc","\u22FE":"notnivb","\u2305":"barwed","\u2306":"Barwed","\u230C":"drcrop","\u230D":"dlcrop","\u230E":"urcrop","\u230F":"ulcrop","\u2310":"bnot","\u2312":"profline","\u2313":"profsurf","\u2315":"telrec","\u2316":"target","\u231C":"ulcorn","\u231D":"urcorn","\u231E":"dlcorn","\u231F":"drcorn","\u2322":"frown","\u2323":"smile","\u232D":"cylcty","\u232E":"profalar","\u2336":"topbot","\u233D":"ovbar","\u233F":"solbar","\u237C":"angzarr","\u23B0":"lmoust","\u23B1":"rmoust","\u23B4":"tbrk","\u23B5":"bbrk","\u23B6":"bbrktbrk","\u23DC":"OverParenthesis","\u23DD":"UnderParenthesis","\u23DE":"OverBrace","\u23DF":"UnderBrace","\u23E2":"trpezium","\u23E7":"elinters","\u2423":"blank","\u2500":"boxh","\u2502":"boxv","\u250C":"boxdr","\u2510":"boxdl","\u2514":"boxur","\u2518":"boxul","\u251C":"boxvr","\u2524":"boxvl","\u252C":"boxhd","\u2534":"boxhu","\u253C":"boxvh","\u2550":"boxH","\u2551":"boxV","\u2552":"boxdR","\u2553":"boxDr","\u2554":"boxDR","\u2555":"boxdL","\u2556":"boxDl","\u2557":"boxDL","\u2558":"boxuR","\u2559":"boxUr","\u255A":"boxUR","\u255B":"boxuL","\u255C":"boxUl","\u255D":"boxUL","\u255E":"boxvR","\u255F":"boxVr","\u2560":"boxVR","\u2561":"boxvL","\u2562":"boxVl","\u2563":"boxVL","\u2564":"boxHd","\u2565":"boxhD","\u2566":"boxHD","\u2567":"boxHu","\u2568":"boxhU","\u2569":"boxHU","\u256A":"boxvH","\u256B":"boxVh","\u256C":"boxVH","\u2580":"uhblk","\u2584":"lhblk","\u2588":"block","\u2591":"blk14","\u2592":"blk12","\u2593":"blk34","\u25A1":"squ","\u25AA":"squf","\u25AB":"EmptyVerySmallSquare","\u25AD":"rect","\u25AE":"marker","\u25B1":"fltns","\u25B3":"xutri","\u25B4":"utrif","\u25B5":"utri","\u25B8":"rtrif","\u25B9":"rtri","\u25BD":"xdtri","\u25BE":"dtrif","\u25BF":"dtri","\u25C2":"ltrif","\u25C3":"ltri","\u25CA":"loz","\u25CB":"cir","\u25EC":"tridot","\u25EF":"xcirc","\u25F8":"ultri","\u25F9":"urtri","\u25FA":"lltri","\u25FB":"EmptySmallSquare","\u25FC":"FilledSmallSquare","\u2605":"starf","\u2606":"star","\u260E":"phone","\u2640":"female","\u2642":"male","\u2660":"spades","\u2663":"clubs","\u2665":"hearts","\u2666":"diams","\u266A":"sung","\u2713":"check","\u2717":"cross","\u2720":"malt","\u2736":"sext","\u2758":"VerticalSeparator","\u27C8":"bsolhsub","\u27C9":"suphsol","\u27F5":"xlarr","\u27F6":"xrarr","\u27F7":"xharr","\u27F8":"xlArr","\u27F9":"xrArr","\u27FA":"xhArr","\u27FC":"xmap","\u27FF":"dzigrarr","\u2902":"nvlArr","\u2903":"nvrArr","\u2904":"nvHarr","\u2905":"Map","\u290C":"lbarr","\u290D":"rbarr","\u290E":"lBarr","\u290F":"rBarr","\u2910":"RBarr","\u2911":"DDotrahd","\u2912":"UpArrowBar","\u2913":"DownArrowBar","\u2916":"Rarrtl","\u2919":"latail","\u291A":"ratail","\u291B":"lAtail","\u291C":"rAtail","\u291D":"larrfs","\u291E":"rarrfs","\u291F":"larrbfs","\u2920":"rarrbfs","\u2923":"nwarhk","\u2924":"nearhk","\u2925":"searhk","\u2926":"swarhk","\u2927":"nwnear","\u2928":"toea","\u2929":"tosa","\u292A":"swnwar","\u2933":"rarrc","\u2933\u0338":"nrarrc","\u2935":"cudarrr","\u2936":"ldca","\u2937":"rdca","\u2938":"cudarrl","\u2939":"larrpl","\u293C":"curarrm","\u293D":"cularrp","\u2945":"rarrpl","\u2948":"harrcir","\u2949":"Uarrocir","\u294A":"lurdshar","\u294B":"ldrushar","\u294E":"LeftRightVector","\u294F":"RightUpDownVector","\u2950":"DownLeftRightVector","\u2951":"LeftUpDownVector","\u2952":"LeftVectorBar","\u2953":"RightVectorBar","\u2954":"RightUpVectorBar","\u2955":"RightDownVectorBar","\u2956":"DownLeftVectorBar","\u2957":"DownRightVectorBar","\u2958":"LeftUpVectorBar","\u2959":"LeftDownVectorBar","\u295A":"LeftTeeVector","\u295B":"RightTeeVector","\u295C":"RightUpTeeVector","\u295D":"RightDownTeeVector","\u295E":"DownLeftTeeVector","\u295F":"DownRightTeeVector","\u2960":"LeftUpTeeVector","\u2961":"LeftDownTeeVector","\u2962":"lHar","\u2963":"uHar","\u2964":"rHar","\u2965":"dHar","\u2966":"luruhar","\u2967":"ldrdhar","\u2968":"ruluhar","\u2969":"rdldhar","\u296A":"lharul","\u296B":"llhard","\u296C":"rharul","\u296D":"lrhard","\u296E":"udhar","\u296F":"duhar","\u2970":"RoundImplies","\u2971":"erarr","\u2972":"simrarr","\u2973":"larrsim","\u2974":"rarrsim","\u2975":"rarrap","\u2976":"ltlarr","\u2978":"gtrarr","\u2979":"subrarr","\u297B":"suplarr","\u297C":"lfisht","\u297D":"rfisht","\u297E":"ufisht","\u297F":"dfisht","\u299A":"vzigzag","\u299C":"vangrt","\u299D":"angrtvbd","\u29A4":"ange","\u29A5":"range","\u29A6":"dwangle","\u29A7":"uwangle","\u29A8":"angmsdaa","\u29A9":"angmsdab","\u29AA":"angmsdac","\u29AB":"angmsdad","\u29AC":"angmsdae","\u29AD":"angmsdaf","\u29AE":"angmsdag","\u29AF":"angmsdah","\u29B0":"bemptyv","\u29B1":"demptyv","\u29B2":"cemptyv","\u29B3":"raemptyv","\u29B4":"laemptyv","\u29B5":"ohbar","\u29B6":"omid","\u29B7":"opar","\u29B9":"operp","\u29BB":"olcross","\u29BC":"odsold","\u29BE":"olcir","\u29BF":"ofcir","\u29C0":"olt","\u29C1":"ogt","\u29C2":"cirscir","\u29C3":"cirE","\u29C4":"solb","\u29C5":"bsolb","\u29C9":"boxbox","\u29CD":"trisb","\u29CE":"rtriltri","\u29CF":"LeftTriangleBar","\u29CF\u0338":"NotLeftTriangleBar","\u29D0":"RightTriangleBar","\u29D0\u0338":"NotRightTriangleBar","\u29DC":"iinfin","\u29DD":"infintie","\u29DE":"nvinfin","\u29E3":"eparsl","\u29E4":"smeparsl","\u29E5":"eqvparsl","\u29EB":"lozf","\u29F4":"RuleDelayed","\u29F6":"dsol","\u2A00":"xodot","\u2A01":"xoplus","\u2A02":"xotime","\u2A04":"xuplus","\u2A06":"xsqcup","\u2A0D":"fpartint","\u2A10":"cirfnint","\u2A11":"awint","\u2A12":"rppolint","\u2A13":"scpolint","\u2A14":"npolint","\u2A15":"pointint","\u2A16":"quatint","\u2A17":"intlarhk","\u2A22":"pluscir","\u2A23":"plusacir","\u2A24":"simplus","\u2A25":"plusdu","\u2A26":"plussim","\u2A27":"plustwo","\u2A29":"mcomma","\u2A2A":"minusdu","\u2A2D":"loplus","\u2A2E":"roplus","\u2A2F":"Cross","\u2A30":"timesd","\u2A31":"timesbar","\u2A33":"smashp","\u2A34":"lotimes","\u2A35":"rotimes","\u2A36":"otimesas","\u2A37":"Otimes","\u2A38":"odiv","\u2A39":"triplus","\u2A3A":"triminus","\u2A3B":"tritime","\u2A3C":"iprod","\u2A3F":"amalg","\u2A40":"capdot","\u2A42":"ncup","\u2A43":"ncap","\u2A44":"capand","\u2A45":"cupor","\u2A46":"cupcap","\u2A47":"capcup","\u2A48":"cupbrcap","\u2A49":"capbrcup","\u2A4A":"cupcup","\u2A4B":"capcap","\u2A4C":"ccups","\u2A4D":"ccaps","\u2A50":"ccupssm","\u2A53":"And","\u2A54":"Or","\u2A55":"andand","\u2A56":"oror","\u2A57":"orslope","\u2A58":"andslope","\u2A5A":"andv","\u2A5B":"orv","\u2A5C":"andd","\u2A5D":"ord","\u2A5F":"wedbar","\u2A66":"sdote","\u2A6A":"simdot","\u2A6D":"congdot","\u2A6D\u0338":"ncongdot","\u2A6E":"easter","\u2A6F":"apacir","\u2A70":"apE","\u2A70\u0338":"napE","\u2A71":"eplus","\u2A72":"pluse","\u2A73":"Esim","\u2A77":"eDDot","\u2A78":"equivDD","\u2A79":"ltcir","\u2A7A":"gtcir","\u2A7B":"ltquest","\u2A7C":"gtquest","\u2A7D":"les","\u2A7D\u0338":"nles","\u2A7E":"ges","\u2A7E\u0338":"nges","\u2A7F":"lesdot","\u2A80":"gesdot","\u2A81":"lesdoto","\u2A82":"gesdoto","\u2A83":"lesdotor","\u2A84":"gesdotol","\u2A85":"lap","\u2A86":"gap","\u2A87":"lne","\u2A88":"gne","\u2A89":"lnap","\u2A8A":"gnap","\u2A8B":"lEg","\u2A8C":"gEl","\u2A8D":"lsime","\u2A8E":"gsime","\u2A8F":"lsimg","\u2A90":"gsiml","\u2A91":"lgE","\u2A92":"glE","\u2A93":"lesges","\u2A94":"gesles","\u2A95":"els","\u2A96":"egs","\u2A97":"elsdot","\u2A98":"egsdot","\u2A99":"el","\u2A9A":"eg","\u2A9D":"siml","\u2A9E":"simg","\u2A9F":"simlE","\u2AA0":"simgE","\u2AA1":"LessLess","\u2AA1\u0338":"NotNestedLessLess","\u2AA2":"GreaterGreater","\u2AA2\u0338":"NotNestedGreaterGreater","\u2AA4":"glj","\u2AA5":"gla","\u2AA6":"ltcc","\u2AA7":"gtcc","\u2AA8":"lescc","\u2AA9":"gescc","\u2AAA":"smt","\u2AAB":"lat","\u2AAC":"smte","\u2AAC\uFE00":"smtes","\u2AAD":"late","\u2AAD\uFE00":"lates","\u2AAE":"bumpE","\u2AAF":"pre","\u2AAF\u0338":"npre","\u2AB0":"sce","\u2AB0\u0338":"nsce","\u2AB3":"prE","\u2AB4":"scE","\u2AB5":"prnE","\u2AB6":"scnE","\u2AB7":"prap","\u2AB8":"scap","\u2AB9":"prnap","\u2ABA":"scnap","\u2ABB":"Pr","\u2ABC":"Sc","\u2ABD":"subdot","\u2ABE":"supdot","\u2ABF":"subplus","\u2AC0":"supplus","\u2AC1":"submult","\u2AC2":"supmult","\u2AC3":"subedot","\u2AC4":"supedot","\u2AC5":"subE","\u2AC5\u0338":"nsubE","\u2AC6":"supE","\u2AC6\u0338":"nsupE","\u2AC7":"subsim","\u2AC8":"supsim","\u2ACB\uFE00":"vsubnE","\u2ACB":"subnE","\u2ACC\uFE00":"vsupnE","\u2ACC":"supnE","\u2ACF":"csub","\u2AD0":"csup","\u2AD1":"csube","\u2AD2":"csupe","\u2AD3":"subsup","\u2AD4":"supsub","\u2AD5":"subsub","\u2AD6":"supsup","\u2AD7":"suphsub","\u2AD8":"supdsub","\u2AD9":"forkv","\u2ADA":"topfork","\u2ADB":"mlcp","\u2AE4":"Dashv","\u2AE6":"Vdashl","\u2AE7":"Barv","\u2AE8":"vBar","\u2AE9":"vBarv","\u2AEB":"Vbar","\u2AEC":"Not","\u2AED":"bNot","\u2AEE":"rnmid","\u2AEF":"cirmid","\u2AF0":"midcir","\u2AF1":"topcir","\u2AF2":"nhpar","\u2AF3":"parsim","\u2AFD":"parsl","\u2AFD\u20E5":"nparsl","\u266D":"flat","\u266E":"natur","\u266F":"sharp","\xA4":"curren","\xA2":"cent",$:"dollar","\xA3":"pound","\xA5":"yen","\u20AC":"euro","\xB9":"sup1","\xBD":"half","\u2153":"frac13","\xBC":"frac14","\u2155":"frac15","\u2159":"frac16","\u215B":"frac18","\xB2":"sup2","\u2154":"frac23","\u2156":"frac25","\xB3":"sup3","\xBE":"frac34","\u2157":"frac35","\u215C":"frac38","\u2158":"frac45","\u215A":"frac56","\u215D":"frac58","\u215E":"frac78","\u{1D4B6}":"ascr","\u{1D552}":"aopf","\u{1D51E}":"afr","\u{1D538}":"Aopf","\u{1D504}":"Afr","\u{1D49C}":"Ascr",\u00AA:"ordf",\u00E1:"aacute",\u00C1:"Aacute",\u00E0:"agrave",\u00C0:"Agrave",\u0103:"abreve",\u0102:"Abreve",\u00E2:"acirc",\u00C2:"Acirc",\u00E5:"aring",\u00C5:"angst",\u00E4:"auml",\u00C4:"Auml",\u00E3:"atilde",\u00C3:"Atilde",\u0105:"aogon",\u0104:"Aogon",\u0101:"amacr",\u0100:"Amacr",\u00E6:"aelig",\u00C6:"AElig","\u{1D4B7}":"bscr","\u{1D553}":"bopf","\u{1D51F}":"bfr","\u{1D539}":"Bopf",\u212C:"Bscr","\u{1D505}":"Bfr","\u{1D520}":"cfr","\u{1D4B8}":"cscr","\u{1D554}":"copf",\u212D:"Cfr","\u{1D49E}":"Cscr",\u2102:"Copf",\u0107:"cacute",\u0106:"Cacute",\u0109:"ccirc",\u0108:"Ccirc",\u010D:"ccaron",\u010C:"Ccaron",\u010B:"cdot",\u010A:"Cdot",\u00E7:"ccedil",\u00C7:"Ccedil","\u2105":"incare","\u{1D521}":"dfr","\u2146":"dd","\u{1D555}":"dopf","\u{1D4B9}":"dscr","\u{1D49F}":"Dscr","\u{1D507}":"Dfr","\u2145":"DD","\u{1D53B}":"Dopf",\u010F:"dcaron",\u010E:"Dcaron",\u0111:"dstrok",\u0110:"Dstrok",\u00F0:"eth",\u00D0:"ETH","\u2147":"ee",\u212F:"escr","\u{1D522}":"efr","\u{1D556}":"eopf",\u2130:"Escr","\u{1D508}":"Efr","\u{1D53C}":"Eopf",\u00E9:"eacute",\u00C9:"Eacute",\u00E8:"egrave",\u00C8:"Egrave",\u00EA:"ecirc",\u00CA:"Ecirc",\u011B:"ecaron",\u011A:"Ecaron",\u00EB:"euml",\u00CB:"Euml",\u0117:"edot",\u0116:"Edot",\u0119:"eogon",\u0118:"Eogon",\u0113:"emacr",\u0112:"Emacr","\u{1D523}":"ffr","\u{1D557}":"fopf","\u{1D4BB}":"fscr","\u{1D509}":"Ffr","\u{1D53D}":"Fopf",\u2131:"Fscr",\uFB00:"fflig",\uFB03:"ffilig",\uFB04:"ffllig",\uFB01:"filig",fj:"fjlig",\uFB02:"fllig",\u0192:"fnof",\u210A:"gscr","\u{1D558}":"gopf","\u{1D524}":"gfr","\u{1D4A2}":"Gscr","\u{1D53E}":"Gopf","\u{1D50A}":"Gfr",\u01F5:"gacute",\u011F:"gbreve",\u011E:"Gbreve",\u011D:"gcirc",\u011C:"Gcirc",\u0121:"gdot",\u0120:"Gdot",\u0122:"Gcedil","\u{1D525}":"hfr",\u210E:"planckh","\u{1D4BD}":"hscr","\u{1D559}":"hopf",\u210B:"Hscr",\u210C:"Hfr",\u210D:"Hopf",\u0125:"hcirc",\u0124:"Hcirc",\u210F:"hbar",\u0127:"hstrok",\u0126:"Hstrok","\u{1D55A}":"iopf","\u{1D526}":"ifr","\u{1D4BE}":"iscr","\u2148":"ii","\u{1D540}":"Iopf",\u2110:"Iscr",\u2111:"Im",\u00ED:"iacute",\u00CD:"Iacute",\u00EC:"igrave",\u00CC:"Igrave",\u00EE:"icirc",\u00CE:"Icirc",\u00EF:"iuml",\u00CF:"Iuml",\u0129:"itilde",\u0128:"Itilde",\u0130:"Idot",\u012F:"iogon",\u012E:"Iogon",\u012B:"imacr",\u012A:"Imacr",\u0133:"ijlig",\u0132:"IJlig",\u0131:"imath","\u{1D4BF}":"jscr","\u{1D55B}":"jopf","\u{1D527}":"jfr","\u{1D4A5}":"Jscr","\u{1D50D}":"Jfr","\u{1D541}":"Jopf",\u0135:"jcirc",\u0134:"Jcirc","\u0237":"jmath","\u{1D55C}":"kopf","\u{1D4C0}":"kscr","\u{1D528}":"kfr","\u{1D4A6}":"Kscr","\u{1D542}":"Kopf","\u{1D50E}":"Kfr",\u0137:"kcedil",\u0136:"Kcedil","\u{1D529}":"lfr","\u{1D4C1}":"lscr",\u2113:"ell","\u{1D55D}":"lopf",\u2112:"Lscr","\u{1D50F}":"Lfr","\u{1D543}":"Lopf",\u013A:"lacute",\u0139:"Lacute",\u013E:"lcaron",\u013D:"Lcaron",\u013C:"lcedil",\u013B:"Lcedil",\u0142:"lstrok",\u0141:"Lstrok",\u0140:"lmidot",\u013F:"Lmidot","\u{1D52A}":"mfr","\u{1D55E}":"mopf","\u{1D4C2}":"mscr","\u{1D510}":"Mfr","\u{1D544}":"Mopf",\u2133:"Mscr","\u{1D52B}":"nfr","\u{1D55F}":"nopf","\u{1D4C3}":"nscr",\u2115:"Nopf","\u{1D4A9}":"Nscr","\u{1D511}":"Nfr",\u0144:"nacute",\u0143:"Nacute",\u0148:"ncaron",\u0147:"Ncaron",\u00F1:"ntilde",\u00D1:"Ntilde",\u0146:"ncedil",\u0145:"Ncedil","\u2116":"numero",\u014B:"eng",\u014A:"ENG","\u{1D560}":"oopf","\u{1D52C}":"ofr",\u2134:"oscr","\u{1D4AA}":"Oscr","\u{1D512}":"Ofr","\u{1D546}":"Oopf",\u00BA:"ordm",\u00F3:"oacute",\u00D3:"Oacute",\u00F2:"ograve",\u00D2:"Ograve",\u00F4:"ocirc",\u00D4:"Ocirc",\u00F6:"ouml",\u00D6:"Ouml",\u0151:"odblac",\u0150:"Odblac",\u00F5:"otilde",\u00D5:"Otilde",\u00F8:"oslash",\u00D8:"Oslash",\u014D:"omacr",\u014C:"Omacr",\u0153:"oelig",\u0152:"OElig","\u{1D52D}":"pfr","\u{1D4C5}":"pscr","\u{1D561}":"popf",\u2119:"Popf","\u{1D513}":"Pfr","\u{1D4AB}":"Pscr","\u{1D562}":"qopf","\u{1D52E}":"qfr","\u{1D4C6}":"qscr","\u{1D4AC}":"Qscr","\u{1D514}":"Qfr",\u211A:"Qopf",\u0138:"kgreen","\u{1D52F}":"rfr","\u{1D563}":"ropf","\u{1D4C7}":"rscr",\u211B:"Rscr",\u211C:"Re",\u211D:"Ropf",\u0155:"racute",\u0154:"Racute",\u0159:"rcaron",\u0158:"Rcaron",\u0157:"rcedil",\u0156:"Rcedil","\u{1D564}":"sopf","\u{1D4C8}":"sscr","\u{1D530}":"sfr","\u{1D54A}":"Sopf","\u{1D516}":"Sfr","\u{1D4AE}":"Sscr","\u24C8":"oS",\u015B:"sacute",\u015A:"Sacute",\u015D:"scirc",\u015C:"Scirc",\u0161:"scaron",\u0160:"Scaron",\u015F:"scedil",\u015E:"Scedil",\u00DF:"szlig","\u{1D531}":"tfr","\u{1D4C9}":"tscr","\u{1D565}":"topf","\u{1D4AF}":"Tscr","\u{1D517}":"Tfr","\u{1D54B}":"Topf",\u0165:"tcaron",\u0164:"Tcaron",\u0163:"tcedil",\u0162:"Tcedil","\u2122":"trade",\u0167:"tstrok",\u0166:"Tstrok","\u{1D4CA}":"uscr","\u{1D566}":"uopf","\u{1D532}":"ufr","\u{1D54C}":"Uopf","\u{1D518}":"Ufr","\u{1D4B0}":"Uscr",\u00FA:"uacute",\u00DA:"Uacute",\u00F9:"ugrave",\u00D9:"Ugrave",\u016D:"ubreve",\u016C:"Ubreve",\u00FB:"ucirc",\u00DB:"Ucirc",\u016F:"uring",\u016E:"Uring",\u00FC:"uuml",\u00DC:"Uuml",\u0171:"udblac",\u0170:"Udblac",\u0169:"utilde",\u0168:"Utilde",\u0173:"uogon",\u0172:"Uogon",\u016B:"umacr",\u016A:"Umacr","\u{1D533}":"vfr","\u{1D567}":"vopf","\u{1D4CB}":"vscr","\u{1D519}":"Vfr","\u{1D54D}":"Vopf","\u{1D4B1}":"Vscr","\u{1D568}":"wopf","\u{1D4CC}":"wscr","\u{1D534}":"wfr","\u{1D4B2}":"Wscr","\u{1D54E}":"Wopf","\u{1D51A}":"Wfr",\u0175:"wcirc",\u0174:"Wcirc","\u{1D535}":"xfr","\u{1D4CD}":"xscr","\u{1D569}":"xopf","\u{1D54F}":"Xopf","\u{1D51B}":"Xfr","\u{1D4B3}":"Xscr","\u{1D536}":"yfr","\u{1D4CE}":"yscr","\u{1D56A}":"yopf","\u{1D4B4}":"Yscr","\u{1D51C}":"Yfr","\u{1D550}":"Yopf",\u00FD:"yacute",\u00DD:"Yacute",\u0177:"ycirc",\u0176:"Ycirc",\u00FF:"yuml",\u0178:"Yuml","\u{1D4CF}":"zscr","\u{1D537}":"zfr","\u{1D56B}":"zopf",\u2128:"Zfr",\u2124:"Zopf","\u{1D4B5}":"Zscr",\u017A:"zacute",\u0179:"Zacute",\u017E:"zcaron",\u017D:"Zcaron",\u017C:"zdot",\u017B:"Zdot",\u01B5:"imped",\u00FE:"thorn",\u00DE:"THORN",\u0149:"napos",\u03B1:"alpha",\u0391:"Alpha",\u03B2:"beta",\u0392:"Beta",\u03B3:"gamma",\u0393:"Gamma",\u03B4:"delta",\u0394:"Delta",\u03B5:"epsi","\u03F5":"epsiv",\u0395:"Epsilon",\u03DD:"gammad",\u03DC:"Gammad",\u03B6:"zeta",\u0396:"Zeta",\u03B7:"eta",\u0397:"Eta",\u03B8:"theta",\u03D1:"thetav",\u0398:"Theta",\u03B9:"iota",\u0399:"Iota",\u03BA:"kappa",\u03F0:"kappav",\u039A:"Kappa",\u03BB:"lambda",\u039B:"Lambda",\u03BC:"mu",\u00B5:"micro",\u039C:"Mu",\u03BD:"nu",\u039D:"Nu",\u03BE:"xi",\u039E:"Xi",\u03BF:"omicron",\u039F:"Omicron",\u03C0:"pi",\u03D6:"piv",\u03A0:"Pi",\u03C1:"rho",\u03F1:"rhov",\u03A1:"Rho",\u03C3:"sigma",\u03A3:"Sigma",\u03C2:"sigmaf",\u03C4:"tau",\u03A4:"Tau",\u03C5:"upsi",\u03A5:"Upsilon",\u03D2:"Upsi",\u03C6:"phi",\u03D5:"phiv",\u03A6:"Phi",\u03C7:"chi",\u03A7:"Chi",\u03C8:"psi",\u03A8:"Psi",\u03C9:"omega",\u03A9:"ohm",\u0430:"acy",\u0410:"Acy",\u0431:"bcy",\u0411:"Bcy",\u0432:"vcy",\u0412:"Vcy",\u0433:"gcy",\u0413:"Gcy",\u0453:"gjcy",\u0403:"GJcy",\u0434:"dcy",\u0414:"Dcy",\u0452:"djcy",\u0402:"DJcy",\u0435:"iecy",\u0415:"IEcy",\u0451:"iocy",\u0401:"IOcy",\u0454:"jukcy",\u0404:"Jukcy",\u0436:"zhcy",\u0416:"ZHcy",\u0437:"zcy",\u0417:"Zcy",\u0455:"dscy",\u0405:"DScy",\u0438:"icy",\u0418:"Icy",\u0456:"iukcy",\u0406:"Iukcy",\u0457:"yicy",\u0407:"YIcy",\u0439:"jcy",\u0419:"Jcy",\u0458:"jsercy",\u0408:"Jsercy",\u043A:"kcy",\u041A:"Kcy",\u045C:"kjcy",\u040C:"KJcy",\u043B:"lcy",\u041B:"Lcy",\u0459:"ljcy",\u0409:"LJcy",\u043C:"mcy",\u041C:"Mcy",\u043D:"ncy",\u041D:"Ncy",\u045A:"njcy",\u040A:"NJcy",\u043E:"ocy",\u041E:"Ocy",\u043F:"pcy",\u041F:"Pcy",\u0440:"rcy",\u0420:"Rcy",\u0441:"scy",\u0421:"Scy",\u0442:"tcy",\u0422:"Tcy",\u045B:"tshcy",\u040B:"TSHcy",\u0443:"ucy",\u0423:"Ucy",\u045E:"ubrcy",\u040E:"Ubrcy",\u0444:"fcy",\u0424:"Fcy",\u0445:"khcy",\u0425:"KHcy",\u0446:"tscy",\u0426:"TScy",\u0447:"chcy",\u0427:"CHcy",\u045F:"dzcy",\u040F:"DZcy",\u0448:"shcy",\u0428:"SHcy",\u0449:"shchcy",\u0429:"SHCHcy",\u044A:"hardcy",\u042A:"HARDcy",\u044B:"ycy",\u042B:"Ycy",\u044C:"softcy",\u042C:"SOFTcy",\u044D:"ecy",\u042D:"Ecy",\u044E:"yucy",\u042E:"YUcy",\u044F:"yacy",\u042F:"YAcy",\u2135:"aleph",\u2136:"beth",\u2137:"gimel",\u2138:"daleth"},c=/["&'<>`]/g,u={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},h=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,d=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,p=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,m={aacute:"\xE1",Aacute:"\xC1",abreve:"\u0103",Abreve:"\u0102",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",acy:"\u0430",Acy:"\u0410",aelig:"\xE6",AElig:"\xC6",af:"\u2061",afr:"\u{1D51E}",Afr:"\u{1D504}",agrave:"\xE0",Agrave:"\xC0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",Alpha:"\u0391",amacr:"\u0101",Amacr:"\u0100",amalg:"\u2A3F",amp:"&",AMP:"&",and:"\u2227",And:"\u2A53",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",Aogon:"\u0104",aopf:"\u{1D552}",Aopf:"\u{1D538}",ap:"\u2248",apacir:"\u2A6F",ape:"\u224A",apE:"\u2A70",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",Aring:"\xC5",ascr:"\u{1D4B6}",Ascr:"\u{1D49C}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",Bcy:"\u0411",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",beta:"\u03B2",Beta:"\u0392",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",Bfr:"\u{1D505}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bNot:"\u2AED",bopf:"\u{1D553}",Bopf:"\u{1D539}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxhD:"\u2565",boxHd:"\u2564",boxHD:"\u2566",boxhu:"\u2534",boxhU:"\u2568",boxHu:"\u2567",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpe:"\u224F",bumpE:"\u2AAE",bumpeq:"\u224F",Bumpeq:"\u224E",cacute:"\u0107",Cacute:"\u0106",cap:"\u2229",Cap:"\u22D2",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",ccaron:"\u010D",Ccaron:"\u010C",ccedil:"\xE7",Ccedil:"\xC7",ccirc:"\u0109",Ccirc:"\u0108",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",Cdot:"\u010A",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",chcy:"\u0447",CHcy:"\u0427",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",Chi:"\u03A7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cire:"\u2257",cirE:"\u29C3",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",colone:"\u2254",Colone:"\u2A74",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",cscr:"\u{1D4B8}",Cscr:"\u{1D49E}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",Cup:"\u22D3",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",dArr:"\u21D3",Darr:"\u21A1",dash:"\u2010",dashv:"\u22A3",Dashv:"\u2AE4",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",Dcaron:"\u010E",dcy:"\u0434",Dcy:"\u0414",dd:"\u2146",DD:"\u2145",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",delta:"\u03B4",Delta:"\u0394",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",Dfr:"\u{1D507}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",DJcy:"\u0402",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",Dopf:"\u{1D53B}",dot:"\u02D9",Dot:"\xA8",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",downarrow:"\u2193",Downarrow:"\u21D3",DownArrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",Dscr:"\u{1D49F}",dscy:"\u0455",DScy:"\u0405",dsol:"\u29F6",dstrok:"\u0111",Dstrok:"\u0110",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",DZcy:"\u040F",dzigrarr:"\u27FF",eacute:"\xE9",Eacute:"\xC9",easter:"\u2A6E",ecaron:"\u011B",Ecaron:"\u011A",ecir:"\u2256",ecirc:"\xEA",Ecirc:"\xCA",ecolon:"\u2255",ecy:"\u044D",Ecy:"\u042D",eDDot:"\u2A77",edot:"\u0117",eDot:"\u2251",Edot:"\u0116",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",Efr:"\u{1D508}",eg:"\u2A9A",egrave:"\xE8",Egrave:"\xC8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",Emacr:"\u0112",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",eng:"\u014B",ENG:"\u014A",ensp:"\u2002",eogon:"\u0119",Eogon:"\u0118",eopf:"\u{1D556}",Eopf:"\u{1D53C}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",Epsilon:"\u0395",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",esim:"\u2242",Esim:"\u2A73",eta:"\u03B7",Eta:"\u0397",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",Fcy:"\u0424",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",Ffr:"\u{1D509}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",Fopf:"\u{1D53D}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",gamma:"\u03B3",Gamma:"\u0393",gammad:"\u03DD",Gammad:"\u03DC",gap:"\u2A86",gbreve:"\u011F",Gbreve:"\u011E",Gcedil:"\u0122",gcirc:"\u011D",Gcirc:"\u011C",gcy:"\u0433",Gcy:"\u0413",gdot:"\u0121",Gdot:"\u0120",ge:"\u2265",gE:"\u2267",gel:"\u22DB",gEl:"\u2A8C",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",Gfr:"\u{1D50A}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",GJcy:"\u0403",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",Gopf:"\u{1D53E}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",gscr:"\u210A",Gscr:"\u{1D4A2}",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",Gt:"\u226B",GT:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",HARDcy:"\u042A",harr:"\u2194",hArr:"\u21D4",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",hcirc:"\u0125",Hcirc:"\u0124",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",hstrok:"\u0127",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",Iacute:"\xCD",ic:"\u2063",icirc:"\xEE",Icirc:"\xCE",icy:"\u0438",Icy:"\u0418",Idot:"\u0130",iecy:"\u0435",IEcy:"\u0415",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",igrave:"\xEC",Igrave:"\xCC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",IJlig:"\u0132",Im:"\u2111",imacr:"\u012B",Imacr:"\u012A",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",Int:"\u222C",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",iocy:"\u0451",IOcy:"\u0401",iogon:"\u012F",Iogon:"\u012E",iopf:"\u{1D55A}",Iopf:"\u{1D540}",iota:"\u03B9",Iota:"\u0399",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",Itilde:"\u0128",iukcy:"\u0456",Iukcy:"\u0406",iuml:"\xEF",Iuml:"\xCF",jcirc:"\u0135",Jcirc:"\u0134",jcy:"\u0439",Jcy:"\u0419",jfr:"\u{1D527}",Jfr:"\u{1D50D}",jmath:"\u0237",jopf:"\u{1D55B}",Jopf:"\u{1D541}",jscr:"\u{1D4BF}",Jscr:"\u{1D4A5}",jsercy:"\u0458",Jsercy:"\u0408",jukcy:"\u0454",Jukcy:"\u0404",kappa:"\u03BA",Kappa:"\u039A",kappav:"\u03F0",kcedil:"\u0137",Kcedil:"\u0136",kcy:"\u043A",Kcy:"\u041A",kfr:"\u{1D528}",Kfr:"\u{1D50E}",kgreen:"\u0138",khcy:"\u0445",KHcy:"\u0425",kjcy:"\u045C",KJcy:"\u040C",kopf:"\u{1D55C}",Kopf:"\u{1D542}",kscr:"\u{1D4C0}",Kscr:"\u{1D4A6}",lAarr:"\u21DA",lacute:"\u013A",Lacute:"\u0139",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",Lambda:"\u039B",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larr:"\u2190",lArr:"\u21D0",Larr:"\u219E",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",lAtail:"\u291B",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",Lcaron:"\u013D",lcedil:"\u013C",Lcedil:"\u013B",lceil:"\u2308",lcub:"{",lcy:"\u043B",Lcy:"\u041B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",leftarrow:"\u2190",Leftarrow:"\u21D0",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",Leftrightarrow:"\u21D4",LeftRightArrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",leg:"\u22DA",lEg:"\u2A8B",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",Lfr:"\u{1D50F}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",LJcy:"\u0409",ll:"\u226A",Ll:"\u22D8",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",Lmidot:"\u013F",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",Longleftarrow:"\u27F8",LongLeftArrow:"\u27F5",longleftrightarrow:"\u27F7",Longleftrightarrow:"\u27FA",LongLeftRightArrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",Longrightarrow:"\u27F9",LongRightArrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",Lopf:"\u{1D543}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",Lstrok:"\u0141",lt:"<",Lt:"\u226A",LT:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",Map:"\u2905",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",Mcy:"\u041C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",mfr:"\u{1D52A}",Mfr:"\u{1D510}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",Mopf:"\u{1D544}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",mu:"\u03BC",Mu:"\u039C",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",nacute:"\u0144",Nacute:"\u0143",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",Ncaron:"\u0147",ncedil:"\u0146",Ncedil:"\u0145",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",Ncy:"\u041D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",Nfr:"\u{1D511}",nge:"\u2271",ngE:"\u2267\u0338",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",ngt:"\u226F",nGt:"\u226B\u20D2",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",NJcy:"\u040A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nle:"\u2270",nlE:"\u2266\u0338",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nlt:"\u226E",nLt:"\u226A\u20D2",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",not:"\xAC",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",Nscr:"\u{1D4A9}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsube:"\u2288",nsubE:"\u2AC5\u0338",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupe:"\u2289",nsupE:"\u2AC6\u0338",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",Ntilde:"\xD1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",Nu:"\u039D",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",oacute:"\xF3",Oacute:"\xD3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",Ocirc:"\xD4",ocy:"\u043E",Ocy:"\u041E",odash:"\u229D",odblac:"\u0151",Odblac:"\u0150",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",OElig:"\u0152",ofcir:"\u29BF",ofr:"\u{1D52C}",Ofr:"\u{1D512}",ogon:"\u02DB",ograve:"\xF2",Ograve:"\xD2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",Omacr:"\u014C",omega:"\u03C9",Omega:"\u03A9",omicron:"\u03BF",Omicron:"\u039F",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",Oopf:"\u{1D546}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",or:"\u2228",Or:"\u2A54",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",oscr:"\u2134",Oscr:"\u{1D4AA}",oslash:"\xF8",Oslash:"\xD8",osol:"\u2298",otilde:"\xF5",Otilde:"\xD5",otimes:"\u2297",Otimes:"\u2A37",otimesas:"\u2A36",ouml:"\xF6",Ouml:"\xD6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",pcy:"\u043F",Pcy:"\u041F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",Pfr:"\u{1D513}",phi:"\u03C6",Phi:"\u03A6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",Pi:"\u03A0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",pr:"\u227A",Pr:"\u2ABB",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prE:"\u2AB3",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",Pscr:"\u{1D4AB}",psi:"\u03C8",Psi:"\u03A8",puncsp:"\u2008",qfr:"\u{1D52E}",Qfr:"\u{1D514}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",qscr:"\u{1D4C6}",Qscr:"\u{1D4AC}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",racute:"\u0155",Racute:"\u0154",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rArr:"\u21D2",Rarr:"\u21A0",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",Rarrtl:"\u2916",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",Rcaron:"\u0158",rcedil:"\u0157",Rcedil:"\u0156",rceil:"\u2309",rcub:"}",rcy:"\u0440",Rcy:"\u0420",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",Rho:"\u03A1",rhov:"\u03F1",RightAngleBracket:"\u27E9",rightarrow:"\u2192",Rightarrow:"\u21D2",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",Sacute:"\u015A",sbquo:"\u201A",sc:"\u227B",Sc:"\u2ABC",scap:"\u2AB8",scaron:"\u0161",Scaron:"\u0160",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",scedil:"\u015F",Scedil:"\u015E",scirc:"\u015D",Scirc:"\u015C",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",Scy:"\u0421",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",Sfr:"\u{1D516}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",SHCHcy:"\u0429",shcy:"\u0448",SHcy:"\u0428",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",sigma:"\u03C3",Sigma:"\u03A3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",SOFTcy:"\u042C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",Sopf:"\u{1D54A}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",Sscr:"\u{1D4AE}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",Star:"\u22C6",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",sube:"\u2286",subE:"\u2AC5",subedot:"\u2AC3",submult:"\u2AC1",subne:"\u228A",subnE:"\u2ACB",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup:"\u2283",Sup:"\u22D1",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supE:"\u2AC6",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supne:"\u228B",supnE:"\u2ACC",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",tau:"\u03C4",Tau:"\u03A4",tbrk:"\u23B4",tcaron:"\u0165",Tcaron:"\u0164",tcedil:"\u0163",Tcedil:"\u0162",tcy:"\u0442",Tcy:"\u0422",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",Tfr:"\u{1D517}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",theta:"\u03B8",Theta:"\u0398",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",THORN:"\xDE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",Topf:"\u{1D54B}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",Tscr:"\u{1D4AF}",tscy:"\u0446",TScy:"\u0426",tshcy:"\u045B",TSHcy:"\u040B",tstrok:"\u0167",Tstrok:"\u0166",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uacute:"\xFA",Uacute:"\xDA",uarr:"\u2191",uArr:"\u21D1",Uarr:"\u219F",Uarrocir:"\u2949",ubrcy:"\u045E",Ubrcy:"\u040E",ubreve:"\u016D",Ubreve:"\u016C",ucirc:"\xFB",Ucirc:"\xDB",ucy:"\u0443",Ucy:"\u0423",udarr:"\u21C5",udblac:"\u0171",Udblac:"\u0170",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",Ufr:"\u{1D518}",ugrave:"\xF9",Ugrave:"\xD9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",Umacr:"\u016A",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",uogon:"\u0173",Uogon:"\u0172",uopf:"\u{1D566}",Uopf:"\u{1D54C}",uparrow:"\u2191",Uparrow:"\u21D1",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",Updownarrow:"\u21D5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",upsilon:"\u03C5",Upsilon:"\u03A5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",Uring:"\u016E",urtri:"\u25F9",uscr:"\u{1D4CA}",Uscr:"\u{1D4B0}",utdot:"\u22F0",utilde:"\u0169",Utilde:"\u0168",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",Uuml:"\xDC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",vcy:"\u0432",Vcy:"\u0412",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",vee:"\u2228",Vee:"\u22C1",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",vfr:"\u{1D533}",Vfr:"\u{1D519}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",Vopf:"\u{1D54D}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",Vscr:"\u{1D4B1}",vsubne:"\u228A\uFE00",vsubnE:"\u2ACB\uFE00",vsupne:"\u228B\uFE00",vsupnE:"\u2ACC\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",wcirc:"\u0175",Wcirc:"\u0174",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",Wfr:"\u{1D51A}",wopf:"\u{1D568}",Wopf:"\u{1D54E}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",Wscr:"\u{1D4B2}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",Xfr:"\u{1D51B}",xharr:"\u27F7",xhArr:"\u27FA",xi:"\u03BE",Xi:"\u039E",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",Xopf:"\u{1D54F}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",xscr:"\u{1D4CD}",Xscr:"\u{1D4B3}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",Yacute:"\xDD",yacy:"\u044F",YAcy:"\u042F",ycirc:"\u0177",Ycirc:"\u0176",ycy:"\u044B",Ycy:"\u042B",yen:"\xA5",yfr:"\u{1D536}",Yfr:"\u{1D51C}",yicy:"\u0457",YIcy:"\u0407",yopf:"\u{1D56A}",Yopf:"\u{1D550}",yscr:"\u{1D4CE}",Yscr:"\u{1D4B4}",yucy:"\u044E",YUcy:"\u042E",yuml:"\xFF",Yuml:"\u0178",zacute:"\u017A",Zacute:"\u0179",zcaron:"\u017E",Zcaron:"\u017D",zcy:"\u0437",Zcy:"\u0417",zdot:"\u017C",Zdot:"\u017B",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",zeta:"\u03B6",Zeta:"\u0396",zfr:"\u{1D537}",Zfr:"\u2128",zhcy:"\u0436",ZHcy:"\u0416",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",zscr:"\u{1D4CF}",Zscr:"\u{1D4B5}",zwj:"\u200D",zwnj:"\u200C"},y={aacute:"\xE1",Aacute:"\xC1",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",aelig:"\xE6",AElig:"\xC6",agrave:"\xE0",Agrave:"\xC0",amp:"&",AMP:"&",aring:"\xE5",Aring:"\xC5",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",brvbar:"\xA6",ccedil:"\xE7",Ccedil:"\xC7",cedil:"\xB8",cent:"\xA2",copy:"\xA9",COPY:"\xA9",curren:"\xA4",deg:"\xB0",divide:"\xF7",eacute:"\xE9",Eacute:"\xC9",ecirc:"\xEA",Ecirc:"\xCA",egrave:"\xE8",Egrave:"\xC8",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",frac12:"\xBD",frac14:"\xBC",frac34:"\xBE",gt:">",GT:">",iacute:"\xED",Iacute:"\xCD",icirc:"\xEE",Icirc:"\xCE",iexcl:"\xA1",igrave:"\xEC",Igrave:"\xCC",iquest:"\xBF",iuml:"\xEF",Iuml:"\xCF",laquo:"\xAB",lt:"<",LT:"<",macr:"\xAF",micro:"\xB5",middot:"\xB7",nbsp:"\xA0",not:"\xAC",ntilde:"\xF1",Ntilde:"\xD1",oacute:"\xF3",Oacute:"\xD3",ocirc:"\xF4",Ocirc:"\xD4",ograve:"\xF2",Ograve:"\xD2",ordf:"\xAA",ordm:"\xBA",oslash:"\xF8",Oslash:"\xD8",otilde:"\xF5",Otilde:"\xD5",ouml:"\xF6",Ouml:"\xD6",para:"\xB6",plusmn:"\xB1",pound:"\xA3",quot:'"',QUOT:'"',raquo:"\xBB",reg:"\xAE",REG:"\xAE",sect:"\xA7",shy:"\xAD",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",szlig:"\xDF",thorn:"\xFE",THORN:"\xDE",times:"\xD7",uacute:"\xFA",Uacute:"\xDA",ucirc:"\xFB",Ucirc:"\xDB",ugrave:"\xF9",Ugrave:"\xD9",uml:"\xA8",uuml:"\xFC",Uuml:"\xDC",yacute:"\xFD",Yacute:"\xDD",yen:"\xA5",yuml:"\xFF"},x={0:"\uFFFD",128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"},g=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],f=String.fromCharCode,E={},w=E.hasOwnProperty,_=function(N,k){return w.call(N,k)},M=function(N,k){for(var V=-1,U=N.length;++V=55296&&N<=57343||N>1114111?(k&&v("character reference outside the permissible Unicode range"),"\uFFFD"):_(x,N)?(k&&v("disallowed character reference"),x[N]):(k&&M(g,N)&&v("disallowed character reference"),N>65535&&(N-=65536,V+=f(N>>>10&1023|55296),N=56320|N&1023),V+=f(N),V)},W=function(N){return"&#x"+N.toString(16).toUpperCase()+";"},A=function(N){return"&#"+N+";"},v=function(N){throw Error("Parse error: "+N)},R=function(N,k){k=T(k,R.options);var V=k.strict;V&&d.test(N)&&v("forbidden code point");var U=k.encodeEverything,q=k.useNamedReferences,j=k.allowUnsafeSymbols,ne=k.decimal?A:W,ae=function(H){return ne(H.charCodeAt(0))};return U?(N=N.replace(s,function(H){return q&&_(l,H)?"&"+l[H]+";":ae(H)}),q&&(N=N.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),q&&(N=N.replace(a,function(H){return"&"+l[H]+";"}))):q?(j||(N=N.replace(c,function(H){return"&"+l[H]+";"})),N=N.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒"),N=N.replace(a,function(H){return"&"+l[H]+";"})):j||(N=N.replace(c,ae)),N.replace(n,function(H){var Te=H.charCodeAt(0),ue=H.charCodeAt(1),we=(Te-55296)*1024+ue-56320+65536;return ne(we)}).replace(o,ae)};R.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var S=function(N,k){k=T(k,S.options);var V=k.strict;return V&&h.test(N)&&v("malformed character reference"),N.replace(p,function(U,q,j,ne,ae,H,Te,ue,we){var oe,Ce,Ae,Z,ie,te;return q?(ie=q,m[ie]):j?(ie=j,te=ne,te&&k.isAttributeValue?(V&&te=="="&&v("`&` did not start a character reference"),U):(V&&v("named character reference was not terminated by a semicolon"),y[ie]+(te||""))):ae?(Ae=ae,Ce=H,V&&!Ce&&v("character reference was not terminated by a semicolon"),oe=parseInt(Ae,10),z(oe,V)):Te?(Z=Te,Ce=ue,V&&!Ce&&v("character reference was not terminated by a semicolon"),oe=parseInt(Z,16),z(oe,V)):(V&&v("named character reference was not terminated by a semicolon"),U)})};S.options={isAttributeValue:!1,strict:!1};var B=function(N){return N.replace(c,function(k){return u[k]})},L={version:"1.2.0",encode:R,decode:S,escape:B,unescape:S};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd)define(function(){return L});else if(e&&!e.nodeType)if(t)t.exports=L;else for(var C in L)_(L,C)&&(e[C]=L[C]);else r.he=L})(cc)});var nS={};A0(nS,{default:()=>Ac});module.exports=S0(nS);var is=require("obsidian");var Ym=require("obsidian");var Yn=require("obsidian");var po=require("obsidian");var rS=require("obsidian");function jd(r,e,t){[...r].slice(e).reverse().forEach(([n,s])=>{r.set(n+1,s)}),r.set(e,t)}function ko(r,e){return Object.entries(r).reduce((t,i)=>{let n=i[0],o=i[1]?e.parent.path.startsWith(n):e.parent.path==n;return t||o},!1)}var Di=class r{constructor(e=[0,0,0,0,0,0,0,0,0]){this.elements=void 0,this.elements=e}identity(){let e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){let e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){let t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e=new b){let t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t=new b){let i=this.elements,n=e.x,s=e.y,o=e.z;return t.x=i[0]*n+i[1]*s+i[2]*o,t.y=i[3]*n+i[4]*s+i[5]*o,t.z=i[6]*n+i[7]*s+i[8]*o,t}smult(e){for(let t=0;t0){let s=1/n;this.x*=s,this.y*=s,this.z*=s}else this.x=0,this.y=0,this.z=0;return n}unit(e=new r){let t=this.x,i=this.y,n=this.z,s=Math.sqrt(t*t+i*i+n*n);return s>0?(s=1/s,e.x=t*s,e.y=i*s,e.z=n*s):(e.x=1,e.y=0,e.z=0),e}length(){let e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){let t=this.x,i=this.y,n=this.z,s=e.x,o=e.y,a=e.z;return Math.sqrt((s-t)*(s-t)+(o-i)*(o-i)+(a-n)*(a-n))}distanceSquared(e){let t=this.x,i=this.y,n=this.z,s=e.x,o=e.y,a=e.z;return(s-t)*(s-t)+(o-i)*(o-i)+(a-n)*(a-n)}scale(e,t=new r){let i=this.x,n=this.y,s=this.z;return t.x=e*i,t.y=e*n,t.z=e*s,t}vmul(e,t=new r){return t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i=new r){return i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e=new r){return e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){let i=this.length();if(i>0){let n=D0,s=1/i;n.set(this.x*s,this.y*s,this.z*s);let o=T0;Math.abs(n.x)<.9?(o.set(1,0,0),n.cross(o,e)):(o.set(0,1,0),n.cross(o,e)),n.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return this.x+","+this.y+","+this.z}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){let n=this.x,s=this.y,o=this.z;i.x=n+(e.x-n)*t,i.y=s+(e.y-s)*t,i.z=o+(e.z-o)*t}almostEquals(e,t=1e-6){return!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e=1e-6){return!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(Xd),Xd.almostEquals(e,t)}clone(){return new r(this.x,this.y,this.z)}};b.ZERO=void 0;b.UNIT_X=void 0;b.UNIT_Y=void 0;b.UNIT_Z=void 0;b.ZERO=new b(0,0,0);b.UNIT_X=new b(1,0,0);b.UNIT_Y=new b(0,1,0);b.UNIT_Z=new b(0,0,1);var D0=new b,T0=new b,Xd=new b,Zt=class r{constructor(e={}){this.lowerBound=void 0,this.upperBound=void 0,this.lowerBound=new b,this.upperBound=new b,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,n){let s=this.lowerBound,o=this.upperBound,a=i;s.copy(e[0]),a&&a.vmult(s,s),o.copy(s);for(let l=1;lo.x&&(o.x=c.x),c.xo.y&&(o.y=c.y),c.yo.z&&(o.z=c.z),c.z=s.x&&t.y<=n.y&&i.y>=s.y&&t.z<=n.z&&i.z>=s.z}getCorners(e,t,i,n,s,o,a,l){let c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),n.set(c.x,u.y,u.z),s.set(u.x,c.y,u.z),o.set(c.x,u.y,c.z),a.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){let i=Zd,n=i[0],s=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],h=i[7];this.getCorners(n,s,o,a,l,c,u,h);for(let d=0;d!==8;d++){let p=i[d];e.pointToLocal(p,p)}return t.setFromPoints(i)}toWorldFrame(e,t){let i=Zd,n=i[0],s=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],h=i[7];this.getCorners(n,s,o,a,l,c,u,h);for(let d=0;d!==8;d++){let p=i[d];e.pointToWorld(p,p)}return t.setFromPoints(i)}overlapsRay(e){let{direction:t,from:i}=e,n=1/t.x,s=1/t.y,o=1/t.z,a=(this.lowerBound.x-i.x)*n,l=(this.upperBound.x-i.x)*n,c=(this.lowerBound.y-i.y)*s,u=(this.upperBound.y-i.y)*s,h=(this.lowerBound.z-i.z)*o,d=(this.upperBound.z-i.z)*o,p=Math.max(Math.max(Math.min(a,l),Math.min(c,u)),Math.min(h,d)),m=Math.min(Math.min(Math.max(a,l),Math.max(c,u)),Math.max(h,d));return!(m<0||p>m)}},Yd=new b,Zd=[new b,new b,new b,new b,new b,new b,new b,new b],Go=class{constructor(){this.matrix=void 0,this.matrix=[]}get(e,t){let{index:i}=e,{index:n}=t;if(n>i){let s=n;n=i,i=s}return this.matrix[(i*(i+1)>>1)+n-1]}set(e,t,i){let{index:n}=e,{index:s}=t;if(s>n){let o=s;s=n,n=o}this.matrix[(n*(n+1)>>1)+s-1]=i?1:0}reset(){for(let e=0,t=this.matrix.length;e!==t;e++)this.matrix[e]=0}setNumObjects(e){this.matrix.length=e*(e-1)>>1}},qo=class{constructor(){this._listeners=void 0}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;return i[e]===void 0&&(i[e]=[]),i[e].includes(t)||i[e].push(t),this}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return!!(i[e]!==void 0&&i[e].includes(t))}hasAnyEventListener(e){return this._listeners===void 0?!1:this._listeners[e]!==void 0}removeEventListener(e,t){if(this._listeners===void 0)return this;let i=this._listeners;if(i[e]===void 0)return this;let n=i[e].indexOf(t);return n!==-1&&i[e].splice(n,1),this}dispatchEvent(e){if(this._listeners===void 0)return this;let i=this._listeners[e.type];if(i!==void 0){e.target=this;for(let n=0,s=i.length;n.499&&(i=2*Math.atan2(o,c),n=Math.PI/2,s=0),u<-.499&&(i=-2*Math.atan2(o,c),n=-Math.PI/2,s=0),i===void 0){let h=o*o,d=a*a,p=l*l;i=Math.atan2(2*a*c-2*o*l,1-2*d-2*p),n=Math.asin(2*u),s=Math.atan2(2*o*c-2*a*l,1-2*h-2*p)}break;default:throw new Error("Euler order "+t+" not supported yet.")}e.y=i,e.z=n,e.x=s}setFromEuler(e,t,i,n="XYZ"){let s=Math.cos(e/2),o=Math.cos(t/2),a=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return n==="XYZ"?(this.x=l*o*a+s*c*u,this.y=s*c*a-l*o*u,this.z=s*o*u+l*c*a,this.w=s*o*a-l*c*u):n==="YXZ"?(this.x=l*o*a+s*c*u,this.y=s*c*a-l*o*u,this.z=s*o*u-l*c*a,this.w=s*o*a+l*c*u):n==="ZXY"?(this.x=l*o*a-s*c*u,this.y=s*c*a+l*o*u,this.z=s*o*u+l*c*a,this.w=s*o*a-l*c*u):n==="ZYX"?(this.x=l*o*a-s*c*u,this.y=s*c*a+l*o*u,this.z=s*o*u-l*c*a,this.w=s*o*a+l*c*u):n==="YZX"?(this.x=l*o*a+s*c*u,this.y=s*c*a+l*o*u,this.z=s*o*u-l*c*a,this.w=s*o*a-l*c*u):n==="XZY"&&(this.x=l*o*a-s*c*u,this.y=s*c*a-l*o*u,this.z=s*o*u+l*c*a,this.w=s*o*a+l*c*u),this}clone(){return new r(this.x,this.y,this.z,this.w)}slerp(e,t,i=new r){let n=this.x,s=this.y,o=this.z,a=this.w,l=e.x,c=e.y,u=e.z,h=e.w,d,p,m,y,x;return p=n*l+s*c+o*u+a*h,p<0&&(p=-p,l=-l,c=-c,u=-u,h=-h),1-p>1e-6?(d=Math.acos(p),m=Math.sin(d),y=Math.sin((1-t)*d)/m,x=Math.sin(t*d)/m):(y=1-t,x=t),i.x=y*n+x*l,i.y=y*s+x*c,i.z=y*o+x*u,i.w=y*a+x*h,i}integrate(e,t,i,n=new r){let s=e.x*i.x,o=e.y*i.y,a=e.z*i.z,l=this.x,c=this.y,u=this.z,h=this.w,d=t*.5;return n.x+=d*(s*h+o*u-a*c),n.y+=d*(o*h+a*l-s*u),n.z+=d*(a*h+s*c-o*l),n.w+=d*(-s*l-o*c-a*u),n}},C0=new b,R0=new b,F0={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256},me=class r{constructor(e={}){this.id=void 0,this.type=void 0,this.boundingSphereRadius=void 0,this.collisionResponse=void 0,this.collisionFilterGroup=void 0,this.collisionFilterMask=void 0,this.material=void 0,this.body=void 0,this.id=r.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw"computeBoundingSphereRadius() not implemented for shape type "+this.type}volume(){throw"volume() not implemented for shape type "+this.type}calculateLocalInertia(e,t){throw"calculateLocalInertia() not implemented for shape type "+this.type}calculateWorldAABB(e,t,i,n){throw"calculateWorldAABB() not implemented for shape type "+this.type}};me.idCounter=0;me.types=F0;var Ge=class r{constructor(e={}){this.position=void 0,this.quaternion=void 0,this.position=new b,this.quaternion=new vt,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return r.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return r.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t=new b){return this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,n=new b){return i.vsub(e,n),t.conjugate(Jd),Jd.vmult(n,n),n}static pointToWorldFrame(e,t,i,n=new b){return t.vmult(i,n),n.vadd(e,n),n}static vectorToWorldFrame(e,t,i=new b){return e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,n=new b){return t.w*=-1,t.vmult(i,n),t.w*=-1,n}},Jd=new vt,mr=class r extends me{constructor(e={}){let{vertices:t=[],faces:i=[],normals:n=[],axes:s,boundingSphereRadius:o}=e;super({type:me.types.CONVEXPOLYHEDRON}),this.vertices=void 0,this.faces=void 0,this.faceNormals=void 0,this.worldVertices=void 0,this.worldVerticesNeedsUpdate=void 0,this.worldFaceNormals=void 0,this.worldFaceNormalsNeedsUpdate=void 0,this.uniqueAxes=void 0,this.uniqueEdges=void 0,this.vertices=t,this.faces=i,this.faceNormals=n,this.faceNormals.length===0&&this.computeNormals(),o?this.boundingSphereRadius=o:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=s?s.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){let e=this.faces,t=this.vertices,i=this.uniqueEdges;i.length=0;let n=new b;for(let s=0;s!==e.length;s++){let o=e[s],a=o.length;for(let l=0;l!==a;l++){let c=(l+1)%a;t[o[l]].vsub(t[o[c]],n),n.normalize();let u=!1;for(let h=0;h!==i.length;h++)if(i[h].almostEquals(n)||i[h].almostEquals(n)){u=!0;break}u||i.push(n.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let e=0;ed&&(d=y,h=m)}let p=[];for(let m=0;m=0&&this.clipFaceAgainstHull(o,e,t,p,a,l,c)}findSeparatingAxis(e,t,i,n,s,o,a,l){let c=new b,u=new b,h=new b,d=new b,p=new b,m=new b,y=Number.MAX_VALUE,x=this;if(x.uniqueAxes)for(let g=0;g!==x.uniqueAxes.length;g++){i.vmult(x.uniqueAxes[g],c);let f=x.testSepAxis(c,e,t,i,n,s);if(f===!1)return!1;f0&&o.negate(o),!0}testSepAxis(e,t,i,n,s,o){let a=this;r.project(a,e,i,n,Mc),r.project(t,e,s,o,Dc);let l=Mc[0],c=Mc[1],u=Dc[0],h=Dc[1];if(l0?1/t:0,this.material=e.material||null,this.linearDamping=typeof e.linearDamping=="number"?e.linearDamping:.01,this.type=t<=0?r.STATIC:r.DYNAMIC,typeof e.type==typeof r.STATIC&&(this.type=e.type),this.allowSleep=typeof e.allowSleep<"u"?e.allowSleep:!0,this.sleepState=r.AWAKE,this.sleepSpeedLimit=typeof e.sleepSpeedLimit<"u"?e.sleepSpeedLimit:.1,this.sleepTimeLimit=typeof e.sleepTimeLimit<"u"?e.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new b,this.quaternion=new vt,this.initQuaternion=new vt,this.previousQuaternion=new vt,this.interpolatedQuaternion=new vt,e.quaternion&&(this.quaternion.copy(e.quaternion),this.initQuaternion.copy(e.quaternion),this.previousQuaternion.copy(e.quaternion),this.interpolatedQuaternion.copy(e.quaternion)),this.angularVelocity=new b,e.angularVelocity&&this.angularVelocity.copy(e.angularVelocity),this.initAngularVelocity=new b,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new b,this.invInertia=new b,this.invInertiaWorld=new Di,this.invMassSolve=0,this.invInertiaSolve=new b,this.invInertiaWorldSolve=new Di,this.fixedRotation=typeof e.fixedRotation<"u"?e.fixedRotation:!1,this.angularDamping=typeof e.angularDamping<"u"?e.angularDamping:.01,this.linearFactor=new b(1,1,1),e.linearFactor&&this.linearFactor.copy(e.linearFactor),this.angularFactor=new b(1,1,1),e.angularFactor&&this.angularFactor.copy(e.angularFactor),this.aabb=new Zt,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new b,this.isTrigger=!!e.isTrigger,e.shape&&this.addShape(e.shape),this.updateMassProperties()}wakeUp(){let e=this.sleepState;this.sleepState=r.AWAKE,this.wakeUpAfterNarrowphase=!1,e===r.SLEEPING&&this.dispatchEvent(r.wakeupEvent)}sleep(){this.sleepState=r.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(e){if(this.allowSleep){let t=this.sleepState,i=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),n=this.sleepSpeedLimit**2;t===r.AWAKE&&in?this.wakeUp():t===r.SLEEPY&&e-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(r.sleepEvent))}}updateSolveMassProperties(){this.sleepState===r.SLEEPING||this.type===r.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(e,t=new b){return e.vsub(this.position,t),this.quaternion.conjugate().vmult(t,t),t}vectorToLocalFrame(e,t=new b){return this.quaternion.conjugate().vmult(e,t),t}pointToWorldFrame(e,t=new b){return this.quaternion.vmult(e,t),t.vadd(this.position,t),t}vectorToWorldFrame(e,t=new b){return this.quaternion.vmult(e,t),t}addShape(e,t,i){let n=new b,s=new vt;return t&&n.copy(t),i&&s.copy(i),this.shapes.push(e),this.shapeOffsets.push(n),this.shapeOrientations.push(s),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=this,this}removeShape(e){let t=this.shapes.indexOf(e);return t===-1?(console.warn("Shape does not belong to the body"),this):(this.shapes.splice(t,1),this.shapeOffsets.splice(t,1),this.shapeOrientations.splice(t,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=null,this)}updateBoundingRadius(){let e=this.shapes,t=this.shapeOffsets,i=e.length,n=0;for(let s=0;s!==i;s++){let o=e[s];o.updateBoundingSphereRadius();let a=t[s].length(),l=o.boundingSphereRadius;a+l>n&&(n=a+l)}this.boundingRadius=n}updateAABB(){let e=this.shapes,t=this.shapeOffsets,i=this.shapeOrientations,n=e.length,s=P0,o=I0,a=this.quaternion,l=this.aabb,c=N0;for(let u=0;u!==n;u++){let h=e[u];a.vmult(t[u],s),s.vadd(this.position,s),a.mult(i[u],o),h.calculateWorldAABB(s,o,c.lowerBound,c.upperBound),u===0?l.copy(c):l.extend(c)}this.aabbNeedsUpdate=!1}updateInertiaWorld(e){let t=this.invInertia;if(!(t.x===t.y&&t.y===t.z&&!e)){let i=k0,n=O0;i.setRotationFromQuaternion(this.quaternion),i.transpose(n),i.scale(t,i),i.mmult(n,this.invInertiaWorld)}}applyForce(e,t=new b){if(this.type!==r.DYNAMIC)return;this.sleepState===r.SLEEPING&&this.wakeUp();let i=z0;t.cross(e,i),this.force.vadd(e,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(e,t=new b){if(this.type!==r.DYNAMIC)return;let i=V0,n=U0;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,n),this.applyForce(i,n)}applyTorque(e){this.type===r.DYNAMIC&&(this.sleepState===r.SLEEPING&&this.wakeUp(),this.torque.vadd(e,this.torque))}applyImpulse(e,t=new b){if(this.type!==r.DYNAMIC)return;this.sleepState===r.SLEEPING&&this.wakeUp();let i=t,n=H0;n.copy(e),n.scale(this.invMass,n),this.velocity.vadd(n,this.velocity);let s=G0;i.cross(e,s),this.invInertiaWorld.vmult(s,s),this.angularVelocity.vadd(s,this.angularVelocity)}applyLocalImpulse(e,t=new b){if(this.type!==r.DYNAMIC)return;let i=q0,n=W0;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,n),this.applyImpulse(i,n)}updateMassProperties(){let e=$0;this.invMass=this.mass>0?1/this.mass:0;let t=this.inertia,i=this.fixedRotation;this.updateAABB(),e.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),Fc.calculateInertia(e,this.mass,t),this.invInertia.set(t.x>0&&!i?1/t.x:0,t.y>0&&!i?1/t.y:0,t.z>0&&!i?1/t.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(e,t){let i=new b;return e.vsub(this.position,i),this.angularVelocity.cross(i,t),this.velocity.vadd(t,t),t}integrate(e,t,i){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),!(this.type===r.DYNAMIC||this.type===r.KINEMATIC)||this.sleepState===r.SLEEPING)return;let n=this.velocity,s=this.angularVelocity,o=this.position,a=this.force,l=this.torque,c=this.quaternion,u=this.invMass,h=this.invInertiaWorld,d=this.linearFactor,p=u*e;n.x+=a.x*p*d.x,n.y+=a.y*p*d.y,n.z+=a.z*p*d.z;let m=h.elements,y=this.angularFactor,x=l.x*y.x,g=l.y*y.y,f=l.z*y.z;s.x+=e*(m[0]*x+m[1]*g+m[2]*f),s.y+=e*(m[3]*x+m[4]*g+m[5]*f),s.z+=e*(m[6]*x+m[7]*g+m[8]*f),o.x+=n.x*e,o.y+=n.y*e,o.z+=n.z*e,c.integrate(this.angularVelocity,e,this.angularFactor,c),t&&(i?c.normalizeFast():c.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}};De.idCounter=0;De.COLLIDE_EVENT_NAME="collide";De.DYNAMIC=Uc.DYNAMIC;De.STATIC=Uc.STATIC;De.KINEMATIC=Uc.KINEMATIC;De.AWAKE=Hc.AWAKE;De.SLEEPY=Hc.SLEEPY;De.SLEEPING=Hc.SLEEPING;De.wakeupEvent={type:"wakeup"};De.sleepyEvent={type:"sleepy"};De.sleepEvent={type:"sleep"};var P0=new b,I0=new vt,N0=new Zt,k0=new Di,O0=new Di,z0=new b,V0=new b,U0=new b,H0=new b,G0=new b,q0=new b,W0=new b,$0=new b,Lc=class{constructor(){this.world=void 0,this.useBoundingBoxes=void 0,this.dirty=void 0,this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(e,t,i){throw new Error("collisionPairs not implemented for this BroadPhase class!")}needBroadphaseCollision(e,t){return!(!(e.collisionFilterGroup&t.collisionFilterMask)||!(t.collisionFilterGroup&e.collisionFilterMask)||(e.type&De.STATIC||e.sleepState===De.SLEEPING)&&(t.type&De.STATIC||t.sleepState===De.SLEEPING))}intersectionTest(e,t,i,n){this.useBoundingBoxes?this.doBoundingBoxBroadphase(e,t,i,n):this.doBoundingSphereBroadphase(e,t,i,n)}doBoundingSphereBroadphase(e,t,i,n){let s=j0;t.position.vsub(e.position,s);let o=(e.boundingRadius+t.boundingRadius)**2;s.lengthSquared()i.lengthSquared()}aabbQuery(e,t,i){return console.warn(".aabbQuery is not implemented in this Broadphase subclass."),[]}},j0=new b,X0={keys:[]},Y0=[],Z0=[];var lS=new b,gr=class extends Lc{constructor(){super()}collisionPairs(e,t,i){let n=e.bodies,s=n.length,o,a;for(let l=0;l!==s;l++)for(let c=0;c!==l;c++)o=n[l],a=n[c],this.needBroadphaseCollision(o,a)&&this.intersectionTest(o,a,t,i)}aabbQuery(e,t,i=[]){for(let n=0;n{}}intersectWorld(e,t){return this.mode=t.mode||r.ANY,this.result=t.result||new yr,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask<"u"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup<"u"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse<"u"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(Kd),Tc.length=0,e.broadphase.aabbQuery(e,Kd,Tc),this.intersectBodies(Tc),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());let i=this.checkCollisionResponse;if(i&&!e.collisionResponse||!(this.collisionFilterGroup&e.collisionFilterMask)||!(e.collisionFilterGroup&this.collisionFilterMask))return;let n=J0,s=K0;for(let o=0,a=e.shapes.length;oe.boundingSphereRadius)return;let a=this[e.type];a&&a.call(this,e,t,i,n,e)}_intersectBox(e,t,i,n,s){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,n,s)}_intersectPlane(e,t,i,n,s){let o=this.from,a=this.to,l=this.direction,c=new b(0,0,1);t.vmult(c,c);let u=new b;o.vsub(i,u);let h=u.dot(c);a.vsub(i,u);let d=u.dot(c);if(h*d>0||o.distanceTo(a)=0&&y<=1&&(o.lerp(a,y,p),p.vsub(i,m),m.normalize(),this.reportIntersection(m,p,s,n,-1)),this.result.shouldStop)return;x>=0&&x<=1&&(o.lerp(a,x,p),p.vsub(i,m),m.normalize(),this.reportIntersection(m,p,s,n,-1))}}_intersectConvex(e,t,i,n,s,o){let a=ny,l=ep,c=o&&o.faceList||null,u=e.faces,h=e.vertices,d=e.faceNormals,p=this.direction,m=this.from,y=this.to,x=m.distanceTo(y),g=c?c.length:u.length,f=this.result;for(let E=0;!f.shouldStop&&Ex||this.reportIntersection(a,Ut,s,n,w)}}}}_intersectTrimesh(e,t,i,n,s,o){let a=sy,l=uy,c=hy,u=ep,h=ry,d=oy,p=ay,m=cy,y=ly,x=e.indices;e.vertices;let g=this.from,f=this.to,E=this.direction;c.position.copy(i),c.quaternion.copy(t),Ge.vectorToLocalFrame(i,t,E,h),Ge.pointToLocalFrame(i,t,g,d),Ge.pointToLocalFrame(i,t,f,p),p.x*=e.scale.x,p.y*=e.scale.y,p.z*=e.scale.z,d.x*=e.scale.x,d.y*=e.scale.y,d.z*=e.scale.z,p.vsub(d,h),h.normalize();let w=d.distanceSquared(p);e.tree.rayQuery(this,c,l);for(let _=0,M=l.length;!this.result.shouldStop&&_!==M;_++){let T=l[_];e.getNormal(T,a),e.getVertex(x[T*3],ci),ci.vsub(d,u);let z=h.dot(a),W=a.dot(u)/z;if(W<0)continue;h.scale(W,Ut),Ut.vadd(d,Ut),e.getVertex(x[T*3+1],Si),e.getVertex(x[T*3+2],Mi);let A=Ut.distanceSquared(d);!(r.pointInTriangle(Ut,Si,ci,Mi)||r.pointInTriangle(Ut,ci,Si,Mi))||A>w||(Ge.vectorToWorldFrame(t,a,y),Ge.pointToWorldFrame(i,t,Ut,m),this.reportIntersection(y,m,s,n,T))}l.length=0}reportIntersection(e,t,i,n,s){let o=this.from,a=this.to,l=o.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof s<"u"?s:-1,this.mode){case r.ALL:this.hasHit=!0,c.set(o,a,e,t,i,n,l),c.hasHit=!0,this.callback(c);break;case r.CLOSEST:(l=0&&(h=s*c-o*a)>=0&&u+hT.maxForce&&(p=T.maxForce-x),E[M]+=p,m+=p>0?p:-p,T.addToWlambda(p)}if(m*me;)t.pop();for(;t.length=0&&u.restitution>=0&&(a.restitution=c.restitution*u.restitution),a.si=s||i,a.sj=o||n,a}createFrictionEquationsFromContact(e,t){let i=e.bi,n=e.bj,s=e.si,o=e.sj,a=this.world,l=this.currentContactMaterial,c=l.friction,u=s.material||i.material,h=o.material||n.material;if(u&&h&&u.friction>=0&&h.friction>=0&&(c=u.friction*h.friction),c>0){let d=c*a.gravity.length(),p=i.invMass+n.invMass;p>0&&(p=1/p);let m=this.frictionEquationPool,y=m.length?m.pop():new jo(i,n,d*p),x=m.length?m.pop():new jo(i,n,d*p);return y.bi=x.bi=i,y.bj=x.bj=n,y.minForce=x.minForce=-d*p,y.maxForce=x.maxForce=d*p,y.ri.copy(e.ri),y.rj.copy(e.rj),x.ri.copy(e.ri),x.rj.copy(e.rj),e.ni.tangents(y.t,x.t),y.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,a.dt),x.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,a.dt),y.enabled=x.enabled=e.enabled,t.push(y,x),!0}return!1}createFrictionFromAverage(e){let t=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(t,this.frictionResult)||e===1)return;let i=this.frictionResult[this.frictionResult.length-2],n=this.frictionResult[this.frictionResult.length-1];In.setZero(),ss.setZero(),rs.setZero();let s=t.bi;t.bj;for(let a=0;a!==e;a++)t=this.result[this.result.length-1-a],t.bi!==s?(In.vadd(t.ni,In),ss.vadd(t.ri,ss),rs.vadd(t.rj,rs)):(In.vsub(t.ni,In),ss.vadd(t.rj,ss),rs.vadd(t.ri,rs));let o=1/e;ss.scale(o,i.ri),rs.scale(o,i.rj),n.ri.copy(i.ri),n.rj.copy(i.rj),In.normalize(),In.tangents(i.t,n.t)}getContacts(e,t,i,n,s,o,a){this.contactPointPool=s,this.frictionEquationPool=a,this.result=n,this.frictionResult=o;let l=Cy,c=Ry,u=Dy,h=Ty;for(let d=0,p=e.length;d!==p;d++){let m=e[d],y=t[d],x=null;m.material&&y.material&&(x=i.getContactMaterial(m.material,y.material)||null);let g=m.type&De.KINEMATIC&&y.type&De.STATIC||m.type&De.STATIC&&y.type&De.KINEMATIC||m.type&De.KINEMATIC&&y.type&De.KINEMATIC;for(let f=0;fE.boundingSphereRadius+_.boundingSphereRadius)continue;let M=null;E.material&&_.material&&(M=i.getContactMaterial(E.material,_.material)||null),this.currentContactMaterial=M||x||i.defaultContactMaterial;let T=E.type|_.type,z=this[T];if(z){let W=!1;E.type<_.type?W=z.call(this,E,_,u,h,l,c,m,y,E,_,g):W=z.call(this,_,E,h,u,c,l,y,m,E,_,g),W&&g&&(i.shapeOverlapKeeper.set(E.id,_.id),i.bodyOverlapKeeper.set(m.id,y.id))}}}}}sphereSphere(e,t,i,n,s,o,a,l,c,u,h){if(h)return i.distanceSquared(n)<(e.radius+t.radius)**2;let d=this.createContactEquation(a,l,e,t,c,u);n.vsub(i,d.ni),d.ni.normalize(),d.ri.copy(d.ni),d.rj.copy(d.ni),d.ri.scale(e.radius,d.ri),d.rj.scale(-t.radius,d.rj),d.ri.vadd(i,d.ri),d.ri.vsub(a.position,d.ri),d.rj.vadd(n,d.rj),d.rj.vsub(l.position,d.rj),this.result.push(d),this.createFrictionEquationsFromContact(d,this.frictionResult)}spherePlane(e,t,i,n,s,o,a,l,c,u,h){let d=this.createContactEquation(a,l,e,t,c,u);if(d.ni.set(0,0,1),o.vmult(d.ni,d.ni),d.ni.negate(d.ni),d.ni.normalize(),d.ni.scale(e.radius,d.ri),i.vsub(n,Uo),d.ni.scale(d.ni.dot(Uo),rp),Uo.vsub(rp,d.rj),-Uo.dot(d.ni)<=e.radius){if(h)return!0;let p=d.ri,m=d.rj;p.vadd(i,p),p.vsub(a.position,p),m.vadd(n,m),m.vsub(l.position,m),this.result.push(d),this.createFrictionEquationsFromContact(d,this.frictionResult)}}boxBox(e,t,i,n,s,o,a,l,c,u,h){return e.convexPolyhedronRepresentation.material=e.material,t.convexPolyhedronRepresentation.material=t.material,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexConvex(e.convexPolyhedronRepresentation,t.convexPolyhedronRepresentation,i,n,s,o,a,l,e,t,h)}sphereBox(e,t,i,n,s,o,a,l,c,u,h){let d=this.v3pool,p=ix;i.vsub(n,Ho),t.getSideNormals(p,o);let m=e.radius,y=!1,x=sx,g=rx,f=ox,E=null,w=0,_=0,M=0,T=null;for(let C=0,N=p.length;C!==N&&y===!1;C++){let k=Qy;k.copy(p[C]);let V=k.length();k.normalize();let U=Ho.dot(k);if(U0){let q=ex,j=tx;q.copy(p[(C+1)%3]),j.copy(p[(C+2)%3]);let ne=q.length(),ae=j.length();q.normalize(),j.normalize();let H=Ho.dot(q),Te=Ho.dot(j);if(H-ne&&Te-ae){let ue=Math.abs(U-V-m);if((T===null||uee.boundingSphereRadius+t.boundingSphereRadius)&&e.findSeparatingAxis(t,i,s,n,o,m,d,p)){let y=[],x=_x;e.clipAgainstHull(i,s,t,n,o,m,-100,100,y);let g=0;for(let f=0;f!==y.length;f++){if(h)return!0;let E=this.createContactEquation(a,l,e,t,c,u),w=E.ri,_=E.rj;m.negate(E.ni),y[f].normal.negate(x),x.scale(y[f].depth,x),y[f].point.vadd(x,w),_.copy(y[f].point),w.vsub(i,w),_.vsub(n,_),w.vadd(i,w),w.vsub(a.position,w),_.vadd(n,_),_.vsub(l.position,_),this.result.push(E),g++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(E,this.frictionResult)}this.enableFrictionReduction&&g&&this.createFrictionFromAverage(g)}}sphereConvex(e,t,i,n,s,o,a,l,c,u,h){let d=this.v3pool;i.vsub(n,ax);let p=t.faceNormals,m=t.faces,y=t.vertices,x=e.radius,g=!1;for(let f=0;f!==y.length;f++){let E=y[f],w=hx;o.vmult(E,w),n.vadd(w,w);let _=ux;if(w.vsub(i,_),_.lengthSquared()0){let R=[];for(let S=0,B=_.length;S!==B;S++){let L=d.get();o.vmult(y[_[S]],L),n.vadd(L,L),R.push(L)}if(Ky(R,M,i)){if(h)return!0;g=!0;let S=this.createContactEquation(a,l,e,t,c,u);M.scale(-x,S.ri),M.negate(S.ni);let B=d.get();M.scale(-A,B);let L=d.get();M.scale(-x,L),i.vsub(n,S.rj),S.rj.vadd(L,S.rj),S.rj.vadd(B,S.rj),S.rj.vadd(n,S.rj),S.rj.vsub(l.position,S.rj),S.ri.vadd(i,S.ri),S.ri.vsub(a.position,S.ri),d.release(B),d.release(L),this.result.push(S),this.createFrictionEquationsFromContact(S,this.frictionResult);for(let C=0,N=R.length;C!==N;C++)d.release(R[C]);return}else for(let S=0;S!==_.length;S++){let B=d.get(),L=d.get();o.vmult(y[_[(S+1)%_.length]],B),o.vmult(y[_[(S+2)%_.length]],L),n.vadd(B,B),n.vadd(L,L);let C=lx;L.vsub(B,C);let N=cx;C.unit(N);let k=d.get(),V=d.get();i.vsub(B,V);let U=V.dot(N);N.scale(U,k),k.vadd(B,k);let q=d.get();if(k.vsub(i,q),U>0&&U*Ud.length||E>d[0].length)return;g<0&&(g=0),f<0&&(f=0),E<0&&(E=0),w<0&&(w=0),g>=d.length&&(g=d.length-1),f>=d.length&&(f=d.length-1),w>=d[0].length&&(w=d[0].length-1),E>=d[0].length&&(E=d[0].length-1);let _=[];t.getRectMinMax(g,E,f,w,_);let M=_[0],T=_[1];if(x.z-p>T||x.z+p2)return}}boxHeightfield(e,t,i,n,s,o,a,l,c,u,h){return e.convexPolyhedronRepresentation.material=e.material,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,this.convexHeightfield(e.convexPolyhedronRepresentation,t,i,n,s,o,a,l,e,t,h)}convexHeightfield(e,t,i,n,s,o,a,l,c,u,h){let d=t.data,p=t.elementSize,m=e.boundingSphereRadius,y=Fx,x=Lx,g=Rx;Ge.pointToLocalFrame(n,o,i,g);let f=Math.floor((g.x-m)/p)-1,E=Math.ceil((g.x+m)/p)+1,w=Math.floor((g.y-m)/p)-1,_=Math.ceil((g.y+m)/p)+1;if(E<0||_<0||f>d.length||w>d[0].length)return;f<0&&(f=0),E<0&&(E=0),w<0&&(w=0),_<0&&(_=0),f>=d.length&&(f=d.length-1),E>=d.length&&(E=d.length-1),_>=d[0].length&&(_=d[0].length-1),w>=d[0].length&&(w=d[0].length-1);let M=[];t.getRectMinMax(f,w,E,_,M);let T=M[0],z=M[1];if(!(g.z-m>z||g.z+m0&&L<0&&(x.vsub(d,g),y.copy(m),y.normalize(),C=g.dot(y),y.scale(C,g),g.vadd(d,g),g.distanceTo(x)0&&i===!0||u<=0&&i===!1){i===null&&(i=u>0);continue}else return!1}return!0}var Ho=new b,Qy=new b,ex=new b,tx=new b,ix=[new b,new b,new b,new b,new b,new b],nx=new b,sx=new b,rx=new b,ox=new b,ax=new b,lx=new b,cx=new b,ux=new b,hx=new b,dx=new b,px=new b,fx=new b,mx=new b,gx=new b,yx=new b,xx=new b,vx=new b,wx=new b,bx=new b,_x=new b,Ex=new b,Ax=new b,Sx=new b,Mx=new b,op=new vt,Dx=new b,Tx=new b,ap=new b,Cx=new b,Rx=new b,Fx=new b,Lx=[0],Bx=new b,Px=new b,Xo=class{constructor(){this.current=void 0,this.previous=void 0,this.current=[],this.previous=[]}getKey(e,t){if(tn[s];)s++;if(i!==n[s]){for(let o=n.length-1;o>=s;o--)n[o+1]=n[o];n[s]=i}}tick(){let e=this.current;this.current=this.previous,this.previous=e,this.current.length=0}getDiff(e,t){let i=this.current,n=this.previous,s=i.length,o=n.length,a=0;for(let l=0;ln[a];)a++;c=u===n[a],c||lp(e,u)}a=0;for(let l=0;li[a];)a++;c=i[a]===u,c||lp(t,u)}}};function lp(r,e){r.push((e&4294901760)>>16,e&65535)}var Vc=class{constructor(){this.data={keys:[]}}get(e,t){if(e>t){let i=t;t=e,e=i}return this.data[e+"-"+t]}set(e,t,i){if(e>t){let s=t;t=e,e=s}let n=e+"-"+t;this.get(e,t)||this.data.keys.push(n),this.data[n]=i}reset(){let e=this.data,t=e.keys;for(;t.length>0;){let i=t.pop();delete e[i]}}},Yo=class extends qo{constructor(e={}){super(),this.dt=void 0,this.allowSleep=void 0,this.contacts=void 0,this.frictionEquations=void 0,this.quatNormalizeSkip=void 0,this.quatNormalizeFast=void 0,this.time=void 0,this.stepnumber=void 0,this.default_dt=void 0,this.nextId=void 0,this.gravity=void 0,this.broadphase=void 0,this.bodies=void 0,this.hasActiveBodies=void 0,this.solver=void 0,this.constraints=void 0,this.narrowphase=void 0,this.collisionMatrix=void 0,this.collisionMatrixPrevious=void 0,this.bodyOverlapKeeper=void 0,this.shapeOverlapKeeper=void 0,this.materials=void 0,this.contactmaterials=void 0,this.contactMaterialTable=void 0,this.defaultMaterial=void 0,this.defaultContactMaterial=void 0,this.doProfiling=void 0,this.profile=void 0,this.accumulator=void 0,this.subsystems=void 0,this.addBodyEvent=void 0,this.removeBodyEvent=void 0,this.idToBodyMap=void 0,this.dt=-1,this.allowSleep=!!e.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=e.quatNormalizeSkip!==void 0?e.quatNormalizeSkip:0,this.quatNormalizeFast=e.quatNormalizeFast!==void 0?e.quatNormalizeFast:!1,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new b,e.gravity&&this.gravity.copy(e.gravity),this.broadphase=e.broadphase!==void 0?e.broadphase:new gr,this.bodies=[],this.hasActiveBodies=!1,this.solver=e.solver!==void 0?e.solver:new Nc,this.constraints=[],this.narrowphase=new zc(this),this.collisionMatrix=new Go,this.collisionMatrixPrevious=new Go,this.bodyOverlapKeeper=new Xo,this.shapeOverlapKeeper=new Xo,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new Vc,this.defaultMaterial=new cn("default"),this.defaultContactMaterial=new ln(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:"addBody",body:null},this.removeBodyEvent={type:"removeBody",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(e,t){return this.contactMaterialTable.get(e.id,t.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){let e=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=e,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(e){this.constraints.push(e)}removeConstraint(e){let t=this.constraints.indexOf(e);t!==-1&&this.constraints.splice(t,1)}rayTest(e,t,i){i instanceof yr?this.raycastClosest(e,t,{skipBackfaces:!0},i):this.raycastAll(e,t,{skipBackfaces:!0},i)}raycastAll(e,t,i={},n){return i.mode=ni.ALL,i.from=e,i.to=t,i.callback=n,Rc.intersectWorld(this,i)}raycastAny(e,t,i={},n){return i.mode=ni.ANY,i.from=e,i.to=t,i.result=n,Rc.intersectWorld(this,i)}raycastClosest(e,t,i={},n){return i.mode=ni.CLOSEST,i.from=e,i.to=t,i.result=n,Rc.intersectWorld(this,i)}addBody(e){this.bodies.includes(e)||(e.index=this.bodies.length,this.bodies.push(e),e.world=this,e.initPosition.copy(e.position),e.initVelocity.copy(e.velocity),e.timeLastSleepy=this.time,e instanceof De&&(e.initAngularVelocity.copy(e.angularVelocity),e.initQuaternion.copy(e.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=e,this.idToBodyMap[e.id]=e,this.dispatchEvent(this.addBodyEvent))}removeBody(e){e.world=null;let t=this.bodies.length-1,i=this.bodies,n=i.indexOf(e);if(n!==-1){i.splice(n,1);for(let s=0;s!==i.length;s++)i[s].index=s;this.collisionMatrix.setNumObjects(t),this.removeBodyEvent.body=e,delete this.idToBodyMap[e.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(e){return this.idToBodyMap[e]}getShapeById(e){let t=this.bodies;for(let i=0;i=e&&se*1e3)););this.accumulator=this.accumulator%e;let o=this.accumulator/e;for(let a=0;a!==this.bodies.length;a++){let l=this.bodies[a];l.previousPosition.lerp(l.position,o,l.interpolatedPosition),l.previousQuaternion.slerp(l.quaternion,o,l.interpolatedQuaternion),l.previousQuaternion.normalize()}this.time+=t}}internalStep(e){this.dt=e;let t=this.contacts,i=zx,n=Vx,s=this.numObjects(),o=this.bodies,a=this.solver,l=this.gravity,c=this.doProfiling,u=this.profile,h=De.DYNAMIC,d=-1/0,p=this.constraints,m=Ox;l.length();let y=l.x,x=l.y,g=l.z,f=0;for(c&&(d=At.now()),f=0;f!==s;f++){let S=o[f];if(S.type===h){let B=S.force,L=S.mass;B.x+=L*y,B.y+=L*x,B.z+=L*g}}for(let S=0,B=this.subsystems.length;S!==B;S++)this.subsystems[S].update();c&&(d=At.now()),i.length=0,n.length=0,this.broadphase.collisionPairs(this,i,n),c&&(u.broadphase=At.now()-d);let E=p.length;for(f=0;f!==E;f++){let S=p[f];if(!S.collideConnected)for(let B=i.length-1;B>=0;B-=1)(S.bodyA===i[B]&&S.bodyB===n[B]||S.bodyB===i[B]&&S.bodyA===n[B])&&(i.splice(B,1),n.splice(B,1))}this.collisionMatrixTick(),c&&(d=At.now());let w=kx,_=t.length;for(f=0;f!==_;f++)w.push(t[f]);t.length=0;let M=this.frictionEquations.length;for(f=0;f!==M;f++)m.push(this.frictionEquations[f]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(i,n,this,t,w,this.frictionEquations,m),c&&(u.narrowphase=At.now()-d),c&&(d=At.now()),f=0;f=0&&C.material.friction>=0&&L.material.friction*C.material.friction,L.material.restitution>=0&&C.material.restitution>=0&&(B.restitution=L.material.restitution*C.material.restitution)),a.addEquation(B),L.allowSleep&&L.type===De.DYNAMIC&&L.sleepState===De.SLEEPING&&C.sleepState===De.AWAKE&&C.type!==De.STATIC){let U=C.velocity.lengthSquared()+C.angularVelocity.lengthSquared(),q=C.sleepSpeedLimit**2;U>=q*2&&(L.wakeUpAfterNarrowphase=!0)}if(C.allowSleep&&C.type===De.DYNAMIC&&C.sleepState===De.SLEEPING&&L.sleepState===De.AWAKE&&L.type!==De.STATIC){let U=L.velocity.lengthSquared()+L.angularVelocity.lengthSquared(),q=L.sleepSpeedLimit**2;U>=q*2&&(C.wakeUpAfterNarrowphase=!0)}this.collisionMatrix.set(L,C,!0),this.collisionMatrixPrevious.get(L,C)||(dr.body=C,dr.contact=B,L.dispatchEvent(dr),dr.body=L,C.dispatchEvent(dr)),this.bodyOverlapKeeper.set(L.id,C.id),this.shapeOverlapKeeper.set(N.id,k.id)}for(this.emitContactEvents(),c&&(u.makeContactConstraints=At.now()-d,d=At.now()),f=0;f!==s;f++){let S=o[f];S.wakeUpAfterNarrowphase&&(S.wakeUp(),S.wakeUpAfterNarrowphase=!1)}for(E=p.length,f=0;f!==E;f++){let S=p[f];S.update();for(let B=0,L=S.equations.length;B!==L;B++){let C=S.equations[B];a.addEquation(C)}}a.solve(e,this),c&&(u.solve=At.now()-d),a.removeAllEquations();let z=Math.pow;for(f=0;f!==s;f++){let S=o[f];if(S.type&h){let B=z(1-S.linearDamping,e),L=S.velocity;L.scale(B,L);let C=S.angularVelocity;if(C){let N=z(1-S.angularDamping,e);C.scale(N,C)}}}for(this.dispatchEvent(Nx),f=0;f!==s;f++){let S=o[f];S.preStep&&S.preStep.call(S)}c&&(d=At.now());let A=this.stepnumber%(this.quatNormalizeSkip+1)===0,v=this.quatNormalizeFast;for(f=0;f!==s;f++)o[f].integrate(e,A,v);for(this.clearForces(),this.broadphase.dirty=!0,c&&(u.integrate=At.now()-d),this.stepnumber+=1,this.dispatchEvent(Ix),f=0;f!==s;f++){let S=o[f],B=S.postStep;B&&B.call(S)}let R=!0;if(this.allowSleep)for(R=!1,f=0;f!==s;f++){let S=o[f];S.sleepTick(this.time),S.sleepState!==De.SLEEPING&&(R=!0)}this.hasActiveBodies=R}emitContactEvents(){let e=this.hasAnyEventListener("beginContact"),t=this.hasAnyEventListener("endContact");if((e||t)&&this.bodyOverlapKeeper.getDiff(Oi,zi),e){for(let s=0,o=Oi.length;sDate.now()-r}var Ix={type:"postStep"},Nx={type:"preStep"},dr={type:De.COLLIDE_EVENT_NAME,body:null,contact:null},kx=[],Ox=[],zx=[],Vx=[],Oi=[],zi=[],pr={type:"beginContact",bodyA:null,bodyB:null},fr={type:"endContact",bodyA:null,bodyB:null},Vi={type:"beginShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Ui={type:"endShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null};var Gh="137";var Ux=0,Up=1,Hx=2;var Em=1,qh=2,Tr=3,Pr=0,wt=1,Bs=2,Am=1;var xn=0,Rr=1,Hp=2,Gp=3,qp=4,Gx=5,Ss=100,qx=101,Wx=102,Wp=103,$p=104,$x=200,jx=201,Xx=202,Yx=203,Sm=204,Mm=205,Zx=206,Jx=207,Kx=208,Qx=209,ev=210,tv=0,iv=1,nv=2,Cu=3,sv=4,rv=5,ov=6,av=7,rl=0,lv=1,cv=2,vn=0,uv=1,hv=2,dv=3,pv=4,fv=5,Dm=300,co=301,uo=302,Ru=303,Fu=304,ol=306,Wh=307,Lu=1e3,Qt=1001,Bu=1002,bt=1003,jp=1004;var Xp=1005;var Ft=1006,mv=1007;var al=1008;var wn=1009,gv=1010,yv=1011,Ir=1012,xv=1013,Ca=1014,Un=1015,Cs=1016,vv=1017,wv=1018,Rs=1020,bv=1021,_v=1022,kt=1023,Ev=1024,Av=1025,Gn=1026,Ps=1027,Sv=1028,Mv=1029,Dv=1030,Tv=1031,Cv=1033,qc=33776,Wc=33777,$c=33778,jc=33779,Yp=35840,Zp=35841,Jp=35842,Kp=35843,Rv=36196,Qp=37492,ef=37496,tf=37808,nf=37809,sf=37810,rf=37811,of=37812,af=37813,lf=37814,cf=37815,uf=37816,hf=37817,df=37818,pf=37819,ff=37820,mf=37821,gf=36492,Fv=2200,Lv=2201,Bv=2202,Ra=2300,Fa=2301,Xc=2302,Ms=2400,Ds=2401,La=2402,$h=2500,Tm=2501,Pv=0;var An=3e3,it=3001,Iv=3200,Nv=3201,Xs=0,kv=1;var Yc=7680;var Ov=519,Nr=35044,Ba=35048;var yf="300 es",Pu=1035,Yi=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let s=n.indexOf(t);s!==-1&&n.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let i=this._listeners[e.type];if(i!==void 0){e.target=this;let n=i.slice(0);for(let s=0,o=n.length;s>8&255]+Dt[r>>16&255]+Dt[r>>24&255]+"-"+Dt[e&255]+Dt[e>>8&255]+"-"+Dt[e>>16&15|64]+Dt[e>>24&255]+"-"+Dt[t&63|128]+Dt[t>>8&255]+"-"+Dt[t>>16&255]+Dt[t>>24&255]+Dt[i&255]+Dt[i>>8&255]+Dt[i>>16&255]+Dt[i>>24&255]).toUpperCase()}function Ht(r,e,t){return Math.max(e,Math.min(t,r))}function zv(r,e){return(r%e+e)%e}function Jc(r,e,t){return(1-t)*r+t*e}function xf(r){return(r&r-1)===0&&r!==0}function Vv(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}var ee=class{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),n=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*i-o*n+e.x,this.y=s*n+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}};ee.prototype.isVector2=!0;var _t=class{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,n,s,o,a,l,c){let u=this.elements;return u[0]=e,u[1]=n,u[2]=a,u[3]=t,u[4]=s,u[5]=l,u[6]=i,u[7]=o,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,n=t.elements,s=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],u=i[4],h=i[7],d=i[2],p=i[5],m=i[8],y=n[0],x=n[3],g=n[6],f=n[1],E=n[4],w=n[7],_=n[2],M=n[5],T=n[8];return s[0]=o*y+a*f+l*_,s[3]=o*x+a*E+l*M,s[6]=o*g+a*w+l*T,s[1]=c*y+u*f+h*_,s[4]=c*x+u*E+h*M,s[7]=c*g+u*w+h*T,s[2]=d*y+p*f+m*_,s[5]=d*x+p*E+m*M,s[8]=d*g+p*w+m*T,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],n=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8];return t*o*u-t*a*c-i*s*u+i*a*l+n*s*c-n*o*l}invert(){let e=this.elements,t=e[0],i=e[1],n=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=u*o-a*c,d=a*l-u*s,p=c*s-o*l,m=t*h+i*d+n*p;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let y=1/m;return e[0]=h*y,e[1]=(n*c-u*i)*y,e[2]=(a*i-n*o)*y,e[3]=d*y,e[4]=(u*t-n*l)*y,e[5]=(n*s-a*t)*y,e[6]=p*y,e[7]=(i*l-c*t)*y,e[8]=(o*t-i*s)*y,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,n,s,o,a){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-n*c,n*l,-n*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){let i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=t,i[4]*=t,i[7]*=t,this}rotate(e){let t=Math.cos(e),i=Math.sin(e),n=this.elements,s=n[0],o=n[3],a=n[6],l=n[1],c=n[4],u=n[7];return n[0]=t*s+i*l,n[3]=t*o+i*c,n[6]=t*a+i*u,n[1]=-i*s+t*l,n[4]=-i*o+t*c,n[7]=-i*a+t*u,this}translate(e,t){let i=this.elements;return i[0]+=e*i[2],i[3]+=e*i[5],i[6]+=e*i[8],i[1]+=t*i[2],i[4]+=t*i[5],i[7]+=t*i[8],this}equals(e){let t=this.elements,i=e.elements;for(let n=0;n<9;n++)if(t[n]!==i[n])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};_t.prototype.isMatrix3=!0;function Cm(r){for(let e=r.length-1;e>=0;--e)if(r[e]>65535)return!0;return!1}function kr(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}var Rm={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ui={h:0,s:0,l:0},Zo={h:0,s:0,l:0};function Kc(r,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+(e-r)*6*t:t<1/2?e:t<2/3?r+(e-r)*6*(2/3-t):r}function Fs(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Qc(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var ye=class{constructor(e,t,i){return t===void 0&&i===void 0?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,this}setRGB(e,t,i){return this.r=e,this.g=t,this.b=i,this}setHSL(e,t,i){if(e=zv(e,1),t=Ht(t,0,1),i=Ht(i,0,1),t===0)this.r=this.g=this.b=i;else{let n=i<=.5?i*(1+t):i+t-i*t,s=2*i-n;this.r=Kc(s,n,e+1/3),this.g=Kc(s,n,e),this.b=Kc(s,n,e-1/3)}return this}setStyle(e){function t(n){n!==void 0&&parseFloat(n)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let n,s=i[1],o=i[2];switch(s){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(n[1],10))/255,this.g=Math.min(255,parseInt(n[2],10))/255,this.b=Math.min(255,parseInt(n[3],10))/255,t(n[4]),this;if(n=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(n[1],10))/100,this.g=Math.min(100,parseInt(n[2],10))/100,this.b=Math.min(100,parseInt(n[3],10))/100,t(n[4]),this;break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let a=parseFloat(n[1])/360,l=parseInt(n[2],10)/100,c=parseInt(n[3],10)/100;return t(n[4]),this.setHSL(a,l,c)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let n=i[1],s=n.length;if(s===3)return this.r=parseInt(n.charAt(0)+n.charAt(0),16)/255,this.g=parseInt(n.charAt(1)+n.charAt(1),16)/255,this.b=parseInt(n.charAt(2)+n.charAt(2),16)/255,this;if(s===6)return this.r=parseInt(n.charAt(0)+n.charAt(1),16)/255,this.g=parseInt(n.charAt(2)+n.charAt(3),16)/255,this.b=parseInt(n.charAt(4)+n.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this}setColorName(e){let t=Rm[e.toLowerCase()];return t!==void 0?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Fs(e.r),this.g=Fs(e.g),this.b=Fs(e.b),this}copyLinearToSRGB(e){return this.r=Qc(e.r),this.g=Qc(e.g),this.b=Qc(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return this.r*255<<16^this.g*255<<8^this.b*255<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(e){let t=this.r,i=this.g,n=this.b,s=Math.max(t,i,n),o=Math.min(t,i,n),a,l,c=(o+s)/2;if(o===s)a=0,l=0;else{let u=s-o;switch(l=c<=.5?u/(s+o):u/(2-s-o),s){case t:a=(i-n)/u+(i"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{os===void 0&&(os=kr("canvas")),os.width=e.width,os.height=e.height;let i=os.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=os}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){let t=kr("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let n=i.getImageData(0,0,e.width,e.height),s=n.data;for(let o=0;o1)switch(this.wrapS){case Lu:e.x=e.x-Math.floor(e.x);break;case Qt:e.x=e.x<0?0:1;break;case Bu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Lu:e.y=e.y-Math.floor(e.y);break;case Qt:e.y=e.y<0?0:1;break;case Bu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&this.version++}};ct.DEFAULT_IMAGE=void 0;ct.DEFAULT_MAPPING=Dm;ct.prototype.isTexture=!0;function eu(r){return typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&r instanceof ImageBitmap?Zi.getDataURL(r):r.data?{data:Array.prototype.slice.call(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var je=class{constructor(e=0,t=0,i=0,n=1){this.x=e,this.y=t,this.z=i,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,n=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*n+o[12]*s,this.y=o[1]*t+o[5]*i+o[9]*n+o[13]*s,this.z=o[2]*t+o[6]*i+o[10]*n+o[14]*s,this.w=o[3]*t+o[7]*i+o[11]*n+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,n,s,l=e.elements,c=l[0],u=l[4],h=l[8],d=l[1],p=l[5],m=l[9],y=l[2],x=l[6],g=l[10];if(Math.abs(u-d)<.01&&Math.abs(h-y)<.01&&Math.abs(m-x)<.01){if(Math.abs(u+d)<.1&&Math.abs(h+y)<.1&&Math.abs(m+x)<.1&&Math.abs(c+p+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let E=(c+1)/2,w=(p+1)/2,_=(g+1)/2,M=(u+d)/4,T=(h+y)/4,z=(m+x)/4;return E>w&&E>_?E<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(E),n=M/i,s=T/i):w>_?w<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(w),i=M/n,s=z/n):_<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(_),i=T/s,n=z/s),this.set(i,n,s,t),this}let f=Math.sqrt((x-m)*(x-m)+(h-y)*(h-y)+(d-u)*(d-u));return Math.abs(f)<.001&&(f=1),this.x=(x-m)/f,this.y=(h-y)/f,this.z=(d-u)/f,this.w=Math.acos((c+p+g-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};je.prototype.isVector4=!0;var Gt=class extends Yi{constructor(e,t,i={}){super(),this.width=e,this.height=t,this.depth=1,this.scissor=new je(0,0,e,t),this.scissorTest=!1,this.viewport=new je(0,0,e,t),this.texture=new ct(void 0,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.image={width:e,height:t,depth:1},this.texture.generateMipmaps=i.generateMipmaps!==void 0?i.generateMipmaps:!1,this.texture.internalFormat=i.internalFormat!==void 0?i.internalFormat:null,this.texture.minFilter=i.minFilter!==void 0?i.minFilter:Ft,this.depthBuffer=i.depthBuffer!==void 0?i.depthBuffer:!0,this.stencilBuffer=i.stencilBuffer!==void 0?i.stencilBuffer:!1,this.depthTexture=i.depthTexture!==void 0?i.depthTexture:null}setTexture(e){e.image={width:this.width,height:this.height,depth:this.depth},this.texture=e}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.image=Object.assign({},e.texture.image),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this}dispose(){this.dispatchEvent({type:"dispose"})}};Gt.prototype.isWebGLRenderTarget=!0;var Nu=class extends Gt{constructor(e,t,i){super(e,t);let n=this.texture;this.texture=[];for(let s=0;s=0?1:-1,E=1-g*g;if(E>Number.EPSILON){let _=Math.sqrt(E),M=Math.atan2(_,g*f);x=Math.sin(x*M)/_,a=Math.sin(a*M)/_}let w=a*f;if(l=l*x+d*w,c=c*x+p*w,u=u*x+m*w,h=h*x+y*w,x===1-a){let _=1/Math.sqrt(l*l+c*c+u*u+h*h);l*=_,c*=_,u*=_,h*=_}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=h}static multiplyQuaternionsFlat(e,t,i,n,s,o){let a=i[n],l=i[n+1],c=i[n+2],u=i[n+3],h=s[o],d=s[o+1],p=s[o+2],m=s[o+3];return e[t]=a*m+u*h+l*p-c*d,e[t+1]=l*m+u*d+c*h-a*p,e[t+2]=c*m+u*p+a*d-l*h,e[t+3]=u*m-a*h-l*d-c*p,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");let i=e._x,n=e._y,s=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),u=a(n/2),h=a(s/2),d=l(i/2),p=l(n/2),m=l(s/2);switch(o){case"XYZ":this._x=d*u*h+c*p*m,this._y=c*p*h-d*u*m,this._z=c*u*m+d*p*h,this._w=c*u*h-d*p*m;break;case"YXZ":this._x=d*u*h+c*p*m,this._y=c*p*h-d*u*m,this._z=c*u*m-d*p*h,this._w=c*u*h+d*p*m;break;case"ZXY":this._x=d*u*h-c*p*m,this._y=c*p*h+d*u*m,this._z=c*u*m+d*p*h,this._w=c*u*h-d*p*m;break;case"ZYX":this._x=d*u*h-c*p*m,this._y=c*p*h+d*u*m,this._z=c*u*m-d*p*h,this._w=c*u*h+d*p*m;break;case"YZX":this._x=d*u*h+c*p*m,this._y=c*p*h+d*u*m,this._z=c*u*m-d*p*h,this._w=c*u*h-d*p*m;break;case"XZY":this._x=d*u*h-c*p*m,this._y=c*p*h-d*u*m,this._z=c*u*m+d*p*h,this._w=c*u*h+d*p*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],n=t[4],s=t[8],o=t[1],a=t[5],l=t[9],c=t[2],u=t[6],h=t[10],d=i+a+h;if(d>0){let p=.5/Math.sqrt(d+1);this._w=.25/p,this._x=(u-l)*p,this._y=(s-c)*p,this._z=(o-n)*p}else if(i>a&&i>h){let p=2*Math.sqrt(1+i-a-h);this._w=(u-l)/p,this._x=.25*p,this._y=(n+o)/p,this._z=(s+c)/p}else if(a>h){let p=2*Math.sqrt(1+a-i-h);this._w=(s-c)/p,this._x=(n+o)/p,this._y=.25*p,this._z=(l+u)/p}else{let p=2*Math.sqrt(1+h-i-a);this._w=(o-n)/p,this._x=(s+c)/p,this._y=(l+u)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ht(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let n=Math.min(1,t/i);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,n=e._y,s=e._z,o=e._w,a=t._x,l=t._y,c=t._z,u=t._w;return this._x=i*u+o*a+n*c-s*l,this._y=n*u+o*l+s*a-i*c,this._z=s*u+o*c+i*l-n*a,this._w=o*u-i*a-n*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let i=this._x,n=this._y,s=this._z,o=this._w,a=o*e._w+i*e._x+n*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=n,this._z=s,this;let l=1-a*a;if(l<=Number.EPSILON){let p=1-t;return this._w=p*o+t*this._w,this._x=p*i+t*this._x,this._y=p*n+t*this._y,this._z=p*s+t*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),u=Math.atan2(c,a),h=Math.sin((1-t)*u)/c,d=Math.sin(t*u)/c;return this._w=o*h+this._w*d,this._x=i*h+this._x*d,this._y=n*h+this._y*d,this._z=s*h+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),n=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(t*Math.cos(n),i*Math.sin(s),i*Math.cos(s),t*Math.sin(n))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};Lt.prototype.isQuaternion=!0;var P=class{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(vf.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(vf.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,n=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*n,this.y=s[1]*t+s[4]*i+s[7]*n,this.z=s[2]*t+s[5]*i+s[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,n=this.z,s=e.elements,o=1/(s[3]*t+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*n+s[12])*o,this.y=(s[1]*t+s[5]*i+s[9]*n+s[13])*o,this.z=(s[2]*t+s[6]*i+s[10]*n+s[14])*o,this}applyQuaternion(e){let t=this.x,i=this.y,n=this.z,s=e.x,o=e.y,a=e.z,l=e.w,c=l*t+o*n-a*i,u=l*i+a*t-s*n,h=l*n+s*i-o*t,d=-s*t-o*i-a*n;return this.x=c*l+d*-s+u*-a-h*-o,this.y=u*l+d*-o+h*-s-c*-a,this.z=h*l+d*-a+c*-o-u*-s,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,n=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*n,this.y=s[1]*t+s[5]*i+s[9]*n,this.z=s[2]*t+s[6]*i+s[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e,t){return t!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,n=e.y,s=e.z,o=t.x,a=t.y,l=t.z;return this.x=n*l-s*a,this.y=s*o-i*l,this.z=i*a-n*o,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return tu.copy(this).projectOnVector(e),this.sub(tu)}reflect(e){return this.sub(tu.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(Ht(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};P.prototype.isVector3=!0;var tu=new P,vf=new Lt,ei=class{constructor(e=new P(1/0,1/0,1/0),t=new P(-1/0,-1/0,-1/0)){this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,n=1/0,s=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.length;ls&&(s=u),h>o&&(o=h),d>a&&(a=d)}return this.min.set(t,i,n),this.max.set(s,o,a),this}setFromBufferAttribute(e){let t=1/0,i=1/0,n=1/0,s=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.count;ls&&(s=u),h>o&&(o=h),d>a&&(a=d)}return this.min.set(t,i,n),this.max.set(s,o,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,kn),kn.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(vr),Jo.subVectors(this.max,vr),as.subVectors(e.a,vr),ls.subVectors(e.b,vr),cs.subVectors(e.c,vr),un.subVectors(ls,as),hn.subVectors(cs,ls),On.subVectors(as,cs);let t=[0,-un.z,un.y,0,-hn.z,hn.y,0,-On.z,On.y,un.z,0,-un.x,hn.z,0,-hn.x,On.z,0,-On.x,-un.y,un.x,0,-hn.y,hn.x,0,-On.y,On.x,0];return!nu(t,as,ls,cs,Jo)||(t=[1,0,0,0,1,0,0,0,1],!nu(t,as,ls,cs,Jo))?!1:(Ko.crossVectors(un,hn),t=[Ko.x,Ko.y,Ko.z],nu(t,as,ls,cs,Jo))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return kn.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(kn).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Gi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Gi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Gi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Gi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Gi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Gi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Gi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Gi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Gi),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};ei.prototype.isBox3=!0;var Gi=[new P,new P,new P,new P,new P,new P,new P,new P],kn=new P,iu=new ei,as=new P,ls=new P,cs=new P,un=new P,hn=new P,On=new P,vr=new P,Jo=new P,Ko=new P,zn=new P;function nu(r,e,t,i,n){for(let s=0,o=r.length-3;s<=o;s+=3){zn.fromArray(r,s);let a=n.x*Math.abs(zn.x)+n.y*Math.abs(zn.y)+n.z*Math.abs(zn.z),l=e.dot(zn),c=t.dot(zn),u=i.dot(zn);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>a)return!1}return!0}var Hv=new ei,wf=new P,Qo=new P,su=new P,Ri=class{constructor(e=new P,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let i=this.center;t!==void 0?i.copy(t):Hv.setFromPoints(e).getCenter(i);let n=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){su.subVectors(e,this.center);let t=su.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),n=(i-this.radius)*.5;this.center.add(su.multiplyScalar(n/i)),this.radius+=n}return this}union(e){return this.center.equals(e.center)===!0?Qo.set(0,0,1).multiplyScalar(e.radius):Qo.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(wf.copy(e.center).add(Qo)),this.expandByPoint(wf.copy(e.center).sub(Qo)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},qi=new P,ru=new P,ea=new P,dn=new P,ou=new P,ta=new P,au=new P,Sn=class{constructor(e=new P,t=new P(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,qi)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=qi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(qi.copy(this.direction).multiplyScalar(t).add(this.origin),qi.distanceToSquared(e))}distanceSqToSegment(e,t,i,n){ru.copy(e).add(t).multiplyScalar(.5),ea.copy(t).sub(e).normalize(),dn.copy(this.origin).sub(ru);let s=e.distanceTo(t)*.5,o=-this.direction.dot(ea),a=dn.dot(this.direction),l=-dn.dot(ea),c=dn.lengthSq(),u=Math.abs(1-o*o),h,d,p,m;if(u>0)if(h=o*l-a,d=o*a-l,m=s*u,h>=0)if(d>=-m)if(d<=m){let y=1/u;h*=y,d*=y,p=h*(h+o*d+2*a)+d*(o*h+d+2*l)+c}else d=s,h=Math.max(0,-(o*d+a)),p=-h*h+d*(d+2*l)+c;else d=-s,h=Math.max(0,-(o*d+a)),p=-h*h+d*(d+2*l)+c;else d<=-m?(h=Math.max(0,-(-o*s+a)),d=h>0?-s:Math.min(Math.max(-s,-l),s),p=-h*h+d*(d+2*l)+c):d<=m?(h=0,d=Math.min(Math.max(-s,-l),s),p=d*(d+2*l)+c):(h=Math.max(0,-(o*s+a)),d=h>0?s:Math.min(Math.max(-s,-l),s),p=-h*h+d*(d+2*l)+c);else d=o>0?-s:s,h=Math.max(0,-(o*d+a)),p=-h*h+d*(d+2*l)+c;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(ea).multiplyScalar(d).add(ru),p}intersectSphere(e,t){qi.subVectors(e.center,this.origin);let i=qi.dot(this.direction),n=qi.dot(qi)-i*i,s=e.radius*e.radius;if(n>s)return null;let o=Math.sqrt(s-n),a=i-o,l=i+o;return a<0&&l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,n,s,o,a,l,c=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,d=this.origin;return c>=0?(i=(e.min.x-d.x)*c,n=(e.max.x-d.x)*c):(i=(e.max.x-d.x)*c,n=(e.min.x-d.x)*c),u>=0?(s=(e.min.y-d.y)*u,o=(e.max.y-d.y)*u):(s=(e.max.y-d.y)*u,o=(e.min.y-d.y)*u),i>o||s>n||((s>i||i!==i)&&(i=s),(o=0?(a=(e.min.z-d.z)*h,l=(e.max.z-d.z)*h):(a=(e.max.z-d.z)*h,l=(e.min.z-d.z)*h),i>l||a>n)||((a>i||i!==i)&&(i=a),(l=0?i:n,t)}intersectsBox(e){return this.intersectBox(e,qi)!==null}intersectTriangle(e,t,i,n,s){ou.subVectors(t,e),ta.subVectors(i,e),au.crossVectors(ou,ta);let o=this.direction.dot(au),a;if(o>0){if(n)return null;a=1}else if(o<0)a=-1,o=-o;else return null;dn.subVectors(this.origin,e);let l=a*this.direction.dot(ta.crossVectors(dn,ta));if(l<0)return null;let c=a*this.direction.dot(ou.cross(dn));if(c<0||l+c>o)return null;let u=-a*dn.dot(au);return u<0?null:this.at(u/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},Ee=class r{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,n,s,o,a,l,c,u,h,d,p,m,y,x){let g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=s,g[5]=o,g[9]=a,g[13]=l,g[2]=c,g[6]=u,g[10]=h,g[14]=d,g[3]=p,g[7]=m,g[11]=y,g[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new r().fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,i=e.elements,n=1/us.setFromMatrixColumn(e,0).length(),s=1/us.setFromMatrixColumn(e,1).length(),o=1/us.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*s,t[5]=i[5]*s,t[6]=i[6]*s,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");let t=this.elements,i=e.x,n=e.y,s=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(n),c=Math.sin(n),u=Math.cos(s),h=Math.sin(s);if(e.order==="XYZ"){let d=o*u,p=o*h,m=a*u,y=a*h;t[0]=l*u,t[4]=-l*h,t[8]=c,t[1]=p+m*c,t[5]=d-y*c,t[9]=-a*l,t[2]=y-d*c,t[6]=m+p*c,t[10]=o*l}else if(e.order==="YXZ"){let d=l*u,p=l*h,m=c*u,y=c*h;t[0]=d+y*a,t[4]=m*a-p,t[8]=o*c,t[1]=o*h,t[5]=o*u,t[9]=-a,t[2]=p*a-m,t[6]=y+d*a,t[10]=o*l}else if(e.order==="ZXY"){let d=l*u,p=l*h,m=c*u,y=c*h;t[0]=d-y*a,t[4]=-o*h,t[8]=m+p*a,t[1]=p+m*a,t[5]=o*u,t[9]=y-d*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){let d=o*u,p=o*h,m=a*u,y=a*h;t[0]=l*u,t[4]=m*c-p,t[8]=d*c+y,t[1]=l*h,t[5]=y*c+d,t[9]=p*c-m,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){let d=o*l,p=o*c,m=a*l,y=a*c;t[0]=l*u,t[4]=y-d*h,t[8]=m*h+p,t[1]=h,t[5]=o*u,t[9]=-a*u,t[2]=-c*u,t[6]=p*h+m,t[10]=d-y*h}else if(e.order==="XZY"){let d=o*l,p=o*c,m=a*l,y=a*c;t[0]=l*u,t[4]=-h,t[8]=c*u,t[1]=d*h+y,t[5]=o*u,t[9]=p*h-m,t[2]=m*h-p,t[6]=a*u,t[10]=y*h+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Gv,e,qv)}lookAt(e,t,i){let n=this.elements;return Jt.subVectors(e,t),Jt.lengthSq()===0&&(Jt.z=1),Jt.normalize(),pn.crossVectors(i,Jt),pn.lengthSq()===0&&(Math.abs(i.z)===1?Jt.x+=1e-4:Jt.z+=1e-4,Jt.normalize(),pn.crossVectors(i,Jt)),pn.normalize(),ia.crossVectors(Jt,pn),n[0]=pn.x,n[4]=ia.x,n[8]=Jt.x,n[1]=pn.y,n[5]=ia.y,n[9]=Jt.y,n[2]=pn.z,n[6]=ia.z,n[10]=Jt.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,n=t.elements,s=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],u=i[1],h=i[5],d=i[9],p=i[13],m=i[2],y=i[6],x=i[10],g=i[14],f=i[3],E=i[7],w=i[11],_=i[15],M=n[0],T=n[4],z=n[8],W=n[12],A=n[1],v=n[5],R=n[9],S=n[13],B=n[2],L=n[6],C=n[10],N=n[14],k=n[3],V=n[7],U=n[11],q=n[15];return s[0]=o*M+a*A+l*B+c*k,s[4]=o*T+a*v+l*L+c*V,s[8]=o*z+a*R+l*C+c*U,s[12]=o*W+a*S+l*N+c*q,s[1]=u*M+h*A+d*B+p*k,s[5]=u*T+h*v+d*L+p*V,s[9]=u*z+h*R+d*C+p*U,s[13]=u*W+h*S+d*N+p*q,s[2]=m*M+y*A+x*B+g*k,s[6]=m*T+y*v+x*L+g*V,s[10]=m*z+y*R+x*C+g*U,s[14]=m*W+y*S+x*N+g*q,s[3]=f*M+E*A+w*B+_*k,s[7]=f*T+E*v+w*L+_*V,s[11]=f*z+E*R+w*C+_*U,s[15]=f*W+E*S+w*N+_*q,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[4],n=e[8],s=e[12],o=e[1],a=e[5],l=e[9],c=e[13],u=e[2],h=e[6],d=e[10],p=e[14],m=e[3],y=e[7],x=e[11],g=e[15];return m*(+s*l*h-n*c*h-s*a*d+i*c*d+n*a*p-i*l*p)+y*(+t*l*p-t*c*d+s*o*d-n*o*p+n*c*u-s*l*u)+x*(+t*c*h-t*a*p-s*o*h+i*o*p+s*a*u-i*c*u)+g*(-n*a*u-t*l*h+t*a*d+n*o*h-i*o*d+i*l*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){let n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],n=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],h=e[9],d=e[10],p=e[11],m=e[12],y=e[13],x=e[14],g=e[15],f=h*x*c-y*d*c+y*l*p-a*x*p-h*l*g+a*d*g,E=m*d*c-u*x*c-m*l*p+o*x*p+u*l*g-o*d*g,w=u*y*c-m*h*c+m*a*p-o*y*p-u*a*g+o*h*g,_=m*h*l-u*y*l-m*a*d+o*y*d+u*a*x-o*h*x,M=t*f+i*E+n*w+s*_;if(M===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let T=1/M;return e[0]=f*T,e[1]=(y*d*s-h*x*s-y*n*p+i*x*p+h*n*g-i*d*g)*T,e[2]=(a*x*s-y*l*s+y*n*c-i*x*c-a*n*g+i*l*g)*T,e[3]=(h*l*s-a*d*s-h*n*c+i*d*c+a*n*p-i*l*p)*T,e[4]=E*T,e[5]=(u*x*s-m*d*s+m*n*p-t*x*p-u*n*g+t*d*g)*T,e[6]=(m*l*s-o*x*s-m*n*c+t*x*c+o*n*g-t*l*g)*T,e[7]=(o*d*s-u*l*s+u*n*c-t*d*c-o*n*p+t*l*p)*T,e[8]=w*T,e[9]=(m*h*s-u*y*s-m*i*p+t*y*p+u*i*g-t*h*g)*T,e[10]=(o*y*s-m*a*s+m*i*c-t*y*c-o*i*g+t*a*g)*T,e[11]=(u*a*s-o*h*s-u*i*c+t*h*c+o*i*p-t*a*p)*T,e[12]=_*T,e[13]=(u*y*n-m*h*n+m*i*d-t*y*d-u*i*x+t*h*x)*T,e[14]=(m*a*n-o*y*n-m*i*l+t*y*l+o*i*x-t*a*x)*T,e[15]=(o*h*n-u*a*n+u*i*l-t*h*l-o*i*d+t*a*d)*T,this}scale(e){let t=this.elements,i=e.x,n=e.y,s=e.z;return t[0]*=i,t[4]*=n,t[8]*=s,t[1]*=i,t[5]*=n,t[9]*=s,t[2]*=i,t[6]*=n,t[10]*=s,t[3]*=i,t[7]*=n,t[11]*=s,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let i=Math.cos(t),n=Math.sin(t),s=1-i,o=e.x,a=e.y,l=e.z,c=s*o,u=s*a;return this.set(c*o+i,c*a-n*l,c*l+n*a,0,c*a+n*l,u*a+i,u*l-n*o,0,c*l-n*a,u*l+n*o,s*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,n,s,o){return this.set(1,i,s,0,e,1,o,0,t,n,1,0,0,0,0,1),this}compose(e,t,i){let n=this.elements,s=t._x,o=t._y,a=t._z,l=t._w,c=s+s,u=o+o,h=a+a,d=s*c,p=s*u,m=s*h,y=o*u,x=o*h,g=a*h,f=l*c,E=l*u,w=l*h,_=i.x,M=i.y,T=i.z;return n[0]=(1-(y+g))*_,n[1]=(p+w)*_,n[2]=(m-E)*_,n[3]=0,n[4]=(p-w)*M,n[5]=(1-(d+g))*M,n[6]=(x+f)*M,n[7]=0,n[8]=(m+E)*T,n[9]=(x-f)*T,n[10]=(1-(d+y))*T,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,i){let n=this.elements,s=us.set(n[0],n[1],n[2]).length(),o=us.set(n[4],n[5],n[6]).length(),a=us.set(n[8],n[9],n[10]).length();this.determinant()<0&&(s=-s),e.x=n[12],e.y=n[13],e.z=n[14],hi.copy(this);let c=1/s,u=1/o,h=1/a;return hi.elements[0]*=c,hi.elements[1]*=c,hi.elements[2]*=c,hi.elements[4]*=u,hi.elements[5]*=u,hi.elements[6]*=u,hi.elements[8]*=h,hi.elements[9]*=h,hi.elements[10]*=h,t.setFromRotationMatrix(hi),i.x=s,i.y=o,i.z=a,this}makePerspective(e,t,i,n,s,o){o===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");let a=this.elements,l=2*s/(t-e),c=2*s/(i-n),u=(t+e)/(t-e),h=(i+n)/(i-n),d=-(o+s)/(o-s),p=-2*o*s/(o-s);return a[0]=l,a[4]=0,a[8]=u,a[12]=0,a[1]=0,a[5]=c,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,n,s,o){let a=this.elements,l=1/(t-e),c=1/(i-n),u=1/(o-s),h=(t+e)*l,d=(i+n)*c,p=(o+s)*u;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*u,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let n=0;n<16;n++)if(t[n]!==i[n])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}};Ee.prototype.isMatrix4=!0;var us=new P,hi=new Ee,Gv=new P(0,0,0),qv=new P(1,1,1),pn=new P,ia=new P,Jt=new P,bf=new Ee,_f=new Lt,Is=class r{constructor(e=0,t=0,i=0,n=r.DefaultOrder){this._x=e,this._y=t,this._z=i,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,n=this._order){return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let n=e.elements,s=n[0],o=n[4],a=n[8],l=n[1],c=n[5],u=n[9],h=n[2],d=n[6],p=n[10];switch(t){case"XYZ":this._y=Math.asin(Ht(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,p),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ht(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-h,s),this._z=0);break;case"ZXY":this._x=Math.asin(Ht(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-h,p),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Ht(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(d,p),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(Ht(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,s)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-Ht(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-u,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return bf.makeRotationFromQuaternion(e),this.setFromRotationMatrix(bf,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return _f.setFromEuler(this),this.setFromQuaternion(_f,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}toVector3(e){return e?e.set(this._x,this._y,this._z):new P(this._x,this._y,this._z)}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};Is.prototype.isEuler=!0;Is.DefaultOrder="XYZ";Is.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];var Pa=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0){n.children=[];for(let a=0;a0){n.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),h.length>0&&(i.shapes=h),d.length>0&&(i.skeletons=d),p.length>0&&(i.animations=p)}return i.object=n,i;function o(a){let l=[];for(let c in a){let u=a[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(e,t,i,n,s){di.subVectors(n,t),$i.subVectors(i,t),lu.subVectors(e,t);let o=di.dot(di),a=di.dot($i),l=di.dot(lu),c=$i.dot($i),u=$i.dot(lu),h=o*c-a*a;if(h===0)return s.set(-2,-1,-1);let d=1/h,p=(c*l-a*u)*d,m=(o*u-a*l)*d;return s.set(1-p-m,m,p)}static containsPoint(e,t,i,n){return this.getBarycoord(e,t,i,n,ji),ji.x>=0&&ji.y>=0&&ji.x+ji.y<=1}static getUV(e,t,i,n,s,o,a,l){return this.getBarycoord(e,t,i,n,ji),l.set(0,0),l.addScaledVector(s,ji.x),l.addScaledVector(o,ji.y),l.addScaledVector(a,ji.z),l}static isFrontFacing(e,t,i,n){return di.subVectors(i,t),$i.subVectors(e,t),di.cross($i).dot(n)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return di.subVectors(this.c,this.b),$i.subVectors(this.a,this.b),di.cross($i).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return r.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return r.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,n,s){return r.getUV(e,this.a,this.b,this.c,t,i,n,s)}containsPoint(e){return r.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return r.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,n=this.b,s=this.c,o,a;ds.subVectors(n,i),ps.subVectors(s,i),cu.subVectors(e,i);let l=ds.dot(cu),c=ps.dot(cu);if(l<=0&&c<=0)return t.copy(i);uu.subVectors(e,n);let u=ds.dot(uu),h=ps.dot(uu);if(u>=0&&h<=u)return t.copy(n);let d=l*h-u*c;if(d<=0&&l>=0&&u<=0)return o=l/(l-u),t.copy(i).addScaledVector(ds,o);hu.subVectors(e,s);let p=ds.dot(hu),m=ps.dot(hu);if(m>=0&&p<=m)return t.copy(s);let y=p*c-l*m;if(y<=0&&c>=0&&m<=0)return a=c/(c-m),t.copy(i).addScaledVector(ps,a);let x=u*m-p*h;if(x<=0&&h-u>=0&&p-m>=0)return Tf.subVectors(s,n),a=(h-u)/(h-u+(p-m)),t.copy(n).addScaledVector(Tf,a);let g=1/(x+y+d);return o=y*g,a=d*g,t.copy(i).addScaledVector(ds,o).addScaledVector(ps,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Yv=0,mt=class extends Yi{constructor(){super(),Object.defineProperty(this,"id",{value:Yv++}),this.uuid=fi(),this.name="",this.type="Material",this.fog=!0,this.blending=Rr,this.side=Pr,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Sm,this.blendDst=Mm,this.blendEquation=Ss,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Cu,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Ov,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Yc,this.stencilZFail=Yc,this.stencilZPass=Yc,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if(t==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=i===Am;continue}let n=this[t];if(n===void 0){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Rr&&(i.blending=this.blending),this.side!==Pr&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData);function n(s){let o=[];for(let a in s){let l=s[a];delete l.metadata,o.push(l)}return o}if(t){let s=n(e.textures),o=n(e.images);s.length>0&&(i.textures=s),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let n=t.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}};mt.prototype.isMaterial=!0;var zr=class extends mt{constructor(e){super(),this.type="MeshBasicMaterial",this.color=new ye(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=rl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};zr.prototype.isMeshBasicMaterial=!0;var Ke=new P,sa=new ee,dt=class{constructor(e,t,i){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i===!0,this.usage=Nr,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let n=0,s=this.itemSize;n0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let n={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let h=0,d=c.length;h0&&(n[l]=u,s=!0)}s&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone(t));let n=e.attributes;for(let c in n){let u=n[c];this.setAttribute(c,u.clone(t))}let s=e.morphAttributes;for(let c in s){let u=[],h=s[c];for(let d=0,p=h.length;d0){let n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=n.length;s0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(e,t){let i=this.geometry,n=this.material,s=this.matrixWorld;if(n===void 0||(i.boundingSphere===null&&i.computeBoundingSphere(),pu.copy(i.boundingSphere),pu.applyMatrix4(s),e.ray.intersectsSphere(pu)===!1)||(Cf.copy(s).invert(),ms.copy(e.ray).applyMatrix4(Cf),i.boundingBox!==null&&ms.intersectsBox(i.boundingBox)===!1))return;let o;if(i.isBufferGeometry){let a=i.index,l=i.attributes.position,c=i.morphAttributes.position,u=i.morphTargetsRelative,h=i.attributes.uv,d=i.attributes.uv2,p=i.groups,m=i.drawRange;if(a!==null)if(Array.isArray(n))for(let y=0,x=p.length;yt.far?null:{distance:c,point:ha.clone(),object:r}}function da(r,e,t,i,n,s,o,a,l,c,u,h){fn.fromBufferAttribute(n,c),mn.fromBufferAttribute(n,u),gn.fromBufferAttribute(n,h);let d=r.morphTargetInfluences;if(s&&d){ra.set(0,0,0),oa.set(0,0,0),aa.set(0,0,0);for(let m=0,y=s.length;m0?1:-1,u.push(V.x,V.y,V.z),h.push(j/T),h.push(1-U/z),N+=1}}for(let U=0;U0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let i={};for(let n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}};Ji.prototype.isShaderMaterial=!0;var Ur=class extends qe{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new Ee,this.projectionMatrix=new Ee,this.projectionMatrixInverse=new Ee}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}};Ur.prototype.isCamera=!0;var Mt=class extends Ur{constructor(e=50,t=1,i=.1,n=2e3){super(),this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=Iu*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(Zc*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Iu*2*Math.atan(Math.tan(Zc*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,n,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(Zc*.5*this.fov)/this.zoom,i=2*t,n=this.aspect*i,s=-.5*n,o=this.view;if(this.view!==null&&this.view.enabled){let l=o.fullWidth,c=o.fullHeight;s+=o.offsetX*n/l,t-=o.offsetY*i/c,n*=o.width/l,i*=o.height/c}let a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+n,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}};Mt.prototype.isPerspectiveCamera=!0;var gs=90,ys=1,Hr=class extends qe{constructor(e,t,i){if(super(),this.type="CubeCamera",i.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=i;let n=new Mt(gs,ys,e,t);n.layers=this.layers,n.up.set(0,-1,0),n.lookAt(new P(1,0,0)),this.add(n);let s=new Mt(gs,ys,e,t);s.layers=this.layers,s.up.set(0,-1,0),s.lookAt(new P(-1,0,0)),this.add(s);let o=new Mt(gs,ys,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(new P(0,1,0)),this.add(o);let a=new Mt(gs,ys,e,t);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new P(0,-1,0)),this.add(a);let l=new Mt(gs,ys,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new P(0,0,1)),this.add(l);let c=new Mt(gs,ys,e,t);c.layers=this.layers,c.up.set(0,-1,0),c.lookAt(new P(0,0,-1)),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();let i=this.renderTarget,[n,s,o,a,l,c]=this.children,u=e.xr.enabled,h=e.getRenderTarget();e.xr.enabled=!1;let d=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,n),e.setRenderTarget(i,1),e.render(t,s),e.setRenderTarget(i,2),e.render(t,o),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,l),i.texture.generateMipmaps=d,e.setRenderTarget(i,5),e.render(t,c),e.setRenderTarget(h),e.xr.enabled=u,i.texture.needsPMREMUpdate=!0}},ks=class extends ct{constructor(e,t,i,n,s,o,a,l,c,u){e=e!==void 0?e:[],t=t!==void 0?t:co,super(e,t,i,n,s,o,a,l,c,u),this.flipY=!1}get images(){return this.image}set images(e){this.image=e}};ks.prototype.isCubeTexture=!0;var ka=class extends Gt{constructor(e,t,i){Number.isInteger(t)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),t=i),super(e,e,t),t=t||{},this.texture=new ks(void 0,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Ft}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.format=kt,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},n=new Vr(5,5,5),s=new Ji({name:"CubemapFromEquirect",uniforms:Ns(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:wt,blending:xn});s.uniforms.tEquirect.value=t;let o=new ft(n,s),a=t.minFilter;return t.minFilter===al&&(t.minFilter=Ft),new Hr(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,n){let s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,i,n);e.setRenderTarget(s)}};ka.prototype.isWebGLCubeRenderTarget=!0;var xu=new P,t2=new P,i2=new _t,pi=class{constructor(e=new P(1,0,0),t=0){this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){let n=xu.subVectors(i,t).cross(t2.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){let i=e.delta(xu),n=this.normal.dot(i);if(n===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let s=-(e.start.dot(this.normal)+this.constant)/n;return s<0||s>1?null:t.copy(i).multiplyScalar(s).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||i2.getNormalMatrix(e),n=this.coplanarPoint(xu).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}};pi.prototype.isPlane=!0;var xs=new Ri,pa=new P,Os=class{constructor(e=new pi,t=new pi,i=new pi,n=new pi,s=new pi,o=new pi){this.planes=[e,t,i,n,s,o]}set(e,t,i,n,s,o){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(n),a[4].copy(s),a[5].copy(o),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){let t=this.planes,i=e.elements,n=i[0],s=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],h=i[7],d=i[8],p=i[9],m=i[10],y=i[11],x=i[12],g=i[13],f=i[14],E=i[15];return t[0].setComponents(a-n,h-l,y-d,E-x).normalize(),t[1].setComponents(a+n,h+l,y+d,E+x).normalize(),t[2].setComponents(a+s,h+c,y+p,E+g).normalize(),t[3].setComponents(a-s,h-c,y-p,E-g).normalize(),t[4].setComponents(a-o,h-u,y-m,E-f).normalize(),t[5].setComponents(a+o,h+u,y+m,E+f).normalize(),this}intersectsObject(e){let t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),xs.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(xs)}intersectsSprite(e){return xs.center.set(0,0,0),xs.radius=.7071067811865476,xs.applyMatrix4(e.matrixWorld),this.intersectsSphere(xs)}intersectsSphere(e){let t=this.planes,i=e.center,n=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,pa.y=n.normal.y>0?e.max.y:e.min.y,pa.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(pa)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Fm(){let r=null,e=!1,t=null,i=null;function n(s,o){t(s,o),i=r.requestAnimationFrame(n)}return{start:function(){e!==!0&&t!==null&&(i=r.requestAnimationFrame(n),e=!0)},stop:function(){r.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){r=s}}}function n2(r,e){let t=e.isWebGL2,i=new WeakMap;function n(c,u){let h=c.array,d=c.usage,p=r.createBuffer();r.bindBuffer(u,p),r.bufferData(u,h,d),c.onUploadCallback();let m=5126;return h instanceof Float32Array?m=5126:h instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):h instanceof Uint16Array?c.isFloat16BufferAttribute?t?m=5131:console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."):m=5123:h instanceof Int16Array?m=5122:h instanceof Uint32Array?m=5125:h instanceof Int32Array?m=5124:h instanceof Int8Array?m=5120:(h instanceof Uint8Array||h instanceof Uint8ClampedArray)&&(m=5121),{buffer:p,type:m,bytesPerElement:h.BYTES_PER_ELEMENT,version:c.version}}function s(c,u,h){let d=u.array,p=u.updateRange;r.bindBuffer(h,c),p.count===-1?r.bufferSubData(h,0,d):(t?r.bufferSubData(h,p.offset*d.BYTES_PER_ELEMENT,d,p.offset,p.count):r.bufferSubData(h,p.offset*d.BYTES_PER_ELEMENT,d.subarray(p.offset,p.offset+p.count)),p.count=-1)}function o(c){return c.isInterleavedBufferAttribute&&(c=c.data),i.get(c)}function a(c){c.isInterleavedBufferAttribute&&(c=c.data);let u=i.get(c);u&&(r.deleteBuffer(u.buffer),i.delete(c))}function l(c,u){if(c.isGLBufferAttribute){let d=i.get(c);(!d||d.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif`,p2=`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vUv ); + vec2 dSTdy = dFdy( vUv ); + float Hll = bumpScale * texture2D( bumpMap, vUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) ); + vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,f2=`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`,m2=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,g2=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,y2=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,x2=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,v2=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,w2=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`,b2=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`,_2=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +struct GeometricContext { + vec3 position; + vec3 normal; + vec3 viewDir; +#ifdef USE_CLEARCOAT + vec3 clearcoatNormal; +#endif +}; +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float linearToRelativeLuminance( const in vec3 color ) { + vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); + return dot( weights, color.rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +}`,E2=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_maxMipLevel 8.0 + #define cubeUV_minMipLevel 4.0 + #define cubeUV_maxTileSize 256.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize ); + vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + if ( mipInt < cubeUV_maxMipLevel ) { + uv.y += 2.0 * cubeUV_maxTileSize; + } + uv.y += filterInt * 2.0 * cubeUV_minTileSize; + uv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize ); + uv *= texelSize; + return texture2D( envMap, uv ).rgb; + } + #define r0 1.0 + #define v0 0.339 + #define m0 - 2.0 + #define r1 0.8 + #define v1 0.276 + #define m1 - 1.0 + #define r4 0.4 + #define v4 0.046 + #define m4 2.0 + #define r5 0.305 + #define v5 0.016 + #define m5 3.0 + #define r6 0.21 + #define v6 0.0038 + #define m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= r1 ) { + mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0; + } else if ( roughness >= r4 ) { + mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1; + } else if ( roughness >= r5 ) { + mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4; + } else if ( roughness >= r6 ) { + mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,A2=`vec3 transformedNormal = objectNormal; +#ifdef USE_INSTANCING + mat3 m = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,S2=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,M2=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias ); +#endif`,D2=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,T2=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,C2="gl_FragColor = linearToOutputTexel( gl_FragColor );",R2=`vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,F2=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,L2=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,B2=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,P2=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,I2=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,N2=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,k2=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,O2=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,z2=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,V2=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 ); + #endif +}`,U2=`#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vUv2 ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + #ifndef PHYSICALLY_CORRECT_LIGHTS + lightMapIrradiance *= PI; + #endif + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`,H2=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,G2=`vec3 diffuse = vec3( 1.0 ); +GeometricContext geometry; +geometry.position = mvPosition.xyz; +geometry.normal = normalize( transformedNormal ); +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz ); +GeometricContext backGeometry; +backGeometry.position = geometry.position; +backGeometry.normal = -geometry.normal; +backGeometry.viewDir = geometry.viewDir; +vLightFront = vec3( 0.0 ); +vIndirectFront = vec3( 0.0 ); +#ifdef DOUBLE_SIDED + vLightBack = vec3( 0.0 ); + vIndirectBack = vec3( 0.0 ); +#endif +IncidentLight directLight; +float dotNL; +vec3 directLightColor_Diffuse; +vIndirectFront += getAmbientLightIrradiance( ambientLightColor ); +vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal ); +#ifdef DOUBLE_SIDED + vIndirectBack += getAmbientLightIrradiance( ambientLightColor ); + vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal ); +#endif +#if NUM_POINT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + getPointLightInfo( pointLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_SPOT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + getSpotLightInfo( spotLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_DIR_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + getDirectionalLightInfo( directionalLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_HEMI_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); + #ifdef DOUBLE_SIDED + vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal ); + #endif + } + #pragma unroll_loop_end +#endif`,q2=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +uniform vec3 lightProbe[ 9 ]; +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( PHYSICALLY_CORRECT_LIGHTS ) + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #else + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometry.position; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometry.position; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,W2=`#if defined( USE_ENVMAP ) + #ifdef ENVMAP_MODE_REFRACTION + uniform float refractionRatio; + #endif + vec3 getIBLIrradiance( const in vec3 normal ) { + #if defined( ENVMAP_TYPE_CUBE_UV ) + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #if defined( ENVMAP_TYPE_CUBE_UV ) + vec3 reflectVec; + #ifdef ENVMAP_MODE_REFLECTION + reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + #else + reflectVec = refract( - viewDir, normal, refractionRatio ); + #endif + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } +#endif`,$2=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,j2=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon +#define Material_LightProbeLOD( material ) (0)`,X2=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,Y2=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong +#define Material_LightProbeLOD( material ) (0)`,Z2=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + #ifdef SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULARINTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a; + #endif + #ifdef USE_SPECULARCOLORMAP + specularColorFactor *= texture2D( specularColorMap, vUv ).rgb; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEENCOLORMAP + material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEENROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a; + #endif +#endif`,J2=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif +}; +vec3 clearcoatSpecular = vec3( 0.0 ); +vec3 sheenSpecular = vec3( 0.0 ); +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + vec3 FssEss = specularColor * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometry.normal; + vec3 viewDir = geometry.viewDir; + vec3 position = geometry.position; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + computeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,K2=` +GeometricContext geometry; +geometry.position = - vViewPosition; +geometry.normal = normal; +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +#ifdef USE_CLEARCOAT + geometry.clearcoatNormal = clearcoatNormal; +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + irradiance += getLightProbeIrradiance( lightProbe, geometry.normal ); + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,Q2=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vUv2 ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + #ifndef PHYSICALLY_CORRECT_LIGHTS + lightMapIrradiance *= PI; + #endif + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometry.normal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness ); + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,ew=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); +#endif`,tw=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,iw=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,nw=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`,sw=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`,rw=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,ow=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,aw=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,lw=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,cw=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vUv ); + metalnessFactor *= texelMetalness.b; +#endif`,uw=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,hw=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`,dw=`#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + uniform sampler2DArray morphTargetsTexture; + uniform vec2 morphTargetsTextureSize; + vec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) { + float texelIndex = float( vertexIndex * stride + offset ); + float y = floor( texelIndex / morphTargetsTextureSize.x ); + float x = texelIndex - y * morphTargetsTextureSize.x; + vec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex ); + return texture( morphTargetsTexture, morphUV ).xyz; + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`,pw=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #ifndef USE_MORPHNORMALS + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ]; + #else + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ]; + #endif + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`,fw=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) ); + vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + #ifdef USE_TANGENT + vec3 tangent = normalize( vTangent ); + vec3 bitangent = normalize( vBitangent ); + #ifdef DOUBLE_SIDED + tangent = tangent * faceDirection; + bitangent = bitangent * faceDirection; + #endif + #if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP ) + mat3 vTBN = mat3( tangent, bitangent, normal ); + #endif + #endif +#endif +vec3 geometryNormal = normal;`,mw=`#ifdef OBJECTSPACE_NORMALMAP + normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( TANGENTSPACE_NORMALMAP ) + vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + #ifdef USE_TANGENT + normal = normalize( vTBN * mapN ); + #else + normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection ); + #endif +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,gw=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,yw=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,xw=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,vw=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef OBJECTSPACE_NORMALMAP + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) ) + vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) { + vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) ); + vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) ); + vec2 st0 = dFdx( vUv.st ); + vec2 st1 = dFdy( vUv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det ); + return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z ); + } +#endif`,ww=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = geometryNormal; +#endif`,bw=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + #ifdef USE_TANGENT + clearcoatNormal = normalize( vTBN * clearcoatMapN ); + #else + clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection ); + #endif +#endif`,_w=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif`,Ew=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= transmissionAlpha + 0.1; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Aw=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) { + return linearClipZ * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * invClipZ - far ); +}`,Sw=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,Mw=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,Dw=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Tw=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,Cw=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vUv ); + roughnessFactor *= texelRoughness.g; +#endif`,Rw=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,Fw=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 ); + bool inFrustum = all( inFrustumVec ); + bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 ); + bool frustumTest = all( frustumTestVec ); + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`,Lw=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,Bw=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; + #endif + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 ); + vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif`,Pw=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,Iw=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,Nw=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + #ifdef BONE_TEXTURE + uniform highp sampler2D boneTexture; + uniform int boneTextureSize; + mat4 getBoneMatrix( const in float i ) { + float j = i * 4.0; + float x = mod( j, float( boneTextureSize ) ); + float y = floor( j / float( boneTextureSize ) ); + float dx = 1.0 / float( boneTextureSize ); + float dy = 1.0 / float( boneTextureSize ); + y = dy * ( y + 0.5 ); + vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); + vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); + vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); + vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); + mat4 bone = mat4( v1, v2, v3, v4 ); + return bone; + } + #else + uniform mat4 boneMatrices[ MAX_BONES ]; + mat4 getBoneMatrix( const in float i ) { + mat4 bone = boneMatrices[ int(i) ]; + return bone; + } + #endif +#endif`,kw=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,Ow=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,zw=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,Vw=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Uw=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,Hw=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return toneMappingExposure * color; +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,Gw=`#ifdef USE_TRANSMISSION + float transmissionAlpha = 1.0; + float transmissionFactor = transmission; + float thicknessFactor = thickness; + #ifdef USE_TRANSMISSIONMAP + transmissionFactor *= texture2D( transmissionMap, vUv ).r; + #endif + #ifdef USE_THICKNESSMAP + thicknessFactor *= texture2D( thicknessMap, vUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmission = getIBLVolumeRefraction( + n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor, + attenuationColor, attenuationDistance ); + totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor ); + transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor ); +#endif`,qw=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + #ifdef TEXTURE_LOD_EXT + return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod ); + #else + return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod ); + #endif + } + vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( attenuationDistance == 0.0 ) { + return radiance; + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a ); + } +#endif`,Ww=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) + varying vec2 vUv; +#endif`,$w=`#ifdef USE_UV + #ifdef UVS_VERTEX_ONLY + vec2 vUv; + #else + varying vec2 vUv; + #endif + uniform mat3 uvTransform; +#endif`,jw=`#ifdef USE_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; +#endif`,Xw=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + varying vec2 vUv2; +#endif`,Yw=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + attribute vec2 uv2; + varying vec2 vUv2; + uniform mat3 uv2Transform; +#endif`,Zw=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy; +#endif`,Jw=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,Kw=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,Qw=`uniform sampler2D t2D; +varying vec2 vUv; +void main() { + gl_FragColor = texture2D( t2D, vUv ); + #include + #include +}`,eb=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,tb=`#include +uniform float opacity; +varying vec3 vWorldDirection; +#include +void main() { + vec3 vReflect = vWorldDirection; + #include + gl_FragColor = envColor; + gl_FragColor.a *= opacity; + #include + #include +}`,ib=`#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,nb=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`,sb=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,rb=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,ob=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,ab=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,lb=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include +}`,cb=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,ub=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,hb=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel= texture2D( lightMap, vUv2 ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,db=`#define LAMBERT +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,pb=`uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #ifdef DOUBLE_SIDED + reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack; + #else + reflectedLight.indirectDiffuse += vIndirectFront; + #endif + #include + reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb ); + #ifdef DOUBLE_SIDED + reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack; + #else + reflectedLight.directDiffuse = vLightFront; + #endif + reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask(); + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,fb=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,mb=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,gb=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + vViewPosition = - mvPosition.xyz; +#endif +}`,yb=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,xb=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,vb=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,wb=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,bb=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULARINTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif + #ifdef USE_SPECULARCOLORMAP + uniform sampler2D specularColorMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEENCOLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEENROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,_b=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,Eb=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,Ab=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,Sb=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,Mb=`#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,Db=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,Tb=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,Cb=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,Ne={alphamap_fragment:s2,alphamap_pars_fragment:r2,alphatest_fragment:o2,alphatest_pars_fragment:a2,aomap_fragment:l2,aomap_pars_fragment:c2,begin_vertex:u2,beginnormal_vertex:h2,bsdfs:d2,bumpmap_pars_fragment:p2,clipping_planes_fragment:f2,clipping_planes_pars_fragment:m2,clipping_planes_pars_vertex:g2,clipping_planes_vertex:y2,color_fragment:x2,color_pars_fragment:v2,color_pars_vertex:w2,color_vertex:b2,common:_2,cube_uv_reflection_fragment:E2,defaultnormal_vertex:A2,displacementmap_pars_vertex:S2,displacementmap_vertex:M2,emissivemap_fragment:D2,emissivemap_pars_fragment:T2,encodings_fragment:C2,encodings_pars_fragment:R2,envmap_fragment:F2,envmap_common_pars_fragment:L2,envmap_pars_fragment:B2,envmap_pars_vertex:P2,envmap_physical_pars_fragment:W2,envmap_vertex:I2,fog_vertex:N2,fog_pars_vertex:k2,fog_fragment:O2,fog_pars_fragment:z2,gradientmap_pars_fragment:V2,lightmap_fragment:U2,lightmap_pars_fragment:H2,lights_lambert_vertex:G2,lights_pars_begin:q2,lights_toon_fragment:$2,lights_toon_pars_fragment:j2,lights_phong_fragment:X2,lights_phong_pars_fragment:Y2,lights_physical_fragment:Z2,lights_physical_pars_fragment:J2,lights_fragment_begin:K2,lights_fragment_maps:Q2,lights_fragment_end:ew,logdepthbuf_fragment:tw,logdepthbuf_pars_fragment:iw,logdepthbuf_pars_vertex:nw,logdepthbuf_vertex:sw,map_fragment:rw,map_pars_fragment:ow,map_particle_fragment:aw,map_particle_pars_fragment:lw,metalnessmap_fragment:cw,metalnessmap_pars_fragment:uw,morphnormal_vertex:hw,morphtarget_pars_vertex:dw,morphtarget_vertex:pw,normal_fragment_begin:fw,normal_fragment_maps:mw,normal_pars_fragment:gw,normal_pars_vertex:yw,normal_vertex:xw,normalmap_pars_fragment:vw,clearcoat_normal_fragment_begin:ww,clearcoat_normal_fragment_maps:bw,clearcoat_pars_fragment:_w,output_fragment:Ew,packing:Aw,premultiplied_alpha_fragment:Sw,project_vertex:Mw,dithering_fragment:Dw,dithering_pars_fragment:Tw,roughnessmap_fragment:Cw,roughnessmap_pars_fragment:Rw,shadowmap_pars_fragment:Fw,shadowmap_pars_vertex:Lw,shadowmap_vertex:Bw,shadowmask_pars_fragment:Pw,skinbase_vertex:Iw,skinning_pars_vertex:Nw,skinning_vertex:kw,skinnormal_vertex:Ow,specularmap_fragment:zw,specularmap_pars_fragment:Vw,tonemapping_fragment:Uw,tonemapping_pars_fragment:Hw,transmission_fragment:Gw,transmission_pars_fragment:qw,uv_pars_fragment:Ww,uv_pars_vertex:$w,uv_vertex:jw,uv2_pars_fragment:Xw,uv2_pars_vertex:Yw,uv2_vertex:Zw,worldpos_vertex:Jw,background_vert:Kw,background_frag:Qw,cube_vert:eb,cube_frag:tb,depth_vert:ib,depth_frag:nb,distanceRGBA_vert:sb,distanceRGBA_frag:rb,equirect_vert:ob,equirect_frag:ab,linedashed_vert:lb,linedashed_frag:cb,meshbasic_vert:ub,meshbasic_frag:hb,meshlambert_vert:db,meshlambert_frag:pb,meshmatcap_vert:fb,meshmatcap_frag:mb,meshnormal_vert:gb,meshnormal_frag:yb,meshphong_vert:xb,meshphong_frag:vb,meshphysical_vert:wb,meshphysical_frag:bb,meshtoon_vert:_b,meshtoon_frag:Eb,points_vert:Ab,points_frag:Sb,shadow_vert:Mb,shadow_frag:Db,sprite_vert:Tb,sprite_frag:Cb},re={common:{diffuse:{value:new ye(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new _t},uv2Transform:{value:new _t},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new ee(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ye(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ye(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new _t}},sprite:{diffuse:{value:new ye(16777215)},opacity:{value:1},center:{value:new ee(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new _t}}},Ci={basic:{uniforms:Rt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.fog]),vertexShader:Ne.meshbasic_vert,fragmentShader:Ne.meshbasic_frag},lambert:{uniforms:Rt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.fog,re.lights,{emissive:{value:new ye(0)}}]),vertexShader:Ne.meshlambert_vert,fragmentShader:Ne.meshlambert_frag},phong:{uniforms:Rt([re.common,re.specularmap,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.fog,re.lights,{emissive:{value:new ye(0)},specular:{value:new ye(1118481)},shininess:{value:30}}]),vertexShader:Ne.meshphong_vert,fragmentShader:Ne.meshphong_frag},standard:{uniforms:Rt([re.common,re.envmap,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.roughnessmap,re.metalnessmap,re.fog,re.lights,{emissive:{value:new ye(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Ne.meshphysical_vert,fragmentShader:Ne.meshphysical_frag},toon:{uniforms:Rt([re.common,re.aomap,re.lightmap,re.emissivemap,re.bumpmap,re.normalmap,re.displacementmap,re.gradientmap,re.fog,re.lights,{emissive:{value:new ye(0)}}]),vertexShader:Ne.meshtoon_vert,fragmentShader:Ne.meshtoon_frag},matcap:{uniforms:Rt([re.common,re.bumpmap,re.normalmap,re.displacementmap,re.fog,{matcap:{value:null}}]),vertexShader:Ne.meshmatcap_vert,fragmentShader:Ne.meshmatcap_frag},points:{uniforms:Rt([re.points,re.fog]),vertexShader:Ne.points_vert,fragmentShader:Ne.points_frag},dashed:{uniforms:Rt([re.common,re.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Ne.linedashed_vert,fragmentShader:Ne.linedashed_frag},depth:{uniforms:Rt([re.common,re.displacementmap]),vertexShader:Ne.depth_vert,fragmentShader:Ne.depth_frag},normal:{uniforms:Rt([re.common,re.bumpmap,re.normalmap,re.displacementmap,{opacity:{value:1}}]),vertexShader:Ne.meshnormal_vert,fragmentShader:Ne.meshnormal_frag},sprite:{uniforms:Rt([re.sprite,re.fog]),vertexShader:Ne.sprite_vert,fragmentShader:Ne.sprite_frag},background:{uniforms:{uvTransform:{value:new _t},t2D:{value:null}},vertexShader:Ne.background_vert,fragmentShader:Ne.background_frag},cube:{uniforms:Rt([re.envmap,{opacity:{value:1}}]),vertexShader:Ne.cube_vert,fragmentShader:Ne.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Ne.equirect_vert,fragmentShader:Ne.equirect_frag},distanceRGBA:{uniforms:Rt([re.common,re.displacementmap,{referencePosition:{value:new P},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Ne.distanceRGBA_vert,fragmentShader:Ne.distanceRGBA_frag},shadow:{uniforms:Rt([re.lights,re.fog,{color:{value:new ye(0)},opacity:{value:1}}]),vertexShader:Ne.shadow_vert,fragmentShader:Ne.shadow_frag}};Ci.physical={uniforms:Rt([Ci.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new ee(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new ye(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new ee},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new ye(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new ye(1,1,1)},specularColorMap:{value:null}}]),vertexShader:Ne.meshphysical_vert,fragmentShader:Ne.meshphysical_frag};function Rb(r,e,t,i,n,s){let o=new ye(0),a=n===!0?0:1,l,c,u=null,h=0,d=null;function p(y,x){let g=!1,f=x.isScene===!0?x.background:null;f&&f.isTexture&&(f=e.get(f));let E=r.xr,w=E.getSession&&E.getSession();w&&w.environmentBlendMode==="additive"&&(f=null),f===null?m(o,a):f&&f.isColor&&(m(f,1),g=!0),(r.autoClear||g)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),f&&(f.isCubeTexture||f.mapping===ol)?(c===void 0&&(c=new ft(new Vr(1,1,1),new Ji({name:"BackgroundCubeMaterial",uniforms:Ns(Ci.cube.uniforms),vertexShader:Ci.cube.vertexShader,fragmentShader:Ci.cube.fragmentShader,side:wt,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(_,M,T){this.matrixWorld.copyPosition(T.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=f,c.material.uniforms.flipEnvMap.value=f.isCubeTexture&&f.isRenderTargetTexture===!1?-1:1,(u!==f||h!==f.version||d!==r.toneMapping)&&(c.material.needsUpdate=!0,u=f,h=f.version,d=r.toneMapping),y.unshift(c,c.geometry,c.material,0,0,null)):f&&f.isTexture&&(l===void 0&&(l=new ft(new Gr(2,2),new Ji({name:"BackgroundMaterial",uniforms:Ns(Ci.background.uniforms),vertexShader:Ci.background.vertexShader,fragmentShader:Ci.background.fragmentShader,side:Pr,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=f,f.matrixAutoUpdate===!0&&f.updateMatrix(),l.material.uniforms.uvTransform.value.copy(f.matrix),(u!==f||h!==f.version||d!==r.toneMapping)&&(l.material.needsUpdate=!0,u=f,h=f.version,d=r.toneMapping),y.unshift(l,l.geometry,l.material,0,0,null))}function m(y,x){t.buffers.color.setClear(y.r,y.g,y.b,x,s)}return{getClearColor:function(){return o},setClearColor:function(y,x=1){o.set(y),a=x,m(o,a)},getClearAlpha:function(){return a},setClearAlpha:function(y){a=y,m(o,a)},render:p}}function Fb(r,e,t,i){let n=r.getParameter(34921),s=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||s!==null,a={},l=y(null),c=l;function u(S,B,L,C,N){let k=!1;if(o){let V=m(C,L,B);c!==V&&(c=V,d(c.object)),k=x(C,N),k&&g(C,N)}else{let V=B.wireframe===!0;(c.geometry!==C.id||c.program!==L.id||c.wireframe!==V)&&(c.geometry=C.id,c.program=L.id,c.wireframe=V,k=!0)}S.isInstancedMesh===!0&&(k=!0),N!==null&&t.update(N,34963),k&&(T(S,B,L,C),N!==null&&r.bindBuffer(34963,t.get(N).buffer))}function h(){return i.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function d(S){return i.isWebGL2?r.bindVertexArray(S):s.bindVertexArrayOES(S)}function p(S){return i.isWebGL2?r.deleteVertexArray(S):s.deleteVertexArrayOES(S)}function m(S,B,L){let C=L.wireframe===!0,N=a[S.id];N===void 0&&(N={},a[S.id]=N);let k=N[B.id];k===void 0&&(k={},N[B.id]=k);let V=k[C];return V===void 0&&(V=y(h()),k[C]=V),V}function y(S){let B=[],L=[],C=[];for(let N=0;N=0){let j=N[U];if(j===void 0&&(U==="instanceMatrix"&&S.instanceMatrix&&(j=S.instanceMatrix),U==="instanceColor"&&S.instanceColor&&(j=S.instanceColor)),j!==void 0){let ne=j.normalized,ae=j.itemSize,H=t.get(j);if(H===void 0)continue;let Te=H.buffer,ue=H.type,we=H.bytesPerElement;if(j.isInterleavedBufferAttribute){let oe=j.data,Ce=oe.stride,Ae=j.offset;if(oe&&oe.isInstancedInterleavedBuffer){for(let Z=0;Z0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";T="mediump"}return T==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o=typeof WebGL2RenderingContext<"u"&&r instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<"u"&&r instanceof WebGL2ComputeRenderingContext,a=t.precision!==void 0?t.precision:"highp",l=s(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);let c=o||e.has("WEBGL_draw_buffers"),u=t.logarithmicDepthBuffer===!0,h=r.getParameter(34930),d=r.getParameter(35660),p=r.getParameter(3379),m=r.getParameter(34076),y=r.getParameter(34921),x=r.getParameter(36347),g=r.getParameter(36348),f=r.getParameter(36349),E=d>0,w=o||e.has("OES_texture_float"),_=E&&w,M=o?r.getParameter(36183):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:n,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:u,maxTextures:h,maxVertexTextures:d,maxTextureSize:p,maxCubemapSize:m,maxAttributes:y,maxVertexUniforms:x,maxVaryings:g,maxFragmentUniforms:f,vertexTextures:E,floatFragmentTextures:w,floatVertexTextures:_,maxSamples:M}}function Pb(r){let e=this,t=null,i=0,n=!1,s=!1,o=new pi,a=new _t,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(h,d,p){let m=h.length!==0||d||i!==0||n;return n=d,t=u(h,p,0),i=h.length,m},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1,c()},this.setState=function(h,d,p){let m=h.clippingPlanes,y=h.clipIntersection,x=h.clipShadows,g=r.get(h);if(!n||m===null||m.length===0||s&&!x)s?u(null):c();else{let f=s?0:i,E=f*4,w=g.clippingState||null;l.value=w,w=u(m,d,E,p);for(let _=0;_!==E;++_)w[_]=t[_];g.clippingState=w,this.numIntersection=y?this.numPlanes:0,this.numPlanes+=f}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(h,d,p,m){let y=h!==null?h.length:0,x=null;if(y!==0){if(x=l.value,m!==!0||x===null){let g=p+y*4,f=d.matrixWorldInverse;a.getNormalMatrix(f),(x===null||x.length0){let c=new ka(l.height/2);return c.fromEquirectangularTexture(r,o),e.set(o,c),o.addEventListener("dispose",n),t(c.texture,o.mapping)}else return null}}return o}function n(o){let a=o.target;a.removeEventListener("dispose",n);let l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function s(){e=new WeakMap}return{get:i,dispose:s}}var qr=class extends Ur{constructor(e=-1,t=1,i=1,n=-1,s=.1,o=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=n,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,n,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2,s=i-e,o=i+e,a=n+t,l=n-t;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,o=s+c*this.view.width,a-=u*this.view.offsetY,l=a-u*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};qr.prototype.isOrthographicCamera=!0;var zs=class extends Ji{constructor(e){super(e),this.type="RawShaderMaterial"}};zs.prototype.isRawShaderMaterial=!0;var Ls=4,bn=8,Ti=Math.pow(2,bn),Lm=[.125,.215,.35,.446,.526,.582],Bm=bn-Ls+1+Lm.length,vs=20,vu=new qr,{_lodPlanes:_r,_sizeLods:Rf,_sigmas:fa}=Nb(),Ff=new ye,wu=null,Vn=(1+Math.sqrt(5))/2,ws=1/Vn,Lf=[new P(1,1,1),new P(-1,1,1),new P(1,1,-1),new P(-1,1,-1),new P(0,Vn,ws),new P(0,Vn,-ws),new P(ws,0,Vn),new P(-ws,0,Vn),new P(Vn,ws,0),new P(-Vn,ws,0)],Oa=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._blurMaterial=kb(vs),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,n=100){wu=this._renderer.getRenderTarget();let s=this._allocateTargets();return this._sceneToCubeUV(e,i,n,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapShader===null&&(this._cubemapShader=If(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){this._equirectShader===null&&(this._equirectShader=Pf(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose(),this._cubemapShader!==null&&this._cubemapShader.dispose(),this._equirectShader!==null&&this._equirectShader.dispose();for(let e=0;e<_r.length;e++)_r[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(wu),e.scissorTest=!1,ma(e,0,0,e.width,e.height)}_fromTexture(e,t){wu=this._renderer.getRenderTarget();let i=t||this._allocateTargets(e);return this._textureToCubeUV(e,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(e){let t={magFilter:Ft,minFilter:Ft,generateMipmaps:!1,type:Cs,format:kt,encoding:An,depthBuffer:!1},i=Bf(t);return i.depthBuffer=!e,this._pingPongRenderTarget===null&&(this._pingPongRenderTarget=Bf(t)),i}_compileMaterial(e){let t=new ft(_r[0],e);this._renderer.compile(t,vu)}_sceneToCubeUV(e,t,i,n){let a=new Mt(90,1,t,i),l=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],u=this._renderer,h=u.autoClear,d=u.toneMapping;u.getClearColor(Ff),u.toneMapping=vn,u.autoClear=!1;let p=new zr({name:"PMREM.Background",side:wt,depthWrite:!1,depthTest:!1}),m=new ft(new Vr,p),y=!1,x=e.background;x?x.isColor&&(p.color.copy(x),e.background=null,y=!0):(p.color.copy(Ff),y=!0);for(let g=0;g<6;g++){let f=g%3;f===0?(a.up.set(0,l[g],0),a.lookAt(c[g],0,0)):f===1?(a.up.set(0,0,l[g]),a.lookAt(0,c[g],0)):(a.up.set(0,l[g],0),a.lookAt(0,0,c[g])),ma(n,f*Ti,g>2?Ti:0,Ti,Ti),u.setRenderTarget(n),y&&u.render(m,a),u.render(e,a)}m.geometry.dispose(),m.material.dispose(),u.toneMapping=d,u.autoClear=h,e.background=x}_textureToCubeUV(e,t){let i=this._renderer,n=e.mapping===co||e.mapping===uo;n?(this._cubemapShader===null&&(this._cubemapShader=If()),this._cubemapShader.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectShader===null&&(this._equirectShader=Pf());let s=n?this._cubemapShader:this._equirectShader,o=new ft(_r[0],s),a=s.uniforms;a.envMap.value=e,n||a.texelSize.value.set(1/e.image.width,1/e.image.height),ma(t,0,0,3*Ti,2*Ti),i.setRenderTarget(t),i.render(o,vu)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let n=1;nvs&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${x} samples when the maximum is set to ${vs}`);let g=[],f=0;for(let M=0;Mbn-Ls?n-bn+Ls:0);ma(t,w,_,3*E,2*E),l.setRenderTarget(t),l.render(h,vu)}};function Nb(){let r=[],e=[],t=[],i=bn;for(let n=0;nbn-Ls?o=Lm[n-bn+Ls-1]:n===0&&(o=0),t.push(o);let a=1/(s-1),l=-a/2,c=1+a/2,u=[l,l,c,l,c,c,l,l,c,c,l,c],h=6,d=6,p=3,m=2,y=1,x=new Float32Array(p*d*h),g=new Float32Array(m*d*h),f=new Float32Array(y*d*h);for(let w=0;w2?0:-1,T=[_,M,0,_+2/3,M,0,_+2/3,M+1,0,_,M,0,_+2/3,M+1,0,_,M+1,0];x.set(T,p*d*w),g.set(u,m*d*w);let z=[w,w,w,w,w,w];f.set(z,y*d*w)}let E=new Qe;E.setAttribute("position",new dt(x,p)),E.setAttribute("uv",new dt(g,m)),E.setAttribute("faceIndex",new dt(f,y)),r.push(E),i>Ls&&i--}return{_lodPlanes:r,_sizeLods:e,_sigmas:t}}function Bf(r){let e=new Gt(3*Ti,3*Ti,r);return e.texture.mapping=ol,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function ma(r,e,t,i,n){r.viewport.set(e,t,i,n),r.scissor.set(e,t,i,n)}function kb(r){let e=new Float32Array(r),t=new P(0,1,0);return new zs({name:"SphericalGaussianBlur",defines:{n:r},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:t}},vertexShader:jh(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:xn,depthTest:!1,depthWrite:!1})}function Pf(){let r=new ee(1,1);return new zs({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:r}},vertexShader:jh(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform vec2 texelSize; + + #include + + void main() { + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + vec2 f = fract( uv / texelSize - 0.5 ); + uv -= f * texelSize; + vec3 tl = texture2D ( envMap, uv ).rgb; + uv.x += texelSize.x; + vec3 tr = texture2D ( envMap, uv ).rgb; + uv.y += texelSize.y; + vec3 br = texture2D ( envMap, uv ).rgb; + uv.x -= texelSize.x; + vec3 bl = texture2D ( envMap, uv ).rgb; + + vec3 tm = mix( tl, tr, f.x ); + vec3 bm = mix( bl, br, f.x ); + gl_FragColor.rgb = mix( tm, bm, f.y ); + + } + `,blending:xn,depthTest:!1,depthWrite:!1})}function If(){return new zs({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:jh(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:xn,depthTest:!1,depthWrite:!1})}function jh(){return` + + precision mediump float; + precision mediump int; + + attribute vec3 position; + attribute vec2 uv; + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function Ob(r){let e=new WeakMap,t=null;function i(a){if(a&&a.isTexture){let l=a.mapping,c=l===Ru||l===Fu,u=l===co||l===uo;if(c||u)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let h=e.get(a);return t===null&&(t=new Oa(r)),h=c?t.fromEquirectangular(a,h):t.fromCubemap(a,h),e.set(a,h),h.texture}else{if(e.has(a))return e.get(a).texture;{let h=a.image;if(c&&h&&h.height>0||u&&h&&n(h)){t===null&&(t=new Oa(r));let d=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,d),a.addEventListener("dispose",s),d.texture}else return null}}}return a}function n(a){let l=0,c=6;for(let u=0;ue.maxTextureSize&&(z=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);let W=new Float32Array(T*z*4*m),A=new Wr(W,T,z,m);A.format=kt,A.type=Un,A.needsUpdate=!0;let v=M*4;for(let S=0;S0)return r;let n=e*t,s=kf[n];if(s===void 0&&(s=new Float32Array(n),kf[n]=s),e!==0){i.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=t,r[o].toArray(s,a)}return s}function Ot(r,e){if(r.length!==e.length)return!1;for(let t=0,i=r.length;t/gm;function Ou(r){return r.replace(G1,q1)}function q1(r,e){let t=Ne[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return Ou(t)}var W1=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,$1=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function jf(r){return r.replace($1,Vm).replace(W1,j1)}function j1(r,e,t,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),Vm(r,e,t,i)}function Vm(r,e,t,i){let n="";for(let s=parseInt(e);s0&&(y+=` +`),x=[d,p].filter(Cr).join(` +`),x.length>0&&(x+=` +`)):(y=[Xf(t),"#define SHADER_NAME "+t.shaderName,p,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define MAX_BONES "+t.maxBones,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.displacementMap&&t.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEENCOLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.useVertexTexture?"#define BONE_TEXTURE":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphTargets&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargets&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Cr).join(` +`),x=[d,Xf(t),"#define SHADER_NAME "+t.shaderName,p,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEENCOLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(t.extensionShaderTextureLOD||t.envMap)&&t.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==vn?"#define TONE_MAPPING":"",t.toneMapping!==vn?Ne.tonemapping_pars_fragment:"",t.toneMapping!==vn?z1("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.transparent?"":"#define OPAQUE",Ne.encodings_pars_fragment,O1("linearToOutputTexel",t.outputEncoding),t.depthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Cr).join(` +`)),o=Ou(o),o=Wf(o,t),o=$f(o,t),a=Ou(a),a=Wf(a,t),a=$f(a,t),o=jf(o),a=jf(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(g=`#version 300 es +`,y=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+y,x=["#define varying in",t.glslVersion===yf?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===yf?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+x);let f=g+y+o,E=g+x+a,w=Gf(n,35633,f),_=Gf(n,35632,E);if(n.attachShader(m,w),n.attachShader(m,_),t.index0AttributeName!==void 0?n.bindAttribLocation(m,0,t.index0AttributeName):t.morphTargets===!0&&n.bindAttribLocation(m,0,"position"),n.linkProgram(m),r.debug.checkShaderErrors){let z=n.getProgramInfoLog(m).trim(),W=n.getShaderInfoLog(w).trim(),A=n.getShaderInfoLog(_).trim(),v=!0,R=!0;if(n.getProgramParameter(m,35714)===!1){v=!1;let S=qf(n,w,"vertex"),B=qf(n,_,"fragment");console.error("THREE.WebGLProgram: Shader Error "+n.getError()+" - VALIDATE_STATUS "+n.getProgramParameter(m,35715)+` + +Program Info Log: `+z+` +`+S+` +`+B)}else z!==""?console.warn("THREE.WebGLProgram: Program Info Log:",z):(W===""||A==="")&&(R=!1);R&&(this.diagnostics={runnable:v,programLog:z,vertexShader:{log:W,prefix:y},fragmentShader:{log:A,prefix:x}})}n.deleteShader(w),n.deleteShader(_);let M;this.getUniforms=function(){return M===void 0&&(M=new _n(n,m)),M};let T;return this.getAttributes=function(){return T===void 0&&(T=H1(n,m)),T},this.destroy=function(){i.releaseStatesOfProgram(this),n.deleteProgram(m),this.program=void 0},this.name=t.shaderName,this.id=I1++,this.cacheKey=e,this.usedTimes=1,this.program=m,this.vertexShader=w,this.fragmentShader=_,this}var Q1=0,zu=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,n=this._getShaderStage(t),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(n)===!1&&(o.add(n),n.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache;return t.has(e)===!1&&t.set(e,new Set),t.get(e)}_getShaderStage(e){let t=this.shaderCache;if(t.has(e)===!1){let i=new Vu;t.set(e,i)}return t.get(e)}},Vu=class{constructor(){this.id=Q1++,this.usedTimes=0}};function e_(r,e,t,i,n,s,o){let a=new Pa,l=new zu,c=[],u=n.isWebGL2,h=n.logarithmicDepthBuffer,d=n.floatVertexTextures,p=n.maxVertexUniforms,m=n.vertexTextures,y=n.precision,x={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function g(v){let S=v.skeleton.bones;if(d)return 1024;{let L=Math.floor((p-20)/4),C=Math.min(L,S.length);return C0,ue=v.clearcoat>0;return{isWebGL2:u,shaderID:V,shaderName:v.type,vertexShader:q,fragmentShader:j,defines:v.defines,customVertexShaderID:ne,customFragmentShaderID:ae,isRawShaderMaterial:v.isRawShaderMaterial===!0,glslVersion:v.glslVersion,precision:y,instancing:L.isInstancedMesh===!0,instancingColor:L.isInstancedMesh===!0&&L.instanceColor!==null,supportsVertexTextures:m,outputEncoding:H===null?r.outputEncoding:H.isXRRenderTarget===!0?H.texture.encoding:An,map:!!v.map,matcap:!!v.matcap,envMap:!!k,envMapMode:k&&k.mapping,envMapCubeUV:!!k&&(k.mapping===ol||k.mapping===Wh),lightMap:!!v.lightMap,aoMap:!!v.aoMap,emissiveMap:!!v.emissiveMap,bumpMap:!!v.bumpMap,normalMap:!!v.normalMap,objectSpaceNormalMap:v.normalMapType===kv,tangentSpaceNormalMap:v.normalMapType===Xs,decodeVideoTexture:!!v.map&&v.map.isVideoTexture===!0&&v.map.encoding===it,clearcoat:ue,clearcoatMap:ue&&!!v.clearcoatMap,clearcoatRoughnessMap:ue&&!!v.clearcoatRoughnessMap,clearcoatNormalMap:ue&&!!v.clearcoatNormalMap,displacementMap:!!v.displacementMap,roughnessMap:!!v.roughnessMap,metalnessMap:!!v.metalnessMap,specularMap:!!v.specularMap,specularIntensityMap:!!v.specularIntensityMap,specularColorMap:!!v.specularColorMap,transparent:v.transparent,alphaMap:!!v.alphaMap,alphaTest:Te,gradientMap:!!v.gradientMap,sheen:v.sheen>0,sheenColorMap:!!v.sheenColorMap,sheenRoughnessMap:!!v.sheenRoughnessMap,transmission:v.transmission>0,transmissionMap:!!v.transmissionMap,thicknessMap:!!v.thicknessMap,combine:v.combine,vertexTangents:!!v.normalMap&&!!L.geometry&&!!L.geometry.attributes.tangent,vertexColors:v.vertexColors,vertexAlphas:v.vertexColors===!0&&!!L.geometry&&!!L.geometry.attributes.color&&L.geometry.attributes.color.itemSize===4,vertexUvs:!!v.map||!!v.bumpMap||!!v.normalMap||!!v.specularMap||!!v.alphaMap||!!v.emissiveMap||!!v.roughnessMap||!!v.metalnessMap||!!v.clearcoatMap||!!v.clearcoatRoughnessMap||!!v.clearcoatNormalMap||!!v.displacementMap||!!v.transmissionMap||!!v.thicknessMap||!!v.specularIntensityMap||!!v.specularColorMap||!!v.sheenColorMap||!!v.sheenRoughnessMap,uvsVertexOnly:!(v.map||v.bumpMap||v.normalMap||v.specularMap||v.alphaMap||v.emissiveMap||v.roughnessMap||v.metalnessMap||v.clearcoatNormalMap||v.transmission>0||v.transmissionMap||v.thicknessMap||v.specularIntensityMap||v.specularColorMap||v.sheen>0||v.sheenColorMap||v.sheenRoughnessMap)&&!!v.displacementMap,fog:!!C,useFog:v.fog,fogExp2:C&&C.isFogExp2,flatShading:!!v.flatShading,sizeAttenuation:v.sizeAttenuation,logarithmicDepthBuffer:h,skinning:L.isSkinnedMesh===!0&&U>0,maxBones:U,useVertexTexture:d,morphTargets:!!L.geometry&&!!L.geometry.morphAttributes.position,morphNormals:!!L.geometry&&!!L.geometry.morphAttributes.normal,morphTargetsCount:L.geometry&&L.geometry.morphAttributes.position?L.geometry.morphAttributes.position.length:0,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:v.dithering,shadowMapEnabled:r.shadowMap.enabled&&S.length>0,shadowMapType:r.shadowMap.type,toneMapping:v.toneMapped?r.toneMapping:vn,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:v.premultipliedAlpha,doubleSided:v.side===Bs,flipSided:v.side===wt,depthPacking:v.depthPacking!==void 0?v.depthPacking:!1,index0AttributeName:v.index0AttributeName,extensionDerivatives:v.extensions&&v.extensions.derivatives,extensionFragDepth:v.extensions&&v.extensions.fragDepth,extensionDrawBuffers:v.extensions&&v.extensions.drawBuffers,extensionShaderTextureLOD:v.extensions&&v.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:v.customProgramCacheKey()}}function E(v){let R=[];if(v.shaderID?R.push(v.shaderID):(R.push(v.customVertexShaderID),R.push(v.customFragmentShaderID)),v.defines!==void 0)for(let S in v.defines)R.push(S),R.push(v.defines[S]);return v.isRawShaderMaterial===!1&&(w(R,v),_(R,v),R.push(r.outputEncoding)),R.push(v.customProgramCacheKey),R.join()}function w(v,R){v.push(R.precision),v.push(R.outputEncoding),v.push(R.envMapMode),v.push(R.combine),v.push(R.vertexUvs),v.push(R.fogExp2),v.push(R.sizeAttenuation),v.push(R.maxBones),v.push(R.morphTargetsCount),v.push(R.numDirLights),v.push(R.numPointLights),v.push(R.numSpotLights),v.push(R.numHemiLights),v.push(R.numRectAreaLights),v.push(R.numDirLightShadows),v.push(R.numPointLightShadows),v.push(R.numSpotLightShadows),v.push(R.shadowMapType),v.push(R.toneMapping),v.push(R.numClippingPlanes),v.push(R.numClipIntersection)}function _(v,R){a.disableAll(),R.isWebGL2&&a.enable(0),R.supportsVertexTextures&&a.enable(1),R.instancing&&a.enable(2),R.instancingColor&&a.enable(3),R.map&&a.enable(4),R.matcap&&a.enable(5),R.envMap&&a.enable(6),R.envMapCubeUV&&a.enable(7),R.lightMap&&a.enable(8),R.aoMap&&a.enable(9),R.emissiveMap&&a.enable(10),R.bumpMap&&a.enable(11),R.normalMap&&a.enable(12),R.objectSpaceNormalMap&&a.enable(13),R.tangentSpaceNormalMap&&a.enable(14),R.clearcoat&&a.enable(15),R.clearcoatMap&&a.enable(16),R.clearcoatRoughnessMap&&a.enable(17),R.clearcoatNormalMap&&a.enable(18),R.displacementMap&&a.enable(19),R.specularMap&&a.enable(20),R.roughnessMap&&a.enable(21),R.metalnessMap&&a.enable(22),R.gradientMap&&a.enable(23),R.alphaMap&&a.enable(24),R.alphaTest&&a.enable(25),R.vertexColors&&a.enable(26),R.vertexAlphas&&a.enable(27),R.vertexUvs&&a.enable(28),R.vertexTangents&&a.enable(29),R.uvsVertexOnly&&a.enable(30),R.fog&&a.enable(31),v.push(a.mask),a.disableAll(),R.useFog&&a.enable(0),R.flatShading&&a.enable(1),R.logarithmicDepthBuffer&&a.enable(2),R.skinning&&a.enable(3),R.useVertexTexture&&a.enable(4),R.morphTargets&&a.enable(5),R.morphNormals&&a.enable(6),R.premultipliedAlpha&&a.enable(7),R.shadowMapEnabled&&a.enable(8),R.physicallyCorrectLights&&a.enable(9),R.doubleSided&&a.enable(10),R.flipSided&&a.enable(11),R.depthPacking&&a.enable(12),R.dithering&&a.enable(13),R.specularIntensityMap&&a.enable(14),R.specularColorMap&&a.enable(15),R.transmission&&a.enable(16),R.transmissionMap&&a.enable(17),R.thicknessMap&&a.enable(18),R.sheen&&a.enable(19),R.sheenColorMap&&a.enable(20),R.sheenRoughnessMap&&a.enable(21),R.decodeVideoTexture&&a.enable(22),R.transparent&&a.enable(23),v.push(a.mask)}function M(v){let R=x[v.type],S;if(R){let B=Ci[R];S=Kv.clone(B.uniforms)}else S=v.uniforms;return S}function T(v,R){let S;for(let B=0,L=c.length;B0?i.push(g):p.transparent===!0?n.push(g):t.push(g)}function l(h,d,p,m,y,x){let g=o(h,d,p,m,y,x);p.transmission>0?i.unshift(g):p.transparent===!0?n.unshift(g):t.unshift(g)}function c(h,d){t.length>1&&t.sort(h||i_),i.length>1&&i.sort(d||Yf),n.length>1&&n.sort(d||Yf)}function u(){for(let h=e,d=r.length;h=r.get(i).length?(s=new Zf,r.get(i).push(s)):s=r.get(i)[n],s}function t(){r=new WeakMap}return{get:e,dispose:t}}function s_(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new P,color:new ye};break;case"SpotLight":t={position:new P,direction:new P,color:new ye,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new P,color:new ye,distance:0,decay:0};break;case"HemisphereLight":t={direction:new P,skyColor:new ye,groundColor:new ye};break;case"RectAreaLight":t={color:new ye,position:new P,halfWidth:new P,halfHeight:new P};break}return r[e.id]=t,t}}}function r_(){let r={};return{get:function(e){if(r[e.id]!==void 0)return r[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ee};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ee};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ee,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[e.id]=t,t}}}var o_=0;function a_(r,e){return(e.castShadow?1:0)-(r.castShadow?1:0)}function l_(r,e){let t=new s_,i=r_(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let u=0;u<9;u++)n.probe.push(new P);let s=new P,o=new Ee,a=new Ee;function l(u,h){let d=0,p=0,m=0;for(let W=0;W<9;W++)n.probe[W].set(0,0,0);let y=0,x=0,g=0,f=0,E=0,w=0,_=0,M=0;u.sort(a_);let T=h!==!0?Math.PI:1;for(let W=0,A=u.length;W0&&(e.isWebGL2||r.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=re.LTC_FLOAT_1,n.rectAreaLTC2=re.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(n.rectAreaLTC1=re.LTC_HALF_1,n.rectAreaLTC2=re.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),n.ambient[0]=d,n.ambient[1]=p,n.ambient[2]=m;let z=n.hash;(z.directionalLength!==y||z.pointLength!==x||z.spotLength!==g||z.rectAreaLength!==f||z.hemiLength!==E||z.numDirectionalShadows!==w||z.numPointShadows!==_||z.numSpotShadows!==M)&&(n.directional.length=y,n.spot.length=g,n.rectArea.length=f,n.point.length=x,n.hemi.length=E,n.directionalShadow.length=w,n.directionalShadowMap.length=w,n.pointShadow.length=_,n.pointShadowMap.length=_,n.spotShadow.length=M,n.spotShadowMap.length=M,n.directionalShadowMatrix.length=w,n.pointShadowMatrix.length=_,n.spotShadowMatrix.length=M,z.directionalLength=y,z.pointLength=x,z.spotLength=g,z.rectAreaLength=f,z.hemiLength=E,z.numDirectionalShadows=w,z.numPointShadows=_,z.numSpotShadows=M,n.version=o_++)}function c(u,h){let d=0,p=0,m=0,y=0,x=0,g=h.matrixWorldInverse;for(let f=0,E=u.length;f=t.get(s).length?(a=new Jf(r,e),t.get(s).push(a)):a=t.get(s)[o],a}function n(){t=new WeakMap}return{get:i,dispose:n}}var Va=class extends mt{constructor(e){super(),this.type="MeshDepthMaterial",this.depthPacking=Iv,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}};Va.prototype.isMeshDepthMaterial=!0;var Ua=class extends mt{constructor(e){super(),this.type="MeshDistanceMaterial",this.referencePosition=new P,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Ua.prototype.isMeshDistanceMaterial=!0;var u_=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,h_=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function Um(r,e,t){let i=new Os,n=new ee,s=new ee,o=new je,a=new Va({depthPacking:Nv}),l=new Ua,c={},u=t.maxTextureSize,h={0:wt,1:Pr,2:Bs},d=new Ji({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ee},radius:{value:4}},vertexShader:u_,fragmentShader:h_}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let m=new Qe;m.setAttribute("position",new dt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let y=new ft(m,d),x=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Em,this.render=function(w,_,M){if(x.enabled===!1||x.autoUpdate===!1&&x.needsUpdate===!1||w.length===0)return;let T=r.getRenderTarget(),z=r.getActiveCubeFace(),W=r.getActiveMipmapLevel(),A=r.state;A.setBlending(xn),A.buffers.color.setClear(1,1,1,1),A.buffers.depth.setTest(!0),A.setScissorTest(!1);for(let v=0,R=w.length;vu||n.y>u)&&(n.x>u&&(s.x=Math.floor(u/L.x),n.x=s.x*L.x,B.mapSize.x=s.x),n.y>u&&(s.y=Math.floor(u/L.y),n.y=s.y*L.y,B.mapSize.y=s.y)),B.map===null&&!B.isPointLightShadow&&this.type===Tr){let N={minFilter:Ft,magFilter:Ft,format:kt};B.map=new Gt(n.x,n.y,N),B.map.texture.name=S.name+".shadowMap",B.mapPass=new Gt(n.x,n.y,N),B.camera.updateProjectionMatrix()}if(B.map===null){let N={minFilter:bt,magFilter:bt,format:kt};B.map=new Gt(n.x,n.y,N),B.map.texture.name=S.name+".shadowMap",B.camera.updateProjectionMatrix()}r.setRenderTarget(B.map),r.clear();let C=B.getViewportCount();for(let N=0;N0){let S=v.uuid,B=M.uuid,L=c[S];L===void 0&&(L={},c[S]=L);let C=L[B];C===void 0&&(C=v.clone(),L[B]=C),v=C}return v.visible=M.visible,v.wireframe=M.wireframe,A===Tr?v.side=M.shadowSide!==null?M.shadowSide:M.side:v.side=M.shadowSide!==null?M.shadowSide:h[M.side],v.alphaMap=M.alphaMap,v.alphaTest=M.alphaTest,v.clipShadows=M.clipShadows,v.clippingPlanes=M.clippingPlanes,v.clipIntersection=M.clipIntersection,v.displacementMap=M.displacementMap,v.displacementScale=M.displacementScale,v.displacementBias=M.displacementBias,v.wireframeLinewidth=M.wireframeLinewidth,v.linewidth=M.linewidth,T.isPointLight===!0&&v.isMeshDistanceMaterial===!0&&(v.referencePosition.setFromMatrixPosition(T.matrixWorld),v.nearDistance=z,v.farDistance=W),v}function E(w,_,M,T,z){if(w.visible===!1)return;if(w.layers.test(_.layers)&&(w.isMesh||w.isLine||w.isPoints)&&(w.castShadow||w.receiveShadow&&z===Tr)&&(!w.frustumCulled||i.intersectsObject(w))){w.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,w.matrixWorld);let v=e.update(w),R=w.material;if(Array.isArray(R)){let S=v.groups;for(let B=0,L=S.length;B=1):C.indexOf("OpenGL ES")!==-1&&(L=parseFloat(/^OpenGL ES (\d)/.exec(C)[1]),B=L>=2);let N=null,k={},V=r.getParameter(3088),U=r.getParameter(2978),q=new je().fromArray(V),j=new je().fromArray(U);function ne(O,ge,pe){let Me=new Uint8Array(4),K=r.createTexture();r.bindTexture(O,K),r.texParameteri(O,10241,9728),r.texParameteri(O,10240,9728);for(let _e=0;_ese||I.height>se)&&(xe=se/Math.max(I.width,I.height)),xe<1||D===!0)if(typeof HTMLImageElement<"u"&&I instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&I instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&I instanceof ImageBitmap){let Y=D?Vv:Math.floor,be=Y(xe*I.width),ve=Y(xe*I.height);y===void 0&&(y=g(be,ve));let he=J?g(be,ve):y;return he.width=be,he.height=ve,he.getContext("2d").drawImage(I,0,0,be,ve),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+I.width+"x"+I.height+") to ("+be+"x"+ve+")."),he}else return"data"in I&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+I.width+"x"+I.height+")."),I;return I}function E(I){return xf(I.width)&&xf(I.height)}function w(I){return a?!1:I.wrapS!==Qt||I.wrapT!==Qt||I.minFilter!==bt&&I.minFilter!==Ft}function _(I,D){return I.generateMipmaps&&D&&I.minFilter!==bt&&I.minFilter!==Ft}function M(I){r.generateMipmap(I)}function T(I,D,J,se,xe=!1){if(a===!1)return D;if(I!==null){if(r[I]!==void 0)return r[I];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+I+"'")}let Y=D;return D===6403&&(J===5126&&(Y=33326),J===5131&&(Y=33325),J===5121&&(Y=33321)),D===33319&&(J===5126&&(Y=33328),J===5131&&(Y=33327),J===5121&&(Y=33323)),D===6408&&(J===5126&&(Y=34836),J===5131&&(Y=34842),J===5121&&(Y=se===it&&xe===!1?35907:32856),J===32819&&(Y=32854),J===32820&&(Y=32855)),(Y===33325||Y===33326||Y===33327||Y===33328||Y===34842||Y===34836)&&e.get("EXT_color_buffer_float"),Y}function z(I,D,J){return _(I,J)===!0||I.isFramebufferTexture&&I.minFilter!==bt&&I.minFilter!==Ft?Math.log2(Math.max(D.width,D.height))+1:I.mipmaps!==void 0&&I.mipmaps.length>0?I.mipmaps.length:I.isCompressedTexture&&Array.isArray(I.image)?D.mipmaps.length:1}function W(I){return I===bt||I===jp||I===Xp?9728:9729}function A(I){let D=I.target;D.removeEventListener("dispose",A),R(D),D.isVideoTexture&&m.delete(D),o.memory.textures--}function v(I){let D=I.target;D.removeEventListener("dispose",v),S(D)}function R(I){let D=i.get(I);D.__webglInit!==void 0&&(r.deleteTexture(D.__webglTexture),i.remove(I))}function S(I){let D=I.texture,J=i.get(I),se=i.get(D);if(I){if(se.__webglTexture!==void 0&&(r.deleteTexture(se.__webglTexture),o.memory.textures--),I.depthTexture&&I.depthTexture.dispose(),I.isWebGLCubeRenderTarget)for(let xe=0;xe<6;xe++)r.deleteFramebuffer(J.__webglFramebuffer[xe]),J.__webglDepthbuffer&&r.deleteRenderbuffer(J.__webglDepthbuffer[xe]);else r.deleteFramebuffer(J.__webglFramebuffer),J.__webglDepthbuffer&&r.deleteRenderbuffer(J.__webglDepthbuffer),J.__webglMultisampledFramebuffer&&r.deleteFramebuffer(J.__webglMultisampledFramebuffer),J.__webglColorRenderbuffer&&r.deleteRenderbuffer(J.__webglColorRenderbuffer),J.__webglDepthRenderbuffer&&r.deleteRenderbuffer(J.__webglDepthRenderbuffer);if(I.isWebGLMultipleRenderTargets)for(let xe=0,Y=D.length;xe=l&&console.warn("THREE.WebGLTextures: Trying to use "+I+" texture units while this GPU supports only "+l),B+=1,I}function N(I,D){let J=i.get(I);if(I.isVideoTexture&&de(I),I.version>0&&J.__version!==I.version){let se=I.image;if(se===void 0)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(se.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{H(J,I,D);return}}t.activeTexture(33984+D),t.bindTexture(3553,J.__webglTexture)}function k(I,D){let J=i.get(I);if(I.version>0&&J.__version!==I.version){H(J,I,D);return}t.activeTexture(33984+D),t.bindTexture(35866,J.__webglTexture)}function V(I,D){let J=i.get(I);if(I.version>0&&J.__version!==I.version){H(J,I,D);return}t.activeTexture(33984+D),t.bindTexture(32879,J.__webglTexture)}function U(I,D){let J=i.get(I);if(I.version>0&&J.__version!==I.version){Te(J,I,D);return}t.activeTexture(33984+D),t.bindTexture(34067,J.__webglTexture)}let q={[Lu]:10497,[Qt]:33071,[Bu]:33648},j={[bt]:9728,[jp]:9984,[Xp]:9986,[Ft]:9729,[mv]:9985,[al]:9987};function ne(I,D,J){if(J?(r.texParameteri(I,10242,q[D.wrapS]),r.texParameteri(I,10243,q[D.wrapT]),(I===32879||I===35866)&&r.texParameteri(I,32882,q[D.wrapR]),r.texParameteri(I,10240,j[D.magFilter]),r.texParameteri(I,10241,j[D.minFilter])):(r.texParameteri(I,10242,33071),r.texParameteri(I,10243,33071),(I===32879||I===35866)&&r.texParameteri(I,32882,33071),(D.wrapS!==Qt||D.wrapT!==Qt)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(I,10240,W(D.magFilter)),r.texParameteri(I,10241,W(D.minFilter)),D.minFilter!==bt&&D.minFilter!==Ft&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let se=e.get("EXT_texture_filter_anisotropic");if(D.type===Un&&e.has("OES_texture_float_linear")===!1||a===!1&&D.type===Cs&&e.has("OES_texture_half_float_linear")===!1)return;(D.anisotropy>1||i.get(D).__currentAnisotropy)&&(r.texParameterf(I,se.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,n.getMaxAnisotropy())),i.get(D).__currentAnisotropy=D.anisotropy)}}function ae(I,D){I.__webglInit===void 0&&(I.__webglInit=!0,D.addEventListener("dispose",A),I.__webglTexture=r.createTexture(),o.memory.textures++)}function H(I,D,J){let se=3553;D.isDataTexture2DArray&&(se=35866),D.isDataTexture3D&&(se=32879),ae(I,D),t.activeTexture(33984+J),t.bindTexture(se,I.__webglTexture),r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let xe=w(D)&&E(D.image)===!1,Y=f(D.image,xe,!1,u);Y=Se(D,Y);let be=E(Y)||a,ve=s.convert(D.format,D.encoding),he=s.convert(D.type),ce=T(D.internalFormat,ve,he,D.encoding,D.isVideoTexture);ne(se,D,be);let Le,O=D.mipmaps,ge=a&&D.isVideoTexture!==!0,pe=I.__version===void 0,Me=z(D,Y,be);if(D.isDepthTexture)ce=6402,a?D.type===Un?ce=36012:D.type===Ca?ce=33190:D.type===Rs?ce=35056:ce=33189:D.type===Un&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),D.format===Gn&&ce===6402&&D.type!==Ir&&D.type!==Ca&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),D.type=Ir,he=s.convert(D.type)),D.format===Ps&&ce===6402&&(ce=34041,D.type!==Rs&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),D.type=Rs,he=s.convert(D.type))),ge&&pe?t.texStorage2D(3553,1,ce,Y.width,Y.height):t.texImage2D(3553,0,ce,Y.width,Y.height,0,ve,he,null);else if(D.isDataTexture)if(O.length>0&&be){ge&&pe&&t.texStorage2D(3553,Me,ce,O[0].width,O[0].height);for(let K=0,_e=O.length;K<_e;K++)Le=O[K],ge?t.texSubImage2D(3553,0,0,0,Le.width,Le.height,ve,he,Le.data):t.texImage2D(3553,K,ce,Le.width,Le.height,0,ve,he,Le.data);D.generateMipmaps=!1}else ge?(pe&&t.texStorage2D(3553,Me,ce,Y.width,Y.height),t.texSubImage2D(3553,0,0,0,Y.width,Y.height,ve,he,Y.data)):t.texImage2D(3553,0,ce,Y.width,Y.height,0,ve,he,Y.data);else if(D.isCompressedTexture){ge&&pe&&t.texStorage2D(3553,Me,ce,O[0].width,O[0].height);for(let K=0,_e=O.length;K<_e;K++)Le=O[K],D.format!==kt?ve!==null?ge?t.compressedTexSubImage2D(3553,K,0,0,Le.width,Le.height,ve,Le.data):t.compressedTexImage2D(3553,K,ce,Le.width,Le.height,0,Le.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):ge?t.texSubImage2D(3553,K,0,0,Le.width,Le.height,ve,he,Le.data):t.texImage2D(3553,K,ce,Le.width,Le.height,0,ve,he,Le.data)}else if(D.isDataTexture2DArray)ge?(pe&&t.texStorage3D(35866,Me,ce,Y.width,Y.height,Y.depth),t.texSubImage3D(35866,0,0,0,0,Y.width,Y.height,Y.depth,ve,he,Y.data)):t.texImage3D(35866,0,ce,Y.width,Y.height,Y.depth,0,ve,he,Y.data);else if(D.isDataTexture3D)ge?(pe&&t.texStorage3D(32879,Me,ce,Y.width,Y.height,Y.depth),t.texSubImage3D(32879,0,0,0,0,Y.width,Y.height,Y.depth,ve,he,Y.data)):t.texImage3D(32879,0,ce,Y.width,Y.height,Y.depth,0,ve,he,Y.data);else if(D.isFramebufferTexture)ge&&pe?t.texStorage2D(3553,Me,ce,Y.width,Y.height):t.texImage2D(3553,0,ce,Y.width,Y.height,0,ve,he,null);else if(O.length>0&&be){ge&&pe&&t.texStorage2D(3553,Me,ce,O[0].width,O[0].height);for(let K=0,_e=O.length;K<_e;K++)Le=O[K],ge?t.texSubImage2D(3553,K,0,0,ve,he,Le):t.texImage2D(3553,K,ce,ve,he,Le);D.generateMipmaps=!1}else ge?(pe&&t.texStorage2D(3553,Me,ce,Y.width,Y.height),t.texSubImage2D(3553,0,0,0,ve,he,Y)):t.texImage2D(3553,0,ce,ve,he,Y);_(D,be)&&M(se),I.__version=D.version,D.onUpdate&&D.onUpdate(D)}function Te(I,D,J){if(D.image.length!==6)return;ae(I,D),t.activeTexture(33984+J),t.bindTexture(34067,I.__webglTexture),r.pixelStorei(37440,D.flipY),r.pixelStorei(37441,D.premultiplyAlpha),r.pixelStorei(3317,D.unpackAlignment),r.pixelStorei(37443,0);let se=D&&(D.isCompressedTexture||D.image[0].isCompressedTexture),xe=D.image[0]&&D.image[0].isDataTexture,Y=[];for(let K=0;K<6;K++)!se&&!xe?Y[K]=f(D.image[K],!1,!0,c):Y[K]=xe?D.image[K].image:D.image[K],Y[K]=Se(D,Y[K]);let be=Y[0],ve=E(be)||a,he=s.convert(D.format,D.encoding),ce=s.convert(D.type),Le=T(D.internalFormat,he,ce,D.encoding),O=a&&D.isVideoTexture!==!0,ge=I.__version===void 0,pe=z(D,be,ve);ne(34067,D,ve);let Me;if(se){O&&ge&&t.texStorage2D(34067,pe,Le,be.width,be.height);for(let K=0;K<6;K++){Me=Y[K].mipmaps;for(let _e=0;_e0&&pe++,t.texStorage2D(34067,pe,Le,Y[0].width,Y[0].height));for(let K=0;K<6;K++)if(xe){O?t.texSubImage2D(34069+K,0,0,0,Y[K].width,Y[K].height,he,ce,Y[K].data):t.texImage2D(34069+K,0,Le,Y[K].width,Y[K].height,0,he,ce,Y[K].data);for(let _e=0;_ep+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=p-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));return a!==null&&(a.visible=n!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=o!==null),this}},$r=class extends ct{constructor(e,t,i,n,s,o,a,l,c,u){if(u=u!==void 0?u:Gn,u!==Gn&&u!==Ps)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===Gn&&(i=Ir),i===void 0&&u===Ps&&(i=Rs),super(null,n,s,o,a,l,u,i,c),this.image={width:e,height:t},this.magFilter=a!==void 0?a:bt,this.minFilter=l!==void 0?l:bt,this.flipY=!1,this.generateMipmaps=!1}};$r.prototype.isDepthTexture=!0;var Uu=class extends Yi{constructor(e,t){super();let i=this,n=null,s=1,o=null,a="local-floor",l=e.extensions.has("WEBGL_multisampled_render_to_texture"),c=null,u=null,h=null,d=null,p=!1,m=null,y=t.getContextAttributes(),x=null,g=null,f=[],E=new Map,w=new Mt;w.layers.enable(1),w.viewport=new je;let _=new Mt;_.layers.enable(2),_.viewport=new je;let M=[w,_],T=new Ha;T.layers.enable(1),T.layers.enable(2);let z=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(U){let q=f[U];return q===void 0&&(q=new Fr,f[U]=q),q.getTargetRaySpace()},this.getControllerGrip=function(U){let q=f[U];return q===void 0&&(q=new Fr,f[U]=q),q.getGripSpace()},this.getHand=function(U){let q=f[U];return q===void 0&&(q=new Fr,f[U]=q),q.getHandSpace()};function A(U){let q=E.get(U.inputSource);q&&q.dispatchEvent({type:U.type,data:U.inputSource})}function v(){E.forEach(function(U,q){U.disconnect(q)}),E.clear(),z=null,W=null,e.setRenderTarget(x),d=null,h=null,u=null,n=null,g=null,V.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(U){s=U,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(U){a=U,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return o},this.getBaseLayer=function(){return h!==null?h:d},this.getBinding=function(){return u},this.getFrame=function(){return m},this.getSession=function(){return n},this.setSession=async function(U){if(n=U,n!==null){if(x=e.getRenderTarget(),n.addEventListener("select",A),n.addEventListener("selectstart",A),n.addEventListener("selectend",A),n.addEventListener("squeeze",A),n.addEventListener("squeezestart",A),n.addEventListener("squeezeend",A),n.addEventListener("end",v),n.addEventListener("inputsourceschange",R),y.xrCompatible!==!0&&await t.makeXRCompatible(),n.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let q={antialias:n.renderState.layers===void 0?y.antialias:!0,alpha:y.alpha,depth:y.depth,stencil:y.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(n,t,q),n.updateRenderState({baseLayer:d}),g=new Gt(d.framebufferWidth,d.framebufferHeight,{format:kt,type:wn,encoding:e.outputEncoding})}else{p=y.antialias;let q=null,j=null,ne=null;y.depth&&(ne=y.stencil?35056:33190,q=y.stencil?Ps:Gn,j=y.stencil?Rs:Ir);let ae={colorFormat:e.outputEncoding===it?35907:32856,depthFormat:ne,scaleFactor:s};u=new XRWebGLBinding(n,t),h=u.createProjectionLayer(ae),n.updateRenderState({layers:[h]}),p?g=new Or(h.textureWidth,h.textureHeight,{format:kt,type:wn,depthTexture:new $r(h.textureWidth,h.textureHeight,j,void 0,void 0,void 0,void 0,void 0,void 0,q),stencilBuffer:y.stencil,ignoreDepth:h.ignoreDepthValues,useRenderToTexture:l,encoding:e.outputEncoding}):g=new Gt(h.textureWidth,h.textureHeight,{format:kt,type:wn,depthTexture:new $r(h.textureWidth,h.textureHeight,j,void 0,void 0,void 0,void 0,void 0,void 0,q),stencilBuffer:y.stencil,ignoreDepth:h.ignoreDepthValues,encoding:e.outputEncoding})}g.isXRRenderTarget=!0,this.setFoveation(1),o=await n.requestReferenceSpace(a),V.setContext(n),V.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};function R(U){let q=n.inputSources;for(let j=0;j0&&(g.alphaTest.value=f.alphaTest);let E=r.get(f).envMap;E&&(g.envMap.value=E,g.flipEnvMap.value=E.isCubeTexture&&E.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=f.reflectivity,g.ior.value=f.ior,g.refractionRatio.value=f.refractionRatio),f.lightMap&&(g.lightMap.value=f.lightMap,g.lightMapIntensity.value=f.lightMapIntensity),f.aoMap&&(g.aoMap.value=f.aoMap,g.aoMapIntensity.value=f.aoMapIntensity);let w;f.map?w=f.map:f.specularMap?w=f.specularMap:f.displacementMap?w=f.displacementMap:f.normalMap?w=f.normalMap:f.bumpMap?w=f.bumpMap:f.roughnessMap?w=f.roughnessMap:f.metalnessMap?w=f.metalnessMap:f.alphaMap?w=f.alphaMap:f.emissiveMap?w=f.emissiveMap:f.clearcoatMap?w=f.clearcoatMap:f.clearcoatNormalMap?w=f.clearcoatNormalMap:f.clearcoatRoughnessMap?w=f.clearcoatRoughnessMap:f.specularIntensityMap?w=f.specularIntensityMap:f.specularColorMap?w=f.specularColorMap:f.transmissionMap?w=f.transmissionMap:f.thicknessMap?w=f.thicknessMap:f.sheenColorMap?w=f.sheenColorMap:f.sheenRoughnessMap&&(w=f.sheenRoughnessMap),w!==void 0&&(w.isWebGLRenderTarget&&(w=w.texture),w.matrixAutoUpdate===!0&&w.updateMatrix(),g.uvTransform.value.copy(w.matrix));let _;f.aoMap?_=f.aoMap:f.lightMap&&(_=f.lightMap),_!==void 0&&(_.isWebGLRenderTarget&&(_=_.texture),_.matrixAutoUpdate===!0&&_.updateMatrix(),g.uv2Transform.value.copy(_.matrix))}function n(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity}function s(g,f){g.dashSize.value=f.dashSize,g.totalSize.value=f.dashSize+f.gapSize,g.scale.value=f.scale}function o(g,f,E,w){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.size.value=f.size*E,g.scale.value=w*.5,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let _;f.map?_=f.map:f.alphaMap&&(_=f.alphaMap),_!==void 0&&(_.matrixAutoUpdate===!0&&_.updateMatrix(),g.uvTransform.value.copy(_.matrix))}function a(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.rotation.value=f.rotation,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let E;f.map?E=f.map:f.alphaMap&&(E=f.alphaMap),E!==void 0&&(E.matrixAutoUpdate===!0&&E.updateMatrix(),g.uvTransform.value.copy(E.matrix))}function l(g,f){f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap)}function c(g,f){g.specular.value.copy(f.specular),g.shininess.value=Math.max(f.shininess,1e-4),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===wt&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===wt&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias)}function u(g,f){f.gradientMap&&(g.gradientMap.value=f.gradientMap),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===wt&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===wt&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias)}function h(g,f){g.roughness.value=f.roughness,g.metalness.value=f.metalness,f.roughnessMap&&(g.roughnessMap.value=f.roughnessMap),f.metalnessMap&&(g.metalnessMap.value=f.metalnessMap),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===wt&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===wt&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),r.get(f).envMap&&(g.envMapIntensity.value=f.envMapIntensity)}function d(g,f,E){h(g,f),g.ior.value=f.ior,f.sheen>0&&(g.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),g.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(g.sheenColorMap.value=f.sheenColorMap),f.sheenRoughnessMap&&(g.sheenRoughnessMap.value=f.sheenRoughnessMap)),f.clearcoat>0&&(g.clearcoat.value=f.clearcoat,g.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(g.clearcoatMap.value=f.clearcoatMap),f.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap),f.clearcoatNormalMap&&(g.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),g.clearcoatNormalMap.value=f.clearcoatNormalMap,f.side===wt&&g.clearcoatNormalScale.value.negate())),f.transmission>0&&(g.transmission.value=f.transmission,g.transmissionSamplerMap.value=E.texture,g.transmissionSamplerSize.value.set(E.width,E.height),f.transmissionMap&&(g.transmissionMap.value=f.transmissionMap),g.thickness.value=f.thickness,f.thicknessMap&&(g.thicknessMap.value=f.thicknessMap),g.attenuationDistance.value=f.attenuationDistance,g.attenuationColor.value.copy(f.attenuationColor)),g.specularIntensity.value=f.specularIntensity,g.specularColor.value.copy(f.specularColor),f.specularIntensityMap&&(g.specularIntensityMap.value=f.specularIntensityMap),f.specularColorMap&&(g.specularColorMap.value=f.specularColorMap)}function p(g,f){f.matcap&&(g.matcap.value=f.matcap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===wt&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===wt&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias)}function m(g,f){f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias)}function y(g,f){f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),g.referencePosition.value.copy(f.referencePosition),g.nearDistance.value=f.nearDistance,g.farDistance.value=f.farDistance}function x(g,f){f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===wt&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===wt&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias)}return{refreshFogUniforms:e,refreshMaterialUniforms:t}}function y_(){let r=kr("canvas");return r.style.display="block",r}function We(r={}){let e=r.canvas!==void 0?r.canvas:y_(),t=r.context!==void 0?r.context:null,i=r.alpha!==void 0?r.alpha:!1,n=r.depth!==void 0?r.depth:!0,s=r.stencil!==void 0?r.stencil:!0,o=r.antialias!==void 0?r.antialias:!1,a=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,l=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",u=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h=null,d=null,p=[],m=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=An,this.physicallyCorrectLights=!1,this.toneMapping=vn,this.toneMappingExposure=1;let y=this,x=!1,g=0,f=0,E=null,w=-1,_=null,M=new je,T=new je,z=null,W=e.width,A=e.height,v=1,R=null,S=null,B=new je(0,0,W,A),L=new je(0,0,W,A),C=!1,N=new Os,k=!1,V=!1,U=null,q=new Ee,j=new P,ne={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ae(){return E===null?v:1}let H=t;function Te(F,G){for(let X=0;X0?d=m[m.length-1]:d=null,p.pop(),p.length>0?h=p[p.length-1]:h=null};function at(F,G,X,$){if(F.visible===!1)return;if(F.layers.test(G.layers)){if(F.isGroup)X=F.renderOrder;else if(F.isLOD)F.autoUpdate===!0&&F.update(G);else if(F.isLight)d.pushLight(F),F.castShadow&&d.pushShadow(F);else if(F.isSprite){if(!F.frustumCulled||N.intersectsSprite(F)){$&&j.setFromMatrixPosition(F.matrixWorld).applyMatrix4(q);let Be=Se.update(F),Ie=F.material;Ie.visible&&h.push(F,Be,Ie,X,j.z,null)}}else if((F.isMesh||F.isLine||F.isPoints)&&(F.isSkinnedMesh&&F.skeleton.frame!==Ce.render.frame&&(F.skeleton.update(),F.skeleton.frame=Ce.render.frame),!F.frustumCulled||N.intersectsObject(F))){$&&j.setFromMatrixPosition(F.matrixWorld).applyMatrix4(q);let Be=Se.update(F),Ie=F.material;if(Array.isArray(Ie)){let Pe=Be.groups;for(let $e=0,ze=Pe.length;$e0&&Ii(Q,G,X),$&&oe.viewport(M.copy($)),Q.length>0&&Po(Q,G,X),Fe.length>0&&Po(Fe,G,X),Be.length>0&&Po(Be,G,X)}function Ii(F,G,X){if(U===null){let Be=o===!0&&we.isWebGL2===!0?Or:Gt;U=new Be(1024,1024,{generateMipmaps:!0,type:be.convert(Cs)!==null?Cs:wn,minFilter:al,magFilter:bt,wrapS:Qt,wrapT:Qt,useRenderToTexture:ue.has("WEBGL_multisampled_render_to_texture")})}let $=y.getRenderTarget();y.setRenderTarget(U),y.clear();let Q=y.toneMapping;y.toneMapping=vn,Po(F,G,X),y.toneMapping=Q,Z.updateMultisampleRenderTarget(U),Z.updateRenderTargetMipmap(U),y.setRenderTarget($)}function Po(F,G,X){let $=G.isScene===!0?G.overrideMaterial:null;for(let Q=0,Fe=F.length;Q=0&&G<=F.width-$&&X>=0&&X<=F.height-Q&&H.readPixels(G,X,$,Q,be.convert($e),be.convert(ze),Fe):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{let Pe=E!==null?Ae.get(E).__webglFramebuffer:null;oe.bindFramebuffer(36160,Pe)}}},this.copyFramebufferToTexture=function(F,G,X=0){if(G.isFramebufferTexture!==!0){console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");return}let $=Math.pow(2,-X),Q=Math.floor(G.image.width*$),Fe=Math.floor(G.image.height*$);Z.setTexture2D(G,0),H.copyTexSubImage2D(3553,X,0,0,F.x,F.y,Q,Fe),oe.unbindTexture()},this.copyTextureToTexture=function(F,G,X,$=0){let Q=G.image.width,Fe=G.image.height,Be=be.convert(X.format),Ie=be.convert(X.type);Z.setTexture2D(X,0),H.pixelStorei(37440,X.flipY),H.pixelStorei(37441,X.premultiplyAlpha),H.pixelStorei(3317,X.unpackAlignment),G.isDataTexture?H.texSubImage2D(3553,$,F.x,F.y,Q,Fe,Be,Ie,G.image.data):G.isCompressedTexture?H.compressedTexSubImage2D(3553,$,F.x,F.y,G.mipmaps[0].width,G.mipmaps[0].height,Be,G.mipmaps[0].data):H.texSubImage2D(3553,$,F.x,F.y,Be,Ie,G.image),$===0&&X.generateMipmaps&&H.generateMipmap(3553),oe.unbindTexture()},this.copyTextureToTexture3D=function(F,G,X,$,Q=0){if(y.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Fe=F.max.x-F.min.x+1,Be=F.max.y-F.min.y+1,Ie=F.max.z-F.min.z+1,Pe=be.convert($.format),$e=be.convert($.type),ze;if($.isDataTexture3D)Z.setTexture3D($,0),ze=32879;else if($.isDataTexture2DArray)Z.setTexture2DArray($,0),ze=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}H.pixelStorei(37440,$.flipY),H.pixelStorei(37441,$.premultiplyAlpha),H.pixelStorei(3317,$.unpackAlignment);let Ve=H.getParameter(3314),lt=H.getParameter(32878),Pn=H.getParameter(3316),ns=H.getParameter(3315),He=H.getParameter(32877),wi=X.isCompressedTexture?X.mipmaps[0]:X.image;H.pixelStorei(3314,wi.width),H.pixelStorei(32878,wi.height),H.pixelStorei(3316,F.min.x),H.pixelStorei(3315,F.min.y),H.pixelStorei(32877,F.min.z),X.isDataTexture||X.isDataTexture3D?H.texSubImage3D(ze,Q,G.x,G.y,G.z,Fe,Be,Ie,Pe,$e,wi.data):X.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),H.compressedTexSubImage3D(ze,Q,G.x,G.y,G.z,Fe,Be,Ie,Pe,wi.data)):H.texSubImage3D(ze,Q,G.x,G.y,G.z,Fe,Be,Ie,Pe,$e,wi),H.pixelStorei(3314,Ve),H.pixelStorei(32878,lt),H.pixelStorei(3316,Pn),H.pixelStorei(3315,ns),H.pixelStorei(32877,He),Q===0&&$.generateMipmaps&&H.generateMipmap(ze),oe.unbindTexture()},this.initTexture=function(F){Z.setTexture2D(F,0),oe.unbindTexture()},this.resetState=function(){g=0,f=0,E=null,oe.reset(),ve.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}We.prototype.isWebGLRenderer=!0;var Hu=class extends We{};Hu.prototype.isWebGL1Renderer=!0;var Gu=class r{constructor(e,t=25e-5){this.name="",this.color=new ye(e),this.density=t}clone(){return new r(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}};Gu.prototype.isFogExp2=!0;var qu=class r{constructor(e,t=1,i=1e3){this.name="",this.color=new ye(e),this.near=t,this.far=i}clone(){return new r(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}};qu.prototype.isFog=!0;var Vs=class extends qe{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}};Vs.prototype.isScene=!0;var qn=class{constructor(e,t){this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Nr,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=fi()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let n=0,s=this.stride;ne.far||t.push({distance:l,point:Er.clone(),uv:Bt.getUV(Er,ga,Sr,ya,Kf,_u,Qf,new ee),face:null,object:this})}copy(e){return super.copy(e),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};Wu.prototype.isSprite=!0;function xa(r,e,t,i,n,s){As.subVectors(r,t).addScalar(.5).multiply(i),n!==void 0?(Ar.x=s*As.x-n*As.y,Ar.y=n*As.x+s*As.y):Ar.copy(As),r.copy(e),r.x+=Ar.x,r.y+=Ar.y,r.applyMatrix4(Hm)}var em=new P,tm=new je,im=new je,x_=new P,nm=new Ee,qa=class extends ft{constructor(e,t){super(e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Ee,this.bindMatrixInverse=new Ee}copy(e){return super.copy(e),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let e=new je,t=this.geometry.attributes.skinWeight;for(let i=0,n=t.count;il)continue;d.applyMatrix4(this.matrixWorld);let z=e.ray.origin.distanceTo(d);ze.far||t.push({distance:z,point:h.clone().applyMatrix4(this.matrixWorld),index:E,face:null,faceIndex:null,object:this})}}else{let g=Math.max(0,o.start),f=Math.min(x.count,o.start+o.count);for(let E=g,w=f-1;El)continue;d.applyMatrix4(this.matrixWorld);let M=e.ray.origin.distanceTo(d);Me.far||t.push({distance:M,point:h.clone().applyMatrix4(this.matrixWorld),index:E,face:null,faceIndex:null,object:this})}}}else i.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){let e=this.geometry;if(e.isBufferGeometry){let t=e.morphAttributes,i=Object.keys(t);if(i.length>0){let n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=n.length;s0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}};Yr.prototype.isLine=!0;var cm=new P,um=new P,Zr=class extends Yr{constructor(e,t){super(e,t),this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.isBufferGeometry)if(e.index===null){let t=e.attributes.position,i=[];for(let n=0,s=t.count;n0){let n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=n.length;s0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}};Ju.prototype.isPoints=!0;function dm(r,e,t,i,n,s,o){let a=Zu.distanceSqToPoint(r);if(an.far)return;s.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}var Ku=class extends ct{constructor(e,t,i,n,s,o,a,l,c){super(e,t,i,n,s,o,a,l,c),this.minFilter=o!==void 0?o:Ft,this.magFilter=s!==void 0?s:Ft,this.generateMipmaps=!1;let u=this;function h(){u.needsUpdate=!0,e.requestVideoFrameCallback(h)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(h)}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}};Ku.prototype.isVideoTexture=!0;var Qu=class extends ct{constructor(e,t,i){super({width:e,height:t}),this.format=i,this.magFilter=bt,this.minFilter=bt,this.generateMipmaps=!1,this.needsUpdate=!0}};Qu.prototype.isFramebufferTexture=!0;var eh=class extends ct{constructor(e,t,i,n,s,o,a,l,c,u,h,d){super(null,o,a,l,c,u,n,s,h,d),this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}};eh.prototype.isCompressedTexture=!0;var th=class extends ct{constructor(e,t,i,n,s,o,a,l,c){super(e,t,i,n,s,o,a,l,c),this.needsUpdate=!0}};th.prototype.isCanvasTexture=!0;var MM=new P,DM=new P,TM=new P,CM=new Bt;var qt=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],i,n=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)i=this.getPoint(o/e),s+=i.distanceTo(n),t.push(s),n=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i=this.getLengths(),n=0,s=i.length,o;t?o=t:o=e*i[s-1];let a=0,l=s-1,c;for(;a<=l;)if(n=Math.floor(a+(l-a)/2),c=i[n]-o,c<0)a=n+1;else if(c>0)l=n-1;else{l=n;break}if(n=l,i[n]===o)return n/(s-1);let u=i[n],d=i[n+1]-u,p=(o-u)/d;return(n+p)/(s-1)}getTangent(e,t){let n=e-1e-4,s=e+1e-4;n<0&&(n=0),s>1&&(s=1);let o=this.getPoint(n),a=this.getPoint(s),l=t||(o.isVector2?new ee:new P);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new P,n=[],s=[],o=[],a=new P,l=new Ee;for(let p=0;p<=e;p++){let m=p/e;n[p]=this.getTangentAt(m,new P)}s[0]=new P,o[0]=new P;let c=Number.MAX_VALUE,u=Math.abs(n[0].x),h=Math.abs(n[0].y),d=Math.abs(n[0].z);u<=c&&(c=u,i.set(1,0,0)),h<=c&&(c=h,i.set(0,1,0)),d<=c&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),s[0].crossVectors(n[0],a),o[0].crossVectors(n[0],s[0]);for(let p=1;p<=e;p++){if(s[p]=s[p-1].clone(),o[p]=o[p-1].clone(),a.crossVectors(n[p-1],n[p]),a.length()>Number.EPSILON){a.normalize();let m=Math.acos(Ht(n[p-1].dot(n[p]),-1,1));s[p].applyMatrix4(l.makeRotationAxis(a,m))}o[p].crossVectors(n[p],s[p])}if(t===!0){let p=Math.acos(Ht(s[0].dot(s[e]),-1,1));p/=e,n[0].dot(a.crossVectors(s[0],s[e]))>0&&(p=-p);for(let m=1;m<=e;m++)s[m].applyMatrix4(l.makeRotationAxis(n[m],p*m)),o[m].crossVectors(n[m],s[m])}return{tangents:n,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Us=class extends qt{constructor(e=0,t=0,i=1,n=1,s=0,o=Math.PI*2,a=!1,l=0){super(),this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=n,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){let i=t||new ee,n=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)n;)s-=n;s0?0:(Math.floor(Math.abs(a)/s)+1)*s:l===0&&a===s-1&&(a=s-2,l=1);let c,u;this.closed||a>0?c=n[(a-1)%s]:(Ea.subVectors(n[0],n[1]).add(n[0]),c=Ea);let h=n[a%s],d=n[(a+1)%s];if(this.closed||a+2n.length-2?n.length-1:o+1],h=n[o>n.length-3?n.length-1:o+2];return i.set(pm(a,l.x,c.x,u.x,h.x),pm(a,l.y,c.y,u.y,h.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){let o=n[s]-i,a=this.curves[s],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,n=this.curves.length;i1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){let h=c.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(c);let u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},$n=class extends eo{constructor(e){super(e),this.uuid=fi(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let i=0,n=this.holes.length;i80*t){a=c=r[0],l=u=r[1];for(let m=t;mc&&(c=h),d>u&&(u=d);p=Math.max(c-a,u-l),p=p!==0?1/p:0}return to(s,o,t,a,l,p),o}};function qm(r,e,t,i,n){let s,o;if(n===H_(r,e,t,i)>0)for(s=e;s=e;s-=i)o=fm(s,r[s],r[s+1],o);return o&&cl(o,o.next)&&(no(o),o=o.next),o}function Mn(r,e){if(!r)return r;e||(e=r);let t=r,i;do if(i=!1,!t.steiner&&(cl(t,t.next)||ot(t.prev,t,t.next)===0)){if(no(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function to(r,e,t,i,n,s,o){if(!r)return;!o&&s&&N_(r,i,n,s);let a=r,l,c;for(;r.prev!==r.next;){if(l=r.prev,c=r.next,s?T_(r,i,n,s):D_(r)){e.push(l.i/t),e.push(r.i/t),e.push(c.i/t),no(r),r=c.next,a=c.next;continue}if(r=c,r===a){o?o===1?(r=C_(Mn(r),e,t),to(r,e,t,i,n,s,2)):o===2&&R_(r,e,t,i,n,s):to(Mn(r),e,t,i,n,s,1);break}}}function D_(r){let e=r.prev,t=r,i=r.next;if(ot(e,t,i)>=0)return!1;let n=r.next.next;for(;n!==r.prev;){if(Ts(e.x,e.y,t.x,t.y,i.x,i.y,n.x,n.y)&&ot(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function T_(r,e,t,i){let n=r.prev,s=r,o=r.next;if(ot(n,s,o)>=0)return!1;let a=n.xs.x?n.x>o.x?n.x:o.x:s.x>o.x?s.x:o.x,u=n.y>s.y?n.y>o.y?n.y:o.y:s.y>o.y?s.y:o.y,h=sh(a,l,e,t,i),d=sh(c,u,e,t,i),p=r.prevZ,m=r.nextZ;for(;p&&p.z>=h&&m&&m.z<=d;){if(p!==r.prev&&p!==r.next&&Ts(n.x,n.y,s.x,s.y,o.x,o.y,p.x,p.y)&&ot(p.prev,p,p.next)>=0||(p=p.prevZ,m!==r.prev&&m!==r.next&&Ts(n.x,n.y,s.x,s.y,o.x,o.y,m.x,m.y)&&ot(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;p&&p.z>=h;){if(p!==r.prev&&p!==r.next&&Ts(n.x,n.y,s.x,s.y,o.x,o.y,p.x,p.y)&&ot(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=d;){if(m!==r.prev&&m!==r.next&&Ts(n.x,n.y,s.x,s.y,o.x,o.y,m.x,m.y)&&ot(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function C_(r,e,t){let i=r;do{let n=i.prev,s=i.next.next;!cl(n,s)&&Wm(n,i,i.next,s)&&io(n,s)&&io(s,n)&&(e.push(n.i/t),e.push(i.i/t),e.push(s.i/t),no(i),no(i.next),i=r=s),i=i.next}while(i!==r);return Mn(i)}function R_(r,e,t,i,n,s){let o=r;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&z_(o,a)){let l=$m(o,a);o=Mn(o,o.next),l=Mn(l,l.next),to(o,e,t,i,n,s),to(l,e,t,i,n,s);return}a=a.next}o=o.next}while(o!==r)}function F_(r,e,t,i){let n=[],s,o,a,l,c;for(s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){let d=t.x+(n-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=i&&d>s){if(s=d,d===i){if(n===t.y)return t;if(n===t.next.y)return t.next}o=t.x=t.x&&t.x>=l&&i!==t.x&&Ts(no.x||t.x===o.x&&I_(o,t)))&&(o=t,u=h)),t=t.next;while(t!==a);return o}function I_(r,e){return ot(r.prev,r,e.prev)<0&&ot(e.next,r,r.next)<0}function N_(r,e,t,i){let n=r;do n.z===null&&(n.z=sh(n.x,n.y,e,t,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==r);n.prevZ.nextZ=null,n.prevZ=null,k_(n)}function k_(r){let e,t,i,n,s,o,a,l,c=1;do{for(t=r,r=null,s=null,o=0;t;){for(o++,i=t,a=0,e=0;e0||l>0&&i;)a!==0&&(l===0||!i||t.z<=i.z)?(n=t,t=t.nextZ,a--):(n=i,i=i.nextZ,l--),s?s.nextZ=n:r=n,n.prevZ=s,s=n;t=i}s.nextZ=null,c*=2}while(o>1);return r}function sh(r,e,t,i,n){return r=32767*(r-t)*n,e=32767*(e-i)*n,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function O_(r){let e=r,t=r;do(e.x=0&&(r-o)*(i-a)-(t-o)*(e-a)>=0&&(t-o)*(s-a)-(n-o)*(i-a)>=0}function z_(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!V_(r,e)&&(io(r,e)&&io(e,r)&&U_(r,e)&&(ot(r.prev,r,e.prev)||ot(r,e.prev,e))||cl(r,e)&&ot(r.prev,r,r.next)>0&&ot(e.prev,e,e.next)>0)}function ot(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function cl(r,e){return r.x===e.x&&r.y===e.y}function Wm(r,e,t,i){let n=Sa(ot(r,e,t)),s=Sa(ot(r,e,i)),o=Sa(ot(t,i,r)),a=Sa(ot(t,i,e));return!!(n!==s&&o!==a||n===0&&Aa(r,t,e)||s===0&&Aa(r,i,e)||o===0&&Aa(t,r,i)||a===0&&Aa(t,e,i))}function Aa(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function Sa(r){return r>0?1:r<0?-1:0}function V_(r,e){let t=r;do{if(t.i!==r.i&&t.next.i!==r.i&&t.i!==e.i&&t.next.i!==e.i&&Wm(t,t.next,r,e))return!0;t=t.next}while(t!==r);return!1}function io(r,e){return ot(r.prev,r,r.next)<0?ot(r,e,r.next)>=0&&ot(r,r.prev,e)>=0:ot(r,e,r.prev)<0||ot(r,r.next,e)<0}function U_(r,e){let t=r,i=!1,n=(r.x+e.x)/2,s=(r.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&n<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==r);return i}function $m(r,e){let t=new rh(r.i,r.x,r.y),i=new rh(e.i,e.x,e.y),n=r.next,s=e.prev;return r.next=e,e.prev=r,t.next=n,n.prev=t,i.next=t,t.prev=i,s.next=i,i.prev=s,i}function fm(r,e,t,i){let n=new rh(r,e,t);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function no(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function rh(r,e,t){this.i=r,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function H_(r,e,t,i){let n=0;for(let s=e,o=t-i;s2&&r[e-1].equals(r[0])&&r.pop()}function gm(r,e){for(let t=0;tNumber.EPSILON){let J=Math.sqrt(I),se=Math.sqrt(Je*Je+Xe*Xe),xe=ie.x-Oe/J,Y=ie.y+Re/J,be=te.x-Xe/se,ve=te.y+Je/se,he=((be-xe)*Xe-(ve-Y)*Je)/(Re*Xe-Oe*Je);fe=xe+Re*he-Z.x,de=Y+Oe*he-Z.y;let ce=fe*fe+de*de;if(ce<=2)return new ee(fe,de);Se=Math.sqrt(ce/2)}else{let J=!1;Re>Number.EPSILON?Je>Number.EPSILON&&(J=!0):Re<-Number.EPSILON?Je<-Number.EPSILON&&(J=!0):Math.sign(Oe)===Math.sign(Xe)&&(J=!0),J?(fe=-Oe,de=Re,Se=Math.sqrt(I)):(fe=Re,de=Oe,Se=Math.sqrt(I/2))}return new ee(fe/Se,de/Se)}let V=[];for(let Z=0,ie=B.length,te=ie-1,fe=Z+1;Z=0;Z--){let ie=Z/x,te=p*Math.cos(ie*Math.PI/2),fe=m*Math.sin(ie*Math.PI/2)+y;for(let de=0,Se=B.length;de=0;){let fe=te,de=te-1;de<0&&(de=Z.length-1);for(let Se=0,Re=u+x*2;Se0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}};ah.prototype.isMeshPhysicalMaterial=!0;var qs=class extends mt{constructor(e){super(),this.type="MeshPhongMaterial",this.color=new ye(16777215),this.specular=new ye(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xs,this.normalScale=new ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=rl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this}};qs.prototype.isMeshPhongMaterial=!0;var lh=class extends mt{constructor(e){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new ye(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xs,this.normalScale=new ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};lh.prototype.isMeshToonMaterial=!0;var ch=class extends mt{constructor(e){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xs,this.normalScale=new ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}};ch.prototype.isMeshNormalMaterial=!0;var uh=class extends mt{constructor(e){super(),this.type="MeshLambertMaterial",this.color=new ye(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=rl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};uh.prototype.isMeshLambertMaterial=!0;var hh=class extends mt{constructor(e){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new ye(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xs,this.normalScale=new ee(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this}};hh.prototype.isMeshMatcapMaterial=!0;var dh=class extends Wn{constructor(e){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};dh.prototype.isLineDashedMaterial=!0;var nt={arraySlice:function(r,e,t){return nt.isTypedArray(r)?new r.constructor(r.subarray(e,t!==void 0?t:r.length)):r.slice(e,t)},convertArray:function(r,e,t){return!r||!t&&r.constructor===e?r:typeof e.BYTES_PER_ELEMENT=="number"?new e(r):Array.prototype.slice.call(r)},isTypedArray:function(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)},getKeyframeOrder:function(r){function e(n,s){return r[n]-r[s]}let t=r.length,i=new Array(t);for(let n=0;n!==t;++n)i[n]=n;return i.sort(e),i},sortedArray:function(r,e,t){let i=r.length,n=new r.constructor(i);for(let s=0,o=0;o!==i;++s){let a=t[s]*e;for(let l=0;l!==e;++l)n[o++]=r[a+l]}return n},flattenJSON:function(r,e,t,i){let n=1,s=r[0];for(;s!==void 0&&s[i]===void 0;)s=r[n++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=r[n++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=r[n++];while(s!==void 0);else do o=s[i],o!==void 0&&(e.push(s.time),t.push(o)),s=r[n++];while(s!==void 0)},subclip:function(r,e,t,i,n=30){let s=r.clone();s.name=e;let o=[];for(let l=0;l=i)){h.push(c.times[p]);for(let y=0;ys.tracks[l].times[0]&&(a=s.tracks[l].times[0]);for(let l=0;l=a.times[m]){let g=m*h+u,f=g+h-u;y=nt.arraySlice(a.values,g,f)}else{let g=a.createInterpolant(),f=u,E=h-u;g.evaluate(s),y=nt.arraySlice(g.resultBuffer,f,E)}l==="quaternion"&&new Lt().fromArray(y).normalize().conjugate().toArray(y);let x=c.times.length;for(let g=0;g=s)){let a=t[1];e=s)break t}o=i,i=0;break i}break e}for(;i>>1;et;)--o;if(++o,s!==0||o!==n){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=nt.arraySlice(i,s,o),this.values=nt.arraySlice(this.values,s*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,n=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==s;a++){let l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(n!==void 0&&nt.isTypedArray(n))for(let a=0,l=n.length;a!==l;++a){let c=n[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=nt.arraySlice(this.times),t=nt.arraySlice(this.values),i=this.getValueSize(),n=this.getInterpolation()===Xc,s=e.length-1,o=1;for(let a=1;a0){e[o]=e[s];for(let a=s*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=nt.arraySlice(e,0,o),this.values=nt.arraySlice(t,0,o*i)):(this.times=e,this.values=t),this}clone(){let e=nt.arraySlice(this.times,0),t=nt.arraySlice(this.values,0),i=this.constructor,n=new i(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}};ri.prototype.TimeBufferType=Float32Array;ri.prototype.ValueBufferType=Float32Array;ri.prototype.DefaultInterpolation=Fa;var Dn=class extends ri{};Dn.prototype.ValueTypeName="bool";Dn.prototype.ValueBufferType=Array;Dn.prototype.DefaultInterpolation=Ra;Dn.prototype.InterpolantFactoryMethodLinear=void 0;Dn.prototype.InterpolantFactoryMethodSmooth=void 0;var Ka=class extends ri{};Ka.prototype.ValueTypeName="color";var Ws=class extends ri{};Ws.prototype.ValueTypeName="number";var mh=class extends Fi{constructor(e,t,i,n){super(e,t,i,n)}interpolate_(e,t,i,n){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(n-t),c=e*a;for(let u=c+a;c!==u;c+=4)Lt.slerpFlat(s,0,o,c-a,o,c,l);return s}},jn=class extends ri{InterpolantFactoryMethodLinear(e){return new mh(this.times,this.values,this.getValueSize(),e)}};jn.prototype.ValueTypeName="quaternion";jn.prototype.DefaultInterpolation=Fa;jn.prototype.InterpolantFactoryMethodSmooth=void 0;var Tn=class extends ri{};Tn.prototype.ValueTypeName="string";Tn.prototype.ValueBufferType=Array;Tn.prototype.DefaultInterpolation=Ra;Tn.prototype.InterpolantFactoryMethodLinear=void 0;Tn.prototype.InterpolantFactoryMethodSmooth=void 0;var $s=class extends ri{};$s.prototype.ValueTypeName="vector";var Qa=class{constructor(e,t=-1,i,n=$h){this.name=e,this.tracks=i,this.duration=t,this.blendMode=n,this.uuid=fi(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,n=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(j_(i[o]).scale(n));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){let t=[],i=e.tracks,n={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=i.length;s!==o;++s)t.push(ri.toJSON(i[s]));return n}static CreateFromMorphTargetSequence(e,t,i,n){let s=t.length,o=[];for(let a=0;a1){let h=u[1],d=n[h];d||(n[h]=d=[]),d.push(c)}}let o=[];for(let a in n)o.push(this.CreateFromMorphTargetSequence(a,n[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(h,d,p,m,y){if(p.length!==0){let x=[],g=[];nt.flattenJSON(p,x,g,m),x.length!==0&&y.push(new h(d,x,g))}},n=[],s=e.name||"default",o=e.fps||30,a=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let h=0;h{t&&t(s),this.manager.itemEnd(e)},0),s;if(Xi[e]!==void 0){Xi[e].push({onLoad:t,onProgress:i,onError:n});return}Xi[e]=[],Xi[e].push({onLoad:t,onProgress:i,onError:n});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body.getReader===void 0)return c;let u=Xi[e],h=c.body.getReader(),d=c.headers.get("Content-Length"),p=d?parseInt(d):0,m=p!==0,y=0,x=new ReadableStream({start(g){f();function f(){h.read().then(({done:E,value:w})=>{if(E)g.close();else{y+=w.byteLength;let _=new ProgressEvent("progress",{lengthComputable:m,loaded:y,total:p});for(let M=0,T=u.length;M{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,a));case"json":return c.json();default:if(a===void 0)return c.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),d=h&&h[1]?h[1].toLowerCase():void 0,p=new TextDecoder(d);return c.arrayBuffer().then(m=>p.decode(m))}}}).then(c=>{js.add(e,c);let u=Xi[e];delete Xi[e];for(let h=0,d=u.length;h{let u=Xi[e];if(u===void 0)throw this.manager.itemError(e),c;delete Xi[e];for(let h=0,d=u.length;h{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}};var el=class extends Li{constructor(e){super(e)}load(e,t,i,n){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,o=js.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;let a=kr("img");function l(){u(),js.add(e,this),t&&t(this),s.manager.itemEnd(e)}function c(h){u(),n&&n(h),s.manager.itemError(e),s.manager.itemEnd(e)}function u(){a.removeEventListener("load",l,!1),a.removeEventListener("error",c,!1)}return a.addEventListener("load",l,!1),a.addEventListener("error",c,!1),e.substr(0,5)!=="data:"&&this.crossOrigin!==void 0&&(a.crossOrigin=this.crossOrigin),s.manager.itemStart(e),a.src=e,a}},xh=class extends Li{constructor(e){super(e)}load(e,t,i,n){let s=new ks,o=new el(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);let a=0;function l(c){o.load(e[c],function(u){s.images[c]=u,a++,a===6&&(s.needsUpdate=!0,t&&t(s))},void 0,n)}for(let c=0;c"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,n){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,o=js.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;let a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(l){js.add(e,l),t&&t(l),s.manager.itemEnd(e)}).catch(function(l){n&&n(l),s.manager.itemError(e),s.manager.itemEnd(e)}),s.manager.itemStart(e)}};Mh.prototype.isImageBitmapLoader=!0;var Ma,Y_={getContext:function(){return Ma===void 0&&(Ma=new(window.AudioContext||window.webkitAudioContext)),Ma},setContext:function(r){Ma=r}},Dh=class extends Li{constructor(e){super(e)}load(e,t,i,n){let s=this,o=new yh(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{let l=a.slice(0);Y_.getContext().decodeAudioData(l,function(u){t(u)})}catch(l){n?n(l):console.error(l),s.manager.itemError(e)}},i,n)}},Th=class extends lo{constructor(e,t,i=1){super(void 0,i);let n=new ye().set(e),s=new ye().set(t),o=new P(n.r,n.g,n.b),a=new P(s.r,s.g,s.b),l=Math.sqrt(Math.PI),c=l*Math.sqrt(.75);this.sh.coefficients[0].copy(o).add(a).multiplyScalar(l),this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(c)}};Th.prototype.isHemisphereLightProbe=!0;var Ch=class extends lo{constructor(e,t=1){super(void 0,t);let i=new ye().set(e);this.sh.coefficients[0].set(i.r,i.g,i.b).multiplyScalar(2*Math.sqrt(Math.PI))}};Ch.prototype.isAmbientLightProbe=!0;var Rh=class extends qe{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,n,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){a.setValue(i,n);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,n=i*this._origIndex;e.getValue(t,n);for(let s=i,o=n;s!==o;++s)t[s]=t[n+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let o=0;o!==s;++o)e[t+o]=e[i+o]}_slerp(e,t,i,n){Lt.slerpFlat(e,t,e,t,e,i,n)}_slerpAdditive(e,t,i,n,s){let o=this._workIndex*s;Lt.multiplyQuaternionsFlat(e,o,e,t,e,i),Lt.slerpFlat(e,t,e,t,e,o,n)}_lerp(e,t,i,n,s){let o=1-n;for(let a=0;a!==s;++a){let l=t+a;e[l]=e[l]*o+e[i+a]*n}}_lerpAdditive(e,t,i,n,s){for(let o=0;o!==s;++o){let a=t+o;e[a]=e[a]+e[i+o]*n}}},Yh="\\[\\]\\.:\\/",Z_=new RegExp("["+Yh+"]","g"),Zh="[^"+Yh+"]",J_="[^"+Yh.replace("\\.","")+"]",K_=/((?:WC+[\/:])*)/.source.replace("WC",Zh),Q_=/(WCOD+)?/.source.replace("WCOD",J_),eE=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Zh),tE=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Zh),iE=new RegExp("^"+K_+Q_+eE+tE+"$"),nE=["material","materials","bones"],Bh=class{constructor(e,t,i){let n=i||Ye.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,n)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,n=this._bindings[i];n!==void 0&&n.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let n=this._targetGroup.nCachedObjects_,s=i.length;n!==s;++n)i[n].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},Ye=class r{constructor(e,t,i){this.path=t,this.parsedPath=i||r.parseTrackName(t),this.node=r.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new r.Composite(e,t,i):new r(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Z_,"")}static parseTrackName(e){let t=iE.exec(e);if(!t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(n!==void 0&&n!==-1){let s=i.nodeName.substring(n+1);nE.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(!t||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let o=0;o=s){let h=s++,d=e[h];t[d.uuid]=u,e[u]=d,t[c]=h,e[h]=l;for(let p=0,m=n;p!==m;++p){let y=i[p],x=y[h],g=y[u];y[u]=x,y[h]=g}}}this.nCachedObjects_=s}uncache(){let e=this._objects,t=this._indicesByUUID,i=this._bindings,n=i.length,s=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){let c=arguments[a],u=c.uuid,h=t[u];if(h!==void 0)if(delete t[u],h0&&(t[p.uuid]=h),e[h]=p,e.pop();for(let m=0,y=n;m!==y;++m){let x=i[m];x[h]=x[d],x.pop()}}}this.nCachedObjects_=s}subscribe_(e,t){let i=this._bindingsIndicesByPath,n=i[e],s=this._bindings;if(n!==void 0)return s[n];let o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,u=this.nCachedObjects_,h=new Array(c);n=s.length,i[e]=n,o.push(e),a.push(t),s.push(h);for(let d=u,p=l.length;d!==p;++d){let m=l[d];h[d]=new Ye(m,e,t)}return h}unsubscribe_(e){let t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){let n=this._paths,s=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=i,o[i]=l,o.pop(),s[i]=s[a],s.pop(),n[i]=n[a],n.pop()}}};Ph.prototype.isAnimationObjectGroup=!0;var Ih=class{constructor(e,t,i=null,n=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=n;let s=t.tracks,o=s.length,a=new Array(o),l={endingStart:Ms,endingEnd:Ms};for(let c=0;c!==o;++c){let u=s[c].createInterpolant(null);a[c]=u,u.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Lv,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){let n=this._clip.duration,s=e._clip.duration,o=s/n,a=n/s;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){let e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){let n=this._mixer,s=n.time,o=this.timeScale,a=this._timeScaleInterpolant;a===null&&(a=n._lendControlInterpolant(),this._timeScaleInterpolant=a);let l=a.parameterPositions,c=a.sampleValues;return l[0]=s,l[1]=s+i,c[0]=e/o,c[1]=t/o,this}stopWarping(){let e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,n){if(!this.enabled){this._updateWeight(e);return}let s=this._startTime;if(s!==null){let l=(e-s)*i;if(l<0||i===0)return;this._startTime=null,t=i*l}t*=this._updateTimeScale(e);let o=this._updateTime(t),a=this._updateWeight(e);if(a>0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case Tm:for(let u=0,h=l.length;u!==h;++u)l[u].evaluate(o),c[u].accumulateAdditive(a);break;case $h:default:for(let u=0,h=l.length;u!==h;++u)l[u].evaluate(o),c[u].accumulate(n,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(i!==null){let n=i.evaluate(e)[0];t*=n,e>i.parameterPositions[1]&&(this.stopFading(),n===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let n=i.evaluate(e)[0];t*=n,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,n=this.time+e,s=this._loopCount,o=i===Bv;if(e===0)return s===-1?n:o&&(s&1)===1?t-n:n;if(i===Fv){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n>=t)n=t;else if(n<0)n=0;else{this.time=n;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),n>=t||n<0){let a=Math.floor(n/t);n-=t*a,s+=Math.abs(a);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=e>0?t:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=s,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=n;if(o&&(s&1)===1)return t-n}return n}_setEndings(e,t,i){let n=this._interpolantSettings;i?(n.endingStart=Ds,n.endingEnd=Ds):(e?n.endingStart=this.zeroSlopeAtStart?Ds:Ms:n.endingStart=La,t?n.endingEnd=this.zeroSlopeAtEnd?Ds:Ms:n.endingEnd=La)}_scheduleFading(e,t,i){let n=this._mixer,s=n.time,o=this._weightInterpolant;o===null&&(o=n._lendControlInterpolant(),this._weightInterpolant=o);let a=o.parameterPositions,l=o.sampleValues;return a[0]=s,l[0]=t,a[1]=s+e,l[1]=i,this}},Nh=class extends Yi{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let i=e._localRoot||this._root,n=e._clip.tracks,s=n.length,o=e._propertyBindings,a=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName,u=c[l];u===void 0&&(u={},c[l]=u);for(let h=0;h!==s;++h){let d=n[h],p=d.name,m=u[p];if(m!==void 0)++m.referenceCount,o[h]=m;else{if(m=o[h],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,p));continue}let y=t&&t._propertyBindings[h].binding.parsedPath;m=new Lh(Ye.create(i,p,y),d.ValueTypeName,d.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,p),o[h]=m}a[h].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let i=(e._localRoot||this._root).uuid,n=e._clip.uuid,s=this._actionsByClip[n];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,n,i)}let t=e._propertyBindings;for(let i=0,n=t.length;i!==n;++i){let s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let i=0,n=t.length;i!==n;++i){let s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,n=this.time+=e,s=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(n,e,s,o);let a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return bm.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};Xn.prototype.isBox2=!0;var _m=new P,Da=new P,Vh=class{constructor(e=new P,t=new P){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){_m.subVectors(e,this.start),Da.subVectors(this.end,this.start);let i=Da.dot(Da),s=Da.dot(_m)/i;return t&&(s=Ht(s,0,1)),s}closestPointToPoint(e,t,i){let n=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(n).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}};var yn=new P,Ta=new Ee,Tu=new Ee,Uh=class extends Zr{constructor(e){let t=jm(e),i=new Qe,n=[],s=[],o=new ye(0,0,1),a=new ye(0,1,0);for(let c=0;c0?-1:1)*.9,y:this.h*(s.y>0?-1:1)*.9,z:Math.random()*200+200},a=Math.abs(s.x/s.y);a>1?o.y/=a:o.x*=a;let l=this.makeRandomVector(n),c={x:l.x*i,y:l.y*i,z:-10},u={x:-(Math.random()*s.y*5+this.inertia*s.y),y:Math.random()*s.x*5+this.inertia*s.x,z:0},h={x:Math.random(),y:Math.random(),z:Math.random(),w:Math.random()};return{pos:o,velocity:c,angular:u,axis:h}}makeRandomVector(e){let t=Math.random()*Math.PI/5-Math.PI/5/2,i={x:e.x*Math.cos(t)-e.y*Math.sin(t),y:e.x*Math.sin(t)+e.y*Math.cos(t)};return i.x==0&&(i.x=.01),i.y==0&&(i.y=.01),i}get buffer(){return this.geometry.geometry}get result(){return this.getUpsideValue()}getUpsideValue(){let e=new P(0,0,this.sides==4?-1:1),t,i=Math.PI*2,n=this.buffer.getAttribute("normal").array;for(let o=0,a=this.buffer.groups.length;othis.sides;)o-=this.sides;for(;o<1;)o+=this.sides;t.groups[n].materialIndex=o+1}}this.updateMaterialsForValue(e-i),this.geometry.geometry=t}resetBody(){return this.body.vlambda=new b,this.body.position=new b,this.body.previousPosition=new b,this.body.initPosition=new b,this.body.velocity=new b,this.body.initVelocity=new b,this.body.force=new b,this.body.torque=new b,this.body.quaternion=new vt,this.body.initQuaternion=new vt,this.body.angularVelocity=new b,this.body.initAngularVelocity=new b,this.body.interpolatedPosition=new b,this.body.interpolatedQuaternion=new vt,this.body.inertia=new b,this.body.invInertia=new b,this.body.invInertiaWorld=new Di,this.body.invInertiaSolve=new b,this.body.invInertiaWorldSolve=new Di,this.body.wlambda=new b,this.body.updateMassProperties(),this}updateMaterialsForValue(e){}set(){this.geometry.position.set(this.body.position.x,this.body.position.y,this.body.position.z),this.geometry.quaternion.set(this.body.quaternion.x,this.body.quaternion.y,this.body.quaternion.z,this.body.quaternion.w)}recreate(e,t,i){this.w=t,this.h=i,this.vector=this.generateVector(e),this.stopped=!1,this.iterations=0,this.create()}create(){return this.body.position.set(this.vector.pos.x,this.vector.pos.y,this.vector.pos.z),this.body.quaternion.setFromAxisAngle(new b(this.vector.axis.x,this.vector.axis.y,this.vector.axis.z),this.vector.axis.w*Math.PI*2),this.body.angularVelocity.set(this.vector.angular.x,this.vector.angular.y,this.vector.angular.z),this.body.velocity.set(this.vector.velocity.x,this.vector.velocity.y,this.vector.velocity.z),this.body.linearDamping=.1,this.body.angularDamping=.1,this}},ul=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=20;this.inertia=6;s&&(this.vector=this.generateVector(s)),this.create()}},hl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=12;this.inertia=8;s&&(this.vector=this.generateVector(s)),this.create()}},dl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=12;this.inertia=8;s&&(this.vector=this.generateVector(s)),this.create()}},pl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=12;this.inertia=8;s&&(this.vector=this.generateVector(s)),this.create()}},fl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=12;this.inertia=8;s&&(this.vector=this.generateVector(s)),this.create()}},ho=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=10;this.inertia=9;s&&(this.vector=this.generateVector(s)),this.create()}},ml=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=10;this.inertia=9;s&&(this.vector=this.generateVector(s)),this.create()}},gl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=8;this.inertia=10;s&&(this.vector=this.generateVector(s)),this.create()}},yl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=8;this.inertia=10;s&&(this.vector=this.generateVector(s)),this.create()}},xl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=8;this.inertia=10;s&&(this.vector=this.generateVector(s)),this.create()}};var Zs=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=6;this.inertia=13;s&&(this.vector=this.generateVector(s)),this.create()}},vl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=6;this.inertia=13;s&&(this.vector=this.generateVector(s)),this.create()}},wl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=6;this.inertia=13;s&&(this.vector=this.generateVector(s)),this.create()}};var bl=class extends It{constructor(t,i,n,s){super(t,i,n);this.w=t;this.h=i;this.data=n;this.sides=4;this.inertia=5;s&&(this.vector=this.generateVector(s)),this.create()}};var gt=class{constructor(e,t={value:`${e}`,conditions:[],type:"dice"}){this.lexeme=t;this.modifiers=new Map;this.possibilities=[];this.results=new Map;this.shapes=new Map;this.modifiersAllowed=!0;this.static=!1;this.conditions=[];this.fudge=!1;this.shouldRender=!1;if(!/(\-?\d+)[dD]?(\d+|%|\[\d+,\s?\d+\])?/.test(`${e}`))throw new Error("Non parseable dice string passed to DiceRoll.");this.dice=`${e}`.split(" ").join(""),/^-?\d+(?:\.\d+)?$/.test(this.dice)&&(this.static=!0,this.modifiersAllowed=!1);let[,i,n="1"]=this.dice.match(/(\-?\d+)[dD](%|F|-?\d+|\[\d+(?:[ \t]*[,-][ \t]*\d+)+\])/)||[,1,"1"];i=Number(i),this.multiplier=i<0?-1:1;let s=1,o=isNaN(Number(n))?1:Number(n);this.rolls=Math.abs(Number(i))||1,/\[\d+(?:[ \t]*,[ \t]*\d+)+\]/.test(n)?this.possibilities=n.replace(/[\[\]\s]/g,"").split(",").map(a=>Number(a)):/\[\d+(?:[ \t]*-[ \t]*\d+)+\]/.test(n)?([s,o]=n.replace(/[\[\]\s]/g,"").split("-").map(a=>Number(a)),this.possibilities=Array.from({length:o-s},(a,l)=>l+s)):(n==="%"?o=100:o=Number(n),Number(o)<0&&!s&&(s=-1),Number(o)a+s)),this.conditions=this.lexeme.conditions??[]}getType(){return`D${this.faces.max}`}get faces(){return{max:this.possibilities[this.possibilities.length-1],min:this.possibilities[0]}}getShapes(e){if(this.shapes.has(e))return this.shapes.get(e);let t=Et.getDiceForRoller(this);return e!=null&&this.shapes.set(e,t),t}get text(){return`${this.result}`}get result(){if(this.static)return this.multiplier*Number(this.dice);let e=[...this.results].map(([,{usable:t,value:i}])=>t?i:0);return this.multiplier*e.reduce((t,i)=>t+i,0)}get display(){if(this.static)return`${this.result}`;let e=[`[${[...this.results].map(([,{modifiers:t,display:i}])=>`${i}${[...t].join("")}`).join(", ")}]`];return this.conditions.length&&e.push(this.conditions.map(({result:t,operator:i})=>`${i}${t}`).join("")),e.join("")}get modifierText(){let e=this.conditions.map(({value:i})=>i).join(""),t=[...this.modifiers].map(([i,{conditionals:n,value:s}])=>{let o=n.map(a=>a.value);return`${s}${o.join("")}`}).join("");return`${e}${t}`}keepLow(e=1){if(!this.modifiersAllowed){new po.Notice("Modifiers are only allowed on dice rolls.");return}this.results.size!==1&&[...this.results].sort((t,i)=>t[1].value-i[1].value).slice(e>this.results.size?this.results.size:e-this.results.size).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}keepHigh(e=1){if(!this.modifiersAllowed){new po.Notice("Modifiers are only allowed on dice rolls.");return}this.results.size!==1&&[...this.results].sort((t,i)=>i[1].value-t[1].value).slice(e).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}async reroll(e,t){if(!this.modifiersAllowed){new po.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.min,lexemes:[{value:`${this.faces.min}`,text:`${this.faces.min}`,type:"dice"}],value:""});let i=0,n=[...this.results].filter(([,{value:s}])=>this.checkCondition(s,t));for(;i0;){let s=[];for(let[o,a]of n)s.push(new Promise(async l=>{a.modifiers.add("r");let c=this.getShapes(o),u=await this.getValue(c);a.value=u,a.display=`${u}`,l()}));await Promise.all(s),n=n.filter(([,{value:o}])=>this.checkCondition(o,t)),i++}n.forEach(([s,o])=>{this.results.set(s,o)})}async explode(e,t,i=!1){if(!this.modifiersAllowed){new po.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.max,lexemes:[{value:`${this.faces.max}`,text:`${this.faces.max}`,type:"dice"}],value:""});let n=[...this.results].filter(([,{value:o}])=>this.checkCondition(o,t)),s=0;await Promise.all(n.map(async([o,a])=>{if(i){let l=await this.getValue(),c=0;for(a.modifiers.add("!"),a.value+=l,a.display=`${a.value}`,this.results.set(o,a);cthis.faces.min+t).every(t=>this.possibilities.includes(t))}async getValue(e){let t;if(this.shouldRender&&this.canRender()){let i=e??Et.getDiceForRoller(this)??[];await Et.addDice(i),t=this.#e(i)}else t=this.getValueSync();return t}getValueSync(){return this.getRandomValue()}getMaxPossible(){if(this.static)return Number(this.dice);let e=this.rolls;return this.modifiers.has("kl")&&(e=e-this.modifiers.get("kl").data),this.modifiers.has("kh")&&(e=e-this.modifiers.get("kh").data),e<1&&(e=0),this.multiplier===-1?this.multiplier*Math.min(...this.possibilities)*e:Math.max(...this.possibilities)*e}getMinPossible(){if(this.static)return Number(this.dice);let e=this.rolls;return this.modifiers.has("kl")&&(e=e-this.modifiers.get("kl").data),this.modifiers.has("kh")&&(e=e-this.modifiers.get("kh").data),e<1&&(e=0),this.multiplier===-1?this.multiplier*Math.max(...this.possibilities)*e:Math.min(...this.possibilities)*e}#e(e=[]){if(!e.length)return this.getValueSync();let t=e.map(i=>i.getUpsideValue());if(this.faces.max===100){let[i,n]=t;return i===10&&n==10?100:(n==10&&(n=0),i==10&&(i=0),i*10+n)}return t.reduce((i,n)=>i+n)}#t(e=0){return{usable:!0,value:e,display:`${e}`,modifiers:new Set}}async applyModifiers(){for(let[e,t]of this.modifiers)e=="kh"||e=="kl"||await this.applyModifier(e,t);this.modifiers.has("kh")&&await this.applyModifier("kh",this.modifiers.get("kh")),this.modifiers.has("kl")&&await this.applyModifier("kl",this.modifiers.get("kl"))}setResults(e){this.results=new Map([...e].map(([t,i])=>[t,this.#t(i)])),this.updateResultArray()}rollSync(){let e=new Map;for(let t=0;t{this.#n?.signal.addEventListener("abort",()=>{s()});let o=await this.getValue(this.getShapes(i));e.set(i,o),n()}));try{await Promise.all(t)}catch{}}return e}applyConditions(){for(let e of this.results.values()){let t=this.conditions.find(({operator:n})=>n==="-="||n==="=-");if(t&&e.value===t.comparer){e.value=-1,e.modifiers.add("-");continue}this.checkCondition(e.value,this.conditions)?(e.modifiers.add("*"),e.value=1):e.usable=!1}}updateResultArray(){this.resultArray=[...this.results.values()].map(e=>e.value)}async applyModifier(e,t){switch(e){case"sort":{let i;t.value=="sa"?i=[...this.results.values()].sort((n,s)=>n.value-s.value):i=[...this.results.values()].sort((n,s)=>s.value-n.value),this.results=new Map([...this.results.keys()].map(n=>[n,i[n]])),this.updateResultArray();break}case"kh":{this.keepHigh(t.data);break}case"kl":{this.keepLow(t.data);break}case"!":{await this.explode(t.data,t.conditionals);break}case"!!":{await this.explode(t.data,t.conditionals,!0);break}case"r":{await this.reroll(t.data,t.conditionals);break}case"u":{await this.makeUnique();break}case"condition":}}async makeUnique(){let e=[...this.results.values()];if(new Set(this.possibilities).sizei.value)).size==this.results.size)return;let t=0;for(;new Set(e.map(i=>i.value)).size!=this.results.size&&t<100;){let i=[];for(let[n,s]of this.results)i.push(new Promise(async o=>{let a=e.find(l=>l.value==s.value&&l!=s);a&&(a.value=await this.getValue(this.getShapes(n)),a.display=`${a.value}`,a.modifiers.add("u")),o()}));await Promise.all(i),e=[...this.results.values()],t++}}checkCondition(e,t){if(!t||!t.length)return e;let i=!1;for(let n of t){let{operator:s,comparer:o,lexemes:a}=n;if(Number.isNaN(e)||!s?.length||!o)continue;let l=new _l(o,a);if(l.rollSync(),n.result=l.result,!Number.isNaN(n.result)){switch(s){case"=":i=e===n.result;break;case"!=":case"=!":i=e!==n.result;break;case"<":i=e":i=e>n.result;break;case">=":i=e>=n.result;break}if(i)return i}}return i}allowAverage(){return!0}average(){return this.possibilities.reduce((e,t)=>e+t)/this.possibilities.length}getRandomValue(){let e=Math.floor(Math.random()*this.possibilities.length);return this.possibilities[e]}getGeometries(){return[...this.shapes.values()].flat()}#n;async render(e){this.shouldRender=!0,this.#n=e,await this.roll(),this.shouldRender=!1}};var Xm={specular:1515554,color:15790320,shininess:60,flatShading:!0},Ki={diceColor:"#202020",textColor:"#ffffff",textFont:"Arial",narrativeSymbolSet:"Genesys"},mi=class{constructor(e,t,i={diceColor:"#202020",textColor:"#aaaaaa",narrativeSymbolSet:"Genesys"},n){this.w=e;this.h=t;this.options=i;this.scaler=n;this.scale=50;this.labels=[" ","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"];this.fontFace="Arial";this.options={...Ki,...i},this.fontFace=this.options.textFont}setColor({diceColor:e,textColor:t,narrativeSymbolSet:i}){e&&(this.options.diceColor=e),t&&(this.options.textColor=t),i&&(this.options.narrativeSymbolSet=i)}get radius(){return this.scale*this.scaleFactor*(this.scaler??1)}get diceColor(){return this.options.diceColor}get textColor(){return this.options.textColor}get narrativeSymbolSet(){return this.options.narrativeSymbolSet}get buffer(){return this.geometry.geometry}create(){this.textureSize=this.calculateTextureSize(this.scale/2+this.scale*this.margin)*2;let e=this.getGeometry(),t=this.getMaterials();return this.geometry=new ft(e,t),this.geometry.receiveShadow=!0,this.geometry.castShadow=!0,this.body.position.set(0+this.radius*2*Math.random(),0+this.radius*2*Math.random(),0+this.radius*4),this.body.velocity.x=500*Math.random()*2-1,this.body.velocity.y=500*Math.random()*2-1,this.body.angularVelocity.x=100*Math.random(),this.body.angularVelocity.y=100*Math.random(),this}getGeometry(){let e=new Array(this.vertices.length);for(let i=0;i=0&&u=0&&c!==l+1?a.unshift([s,c],[o,u]):a.push([s,c],[o,u]),l=c)}a.length===4&&i.push([i[a[0][0]][a[0][1]],i[a[1][0]][a[1][1]],i[a[3][0]][a[3][1]],i[a[2][0]][a[2][1]],-1])}for(let s=0;s=0&&u<4){--u===-1&&(u=3);let h=i[c][u];if(o.indexOf(h)>=0){a.push(h);break}}}--l}a.push(-1),i.push(a)}return{vectors:t,faces:i}}makeGeometry(e,t){let i=new Qe;for(let h=0;h1&&(a=a/c.length,o.font=`${a}pt '${this.fontFace}'`,l=o.measureText("M").width*1.2,n-=l*c.length/2);for(let h=0,d=c.length;h{(this.resources.get(t)??[]).push(i),this.#e(i,t)});else{let i=this.resources.get(t??e)??[];this.resources.set(t??e,i)}}track(e){if("dispose"in e&&this.#e(e),e instanceof qe&&this.#e(e),"geometry"in e&&this.#e(e.geometry,e),"material"in e&&this.#e(e.material,e),"children"in e&&this.#e(e.children,e),e instanceof mt)for(let t of Object.values(e))t instanceof ct&&this.#e(t);return e}untrack(e){this.resources.delete(e)}dispose(){for(let[e]of this.resources)this.disposeResource(e);this.resources.clear()}disposeResource(e){"parent"in e&&e.parent&&e.parent.remove(e),"dispose"in e&&e.dispose();for(let t of this.resources.get(e)??[])this.disposeResource(t);this.resources.delete(e)}};var Jh=class r extends Yn.Component{constructor(){super();this.event=new Yn.Events;this.tracker=new Vl;this.container=createDiv("renderer-container");this.#e=new Set;this.shadows=!0;this.iterations=0;this.frame_rate=1/60;this.loaded=!1;this.#t=!1;this.#i=new WeakMap;this.colors={ambient:16777215,spotlight:16777215};this.display={currentWidth:null,currentHeight:null,containerWidth:null,containerHeight:null,aspect:null,scale:null};this.cameraHeight={max:null,close:null,medium:null,far:null};this.#n=new WeakMap;this.extraFrames=r.DEFAULT_EXTRA_FRAMES;this.renderer=new We({alpha:!0,antialias:!0})}#e;get WIDTH(){return this.container.clientWidth/2}get HEIGHT(){return this.container.clientHeight/2}get ASPECT(){return this.WIDTH/this.HEIGHT}get scale(){return(this.WIDTH*this.WIDTH+this.HEIGHT*this.HEIGHT)/13}get canvasEl(){return this.renderer?this.renderer.domElement:null}#t;setData(t){this.data=t,this.factory?(this.factory.width=this.WIDTH,this.factory.height=this.HEIGHT,this.factory.updateDice(this.data)):this.factory=new Qh(this.WIDTH,this.HEIGHT,{diceColor:this.data.diceColor,textColor:this.data.textColor,colorfulDice:this.data.colorfulDice,scaler:this.data.scaler,textFont:this.data.textFont,narrativeSymbolSet:this.data.narrativeSymbolSet})}getDiceForRoller(t){return this.factory.getDiceForRoller(t,this.getVector())}#i;async addDice(t){return new Promise(i=>{this.#t||this.start();for(let n of t)n.recreate(this.getVector(),this.WIDTH,this.HEIGHT),this.scene.add(this.tracker.track(n.geometry)),this.world.add(n);this.#e.add(t),this.#i.set(t,()=>{i()})})}onload(){this.loaded=!0,this.addChild(this.factory),this.container.empty(),this.container.style.opacity="1",this.renderer.shadowMap.enabled=this.shadows,this.renderer.shadowMap.type=qh,this.container.appendChild(this.renderer.domElement),document.body.appendChild(this.container),this.renderer.setClearColor(0,0),this.scene=new Vs,this.initScene(),this.initWorld(),this.registerDomEvent(window,"resize",()=>{this.initScene()})}onunload(){this.loaded=!1,cancelAnimationFrame(this.animation),this.container.detach(),this.container.empty(),this.renderer.domElement.detach(),this.factory.dispose(),this.renderer.renderLists.dispose(),this.renderer.dispose(),this.tracker.dispose(),[...this.#e.values()].flat().forEach(t=>{this.world.world.removeBody(t.body)}),this.#e=new Set}start(){this.#t&&this.stop(),this.loaded||this.load(),this.#t=!0,this.extraFrames=r.DEFAULT_EXTRA_FRAMES,this.render()}static{this.DEFAULT_EXTRA_FRAMES=30}enableShadows(){this.shadows=!0,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}disableShadows(){this.shadows=!1,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}get mw(){return Math.max(this.WIDTH,this.HEIGHT)}setDimensions(t){this.display.currentWidth=this.container.clientWidth/2,this.display.currentHeight=this.container.clientHeight/2,t?(this.display.containerWidth=t.w,this.display.containerHeight=t.h):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13,this.renderer.setSize(this.display.currentWidth*2,this.display.currentHeight*2),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.factory.width=this.display.currentWidth,this.factory.height=this.display.currentHeight,this.factory.updateDice(this.data),this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2}initCamera(){this.camera&&this.scene.remove(this.camera),this.camera=new Mt(20,this.display.currentWidth/this.display.currentHeight,1,this.cameraHeight.max*1.3),this.camera.position.z=this.cameraHeight.far,this.camera.lookAt(new P(0,0,0))}initLighting(){let t=Math.max(this.display.containerWidth,this.display.containerHeight);this.light&&this.scene.remove(this.light),this.ambientLight&&this.scene.remove(this.ambientLight),this.light=new oo(this.colors.spotlight,.25),this.light.position.set(-t/2,t/2,t*3),this.light.target.position.set(0,0,0),this.light.distance=t*5,this.light.angle=Math.PI/4,this.light.castShadow=this.shadows,this.light.shadow.camera.near=t/10,this.light.shadow.camera.far=t*5,this.light.shadow.camera.fov=50,this.light.shadow.bias=.001,this.light.shadow.mapSize.width=1024,this.light.shadow.mapSize.height=1024,this.scene.add(this.tracker.track(this.light)),this.ambientLight=new ao(16777215,.9),this.scene.add(this.tracker.track(this.ambientLight))}initDesk(){this.desk&&this.scene.remove(this.desk);let t=new so;t.opacity=.5,this.desk=new ft(new Gr(this.display.containerWidth*6,this.display.containerHeight*6,1,1),t),this.desk.receiveShadow=this.shadows,this.scene.add(this.tracker.track(this.desk))}initScene(){this.setDimensions(),this.initCamera(),this.initLighting(),this.initDesk(),this.camera.updateProjectionMatrix(),this.renderer.render(this.scene,this.camera)}initWorld(){this.world=new Kh(this.WIDTH,this.HEIGHT),this.iterations=0}finishRender(){this.event.trigger("throw-finished")}#n;static{this.Threshold=5}throwFinished(){let t=!0;for(let i of this.#e){let n=!0;for(let s of i){if(s.iterations>10/this.frame_rate&&(s.stopped=!0),s.stopped===!0)continue;let o=s.body.angularVelocity,a=s.body.velocity;if(Math.abs(o.length())5){s.stopped=!0;continue}n=!1,t=!1}else s.iterations++,s.stopped=!1,n=!1,t=!1}n&&this.#i.has(i)&&(this.#i.get(i)(),this.#i.delete(i))}return t}unrender(){this.container.style.opacity="0",cancelAnimationFrame(this.animation),this.registerInterval(window.setTimeout(()=>{this.stop()},1e3))}stop(){if(this.#t)for(let t of[...this.#e]){this.#i.has(t)&&(this.#i.get(t)(),this.#i.delete(t));for(let i of t)i.stopped=!0}this.#t=!1,this.unload()}resizeRendererToDisplaySize(){let t=this.renderer.domElement,i=window.devicePixelRatio,n=t.clientWidth*i|0,s=t.clientHeight*i|0,o=t.width!==n||t.height!==s;return o&&this.renderer.setSize(n,s,!1),o}render(){if(this.throwFinished())if(this.extraFrames>10)this.extraFrames--;else{try{if(this.data.renderTime)this.registerInterval(window.setTimeout(()=>this.unrender(),this.data.renderTime));else{let i=function(){t.stop(),document.body.removeEventListener("click",i)},t=this;this.registerDomEvent(document.body,"click",i)}}catch(t){this.event.trigger("error",t)}return}this.animation=requestAnimationFrame(()=>this.render()),this.resizeRendererToDisplaySize()&&(this.camera.aspect=this.canvasEl.clientWidth/this.canvasEl.clientHeight,this.camera.updateProjectionMatrix()),this.world.step(this.frame_rate),this.iterations++,[...this.#e.values()].forEach(t=>t.forEach(i=>i.set())),this.renderer.render(this.scene,this.camera)}getVector(){return{x:(Math.random()*2-1)*this.WIDTH,y:-(Math.random()*2-1)*this.HEIGHT}}dispose(...t){t.forEach(i=>{i.children&&this.dispose(...i.children),i.clear()})}},Et=new Jh,Kh=class{constructor(e,t){this.WIDTH=e;this.HEIGHT=t;this.world=new Yo({gravity:new b(0,0,-9.82*200)});this.ground=this.getPlane();this.diceMaterial=new cn;this.deskMaterial=new cn;this.barrierMaterial=new cn;this.world.broadphase=new gr,this.world.allowSleep=!0,this.ground.position.set(0,0,0),this.world.addBody(this.ground),this.buildWalls()}add(...e){e.forEach(t=>{this.world.addBody(t.body)})}remove(...e){e.forEach(t=>this.world.removeBody(t.body))}step(e=1/60){let t=performance.now()/1e3;if(!this.lastCallTime)this.world.step(e);else{let i=t-this.lastCallTime;this.world.step(e,i)}this.lastCallTime=t}buildWalls(){this.world.addContactMaterial(new ln(this.deskMaterial,this.diceMaterial,{friction:.01,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new ln(this.barrierMaterial,this.diceMaterial,{friction:.01,restitution:1,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new ln(this.diceMaterial,this.diceMaterial,{friction:.1,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addBody(new De({allowSleep:!1,mass:0,shape:new Hi,material:this.deskMaterial}));let e=new De({allowSleep:!1,mass:0,shape:new Hi,material:this.barrierMaterial});e.quaternion.setFromAxisAngle(new b(1,0,0),Math.PI/2),e.position.set(0,this.HEIGHT*.93,0),this.world.addBody(e),e=new De({allowSleep:!1,mass:0,shape:new Hi,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new b(1,0,0),-Math.PI/2),e.position.set(0,-this.HEIGHT*.93,0),this.world.addBody(e),e=new De({allowSleep:!1,mass:0,shape:new Hi,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new b(0,1,0),-Math.PI/2),e.position.set(this.WIDTH*.93,0,0),this.world.addBody(e),e=new De({allowSleep:!1,mass:0,shape:new Hi,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new b(0,1,0),Math.PI/2),e.position.set(-this.WIDTH*.93,0,0),this.world.addBody(e)}getPlane(){return new De({type:De.STATIC,shape:new Hi})}},Qh=class extends Yn.Component{constructor(t,i,n){super();this.width=t;this.height=i;this.options=n;this.dice={};this.updateDice=(0,Yn.debounce)(t=>{this.options={...t},this.dispose(),this.buildDice()},200);this.buildDice()}get colors(){let t=this.options.diceColor,i=this.options.textColor,n=this.options.textFont,s=this.options.narrativeSymbolSet;if(!this.options.colorfulDice)return{diceColor:t,textFont:n,narrativeSymbolSet:s}}onunload(){this.dispose()}disposeChildren(...t){t.forEach(i=>{"dispose"in i&&i.dispose(),i.children&&this.disposeChildren(...i.children)})}dispose(){for(let t of Object.values(this.dice))this.disposeChildren(t.geometry.children)}getDiceForRoller(t,i){let n=[];switch(t.getType()){case Ue.D4:{n.push(new bl(this.width,this.height,this.clone("d4"),i));break}case Ue.FUDGE:{n.push(new Zs(this.width,this.height,this.clone("fudge"),i));break}case Ue.STUNT:{n.push(new Zs(this.width,this.height,this.clone("stunt"),i));break}case Ue.D6:{n.push(new Zs(this.width,this.height,this.clone("d6"),i));break}case Ue.D8:{n.push(new gl(this.width,this.height,this.clone("d8"),i));break}case Ue.D10:{n.push(new ho(this.width,this.height,this.clone("d10"),i));break}case Ue.D12:{n.push(new hl(this.width,this.height,this.clone("d12"),i));break}case Ue.D20:{n.push(new ul(this.width,this.height,this.clone("d20"),i));break}case Ue.D100:{n.push(new ml(this.width,this.height,this.clone("d100"),i),new ho(this.width,this.height,this.clone("d10"),i));break}case Ue.BOOST:{n.push(new vl(this.width,this.height,this.clone("boost"),i));break}case Ue.SETBACK:{n.push(new wl(this.width,this.height,this.clone("setback"),i));break}case Ue.ABILITY:{n.push(new yl(this.width,this.height,this.clone("ability"),i));break}case Ue.DIFFICULTY:{n.push(new xl(this.width,this.height,this.clone("difficulty"),i));break}case Ue.FORCE:{n.push(new pl(this.width,this.height,this.clone("force"),i));break}case Ue.PROFICIENCY:{n.push(new dl(this.width,this.height,this.clone("proficiency"),i));break}case Ue.CHALLENGE:{n.push(new fl(this.width,this.height,this.clone("challenge"),i));break}case Ue.NONE:break}return n}getDice(t,i){let n=new Map;for(let s of t.dynamic){let o=this.getDiceForRoller(s,i);o.length&&n.set(s,o)}return n}clone(t){if(!(t in this.dice))throw new Error("That dice type does not exist!");return this.dice[t].clone()}buildDice(){this.dice.d100=new Ml(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d20=new El(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d12=new Al(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d10=new Sl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d8=new Dl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d6=new Js(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.d4=new Rl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.fudge=new Tl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.stunt=new Cl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.boost=new Ol(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.ability=new Il(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.difficulty=new Nl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.challenge=new Bl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.proficiency=new Ll(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.force=new Fl(this.width,this.height,this.colors,this.options.scaler).create(),this.dice.setback=new zl(this.width,this.height,this.colors,this.options.scaler).create()}};var Ks=(n=>(n.None="None",n.Normal="Normal",n.Up="Up",n.Down="Down",n))(Ks||{});var zt={LEFT:"LEFT",RIGHT:"RIGHT",NONE:"NONE"};var ti=require("obsidian");var go=class extends ti.Component{constructor(){super(...arguments);this.components=[];this.loaded=!1;this.#e=new ti.Events}on(t,i,n){return this.#e.on(t,i)}once(t,i){let n=this.on(t,(...s)=>{i(...s),this.offref(n)})}off(t,i){return this.#e.off(t,i)}offref(t){return this.#e.offref(t)}trigger(t,...i){return this.#e.trigger(t,...i)}tryTrigger(t,i){return this.#e.tryTrigger(t,i)}onload(){this.loaded=!0,this.trigger("loaded")}onunload(){this.components=[]}addContexts(...t){this.components=t;for(let i of t)i.addChild(this)}#e;getRandomBetween(t,i){let n=new Uint32Array(1);crypto.getRandomValues(n);let s=n[0]/4294967296;return Math.floor(s*(i-t+1))+t}},Ul=class extends go{constructor(t,i="",n=t.position){super();this.data=t;this.original=i;this.loaded=!1;switch(this.original||(this.original=""),this.containerEl=createSpan({cls:"dice-roller",attr:{"aria-label-position":"top","data-dice":this.original}}),this.resultEl=this.containerEl.createSpan("dice-roller-result"),this.iconEl=createSpan({cls:"dice-roller-button"}),(0,ti.setIcon)(this.iconEl,"dices"),this.iconEl.onclick=this.onClick.bind(this),n){case"LEFT":{this.containerEl.prepend(this.iconEl);break}case"RIGHT":{this.containerEl.append(this.iconEl);break}case"NONE":{this.containerEl.addClass("no-icon");break}}this.containerEl.onclick=this.onClick.bind(this)}onLoad(t){this.loaded?t():this.on("loaded",()=>t())}onunload(){this.containerEl.empty();let t=createEl("pre");t.createEl("code",{text:this.original}),this.containerEl.append(t)}setTooltip(){this.data.displayResultsInline||this.containerEl.setAttrs({"aria-label":this.getTooltip()})}getRandomBetween(t,i){let n=new Uint32Array(1);crypto.getRandomValues(n);let s=n[0]/4294967296;return Math.floor(s*(i-t+1))+t}async render(){this.setTooltip(),await this.build()}async onClick(t){t.target instanceof HTMLAnchorElement||(t.stopPropagation(),t.stopImmediatePropagation(),window.getSelection()?.isCollapsed&&await this.roll())}},Qs=class extends Ul{constructor(t,i,n,s=t.position){super(t,i,s);this.data=t;this.original=i;this.lexemes=n;this.position=s;this.save=!1}setSpinner(){this.resultEl.empty(),(0,ti.setIcon)(this.resultEl.createDiv("should-spin"),"loader-2")}setSource(t){this.source=t}getSource(){return this.source}get inlineText(){return`${this.getTooltip().split(` +`).join(" -> ")} -> `}},er=class extends Qs{constructor(){super(...arguments);this.shouldRender=!1;this.isRendering=!1;this.hasRunOnce=!1}onunload(){this.isRendering&&Et.stop(),super.onunload()}async onClick(t){t.stopPropagation(),t.stopImmediatePropagation(),this.isRendering&&Et.stop(),this.#e?.abort(),t.getModifierState("Shift")?(await this.roll(!0),this.hasRunOnce=!0):window.getSelection()?.isCollapsed&&await this.roll()}#e;async renderChildren(){this.isRendering=!0,this.setTooltip(),this.setSpinner();let t=[];this.#e=new AbortController;for(let i of this.children)t.push(new Promise(async(n,s)=>{this.#e.signal.addEventListener("abort",()=>{s()}),await i.render(this.#e),n()}));try{await Promise.all(t)}catch{return}this.isRendering=!1,this.setTooltip()}},yo=class extends Qs{constructor(t,i,n,s,o,a=t.position){super(t,i,[n],a);this.data=t;this.original=i;this.lexeme=n;this.source=s;this.app=o;this.dirtyEl=this.containerEl.createDiv({cls:"dice-roller-dirty dice-roller-button",attr:{"aria-label":"The underlying data source for this roller was modified"}});this.#t=!1;this.getPath()}async getFile(){if(this.file=this.app.metadataCache.getFirstLinkpathDest(this.path,this.source),!this.file||!(this.file instanceof ti.TFile))throw new Error("Could not load file.")}#e;async render(){super.render(),this.dirtyEl.empty()}async checkForDirtiness(t){let i=await this.hash(t);return i===this.#e?(this.dirtyEl.empty(),!1):(this.#e&&(0,ti.setIcon)(this.dirtyEl,"alert-triangle"),this.#e=i,!0)}async hash(t){return Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))),i=>i.toString(16).padStart(2,"0")).join("")}#t;async onload(){if(this.#t)return;this.#t=!0,await this.getFile();let t=this.app.metadataCache.getFileCache(this.file),i=await this.app.vault.cachedRead(this.file);await this.getOptions(t,i),this.loaded=!0,this.trigger("loaded"),this.registerEvent(this.app.metadataCache.on("changed",async(n,s,o)=>{n===this.file&&await this.getOptions(o,s)}))}},tr=class extends yo{constructor(t,i,n,s,o,a=t.position,l=!0){super(t,i,n,s,o,a);this.data=t;this.original=i;this.lexeme=n;this.app=o;this.inline=l;this.data.displayAsEmbed&&(this.containerEl.addClasses(["has-embed","markdown-embed"]),this.resultEl.addClass("internal-embed")),this.resultEl.setAttrs({src:s}),this.copy=this.containerEl.createDiv({cls:"dice-content-copy dice-roller-button no-show",attr:{"aria-label":"Copy Contents"}}),this.copy.addEventListener("click",c=>{c.stopPropagation(),navigator.clipboard.writeText(this.transformResultsToString()).then(async()=>{new ti.Notice("Result copied to clipboard.")})}),(0,ti.setIcon)(this.copy,"copy")}getEmbedClass(){return this.data.displayAsEmbed?"markdown-embed":""}},Hl=class extends Ul{constructor(t,i,n){super(t,"");this.options=i;this.rolls=n}getTooltip(){return`${this.options.toString()} + +${this.results.toString()}`}async roll(){let t=[...this.options];return this.results=[...Array(this.rolls)].map(()=>{let i=t[this.getRandomBetween(0,t.length-1)];return t.splice(t.indexOf(i),1),i}).filter(i=>i),this.render(),this.trigger("new-result"),this.result=this.results[0],this.results[0]}async build(){this.resultEl.empty(),this.resultEl.setText(this.results.toString())}};var vo=class extends gt{constructor(t,i){super(t,i);this.dice=t;this.stack=[];let n=`${this.faces.max}`.split("");for(let s=0;st.map(i=>i.result).join(",")).join("|")}async roll(){if(!this.stack||!this.stack.length)return super.roll();this.stack.forEach(t=>t.map(i=>i.roll()))}allowAverage(){return!1}};var ed=class extends gt{getType(){return Ue.STUNT}canRender(){return!0}constructor(){super("1d6")}allowAverage(){return!1}},gi=class extends gt{constructor(t,i){super(t,i);this.dice=t;this.pair=new gt("2d6");this.stunt=new ed}async roll(){await Promise.all([new Promise(async t=>{this.pair.shouldRender=this.shouldRender,await this.pair.roll(),t()}),new Promise(async t=>{this.stunt.shouldRender=this.shouldRender,await this.stunt.roll(),t()})])}get doubles(){return new Set([...this.pair.resultArray,this.stunt.result]).size<3}get result(){return this.pair.result+this.stunt.result}get display(){return`${[this.pair.display,`${this.stunt.display}${this.doubles?"S":""}`].join(", ")}`}};var wo=class extends gt{constructor(){super(...arguments);this.possibilities=[-1,0,1]}getType(){return Ue.FUDGE}canRender(){return!0}};var _l=class extends go{constructor(t,i){super();this.original=t;this.lexemes=i;this.operators={"+":(t,i)=>t+i,"-":(t,i)=>t-i,"*":(t,i)=>t*i,"/":(t,i)=>t/i,"^":(t,i)=>Math.pow(t,i)};this.stack=[];this.stackCopy=[];this.stunted="";this.dice=[]}async roll(){return this.rollSync()}rollSync(){this.stunted="",this.parseLexemes();let t=this.stack.pop();return t.rollSync(),t instanceof gi&&t.doubles&&(this.stunted=` - ${t.results.get(0).value} Stunt Points`),this.result=t.result,this.result}parseLexemes(){let t=0;for(let i of this.lexemes)switch(i.type){case"+":case"-":case"*":case"/":case"^":case"math":let n=this.stack.pop(),s=this.stack.pop();n.rollSync(),n instanceof gi&&n.doubles&&(this.stunted=` - ${n.results.get(0).value} Stunt Points`),s.rollSync(),s instanceof gi&&s.doubles&&(this.stunted=` - ${s.results.get(0).value} Stunt Points`);let o=this.operators[i.value](s.result,n.result);this.stackCopy.push(i.value),this.stack.push(new gt(`${o}`,i));break;case"u":{let a=this.dice[t-1],l=i.value?Number(i.value):1;a.modifiers.set("u",{data:l,conditionals:[],value:i.text});break}case"kh":{let a=this.dice[t-1],l=i.value?Number(i.value):1;a.modifiers.set("kh",{data:l,conditionals:[],value:i.text});break}case"dl":{let a=this.dice[t-1],l=i.value?Number(i.value):1;l=a.rolls-l,a.modifiers.set("kh",{data:l,conditionals:[],value:i.text});break}case"kl":{let a=this.dice[t-1],l=i.value?Number(i.value):1;a.modifiers.set("kl",{data:l,conditionals:[],value:i.text});break}case"dh":{let a=this.dice[t-1],l=i.value?Number(i.value):1;l=a.rolls-l,a.modifiers.set("kl",{data:l,conditionals:[],value:i.text});break}case"!":{let a=this.dice[t-1],l=Number(i.value)||1;a.modifiers.set("!",{data:l,conditionals:i.conditions??[],value:i.text});break}case"!!":{let a=this.dice[t-1],l=Number(i.value)||1;a.modifiers.set("!!",{data:l,conditionals:i.conditions??[],value:i.text});break}case"r":{let a=this.dice[t-1],l=Number(i.value)||1;a.modifiers.set("r",{data:l,conditionals:i.conditions??[],value:i.text});break}case"sort":{let a=this.dice[t-1],l=Number(i.value);a.modifiers.set("sort",{data:l,conditionals:i.conditions??[],value:i.value});break}case"dice":{if(i.parenedDice&&/^d/.test(i.value)&&this.stack.length){let a=this.stack.pop();i.value=`${a.result}${i.value}`,this.dice[t]=new gt(i.value,i)}this.dice[t]||(this.dice[t]=new gt(i.value,i)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break}case"fudge":{this.dice[t]||(this.dice[t]=new wo(i.value,i)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break}case"stunt":{this.dice[t]||(this.dice[t]=new gi(i.value,i)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break}case"%":{this.dice[t]||(this.dice[t]=new vo(i.value,i)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break}}}},Wt=class extends er{constructor(t,i,n,s,o=t.position,a,l=t.initialDisplay,c=t.displayFormulaAfter,u=t.round,h=t.signed){super(t,i,n,o);this.data=t;this.original=i;this.lexemes=n;this.app=s;this.displayFixedText=!1;this.stunted="";this.shouldRender=!1;this.isRendering=!1;this.showFormula=!1;this.operators={"+":(t,i)=>t+i,"-":(t,i)=>t-i,"*":(t,i)=>t*i,"/":(t,i)=>t/i,"^":(t,i)=>Math.pow(t,i)};this.stack=[];this.maxStack=[];this.minStack=[];this.stackCopy=[];this.children=[];this.hasRunOnce=!1;this.max=Number.MIN_VALUE;this.min=Number.MAX_VALUE;c&&this.containerEl.createSpan({cls:"dice-roller-formula",text:`(${i})`}),this.fixedText=a,this.expectedValue=l,this.displayFixedText=this.fixedText!=="",this.round=u,this.signed=h}async getReplacer(){return`${this.showFormula?`${this.inlineText} `:""}${this.result}`}getDisplayText(){let t=[],i=0;return this.children.forEach(n=>{let s=this.original.slice(i);t.push(s.slice(0,s.indexOf(n.lexeme.text)),n.display),i+=s.indexOf(n.lexeme.text)+n.lexeme.text.length+n.modifierText.length}),t.push(this.original.slice(i)),t.join("")}getResultText(){return`${this.result}`}getTooltip(){if(this.isRendering)return this.original;if(this._tooltip)return this._tooltip;let t=this.getDisplayText();return this.expectedValue==="Roll"||this.shouldRender?this.displayFixedText?`${this.original} +${this.result} = ${t}`:`${this.original} +${t}`:this.expectedValue==="Average"?this.displayFixedText?`${this.original} +${this.result} = average: ${t}`:`${this.original} +average: ${t}`:`${this.original} +empty`}allowAverage(){return this.dynamic.every(t=>t.allowAverage())}async build(){if(this.resultEl.empty(),this.expectedValue==="Average"&&!this.shouldRender){if(this.allowAverage()){for(let s of this.dynamic){let o=s.average(),a=new Map;for(let l=0;l0?"+":"",n;this.expectedValue==="None"&&!this.shouldRender?(this.position!=zt.NONE?n=[""]:n=["\xA0"],this.showFormula&&n.unshift(this.original+" -> ")):(n=[`${i}${t}`],this.showFormula&&n.unshift(this.inlineText)),this.expectedValue="Roll",this.displayFixedText?this.resultEl.setText(this.fixedText):this.resultEl.setText(n.join("")+this.stunted),this.result===this.max?this.containerEl.addClass("is-max"):this.containerEl.removeClass("is-max"),this.result===this.min?this.containerEl.addClass("is-min"):this.containerEl.removeClass("is-min")}async onClick(t){t.getModifierState("Alt")?this.expectedValue="Average":t.getModifierState("Control")&&(this.expectedValue="None"),super.onClick(t)}get dynamic(){return this.children.filter(t=>!t.static)}get static(){return this.children.filter(t=>t.static)}get isStatic(){return this.children.every(t=>t.static)}rollSync(){this.stunted="",this.buildDiceTree();for(let t of this.children)t.rollSync();return this.calculate(),this._tooltip=null,this.render(),this.trigger("new-result"),this.hasRunOnce=!0,this.result}buildDiceTree(){let t=0;for(let i of this.lexemes)switch(i.type){case"+":case"*":case"/":case"^":case"-":case"math":continue;case"u":{let n=this.children[t-1],s=i.value?Number(i.value):1;n.modifiers.set("u",{data:s,conditionals:[],value:i.text});break}case"kh":{let n=this.children[t-1],s=i.value?Number(i.value):1;n.modifiers.set("kh",{data:s,conditionals:[],value:i.text});break}case"dl":{let n=this.children[t-1],s=i.value?Number(i.value):1;s=n.rolls-s,n.modifiers.set("kh",{data:s,conditionals:[],value:i.text});break}case"kl":{let n=this.children[t-1],s=i.value?Number(i.value):1;n.modifiers.set("kl",{data:s,conditionals:[],value:i.text});break}case"dh":{let n=this.children[t-1],s=i.value?Number(i.value):1;s=n.rolls-s,n.modifiers.set("kl",{data:s,conditionals:[],value:i.text});break}case"!":{let n=this.children[t-1],s=Number(i.value)||1;n.modifiers.set("!",{data:s,conditionals:i.conditions??[],value:i.text});break}case"!!":{let n=this.children[t-1],s=Number(i.value)||1;n.modifiers.set("!!",{data:s,conditionals:i.conditions??[],value:i.text});break}case"r":{let n=this.children[t-1],s=Number(i.value)||1;n.modifiers.set("r",{data:s,conditionals:i.conditions??[],value:i.text});break}case"sort":{let n=this.children[t-1],s=Number(i.value);n.modifiers.set("sort",{data:s,conditionals:i.conditions??[],value:i.value});break}case"dice":{if(i.parenedDice&&/^d/.test(i.value)&&this.stack.length){let n=this.stack.pop();i.value=`${n.result}${i.value}`,this.children[t]=new gt(i.value,i)}this.children[t]||(this.children[t]=new gt(i.value,i)),t++;break}case"fudge":{this.children[t]||(this.children[t]=new wo(i.value,i)),t++;break}case"stunt":{this.children[t]||(this.children[t]=new gi(i.value,i)),t++;break}case"%":{this.children[t]||(this.children[t]=new vo(i.value,i)),t++;break}}}async roll(t){if(this.stunted="",this.stackCopy=[],this.children.length||this.buildDiceTree(),Et.stop(),this.children.forEach(i=>i.shouldRender=!1),t||this.shouldRender&&this.hasRunOnce)await this.renderChildren();else for(let i of this.children)await i.roll();return this.calculate(),this.render(),this.showRenderNotice&&(t||this.shouldRender&&this.hasRunOnce)&&new Ym.Notice(`${this.getTooltip()} + +Result: ${this.result}`),this.trigger("new-result"),this.app.workspace.trigger("dice-roller:new-result",this),this.hasRunOnce=!0,this.result}calculate(){let t=0;for(let n of this.lexemes)switch(n.type){case"+":case"-":case"*":case"/":case"^":case"math":{let s=this.stack.pop(),o=this.stack.pop();s instanceof gi&&s.doubles&&(this.stunted=` - ${s.results.get(0).value} Stunt Points`),o instanceof gi&&o.doubles&&(this.stunted=` - ${o.results.get(0).value} Stunt Points`);let a=this.operators[n.value](o.result,s.result),l=this.operators[n.value](this.minStack.pop(),this.minStack.pop()),c=this.operators[n.value](this.maxStack.pop(),this.maxStack.pop());this.stackCopy.push(n.value),this.stack.push(new gt(`${a}`,n)),this.minStack.push(l),this.maxStack.push(c);break}case"stunt":case"fudge":case"%":case"dice":this.stack.push(this.children[t]),this.stackCopy.push(this.children[t]),this.minStack.push(this.children[t].getMinPossible()),this.maxStack.push(this.children[t].getMaxPossible()),t++;default:continue}let i=this.stack.pop();this.min=this.minStack.pop(),this.max=this.maxStack.pop(),i instanceof gi&&i.doubles&&(this.stunted=` - ${i.stunt.result} Stunt Points`),this.result=i.result}};var le=require("obsidian");var ir=require("obsidian"),oE=createSvg("svg",{attr:{viewBox:"0 0 500 500"}}),aE=createSvg("text",{attr:{class:"font",fill:"currentColor",x:"50%",y:"50%","text-anchor":"middle","dominant-baseline":"central"}}),ql=(a=>(a.NONE="None",a.TRIANGLE="Triangle",a.SQUARE="Square",a.DIAMOND="Diamond",a.DODECAHEDRON="Dodecahedron",a.ICOSAHEDRON="Icosahedron",a.CIRCLE="Circle",a))(ql||{}),Zm=[{id:"dice-roller-d4",shape:"Triangle",formula:"d4",text:"4"},{id:"dice-roller-d6",shape:"Square",formula:"d6",text:"6"},{id:"dice-roller-d8",shape:"Diamond",formula:"d8",text:"8"},{id:"dice-roller-d10",shape:"Diamond",formula:"d10",text:"10"},{id:"dice-roller-d12",shape:"Dodecahedron",formula:"d12",text:"12"},{id:"dice-roller-d20",shape:"Icosahedron",formula:"d20",text:"20"},{id:"dice-roller-d100",shape:"Circle",formula:"d%",text:"%"}],td=class extends ir.Component{#e(){return oE.cloneNode(!0)}#t(){return aE.cloneNode()}#i=new Set;registerIcon(e,t,i){this.#i.add(e);let n=this.#e(),s=this.#t();s.textContent=i,n.appendChild(s);let o;switch(t){case"Triangle":o=this.getTriangle();break;case"Square":{o=this.getSquare();break}case"Diamond":{o=this.getDiamond();break}case"Dodecahedron":{o=this.getDodecahedron();break}case"Icosahedron":{o=this.getIcosahedron();break}case"Circle":{o=this.getCircle();break}case"None":o=createSvg("defs")}n.appendChild(o),(0,ir.addIcon)(e,n.outerHTML),this.register(()=>(0,ir.removeIcon)(e))}getTriangle(){return this.#n("path",{d:"M244.6,49.3L40.3,403.2c-1.7,3-0.7,6.8,2.3,8.5c0.9,0.5,2,0.8,3.1,0.8h408.6c3.4,0,6.2-2.8,6.2-6.2 c0-1.1-0.3-2.2-0.8-3.1L255.4,49.3c-1.7-3-5.5-4-8.5-2.3C246,47.6,245.2,48.4,244.6,49.3z"})}getSquare(){return this.#n("rect",{x:"87.5",y:"87.5",width:"325",height:"325",rx:"10"})}getDiamond(){return this.#n("rect",{x:"102.75",y:"102.75",width:"294.51",height:"294.51",rx:"9.8",transform:"translate(-103.55 250) rotate(-45)"})}getDodecahedron(){return this.#n("path",{d:"M244.31,29.14,52,168.87a9.72,9.72,0,0,0-3.52,10.84l73.47,226.1a9.69,9.69,0,0,0,9.21,6.69H368.87a9.69,9.69,0,0,0,9.21-6.69l73.47-226.1A9.72,9.72,0,0,0,448,168.87L255.69,29.14A9.66,9.66,0,0,0,244.31,29.14Z"})}getIcosahedron(){return this.#n("path",{d:"M55.14,143.27V356.73a10,10,0,0,0,5,8.66L245,472.11a10,10,0,0,0,10,0L439.86,365.39a10,10,0,0,0,5-8.66V143.27a10,10,0,0,0-5-8.66L255,27.89a10,10,0,0,0-10,0L60.14,134.61A10,10,0,0,0,55.14,143.27Z"})}getCircle(){return this.#n("circle",{cx:"250",cy:"250",r:"190"})}#n(e,t){return createSvg(e,{cls:"shape",attr:{...t,stroke:"currentColor"}})}onunload(){}},Wl=new td;var lE=Function.prototype.toString,id=Object.create,cE=Object.prototype.toString,uE=function(){function r(){this._keys=[],this._values=[]}return r.prototype.has=function(e){return!!~this._keys.indexOf(e)},r.prototype.get=function(e){return this._values[this._keys.indexOf(e)]},r.prototype.set=function(e,t){this._keys.push(e),this._values.push(t)},r}();function hE(){return new uE}function dE(){return new WeakMap}var pE=typeof WeakMap<"u"?dE:hE;function sd(r){if(!r)return id(null);var e=r.constructor;if(e===Object)return r===Object.prototype?{}:id(r);if(e&&~lE.call(e).indexOf("[native code]"))try{return new e}catch{}return id(r)}function fE(r){var e="";return r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.unicode&&(e+="u"),r.sticky&&(e+="y"),e}function mE(r){return r.flags}var gE=/test/g.flags==="g"?mE:fE;function Jm(r){var e=cE.call(r);return e.substring(8,e.length-1)}function yE(r){return r[Symbol.toStringTag]||Jm(r)}var xE=typeof Symbol<"u"?yE:Jm,vE=Object.defineProperty,wE=Object.getOwnPropertyDescriptor,Km=Object.getOwnPropertyNames,rd=Object.getOwnPropertySymbols,Qm=Object.prototype,eg=Qm.hasOwnProperty,bE=Qm.propertyIsEnumerable,tg=typeof rd=="function";function _E(r){return Km(r).concat(rd(r))}var EE=tg?_E:Km;function jl(r,e,t){for(var i=EE(r),n=0,s=i.length,o=void 0,a=void 0;nthis.ready=!0),this}getFieldValueFromActiveFile(t){let i=this.app.workspace.getActiveFile();return!i||!this.canUseDataview||!this.ready?null:this.api.index.pages.get(i.path)?.fields.get(t)??null}get canUseDataview(){return this.app.plugins.getPlugin("dataview")!=null}async dataviewReady(){return new Promise(t=>{this.canUseDataview||t(!1),this.api&&t(!0),this.registerEvent(this.app.metadataCache.on("dataview:api-ready",()=>{this.api=(0,pd.getAPI)(),t(!0)}))})}},ai=new fd;var dA=/(?:\d+[Dd])?#(?:[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?:[+-]))?(?:\|(?:[^+-]+))?/u,pA=/(?:\d+[Dd]?)?dv\((?:.+)\)(?:\|(?:[+-]))?(?:\|(?:[^+-]+))?/u,fA=/(?:.*)?(?:\[.*\]\(|\[\[)(?:.+?)#?\^(?:.+?)(?:\)|\]\])\|?(?:.+)?/u,mA=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|?(?:.+)?/u,gA=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|line/u,yA=/[\(\^\+\-\*\/\)]/u,xA=/(?:\d+|\b)[Dd](?:%|F|-?\d+|\[\d+(?:[ \t]*[,-][ \t]*\d+)+\]|\b)/u,vA=/(?:=|=!|<|>|<=|>=|=<|=>|-=|=-)(?:\d+(?:[Dd](?:%|F|-?\d+|\[\d+(?:[ \t]*[,-][ \t]*\d+)+\]|\b))?)/u,md=class{constructor(e){this.table=e}parse(e){let t=e.length,i=this.table,n=[],s=[],o=0;for(;oh||u===h&&c.associativity==="right")break;n.push(s.shift())}s.unshift(a)}else n.push(a)}}for(;s.length;){let a=s.shift();if(a.value!=="(")n.push(a);else throw new Error("Mismatched parentheses.")}return n}},gd=class{constructor(){this.lexer=Ag.compile({WS:[{match:/[ \t]+/u},{match:/[{}]+/u}],table:fA,line:gA,section:mA,tag:dA,dataview:pA,condition:vA,kl:{match:/kl\d*/u,value:this.clampInfinite},kh:[{match:/kh\d*/u,value:this.clampInfinite},{match:/k\d*/u,value:this.clampInfinite}],dh:{match:/dh\d*/u,value:this.clampInfinite},dl:[{match:/dl\d*/u,value:this.clampInfinite}],"!!":{match:/!!(?:i|\d+)?/u,value:this.clampInfinite},"!":{match:/!(?:i|\d+)?/u,value:this.clampInfinite},r:{match:/r(?:i|\d+)?/u,value:this.clampInfinite},u:/u/u,narrative:{match:/^(?:\d*(?:[GgYyBbRrPpSsWw]|[AaPpCcBbSsFf]|pro|boo|blk|k|sb|diff))(?: ?\d*(?:[GgYyBbRrPpSsWw]|[AaPpDdCcBbSsFf]|pro|boo|blk|k|sb|diff))+$/u,value:e=>{let t=/[AaCcDd]/.test(e);return e.toLowerCase().replace(/pro/g,"y").replace(/diff/g,"p").replace(/(blk|k|sb)/g,"s").replace(/boo/g,"b").replace(/p/g,t?"y":"p").replace(/a/g,"g").replace(/d/g,"p").replace(/c/g,"r").replace(/f/g,"w").replace(/ /g,"").replace(/(\d+)(\w)/g,(i,n,s)=>s.repeat(Number(n)))}},stunt:/1[Dd]S/u,"%":/\d+[Dd]\d+%/u,fudge:{match:/(?:\d*[Dd])?[Dd]?F/u,value:e=>{let{roll:t=this.defaultRoll}=e.match(/(?:(?\d*)[Dd])?F/).groups;return`${t}dF`}},dice:[{match:xA,value:e=>{let{roll:t=this.defaultRoll,faces:i=this.defaultFace}=e.match(/(?\d+)?[Dd](?%|-?\d+|\[\d+(?:[ \t]*[,-][ \t]*\d+)+\])?/).groups;return`${t}d${i}`}},{match:/\d+/u},{match:/\b[A-Za-z][A-Za-z0-9_]+\b/u,value:e=>ai.getFieldValueFromActiveFile(e)??e}],sort:[{match:/s(?:a|d)*/u,value:e=>e=="s"||e=="sa"?"sa":"sd"}],math:yA});this.inline=new Map;this.parser=new md({"+":{precedence:1,associativity:"left"},"-":{precedence:1,associativity:"left"},"*":{precedence:2,associativity:"left"},"/":{precedence:2,associativity:"left"},"^":{precedence:3,associativity:"right"}})}clampInfinite(e){return/i$/.test(e)?"100":e.replace(/^\D+/g,"")}setInlineFields(e){this.inline=e}setDefaults(e,t){this.defaultRoll=e,this.defaultFace=t}setDefaultRoll(e){this.defaultRoll=e}setDefaultFace(e){this.defaultFace=e}parse(e){try{let t=Array.from(this.lexer.reset(e));return this.lexer.reset(),(0,lc.Ok)(this.parser.parse(this.transform(t)))}catch(t){return console.error(t),(0,lc.Err)("Could not parse")}}transform(e){e=e.filter(l=>l.type!="WS");let t=l=>l.type==="+"||l.type==="math"&&l.value==="+",i=l=>l.type==="-"||l.type==="math"&&l.value==="-",n=l=>t(l)||i(l),s=l=>l[l.length-1],o=(l,c)=>l.splice(l.length-1,1,c);e=e.reduce((l,c)=>{if(l.length==0)l.push(c);else{let u=s(l);n(u)&&n(c)?i(u)!=i(c)?i(u)||o(l,c):i(u)&&(u.type=u.type==="math"?u.type:"+",u.value="+"):l.push(c)}return l},[]);let a=[];for(let l of e)if(l.type=="condition"&&a.length>0){let c=a[a.length-1];c.conditions||(c.conditions=[]);let[u,h,d]=l.value.match(/(?=|=!|<|>|<=|>=|=<|=>|-=|=-)(?\d+(?:[Dd](?:%|F|-?\d+|\[\d+(?:[ \t]*[,-][ \t]*\d+)+\]|\b))?)/)??[],p=this.parse(d);p.isOk()&&c.conditions.push({operator:h,comparer:d,lexemes:p.unwrap(),value:l.value})}else a.push(l);return a}},nr=new gd;var Ao=class extends le.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.#t=!0;this.allFolders=this.app.vault.getAllLoadedFiles().filter(t=>t instanceof le.TFolder);this.folders=[];this.plugin=i}async getFonts(){let t=[];try{le.Platform.isMobile&&window?.Capacitor?.isPluginAvailable("App")?t=await window?.Capacitor?.Plugins.App?.getFonts()?.catch(n=>[]):t=await require("get-fonts").getFonts().catch(n=>[])}catch{}let i=new Set;for(let n of t)i.add(n);return[...i].sort()}async display(){let{containerEl:t}=this;t.empty(),t.addClass("dice-roller-settings"),this.contentEl=this.containerEl.createDiv("dice-roller-settings-content"),this.buildGenerics(this.contentEl.createDiv()),this.buildDisplay(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildDice(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildView(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildRender(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildFormulaSettings(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildTables(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildSections(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildTags(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildNarrative(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),this.buildDiceModTemplateFoldersSettings(this.contentEl.createEl("details",{cls:"dice-roller-nested-settings"})),t.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}buildGenerics(t){t.empty()}#e(t,i){let n=t.createEl("summary");new le.Setting(n).setHeading().setName(i),(0,le.setIcon)(n.createDiv("collapser").createDiv("handle"),"chevron-right")}buildDisplay(t){t.empty(),this.#e(t,"Dice Display"),new le.Setting(t).setName("Display Formula With Results").setDesc("Both the formula and the results will both be displayed in preview mode.").addToggle(i=>{i.setValue(this.plugin.data.displayResultsInline),i.onChange(async n=>{this.plugin.data.displayResultsInline=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Re-roll button position").setDesc("Controls position of the re-roll button").addDropdown(i=>{i.addOption(zt.LEFT,"Left"),i.addOption(zt.RIGHT,"Right"),i.addOption(zt.NONE,"None"),i.setValue(this.plugin.data.position),i.onChange(async n=>{this.plugin.data.position=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Display Formula in Parentheses After").setDesc(createFragment(i=>{i.createSpan({text:"For example, "}),i.createEl("code",{text:"`dice: 1d6`"}),i.createSpan({text:" will become "});let n=i.createSpan("dice-roller");n.createSpan({cls:"dice-roller-result",text:"3"}),(0,le.setIcon)(n.createSpan("dice-roller-button"),"dices"),i.createSpan({text:" (1d6). This only affects Dice Rollers."})})).addToggle(i=>{i.setValue(this.plugin.data.displayFormulaAfter),i.onChange(async n=>{this.plugin.data.displayFormulaAfter=n,await this.plugin.saveSettings()})})}buildDice(t){t.empty(),this.#e(t,"Dice Rollers"),new le.Setting(t).setName("Default Face").setDesc("Use this as the number of faces when it is omitted.").addText(i=>{i.setValue(`${this.plugin.data.defaultFace}`),i.inputEl.onblur=async()=>{isNaN(Number(i.inputEl.value))&&new le.Notice("The default face must be a number."),this.plugin.data.defaultFace=Number(i.inputEl.value),nr.setDefaultFace(this.plugin.data.defaultFace),await this.plugin.saveSettings()}}),new le.Setting(t).setName("Round Results").setDesc("Determine the rounding behavior for dice results.").addDropdown(i=>{i.addOptions(Ks).setValue(this.plugin.data.round).onChange(n=>{this.plugin.data.round=n,this.plugin.saveSettings()})}),new le.Setting(t).setName("Auto Roll dice").setDesc("On initial display, should dice be rolled or displayed empty.").addDropdown(i=>{i.addOption("None","Empty").addOption("Roll","Rolled").setValue(this.plugin.data.initialDisplay).onChange(n=>{this.plugin.data.initialDisplay=n,this.plugin.saveSettings()})}),new le.Setting(t).setName("Show Signed Results").setDesc("Positive results will show a '+'. This setting has no effect on negative results.").addToggle(i=>{i.setValue(this.plugin.data.signed).onChange(n=>{this.plugin.data.signed=n,this.plugin.saveSettings()})}),new le.Setting(t).setName("Always Render Dice").setDesc(createFragment(i=>{i.createSpan({text:"Dice rolled in notes will always be rendered. Use the "}),i.createEl("code",{text:"|norender"}),i.createSpan({text:" flag to prevent it."})})).addToggle(i=>{i.setValue(this.plugin.data.renderAllDice).onChange(n=>{this.plugin.data.renderAllDice=n,this.plugin.saveSettings()})}),new le.Setting(t).setName("Log All Rolls to Dice Tray").setDesc(createFragment(i=>{i.createSpan({text:"Dice rolled in notes will be added to the Dice Tray's Results section."})})).addToggle(i=>{i.setValue(this.plugin.data.addToView).onChange(n=>{this.plugin.data.addToView=n,this.plugin.saveSettings()})})}buildTables(t){t.empty(),this.#e(t,"Table Rollers"),new le.Setting(t).setName("Display Lookup Table Roll").setDesc("Lookup table rolls will display the rolled number along with the result.").addToggle(i=>{i.setValue(this.plugin.data.displayLookupRoll),i.onChange(async n=>{this.plugin.data.displayLookupRoll=n,await this.plugin.saveSettings()})})}buildSections(t){t.empty(),this.#e(t,"Section Rollers"),new le.Setting(t).setName("Add Copy Button to Section Results").setDesc("Randomly rolled sections will have a copy-content button to easy add result to clipboard.").addToggle(i=>{i.setValue(this.plugin.data.copyContentButton),i.onChange(async n=>{this.plugin.data.copyContentButton=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Display As Embeds").setDesc("Sections returned from Section & Tag Rollers will display as embedded fields.").addToggle(i=>{i.setValue(this.plugin.data.displayAsEmbed),i.onChange(async n=>{this.plugin.data.displayAsEmbed=n,await this.plugin.saveSettings()})})}buildTags(t){t.empty(),this.#e(t,"Tag Rollers"),new le.Setting(t).setName("Always Return Links for Tags").setDesc("Enables random link rolling with the link parameter. Override by specifying a section type.").addToggle(i=>{i.setValue(this.plugin.data.rollLinksForTags),i.onChange(async n=>{this.plugin.data.rollLinksForTags=n,await this.plugin.saveSettings()})})}buildNarrative(t){t.empty(),this.#e(t,"Narrative Rollers"),new le.Setting(t).setName("Symbol Set").setDesc("Select between Genesys or SWRPG symbols.").addDropdown(i=>{i.addOption("Genesys","Genesys"),i.addOption("SWRPG","SWRPG"),i.setValue(this.plugin.data.narrativeSymbolSet),i.onChange(async n=>{this.plugin.data.narrativeSymbolSet=n,Et.setData(this.plugin.getRendererData()),await this.plugin.saveSettings()})}),new le.Setting(t).setName("Display Results as Symbols").setDesc("Toggle between text and symbol results.").addToggle(i=>{i.setValue(this.plugin.data.displayAsSymbols),i.onChange(async n=>{this.plugin.data.displayAsSymbols=n,await this.plugin.saveSettings()})})}buildView(t){t.empty(),this.#e(t,"Dice Tray"),new le.Setting(t).setName("Open Dice Tray on Startup").setDesc("The dice view can always be opened using the command from the command palette.").addToggle(i=>{i.setValue(this.plugin.data.showLeafOnStartup),i.onChange(async n=>{this.plugin.data.showLeafOnStartup=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Dice Tray Buttons").setDesc("Add and remove the buttons available in the Dice Tray here, to customize what quick-actions are available to roll."),this.iconsEl=t.createDiv("dice-icons"),this.buildIcons()}buildIcons(){if(this.iconsEl.empty(),!this.plugin.data.icons){this.iconsEl.createSpan({cls:"no-icons",text:"No dice buttons created! Create a button to use this functionality."});return}let i=this.iconsEl.createDiv("existing-buttons has-table").createDiv("buttons-table");for(let u=0;u{s.formula=u,l.setDisabled(s.text?.length===0||s.formula?.length===0)}),new le.TextComponent(a).setPlaceholder("Display").onChange(u=>{s.text=u,l.setDisabled(s.text?.length===0||s.formula?.length===0)});let l=new le.ExtraButtonComponent(n.createDiv("actions")).setIcon("save").setDisabled(!0).onClick(async()=>{!s.text||!s.formula||(this.plugin.data.icons.push({...s}),this.buildIcons(),await this.plugin.view.buildButtons(),await this.plugin.saveSettings())}),c=new le.DropdownComponent(o);for(let[u,h]of Object.entries(ql))c.addOption(h,h);c.setValue(s.shape).onChange(u=>{s.shape=c.getValue()}),s.shape=c.getValue()}buildStaticIcon(t,i){t.empty(),t.removeClass("add-new");let n=this.plugin.data.icons[i],s=t.createDiv("shape dice-button");Wl.registerIcon(n.id,n.shape,n.text),(0,le.setIcon)(s,n.id),t.createDiv({cls:"formula",text:n.formula});let o=t.createDiv("actions");new le.ExtraButtonComponent(o).setIcon("edit").onClick(()=>{this.buildEditIcon(t,i,n)}),new le.ExtraButtonComponent(o).setIcon("trash").onClick(async()=>{this.plugin.data.icons.splice(i,1),await this.plugin.view.buildButtons(),this.buildIcons()})}buildEditIcon(t,i,n){t.empty(),t.addClass("add-new");let s={text:n.text,formula:n.formula,shape:n.shape,id:n.id},o=t.createDiv("shape"),a=t.createDiv("formula");new le.TextComponent(a).setPlaceholder("Formula").setValue(s.formula).onChange(h=>{s.formula=h,c.setDisabled(s.text.length===0||s.formula.length===0)}),new le.TextComponent(a).setPlaceholder("Display").setValue(s.text).onChange(h=>{s.text=h,c.setDisabled(s.text.length===0||s.formula.length===0)});let l=t.createDiv("actions"),c=new le.ExtraButtonComponent(l).setIcon("checkmark").setDisabled(s.text.length===0||s.formula.length===0).onClick(async()=>{!s.text||!s.formula||(this.plugin.data.icons.splice(i,1,{...s}),await this.plugin.saveSettings(),this.buildStaticIcon(t,i),await this.plugin.view.buildButtons())});new le.ExtraButtonComponent(l).setIcon("cross").onClick(()=>{this.buildStaticIcon(t,i)});let u=new le.DropdownComponent(o);for(let[h,d]of Object.entries(ql))u.addOption(d,d);u.setValue(s.shape).onChange(h=>{s.shape=h})}buildRender(t){t.empty(),this.#e(t,"Graphical Dice"),new le.Setting(t).setName("Display graphics for Dice Tray Rolls").setDesc("Dice rolls from dice view will be displayed on screen.").addToggle(s=>{s.setValue(this.plugin.data.renderer),s.onChange(async o=>{this.plugin.data.renderer=o,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Display Time for Dice Graphics").setDesc("Rendered dice will stay on screen for this number of milliseconds. Leave blank to require a click to clear dice.").addText(s=>{s.inputEl.setAttr("type","number"),s.inputEl.onblur=o=>{Number(s.getValue())<0&&(new le.Notice("Render time cannot be less than 0."),s.setValue("0"))},s.setValue(`${this.plugin.data.renderTime}`),s.onChange(async o=>{o&&Number(o)<0||isNaN(Number(o))||(this.plugin.data.renderTime=Number(o),Et.setData(this.plugin.getRendererData()),await this.plugin.saveSettings())})}).addExtraButton(s=>{s.setIcon("reset").setTooltip("Reset to Default").onClick(async()=>{this.plugin.data.renderTime=Yl.renderTime,await this.plugin.saveSettings(),this.buildRender(t)})}),new le.Setting(t).setName("Use Colorful Dice").setDesc("Rendered dice will be varied colors based on the dice type. This will override manually set dice and text colors.").addToggle(s=>{s.setValue(this.plugin.data.colorfulDice),s.onChange(async o=>{this.plugin.data.colorfulDice=o,Et.setData(this.plugin.getRendererData()),await this.plugin.saveSettings()})}),new le.Setting(t).setName("Adjust Dice Scale").setDesc("Control the size of rendered dice.").addSlider(s=>{s.setLimits(.5,1.5,.1).setValue(this.plugin.data.scaler).onChange(o=>{this.plugin.data.scaler=o,Et.setData(this.plugin.getRendererData()),this.plugin.saveSettings()})}),new le.Setting(t).setName("Font for dice").setDesc("Select the font to use for the dice").addText(async s=>{let o=async()=>{this.plugin.data.textFont=s.getValue(),await this.plugin.saveSettings(),Et.setData(this.plugin.getRendererData())};new Jl(this.app,s,await this.getFonts()).onSelect(({item:l})=>{s.setValue(l),o()}),s.setValue(this.plugin.data.textFont),s.inputEl.onblur=async()=>{o()}}),new le.Setting(t).setName("Dice Base Color").setDesc("Rendered dice will be this color.").controlEl.createEl("input",{type:"color",value:this.plugin.data.diceColor},s=>{s.value=this.plugin.data.diceColor,s.onchange=async({target:o})=>{let a=o.value;this.plugin.data.diceColor=a,Et.setData(this.plugin.getRendererData()),await this.plugin.saveSettings()}}),new le.Setting(t).setName("Dice Text Color").setDesc("Rendered dice will use this color for their numbers.").controlEl.createEl("input",{type:"color",value:this.plugin.data.textColor},s=>{s.value=this.plugin.data.textColor,s.onchange=async({target:o})=>{let a=o.value;a&&(this.plugin.data.textColor=a,Et.setData(this.plugin.getRendererData()),await this.plugin.saveSettings())}}),new le.Setting(t).setName("Show Notice for Results").setDesc(createFragment(s=>{s.createSpan({text:"A notice will be displayed for each rendered dice roll."}),s.createEl("br"),s.createSpan({text:"Changing this setting will not effect any existing dice rollers in opened notes."})})).addToggle(s=>{s.setValue(this.plugin.data.showRenderNotice).onChange(async o=>{this.plugin.data.showRenderNotice=o,await this.plugin.saveSettings()})})}buildFormulaSettings(t){t.empty(),this.#e(t,"Saved Formulas");let i=t.createDiv("dice-roller-setting-additional-container"),n=i.createDiv();new le.Setting(n).setName("Add Formula").setDesc("Add a new formula shortcut.").addButton(a=>a.setTooltip("Add Formula").setButtonText("+").onClick(async()=>{let c=await this.buildFormulaForm(n);c&&(this.plugin.data.formulas[c.alias]=c.formula,this.buildFormulaSettings(t),await this.plugin.saveSettings())}));let s=i.createDiv("additional"),o=this.plugin.data.formulas;for(let[a,l]of Object.entries(o)){let c=new le.Setting(s).setName(a);c.controlEl.createSpan({text:l}),c.addExtraButton(u=>u.setIcon("edit").setTooltip("Edit").onClick(async()=>{let h=await this.buildFormulaForm(n,{alias:a,formula:l});h&&(delete this.plugin.data.formulas[a],this.plugin.data.formulas[h.alias]=h.formula,this.buildFormulaSettings(t),await this.plugin.saveSettings())})).addExtraButton(u=>u.setIcon("trash").setTooltip("Delete").onClick(async()=>{delete this.plugin.data.formulas[a],await this.plugin.saveSettings(),this.buildFormulaSettings(t)}))}Object.values(o).length||s.createSpan({text:"Create a formula to see it here!",cls:"no-formulas"})}async buildFormulaForm(t,i={alias:null,formula:null}){return new Promise(n=>{let s=t.createDiv("add-new-formula"),o=s.createDiv("formula-data");new le.Setting(o).setName("Alias").addText(l=>{l.setValue(i.alias).onChange(c=>i.alias=c)}),new le.Setting(o).setName("Formula").addText(l=>{l.setValue(i.formula).onChange(c=>i.formula=c)});let a=s.createDiv("formula-buttons");new le.Setting(a).addButton(l=>l.setCta().setButtonText("Save").onClick(async()=>{s.detach(),n(i)})).addExtraButton(l=>l.setIcon("cross").setTooltip("Cancel").onClick(()=>{s.detach(),n(null)}))})}#t;buildDiceModTemplateFoldersSettings(t){t.empty(),this.#e(t,"Modify Dice"),new le.Setting(t).setName(createFragment(i=>{i.createSpan({text:"Apply "}),i.createEl("code",{text:"dice-mod"}),i.createSpan({text:" in live-preview"})})).setDesc(createFragment(i=>{i.createSpan({text:"If not enabled "}),i.createEl("code",{text:"dice-mod"}),i.createSpan({text:" will only be applied/replaced in read mode."})})).addToggle(i=>{i.setValue(this.plugin.data.replaceDiceModInLivePreview),i.onChange(async n=>{this.plugin.data.replaceDiceModInLivePreview=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Escape Markdown When Modifying").setDesc(createFragment(i=>{i.createSpan({text:"Markdown characters will be escaped when using "}),i.createEl("code",{text:"dice-mod"}),i.createSpan({text:"."})})).addToggle(i=>{i.setValue(this.plugin.data.escapeDiceMod),i.onChange(async n=>{this.plugin.data.escapeDiceMod=n,await this.plugin.saveSettings()})}),new le.Setting(t).setName("Add Formula When Using Modify Dice").setDesc(createFragment(i=>{i.createSpan({text:"Both the formula and the results will both be added to the note when using "}),i.createEl("code",{text:"dice-mod"}),i.createSpan({text:"."})})).addToggle(i=>{i.setValue(this.plugin.data.displayFormulaForMod),i.onChange(async n=>{this.plugin.data.displayFormulaForMod=n,await this.plugin.saveSettings()})}),this.pathsEl=t.createDiv("template-paths dice-roller-setting-additional-container"),this.buildPaths()}buildPaths(){if(this.#t){this.folders=this.allFolders.filter(n=>!(n.path in this.plugin.data.diceModTemplateFolders));let i=Object.entries(this.plugin.data.diceModTemplateFolders);i.sort((n,s)=>n[0].localeCompare(s[0])),this.plugin.data.diceModTemplateFolders=Object.fromEntries(i),this.#t=!1}this.pathsEl.empty(),new le.Setting(this.pathsEl).setName("Template Folders").setDesc(createFragment(i=>{i.createSpan({text:"Define folders where "}),i.createEl("code",{text:"dice-mod"}),i.createSpan({text:" is not applied/replaced and can be used in templates."})})).setHeading();let t=this.pathsEl.createDiv("additional");for(let i in this.plugin.data.diceModTemplateFolders)this.buildStaticPath(t.createDiv(),i);this.buildEditPath(t.createDiv())}buildStaticPath(t,i){t.empty();let n=this.plugin.data.diceModTemplateFolders[i],s=new le.Setting(t).setName(i);s.setDesc(createFragment(o=>{let a=o.createDiv({attr:{style:"display: flex;align-items: center;gap: 0.5rem;"}});n?((0,le.setIcon)(a,"folder-tree"),a.createSpan({text:"Includes Subfolders"})):((0,le.setIcon)(a,"folder-closed"),a.createSpan({text:"Root Only"}))})),s.addExtraButton(o=>o.setIcon("edit").onClick(()=>{this.buildEditPath(t,i)})).addExtraButton(o=>o.setIcon("trash").onClick(async()=>{delete this.plugin.data.diceModTemplateFolders[i],await this.plugin.saveSettings(),this.#t=!0,this.buildPaths()}))}buildEditPath(t,i){t.empty();let n={folder:i,useSubfolders:this.plugin.data.diceModTemplateFolders[i]??!0},s=t.createDiv("template-edit setting-item"),o=s.createDiv("template-input"),a=o.createDiv("folder-input"),l=new le.ExtraButtonComponent(o).onClick(()=>{n.useSubfolders=!n.useSubfolders,n.useSubfolders?l.setIcon("folder-tree").setTooltip("Including Subfolders"):l.setIcon("folder-closed").setTooltip("Not Including Subfolders")});this.plugin.data.diceModTemplateFolders[i]??!0?l.setIcon("folder-tree").setTooltip("Including Subfolders"):l.setIcon("folder-closed").setTooltip("Not Including Subfolders");let c=s.createDiv("actions");i||new le.ExtraButtonComponent(c).extraSettingsEl.setAttr("style","visibility: hidden;");let u=new le.ExtraButtonComponent(c).setIcon(i?"checkmark":"save").setDisabled(!i).onClick(async()=>{this.plugin.data.diceModTemplateFolders[n.folder]=n.useSubfolders,await this.plugin.saveSettings(),n.folder!=i?(this.#t=!0,this.buildPaths()):this.buildStaticPath(t,i)});i&&new le.ExtraButtonComponent(c).setIcon("cross").onClick(()=>this.buildStaticPath(t,i)),this.buildPathInput(a,u,h=>{n.folder=h},i)}buildPathInput(t,i,n,s="Folder"){let o=c=>{if(!c||!c.length||c in this.plugin.data.diceModTemplateFolders)return i.setDisabled(!0),!1;i.setDisabled(!1),n((0,le.normalizePath)(c))},a=new le.TextComponent(t).setPlaceholder(s).onChange(c=>{o(c)}),l=new Mg.FolderInputSuggest(this.app,a,this.folders);l.onSelect(async c=>{l.close(),l.setValue(c.item.path),o(c.item.path)})}};var pt=require("obsidian");var Bg=on(Dg());var o3=on(dd());var en=require("obsidian");var Tg=/(?:(?\d+)[Dd])?#(?[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?[\+-]))?(?:\|(?[^\+-]+))?/u,Cg=/(?:(?\d+)[Dd]?)?dv\((?.+)\)(?:\|(?[\+-]))?(?:\|(?[^\+-]+))?/u,Rg=/(?.*)?(?:\[.*\]\(|\[\[)(?.+?)#?\^(?.+?)(?:\]\]|\))(?:\|(?
.+))?/,uc=/(?:(?\d+)[Dd])?(?:\[.*\]\(|\[\[)(?.+)(?:\]\]|\))\|?(?.+)?/;var yd=class{constructor(){this.result="";this.combinedTooltip=""}},hc=class r extends yo{constructor(t,i,n,s,o,a=t.position,l){super(t,i,n,s,o,a);this.lookup=l;this.isLookup=!1;this.combinedTooltip="";this.prettyTooltip="";this.getPath()}getPath(){let{groups:t}=this.lexeme.value.match(Rg)??{},{diceRoll:i="1",link:n,block:s,header:o}=t??{};if(!n||!s)throw new Error("Could not parse link.");let a=i.match(/(\d*?)[Dd]$/);if(a){let[,l="1"]=a;this.rollsFormula=l}else this.rollsFormula=i;this.rolls=1,this.path=decodeURIComponent(n.replace(/(\[|\]|\(|\))/g,"")),this.block=s.replace(/(\^|#)/g,"").trim().toLowerCase(),this.header=o}getTooltip(){return this.prettyTooltip}async getReplacer(){return this.result}getResultText(){let t=[this.result];return this.data.displayResultsInline&&t.unshift(this.inlineText),t.join("")}async build(){this.resultEl.empty();let t=[this.result];this.data.displayResultsInline&&t.unshift(this.inlineText);let i=this.resultEl.createSpan("embedded-table-result");en.MarkdownRenderer.render(this.app,this.getResultText(),i,this.source,new en.Component)}prettify(t){let i=/(.*?)(\(|\)|;|\|\|)(.*)/,n=" ",s=0,o="",a=t,l;for(;l=a.match(i);){let[,c,u,h]=l;o+=c,u==")"?(s--,o+=` +`,o+=n.repeat(s),o+=")"):(u=="("?(s++,o+="("):u==";"?o+=",":u=="||"&&(o+="|"),o+=` +`,o+=n.repeat(s)),a=h}return o+=a,o}async getSubResult(t){let i=new yd;typeof t=="number"?i.result=t.toString():i.result=t;let n=[];if(typeof t=="string"){let s=/(?:\`dice:)(.*?)(?:\`)/g,o=t.matchAll(s);for(let a of o){let l=a[1].trim(),c=await Tt.getRoller(l,this.source);if(c==null)continue;c.addContexts(...this.components),await c.roll();let u=await this.getSubResult(c.result),h;if(u.result instanceof en.TFile?h=u.result.basename:h=u.result,i.result=i.result.replace(a[0],h),c instanceof r)n.push(c.combinedTooltip);else{let[d,p]=c.getTooltip().split(` +`);n.push(d+" --> "+p)}}}return i.combinedTooltip=n.join(";"),i}async getResult(){let t=[],i=[],n=this.original;if(this.rollsFormula)try{let s=await Tt.getRoller(this.rollsFormula,this.source);if(s){if(!(s instanceof Wt))return this.prettyTooltip="TableRoller only supports dice rolls to select multiple elements.",new en.Notice(this.prettyTooltip),"ERROR";let o=s;o.addContexts(...this.components),await o.roll(),this.rolls=o.result,o.isStatic||(n=n.replace(this.rollsFormula,`${this.rollsFormula.trim()} --> ${o.getDisplayText()} > `))}}catch{return this.prettyTooltip=`TableRoller: '${this.rollsFormula}' is not a valid dice roll.`,new en.Notice(this.prettyTooltip),"ERROR"}for(let s=0;sh[1]===void 0&&c===h[0]||c>=h[0]&&h[1]>=c);u&&(o=this.lookupRoller.original.trim()+" --> "+`${this.lookupRoller.getDisplayText()}${this.header?" | "+this.header:""}`.trim(),l=u[1])}else{let c=[...this.options],u=this.getRandomBetween(0,c.length-1);o=c.length+" rows --> [row "+(u+1)+"]",l=c[u]}a=await this.getSubResult(l),t.push(a.result),a.combinedTooltip&&(o+=" > ("+a.combinedTooltip+")"),i.push(o)}return i.length==0?this.combinedTooltip=n:i.length==1?this.combinedTooltip=n+" "+i.join(""):this.combinedTooltip=n+" ==> ("+i.join(" ||")+")",this.prettyTooltip=this.prettify(this.combinedTooltip),t.join("||")}async roll(){return new Promise(async t=>{this.loaded?(this.result=await this.getResult(),this.render(),this.trigger("new-result"),t(this.result)):(this.once("loaded",async()=>{this.result=await this.getResult(),this.render(),this.trigger("new-result"),t(this.result)}),this.load())})}async getOptions(t,i){if(this.cache=t,!this.cache||!this.cache.blocks||!(this.block in this.cache.blocks))throw new Error(`Could not read file cache. Does the block reference exist? + +${this.path} > ${this.block}`);let n=this.cache.sections?.find(a=>a.position==this.cache.blocks[this.block].position),s=this.cache.blocks[this.block].position,o=i.slice(s.start.offset,s.end.offset);if(await this.checkForDirtiness(o))if(this.content=o,n&&n.type==="list")this.options=this.content.split(` +`);else{let a=bA(this.content);if(/dice:\s*([\s\S]+)\s*?/.test(Array.from(a.columns.keys())[0])||this.lookup){let l=this.lookup??Array.from(a.columns.keys())[0].split(":").pop().replace(/\`/g,""),c=await Tt.getRoller(l.replace(/{ESCAPED_PIPE}/g,"\\|"),this.source);c&&(c.addContexts(...this.components),c instanceof Wt&&(this.lookupRoller=c,this.lookupRanges=a.rows.map(u=>{let[h,d]=u.replace(/\\\|/g,"{ESCAPED_PIPE}").split("|").map(y=>y.replace(/{ESCAPED_PIPE}/g,"\\|")).map(y=>y.trim()),[,p,m]=h.match(/(\d+)(?:[^\d]+?(\d+))?/)??[];if(!(!p&&!m))return[[Number(p),m?Number(m):void 0],d]}),this.isLookup=!0))}if(this.header==="xy"&&!a.columns.has("xy")){this.options=[];for(let l of Array.from(a.columns.values()).slice(1))this.options.push(...l)}else if(this.header&&a.columns.has(this.header))this.options=a.columns.get(this.header);else{if(this.header)throw new Error(`Header ${this.header} was not found in table ${this.path} > ${this.block}.`);this.options=a.rows}}}},wA=/^\|?([\s\S]+?)\|?$/,Fg=/\|/g;function bA(r){let e=r.split(` +`),i=e.map(o=>(o.trim().match(wA)??[,o.trim()])[1])[0].replace("\\|","{ESCAPED_PIPE}").split(Fg),n=[],s=[];for(let o in i){let a=i[o];a.trim().length||(a=o),s.push([a.trim(),[]])}for(let o of e.slice(2)){let a=o.trim().replace(/\\\|/g,"{ESCAPED_PIPE}").split(Fg).map(l=>l.replace(/{ESCAPED_PIPE}/g,"\\|")).map(l=>l.trim()).filter(l=>l.length);n.push(a.join(" | "));for(let l in a){let c=a[l].trim();!c.length||!s[l]||s[l][1].push(c)}}return{columns:new Map(s),rows:n}}var Rn=require("obsidian");function _A(r){let e="",t="abcdefghijklmnopqrstuvwxyz0123456789",i=t.length;for(let n=0;n{if(i&&i.getModifierState("Control")||i.getModifierState("Meta")){i.stopPropagation();return}};let t=this.resultEl.createDiv({cls:this.getEmbedClass()});if(!this.data.displayResultsInline){let i="type"in e?e.type:"List Item";t.setAttrs({"aria-label":`${this.file.basename}: ${i}`})}if(!e){t.createDiv({cls:"dice-no-results",text:"No results."});continue}if(Rn.MarkdownRenderer.render(this.app,this.displayFromCache(e),t.createDiv(),this.source,new Rn.Component),this.data.copyContentButton&&this.results.length>1){let i=t.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});i.addEventListener("click",n=>{n.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(e).trim()).then(async()=>{new Rn.Notice("Result copied to clipboard.")})}),(0,Rn.setIcon)(i,"copy")}}}displayFromCache(...e){let t=[];for(let i of e)t.push(this.content.slice(i.position.start.offset,i.position.end.offset));return t.join(` + +`)}transformResultsToString(){return this.displayFromCache(...this.results)}async getBlockId(){this.result||await this.roll();let e=this.cache.blocks??{},t=Object.entries(e).find(([i,n])=>Lg(n.position,this.result.position));if(!t){let i=`${EA(4)}`,n=`${this.content.slice(0,this.result.position.end.offset+1)}^${i}${this.content.slice(this.result.position.end.offset)}`;return this.app.vault.modify(this.file,n),i}return t[0]}getPath(){let{groups:e}=this.lexeme.value.match(uc)??{},{roll:t=1,link:i,types:n}=e??{};if(!i)throw new Error("Could not parse link.");this.rolls=(t&&!isNaN(Number(t))&&Number(t))??1,this.path=decodeURIComponent(i.replace(/(\[|\]|\(|\))/g,"")),this.types=n?.split(","),this.levels=n?.split(",").map(s=>/heading\-\d+/.test(s)?s.split("-").pop():null).filter(s=>s),this.types=n?.split(",").map(s=>/heading\-\d+/.test(s)?s.split("-").shift():s)}async getOptions(e,t){if(this.cache=e,!this.cache||!this.cache.sections)throw new Error("Could not read file cache.");let i=t;await this.checkForDirtiness(i)&&(this.content=i,this.content=t,this.options=this.cache.sections.filter(({type:n,position:s})=>this.types?n=="heading"&&this.types.includes(n)&&this.levels.length?(this.cache.headings??[]).filter(({level:a})=>this.levels.includes(`${a}`)).some(({position:a})=>Lg(a,s)):this.types.includes(n):!["yaml","thematicBreak"].includes(n)),this.types&&this.types.includes("listItem")&&this.options.push(...this.cache.listItems))}async roll(){return new Promise((e,t)=>{if(!this.loaded)this.once("loaded",()=>{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let n=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(n),1),n}).filter(n=>n),this.render(),this.trigger("new-result"),this.result=this.results[0],e(this.results[0])}),this.load();else{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let n=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(n),1),n}).filter(n=>n),this.render(),this.trigger("new-result"),this.result=this.results[0],e(this.results[0])}})}},Lg=(r,e)=>r.start.col==e.start.col&&r.start.line==e.start.line&&r.start.offset==e.start.offset;var Zn=require("obsidian");var dc=class extends Qs{constructor(t,i,n,s,o,a=t.position){super(t,i,[n],a);this.data=t;this.original=i;this.lexeme=n;this.source=s;this.app=o;this.isLink=!1;this.loaded=!1}async getReplacer(){return this.isLink?`[[${this.result.file.basename}]]`:await this.result.getReplacer()}guardDataview(){if(!ai.canUseDataview)throw new Zn.Notice("A query can only be rolled with the Dataview plugin enabled."),new Error("A query can only be rolled with the Dataview plugin enabled.")}initialize(){this.guardDataview();let{roll:t=1,query:i,types:n}=this.lexeme.value.match(this.regex).groups;this.base=i,this.rolls=Number(t),this.types=n,this.types&&(this.isLink=this.types.includes("link"),this.types=this.types.replace("link","")),!this.isLink&&this.data.displayAsEmbed&&this.containerEl.addClasses(["has-embed","markdown-embed"]),this.getFiles()}get typeText(){return this.types?.length?`|${this.types}`:""}async getFiles(){if(!ai.canUseDataview){new Zn.Notice("Dice Roller: Dataview must be installed and enabled to use query rollers.");return}await ai.dataviewReady();let t=await ai.api.query(this.query);if(!t.successful)throw new Error(`No files found with that query. Is the query correct? + +`+this.query);let i=new Set(t.value.values.reduce((o,a)=>(a.type=="file"&&o.push(a.path),o),[]));if(i&&i.delete(this.source),!i||!i.size)throw new Error(`No files found with that query. Is the query correct? + +`+this.query);let n=Array.from(i).map(o=>`[[${o}]]${this.typeText}`);this.results=[];let s=[];for(let o of n)s.push(new Promise(async a=>{let l=new sr(this.data,o,{...this.lexeme,value:o,type:"section"},this.source,this.app,this.position,!1);this.results.push(l),l.addContexts(...this.components),a()}));await Promise.all(s),this.loaded=!0,this.trigger("loaded")}async build(){this.resultEl.empty(),this.data.displayResultsInline&&this.resultEl.createSpan({text:this.inlineText});let t=[],i=new Map(this.results.map((n,s)=>[s,n]));for(let n=0;n(s.push(`[[${o.file.basename}]]`),l.length>1&&a!=l.length-1&&s.push(","),s),[]);Zn.MarkdownRenderer.render(this.app,n.join(" "),this.resultEl,this.app.workspace.getActiveFile()?.path,new Zn.Component)}else for(let n of t){let s=this.resultEl.createDiv();s.createEl("h5",{cls:"dice-file-name",text:n.file.basename}),s.appendChild(n.containerEl)}}async roll(){return new Promise((t,i)=>{this.loaded?(this.result=this.results[0],this.render(),this.trigger("new-result"),t(this.result)):(this.on("loaded",()=>{this.result=this.results[0],this.render(),this.trigger("new-result"),t(this.result)}),this.load())})}getTooltip(){return this.original}},pc=class extends dc{constructor(t,i,n,s,o,a=t.position){super(t,i,n,s,o,a);this.data=t;this.original=i;this.lexeme=n;this.source=s;this.regex=Cg;this.initialize()}get query(){return this.base}},fc=class extends dc{constructor(t,i,n,s,o,a=t.position){super(t,i,n,s,o,a);this.data=t;this.original=i;this.lexeme=n;this.source=s;this.regex=Tg;this.initialize()}get query(){return`list from #${this.base}`}};var Fn=require("obsidian");var mc=class extends tr{async getReplacer(){return this.result}getTooltip(){return`${this.original} +${this.path}`}async build(){if(this.resultEl.empty(),this.data.displayResultsInline&&this.inline&&this.resultEl.createSpan({text:this.inlineText}),!this.results||!this.results.length){this.resultEl.createDiv({cls:"dice-no-results",text:"No results."});return}this.data.copyContentButton&&this.copy.removeClass("no-show");for(let e of this.results){this.resultEl.onclick=async i=>{if(i&&i.getModifierState("Control")||i.getModifierState("Meta")){i.stopPropagation();return}};let t=this.resultEl.createDiv({cls:this.getEmbedClass()});if(!e){t.createDiv({cls:"dice-no-results",text:"No results."});continue}if(Fn.MarkdownRenderer.render(this.app,e,t.createDiv(),this.source,new Fn.Component),this.data.copyContentButton&&this.results.length>1){let i=t.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});i.addEventListener("click",n=>{n.stopPropagation(),navigator.clipboard.writeText(e).then(async()=>{new Fn.Notice("Result copied to clipboard.")})}),(0,Fn.setIcon)(i,"copy")}}}transformResultsToString(){return this.results.join(` + +`)}getPath(){let{groups:e}=this.lexeme.value.match(uc)??{},{roll:t=1,link:i,types:n}=e??{};if(!i)throw new Error("Could not parse link.");this.rolls=(t&&!isNaN(Number(t))&&Number(t))??1,this.path=i.replace(/(\[|\])/g,""),this.types=n?.split(",")}async getOptions(e,t){if(await this.checkForDirtiness(t)){if(this.content=t,!this.content)throw new Error("Could not read file cache.");this.options=this.content.trim().split(` +`).map(i=>i.trim()).filter(i=>i&&i.length)}}async roll(){return new Promise((e,t)=>{if(!this.loaded)this.once("loaded",()=>{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let n=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(n),1),n}).filter(n=>n),this.render(),this.trigger("new-result"),e(this.results[0])}),this.load();else{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let n=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(n),1),n}).filter(n=>n),this.render(),this.trigger("new-result"),e(this.results[0])}})}};var tn=class extends gt{canRender(){return!0}},xd=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===6&&(e.success+=1),t===5&&(e.advantage+=1,e.success+=1),t===4&&(e.advantage+=1),t===3&&(e.advantage+=2);return e}getType(){return Ue.BOOST}canRender(){return!0}constructor(e){super(`${e}d6`)}},vd=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===6&&(e.advantage-=1),t===5&&(e.advantage-=1),t===4&&(e.success-=1),t===3&&(e.success-=1);return e}getType(){return Ue.SETBACK}canRender(){return!0}constructor(e){super(`${e}d6`)}},wd=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===8&&(e.advantage+=2),t===7&&(e.advantage+=1,e.success+=1),t===6&&(e.advantage+=1),t===5&&(e.advantage+=1),t===4&&(e.success+=2),t===3&&(e.success+=1),t===2&&(e.success+=1);return e}getType(){return Ue.ABILITY}canRender(){return!0}constructor(e){super(`${e}d8`)}},bd=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===8&&(e.advantage-=1,e.success-=1),t===7&&(e.advantage-=2),t===6&&(e.advantage-=1),t===5&&(e.advantage-=1),t===4&&(e.advantage-=1),t===3&&(e.success-=2),t===2&&(e.success-=1);return e}getType(){return Ue.DIFFICULTY}canRender(){return!0}constructor(e){super(`${e}d8`)}},_d=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===12&&(e.triumph+=1,e.success+=1),t===11&&(e.advantage+=2),t===10&&(e.advantage+=2),t===9&&(e.advantage+=1,e.success+=1),t===8&&(e.advantage+=1,e.success+=1),t===7&&(e.advantage+=1,e.success+=1),t===6&&(e.advantage+=1),t===5&&(e.success+=2),t===4&&(e.success+=2),t===3&&(e.success+=1),t===2&&(e.success+=1);return e}getType(){return Ue.PROFICIENCY}canRender(){return!0}constructor(e){super(`${e}d12`)}},Ed=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===12&&(e.despair+=1,e.success-=1),t===11&&(e.advantage-=2),t===10&&(e.advantage-=2),t===9&&(e.advantage-=1,e.success-=1),t===8&&(e.advantage-=1,e.success-=1),t===7&&(e.advantage-=1),t===6&&(e.advantage-=1),t===5&&(e.success-=2),t===4&&(e.success-=2),t===3&&(e.success-=1),t===2&&(e.success-=1);return e}getType(){return Ue.CHALLENGE}canRender(){return!0}constructor(e){super(`${e}d12`)}},Ad=class extends tn{toNarrativeResult(){let e={success:0,advantage:0,triumph:0,despair:0,light:0,dark:0};for(let t of this.resultArray)t===12&&(e.light+=2),t===11&&(e.light+=2),t===10&&(e.light+=2),t===9&&(e.light+=1),t===8&&(e.light+=1),t===7&&(e.dark+=2),t===6&&(e.dark+=1),t===5&&(e.dark+=1),t===4&&(e.dark+=1),t===3&&(e.dark+=1),t===2&&(e.dark+=1),t===1&&(e.dark+=1);return e}getType(){return Ue.FORCE}canRender(){return!0}constructor(e){super(`${e}d12`)}},AA=["g","y","b","r","p","s","w"],gc=class extends er{constructor(t,i,n,s,o=t.position){super(t,i,n,o);this.data=t;this.original=i;this.lexemes=n;this.app=s;this.children=[]}getTooltip(){let t={success:0,failure:0,advantage:0,threat:0,triumph:0,despair:0,light:0,dark:0};for(let i of this.children){let n=i.toNarrativeResult();n.success>0?t.success+=n.success:t.failure+=n.success,n.advantage>0?t.advantage+=n.advantage:t.threat+=n.advantage,t.triumph+=n.triumph,t.despair+=n.despair,t.light+=n.light,t.dark+=n.dark}return`**Totals** +Successes: ${t.success} +Failures: ${t.failure} +Advantages: ${t.advantage} +Threats: ${t.threat} +Triumphs: ${t.triumph} +Despairs: ${t.despair} +${t.light>0?`Light Side: ${t.light}`:""} +${t.dark>0?`Dark Side: ${t.dark}`:""}`}formatSymbol(t,i){return`${t}`}getResultText(){let t=[];return this.data.narrativeSymbolSet,this.data.displayAsSymbols?(this.result.success===0?t.push("Wash"):this.result.success>0?t.push(`${this.result.success} `+this.formatSymbol("s",this.data.narrativeSymbolSet)):this.result.success<0&&t.push(`${this.result.success} `+this.formatSymbol("f",this.data.narrativeSymbolSet)),this.result.advantage>0?t.push(`${this.result.advantage} `+this.formatSymbol("a",this.data.narrativeSymbolSet)):this.result.advantage<0&&t.push(`${Math.abs(this.result.advantage)} `+this.formatSymbol("t",this.data.narrativeSymbolSet)),this.result.triumph>0?t.push(`${this.result.triumph} `+this.formatSymbol("x",this.data.narrativeSymbolSet)):this.result.despair>0&&t.push(`${Math.abs(this.result.despair)} `+this.formatSymbol("y",this.data.narrativeSymbolSet)),this.result.light>0&&t.push(`${this.result.light} `+this.formatSymbol("z",this.data.narrativeSymbolSet)),this.result.dark>0&&t.push(`${this.result.dark} `+this.formatSymbol("Z",this.data.narrativeSymbolSet)),t.join(", ")):(this.result.success===0?t.push("Wash"):this.result.success>0?t.push(`${this.result.success} success`):this.result.success<0&&t.push(`${Math.abs(this.result.success)} failure`),this.result.advantage>0?t.push(`${this.result.advantage} advantage`):this.result.advantage<0&&t.push(`${Math.abs(this.result.advantage)} threat`),this.result.triumph>0?t.push(`${this.result.triumph} triumph`):this.result.despair>0&&t.push(`${Math.abs(this.result.despair)} despair`),this.result.light>0&&t.push(`${this.result.light} light side`),this.result.dark>0&&t.push(`${this.result.dark} dark side`),t.join(", "))}onload(){let t=new Map;for(let i of this.lexemes)for(let n of i.value){let s=n;AA.includes(s)&&t.set(s,(t.get(s)??0)+1)}for(let[i,n]of t){let s;switch(i){case"g":{s=new wd(n);break}case"y":{s=new _d(n);break}case"b":{s=new xd(n);break}case"r":{s=new Ed(n);break}case"p":{s=new bd(n);break}case"s":{s=new vd(n);break}case"w":{s=new Ad(n);break}}this.children.push(s)}super.onload()}getReplacer(){throw new Error("Method not implemented.")}async roll(t){if(t||this.shouldRender&&this.hasRunOnce)await this.renderChildren();else return this.rollSync();return this.hasRunOnce=!0,this.calculate(),this.trigger("new-result"),this.app.workspace.trigger("dice-roller:new-result",this),this.render(),this.result}rollSync(){for(let t of this.children)t.rollSync();return this.hasRunOnce=!0,this.calculate(),this.trigger("new-result"),this.app.workspace.trigger("dice-roller:new-result",this),this.render(),this.result}calculate(){this.result=this.children.reduce((t,i)=>(t.success+=i.toNarrativeResult().success,t.advantage+=i.toNarrativeResult().advantage,t.triumph+=i.toNarrativeResult().triumph,t.despair+=i.toNarrativeResult().despair,t.light+=i.toNarrativeResult().light,t.dark+=i.toNarrativeResult().dark,t),{success:0,advantage:0,triumph:0,despair:0,light:0,dark:0})}async build(){this.resultEl.empty(),this.resultEl.addClass("dice-roller-genesys"),this.resultEl.innerHTML=this.getResultText()}};var Sd=class{constructor(){this.sources=new Map}initialize(e,t){this.data=e,this.app=t}#e(e){return e.some(({type:t})=>t==="table")?"table":e.some(({type:t})=>t==="section")?"section":e.some(({type:t})=>t==="dataview")?"dataview":e.some(({type:t})=>t==="tag")?"tag":e.some(({type:t})=>t==="link")?"link":e.some(({type:t})=>t==="line")?"line":e.some(({type:t})=>t==="narrative")?"narrative":"dice"}getParametersForRoller(e,t){e=e.replace(/\\\|/g,"|");let i=t?.position??zt.LEFT,n=t?.shouldRender??this.data.renderAllDice,s=t?.showFormula??this.data.displayResultsInline,o=t?.showParens??this.data.displayFormulaAfter,a=t?.expectedValue??this.data.initialDisplay,l=t?.text??"",c=t?.round??this.data.round,u=t?.signed??this.data.signed,h=t?.lookup,d=/\|text\((.*)\)/;if(e.includes("|nodice")&&(i=zt.NONE),e.includes("|render")&&(n=!0),e.includes("|norender")&&(n=!1),e.includes("|form")&&(s=!0),e.includes("|noform")&&(s=!1),e.includes("|avg")&&(a="Average"),e.includes("|none")&&(a="None"),e.includes("|text(")){let[,p]=e.match(d)??[null,""];l=p}return e.includes("|paren")&&(o=!0),e.includes("|noparen")&&(o=!1),e.includes("|round")&&(c="Normal"),e.includes("|noround")&&(c="None"),e.includes("|ceil")&&(c="Up"),e.includes("|floor")&&(c="Down"),e.includes("|signed")&&(u=!0),e.includes("|lookup=")&&([,h]=e.match(/\|lookup=(.+?)(?:\||$)/)??[]),e=(0,Bg.decode)(e.replace(/\|(no)?(dice|render|form|paren|avg|none|round|floor|ceil|signed)/g,"").replace(/\|lookup=.+?(\||$)/,"").replace(d,"")),e in this.data.formulas&&(e=this.data.formulas[e]),{content:e,position:i,showParens:o,showFormula:s,expectedValue:a,shouldRender:n,text:l,round:c,signed:u,lookup:h}}registerSource(e,t){this.sources.set(e,t)}getRoller(e,t="",i=this.getRollerOptions(this.data)){let{content:n,position:s,showParens:o,showFormula:a,expectedValue:l,round:c,shouldRender:u,text:h,signed:d,lookup:p}=this.getParametersForRoller(e,i),m=nr.parse(n);if(m.isErr())return console.error(m.unwrapErr()),null;let y=m.unwrap();switch(this.#e(y)){case"narrative":return new gc(this.data,n,y,this.app,s);case"dice":{let g=new Wt(this.data,n,y,this.app,s,h,l,o,c,d);return g.showFormula=a,g.shouldRender=u,g.showRenderNotice=this.data.showRenderNotice,g.setSource(t),g}case"table":return new hc(this.data,n,y[0],t,this.app,s,p);case"section":return new sr(this.data,n,y[0],t,this.app,s);case"dataview":{if(!ai.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new pc(this.data,n,y[0],t,this.app,s)}case"tag":{if(!ai.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new fc(this.data,n,y[0],t,this.app,s)}case"line":return new mc(this.data,n,y[0],t,this.app,s)}}getRollerString(e,t){if(!t)return e;let i=this.sources.get(t)??this.getRollerOptions(this.data);if("position"in i&&(e+=i.position!==zt.NONE?"":"|nodice"),"shouldRender"in i&&(e+=i.shouldRender?"|render":"|norender"),"showFormula"in i&&(e+=i.showFormula?"|form":"|noform"),"expectedValue"in i&&(i.expectedValue=="Average"&&(e+="|avg"),i.expectedValue=="None"&&(e+="|none")),"text"in i&&i.text&&(e+="|text("+i.text+")"),"showParens"in i&&(e+=i.showParens?"|paren":"|noparen"),"round"in i)switch(i.round){case"Down":{e+="|floor";break}case"Up":{e+="|ceil";break}case"Normal":{e+="|round";break}case"None":e+="|noround"}return i.signed&&(e+="|signed"),e}async getArrayRoller(e,t=1){let i=new Hl(this.data,e,t);return await i.roll(),i}async parseDice(e,t=""){let i=await this.getRoller(e,t);return{result:await i?.roll(),roller:i}}getRollerOptions(e){return{position:e.position,shouldRender:e.renderAllDice,showFormula:e.displayResultsInline,showParens:e.displayFormulaAfter,expectedValue:e.initialDisplay,round:e.round,text:null,signed:e.signed}}},Tt=new Sd;var Pg="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Ig=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r));for(;r--;)e+=Pg[t[r]&63];return e};function Ln(){}function SA(r,e){for(let t in e)r[t]=e[t];return r}function Md(r){return r()}function yc(){return Object.create(null)}function Vt(r){r.forEach(Md)}function Mo(r){return typeof r=="function"}function xc(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function Ng(r){return Object.keys(r).length===0}function Dd(r,e,t,i){if(r){let n=kg(r,e,t,i);return r[0](n)}}function kg(r,e,t,i){return r[1]&&i?SA(t.ctx.slice(),r[1](i(e))):t.ctx}function Td(r,e,t,i){if(r[2]&&i){let n=r[2](i(t));if(e.dirty===void 0)return n;if(typeof n=="object"){let s=[],o=Math.max(e.dirty.length,n.length);for(let a=0;a32){let e=[],t=r.ctx.length/32;for(let i=0;i{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){return this._observer??(this._observer=new ResizeObserver(e=>{for(let t of e)r.entries.set(t.target,t),this._listeners.get(t.target)?.(t)}))}};vc.entries="WeakMap"in Fd?new WeakMap:void 0;var Og=!1;function zg(){Og=!0}function Vg(){Og=!1}function Ze(r,e){r.appendChild(e)}function wc(r,e,t){let i=Ug(r);if(!i.getElementById(e)){let n=ut("style");n.id=e,n.textContent=t,TA(i,n)}}function Ug(r){if(!r)return document;let e=r.getRootNode?r.getRootNode():r.ownerDocument;return e&&e.host?e:r.ownerDocument}function TA(r,e){return Ze(r.head||r,e),e.sheet}function nn(r,e,t){r.insertBefore(e,t||null)}function yi(r){r.parentNode&&r.parentNode.removeChild(r)}function ut(r){return document.createElement(r)}function Jn(r){return document.createTextNode(r)}function sn(){return Jn(" ")}function Hg(){return Jn("")}function Kn(r,e,t,i){return r.addEventListener(e,t,i),()=>r.removeEventListener(e,t,i)}function yt(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function Gg(r){return Array.from(r.childNodes)}function Do(r,e){e=""+e,r.data!==e&&(r.data=e)}function Ld(r,e,t){r.classList.toggle(e,!!t)}function qg(r){let e={};return r.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}var or;function rn(r){or=r}var Qn=[];var $g=[],lr=[],jg=[],PA=Promise.resolve(),Pd=!1;function Xg(){Pd||(Pd=!0,PA.then(bc))}function To(r){lr.push(r)}var Bd=new Set,ar=0;function bc(){if(ar!==0)return;let r=or;do{try{for(;arr.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),lr=e}var _c=new Set,es;function Co(){es={r:0,c:[],p:es}}function Ro(){es.r||Vt(es.c),es=es.p}function Nt(r,e){r&&r.i&&(_c.delete(r),r.i(e))}function xi(r,e,t,i){if(r&&r.o){if(_c.has(r))return;_c.add(r),es.c.push(()=>{_c.delete(r),i&&(t&&r.d(1),i())}),r.o(e)}else i&&i()}function Fo(r){return r?.length!==void 0?r:Array.from(r)}function Zg(r,e){r.d(1),e.delete(r.key)}function Jg(r,e,t,i,n,s,o,a,l,c,u,h){let d=r.length,p=s.length,m=d,y={};for(;m--;)y[r[m].key]=m;let x=[],g=new Map,f=new Map,E=[];for(m=p;m--;){let T=h(n,s,m),z=t(T),W=o.get(z);W?i&&E.push(()=>W.p(T,e)):(W=c(z,T),W.c()),g.set(z,x[m]=W),z in y&&f.set(z,Math.abs(m-y[z]))}let w=new Set,_=new Set;function M(T){Nt(T,1),T.m(a,u),o.set(T.key,T),u=T.first,p--}for(;d&&p;){let T=x[p-1],z=r[d-1],W=T.key,A=z.key;T===z?(u=T.first,d--,p--):g.has(A)?!o.has(W)||w.has(W)?M(T):_.has(A)?d--:f.get(W)>f.get(A)?(_.add(W),M(T)):(w.add(A),d--):(l(z,o),d--)}for(;d--;){let T=r[d];g.has(T.key)||l(T,o)}for(;p;)M(x[p-1]);return Vt(E),x}var NA=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],kA=new Set([...NA]);function Kg(r){r&&r.c()}function Nd(r,e,t){let{fragment:i,after_update:n}=r.$$;i&&i.m(e,t),To(()=>{let s=r.$$.on_mount.map(Md).filter(Mo);r.$$.on_destroy?r.$$.on_destroy.push(...s):Vt(s),r.$$.on_mount=[]}),n.forEach(To)}function kd(r,e){let t=r.$$;t.fragment!==null&&(Yg(t.after_update),Vt(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function zA(r,e){r.$$.dirty[0]===-1&&(Qn.push(r),Xg(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{let m=p.length?p[0]:d;return c.ctx&&n(c.ctx[h],c.ctx[h]=m)&&(!c.skip_bound&&c.bound[h]&&c.bound[h](m),u&&zA(r,h)),d}):[],c.update(),u=!0,Vt(c.before_update),c.fragment=i?i(c.ctx):!1,e.target){if(e.hydrate){zg();let h=Gg(e.target);c.fragment&&c.fragment.l(h),h.forEach(yi)}else c.fragment&&c.fragment.c();e.intro&&Nt(r.$$.fragment),Nd(r,e.target,e.anchor),Vg(),bc()}rn(l)}var VA;typeof HTMLElement=="function"&&(VA=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;constructor(r,e,t){super(),this.$$ctor=r,this.$$s=e,t&&this.attachShadow({mode:"open"})}addEventListener(r,e,t){if(this.$$l[r]=this.$$l[r]||[],this.$$l[r].push(e),this.$$c){let i=this.$$c.$on(r,e);this.$$l_u.set(e,i)}super.addEventListener(r,e,t)}removeEventListener(r,e,t){if(super.removeEventListener(r,e,t),this.$$c){let i=this.$$l_u.get(e);i&&(i(),this.$$l_u.delete(e))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let r=function(n){return()=>{let s;return{c:function(){s=ut("slot"),n!=="default"&&yt(s,"name",n)},m:function(l,c){nn(l,s,c)},d:function(l){l&&yi(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let e={},t=qg(this);for(let n of this.$$s)n in t&&(e[n]=[r(n)]);for(let n of this.attributes){let s=this.$$g_p(n.name);s in this.$$d||(this.$$d[s]=Id(s,n.value,this.$$p_d,"toProp"))}for(let n in this.$$p_d)!(n in this.$$d)&&this[n]!==void 0&&(this.$$d[n]=this[n],delete this[n]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:e,$$scope:{ctx:[]}}});let i=()=>{this.$$r=!0;for(let n in this.$$p_d)if(this.$$d[n]=this.$$c.$$.ctx[this.$$c.$$.props[n]],this.$$p_d[n].reflect){let s=Id(n,this.$$d[n],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[n].attribute||n):this.setAttribute(this.$$p_d[n].attribute||n,s)}this.$$r=!1};this.$$c.$$.after_update.push(i),i();for(let n in this.$$l)for(let s of this.$$l[n]){let o=this.$$c.$on(n,s);this.$$l_u.set(s,o)}this.$$l={}}}attributeChangedCallback(r,e,t){this.$$r||(r=this.$$g_p(r),this.$$d[r]=Id(r,t,this.$$p_d,"toProp"),this.$$c?.$set({[r]:this.$$d[r]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(r){return Object.keys(this.$$p_d).find(e=>this.$$p_d[e].attribute===r||!this.$$p_d[e].attribute&&e.toLowerCase()===r)||r}});function Id(r,e,t,i){let n=t[r]?.type;if(e=n==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[r])return e;if(i==="toAttribute")switch(n){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(n){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var ts=class{$$=void 0;$$set=void 0;$destroy(){kd(this,1),this.$destroy=Ln}$on(e,t){if(!Mo(t))return Ln;let i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{let n=i.indexOf(t);n!==-1&&i.splice(n,1)}}$set(e){this.$$set&&!Ng(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Qg="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Qg);var i0=require("obsidian");function UA(r){wc(r,"svelte-1my4lf",'.always-open.svelte-1my4lf.svelte-1my4lf{pointer-events:none}.creator-settings-container.svelte-1my4lf.svelte-1my4lf{pointer-events:initial}.calendarium-nested-settings.svelte-1my4lf.svelte-1my4lf{position:relative}.calendarium-nested-summary.svelte-1my4lf.svelte-1my4lf{outline:none;list-style:none !important;list-style-type:none !important;min-height:1rem;border-top-left-radius:0.1rem;border-top-right-radius:0.1rem;cursor:pointer;background-color:var(--creator-background-color);margin-right:0;display:flex;justify-content:space-between}.right-side.svelte-1my4lf.svelte-1my4lf{display:flex;align-items:center;gap:1rem}summary.svelte-1my4lf.svelte-1my4lf::-webkit-details-marker,summary.svelte-1my4lf.svelte-1my4lf::marker{display:none !important}.always-open.svelte-1my4lf .handle.svelte-1my4lf{display:none}.collapser.svelte-1my4lf.svelte-1my4lf{display:flex;flex-flow:column;justify-content:flex-start;align-items:flex-end;content:""}.handle.svelte-1my4lf.svelte-1my4lf{transform:rotate(0deg);transition:transform 0.25s;display:flex}details[open].svelte-1my4lf .handle.svelte-1my4lf{transform:rotate(90deg)}.creator-settings-container.svelte-1my4lf.svelte-1my4lf{padding:0.75em var(--size-4-3)}.calendarium-nested-settings.svelte-1my4lf.svelte-1my4lf{border-top:0px}')}var HA=r=>({}),e0=r=>({class:"context"});function t0(r){let e,t=r[8].context,i=Dd(t,r,r[7],e0);return{c(){i&&i.c()},m(n,s){i&&i.m(n,s),e=!0},p(n,s){i&&i.p&&(!e||s&128)&&Cd(i,t,n,n[7],e?Td(t,n[7],s,HA):Rd(n[7]),e0)},i(n){e||(Nt(i,n),e=!0)},o(n){xi(i,n),e=!1},d(n){i&&i.d(n)}}}function GA(r){let e,t,i,n,s,o,a,l,c,u,h,d,p,m,y,x,g,f,E,w,_,M,T=r[0]&&t0(r),z=r[8].default,W=Dd(z,r,r[7],null);return{c(){e=ut("details"),t=ut("summary"),i=ut("div"),n=ut("div"),s=ut("div"),o=Jn(r[1]),a=sn(),l=ut("div"),c=Jn(r[2]),u=sn(),h=ut("div"),T&&T.c(),d=sn(),p=ut("div"),m=ut("div"),y=ut("div"),g=sn(),f=ut("div"),W&&W.c(),yt(s,"class","setting-item-name"),yt(l,"class","setting-item-description"),yt(n,"class","setting-item-info"),yt(i,"class","setting-item setting-item-heading"),yt(y,"class","handle svelte-1my4lf"),yt(m,"class","warning-container"),yt(p,"class","collapser svelte-1my4lf"),yt(h,"class","right-side svelte-1my4lf"),yt(t,"class","calendarium-nested-summary svelte-1my4lf"),yt(f,"class","creator-settings-container svelte-1my4lf"),yt(e,"class","creator calendarium-nested-settings setting-item svelte-1my4lf"),Ld(e,"always-open",r[3])},m(A,v){nn(A,e,v),Ze(e,t),Ze(t,i),Ze(i,n),Ze(n,s),Ze(s,o),Ze(n,a),Ze(n,l),Ze(l,c),Ze(t,u),Ze(t,h),T&&T.m(h,null),Ze(h,d),Ze(h,p),Ze(p,m),Ze(m,y),Ze(e,g),Ze(e,f),W&&W.m(f,null),e.open=r[0],w=!0,_||(M=[rr(x=r[5].call(null,y)),Kn(t,"keyup",qA),Kn(e,"toggle",r[9]),rr(E=r[4].call(null,e))],_=!0)},p(A,[v]){(!w||v&2)&&Do(o,A[1]),(!w||v&4)&&Do(c,A[2]),A[0]?T?(T.p(A,v),v&1&&Nt(T,1)):(T=t0(A),T.c(),Nt(T,1),T.m(h,d)):T&&(Co(),xi(T,1,1,()=>{T=null}),Ro()),W&&W.p&&(!w||v&128)&&Cd(W,z,A,A[7],w?Td(z,A[7],v,null):Rd(A[7]),null),v&1&&(e.open=A[0]),(!w||v&8)&&Ld(e,"always-open",A[3])},i(A){w||(Nt(T),Nt(W,A),w=!0)},o(A){xi(T),xi(W,A),w=!1},d(A){A&&yi(e),T&&T.d(),W&&W.d(A),_=!1,Vt(M)}}}var qA=r=>r.preventDefault();function WA(r,e,t){let{$$slots:i={},$$scope:n}=e,{collapseIcon:s="chevron-right"}=e,{open:o=!0}=e,{name:a}=e,{desc:l=""}=e,{alwaysOpen:c=!1}=e,u=p=>{o&&p.setAttribute("open","open")},h=p=>{(0,i0.setIcon)(p,s)};function d(){o=this.open,t(0,o)}return r.$$set=p=>{"collapseIcon"in p&&t(6,s=p.collapseIcon),"open"in p&&t(0,o=p.open),"name"in p&&t(1,a=p.name),"desc"in p&&t(2,l=p.desc),"alwaysOpen"in p&&t(3,c=p.alwaysOpen),"$$scope"in p&&t(7,n=p.$$scope)},[o,a,l,c,u,h,s,n,i,d]}var Od=class extends ts{constructor(e){super(),Ec(this,e,WA,GA,xc,{collapseIcon:6,open:0,name:1,desc:2,alwaysOpen:3},UA)}},zd=Od;var Vd=require("obsidian");function $A(r){wc(r,"svelte-nmb05s",".saved-formulas.svelte-nmb05s{display:flex;flex-flow:column nowrap;gap:0.5rem}.formula-container.svelte-nmb05s{display:flex;justify-content:space-between;align-items:center}.formula-actions.svelte-nmb05s{display:flex;align-items:center;gap:0.25rem}")}function n0(r,e,t){let i=r.slice();return i[7]=e[t],i}function s0(r){let e,t;return e=new zd({props:{name:"Saved Formulas",open:!1,$$slots:{default:[jA]},$$scope:{ctx:r}}}),{c(){Kg(e.$$.fragment)},m(i,n){Nd(e,i,n),t=!0},p(i,n){let s={};n&1031&&(s.$$scope={dirty:n,ctx:i}),e.$set(s)},i(i){t||(Nt(e.$$.fragment,i),t=!0)},o(i){xi(e.$$.fragment,i),t=!1},d(i){kd(e,i)}}}function r0(r,e){let t,i,n,s,o,a,l=e[7]+"",c,u,h,d,p,m,y;function x(){return e[5](e[7])}function g(){return e[6](e[7])}return{key:r,first:null,c(){t=ut("div"),i=ut("div"),n=ut("div"),o=sn(),a=ut("span"),c=Jn(l),u=sn(),h=ut("div"),p=sn(),yt(a,"class","formula"),yt(i,"class","formula-actions svelte-nmb05s"),yt(t,"class","formula-container svelte-nmb05s"),this.first=t},m(f,E){nn(f,t,E),Ze(t,i),Ze(i,n),Ze(i,o),Ze(i,a),Ze(a,c),Ze(t,u),Ze(t,h),Ze(t,p),m||(y=[rr(s=e[3].call(null,n)),Kn(n,"click",x),rr(d=e[4].call(null,h)),Kn(h,"click",g)],m=!0)},p(f,E){e=f,E&1&&l!==(l=e[7]+"")&&Do(c,l)},d(f){f&&yi(t),m=!1,Vt(y)}}}function jA(r){let e,t=[],i=new Map,n=Fo(r[0].customFormulas),s=o=>o[7];for(let o=0;o{i=null}),Ro())},i(n){t||(Nt(i),t=!0)},o(n){xi(i),t=!1},d(n){n&&yi(e),i&&i.d(n)}}}function YA(r,e,t){let{settings:i}=e,{plugin:n}=e,{view:s}=e,o=u=>{new Vd.ExtraButtonComponent(u).setIcon("dices")},a=u=>{new Vd.ExtraButtonComponent(u).setIcon("trash")},l=u=>{s.roll(u)},c=async u=>{t(0,i.customFormulas=i.customFormulas.filter(h=>h!=u),i),n.saveSettings()};return r.$$set=u=>{"settings"in u&&t(0,i=u.settings),"plugin"in u&&t(1,n=u.plugin),"view"in u&&t(2,s=u.view)},[i,n,s,o,a,l,c]}var Ud=class extends ts{constructor(e){super(),Ec(this,e,YA,XA,xc,{settings:0,plugin:1,view:2},$A)}},o0=Ud;var Bi="DICE_ROLLER_VIEW",cr=class extends pt.ItemView{constructor(t,i){super(i);this.plugin=t;this.leaf=i;this.custom="";this.#e=!1;this.#t=!1;this.#i=0;this.#n=Wl;this.#s=new Map;this.Formatter=new Intl.DateTimeFormat(localStorage.getItem("language")??"en-US",{dateStyle:"medium",timeStyle:"short"});this.contentEl.addClass("dice-roller-view"),this.addChild(this.#n);for(let n of this.plugin.data.icons)this.#n.registerIcon(n.id,n.shape,n.text);this.registerEvent(this.plugin.app.workspace.on("dice-roller:new-result",async n=>{(this.plugin.data.addToView||n.getSource()==Bi)&&await this.addResult({result:n.getResultText(),original:n.original,resultText:n.getTooltip(),timestamp:new Date().valueOf(),id:Ig(12)})}))}get customFormulas(){return this.plugin.data.customFormulas}#e;#t;#i;#n;async onOpen(){this.display()}async display(){this.contentEl.empty(),this.gridEl=this.contentEl.createDiv("dice-roller-grid"),this.formulaEl=this.contentEl.createDiv("dice-roller-formula");let t=this.contentEl.createDiv("results-header-container");t.createEl("h4",{cls:"results-header",text:"Results"}),new pt.ExtraButtonComponent(t.createDiv("clear-all")).setIcon("trash").setTooltip("Clear All").onClick(async()=>{this.resultEl.empty(),this.resultEl.append(this.noResultsEl),this.plugin.data.viewResults=[],await this.plugin.saveSettings()});let i=this.contentEl.createDiv("dice-roller-results-container");this.resultEl=i.createDiv("dice-roller-results"),this.noResultsEl=this.resultEl.createSpan({text:"No results yet! Roll some dice to get started :)"});for(let n of this.plugin.data.viewResults)this.addResult(n,!1);this.buildButtons(),this.buildFormula()}#s;buildButtons(){this.gridEl.empty();let t=this.gridEl.createDiv("dice-buttons");for(let o of this.plugin.data.icons)this.#n.registerIcon(o.id,o.shape,o.text),new pt.ExtraButtonComponent(t.createDiv("dice-button")).setIcon(o.id).extraSettingsEl.onClickEvent(a=>{if(a.type==="auxclick"){this.roll(o.formula);return}this.#s.has(o)||this.#s.set(o,0);let l=this.#s.get(o)??0;l+=a.getModifierState("Shift")?-1:1,this.#s.set(o,l),this.setFormula()});let i=this.gridEl.createDiv("advantage-disadvantage");new pt.ExtraButtonComponent(i).setIcon("minus-square").onClick(()=>{this.#i-=1,this.setFormula()});let n=new pt.ButtonComponent(i).setButtonText("ADV").onClick(()=>{this.#e=!this.#e,this.#t=!1,this.#e?(n.setCta(),s.removeCta()):n.removeCta(),this.setFormula()});this.#e&&n.setCta();let s=new pt.ButtonComponent(i).setButtonText("DIS").onClick(()=>{this.#t=!this.#t,this.#e=!1,this.#t?(s.setCta(),n.removeCta()):s.removeCta(),this.setFormula()});this.#t&&s.setCta(),new pt.ExtraButtonComponent(i).setIcon("plus-square").onClick(()=>{this.#i+=1,this.setFormula()}),new o0({target:this.gridEl,props:{settings:this.plugin.data,plugin:this.plugin,view:this}})}setFormula(){if(!this.#s.size&&!this.#i){this.formulaComponent.inputEl.value="";return}let t=[];for(let[n,s]of this.#s){if(!s)continue;let o=s<0?"-":"+",a=/^(?:1)?d(\d|%|F)+$/.test(n.formula)?`${Math.abs(s)}${n.formula.replace(/^1/,"")}`:`${Math.abs(s)} * (${n.formula})`,l=Tt.getRoller(n.formula,Bi);l!=null&&l instanceof Wt&&(l.buildDiceTree(),l.calculate(),t.push({formula:a,max:l.max,sign:o}))}t.sort((n,s)=>s.max-n.max);let i=[];for(let n=0;n0&&i.push(s.sign);let o="";n===0&&(this.#e?o="kh":this.#t&&(o="kl"),s.formula=s.formula.replace(/(d\d+)/,`$1${o}`)),i.push(`${s.formula}`)}this.#i!==0&&(i.length>0&&i.push(this.#i>0?"+":"-"),i.push(`${Math.abs(this.#i)}`)),this.formulaComponent.inputEl.value=i.join(" ")}async roll(t=this.formulaComponent.inputEl.value){if(!t)return;this.rollButton.setDisabled(!0);let i={...Tt.getRollerOptions(this.plugin.data)};i.expectedValue=="None"&&(i.expectedValue="Roll");try{let n=await Tt.getRoller(t,Bi,i);if(n==null)return;if(!(n instanceof Wt))throw new Error("The Dice Tray only supports dice rolls.");if(n.iconEl.detach(),n.containerEl.onclick=null,n.buildDiceTree(),!n.children.length)throw new Error("No dice.");await n.roll(this.plugin.data.renderer).catch(s=>{throw s})}catch(n){new pt.Notice("Invalid Formula: "+n.message)}finally{this.rollButton.setDisabled(!1),this.buildButtons(),this.#s=new Map,this.#i=0,this.setFormula()}}buildFormula(){this.formulaEl.empty(),this.formulaComponent=new pt.TextAreaComponent(this.formulaEl).setPlaceholder("Dice Formula").onChange(i=>this.#s=new Map);let t=this.formulaEl.createDiv("action-buttons");this.saveButton=new pt.ExtraButtonComponent(t).setIcon("save").setTooltip("Save Formula").onClick(()=>this.save()),this.saveButton.extraSettingsEl.addClass("dice-roller-roll"),this.rollButton=new pt.ButtonComponent(t).setIcon("dices").setCta().setTooltip("Roll").onClick(()=>this.roll()),this.rollButton.buttonEl.addClass("dice-roller-roll")}save(){this.formulaComponent.inputEl.value&&(this.plugin.data.customFormulas.push(this.formulaComponent.inputEl.value),this.buildButtons(),this.plugin.saveSettings())}async addResult(t,i=!0){this.noResultsEl&&this.noResultsEl.detach();let n=createDiv("view-result"),s=n.createDiv("result-actions");new pt.ExtraButtonComponent(s).setIcon("dices").setTooltip("Roll Again").onClick(()=>this.roll(t.original)).extraSettingsEl.addClass("dice-result-reroll"),s.createSpan({text:t.original}),new pt.ExtraButtonComponent(s).setIcon("copy").setTooltip("Copy Result").onClick(async()=>{await navigator.clipboard.writeText(`${t.resultText}`)}).extraSettingsEl.addClass("dice-content-copy"),pt.Platform.isMobile&&n.createSpan({cls:"dice-content-result",text:`${t.resultText}`}),n.createEl("strong",{attr:{"aria-label":t.resultText},text:`${t.result}`});let l=n.createDiv("result-context");l.createEl("em",{cls:"result-timestamp",text:this.Formatter.format(t.timestamp)}),new pt.ExtraButtonComponent(l).setIcon("trash").onClick(async()=>{n.detach(),this.resultEl.children.length===0&&this.resultEl.prepend(this.noResultsEl),this.plugin.data.viewResults.splice(this.plugin.data.viewResults.findIndex(c=>c.id===t.id),1),await this.plugin.saveSettings()}),this.resultEl.prepend(n),i&&(this.plugin.data.viewResults.push(t),this.plugin.data.viewResults=this.plugin.data.viewResults.slice(0,100),await this.plugin.saveSettings())}getDisplayText(){return"Dice Tray"}getViewType(){return Bi}getIcon(){return"dices"}async onClose(){await super.onClose()}};var Pi=require("@codemirror/view"),NR=require("@codemirror/state"),a0=require("@codemirror/language"),Bn=require("obsidian");function ZA(r,e,t){for(let i of r.ranges)if(i.from<=t&&i.to>=e)return!0;return!1}function JA(r,e,t){let i=e.app.workspace.getActiveFile();if(!i)return;let n=[],s=r.state.selection,o=new RegExp(".*?_?inline-code_?.*");for(let{from:a,to:l}of r.visibleRanges)(0,a0.syntaxTree)(r.state).iterate({from:a,to:l,enter:({node:c})=>{let u=c.type;if(u.name.includes("formatting")||!o.test(u.name))return;let h=c.from,d=c.to;if(ZA(s,h,d))return;let p=r.state.doc.sliceString(h,d).trim(),m=ko(e.data.diceModTemplateFolders,i);if(/^dice\-mod:\s*([\s\S]+)\s*?/.test(p)&&!m&&e.data.replaceDiceModInLivePreview){let[,f]=p.match(/dice\-mod:\s*([\s\S]+)\s*?/),E=e.app.workspace.getActiveFile(),w=Tt.getRoller(f,E.path);if(w==null)return;w.roll().then(async()=>{let M=`${await w.getReplacer()}`;e.data.escapeDiceMod&&M.replace(/([\*\[\]])/g,"\\$1");let T={from:h-1,to:d+1,insert:M},z=r.state.update({changes:T});r.dispatch(z)});return}if(!/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/.test(p))return;let[,y]=p.match(/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/),x=Tt.getRoller(y,i.path);if(x==null)return;x.addContexts(t,e);let g=new Hd(p,x,r,e,i);e.processor.trackRoller(i,x),n.push(Pi.Decoration.replace({widget:g,inclusive:!1,block:!1}).range(h-1,d+1))}});return Pi.Decoration.set(n,!0)}var Hd=class extends Pi.WidgetType{constructor(t,i,n,s,o){super();this.rawQuery=t;this.roller=i;this.view=n;this.plugin=s;this.file=o}eq(t){return t.rawQuery===this.rawQuery?!0:(this.plugin.processor.fileMap.get(this.file)?.remove(t.roller),!1)}toDOM(t){return this.roller.roll(),this.roller.containerEl}ignoreEvent(t){if(t.type==="mousedown"){let i=this.view.posAtCoords({x:t.x,y:t.y});if(t.shiftKey){if(i){let{editor:n}=this.view.state.field(Bn.editorEditorField).state.field(Bn.editorInfoField);n.setCursor(n.offsetToPos(i))}return!1}}return!0}};function l0(r){return Pi.ViewPlugin.fromClass(class{constructor(e){this.component=new Bn.Component;this.component.load(),this.decorations=Pi.Decoration.none}destroy(){this.component.unload()}update(e){if(!e.state.field(Bn.editorLivePreviewField)){this.decorations=Pi.Decoration.none;return}(e.docChanged||e.viewportChanged||e.selectionSet)&&(this.decorations=JA(e.view,r,this.component)??Pi.Decoration.none)}},{decorations:e=>e.decorations})}function c0(r,e){let t=Object.keys(e).map(i=>KA(r,i,e[i]));return t.length===1?t[0]:function(){t.forEach(i=>i())}}function KA(r,e,t){let i=r[e],n=r.hasOwnProperty(e),s=t(i);return i&&Object.setPrototypeOf(s,i),Object.setPrototypeOf(o,s),r[e]=o,a;function o(...l){return s===i&&r[e]===o&&a(),s.apply(this,l)}function a(){r[e]===o&&(n?r[e]=i:delete r[e]),s!==i&&(s=i,Object.setPrototypeOf(o,i||Function))}}var ii=require("obsidian");var Lo=class extends ii.Component{constructor(){super(...arguments);this.fileMap=new WeakMap}initialize(t){this.app=t.app,this.data=t.data,this.plugin=t,t.addCommand({id:"reroll",name:"Re-roll Dice",checkCallback:i=>{let n=this.app.workspace.getActiveViewOfType(ii.MarkdownView);if(n&&(n.getMode()==="preview"||n.editMode?.sourceMode==!1)&&this.fileMap.has(n.file))return i||this.fileMap.get(n.file).forEach(o=>{o.roll()}),!0}})}trackRoller(t,i){this.fileMap.has(t)||this.fileMap.set(t,[]),this.fileMap.get(t).push(i)}async postprocessor(t,i){let n=t.querySelectorAll("code");if(!n.length)return;let s=i.sourcePath,o=this.app.vault.getAbstractFileByPath(i.sourcePath),a=i.getSectionInfo(t);if(!((!o||!(o instanceof ii.TFile))&&s!="STATBLOCK_RENDERER"))for(let l=0;l{let y=m.split(` +`),x=y.slice(a.lineStart,a.lineEnd+1);return this.data.escapeDiceMod?x=x.join(` +`).replace(`\`${u}\``,p.replace(/([\*\[\]])/g,"\\$1")).split(` +`):x=x.join(` +`).replace(`\`${u}\``,p).split(` +`),y.splice(a.lineStart,a.lineEnd-a.lineStart+1,...x),y.join(` +`)});continue}try{let d=Tt.getRoller(h,i.sourcePath);if(d==null)return;if(d.onLoad(async()=>{await d.roll(),c.replaceWith(d.containerEl)}),d.addContexts(i,this.plugin),!o||!(o instanceof ii.TFile))continue;this.trackRoller(o,d);let p=this.app.workspace.getActiveViewOfType(ii.MarkdownView);if(p&&this.fileMap.has(o)&&this.fileMap.get(o).length===1){let m=this,y=c0(p,{onUnloadFile:function(x){return async function(g){return g==o&&(m.fileMap.delete(o),y()),await x.call(this,g)}}});p.register(y),p.register(()=>this.fileMap.delete(o))}}catch(d){console.error(d),new ii.Notice(`There was an error parsing the dice string: ${c.innerText}. + +${d}`,5e3);continue}}}processContent(t){let i=this.data.displayFormulaForMod;return t.includes("|noform")&&(i=!1),t.includes("|form")&&(i=!0),i}};var QA=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Gd=r=>{if(typeof r!="string")throw new TypeError("Invalid argument expected string");let e=r.match(QA);if(!e)throw new Error(`Invalid argument not valid semver ('${r}' received)`);return e.shift(),e},u0=r=>r==="*"||r==="x"||r==="X",h0=r=>{let e=parseInt(r,10);return isNaN(e)?r:e},eS=(r,e)=>typeof r!=typeof e?[String(r),String(e)]:[r,e],tS=(r,e)=>{if(u0(r)||u0(e))return 0;let[t,i]=eS(h0(r),h0(e));return t>i?1:t{for(let t=0;t{let t=Gd(r),i=Gd(e),n=t.pop(),s=i.pop(),o=qd(t,i);return o!==0?o:n&&s?qd(n.split("."),s.split(".")):n||s?n?-1:1:0};var Bo=(r,e,t)=>{iS(t);let i=d0(r,e);return f0[t].includes(i)},f0={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},p0=Object.keys(f0),iS=r=>{if(typeof r!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof r}`);if(p0.indexOf(r)===-1)throw new Error(`Invalid operator, expected one of ${p0.join("|")}`)};var Ac=class extends is.Plugin{constructor(){super(...arguments);this.api=Tt}getRendererData(){return{diceColor:this.data.diceColor,textColor:this.data.textColor,narrativeSymbolSet:this.data.narrativeSymbolSet,colorfulDice:this.data.colorfulDice,scaler:this.data.scaler,renderTime:this.data.renderTime,textFont:this.data.textFont}}async onload(){await this.loadSettings(),console.log(`DiceRoller v${this.data.version} loaded`),Et.setData(this.getRendererData()),this.api.initialize(this.data,this.app),window.DiceRoller=this.api,this.register(()=>delete window.DiceRoller),this.addChild(ai.initialize(this.app)),nr.setDefaults(this.data.defaultRoll,this.data.defaultFace),this.addSettingTab(new Ao(this.app,this)),this.registerView(Bi,t=>new cr(this,t)),this.registerEvent(this.app.workspace.on("dice-roller:render-dice",async t=>{let i=await Tt.getRoller(t,"external");if(i!=null){if(!(i instanceof Wt)){new is.Notice("The Dice View only supports dice rolls.");return}if(await i.roll(),!i.children.length){new is.Notice("Invalid formula.");return}try{await i.roll(!0)}catch(n){new is.Notice("There was an error rendering the roll."),console.error(n)}this.app.workspace.trigger("dice-roller:rendered-result",i.result)}})),this.addCommand({id:"open-view",name:"Open Dice View",callback:()=>{this.view?this.app.workspace.revealLeaf(this.view.leaf):this.addDiceView()}}),this.processor=new Lo,this.processor.initialize(this),this.registerMarkdownPostProcessor((t,i)=>this.processor.postprocessor(t,i)),this.registerEditorExtension([l0(this)]),this.app.workspace.onLayoutReady(async()=>{this.addDiceView(!0)}),this.app.workspace.trigger("dice-roller:loaded")}get view(){let t=this.app.workspace.getLeavesOfType(Bi),i=t.length?t[0]:null;if(i&&i.view&&i.view instanceof cr)return i.view}async addDiceView(t=!1){t&&!this.data.showLeafOnStartup||this.app.workspace.getLeavesOfType(Bi).length||await this.app.workspace.getRightLeaf(!1).setViewState({type:Bi})}async loadSettings(){let t=Object.assign({},Yl,await this.loadData()),i=!1;typeof t.version!="string"&&delete t.version,Bo("11.2.0",t.version??"0.0.0",">")&&!("position"in t)&&(t.position=t.showDice?zt.RIGHT:zt.NONE,delete t.showDice,i=!0),Bo("11.0.0",t.version??"0.0.0",">")&&(delete t.persistResults,delete t.results,i=!0),Bo(t.version??"0.0.0",this.manifest.version,"!=")&&(t.version=this.manifest.version,i=!0),this.data=Xl(t),i&&await this.saveSettings()}async saveSettings(){await this.saveData(this.data)}async getArrayRoller(t,i=1){return new is.Notice("Using the Dice Roller plugin directly will be deprecated in a future version. Please use `window.DiceRoller` instead."),this.api.getArrayRoller(t,i)}onunload(){console.log("DiceRoller unloaded"),this.app.workspace.getLeavesOfType(Bi).forEach(t=>t.detach()),"__THREE__"in window&&delete window.__THREE__,this.app.workspace.trigger("dice-roller:unloaded")}}; +/*! Bundled license information: + +he/he.js: + (*! https://mths.be/he v1.2.0 by @mathias | MIT license *) + +three/build/three.module.js: + (** + * @license + * Copyright 2010-2022 Three.js Authors + * SPDX-License-Identifier: MIT + *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-dice-roller/manifest.json b/.obsidian/plugins/obsidian-dice-roller/manifest.json new file mode 100644 index 0000000..a753212 --- /dev/null +++ b/.obsidian/plugins/obsidian-dice-roller/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-dice-roller", + "name": "Dice Roller", + "version": "11.4.2", + "minAppVersion": "0.12.15", + "description": "Inline dice rolling for Obsidian.md", + "author": "Jeremy Valentine", + "authorUrl": "", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-dice-roller/styles.css b/.obsidian/plugins/obsidian-dice-roller/styles.css new file mode 100644 index 0000000..fcf84a4 --- /dev/null +++ b/.obsidian/plugins/obsidian-dice-roller/styles.css @@ -0,0 +1 @@ +.dice-roller{position:relative;display:inline-flex;align-items:center;gap:.25rem;cursor:pointer;margin:0 .25em 0 0;vertical-align:top}.dice-roller.no-icon{margin:0}.dice-roller>div{display:inline-block}.dice-roller:not(.has-embed) span{font-weight:700}.dice-roller>.dice-roller-button{display:inline-flex;position:relative;font-size:inherit}.dice-roller>.dice-roller-formula{display:inline-flex;position:relative;font-size:inherit}.dice-roller.has-embed .dice-roller-result{width:100%;padding:1rem}.dice-roller.has-embed .dice-roller-result .markdown-embed{display:flex;margin-top:.5rem;padding-right:0}.dice-roller.has-embed .dice-roller-button{padding-top:.5rem}.dice.tooltip{max-width:unset!important}.workspace .markdown-preview-view .dice-roller.has-embed{display:flex;padding-right:.25rem;margin:.25rem 0}.dice-no-results{font-style:italic;text-align:center}.dice-roller.has-embed .internal-embed{width:100%}.dice-roller.has-embed .internal-embed .dice-roller>.dice-roller-button,.dice-roller.has-embed .internal-embed .dice-roller>.dice-roller-result{display:inline;padding:0}.dice-roller.has-embed .internal-embed .dice-roller>.dice-roller-result .embedded-table-result{margin-bottom:0}.dice-roller.has-embed .internal-embed *:last-child:not(svg):not(.dice-content-copy):not(.markdown-embed .dice-roller):not(.dice-roller-result>.embedded-table-result *){margin-bottom:15px}.dice-roller.has-embed .dice-file-name{font-style:italic}.dice-section-result{position:relative}.dice-content-copy{color:var(--text-faint);cursor:pointer;height:fit-content}.dice-content-copy.no-show{display:none}.dice-content-copy:hover{color:var(--text-normal)}.dice-roller.has-embed .dice-section-result .dice-content-copy,.dice-content-copy:hover{opacity:1}.dice-roller-result{position:relative;display:inline-flex;align-items:center}.dice-roller-result .embedded-table-result p{margin:0}.dice-roller-settings .coffee{width:60%;color:var(--text-faint);margin:.5rem auto;text-align:center}.dice-roller-settings .coffee img{height:30px}.dice-roller-setting-additional-container>.setting-item:not(.setting-item-heading){border:0px}.dice-roller-setting-additional-container .additional{padding:0 18px}.dice-roller-setting-additional-container{border-bottom:1px solid var(--background-modifier-border);border-top:1px solid var(--background-modifier-border);padding:18px 0}.dice-roller-setting-additional-container>.setting-item-heading:only-child{padding-bottom:18px}.dice-roller-setting-additional-container>.additional .no-formulas{width:auto;display:block;text-align:center}.dice-roller-setting-additional-container>.additional>.setting-item{border-top:0;padding-top:9px}.dice-roller-setting-additional-container>.additional>.setting-item>.setting-item-control>*:first-child{margin:0 6px}.dice-roller-setting-additional-container>.additional>.setting-item>.setting-item-control>.dice-mod-template-use-subfolders{margin:0 px;font-style:italic;font-size:small}.dice-roller-setting-additional-container .add-new-formula{margin:0 1rem;padding:1rem 1rem 0;border-radius:.5rem;box-shadow:0 0 .25rem var(--background-modifier-box-shadow)}.dice-roller-setting-additional-container .add-new-formula .formula-data .setting-item{border:0}.should-spin{border-bottom-color:transparent;border-radius:50%;display:inline-flex;align-items:center;box-sizing:border-box;animation:rotation 1s ease infinite}@keyframes rotation{0%{transform:scale(1) rotate(-60deg)}20%{transform:rotate(-90deg)}50%{transform:rotate(690deg)}to{transform:rotate(660deg)}}.renderer-container{position:absolute;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9999999;transition:opacity 1s ease-out}.dice-roller-view .dice-roller-roll:disabled{cursor:not-allowed;opacity:.75}.workspace-split.mod-right-split .view-content.dice-roller-view{padding:.5rem;display:flex;flex-flow:column nowrap;justify-content:flex-start;gap:12px}.dice-roller-view .dice-roller-grid{display:grid;grid-template-rows:auto auto;justify-content:center;gap:6px}.dice-roller-view .dice-roller-grid .dice-buttons{display:flex;flex-flow:row wrap;align-items:center;justify-content:center;width:fit-content}.dice-roller-view .dice-roller-grid .dice-custom-formula-container{display:flex;justify-content:space-between;align-items:center}.dice-roller-view .dice-roller-grid .dice-custom-formula{display:flex;justify-content:flex-start;align-items:center}.dice-roller-view .setting-editor-extra-setting-button{width:fit-content}.dice-button svg{width:36px;height:36px}.dice-roller-view .dice-context{display:grid;grid-template-columns:1fr auto}.dice-roller-view .dice-context .add-subtract{display:flex;align-items:center}.dice-roller-view input,.dice-roller-view textarea{width:100%}.dice-roller-view .dice-roller-grid .advantage-disadvantage{display:flex;justify-content:center;align-items:center;gap:.5rem}.dice-roller-view .dice-roller-grid .advantage-disadvantage button{margin:0;min-width:66px}.dice-roller-view .dice-roller-formula{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-end;gap:12px}.dice-roller-view .dice-roller-formula .action-buttons{display:flex;justify-content:flex-end}.dice-roller-view .dice-roller-formula button{margin-right:0;margin-left:12px}.dice-roller-view hr{margin-bottom:0}.dice-roller-view .dice-roller-results-container .dice-roller-results-header{display:flex;justify-content:space-between;align-items:center;margin:6px 0;width:100%;border-bottom:1px solid var(--background-modifier-border)}.dice-roller-view .dice-roller-results-container .dice-roller-results-header h4{margin:0}.dice-roller-view .dice-roller-results{display:flex;flex-flow:column nowrap;gap:6px}.dice-roller-view .dice-roller-results .view-result{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;border:1px solid var(--background-modifier-border);border-radius:.25rem;position:relative}.dice-roller-view .dice-roller-results .view-result .dice-content-copy{position:absolute;top:0;right:0;padding:.25rem}.dice-roller-view .dice-roller-results .view-result .dice-result-reroll{position:absolute;top:0;left:0;padding:.25rem;margin:0}.dice-roller-view .dice-roller-results .view-result strong{font-size:x-large}.dice-roller-view .dice-roller-results .view-result .result-context{align-self:flex-end;width:100%;display:flex;align-items:center;justify-content:space-between;padding:.25rem;font-size:x-small}.dice-roller-view .dice-roller-results .view-result .result-context .clickable-icon{margin-right:0}.dice-roller-view .dice-roller-results>span{color:var(--text-muted);margin:0 auto}.dice-renderer{position:absolute;top:0;left:0}.dice-button svg .font{font-family:ArialMT;font-size:200px;fill:currentColor}.dice-button svg .shape{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:15px!important}.dice-roller-settings .dice-icons>span{display:block;text-align:center;color:var(--text-muted)}.dice-roller-settings .dice-icons.has-table{padding-left:0;padding-right:0}.dice-roller-settings .buttons-table{width:100%;display:grid;grid-template-columns:auto 1fr auto;grid-auto-rows:1fr;gap:.5rem;align-items:center;justify-content:flex-start;text-align:left}.dice-roller-settings .icons-table-row{display:contents}.dice-roller-settings .icons-table-row .actions{display:flex;align-items:center}.dice-roller-settings .icons-table-row .shape{display:flex;align-items:center;justify-content:center}.dice-roller-settings .add-new .shape{padding:0 .5rem}.dice-roller-settings .add-new .formula{display:flex;gap:.5rem}details.dice-roller-nested-settings>summary{outline:none;display:block!important;list-style:none!important;list-style-type:none!important;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer;position:relative}details.dice-roller-nested-settings>summary::-webkit-details-marker,details.dice-roller-nested-settings>summary::marker{display:none!important}details.dice-roller-nested-settings>summary>.collapser{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}details.dice-roller-nested-settings>summary>.collapser>.handle{transform:rotate(0);transition:transform .25s}details.dice-roller-nested-settings[open]>summary>.collapser>.handle{transform:rotate(90deg)}.template-edit{display:grid;grid-template-columns:1fr auto}.template-edit .actions{display:flex;align-items:center}.template-input{margin-right:1rem;display:flex;align-items:center;gap:1rem}.template-input .setting-item{border:0}.template-input .folder-input,.template-input input{width:100%}@font-face{font-family:SWRPG;src:url(data:font/ttf;base64,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)}@font-face{font-family:Genesys;src:url(data:font/ttf;base64,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)} diff --git a/.obsidian/plugins/obsidian-emoji-toolbar/main.js b/.obsidian/plugins/obsidian-emoji-toolbar/main.js new file mode 100644 index 0000000..29047f6 --- /dev/null +++ b/.obsidian/plugins/obsidian-emoji-toolbar/main.js @@ -0,0 +1,98963 @@ +'use strict'; + +var obsidian = require('obsidian'); + +/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ +var twemoji = function () { + + var twemoji = { + base: "https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/", + ext: ".png", + size: "72x72", + className: "emoji", + convert: { + fromCodePoint: fromCodePoint, + toCodePoint: toCodePoint + }, + onerror: function onerror() { + if (this.parentNode) { + this.parentNode.replaceChild(createText(this.alt, false), this); + } + }, + parse: parse, + replace: replace, + test: test + }, + escaper = { + "&": "&", + "<": "<", + ">": ">", + "'": "'", + '"': """ + }, + re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude89\ude8f-\udec2\udec6\udece-\udedc\udedf-\udee9]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, + UFE0Fg = /\uFE0F/g, + U200D = String.fromCharCode(8205), + rescaper = /[&<>'"]/g, + shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/, + fromCharCode = String.fromCharCode; + return twemoji; + + function createText(text, clean) { + return document.createTextNode(clean ? text.replace(UFE0Fg, "") : text); + } + + function escapeHTML(s) { + return s.replace(rescaper, replacer); + } + + function defaultImageSrcGenerator(icon, options) { + return "".concat(options.base, options.size, "/", icon, options.ext); + } + + function grabAllTextNodes(node, allText) { + var childNodes = node.childNodes, + length = childNodes.length, + subnode, + nodeType; + + while (length--) { + subnode = childNodes[length]; + nodeType = subnode.nodeType; + + if (nodeType === 3) { + allText.push(subnode); + } else if (nodeType === 1 && !("ownerSVGElement" in subnode) && !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) { + grabAllTextNodes(subnode, allText); + } + } + + return allText; + } + + function grabTheRightIcon(rawText) { + return toCodePoint(rawText.indexOf(U200D) < 0 ? rawText.replace(UFE0Fg, "") : rawText); + } + + function parseNode(node, options) { + var allText = grabAllTextNodes(node, []), + length = allText.length, + attrib, + attrname, + modified, + fragment, + subnode, + text, + match, + i, + index, + img, + rawText, + iconId, + src; + + while (length--) { + modified = false; + fragment = document.createDocumentFragment(); + subnode = allText[length]; + text = subnode.nodeValue; + i = 0; + + while (match = re.exec(text)) { + index = match.index; + + if (index !== i) { + fragment.appendChild(createText(text.slice(i, index), true)); + } + + rawText = match[0]; + iconId = grabTheRightIcon(rawText); + i = index + rawText.length; + src = options.callback(iconId, options); + + if (iconId && src) { + img = new Image(); + img.onerror = options.onerror; + img.setAttribute("draggable", "false"); + attrib = options.attributes(rawText, iconId); + + for (attrname in attrib) { + if (attrib.hasOwnProperty(attrname) && attrname.indexOf("on") !== 0 && !img.hasAttribute(attrname)) { + img.setAttribute(attrname, attrib[attrname]); + } + } + + img.className = options.className; + img.alt = rawText; + img.src = src; + modified = true; + fragment.appendChild(img); + } + + if (!img) fragment.appendChild(createText(rawText, false)); + img = null; + } + + if (modified) { + if (i < text.length) { + fragment.appendChild(createText(text.slice(i), true)); + } + + subnode.parentNode.replaceChild(fragment, subnode); + } + } + + return node; + } + + function parseString(str, options) { + return replace(str, function (rawText) { + var ret = rawText, + iconId = grabTheRightIcon(rawText), + src = options.callback(iconId, options), + attrib, + attrname; + + if (iconId && src) { + ret = ""); + } + + return ret; + }); + } + + function replacer(m) { + return escaper[m]; + } + + function returnNull() { + return null; + } + + function toSizeSquaredAsset(value) { + return typeof value === "number" ? value + "x" + value : value; + } + + function fromCodePoint(codepoint) { + var code = typeof codepoint === "string" ? parseInt(codepoint, 16) : codepoint; + + if (code < 65536) { + return fromCharCode(code); + } + + code -= 65536; + return fromCharCode(55296 + (code >> 10), 56320 + (code & 1023)); + } + + function parse(what, how) { + if (!how || typeof how === "function") { + how = { + callback: how + }; + } + + return (typeof what === "string" ? parseString : parseNode)(what, { + callback: how.callback || defaultImageSrcGenerator, + attributes: typeof how.attributes === "function" ? how.attributes : returnNull, + base: typeof how.base === "string" ? how.base : twemoji.base, + ext: how.ext || twemoji.ext, + size: how.folder || toSizeSquaredAsset(how.size || twemoji.size), + className: how.className || twemoji.className, + onerror: how.onerror || twemoji.onerror + }); + } + + function replace(text, callback) { + return String(text).replace(re, callback); + } + + function test(text) { + re.lastIndex = 0; + var result = re.test(text); + re.lastIndex = 0; + return result; + } + + function toCodePoint(unicodeSurrogates, sep) { + var r = [], + c = 0, + p = 0, + i = 0; + + while (i < unicodeSurrogates.length) { + c = unicodeSurrogates.charCodeAt(i++); + + if (p) { + r.push((65536 + (p - 55296 << 10) + (c - 56320)).toString(16)); + p = 0; + } else if (55296 <= c && c <= 56319) { + p = c; + } else { + r.push(c.toString(16)); + } + } + + return r.join(sep || "-"); + } +}(); + +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} + +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/* eslint-disable no-unused-vars */ + +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } // Detect buggy property enumeration order in older V8 versions. + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + + + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + + test1[5] = 'de'; + + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + + + var test2 = {}; + + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + + if (order2.join('') !== '0123456789') { + return false; + } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + + + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + + if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +/** @license React v17.0.1 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +createCommonjsModule(function (module, exports) { + +var n = 60103, + p = 60106; + +exports.Fragment = 60107; +exports.StrictMode = 60108; +exports.Profiler = 60114; +var q = 60109, + r = 60110, + t = 60112; +exports.Suspense = 60113; +var u = 60115, + v = 60116; + +if ("function" === typeof Symbol && Symbol.for) { + var w = Symbol.for; + n = w("react.element"); + p = w("react.portal"); + exports.Fragment = w("react.fragment"); + exports.StrictMode = w("react.strict_mode"); + exports.Profiler = w("react.profiler"); + q = w("react.provider"); + r = w("react.context"); + t = w("react.forward_ref"); + exports.Suspense = w("react.suspense"); + u = w("react.memo"); + v = w("react.lazy"); +} + +var x = "function" === typeof Symbol && Symbol.iterator; + +function y(a) { + if (null === a || "object" !== typeof a) return null; + a = x && a[x] || a["@@iterator"]; + return "function" === typeof a ? a : null; +} + +function z(a) { + for (var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; c < arguments.length; c++) b += "&args[]=" + encodeURIComponent(arguments[c]); + + return "Minified React error #" + a + "; visit " + b + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; +} + +var A = { + isMounted: function () { + return !1; + }, + enqueueForceUpdate: function () {}, + enqueueReplaceState: function () {}, + enqueueSetState: function () {} +}, + B = {}; + +function C(a, b, c) { + this.props = a; + this.context = b; + this.refs = B; + this.updater = c || A; +} + +C.prototype.isReactComponent = {}; + +C.prototype.setState = function (a, b) { + if ("object" !== typeof a && "function" !== typeof a && null != a) throw Error(z(85)); + this.updater.enqueueSetState(this, a, b, "setState"); +}; + +C.prototype.forceUpdate = function (a) { + this.updater.enqueueForceUpdate(this, a, "forceUpdate"); +}; + +function D() {} + +D.prototype = C.prototype; + +function E(a, b, c) { + this.props = a; + this.context = b; + this.refs = B; + this.updater = c || A; +} + +var F = E.prototype = new D(); +F.constructor = E; +objectAssign(F, C.prototype); +F.isPureReactComponent = !0; +var G = { + current: null +}, + H = Object.prototype.hasOwnProperty, + I = { + key: !0, + ref: !0, + __self: !0, + __source: !0 +}; + +function J(a, b, c) { + var e, + d = {}, + k = null, + h = null; + if (null != b) for (e in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = "" + b.key), b) H.call(b, e) && !I.hasOwnProperty(e) && (d[e] = b[e]); + var g = arguments.length - 2; + if (1 === g) d.children = c;else if (1 < g) { + for (var f = Array(g), m = 0; m < g; m++) f[m] = arguments[m + 2]; + + d.children = f; + } + if (a && a.defaultProps) for (e in g = a.defaultProps, g) void 0 === d[e] && (d[e] = g[e]); + return { + $$typeof: n, + type: a, + key: k, + ref: h, + props: d, + _owner: G.current + }; +} + +function K(a, b) { + return { + $$typeof: n, + type: a.type, + key: b, + ref: a.ref, + props: a.props, + _owner: a._owner + }; +} + +function L(a) { + return "object" === typeof a && null !== a && a.$$typeof === n; +} + +function escape(a) { + var b = { + "=": "=0", + ":": "=2" + }; + return "$" + a.replace(/[=:]/g, function (a) { + return b[a]; + }); +} + +var M = /\/+/g; + +function N(a, b) { + return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b.toString(36); +} + +function O(a, b, c, e, d) { + var k = typeof a; + if ("undefined" === k || "boolean" === k) a = null; + var h = !1; + if (null === a) h = !0;else switch (k) { + case "string": + case "number": + h = !0; + break; + + case "object": + switch (a.$$typeof) { + case n: + case p: + h = !0; + } + + } + if (h) return h = a, d = d(h), a = "" === e ? "." + N(h, 0) : e, Array.isArray(d) ? (c = "", null != a && (c = a.replace(M, "$&/") + "/"), O(d, b, c, "", function (a) { + return a; + })) : null != d && (L(d) && (d = K(d, c + (!d.key || h && h.key === d.key ? "" : ("" + d.key).replace(M, "$&/") + "/") + a)), b.push(d)), 1; + h = 0; + e = "" === e ? "." : e + ":"; + if (Array.isArray(a)) for (var g = 0; g < a.length; g++) { + k = a[g]; + var f = e + N(k, g); + h += O(k, b, c, f, d); + } else if (f = y(a), "function" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done;) k = k.value, f = e + N(k, g++), h += O(k, b, c, f, d);else if ("object" === k) throw b = "" + a, Error(z(31, "[object Object]" === b ? "object with keys {" + Object.keys(a).join(", ") + "}" : b)); + return h; +} + +function P(a, b, c) { + if (null == a) return a; + var e = [], + d = 0; + O(a, e, "", "", function (a) { + return b.call(c, a, d++); + }); + return e; +} + +function Q(a) { + if (-1 === a._status) { + var b = a._result; + b = b(); + a._status = 0; + a._result = b; + b.then(function (b) { + 0 === a._status && (b = b.default, a._status = 1, a._result = b); + }, function (b) { + 0 === a._status && (a._status = 2, a._result = b); + }); + } + + if (1 === a._status) return a._result; + throw a._result; +} + +var R = { + current: null +}; + +function S() { + var a = R.current; + if (null === a) throw Error(z(321)); + return a; +} + +var T = { + ReactCurrentDispatcher: R, + ReactCurrentBatchConfig: { + transition: 0 + }, + ReactCurrentOwner: G, + IsSomeRendererActing: { + current: !1 + }, + assign: objectAssign +}; +exports.Children = { + map: P, + forEach: function (a, b, c) { + P(a, function () { + b.apply(this, arguments); + }, c); + }, + count: function (a) { + var b = 0; + P(a, function () { + b++; + }); + return b; + }, + toArray: function (a) { + return P(a, function (a) { + return a; + }) || []; + }, + only: function (a) { + if (!L(a)) throw Error(z(143)); + return a; + } +}; +exports.Component = C; +exports.PureComponent = E; +exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = T; + +exports.cloneElement = function (a, b, c) { + if (null === a || void 0 === a) throw Error(z(267, a)); + var e = objectAssign({}, a.props), + d = a.key, + k = a.ref, + h = a._owner; + + if (null != b) { + void 0 !== b.ref && (k = b.ref, h = G.current); + void 0 !== b.key && (d = "" + b.key); + if (a.type && a.type.defaultProps) var g = a.type.defaultProps; + + for (f in b) H.call(b, f) && !I.hasOwnProperty(f) && (e[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]); + } + + var f = arguments.length - 2; + if (1 === f) e.children = c;else if (1 < f) { + g = Array(f); + + for (var m = 0; m < f; m++) g[m] = arguments[m + 2]; + + e.children = g; + } + return { + $$typeof: n, + type: a.type, + key: d, + ref: k, + props: e, + _owner: h + }; +}; + +exports.createContext = function (a, b) { + void 0 === b && (b = null); + a = { + $$typeof: r, + _calculateChangedBits: b, + _currentValue: a, + _currentValue2: a, + _threadCount: 0, + Provider: null, + Consumer: null + }; + a.Provider = { + $$typeof: q, + _context: a + }; + return a.Consumer = a; +}; + +exports.createElement = J; + +exports.createFactory = function (a) { + var b = J.bind(null, a); + b.type = a; + return b; +}; + +exports.createRef = function () { + return { + current: null + }; +}; + +exports.forwardRef = function (a) { + return { + $$typeof: t, + render: a + }; +}; + +exports.isValidElement = L; + +exports.lazy = function (a) { + return { + $$typeof: v, + _payload: { + _status: -1, + _result: a + }, + _init: Q + }; +}; + +exports.memo = function (a, b) { + return { + $$typeof: u, + type: a, + compare: void 0 === b ? null : b + }; +}; + +exports.useCallback = function (a, b) { + return S().useCallback(a, b); +}; + +exports.useContext = function (a, b) { + return S().useContext(a, b); +}; + +exports.useDebugValue = function () {}; + +exports.useEffect = function (a, b) { + return S().useEffect(a, b); +}; + +exports.useImperativeHandle = function (a, b, c) { + return S().useImperativeHandle(a, b, c); +}; + +exports.useLayoutEffect = function (a, b) { + return S().useLayoutEffect(a, b); +}; + +exports.useMemo = function (a, b) { + return S().useMemo(a, b); +}; + +exports.useReducer = function (a, b, c) { + return S().useReducer(a, b, c); +}; + +exports.useRef = function (a) { + return S().useRef(a); +}; + +exports.useState = function (a) { + return S().useState(a); +}; + +exports.version = "17.0.1"; +}); + +/** @license React v17.0.1 + * react.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var react_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var _assign = objectAssign; // TODO: this is special because it gets imported during build. + + + var ReactVersion = '17.0.1'; // ATTENTION + // When adding new symbols to this file, + // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' + // The Symbol used to tag the ReactElement-like types. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + + var REACT_ELEMENT_TYPE = 0xeac7; + var REACT_PORTAL_TYPE = 0xeaca; + exports.Fragment = 0xeacb; + exports.StrictMode = 0xeacc; + exports.Profiler = 0xead2; + var REACT_PROVIDER_TYPE = 0xeacd; + var REACT_CONTEXT_TYPE = 0xeace; + var REACT_FORWARD_REF_TYPE = 0xead0; + exports.Suspense = 0xead1; + var REACT_SUSPENSE_LIST_TYPE = 0xead8; + var REACT_MEMO_TYPE = 0xead3; + var REACT_LAZY_TYPE = 0xead4; + var REACT_BLOCK_TYPE = 0xead9; + var REACT_SERVER_BLOCK_TYPE = 0xeada; + var REACT_FUNDAMENTAL_TYPE = 0xead5; + var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1; + var REACT_LEGACY_HIDDEN_TYPE = 0xeae3; + + if (typeof Symbol === 'function' && Symbol.for) { + var symbolFor = Symbol.for; + REACT_ELEMENT_TYPE = symbolFor('react.element'); + REACT_PORTAL_TYPE = symbolFor('react.portal'); + exports.Fragment = symbolFor('react.fragment'); + exports.StrictMode = symbolFor('react.strict_mode'); + exports.Profiler = symbolFor('react.profiler'); + REACT_PROVIDER_TYPE = symbolFor('react.provider'); + REACT_CONTEXT_TYPE = symbolFor('react.context'); + REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref'); + exports.Suspense = symbolFor('react.suspense'); + REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list'); + REACT_MEMO_TYPE = symbolFor('react.memo'); + REACT_LAZY_TYPE = symbolFor('react.lazy'); + REACT_BLOCK_TYPE = symbolFor('react.block'); + REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block'); + REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental'); + symbolFor('react.scope'); + symbolFor('react.opaque.id'); + REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode'); + symbolFor('react.offscreen'); + REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden'); + } + + var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; + + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== 'object') { + return null; + } + + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + + return null; + } + /** + * Keeps track of the current dispatcher. + */ + + + var ReactCurrentDispatcher = { + /** + * @internal + * @type {ReactComponent} + */ + current: null + }; + /** + * Keeps track of the current batch's configuration such as how long an update + * should suspend for if it needs to. + */ + + var ReactCurrentBatchConfig = { + transition: 0 + }; + /** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ + + var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null + }; + var ReactDebugCurrentFrame = {}; + var currentExtraStackFrame = null; + + function setExtraStackFrame(stack) { + { + currentExtraStackFrame = stack; + } + } + + { + ReactDebugCurrentFrame.setExtraStackFrame = function (stack) { + { + currentExtraStackFrame = stack; + } + }; // Stack implementation injected by the current renderer. + + + ReactDebugCurrentFrame.getCurrentStack = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var stack = ''; // Add an extra top frame while an element is being validated + + if (currentExtraStackFrame) { + stack += currentExtraStackFrame; + } // Delegate to the injected renderer-specific implementation + + + var impl = ReactDebugCurrentFrame.getCurrentStack; + + if (impl) { + stack += impl() || ''; + } + + return stack; + }; + } + /** + * Used by act() to track whether you're inside an act() scope. + */ + + var IsSomeRendererActing = { + current: false + }; + var ReactSharedInternals = { + ReactCurrentDispatcher: ReactCurrentDispatcher, + ReactCurrentBatchConfig: ReactCurrentBatchConfig, + ReactCurrentOwner: ReactCurrentOwner, + IsSomeRendererActing: IsSomeRendererActing, + // Used by renderers to avoid bundling object-assign twice in UMD bundles: + assign: _assign + }; + { + ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; + } // by calls to these methods by a Babel plugin. + // + // In PROD (or in packages without access to React internals), + // they are left as they are instead. + + function warn(format) { + { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } + + function error(format) { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } + + function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } + + var argsWithFormat = args.map(function (item) { + return '' + item; + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + + var didWarnStateUpdateForUnmountedComponent = {}; + + function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; + var warningKey = componentName + "." + callerName; + + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + + error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + /** + * This is the abstract API for an update queue. + */ + + + var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } + }; + var emptyObject = {}; + { + Object.freeze(emptyObject); + } + /** + * Base class helpers for the updating state of a component. + */ + + function Component(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the + // renderer. + + this.updater = updater || ReactNoopUpdateQueue; + } + + Component.prototype.isReactComponent = {}; + /** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ + + Component.prototype.setState = function (partialState, callback) { + if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) { + { + throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); + } + } + + this.updater.enqueueSetState(this, partialState, callback, 'setState'); + }; + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ + + + Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); + }; + /** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ + + + { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + return undefined; + } + }); + }; + + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + + function ComponentDummy() {} + + ComponentDummy.prototype = Component.prototype; + /** + * Convenience component with default shallow equality check for sCU. + */ + + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. + + _assign(pureComponentPrototype, Component.prototype); + + pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value + + function createRef() { + var refObject = { + current: null + }; + { + Object.seal(refObject); + } + return refObject; + } + + function getWrappedName(outerType, innerType, wrapperName) { + var functionName = innerType.displayName || innerType.name || ''; + return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); + } + + function getContextName(type) { + return type.displayName || 'Context'; + } + + function getComponentName(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case exports.Fragment: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case exports.Profiler: + return 'Profiler'; + + case exports.StrictMode: + return 'StrictMode'; + + case exports.Suspense: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + return getComponentName(type.type); + + case REACT_BLOCK_TYPE: + return getComponentName(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentName(init(payload)); + } catch (x) { + return null; + } + } + } + } + + return null; + } + + var hasOwnProperty = Object.prototype.hasOwnProperty; + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; + { + didWarnAboutStringRefs = {}; + } + + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; + } + + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + function warnIfStringRefCannotBeAutoConverted(config) { + { + if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { + var componentName = getComponentName(ReactCurrentOwner.current.type); + + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + /** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, instanceof check + * will not work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} props + * @param {*} key + * @param {string|object} ref + * @param {*} owner + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @internal + */ + + + var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + // Record the component responsible for creating this element. + _owner: owner + }; + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); // self and source are DEV only properties. + + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + return element; + }; + /** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ + + + function createElement(type, config, children) { + var propName; // Reserved names are extracted + + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + { + warnIfStringRefCannotBeAutoConverted(config); + } + } + + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } // Resolve default props + + + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + + { + if (key || ref) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + /** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ + + + function cloneElement(element, config, children) { + if (!!(element === null || element === undefined)) { + { + throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); + } + } + + var propName; // Original props are copied + + var props = _assign({}, element.props); // Reserved names are extracted + + + var key = element.key; + var ref = element.ref; // Self is preserved since the owner is preserved. + + var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + + var source = element._source; // Owner will be preserved, unless ref is overridden + + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + + if (hasValidKey(config)) { + key = '' + config.key; + } // Remaining properties override existing props + + + var defaultProps; + + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + } + /** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a ReactElement. + * @final + */ + + + function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + /** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = key.replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return '$' + escapedString; + } + /** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + + + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + + function escapeUserProvidedKey(text) { + return text.replace(userProvidedKeyEscapeRegex, '$&/'); + } + /** + * Generate a key string that identifies a element within a set. + * + * @param {*} element A element that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ + + + function getElementKey(element, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof element === 'object' && element !== null && element.key != null) { + // Explicit key + return escape('' + element.key); + } // Implicit key determined by the index in the set + + + return index.toString(36); + } + + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + + } + } + + if (invokeCallback) { + var _child = children; + var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows: + + var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; + + if (Array.isArray(mappedChild)) { + var escapedChildKey = ''; + + if (childKey != null) { + escapedChildKey = escapeUserProvidedKey(childKey) + '/'; + } + + mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { + return c; + }); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number + escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); + } + + array.push(mappedChild); + } + + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getElementKey(child, i); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else { + var iteratorFn = getIteratorFn(children); + + if (typeof iteratorFn === 'function') { + var iterableChildren = children; + { + // Warn about using Maps as children + if (iteratorFn === iterableChildren.entries) { + if (!didWarnAboutMaps) { + warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); + } + + didWarnAboutMaps = true; + } + } + var iterator = iteratorFn.call(iterableChildren); + var step; + var ii = 0; + + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getElementKey(child, ii++); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else if (type === 'object') { + var childrenString = '' + children; + { + { + throw Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). If you meant to render a collection of children, use an array instead."); + } + } + } + } + + return subtreeCount; + } + /** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenmap + * + * The provided mapFunction(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ + + + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + + var result = []; + var count = 0; + mapIntoArray(children, result, '', '', function (child) { + return func.call(context, child, count++); + }); + return result; + } + /** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrencount + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ + + + function countChildren(children) { + var n = 0; + mapChildren(children, function () { + n++; // Don't return anything + }); + return n; + } + /** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenforeach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ + + + function forEachChildren(children, forEachFunc, forEachContext) { + mapChildren(children, function () { + forEachFunc.apply(this, arguments); // Don't return anything. + }, forEachContext); + } + /** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#reactchildrentoarray + */ + + + function toArray(children) { + return mapChildren(children, function (child) { + return child; + }) || []; + } + /** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenonly + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ + + + function onlyChild(children) { + if (!isValidElement(children)) { + { + throw Error("React.Children.only expected to receive a single React element child."); + } + } + + return children; + } + + function createContext(defaultValue, calculateChangedBits) { + if (calculateChangedBits === undefined) { + calculateChangedBits = null; + } else { + { + if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') { + error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits); + } + } + } + + var context = { + $$typeof: REACT_CONTEXT_TYPE, + _calculateChangedBits: calculateChangedBits, + // As a workaround to support multiple concurrent renderers, we categorize + // some renderers as primary and others as secondary. We only expect + // there to be two concurrent renderers at most: React Native (primary) and + // Fabric (secondary); React DOM (primary) and React ART (secondary). + // Secondary renderers store their context values on separate fields. + _currentValue: defaultValue, + _currentValue2: defaultValue, + // Used to track how many concurrent renderers this context currently + // supports within in a single renderer. Such as parallel server rendering. + _threadCount: 0, + // These are circular + Provider: null, + Consumer: null + }; + context.Provider = { + $$typeof: REACT_PROVIDER_TYPE, + _context: context + }; + var hasWarnedAboutUsingNestedContextConsumers = false; + var hasWarnedAboutUsingConsumerProvider = false; + var hasWarnedAboutDisplayNameOnConsumer = false; + { + // A separate object, but proxies back to the original context object for + // backwards compatibility. It has a different $$typeof, so we can properly + // warn for the incorrect usage of Context as a Consumer. + var Consumer = { + $$typeof: REACT_CONTEXT_TYPE, + _context: context, + _calculateChangedBits: context._calculateChangedBits + }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here + + Object.defineProperties(Consumer, { + Provider: { + get: function () { + if (!hasWarnedAboutUsingConsumerProvider) { + hasWarnedAboutUsingConsumerProvider = true; + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Provider; + }, + set: function (_Provider) { + context.Provider = _Provider; + } + }, + _currentValue: { + get: function () { + return context._currentValue; + }, + set: function (_currentValue) { + context._currentValue = _currentValue; + } + }, + _currentValue2: { + get: function () { + return context._currentValue2; + }, + set: function (_currentValue2) { + context._currentValue2 = _currentValue2; + } + }, + _threadCount: { + get: function () { + return context._threadCount; + }, + set: function (_threadCount) { + context._threadCount = _threadCount; + } + }, + Consumer: { + get: function () { + if (!hasWarnedAboutUsingNestedContextConsumers) { + hasWarnedAboutUsingNestedContextConsumers = true; + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Consumer; + } + }, + displayName: { + get: function () { + return context.displayName; + }, + set: function (displayName) { + if (!hasWarnedAboutDisplayNameOnConsumer) { + warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); + hasWarnedAboutDisplayNameOnConsumer = true; + } + } + } + }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty + + context.Consumer = Consumer; + } + { + context._currentRenderer = null; + context._currentRenderer2 = null; + } + return context; + } + + var Uninitialized = -1; + var Pending = 0; + var Resolved = 1; + var Rejected = 2; + + function lazyInitializer(payload) { + if (payload._status === Uninitialized) { + var ctor = payload._result; + var thenable = ctor(); // Transition to the next state. + + var pending = payload; + pending._status = Pending; + pending._result = thenable; + thenable.then(function (moduleObject) { + if (payload._status === Pending) { + var defaultExport = moduleObject.default; + { + if (defaultExport === undefined) { + error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); + } + } // Transition to the next state. + + var resolved = payload; + resolved._status = Resolved; + resolved._result = defaultExport; + } + }, function (error) { + if (payload._status === Pending) { + // Transition to the next state. + var rejected = payload; + rejected._status = Rejected; + rejected._result = error; + } + }); + } + + if (payload._status === Resolved) { + return payload._result; + } else { + throw payload._result; + } + } + + function lazy(ctor) { + var payload = { + // We use these fields to store the result. + _status: -1, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: payload, + _init: lazyInitializer + }; + { + // In production, this would just set it on the object. + var defaultProps; + var propTypes; // $FlowFixMe + + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + set: function (newDefaultProps) { + error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'defaultProps', { + enumerable: true + }); + } + }, + propTypes: { + configurable: true, + get: function () { + return propTypes; + }, + set: function (newPropTypes) { + error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + propTypes = newPropTypes; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'propTypes', { + enumerable: true + }); + } + } + }); + } + return lazyType; + } + + function forwardRef(render) { + { + if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); + } else if (typeof render !== 'function') { + error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); + } else { + if (render.length !== 0 && render.length !== 2) { + error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); + } + } + + if (render != null) { + if (render.defaultProps != null || render.propTypes != null) { + error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); + } + } + } + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render: render + }; + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; + + if (render.displayName == null) { + render.displayName = name; + } + } + }); + } + return elementType; + } // Filter certain DOM attributes (e.g. src, href) if their values are empty strings. + + + var enableScopeAPI = false; // Experimental Create Event Handle API. + + function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) { + return true; + } + } + + return false; + } + + function memo(type, compare) { + { + if (!isValidElementType(type)) { + error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); + } + } + var elementType = { + $$typeof: REACT_MEMO_TYPE, + type: type, + compare: compare === undefined ? null : compare + }; + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; + + if (type.displayName == null) { + type.displayName = name; + } + } + }); + } + return elementType; + } + + function resolveDispatcher() { + var dispatcher = ReactCurrentDispatcher.current; + + if (!(dispatcher !== null)) { + { + throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."); + } + } + + return dispatcher; + } + + function useContext(Context, unstable_observedBits) { + var dispatcher = resolveDispatcher(); + { + if (unstable_observedBits !== undefined) { + error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : ''); + } // TODO: add a more generic warning for invalid values. + + + if (Context._context !== undefined) { + var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs + // and nobody should be using this in existing code. + + if (realContext.Consumer === Context) { + error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); + } else if (realContext.Provider === Context) { + error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); + } + } + } + return dispatcher.useContext(Context, unstable_observedBits); + } + + function useState(initialState) { + var dispatcher = resolveDispatcher(); + return dispatcher.useState(initialState); + } + + function useReducer(reducer, initialArg, init) { + var dispatcher = resolveDispatcher(); + return dispatcher.useReducer(reducer, initialArg, init); + } + + function useRef(initialValue) { + var dispatcher = resolveDispatcher(); + return dispatcher.useRef(initialValue); + } + + function useEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useEffect(create, deps); + } + + function useLayoutEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useLayoutEffect(create, deps); + } + + function useCallback(callback, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useCallback(callback, deps); + } + + function useMemo(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useMemo(create, deps); + } + + function useImperativeHandle(ref, create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useImperativeHandle(ref, create, deps); + } + + function useDebugValue(value, formatterFn) { + { + var dispatcher = resolveDispatcher(); + return dispatcher.useDebugValue(value, formatterFn); + } + } // Helpers to patch console.logs to avoid logging during side-effect free + // replaying on render function. This currently only patches the object + // lazily which won't cover if the log function was extracted eagerly. + // We could also eagerly patch the method. + + + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + + function disabledLog() {} + + disabledLog.__reactDisabledLog = true; + + function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } + } + + function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: _assign({}, props, { + value: prevLog + }), + info: _assign({}, props, { + value: prevInfo + }), + warn: _assign({}, props, { + value: prevWarn + }), + error: _assign({}, props, { + value: prevError + }), + group: _assign({}, props, { + value: prevGroup + }), + groupCollapsed: _assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: _assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } + } + + var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } + } + + var reentry = false; + var componentFrameCache; + { + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + + function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if (!fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + { + previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher$1.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + { + ReactCurrentDispatcher$1.current = previousDispatcher; + reenableLogs(); + } + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + return syntheticFrame; + } + + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + + function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); + } + + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case exports.Suspense: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_BLOCK_TYPE: + return describeFunctionComponentFrame(type._render); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; + } + + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + error('Failed %s type: %s', location, error$1.message); + setCurrentlyValidatingElement(null); + } + } + } + } + } + + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + setExtraStackFrame(stack); + } else { + setExtraStackFrame(null); + } + } + } + + var propTypesMisspellWarningShown; + { + propTypesMisspellWarningShown = false; + } + + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current.type); + + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + + return ''; + } + + function getSourceInfoErrorAddendum(source) { + if (source !== undefined) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + + return ''; + } + + function getSourceInfoErrorAddendumForProps(elementProps) { + if (elementProps !== null && elementProps !== undefined) { + return getSourceInfoErrorAddendum(elementProps.__source); + } + + return ''; + } + /** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ + + + var ownerHasKeyUseWarning = {}; + + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + + return info; + } + /** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ + + + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + + var childOwner = ''; + + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = " It was passed a child from " + getComponentName(element._owner.type) + "."; + } + + { + setCurrentlyValidatingElement$1(element); + error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + setCurrentlyValidatingElement$1(null); + } + } + /** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ + + + function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + /** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ + + + function validatePropTypes(element) { + { + var type = element.type; + + if (type === null || type === undefined || typeof type === 'string') { + return; + } + + var propTypes; + + if (typeof type === 'function') { + propTypes = type.propTypes; + } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + + if (propTypes) { + // Intentionally inside to avoid triggering lazy initializers: + var name = getComponentName(type); + checkPropTypes(propTypes, element.props, 'prop', name, element); + } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: + + var _name = getComponentName(type); + + error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); + } + + if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { + error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } + } + } + /** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ + + + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (key !== 'children' && key !== 'key') { + setCurrentlyValidatingElement$1(fragment); + error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); + setCurrentlyValidatingElement$1(null); + break; + } + } + + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + error('Invalid attribute `ref` supplied to `React.Fragment`.'); + setCurrentlyValidatingElement$1(null); + } + } + } + + function createElementWithValidation(type, props, children) { + var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + + if (!validType) { + var info = ''; + + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendumForProps(props); + + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + var typeString; + + if (type === null) { + typeString = 'null'; + } else if (Array.isArray(type)) { + typeString = 'array'; + } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />"; + info = ' Did you accidentally export a JSX literal instead of a component?'; + } else { + typeString = typeof type; + } + + { + error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); + } + } + + var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + + if (element == null) { + return element; + } // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + + + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + if (type === exports.Fragment) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + + return element; + } + + var didWarnAboutDeprecatedCreateFactory = false; + + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + { + if (!didWarnAboutDeprecatedCreateFactory) { + didWarnAboutDeprecatedCreateFactory = true; + warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); + } // Legacy hook: remove it + + + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + return validatedFactory; + } + + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + + validatePropTypes(newElement); + return newElement; + } + + { + try { + var frozenObject = Object.freeze({}); + /* eslint-disable no-new */ + + new Map([[frozenObject, null]]); + new Set([frozenObject]); + /* eslint-enable no-new */ + } catch (e) {} + } + var createElement$1 = createElementWithValidation; + var cloneElement$1 = cloneElementWithValidation; + var createFactory = createFactoryWithValidation; + var Children = { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }; + exports.Children = Children; + exports.Component = Component; + exports.PureComponent = PureComponent; + exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports.cloneElement = cloneElement$1; + exports.createContext = createContext; + exports.createElement = createElement$1; + exports.createFactory = createFactory; + exports.createRef = createRef; + exports.forwardRef = forwardRef; + exports.isValidElement = isValidElement; + exports.lazy = lazy; + exports.memo = memo; + exports.useCallback = useCallback; + exports.useContext = useContext; + exports.useDebugValue = useDebugValue; + exports.useEffect = useEffect; + exports.useImperativeHandle = useImperativeHandle; + exports.useLayoutEffect = useLayoutEffect; + exports.useMemo = useMemo; + exports.useReducer = useReducer; + exports.useRef = useRef; + exports.useState = useState; + exports.version = ReactVersion; + })(); +} +}); + +var react = createCommonjsModule(function (module) { + +{ + module.exports = react_development; +} +}); + +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +createCommonjsModule(function (module, exports) { + +var f, g, h, k; + +if ("object" === typeof performance && "function" === typeof performance.now) { + var l = performance; + + exports.unstable_now = function () { + return l.now(); + }; +} else { + var p = Date, + q = p.now(); + + exports.unstable_now = function () { + return p.now() - q; + }; +} + +if ("undefined" === typeof window || "function" !== typeof MessageChannel) { + var t = null, + u = null, + w = function () { + if (null !== t) try { + var a = exports.unstable_now(); + t(!0, a); + t = null; + } catch (b) { + throw setTimeout(w, 0), b; + } + }; + + f = function (a) { + null !== t ? setTimeout(f, 0, a) : (t = a, setTimeout(w, 0)); + }; + + g = function (a, b) { + u = setTimeout(a, b); + }; + + h = function () { + clearTimeout(u); + }; + + exports.unstable_shouldYield = function () { + return !1; + }; + + k = exports.unstable_forceFrameRate = function () {}; +} else { + var x = window.setTimeout, + y = window.clearTimeout; + + if ("undefined" !== typeof console) { + var z = window.cancelAnimationFrame; + "function" !== typeof window.requestAnimationFrame && console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); + "function" !== typeof z && console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); + } + + var A = !1, + B = null, + C = -1, + D = 5, + E = 0; + + exports.unstable_shouldYield = function () { + return exports.unstable_now() >= E; + }; + + k = function () {}; + + exports.unstable_forceFrameRate = function (a) { + 0 > a || 125 < a ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : D = 0 < a ? Math.floor(1E3 / a) : 5; + }; + + var F = new MessageChannel(), + G = F.port2; + + F.port1.onmessage = function () { + if (null !== B) { + var a = exports.unstable_now(); + E = a + D; + + try { + B(!0, a) ? G.postMessage(null) : (A = !1, B = null); + } catch (b) { + throw G.postMessage(null), b; + } + } else A = !1; + }; + + f = function (a) { + B = a; + A || (A = !0, G.postMessage(null)); + }; + + g = function (a, b) { + C = x(function () { + a(exports.unstable_now()); + }, b); + }; + + h = function () { + y(C); + C = -1; + }; +} + +function H(a, b) { + var c = a.length; + a.push(b); + + a: for (;;) { + var d = c - 1 >>> 1, + e = a[d]; + if (void 0 !== e && 0 < I(e, b)) a[d] = b, a[c] = e, c = d;else break a; + } +} + +function J(a) { + a = a[0]; + return void 0 === a ? null : a; +} + +function K(a) { + var b = a[0]; + + if (void 0 !== b) { + var c = a.pop(); + + if (c !== b) { + a[0] = c; + + a: for (var d = 0, e = a.length; d < e;) { + var m = 2 * (d + 1) - 1, + n = a[m], + v = m + 1, + r = a[v]; + if (void 0 !== n && 0 > I(n, c)) void 0 !== r && 0 > I(r, n) ? (a[d] = r, a[v] = c, d = v) : (a[d] = n, a[m] = c, d = m);else if (void 0 !== r && 0 > I(r, c)) a[d] = r, a[v] = c, d = v;else break a; + } + } + + return b; + } + + return null; +} + +function I(a, b) { + var c = a.sortIndex - b.sortIndex; + return 0 !== c ? c : a.id - b.id; +} + +var L = [], + M = [], + N = 1, + O = null, + P = 3, + Q = !1, + R = !1, + S = !1; + +function T(a) { + for (var b = J(M); null !== b;) { + if (null === b.callback) K(M);else if (b.startTime <= a) K(M), b.sortIndex = b.expirationTime, H(L, b);else break; + b = J(M); + } +} + +function U(a) { + S = !1; + T(a); + if (!R) if (null !== J(L)) R = !0, f(V);else { + var b = J(M); + null !== b && g(U, b.startTime - a); + } +} + +function V(a, b) { + R = !1; + S && (S = !1, h()); + Q = !0; + var c = P; + + try { + T(b); + + for (O = J(L); null !== O && (!(O.expirationTime > b) || a && !exports.unstable_shouldYield());) { + var d = O.callback; + + if ("function" === typeof d) { + O.callback = null; + P = O.priorityLevel; + var e = d(O.expirationTime <= b); + b = exports.unstable_now(); + "function" === typeof e ? O.callback = e : O === J(L) && K(L); + T(b); + } else K(L); + + O = J(L); + } + + if (null !== O) var m = !0;else { + var n = J(M); + null !== n && g(U, n.startTime - b); + m = !1; + } + return m; + } finally { + O = null, P = c, Q = !1; + } +} + +var W = k; +exports.unstable_IdlePriority = 5; +exports.unstable_ImmediatePriority = 1; +exports.unstable_LowPriority = 4; +exports.unstable_NormalPriority = 3; +exports.unstable_Profiling = null; +exports.unstable_UserBlockingPriority = 2; + +exports.unstable_cancelCallback = function (a) { + a.callback = null; +}; + +exports.unstable_continueExecution = function () { + R || Q || (R = !0, f(V)); +}; + +exports.unstable_getCurrentPriorityLevel = function () { + return P; +}; + +exports.unstable_getFirstCallbackNode = function () { + return J(L); +}; + +exports.unstable_next = function (a) { + switch (P) { + case 1: + case 2: + case 3: + var b = 3; + break; + + default: + b = P; + } + + var c = P; + P = b; + + try { + return a(); + } finally { + P = c; + } +}; + +exports.unstable_pauseExecution = function () {}; + +exports.unstable_requestPaint = W; + +exports.unstable_runWithPriority = function (a, b) { + switch (a) { + case 1: + case 2: + case 3: + case 4: + case 5: + break; + + default: + a = 3; + } + + var c = P; + P = a; + + try { + return b(); + } finally { + P = c; + } +}; + +exports.unstable_scheduleCallback = function (a, b, c) { + var d = exports.unstable_now(); + "object" === typeof c && null !== c ? (c = c.delay, c = "number" === typeof c && 0 < c ? d + c : d) : c = d; + + switch (a) { + case 1: + var e = -1; + break; + + case 2: + e = 250; + break; + + case 5: + e = 1073741823; + break; + + case 4: + e = 1E4; + break; + + default: + e = 5E3; + } + + e = c + e; + a = { + id: N++, + callback: b, + priorityLevel: a, + startTime: c, + expirationTime: e, + sortIndex: -1 + }; + c > d ? (a.sortIndex = c, H(M, a), null === J(L) && a === J(M) && (S ? h() : S = !0, g(U, c - d))) : (a.sortIndex = e, H(L, a), R || Q || (R = !0, f(V))); + return a; +}; + +exports.unstable_wrapCallback = function (a) { + var b = P; + return function () { + var c = P; + P = b; + + try { + return a.apply(this, arguments); + } finally { + P = c; + } + }; +}; +}); + +/** @license React v0.20.2 + * scheduler.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var scheduler_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var enableSchedulerDebugging = false; + var enableProfiling = false; + var requestHostCallback; + var requestHostTimeout; + var cancelHostTimeout; + var requestPaint; + var hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function'; + + if (hasPerformanceNow) { + var localPerformance = performance; + + exports.unstable_now = function () { + return localPerformance.now(); + }; + } else { + var localDate = Date; + var initialTime = localDate.now(); + + exports.unstable_now = function () { + return localDate.now() - initialTime; + }; + } + + if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive + // implementation using setTimeout. + typeof window === 'undefined' || // Check if MessageChannel is supported, too. + typeof MessageChannel !== 'function') { + // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, + // fallback to a naive implementation. + var _callback = null; + var _timeoutID = null; + + var _flushCallback = function () { + if (_callback !== null) { + try { + var currentTime = exports.unstable_now(); + var hasRemainingTime = true; + + _callback(hasRemainingTime, currentTime); + + _callback = null; + } catch (e) { + setTimeout(_flushCallback, 0); + throw e; + } + } + }; + + requestHostCallback = function (cb) { + if (_callback !== null) { + // Protect against re-entrancy. + setTimeout(requestHostCallback, 0, cb); + } else { + _callback = cb; + setTimeout(_flushCallback, 0); + } + }; + + requestHostTimeout = function (cb, ms) { + _timeoutID = setTimeout(cb, ms); + }; + + cancelHostTimeout = function () { + clearTimeout(_timeoutID); + }; + + exports.unstable_shouldYield = function () { + return false; + }; + + requestPaint = exports.unstable_forceFrameRate = function () {}; + } else { + // Capture local references to native APIs, in case a polyfill overrides them. + var _setTimeout = window.setTimeout; + var _clearTimeout = window.clearTimeout; + + if (typeof console !== 'undefined') { + // TODO: Scheduler no longer requires these methods to be polyfilled. But + // maybe we want to continue warning if they don't exist, to preserve the + // option to rely on it in the future? + var requestAnimationFrame = window.requestAnimationFrame; + var cancelAnimationFrame = window.cancelAnimationFrame; + + if (typeof requestAnimationFrame !== 'function') { + // Using console['error'] to evade Babel and ESLint + console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); + } + + if (typeof cancelAnimationFrame !== 'function') { + // Using console['error'] to evade Babel and ESLint + console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); + } + } + + var isMessageLoopRunning = false; + var scheduledHostCallback = null; + var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main + // thread, like user events. By default, it yields multiple times per frame. + // It does not attempt to align with frame boundaries, since most tasks don't + // need to be frame aligned; for those that do, use requestAnimationFrame. + + var yieldInterval = 5; + var deadline = 0; // TODO: Make this configurable + + { + // `isInputPending` is not available. Since we have no way of knowing if + // there's pending input, always yield at the end of the frame. + exports.unstable_shouldYield = function () { + return exports.unstable_now() >= deadline; + }; // Since we yield every frame regardless, `requestPaint` has no effect. + + + requestPaint = function () {}; + } + + exports.unstable_forceFrameRate = function (fps) { + if (fps < 0 || fps > 125) { + // Using console['error'] to evade Babel and ESLint + console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported'); + return; + } + + if (fps > 0) { + yieldInterval = Math.floor(1000 / fps); + } else { + // reset the framerate + yieldInterval = 5; + } + }; + + var performWorkUntilDeadline = function () { + if (scheduledHostCallback !== null) { + var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync + // cycle. This means there's always time remaining at the beginning of + // the message event. + + deadline = currentTime + yieldInterval; + var hasTimeRemaining = true; + + try { + var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); + + if (!hasMoreWork) { + isMessageLoopRunning = false; + scheduledHostCallback = null; + } else { + // If there's more work, schedule the next message event at the end + // of the preceding one. + port.postMessage(null); + } + } catch (error) { + // If a scheduler task throws, exit the current browser task so the + // error can be observed. + port.postMessage(null); + throw error; + } + } else { + isMessageLoopRunning = false; + } // Yielding to the browser will give it a chance to paint, so we can + + }; + + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = performWorkUntilDeadline; + + requestHostCallback = function (callback) { + scheduledHostCallback = callback; + + if (!isMessageLoopRunning) { + isMessageLoopRunning = true; + port.postMessage(null); + } + }; + + requestHostTimeout = function (callback, ms) { + taskTimeoutID = _setTimeout(function () { + callback(exports.unstable_now()); + }, ms); + }; + + cancelHostTimeout = function () { + _clearTimeout(taskTimeoutID); + + taskTimeoutID = -1; + }; + } + + function push(heap, node) { + var index = heap.length; + heap.push(node); + siftUp(heap, node, index); + } + + function peek(heap) { + var first = heap[0]; + return first === undefined ? null : first; + } + + function pop(heap) { + var first = heap[0]; + + if (first !== undefined) { + var last = heap.pop(); + + if (last !== first) { + heap[0] = last; + siftDown(heap, last, 0); + } + + return first; + } else { + return null; + } + } + + function siftUp(heap, node, i) { + var index = i; + + while (true) { + var parentIndex = index - 1 >>> 1; + var parent = heap[parentIndex]; + + if (parent !== undefined && compare(parent, node) > 0) { + // The parent is larger. Swap positions. + heap[parentIndex] = node; + heap[index] = parent; + index = parentIndex; + } else { + // The parent is smaller. Exit. + return; + } + } + } + + function siftDown(heap, node, i) { + var index = i; + var length = heap.length; + + while (index < length) { + var leftIndex = (index + 1) * 2 - 1; + var left = heap[leftIndex]; + var rightIndex = leftIndex + 1; + var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. + + if (left !== undefined && compare(left, node) < 0) { + if (right !== undefined && compare(right, left) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + heap[index] = left; + heap[leftIndex] = node; + index = leftIndex; + } + } else if (right !== undefined && compare(right, node) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + // Neither child is smaller. Exit. + return; + } + } + } + + function compare(a, b) { + // Compare sort index first, then task id. + var diff = a.sortIndex - b.sortIndex; + return diff !== 0 ? diff : a.id - b.id; + } // TODO: Use symbols? + + + var ImmediatePriority = 1; + var UserBlockingPriority = 2; + var NormalPriority = 3; + var LowPriority = 4; + var IdlePriority = 5; + + function markTaskErrored(task, ms) {} + /* eslint-disable no-var */ + // Math.pow(2, 30) - 1 + // 0b111111111111111111111111111111 + + + var maxSigned31BitInt = 1073741823; // Times out immediately + + var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out + + var USER_BLOCKING_PRIORITY_TIMEOUT = 250; + var NORMAL_PRIORITY_TIMEOUT = 5000; + var LOW_PRIORITY_TIMEOUT = 10000; // Never times out + + var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap + + var taskQueue = []; + var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. + + var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. + + var currentTask = null; + var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. + + var isPerformingWork = false; + var isHostCallbackScheduled = false; + var isHostTimeoutScheduled = false; + + function advanceTimers(currentTime) { + // Check for tasks that are no longer delayed and add them to the queue. + var timer = peek(timerQueue); + + while (timer !== null) { + if (timer.callback === null) { + // Timer was cancelled. + pop(timerQueue); + } else if (timer.startTime <= currentTime) { + // Timer fired. Transfer to the task queue. + pop(timerQueue); + timer.sortIndex = timer.expirationTime; + push(taskQueue, timer); + } else { + // Remaining timers are pending. + return; + } + + timer = peek(timerQueue); + } + } + + function handleTimeout(currentTime) { + isHostTimeoutScheduled = false; + advanceTimers(currentTime); + + if (!isHostCallbackScheduled) { + if (peek(taskQueue) !== null) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } else { + var firstTimer = peek(timerQueue); + + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + } + } + } + + function flushWork(hasTimeRemaining, initialTime) { + isHostCallbackScheduled = false; + + if (isHostTimeoutScheduled) { + // We scheduled a timeout but it's no longer needed. Cancel it. + isHostTimeoutScheduled = false; + cancelHostTimeout(); + } + + isPerformingWork = true; + var previousPriorityLevel = currentPriorityLevel; + + try { + var currentTime; if (enableProfiling) ; else { + // No catch in prod code path. + return workLoop(hasTimeRemaining, initialTime); + } + } finally { + currentTask = null; + currentPriorityLevel = previousPriorityLevel; + isPerformingWork = false; + } + } + + function workLoop(hasTimeRemaining, initialTime) { + var currentTime = initialTime; + advanceTimers(currentTime); + currentTask = peek(taskQueue); + + while (currentTask !== null && !enableSchedulerDebugging) { + if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || exports.unstable_shouldYield())) { + // This currentTask hasn't expired, and we've reached the deadline. + break; + } + + var callback = currentTask.callback; + + if (typeof callback === 'function') { + currentTask.callback = null; + currentPriorityLevel = currentTask.priorityLevel; + var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; + var continuationCallback = callback(didUserCallbackTimeout); + currentTime = exports.unstable_now(); + + if (typeof continuationCallback === 'function') { + currentTask.callback = continuationCallback; + } else { + if (currentTask === peek(taskQueue)) { + pop(taskQueue); + } + } + + advanceTimers(currentTime); + } else { + pop(taskQueue); + } + + currentTask = peek(taskQueue); + } // Return whether there's additional work + + + if (currentTask !== null) { + return true; + } else { + var firstTimer = peek(timerQueue); + + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + + return false; + } + } + + function unstable_runWithPriority(priorityLevel, eventHandler) { + switch (priorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + case LowPriority: + case IdlePriority: + break; + + default: + priorityLevel = NormalPriority; + } + + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + + function unstable_next(eventHandler) { + var priorityLevel; + + switch (currentPriorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + // Shift down to normal priority + priorityLevel = NormalPriority; + break; + + default: + // Anything lower than normal priority should remain at the current level. + priorityLevel = currentPriorityLevel; + break; + } + + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + + function unstable_wrapCallback(callback) { + var parentPriorityLevel = currentPriorityLevel; + return function () { + // This is a fork of runWithPriority, inlined for performance. + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = parentPriorityLevel; + + try { + return callback.apply(this, arguments); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + } + + function unstable_scheduleCallback(priorityLevel, callback, options) { + var currentTime = exports.unstable_now(); + var startTime; + + if (typeof options === 'object' && options !== null) { + var delay = options.delay; + + if (typeof delay === 'number' && delay > 0) { + startTime = currentTime + delay; + } else { + startTime = currentTime; + } + } else { + startTime = currentTime; + } + + var timeout; + + switch (priorityLevel) { + case ImmediatePriority: + timeout = IMMEDIATE_PRIORITY_TIMEOUT; + break; + + case UserBlockingPriority: + timeout = USER_BLOCKING_PRIORITY_TIMEOUT; + break; + + case IdlePriority: + timeout = IDLE_PRIORITY_TIMEOUT; + break; + + case LowPriority: + timeout = LOW_PRIORITY_TIMEOUT; + break; + + case NormalPriority: + default: + timeout = NORMAL_PRIORITY_TIMEOUT; + break; + } + + var expirationTime = startTime + timeout; + var newTask = { + id: taskIdCounter++, + callback: callback, + priorityLevel: priorityLevel, + startTime: startTime, + expirationTime: expirationTime, + sortIndex: -1 + }; + + if (startTime > currentTime) { + // This is a delayed task. + newTask.sortIndex = startTime; + push(timerQueue, newTask); + + if (peek(taskQueue) === null && newTask === peek(timerQueue)) { + // All tasks are delayed, and this is the task with the earliest delay. + if (isHostTimeoutScheduled) { + // Cancel an existing timeout. + cancelHostTimeout(); + } else { + isHostTimeoutScheduled = true; + } // Schedule a timeout. + + + requestHostTimeout(handleTimeout, startTime - currentTime); + } + } else { + newTask.sortIndex = expirationTime; + push(taskQueue, newTask); // wait until the next time we yield. + + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + + return newTask; + } + + function unstable_pauseExecution() {} + + function unstable_continueExecution() { + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + + function unstable_getFirstCallbackNode() { + return peek(taskQueue); + } + + function unstable_cancelCallback(task) { + // remove from the queue because you can't remove arbitrary nodes from an + // array based heap, only the first one.) + task.callback = null; + } + + function unstable_getCurrentPriorityLevel() { + return currentPriorityLevel; + } + + var unstable_requestPaint = requestPaint; + var unstable_Profiling = null; + exports.unstable_IdlePriority = IdlePriority; + exports.unstable_ImmediatePriority = ImmediatePriority; + exports.unstable_LowPriority = LowPriority; + exports.unstable_NormalPriority = NormalPriority; + exports.unstable_Profiling = unstable_Profiling; + exports.unstable_UserBlockingPriority = UserBlockingPriority; + exports.unstable_cancelCallback = unstable_cancelCallback; + exports.unstable_continueExecution = unstable_continueExecution; + exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; + exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; + exports.unstable_next = unstable_next; + exports.unstable_pauseExecution = unstable_pauseExecution; + exports.unstable_requestPaint = unstable_requestPaint; + exports.unstable_runWithPriority = unstable_runWithPriority; + exports.unstable_scheduleCallback = unstable_scheduleCallback; + exports.unstable_wrapCallback = unstable_wrapCallback; + })(); +} +}); + +var scheduler = createCommonjsModule(function (module) { + +{ + module.exports = scheduler_development; +} +}); + +/** @license React v17.0.1 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +function y(a) { + for (var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; c < arguments.length; c++) b += "&args[]=" + encodeURIComponent(arguments[c]); + + return "Minified React error #" + a + "; visit " + b + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; +} + +if (!react) throw Error(y(227)); +var ba = new Set(); + +function da(a, b) { + ea(a, b); + ea(a + "Capture", b); +} + +function ea(a, b) { + + for (a = 0; a < b.length; a++) ba.add(b[a]); +} + +var fa = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement); + +function B(a, b, c, d, e, f, g) { + this.acceptsBooleans = 2 === b || 3 === b || 4 === b; + this.attributeName = d; + this.attributeNamespace = e; + this.mustUseProperty = c; + this.propertyName = a; + this.type = b; + this.sanitizeURL = f; + this.removeEmptyString = g; +} +[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function (a) { + var b = a[0]; + new B(b, 1, !1, a[1], null, !1, !1); +}); +["contentEditable", "draggable", "spellCheck", "value"].forEach(function (a) { + new B(a, 2, !1, a.toLowerCase(), null, !1, !1); +}); +"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function (a) { + new B(a, 3, !1, a.toLowerCase(), null, !1, !1); +}); +["rowSpan", "start"].forEach(function (a) { + new B(a, 5, !1, a.toLowerCase(), null, !1, !1); +}); +var oa = /[\-:]([a-z])/g; + +function pa(a) { + return a[1].toUpperCase(); +} + +"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function (a) { + a.replace(oa, pa); +}); +"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function (a) { + a.replace(oa, pa); +}); +["xml:base", "xml:lang", "xml:space"].forEach(function (a) { + a.replace(oa, pa); +}); +["tabIndex", "crossOrigin"].forEach(function (a) { + new B(a, 1, !1, a.toLowerCase(), null, !1, !1); +}); +["src", "href", "action", "formAction"].forEach(function (a) { + new B(a, 1, !1, a.toLowerCase(), null, !0, !0); +}); + +var ra = react.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + +if ("function" === typeof Symbol && Symbol.for) { + var E = Symbol.for; + E("react.element"); + E("react.portal"); + E("react.fragment"); + E("react.strict_mode"); + E("react.profiler"); + E("react.provider"); + E("react.context"); + E("react.forward_ref"); + E("react.suspense"); + E("react.suspense_list"); + E("react.memo"); + E("react.lazy"); + E("react.block"); + E("react.scope"); + E("react.opaque.id"); + E("react.debug_trace_mode"); + E("react.offscreen"); + E("react.legacy_hidden"); +} + +var kb = { + html: "http://www.w3.org/1999/xhtml", + mathml: "http://www.w3.org/1998/Math/MathML", + svg: "http://www.w3.org/2000/svg" +}; + +var nb; + (function (a) { + return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) { + MSApp.execUnsafeLocalFunction(function () { + return a(b, c, d, e); + }); + } : a; +})(function (a, b) { + if (a.namespaceURI !== kb.svg || "innerHTML" in a) a.innerHTML = b;else { + nb = nb || document.createElement("div"); + nb.innerHTML = "" + b.valueOf().toString() + ""; + + for (b = nb.firstChild; a.firstChild;) a.removeChild(a.firstChild); + + for (; b.firstChild;) a.appendChild(b.firstChild); + } +}); + +var qb = { + animationIterationCount: !0, + borderImageOutset: !0, + borderImageSlice: !0, + borderImageWidth: !0, + boxFlex: !0, + boxFlexGroup: !0, + boxOrdinalGroup: !0, + columnCount: !0, + columns: !0, + flex: !0, + flexGrow: !0, + flexPositive: !0, + flexShrink: !0, + flexNegative: !0, + flexOrder: !0, + gridArea: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowSpan: !0, + gridRowStart: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnSpan: !0, + gridColumnStart: !0, + fontWeight: !0, + lineClamp: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + tabSize: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeDasharray: !0, + strokeDashoffset: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + strokeWidth: !0 +}, + rb = ["Webkit", "ms", "Moz", "O"]; +Object.keys(qb).forEach(function (a) { + rb.forEach(function (b) { + b = b + a.charAt(0).toUpperCase() + a.substring(1); + qb[b] = qb[a]; + }); +}); + +objectAssign({ + menuitem: !0 +}, { + area: !0, + base: !0, + br: !0, + col: !0, + embed: !0, + hr: !0, + img: !0, + input: !0, + keygen: !0, + link: !0, + meta: !0, + param: !0, + source: !0, + track: !0, + wbr: !0 +}); + +var Pb = !1; +if (fa) try { + var Qb = {}; + Object.defineProperty(Qb, "passive", { + get: function () { + Pb = !0; + } + }); + window.addEventListener("test", Qb, Qb); + window.removeEventListener("test", Qb, Qb); +} catch (a) { + Pb = !1; +} + +function Zb(a) { + var b = a, + c = a; + if (a.alternate) for (; b.return;) b = b.return;else { + a = b; + + do b = a, 0 !== (b.flags & 1026) && (c = b.return), a = b.return; while (a); + } + return 3 === b.tag ? c : null; +} + +function ac(a) { + if (Zb(a) !== a) throw Error(y(188)); +} + +function bc(a) { + var b = a.alternate; + + if (!b) { + b = Zb(a); + if (null === b) throw Error(y(188)); + return b !== a ? null : a; + } + + for (var c = a, d = b;;) { + var e = c.return; + if (null === e) break; + var f = e.alternate; + + if (null === f) { + d = e.return; + + if (null !== d) { + c = d; + continue; + } + + break; + } + + if (e.child === f.child) { + for (f = e.child; f;) { + if (f === c) return ac(e), a; + if (f === d) return ac(e), b; + f = f.sibling; + } + + throw Error(y(188)); + } + + if (c.return !== d.return) c = e, d = f;else { + for (var g = !1, h = e.child; h;) { + if (h === c) { + g = !0; + c = e; + d = f; + break; + } + + if (h === d) { + g = !0; + d = e; + c = f; + break; + } + + h = h.sibling; + } + + if (!g) { + for (h = f.child; h;) { + if (h === c) { + g = !0; + c = f; + d = e; + break; + } + + if (h === d) { + g = !0; + d = f; + c = e; + break; + } + + h = h.sibling; + } + + if (!g) throw Error(y(189)); + } + } + if (c.alternate !== d) throw Error(y(190)); + } + + if (3 !== c.tag) throw Error(y(188)); + return c.stateNode.current === c ? a : b; +} + +function cc(a) { + a = bc(a); + if (!a) return null; + + for (var b = a;;) { + if (5 === b.tag || 6 === b.tag) return b; + if (b.child) b.child.return = b, b = b.child;else { + if (b === a) break; + + for (; !b.sibling;) { + if (!b.return || b.return === a) return null; + b = b.return; + } + + b.sibling.return = b.return; + b = b.sibling; + } + } + + return null; +} + +function Dc(a, b) { + var c = {}; + c[a.toLowerCase()] = b.toLowerCase(); + c["Webkit" + a] = "webkit" + b; + c["Moz" + a] = "moz" + b; + return c; +} + +var Ec = { + animationend: Dc("Animation", "AnimationEnd"), + animationiteration: Dc("Animation", "AnimationIteration"), + animationstart: Dc("Animation", "AnimationStart"), + transitionend: Dc("Transition", "TransitionEnd") +}, + Fc = {}, + Gc = {}; +fa && (Gc = document.createElement("div").style, "AnimationEvent" in window || (delete Ec.animationend.animation, delete Ec.animationiteration.animation, delete Ec.animationstart.animation), "TransitionEvent" in window || delete Ec.transitionend.transition); + +function Hc(a) { + if (Fc[a]) return Fc[a]; + if (!Ec[a]) return a; + var b = Ec[a], + c; + + for (c in b) if (b.hasOwnProperty(c) && c in Gc) return Fc[a] = b[c]; + + return a; +} + +var Ic = Hc("animationend"), + Jc = Hc("animationiteration"), + Kc = Hc("animationstart"), + Lc = Hc("transitionend"), + Mc = new Map(), + Nc = new Map(), + Oc = ["abort", "abort", Ic, "animationEnd", Jc, "animationIteration", Kc, "animationStart", "canplay", "canPlay", "canplaythrough", "canPlayThrough", "durationchange", "durationChange", "emptied", "emptied", "encrypted", "encrypted", "ended", "ended", "error", "error", "gotpointercapture", "gotPointerCapture", "load", "load", "loadeddata", "loadedData", "loadedmetadata", "loadedMetadata", "loadstart", "loadStart", "lostpointercapture", "lostPointerCapture", "playing", "playing", "progress", "progress", "seeking", "seeking", "stalled", "stalled", "suspend", "suspend", "timeupdate", "timeUpdate", Lc, "transitionEnd", "waiting", "waiting"]; + +function Pc(a, b) { + for (var c = 0; c < a.length; c += 2) { + var d = a[c], + e = a[c + 1]; + e = "on" + (e[0].toUpperCase() + e.slice(1)); + Nc.set(d, b); + Mc.set(d, e); + da(e, [d]); + } +} + +var Qc = scheduler.unstable_now; +Qc(); + +scheduler.unstable_UserBlockingPriority; + scheduler.unstable_runWithPriority; + +function od(a) { + var b = a.keyCode; + "charCode" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b; + 10 === a && (a = 13); + return 32 <= a || 13 === a ? a : 0; +} + +function pd() { + return !0; +} + +function qd() { + return !1; +} + +function rd(a) { + function b(b, d, e, f, g) { + this._reactName = b; + this._targetInst = e; + this.type = d; + this.nativeEvent = f; + this.target = g; + this.currentTarget = null; + + for (var c in a) a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]); + + this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? pd : qd; + this.isPropagationStopped = qd; + return this; + } + + objectAssign(b.prototype, { + preventDefault: function () { + this.defaultPrevented = !0; + var a = this.nativeEvent; + a && (a.preventDefault ? a.preventDefault() : "unknown" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = pd); + }, + stopPropagation: function () { + var a = this.nativeEvent; + a && (a.stopPropagation ? a.stopPropagation() : "unknown" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = pd); + }, + persist: function () {}, + isPersistent: pd + }); + return b; +} + +var sd = { + eventPhase: 0, + bubbles: 0, + cancelable: 0, + timeStamp: function (a) { + return a.timeStamp || Date.now(); + }, + defaultPrevented: 0, + isTrusted: 0 +}; + rd(sd); + var ud = objectAssign({}, sd, { + view: 0, + detail: 0 +}); + rd(ud); + var wd, + xd, + yd, + Ad = objectAssign({}, ud, { + screenX: 0, + screenY: 0, + clientX: 0, + clientY: 0, + pageX: 0, + pageY: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + getModifierState: zd, + button: 0, + buttons: 0, + relatedTarget: function (a) { + return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget; + }, + movementX: function (a) { + if ("movementX" in a) return a.movementX; + a !== yd && (yd && "mousemove" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, yd = a); + return wd; + }, + movementY: function (a) { + return "movementY" in a ? a.movementY : xd; + } +}); + rd(Ad); + var Cd = objectAssign({}, Ad, { + dataTransfer: 0 +}); + rd(Cd); + var Ed = objectAssign({}, ud, { + relatedTarget: 0 +}); + rd(Ed); + var Gd = objectAssign({}, sd, { + animationName: 0, + elapsedTime: 0, + pseudoElement: 0 +}); + rd(Gd); + var Id = objectAssign({}, sd, { + clipboardData: function (a) { + return "clipboardData" in a ? a.clipboardData : window.clipboardData; + } +}); + rd(Id); + var Kd = objectAssign({}, sd, { + data: 0 +}); + rd(Kd); + var Md = { + Esc: "Escape", + Spacebar: " ", + Left: "ArrowLeft", + Up: "ArrowUp", + Right: "ArrowRight", + Down: "ArrowDown", + Del: "Delete", + Win: "OS", + Menu: "ContextMenu", + Apps: "ContextMenu", + Scroll: "ScrollLock", + MozPrintableKey: "Unidentified" +}, + Nd = { + 8: "Backspace", + 9: "Tab", + 12: "Clear", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 19: "Pause", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 45: "Insert", + 46: "Delete", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "NumLock", + 145: "ScrollLock", + 224: "Meta" +}, + Od = { + Alt: "altKey", + Control: "ctrlKey", + Meta: "metaKey", + Shift: "shiftKey" +}; + +function Pd(a) { + var b = this.nativeEvent; + return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1; +} + +function zd() { + return Pd; +} + +var Qd = objectAssign({}, ud, { + key: function (a) { + if (a.key) { + var b = Md[a.key] || a.key; + if ("Unidentified" !== b) return b; + } + + return "keypress" === a.type ? (a = od(a), 13 === a ? "Enter" : String.fromCharCode(a)) : "keydown" === a.type || "keyup" === a.type ? Nd[a.keyCode] || "Unidentified" : ""; + }, + code: 0, + location: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + repeat: 0, + locale: 0, + getModifierState: zd, + charCode: function (a) { + return "keypress" === a.type ? od(a) : 0; + }, + keyCode: function (a) { + return "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0; + }, + which: function (a) { + return "keypress" === a.type ? od(a) : "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0; + } +}); + rd(Qd); + var Sd = objectAssign({}, Ad, { + pointerId: 0, + width: 0, + height: 0, + pressure: 0, + tangentialPressure: 0, + tiltX: 0, + tiltY: 0, + twist: 0, + pointerType: 0, + isPrimary: 0 +}); + rd(Sd); + var Ud = objectAssign({}, ud, { + touches: 0, + targetTouches: 0, + changedTouches: 0, + altKey: 0, + metaKey: 0, + ctrlKey: 0, + shiftKey: 0, + getModifierState: zd +}); + rd(Ud); + var Wd = objectAssign({}, sd, { + propertyName: 0, + elapsedTime: 0, + pseudoElement: 0 +}); + rd(Wd); + var Yd = objectAssign({}, Ad, { + deltaX: function (a) { + return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0; + }, + deltaY: function (a) { + return "deltaY" in a ? a.deltaY : "wheelDeltaY" in a ? -a.wheelDeltaY : "wheelDelta" in a ? -a.wheelDelta : 0; + }, + deltaZ: 0, + deltaMode: 0 +}); + rd(Yd); + +if (fa) { + + if (fa) { + var ye = ("oninput" in document); + + if (!ye) { + var ze = document.createElement("div"); + ze.setAttribute("oninput", "return;"); + ye = "function" === typeof ze.oninput; + } + } +} + +Pc("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "), 0); +Pc("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "), 1); +Pc(Oc, 2); + +for (var Ve = "change selectionchange textInput compositionstart compositionend compositionupdate".split(" "), We = 0; We < Ve.length; We++) Nc.set(Ve[We], 0); + +ea("onMouseEnter", ["mouseout", "mouseover"]); +ea("onMouseLeave", ["mouseout", "mouseover"]); +ea("onPointerEnter", ["pointerout", "pointerover"]); +ea("onPointerLeave", ["pointerout", "pointerover"]); +da("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); +da("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); +da("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); +da("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); +da("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); +da("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); + +"_reactListening" + Math.random().toString(36).slice(2); + +function sf(a) { + a = a.previousSibling; + + for (var b = 0; a;) { + if (8 === a.nodeType) { + var c = a.data; + + if ("$" === c || "$!" === c || "$?" === c) { + if (0 === b) return a; + b--; + } else "/$" === c && b++; + } + + a = a.previousSibling; + } + + return null; +} + +var vf = Math.random().toString(36).slice(2), + wf = "__reactFiber$" + vf, + ff = "__reactContainer$" + vf; + +function wc(a) { + var b = a[wf]; + if (b) return b; + + for (var c = a.parentNode; c;) { + if (b = c[ff] || c[wf]) { + c = b.alternate; + if (null !== b.child || null !== c && null !== c.child) for (a = sf(a); null !== a;) { + if (c = a[wf]) return c; + a = sf(a); + } + return b; + } + + a = c; + c = a.parentNode; + } + + return null; +} + +var Lf = null, + Mf = null; + scheduler.unstable_runWithPriority; + scheduler.unstable_scheduleCallback; + scheduler.unstable_cancelCallback; + scheduler.unstable_shouldYield; + scheduler.unstable_requestPaint; + var Sf = scheduler.unstable_now; + scheduler.unstable_getCurrentPriorityLevel; + scheduler.unstable_ImmediatePriority; + scheduler.unstable_UserBlockingPriority; + scheduler.unstable_NormalPriority; + scheduler.unstable_LowPriority; + scheduler.unstable_IdlePriority; + Sf(); + +ra.ReactCurrentBatchConfig; + +new react.Component().refs; + +ra.ReactCurrentDispatcher; + ra.ReactCurrentBatchConfig; + +ra.ReactCurrentOwner; + +ra.ReactCurrentDispatcher; + ra.ReactCurrentOwner; + +function pk() { + return null; +} + +var wk = { + findFiberByHostInstance: wc, + bundleType: 0, + version: "17.0.1", + rendererPackageName: "react-dom" +}; +var xk = { + bundleType: wk.bundleType, + version: wk.version, + rendererPackageName: wk.rendererPackageName, + rendererConfig: wk.rendererConfig, + overrideHookState: null, + overrideHookStateDeletePath: null, + overrideHookStateRenamePath: null, + overrideProps: null, + overridePropsDeletePath: null, + overridePropsRenamePath: null, + setSuspenseHandler: null, + scheduleUpdate: null, + currentDispatcherRef: ra.ReactCurrentDispatcher, + findHostInstanceByFiber: function (a) { + a = cc(a); + return null === a ? null : a.stateNode; + }, + findFiberByHostInstance: wk.findFiberByHostInstance || pk, + findHostInstancesForRefresh: null, + scheduleRefresh: null, + scheduleRoot: null, + setRefreshHandler: null, + getCurrentFiber: null +}; + +if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { + var yk = __REACT_DEVTOOLS_GLOBAL_HOOK__; + if (!yk.isDisabled && yk.supportsFiber) try { + Lf = yk.inject(xk), Mf = yk; + } catch (a) {} +} + +/** @license React v0.20.2 + * scheduler-tracing.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var schedulerTracing_development = createCommonjsModule(function (module, exports) { + +{ + (function () { + + var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. + + var interactionIDCounter = 0; + var threadIDCounter = 0; // Set of currently traced interactions. + // Interactions "stack"– + // Meaning that newly traced interactions are appended to the previously active set. + // When an interaction goes out of scope, the previous set (if any) is restored. + + exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end. + + exports.__subscriberRef = null; + { + exports.__interactionsRef = { + current: new Set() + }; + exports.__subscriberRef = { + current: null + }; + } + + function unstable_clear(callback) { + var prevInteractions = exports.__interactionsRef.current; + exports.__interactionsRef.current = new Set(); + + try { + return callback(); + } finally { + exports.__interactionsRef.current = prevInteractions; + } + } + + function unstable_getCurrent() { + { + return exports.__interactionsRef.current; + } + } + + function unstable_getThreadID() { + return ++threadIDCounter; + } + + function unstable_trace(name, timestamp, callback) { + var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID; + var interaction = { + __count: 1, + id: interactionIDCounter++, + name: name, + timestamp: timestamp + }; + var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate. + // To do that, clone the current interactions. + // The previous set will be restored upon completion. + + var interactions = new Set(prevInteractions); + interactions.add(interaction); + exports.__interactionsRef.current = interactions; + var subscriber = exports.__subscriberRef.current; + var returnValue; + + try { + if (subscriber !== null) { + subscriber.onInteractionTraced(interaction); + } + } finally { + try { + if (subscriber !== null) { + subscriber.onWorkStarted(interactions, threadID); + } + } finally { + try { + returnValue = callback(); + } finally { + exports.__interactionsRef.current = prevInteractions; + + try { + if (subscriber !== null) { + subscriber.onWorkStopped(interactions, threadID); + } + } finally { + interaction.__count--; // If no async work was scheduled for this interaction, + // Notify subscribers that it's completed. + + if (subscriber !== null && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + } + } + } + } + + return returnValue; + } + + function unstable_wrap(callback) { + var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID; + var wrappedInteractions = exports.__interactionsRef.current; + var subscriber = exports.__subscriberRef.current; + + if (subscriber !== null) { + subscriber.onWorkScheduled(wrappedInteractions, threadID); + } // Update the pending async work count for the current interactions. + // Update after calling subscribers in case of error. + + + wrappedInteractions.forEach(function (interaction) { + interaction.__count++; + }); + var hasRun = false; + + function wrapped() { + var prevInteractions = exports.__interactionsRef.current; + exports.__interactionsRef.current = wrappedInteractions; + subscriber = exports.__subscriberRef.current; + + try { + var returnValue; + + try { + if (subscriber !== null) { + subscriber.onWorkStarted(wrappedInteractions, threadID); + } + } finally { + try { + returnValue = callback.apply(undefined, arguments); + } finally { + exports.__interactionsRef.current = prevInteractions; + + if (subscriber !== null) { + subscriber.onWorkStopped(wrappedInteractions, threadID); + } + } + } + + return returnValue; + } finally { + if (!hasRun) { + // We only expect a wrapped function to be executed once, + // But in the event that it's executed more than once– + // Only decrement the outstanding interaction counts once. + hasRun = true; // Update pending async counts for all wrapped interactions. + // If this was the last scheduled async work for any of them, + // Mark them as completed. + + wrappedInteractions.forEach(function (interaction) { + interaction.__count--; + + if (subscriber !== null && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + }); + } + } + } + + wrapped.cancel = function cancel() { + subscriber = exports.__subscriberRef.current; + + try { + if (subscriber !== null) { + subscriber.onWorkCanceled(wrappedInteractions, threadID); + } + } finally { + // Update pending async counts for all wrapped interactions. + // If this was the last scheduled async work for any of them, + // Mark them as completed. + wrappedInteractions.forEach(function (interaction) { + interaction.__count--; + + if (subscriber && interaction.__count === 0) { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } + }); + } + }; + + return wrapped; + } + + var subscribers = null; + { + subscribers = new Set(); + } + + function unstable_subscribe(subscriber) { + { + subscribers.add(subscriber); + + if (subscribers.size === 1) { + exports.__subscriberRef.current = { + onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted, + onInteractionTraced: onInteractionTraced, + onWorkCanceled: onWorkCanceled, + onWorkScheduled: onWorkScheduled, + onWorkStarted: onWorkStarted, + onWorkStopped: onWorkStopped + }; + } + } + } + + function unstable_unsubscribe(subscriber) { + { + subscribers.delete(subscriber); + + if (subscribers.size === 0) { + exports.__subscriberRef.current = null; + } + } + } + + function onInteractionTraced(interaction) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onInteractionTraced(interaction); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onInteractionScheduledWorkCompleted(interaction) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onInteractionScheduledWorkCompleted(interaction); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkScheduled(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkScheduled(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkStarted(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkStarted(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkStopped(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkStopped(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + function onWorkCanceled(interactions, threadID) { + var didCatchError = false; + var caughtError = null; + subscribers.forEach(function (subscriber) { + try { + subscriber.onWorkCanceled(interactions, threadID); + } catch (error) { + if (!didCatchError) { + didCatchError = true; + caughtError = error; + } + } + }); + + if (didCatchError) { + throw caughtError; + } + } + + exports.unstable_clear = unstable_clear; + exports.unstable_getCurrent = unstable_getCurrent; + exports.unstable_getThreadID = unstable_getThreadID; + exports.unstable_subscribe = unstable_subscribe; + exports.unstable_trace = unstable_trace; + exports.unstable_unsubscribe = unstable_unsubscribe; + exports.unstable_wrap = unstable_wrap; + })(); +} +}); + +var tracing = createCommonjsModule(function (module) { + +{ + module.exports = schedulerTracing_development; +} +}); + +/** @license React v17.0.1 + * react-dom.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var reactDom_development = createCommonjsModule(function (module, exports) { +{(function(){var React=react;var _assign=objectAssign;var Scheduler=scheduler;var tracing$1=tracing;var ReactSharedInternals=React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;// by calls to these methods by a Babel plugin. +// +// In PROD (or in packages without access to React internals), +// they are left as they are instead. +function warn(format){{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also +// update consoleWithStackDev.www.js as well. +{var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}var argsWithFormat=args.map(function(item){return ''+item;});// Careful: RN currently depends on this prefix +argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it +// breaks IE9: https://github.com/facebook/react/issues/13610 +// eslint-disable-next-line react-internal/no-production-logging +Function.prototype.apply.call(console[level],console,argsWithFormat);}}if(!React){{throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.");}}var FunctionComponent=0;var ClassComponent=1;var IndeterminateComponent=2;// Before we know whether it is function or class +var HostRoot=3;// Root of a host tree. Could be nested inside another node. +var HostPortal=4;// A subtree. Could be an entry point to a different renderer. +var HostComponent=5;var HostText=6;var Fragment=7;var Mode=8;var ContextConsumer=9;var ContextProvider=10;var ForwardRef=11;var Profiler=12;var SuspenseComponent=13;var MemoComponent=14;var SimpleMemoComponent=15;var LazyComponent=16;var IncompleteClassComponent=17;var DehydratedFragment=18;var SuspenseListComponent=19;var FundamentalComponent=20;var ScopeComponent=21;var Block=22;var OffscreenComponent=23;var LegacyHiddenComponent=24;// Filter certain DOM attributes (e.g. src, href) if their values are empty strings. +var enableProfilerTimer=true;// Record durations for commit and passive effects phases. +var enableFundamentalAPI=false;// Experimental Scope support. +var enableNewReconciler=false;// Errors that are thrown while unmounting (or after in the case of passive effects) +var warnAboutStringRefs=false;var allNativeEvents=new Set();/** + * Mapping from registration name to event name + */var registrationNameDependencies={};/** + * Mapping from lowercase registration names to the properly cased version, + * used to warn in the case of missing event handlers. Available + * only in true. + * @type {Object} + */var possibleRegistrationNames={};// Trust the developer to only use possibleRegistrationNames in true +function registerTwoPhaseEvent(registrationName,dependencies){registerDirectEvent(registrationName,dependencies);registerDirectEvent(registrationName+'Capture',dependencies);}function registerDirectEvent(registrationName,dependencies){{if(registrationNameDependencies[registrationName]){error('EventRegistry: More than one plugin attempted to publish the same '+'registration name, `%s`.',registrationName);}}registrationNameDependencies[registrationName]=dependencies;{var lowerCasedName=registrationName.toLowerCase();possibleRegistrationNames[lowerCasedName]=registrationName;if(registrationName==='onDoubleClick'){possibleRegistrationNames.ondblclick=registrationName;}}for(var i=0;i2&&(name[0]==='o'||name[0]==='O')&&(name[1]==='n'||name[1]==='N')){return true;}return false;}function shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag){if(propertyInfo!==null&&propertyInfo.type===RESERVED){return false;}switch(typeof value){case'function':// $FlowIssue symbol is perfectly valid here +case'symbol':// eslint-disable-line +return true;case'boolean':{if(isCustomComponentTag){return false;}if(propertyInfo!==null){return !propertyInfo.acceptsBooleans;}else {var prefix=name.toLowerCase().slice(0,5);return prefix!=='data-'&&prefix!=='aria-';}}default:return false;}}function shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag){if(value===null||typeof value==='undefined'){return true;}if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag)){return true;}if(isCustomComponentTag){return false;}if(propertyInfo!==null){switch(propertyInfo.type){case BOOLEAN:return !value;case OVERLOADED_BOOLEAN:return value===false;case NUMERIC:return isNaN(value);case POSITIVE_NUMERIC:return isNaN(value)||value<1;}}return false;}function getPropertyInfo(name){return properties.hasOwnProperty(name)?properties[name]:null;}function PropertyInfoRecord(name,type,mustUseProperty,attributeName,attributeNamespace,sanitizeURL,removeEmptyString){this.acceptsBooleans=type===BOOLEANISH_STRING||type===BOOLEAN||type===OVERLOADED_BOOLEAN;this.attributeName=attributeName;this.attributeNamespace=attributeNamespace;this.mustUseProperty=mustUseProperty;this.propertyName=name;this.type=type;this.sanitizeURL=sanitizeURL;this.removeEmptyString=removeEmptyString;}// When adding attributes to this list, be sure to also add them to +// the `possibleStandardNames` module to ensure casing and incorrect +// name warnings. +var properties={};// These props are reserved by React. They shouldn't be written to the DOM. +var reservedProps=['children','dangerouslySetInnerHTML',// TODO: This prevents the assignment of defaultValue to regular +// elements (not just inputs). Now that ReactDOMInput assigns to the +// defaultValue property -- do we need this? +'defaultValue','defaultChecked','innerHTML','suppressContentEditableWarning','suppressHydrationWarning','style'];reservedProps.forEach(function(name){properties[name]=new PropertyInfoRecord(name,RESERVED,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// A few React string attributes have a different name. +// This is a mapping from React prop names to the attribute names. +[['acceptCharset','accept-charset'],['className','class'],['htmlFor','for'],['httpEquiv','http-equiv']].forEach(function(_ref){var name=_ref[0],attributeName=_ref[1];properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are "enumerated" HTML attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +['contentEditable','draggable','spellCheck','value'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are "enumerated" SVG attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +// Since these are SVG attributes, their attribute names are case-sensitive. +['autoReverse','externalResourcesRequired','focusable','preserveAlpha'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML boolean attributes. +['allowFullScreen','async',// Note: there is a special case that prevents it from being written to the DOM +// on the client side because the browsers are inconsistent. Instead we call focus(). +'autoFocus','autoPlay','controls','default','defer','disabled','disablePictureInPicture','disableRemotePlayback','formNoValidate','hidden','loop','noModule','noValidate','open','playsInline','readOnly','required','reversed','scoped','seamless',// Microdata +'itemScope'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are the few React props that we set as DOM properties +// rather than attributes. These are all booleans. +['checked',// Note: `option.selected` is not updated if `select.multiple` is +// disabled with `removeAttribute`. We have special logic for handling this. +'multiple','muted','selected'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,true,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that are "overloaded booleans": they behave like +// booleans, but can also accept a string value. +['capture','download'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,OVERLOADED_BOOLEAN,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that must be positive numbers. +['cols','rows','size','span'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(name){properties[name]=new PropertyInfoRecord(name,POSITIVE_NUMERIC,false,// mustUseProperty +name,// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These are HTML attributes that must be numbers. +['rowSpan','start'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,NUMERIC,false,// mustUseProperty +name.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});var CAMELIZE=/[\-\:]([a-z])/g;var capitalize=function(token){return token[1].toUpperCase();};// This is a list of all SVG attributes that need special casing, namespacing, +// or boolean value assignment. Regular attributes that just accept strings +// and have the same names are omitted, just like in the HTML attribute filter. +// Some of these attributes can be hard to find. This list was created by +// scraping the MDN documentation. +['accent-height','alignment-baseline','arabic-form','baseline-shift','cap-height','clip-path','clip-rule','color-interpolation','color-interpolation-filters','color-profile','color-rendering','dominant-baseline','enable-background','fill-opacity','fill-rule','flood-color','flood-opacity','font-family','font-size','font-size-adjust','font-stretch','font-style','font-variant','font-weight','glyph-name','glyph-orientation-horizontal','glyph-orientation-vertical','horiz-adv-x','horiz-origin-x','image-rendering','letter-spacing','lighting-color','marker-end','marker-mid','marker-start','overline-position','overline-thickness','paint-order','panose-1','pointer-events','rendering-intent','shape-rendering','stop-color','stop-opacity','strikethrough-position','strikethrough-thickness','stroke-dasharray','stroke-dashoffset','stroke-linecap','stroke-linejoin','stroke-miterlimit','stroke-opacity','stroke-width','text-anchor','text-decoration','text-rendering','underline-position','underline-thickness','unicode-bidi','unicode-range','units-per-em','v-alphabetic','v-hanging','v-ideographic','v-mathematical','vector-effect','vert-adv-y','vert-origin-x','vert-origin-y','word-spacing','writing-mode','xmlns:xlink','x-height'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,null,// attributeNamespace +false,// sanitizeURL +false);});// String SVG attributes with the xlink namespace. +['xlink:actuate','xlink:arcrole','xlink:role','xlink:show','xlink:title','xlink:type'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,'http://www.w3.org/1999/xlink',false,// sanitizeURL +false);});// String SVG attributes with the xml namespace. +['xml:base','xml:lang','xml:space'// NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty +attributeName,'http://www.w3.org/XML/1998/namespace',false,// sanitizeURL +false);});// These attribute exists both in HTML and SVG. +// The attribute name is case-sensitive in SVG so we can't just use +// the React name like we do for attributes that exist only in HTML. +['tabIndex','crossOrigin'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty +attributeName.toLowerCase(),// attributeName +null,// attributeNamespace +false,// sanitizeURL +false);});// These attributes accept URLs. These must not allow javascript: URLS. +// These will also need to accept Trusted Types object in the future. +var xlinkHref='xlinkHref';properties[xlinkHref]=new PropertyInfoRecord('xlinkHref',STRING,false,// mustUseProperty +'xlink:href','http://www.w3.org/1999/xlink',true,// sanitizeURL +false);['src','href','action','formAction'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty +attributeName.toLowerCase(),// attributeName +null,// attributeNamespace +true,// sanitizeURL +true);});// and any newline or tab are filtered out as if they're not part of the URL. +// https://url.spec.whatwg.org/#url-parsing +// Tab or newline are defined as \r\n\t: +// https://infra.spec.whatwg.org/#ascii-tab-or-newline +// A C0 control is a code point in the range \u0000 NULL to \u001F +// INFORMATION SEPARATOR ONE, inclusive: +// https://infra.spec.whatwg.org/#c0-control-or-space +/* eslint-disable max-len */var isJavaScriptProtocol=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;var didWarn=false;function sanitizeURL(url){{if(!didWarn&&isJavaScriptProtocol.test(url)){didWarn=true;error('A future version of React will block javascript: URLs as a security precaution. '+'Use event handlers instead if you can. If you need to generate unsafe HTML try '+'using dangerouslySetInnerHTML instead. React was passed %s.',JSON.stringify(url));}}}/** + * Get the value for a property on a node. Only used in DEV for SSR validation. + * The "expected" argument is used as a hint of what the expected value is. + * Some properties have multiple equivalent values. + */function getValueForProperty(node,name,expected,propertyInfo){{if(propertyInfo.mustUseProperty){var propertyName=propertyInfo.propertyName;return node[propertyName];}else {if(propertyInfo.sanitizeURL){// If we haven't fully disabled javascript: URLs, and if +// the hydration is successful of a javascript: URL, we +// still want to warn on the client. +sanitizeURL(''+expected);}var attributeName=propertyInfo.attributeName;var stringValue=null;if(propertyInfo.type===OVERLOADED_BOOLEAN){if(node.hasAttribute(attributeName)){var value=node.getAttribute(attributeName);if(value===''){return true;}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return value;}if(value===''+expected){return expected;}return value;}}else if(node.hasAttribute(attributeName)){if(shouldRemoveAttribute(name,expected,propertyInfo,false)){// We had an attribute but shouldn't have had one, so read it +// for the error message. +return node.getAttribute(attributeName);}if(propertyInfo.type===BOOLEAN){// If this was a boolean, it doesn't matter what the value is +// the fact that we have it is the same as the expected. +return expected;}// Even if this property uses a namespace we use getAttribute +// because we assume its namespaced name is the same as our config. +// To use getAttributeNS we need the local name which we don't have +// in our config atm. +stringValue=node.getAttribute(attributeName);}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return stringValue===null?expected:stringValue;}else if(stringValue===''+expected){return expected;}else {return stringValue;}}}}/** + * Get the value for a attribute on a node. Only used in DEV for SSR validation. + * The third argument is used as a hint of what the expected value is. Some + * attributes have multiple equivalent values. + */function getValueForAttribute(node,name,expected){{if(!isAttributeNameSafe(name)){return;}// If the object is an opaque reference ID, it's expected that +// the next prop is different than the server value, so just return +// expected +if(isOpaqueHydratingObject(expected)){return expected;}if(!node.hasAttribute(name)){return expected===undefined?undefined:null;}var value=node.getAttribute(name);if(value===''+expected){return expected;}return value;}}/** + * Sets the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + * @param {*} value + */function setValueForProperty(node,name,value,isCustomComponentTag){var propertyInfo=getPropertyInfo(name);if(shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag)){return;}if(shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag)){value=null;}// If the prop isn't in the special list, treat it as a simple attribute. +if(isCustomComponentTag||propertyInfo===null){if(isAttributeNameSafe(name)){var _attributeName=name;if(value===null){node.removeAttribute(_attributeName);}else {node.setAttribute(_attributeName,''+value);}}return;}var mustUseProperty=propertyInfo.mustUseProperty;if(mustUseProperty){var propertyName=propertyInfo.propertyName;if(value===null){var type=propertyInfo.type;node[propertyName]=type===BOOLEAN?false:'';}else {// Contrary to `setAttribute`, object properties are properly +// `toString`ed by IE8/9. +node[propertyName]=value;}return;}// The rest are treated as attributes with special cases. +var attributeName=propertyInfo.attributeName,attributeNamespace=propertyInfo.attributeNamespace;if(value===null){node.removeAttribute(attributeName);}else {var _type=propertyInfo.type;var attributeValue;if(_type===BOOLEAN||_type===OVERLOADED_BOOLEAN&&value===true){// If attribute type is boolean, we know for sure it won't be an execution sink +// and we won't require Trusted Type here. +attributeValue='';}else {// `setAttribute` with objects becomes only `[object]` in IE8/9, +// ('' + value) makes it output the correct toString()-value. +{attributeValue=''+value;}if(propertyInfo.sanitizeURL){sanitizeURL(attributeValue.toString());}}if(attributeNamespace){node.setAttributeNS(attributeNamespace,attributeName,attributeValue);}else {node.setAttribute(attributeName,attributeValue);}}}// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var REACT_ELEMENT_TYPE=0xeac7;var REACT_PORTAL_TYPE=0xeaca;var REACT_FRAGMENT_TYPE=0xeacb;var REACT_STRICT_MODE_TYPE=0xeacc;var REACT_PROFILER_TYPE=0xead2;var REACT_PROVIDER_TYPE=0xeacd;var REACT_CONTEXT_TYPE=0xeace;var REACT_FORWARD_REF_TYPE=0xead0;var REACT_SUSPENSE_TYPE=0xead1;var REACT_SUSPENSE_LIST_TYPE=0xead8;var REACT_MEMO_TYPE=0xead3;var REACT_LAZY_TYPE=0xead4;var REACT_BLOCK_TYPE=0xead9;var REACT_SCOPE_TYPE=0xead7;var REACT_OPAQUE_ID_TYPE=0xeae0;var REACT_DEBUG_TRACING_MODE_TYPE=0xeae1;var REACT_OFFSCREEN_TYPE=0xeae2;var REACT_LEGACY_HIDDEN_TYPE=0xeae3;if(typeof Symbol==='function'&&Symbol.for){var symbolFor=Symbol.for;REACT_ELEMENT_TYPE=symbolFor('react.element');REACT_PORTAL_TYPE=symbolFor('react.portal');REACT_FRAGMENT_TYPE=symbolFor('react.fragment');REACT_STRICT_MODE_TYPE=symbolFor('react.strict_mode');REACT_PROFILER_TYPE=symbolFor('react.profiler');REACT_PROVIDER_TYPE=symbolFor('react.provider');REACT_CONTEXT_TYPE=symbolFor('react.context');REACT_FORWARD_REF_TYPE=symbolFor('react.forward_ref');REACT_SUSPENSE_TYPE=symbolFor('react.suspense');REACT_SUSPENSE_LIST_TYPE=symbolFor('react.suspense_list');REACT_MEMO_TYPE=symbolFor('react.memo');REACT_LAZY_TYPE=symbolFor('react.lazy');REACT_BLOCK_TYPE=symbolFor('react.block');symbolFor('react.server.block');symbolFor('react.fundamental');REACT_SCOPE_TYPE=symbolFor('react.scope');REACT_OPAQUE_ID_TYPE=symbolFor('react.opaque.id');REACT_DEBUG_TRACING_MODE_TYPE=symbolFor('react.debug_trace_mode');REACT_OFFSCREEN_TYPE=symbolFor('react.offscreen');REACT_LEGACY_HIDDEN_TYPE=symbolFor('react.legacy_hidden');}var MAYBE_ITERATOR_SYMBOL=typeof Symbol==='function'&&Symbol.iterator;var FAUX_ITERATOR_SYMBOL='@@iterator';function getIteratorFn(maybeIterable){if(maybeIterable===null||typeof maybeIterable!=='object'){return null;}var maybeIterator=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL];if(typeof maybeIterator==='function'){return maybeIterator;}return null;}// Helpers to patch console.logs to avoid logging during side-effect free +// replaying on render function. This currently only patches the object +// lazily which won't cover if the log function was extracted eagerly. +// We could also eagerly patch the method. +var disabledDepth=0;var prevLog;var prevInfo;var prevWarn;var prevError;var prevGroup;var prevGroupCollapsed;var prevGroupEnd;function disabledLog(){}disabledLog.__reactDisabledLog=true;function disableLogs(){{if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */prevLog=console.log;prevInfo=console.info;prevWarn=console.warn;prevError=console.error;prevGroup=console.group;prevGroupCollapsed=console.groupCollapsed;prevGroupEnd=console.groupEnd;// https://github.com/facebook/react/issues/19099 +var props={configurable:true,enumerable:true,value:disabledLog,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props});/* eslint-enable react-internal/no-production-logging */}disabledDepth++;}}function reenableLogs(){{disabledDepth--;if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */var props={configurable:true,enumerable:true,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{log:_assign({},props,{value:prevLog}),info:_assign({},props,{value:prevInfo}),warn:_assign({},props,{value:prevWarn}),error:_assign({},props,{value:prevError}),group:_assign({},props,{value:prevGroup}),groupCollapsed:_assign({},props,{value:prevGroupCollapsed}),groupEnd:_assign({},props,{value:prevGroupEnd})});/* eslint-enable react-internal/no-production-logging */}if(disabledDepth<0){error('disabledDepth fell below zero. '+'This is a bug in React. Please file an issue.');}}}var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher;var prefix;function describeBuiltInComponentFrame(name,source,ownerFn){{if(prefix===undefined){// Extract the VM specific prefix used by each line. +try{throw Error();}catch(x){var match=x.stack.trim().match(/\n( *(at )?)/);prefix=match&&match[1]||'';}}// We use the prefix to ensure our stacks line up with native stack frames. +return '\n'+prefix+name;}}var reentry=false;var componentFrameCache;{var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;componentFrameCache=new PossiblyWeakMap();}function describeNativeComponentFrame(fn,construct){// If something asked for a stack inside a fake render, it should get ignored. +if(!fn||reentry){return '';}{var frame=componentFrameCache.get(fn);if(frame!==undefined){return frame;}}var control;reentry=true;var previousPrepareStackTrace=Error.prepareStackTrace;// $FlowFixMe It does accept undefined. +Error.prepareStackTrace=undefined;var previousDispatcher;{previousDispatcher=ReactCurrentDispatcher.current;// Set the dispatcher in DEV because this might be call in the render function +// for warnings. +ReactCurrentDispatcher.current=null;disableLogs();}try{// This should throw. +if(construct){// Something should be setting the props in the constructor. +var Fake=function(){throw Error();};// $FlowFixMe +Object.defineProperty(Fake.prototype,'props',{set:function(){// We use a throwing setter instead of frozen or non-writable props +// because that won't throw in a non-strict mode function. +throw Error();}});if(typeof Reflect==='object'&&Reflect.construct){// We construct a different control for this case to include any extra +// frames added by the construct call. +try{Reflect.construct(Fake,[]);}catch(x){control=x;}Reflect.construct(fn,[],Fake);}else {try{Fake.call();}catch(x){control=x;}fn.call(Fake.prototype);}}else {try{throw Error();}catch(x){control=x;}fn();}}catch(sample){// This is inlined manually because closure doesn't do it for us. +if(sample&&control&&typeof sample.stack==='string'){// This extracts the first frame from the sample that isn't also in the control. +// Skipping one frame that we assume is the frame that calls the two. +var sampleLines=sample.stack.split('\n');var controlLines=control.stack.split('\n');var s=sampleLines.length-1;var c=controlLines.length-1;while(s>=1&&c>=0&&sampleLines[s]!==controlLines[c]){// We expect at least one stack frame to be shared. +// Typically this will be the root most one. However, stack frames may be +// cut off due to maximum stack limits. In this case, one maybe cut off +// earlier than the other. We assume that the sample is longer or the same +// and there for cut off earlier. So we should find the root most frame in +// the sample somewhere in the control. +c--;}for(;s>=1&&c>=0;s--,c--){// Next we find the first one that isn't the same which should be the +// frame that called our sample function and the control. +if(sampleLines[s]!==controlLines[c]){// In V8, the first line is describing the message but other VMs don't. +// If we're about to return the first line, and the control is also on the same +// line, that's a pretty good indicator that our sample threw at same line as +// the control. I.e. before we entered the sample frame. So we ignore this result. +// This can happen if you passed a class to function component, or non-function. +if(s!==1||c!==1){do{s--;c--;// We may still have similar intermediate frames from the construct call. +// The next one that isn't the same should be our match though. +if(c<0||sampleLines[s]!==controlLines[c]){// V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. +var _frame='\n'+sampleLines[s].replace(' at new ',' at ');{if(typeof fn==='function'){componentFrameCache.set(fn,_frame);}}// Return the line we found. +return _frame;}}while(s>=1&&c>=0);}break;}}}}finally{reentry=false;{ReactCurrentDispatcher.current=previousDispatcher;reenableLogs();}Error.prepareStackTrace=previousPrepareStackTrace;}// Fallback to just using the name if we couldn't make it throw. +var name=fn?fn.displayName||fn.name:'';var syntheticFrame=name?describeBuiltInComponentFrame(name):'';{if(typeof fn==='function'){componentFrameCache.set(fn,syntheticFrame);}}return syntheticFrame;}function describeClassComponentFrame(ctor,source,ownerFn){{return describeNativeComponentFrame(ctor,true);}}function describeFunctionComponentFrame(fn,source,ownerFn){{return describeNativeComponentFrame(fn,false);}}function shouldConstruct(Component){var prototype=Component.prototype;return !!(prototype&&prototype.isReactComponent);}function describeUnknownElementTypeFrameInDEV(type,source,ownerFn){if(type==null){return '';}if(typeof type==='function'){{return describeNativeComponentFrame(type,shouldConstruct(type));}}if(typeof type==='string'){return describeBuiltInComponentFrame(type);}switch(type){case REACT_SUSPENSE_TYPE:return describeBuiltInComponentFrame('Suspense');case REACT_SUSPENSE_LIST_TYPE:return describeBuiltInComponentFrame('SuspenseList');}if(typeof type==='object'){switch(type.$$typeof){case REACT_FORWARD_REF_TYPE:return describeFunctionComponentFrame(type.render);case REACT_MEMO_TYPE:// Memo may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(type.type,source,ownerFn);case REACT_BLOCK_TYPE:return describeFunctionComponentFrame(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{// Lazy may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(init(payload),source,ownerFn);}catch(x){}}}}return '';}function describeFiber(fiber){fiber._debugOwner?fiber._debugOwner.type:null;fiber._debugSource;switch(fiber.tag){case HostComponent:return describeBuiltInComponentFrame(fiber.type);case LazyComponent:return describeBuiltInComponentFrame('Lazy');case SuspenseComponent:return describeBuiltInComponentFrame('Suspense');case SuspenseListComponent:return describeBuiltInComponentFrame('SuspenseList');case FunctionComponent:case IndeterminateComponent:case SimpleMemoComponent:return describeFunctionComponentFrame(fiber.type);case ForwardRef:return describeFunctionComponentFrame(fiber.type.render);case Block:return describeFunctionComponentFrame(fiber.type._render);case ClassComponent:return describeClassComponentFrame(fiber.type);default:return '';}}function getStackByFiberInDevAndProd(workInProgress){try{var info='';var node=workInProgress;do{info+=describeFiber(node);node=node.return;}while(node);return info;}catch(x){return '\nError generating stack: '+x.message+'\n'+x.stack;}}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getContextName(type){return type.displayName||'Context';}function getComponentName(type){if(type==null){// Host root, text node or just invalid type. +return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case REACT_FRAGMENT_TYPE:return 'Fragment';case REACT_PORTAL_TYPE:return 'Portal';case REACT_PROFILER_TYPE:return 'Profiler';case REACT_STRICT_MODE_TYPE:return 'StrictMode';case REACT_SUSPENSE_TYPE:return 'Suspense';case REACT_SUSPENSE_LIST_TYPE:return 'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:var context=type;return getContextName(context)+'.Consumer';case REACT_PROVIDER_TYPE:var provider=type;return getContextName(provider._context)+'.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{return getComponentName(init(payload));}catch(x){return null;}}}}return null;}var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var current=null;var isRendering=false;function getCurrentFiberOwnerNameInDevOrNull(){{if(current===null){return null;}var owner=current._debugOwner;if(owner!==null&&typeof owner!=='undefined'){return getComponentName(owner.type);}}return null;}function getCurrentFiberStackInDev(){{if(current===null){return '';}// Safe because if current fiber exists, we are reconciling, +// and it is guaranteed to be the work-in-progress version. +return getStackByFiberInDevAndProd(current);}}function resetCurrentFiber(){{ReactDebugCurrentFrame.getCurrentStack=null;current=null;isRendering=false;}}function setCurrentFiber(fiber){{ReactDebugCurrentFrame.getCurrentStack=getCurrentFiberStackInDev;current=fiber;isRendering=false;}}function setIsRendering(rendering){{isRendering=rendering;}}function getIsRendering(){{return isRendering;}}// Flow does not allow string concatenation of most non-string types. To work +// around this limitation, we use an opaque type that can only be obtained by +// passing the value through getToStringValue first. +function toString(value){return ''+value;}function getToStringValue(value){switch(typeof value){case'boolean':case'number':case'object':case'string':case'undefined':return value;default:// function, symbol are assigned as empty strings +return '';}}var hasReadOnlyValue={button:true,checkbox:true,image:true,hidden:true,radio:true,reset:true,submit:true};function checkControlledValueProps(tagName,props){{if(!(hasReadOnlyValue[props.type]||props.onChange||props.onInput||props.readOnly||props.disabled||props.value==null)){error('You provided a `value` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultValue`. Otherwise, '+'set either `onChange` or `readOnly`.');}if(!(props.onChange||props.readOnly||props.disabled||props.checked==null)){error('You provided a `checked` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultChecked`. Otherwise, '+'set either `onChange` or `readOnly`.');}}}function isCheckable(elem){var type=elem.type;var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(type==='checkbox'||type==='radio');}function getTracker(node){return node._valueTracker;}function detachTracker(node){node._valueTracker=null;}function getValueFromNode(node){var value='';if(!node){return value;}if(isCheckable(node)){value=node.checked?'true':'false';}else {value=node.value;}return value;}function trackValueOnNode(node){var valueField=isCheckable(node)?'checked':'value';var descriptor=Object.getOwnPropertyDescriptor(node.constructor.prototype,valueField);var currentValue=''+node[valueField];// if someone has already defined a value or Safari, then bail +// and don't track value will cause over reporting of changes, +// but it's better then a hard failure +// (needed for certain tests that spyOn input values and Safari) +if(node.hasOwnProperty(valueField)||typeof descriptor==='undefined'||typeof descriptor.get!=='function'||typeof descriptor.set!=='function'){return;}var get=descriptor.get,set=descriptor.set;Object.defineProperty(node,valueField,{configurable:true,get:function(){return get.call(this);},set:function(value){currentValue=''+value;set.call(this,value);}});// We could've passed this the first time +// but it triggers a bug in IE11 and Edge 14/15. +// Calling defineProperty() again should be equivalent. +// https://github.com/facebook/react/issues/11768 +Object.defineProperty(node,valueField,{enumerable:descriptor.enumerable});var tracker={getValue:function(){return currentValue;},setValue:function(value){currentValue=''+value;},stopTracking:function(){detachTracker(node);delete node[valueField];}};return tracker;}function track(node){if(getTracker(node)){return;}// TODO: Once it's just Fiber we can move this to node._wrapperState +node._valueTracker=trackValueOnNode(node);}function updateValueIfChanged(node){if(!node){return false;}var tracker=getTracker(node);// if there is no tracker at this point it's unlikely +// that trying again will succeed +if(!tracker){return true;}var lastValue=tracker.getValue();var nextValue=getValueFromNode(node);if(nextValue!==lastValue){tracker.setValue(nextValue);return true;}return false;}function getActiveElement(doc){doc=doc||(typeof document!=='undefined'?document:undefined);if(typeof doc==='undefined'){return null;}try{return doc.activeElement||doc.body;}catch(e){return doc.body;}}var didWarnValueDefaultValue=false;var didWarnCheckedDefaultChecked=false;var didWarnControlledToUncontrolled=false;var didWarnUncontrolledToControlled=false;function isControlled(props){var usesChecked=props.type==='checkbox'||props.type==='radio';return usesChecked?props.checked!=null:props.value!=null;}/** + * Implements an host component that allows setting these optional + * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. + * + * If `checked` or `value` are not supplied (or null/undefined), user actions + * that affect the checked state or value will trigger updates to the element. + * + * If they are supplied (and not null/undefined), the rendered element will not + * trigger updates to the element. Instead, the props must change in order for + * the rendered element to be updated. + * + * The rendered element will be initialized as unchecked (or `defaultChecked`) + * with an empty value (or `defaultValue`). + * + * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html + */function getHostProps(element,props){var node=element;var checked=props.checked;var hostProps=_assign({},props,{defaultChecked:undefined,defaultValue:undefined,value:undefined,checked:checked!=null?checked:node._wrapperState.initialChecked});return hostProps;}function initWrapperState(element,props){{checkControlledValueProps('input',props);if(props.checked!==undefined&&props.defaultChecked!==undefined&&!didWarnCheckedDefaultChecked){error('%s contains an input of type %s with both checked and defaultChecked props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the checked prop, or the defaultChecked prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://reactjs.org/link/controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnCheckedDefaultChecked=true;}if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue){error('%s contains an input of type %s with both value and defaultValue props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the value prop, or the defaultValue prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://reactjs.org/link/controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnValueDefaultValue=true;}}var node=element;var defaultValue=props.defaultValue==null?'':props.defaultValue;node._wrapperState={initialChecked:props.checked!=null?props.checked:props.defaultChecked,initialValue:getToStringValue(props.value!=null?props.value:defaultValue),controlled:isControlled(props)};}function updateChecked(element,props){var node=element;var checked=props.checked;if(checked!=null){setValueForProperty(node,'checked',checked,false);}}function updateWrapper(element,props){var node=element;{var controlled=isControlled(props);if(!node._wrapperState.controlled&&controlled&&!didWarnUncontrolledToControlled){error('A component is changing an uncontrolled input to be controlled. '+'This is likely caused by the value changing from undefined to '+'a defined value, which should not happen. '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');didWarnUncontrolledToControlled=true;}if(node._wrapperState.controlled&&!controlled&&!didWarnControlledToUncontrolled){error('A component is changing a controlled input to be uncontrolled. '+'This is likely caused by the value changing from a defined to '+'undefined, which should not happen. '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');didWarnControlledToUncontrolled=true;}}updateChecked(element,props);var value=getToStringValue(props.value);var type=props.type;if(value!=null){if(type==='number'){if(value===0&&node.value===''||// We explicitly want to coerce to number here if possible. +// eslint-disable-next-line +node.value!=value){node.value=toString(value);}}else if(node.value!==toString(value)){node.value=toString(value);}}else if(type==='submit'||type==='reset'){// Submit/reset inputs need the attribute removed completely to avoid +// blank-text buttons. +node.removeAttribute('value');return;}{// When syncing the value attribute, the value comes from a cascade of +// properties: +// 1. The value React property +// 2. The defaultValue React property +// 3. Otherwise there should be no change +if(props.hasOwnProperty('value')){setDefaultValue(node,props.type,value);}else if(props.hasOwnProperty('defaultValue')){setDefaultValue(node,props.type,getToStringValue(props.defaultValue));}}{// When syncing the checked attribute, it only changes when it needs +// to be removed, such as transitioning from a checkbox into a text input +if(props.checked==null&&props.defaultChecked!=null){node.defaultChecked=!!props.defaultChecked;}}}function postMountWrapper(element,props,isHydrating){var node=element;// Do not assign value if it is already set. This prevents user text input +// from being lost during SSR hydration. +if(props.hasOwnProperty('value')||props.hasOwnProperty('defaultValue')){var type=props.type;var isButton=type==='submit'||type==='reset';// Avoid setting value attribute on submit/reset inputs as it overrides the +// default value provided by the browser. See: #12872 +if(isButton&&(props.value===undefined||props.value===null)){return;}var initialValue=toString(node._wrapperState.initialValue);// Do not assign value if it is already set. This prevents user text input +// from being lost during SSR hydration. +if(!isHydrating){{// When syncing the value attribute, the value property should use +// the wrapperState._initialValue property. This uses: +// +// 1. The value React property when present +// 2. The defaultValue React property when present +// 3. An empty string +if(initialValue!==node.value){node.value=initialValue;}}}{// Otherwise, the value attribute is synchronized to the property, +// so we assign defaultValue to the same thing as the value property +// assignment step above. +node.defaultValue=initialValue;}}// Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug +// this is needed to work around a chrome bug where setting defaultChecked +// will sometimes influence the value of checked (even after detachment). +// Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 +// We need to temporarily unset name to avoid disrupting radio button groups. +var name=node.name;if(name!==''){node.name='';}{// When syncing the checked attribute, both the checked property and +// attribute are assigned at the same time using defaultChecked. This uses: +// +// 1. The checked React property when present +// 2. The defaultChecked React property when present +// 3. Otherwise, false +node.defaultChecked=!node.defaultChecked;node.defaultChecked=!!node._wrapperState.initialChecked;}if(name!==''){node.name=name;}}function restoreControlledState(element,props){var node=element;updateWrapper(node,props);updateNamedCousins(node,props);}function updateNamedCousins(rootNode,props){var name=props.name;if(props.type==='radio'&&name!=null){var queryRoot=rootNode;while(queryRoot.parentNode){queryRoot=queryRoot.parentNode;}// If `rootNode.form` was non-null, then we could try `form.elements`, +// but that sometimes behaves strangely in IE8. We could also try using +// `form.getElementsByName`, but that will only return direct children +// and won't include inputs that use the HTML5 `form=` attribute. Since +// the input might not even be in a form. It might not even be in the +// document. Let's just use the local `querySelectorAll` to ensure we don't +// miss anything. +var group=queryRoot.querySelectorAll('input[name='+JSON.stringify(''+name)+'][type="radio"]');for(var i=0;i is not a valid email address". +// +// Here we check to see if the defaultValue has actually changed, avoiding these problems +// when the user is inputting text +// +// https://github.com/facebook/react/issues/7253 +function setDefaultValue(node,type,value){if(// Focused number inputs synchronize on blur. See ChangeEventPlugin.js +type!=='number'||getActiveElement(node.ownerDocument)!==node){if(value==null){node.defaultValue=toString(node._wrapperState.initialValue);}else if(node.defaultValue!==toString(value)){node.defaultValue=toString(value);}}}var didWarnSelectedSetOnOption=false;var didWarnInvalidChild=false;function flattenChildren(children){var content='';// Flatten children. We'll warn if they are invalid +// during validateProps() which runs for hydration too. +// Note that this would throw on non-element objects. +// Elements are stringified (which is normally irrelevant +// but matters for ). +React.Children.forEach(children,function(child){if(child==null){return;}content+=child;// Note: we don't warn about invalid children here. +// Instead, this is done separately below so that +// it happens during the hydration code path too. +});return content;}/** + * Implements an