Delete SwarmUI
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- SwarmUI/.dockerignore +0 -21
- SwarmUI/.gitattributes +0 -4
- SwarmUI/.gitignore +0 -27
- SwarmUI/CONTRIBUTING.md +0 -24
- SwarmUI/Data/Backends.fds +0 -32
- SwarmUI/Data/Roles.fds +0 -427
- SwarmUI/Data/Settings.fds +0 -397
- SwarmUI/Data/Users-log.ldb +0 -0
- SwarmUI/Data/Users.ldb +0 -0
- SwarmUI/Data/comfy-auto-model.yaml +0 -51
- SwarmUI/LICENSE.txt +0 -21
- SwarmUI/Models/Lora/model_metadata.ldb +0 -0
- SwarmUI/Models/Stable-Diffusion/Flux/model_metadata.ldb +0 -0
- SwarmUI/Models/Stable-Diffusion/OfficialStableDiffusion/model_metadata.ldb +0 -0
- SwarmUI/Models/VAE/model_metadata.ldb +0 -0
- SwarmUI/Models/clip_vision/model_metadata.ldb +0 -0
- SwarmUI/Models/clip_vision/sigclip_vision_patch14_384.safetensors +0 -3
- SwarmUI/Models/diffusion_models/model_metadata.ldb +0 -0
- SwarmUI/Models/style_models/flux1-redux-dev.safetensors +0 -3
- SwarmUI/Models/unet/model_metadata.ldb +0 -0
- SwarmUI/Models/upscale_models/4x_NMKD-Siax_200k.pth +0 -3
- SwarmUI/Models/vae/ae.safetensors +0 -3
- SwarmUI/Models/yolov8/face_yolov9c.pt +0 -3
- SwarmUI/Models/yolov8/man_face.pt +0 -3
- SwarmUI/Models/yolov8/woman_face.pt +0 -3
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_4.metadata.js +0 -25
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_4.png +0 -3
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_5.metadata.js +0 -25
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_5.png +0 -3
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_6.metadata.js +0 -25
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_6.png +0 -3
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/bootstrap.bundle.min.js +0 -6
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/bootstrap.min.css +0 -0
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/data.js +0 -58
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/image_metadata.ldb +0 -0
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/index.html +0 -132
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/jquery.min.js +0 -2
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/jsgif.js +0 -1385
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/placeholder.png +0 -0
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/proc.js +0 -1118
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/styles-user.css +0 -3
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/styles.css +0 -155
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/swarm_save_config.json +0 -20
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/swarmui_gridgen_local.js +0 -47
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/bootstrap.bundle.min.js +0 -6
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/bootstrap.min.css +0 -0
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/data.js +0 -58
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/image_metadata.ldb +0 -0
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/index.html +0 -132
- SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/jquery.min.js +0 -2
SwarmUI/.dockerignore
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
# C#
|
| 2 |
-
bin/
|
| 3 |
-
obj/
|
| 4 |
-
.vs/
|
| 5 |
-
.vscode/
|
| 6 |
-
*.user
|
| 7 |
-
*.suo
|
| 8 |
-
Properties/
|
| 9 |
-
|
| 10 |
-
# This project
|
| 11 |
-
Output/
|
| 12 |
-
Data/
|
| 13 |
-
Models/
|
| 14 |
-
tmp/
|
| 15 |
-
dlbackend/
|
| 16 |
-
|
| 17 |
-
# Python
|
| 18 |
-
__pycache__/
|
| 19 |
-
venv/
|
| 20 |
-
*.pth
|
| 21 |
-
*.safetensors
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/.gitattributes
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
*.sh text eol=lf
|
| 2 |
-
Dockerfile text eol=lf
|
| 3 |
-
*.docker text eol=lf
|
| 4 |
-
.dockerignore text eol=lf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/.gitignore
DELETED
|
@@ -1,27 +0,0 @@
|
|
| 1 |
-
# C# and related tools
|
| 2 |
-
bin/
|
| 3 |
-
obj/
|
| 4 |
-
.vs/
|
| 5 |
-
.vscode/
|
| 6 |
-
.idea/
|
| 7 |
-
*.user
|
| 8 |
-
*.suo
|
| 9 |
-
Properties/
|
| 10 |
-
.dotnet/
|
| 11 |
-
.aspnet/
|
| 12 |
-
.local/
|
| 13 |
-
|
| 14 |
-
# This project
|
| 15 |
-
/Output
|
| 16 |
-
/Data
|
| 17 |
-
/Models
|
| 18 |
-
tmp/
|
| 19 |
-
/src/Extensions
|
| 20 |
-
/dlbackend
|
| 21 |
-
*.debug
|
| 22 |
-
custom-launch-docker.sh
|
| 23 |
-
|
| 24 |
-
# Python
|
| 25 |
-
__pycache__/
|
| 26 |
-
venv/
|
| 27 |
-
*.pth
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/CONTRIBUTING.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
| 1 |
-
# Contributing to SwarmUI
|
| 2 |
-
|
| 3 |
-
Please open an Issue or Discussion, or ask on Discord before opening a pull request, to make sure your work doesn't overlap with others.
|
| 4 |
-
|
| 5 |
-
(TODO: More general contributing info)
|
| 6 |
-
|
| 7 |
-
## Languages
|
| 8 |
-
|
| 9 |
-
Want to help translate Swarm into another language?
|
| 10 |
-
|
| 11 |
-
- First: you're going to have to speak English. The English text is the "one true root" language that all other languages are derived from, it would be problematic to translate a translation.
|
| 12 |
-
- Are you just helping improve an existing language?
|
| 13 |
-
- Great! Just edit the file in `languages/(language-code).json` and improve the translations included
|
| 14 |
-
- Do you want to add a new language?
|
| 15 |
-
- See example commit here: https://github.com/mcmonkeyprojects/SwarmUI/commit/20fd27a20127b6529a2837eb838a0cfae80c20b8
|
| 16 |
-
- In short: copy/paste `languages/en.json` to `languages/(your-code).json`, fill out the info at the top, and start translating keys.
|
| 17 |
-
- Also add `src/wwwroot/imgs/flags/(your-code).jpg` as a small icon image of a flag that represents the language.
|
| 18 |
-
- You can use https://github.com/mcmonkeyprojects/translate-tool to fill out any keys you can't be bothered filling in yourself with automatic AI-powered translation
|
| 19 |
-
- Are you adding new translatable keys?
|
| 20 |
-
- I use the hidden webconsole call `debugSubmitTranslatables()` to generate `languages/en.debug` which contains a raw key list, and then use `--add-json` to add it in with the translate tool.
|
| 21 |
-
|
| 22 |
-
# Legal
|
| 23 |
-
|
| 24 |
-
By submitting a contribution to this repo, you agree to grant a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to Alex "mcmonkey" Goodwin to use, copy, modify, and distribute your contribution under the terms of the MIT License, view [LICENSE.txt](/LICENSE.txt) for details, and under any future license we may change to.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Data/Backends.fds
DELETED
|
@@ -1,32 +0,0 @@
|
|
| 1 |
-
0:
|
| 2 |
-
type: comfyui_selfstart
|
| 3 |
-
title: ComfyUI Self-Starting
|
| 4 |
-
enabled: true
|
| 5 |
-
settings:
|
| 6 |
-
#The location of the 'main.py' file. Can be an absolute or relative path, but must end with 'main.py'.
|
| 7 |
-
#If you used the installer, this should be 'dlbackend/comfy/ComfyUI/main.py'.
|
| 8 |
-
StartScript: dlbackend/ComfyUI/main.py
|
| 9 |
-
#Any arguments to include in the launch script.
|
| 10 |
-
ExtraArgs: --fast
|
| 11 |
-
#If unchecked, the system will automatically add some relevant arguments to the comfy launch. If checked, automatic args (other than port) won't be added.
|
| 12 |
-
DisableInternalArgs: false
|
| 13 |
-
#Whether the Comfy backend should automatically update itself during launch.
|
| 14 |
-
#You can update every launch, never update automatically, or force-update (bypasses some common git issues).
|
| 15 |
-
AutoUpdate: true
|
| 16 |
-
#Which version of the ComfyUI frontend to enable.
|
| 17 |
-
#'Latest' uses the latest version available (including dev commits).
|
| 18 |
-
#'None' uses whatever is baked into ComfyUI itself.
|
| 19 |
-
#'Latest Swarm Validated' uses the latest version that Swarm has been tested and confirmed to work with.
|
| 20 |
-
#'Legacy' uses the pre-September-2024 legacy UI.
|
| 21 |
-
FrontendVersion: LatestSwarmValidated
|
| 22 |
-
#If checked, tells Comfy to generate image previews. If unchecked, previews will not be generated, and images won't show up until they're done.
|
| 23 |
-
EnablePreviews: true
|
| 24 |
-
#Which GPU to use, if multiple are available.
|
| 25 |
-
#Should be a single number, like '0'.
|
| 26 |
-
#You can use syntax like '0,1' to provide multiple GPUs to one backend (only applicable if you have custom nodes that can take advantage of this.)
|
| 27 |
-
GPU_ID: 0
|
| 28 |
-
#How many extra requests may queue up on this backend while one is processing.
|
| 29 |
-
OverQueue: 1
|
| 30 |
-
#If checked, if the backend crashes it will automatically restart.
|
| 31 |
-
#If false, if the backend crashes it will sit in an errored state until manually restarted.
|
| 32 |
-
AutoRestart: true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Data/Roles.fds
DELETED
|
@@ -1,427 +0,0 @@
|
|
| 1 |
-
owner:
|
| 2 |
-
#How many directories deep a user's custom OutPath can be.
|
| 3 |
-
#Default is 5.
|
| 4 |
-
#This is just a minor protection to avoid filesystem corruption. Higher values are perfectly fine in most cases.
|
| 5 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 6 |
-
MaxOutPathDepth: 5
|
| 7 |
-
#What models are allowed, as a list of prefixes.
|
| 8 |
-
#For example 'sdxl/' allows only models in the SDXL folder.
|
| 9 |
-
#Or, 'sdxl/,flux/' allows models in the SDXL or Flux folders.
|
| 10 |
-
#If empty, no whitelist logic is applied.
|
| 11 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 12 |
-
#This stacks between roles, roles can add whitelist entries together.
|
| 13 |
-
ModelWhitelist:
|
| 14 |
-
#What models are forbidden, as a list of prefixes.
|
| 15 |
-
#For example 'sdxl/' forbids models in the SDXL folder.
|
| 16 |
-
#Or, 'sdxl/,flux/' forbids models in the SDXL or Flux folders.
|
| 17 |
-
#If empty, no blacklist logic is applied.
|
| 18 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 19 |
-
#This stacks between roles, roles can add blacklist entries together.
|
| 20 |
-
ModelBlacklist:
|
| 21 |
-
#Generic permission flags. '*' means all (admin).
|
| 22 |
-
#Default is all.
|
| 23 |
-
PermissionFlags:
|
| 24 |
-
- *
|
| 25 |
-
- shutdown
|
| 26 |
-
- edit_wildcards
|
| 27 |
-
- comfy_backend_generate
|
| 28 |
-
- gridgen_read_grids
|
| 29 |
-
- reset_metadata
|
| 30 |
-
- read_user_settings
|
| 31 |
-
- toggle_backends
|
| 32 |
-
- add_remove_backends
|
| 33 |
-
- read_server_info_panels
|
| 34 |
-
- comfy_direct_calls
|
| 35 |
-
- param_backend_type
|
| 36 |
-
- fundamental_generate_tab_access
|
| 37 |
-
- comfy_dynamic_custom_workflows
|
| 38 |
-
- edit_user_settings
|
| 39 |
-
- extra_loras
|
| 40 |
-
- restart_backends
|
| 41 |
-
- pickle2safetensors
|
| 42 |
-
- user_delete_image
|
| 43 |
-
- edit_server_settings
|
| 44 |
-
- local_image_folder
|
| 45 |
-
- view_server_tab
|
| 46 |
-
- control_mem_clean
|
| 47 |
-
- gridgen_generate_grids
|
| 48 |
-
- use_tokenizer
|
| 49 |
-
- restart
|
| 50 |
-
- comfy_stored_custom_workflows
|
| 51 |
-
- view_image_history
|
| 52 |
-
- view_others_outputs
|
| 53 |
-
- edit_backends
|
| 54 |
-
- manage_extensions
|
| 55 |
-
- comfy_read_workflows
|
| 56 |
-
- user_star_images
|
| 57 |
-
- download_models
|
| 58 |
-
- fundamental_model_access
|
| 59 |
-
- server_debug_message
|
| 60 |
-
- admin_debug
|
| 61 |
-
- gridgen_save_grids
|
| 62 |
-
- manage_presets
|
| 63 |
-
- edit_params
|
| 64 |
-
- model_params
|
| 65 |
-
- edit_model_metadata
|
| 66 |
-
- param_controlnet
|
| 67 |
-
- param_backend_id
|
| 68 |
-
- create_tensorrt
|
| 69 |
-
- view_logs
|
| 70 |
-
- basic_image_generation
|
| 71 |
-
- param_video
|
| 72 |
-
- comfy_edit_workflows
|
| 73 |
-
- configure_roles
|
| 74 |
-
- manage_users
|
| 75 |
-
- load_models_now
|
| 76 |
-
- install
|
| 77 |
-
- read_server_settings
|
| 78 |
-
- view_backends_list
|
| 79 |
-
- install_features
|
| 80 |
-
- control_model_refresh
|
| 81 |
-
- imagebatcher_use_image_batcher
|
| 82 |
-
#How many images this user can have actively generating at once.
|
| 83 |
-
#Default is 32.
|
| 84 |
-
#This is naturally sub-limited by the number of available backends.
|
| 85 |
-
#This is a protection for many-backend servers, to guarantee one user cannot steal all backends at once.
|
| 86 |
-
#You can set this to a very low value if you have few backends but many users.
|
| 87 |
-
#Set this to a very high value if you have many backends and no concern for their distribution.
|
| 88 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 89 |
-
MaxT2ISimultaneous: 32
|
| 90 |
-
#Whether the '.' symbol can be used in OutPath - if enabled, users may cause file system issues or perform folder escapes.
|
| 91 |
-
AllowUnsafeOutpaths: false
|
| 92 |
-
#Human readable display name for this role.
|
| 93 |
-
Name: Owner
|
| 94 |
-
#Human-readable description text about this role.
|
| 95 |
-
#This is for admin reference when picking roles.
|
| 96 |
-
#Probably describe here when/why a user should receive this role, and a short bit about what it unlocks.
|
| 97 |
-
Description: (Auto Generated Role, cannot delete). The owner of the server, local user when account system is disabled. Generally should have all permissions ever always.
|
| 98 |
-
admin:
|
| 99 |
-
#How many directories deep a user's custom OutPath can be.
|
| 100 |
-
#Default is 5.
|
| 101 |
-
#This is just a minor protection to avoid filesystem corruption. Higher values are perfectly fine in most cases.
|
| 102 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 103 |
-
MaxOutPathDepth: 5
|
| 104 |
-
#What models are allowed, as a list of prefixes.
|
| 105 |
-
#For example 'sdxl/' allows only models in the SDXL folder.
|
| 106 |
-
#Or, 'sdxl/,flux/' allows models in the SDXL or Flux folders.
|
| 107 |
-
#If empty, no whitelist logic is applied.
|
| 108 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 109 |
-
#This stacks between roles, roles can add whitelist entries together.
|
| 110 |
-
ModelWhitelist:
|
| 111 |
-
#What models are forbidden, as a list of prefixes.
|
| 112 |
-
#For example 'sdxl/' forbids models in the SDXL folder.
|
| 113 |
-
#Or, 'sdxl/,flux/' forbids models in the SDXL or Flux folders.
|
| 114 |
-
#If empty, no blacklist logic is applied.
|
| 115 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 116 |
-
#This stacks between roles, roles can add blacklist entries together.
|
| 117 |
-
ModelBlacklist:
|
| 118 |
-
#Generic permission flags. '*' means all (admin).
|
| 119 |
-
#Default is all.
|
| 120 |
-
PermissionFlags:
|
| 121 |
-
- *
|
| 122 |
-
- edit_wildcards
|
| 123 |
-
- comfy_backend_generate
|
| 124 |
-
- gridgen_read_grids
|
| 125 |
-
- reset_metadata
|
| 126 |
-
- read_user_settings
|
| 127 |
-
- toggle_backends
|
| 128 |
-
- add_remove_backends
|
| 129 |
-
- read_server_info_panels
|
| 130 |
-
- comfy_direct_calls
|
| 131 |
-
- param_backend_type
|
| 132 |
-
- fundamental_generate_tab_access
|
| 133 |
-
- comfy_dynamic_custom_workflows
|
| 134 |
-
- edit_user_settings
|
| 135 |
-
- extra_loras
|
| 136 |
-
- restart_backends
|
| 137 |
-
- pickle2safetensors
|
| 138 |
-
- user_delete_image
|
| 139 |
-
- edit_server_settings
|
| 140 |
-
- view_server_tab
|
| 141 |
-
- control_mem_clean
|
| 142 |
-
- gridgen_generate_grids
|
| 143 |
-
- use_tokenizer
|
| 144 |
-
- restart
|
| 145 |
-
- comfy_stored_custom_workflows
|
| 146 |
-
- view_image_history
|
| 147 |
-
- view_others_outputs
|
| 148 |
-
- edit_backends
|
| 149 |
-
- manage_extensions
|
| 150 |
-
- comfy_read_workflows
|
| 151 |
-
- user_star_images
|
| 152 |
-
- download_models
|
| 153 |
-
- fundamental_model_access
|
| 154 |
-
- admin_debug
|
| 155 |
-
- gridgen_save_grids
|
| 156 |
-
- manage_presets
|
| 157 |
-
- edit_params
|
| 158 |
-
- model_params
|
| 159 |
-
- edit_model_metadata
|
| 160 |
-
- param_controlnet
|
| 161 |
-
- param_backend_id
|
| 162 |
-
- create_tensorrt
|
| 163 |
-
- view_logs
|
| 164 |
-
- basic_image_generation
|
| 165 |
-
- param_video
|
| 166 |
-
- comfy_edit_workflows
|
| 167 |
-
- load_models_now
|
| 168 |
-
- read_server_settings
|
| 169 |
-
- view_backends_list
|
| 170 |
-
- install_features
|
| 171 |
-
- control_model_refresh
|
| 172 |
-
- imagebatcher_use_image_batcher
|
| 173 |
-
#How many images this user can have actively generating at once.
|
| 174 |
-
#Default is 32.
|
| 175 |
-
#This is naturally sub-limited by the number of available backends.
|
| 176 |
-
#This is a protection for many-backend servers, to guarantee one user cannot steal all backends at once.
|
| 177 |
-
#You can set this to a very low value if you have few backends but many users.
|
| 178 |
-
#Set this to a very high value if you have many backends and no concern for their distribution.
|
| 179 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 180 |
-
MaxT2ISimultaneous: 32
|
| 181 |
-
#Whether the '.' symbol can be used in OutPath - if enabled, users may cause file system issues or perform folder escapes.
|
| 182 |
-
AllowUnsafeOutpaths: false
|
| 183 |
-
#Human readable display name for this role.
|
| 184 |
-
Name: Admin
|
| 185 |
-
#Human-readable description text about this role.
|
| 186 |
-
#This is for admin reference when picking roles.
|
| 187 |
-
#Probably describe here when/why a user should receive this role, and a short bit about what it unlocks.
|
| 188 |
-
Description: (Auto Generated Role, cannot delete). An administrator of the server, has near-total control.
|
| 189 |
-
poweruser:
|
| 190 |
-
#How many directories deep a user's custom OutPath can be.
|
| 191 |
-
#Default is 5.
|
| 192 |
-
#This is just a minor protection to avoid filesystem corruption. Higher values are perfectly fine in most cases.
|
| 193 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 194 |
-
MaxOutPathDepth: 5
|
| 195 |
-
#What models are allowed, as a list of prefixes.
|
| 196 |
-
#For example 'sdxl/' allows only models in the SDXL folder.
|
| 197 |
-
#Or, 'sdxl/,flux/' allows models in the SDXL or Flux folders.
|
| 198 |
-
#If empty, no whitelist logic is applied.
|
| 199 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 200 |
-
#This stacks between roles, roles can add whitelist entries together.
|
| 201 |
-
ModelWhitelist:
|
| 202 |
-
#What models are forbidden, as a list of prefixes.
|
| 203 |
-
#For example 'sdxl/' forbids models in the SDXL folder.
|
| 204 |
-
#Or, 'sdxl/,flux/' forbids models in the SDXL or Flux folders.
|
| 205 |
-
#If empty, no blacklist logic is applied.
|
| 206 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 207 |
-
#This stacks between roles, roles can add blacklist entries together.
|
| 208 |
-
ModelBlacklist:
|
| 209 |
-
#Generic permission flags. '*' means all (admin).
|
| 210 |
-
#Default is all.
|
| 211 |
-
PermissionFlags:
|
| 212 |
-
- *
|
| 213 |
-
- edit_wildcards
|
| 214 |
-
- comfy_backend_generate
|
| 215 |
-
- gridgen_read_grids
|
| 216 |
-
- reset_metadata
|
| 217 |
-
- read_user_settings
|
| 218 |
-
- comfy_direct_calls
|
| 219 |
-
- param_backend_type
|
| 220 |
-
- fundamental_generate_tab_access
|
| 221 |
-
- comfy_dynamic_custom_workflows
|
| 222 |
-
- edit_user_settings
|
| 223 |
-
- extra_loras
|
| 224 |
-
- restart_backends
|
| 225 |
-
- pickle2safetensors
|
| 226 |
-
- user_delete_image
|
| 227 |
-
- view_server_tab
|
| 228 |
-
- control_mem_clean
|
| 229 |
-
- gridgen_generate_grids
|
| 230 |
-
- use_tokenizer
|
| 231 |
-
- comfy_stored_custom_workflows
|
| 232 |
-
- view_image_history
|
| 233 |
-
- comfy_read_workflows
|
| 234 |
-
- user_star_images
|
| 235 |
-
- download_models
|
| 236 |
-
- fundamental_model_access
|
| 237 |
-
- gridgen_save_grids
|
| 238 |
-
- manage_presets
|
| 239 |
-
- edit_params
|
| 240 |
-
- model_params
|
| 241 |
-
- edit_model_metadata
|
| 242 |
-
- param_controlnet
|
| 243 |
-
- param_backend_id
|
| 244 |
-
- create_tensorrt
|
| 245 |
-
- basic_image_generation
|
| 246 |
-
- param_video
|
| 247 |
-
- comfy_edit_workflows
|
| 248 |
-
- load_models_now
|
| 249 |
-
- view_backends_list
|
| 250 |
-
- install_features
|
| 251 |
-
- control_model_refresh
|
| 252 |
-
#How many images this user can have actively generating at once.
|
| 253 |
-
#Default is 32.
|
| 254 |
-
#This is naturally sub-limited by the number of available backends.
|
| 255 |
-
#This is a protection for many-backend servers, to guarantee one user cannot steal all backends at once.
|
| 256 |
-
#You can set this to a very low value if you have few backends but many users.
|
| 257 |
-
#Set this to a very high value if you have many backends and no concern for their distribution.
|
| 258 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 259 |
-
MaxT2ISimultaneous: 32
|
| 260 |
-
#Whether the '.' symbol can be used in OutPath - if enabled, users may cause file system issues or perform folder escapes.
|
| 261 |
-
AllowUnsafeOutpaths: false
|
| 262 |
-
#Human readable display name for this role.
|
| 263 |
-
Name: PowerUser
|
| 264 |
-
#Human-readable description text about this role.
|
| 265 |
-
#This is for admin reference when picking roles.
|
| 266 |
-
#Probably describe here when/why a user should receive this role, and a short bit about what it unlocks.
|
| 267 |
-
Description: (Auto Generated Role, cannot delete). A very advanced, and trusted, user. Has access to things that could be dangerous or can be maliciously abused.
|
| 268 |
-
user:
|
| 269 |
-
#How many directories deep a user's custom OutPath can be.
|
| 270 |
-
#Default is 5.
|
| 271 |
-
#This is just a minor protection to avoid filesystem corruption. Higher values are perfectly fine in most cases.
|
| 272 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 273 |
-
MaxOutPathDepth: 5
|
| 274 |
-
#What models are allowed, as a list of prefixes.
|
| 275 |
-
#For example 'sdxl/' allows only models in the SDXL folder.
|
| 276 |
-
#Or, 'sdxl/,flux/' allows models in the SDXL or Flux folders.
|
| 277 |
-
#If empty, no whitelist logic is applied.
|
| 278 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 279 |
-
#This stacks between roles, roles can add whitelist entries together.
|
| 280 |
-
ModelWhitelist:
|
| 281 |
-
#What models are forbidden, as a list of prefixes.
|
| 282 |
-
#For example 'sdxl/' forbids models in the SDXL folder.
|
| 283 |
-
#Or, 'sdxl/,flux/' forbids models in the SDXL or Flux folders.
|
| 284 |
-
#If empty, no blacklist logic is applied.
|
| 285 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 286 |
-
#This stacks between roles, roles can add blacklist entries together.
|
| 287 |
-
ModelBlacklist:
|
| 288 |
-
#Generic permission flags. '*' means all (admin).
|
| 289 |
-
#Default is all.
|
| 290 |
-
PermissionFlags:
|
| 291 |
-
- *
|
| 292 |
-
- gridgen_read_grids
|
| 293 |
-
- read_user_settings
|
| 294 |
-
- fundamental_generate_tab_access
|
| 295 |
-
- edit_user_settings
|
| 296 |
-
- user_delete_image
|
| 297 |
-
- gridgen_generate_grids
|
| 298 |
-
- use_tokenizer
|
| 299 |
-
- view_image_history
|
| 300 |
-
- user_star_images
|
| 301 |
-
- fundamental_model_access
|
| 302 |
-
- gridgen_save_grids
|
| 303 |
-
- manage_presets
|
| 304 |
-
- edit_params
|
| 305 |
-
- model_params
|
| 306 |
-
- param_controlnet
|
| 307 |
-
- basic_image_generation
|
| 308 |
-
- param_video
|
| 309 |
-
#How many images this user can have actively generating at once.
|
| 310 |
-
#Default is 32.
|
| 311 |
-
#This is naturally sub-limited by the number of available backends.
|
| 312 |
-
#This is a protection for many-backend servers, to guarantee one user cannot steal all backends at once.
|
| 313 |
-
#You can set this to a very low value if you have few backends but many users.
|
| 314 |
-
#Set this to a very high value if you have many backends and no concern for their distribution.
|
| 315 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 316 |
-
MaxT2ISimultaneous: 32
|
| 317 |
-
#Whether the '.' symbol can be used in OutPath - if enabled, users may cause file system issues or perform folder escapes.
|
| 318 |
-
AllowUnsafeOutpaths: false
|
| 319 |
-
#Human readable display name for this role.
|
| 320 |
-
Name: User
|
| 321 |
-
#Human-readable description text about this role.
|
| 322 |
-
#This is for admin reference when picking roles.
|
| 323 |
-
#Probably describe here when/why a user should receive this role, and a short bit about what it unlocks.
|
| 324 |
-
Description: (Auto Generated Role, cannot delete). A general user. The default role for valid accounts.
|
| 325 |
-
guest:
|
| 326 |
-
#How many directories deep a user's custom OutPath can be.
|
| 327 |
-
#Default is 5.
|
| 328 |
-
#This is just a minor protection to avoid filesystem corruption. Higher values are perfectly fine in most cases.
|
| 329 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 330 |
-
MaxOutPathDepth: 5
|
| 331 |
-
#What models are allowed, as a list of prefixes.
|
| 332 |
-
#For example 'sdxl/' allows only models in the SDXL folder.
|
| 333 |
-
#Or, 'sdxl/,flux/' allows models in the SDXL or Flux folders.
|
| 334 |
-
#If empty, no whitelist logic is applied.
|
| 335 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 336 |
-
#This stacks between roles, roles can add whitelist entries together.
|
| 337 |
-
ModelWhitelist:
|
| 338 |
-
#What models are forbidden, as a list of prefixes.
|
| 339 |
-
#For example 'sdxl/' forbids models in the SDXL folder.
|
| 340 |
-
#Or, 'sdxl/,flux/' forbids models in the SDXL or Flux folders.
|
| 341 |
-
#If empty, no blacklist logic is applied.
|
| 342 |
-
#Note that blacklist is 'more powerful' than whitelist and overrides it.
|
| 343 |
-
#This stacks between roles, roles can add blacklist entries together.
|
| 344 |
-
ModelBlacklist:
|
| 345 |
-
#Generic permission flags. '*' means all (admin).
|
| 346 |
-
#Default is all.
|
| 347 |
-
PermissionFlags:
|
| 348 |
-
- *
|
| 349 |
-
- read_user_settings
|
| 350 |
-
- fundamental_generate_tab_access
|
| 351 |
-
- use_tokenizer
|
| 352 |
-
- fundamental_model_access
|
| 353 |
-
#How many images this user can have actively generating at once.
|
| 354 |
-
#Default is 32.
|
| 355 |
-
#This is naturally sub-limited by the number of available backends.
|
| 356 |
-
#This is a protection for many-backend servers, to guarantee one user cannot steal all backends at once.
|
| 357 |
-
#You can set this to a very low value if you have few backends but many users.
|
| 358 |
-
#Set this to a very high value if you have many backends and no concern for their distribution.
|
| 359 |
-
#The actual limit applied to a user is whatever the highest value of all their roles is.
|
| 360 |
-
MaxT2ISimultaneous: 32
|
| 361 |
-
#Whether the '.' symbol can be used in OutPath - if enabled, users may cause file system issues or perform folder escapes.
|
| 362 |
-
AllowUnsafeOutpaths: false
|
| 363 |
-
#Human readable display name for this role.
|
| 364 |
-
Name: Guest
|
| 365 |
-
#Human-readable description text about this role.
|
| 366 |
-
#This is for admin reference when picking roles.
|
| 367 |
-
#Probably describe here when/why a user should receive this role, and a short bit about what it unlocks.
|
| 368 |
-
Description: (Auto Generated Role, cannot delete). An unregistered or unverified guest account. Only when public unverified access is enabled.
|
| 369 |
-
___$tracked:
|
| 370 |
-
- shutdown
|
| 371 |
-
- edit_wildcards
|
| 372 |
-
- comfy_backend_generate
|
| 373 |
-
- gridgen_read_grids
|
| 374 |
-
- reset_metadata
|
| 375 |
-
- read_user_settings
|
| 376 |
-
- toggle_backends
|
| 377 |
-
- add_remove_backends
|
| 378 |
-
- read_server_info_panels
|
| 379 |
-
- comfy_direct_calls
|
| 380 |
-
- param_backend_type
|
| 381 |
-
- fundamental_generate_tab_access
|
| 382 |
-
- comfy_dynamic_custom_workflows
|
| 383 |
-
- edit_user_settings
|
| 384 |
-
- extra_loras
|
| 385 |
-
- restart_backends
|
| 386 |
-
- pickle2safetensors
|
| 387 |
-
- user_delete_image
|
| 388 |
-
- edit_server_settings
|
| 389 |
-
- local_image_folder
|
| 390 |
-
- view_server_tab
|
| 391 |
-
- control_mem_clean
|
| 392 |
-
- gridgen_generate_grids
|
| 393 |
-
- use_tokenizer
|
| 394 |
-
- restart
|
| 395 |
-
- comfy_stored_custom_workflows
|
| 396 |
-
- view_image_history
|
| 397 |
-
- view_others_outputs
|
| 398 |
-
- edit_backends
|
| 399 |
-
- manage_extensions
|
| 400 |
-
- comfy_read_workflows
|
| 401 |
-
- user_star_images
|
| 402 |
-
- download_models
|
| 403 |
-
- fundamental_model_access
|
| 404 |
-
- server_debug_message
|
| 405 |
-
- admin_debug
|
| 406 |
-
- gridgen_save_grids
|
| 407 |
-
- manage_presets
|
| 408 |
-
- edit_params
|
| 409 |
-
- model_params
|
| 410 |
-
- edit_model_metadata
|
| 411 |
-
- param_controlnet
|
| 412 |
-
- param_backend_id
|
| 413 |
-
- create_tensorrt
|
| 414 |
-
- view_logs
|
| 415 |
-
- basic_image_generation
|
| 416 |
-
- param_video
|
| 417 |
-
- comfy_edit_workflows
|
| 418 |
-
- configure_roles
|
| 419 |
-
- manage_users
|
| 420 |
-
- *
|
| 421 |
-
- load_models_now
|
| 422 |
-
- install
|
| 423 |
-
- read_server_settings
|
| 424 |
-
- view_backends_list
|
| 425 |
-
- install_features
|
| 426 |
-
- control_model_refresh
|
| 427 |
-
- imagebatcher_use_image_batcher
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Data/Settings.fds
DELETED
|
@@ -1,397 +0,0 @@
|
|
| 1 |
-
#Settings related to file paths.
|
| 2 |
-
Paths:
|
| 3 |
-
#Root path for model files. Use a full-formed path (starting with '/' or a Windows drive like 'C:') to use an absolute path.
|
| 4 |
-
#Defaults to 'Models'.
|
| 5 |
-
#Use a semicolon ';' to split multiple paths.
|
| 6 |
-
ModelRoot: Models
|
| 7 |
-
#The model folder to use within 'ModelRoot'.
|
| 8 |
-
#Defaults to 'Stable-Diffusion'.
|
| 9 |
-
#Absolute paths work too.
|
| 10 |
-
#Use a semicolon ';' to split multiple paths.
|
| 11 |
-
SDModelFolder: Stable-Diffusion
|
| 12 |
-
#The LoRA (or related adapter type) model folder to use within 'ModelRoot'.
|
| 13 |
-
#Defaults to 'Lora'.
|
| 14 |
-
#Absolute paths work too.
|
| 15 |
-
#Use a semicolon ';' to split multiple paths.
|
| 16 |
-
SDLoraFolder: Lora
|
| 17 |
-
#The VAE (autoencoder) model folder to use within 'ModelRoot'.
|
| 18 |
-
#Defaults to 'VAE'.
|
| 19 |
-
#Absolute paths work too.
|
| 20 |
-
#Use a semicolon ';' to split multiple paths.
|
| 21 |
-
SDVAEFolder: VAE
|
| 22 |
-
#The Embedding (eg textual inversion) model folder to use within 'ModelRoot'.
|
| 23 |
-
#Defaults to 'Embeddings'.
|
| 24 |
-
#Absolute paths work too.
|
| 25 |
-
#Use a semicolon ';' to split multiple paths.
|
| 26 |
-
SDEmbeddingFolder: Embeddings
|
| 27 |
-
#The ControlNets model folder to use within 'ModelRoot'.
|
| 28 |
-
#Defaults to 'controlnet'.
|
| 29 |
-
#Absolute paths work too.
|
| 30 |
-
#Use a semicolon ';' to split multiple paths.
|
| 31 |
-
SDControlNetsFolder: controlnet
|
| 32 |
-
#The CLIP (Text Encoder) model folder to use within 'ModelRoot'.
|
| 33 |
-
#Defaults to 'clip'.
|
| 34 |
-
#Absolute paths work too.
|
| 35 |
-
#Use a semicolon ';' to split multiple paths.
|
| 36 |
-
SDClipFolder: clip
|
| 37 |
-
#The CLIP Vision model folder to use within 'ModelRoot'.
|
| 38 |
-
#Defaults to 'clip_vision'.
|
| 39 |
-
#Absolute paths work too.
|
| 40 |
-
#Use a semicolon ';' to split multiple paths.
|
| 41 |
-
SDClipVisionFolder: clip_vision
|
| 42 |
-
#Root path for data (user configs, etc).
|
| 43 |
-
#Defaults to 'Data'
|
| 44 |
-
DataPath: Data
|
| 45 |
-
#Root path for output files (images, etc).
|
| 46 |
-
#Defaults to 'Output'
|
| 47 |
-
OutputPath: Output
|
| 48 |
-
#The folder for wildcard (.txt) files, under Data.
|
| 49 |
-
#Defaults to 'Wildcards'
|
| 50 |
-
WildcardsFolder: Wildcards
|
| 51 |
-
#When true, output paths always have the username as a folder.
|
| 52 |
-
#When false, this will be skipped.
|
| 53 |
-
#Keep this on in multi-user environments.
|
| 54 |
-
AppendUserNameToOutputPath: true
|
| 55 |
-
#If true, when a user deletes an image, send it to the OS Recycle Bin instead of permanently deleting it.
|
| 56 |
-
#If false, image files are permanently deleted.
|
| 57 |
-
#Defaults to false.
|
| 58 |
-
RecycleDeletedImages: false
|
| 59 |
-
#Settings related to image/model metadata.
|
| 60 |
-
Metadata:
|
| 61 |
-
#If true, model metadata is tracked on a per-folder basis. This is better for example if you copy model folders to different machines, or have symlinks to different instances, or etc.
|
| 62 |
-
#If false, model metadata is tracked in the central data folder. This is better if you don't want stray files in your model folders, or if you have several Swarm instances running simultaneously.
|
| 63 |
-
ModelMetadataPerFolder: true
|
| 64 |
-
#If true, image metadata is tracked on a per-folder basis.
|
| 65 |
-
#If false, image metadata is tracked in the central data folder.
|
| 66 |
-
#This is better if you don't want stray files in your output folders, or if you have several Swarm instances running simultaneously over the same output folders.
|
| 67 |
-
ImageMetadataPerFolder: true
|
| 68 |
-
#If true, unrecognized XL-format models will be treated as SDXL 1.0.
|
| 69 |
-
#If false, unrecognized XL-format models will be treated as SDXL 0.9.
|
| 70 |
-
#The SDXL 1.0 specification requires ModelSpec architecture IDs, and any similar model lacking this ID is a 0.9 model,
|
| 71 |
-
#however, many custom XL model author have excluded this metadata.
|
| 72 |
-
#This means those models are technically SDXL 0.9 models, however it can be convenient to pretend they are 1.0 models instead.
|
| 73 |
-
#Note that enabling this will mislabel the official SDXL 0.9 model.
|
| 74 |
-
XLDefaultAsXL1: false
|
| 75 |
-
#If true, editing model metadata should write a '.swarm.json' file next to the model.
|
| 76 |
-
#If false, apply metadata to the model itself.
|
| 77 |
-
#Applying directly to the model is generally better, however the JSON file might be preferable if you have a very slow data drive, as it avoids rewriting the model content.
|
| 78 |
-
EditMetadataWriteJSON: false
|
| 79 |
-
#If true, image metadata will include a list of models with their hashes.
|
| 80 |
-
#This is useful for services like civitai to automatically link models.
|
| 81 |
-
#This will cause extra time to be taken when new hashes need to be loaded.
|
| 82 |
-
ImageMetadataIncludeModelHash: false
|
| 83 |
-
#Settings related to networking and the webserver.
|
| 84 |
-
Network:
|
| 85 |
-
#Optionally set an external URL here, eg 'https://swarm.example.com'
|
| 86 |
-
#This is not used for any practical function,
|
| 87 |
-
#and only will be used for automatically displaying fully formed URLs in some special cases, such as when transmitting webhooks.
|
| 88 |
-
#If unset, an autogenerated value based on the Host and port will be used.
|
| 89 |
-
ExternalURL: \x
|
| 90 |
-
#What web host address to use. `localhost` means your PC only.
|
| 91 |
-
#Linux users may use `0.0.0.0` to mean accessible to anyone that can connect to your PC (ie LAN users, or the public if your firewall is open).
|
| 92 |
-
#Windows users may use `*` for that, though it may require additional Windows firewall configuration.
|
| 93 |
-
#Advanced server users may wish to manually specify a host bind address here.
|
| 94 |
-
Host: localhost
|
| 95 |
-
#What web port to use. Default is '7801'.
|
| 96 |
-
Port: 7801
|
| 97 |
-
#If true, if the port is already in use, the server will try to find another port to use instead.
|
| 98 |
-
#If false, the server will fail to start if the port is already in use.
|
| 99 |
-
PortCanChange: true
|
| 100 |
-
#Backends are automatically assigned unique ports. This value selects which port number to start the assignment from.
|
| 101 |
-
#Default is '7820'.
|
| 102 |
-
BackendStartingPort: 7820
|
| 103 |
-
#If you wish to access your Swarm instance externally, set this to the path of a CloudFlared executable, and it will automatically be used.
|
| 104 |
-
#(Must restart to apply).
|
| 105 |
-
#The URL will be visible on the Server Info tab and/or terminal log.
|
| 106 |
-
#See documentation in <a target="_blank" href="{Utilities.RepoDocsRoot}Advanced Usage.md#accessing-swarmui-from-other-devices">the docs here</a>
|
| 107 |
-
CloudflaredPath: \x
|
| 108 |
-
#Any IPs that can bypass authorization requirements, as a comma-separated list.
|
| 109 |
-
#Defaults to '127.0.0.1' (localhost IPv4) and '::1' (localhost IPv6).
|
| 110 |
-
AuthBypassIPs: 127.0.0.1,::1
|
| 111 |
-
#If set, connections will require an Authorization header.
|
| 112 |
-
#This is intended for if you're hosting your Swarm instance to a public IP and want to reduce the risks from it being exposed.
|
| 113 |
-
#Using a safe reverse proxy with actual authentication such as Apache2 is recommended instead.
|
| 114 |
-
#This is a simple equality check, and should be something like `Bearer some_passphrase_or_something_here`.
|
| 115 |
-
#Defaults to empty (no authorization required).
|
| 116 |
-
#If you accidentally lock yourself out, edit `Data/Settings.fds` to remove this setting and restart Swarm.
|
| 117 |
-
RequiredAuthorization: \x
|
| 118 |
-
#If true, special network forwarding logic will apply for developer modes.
|
| 119 |
-
#Notably, ComfyUI Frontend NPM Developer Mode requires significant special forwarding as it misroutes itself.
|
| 120 |
-
#Defaults to false.
|
| 121 |
-
EnableSpecialDevForwarding: false
|
| 122 |
-
#Default settings for users (unless the user modifies them, if so permitted).
|
| 123 |
-
#(NOTE: Usually, don't edit this. Go to the 'User' tab to edit your User-Settings).
|
| 124 |
-
DefaultUser:
|
| 125 |
-
#Settings related to output path building.
|
| 126 |
-
OutPathBuilder:
|
| 127 |
-
#Builder for output file paths. Can use auto-filling placeholders like '[model]' for the model name, '[prompt]' for a snippet of prompt text, etc.
|
| 128 |
-
#Full details in <a target="_blank" href="https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/User%20Settings.md#path-format">the docs here</a>
|
| 129 |
-
Format: raw/[year]-[month]-[day]/[hour][minute]-[prompt]-[model]-[seed]
|
| 130 |
-
#How long any one part can be.
|
| 131 |
-
#Default is 40 characters.
|
| 132 |
-
MaxLenPerPart: 40
|
| 133 |
-
#If true, when including model name (or loras or etc), the path will skip the folder (ie filename only).
|
| 134 |
-
ModelPathsSkipFolders: false
|
| 135 |
-
#Settings related to saved file format.
|
| 136 |
-
FileFormat:
|
| 137 |
-
#What format to save images in.
|
| 138 |
-
#Default is '.png', but '.jpg' is recommended to save some filespace.
|
| 139 |
-
ImageFormat: PNG
|
| 140 |
-
#Whether to store metadata into saved images.
|
| 141 |
-
#Defaults enabled.
|
| 142 |
-
SaveMetadata: true
|
| 143 |
-
#If set to non-0, adds DPI metadata to saved images.
|
| 144 |
-
#'72' is a good value for compatibility with some external software.
|
| 145 |
-
DPI: 0
|
| 146 |
-
#If set to true, a '.txt' file will be saved alongside images with the image metadata easily viewable.
|
| 147 |
-
#This can work even if saving in the image is disabled. Defaults disabled.
|
| 148 |
-
SaveTextFileMetadata: false
|
| 149 |
-
#Whether your files save to server data drive or not.
|
| 150 |
-
SaveFiles: true
|
| 151 |
-
#If true, folders will be discarded from starred image paths.
|
| 152 |
-
StarNoFolders: false
|
| 153 |
-
#List of role IDs applied to this user. Defaults to owner (for local/accountless usage).
|
| 154 |
-
Roles:
|
| 155 |
-
- owner
|
| 156 |
-
#The user's password.
|
| 157 |
-
#This is not stored in user-readable format.
|
| 158 |
-
#Replace the value to set a new password.
|
| 159 |
-
Password: \x
|
| 160 |
-
#What theme to use. Default is 'modern_dark'.
|
| 161 |
-
Theme: modern_dark
|
| 162 |
-
#If true, images in the main center area will always grow to better fill the screen.
|
| 163 |
-
CenterImageAlwaysGrow: false
|
| 164 |
-
#If true, when 'Auto Swap To Images' is enabled, and you have FullView open, the FullView will also be swapped.
|
| 165 |
-
#If false, the FullView will not change.
|
| 166 |
-
AutoSwapImagesIncludesFullView: false
|
| 167 |
-
#A list of what buttons to include directly under images in the main prompt area of the Generate tab.
|
| 168 |
-
#Other buttons will be moved into the 'More' dropdown.
|
| 169 |
-
#This should be a comma separated list.
|
| 170 |
-
#The following options are available: "Use As Init", "Use As Image Prompt", "Edit Image", "Upscale 2x", "Star", "Reuse Parameters", "Open In Folder", "Delete", "Download" "View In History", "Refine Image"
|
| 171 |
-
#The default is blank, which currently implies 'Use As Init,Edit Image,Star,Reuse Parameters'
|
| 172 |
-
ButtonsUnderMainImages: \x
|
| 173 |
-
#If enabled, batch size will be reset to 1 when parameters are loaded.
|
| 174 |
-
#This can prevent accidents that might thrash your GPU or cause compatibility issues, especially for example when importing a comfy workflow.
|
| 175 |
-
#You can still set the batch size at will in the GUI.
|
| 176 |
-
ResetBatchSizeToOne: false
|
| 177 |
-
#The format for parameter hints to display as.
|
| 178 |
-
#Default is 'BUTTON'.
|
| 179 |
-
HintFormat: BUTTON
|
| 180 |
-
#The delay, in seconds, for parameter hints when 'HOVER_DELAY' is selected.
|
| 181 |
-
HoverDelaySeconds: 0.5
|
| 182 |
-
#How many lines of text to display in the standard prompt box before cutting off to a scroll bar.
|
| 183 |
-
#Actual size in practice tends to be a few lines shorter due to browser and font variations.
|
| 184 |
-
#Default is 10.
|
| 185 |
-
MaxPromptLines: 10
|
| 186 |
-
#Options to override default VAEs with.
|
| 187 |
-
VAEs:
|
| 188 |
-
#What VAE to use with SDXL models by default. Use 'None' to use the one in the model.
|
| 189 |
-
DefaultSDXLVAE: None
|
| 190 |
-
#What VAE to use with SDv1 models by default. Use 'None' to use the one in the model.
|
| 191 |
-
DefaultSDv1VAE: None
|
| 192 |
-
#What VAE to use with SVD (Video) models by default. Use 'None' to use the one in the model. This should normally be an SDv1 VAE.
|
| 193 |
-
DefaultSVDVAE: None
|
| 194 |
-
#What VAE to use with Flux models by default.
|
| 195 |
-
DefaultFluxVAE: None
|
| 196 |
-
#What VAE to use with SD3 models by default.
|
| 197 |
-
DefaultSD3VAE: None
|
| 198 |
-
#What VAE to use with Mochi Text2Video models by default.
|
| 199 |
-
DefaultMochiVAE: None
|
| 200 |
-
#When generating live previews, this is how many simultaneous generation requests can be waiting at one time.
|
| 201 |
-
MaxSimulPreviews: 1
|
| 202 |
-
#Set to a number above 1 to allow generations of multiple images to automatically generate square mini-grids when they're done.
|
| 203 |
-
MaxImagesInMiniGrid: 1
|
| 204 |
-
#How many images the history view should stop trying to load after.
|
| 205 |
-
MaxImagesInHistory: 1000
|
| 206 |
-
#How many images the history view should scan server-side before deciding the list is sufficient for sorting. Not relevant when sorting by filename.
|
| 207 |
-
MaxImagesScannedInHistory: 10000
|
| 208 |
-
#If true, the Image History view will cache small preview thumbnails of images.
|
| 209 |
-
#This should make things run faster. You can turn it off if you don't want that.
|
| 210 |
-
ImageHistoryUsePreviews: true
|
| 211 |
-
#Delay, in seconds, betweeen Generate Forever updates.
|
| 212 |
-
#If the delay hits and a generation is still waiting, it will be skipped.
|
| 213 |
-
#Default is 0.1 seconds.
|
| 214 |
-
GenerateForeverDelay: 0.1
|
| 215 |
-
#Number of generations that Generate Forever should always keep queued up when enabled.
|
| 216 |
-
#Useful when using multiple backends to keep them all busy.
|
| 217 |
-
GenerateForeverQueueSize: 1
|
| 218 |
-
#What language to display the UI in.
|
| 219 |
-
#Default is 'en' (English).
|
| 220 |
-
Language: en
|
| 221 |
-
#Comma-separated list of parameters to exclude from 'Reuse Parameters'.
|
| 222 |
-
#For example, set 'model' to not copy the model, or 'model,refinermodel,videomodel' to really never copy any models.
|
| 223 |
-
ReuseParamExcludeList: \x
|
| 224 |
-
#Settings related to autocompletions.
|
| 225 |
-
AutoComplete:
|
| 226 |
-
#Optional source file for auto-completion texts (inside Data/Autocompletions).
|
| 227 |
-
#See <a target="_blank" href="https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Autocompletions.md#word-lists">docs/Features/Autocompletions</a> for info.
|
| 228 |
-
Source: \x
|
| 229 |
-
#If true, the auto-completion will escape parentheses with backslashes to prevent parsing errors.
|
| 230 |
-
EscapeParens: true
|
| 231 |
-
#Optional suffix to append to autocompletes, eg ', ' to append commas.
|
| 232 |
-
Suffix: \x
|
| 233 |
-
#How to match and list results.
|
| 234 |
-
#'Contains' lists any match that contains your current text
|
| 235 |
-
#'StartsWith' only lists matches that start with your current text
|
| 236 |
-
#'Bucketed' shows StartsWith matches first, and Contains matches after.
|
| 237 |
-
MatchMode: Bucketed
|
| 238 |
-
#How to sort the results.
|
| 239 |
-
#'Active' sorts shortest tags first, then alphabetically after.
|
| 240 |
-
#'Alphabetical' sorts results alphabetically.
|
| 241 |
-
#'Frequency' sorts results by how popular the tag is (for tag csvs).
|
| 242 |
-
#'None' uses whatever the source list's order is.
|
| 243 |
-
SortMode: Active
|
| 244 |
-
#If your completion list is booru tags, use this to optionally alter how spaces/underscores are handled.
|
| 245 |
-
#Select 'None' to just use what's in the file,
|
| 246 |
-
#'Spaces' to replace underscores to spaces,
|
| 247 |
-
#or 'Underscores' to replace spaces to underscores.
|
| 248 |
-
SpacingMode: None
|
| 249 |
-
#Settings related to backends.
|
| 250 |
-
Backends:
|
| 251 |
-
#How many times to retry initializing a backend before giving up. Default is 3.
|
| 252 |
-
MaxBackendInitAttempts: 3
|
| 253 |
-
#Safety check, the maximum duration all requests can be waiting for a backend before the system declares a backend handling failure.
|
| 254 |
-
MaxTimeoutMinutes: 20
|
| 255 |
-
#The maximum duration an individual request can be waiting on a backend to be available before giving up.
|
| 256 |
-
#Not to be confused with 'MaxTimeoutMinutes' which requires backends be unresponsive for that duration, this duration includes requests that are merely waiting because other requests are queued.
|
| 257 |
-
#Defaults to 60 * 24 * 7 = 1 week (ultra-long max queue duration).
|
| 258 |
-
PerRequestTimeoutMinutes: 10080
|
| 259 |
-
#The maximum number of pending requests to continue forcing orderly processing of.
|
| 260 |
-
#Over this limit, requests may start going out of order.
|
| 261 |
-
MaxRequestsForcedOrder: 20
|
| 262 |
-
#If true, max t2i simultaneous value is not limited by backend count.
|
| 263 |
-
#Ie, users may queue as many gens as they want directly to backends, with no overload prevention.
|
| 264 |
-
#This may be preferable on personal instances of Swarm to enforce stricter queue ordering.
|
| 265 |
-
#User role max t2i simultaneous value is still applied.
|
| 266 |
-
UnrestrictedMaxT2iSimultaneous: false
|
| 267 |
-
#How many minutes to wait after the last generation before automatically freeing up VRAM (to prevent issues with other programs).
|
| 268 |
-
#This has the downside of a small added bit of time to load back onto VRAM at next usage.
|
| 269 |
-
#Use a decimal number to free after seconds.
|
| 270 |
-
#Defaults to 10 minutes.
|
| 271 |
-
ClearVRAMAfterMinutes: 10
|
| 272 |
-
#How many minutes to wait after the last generation before automatically freeing up system RAM (to prevent issues with other programs).
|
| 273 |
-
#This has the downside of causing models to fully load from data drive at next usage.
|
| 274 |
-
#Use a decimal number to free after seconds.
|
| 275 |
-
#Defaults to 60 minutes (one hour).
|
| 276 |
-
ClearSystemRAMAfterMinutes: 60
|
| 277 |
-
#If true, any time you load the UI, trigger a server refresh.
|
| 278 |
-
#If false, only triggers a refresh if you restart Swarm or trigger a refresh manually from the Quick Tools menu.
|
| 279 |
-
#Defaults to true.
|
| 280 |
-
AlwaysRefreshOnLoad: true
|
| 281 |
-
#If this is set to 'true', hides the installer page. If 'false', the installer page will be shown.
|
| 282 |
-
IsInstalled: true
|
| 283 |
-
#The date that this instance was installed.
|
| 284 |
-
InstallDate: 2024-12-31
|
| 285 |
-
#The SwarmUI version that this instance was installed as.
|
| 286 |
-
InstallVersion: 0.9.4.0
|
| 287 |
-
#Ratelimit, in milliseconds, between Nvidia GPU status queries. Default is 1000 ms (1 second).
|
| 288 |
-
NvidiaQueryRateLimitMS: 1000
|
| 289 |
-
#How to launch the UI. If 'none', just quietly launch.
|
| 290 |
-
#If 'web', launch your web-browser to the page.
|
| 291 |
-
#If 'webinstall', launch web-browser to the install page.
|
| 292 |
-
#If 'electron', launch the UI in an electron window (NOT YET IMPLEMENTED).
|
| 293 |
-
LaunchMode: web
|
| 294 |
-
#If set true, some additional debugging data will be attached where relevant, such as in image metadata.
|
| 295 |
-
AddDebugData: false
|
| 296 |
-
#If set true, new/upcoming/experimental features will be visible.
|
| 297 |
-
#Enabling this will cause issues, do not expect a stable server.
|
| 298 |
-
#Do not report any bugs while this is enabled, and do not request new features related to experimental features.
|
| 299 |
-
ShowExperimentalFeatures: false
|
| 300 |
-
#If true, Swarm will check if there's any updates available during startup. If false, it will not check for updates.
|
| 301 |
-
#Update check only downloads a simple JSON from GitHub to get the current version info, it does not transmit any telemetry nor does it download any files or apply the update.
|
| 302 |
-
#Defaults to true.
|
| 303 |
-
CheckForUpdates: true
|
| 304 |
-
#If true, Swarm will automatically download and apply any development version updates as soon as they're available.
|
| 305 |
-
#Defaults to false.
|
| 306 |
-
AutoPullDevUpdates: false
|
| 307 |
-
#Settings related to authorization.
|
| 308 |
-
Authorization:
|
| 309 |
-
#If true, Swarm will require users to log in or use an API key to access the UI. If false, the UI will be open to anyone who can connect to it.
|
| 310 |
-
#Defaults to false.
|
| 311 |
-
AuthorizationRequired: false
|
| 312 |
-
#If true, a direct connection from localhost can bypass login requirements.
|
| 313 |
-
#If false, even local users will be required to login (they can just go manually edit the server settings file to toggle this though).
|
| 314 |
-
#Defaults to true.
|
| 315 |
-
AllowLocalhostBypass: true
|
| 316 |
-
#Settings related to logging.
|
| 317 |
-
Logs:
|
| 318 |
-
#The minimum tier of logs that should be visible in the console and saved to file.
|
| 319 |
-
#Default is 'info'.
|
| 320 |
-
LogLevel: Info
|
| 321 |
-
#If true, logs will be saved to a file. If false, logs will be available in console and UI while running, but never saved to file.
|
| 322 |
-
#Defaults to false.
|
| 323 |
-
#Must restart Swarm to apply.
|
| 324 |
-
SaveLogToFile: false
|
| 325 |
-
#The path for where to store log file, parsed at time of program start, relative to the Data directory.
|
| 326 |
-
#Must restart Swarm to apply.
|
| 327 |
-
#Can use [year], [month], [month_name], [day], [day_name], [hour], [minute], [second], [pid].
|
| 328 |
-
LogsPath: Logs/[year]-[month]/[day]-[hour]-[minute].log
|
| 329 |
-
#How long (in minutes) the console may be idle for before the next message should have a full date/time stamp shown in it.
|
| 330 |
-
#This is for Swarm instances that are left open for long times, to make gaps in usage clearer.
|
| 331 |
-
#This will not show at all in Swarm is used consistently smaller than this duration.
|
| 332 |
-
#Set to 9999999 to disable this behavior.
|
| 333 |
-
#Defaults to 10 minutes.
|
| 334 |
-
RepeatTimestampAfterMinutes: 10
|
| 335 |
-
#Settings related to the User Interface.
|
| 336 |
-
UI:
|
| 337 |
-
#Optionally specify a (raw HTML) welcome message here. If specified, will override the automatic welcome messages.
|
| 338 |
-
OverrideWelcomeMessage: \x
|
| 339 |
-
#Animated previews make the image history nicer when you've generated videos, but may negatively impact performance.
|
| 340 |
-
#If having image history loaded with videos generated is negatively affecting your experience, disable this checkbox.
|
| 341 |
-
#After editing this setting, use the Reset All Metadata button in the Utilities tab.
|
| 342 |
-
AllowAnimatedPreviews: true
|
| 343 |
-
#Settings related to webhooks. See documentation in <a target="_blank" href="https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Webhooks.md">the docs here</a>
|
| 344 |
-
WebHooks:
|
| 345 |
-
#Webhook to call (JSON POST) when queues are starting up from idle.
|
| 346 |
-
#Leave empty to disable any webhook.
|
| 347 |
-
#Call must return before the first generation starts.
|
| 348 |
-
QueueStartWebhook: \x
|
| 349 |
-
#If you want to send additional data with the queue start webhook, you can specify it here.
|
| 350 |
-
#This should be a JSON object, eg '{"key": "value"}'.
|
| 351 |
-
#If left blank, an empty JSON post (ie '{}') will be used.
|
| 352 |
-
QueueStartWebhookData: \x
|
| 353 |
-
#Webhook to call (JSON POST) when all queues are done and the server is going idle.
|
| 354 |
-
#Leave empty to disable any webhook.
|
| 355 |
-
#Call must return before queuing may restart.
|
| 356 |
-
QueueEndWebhook: \x
|
| 357 |
-
#If you want to send additional data with the queue end webhook, you can specify it here.
|
| 358 |
-
#This should be a JSON object, eg '{"key": "value"}'.
|
| 359 |
-
#If left blank, an empty JSON post (ie '{}') will be used.
|
| 360 |
-
QueueEndWebhookData: \x
|
| 361 |
-
#Webhook to call (JSON POST) after every generation.
|
| 362 |
-
#Leave empty to disable any webhook.
|
| 363 |
-
#Currently runs async, does not delay gen completion.
|
| 364 |
-
EveryGenWebhook: \x
|
| 365 |
-
#If you want to send additional data with the every-gen webhook, you can specify it here.
|
| 366 |
-
#This should be a JSON object, eg '{"key": "value"}'.
|
| 367 |
-
#If left blank, an empty JSON post (ie '{}') will be used.
|
| 368 |
-
#See <a target="_blank" href="https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Webhooks.md">docs Features/Webhooks</a> for info about special tags you can include in the JSON.
|
| 369 |
-
EveryGenWebhookData: \x
|
| 370 |
-
#Webhook to call (JSON POST) after gens that set Swarm internal param 'Webook' as 'Manual' or 'Manual At End'.
|
| 371 |
-
#Leave empty to disable any webhook.
|
| 372 |
-
#Currently runs async, does not delay gen completion.
|
| 373 |
-
ManualGenWebhook: \x
|
| 374 |
-
#If you want to send additional data with the 'manual gen' webhook, you can specify it here.
|
| 375 |
-
#This should be a JSON object, eg '{"key": "value"}'.
|
| 376 |
-
#If left blank, an empty JSON post (ie '{}') will be used.
|
| 377 |
-
#See <a target="_blank" href="https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Webhooks.md">docs Features/Webhooks</a> for info about special tags you can include in the JSON.
|
| 378 |
-
ManualGenWebhookData: \x
|
| 379 |
-
#How long to wait (in seconds) after all queues are done before sending the queue end webhook.
|
| 380 |
-
#This is useful to prevent rapid start+end calls.
|
| 381 |
-
QueueEndDelay: 1
|
| 382 |
-
#Settings related to server performance.
|
| 383 |
-
Performance:
|
| 384 |
-
#How likely an outdated image metadata entry is to be revalidated (ie have it's mtime checked against storage) each time an image's metadata is pulled.
|
| 385 |
-
#Default 0.05 means 5% chance.
|
| 386 |
-
#SSD users can safely set it higher. HDD users may be happier setting it to 0.
|
| 387 |
-
#Metadata is always loaded the first time an image is seen.
|
| 388 |
-
ImageDataValidationChance: 0.05
|
| 389 |
-
#Can be enabled to cache certain backend data.
|
| 390 |
-
#For example, with ComfyUI backends this will add an extended cache on the object_info data.
|
| 391 |
-
#Defaults to false.
|
| 392 |
-
DoBackendDataCache: false
|
| 393 |
-
#If true, Swarm may use GPU-specific optimizations.
|
| 394 |
-
#If false, Swarm will not try to optimize anything in a way specific to the GPU(s) you have.
|
| 395 |
-
#If you encounter error that are solved by turning this off, please report that as a bug immediately.
|
| 396 |
-
#Defaults to 'true'. Should be left as 'true' in almost all circumstances.
|
| 397 |
-
AllowGpuSpecificOptimizations: true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Data/Users-log.ldb
DELETED
|
Binary file (24.6 kB)
|
|
|
SwarmUI/Data/Users.ldb
DELETED
|
Binary file (41 kB)
|
|
|
SwarmUI/Data/comfy-auto-model.yaml
DELETED
|
@@ -1,51 +0,0 @@
|
|
| 1 |
-
swarmui:
|
| 2 |
-
base_path: /workspace/SwarmUI/Models
|
| 3 |
-
is_default: true
|
| 4 |
-
checkpoints: |
|
| 5 |
-
Stable-Diffusion
|
| 6 |
-
vae: |
|
| 7 |
-
VAE
|
| 8 |
-
loras: |
|
| 9 |
-
Lora
|
| 10 |
-
LyCORIS
|
| 11 |
-
upscale_models: |
|
| 12 |
-
ESRGAN
|
| 13 |
-
RealESRGAN
|
| 14 |
-
SwinIR
|
| 15 |
-
upscale-models
|
| 16 |
-
upscale_models
|
| 17 |
-
embeddings: |
|
| 18 |
-
Embeddings
|
| 19 |
-
embeddings
|
| 20 |
-
hypernetworks: |
|
| 21 |
-
hypernetworks
|
| 22 |
-
controlnet: |
|
| 23 |
-
controlnet
|
| 24 |
-
ControlNet
|
| 25 |
-
clip: |
|
| 26 |
-
clip
|
| 27 |
-
CLIP
|
| 28 |
-
clip_vision: |
|
| 29 |
-
clip_vision
|
| 30 |
-
unet: |
|
| 31 |
-
unet
|
| 32 |
-
diffusion_models: |
|
| 33 |
-
diffusion_models
|
| 34 |
-
gligen: |
|
| 35 |
-
gligen
|
| 36 |
-
ipadapter: |
|
| 37 |
-
ipadapter
|
| 38 |
-
yolov8: |
|
| 39 |
-
yolov8
|
| 40 |
-
tensorrt: |
|
| 41 |
-
tensorrt
|
| 42 |
-
clipseg: |
|
| 43 |
-
clipseg
|
| 44 |
-
style_models: |
|
| 45 |
-
style_models
|
| 46 |
-
|
| 47 |
-
# Explicitly separate the _nodes list to prevent it from being is_default
|
| 48 |
-
swarmui_nodes:
|
| 49 |
-
custom_nodes: |
|
| 50 |
-
/workspace/SwarmUI/src/BuiltinExtensions/ComfyUIBackend/DLNodes
|
| 51 |
-
/workspace/SwarmUI/src/BuiltinExtensions/ComfyUIBackend/ExtraNodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/LICENSE.txt
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
The MIT License (MIT)
|
| 2 |
-
|
| 3 |
-
Copyright (c) 2024 Alex "mcmonkey" Goodwin
|
| 4 |
-
|
| 5 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
-
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
-
in the Software without restriction, including without limitation the rights
|
| 8 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
-
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
-
furnished to do so, subject to the following conditions:
|
| 11 |
-
|
| 12 |
-
The above copyright notice and this permission notice shall be included in all
|
| 13 |
-
copies or substantial portions of the Software.
|
| 14 |
-
|
| 15 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
-
SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/Lora/model_metadata.ldb
DELETED
|
Binary file (188 kB)
|
|
|
SwarmUI/Models/Stable-Diffusion/Flux/model_metadata.ldb
DELETED
|
Binary file (123 kB)
|
|
|
SwarmUI/Models/Stable-Diffusion/OfficialStableDiffusion/model_metadata.ldb
DELETED
|
Binary file (65.5 kB)
|
|
|
SwarmUI/Models/VAE/model_metadata.ldb
DELETED
|
Binary file (32.8 kB)
|
|
|
SwarmUI/Models/clip_vision/model_metadata.ldb
DELETED
|
Binary file (32.8 kB)
|
|
|
SwarmUI/Models/clip_vision/sigclip_vision_patch14_384.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:1fee501deabac72f0ed17610307d7131e3e9d1e838d0363aa3c2b97a6e03fb33
|
| 3 |
-
size 856505640
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/diffusion_models/model_metadata.ldb
DELETED
|
Binary file (262 kB)
|
|
|
SwarmUI/Models/style_models/flux1-redux-dev.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:a1b3bdcb4bdc58ce04874b9ca776d61fc3e914bb6beab41efb63e4e2694dca45
|
| 3 |
-
size 129063232
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/unet/model_metadata.ldb
DELETED
|
Binary file (57.3 kB)
|
|
|
SwarmUI/Models/upscale_models/4x_NMKD-Siax_200k.pth
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:560424d9f68625713fc47e9e7289a98aabe1d744e1cd6a9ae5a35e9957fd127e
|
| 3 |
-
size 66957746
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/vae/ae.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:afc8e28272cd15db3919bacdb6918ce9c1ed22e96cb12c4d5ed0fba823529e38
|
| 3 |
-
size 335304388
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/yolov8/face_yolov9c.pt
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:d02fe493c31e1bbc6450f4dc6f1db86a02a59322ff1f6d318da0661d72ddd084
|
| 3 |
-
size 51648019
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/yolov8/man_face.pt
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:184b9a680afb3c4a559e46e2fe692338fe7bdd6267979fa4ef10526fa96c1b31
|
| 3 |
-
size 6354855
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Models/yolov8/woman_face.pt
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:84db37616e1ca975c4e23fa5a300acf0edd9144ec287bbbdbd1ad0f4a3afa9c1
|
| 3 |
-
size 6363111
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_4.metadata.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
all_metadata["0_4"] = {
|
| 2 |
-
"sui_image_params": {
|
| 3 |
-
"prompt": "A white dragon with same features",
|
| 4 |
-
"model": "flux1-dev",
|
| 5 |
-
"usestylemodel": "flux1-redux-dev.safetensors",
|
| 6 |
-
"stylemodelmergestrength": 0.4,
|
| 7 |
-
"stylemodelmultiplystrength": 0.0,
|
| 8 |
-
"seed": 1762010685,
|
| 9 |
-
"steps": 40,
|
| 10 |
-
"cfgscale": 1.0,
|
| 11 |
-
"aspectratio": "1:1",
|
| 12 |
-
"width": 1024,
|
| 13 |
-
"height": 1024,
|
| 14 |
-
"fluxguidancescale": 6.0,
|
| 15 |
-
"preferreddtype": "fp8_e4m3fn",
|
| 16 |
-
"automaticvae": true,
|
| 17 |
-
"nopreviews": true,
|
| 18 |
-
"negativeprompt": "",
|
| 19 |
-
"swarm_version": "0.9.4.0"
|
| 20 |
-
},
|
| 21 |
-
"sui_extra_data": {
|
| 22 |
-
"date": "2025-01-04",
|
| 23 |
-
"generation_time": "0.04 (prep) and 46.11 (gen) seconds"
|
| 24 |
-
}
|
| 25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_4.png
DELETED
Git LFS Details
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_5.metadata.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
all_metadata["0_5"] = {
|
| 2 |
-
"sui_image_params": {
|
| 3 |
-
"prompt": "A white dragon with same features",
|
| 4 |
-
"model": "flux1-dev",
|
| 5 |
-
"usestylemodel": "flux1-redux-dev.safetensors",
|
| 6 |
-
"stylemodelmergestrength": 0.5,
|
| 7 |
-
"stylemodelmultiplystrength": 0.0,
|
| 8 |
-
"seed": 1762010685,
|
| 9 |
-
"steps": 40,
|
| 10 |
-
"cfgscale": 1.0,
|
| 11 |
-
"aspectratio": "1:1",
|
| 12 |
-
"width": 1024,
|
| 13 |
-
"height": 1024,
|
| 14 |
-
"fluxguidancescale": 6.0,
|
| 15 |
-
"preferreddtype": "fp8_e4m3fn",
|
| 16 |
-
"automaticvae": true,
|
| 17 |
-
"nopreviews": true,
|
| 18 |
-
"negativeprompt": "",
|
| 19 |
-
"swarm_version": "0.9.4.0"
|
| 20 |
-
},
|
| 21 |
-
"sui_extra_data": {
|
| 22 |
-
"date": "2025-01-04",
|
| 23 |
-
"generation_time": "46.12 (prep) and 45.80 (gen) seconds"
|
| 24 |
-
}
|
| 25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_5.png
DELETED
Git LFS Details
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_6.metadata.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
all_metadata["0_6"] = {
|
| 2 |
-
"sui_image_params": {
|
| 3 |
-
"prompt": "A white dragon with same features",
|
| 4 |
-
"model": "flux1-dev",
|
| 5 |
-
"usestylemodel": "flux1-redux-dev.safetensors",
|
| 6 |
-
"stylemodelmergestrength": 0.6,
|
| 7 |
-
"stylemodelmultiplystrength": 0.0,
|
| 8 |
-
"seed": 1762010685,
|
| 9 |
-
"steps": 40,
|
| 10 |
-
"cfgscale": 1.0,
|
| 11 |
-
"aspectratio": "1:1",
|
| 12 |
-
"width": 1024,
|
| 13 |
-
"height": 1024,
|
| 14 |
-
"fluxguidancescale": 6.0,
|
| 15 |
-
"preferreddtype": "fp8_e4m3fn",
|
| 16 |
-
"automaticvae": true,
|
| 17 |
-
"nopreviews": true,
|
| 18 |
-
"negativeprompt": "",
|
| 19 |
-
"swarm_version": "0.9.4.0"
|
| 20 |
-
},
|
| 21 |
-
"sui_extra_data": {
|
| 22 |
-
"date": "2025-01-04",
|
| 23 |
-
"generation_time": "91.90 (prep) and 45.85 (gen) seconds"
|
| 24 |
-
}
|
| 25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/0_6.png
DELETED
Git LFS Details
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/bootstrap.bundle.min.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
/*!
|
| 2 |
-
* Bootstrap v5.2.2 (https://getbootstrap.com/)
|
| 3 |
-
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
| 4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
| 5 |
-
*/
|
| 6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=Vt(O),k=de(O)===wt,L=[gt,mt].indexOf(x)>=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ze(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:Ft(t)?Ce(t):t.contextElement?Ce(t.contextElement):[],popper:Ce(e)};var r,c,u=function(t){var e=We(t);return $t.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Fe(e,i)){a.rects={reference:$e(e,oe(i),"fixed"===a.options.strategy),popper:Jt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Fe(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var qe=ze(),Re=ze({defaultModifiers:[me,Me,pe,Rt]}),Ve=ze({defaultModifiers:[me,Me,pe,Rt,je,Se,He,he,Pe]});const Ke=Object.freeze(Object.defineProperty({__proto__:null,popperGenerator:ze,detectOverflow:Le,createPopperBase:qe,createPopper:Ve,createPopperLite:Re,top:gt,bottom:mt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:At,clippingParents:Et,viewport:Tt,popper:Ct,reference:Ot,variationPlacements:xt,placements:kt,beforeRead:Lt,read:Dt,afterRead:St,beforeMain:It,main:Nt,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:$t,applyStyles:Rt,arrow:he,computeStyles:pe,eventListeners:me,flip:Se,hide:Pe,offset:je,popperOffsets:Me,preventOverflow:He},Symbol.toStringTag,{value:"Module"})),Qe="dropdown",Xe="ArrowUp",Ye="ArrowDown",Ue="click.bs.dropdown.data-api",Ge="keydown.bs.dropdown.data-api",Je="show",Ze='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ti=`${Ze}.show`,ei=".dropdown-menu",ii=p()?"top-end":"top-start",ni=p()?"top-start":"top-end",si=p()?"bottom-end":"bottom-start",oi=p()?"bottom-start":"bottom-end",ri=p()?"left-start":"right-start",ai=p()?"right-start":"left-start",li={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ci={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class hi extends z{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Q.next(this._element,ei)[0]||Q.prev(this._element,ei)[0]||Q.findOne(ei,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Qe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),P.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Qe.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ke)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Ve(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Je)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this.tip&&this.tip.remove(),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/bootstrap.min.css
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/data.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
| 1 |
-
rawData = {
|
| 2 |
-
"title": "Grids/grid-2025-01-04-15-36-11",
|
| 3 |
-
"description": "",
|
| 4 |
-
"ext": "png",
|
| 5 |
-
"min_width": 1024,
|
| 6 |
-
"min_height": 1024,
|
| 7 |
-
"defaults": {
|
| 8 |
-
"show_descriptions": true,
|
| 9 |
-
"autoscale": false,
|
| 10 |
-
"sticky": false,
|
| 11 |
-
"sticky_labels": true,
|
| 12 |
-
"x": "stylemodelmergestrength",
|
| 13 |
-
"y": "stylemodelmergestrength",
|
| 14 |
-
"x2": "none",
|
| 15 |
-
"y2": "none"
|
| 16 |
-
},
|
| 17 |
-
"will_run": true,
|
| 18 |
-
"metadata": null,
|
| 19 |
-
"axes": [
|
| 20 |
-
{
|
| 21 |
-
"id": "stylemodelmergestrength",
|
| 22 |
-
"title": "Style Model Merge Strength",
|
| 23 |
-
"description": "",
|
| 24 |
-
"values": [
|
| 25 |
-
{
|
| 26 |
-
"key": "0_4",
|
| 27 |
-
"path": "0_4",
|
| 28 |
-
"title": "0.4",
|
| 29 |
-
"description": "",
|
| 30 |
-
"show": true,
|
| 31 |
-
"params": {
|
| 32 |
-
"stylemodelmergestrength": "0.4"
|
| 33 |
-
}
|
| 34 |
-
},
|
| 35 |
-
{
|
| 36 |
-
"key": "0_5",
|
| 37 |
-
"path": "0_5",
|
| 38 |
-
"title": "0.5",
|
| 39 |
-
"description": "",
|
| 40 |
-
"show": true,
|
| 41 |
-
"params": {
|
| 42 |
-
"stylemodelmergestrength": "0.5"
|
| 43 |
-
}
|
| 44 |
-
},
|
| 45 |
-
{
|
| 46 |
-
"key": "0_6",
|
| 47 |
-
"path": "0_6",
|
| 48 |
-
"title": "0.6",
|
| 49 |
-
"description": "",
|
| 50 |
-
"show": true,
|
| 51 |
-
"params": {
|
| 52 |
-
"stylemodelmergestrength": "0.6"
|
| 53 |
-
}
|
| 54 |
-
}
|
| 55 |
-
]
|
| 56 |
-
}
|
| 57 |
-
]
|
| 58 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/image_metadata.ldb
DELETED
|
Binary file (32.8 kB)
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/index.html
DELETED
|
@@ -1,132 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<head>
|
| 3 |
-
<meta charset="utf-8" />
|
| 4 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 5 |
-
<link rel="stylesheet" href="bootstrap.min.css" media="screen">
|
| 6 |
-
<link rel="stylesheet" href="styles.css?vary=0.9.4.0" media="screen">
|
| 7 |
-
<link rel="stylesheet" href="styles-user.css?vary=0.9.4.0" media="screen">
|
| 8 |
-
<title>Grids/grid-2025-01-04-15-36-11</title>
|
| 9 |
-
<meta name="description" content="" />
|
| 10 |
-
<script src="jquery.min.js"></script>
|
| 11 |
-
</head>
|
| 12 |
-
<body>
|
| 13 |
-
<div class="content_box">
|
| 14 |
-
<h1>Grids/grid-2025-01-04-15-36-11</h1>
|
| 15 |
-
<h4></h4>
|
| 16 |
-
<noscript>This page requires JavaScript to work. Don't worry, it's all local to the current page, and open source on GitHub.</noscript>
|
| 17 |
-
<hr>
|
| 18 |
-
<div class="top_nav_bar" id="top_nav_bar">
|
| 19 |
-
<div class="accordion navigation_accordion" id="navigation_accordion">
|
| 20 |
-
<div class="accordion-item">
|
| 21 |
-
<h2 class="accordion-header" id="navigation_accordion_heading">
|
| 22 |
-
<button class="accordion-button" type="button" id="toggle_nav_button" data-bs-toggle="collapse" data-bs-target="#navigation_accordion_collapse" aria-expanded="true" aria-controls="navigation_accordion_collapse">Navigation</button>
|
| 23 |
-
</h2>
|
| 24 |
-
<div id="navigation_accordion_collapse" class="accordion-collapse collapse show" aria-labelledby="navigation_accordion_heading" data-bs-parent="navigation_accordion">
|
| 25 |
-
<div class="accordion-body">
|
| 26 |
-
<div>
|
| 27 |
-
<div class="accordion advanced_settings_section" id="settings_accordion">
|
| 28 |
-
<div class="accordion-item">
|
| 29 |
-
<h2 class="accordion-header" id="setting_accordion_heading">
|
| 30 |
-
<button class="accordion-button collapsed" id="toggle_adv_button" type="button" data-bs-toggle="collapse" data-bs-target="#settings_accordion_collapse" aria-expanded="false" aria-controls="settings_accordion_collapse">Advanced Settings</button>
|
| 31 |
-
</h2>
|
| 32 |
-
<div id="settings_accordion_collapse" class="accordion-collapse collapse" aria-labelledby="setting_accordion_heading" data-bs-parent="#settings_accordion">
|
| 33 |
-
<div class="accordion-body">
|
| 34 |
-
|
| 35 |
-
<h4>Style Model Merge Strength</h4><div class="timer_box">Auto cycle every <input style="width:30em;" autocomplete="off" type="range" min="0" max="360" value="0" class="form-range timer_range" id="range_tablist_stylemodelmergestrength"><label class="form-check-label" for="range_tablist_stylemodelmergestrength" id="label_range_tablist_stylemodelmergestrength">0 seconds</label></div>
|
| 36 |
-
Show value: <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_4" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_4')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_4" title="Uncheck this to hide '0.4' from the page.">0.4</label></div> <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_5" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_5')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_5" title="Uncheck this to hide '0.5' from the page.">0.5</label></div> <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_6" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_6')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_6" title="Uncheck this to hide '0.6' from the page.">0.6</label></div> <button class="submit" onclick="javascript:toggleShowAllAxis('stylemodelmergestrength')">Toggle All</button>
|
| 37 |
-
</div>
|
| 38 |
-
</div>
|
| 39 |
-
</div>
|
| 40 |
-
</div>
|
| 41 |
-
</div>
|
| 42 |
-
<br>
|
| 43 |
-
<div style="margin: auto; width: fit-content;"><table class="sel_table">
|
| 44 |
-
<tr class="primary">
|
| 45 |
-
<td>
|
| 46 |
-
<h4>Style Model Merge Strength</h4>
|
| 47 |
-
<div class="axis_table_cell emptytab"></div></td>
|
| 48 |
-
<td><ul class="nav nav-tabs" role="tablist" id="tablist_stylemodelmergestrength">
|
| 49 |
-
<li class="nav-item" role="presentation"><a class="nav-link active" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_4" id="clicktab_stylemodelmergestrength__0_4" aria-selected="true" role="tab" title="0.4: ">0.4</a></li>
|
| 50 |
-
<li class="nav-item" role="presentation"><a class="nav-link" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_5" id="clicktab_stylemodelmergestrength__0_5" aria-selected="false" role="tab" title="0.5: ">0.5</a></li>
|
| 51 |
-
<li class="nav-item" role="presentation"><a class="nav-link" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_6" id="clicktab_stylemodelmergestrength__0_6" aria-selected="false" role="tab" title="0.6: ">0.6</a></li>
|
| 52 |
-
</ul>
|
| 53 |
-
<div class="tab-content">
|
| 54 |
-
<div class="tab-pane active show emptytab" id="tab_stylemodelmergestrength__0_4" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 55 |
-
<div class="tab-pane emptytab" id="tab_stylemodelmergestrength__0_5" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 56 |
-
<div class="tab-pane emptytab" id="tab_stylemodelmergestrength__0_6" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 57 |
-
</div></td></tr>
|
| 58 |
-
</table>
|
| 59 |
-
<div class="axis_selectors"><br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">X Axis:
|
| 60 |
-
<input type="radio" class="btn-check" name="x_axis_selector" id="x_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 61 |
-
</div>
|
| 62 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">Y Axis:
|
| 63 |
-
<input type="radio" class="btn-check" name="y_axis_selector" id="y_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 64 |
-
</div>
|
| 65 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">X Super-Axis:
|
| 66 |
-
<input type="radio" class="btn-check" name="x2_axis_selector" id="x2_none" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x2_none" title="None">None</label>
|
| 67 |
-
<input type="radio" class="btn-check" name="x2_axis_selector" id="x2_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x2_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 68 |
-
</div>
|
| 69 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">Y Super-Axis:
|
| 70 |
-
<input type="radio" class="btn-check" name="y2_axis_selector" id="y2_none" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y2_none" title="None">None</label>
|
| 71 |
-
<input type="radio" class="btn-check" name="y2_axis_selector" id="y2_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y2_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 72 |
-
</div>
|
| 73 |
-
</div></div>
|
| 74 |
-
|
| 75 |
-
<center>
|
| 76 |
-
<input class="form-check-input" type="checkbox" id="showDescriptions" checked="true" autocomplete="off" onchange="javascript:toggleDescriptions()"> <label class="form-check-label" for="showDescriptions" title="Uncheck this to focus on the grid. Check it to see the full descriptions of each option.">Show descriptions of axes and values</label>
|
| 77 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" value="" id="autoScaleImages"> <label class="form-check-label" for="autoScaleImages">Auto-scale images to viewport width</label>
|
| 78 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" value="" id="stickyNavigation"> <label class="form-check-label" for="stickyNavigation">Sticky navigation</label>
|
| 79 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" checked id="stickyLabels"> <label class="form-check-label" for="stickyLabels">Sticky labels</label>
|
| 80 |
-
  <span id="score_setting">Score Display: <select id="score_display"><option>None</option><option>Thin Outline</option><option>Thick Bars</option><option>Heatmap</option></select></span>
|
| 81 |
-
  <span title="This only applies to video files (mp4, webm, mov) and does not apply to 'animated images' (gif, webp)"><input class="form-check-input" type="checkbox" autocomplete="off" id="pauseVideos"> <label class="form-check-label" for="pauseVideos">Pause Videos</label></span>
|
| 82 |
-
</center>
|
| 83 |
-
</div>
|
| 84 |
-
</div>
|
| 85 |
-
</div>
|
| 86 |
-
</div>
|
| 87 |
-
<div id="save_image_helper" class="save_image_area">
|
| 88 |
-
<button onclick="makeImage()">Save Image Of Current View</button> <select title="Image Type" id="makeimage_type"><option>jpeg</option><option>png</option></select> <select title="Image Size" id="makeimage_size"><option selected>1x</option><option>0.75x</option><option>0.5x</option><option>0.25x</option></select>
|
| 89 |
-
 <button onclick="makeGif()">Create Axis GIF Animation</button> <select title="Axis" id="makegif_axis"><option value="x-axis">X Axis</option></select> <select title="GIF Size" id="makegif_size"><option>1x</option><option>0.75x</option><option selected>0.5x</option><option>0.25x</option></select> <select title="GIF Speed" id="makegif_speed"><option>1/s</option><option>2/s</option><option>3/s</option><option selected>4/s</option><option>5/s</option><option>10/s</option></select><select title="GIF Direction" id="makegif_direction"><option>Forwards</option><option>Backwards</option></select>
|
| 90 |
-
<div id="save_image_info" style="display: none;">Here's your image! To share it, just use right click -> Copy image or Save Image As</div>
|
| 91 |
-
</div>
|
| 92 |
-
</div>
|
| 93 |
-
<div class="image_table_box">
|
| 94 |
-
<table class="image_table" id="image_table"></table>
|
| 95 |
-
<table id="image_script_dump"></table>
|
| 96 |
-
</div>
|
| 97 |
-
</div>
|
| 98 |
-
<div class="modal modal-fullscreen popup_modal_background" id="image_info_modal"></div>
|
| 99 |
-
<div class="modal" tabindex="-1" id="save_image_output_modal">
|
| 100 |
-
<div class="modal-dialog modal-xl">
|
| 101 |
-
<div class="modal-content">
|
| 102 |
-
<div class="modal-header">
|
| 103 |
-
<h5 class="modal-title">Here's your image!</h5>
|
| 104 |
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
| 105 |
-
</div>
|
| 106 |
-
<div class="modal-body">
|
| 107 |
-
<p>To share it, just use right click -> Copy image or Save Image As.</p>
|
| 108 |
-
<div id="save_image_output" class="save_image_output"></div>
|
| 109 |
-
</div>
|
| 110 |
-
</div>
|
| 111 |
-
</div>
|
| 112 |
-
</div>
|
| 113 |
-
<br><div style="width:256px;height:512px;"></div> <!-- Spacer to reduce screen-jumping if images load while you're scrolled down -->
|
| 114 |
-
<footer>
|
| 115 |
-
<center>
|
| 116 |
-
<hr>
|
| 117 |
-
Created by: Unspecified
|
| 118 |
-
<br>The technology that powers this page is <a href="https://github.com/mcmonkeyprojects/sd-infinity-grid-generator-script">Infinity Grid Generator</a>, published under the MIT license by Alex 'mcmonkey' Goodwin.
|
| 119 |
-
<br>This software allows users to generate pages with any content they desire. Therefore, content on this page (images, text, etc.) is the property of whoever generated this specific page.
|
| 120 |
-
<br>Images area auto-generated by an AI (Stable Diffusion) and so may not have been reviewed by the page author before publishing.
|
| 121 |
-
<script src="swarmui_gridgen_local.js?vary=0.9.4.0.GIT-fba88ca5"></script>
|
| 122 |
-
<br>Made using the <a href="https://bootswatch.com/darkly/">Darkly Bootstrap Theme</a> by Thomas Park, which was released under the <a href="https://github.com/thomaspark/bootswatch/blob/95df99d76147797cbcb1014b639805add2327f65/LICENSE">MIT License</a>.
|
| 123 |
-
<br>Gifs are generated using <a href="https://github.com/antimatter15/jsgif">JSGif</a>, which was released under the <a href="https://github.com/antimatter15/jsgif/blob/b46429c50a53d23b762d6ebb00b375aece3ed843/LICENSE">MIT License</a>.
|
| 124 |
-
<br>
|
| 125 |
-
<br><div style="width:256px;height:512px;"></div>
|
| 126 |
-
</center>
|
| 127 |
-
</footer>
|
| 128 |
-
<script src="bootstrap.bundle.min.js"></script>
|
| 129 |
-
<script src="jsgif.js"></script>
|
| 130 |
-
<script src="data.js?vary=0.9.4.0"></script>
|
| 131 |
-
<script src="proc.js?vary=0.9.4.0"></script>
|
| 132 |
-
</body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/jquery.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
| 2 |
-
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/jsgif.js
DELETED
|
@@ -1,1385 +0,0 @@
|
|
| 1 |
-
/**
|
| 2 |
-
* This class lets you encode animated GIF files
|
| 3 |
-
* Base class : http://www.java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm
|
| 4 |
-
* @author Kevin Weiner (original Java version - kweiner@fmsware.com)
|
| 5 |
-
* @author Thibault Imbert (AS3 version - bytearray.org)
|
| 6 |
-
* @author Kevin Kwok (JavaScript version - https://github.com/antimatter15/jsgif)
|
| 7 |
-
* @version 0.1 AS3 implementation
|
| 8 |
-
*/
|
| 9 |
-
|
| 10 |
-
GIFEncoder = function() {
|
| 11 |
-
|
| 12 |
-
for (var i = 0, chr = {}; i < 256; i++)
|
| 13 |
-
chr[i] = String.fromCharCode(i);
|
| 14 |
-
|
| 15 |
-
function ByteArray() {
|
| 16 |
-
this.bin = [];
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
-
ByteArray.prototype.getData = function() {
|
| 20 |
-
for (var v = '', l = this.bin.length, i = 0; i < l; i++)
|
| 21 |
-
v += chr[this.bin[i]];
|
| 22 |
-
return v;
|
| 23 |
-
};
|
| 24 |
-
|
| 25 |
-
ByteArray.prototype.writeByte = function(val) {
|
| 26 |
-
this.bin.push(val);
|
| 27 |
-
};
|
| 28 |
-
|
| 29 |
-
ByteArray.prototype.writeUTFBytes = function(string) {
|
| 30 |
-
for (var l = string.length, i = 0; i < l; i++)
|
| 31 |
-
this.writeByte(string.charCodeAt(i));
|
| 32 |
-
};
|
| 33 |
-
|
| 34 |
-
ByteArray.prototype.writeBytes = function(array, offset, length) {
|
| 35 |
-
for (var l = length || array.length, i = offset || 0; i < l; i++)
|
| 36 |
-
this.writeByte(array[i]);
|
| 37 |
-
};
|
| 38 |
-
|
| 39 |
-
var exports = {};
|
| 40 |
-
var width; // image size
|
| 41 |
-
var height;
|
| 42 |
-
var transparent = null; // transparent color if given
|
| 43 |
-
var transIndex; // transparent index in color table
|
| 44 |
-
var repeat = -1; // no repeat
|
| 45 |
-
var delay = 0; // frame delay (hundredths)
|
| 46 |
-
var started = false; // ready to output frames
|
| 47 |
-
var out;
|
| 48 |
-
var image; // current frame
|
| 49 |
-
var pixels; // BGR byte array from frame
|
| 50 |
-
var indexedPixels; // converted frame indexed to palette
|
| 51 |
-
var colorDepth; // number of bit planes
|
| 52 |
-
var colorTab; // RGB palette
|
| 53 |
-
var usedEntry = []; // active palette entries
|
| 54 |
-
var palSize = 7; // color table size (bits-1)
|
| 55 |
-
var dispose = -1; // disposal code (-1 = use default)
|
| 56 |
-
var closeStream = false; // close stream when finished
|
| 57 |
-
var firstFrame = true;
|
| 58 |
-
var sizeSet = false; // if false, get size from first frame
|
| 59 |
-
var sample = 10; // default sample interval for quantizer
|
| 60 |
-
var comment = "Generated by jsgif (https://github.com/antimatter15/jsgif/)"; // default comment for generated gif
|
| 61 |
-
|
| 62 |
-
/**
|
| 63 |
-
* Sets the delay time between each frame, or changes it for subsequent frames
|
| 64 |
-
* (applies to last frame added)
|
| 65 |
-
* int delay time in milliseconds
|
| 66 |
-
* @param ms
|
| 67 |
-
*/
|
| 68 |
-
|
| 69 |
-
var setDelay = exports.setDelay = function setDelay(ms) {
|
| 70 |
-
delay = Math.round(ms / 10);
|
| 71 |
-
};
|
| 72 |
-
|
| 73 |
-
/**
|
| 74 |
-
* Sets the GIF frame disposal code for the last added frame and any
|
| 75 |
-
*
|
| 76 |
-
* subsequent frames. Default is 0 if no transparent color has been set,
|
| 77 |
-
* otherwise 2.
|
| 78 |
-
* @param code
|
| 79 |
-
* int disposal code.
|
| 80 |
-
*/
|
| 81 |
-
|
| 82 |
-
var setDispose = exports.setDispose = function setDispose(code) {
|
| 83 |
-
if (code >= 0) dispose = code;
|
| 84 |
-
};
|
| 85 |
-
|
| 86 |
-
/**
|
| 87 |
-
* Sets the number of times the set of GIF frames should be played. Default is
|
| 88 |
-
* 1; 0 means play indefinitely. Must be invoked before the first image is
|
| 89 |
-
* added.
|
| 90 |
-
*
|
| 91 |
-
* @param iter
|
| 92 |
-
* int number of iterations.
|
| 93 |
-
* @return
|
| 94 |
-
*/
|
| 95 |
-
|
| 96 |
-
var setRepeat = exports.setRepeat = function setRepeat(iter) {
|
| 97 |
-
if (iter >= 0) repeat = iter;
|
| 98 |
-
};
|
| 99 |
-
|
| 100 |
-
/**
|
| 101 |
-
* Sets the transparent color for the last added frame and any subsequent
|
| 102 |
-
* frames. Since all colors are subject to modification in the quantization
|
| 103 |
-
* process, the color in the final palette for each frame closest to the given
|
| 104 |
-
* color becomes the transparent color for that frame. May be set to null to
|
| 105 |
-
* indicate no transparent color.
|
| 106 |
-
* @param
|
| 107 |
-
* Color to be treated as transparent on display.
|
| 108 |
-
*/
|
| 109 |
-
|
| 110 |
-
var setTransparent = exports.setTransparent = function setTransparent(c) {
|
| 111 |
-
transparent = c;
|
| 112 |
-
};
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
/**
|
| 116 |
-
* Sets the comment for the block comment
|
| 117 |
-
* @param
|
| 118 |
-
* string to be insterted as comment
|
| 119 |
-
*/
|
| 120 |
-
|
| 121 |
-
var setComment = exports.setComment = function setComment(c) {
|
| 122 |
-
comment = c;
|
| 123 |
-
};
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
/**
|
| 128 |
-
* The addFrame method takes an incoming BitmapData object to create each frames
|
| 129 |
-
* @param
|
| 130 |
-
* BitmapData object to be treated as a GIF's frame
|
| 131 |
-
*/
|
| 132 |
-
|
| 133 |
-
var addFrame = exports.addFrame = function addFrame(im, is_imageData) {
|
| 134 |
-
|
| 135 |
-
if ((im === null) || !started || out === null) {
|
| 136 |
-
throw new Error("Please call start method before calling addFrame");
|
| 137 |
-
}
|
| 138 |
-
|
| 139 |
-
var ok = true;
|
| 140 |
-
|
| 141 |
-
try {
|
| 142 |
-
if (!is_imageData) {
|
| 143 |
-
image = im.getImageData(0, 0, im.canvas.width, im.canvas.height).data;
|
| 144 |
-
if (!sizeSet) setSize(im.canvas.width, im.canvas.height);
|
| 145 |
-
} else {
|
| 146 |
-
if(im instanceof ImageData) {
|
| 147 |
-
image = im.data;
|
| 148 |
-
if(!sizeset || width!=im.width || height!=im.height) {
|
| 149 |
-
setSize(im.width,im.height);
|
| 150 |
-
} else {
|
| 151 |
-
|
| 152 |
-
}
|
| 153 |
-
} else if(im instanceof Uint8ClampedArray) {
|
| 154 |
-
if(im.length==(width*height*4)) {
|
| 155 |
-
image=im;
|
| 156 |
-
} else {
|
| 157 |
-
console.log("Please set the correct size: ImageData length mismatch");
|
| 158 |
-
ok=false;
|
| 159 |
-
}
|
| 160 |
-
} else {
|
| 161 |
-
console.log("Please provide correct input");
|
| 162 |
-
ok=false;
|
| 163 |
-
}
|
| 164 |
-
}
|
| 165 |
-
getImagePixels(); // convert to correct format if necessary
|
| 166 |
-
analyzePixels(); // build color table & map pixels
|
| 167 |
-
|
| 168 |
-
if (firstFrame) {
|
| 169 |
-
writeLSD(); // logical screen descriptior
|
| 170 |
-
writePalette(); // global color table
|
| 171 |
-
if (repeat >= 0) {
|
| 172 |
-
// use NS app extension to indicate reps
|
| 173 |
-
writeNetscapeExt();
|
| 174 |
-
}
|
| 175 |
-
}
|
| 176 |
-
|
| 177 |
-
writeGraphicCtrlExt(); // write graphic control extension
|
| 178 |
-
if (comment !== '') {
|
| 179 |
-
writeCommentExt(); // write comment extension
|
| 180 |
-
}
|
| 181 |
-
writeImageDesc(); // image descriptor
|
| 182 |
-
if (!firstFrame) writePalette(); // local color table
|
| 183 |
-
writePixels(); // encode and write pixel data
|
| 184 |
-
firstFrame = false;
|
| 185 |
-
} catch (e) {
|
| 186 |
-
ok = false;
|
| 187 |
-
}
|
| 188 |
-
|
| 189 |
-
return ok;
|
| 190 |
-
};
|
| 191 |
-
|
| 192 |
-
/**
|
| 193 |
-
* @description: Downloads the encoded gif with the given name
|
| 194 |
-
* No need of any conversion from the stream data (out) to base64
|
| 195 |
-
* Solves the issue of large file sizes when there are more frames
|
| 196 |
-
* and does not involve in creation of any temporary data in the process
|
| 197 |
-
* so no wastage of memory, and speeds up the process of downloading
|
| 198 |
-
* to just calling this function.
|
| 199 |
-
* @parameter {String} filename filename used for downloading the gif
|
| 200 |
-
*/
|
| 201 |
-
|
| 202 |
-
var download = exports.download = function download(filename) {
|
| 203 |
-
if(out===null || closeStream==false) {
|
| 204 |
-
console.log("Please call start method and add frames and call finish method before calling download");
|
| 205 |
-
} else {
|
| 206 |
-
filename= filename !== undefined ? ( filename.endsWith(".gif")? filename: filename+".gif" ): "download.gif";
|
| 207 |
-
var templink = document.createElement("a");
|
| 208 |
-
templink.download=filename;
|
| 209 |
-
templink.href= URL.createObjectURL(new Blob([new Uint8Array(out.bin)], {type : "image/gif" } ));
|
| 210 |
-
templink.click();
|
| 211 |
-
}
|
| 212 |
-
}
|
| 213 |
-
|
| 214 |
-
/**
|
| 215 |
-
* Adds final trailer to the GIF stream, if you don't call the finish method
|
| 216 |
-
* the GIF stream will not be valid.
|
| 217 |
-
*/
|
| 218 |
-
|
| 219 |
-
var finish = exports.finish = function finish() {
|
| 220 |
-
|
| 221 |
-
if (!started) return false;
|
| 222 |
-
|
| 223 |
-
var ok = true;
|
| 224 |
-
started = false;
|
| 225 |
-
|
| 226 |
-
try {
|
| 227 |
-
out.writeByte(0x3b); // gif trailer
|
| 228 |
-
closeStream=true;
|
| 229 |
-
} catch (e) {
|
| 230 |
-
ok = false;
|
| 231 |
-
}
|
| 232 |
-
|
| 233 |
-
return ok;
|
| 234 |
-
};
|
| 235 |
-
|
| 236 |
-
/**
|
| 237 |
-
* Resets some members so that a new stream can be started.
|
| 238 |
-
* This method is actually called by the start method
|
| 239 |
-
*/
|
| 240 |
-
|
| 241 |
-
var reset = function reset() {
|
| 242 |
-
|
| 243 |
-
// reset for subsequent use
|
| 244 |
-
transIndex = 0;
|
| 245 |
-
image = null;
|
| 246 |
-
pixels = null;
|
| 247 |
-
indexedPixels = null;
|
| 248 |
-
colorTab = null;
|
| 249 |
-
closeStream = false;
|
| 250 |
-
firstFrame = true;
|
| 251 |
-
};
|
| 252 |
-
|
| 253 |
-
/**
|
| 254 |
-
* * Sets frame rate in frames per second. Equivalent to
|
| 255 |
-
* <code>setDelay(1000/fps)</code>.
|
| 256 |
-
* @param fps
|
| 257 |
-
* float frame rate (frames per second)
|
| 258 |
-
*/
|
| 259 |
-
|
| 260 |
-
var setFrameRate = exports.setFrameRate = function setFrameRate(fps) {
|
| 261 |
-
if (fps != 0xf) delay = Math.round(100 / fps);
|
| 262 |
-
};
|
| 263 |
-
|
| 264 |
-
/**
|
| 265 |
-
* Sets quality of color quantization (conversion of images to the maximum 256
|
| 266 |
-
* colors allowed by the GIF specification). Lower values (minimum = 1)
|
| 267 |
-
* produce better colors, but slow processing significantly. 10 is the
|
| 268 |
-
* default, and produces good color mapping at reasonable speeds. Values
|
| 269 |
-
* greater than 20 do not yield significant improvements in speed.
|
| 270 |
-
* @param quality
|
| 271 |
-
* int greater than 0.
|
| 272 |
-
* @return
|
| 273 |
-
*/
|
| 274 |
-
|
| 275 |
-
var setQuality = exports.setQuality = function setQuality(quality) {
|
| 276 |
-
if (quality < 1) quality = 1;
|
| 277 |
-
sample = quality;
|
| 278 |
-
};
|
| 279 |
-
|
| 280 |
-
/**
|
| 281 |
-
* Sets the GIF frame size. The default size is the size of the first frame
|
| 282 |
-
* added if this method is not invoked.
|
| 283 |
-
* @param w
|
| 284 |
-
* int frame width.
|
| 285 |
-
* @param h
|
| 286 |
-
* int frame width.
|
| 287 |
-
*/
|
| 288 |
-
|
| 289 |
-
var setSize = exports.setSize = function setSize(w, h) {
|
| 290 |
-
|
| 291 |
-
if (started && !firstFrame) return;
|
| 292 |
-
width = w;
|
| 293 |
-
height = h;
|
| 294 |
-
if (width < 1) width = 320;
|
| 295 |
-
if (height < 1) height = 240;
|
| 296 |
-
sizeSet = true;
|
| 297 |
-
};
|
| 298 |
-
|
| 299 |
-
/**
|
| 300 |
-
* Initiates GIF file creation on the given stream.
|
| 301 |
-
* @param os
|
| 302 |
-
* OutputStream on which GIF images are written.
|
| 303 |
-
* @return false if initial write failed.
|
| 304 |
-
*/
|
| 305 |
-
|
| 306 |
-
var start = exports.start = function start() {
|
| 307 |
-
|
| 308 |
-
reset();
|
| 309 |
-
var ok = true;
|
| 310 |
-
closeStream = false;
|
| 311 |
-
out = new ByteArray();
|
| 312 |
-
try {
|
| 313 |
-
out.writeUTFBytes("GIF89a"); // header
|
| 314 |
-
} catch (e) {
|
| 315 |
-
ok = false;
|
| 316 |
-
}
|
| 317 |
-
|
| 318 |
-
return started = ok;
|
| 319 |
-
};
|
| 320 |
-
|
| 321 |
-
var cont = exports.cont = function cont() {
|
| 322 |
-
|
| 323 |
-
reset();
|
| 324 |
-
var ok = true;
|
| 325 |
-
closeStream = false;
|
| 326 |
-
out = new ByteArray();
|
| 327 |
-
|
| 328 |
-
return started = ok;
|
| 329 |
-
};
|
| 330 |
-
|
| 331 |
-
/**
|
| 332 |
-
* Analyzes image colors and creates color map.
|
| 333 |
-
*/
|
| 334 |
-
|
| 335 |
-
var analyzePixels = function analyzePixels() {
|
| 336 |
-
|
| 337 |
-
var len = pixels.length;
|
| 338 |
-
var nPix = len / 3;
|
| 339 |
-
indexedPixels = [];
|
| 340 |
-
var nq = new NeuQuant(pixels, len, sample);
|
| 341 |
-
|
| 342 |
-
// initialize quantizer
|
| 343 |
-
colorTab = nq.process(); // create reduced palette
|
| 344 |
-
|
| 345 |
-
// map image pixels to new palette
|
| 346 |
-
var k = 0;
|
| 347 |
-
for (var j = 0; j < nPix; j++) {
|
| 348 |
-
var index = nq.map(pixels[k++] & 0xff, pixels[k++] & 0xff, pixels[k++] & 0xff);
|
| 349 |
-
usedEntry[index] = true;
|
| 350 |
-
indexedPixels[j] = index;
|
| 351 |
-
}
|
| 352 |
-
|
| 353 |
-
pixels = null;
|
| 354 |
-
colorDepth = 8;
|
| 355 |
-
palSize = 7;
|
| 356 |
-
|
| 357 |
-
// get closest match to transparent color if specified
|
| 358 |
-
if (transparent !== null) {
|
| 359 |
-
transIndex = findClosest(transparent);
|
| 360 |
-
}
|
| 361 |
-
};
|
| 362 |
-
|
| 363 |
-
/**
|
| 364 |
-
* Returns index of palette color closest to c
|
| 365 |
-
*/
|
| 366 |
-
|
| 367 |
-
var findClosest = function findClosest(c) {
|
| 368 |
-
|
| 369 |
-
if (colorTab === null) return -1;
|
| 370 |
-
var r = (c & 0xFF0000) >> 16;
|
| 371 |
-
var g = (c & 0x00FF00) >> 8;
|
| 372 |
-
var b = (c & 0x0000FF);
|
| 373 |
-
var minpos = 0;
|
| 374 |
-
var dmin = 256 * 256 * 256;
|
| 375 |
-
var len = colorTab.length;
|
| 376 |
-
|
| 377 |
-
for (var i = 0; i < len;) {
|
| 378 |
-
var dr = r - (colorTab[i++] & 0xff);
|
| 379 |
-
var dg = g - (colorTab[i++] & 0xff);
|
| 380 |
-
var db = b - (colorTab[i] & 0xff);
|
| 381 |
-
var d = dr * dr + dg * dg + db * db;
|
| 382 |
-
var index = i / 3;
|
| 383 |
-
if (usedEntry[index] && (d < dmin)) {
|
| 384 |
-
dmin = d;
|
| 385 |
-
minpos = index;
|
| 386 |
-
}
|
| 387 |
-
i++;
|
| 388 |
-
}
|
| 389 |
-
return minpos;
|
| 390 |
-
};
|
| 391 |
-
|
| 392 |
-
/**
|
| 393 |
-
* Extracts image pixels into byte array "pixels
|
| 394 |
-
*/
|
| 395 |
-
|
| 396 |
-
var getImagePixels = function getImagePixels() {
|
| 397 |
-
var w = width;
|
| 398 |
-
var h = height;
|
| 399 |
-
pixels = [];
|
| 400 |
-
var data = image;
|
| 401 |
-
var count = 0;
|
| 402 |
-
|
| 403 |
-
for (var i = 0; i < h; i++) {
|
| 404 |
-
|
| 405 |
-
for (var j = 0; j < w; j++) {
|
| 406 |
-
|
| 407 |
-
var b = (i * w * 4) + j * 4;
|
| 408 |
-
pixels[count++] = data[b];
|
| 409 |
-
pixels[count++] = data[b + 1];
|
| 410 |
-
pixels[count++] = data[b + 2];
|
| 411 |
-
|
| 412 |
-
}
|
| 413 |
-
|
| 414 |
-
}
|
| 415 |
-
};
|
| 416 |
-
|
| 417 |
-
/**
|
| 418 |
-
* Writes Graphic Control Extension
|
| 419 |
-
*/
|
| 420 |
-
|
| 421 |
-
var writeGraphicCtrlExt = function writeGraphicCtrlExt() {
|
| 422 |
-
out.writeByte(0x21); // extension introducer
|
| 423 |
-
out.writeByte(0xf9); // GCE label
|
| 424 |
-
out.writeByte(4); // data block size
|
| 425 |
-
var transp;
|
| 426 |
-
var disp;
|
| 427 |
-
if (transparent === null) {
|
| 428 |
-
transp = 0;
|
| 429 |
-
disp = 0; // dispose = no action
|
| 430 |
-
} else {
|
| 431 |
-
transp = 1;
|
| 432 |
-
disp = 2; // force clear if using transparent color
|
| 433 |
-
}
|
| 434 |
-
if (dispose >= 0) {
|
| 435 |
-
disp = dispose & 7; // user override
|
| 436 |
-
}
|
| 437 |
-
disp <<= 2;
|
| 438 |
-
// packed fields
|
| 439 |
-
out.writeByte(0 | // 1:3 reserved
|
| 440 |
-
disp | // 4:6 disposal
|
| 441 |
-
0 | // 7 user input - 0 = none
|
| 442 |
-
transp); // 8 transparency flag
|
| 443 |
-
|
| 444 |
-
WriteShort(delay); // delay x 1/100 sec
|
| 445 |
-
out.writeByte(transIndex); // transparent color index
|
| 446 |
-
out.writeByte(0); // block terminator
|
| 447 |
-
};
|
| 448 |
-
|
| 449 |
-
/**
|
| 450 |
-
* Writes Comment Extention
|
| 451 |
-
*/
|
| 452 |
-
|
| 453 |
-
var writeCommentExt = function writeCommentExt() {
|
| 454 |
-
out.writeByte(0x21); // extension introducer
|
| 455 |
-
out.writeByte(0xfe); // comment label
|
| 456 |
-
out.writeByte(comment.length); // Block Size (s)
|
| 457 |
-
out.writeUTFBytes(comment);
|
| 458 |
-
out.writeByte(0); // block terminator
|
| 459 |
-
};
|
| 460 |
-
|
| 461 |
-
|
| 462 |
-
/**
|
| 463 |
-
* Writes Image Descriptor
|
| 464 |
-
*/
|
| 465 |
-
|
| 466 |
-
var writeImageDesc = function writeImageDesc() {
|
| 467 |
-
|
| 468 |
-
out.writeByte(0x2c); // image separator
|
| 469 |
-
WriteShort(0); // image position x,y = 0,0
|
| 470 |
-
WriteShort(0);
|
| 471 |
-
WriteShort(width); // image size
|
| 472 |
-
WriteShort(height);
|
| 473 |
-
|
| 474 |
-
// packed fields
|
| 475 |
-
if (firstFrame) {
|
| 476 |
-
// no LCT - GCT is used for first (or only) frame
|
| 477 |
-
out.writeByte(0);
|
| 478 |
-
} else {
|
| 479 |
-
// specify normal LCT
|
| 480 |
-
out.writeByte(0x80 | // 1 local color table 1=yes
|
| 481 |
-
0 | // 2 interlace - 0=no
|
| 482 |
-
0 | // 3 sorted - 0=no
|
| 483 |
-
0 | // 4-5 reserved
|
| 484 |
-
palSize); // 6-8 size of color table
|
| 485 |
-
}
|
| 486 |
-
};
|
| 487 |
-
|
| 488 |
-
/**
|
| 489 |
-
* Writes Logical Screen Descriptor
|
| 490 |
-
*/
|
| 491 |
-
|
| 492 |
-
var writeLSD = function writeLSD() {
|
| 493 |
-
|
| 494 |
-
// logical screen size
|
| 495 |
-
WriteShort(width);
|
| 496 |
-
WriteShort(height);
|
| 497 |
-
// packed fields
|
| 498 |
-
out.writeByte((0x80 | // 1 : global color table flag = 1 (gct used)
|
| 499 |
-
0x70 | // 2-4 : color resolution = 7
|
| 500 |
-
0x00 | // 5 : gct sort flag = 0
|
| 501 |
-
palSize)); // 6-8 : gct size
|
| 502 |
-
|
| 503 |
-
out.writeByte(0); // background color index
|
| 504 |
-
out.writeByte(0); // pixel aspect ratio - assume 1:1
|
| 505 |
-
};
|
| 506 |
-
|
| 507 |
-
/**
|
| 508 |
-
* Writes Netscape application extension to define repeat count.
|
| 509 |
-
*/
|
| 510 |
-
|
| 511 |
-
var writeNetscapeExt = function writeNetscapeExt() {
|
| 512 |
-
out.writeByte(0x21); // extension introducer
|
| 513 |
-
out.writeByte(0xff); // app extension label
|
| 514 |
-
out.writeByte(11); // block size
|
| 515 |
-
out.writeUTFBytes("NETSCAPE" + "2.0"); // app id + auth code
|
| 516 |
-
out.writeByte(3); // sub-block size
|
| 517 |
-
out.writeByte(1); // loop sub-block id
|
| 518 |
-
WriteShort(repeat); // loop count (extra iterations, 0=repeat forever)
|
| 519 |
-
out.writeByte(0); // block terminator
|
| 520 |
-
};
|
| 521 |
-
|
| 522 |
-
/**
|
| 523 |
-
* Writes color table
|
| 524 |
-
*/
|
| 525 |
-
|
| 526 |
-
var writePalette = function writePalette() {
|
| 527 |
-
out.writeBytes(colorTab);
|
| 528 |
-
var n = (3 * 256) - colorTab.length;
|
| 529 |
-
for (var i = 0; i < n; i++) out.writeByte(0);
|
| 530 |
-
};
|
| 531 |
-
|
| 532 |
-
var WriteShort = function WriteShort(pValue) {
|
| 533 |
-
out.writeByte(pValue & 0xFF);
|
| 534 |
-
out.writeByte((pValue >> 8) & 0xFF);
|
| 535 |
-
};
|
| 536 |
-
|
| 537 |
-
/**
|
| 538 |
-
* Encodes and writes pixel data
|
| 539 |
-
*/
|
| 540 |
-
|
| 541 |
-
var writePixels = function writePixels() {
|
| 542 |
-
var myencoder = new LZWEncoder(width, height, indexedPixels, colorDepth);
|
| 543 |
-
myencoder.encode(out);
|
| 544 |
-
};
|
| 545 |
-
|
| 546 |
-
/**
|
| 547 |
-
* Retrieves the GIF stream
|
| 548 |
-
*/
|
| 549 |
-
|
| 550 |
-
var stream = exports.stream = function stream() {
|
| 551 |
-
return out;
|
| 552 |
-
};
|
| 553 |
-
|
| 554 |
-
var setProperties = exports.setProperties = function setProperties(has_start, is_first) {
|
| 555 |
-
started = has_start;
|
| 556 |
-
firstFrame = is_first;
|
| 557 |
-
};
|
| 558 |
-
|
| 559 |
-
return exports;
|
| 560 |
-
|
| 561 |
-
};
|
| 562 |
-
/**
|
| 563 |
-
* This class handles LZW encoding
|
| 564 |
-
* Adapted from Jef Poskanzer's Java port by way of J. M. G. Elliott.
|
| 565 |
-
* @author Kevin Weiner (original Java version - kweiner@fmsware.com)
|
| 566 |
-
* @author Thibault Imbert (AS3 version - bytearray.org)
|
| 567 |
-
* @author Kevin Kwok (JavaScript version - https://github.com/antimatter15/jsgif)
|
| 568 |
-
* @version 0.1 AS3 implementation
|
| 569 |
-
*/
|
| 570 |
-
|
| 571 |
-
LZWEncoder = function() {
|
| 572 |
-
|
| 573 |
-
var exports = {};
|
| 574 |
-
var EOF = -1;
|
| 575 |
-
var imgW;
|
| 576 |
-
var imgH;
|
| 577 |
-
var pixAry;
|
| 578 |
-
var initCodeSize;
|
| 579 |
-
var remaining;
|
| 580 |
-
var curPixel;
|
| 581 |
-
|
| 582 |
-
// GIFCOMPR.C - GIF Image compression routines
|
| 583 |
-
// Lempel-Ziv compression based on 'compress'. GIF modifications by
|
| 584 |
-
// David Rowley (mgardi@watdcsu.waterloo.edu)
|
| 585 |
-
// General DEFINEs
|
| 586 |
-
|
| 587 |
-
var BITS = 12;
|
| 588 |
-
var HSIZE = 5003; // 80% occupancy
|
| 589 |
-
|
| 590 |
-
// GIF Image compression - modified 'compress'
|
| 591 |
-
// Based on: compress.c - File compression ala IEEE Computer, June 1984.
|
| 592 |
-
// By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)
|
| 593 |
-
// Jim McKie (decvax!mcvax!jim)
|
| 594 |
-
// Steve Davies (decvax!vax135!petsd!peora!srd)
|
| 595 |
-
// Ken Turkowski (decvax!decwrl!turtlevax!ken)
|
| 596 |
-
// James A. Woods (decvax!ihnp4!ames!jaw)
|
| 597 |
-
// Joe Orost (decvax!vax135!petsd!joe)
|
| 598 |
-
|
| 599 |
-
var n_bits; // number of bits/code
|
| 600 |
-
var maxbits = BITS; // user settable max # bits/code
|
| 601 |
-
var maxcode; // maximum code, given n_bits
|
| 602 |
-
var maxmaxcode = 1 << BITS; // should NEVER generate this code
|
| 603 |
-
var htab = [];
|
| 604 |
-
var codetab = [];
|
| 605 |
-
var hsize = HSIZE; // for dynamic table sizing
|
| 606 |
-
var free_ent = 0; // first unused entry
|
| 607 |
-
|
| 608 |
-
// block compression parameters -- after all codes are used up,
|
| 609 |
-
// and compression rate changes, start over.
|
| 610 |
-
|
| 611 |
-
var clear_flg = false;
|
| 612 |
-
|
| 613 |
-
// Algorithm: use open addressing double hashing (no chaining) on the
|
| 614 |
-
// prefix code / next character combination. We do a variant of Knuth's
|
| 615 |
-
// algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
|
| 616 |
-
// secondary probe. Here, the modular division first probe is gives way
|
| 617 |
-
// to a faster exclusive-or manipulation. Also do block compression with
|
| 618 |
-
// an adaptive reset, whereby the code table is cleared when the compression
|
| 619 |
-
// ratio decreases, but after the table fills. The variable-length output
|
| 620 |
-
// codes are re-sized at this point, and a special CLEAR code is generated
|
| 621 |
-
// for the decompressor. Late addition: construct the table according to
|
| 622 |
-
// file size for noticeable speed improvement on small files. Please direct
|
| 623 |
-
// questions about this implementation to ames!jaw.
|
| 624 |
-
|
| 625 |
-
var g_init_bits;
|
| 626 |
-
var ClearCode;
|
| 627 |
-
var EOFCode;
|
| 628 |
-
|
| 629 |
-
// output
|
| 630 |
-
// Output the given code.
|
| 631 |
-
// Inputs:
|
| 632 |
-
// code: A n_bits-bit integer. If == -1, then EOF. This assumes
|
| 633 |
-
// that n_bits =< wordsize - 1.
|
| 634 |
-
// Outputs:
|
| 635 |
-
// Outputs code to the file.
|
| 636 |
-
// Assumptions:
|
| 637 |
-
// Chars are 8 bits long.
|
| 638 |
-
// Algorithm:
|
| 639 |
-
// Maintain a BITS character long buffer (so that 8 codes will
|
| 640 |
-
// fit in it exactly). Use the VAX insv instruction to insert each
|
| 641 |
-
// code in turn. When the buffer fills up empty it and start over.
|
| 642 |
-
|
| 643 |
-
var cur_accum = 0;
|
| 644 |
-
var cur_bits = 0;
|
| 645 |
-
var masks = [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF];
|
| 646 |
-
|
| 647 |
-
// Number of characters so far in this 'packet'
|
| 648 |
-
var a_count;
|
| 649 |
-
|
| 650 |
-
// Define the storage for the packet accumulator
|
| 651 |
-
var accum = [];
|
| 652 |
-
|
| 653 |
-
var LZWEncoder = exports.LZWEncoder = function LZWEncoder(width, height, pixels, color_depth) {
|
| 654 |
-
imgW = width;
|
| 655 |
-
imgH = height;
|
| 656 |
-
pixAry = pixels;
|
| 657 |
-
initCodeSize = Math.max(2, color_depth);
|
| 658 |
-
};
|
| 659 |
-
|
| 660 |
-
// Add a character to the end of the current packet, and if it is 254
|
| 661 |
-
// characters, flush the packet to disk.
|
| 662 |
-
var char_out = function char_out(c, outs) {
|
| 663 |
-
accum[a_count++] = c;
|
| 664 |
-
if (a_count >= 254) flush_char(outs);
|
| 665 |
-
};
|
| 666 |
-
|
| 667 |
-
// Clear out the hash table
|
| 668 |
-
// table clear for block compress
|
| 669 |
-
|
| 670 |
-
var cl_block = function cl_block(outs) {
|
| 671 |
-
cl_hash(hsize);
|
| 672 |
-
free_ent = ClearCode + 2;
|
| 673 |
-
clear_flg = true;
|
| 674 |
-
output(ClearCode, outs);
|
| 675 |
-
};
|
| 676 |
-
|
| 677 |
-
// reset code table
|
| 678 |
-
var cl_hash = function cl_hash(hsize) {
|
| 679 |
-
for (var i = 0; i < hsize; ++i) htab[i] = -1;
|
| 680 |
-
};
|
| 681 |
-
|
| 682 |
-
var compress = exports.compress = function compress(init_bits, outs) {
|
| 683 |
-
|
| 684 |
-
var fcode;
|
| 685 |
-
var i; /* = 0 */
|
| 686 |
-
var c;
|
| 687 |
-
var ent;
|
| 688 |
-
var disp;
|
| 689 |
-
var hsize_reg;
|
| 690 |
-
var hshift;
|
| 691 |
-
|
| 692 |
-
// Set up the globals: g_init_bits - initial number of bits
|
| 693 |
-
g_init_bits = init_bits;
|
| 694 |
-
|
| 695 |
-
// Set up the necessary values
|
| 696 |
-
clear_flg = false;
|
| 697 |
-
n_bits = g_init_bits;
|
| 698 |
-
maxcode = MAXCODE(n_bits);
|
| 699 |
-
|
| 700 |
-
ClearCode = 1 << (init_bits - 1);
|
| 701 |
-
EOFCode = ClearCode + 1;
|
| 702 |
-
free_ent = ClearCode + 2;
|
| 703 |
-
|
| 704 |
-
a_count = 0; // clear packet
|
| 705 |
-
|
| 706 |
-
ent = nextPixel();
|
| 707 |
-
|
| 708 |
-
hshift = 0;
|
| 709 |
-
for (fcode = hsize; fcode < 65536; fcode *= 2)
|
| 710 |
-
++hshift;
|
| 711 |
-
hshift = 8 - hshift; // set hash code range bound
|
| 712 |
-
|
| 713 |
-
hsize_reg = hsize;
|
| 714 |
-
cl_hash(hsize_reg); // clear hash table
|
| 715 |
-
|
| 716 |
-
output(ClearCode, outs);
|
| 717 |
-
|
| 718 |
-
outer_loop: while ((c = nextPixel()) != EOF) {
|
| 719 |
-
fcode = (c << maxbits) + ent;
|
| 720 |
-
i = (c << hshift) ^ ent; // xor hashing
|
| 721 |
-
|
| 722 |
-
if (htab[i] == fcode) {
|
| 723 |
-
ent = codetab[i];
|
| 724 |
-
continue;
|
| 725 |
-
}
|
| 726 |
-
|
| 727 |
-
else if (htab[i] >= 0) { // non-empty slot
|
| 728 |
-
|
| 729 |
-
disp = hsize_reg - i; // secondary hash (after G. Knott)
|
| 730 |
-
if (i === 0) disp = 1;
|
| 731 |
-
|
| 732 |
-
do {
|
| 733 |
-
if ((i -= disp) < 0)
|
| 734 |
-
i += hsize_reg;
|
| 735 |
-
|
| 736 |
-
if (htab[i] == fcode) {
|
| 737 |
-
ent = codetab[i];
|
| 738 |
-
continue outer_loop;
|
| 739 |
-
}
|
| 740 |
-
} while (htab[i] >= 0);
|
| 741 |
-
}
|
| 742 |
-
|
| 743 |
-
output(ent, outs);
|
| 744 |
-
ent = c;
|
| 745 |
-
if (free_ent < maxmaxcode) {
|
| 746 |
-
codetab[i] = free_ent++; // code -> hashtable
|
| 747 |
-
htab[i] = fcode;
|
| 748 |
-
}
|
| 749 |
-
else cl_block(outs);
|
| 750 |
-
}
|
| 751 |
-
|
| 752 |
-
// Put out the final code.
|
| 753 |
-
output(ent, outs);
|
| 754 |
-
output(EOFCode, outs);
|
| 755 |
-
};
|
| 756 |
-
|
| 757 |
-
// ----------------------------------------------------------------------------
|
| 758 |
-
var encode = exports.encode = function encode(os) {
|
| 759 |
-
os.writeByte(initCodeSize); // write "initial code size" byte
|
| 760 |
-
remaining = imgW * imgH; // reset navigation variables
|
| 761 |
-
curPixel = 0;
|
| 762 |
-
compress(initCodeSize + 1, os); // compress and write the pixel data
|
| 763 |
-
os.writeByte(0); // write block terminator
|
| 764 |
-
};
|
| 765 |
-
|
| 766 |
-
// Flush the packet to disk, and reset the accumulator
|
| 767 |
-
var flush_char = function flush_char(outs) {
|
| 768 |
-
if (a_count > 0) {
|
| 769 |
-
outs.writeByte(a_count);
|
| 770 |
-
outs.writeBytes(accum, 0, a_count);
|
| 771 |
-
a_count = 0;
|
| 772 |
-
}
|
| 773 |
-
};
|
| 774 |
-
|
| 775 |
-
var MAXCODE = function MAXCODE(n_bits) {
|
| 776 |
-
return (1 << n_bits) - 1;
|
| 777 |
-
};
|
| 778 |
-
|
| 779 |
-
// ----------------------------------------------------------------------------
|
| 780 |
-
// Return the next pixel from the image
|
| 781 |
-
// ----------------------------------------------------------------------------
|
| 782 |
-
|
| 783 |
-
var nextPixel = function nextPixel() {
|
| 784 |
-
if (remaining === 0) return EOF;
|
| 785 |
-
--remaining;
|
| 786 |
-
var pix = pixAry[curPixel++];
|
| 787 |
-
return pix & 0xff;
|
| 788 |
-
};
|
| 789 |
-
|
| 790 |
-
var output = function output(code, outs) {
|
| 791 |
-
|
| 792 |
-
cur_accum &= masks[cur_bits];
|
| 793 |
-
|
| 794 |
-
if (cur_bits > 0) cur_accum |= (code << cur_bits);
|
| 795 |
-
else cur_accum = code;
|
| 796 |
-
|
| 797 |
-
cur_bits += n_bits;
|
| 798 |
-
|
| 799 |
-
while (cur_bits >= 8) {
|
| 800 |
-
char_out((cur_accum & 0xff), outs);
|
| 801 |
-
cur_accum >>= 8;
|
| 802 |
-
cur_bits -= 8;
|
| 803 |
-
}
|
| 804 |
-
|
| 805 |
-
// If the next entry is going to be too big for the code size,
|
| 806 |
-
// then increase it, if possible.
|
| 807 |
-
|
| 808 |
-
if (free_ent > maxcode || clear_flg) {
|
| 809 |
-
|
| 810 |
-
if (clear_flg) {
|
| 811 |
-
|
| 812 |
-
maxcode = MAXCODE(n_bits = g_init_bits);
|
| 813 |
-
clear_flg = false;
|
| 814 |
-
|
| 815 |
-
} else {
|
| 816 |
-
|
| 817 |
-
++n_bits;
|
| 818 |
-
if (n_bits == maxbits) maxcode = maxmaxcode;
|
| 819 |
-
else maxcode = MAXCODE(n_bits);
|
| 820 |
-
}
|
| 821 |
-
}
|
| 822 |
-
|
| 823 |
-
if (code == EOFCode) {
|
| 824 |
-
|
| 825 |
-
// At EOF, write the rest of the buffer.
|
| 826 |
-
while (cur_bits > 0) {
|
| 827 |
-
char_out((cur_accum & 0xff), outs);
|
| 828 |
-
cur_accum >>= 8;
|
| 829 |
-
cur_bits -= 8;
|
| 830 |
-
}
|
| 831 |
-
|
| 832 |
-
flush_char(outs);
|
| 833 |
-
}
|
| 834 |
-
};
|
| 835 |
-
|
| 836 |
-
LZWEncoder.apply(this, arguments);
|
| 837 |
-
return exports;
|
| 838 |
-
};
|
| 839 |
-
/*
|
| 840 |
-
* NeuQuant Neural-Net Quantization Algorithm
|
| 841 |
-
* ------------------------------------------
|
| 842 |
-
*
|
| 843 |
-
* Copyright (c) 1994 Anthony Dekker
|
| 844 |
-
*
|
| 845 |
-
* NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
|
| 846 |
-
* "Kohonen neural networks for optimal colour quantization" in "Network:
|
| 847 |
-
* Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
|
| 848 |
-
* the algorithm.
|
| 849 |
-
*
|
| 850 |
-
* Any party obtaining a copy of these files from the author, directly or
|
| 851 |
-
* indirectly, is granted, free of charge, a full and unrestricted irrevocable,
|
| 852 |
-
* world-wide, paid up, royalty-free, nonexclusive right and license to deal in
|
| 853 |
-
* this software and documentation files (the "Software"), including without
|
| 854 |
-
* limitation the rights to use, copy, modify, merge, publish, distribute,
|
| 855 |
-
* sublicense, and/or sell copies of the Software, and to permit persons who
|
| 856 |
-
* receive copies from any such party to do so, with the only requirement being
|
| 857 |
-
* that this copyright notice remain intact.
|
| 858 |
-
*/
|
| 859 |
-
|
| 860 |
-
/*
|
| 861 |
-
* This class handles Neural-Net quantization algorithm
|
| 862 |
-
* @author Kevin Weiner (original Java version - kweiner@fmsware.com)
|
| 863 |
-
* @author Thibault Imbert (AS3 version - bytearray.org)
|
| 864 |
-
* @author Kevin Kwok (JavaScript version - https://github.com/antimatter15/jsgif)
|
| 865 |
-
* @version 0.1 AS3 implementation
|
| 866 |
-
*/
|
| 867 |
-
|
| 868 |
-
NeuQuant = function() {
|
| 869 |
-
|
| 870 |
-
var exports = {};
|
| 871 |
-
var netsize = 256; /* number of colours used */
|
| 872 |
-
|
| 873 |
-
/* four primes near 500 - assume no image has a length so large */
|
| 874 |
-
/* that it is divisible by all four primes */
|
| 875 |
-
|
| 876 |
-
var prime1 = 499;
|
| 877 |
-
var prime2 = 491;
|
| 878 |
-
var prime3 = 487;
|
| 879 |
-
var prime4 = 503;
|
| 880 |
-
var minpicturebytes = (3 * prime4); /* minimum size for input image */
|
| 881 |
-
|
| 882 |
-
/*
|
| 883 |
-
* Program Skeleton ---------------- [select samplefac in range 1..30] [read
|
| 884 |
-
* image from input file] pic = (unsigned char*) malloc(3*width*height);
|
| 885 |
-
* initnet(pic,3*width*height,samplefac); learn(); unbiasnet(); [write output
|
| 886 |
-
* image header, using writecolourmap(f)] inxbuild(); write output image using
|
| 887 |
-
* inxsearch(b,g,r)
|
| 888 |
-
*/
|
| 889 |
-
|
| 890 |
-
/*
|
| 891 |
-
* Network Definitions -------------------
|
| 892 |
-
*/
|
| 893 |
-
|
| 894 |
-
var maxnetpos = (netsize - 1);
|
| 895 |
-
var netbiasshift = 4; /* bias for colour values */
|
| 896 |
-
var ncycles = 100; /* no. of learning cycles */
|
| 897 |
-
|
| 898 |
-
/* defs for freq and bias */
|
| 899 |
-
var intbiasshift = 16; /* bias for fractions */
|
| 900 |
-
var intbias = (1 << intbiasshift);
|
| 901 |
-
var gammashift = 10; /* gamma = 1024 */
|
| 902 |
-
var gamma = (1 << gammashift);
|
| 903 |
-
var betashift = 10;
|
| 904 |
-
var beta = (intbias >> betashift); /* beta = 1/1024 */
|
| 905 |
-
var betagamma = (intbias << (gammashift - betashift));
|
| 906 |
-
|
| 907 |
-
/* defs for decreasing radius factor */
|
| 908 |
-
var initrad = (netsize >> 3); /* for 256 cols, radius starts */
|
| 909 |
-
var radiusbiasshift = 6; /* at 32.0 biased by 6 bits */
|
| 910 |
-
var radiusbias = (1 << radiusbiasshift);
|
| 911 |
-
var initradius = (initrad * radiusbias); /* and decreases by a */
|
| 912 |
-
var radiusdec = 30; /* factor of 1/30 each cycle */
|
| 913 |
-
|
| 914 |
-
/* defs for decreasing alpha factor */
|
| 915 |
-
var alphabiasshift = 10; /* alpha starts at 1.0 */
|
| 916 |
-
var initalpha = (1 << alphabiasshift);
|
| 917 |
-
var alphadec; /* biased by 10 bits */
|
| 918 |
-
|
| 919 |
-
/* radbias and alpharadbias used for radpower calculation */
|
| 920 |
-
var radbiasshift = 8;
|
| 921 |
-
var radbias = (1 << radbiasshift);
|
| 922 |
-
var alpharadbshift = (alphabiasshift + radbiasshift);
|
| 923 |
-
var alpharadbias = (1 << alpharadbshift);
|
| 924 |
-
|
| 925 |
-
/*
|
| 926 |
-
* Types and Global Variables --------------------------
|
| 927 |
-
*/
|
| 928 |
-
|
| 929 |
-
var thepicture; /* the input image itself */
|
| 930 |
-
var lengthcount; /* lengthcount = H*W*3 */
|
| 931 |
-
var samplefac; /* sampling factor 1..30 */
|
| 932 |
-
|
| 933 |
-
// typedef int pixel[4]; /* BGRc */
|
| 934 |
-
var network; /* the network itself - [netsize][4] */
|
| 935 |
-
var netindex = [];
|
| 936 |
-
|
| 937 |
-
/* for network lookup - really 256 */
|
| 938 |
-
var bias = [];
|
| 939 |
-
|
| 940 |
-
/* bias and freq arrays for learning */
|
| 941 |
-
var freq = [];
|
| 942 |
-
var radpower = [];
|
| 943 |
-
|
| 944 |
-
var NeuQuant = exports.NeuQuant = function NeuQuant(thepic, len, sample) {
|
| 945 |
-
|
| 946 |
-
var i;
|
| 947 |
-
var p;
|
| 948 |
-
|
| 949 |
-
thepicture = thepic;
|
| 950 |
-
lengthcount = len;
|
| 951 |
-
samplefac = sample;
|
| 952 |
-
|
| 953 |
-
network = new Array(netsize);
|
| 954 |
-
|
| 955 |
-
for (i = 0; i < netsize; i++) {
|
| 956 |
-
|
| 957 |
-
network[i] = new Array(4);
|
| 958 |
-
p = network[i];
|
| 959 |
-
p[0] = p[1] = p[2] = (i << (netbiasshift + 8)) / netsize;
|
| 960 |
-
freq[i] = intbias / netsize; /* 1/netsize */
|
| 961 |
-
bias[i] = 0;
|
| 962 |
-
}
|
| 963 |
-
};
|
| 964 |
-
|
| 965 |
-
var colorMap = function colorMap() {
|
| 966 |
-
|
| 967 |
-
var map = [];
|
| 968 |
-
var index = new Array(netsize);
|
| 969 |
-
|
| 970 |
-
for (var i = 0; i < netsize; i++)
|
| 971 |
-
index[network[i][3]] = i;
|
| 972 |
-
|
| 973 |
-
var k = 0;
|
| 974 |
-
for (var l = 0; l < netsize; l++) {
|
| 975 |
-
var j = index[l];
|
| 976 |
-
map[k++] = (network[j][0]);
|
| 977 |
-
map[k++] = (network[j][1]);
|
| 978 |
-
map[k++] = (network[j][2]);
|
| 979 |
-
}
|
| 980 |
-
|
| 981 |
-
return map;
|
| 982 |
-
};
|
| 983 |
-
|
| 984 |
-
/*
|
| 985 |
-
* Insertion sort of network and building of netindex[0..255] (to do after
|
| 986 |
-
* unbias)
|
| 987 |
-
* -------------------------------------------------------------------------------
|
| 988 |
-
*/
|
| 989 |
-
|
| 990 |
-
var inxbuild = function inxbuild() {
|
| 991 |
-
|
| 992 |
-
var i;
|
| 993 |
-
var j;
|
| 994 |
-
var smallpos;
|
| 995 |
-
var smallval;
|
| 996 |
-
var p;
|
| 997 |
-
var q;
|
| 998 |
-
var previouscol;
|
| 999 |
-
var startpos;
|
| 1000 |
-
|
| 1001 |
-
previouscol = 0;
|
| 1002 |
-
startpos = 0;
|
| 1003 |
-
for (i = 0; i < netsize; i++) {
|
| 1004 |
-
|
| 1005 |
-
p = network[i];
|
| 1006 |
-
smallpos = i;
|
| 1007 |
-
smallval = p[1]; /* index on g */
|
| 1008 |
-
|
| 1009 |
-
/* find smallest in i..netsize-1 */
|
| 1010 |
-
for (j = i + 1; j < netsize; j++) {
|
| 1011 |
-
|
| 1012 |
-
q = network[j];
|
| 1013 |
-
if (q[1] < smallval) { /* index on g */
|
| 1014 |
-
smallpos = j;
|
| 1015 |
-
smallval = q[1]; /* index on g */
|
| 1016 |
-
}
|
| 1017 |
-
}
|
| 1018 |
-
q = network[smallpos];
|
| 1019 |
-
|
| 1020 |
-
/* swap p (i) and q (smallpos) entries */
|
| 1021 |
-
if (i != smallpos) {
|
| 1022 |
-
j = q[0];
|
| 1023 |
-
q[0] = p[0];
|
| 1024 |
-
p[0] = j;
|
| 1025 |
-
j = q[1];
|
| 1026 |
-
q[1] = p[1];
|
| 1027 |
-
p[1] = j;
|
| 1028 |
-
j = q[2];
|
| 1029 |
-
q[2] = p[2];
|
| 1030 |
-
p[2] = j;
|
| 1031 |
-
j = q[3];
|
| 1032 |
-
q[3] = p[3];
|
| 1033 |
-
p[3] = j;
|
| 1034 |
-
}
|
| 1035 |
-
|
| 1036 |
-
/* smallval entry is now in position i */
|
| 1037 |
-
|
| 1038 |
-
if (smallval != previouscol) {
|
| 1039 |
-
|
| 1040 |
-
netindex[previouscol] = (startpos + i) >> 1;
|
| 1041 |
-
|
| 1042 |
-
for (j = previouscol + 1; j < smallval; j++) netindex[j] = i;
|
| 1043 |
-
|
| 1044 |
-
previouscol = smallval;
|
| 1045 |
-
startpos = i;
|
| 1046 |
-
}
|
| 1047 |
-
}
|
| 1048 |
-
|
| 1049 |
-
netindex[previouscol] = (startpos + maxnetpos) >> 1;
|
| 1050 |
-
for (j = previouscol + 1; j < 256; j++) netindex[j] = maxnetpos; /* really 256 */
|
| 1051 |
-
};
|
| 1052 |
-
|
| 1053 |
-
/*
|
| 1054 |
-
* Main Learning Loop ------------------
|
| 1055 |
-
*/
|
| 1056 |
-
|
| 1057 |
-
var learn = function learn() {
|
| 1058 |
-
|
| 1059 |
-
var i;
|
| 1060 |
-
var j;
|
| 1061 |
-
var b;
|
| 1062 |
-
var g;
|
| 1063 |
-
var r;
|
| 1064 |
-
var radius;
|
| 1065 |
-
var rad;
|
| 1066 |
-
var alpha;
|
| 1067 |
-
var step;
|
| 1068 |
-
var delta;
|
| 1069 |
-
var samplepixels;
|
| 1070 |
-
var p;
|
| 1071 |
-
var pix;
|
| 1072 |
-
var lim;
|
| 1073 |
-
|
| 1074 |
-
if (lengthcount < minpicturebytes) samplefac = 1;
|
| 1075 |
-
|
| 1076 |
-
alphadec = 30 + ((samplefac - 1) / 3);
|
| 1077 |
-
p = thepicture;
|
| 1078 |
-
pix = 0;
|
| 1079 |
-
lim = lengthcount;
|
| 1080 |
-
samplepixels = lengthcount / (3 * samplefac);
|
| 1081 |
-
delta = (samplepixels / ncycles) | 0;
|
| 1082 |
-
alpha = initalpha;
|
| 1083 |
-
radius = initradius;
|
| 1084 |
-
|
| 1085 |
-
rad = radius >> radiusbiasshift;
|
| 1086 |
-
if (rad <= 1) rad = 0;
|
| 1087 |
-
|
| 1088 |
-
for (i = 0; i < rad; i++) radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));
|
| 1089 |
-
|
| 1090 |
-
if (lengthcount < minpicturebytes) step = 3;
|
| 1091 |
-
|
| 1092 |
-
else if ((lengthcount % prime1) !== 0) step = 3 * prime1;
|
| 1093 |
-
|
| 1094 |
-
else {
|
| 1095 |
-
|
| 1096 |
-
if ((lengthcount % prime2) !== 0) step = 3 * prime2;
|
| 1097 |
-
else {
|
| 1098 |
-
if ((lengthcount % prime3) !== 0) step = 3 * prime3;
|
| 1099 |
-
else step = 3 * prime4;
|
| 1100 |
-
}
|
| 1101 |
-
}
|
| 1102 |
-
|
| 1103 |
-
i = 0;
|
| 1104 |
-
while (i < samplepixels) {
|
| 1105 |
-
|
| 1106 |
-
b = (p[pix + 0] & 0xff) << netbiasshift;
|
| 1107 |
-
g = (p[pix + 1] & 0xff) << netbiasshift;
|
| 1108 |
-
r = (p[pix + 2] & 0xff) << netbiasshift;
|
| 1109 |
-
j = contest(b, g, r);
|
| 1110 |
-
|
| 1111 |
-
altersingle(alpha, j, b, g, r);
|
| 1112 |
-
if (rad !== 0) alterneigh(rad, j, b, g, r); /* alter neighbours */
|
| 1113 |
-
|
| 1114 |
-
pix += step;
|
| 1115 |
-
if (pix >= lim) pix -= lengthcount;
|
| 1116 |
-
|
| 1117 |
-
i++;
|
| 1118 |
-
|
| 1119 |
-
if (delta === 0) delta = 1;
|
| 1120 |
-
|
| 1121 |
-
if (i % delta === 0) {
|
| 1122 |
-
alpha -= alpha / alphadec;
|
| 1123 |
-
radius -= radius / radiusdec;
|
| 1124 |
-
rad = radius >> radiusbiasshift;
|
| 1125 |
-
|
| 1126 |
-
if (rad <= 1) rad = 0;
|
| 1127 |
-
|
| 1128 |
-
for (j = 0; j < rad; j++) radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));
|
| 1129 |
-
}
|
| 1130 |
-
}
|
| 1131 |
-
};
|
| 1132 |
-
|
| 1133 |
-
/*
|
| 1134 |
-
** Search for BGR values 0..255 (after net is unbiased) and return colour
|
| 1135 |
-
* index
|
| 1136 |
-
* ----------------------------------------------------------------------------
|
| 1137 |
-
*/
|
| 1138 |
-
|
| 1139 |
-
var map = exports.map = function map(b, g, r) {
|
| 1140 |
-
|
| 1141 |
-
var i;
|
| 1142 |
-
var j;
|
| 1143 |
-
var dist;
|
| 1144 |
-
var a;
|
| 1145 |
-
var bestd;
|
| 1146 |
-
var p;
|
| 1147 |
-
var best;
|
| 1148 |
-
|
| 1149 |
-
bestd = 1000; /* biggest possible dist is 256*3 */
|
| 1150 |
-
best = -1;
|
| 1151 |
-
i = netindex[g]; /* index on g */
|
| 1152 |
-
j = i - 1; /* start at netindex[g] and work outwards */
|
| 1153 |
-
|
| 1154 |
-
while ((i < netsize) || (j >= 0)) {
|
| 1155 |
-
|
| 1156 |
-
if (i < netsize) {
|
| 1157 |
-
p = network[i];
|
| 1158 |
-
dist = p[1] - g; /* inx key */
|
| 1159 |
-
|
| 1160 |
-
if (dist >= bestd) i = netsize; /* stop iter */
|
| 1161 |
-
|
| 1162 |
-
else {
|
| 1163 |
-
|
| 1164 |
-
i++;
|
| 1165 |
-
if (dist < 0) dist = -dist;
|
| 1166 |
-
a = p[0] - b;
|
| 1167 |
-
if (a < 0) a = -a;
|
| 1168 |
-
dist += a;
|
| 1169 |
-
|
| 1170 |
-
if (dist < bestd) {
|
| 1171 |
-
a = p[2] - r;
|
| 1172 |
-
if (a < 0) a = -a;
|
| 1173 |
-
dist += a;
|
| 1174 |
-
|
| 1175 |
-
if (dist < bestd) {
|
| 1176 |
-
bestd = dist;
|
| 1177 |
-
best = p[3];
|
| 1178 |
-
}
|
| 1179 |
-
}
|
| 1180 |
-
}
|
| 1181 |
-
}
|
| 1182 |
-
|
| 1183 |
-
if (j >= 0) {
|
| 1184 |
-
|
| 1185 |
-
p = network[j];
|
| 1186 |
-
dist = g - p[1]; /* inx key - reverse dif */
|
| 1187 |
-
|
| 1188 |
-
if (dist >= bestd) j = -1; /* stop iter */
|
| 1189 |
-
|
| 1190 |
-
else {
|
| 1191 |
-
|
| 1192 |
-
j--;
|
| 1193 |
-
if (dist < 0) dist = -dist;
|
| 1194 |
-
a = p[0] - b;
|
| 1195 |
-
if (a < 0) a = -a;
|
| 1196 |
-
dist += a;
|
| 1197 |
-
|
| 1198 |
-
if (dist < bestd) {
|
| 1199 |
-
a = p[2] - r;
|
| 1200 |
-
if (a < 0) a = -a;
|
| 1201 |
-
dist += a;
|
| 1202 |
-
if (dist < bestd) {
|
| 1203 |
-
bestd = dist;
|
| 1204 |
-
best = p[3];
|
| 1205 |
-
}
|
| 1206 |
-
}
|
| 1207 |
-
}
|
| 1208 |
-
}
|
| 1209 |
-
}
|
| 1210 |
-
|
| 1211 |
-
return (best);
|
| 1212 |
-
};
|
| 1213 |
-
|
| 1214 |
-
var process = exports.process = function process() {
|
| 1215 |
-
learn();
|
| 1216 |
-
unbiasnet();
|
| 1217 |
-
inxbuild();
|
| 1218 |
-
return colorMap();
|
| 1219 |
-
};
|
| 1220 |
-
|
| 1221 |
-
/*
|
| 1222 |
-
* Unbias network to give byte values 0..255 and record position i to prepare
|
| 1223 |
-
* for sort
|
| 1224 |
-
* -----------------------------------------------------------------------------------
|
| 1225 |
-
*/
|
| 1226 |
-
|
| 1227 |
-
var unbiasnet = function unbiasnet() {
|
| 1228 |
-
|
| 1229 |
-
var i;
|
| 1230 |
-
var j;
|
| 1231 |
-
|
| 1232 |
-
for (i = 0; i < netsize; i++) {
|
| 1233 |
-
network[i][0] >>= netbiasshift;
|
| 1234 |
-
network[i][1] >>= netbiasshift;
|
| 1235 |
-
network[i][2] >>= netbiasshift;
|
| 1236 |
-
network[i][3] = i; /* record colour no */
|
| 1237 |
-
}
|
| 1238 |
-
};
|
| 1239 |
-
|
| 1240 |
-
/*
|
| 1241 |
-
* Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2)) in
|
| 1242 |
-
* radpower[|i-j|]
|
| 1243 |
-
* ---------------------------------------------------------------------------------
|
| 1244 |
-
*/
|
| 1245 |
-
|
| 1246 |
-
var alterneigh = function alterneigh(rad, i, b, g, r) {
|
| 1247 |
-
|
| 1248 |
-
var j;
|
| 1249 |
-
var k;
|
| 1250 |
-
var lo;
|
| 1251 |
-
var hi;
|
| 1252 |
-
var a;
|
| 1253 |
-
var m;
|
| 1254 |
-
var p;
|
| 1255 |
-
|
| 1256 |
-
lo = i - rad;
|
| 1257 |
-
if (lo < -1) lo = -1;
|
| 1258 |
-
|
| 1259 |
-
hi = i + rad;
|
| 1260 |
-
if (hi > netsize) hi = netsize;
|
| 1261 |
-
|
| 1262 |
-
j = i + 1;
|
| 1263 |
-
k = i - 1;
|
| 1264 |
-
m = 1;
|
| 1265 |
-
|
| 1266 |
-
while ((j < hi) || (k > lo)) {
|
| 1267 |
-
a = radpower[m++];
|
| 1268 |
-
|
| 1269 |
-
if (j < hi) {
|
| 1270 |
-
p = network[j++];
|
| 1271 |
-
|
| 1272 |
-
try {
|
| 1273 |
-
p[0] -= (a * (p[0] - b)) / alpharadbias;
|
| 1274 |
-
p[1] -= (a * (p[1] - g)) / alpharadbias;
|
| 1275 |
-
p[2] -= (a * (p[2] - r)) / alpharadbias;
|
| 1276 |
-
} catch (e) {} // prevents 1.3 miscompilation
|
| 1277 |
-
}
|
| 1278 |
-
|
| 1279 |
-
if (k > lo) {
|
| 1280 |
-
p = network[k--];
|
| 1281 |
-
|
| 1282 |
-
try {
|
| 1283 |
-
p[0] -= (a * (p[0] - b)) / alpharadbias;
|
| 1284 |
-
p[1] -= (a * (p[1] - g)) / alpharadbias;
|
| 1285 |
-
p[2] -= (a * (p[2] - r)) / alpharadbias;
|
| 1286 |
-
} catch (e) {}
|
| 1287 |
-
}
|
| 1288 |
-
}
|
| 1289 |
-
};
|
| 1290 |
-
|
| 1291 |
-
/*
|
| 1292 |
-
* Move neuron i towards biased (b,g,r) by factor alpha
|
| 1293 |
-
* ----------------------------------------------------
|
| 1294 |
-
*/
|
| 1295 |
-
|
| 1296 |
-
var altersingle = function altersingle(alpha, i, b, g, r) {
|
| 1297 |
-
|
| 1298 |
-
/* alter hit neuron */
|
| 1299 |
-
var n = network[i];
|
| 1300 |
-
n[0] -= (alpha * (n[0] - b)) / initalpha;
|
| 1301 |
-
n[1] -= (alpha * (n[1] - g)) / initalpha;
|
| 1302 |
-
n[2] -= (alpha * (n[2] - r)) / initalpha;
|
| 1303 |
-
};
|
| 1304 |
-
|
| 1305 |
-
/*
|
| 1306 |
-
* Search for biased BGR values ----------------------------
|
| 1307 |
-
*/
|
| 1308 |
-
|
| 1309 |
-
var contest = function contest(b, g, r) {
|
| 1310 |
-
|
| 1311 |
-
/* finds closest neuron (min dist) and updates freq */
|
| 1312 |
-
/* finds best neuron (min dist-bias) and returns position */
|
| 1313 |
-
/* for frequently chosen neurons, freq[i] is high and bias[i] is negative */
|
| 1314 |
-
/* bias[i] = gamma*((1/netsize)-freq[i]) */
|
| 1315 |
-
|
| 1316 |
-
var i;
|
| 1317 |
-
var dist;
|
| 1318 |
-
var a;
|
| 1319 |
-
var biasdist;
|
| 1320 |
-
var betafreq;
|
| 1321 |
-
var bestpos;
|
| 1322 |
-
var bestbiaspos;
|
| 1323 |
-
var bestd;
|
| 1324 |
-
var bestbiasd;
|
| 1325 |
-
var n;
|
| 1326 |
-
|
| 1327 |
-
bestd = ~ (1 << 31);
|
| 1328 |
-
bestbiasd = bestd;
|
| 1329 |
-
bestpos = -1;
|
| 1330 |
-
bestbiaspos = bestpos;
|
| 1331 |
-
|
| 1332 |
-
for (i = 0; i < netsize; i++) {
|
| 1333 |
-
n = network[i];
|
| 1334 |
-
dist = n[0] - b;
|
| 1335 |
-
if (dist < 0) dist = -dist;
|
| 1336 |
-
a = n[1] - g;
|
| 1337 |
-
if (a < 0) a = -a;
|
| 1338 |
-
dist += a;
|
| 1339 |
-
a = n[2] - r;
|
| 1340 |
-
if (a < 0) a = -a;
|
| 1341 |
-
dist += a;
|
| 1342 |
-
|
| 1343 |
-
if (dist < bestd) {
|
| 1344 |
-
bestd = dist;
|
| 1345 |
-
bestpos = i;
|
| 1346 |
-
}
|
| 1347 |
-
|
| 1348 |
-
biasdist = dist - ((bias[i]) >> (intbiasshift - netbiasshift));
|
| 1349 |
-
|
| 1350 |
-
if (biasdist < bestbiasd) {
|
| 1351 |
-
bestbiasd = biasdist;
|
| 1352 |
-
bestbiaspos = i;
|
| 1353 |
-
}
|
| 1354 |
-
|
| 1355 |
-
betafreq = (freq[i] >> betashift);
|
| 1356 |
-
freq[i] -= betafreq;
|
| 1357 |
-
bias[i] += (betafreq << gammashift);
|
| 1358 |
-
}
|
| 1359 |
-
|
| 1360 |
-
freq[bestpos] += beta;
|
| 1361 |
-
bias[bestpos] -= betagamma;
|
| 1362 |
-
return (bestbiaspos);
|
| 1363 |
-
};
|
| 1364 |
-
|
| 1365 |
-
NeuQuant.apply(this, arguments);
|
| 1366 |
-
return exports;
|
| 1367 |
-
};
|
| 1368 |
-
function encode64(input) {
|
| 1369 |
-
var output = "", i = 0, l = input.length,
|
| 1370 |
-
key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
| 1371 |
-
chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
| 1372 |
-
while (i < l) {
|
| 1373 |
-
chr1 = input.charCodeAt(i++);
|
| 1374 |
-
chr2 = input.charCodeAt(i++);
|
| 1375 |
-
chr3 = input.charCodeAt(i++);
|
| 1376 |
-
enc1 = chr1 >> 2;
|
| 1377 |
-
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
| 1378 |
-
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
| 1379 |
-
enc4 = chr3 & 63;
|
| 1380 |
-
if (isNaN(chr2)) enc3 = enc4 = 64;
|
| 1381 |
-
else if (isNaN(chr3)) enc4 = 64;
|
| 1382 |
-
output = output + key.charAt(enc1) + key.charAt(enc2) + key.charAt(enc3) + key.charAt(enc4);
|
| 1383 |
-
}
|
| 1384 |
-
return output;
|
| 1385 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/placeholder.png
DELETED
|
Binary file (7.33 kB)
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/proc.js
DELETED
|
@@ -1,1118 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
* This file is part of Infinity Grid Generator, view the README.md at https://github.com/mcmonkeyprojects/sd-infinity-grid-generator-script for more information.
|
| 3 |
-
*/
|
| 4 |
-
|
| 5 |
-
let suppressUpdate = true;
|
| 6 |
-
let file_extensions_alt = {};
|
| 7 |
-
|
| 8 |
-
function loadData() {
|
| 9 |
-
let rawHash = window.location.hash;
|
| 10 |
-
document.getElementById('x_' + rawData.axes[0].id).click();
|
| 11 |
-
document.getElementById('x2_none').click();
|
| 12 |
-
document.getElementById('y2_none').click();
|
| 13 |
-
let makegif_axis = document.getElementById('makegif_axis');
|
| 14 |
-
// rawData.ext/title/description
|
| 15 |
-
for (var axis of rawData.axes) {
|
| 16 |
-
// axis.id/title/description
|
| 17 |
-
for (var val of axis.values) {
|
| 18 |
-
// val.key/title/description/show
|
| 19 |
-
let clicktab = getNavValTab(axis.id, val.key);
|
| 20 |
-
clicktab.addEventListener('click', fillTable);
|
| 21 |
-
if (!val.show) {
|
| 22 |
-
setShowVal(axis.id, val.key, false);
|
| 23 |
-
}
|
| 24 |
-
}
|
| 25 |
-
for (var prefix of ['x_', 'y_', 'x2_', 'y2_']) {
|
| 26 |
-
document.getElementById(prefix + axis.id).addEventListener('click', fillTable);
|
| 27 |
-
}
|
| 28 |
-
for (var label of ['x2_none', 'y2_none']) {
|
| 29 |
-
document.getElementById(label).addEventListener('click', fillTable);
|
| 30 |
-
}
|
| 31 |
-
makegif_axis.appendChild(new Option(axis.title, axis.id));
|
| 32 |
-
}
|
| 33 |
-
console.log(`Loaded data for '${rawData.title}'`);
|
| 34 |
-
document.getElementById('autoScaleImages').addEventListener('change', updateScaling);
|
| 35 |
-
document.getElementById('stickyNavigation').addEventListener('change', toggleTopSticky);
|
| 36 |
-
document.getElementById('stickyLabels').addEventListener('change', toggleLabelSticky);
|
| 37 |
-
document.getElementById('toggle_nav_button').addEventListener('click', updateTitleSticky);
|
| 38 |
-
document.getElementById('toggle_adv_button').addEventListener('click', updateTitleSticky);
|
| 39 |
-
document.getElementById('showDescriptions').checked = rawData.defaults.show_descriptions;
|
| 40 |
-
document.getElementById('autoScaleImages').checked = rawData.defaults.autoscale;
|
| 41 |
-
document.getElementById('stickyNavigation').checked = rawData.defaults.sticky;
|
| 42 |
-
document.getElementById('stickyLabels').checked = rawData.defaults.sticky_labels;
|
| 43 |
-
document.getElementById('score_display').addEventListener('click', fillTable);
|
| 44 |
-
document.getElementById('score_setting').style.display = typeof getScoreFor == 'undefined' ? 'none' : 'inline-block';
|
| 45 |
-
document.getElementById('pauseVideos').addEventListener('click', updatePauseVideos);
|
| 46 |
-
updateStylesToMatchInputs();
|
| 47 |
-
for (var axis of ['x', 'y', 'x2', 'y2']) {
|
| 48 |
-
if (rawData.defaults[axis] != '') {
|
| 49 |
-
document.getElementById(axis + '_' + rawData.defaults[axis]).click();
|
| 50 |
-
}
|
| 51 |
-
}
|
| 52 |
-
applyHash(rawHash);
|
| 53 |
-
suppressUpdate = false;
|
| 54 |
-
fillTable();
|
| 55 |
-
startAutoScroll();
|
| 56 |
-
if (rawData.will_run) {
|
| 57 |
-
setTimeout(checkForUpdates, 5000);
|
| 58 |
-
}
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
function updatePauseVideos() {
|
| 62 |
-
let doPause = document.getElementById('pauseVideos').checked;
|
| 63 |
-
for (let video of document.getElementsByTagName('video')) {
|
| 64 |
-
if (doPause) {
|
| 65 |
-
video.pause();
|
| 66 |
-
}
|
| 67 |
-
else {
|
| 68 |
-
video.play();
|
| 69 |
-
}
|
| 70 |
-
}
|
| 71 |
-
updateHash();
|
| 72 |
-
}
|
| 73 |
-
|
| 74 |
-
function getExtension(filePath) {
|
| 75 |
-
if (filePath in file_extensions_alt) {
|
| 76 |
-
return file_extensions_alt[filePath];
|
| 77 |
-
}
|
| 78 |
-
return rawData.ext;
|
| 79 |
-
}
|
| 80 |
-
|
| 81 |
-
/** External callable. */
|
| 82 |
-
function fix_video(path) {
|
| 83 |
-
let ext = getExtension(path);
|
| 84 |
-
let matches = document.querySelectorAll(`img[data-img_path="${path}"]`);
|
| 85 |
-
for (let match of matches) {
|
| 86 |
-
if (ext != 'webm' && ext != 'mp4' && ext != 'mov') {
|
| 87 |
-
if (!match.src.endsWith(ext)) {
|
| 88 |
-
match.src = `${path}.${ext}`;
|
| 89 |
-
}
|
| 90 |
-
continue;
|
| 91 |
-
}
|
| 92 |
-
if (match.tagName == 'VIDEO') {
|
| 93 |
-
continue;
|
| 94 |
-
}
|
| 95 |
-
let video = document.createElement('video');
|
| 96 |
-
video.loop = true;
|
| 97 |
-
video.muted = true;
|
| 98 |
-
video.autoplay = true;
|
| 99 |
-
let doPause = document.getElementById('pauseVideos').checked;
|
| 100 |
-
video.paused = doPause;
|
| 101 |
-
video.classList = match.classList;
|
| 102 |
-
video.dataset.img_path = match.dataset.img_path;
|
| 103 |
-
video.onclick = "doPopupFor(this)";
|
| 104 |
-
video.onerror = "setImgPlaceholder(this)";
|
| 105 |
-
let source = document.createElement('source');
|
| 106 |
-
source.src = `${path}.${ext}`;
|
| 107 |
-
source.type = `video/${ext}`;
|
| 108 |
-
video.appendChild(source);
|
| 109 |
-
match.parentElement.replaceChild(video, match);
|
| 110 |
-
if (doPause) {
|
| 111 |
-
video.pause();
|
| 112 |
-
}
|
| 113 |
-
}
|
| 114 |
-
}
|
| 115 |
-
|
| 116 |
-
function updateStylesToMatchInputs() {
|
| 117 |
-
toggleTopSticky();
|
| 118 |
-
toggleLabelSticky();
|
| 119 |
-
}
|
| 120 |
-
|
| 121 |
-
function getAxisById(id) {
|
| 122 |
-
return rawData.axes.find(axis => axis.id == id);
|
| 123 |
-
}
|
| 124 |
-
|
| 125 |
-
function getNextAxis(axes, startId) {
|
| 126 |
-
var next = false;
|
| 127 |
-
for (var subAxis of axes) {
|
| 128 |
-
if (subAxis.id == startId) {
|
| 129 |
-
next = true;
|
| 130 |
-
}
|
| 131 |
-
else if (next) {
|
| 132 |
-
return subAxis;
|
| 133 |
-
}
|
| 134 |
-
}
|
| 135 |
-
return null;
|
| 136 |
-
}
|
| 137 |
-
|
| 138 |
-
function getSelectedValKey(axis) {
|
| 139 |
-
for (var subVal of axis.values) {
|
| 140 |
-
if (window.getComputedStyle(document.getElementById('tab_' + axis.id + '__' + subVal.key)).display != 'none') {
|
| 141 |
-
return subVal.path;
|
| 142 |
-
}
|
| 143 |
-
}
|
| 144 |
-
return null;
|
| 145 |
-
}
|
| 146 |
-
|
| 147 |
-
var popoverLastImg = null;
|
| 148 |
-
|
| 149 |
-
function clickRowImage(rows, x, y) {
|
| 150 |
-
$('#image_info_modal').modal('hide');
|
| 151 |
-
var columns = rows[y].getElementsByTagName('td');
|
| 152 |
-
columns[x].getElementsByTagName('img')[0].click();
|
| 153 |
-
}
|
| 154 |
-
|
| 155 |
-
window.addEventListener('keydown', function(kbevent) {
|
| 156 |
-
if ($('#image_info_modal').is(':visible')) {
|
| 157 |
-
if (kbevent.key == 'Escape') {
|
| 158 |
-
$('#image_info_modal').modal('toggle');
|
| 159 |
-
kbevent.preventDefault();
|
| 160 |
-
kbevent.stopPropagation();
|
| 161 |
-
return false;
|
| 162 |
-
}
|
| 163 |
-
var tableElem = document.getElementById('image_table');
|
| 164 |
-
var rows = tableElem.getElementsByTagName('tr');
|
| 165 |
-
var matchedRow = null;
|
| 166 |
-
var x = 0, y = 0;
|
| 167 |
-
for (var row of rows) {
|
| 168 |
-
var columns = row.getElementsByTagName('td');
|
| 169 |
-
for (var column of columns) {
|
| 170 |
-
var images = column.getElementsByTagName('img');
|
| 171 |
-
if (images.length == 1 && images[0] == popoverLastImg) {
|
| 172 |
-
matchedRow = row;
|
| 173 |
-
break;
|
| 174 |
-
}
|
| 175 |
-
x++;
|
| 176 |
-
}
|
| 177 |
-
if (matchedRow != null) {
|
| 178 |
-
break;
|
| 179 |
-
}
|
| 180 |
-
x = 0;
|
| 181 |
-
y++;
|
| 182 |
-
}
|
| 183 |
-
if (matchedRow == null) {
|
| 184 |
-
return;
|
| 185 |
-
}
|
| 186 |
-
if (kbevent.key == 'ArrowLeft') {
|
| 187 |
-
if (x > 1) {
|
| 188 |
-
x--;
|
| 189 |
-
clickRowImage(rows, x, y);
|
| 190 |
-
}
|
| 191 |
-
}
|
| 192 |
-
else if (kbevent.key == 'ArrowRight') {
|
| 193 |
-
x++;
|
| 194 |
-
var columns = matchedRow.getElementsByTagName('td');
|
| 195 |
-
if (columns.length > x) {
|
| 196 |
-
clickRowImage(rows, x, y);
|
| 197 |
-
}
|
| 198 |
-
}
|
| 199 |
-
else if (kbevent.key == 'ArrowUp') {
|
| 200 |
-
if (y > 1) {
|
| 201 |
-
y--;
|
| 202 |
-
clickRowImage(rows, x, y);
|
| 203 |
-
}
|
| 204 |
-
}
|
| 205 |
-
else if (kbevent.key == 'ArrowDown') {
|
| 206 |
-
y++;
|
| 207 |
-
if (rows.length > y) {
|
| 208 |
-
clickRowImage(rows, x, y);
|
| 209 |
-
}
|
| 210 |
-
}
|
| 211 |
-
else {
|
| 212 |
-
return;
|
| 213 |
-
}
|
| 214 |
-
kbevent.preventDefault();
|
| 215 |
-
kbevent.stopPropagation();
|
| 216 |
-
return false;
|
| 217 |
-
}
|
| 218 |
-
var elem = document.activeElement;
|
| 219 |
-
if (!elem.id.startsWith('clicktab_')) {
|
| 220 |
-
return;
|
| 221 |
-
}
|
| 222 |
-
var axisId = elem.id.substring('clicktab_'.length);
|
| 223 |
-
var splitIndex = axisId.lastIndexOf('__');
|
| 224 |
-
axisId = axisId.substring(0, splitIndex);
|
| 225 |
-
var axis = getAxisById(axisId);
|
| 226 |
-
if (kbevent.key == 'ArrowLeft') {
|
| 227 |
-
var tabPage = document.getElementById('tablist_' + axis.id);
|
| 228 |
-
var tabs = tabPage.getElementsByClassName('nav-link');
|
| 229 |
-
var newTab = clickTabAfterActiveTab(Array.from(tabs).reverse());
|
| 230 |
-
newTab.focus({ preventScroll: true });
|
| 231 |
-
}
|
| 232 |
-
else if (kbevent.key == 'ArrowRight') {
|
| 233 |
-
var tabPage = document.getElementById('tablist_' + axis.id);
|
| 234 |
-
var tabs = tabPage.getElementsByClassName('nav-link');
|
| 235 |
-
var newTab = clickTabAfterActiveTab(tabs);
|
| 236 |
-
newTab.focus({ preventScroll: true });
|
| 237 |
-
}
|
| 238 |
-
else if (kbevent.key == 'ArrowUp') {
|
| 239 |
-
var next = getNextAxis(Array.from(rawData.axes).reverse(), axisId);
|
| 240 |
-
if (next != null) {
|
| 241 |
-
var selectedKey = getSelectedValKey(next);
|
| 242 |
-
var swapToTab = getNavValTab(next.id, selectedKey);
|
| 243 |
-
swapToTab.focus({ preventScroll: true });
|
| 244 |
-
}
|
| 245 |
-
}
|
| 246 |
-
else if (kbevent.key == 'ArrowDown') {
|
| 247 |
-
var next = getNextAxis(rawData.axes, axisId);
|
| 248 |
-
if (next != null) {
|
| 249 |
-
var selectedKey = getSelectedValKey(next);
|
| 250 |
-
var swapToTab = getNavValTab(next.id, selectedKey);
|
| 251 |
-
swapToTab.focus({ preventScroll: true });
|
| 252 |
-
}
|
| 253 |
-
}
|
| 254 |
-
else {
|
| 255 |
-
return;
|
| 256 |
-
}
|
| 257 |
-
kbevent.preventDefault();
|
| 258 |
-
kbevent.stopPropagation();
|
| 259 |
-
return false;
|
| 260 |
-
}, true);
|
| 261 |
-
|
| 262 |
-
function escapeHtml(text) {
|
| 263 |
-
if (typeof text != 'string') {
|
| 264 |
-
return text;
|
| 265 |
-
}
|
| 266 |
-
return text.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
|
| 267 |
-
}
|
| 268 |
-
|
| 269 |
-
function unescapeHtml(text) {
|
| 270 |
-
return text.replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll(''', "'").replaceAll('&', '&');
|
| 271 |
-
}
|
| 272 |
-
|
| 273 |
-
function canShowVal(axis, val) {
|
| 274 |
-
return document.getElementById(`showval_${axis}__${val}`).checked;
|
| 275 |
-
}
|
| 276 |
-
|
| 277 |
-
function setShowVal(axis, val, show) {
|
| 278 |
-
document.getElementById(`showval_${axis}__${val}`).checked = show;
|
| 279 |
-
getNavValTab(axis, val).classList.toggle('tab_hidden', !show);
|
| 280 |
-
}
|
| 281 |
-
|
| 282 |
-
function getNavValTab(axis, val) {
|
| 283 |
-
return document.getElementById(`clicktab_${axis}__${val}`);
|
| 284 |
-
}
|
| 285 |
-
|
| 286 |
-
function percentToRedGreen(percent) {
|
| 287 |
-
return `color-mix(in srgb, red, green ${percent}%)`;
|
| 288 |
-
}
|
| 289 |
-
|
| 290 |
-
let scoreTrackCounter = 0;
|
| 291 |
-
let scoreUpdates = [];
|
| 292 |
-
let lastScoreBump = Date.now();
|
| 293 |
-
let scoreBumpTracker = null;
|
| 294 |
-
let scoreMin = 0, scoreMax = 1;
|
| 295 |
-
|
| 296 |
-
function getXAxisContent(x, y, xAxis, yval, x2Axis, x2val, y2Axis, y2val) {
|
| 297 |
-
let scriptDump = document.getElementById('image_script_dump');
|
| 298 |
-
let imgPath = [];
|
| 299 |
-
let index = 0;
|
| 300 |
-
for (let subAxis of rawData.axes) {
|
| 301 |
-
if (subAxis.id == x) {
|
| 302 |
-
index = imgPath.length;
|
| 303 |
-
imgPath.push(null);
|
| 304 |
-
}
|
| 305 |
-
else if (subAxis.id == y) {
|
| 306 |
-
imgPath.push(yval.path);
|
| 307 |
-
}
|
| 308 |
-
else if (x2Axis != null && subAxis.id == x2Axis.id) {
|
| 309 |
-
imgPath.push(x2val.path);
|
| 310 |
-
}
|
| 311 |
-
else if (y2Axis != null && subAxis.id == y2Axis.id) {
|
| 312 |
-
imgPath.push(y2val.path);
|
| 313 |
-
}
|
| 314 |
-
else {
|
| 315 |
-
imgPath.push(getSelectedValKey(subAxis));
|
| 316 |
-
}
|
| 317 |
-
}
|
| 318 |
-
let newContent = '';
|
| 319 |
-
let subInd = 0;
|
| 320 |
-
let scoreDisplay = document.getElementById('score_display').value;
|
| 321 |
-
for (let xVal of xAxis.values) {
|
| 322 |
-
subInd++;
|
| 323 |
-
if (!canShowVal(xAxis.id, xVal.key)) {
|
| 324 |
-
continue;
|
| 325 |
-
}
|
| 326 |
-
imgPath[index] = xVal.path;
|
| 327 |
-
let slashed = imgPath.join('/');
|
| 328 |
-
let ext = getExtension(slashed);
|
| 329 |
-
let actualUrl = slashed + '.' + ext;
|
| 330 |
-
let id = scoreTrackCounter++;
|
| 331 |
-
newContent += `<td id="td-img-${id}"><span></span>`;
|
| 332 |
-
if (ext == 'mp4' || ext == 'webm' || ext == 'mov') {
|
| 333 |
-
newContent += `<video loop autoplay muted class="table_img" data-img_path="${slashed}" onclick="doPopupFor(this)" onerror="setImgPlaceholder(this)" alt="${actualUrl}"><source src="${actualUrl}" type="video/${ext}"></source></video>`;
|
| 334 |
-
}
|
| 335 |
-
else {
|
| 336 |
-
newContent += `<img class="table_img" data-img_path="${slashed}" onclick="doPopupFor(this)" onerror="setImgPlaceholder(this)" src="${actualUrl}" alt="${actualUrl}" />`;
|
| 337 |
-
}
|
| 338 |
-
newContent += '</td>';
|
| 339 |
-
let newScr = null;
|
| 340 |
-
if (typeof getMetadataScriptFor != 'undefined') {
|
| 341 |
-
newScr = document.createElement('script');
|
| 342 |
-
newScr.src = getMetadataScriptFor(slashed);
|
| 343 |
-
}
|
| 344 |
-
let doScores = scoreDisplay != 'None' && typeof getScoreFor != 'undefined';
|
| 345 |
-
if (doScores) {
|
| 346 |
-
scoreUpdates.push(() => {
|
| 347 |
-
let score = getScoreFor(slashed);
|
| 348 |
-
if (score) {
|
| 349 |
-
score = (score - scoreMin) / (scoreMax - scoreMin);
|
| 350 |
-
let elem = document.getElementById(`td-img-${id}`);
|
| 351 |
-
let color = percentToRedGreen(score * 100);
|
| 352 |
-
let blockColor = '';
|
| 353 |
-
if (scoreDisplay == 'Thin Outline')
|
| 354 |
-
{
|
| 355 |
-
let xborder = `border-top: 2px solid ${color}; border-bottom: 2px solid ${color};`;
|
| 356 |
-
let yborder = `border-left: 2px solid ${color}; border-right: 2px solid ${color};`;
|
| 357 |
-
elem.getElementsByTagName('img')[0].style = `${xborder} ${yborder}`;
|
| 358 |
-
}
|
| 359 |
-
else if (scoreDisplay == 'Thick Bars')
|
| 360 |
-
{
|
| 361 |
-
elem.getElementsByTagName('img')[0].style = `border-top: 10px solid ${color}; border-left: 10px solid ${color};`;
|
| 362 |
-
}
|
| 363 |
-
else if (scoreDisplay == 'Heatmap')
|
| 364 |
-
{
|
| 365 |
-
blockColor = `color-mix(in srgb, ${color} 50%, transparent)`;
|
| 366 |
-
}
|
| 367 |
-
elem.firstChild.innerHTML = `<div style="position: relative; width: 0; height: 0"><div style="position: absolute; left: 0; z-index: 20;">${Math.round(score * 100)}%</div><div class="heatmapper" style="position: absolute; left: 0; width: 100px; height: 100px; z-index: 10; background-color: ${blockColor}"></div></div>`;
|
| 368 |
-
}
|
| 369 |
-
});
|
| 370 |
-
}
|
| 371 |
-
if (newScr != null) {
|
| 372 |
-
newScr.onload = () => {
|
| 373 |
-
setTimeout(() => {
|
| 374 |
-
lastScoreBump = Date.now();
|
| 375 |
-
let ext = file_extensions_alt[slashed];
|
| 376 |
-
if (ext && !actualUrl.endsWith(ext)) {
|
| 377 |
-
fix_video(slashed);
|
| 378 |
-
}
|
| 379 |
-
}, 1);
|
| 380 |
-
if (scoreBumpTracker == null) {
|
| 381 |
-
scoreBumpTracker = setInterval(() => {
|
| 382 |
-
if (Date.now() - lastScoreBump > 300) {
|
| 383 |
-
clearInterval(scoreBumpTracker);
|
| 384 |
-
scoreBumpTracker = null;
|
| 385 |
-
if (doScores) {
|
| 386 |
-
scoreMin = 1;
|
| 387 |
-
scoreMax = 0;
|
| 388 |
-
for (let image of document.getElementsByClassName('table_img')) {
|
| 389 |
-
let score = getScoreFor(image.dataset.img_path);
|
| 390 |
-
if (score) {
|
| 391 |
-
scoreMin = Math.min(scoreMin, score);
|
| 392 |
-
scoreMax = Math.max(scoreMax, score);
|
| 393 |
-
}
|
| 394 |
-
}
|
| 395 |
-
let upds = scoreUpdates;
|
| 396 |
-
scoreUpdates = [];
|
| 397 |
-
for (let update of upds) {
|
| 398 |
-
update();
|
| 399 |
-
}
|
| 400 |
-
updateScaling();
|
| 401 |
-
}
|
| 402 |
-
}
|
| 403 |
-
}, 100);
|
| 404 |
-
}
|
| 405 |
-
};
|
| 406 |
-
}
|
| 407 |
-
if (newScr) {
|
| 408 |
-
scriptDump.appendChild(newScr);
|
| 409 |
-
}
|
| 410 |
-
}
|
| 411 |
-
return newContent;
|
| 412 |
-
}
|
| 413 |
-
|
| 414 |
-
function setImgPlaceholder(img) {
|
| 415 |
-
if (!img.parentElement) {
|
| 416 |
-
return;
|
| 417 |
-
}
|
| 418 |
-
img.onerror = undefined;
|
| 419 |
-
img.dataset.errored_src = img.src;
|
| 420 |
-
img.src = 'placeholder.png';
|
| 421 |
-
if (rawData.min_width) {
|
| 422 |
-
img.width = rawData.min_width;
|
| 423 |
-
img.height = rawData.min_height;
|
| 424 |
-
}
|
| 425 |
-
setImageScale(img, getWantedScaling());
|
| 426 |
-
}
|
| 427 |
-
|
| 428 |
-
function optDescribe(isFirst, val) {
|
| 429 |
-
return isFirst && val != null ? '<span title="' + escapeHtml(val.description) + '"><b>' + escapeHtml(val.title) + '</b></span><br>' : (val != null ? '<br>' : '');
|
| 430 |
-
}
|
| 431 |
-
|
| 432 |
-
function fillTable() {
|
| 433 |
-
if (suppressUpdate) {
|
| 434 |
-
return;
|
| 435 |
-
}
|
| 436 |
-
var x = getCurrentSelectedAxis('x');
|
| 437 |
-
var y = getCurrentSelectedAxis('y');
|
| 438 |
-
var x2 = getCurrentSelectedAxis('x2');
|
| 439 |
-
var y2 = getCurrentSelectedAxis('y2');
|
| 440 |
-
console.log('Do fill table, x=' + x + ', y=' + y + ', x2=' + x2 + ', y2=' + y2);
|
| 441 |
-
var xAxis = getAxisById(x);
|
| 442 |
-
var yAxis = getAxisById(y);
|
| 443 |
-
var x2Axis = x2 == 'None' || x2 == x || x2 == y ? null : getAxisById(x2);
|
| 444 |
-
var y2Axis = y2 == 'None' || y2 == x2 || y2 == x || y2 == y ? null : getAxisById(y2);
|
| 445 |
-
var table = document.getElementById('image_table');
|
| 446 |
-
var newContent = '<tr id="image_table_header" class="sticky_top"><th></th>';
|
| 447 |
-
var superFirst = true;
|
| 448 |
-
document.getElementById('image_script_dump').innerHTML = '';
|
| 449 |
-
for (var x2val of (x2Axis == null ? [null] : x2Axis.values)) {
|
| 450 |
-
if (x2val != null && !canShowVal(x2Axis.id, x2val.key)) {
|
| 451 |
-
continue;
|
| 452 |
-
}
|
| 453 |
-
var x2first = true;
|
| 454 |
-
for (var val of xAxis.values) {
|
| 455 |
-
if (!canShowVal(xAxis.id, val.key)) {
|
| 456 |
-
continue;
|
| 457 |
-
}
|
| 458 |
-
newContent += `<th${(superFirst ? '' : ' class="superaxis_second"')} title="${val.description.replaceAll('"', '"')}">${optDescribe(x2first, x2val)}<b>${escapeHtml(val.title)}</b></th>`;
|
| 459 |
-
x2first = false;
|
| 460 |
-
}
|
| 461 |
-
superFirst = !superFirst;
|
| 462 |
-
}
|
| 463 |
-
newContent += '</tr>';
|
| 464 |
-
superFirst = true;
|
| 465 |
-
for (var y2val of (y2Axis == null ? [null] : y2Axis.values)) {
|
| 466 |
-
if (y2val != null && !canShowVal(y2Axis.id, y2val.key)) {
|
| 467 |
-
continue;
|
| 468 |
-
}
|
| 469 |
-
var y2first = true;
|
| 470 |
-
for (var val of yAxis.values) {
|
| 471 |
-
if (!canShowVal(yAxis.id, val.key)) {
|
| 472 |
-
continue;
|
| 473 |
-
}
|
| 474 |
-
newContent += `<tr><td class="axis_label_td${(superFirst ? '' : ' superaxis_second')}" title="${escapeHtml(val.description)}">${optDescribe(y2first, y2val)}<b>${escapeHtml(val.title)}</b></td>`;
|
| 475 |
-
y2first = false;
|
| 476 |
-
for (var x2val of (x2Axis == null ? [null] : x2Axis.values)) {
|
| 477 |
-
if (x2val != null && !canShowVal(x2Axis.id, x2val.key)) {
|
| 478 |
-
continue;
|
| 479 |
-
}
|
| 480 |
-
newContent += getXAxisContent(x, y, xAxis, val, x2Axis, x2val, y2Axis, y2val);
|
| 481 |
-
}
|
| 482 |
-
newContent += '</tr>';
|
| 483 |
-
if (x == y) {
|
| 484 |
-
break;
|
| 485 |
-
}
|
| 486 |
-
}
|
| 487 |
-
superFirst = !superFirst;
|
| 488 |
-
}
|
| 489 |
-
table.innerHTML = newContent;
|
| 490 |
-
updateScaling();
|
| 491 |
-
}
|
| 492 |
-
|
| 493 |
-
function getCurrentSelectedAxis(axisPrefix) {
|
| 494 |
-
var id = document.querySelector(`input[name="${axisPrefix}_axis_selector"]:checked`).id;
|
| 495 |
-
var index = id.indexOf('_');
|
| 496 |
-
return id.substring(index + 1);
|
| 497 |
-
}
|
| 498 |
-
|
| 499 |
-
function getShownItemsOfAxis(axis) {
|
| 500 |
-
return axis.values.filter(val => canShowVal(axis.id, val.key));
|
| 501 |
-
}
|
| 502 |
-
|
| 503 |
-
function getWantedScaling() {
|
| 504 |
-
if (!document.getElementById('autoScaleImages').checked) {
|
| 505 |
-
return 0;
|
| 506 |
-
}
|
| 507 |
-
var x = getCurrentSelectedAxis('x');
|
| 508 |
-
var xAxis = getAxisById(x);
|
| 509 |
-
var count = getShownItemsOfAxis(xAxis).length;
|
| 510 |
-
var x2 = getCurrentSelectedAxis('x2');
|
| 511 |
-
if (x2 != 'none') {
|
| 512 |
-
var x2Axis = getAxisById(x2);
|
| 513 |
-
count *= getShownItemsOfAxis(x2Axis).length;
|
| 514 |
-
}
|
| 515 |
-
return (90 / count);
|
| 516 |
-
}
|
| 517 |
-
|
| 518 |
-
function setImageScale(image, percent) {
|
| 519 |
-
let heatmapper = image.parentElement.getElementsByClassName('heatmapper')[0];
|
| 520 |
-
if (percent == 0) {
|
| 521 |
-
image.style.width = '';
|
| 522 |
-
image.style.height = '';
|
| 523 |
-
if (heatmapper) {
|
| 524 |
-
heatmapper.style.width = `${image.clientWidth}px`;
|
| 525 |
-
heatmapper.style.height = `${image.clientWidth}px`;
|
| 526 |
-
}
|
| 527 |
-
}
|
| 528 |
-
else {
|
| 529 |
-
image.style.width = percent + 'vw';
|
| 530 |
-
if (heatmapper) {
|
| 531 |
-
heatmapper.style.width = percent + 'vw';
|
| 532 |
-
heatmapper.style.height = percent * (parseFloat(image.clientWidth) / parseFloat(image.clientHeight)) + 'vw';
|
| 533 |
-
}
|
| 534 |
-
let width = image.getAttribute('width');
|
| 535 |
-
let height = image.getAttribute('height');
|
| 536 |
-
if (width != null && height != null) { // Rescale placeholders cleanly
|
| 537 |
-
image.style.height = (percent * (parseFloat(height) / parseFloat(width))) + 'vw';
|
| 538 |
-
}
|
| 539 |
-
else {
|
| 540 |
-
image.style.height = '';
|
| 541 |
-
}
|
| 542 |
-
}
|
| 543 |
-
}
|
| 544 |
-
|
| 545 |
-
function updateScaling() {
|
| 546 |
-
let percent = getWantedScaling();
|
| 547 |
-
for (var image of document.getElementById('image_table').getElementsByClassName('table_img')) {
|
| 548 |
-
setImageScale(image, percent);
|
| 549 |
-
}
|
| 550 |
-
updateTitleSticky();
|
| 551 |
-
}
|
| 552 |
-
|
| 553 |
-
function toggleDescriptions() {
|
| 554 |
-
var show = document.getElementById('showDescriptions').checked;
|
| 555 |
-
for (var cName of ['tabval_subdiv', 'axis_table_cell']) {
|
| 556 |
-
for (var elem of document.getElementsByClassName(cName)) {
|
| 557 |
-
elem.classList.toggle('tab_hidden', !show);
|
| 558 |
-
}
|
| 559 |
-
}
|
| 560 |
-
updateTitleSticky();
|
| 561 |
-
}
|
| 562 |
-
|
| 563 |
-
function toggleShowAllAxis(axisId) {
|
| 564 |
-
var axis = getAxisById(axisId);
|
| 565 |
-
var hide = axis.values.some(val => {
|
| 566 |
-
return canShowVal(axisId, val.key);
|
| 567 |
-
});
|
| 568 |
-
for (var val of axis.values) {
|
| 569 |
-
setShowVal(axisId, val.key, !hide);
|
| 570 |
-
}
|
| 571 |
-
fillTable();
|
| 572 |
-
}
|
| 573 |
-
|
| 574 |
-
function toggleShowVal(axis, val) {
|
| 575 |
-
var show = canShowVal(axis, val);
|
| 576 |
-
let element = getNavValTab(axis, val);
|
| 577 |
-
element.classList.toggle('tab_hidden', !show);
|
| 578 |
-
if (!show && element.classList.contains('active')) {
|
| 579 |
-
var next = [...element.parentElement.parentElement.getElementsByClassName('nav-link')].filter(e => !e.classList.contains('tab_hidden'));
|
| 580 |
-
if (next.length > 0) {
|
| 581 |
-
next[0].click();
|
| 582 |
-
}
|
| 583 |
-
}
|
| 584 |
-
fillTable();
|
| 585 |
-
}
|
| 586 |
-
|
| 587 |
-
var anyRangeActive = false;
|
| 588 |
-
|
| 589 |
-
function enableRange(id) {
|
| 590 |
-
var range = document.getElementById('range_tablist_' + id);
|
| 591 |
-
var label = document.getElementById('label_range_tablist_' + id);
|
| 592 |
-
range.oninput = function() {
|
| 593 |
-
anyRangeActive = true;
|
| 594 |
-
label.innerText = (range.value / 2) + ' seconds';
|
| 595 |
-
};
|
| 596 |
-
var tabPage = document.getElementById('tablist_' + id);
|
| 597 |
-
return {
|
| 598 |
-
range,
|
| 599 |
-
counter: 0,
|
| 600 |
-
tabs: tabPage.getElementsByClassName('nav-link')
|
| 601 |
-
};
|
| 602 |
-
}
|
| 603 |
-
|
| 604 |
-
function clickTabAfterActiveTab(tabs) {
|
| 605 |
-
var firstTab = null;
|
| 606 |
-
var foundActive = false;
|
| 607 |
-
var nextTab = Array.from(tabs).find(tab => {
|
| 608 |
-
var isActive = tab.classList.contains('active');
|
| 609 |
-
var isHidden = tab.classList.contains('tab_hidden');
|
| 610 |
-
if (!isHidden && !isActive && !firstTab) {
|
| 611 |
-
firstTab = tab;
|
| 612 |
-
}
|
| 613 |
-
if (isActive) {
|
| 614 |
-
foundActive = true;
|
| 615 |
-
return false;
|
| 616 |
-
}
|
| 617 |
-
return (foundActive && !isHidden);
|
| 618 |
-
}) || firstTab;
|
| 619 |
-
|
| 620 |
-
if (nextTab) {
|
| 621 |
-
nextTab.click();
|
| 622 |
-
}
|
| 623 |
-
return nextTab;
|
| 624 |
-
}
|
| 625 |
-
|
| 626 |
-
const timer = ms => new Promise(res => setTimeout(res, ms));
|
| 627 |
-
|
| 628 |
-
async function startAutoScroll() {
|
| 629 |
-
var rangeSet = [];
|
| 630 |
-
for (var axis of rawData.axes) {
|
| 631 |
-
rangeSet.push(enableRange(axis.id));
|
| 632 |
-
}
|
| 633 |
-
while (true) {
|
| 634 |
-
await timer(500);
|
| 635 |
-
if (!anyRangeActive) {
|
| 636 |
-
continue;
|
| 637 |
-
}
|
| 638 |
-
for (var data of rangeSet) {
|
| 639 |
-
if (data.range.value <= 0) {
|
| 640 |
-
continue;
|
| 641 |
-
}
|
| 642 |
-
data.counter++;
|
| 643 |
-
if (data.counter < data.range.value) {
|
| 644 |
-
continue;
|
| 645 |
-
}
|
| 646 |
-
data.counter = 0;
|
| 647 |
-
clickTabAfterActiveTab(data.tabs);
|
| 648 |
-
}
|
| 649 |
-
}
|
| 650 |
-
}
|
| 651 |
-
|
| 652 |
-
function crunchMetadata(parts) {
|
| 653 |
-
if (!('metadata' in rawData)) {
|
| 654 |
-
return {};
|
| 655 |
-
}
|
| 656 |
-
var initialData = structuredClone(rawData.metadata);
|
| 657 |
-
if (!initialData) {
|
| 658 |
-
return {};
|
| 659 |
-
}
|
| 660 |
-
for (var index = 0; index < parts.length; index++) {
|
| 661 |
-
var part = parts[index];
|
| 662 |
-
var axis = rawData.axes[index];
|
| 663 |
-
var actualVal = axis.values.find(val => val.key == part);
|
| 664 |
-
if (actualVal == null) {
|
| 665 |
-
return { 'error': `metadata parsing failed for part ${index}: ${part}` };
|
| 666 |
-
}
|
| 667 |
-
for (var [key, value] of Object.entries(actualVal.params)) {
|
| 668 |
-
key = key.replaceAll(' ', '');
|
| 669 |
-
if (typeof(crunchParamHook) == 'undefined' || !crunchParamHook(initialData, key, value)) {
|
| 670 |
-
initialData[key] = value;
|
| 671 |
-
}
|
| 672 |
-
}
|
| 673 |
-
}
|
| 674 |
-
return initialData;
|
| 675 |
-
}
|
| 676 |
-
|
| 677 |
-
function doPopupFor(img) {
|
| 678 |
-
popoverLastImg = img;
|
| 679 |
-
let modalElem = document.getElementById('image_info_modal');
|
| 680 |
-
let metaText;
|
| 681 |
-
if (typeof getMetadataForImage != 'undefined') {
|
| 682 |
-
metaText = getMetadataForImage(img);
|
| 683 |
-
}
|
| 684 |
-
else {
|
| 685 |
-
let imgPath = img.dataset.img_path.split('/');
|
| 686 |
-
let metaData = crunchMetadata(imgPath);
|
| 687 |
-
metaText = typeof(formatMetadata) == 'undefined' ? JSON.stringify(metaData) : formatMetadata(metaData);
|
| 688 |
-
}
|
| 689 |
-
let params = escapeHtml(metaText).replaceAll('\n', '\n<br>');
|
| 690 |
-
let text = 'Image: ' + img.alt + (params.length > 1 ? ', parameters: <br>' + params : '<br>(parameters hidden)');
|
| 691 |
-
modalElem.innerHTML = `<div class="modal-dialog" style="display:none">(click outside image to close)</div><div class="modal_inner_div"><img onclick="$('#image_info_modal').modal('hide')" class="popup_modal_img" src="${img.src}"><br><div class="popup_modal_undertext">${text}</div>`;
|
| 692 |
-
$('#image_info_modal').modal('toggle');
|
| 693 |
-
}
|
| 694 |
-
|
| 695 |
-
function updateTitleStickyDirect() {
|
| 696 |
-
var height = Math.round(document.getElementById('top_nav_bar').getBoundingClientRect().height);
|
| 697 |
-
var header = document.getElementById('image_table_header');
|
| 698 |
-
if (header.style.top != height + 'px') { // This check is to reduce the odds of the browser yelling at us
|
| 699 |
-
header.style.top = height + 'px';
|
| 700 |
-
}
|
| 701 |
-
}
|
| 702 |
-
|
| 703 |
-
function updateTitleSticky() {
|
| 704 |
-
var header = document.getElementById('image_table_header');
|
| 705 |
-
if (!header) {
|
| 706 |
-
return;
|
| 707 |
-
}
|
| 708 |
-
updateHash();
|
| 709 |
-
var topBar = document.getElementById('top_nav_bar');
|
| 710 |
-
if (!topBar.classList.contains('sticky_top')) {
|
| 711 |
-
header.style.top = '0';
|
| 712 |
-
return;
|
| 713 |
-
}
|
| 714 |
-
// client rect is dynamically animated, so, uh, just hack it for now.
|
| 715 |
-
// TODO: Actually smooth attachment.
|
| 716 |
-
var rate = 50;
|
| 717 |
-
for (var time = 0; time <= 500; time += rate) {
|
| 718 |
-
setTimeout(updateTitleStickyDirect, time);
|
| 719 |
-
}
|
| 720 |
-
}
|
| 721 |
-
|
| 722 |
-
function toggleTopSticky() {
|
| 723 |
-
var topBar = document.getElementById('top_nav_bar');
|
| 724 |
-
topBar.classList.remove('sticky_top');
|
| 725 |
-
if (document.getElementById('stickyNavigation').checked) {
|
| 726 |
-
topBar.classList.add('sticky_top');
|
| 727 |
-
}
|
| 728 |
-
updateTitleSticky();
|
| 729 |
-
}
|
| 730 |
-
|
| 731 |
-
function toggleLabelSticky() {
|
| 732 |
-
updateHash();
|
| 733 |
-
var table = document.getElementById('image_table');
|
| 734 |
-
table.classList.remove('nostickytable');
|
| 735 |
-
if (!document.getElementById('stickyLabels').checked) {
|
| 736 |
-
table.classList.add('nostickytable');
|
| 737 |
-
}
|
| 738 |
-
}
|
| 739 |
-
|
| 740 |
-
function removeGeneratedImages() {
|
| 741 |
-
document.getElementById('save_image_output').innerHTML = '';
|
| 742 |
-
}
|
| 743 |
-
|
| 744 |
-
function makeImage(minRow = 0, doClear = true) {
|
| 745 |
-
// Preprocess data
|
| 746 |
-
var imageTable = document.getElementById('image_table');
|
| 747 |
-
var rows = Array.from(imageTable.getElementsByTagName('tr')).filter(e => e.getElementsByTagName('img').length > 0);
|
| 748 |
-
var header = document.getElementById('image_table_header');
|
| 749 |
-
var headers = Array.from(header.getElementsByTagName('th')).slice(1);
|
| 750 |
-
var widest_width = 0;
|
| 751 |
-
var total_height = 0;
|
| 752 |
-
var columns = 0;
|
| 753 |
-
var rowData = [];
|
| 754 |
-
var pad_x = 64, pad_y = 64;
|
| 755 |
-
let count = 0;
|
| 756 |
-
let sizeMult = parseFloat(document.getElementById('makeimage_size').value.replaceAll('x', ''));
|
| 757 |
-
for (var row of rows) {
|
| 758 |
-
count++;
|
| 759 |
-
if (count < minRow) {
|
| 760 |
-
continue;
|
| 761 |
-
}
|
| 762 |
-
var images = Array.from(row.getElementsByTagName('img'));
|
| 763 |
-
var real_images = images.filter(i => i.src != 'placeholder.png');
|
| 764 |
-
widest_width = Math.max(widest_width, ...real_images.map(i => i.naturalWidth * sizeMult));
|
| 765 |
-
var height = Math.max(...real_images.map(i => i.naturalHeight * sizeMult));
|
| 766 |
-
var y = pad_y + total_height;
|
| 767 |
-
if (total_height + height > 30000) { // 32,767 is max canvas size
|
| 768 |
-
setTimeout(() => makeImage(count, false), 100);
|
| 769 |
-
break;
|
| 770 |
-
}
|
| 771 |
-
total_height += height + 1;
|
| 772 |
-
columns = Math.max(columns, images.length);
|
| 773 |
-
var label = row.getElementsByClassName('axis_label_td')[0];
|
| 774 |
-
rowData.push({ row, images, real_images, height, label, y });
|
| 775 |
-
}
|
| 776 |
-
var holder = document.getElementById('save_image_output');
|
| 777 |
-
if (doClear) {
|
| 778 |
-
removeGeneratedImages();
|
| 779 |
-
}
|
| 780 |
-
// Temporary canvas to measure what padding we need
|
| 781 |
-
var canvas = new OffscreenCanvas(256, 256);
|
| 782 |
-
var ctx = canvas.getContext('2d');
|
| 783 |
-
ctx.beginPath();
|
| 784 |
-
ctx.rect(0, 0, canvas.width, canvas.height);
|
| 785 |
-
ctx.font = '16px sans';
|
| 786 |
-
ctx.textBaseline = 'top';
|
| 787 |
-
for (var row of rowData) {
|
| 788 |
-
var blocks = row.label.getElementsByTagName('b');
|
| 789 |
-
pad_x = Math.max(pad_x, ctx.measureText(blocks[0].textContent).width);
|
| 790 |
-
if (blocks.length == 2) {
|
| 791 |
-
pad_x = Math.max(pad_x, ctx.measureText(blocks[1].textContent).width);
|
| 792 |
-
}
|
| 793 |
-
}
|
| 794 |
-
pad_x = Math.min(pad_x, widest_width / 2);
|
| 795 |
-
pad_x += 5;
|
| 796 |
-
canvas = document.createElement('canvas');
|
| 797 |
-
canvas.width = (widest_width + 1) * columns + pad_x;
|
| 798 |
-
canvas.height = total_height + pad_y;
|
| 799 |
-
ctx = canvas.getContext('2d');
|
| 800 |
-
// Background
|
| 801 |
-
ctx.beginPath();
|
| 802 |
-
ctx.rect(0, 0, canvas.width, canvas.height);
|
| 803 |
-
ctx.fillStyle = '#202020';
|
| 804 |
-
ctx.fill();
|
| 805 |
-
// Secondary color toggling
|
| 806 |
-
var doColor = false;
|
| 807 |
-
ctx.fillStyle = '#303030';
|
| 808 |
-
var grid_x = pad_x;
|
| 809 |
-
for (var part of headers) {
|
| 810 |
-
if (part.getElementsByTagName('b').length == 2) {
|
| 811 |
-
doColor = !doColor;
|
| 812 |
-
}
|
| 813 |
-
if (doColor) {
|
| 814 |
-
ctx.beginPath();
|
| 815 |
-
ctx.rect(grid_x, 0, widest_width, pad_y);
|
| 816 |
-
ctx.fill();
|
| 817 |
-
}
|
| 818 |
-
grid_x += widest_width + 1;
|
| 819 |
-
}
|
| 820 |
-
doColor = false;
|
| 821 |
-
for (var row of rowData) {
|
| 822 |
-
if (row.label.getElementsByTagName('b').length == 2) {
|
| 823 |
-
doColor = !doColor;
|
| 824 |
-
}
|
| 825 |
-
if (doColor) {
|
| 826 |
-
ctx.beginPath();
|
| 827 |
-
ctx.rect(0, row.y, pad_x, row.height);
|
| 828 |
-
ctx.fill();
|
| 829 |
-
}
|
| 830 |
-
}
|
| 831 |
-
// Grid lines
|
| 832 |
-
ctx.fillStyle = '#000000';
|
| 833 |
-
for (var row of rowData) {
|
| 834 |
-
ctx.beginPath();
|
| 835 |
-
ctx.rect(0, row.y, canvas.width, 1);
|
| 836 |
-
ctx.fill();
|
| 837 |
-
}
|
| 838 |
-
grid_x = pad_x - 1;
|
| 839 |
-
for (var i = 0; i < columns; i++) {
|
| 840 |
-
ctx.beginPath();
|
| 841 |
-
ctx.rect(grid_x, 0, 1, canvas.height);
|
| 842 |
-
ctx.fill();
|
| 843 |
-
grid_x += widest_width + 1;
|
| 844 |
-
}
|
| 845 |
-
// Text Labels
|
| 846 |
-
ctx.font = '16px sans';
|
| 847 |
-
ctx.textBaseline = 'top';
|
| 848 |
-
ctx.fillStyle = '#ffffff';
|
| 849 |
-
ctx.beginPath();
|
| 850 |
-
ctx.rect(0, 0, canvas.width, canvas.height);
|
| 851 |
-
grid_x = pad_x + 5;
|
| 852 |
-
for (var part of headers) {
|
| 853 |
-
var blocks = part.getElementsByTagName('b');
|
| 854 |
-
if (blocks.length == 2) {
|
| 855 |
-
ctx.fillText(blocks[0].textContent, grid_x, 5, widest_width);
|
| 856 |
-
ctx.fillText(blocks[1].textContent, grid_x, 25, widest_width);
|
| 857 |
-
}
|
| 858 |
-
else {
|
| 859 |
-
ctx.fillText(blocks[0].textContent, grid_x, 25, widest_width);
|
| 860 |
-
}
|
| 861 |
-
grid_x += widest_width + 1;
|
| 862 |
-
}
|
| 863 |
-
function wrap(text, width) {
|
| 864 |
-
var words = text.split(' ');
|
| 865 |
-
var lines = [];
|
| 866 |
-
var line = '';
|
| 867 |
-
for (var word of words) {
|
| 868 |
-
var newLine = line + word + ' ';
|
| 869 |
-
if (ctx.measureText(newLine).width > width) {
|
| 870 |
-
lines.push(line);
|
| 871 |
-
line = word + ' ';
|
| 872 |
-
}
|
| 873 |
-
else {
|
| 874 |
-
line = newLine;
|
| 875 |
-
}
|
| 876 |
-
}
|
| 877 |
-
lines.push(line);
|
| 878 |
-
return lines.join('\n');
|
| 879 |
-
}
|
| 880 |
-
function writeMultiline(ctx, text, x, y) {
|
| 881 |
-
for (var line of text.split('\n')) {
|
| 882 |
-
ctx.fillText(line, x, y);
|
| 883 |
-
y += 16;
|
| 884 |
-
}
|
| 885 |
-
}
|
| 886 |
-
for (var row of rowData) {
|
| 887 |
-
var blocks = row.label.getElementsByTagName('b');
|
| 888 |
-
if (blocks.length == 2) {
|
| 889 |
-
writeMultiline(ctx, wrap(blocks[0].textContent + "\n" + blocks[1].textContent, widest_width / 2), 5, row.y + 4);
|
| 890 |
-
}
|
| 891 |
-
else {
|
| 892 |
-
writeMultiline(ctx, wrap(blocks[0].textContent, widest_width / 2), 5, row.y + 25);
|
| 893 |
-
}
|
| 894 |
-
}
|
| 895 |
-
// Images
|
| 896 |
-
for (var row of rowData) {
|
| 897 |
-
var x = pad_x;
|
| 898 |
-
for (var image of row.images) {
|
| 899 |
-
if (image.src != 'placeholder.png') {
|
| 900 |
-
ctx.drawImage(image, x, row.y, image.naturalWidth * sizeMult, image.naturalHeight * sizeMult);
|
| 901 |
-
x += widest_width + 1;
|
| 902 |
-
}
|
| 903 |
-
}
|
| 904 |
-
}
|
| 905 |
-
var imageType = document.getElementById('makeimage_type').value;
|
| 906 |
-
try {
|
| 907 |
-
var data = canvas.toDataURL(`image/${imageType}`);
|
| 908 |
-
canvas.remove();
|
| 909 |
-
var img = new Image();
|
| 910 |
-
img.className = 'save_image_output_img';
|
| 911 |
-
img.src = data;
|
| 912 |
-
holder.appendChild(img);
|
| 913 |
-
}
|
| 914 |
-
catch (e) {
|
| 915 |
-
holder.appendChild(canvas);
|
| 916 |
-
canvas.className = 'save_image_output_img';
|
| 917 |
-
canvas.style.width = "200px";
|
| 918 |
-
canvas.style.height = "200px";
|
| 919 |
-
}
|
| 920 |
-
$('#save_image_output_modal').modal('show');
|
| 921 |
-
}
|
| 922 |
-
|
| 923 |
-
function makeGif() {
|
| 924 |
-
let holder = document.getElementById('save_image_output');
|
| 925 |
-
removeGeneratedImages();
|
| 926 |
-
let axisId = document.getElementById('makegif_axis').value;
|
| 927 |
-
if (axisId == 'x-axis') {
|
| 928 |
-
axisId = getCurrentSelectedAxis('x');
|
| 929 |
-
}
|
| 930 |
-
let sizeMult = parseFloat(document.getElementById('makegif_size').value.replaceAll('x', ''));
|
| 931 |
-
let speed = parseFloat(document.getElementById('makegif_speed').value.replaceAll('/s', ''));
|
| 932 |
-
let axis = getAxisById(axisId);
|
| 933 |
-
let images = [];
|
| 934 |
-
let imgPath = [];
|
| 935 |
-
let index = 0;
|
| 936 |
-
for (let subAxis of rawData.axes) {
|
| 937 |
-
if (subAxis.id == axisId) {
|
| 938 |
-
index = imgPath.length;
|
| 939 |
-
imgPath.push(null);
|
| 940 |
-
}
|
| 941 |
-
else {
|
| 942 |
-
imgPath.push(getSelectedValKey(subAxis));
|
| 943 |
-
}
|
| 944 |
-
}
|
| 945 |
-
for (let val of axis.values) {
|
| 946 |
-
if (!canShowVal(axis.id, val.key)) {
|
| 947 |
-
continue;
|
| 948 |
-
}
|
| 949 |
-
imgPath[index] = val.path;
|
| 950 |
-
let slashed = imgPath.join('/');
|
| 951 |
-
let actualUrl = slashed + '.' + getExtension(slashed);
|
| 952 |
-
images.push(actualUrl);
|
| 953 |
-
}
|
| 954 |
-
if (document.getElementById('makegif_direction').value == 'Backwards') {
|
| 955 |
-
images.reverse();
|
| 956 |
-
}
|
| 957 |
-
let encoder = new GIFEncoder();
|
| 958 |
-
encoder.setRepeat(0);
|
| 959 |
-
encoder.setDelay(1000 / speed);
|
| 960 |
-
encoder.start();
|
| 961 |
-
let image1 = new Image();
|
| 962 |
-
image1.src = images[0];
|
| 963 |
-
image1.decode().then(() => {
|
| 964 |
-
let canvas = document.createElement('canvas');
|
| 965 |
-
canvas.width = image1.naturalWidth * sizeMult;
|
| 966 |
-
canvas.height = image1.naturalHeight * sizeMult;
|
| 967 |
-
ctx = canvas.getContext('2d');
|
| 968 |
-
ctx.beginPath();
|
| 969 |
-
let id = 1;
|
| 970 |
-
let image2 = new Image();
|
| 971 |
-
let callback = () => {
|
| 972 |
-
ctx.drawImage(image2, 0, 0, canvas.width, canvas.height);
|
| 973 |
-
encoder.addFrame(ctx);
|
| 974 |
-
if (id >= images.length) {
|
| 975 |
-
encoder.finish();
|
| 976 |
-
let binary_gif = encoder.stream().getData();
|
| 977 |
-
let data_url = 'data:image/gif;base64,' + encode64(binary_gif);
|
| 978 |
-
let animatedImage = document.createElement('img');
|
| 979 |
-
animatedImage.className = 'save_image_output_img';
|
| 980 |
-
animatedImage.src = data_url;
|
| 981 |
-
image1.remove();
|
| 982 |
-
image2.remove();
|
| 983 |
-
holder.appendChild(animatedImage);
|
| 984 |
-
$('#save_image_output_modal').modal('show');
|
| 985 |
-
}
|
| 986 |
-
else {
|
| 987 |
-
image2 = new Image();
|
| 988 |
-
image2.src = images[id];
|
| 989 |
-
id++;
|
| 990 |
-
image2.decode().then(callback);
|
| 991 |
-
}
|
| 992 |
-
};
|
| 993 |
-
image2.src = images[0];
|
| 994 |
-
image2.decode().then(callback);
|
| 995 |
-
});
|
| 996 |
-
|
| 997 |
-
}
|
| 998 |
-
|
| 999 |
-
function updateHash() {
|
| 1000 |
-
var hash = `#auto-loc`;
|
| 1001 |
-
for (let elem of ['showDescriptions', 'autoScaleImages', 'stickyNavigation', 'stickyLabels', 'pauseVideos']) {
|
| 1002 |
-
hash += `,${document.getElementById(elem).checked}`;
|
| 1003 |
-
}
|
| 1004 |
-
for (let val of ['x', 'y', 'x2', 'y2']) {
|
| 1005 |
-
hash += `,${encodeURIComponent(getCurrentSelectedAxis(val))}`;
|
| 1006 |
-
}
|
| 1007 |
-
for (let subAxis of rawData.axes) {
|
| 1008 |
-
hash += `,${encodeURIComponent(getSelectedValKey(subAxis))}`;
|
| 1009 |
-
}
|
| 1010 |
-
for (let axis of rawData.axes) {
|
| 1011 |
-
for (let value of axis.values) {
|
| 1012 |
-
if (!canShowVal(axis.id, value.key)) {
|
| 1013 |
-
hash += `&hide=${encodeURIComponent(axis.id)},${encodeURIComponent(value.key)}`;
|
| 1014 |
-
}
|
| 1015 |
-
}
|
| 1016 |
-
}
|
| 1017 |
-
history.pushState(null, null, hash);
|
| 1018 |
-
}
|
| 1019 |
-
|
| 1020 |
-
function applyHash(hash) {
|
| 1021 |
-
if (!hash) {
|
| 1022 |
-
return;
|
| 1023 |
-
}
|
| 1024 |
-
let params = hash.substring(1).split('&');
|
| 1025 |
-
for (let hidden of params.slice(1)) {
|
| 1026 |
-
let [action, value] = hidden.split('=');
|
| 1027 |
-
if (action == 'hide') {
|
| 1028 |
-
let [axis, val] = value.split(',');
|
| 1029 |
-
setShowVal(axis, val, false);
|
| 1030 |
-
}
|
| 1031 |
-
}
|
| 1032 |
-
let hashInputs = params[0].split(',');
|
| 1033 |
-
let expectedLen = 1 + 5 + 4 + rawData.axes.length;
|
| 1034 |
-
if (hashInputs.length != expectedLen) {
|
| 1035 |
-
console.log(`Hash length mismatch: ${hashInputs.length} != ${expectedLen}, skipping value reload.`);
|
| 1036 |
-
return;
|
| 1037 |
-
}
|
| 1038 |
-
if (hashInputs[0] != 'auto-loc') {
|
| 1039 |
-
console.log(`Hash prefix mismatch: ${hashInputs[0]} != auto-loc, skipping value reload.`);
|
| 1040 |
-
return;
|
| 1041 |
-
}
|
| 1042 |
-
let index = 1;
|
| 1043 |
-
for (let elem of ['showDescriptions', 'autoScaleImages', 'stickyNavigation', 'stickyLabels', 'pauseVideos']) {
|
| 1044 |
-
document.getElementById(elem).checked = hashInputs[index++] == 'true';
|
| 1045 |
-
}
|
| 1046 |
-
for (let axis of ['x', 'y', 'x2', 'y2']) {
|
| 1047 |
-
let id = axis + '_' + decodeURIComponent(hashInputs[index++]);
|
| 1048 |
-
let target = document.getElementById(id);
|
| 1049 |
-
if (!target) {
|
| 1050 |
-
console.log(`Axis element not found: ${id}, skipping value reload.`);
|
| 1051 |
-
return;
|
| 1052 |
-
}
|
| 1053 |
-
target.click();
|
| 1054 |
-
}
|
| 1055 |
-
for (let subAxis of rawData.axes) {
|
| 1056 |
-
let val = decodeURIComponent(hashInputs[index++]);
|
| 1057 |
-
let target = getNavValTab(subAxis.id, val);
|
| 1058 |
-
if (!target) {
|
| 1059 |
-
console.log(`Axis-value element not found: ${id}, skipping value reload.`);
|
| 1060 |
-
return;
|
| 1061 |
-
}
|
| 1062 |
-
target.click();
|
| 1063 |
-
}
|
| 1064 |
-
updateStylesToMatchInputs();
|
| 1065 |
-
}
|
| 1066 |
-
|
| 1067 |
-
let lastUpdateObj = null;
|
| 1068 |
-
let updateCheckCount = 0;
|
| 1069 |
-
let updatesWithoutData = 0;
|
| 1070 |
-
|
| 1071 |
-
function tryReloadImg(img) {
|
| 1072 |
-
let target = img.dataset.errored_src;
|
| 1073 |
-
delete img.dataset.errored_src;
|
| 1074 |
-
img.removeAttribute('width');
|
| 1075 |
-
img.removeAttribute('height');
|
| 1076 |
-
img.addEventListener('error', function() {
|
| 1077 |
-
setImgPlaceholder(img);
|
| 1078 |
-
});
|
| 1079 |
-
img.src = target;
|
| 1080 |
-
if (typeof getMetadataScriptFor != 'undefined') {
|
| 1081 |
-
let newScr = document.createElement('script');
|
| 1082 |
-
newScr.src = getMetadataScriptFor(img.dataset.img_path);
|
| 1083 |
-
document.getElementById('image_script_dump').appendChild(newScr);
|
| 1084 |
-
}
|
| 1085 |
-
}
|
| 1086 |
-
|
| 1087 |
-
function checkForUpdates() {
|
| 1088 |
-
if (!window.lastUpdated) {
|
| 1089 |
-
if (updatesWithoutData++ > 2) {
|
| 1090 |
-
console.log('Update-checker has no more updates.');
|
| 1091 |
-
for (let img of document.querySelectorAll(`img[data-errored_src]`)) {
|
| 1092 |
-
tryReloadImg(img);
|
| 1093 |
-
}
|
| 1094 |
-
return;
|
| 1095 |
-
}
|
| 1096 |
-
}
|
| 1097 |
-
else {
|
| 1098 |
-
console.log(`Update-checker found ${window.lastUpdated.length} updates.`);
|
| 1099 |
-
for (let url of window.lastUpdated) {
|
| 1100 |
-
for (let img of document.querySelectorAll(`img[data-errored_src]`)) {
|
| 1101 |
-
if (img.dataset.errored_src.endsWith(url)) {
|
| 1102 |
-
tryReloadImg(img);
|
| 1103 |
-
}
|
| 1104 |
-
}
|
| 1105 |
-
}
|
| 1106 |
-
updateScaling();
|
| 1107 |
-
window.lastUpdated = null;
|
| 1108 |
-
}
|
| 1109 |
-
if (lastUpdateObj != null) {
|
| 1110 |
-
lastUpdateObj.remove();
|
| 1111 |
-
}
|
| 1112 |
-
lastUpdateObj = document.createElement('script');
|
| 1113 |
-
lastUpdateObj.src = `last.js?vary=${updateCheckCount++}`;
|
| 1114 |
-
document.body.appendChild(lastUpdateObj);
|
| 1115 |
-
setTimeout(checkForUpdates, 5 * 1000);
|
| 1116 |
-
}
|
| 1117 |
-
|
| 1118 |
-
loadData();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/styles-user.css
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
Add your own CSS rules to this file (instead of modifying styles.css)
|
| 3 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/styles.css
DELETED
|
@@ -1,155 +0,0 @@
|
|
| 1 |
-
/*
|
| 2 |
-
If you want to customize your stylesheet, please edit 'styles-user.css' instead of this.
|
| 3 |
-
*/
|
| 4 |
-
|
| 5 |
-
.sel_table tr td {
|
| 6 |
-
border: 1px solid black;
|
| 7 |
-
padding-right: 16px;
|
| 8 |
-
padding-left: 16px;
|
| 9 |
-
}
|
| 10 |
-
.sel_table {
|
| 11 |
-
min-width: 60em;
|
| 12 |
-
width: 100%;
|
| 13 |
-
}
|
| 14 |
-
.secondary {
|
| 15 |
-
background-color: #202020;
|
| 16 |
-
}
|
| 17 |
-
.emptytab {
|
| 18 |
-
width: 0px;
|
| 19 |
-
}
|
| 20 |
-
.primary {
|
| 21 |
-
background-color: #303030;
|
| 22 |
-
}
|
| 23 |
-
.axis_table_cell {
|
| 24 |
-
width: calc(min(40em, max(10em, 100vw - 40em)));
|
| 25 |
-
max-height: 8em;
|
| 26 |
-
overflow: auto;
|
| 27 |
-
}
|
| 28 |
-
.tabval_subdiv {
|
| 29 |
-
min-width: calc(100vw - 5em - min(40em, max(10em, 100vw - 40em)));
|
| 30 |
-
max-height: 8em;
|
| 31 |
-
overflow: auto;
|
| 32 |
-
}
|
| 33 |
-
table tr td,
|
| 34 |
-
table tr th {
|
| 35 |
-
vertical-align: top;
|
| 36 |
-
border: 1px solid black;
|
| 37 |
-
word-break: break-all;
|
| 38 |
-
}
|
| 39 |
-
th {
|
| 40 |
-
position: sticky;
|
| 41 |
-
top: -1px;
|
| 42 |
-
background-color: #202020;
|
| 43 |
-
background-clip: padding-box;
|
| 44 |
-
}
|
| 45 |
-
table tr td:first-child {
|
| 46 |
-
position: sticky;
|
| 47 |
-
left: -1px;
|
| 48 |
-
}
|
| 49 |
-
.nostickytable tr:first-child {
|
| 50 |
-
position: static !important;
|
| 51 |
-
}
|
| 52 |
-
.nostickytable tr th {
|
| 53 |
-
position: static !important;
|
| 54 |
-
}
|
| 55 |
-
.nostickytable tr td:first-child {
|
| 56 |
-
position: static !important;
|
| 57 |
-
}
|
| 58 |
-
.popup_modal_background {
|
| 59 |
-
font-family: monospace, monospace;
|
| 60 |
-
background-color: rgb(50, 50, 50, 0.7);
|
| 61 |
-
text-align: center;
|
| 62 |
-
}
|
| 63 |
-
.popup_modal_img {
|
| 64 |
-
height: 100%;
|
| 65 |
-
width: 100%;
|
| 66 |
-
max-height: calc(min(100vw, 100vh - 8em));
|
| 67 |
-
max-width: 90vw;
|
| 68 |
-
position: relative;
|
| 69 |
-
margin: auto;
|
| 70 |
-
object-fit: contain;
|
| 71 |
-
}
|
| 72 |
-
.popup_modal_undertext {
|
| 73 |
-
background-color: #404060;
|
| 74 |
-
overflow-wrap: break-word;
|
| 75 |
-
}
|
| 76 |
-
.modal_inner_div {
|
| 77 |
-
max-width: 90vw;
|
| 78 |
-
margin: auto;
|
| 79 |
-
}
|
| 80 |
-
.advanced_settings_section {
|
| 81 |
-
max-width: calc(max(1500px, 90em));
|
| 82 |
-
text-align: left;
|
| 83 |
-
margin: auto;
|
| 84 |
-
}
|
| 85 |
-
.timer_range {
|
| 86 |
-
vertical-align: bottom;
|
| 87 |
-
}
|
| 88 |
-
.tab_hidden {
|
| 89 |
-
display: none;
|
| 90 |
-
}
|
| 91 |
-
.nav-link:focus {
|
| 92 |
-
background-color: #909050 !important;
|
| 93 |
-
}
|
| 94 |
-
.axis_label_td {
|
| 95 |
-
left: 0px;
|
| 96 |
-
background-color: #202020;
|
| 97 |
-
background-clip: padding-box;
|
| 98 |
-
word-break: break-all;
|
| 99 |
-
min-width: 10em;
|
| 100 |
-
}
|
| 101 |
-
.superaxis_second {
|
| 102 |
-
background-color: #303030;
|
| 103 |
-
}
|
| 104 |
-
.axis_selectors {
|
| 105 |
-
text-align: right;
|
| 106 |
-
margin: auto;
|
| 107 |
-
width: fit-content;
|
| 108 |
-
}
|
| 109 |
-
.sticky_top {
|
| 110 |
-
position: sticky;
|
| 111 |
-
top: 0;
|
| 112 |
-
}
|
| 113 |
-
.accordion-button {
|
| 114 |
-
padding: 0.5rem;
|
| 115 |
-
}
|
| 116 |
-
.save_image_area {
|
| 117 |
-
text-align: center;
|
| 118 |
-
}
|
| 119 |
-
.save_image_area img {
|
| 120 |
-
margin-right: 1rem;
|
| 121 |
-
margin-left: 1rem;
|
| 122 |
-
border: 2px solid orange;
|
| 123 |
-
border-radius: 0.5rem;
|
| 124 |
-
}
|
| 125 |
-
.content_box {
|
| 126 |
-
display: inline-block;
|
| 127 |
-
}
|
| 128 |
-
.top_nav_bar {
|
| 129 |
-
position: sticky;
|
| 130 |
-
left: 2.5vw;
|
| 131 |
-
width: 95vw;
|
| 132 |
-
}
|
| 133 |
-
.image_table_box {
|
| 134 |
-
display: inline-block;
|
| 135 |
-
min-width: 100%;
|
| 136 |
-
}
|
| 137 |
-
.image_table {
|
| 138 |
-
margin: auto;
|
| 139 |
-
}
|
| 140 |
-
.save_image_output {
|
| 141 |
-
text-align: center;
|
| 142 |
-
}
|
| 143 |
-
.save_image_output_img {
|
| 144 |
-
max-width: 100%;
|
| 145 |
-
max-height: 70vh;
|
| 146 |
-
}
|
| 147 |
-
.advanced-checkbox {
|
| 148 |
-
display: inline-block;
|
| 149 |
-
border-radius: 0.2rem;
|
| 150 |
-
border: 1px dashed rgba(255, 255, 255, 0.25);
|
| 151 |
-
margin: 0.1rem;
|
| 152 |
-
}
|
| 153 |
-
label {
|
| 154 |
-
display: inline;
|
| 155 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/swarm_save_config.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"axes": [
|
| 3 |
-
{
|
| 4 |
-
"mode": "stylemodelmergestrength",
|
| 5 |
-
"values": "0.4,0.5,0.6"
|
| 6 |
-
}
|
| 7 |
-
],
|
| 8 |
-
"checkboxes": {
|
| 9 |
-
"grid-gen-opt-do-overwrite": false,
|
| 10 |
-
"grid-gen-opt-fast-skip": false,
|
| 11 |
-
"grid-gen-opt-generate-page": true,
|
| 12 |
-
"grid-gen-opt-publish-metadata": true,
|
| 13 |
-
"grid-gen-opt-dry-run": false,
|
| 14 |
-
"grid-gen-opt-weight-order": true,
|
| 15 |
-
"grid-gen-opt-continue-on-error": false,
|
| 16 |
-
"grid-gen-opt-show-outputs": true
|
| 17 |
-
},
|
| 18 |
-
"output_folder_name": "grid-[date]-[time]",
|
| 19 |
-
"output_type": "Web Page"
|
| 20 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-36-11/swarmui_gridgen_local.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
| 1 |
-
// TODO
|
| 2 |
-
|
| 3 |
-
let all_metadata = {};
|
| 4 |
-
|
| 5 |
-
function getScoreFor(img) {
|
| 6 |
-
let meta = all_metadata[img] || {};
|
| 7 |
-
return ((meta['sui_image_params'] || {})['scoring'] || {})['average'] || ((meta['sui_extra_data'] || {})['scoring'] || {})['average'] || null;
|
| 8 |
-
}
|
| 9 |
-
|
| 10 |
-
function getMetadataScriptFor(slashed) {
|
| 11 |
-
return `${slashed}.metadata.js`;
|
| 12 |
-
}
|
| 13 |
-
|
| 14 |
-
function getMetadataForImage(img) {
|
| 15 |
-
let data = all_metadata[img.dataset.img_path];
|
| 16 |
-
if (!data) {
|
| 17 |
-
return "";
|
| 18 |
-
}
|
| 19 |
-
return formatMetadata(data);
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
function formatMetadata(metadata) {
|
| 23 |
-
if (!metadata || !metadata['sui_image_params']) {
|
| 24 |
-
return '';
|
| 25 |
-
}
|
| 26 |
-
let result = '';
|
| 27 |
-
function appendObject(obj) {
|
| 28 |
-
for (let key of Object.keys(obj)) {
|
| 29 |
-
let val = obj[key];
|
| 30 |
-
if (val) {
|
| 31 |
-
if (typeof val == 'object') {
|
| 32 |
-
result += `${key}: `;
|
| 33 |
-
appendObject(val);
|
| 34 |
-
result += `, `;
|
| 35 |
-
}
|
| 36 |
-
else {
|
| 37 |
-
result += `${key}: ${val}, `;
|
| 38 |
-
}
|
| 39 |
-
}
|
| 40 |
-
}
|
| 41 |
-
};
|
| 42 |
-
appendObject(metadata.sui_image_params);
|
| 43 |
-
if ('sui_extra_data' in metadata) {
|
| 44 |
-
appendObject(metadata.sui_extra_data);
|
| 45 |
-
}
|
| 46 |
-
return result;
|
| 47 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/bootstrap.bundle.min.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
/*!
|
| 2 |
-
* Bootstrap v5.2.2 (https://getbootstrap.com/)
|
| 3 |
-
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
| 4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
| 5 |
-
*/
|
| 6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=Vt(O),k=de(O)===wt,L=[gt,mt].indexOf(x)>=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ze(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:Ft(t)?Ce(t):t.contextElement?Ce(t.contextElement):[],popper:Ce(e)};var r,c,u=function(t){var e=We(t);return $t.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Fe(e,i)){a.rects={reference:$e(e,oe(i),"fixed"===a.options.strategy),popper:Jt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Fe(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var qe=ze(),Re=ze({defaultModifiers:[me,Me,pe,Rt]}),Ve=ze({defaultModifiers:[me,Me,pe,Rt,je,Se,He,he,Pe]});const Ke=Object.freeze(Object.defineProperty({__proto__:null,popperGenerator:ze,detectOverflow:Le,createPopperBase:qe,createPopper:Ve,createPopperLite:Re,top:gt,bottom:mt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:At,clippingParents:Et,viewport:Tt,popper:Ct,reference:Ot,variationPlacements:xt,placements:kt,beforeRead:Lt,read:Dt,afterRead:St,beforeMain:It,main:Nt,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:$t,applyStyles:Rt,arrow:he,computeStyles:pe,eventListeners:me,flip:Se,hide:Pe,offset:je,popperOffsets:Me,preventOverflow:He},Symbol.toStringTag,{value:"Module"})),Qe="dropdown",Xe="ArrowUp",Ye="ArrowDown",Ue="click.bs.dropdown.data-api",Ge="keydown.bs.dropdown.data-api",Je="show",Ze='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ti=`${Ze}.show`,ei=".dropdown-menu",ii=p()?"top-end":"top-start",ni=p()?"top-start":"top-end",si=p()?"bottom-end":"bottom-start",oi=p()?"bottom-start":"bottom-end",ri=p()?"left-start":"right-start",ai=p()?"right-start":"left-start",li={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ci={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class hi extends z{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Q.next(this._element,ei)[0]||Q.prev(this._element,ei)[0]||Q.findOne(ei,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Qe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),P.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Qe.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ke)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Ve(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Je)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this.tip&&this.tip.remove(),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/bootstrap.min.css
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/data.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
| 1 |
-
rawData = {
|
| 2 |
-
"title": "Grids/grid-2025-01-04-15-41-26",
|
| 3 |
-
"description": "",
|
| 4 |
-
"ext": "png",
|
| 5 |
-
"min_width": 1024,
|
| 6 |
-
"min_height": 1024,
|
| 7 |
-
"defaults": {
|
| 8 |
-
"show_descriptions": true,
|
| 9 |
-
"autoscale": false,
|
| 10 |
-
"sticky": false,
|
| 11 |
-
"sticky_labels": true,
|
| 12 |
-
"x": "stylemodelmergestrength",
|
| 13 |
-
"y": "stylemodelmergestrength",
|
| 14 |
-
"x2": "none",
|
| 15 |
-
"y2": "none"
|
| 16 |
-
},
|
| 17 |
-
"will_run": true,
|
| 18 |
-
"metadata": null,
|
| 19 |
-
"axes": [
|
| 20 |
-
{
|
| 21 |
-
"id": "stylemodelmergestrength",
|
| 22 |
-
"title": "Style Model Merge Strength",
|
| 23 |
-
"description": "",
|
| 24 |
-
"values": [
|
| 25 |
-
{
|
| 26 |
-
"key": "0_4",
|
| 27 |
-
"path": "0_4",
|
| 28 |
-
"title": "0.4",
|
| 29 |
-
"description": "",
|
| 30 |
-
"show": true,
|
| 31 |
-
"params": {
|
| 32 |
-
"stylemodelmergestrength": "0.4"
|
| 33 |
-
}
|
| 34 |
-
},
|
| 35 |
-
{
|
| 36 |
-
"key": "0_5",
|
| 37 |
-
"path": "0_5",
|
| 38 |
-
"title": "0.5",
|
| 39 |
-
"description": "",
|
| 40 |
-
"show": true,
|
| 41 |
-
"params": {
|
| 42 |
-
"stylemodelmergestrength": "0.5"
|
| 43 |
-
}
|
| 44 |
-
},
|
| 45 |
-
{
|
| 46 |
-
"key": "0_6",
|
| 47 |
-
"path": "0_6",
|
| 48 |
-
"title": "0.6",
|
| 49 |
-
"description": "",
|
| 50 |
-
"show": true,
|
| 51 |
-
"params": {
|
| 52 |
-
"stylemodelmergestrength": "0.6"
|
| 53 |
-
}
|
| 54 |
-
}
|
| 55 |
-
]
|
| 56 |
-
}
|
| 57 |
-
]
|
| 58 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/image_metadata.ldb
DELETED
|
Binary file (32.8 kB)
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/index.html
DELETED
|
@@ -1,132 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<head>
|
| 3 |
-
<meta charset="utf-8" />
|
| 4 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 5 |
-
<link rel="stylesheet" href="bootstrap.min.css" media="screen">
|
| 6 |
-
<link rel="stylesheet" href="styles.css?vary=0.9.4.0" media="screen">
|
| 7 |
-
<link rel="stylesheet" href="styles-user.css?vary=0.9.4.0" media="screen">
|
| 8 |
-
<title>Grids/grid-2025-01-04-15-41-26</title>
|
| 9 |
-
<meta name="description" content="" />
|
| 10 |
-
<script src="jquery.min.js"></script>
|
| 11 |
-
</head>
|
| 12 |
-
<body>
|
| 13 |
-
<div class="content_box">
|
| 14 |
-
<h1>Grids/grid-2025-01-04-15-41-26</h1>
|
| 15 |
-
<h4></h4>
|
| 16 |
-
<noscript>This page requires JavaScript to work. Don't worry, it's all local to the current page, and open source on GitHub.</noscript>
|
| 17 |
-
<hr>
|
| 18 |
-
<div class="top_nav_bar" id="top_nav_bar">
|
| 19 |
-
<div class="accordion navigation_accordion" id="navigation_accordion">
|
| 20 |
-
<div class="accordion-item">
|
| 21 |
-
<h2 class="accordion-header" id="navigation_accordion_heading">
|
| 22 |
-
<button class="accordion-button" type="button" id="toggle_nav_button" data-bs-toggle="collapse" data-bs-target="#navigation_accordion_collapse" aria-expanded="true" aria-controls="navigation_accordion_collapse">Navigation</button>
|
| 23 |
-
</h2>
|
| 24 |
-
<div id="navigation_accordion_collapse" class="accordion-collapse collapse show" aria-labelledby="navigation_accordion_heading" data-bs-parent="navigation_accordion">
|
| 25 |
-
<div class="accordion-body">
|
| 26 |
-
<div>
|
| 27 |
-
<div class="accordion advanced_settings_section" id="settings_accordion">
|
| 28 |
-
<div class="accordion-item">
|
| 29 |
-
<h2 class="accordion-header" id="setting_accordion_heading">
|
| 30 |
-
<button class="accordion-button collapsed" id="toggle_adv_button" type="button" data-bs-toggle="collapse" data-bs-target="#settings_accordion_collapse" aria-expanded="false" aria-controls="settings_accordion_collapse">Advanced Settings</button>
|
| 31 |
-
</h2>
|
| 32 |
-
<div id="settings_accordion_collapse" class="accordion-collapse collapse" aria-labelledby="setting_accordion_heading" data-bs-parent="#settings_accordion">
|
| 33 |
-
<div class="accordion-body">
|
| 34 |
-
|
| 35 |
-
<h4>Style Model Merge Strength</h4><div class="timer_box">Auto cycle every <input style="width:30em;" autocomplete="off" type="range" min="0" max="360" value="0" class="form-range timer_range" id="range_tablist_stylemodelmergestrength"><label class="form-check-label" for="range_tablist_stylemodelmergestrength" id="label_range_tablist_stylemodelmergestrength">0 seconds</label></div>
|
| 36 |
-
Show value: <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_4" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_4')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_4" title="Uncheck this to hide '0.4' from the page.">0.4</label></div> <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_5" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_5')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_5" title="Uncheck this to hide '0.5' from the page.">0.5</label></div> <div class="advanced-checkbox"><input class="form-check-input" type="checkbox" autocomplete="off" id="showval_stylemodelmergestrength__0_6" checked="true" onchange="javascript:toggleShowVal('stylemodelmergestrength', '0_6')"> <label class="form-check-label" for="showval_stylemodelmergestrength__0_6" title="Uncheck this to hide '0.6' from the page.">0.6</label></div> <button class="submit" onclick="javascript:toggleShowAllAxis('stylemodelmergestrength')">Toggle All</button>
|
| 37 |
-
</div>
|
| 38 |
-
</div>
|
| 39 |
-
</div>
|
| 40 |
-
</div>
|
| 41 |
-
</div>
|
| 42 |
-
<br>
|
| 43 |
-
<div style="margin: auto; width: fit-content;"><table class="sel_table">
|
| 44 |
-
<tr class="primary">
|
| 45 |
-
<td>
|
| 46 |
-
<h4>Style Model Merge Strength</h4>
|
| 47 |
-
<div class="axis_table_cell emptytab"></div></td>
|
| 48 |
-
<td><ul class="nav nav-tabs" role="tablist" id="tablist_stylemodelmergestrength">
|
| 49 |
-
<li class="nav-item" role="presentation"><a class="nav-link active" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_4" id="clicktab_stylemodelmergestrength__0_4" aria-selected="true" role="tab" title="0.4: ">0.4</a></li>
|
| 50 |
-
<li class="nav-item" role="presentation"><a class="nav-link" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_5" id="clicktab_stylemodelmergestrength__0_5" aria-selected="false" role="tab" title="0.5: ">0.5</a></li>
|
| 51 |
-
<li class="nav-item" role="presentation"><a class="nav-link" data-bs-toggle="tab" href="#tab_stylemodelmergestrength__0_6" id="clicktab_stylemodelmergestrength__0_6" aria-selected="false" role="tab" title="0.6: ">0.6</a></li>
|
| 52 |
-
</ul>
|
| 53 |
-
<div class="tab-content">
|
| 54 |
-
<div class="tab-pane active show emptytab" id="tab_stylemodelmergestrength__0_4" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 55 |
-
<div class="tab-pane emptytab" id="tab_stylemodelmergestrength__0_5" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 56 |
-
<div class="tab-pane emptytab" id="tab_stylemodelmergestrength__0_6" role="tabpanel"><div class="tabval_subdiv"></div></div>
|
| 57 |
-
</div></td></tr>
|
| 58 |
-
</table>
|
| 59 |
-
<div class="axis_selectors"><br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">X Axis:
|
| 60 |
-
<input type="radio" class="btn-check" name="x_axis_selector" id="x_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 61 |
-
</div>
|
| 62 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">Y Axis:
|
| 63 |
-
<input type="radio" class="btn-check" name="y_axis_selector" id="y_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 64 |
-
</div>
|
| 65 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">X Super-Axis:
|
| 66 |
-
<input type="radio" class="btn-check" name="x2_axis_selector" id="x2_none" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x2_none" title="None">None</label>
|
| 67 |
-
<input type="radio" class="btn-check" name="x2_axis_selector" id="x2_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="x2_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 68 |
-
</div>
|
| 69 |
-
<br><div class="btn-group" role="group" aria-label="Basic radio toggle button group">Y Super-Axis:
|
| 70 |
-
<input type="radio" class="btn-check" name="y2_axis_selector" id="y2_none" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y2_none" title="None">None</label>
|
| 71 |
-
<input type="radio" class="btn-check" name="y2_axis_selector" id="y2_stylemodelmergestrength" autocomplete="off" checked=""><label class="btn btn-outline-primary" for="y2_stylemodelmergestrength" title="">Style Model Merge Strength</label>
|
| 72 |
-
</div>
|
| 73 |
-
</div></div>
|
| 74 |
-
|
| 75 |
-
<center>
|
| 76 |
-
<input class="form-check-input" type="checkbox" id="showDescriptions" checked="true" autocomplete="off" onchange="javascript:toggleDescriptions()"> <label class="form-check-label" for="showDescriptions" title="Uncheck this to focus on the grid. Check it to see the full descriptions of each option.">Show descriptions of axes and values</label>
|
| 77 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" value="" id="autoScaleImages"> <label class="form-check-label" for="autoScaleImages">Auto-scale images to viewport width</label>
|
| 78 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" value="" id="stickyNavigation"> <label class="form-check-label" for="stickyNavigation">Sticky navigation</label>
|
| 79 |
-
  <input class="form-check-input" type="checkbox" autocomplete="off" checked id="stickyLabels"> <label class="form-check-label" for="stickyLabels">Sticky labels</label>
|
| 80 |
-
  <span id="score_setting">Score Display: <select id="score_display"><option>None</option><option>Thin Outline</option><option>Thick Bars</option><option>Heatmap</option></select></span>
|
| 81 |
-
  <span title="This only applies to video files (mp4, webm, mov) and does not apply to 'animated images' (gif, webp)"><input class="form-check-input" type="checkbox" autocomplete="off" id="pauseVideos"> <label class="form-check-label" for="pauseVideos">Pause Videos</label></span>
|
| 82 |
-
</center>
|
| 83 |
-
</div>
|
| 84 |
-
</div>
|
| 85 |
-
</div>
|
| 86 |
-
</div>
|
| 87 |
-
<div id="save_image_helper" class="save_image_area">
|
| 88 |
-
<button onclick="makeImage()">Save Image Of Current View</button> <select title="Image Type" id="makeimage_type"><option>jpeg</option><option>png</option></select> <select title="Image Size" id="makeimage_size"><option selected>1x</option><option>0.75x</option><option>0.5x</option><option>0.25x</option></select>
|
| 89 |
-
 <button onclick="makeGif()">Create Axis GIF Animation</button> <select title="Axis" id="makegif_axis"><option value="x-axis">X Axis</option></select> <select title="GIF Size" id="makegif_size"><option>1x</option><option>0.75x</option><option selected>0.5x</option><option>0.25x</option></select> <select title="GIF Speed" id="makegif_speed"><option>1/s</option><option>2/s</option><option>3/s</option><option selected>4/s</option><option>5/s</option><option>10/s</option></select><select title="GIF Direction" id="makegif_direction"><option>Forwards</option><option>Backwards</option></select>
|
| 90 |
-
<div id="save_image_info" style="display: none;">Here's your image! To share it, just use right click -> Copy image or Save Image As</div>
|
| 91 |
-
</div>
|
| 92 |
-
</div>
|
| 93 |
-
<div class="image_table_box">
|
| 94 |
-
<table class="image_table" id="image_table"></table>
|
| 95 |
-
<table id="image_script_dump"></table>
|
| 96 |
-
</div>
|
| 97 |
-
</div>
|
| 98 |
-
<div class="modal modal-fullscreen popup_modal_background" id="image_info_modal"></div>
|
| 99 |
-
<div class="modal" tabindex="-1" id="save_image_output_modal">
|
| 100 |
-
<div class="modal-dialog modal-xl">
|
| 101 |
-
<div class="modal-content">
|
| 102 |
-
<div class="modal-header">
|
| 103 |
-
<h5 class="modal-title">Here's your image!</h5>
|
| 104 |
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
| 105 |
-
</div>
|
| 106 |
-
<div class="modal-body">
|
| 107 |
-
<p>To share it, just use right click -> Copy image or Save Image As.</p>
|
| 108 |
-
<div id="save_image_output" class="save_image_output"></div>
|
| 109 |
-
</div>
|
| 110 |
-
</div>
|
| 111 |
-
</div>
|
| 112 |
-
</div>
|
| 113 |
-
<br><div style="width:256px;height:512px;"></div> <!-- Spacer to reduce screen-jumping if images load while you're scrolled down -->
|
| 114 |
-
<footer>
|
| 115 |
-
<center>
|
| 116 |
-
<hr>
|
| 117 |
-
Created by: Unspecified
|
| 118 |
-
<br>The technology that powers this page is <a href="https://github.com/mcmonkeyprojects/sd-infinity-grid-generator-script">Infinity Grid Generator</a>, published under the MIT license by Alex 'mcmonkey' Goodwin.
|
| 119 |
-
<br>This software allows users to generate pages with any content they desire. Therefore, content on this page (images, text, etc.) is the property of whoever generated this specific page.
|
| 120 |
-
<br>Images area auto-generated by an AI (Stable Diffusion) and so may not have been reviewed by the page author before publishing.
|
| 121 |
-
<script src="swarmui_gridgen_local.js?vary=0.9.4.0.GIT-fba88ca5"></script>
|
| 122 |
-
<br>Made using the <a href="https://bootswatch.com/darkly/">Darkly Bootstrap Theme</a> by Thomas Park, which was released under the <a href="https://github.com/thomaspark/bootswatch/blob/95df99d76147797cbcb1014b639805add2327f65/LICENSE">MIT License</a>.
|
| 123 |
-
<br>Gifs are generated using <a href="https://github.com/antimatter15/jsgif">JSGif</a>, which was released under the <a href="https://github.com/antimatter15/jsgif/blob/b46429c50a53d23b762d6ebb00b375aece3ed843/LICENSE">MIT License</a>.
|
| 124 |
-
<br>
|
| 125 |
-
<br><div style="width:256px;height:512px;"></div>
|
| 126 |
-
</center>
|
| 127 |
-
</footer>
|
| 128 |
-
<script src="bootstrap.bundle.min.js"></script>
|
| 129 |
-
<script src="jsgif.js"></script>
|
| 130 |
-
<script src="data.js?vary=0.9.4.0"></script>
|
| 131 |
-
<script src="proc.js?vary=0.9.4.0"></script>
|
| 132 |
-
</body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwarmUI/Output/local/Grids/grid-2025-01-04-15-41-26/jquery.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
| 2 |
-
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
|
|
|
|
|
|
|
|
|