diff --git a/dockerfile-kasm-trae-ai b/dockerfile-kasm-trae-ai new file mode 100644 index 00000000..07a5ffe1 --- /dev/null +++ b/dockerfile-kasm-trae-ai @@ -0,0 +1,49 @@ +ARG BASE_TAG="develop" +ARG BASE_IMAGE="core-ubuntu-jammy" +FROM kasmweb/$BASE_IMAGE:$BASE_TAG +USER root + +ENV HOME /home/kasm-default-profile +ENV STARTUPDIR /dockerstartup +ENV INST_SCRIPTS $STARTUPDIR/install +WORKDIR $HOME + +######### Customize Container Here ########### + +# Install Google Chrome +COPY ./src/ubuntu/install/chrome $INST_SCRIPTS/chrome/ +RUN bash $INST_SCRIPTS/chrome/install_chrome.sh && rm -rf $INST_SCRIPTS/chrome/ + +# Install Trae AI +COPY ./src/ubuntu/install/trae_ai $INST_SCRIPTS/trae_ai/ +RUN bash $INST_SCRIPTS/trae_ai/install_trae_ai.sh && rm -rf $INST_SCRIPTS/trae_ai/ + +COPY ./src/ubuntu/install/trae_ai/custom_startup.sh $STARTUPDIR/custom_startup.sh +RUN chmod 755 $STARTUPDIR/custom_startup.sh + +COPY ./src/ubuntu/install/trae_ai/vnc_startup.sh /dockerstartup/vnc_startup.sh +RUN chmod 755 /dockerstartup/vnc_startup.sh + +COPY ./src/ubuntu/install/trae_ai/ui-BKiQa3b8.js /usr/share/kasmvnc/www/assets/ui-BKiQa3b8.js + +RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/ +RUN cp /usr/share/backgrounds/bg_kasm.png /usr/share/backgrounds/bg_default.png +RUN apt-get remove -y xfce4-panel + +######### End Customizations ########### + +RUN chown 1000:0 $HOME + +ENV TRAE_WORKDIR "" +ENV KASM_USER kasm-user +ENV HOME /home/kasm-user + + +ENV LC_ALL=en_US.UTF-8 +ENV LANG=en_US.UTF-8 +ENV LANGUAGE=en_US.UTF-8 +ENV TZ=UTC +WORKDIR $HOME +RUN mkdir -p $HOME && chown -R 1000:0 $HOME + +USER 1000 diff --git a/dockerfile-kasm-trae-cn b/dockerfile-kasm-trae-cn new file mode 100644 index 00000000..f01dab4a --- /dev/null +++ b/dockerfile-kasm-trae-cn @@ -0,0 +1,50 @@ +ARG BASE_TAG="develop" +ARG BASE_IMAGE="core-ubuntu-jammy" +FROM kasmweb/$BASE_IMAGE:$BASE_TAG +USER root + +ENV HOME /home/kasm-default-profile +ENV STARTUPDIR /dockerstartup +ENV INST_SCRIPTS $STARTUPDIR/install +WORKDIR $HOME + +######### Customize Container Here ########### + +# Install Google Chrome +COPY ./src/ubuntu/install/chrome $INST_SCRIPTS/chrome/ +RUN bash $INST_SCRIPTS/chrome/install_chrome.sh && rm -rf $INST_SCRIPTS/chrome/ + +# Install Trae CN +COPY ./src/ubuntu/install/trae_cn $INST_SCRIPTS/trae_cn/ +RUN bash $INST_SCRIPTS/trae_cn/install_trae_cn.sh && rm -rf $INST_SCRIPTS/trae_cn/ + +COPY ./src/ubuntu/install/trae_cn/custom_startup.sh $STARTUPDIR/custom_startup.sh +RUN chmod 755 $STARTUPDIR/custom_startup.sh + +COPY ./src/ubuntu/install/trae_cn/vnc_startup.sh /dockerstartup/vnc_startup.sh +RUN chmod 755 /dockerstartup/vnc_startup.sh + +COPY ./src/ubuntu/install/trae_cn/ui-BKiQa3b8.js /usr/share/kasmvnc/www/assets/ui-BKiQa3b8.js + +# Update the desktop environment to be optimized for a single application +RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/ +RUN cp /usr/share/backgrounds/bg_kasm.png /usr/share/backgrounds/bg_default.png +RUN apt-get remove -y xfce4-panel + +######### End Customizations ########### + +RUN chown 1000:0 $HOME + +ENV TRAE_WORKDIR "" +ENV KASM_USER kasm-user +ENV HOME /home/kasm-user + +# Default language and timezone settings +ENV LC_ALL=zh_CN.UTF-8 +ENV LANG=zh_CN.UTF-8 +ENV LANGUAGE=zh_CN.UTF-8 +ENV TZ=Asia/Shanghai +WORKDIR $HOME +RUN mkdir -p $HOME && chown -R 1000:0 $HOME + +USER 1000 diff --git a/docs/trae-ai/README-ZH_CN.md b/docs/trae-ai/README-ZH_CN.md new file mode 100644 index 00000000..ae46f487 --- /dev/null +++ b/docs/trae-ai/README-ZH_CN.md @@ -0,0 +1,51 @@ +# About This Image + +This Image contains a browser-accessible version of [TRAE IDE AI](https://www.trae.ai). + +这个镜像在Kasm镜像基础上安装了 TRAE IDE AI 的 .deb(x64) 版本。 + +# 功能改进 + +- 默认设置 `enable_ime`,开启本地输入法 + +# How to Use + +- 启动容器 + + ```bash + docker run -dit --name trae \ + --user root \ + -e KASM_USER=admin \ + -e VNC_PW=Password123 \ + -e TRAE_WORKDIR=/trae \ + -v ./trae:/trae \ + --shm-size 1g \ + -p 36902:6901 \ + kasmweb/trae-ai:2.3.29372 + ``` + +- 使用compose + + ```yaml + version: '3.8' + services: + trae: + image: kasmweb/trae-ai:2.3.29372 + container_name: trae + user: root + environment: + - KASM_USER=admin + - VNC_PW=Password123 + - TRAE_WORKDIR=/trae + volumes: + - ./trae:/trae + shm_size: 1g + ports: + - "36902:6901" + restart: unless-stopped + ``` + +在配置中: + +1. `KASM_USER` 和 `VNC_PW` 是浏览器访问的用户名和密码 +2. `TRAE_WORKDIR` 是TRAE的工作目录,需要与挂载卷的路径一致,TRAE启动后会默认打开`$TRAE_WORKDIR/workspace`目录,同时保存配置和扩展到`$TRAE_WORKDIR`目录下 diff --git a/docs/trae-ai/README.md b/docs/trae-ai/README.md new file mode 100644 index 00000000..739de700 --- /dev/null +++ b/docs/trae-ai/README.md @@ -0,0 +1,49 @@ +# About This Image + +This Image contains a browser-accessible version of [TRAE IDE AI](https://www.trae.ai). + +# Feature Improvements + +- Default setting `enable_ime` to enable local input method + +# How to Use + +- Start Container + + ```bash + docker run -dit --name trae \ + --user root \ + -e KASM_USER=admin \ + -e VNC_PW=Password123 \ + -e TRAE_WORKDIR=/trae \ + -v ./trae:/trae \ + --shm-size 1g \ + -p 36902:6901 \ + kasmweb/trae-ai:2.3.29372 + ``` + +- Use Compose + + ```yaml + version: '3.8' + services: + trae: + image: kasmweb/trae-ai:2.3.29372 + container_name: trae + user: root + environment: + - KASM_USER=admin + - VNC_PW=Password123 + - TRAE_WORKDIR=/trae + volumes: + - ./trae:/trae + shm_size: 1g + ports: + - "36902:6901" + restart: unless-stopped + ``` + +In the configuration: + +1. `KASM_USER` and `VNC_PW` are the username and password for browser access +2. `TRAE_WORKDIR` is the working directory for TRAE, which needs to match the mounted volume path. After TRAE starts, it will automatically open the `$TRAE_WORKDIR/workspace` directory, and save configurations and extensions to the `$TRAE_WORKDIR` directory diff --git a/docs/trae-cn/README-ZH_CN.md b/docs/trae-cn/README-ZH_CN.md new file mode 100644 index 00000000..a86c8a0f --- /dev/null +++ b/docs/trae-cn/README-ZH_CN.md @@ -0,0 +1,51 @@ +# About This Image + +This Image contains a browser-accessible version of [TRAE IDE CN](https://www.trae.cn). + +这个镜像在Kasm镜像基础上安装了 TRAE IDE CN 的 .deb(x64) 版本。 + +# 功能改进 + +- 默认设置 `enable_ime`,开启本地输入法 + +# How to Use + +- 启动容器 + + ```bash + docker run -dit --name trae \ + --user root \ + -e KASM_USER=admin \ + -e VNC_PW=Password123 \ + -e TRAE_WORKDIR=/trae \ + -v ./trae:/trae \ + --shm-size 1g \ + -p 36901:6901 \ + kasmweb/trae-cn:2.3.27641 + ``` + +- 使用compose + + ```yaml + version: '3.8' + services: + trae: + image: kasmweb/trae-cn:2.3.27641 + container_name: trae + user: root + environment: + - KASM_USER=admin + - VNC_PW=Password123 + - TRAE_WORKDIR=/trae + volumes: + - ./trae:/trae + shm_size: 1g + ports: + - "36901:6901" + restart: unless-stopped + ``` + +在配置中: + +1. `KASM_USER` 和 `VNC_PW` 是浏览器访问的用户名和密码 +2. `TRAE_WORKDIR` 是TRAE的工作目录,需要与挂载卷的路径一致,TRAE启动后会默认打开`$TRAE_WORKDIR/workspace`目录,同时保存配置和扩展到`$TRAE_WORKDIR`目录下 diff --git a/docs/trae-cn/README.md b/docs/trae-cn/README.md new file mode 100644 index 00000000..2015040c --- /dev/null +++ b/docs/trae-cn/README.md @@ -0,0 +1,49 @@ +# About This Image + +This Image contains a browser-accessible version of [TRAE IDE CN](https://www.trae.cn). + +# Feature Improvements + +- Default setting `enable_ime` to enable local input method + +# How to Use + +- Start Container + + ```bash + docker run -dit --name trae \ + --user root \ + -e KASM_USER=admin \ + -e VNC_PW=Password123 \ + -e TRAE_WORKDIR=/trae \ + -v ./trae:/trae \ + --shm-size 1g \ + -p 36901:6901 \ + kasmweb/trae-cn:2.3.27641 + ``` + +- Use Compose + + ```yaml + version: '3.8' + services: + trae: + image: kasmweb/trae-cn:2.3.27641 + container_name: trae + user: root + environment: + - KASM_USER=admin + - VNC_PW=Password123 + - TRAE_WORKDIR=/trae + volumes: + - ./trae:/trae + shm_size: 1g + ports: + - "36901:6901" + restart: unless-stopped + ``` + +In the configuration: + +1. `KASM_USER` and `VNC_PW` are the username and password for browser access +2. `TRAE_WORKDIR` is the working directory for TRAE, which needs to match the mounted volume path. After TRAE starts, it will automatically open the `$TRAE_WORKDIR/workspace` directory, and save configurations and extensions to the `$TRAE_WORKDIR` directory diff --git a/src/ubuntu/install/trae_ai/custom_startup.sh b/src/ubuntu/install/trae_ai/custom_startup.sh new file mode 100644 index 00000000..1290d549 --- /dev/null +++ b/src/ubuntu/install/trae_ai/custom_startup.sh @@ -0,0 +1,108 @@ +#!/usr/bin/env bash +set -ex +START_COMMAND="trae-ai" + +TRAE_WORKDIR=${TRAE_WORKDIR:-"/trae-ai"} +mkdir -p ${TRAE_WORKDIR}/trae +[[ -e ~/.trae ]] || ln -s ${TRAE_WORKDIR}/trae ~/.trae +mkdir -p ${TRAE_WORKDIR}/trae-ai +[[ -e ~/.trae-ai ]] || ln -s ${TRAE_WORKDIR}/trae-ai ~/.trae-ai +mkdir -p ${TRAE_WORKDIR}/trae-ai-server +[[ -e ~/.trae-ai-server ]] || ln -s ${TRAE_WORKDIR}/trae-ai-server ~/.trae-ai-server +mkdir -p ${TRAE_WORKDIR}/trae-aicc +[[ -e ~/.trae-aicc ]] || ln -s ${TRAE_WORKDIR}/trae-aicc ~/.trae-aicc +mkdir -p ${TRAE_WORKDIR}/config +[[ -e ~/.config ]] || ln -s ${TRAE_WORKDIR}/config ~/.config +mkdir -p ${TRAE_WORKDIR}/trae +[[ -e ~/.trae ]] || ln -s ${TRAE_WORKDIR}/trae ~/.trae +mkdir -p ${TRAE_WORKDIR}/user-data +USER_DATA_DIR=${TRAE_WORKDIR}/user-data +mkdir -p ${TRAE_WORKDIR}/extensions +EXTENSIONS_DIR=${TRAE_WORKDIR}/extensions +mkdir -p ${TRAE_WORKDIR}/workspace +WORKSPACE_DIR=${TRAE_WORKDIR}/workspace + +if [[ $(id -u) == 0 ]]; then + START_COMMAND="$START_COMMAND --no-sandbox" +fi + +START_COMMAND="$START_COMMAND --user-data-dir=${USER_DATA_DIR} --extensions-dir=${EXTENSIONS_DIR} --add ${WORKSPACE_DIR}" + +PGREP_PATTERN="/usr/share/trae/trae" +export MAXIMIZE="true" +export MAXIMIZE_NAME="Trae" +MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh +DEFAULT_ARGS="" +ARGS=${APP_ARGS:-$DEFAULT_ARGS} + +options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit +eval set -- "$options" + +while [[ $1 != -- ]]; do + case $1 in + -g|--go) GO='true'; shift 1;; + -a|--assign) ASSIGN='true'; shift 1;; + -u|--url) OPT_URL=$2; shift 2;; + *) echo "bad option: $1" >&2; exit 1;; + esac +done +shift + +for arg; do + echo "arg! $arg" +done + +FORCE=$2 + +kasm_exec() { + if [ -n "$OPT_URL" ] ; then + URL=$OPT_URL + elif [ -n "$1" ] ; then + URL=$1 + fi + + if [ -n "$URL" ] ; then + /usr/bin/filter_ready + /usr/bin/desktop_ready + bash ${MAXIMIZE_SCRIPT} & + $START_COMMAND $ARGS "$URL" + else + echo "No URL specified for exec command. Doing nothing." + fi +} + +kasm_startup() { + if [ -n "$KASM_URL" ] ; then + URL=$KASM_URL + elif [ -z "$URL" ] ; then + URL=$LAUNCH_URL + fi + + if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then + + echo "Entering process startup loop" + set +x + while true + do + if ! pgrep -f "$PGREP_PATTERN" > /dev/null + then + /usr/bin/filter_ready + /usr/bin/desktop_ready + set +e + bash ${MAXIMIZE_SCRIPT} & + $START_COMMAND $ARGS $URL + set -e + fi + sleep 1 + done + set -x + + fi + +} + +if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then + kasm_exec +else + kasm_startup +fi diff --git a/src/ubuntu/install/trae_ai/install_trae_ai.sh b/src/ubuntu/install/trae_ai/install_trae_ai.sh new file mode 100644 index 00000000..4292acf0 --- /dev/null +++ b/src/ubuntu/install/trae_ai/install_trae_ai.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +set -ex + +TRAE_DEB_URL="https://lf-cdn.trae.ai/obj/trae-ai-sg/pkg/app/releases/stable/2.3.29372/linux/Trae-linux-x64.deb" + +apt-get update +# apt-get install -y ca-certificates wget +wget -q "${TRAE_DEB_URL}" -O trae_ai.deb +apt-get install -y python3-setuptools python3-venv python3-virtualenv \ + ca-certificates wget \ + ./trae_ai.deb + +cat >/usr/local/bin/trae-ai <<'EOF' +#!/usr/bin/env bash +set -e + +for candidate in \ + "/usr/bin/trae-ai" \ + "/usr/bin/trae" \ + "/usr/share/trae-ai/trae-ai" \ + "/usr/share/trae-ai/trae" \ + "/usr/share/trae/trae" \ + "/opt/Trae AI/trae-ai" \ + "/opt/Trae AI/trae" \ + "/opt/Trae/trae" +do + if [ -x "$candidate" ]; then + exec "$candidate" --no-sandbox "$@" + fi +done + +FOUND=$(find /usr/bin /usr/share /opt -maxdepth 4 -type f -perm -111 \( -iname 'trae' -o -iname 'trae-ai' \) 2>/dev/null | head -n 1) +if [ -n "$FOUND" ]; then + exec "$FOUND" --no-sandbox "$@" +fi + +echo "Unable to find the Trae AI executable." >&2 +exit 1 +EOF +chmod +x /usr/local/bin/trae-ai + +mkdir -p "$HOME/Desktop" +DESKTOP_FILE=$(find /usr/share/applications -maxdepth 1 -type f -iname '*trae*.desktop' | head -n 1) +if [ -n "$DESKTOP_FILE" ]; then + sed -i 's#^Exec=.*#Exec=/usr/local/bin/trae-ai %U#' "$DESKTOP_FILE" + cp "$DESKTOP_FILE" "$HOME/Desktop/trae-ai.desktop" +else + cat >"$HOME/Desktop/trae-ai.desktop" <<'EOF' +[Desktop Entry] +Name=Trae AI +Comment=AI coding agent +Exec=/usr/local/bin/trae-ai %U +Terminal=false +Type=Application +Icon=trae-ai +StartupNotify=true +Categories=Development;IDE; +EOF +fi +chmod +x "$HOME/Desktop/trae-ai.desktop" +chown 1000:1000 "$HOME/Desktop/trae-ai.desktop" +rm trae_ai.deb + +# apt-get update +# apt-get install -y python3-setuptools \ +# python3-venv \ +# python3-virtualenv + +chown -R 1000:0 $HOME +find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \; +if [ -z ${SKIP_CLEAN+x} ]; then + apt-get autoclean + rm -rf \ + /var/lib/apt/lists/* \ + /var/tmp/* \ + /tmp/* +fi \ No newline at end of file diff --git a/src/ubuntu/install/trae_ai/kasmvnc_defaults.yaml b/src/ubuntu/install/trae_ai/kasmvnc_defaults.yaml new file mode 100644 index 00000000..5e170821 --- /dev/null +++ b/src/ubuntu/install/trae_ai/kasmvnc_defaults.yaml @@ -0,0 +1,162 @@ +--- +desktop: + resolution: + width: 1920 + height: 1080 + allow_resize: true + pixel_depth: 24 + gpu: + hw3d: false + drinode: /dev/dri/renderD128 + +network: + protocol: http + interface: 0.0.0.0 + websocket_port: auto + use_ipv4: true + use_ipv6: true + udp: + public_ip: auto + port: auto + payload_size: auto + stun_server: auto + ssl: + pem_certificate: /etc/ssl/certs/ssl-cert-snakeoil.pem + pem_key: /etc/ssl/private/ssl-cert-snakeoil.key + require_ssl: true + # unix_relay: + # name: + # path: + +user_session: + # session_type: shared + new_session_disconnects_existing_exclusive_session: false + concurrent_connections_prompt: false + concurrent_connections_prompt_timeout: 10 + idle_timeout: never + +keyboard: + remap_keys: + # - 0x22->0x40 + ignore_numlock: false + raw_keyboard: false + +# Mouse, trackpad, etc. +pointer: + enabled: true + +runtime_configuration: + allow_client_to_override_kasm_server_settings: true + allow_override_standard_vnc_server_settings: true + allow_override_list: + - pointer.enabled + - data_loss_prevention.clipboard.server_to_client.enabled + - data_loss_prevention.clipboard.client_to_server.enabled + - data_loss_prevention.clipboard.server_to_client.primary_clipboard_enabled + +logging: + log_writer_name: all + log_dest: logfile + # 0 - minimal verbosity, 100 - most verbose + level: 30 + +security: + brute_force_protection: + blacklist_threshold: 5 + blacklist_timeout: 10 + +data_loss_prevention: + visible_region: + # top: 10 + # left: 10 + # right: 40 + # bottom: 40 + concealed_region: + allow_click_down: false + allow_click_release: false + clipboard: + delay_between_operations: none + allow_mimetypes: + - chromium/x-web-custom-data + - text/html + - image/png + # Add to docs: Cut buffers and CLIPBOARD selection. + server_to_client: + enabled: true + size: unlimited + primary_clipboard_enabled: false + client_to_server: + enabled: true + size: unlimited + keyboard: + enabled: true + rate_limit: unlimited + watermark: + # image: /etc/kasmvnc/picture.png + # location: 10,10 + # tint: 255,20,20,128 + # repeat_spacing: 10 + #text: + # template: "${USER} %H:%M" + # font: auto + # font_size: 48 + # timezone_name: Australia/Adelaide + # angle: 0 + logging: + # "verbose" SETTING LOGS YOUR PRIVATE INFORMATION. Keypresses and clipboard content + level: off + +encoding: + max_frame_rate: 60 + full_frame_updates: none + rect_encoding_mode: + min_quality: 7 + max_quality: 8 + consider_lossless_quality: 10 + rectangle_compress_threads: auto + + video_encoding_mode: + jpeg_quality: -1 + webp_quality: -1 + max_resolution: + width: 1920 + height: 1080 + enter_video_encoding_mode: + time_threshold: 5 + area_threshold: 45% + exit_video_encoding_mode: + time_threshold: 3 + logging: + level: off + scaling_algorithm: progressive_bilinear + webp_encoding_time: 30 + + video_streaming_mode: + codec: auto + + compare_framebuffer: auto + zrle_zlib_level: auto + hextile_improved_compression: true + scrolling: + detect_vertical_scrolling: false + detect_horizontal_scrolling: false + scroll_detect_threshold: 25% + +server: + http: + headers: + - Cross-Origin-Embedder-Policy=require-corp + - Cross-Origin-Opener-Policy=same-origin + httpd_directory: /usr/share/kasmvnc/www + advanced: + x_font_path: auto + kasm_password_file: ${HOME}/.kasmpasswd + x_authority_file: auto + auto_shutdown: + no_user_session_timeout: never + active_user_session_timeout: never + inactive_user_session_timeout: never + allow_environment_variables_to_override_config_settings: false + +command_line: + prompt: true diff --git a/src/ubuntu/install/trae_ai/ui-BKiQa3b8.js b/src/ubuntu/install/trae_ai/ui-BKiQa3b8.js new file mode 100644 index 00000000..811b18b1 --- /dev/null +++ b/src/ubuntu/install/trae_ai/ui-BKiQa3b8.js @@ -0,0 +1,23 @@ +var rE=Object.defineProperty;var nE=(n,e,t)=>e in n?rE(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ni=(n,e,t)=>nE(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function t(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=t(i);fetch(i.href,a)}})();function wx(n,e){try{const t=document.getElementById("noVNC_fallback_errormsg");if(n.message==="ResizeObserver loop completed with undelivered notifications."||t.hasChildNodes())return!1;let r=document.createElement("div");if(r.classList.add("noVNC_message"),r.appendChild(document.createTextNode(n.message)),t.appendChild(r),n.filename){r=document.createElement("div"),r.className="noVNC_location";let i=n.filename;n.lineno!==void 0&&(i+=":"+n.lineno,n.colno!==void 0&&(i+=":"+n.colno)),r.appendChild(document.createTextNode(i)),t.appendChild(r)}e&&e.stack&&(r=document.createElement("div"),r.className="noVNC_stack",r.appendChild(document.createTextNode(e.stack)),t.appendChild(r)),document.getElementById("noVNC_fallback_error").classList.add("noVNC_open")}catch{document.write("noVNC encountered an error.")}try{document.activeElement&&document.activeElement.blur(),document.querySelectorAll("a[href], button, input, textarea, select, details, [tabindex]").forEach(r=>{r.setAttribute("tabindex","-1")})}catch{}return!1}window.addEventListener("error",n=>wx(n,n.error));window.addEventListener("unhandledrejection",n=>wx(n.reason,n.reason));function Rc(n){const e=document.getElementById("noVNC_notification_overlay");let t=["show"];n.length>1&&t.push("wide"),e.classList.add(...t),e.innerHTML=n,setTimeout(()=>{e.classList.remove(...t)},3500)}const wt={init:iE,document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function Zr(){}function iE(n){const e=n;wt.document=e.document,wt.DocumentFragment=e.DocumentFragment||Zr,wt.SVGElement=e.SVGElement||Zr,wt.SVGSVGElement=e.SVGSVGElement||Zr,wt.SVGElementInstance=e.SVGElementInstance||Zr,wt.Element=e.Element||Zr,wt.HTMLElement=e.HTMLElement||wt.Element,wt.Event=e.Event,wt.Touch=e.Touch||Zr,wt.PointerEvent=e.PointerEvent||e.MSPointerEvent}var Cx=n=>!!(n&&n.Window)&&n instanceof n.Window;let Rx,Qr;function Ix(n){Rx=n;const e=n.document.createTextNode("");e.ownerDocument!==n.document&&typeof n.wrap=="function"&&n.wrap(e)===e&&(n=n.wrap(n)),Qr=n}typeof window<"u"&&window&&Ix(window);function sn(n){return Cx(n)?n:(n.ownerDocument||n).defaultView||Qr.window}const aE=n=>n===Qr||Cx(n),sE=n=>ui(n)&&n.nodeType===11,ui=n=>!!n&&typeof n=="object",Ax=n=>typeof n=="function",oE=n=>typeof n=="number",lE=n=>typeof n=="boolean",cE=n=>typeof n=="string",uE=n=>{if(!n||typeof n!="object")return!1;const e=sn(n)||Qr;return/object|function/.test(typeof Element)?n instanceof Element||n instanceof e.Element:n.nodeType===1&&typeof n.nodeName=="string"},dE=n=>ui(n)&&!!n.constructor&&/function Object\b/.test(n.constructor.toString()),fE=n=>ui(n)&&typeof n.length<"u"&&Ax(n.splice);var qe={window:aE,docFrag:sE,object:ui,func:Ax,number:oE,bool:lE,string:cE,element:uE,plainObject:dE,array:fE};const At={init:hE,supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null};function hE(n){const e=wt.Element,t=n.navigator||{};At.supportsTouch="ontouchstart"in n||qe.func(n.DocumentTouch)&&wt.document instanceof n.DocumentTouch,At.supportsPointerEvent=t.pointerEnabled!==!1&&!!wt.PointerEvent,At.isIOS=/iP(hone|od|ad)/.test(t.platform),At.isIOS7=/iP(hone|od|ad)/.test(t.platform)&&/OS 7[^\d]/.test(t.appVersion),At.isIe9=/MSIE 9/.test(t.userAgent),At.isOperaMobile=t.appName==="Opera"&&At.supportsTouch&&/Presto/.test(t.userAgent),At.prefixedMatchesSelector="matches"in e.prototype?"matches":"webkitMatchesSelector"in e.prototype?"webkitMatchesSelector":"mozMatchesSelector"in e.prototype?"mozMatchesSelector":"oMatchesSelector"in e.prototype?"oMatchesSelector":"msMatchesSelector",At.pEventTypes=At.supportsPointerEvent?wt.PointerEvent===n.MSPointerEvent?{up:"MSPointerUp",down:"MSPointerDown",over:"mouseover",out:"mouseout",move:"MSPointerMove",cancel:"MSPointerCancel"}:{up:"pointerup",down:"pointerdown",over:"pointerover",out:"pointerout",move:"pointermove",cancel:"pointercancel"}:null,At.wheelEvent=wt.document&&"onmousewheel"in wt.document?"mousewheel":"wheel"}function Xr(n,e){if(n.contains)return n.contains(e);for(;e;){if(e===n)return!0;e=e.parentNode}return!1}function Tx(n,e){for(;qe.element(n);){if(Hr(n,e))return n;n=on(n)}return null}function on(n){let e=n.parentNode;if(qe.docFrag(e)){for(;(e=e.host)&&qe.docFrag(e););return e}return e}function Hr(n,e){return Qr!==Rx&&(e=e.replace(/\/deep\//g," ")),n[At.prefixedMatchesSelector](e)}function Ic(n,e,t){for(;qe.element(n);){if(Hr(n,e))return!0;if(n=on(n),n===t)return Hr(n,e)}return!1}function Ac(n){return n.correspondingUseElement||n}function _E(n){return n=n||Qr,{x:n.scrollX||n.document.documentElement.scrollLeft,y:n.scrollY||n.document.documentElement.scrollTop}}function kx(n){const e=n instanceof wt.SVGElement?n.getBoundingClientRect():n.getClientRects()[0];return e&&{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}}function ql(n){const e=kx(n);if(!At.isIOS7&&e){const t=_E(sn(n));e.left+=t.x,e.right+=t.x,e.top+=t.y,e.bottom+=t.y}return e}function Px(n){const e=[];for(;n;)e.push(n),n=on(n);return e}function Tc(n){return qe.string(n)?(wt.document.querySelector(n),!0):!1}function qt(n,e){for(const r in e)n[r]=e[r];return n}function pE(n,e,t){return n==="parent"?on(t):n==="self"?e.getRect(t):Tx(t,n)}function vE(n,e,t,r){let i=n;return qe.string(i)?i=pE(i,e,t):qe.func(i)&&(i=i(...r)),qe.element(i)&&(i=ql(i)),i}function gE(n){return n&&{x:"x"in n?n.x:n.left,y:"y"in n?n.y:n.top}}function mE(n,e,t){n.left&&(e.left+=t.x),n.right&&(e.right+=t.x),n.top&&(e.top+=t.y),n.bottom&&(e.bottom+=t.y),e.width=e.right-e.left,e.height=e.bottom-e.top}function Fx(n,e,t){const r=t&&n.options[t],a=r&&r.origin||n.options.origin,s=vE(a,n,e,[n&&e]);return gE(s)||{x:0,y:0}}class Vl{constructor(e){this.immediatePropagationStopped=!1,this.propagationStopped=!1,this._interaction=e}preventDefault(){}stopPropagation(){this.propagationStopped=!0}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}}Object.defineProperty(Vl.prototype,"interaction",{get(){return this._interaction._proxy},set(){}});var Kl=(n,e)=>Math.sqrt(n*n+e*e);const yE=["webkit","moz"];function ai(n,e){n.__set||(n.__set={});for(const t in e)yE.some(r=>t.indexOf(r)===0)||typeof n[t]!="function"&&t!=="__set"&&Object.defineProperty(n,t,{get(){return t in n.__set?n.__set[t]:n.__set[t]=e[t]},set(r){n.__set[t]=r},configurable:!0});return n}function qi(n,e){n.page=n.page||{},n.page.x=e.page.x,n.page.y=e.page.y,n.client=n.client||{},n.client.x=e.client.x,n.client.y=e.client.y,n.timeStamp=e.timeStamp}function bE(n,e,t){n.page.x=t.page.x-e.page.x,n.page.y=t.page.y-e.page.y,n.client.x=t.client.x-e.client.x,n.client.y=t.client.y-e.client.y,n.timeStamp=t.timeStamp-e.timeStamp}function xE(n,e){const t=Math.max(e.timeStamp/1e3,.001);n.page.x=e.page.x/t,n.page.y=e.page.y/t,n.client.x=e.client.x/t,n.client.y=e.client.y/t,n.timeStamp=t}function EE(n){n.page.x=0,n.page.y=0,n.client.x=0,n.client.y=0}function Mx(n){return n instanceof wt.Event||n instanceof wt.Touch}function si(n,e,t){return t=t||{},n=n||"page",t.x=e[n+"X"],t.y=e[n+"Y"],t}function SE(n,e){return e=e||{x:0,y:0},At.isOperaMobile&&Mx(n)?(si("screen",n,e),e.x+=window.scrollX,e.y+=window.scrollY):si("page",n,e),e}function wE(n,e){return e=e||{},At.isOperaMobile&&Mx(n)?si("screen",n,e):si("client",n,e),e}function An(n){return qe.number(n.pointerId)?n.pointerId:n.identifier}function CE(n,e,t){const r=e.length>1?Ox(e):e[0];SE(r,n.page),wE(r,n.client),n.timeStamp=t}function Ul(n){const e=[];return qe.array(n)?(e[0]=n[0],e[1]=n[1]):n.type==="touchend"?n.touches.length===1?(e[0]=n.touches[0],e[1]=n.changedTouches[0]):n.touches.length===0&&(e[0]=n.changedTouches[0],e[1]=n.changedTouches[1]):(e[0]=n.touches[0],e[1]=n.touches[1]),e}function Ox(n){const e={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0};for(const t of n)for(const r in e)e[r]+=t[r];for(const t in e)e[t]/=n.length;return e}function RE(n){if(!n.length)return null;const e=Ul(n),t=Math.min(e[0].pageX,e[1].pageX),r=Math.min(e[0].pageY,e[1].pageY),i=Math.max(e[0].pageX,e[1].pageX),a=Math.max(e[0].pageY,e[1].pageY);return{x:t,y:r,left:t,top:r,right:i,bottom:a,width:i-t,height:a-r}}function IE(n,e){const t=e+"X",r=e+"Y",i=Ul(n),a=i[0][t]-i[1][t],s=i[0][r]-i[1][r];return Kl(a,s)}function AE(n,e){const t=e+"X",r=e+"Y",i=Ul(n),a=i[1][t]-i[0][t],s=i[1][r]-i[0][r];return 180*Math.atan2(s,a)/Math.PI}function Lx(n){return qe.string(n.pointerType)?n.pointerType:qe.number(n.pointerType)?[void 0,void 0,"touch","pen","mouse"][n.pointerType]:/touch/.test(n.type||"")||n instanceof wt.Touch?"touch":"mouse"}function Dx(n){const e=qe.func(n.composedPath)?n.composedPath():n.path;return[Ac(e?e[0]:n.target),Ac(n.currentTarget)]}function _n(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}}class Nx extends Vl{constructor(e,t,r,i,a,s){if(super(a),ai(this,r),r!==t&&ai(this,t),this.timeStamp=s,this.originalEvent=r,this.type=e,this.pointerId=An(t),this.pointerType=Lx(t),this.target=i,this.currentTarget=null,e==="tap"){const l=a.getPointerIndex(t);this.dt=this.timeStamp-a.pointers[l].downTime;const c=this.timeStamp-a.tapTime;this.double=!!a.prevTap&&a.prevTap.type!=="doubletap"&&a.prevTap.target===this.target&&c<500}else e==="doubletap"&&(this.dt=t.timeStamp-a.tapTime,this.double=!0)}_subtractOrigin(e){let{x:t,y:r}=e;return this.pageX-=t,this.pageY-=r,this.clientX-=t,this.clientY-=r,this}_addOrigin(e){let{x:t,y:r}=e;return this.pageX+=t,this.pageY+=r,this.clientX+=t,this.clientY+=r,this}preventDefault(){this.originalEvent.preventDefault()}}const TE={holdDuration:600,ignoreFrom:null,allowFrom:null,origin:{x:0,y:0}},Rn={id:"pointer-events/base",before:["inertia","modifiers","auto-start","actions"],install:LE,listeners:{"interactions:new":kE,"interactions:update-pointer":PE,"interactions:move":FE,"interactions:down":(n,e)=>{ME(n,e),Ar(n,e)},"interactions:up":(n,e)=>{kl(n),Ar(n,e),OE(n,e)},"interactions:cancel":(n,e)=>{kl(n),Ar(n,e)}},PointerEvent:Nx,fire:Ar,collectEventTargets:qx,defaults:TE,types:{down:!0,move:!0,up:!0,cancel:!0,tap:!0,doubletap:!0,hold:!0}};function Ar(n,e){const{interaction:t,pointer:r,event:i,eventTarget:a,type:s,targets:l=qx(n,e)}=n,c=new Nx(s,r,i,a,t,e.now());e.fire("pointerEvents:new",{pointerEvent:c});const u={interaction:t,pointer:r,event:i,eventTarget:a,targets:l,type:s,pointerEvent:c};for(let f=0;f{var p,_;return h.eventable.options.holdDuration===((p=t.pointers[l])==null||(_=p.hold)==null?void 0:_.duration)})),f.targets}function kE(n){let{interaction:e}=n;e.prevTap=null,e.tapTime=0}function PE(n){let{down:e,pointerInfo:t}=n;!e&&t.hold||(t.hold={duration:1/0,timeout:null})}function kl(n){let{interaction:e,pointerIndex:t}=n;const r=e.pointers[t].hold;r&&r.timeout&&(clearTimeout(r.timeout),r.timeout=null)}function FE(n,e){const{interaction:t,pointer:r,event:i,eventTarget:a,duplicate:s}=n;!s&&(!t.pointerIsDown||t.pointerWasMoved)&&(t.pointerIsDown&&kl(n),Ar({interaction:t,pointer:r,event:i,eventTarget:a,type:"move"},e))}function ME(n,e){let{interaction:t,pointer:r,event:i,eventTarget:a,pointerIndex:s}=n;const l=t.pointers[s].hold,c=Px(a),u={interaction:t,pointer:r,event:i,eventTarget:a,type:"hold",targets:[],path:c,node:null};for(const h of c)u.node=h,e.fire("pointerEvents:collect-targets",u);if(!u.targets.length)return;let f=1/0;for(const h of u.targets){const p=h.eventable.options.holdDuration;p{Ar({interaction:t,eventTarget:a,pointer:r,event:i,type:"hold"},e)},f)}function OE(n,e){let{interaction:t,pointer:r,event:i,eventTarget:a}=n;t.pointerWasMoved||Ar({interaction:t,eventTarget:a,pointer:r,event:i,type:"tap"},e)}function LE(n){n.pointerEvents=Rn,n.defaults.actions.pointerEvents=Rn.defaults,qt(n.actions.phaselessTypes,Rn.types)}var DE=Object.freeze({__proto__:null,default:Rn});function NE(n){n.usePlugin(Rn);const{pointerEvents:e}=n;e.defaults.holdRepeatInterval=0,e.types.holdrepeat=n.actions.phaselessTypes.holdrepeat=!0}function qE(n){let{pointerEvent:e}=n;e.type==="hold"&&(e.count=(e.count||0)+1)}function VE(n,e){let{interaction:t,pointerEvent:r,eventTarget:i,targets:a}=n;if(r.type!=="hold"||!a.length)return;const s=a[0].eventable.options.holdRepeatInterval;s<=0||(t.holdIntervalHandle=setTimeout(()=>{e.pointerEvents.fire({interaction:t,eventTarget:i,type:"hold",pointer:r,event:r},e)},s))}function KE(n){let{interaction:e}=n;e.holdIntervalHandle&&(clearInterval(e.holdIntervalHandle),e.holdIntervalHandle=null)}const UE={id:"pointer-events/holdRepeat",install:NE,listeners:["move","up","cancel","endall"].reduce((n,e)=>(n[`pointerEvents:${e}`]=KE,n),{"pointerEvents:new":qE,"pointerEvents:fired":VE})};function BE(n){const{Interactable:e}=n;e.prototype.pointerEvents=function(r){return qt(this.events.options,r),this};const t=e.prototype._backCompatOption;e.prototype._backCompatOption=function(r,i){const a=t.call(this,r,i);return a===this&&(this.events.options[r]=i),a}}const XE={id:"pointer-events/interactableTargets",install:BE,listeners:{"pointerEvents:collect-targets":(n,e)=>{let{targets:t,node:r,type:i,eventTarget:a}=n;e.interactables.forEachMatch(r,s=>{const l=s.events,c=l.options;l.types[i]&&l.types[i].length&&s.testIgnoreAllow(c,r,a)&&t.push({node:r,eventable:l,props:{interactable:s}})})},"interactable:new":n=>{let{interactable:e}=n;e.events.getRect=function(t){return e.getRect(t)}},"interactable:set":(n,e)=>{let{interactable:t,options:r}=n;qt(t.events.options,e.pointerEvents.defaults),qt(t.events.options,r.pointerEvents||{})}}},HE={id:"pointer-events",install(n){n.usePlugin(DE),n.usePlugin(UE),n.usePlugin(XE)}},Vx=(n,e)=>{for(const t of e)n.push(t);return n},Kx=n=>Vx([],n),di=(n,e)=>{for(let t=0;tn[di(n,e)];function oi(n){const e={};for(const t in n){const r=n[t];qe.plainObject(r)?e[t]=oi(r):qe.array(r)?e[t]=Kx(r):e[t]=r}return e}let kc=0,pr,Kr;function QE(n){if(pr=n.requestAnimationFrame,Kr=n.cancelAnimationFrame,!pr){const e=["ms","moz","webkit","o"];for(const t of e)pr=n[`${t}RequestAnimationFrame`],Kr=n[`${t}CancelAnimationFrame`]||n[`${t}CancelRequestAnimationFrame`]}pr=pr&&pr.bind(n),Kr=Kr&&Kr.bind(n),pr||(pr=e=>{const t=Date.now(),r=Math.max(0,16-(t-kc)),i=n.setTimeout(()=>{e(t+r)},r);return kc=t+r,i},Kr=e=>clearTimeout(e))}var jE={request:n=>pr(n),cancel:n=>Kr(n),init:QE};function nn(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:i=>!0,r=arguments.length>3?arguments[3]:void 0;if(r=r||{},qe.string(n)&&n.search(" ")!==-1&&(n=Pc(n)),qe.array(n))return n.forEach(i=>nn(i,e,t,r)),r;if(qe.object(n)&&(e=n,n=""),qe.func(e)&&t(n))r[n]=r[n]||[],r[n].push(e);else if(qe.array(e))for(const i of e)nn(n,i,t,r);else if(qe.object(e))for(const i in e){const a=Pc(i).map(s=>`${n}${s}`);nn(a,e[i],t,r)}return r}function Pc(n){return n.trim().split(/ +/)}function Fc(n,e){for(const t of e){if(n.immediatePropagationStopped)break;t(n)}}class Ux{constructor(e){this.options=void 0,this.types={},this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.global=void 0,this.options=qt({},e||{})}fire(e){let t;const r=this.global;(t=this.types[e.type])&&Fc(e,t),!e.propagationStopped&&r&&(t=r[e.type])&&Fc(e,t)}on(e,t){const r=nn(e,t);for(e in r)this.types[e]=Vx(this.types[e]||[],r[e])}off(e,t){const r=nn(e,t);for(e in r){const i=this.types[e];if(!(!i||!i.length))for(const a of r[e]){const s=i.indexOf(a);s!==-1&&i.splice(s,1)}}}getRect(e){return null}}function WE(n){var e;const t=[],r={},i=[],a={add:s,remove:l,addDelegate:c,removeDelegate:u,delegateListener:f,delegateUseCapture:h,delegatedEvents:r,documents:i,targets:t,supportsOptions:!1,supportsPassive:!1};(e=n.document)==null||e.createElement("div").addEventListener("test",null,{get capture(){return a.supportsOptions=!0},get passive(){return a.supportsPassive=!0}}),n.events=a;function s(p,_,g,m){if(!p.addEventListener)return;const v=pn(m);let b=Yn(t,S=>S.eventTarget===p);b||(b={eventTarget:p,events:{}},t.push(b)),b.events[_]||(b.events[_]=[]),Yn(b.events[_],S=>S.func===g&&Hn(S.options,v))||(p.addEventListener(_,g,a.supportsOptions?v:v.capture),b.events[_].push({func:g,options:v}))}function l(p,_,g,m){if(!p.addEventListener||!p.removeEventListener)return;const v=di(t,E=>E.eventTarget===p),b=t[v];if(!b||!b.events)return;if(_==="all"){for(_ in b.events)b.events.hasOwnProperty(_)&&l(p,_,"all");return}let S=!1;const x=b.events[_];if(x)if(g==="all"){for(let E=x.length-1;E>=0;E--){const C=x[E];l(p,_,C.func,C.options)}return}else{const E=pn(m);for(let C=0;CE.selector===p&&E.context===_);x||(x={selector:p,context:_,listeners:[]},S.push(x)),x.listeners.push({func:m,options:b})}function u(p,_,g,m,v){const b=pn(v),S=r[g];let x=!1,E;if(S)for(E=S.length-1;E>=0;E--){const C=S[E];if(C.selector===p&&C.context===_){const{listeners:R}=C;for(let P=R.length-1;P>=0;P--){const F=R[P];if(F.func===m&&Hn(F.options,b)){R.splice(P,1),R.length||(S.splice(E,1),l(_,g,f),l(_,g,h,!0)),x=!0;break}}if(x)break}}}function f(p,_){const g=pn(_),m=new zE(p),v=r[p.type],[b]=Dx(p);let S=b;for(;qe.element(S);){for(let x=0;x(n[`interactions:${e}`]=ZE,n),{})};function Pl(n,e){let t=!1;return function(){return t||(Qr.console.warn(e),t=!0),n.apply(this,arguments)}}function tS(n,e){return n.name=e.name,n.axis=e.axis,n.edges=e.edges,n}const Bx={base:{preventDefault:"auto",deltaSource:"page"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};class Bl extends Vl{constructor(e,t,r,i,a,s,l){super(e),this.relatedTarget=null,this.screenX=void 0,this.screenY=void 0,this.button=void 0,this.buttons=void 0,this.ctrlKey=void 0,this.shiftKey=void 0,this.altKey=void 0,this.metaKey=void 0,this.page=void 0,this.client=void 0,this.delta=void 0,this.rect=void 0,this.x0=void 0,this.y0=void 0,this.t0=void 0,this.dt=void 0,this.duration=void 0,this.clientX0=void 0,this.clientY0=void 0,this.velocity=void 0,this.speed=void 0,this.swipe=void 0,this.axes=void 0,this.preEnd=void 0,a=a||e.element;const c=e.interactable,u=(c&&c.options||Bx).deltaSource,f=Fx(c,a,r),h=i==="start",p=i==="end",_=h?this:e.prevEvent,g=h?e.coords.start:p?{page:_.page,client:_.client,timeStamp:e.coords.cur.timeStamp}:e.coords.cur;this.page=qt({},g.page),this.client=qt({},g.client),this.rect=qt({},e.rect),this.timeStamp=g.timeStamp,p||(this.page.x-=f.x,this.page.y-=f.y,this.client.x-=f.x,this.client.y-=f.y),this.ctrlKey=t.ctrlKey,this.altKey=t.altKey,this.shiftKey=t.shiftKey,this.metaKey=t.metaKey,this.button=t.button,this.buttons=t.buttons,this.target=a,this.currentTarget=a,this.preEnd=s,this.type=l||r+(i||""),this.interactable=c,this.t0=h?e.pointers[e.pointers.length-1].downTime:_.t0,this.x0=e.coords.start.page.x-f.x,this.y0=e.coords.start.page.y-f.y,this.clientX0=e.coords.start.client.x-f.x,this.clientY0=e.coords.start.client.y-f.y,h||p?this.delta={x:0,y:0}:this.delta={x:this[u].x-_[u].x,y:this[u].y-_[u].y},this.dt=e.coords.delta.timeStamp,this.duration=this.timeStamp-this.t0,this.velocity=qt({},e.coords.velocity[u]),this.speed=Kl(this.velocity.x,this.velocity.y),this.swipe=p||i==="inertiastart"?this.getSwipe():null}getSwipe(){const e=this._interaction;if(e.prevEvent.speed<600||this.timeStamp-e.prevEvent.timeStamp>150)return null;let t=180*Math.atan2(e.prevEvent.velocityY,e.prevEvent.velocityX)/Math.PI;const r=22.5;t<0&&(t+=360);const i=135-r<=t&&t<225+r,a=225-r<=t&&t<315+r,s=!i&&(315-r<=t||t<45+r),l=!a&&45-r<=t&&t<135+r;return{up:a,down:l,left:i,right:s,angle:t,speed:e.prevEvent.speed,velocity:{x:e.prevEvent.velocityX,y:e.prevEvent.velocityY}}}preventDefault(){}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}stopPropagation(){this.propagationStopped=!0}}Object.defineProperties(Bl.prototype,{pageX:{get(){return this.page.x},set(n){this.page.x=n}},pageY:{get(){return this.page.y},set(n){this.page.y=n}},clientX:{get(){return this.client.x},set(n){this.client.x=n}},clientY:{get(){return this.client.y},set(n){this.client.y=n}},dx:{get(){return this.delta.x},set(n){this.delta.x=n}},dy:{get(){return this.delta.y},set(n){this.delta.y=n}},velocityX:{get(){return this.velocity.x},set(n){this.velocity.x=n}},velocityY:{get(){return this.velocity.y},set(n){this.velocity.y=n}}});class rS{constructor(e,t,r,i,a){this.id=void 0,this.pointer=void 0,this.event=void 0,this.downTime=void 0,this.downTarget=void 0,this.id=e,this.pointer=t,this.event=r,this.downTime=i,this.downTarget=a}}let nS=(function(n){return n.interactable="",n.element="",n.prepared="",n.pointerIsDown="",n.pointerWasMoved="",n._proxy="",n})({}),iS=(function(n){return n.start="",n.move="",n.end="",n.stop="",n.interacting="",n})({}),aS=0;class sS{get pointerMoveTolerance(){return 1}constructor(e){this.interactable=null,this.element=null,this.rect=null,this._rects=void 0,this.edges=null,this._scopeFire=void 0,this.prepared={name:null,axis:null,edges:null},this.pointerType=void 0,this.pointers=[],this.downEvent=null,this.downPointer={},this._latestPointer={pointer:null,event:null,eventTarget:null},this.prevEvent=null,this.pointerIsDown=!1,this.pointerWasMoved=!1,this._interacting=!1,this._ending=!1,this._stopped=!0,this._proxy=void 0,this.simulation=null,this.doMove=Pl(function(a){this.move(a)},"The interaction.doMove() method has been renamed to interaction.move()"),this.coords={start:_n(),prev:_n(),cur:_n(),delta:_n(),velocity:_n()},this._id=aS++;let{pointerType:t,scopeFire:r}=e;this._scopeFire=r,this.pointerType=t;const i=this;this._proxy={};for(const a in nS)Object.defineProperty(this._proxy,a,{get(){return i[a]}});for(const a in iS)Object.defineProperty(this._proxy,a,{value:function(){return i[a](...arguments)}});this._scopeFire("interactions:new",{interaction:this})}pointerDown(e,t,r){const i=this.updatePointer(e,t,r,!0),a=this.pointers[i];this._scopeFire("interactions:down",{pointer:e,event:t,eventTarget:r,pointerIndex:i,pointerInfo:a,type:"down",interaction:this})}start(e,t,r){return this.interacting()||!this.pointerIsDown||this.pointers.length<(e.name==="gesture"?2:1)||!t.options[e.name].enabled?!1:(tS(this.prepared,e),this.interactable=t,this.element=r,this.rect=t.getRect(r),this.edges=this.prepared.edges?qt({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:"start"})&&!this._stopped,this._interacting)}pointerMove(e,t,r){!this.simulation&&!(this.modification&&this.modification.endResult)&&this.updatePointer(e,t,r,!1);const i=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;let a,s;this.pointerIsDown&&!this.pointerWasMoved&&(a=this.coords.cur.client.x-this.coords.start.client.x,s=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=Kl(a,s)>this.pointerMoveTolerance);const l=this.getPointerIndex(e),c={pointer:e,pointerIndex:l,pointerInfo:this.pointers[l],event:t,type:"move",eventTarget:r,dx:a,dy:s,duplicate:i,interaction:this};i||xE(this.coords.velocity,this.coords.delta),this._scopeFire("interactions:move",c),!i&&!this.simulation&&(this.interacting()&&(c.type=null,this.move(c)),this.pointerWasMoved&&qi(this.coords.prev,this.coords.cur))}move(e){(!e||!e.event)&&EE(this.coords.delta),e=qt({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},e||{}),e.phase="move",this._doPhase(e)}pointerUp(e,t,r,i){let a=this.getPointerIndex(e);a===-1&&(a=this.updatePointer(e,t,r,!1));const s=/cancel$/i.test(t.type)?"cancel":"up";this._scopeFire(`interactions:${s}`,{pointer:e,pointerIndex:a,pointerInfo:this.pointers[a],event:t,eventTarget:r,type:s,curEventTarget:i,interaction:this}),this.simulation||this.end(t),this.removePointer(e,t)}documentBlur(e){this.end(e),this._scopeFire("interactions:blur",{event:e,type:"blur",interaction:this})}end(e){this._ending=!0,e=e||this._latestPointer.event;let t;this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:"end"})),this._ending=!1,t===!0&&this.stop()}currentAction(){return this._interacting?this.prepared.name:null}interacting(){return this._interacting}stop(){this._scopeFire("interactions:stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}getPointerIndex(e){const t=An(e);return this.pointerType==="mouse"||this.pointerType==="pen"?this.pointers.length-1:di(this.pointers,r=>r.id===t)}getPointerInfo(e){return this.pointers[this.getPointerIndex(e)]}updatePointer(e,t,r,i){const a=An(e);let s=this.getPointerIndex(e),l=this.pointers[s];return i=i===!1?!1:i||/(down|start)$/i.test(t.type),l?l.pointer=e:(l=new rS(a,e,t,null,null),s=this.pointers.length,this.pointers.push(l)),CE(this.coords.cur,this.pointers.map(c=>c.pointer),this._now()),bE(this.coords.delta,this.coords.prev,this.coords.cur),i&&(this.pointerIsDown=!0,l.downTime=this.coords.cur.timeStamp,l.downTarget=r,ai(this.downPointer,e),this.interacting()||(qi(this.coords.start,this.coords.cur),qi(this.coords.prev,this.coords.cur),this.downEvent=t,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,r),this._scopeFire("interactions:update-pointer",{pointer:e,event:t,eventTarget:r,down:i,pointerInfo:l,pointerIndex:s,interaction:this}),s}removePointer(e,t){const r=this.getPointerIndex(e);if(r===-1)return;const i=this.pointers[r];this._scopeFire("interactions:remove-pointer",{pointer:e,event:t,eventTarget:null,pointerIndex:r,pointerInfo:i,interaction:this}),this.pointers.splice(r,1),this.pointerIsDown=!1}_updateLatestPointer(e,t,r){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=r}destroy(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}_createPreparedEvent(e,t,r,i){return new Bl(this,e,this.prepared.name,t,this.element,r,i)}_fireEvent(e){var t;(t=this.interactable)==null||t.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}_doPhase(e){const{event:t,phase:r,preEnd:i,type:a}=e,{rect:s}=this;if(s&&r==="move"&&(mE(this.edges,s,this.coords.delta[this.interactable.options.deltaSource]),s.width=s.right-s.left,s.height=s.bottom-s.top),this._scopeFire(`interactions:before-action-${r}`,e)===!1)return!1;const c=e.iEvent=this._createPreparedEvent(t,r,i,a);return this._scopeFire(`interactions:action-${r}`,e),r==="start"&&(this.prevEvent=c),this._fireEvent(c),this._scopeFire(`interactions:after-action-${r}`,e),!0}_now(){return Date.now()}}const Fl={methodOrder:["simulationResume","mouseOrPen","hasPointer","idle"],search(n){for(const e of Fl.methodOrder){const t=Fl[e](n);if(t)return t}return null},simulationResume(n){let{pointerType:e,eventType:t,eventTarget:r,scope:i}=n;if(!/down|start/i.test(t))return null;for(const a of i.interactions.list){let s=r;if(a.simulation&&a.simulation.allowResume&&a.pointerType===e)for(;s;){if(s===a.element)return a;s=on(s)}}return null},mouseOrPen(n){let{pointerId:e,pointerType:t,eventType:r,scope:i}=n;if(t!=="mouse"&&t!=="pen")return null;let a;for(const s of i.interactions.list)if(s.pointerType===t){if(s.simulation&&!Mc(s,e))continue;if(s.interacting())return s;a||(a=s)}if(a)return a;for(const s of i.interactions.list)if(s.pointerType===t&&!(/down/i.test(r)&&s.simulation))return s;return null},hasPointer(n){let{pointerId:e,scope:t}=n;for(const r of t.interactions.list)if(Mc(r,e))return r;return null},idle(n){let{pointerType:e,scope:t}=n;for(const r of t.interactions.list){if(r.pointers.length===1){const i=r.interactable;if(i&&!(i.options.gesture&&i.options.gesture.enabled))continue}else if(r.pointers.length>=2)continue;if(!r.interacting()&&e===r.pointerType)return r}return null}};function Mc(n,e){return n.pointers.some(t=>{let{id:r}=t;return r===e})}const Xx=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function oS(n){const e={};for(const a of Xx)e[a]=Hx(a,n);const t=At.pEventTypes;let r;wt.PointerEvent?r=[{type:t.down,listener:i},{type:t.down,listener:e.pointerDown},{type:t.move,listener:e.pointerMove},{type:t.up,listener:e.pointerUp},{type:t.cancel,listener:e.pointerUp}]:r=[{type:"mousedown",listener:e.pointerDown},{type:"mousemove",listener:e.pointerMove},{type:"mouseup",listener:e.pointerUp},{type:"touchstart",listener:i},{type:"touchstart",listener:e.pointerDown},{type:"touchmove",listener:e.pointerMove},{type:"touchend",listener:e.pointerUp},{type:"touchcancel",listener:e.pointerUp}],r.push({type:"blur",listener(a){for(const s of n.interactions.list)s.documentBlur(a)}}),n.prevTouchTime=0,n.Interaction=class extends sS{get pointerMoveTolerance(){return n.interactions.pointerMoveTolerance}set pointerMoveTolerance(a){n.interactions.pointerMoveTolerance=a}_now(){return n.now()}},n.interactions={list:[],new(a){a.scopeFire=(l,c)=>n.fire(l,c);const s=new n.Interaction(a);return n.interactions.list.push(s),s},listeners:e,docEvents:r,pointerMoveTolerance:1};function i(){for(const a of n.interactions.list)if(!(!a.pointerIsDown||a.pointerType!=="touch"||a._interacting))for(const s of a.pointers)n.documents.some(l=>{let{doc:c}=l;return Xr(c,s.downTarget)})||a.removePointer(s.pointer,s.event)}n.usePlugin(eS)}function Hx(n,e){return function(t){const r=e.interactions.list,i=Lx(t),[a,s]=Dx(t),l=[];if(/^touch/.test(t.type)){e.prevTouchTime=e.now();for(const c of t.changedTouches){const u=c,f=An(u),h={pointer:u,pointerId:f,pointerType:i,eventType:t.type,eventTarget:a,curEventTarget:s,scope:e},p=Oc(h);l.push([h.pointer,h.eventTarget,h.curEventTarget,p])}}else{let c=!1;if(!At.supportsPointerEvent&&/mouse/.test(t.type)){for(let u=0;uVi(n,"add"),"scope:remove-document":n=>Vi(n,"remove"),"interactable:unset":(n,e)=>{let{interactable:t}=n;for(let r=e.interactions.list.length-1;r>=0;r--){const i=e.interactions.list[r];i.interactable===t&&(i.stop(),e.fire("interactions:destroy",{interaction:i}),i.destroy(),e.interactions.list.length>2&&e.interactions.list.splice(r,1))}}},onDocSignal:Vi,doOnInteractions:Hx,methodNames:Xx};function li(n,e){if(e.phaselessTypes[n])return!0;for(const t in e.map)if(n.indexOf(t)===0&&n.substr(t.length)in e.phases)return!0;return!1}var Cr=(function(n){return n[n.On=0]="On",n[n.Off=1]="Off",n})(Cr||{});class cS{get _defaults(){return{base:{},perAction:{},actions:{}}}constructor(e,t,r,i){this.target=void 0,this.options=void 0,this._actions=void 0,this.events=new Ux,this._context=void 0,this._win=void 0,this._doc=void 0,this._scopeEvents=void 0,this._actions=t.actions,this.target=e,this._context=t.context||r,this._win=sn(Tc(e)?this._context:e),this._doc=this._win.document,this._scopeEvents=i,this.set(t)}setOnEvents(e,t){return qe.func(t.onstart)&&this.on(`${e}start`,t.onstart),qe.func(t.onmove)&&this.on(`${e}move`,t.onmove),qe.func(t.onend)&&this.on(`${e}end`,t.onend),qe.func(t.oninertiastart)&&this.on(`${e}inertiastart`,t.oninertiastart),this}updatePerActionListeners(e,t,r){var i;const a=(i=this._actions.map[e])==null?void 0:i.filterEventType,s=l=>(a==null||a(l))&&li(l,this._actions);(qe.array(t)||qe.object(t))&&this._onOff(Cr.Off,e,t,void 0,s),(qe.array(r)||qe.object(r))&&this._onOff(Cr.On,e,r,void 0,s)}setPerAction(e,t){const r=this._defaults;for(const i in t){const a=i,s=this.options[e],l=t[a];a==="listeners"&&this.updatePerActionListeners(e,s.listeners,l),qe.array(l)?s[a]=Kx(l):qe.plainObject(l)?(s[a]=qt(s[a]||{},oi(l)),qe.object(r.perAction[a])&&"enabled"in r.perAction[a]&&(s[a].enabled=l.enabled!==!1)):qe.bool(l)&&qe.object(r.perAction[a])?s[a].enabled=l:s[a]=l}}getRect(e){return e=e||(qe.element(this.target)?this.target:null),qe.string(this.target)&&(e=e||this._context.querySelector(this.target)),ql(e)}rectChecker(e){return qe.func(e)?(this.getRect=t=>{const r=qt({},e.apply(this,t));return"width"in r||(r.width=r.right-r.left,r.height=r.bottom-r.top),r},this):e===null?(delete this.getRect,this):this.getRect}_backCompatOption(e,t){if(Tc(t)||qe.object(t)){this.options[e]=t;for(const r in this._actions.map)this.options[r][e]=t;return this}return this.options[e]}origin(e){return this._backCompatOption("origin",e)}deltaSource(e){return e==="page"||e==="client"?(this.options.deltaSource=e,this):this.options.deltaSource}getAllElements(){const{target:e}=this;return qe.string(e)?Array.from(this._context.querySelectorAll(e)):qe.func(e)&&e.getAllElements?e.getAllElements():qe.element(e)?[e]:[]}context(){return this._context}inContext(e){return this._context===e.ownerDocument||Xr(this._context,e)}testIgnoreAllow(e,t,r){return!this.testIgnore(e.ignoreFrom,t,r)&&this.testAllow(e.allowFrom,t,r)}testAllow(e,t,r){return e?qe.element(r)?qe.string(e)?Ic(r,e,t):qe.element(e)?Xr(e,r):!1:!1:!0}testIgnore(e,t,r){return!e||!qe.element(r)?!1:qe.string(e)?Ic(r,e,t):qe.element(e)?Xr(e,r):!1}fire(e){return this.events.fire(e),this}_onOff(e,t,r,i,a){qe.object(t)&&!qe.array(t)&&(i=r,r=null);const s=nn(t,r,a);for(let l in s){l==="wheel"&&(l=At.wheelEvent);for(const c of s[l])li(l,this._actions)?this.events[e===Cr.On?"on":"off"](l,c):qe.string(this.target)?this._scopeEvents[e===Cr.On?"addDelegate":"removeDelegate"](this.target,this._context,l,c,i):this._scopeEvents[e===Cr.On?"add":"remove"](this.target,l,c,i)}return this}on(e,t,r){return this._onOff(Cr.On,e,t,r)}off(e,t,r){return this._onOff(Cr.Off,e,t,r)}set(e){const t=this._defaults;qe.object(e)||(e={}),this.options=oi(t.base);for(const r in this._actions.methodDict){const i=r,a=this._actions.methodDict[i];this.options[i]={},this.setPerAction(i,qt(qt({},t.perAction),t.actions[i])),this[a](e[i])}for(const r in e){if(r==="getRect"){this.rectChecker(e.getRect);continue}qe.func(this[r])&&this[r](e[r])}return this}unset(){if(qe.string(this.target))for(const e in this._scopeEvents.delegatedEvents){const t=this._scopeEvents.delegatedEvents[e];for(let r=t.length-1;r>=0;r--){const{selector:i,context:a,listeners:s}=t[r];i===this.target&&a===this._context&&t.splice(r,1);for(let l=s.length-1;l>=0;l--)this._scopeEvents.removeDelegate(this.target,this._context,e,s[l][0],s[l][1])}}else this._scopeEvents.remove(this.target,"all")}}class uS{constructor(e){this.list=[],this.selectorMap={},this.scope=void 0,this.scope=e,e.addListeners({"interactable:unset":t=>{let{interactable:r}=t;const{target:i}=r,a=qe.string(i)?this.selectorMap[i]:i[this.scope.id],s=di(a,l=>l===r);a.splice(s,1)}})}new(e,t){t=qt(t||{},{actions:this.scope.actions});const r=new this.scope.Interactable(e,t,this.scope.document,this.scope.events);return this.scope.addDocument(r._doc),this.list.push(r),qe.string(e)?(this.selectorMap[e]||(this.selectorMap[e]=[]),this.selectorMap[e].push(r)):(r.target[this.scope.id]||Object.defineProperty(e,this.scope.id,{value:[],configurable:!0}),e[this.scope.id].push(r)),this.scope.fire("interactable:new",{target:e,options:t,interactable:r,win:this.scope._win}),r}getExisting(e,t){const r=t&&t.context||this.scope.document,i=qe.string(e),a=i?this.selectorMap[e]:e[this.scope.id];if(a)return Yn(a,s=>s._context===r&&(i||s.inContext(e)))}forEachMatch(e,t){for(const r of this.list){let i;if((qe.string(r.target)?qe.element(e)&&Hr(e,r.target):e===r.target)&&r.inContext(e)&&(i=t(r)),i!==void 0)return i}}}function dS(n){const e=(t,r)=>{let i=n.interactables.getExisting(t,r);return i||(i=n.interactables.new(t,r),i.events.global=e.globalEvents),i};return e.getPointerAverage=Ox,e.getTouchBBox=RE,e.getTouchDistance=IE,e.getTouchAngle=AE,e.getElementRect=ql,e.getElementClientRect=kx,e.matchesSelector=Hr,e.closest=Tx,e.globalEvents={},e.version="1.10.27",e.scope=n,e.use=function(t,r){return this.scope.usePlugin(t,r),this},e.isSet=function(t,r){return!!this.scope.interactables.get(t,r&&r.context)},e.on=Pl(function(r,i,a){if(qe.string(r)&&r.search(" ")!==-1&&(r=r.trim().split(/ +/)),qe.array(r)){for(const s of r)this.on(s,i,a);return this}if(qe.object(r)){for(const s in r)this.on(s,r[s],i);return this}return li(r,this.scope.actions)?this.globalEvents[r]?this.globalEvents[r].push(i):this.globalEvents[r]=[i]:this.scope.events.add(this.scope.document,r,i,{options:a}),this},"The interact.on() method is being deprecated"),e.off=Pl(function(r,i,a){if(qe.string(r)&&r.search(" ")!==-1&&(r=r.trim().split(/ +/)),qe.array(r)){for(const s of r)this.off(s,i,a);return this}if(qe.object(r)){for(const s in r)this.off(s,r[s],i);return this}if(li(r,this.scope.actions)){let s;r in this.globalEvents&&(s=this.globalEvents[r].indexOf(i))!==-1&&this.globalEvents[r].splice(s,1)}else this.scope.events.remove(this.scope.document,r,i,a);return this},"The interact.off() method is being deprecated"),e.debug=function(){return this.scope},e.supportsTouch=function(){return At.supportsTouch},e.supportsPointerEvent=function(){return At.supportsPointerEvent},e.stop=function(){for(const t of this.scope.interactions.list)t.stop();return this},e.pointerMoveTolerance=function(t){return qe.number(t)?(this.scope.interactions.pointerMoveTolerance=t,this):this.scope.interactions.pointerMoveTolerance},e.addDocument=function(t,r){this.scope.addDocument(t,r)},e.removeDocument=function(t){this.scope.removeDocument(t)},e}class fS{constructor(){this.id=`__interact_scope_${Math.floor(Math.random()*100)}`,this.isInitialized=!1,this.listenerMaps=[],this.browser=At,this.defaults=oi(Bx),this.Eventable=Ux,this.actions={map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}},this.interactStatic=dS(this),this.InteractEvent=Bl,this.Interactable=void 0,this.interactables=new uS(this),this._win=void 0,this.document=void 0,this.window=void 0,this.documents=[],this._plugins={list:[],map:{}},this.onWindowUnload=t=>this.removeDocument(t.target);const e=this;this.Interactable=class extends cS{get _defaults(){return e.defaults}set(t){return super.set(t),e.fire("interactable:set",{options:t,interactable:this}),this}unset(){super.unset();const t=e.interactables.list.indexOf(this);t<0||(e.interactables.list.splice(t,1),e.fire("interactable:unset",{interactable:this}))}}}addListeners(e,t){this.listenerMaps.push({id:t,map:e})}fire(e,t){for(const{map:{[e]:r}}of this.listenerMaps)if(r&&r(t,this,e)===!1)return!1}init(e){return this.isInitialized?this:hS(this,e)}pluginIsInstalled(e){const{id:t}=e;return t?!!this._plugins.map[t]:this._plugins.list.indexOf(e)!==-1}usePlugin(e,t){if(!this.isInitialized)return this;if(this.pluginIsInstalled(e))return this;if(e.id&&(this._plugins.map[e.id]=e),this._plugins.list.push(e),e.install&&e.install(this,t),e.listeners&&e.before){let r=0;const i=this.listenerMaps.length,a=e.before.reduce((s,l)=>(s[l]=!0,s[Lc(l)]=!0,s),{});for(;r{const{interaction:e,interactable:t,buttons:r}=n,i=t.options.drag;if(!(!(i&&i.enabled)||e.pointerIsDown&&/mouse|pointer/.test(e.pointerType)&&(r&t.options.drag.mouseButtons)===0))return n.action={name:"drag",axis:i.lockAxis==="start"?i.startAxis:i.lockAxis},!1}},draggable:vS,beforeMove:Ki,move:Dc,defaults:{startAxis:"xy",lockAxis:"xy"},getCursor(){return"move"},filterEventType:n=>n.search("drag")===0};or.use(Zn);var Nc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function gS(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var qc={},Ui,Vc;function Ye(){if(Vc)return Ui;Vc=1;var n=function(e){return e&&e.Math==Math&&e};return Ui=n(typeof globalThis=="object"&&globalThis)||n(typeof window=="object"&&window)||n(typeof self=="object"&&self)||n(typeof Nc=="object"&&Nc)||(function(){return this})()||Function("return this")(),Ui}var Bi={},Xi,Kc;function Ue(){return Kc||(Kc=1,Xi=function(n){try{return!!n()}catch{return!0}}),Xi}var Hi,Uc;function dt(){if(Uc)return Hi;Uc=1;var n=Ue();return Hi=!n(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),Hi}var Qi={},Bc;function fi(){if(Bc)return Qi;Bc=1;var n={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,t=e&&!n.call({1:2},1);return Qi.f=t?function(i){var a=e(this,i);return!!a&&a.enumerable}:n,Qi}var ji,Xc;function gr(){return Xc||(Xc=1,ji=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}}),ji}var Wi,Hc;function jr(){if(Hc)return Wi;Hc=1;var n={}.toString;return Wi=function(e){return n.call(e).slice(8,-1)},Wi}var zi,Qc;function Tn(){if(Qc)return zi;Qc=1;var n=Ue(),e=jr(),t="".split;return zi=n(function(){return!Object("z").propertyIsEnumerable(0)})?function(r){return e(r)=="String"?t.call(r,""):Object(r)}:Object,zi}var Gi,jc;function Dt(){return jc||(jc=1,Gi=function(n){if(n==null)throw TypeError("Can't call method on "+n);return n}),Gi}var $i,Wc;function Gt(){if(Wc)return $i;Wc=1;var n=Tn(),e=Dt();return $i=function(t){return n(e(t))},$i}var Yi,zc;function pt(){return zc||(zc=1,Yi=function(n){return typeof n=="function"}),Yi}var Zi,Gc;function ct(){if(Gc)return Zi;Gc=1;var n=pt();return Zi=function(e){return typeof e=="object"?e!==null:n(e)},Zi}var Ji,$c;function Ht(){if($c)return Ji;$c=1;var n=Ye(),e=pt(),t=function(r){return e(r)?r:void 0};return Ji=function(r,i){return arguments.length<2?t(n[r]):n[r]&&n[r][i]},Ji}var ea,Yc;function mr(){if(Yc)return ea;Yc=1;var n=Ht();return ea=n("navigator","userAgent")||"",ea}var ta,Zc;function Fr(){if(Zc)return ta;Zc=1;var n=Ye(),e=mr(),t=n.process,r=n.Deno,i=t&&t.versions||r&&r.version,a=i&&i.v8,s,l;return a?(s=a.split("."),l=s[0]<4?1:s[0]+s[1]):e&&(s=e.match(/Edge\/(\d+)/),(!s||s[1]>=74)&&(s=e.match(/Chrome\/(\d+)/),s&&(l=s[1]))),ta=l&&+l,ta}var ra,Jc;function Xl(){if(Jc)return ra;Jc=1;var n=Fr(),e=Ue();return ra=!!Object.getOwnPropertySymbols&&!e(function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}),ra}var na,eu;function jx(){if(eu)return na;eu=1;var n=Xl();return na=n&&!Symbol.sham&&typeof Symbol.iterator=="symbol",na}var ia,tu;function kn(){if(tu)return ia;tu=1;var n=pt(),e=Ht(),t=jx();return ia=t?function(r){return typeof r=="symbol"}:function(r){var i=e("Symbol");return n(i)&&Object(r)instanceof i},ia}var aa,ru;function Hl(){return ru||(ru=1,aa=function(n){try{return String(n)}catch{return"Object"}}),aa}var sa,nu;function Qt(){if(nu)return sa;nu=1;var n=pt(),e=Hl();return sa=function(t){if(n(t))return t;throw TypeError(e(t)+" is not a function")},sa}var oa,iu;function yr(){if(iu)return oa;iu=1;var n=Qt();return oa=function(e,t){var r=e[t];return r==null?void 0:n(r)},oa}var la,au;function Wx(){if(au)return la;au=1;var n=pt(),e=ct();return la=function(t,r){var i,a;if(r==="string"&&n(i=t.toString)&&!e(a=i.call(t))||n(i=t.valueOf)&&!e(a=i.call(t))||r!=="string"&&n(i=t.toString)&&!e(a=i.call(t)))return a;throw TypeError("Can't convert object to primitive value")},la}var ca={exports:{}},ua,su;function nr(){return su||(su=1,ua=!1),ua}var da,ou;function Ql(){if(ou)return da;ou=1;var n=Ye();return da=function(e,t){try{Object.defineProperty(n,e,{value:t,configurable:!0,writable:!0})}catch{n[e]=t}return t},da}var fa,lu;function jl(){if(lu)return fa;lu=1;var n=Ye(),e=Ql(),t="__core-js_shared__",r=n[t]||e(t,{});return fa=r,fa}var cu;function hi(){if(cu)return ca.exports;cu=1;var n=nr(),e=jl();return(ca.exports=function(t,r){return e[t]||(e[t]=r!==void 0?r:{})})("versions",[]).push({version:"3.18.3",mode:n?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"}),ca.exports}var ha,uu;function Et(){if(uu)return ha;uu=1;var n=Dt();return ha=function(e){return Object(n(e))},ha}var _a,du;function Tt(){if(du)return _a;du=1;var n=Et(),e={}.hasOwnProperty;return _a=Object.hasOwn||function(r,i){return e.call(n(r),i)},_a}var pa,fu;function Pn(){if(fu)return pa;fu=1;var n=0,e=Math.random();return pa=function(t){return"Symbol("+String(t===void 0?"":t)+")_"+(++n+e).toString(36)},pa}var va,hu;function ft(){if(hu)return va;hu=1;var n=Ye(),e=hi(),t=Tt(),r=Pn(),i=Xl(),a=jx(),s=e("wks"),l=n.Symbol,c=a?l:l&&l.withoutSetter||r;return va=function(u){return(!t(s,u)||!(i||typeof s[u]=="string"))&&(i&&t(l,u)?s[u]=l[u]:s[u]=c("Symbol."+u)),s[u]},va}var ga,_u;function Wl(){if(_u)return ga;_u=1;var n=ct(),e=kn(),t=yr(),r=Wx(),i=ft(),a=i("toPrimitive");return ga=function(s,l){if(!n(s)||e(s))return s;var c=t(s,a),u;if(c){if(l===void 0&&(l="default"),u=c.call(s,l),!n(u)||e(u))return u;throw TypeError("Can't convert object to primitive value")}return l===void 0&&(l="number"),r(s,l)},ga}var ma,pu;function Mr(){if(pu)return ma;pu=1;var n=Wl(),e=kn();return ma=function(t){var r=n(t,"string");return e(r)?r:String(r)},ma}var ya,vu;function _i(){if(vu)return ya;vu=1;var n=Ye(),e=ct(),t=n.document,r=e(t)&&e(t.createElement);return ya=function(i){return r?t.createElement(i):{}},ya}var ba,gu;function zx(){if(gu)return ba;gu=1;var n=dt(),e=Ue(),t=_i();return ba=!n&&!e(function(){return Object.defineProperty(t("div"),"a",{get:function(){return 7}}).a!=7}),ba}var mu;function Bt(){if(mu)return Bi;mu=1;var n=dt(),e=fi(),t=gr(),r=Gt(),i=Mr(),a=Tt(),s=zx(),l=Object.getOwnPropertyDescriptor;return Bi.f=n?l:function(u,f){if(u=r(u),f=i(f),s)try{return l(u,f)}catch{}if(a(u,f))return t(!e.f.call(u,f),u[f])},Bi}var xa={},Ea,yu;function ut(){if(yu)return Ea;yu=1;var n=ct();return Ea=function(e){if(n(e))return e;throw TypeError(String(e)+" is not an object")},Ea}var bu;function xt(){if(bu)return xa;bu=1;var n=dt(),e=zx(),t=ut(),r=Mr(),i=Object.defineProperty;return xa.f=n?i:function(s,l,c){if(t(s),l=r(l),t(c),e)try{return i(s,l,c)}catch{}if("get"in c||"set"in c)throw TypeError("Accessors not supported");return"value"in c&&(s[l]=c.value),s},xa}var Sa,xu;function $t(){if(xu)return Sa;xu=1;var n=dt(),e=xt(),t=gr();return Sa=n?function(r,i,a){return e.f(r,i,t(1,a))}:function(r,i,a){return r[i]=a,r},Sa}var wa={exports:{}},Ca,Eu;function pi(){if(Eu)return Ca;Eu=1;var n=pt(),e=jl(),t=Function.toString;return n(e.inspectSource)||(e.inspectSource=function(r){return t.call(r)}),Ca=e.inspectSource,Ca}var Ra,Su;function Gx(){if(Su)return Ra;Su=1;var n=Ye(),e=pt(),t=pi(),r=n.WeakMap;return Ra=e(r)&&/native code/.test(t(r)),Ra}var Ia,wu;function vi(){if(wu)return Ia;wu=1;var n=hi(),e=Pn(),t=n("keys");return Ia=function(r){return t[r]||(t[r]=e(r))},Ia}var Aa,Cu;function Fn(){return Cu||(Cu=1,Aa={}),Aa}var Ta,Ru;function Vt(){if(Ru)return Ta;Ru=1;var n=Gx(),e=Ye(),t=ct(),r=$t(),i=Tt(),a=jl(),s=vi(),l=Fn(),c="Object already initialized",u=e.WeakMap,f,h,p,_=function(E){return p(E)?h(E):f(E,{})},g=function(E){return function(C){var R;if(!t(C)||(R=h(C)).type!==E)throw TypeError("Incompatible receiver, "+E+" required");return R}};if(n||a.state){var m=a.state||(a.state=new u),v=m.get,b=m.has,S=m.set;f=function(E,C){if(b.call(m,E))throw new TypeError(c);return C.facade=E,S.call(m,E,C),C},h=function(E){return v.call(m,E)||{}},p=function(E){return b.call(m,E)}}else{var x=s("state");l[x]=!0,f=function(E,C){if(i(E,x))throw new TypeError(c);return C.facade=E,r(E,x,C),C},h=function(E){return i(E,x)?E[x]:{}},p=function(E){return i(E,x)}}return Ta={set:f,get:h,has:p,enforce:_,getterFor:g},Ta}var ka,Iu;function Wr(){if(Iu)return ka;Iu=1;var n=dt(),e=Tt(),t=Function.prototype,r=n&&Object.getOwnPropertyDescriptor,i=e(t,"name"),a=i&&(function(){}).name==="something",s=i&&(!n||n&&r(t,"name").configurable);return ka={EXISTS:i,PROPER:a,CONFIGURABLE:s},ka}var Au;function Ft(){if(Au)return wa.exports;Au=1;var n=Ye(),e=pt(),t=Tt(),r=$t(),i=Ql(),a=pi(),s=Vt(),l=Wr().CONFIGURABLE,c=s.get,u=s.enforce,f=String(String).split("String");return(wa.exports=function(h,p,_,g){var m=g?!!g.unsafe:!1,v=g?!!g.enumerable:!1,b=g?!!g.noTargetGet:!1,S=g&&g.name!==void 0?g.name:p,x;if(e(_)&&(String(S).slice(0,7)==="Symbol("&&(S="["+String(S).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!t(_,"name")||l&&_.name!==S)&&r(_,"name",S),x=u(_),x.source||(x.source=f.join(typeof S=="string"?S:""))),h===n){v?h[p]=_:i(p,_);return}else m?!b&&h[p]&&(v=!0):delete h[p];v?h[p]=_:r(h,p,_)})(Function.prototype,"toString",function(){return e(this)&&c(this).source||a(this)}),wa.exports}var Pa={},Fa,Tu;function Kt(){if(Tu)return Fa;Tu=1;var n=Math.ceil,e=Math.floor;return Fa=function(t){var r=+t;return r!==r||r===0?0:(r>0?e:n)(r)},Fa}var Ma,ku;function Or(){if(ku)return Ma;ku=1;var n=Kt(),e=Math.max,t=Math.min;return Ma=function(r,i){var a=n(r);return a<0?e(a+i,0):t(a,i)},Ma}var Oa,Pu;function Yt(){if(Pu)return Oa;Pu=1;var n=Kt(),e=Math.min;return Oa=function(t){return t>0?e(n(t),9007199254740991):0},Oa}var La,Fu;function kt(){if(Fu)return La;Fu=1;var n=Yt();return La=function(e){return n(e.length)},La}var Da,Mu;function Mn(){if(Mu)return Da;Mu=1;var n=Gt(),e=Or(),t=kt(),r=function(i){return function(a,s,l){var c=n(a),u=t(c),f=e(l,u),h;if(i&&s!=s){for(;u>f;)if(h=c[f++],h!=h)return!0}else for(;u>f;f++)if((i||f in c)&&c[f]===s)return i||f||0;return!i&&-1}};return Da={includes:r(!0),indexOf:r(!1)},Da}var Na,Ou;function $x(){if(Ou)return Na;Ou=1;var n=Tt(),e=Gt(),t=Mn().indexOf,r=Fn();return Na=function(i,a){var s=e(i),l=0,c=[],u;for(u in s)!n(r,u)&&n(s,u)&&c.push(u);for(;a.length>l;)n(s,u=a[l++])&&(~t(c,u)||c.push(u));return c},Na}var qa,Lu;function zl(){return Lu||(Lu=1,qa=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),qa}var Du;function Lr(){if(Du)return Pa;Du=1;var n=$x(),e=zl(),t=e.concat("length","prototype");return Pa.f=Object.getOwnPropertyNames||function(i){return n(i,t)},Pa}var Va={},Nu;function Gl(){return Nu||(Nu=1,Va.f=Object.getOwnPropertySymbols),Va}var Ka,qu;function $l(){if(qu)return Ka;qu=1;var n=Ht(),e=Lr(),t=Gl(),r=ut();return Ka=n("Reflect","ownKeys")||function(a){var s=e.f(r(a)),l=t.f;return l?s.concat(l(a)):s},Ka}var Ua,Vu;function Yl(){if(Vu)return Ua;Vu=1;var n=Tt(),e=$l(),t=Bt(),r=xt();return Ua=function(i,a){for(var s=e(a),l=r.f,c=t.f,u=0;uu;)e.f(a,f=l[u++],s[f]);return a},Ga}var $a,zu;function Yx(){if(zu)return $a;zu=1;var n=Ht();return $a=n("document","documentElement"),$a}var Ya,Gu;function lr(){if(Gu)return Ya;Gu=1;var n=ut(),e=Jl(),t=zl(),r=Fn(),i=Yx(),a=_i(),s=vi(),l=">",c="<",u="prototype",f="script",h=s("IE_PROTO"),p=function(){},_=function(S){return c+f+l+S+c+"/"+f+l},g=function(S){S.write(_("")),S.close();var x=S.parentWindow.Object;return S=null,x},m=function(){var S=a("iframe"),x="java"+f+":",E;return S.style.display="none",i.appendChild(S),S.src=String(x),E=S.contentWindow.document,E.open(),E.write(_("document.F=Object")),E.close(),E.F},v,b=function(){try{v=new ActiveXObject("htmlfile")}catch{}b=typeof document<"u"?document.domain&&v?g(v):m():g(v);for(var S=t.length;S--;)delete b[u][t[S]];return b()};return r[h]=!0,Ya=Object.create||function(x,E){var C;return x!==null?(p[u]=n(x),C=new p,p[u]=null,C[h]=x):C=b(),E===void 0?C:e(C,E)},Ya}var Za={},$u;function ec(){if($u)return Za;$u=1;var n=Gt(),e=Lr().f,t={}.toString,r=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],i=function(a){try{return e(a)}catch{return r.slice()}};return Za.f=function(s){return r&&t.call(s)=="[object Window]"?i(s):e(n(s))},Za}var Ja={},Yu;function Zx(){if(Yu)return Ja;Yu=1;var n=ft();return Ja.f=n,Ja}var es,Zu;function Jx(){if(Zu)return es;Zu=1;var n=Ye();return es=n,es}var ts,Ju;function jt(){if(Ju)return ts;Ju=1;var n=Jx(),e=Tt(),t=Zx(),r=xt().f;return ts=function(i){var a=n.Symbol||(n.Symbol={});e(a,i)||r(a,i,{value:t.f(i)})},ts}var rs,ed;function cr(){if(ed)return rs;ed=1;var n=xt().f,e=Tt(),t=ft(),r=t("toStringTag");return rs=function(i,a,s){i&&!e(i=s?i:i.prototype,r)&&n(i,r,{configurable:!0,value:a})},rs}var ns,td;function Dr(){if(td)return ns;td=1;var n=Qt();return ns=function(e,t,r){if(n(e),t===void 0)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(i){return e.call(t,i)};case 2:return function(i,a){return e.call(t,i,a)};case 3:return function(i,a,s){return e.call(t,i,a,s)}}return function(){return e.apply(t,arguments)}},ns}var is,rd;function Dn(){if(rd)return is;rd=1;var n=Ue(),e=pt(),t=Gr(),r=Ht(),i=pi(),a=[],s=r("Reflect","construct"),l=/^\s*(?:class|function)\b/,c=l.exec,u=!l.exec(function(){}),f=function(p){if(!e(p))return!1;try{return s(Object,a,p),!0}catch{return!1}},h=function(p){if(!e(p))return!1;switch(t(p)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return u||!!c.call(l,i(p))};return is=!s||n(function(){var p;return f(f.call)||!f(Object)||!f(function(){p=!0})||p})?h:f,is}var as,nd;function mS(){if(nd)return as;nd=1;var n=zr(),e=Dn(),t=ct(),r=ft(),i=r("species");return as=function(a){var s;return n(a)&&(s=a.constructor,e(s)&&(s===Array||n(s.prototype))?s=void 0:t(s)&&(s=s[i],s===null&&(s=void 0))),s===void 0?Array:s},as}var ss,id;function Nn(){if(id)return ss;id=1;var n=mS();return ss=function(e,t){return new(n(e))(t===0?0:t)},ss}var os,ad;function Ut(){if(ad)return os;ad=1;var n=Dr(),e=Tn(),t=Et(),r=kt(),i=Nn(),a=[].push,s=function(l){var c=l==1,u=l==2,f=l==3,h=l==4,p=l==6,_=l==7,g=l==5||p;return function(m,v,b,S){for(var x=t(m),E=e(x),C=n(v,b,3),R=r(E),P=0,F=S||i,k=c?F(m,R):u||_?F(m,0):void 0,q,ce;R>P;P++)if((g||P in E)&&(q=E[P],ce=C(q,P,x),l))if(c)k[P]=ce;else if(ce)switch(l){case 3:return!0;case 5:return q;case 6:return P;case 2:a.call(k,q)}else switch(l){case 4:return!1;case 7:a.call(k,q)}return p?-1:f||h?h:k}};return os={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)},os}var sd;function yS(){if(sd)return qc;sd=1;var n=Q(),e=Ye(),t=Ht(),r=nr(),i=dt(),a=Xl(),s=Ue(),l=Tt(),c=zr(),u=pt(),f=ct(),h=kn(),p=ut(),_=Et(),g=Gt(),m=Mr(),v=vt(),b=gr(),S=lr(),x=Ln(),E=Lr(),C=ec(),R=Gl(),P=Bt(),F=xt(),k=fi(),q=Ft(),ce=hi(),j=vi(),K=Fn(),ue=Pn(),ve=ft(),ge=Zx(),ye=jt(),Me=cr(),X=Vt(),L=Ut().forEach,H=j("hidden"),pe="Symbol",G="prototype",Se=ve("toPrimitive"),Te=X.set,De=X.getterFor(pe),Ae=Object[G],ke=e.Symbol,st=t("JSON","stringify"),et=P.f,Ne=F.f,Pe=C.f,Fe=k.f,me=ce("symbols"),Oe=ce("op-symbols"),ae=ce("string-to-symbol-registry"),le=ce("symbol-to-string-registry"),Ie=ce("wks"),Ge=e.QObject,tt=!Ge||!Ge[G]||!Ge[G].findChild,nt=i&&s(function(){return S(Ne({},"a",{get:function(){return Ne(this,"a",{value:7}).a}})).a!=7})?function(D,V,W){var A=et(Ae,V);A&&delete Ae[V],Ne(D,V,W),A&&D!==Ae&&Ne(Ae,V,A)}:Ne,it=function(D,V){var W=me[D]=S(ke[G]);return Te(W,{type:pe,tag:D,description:V}),i||(W.description=V),W},Be=function(V,W,A){V===Ae&&Be(Oe,W,A),p(V);var N=m(W);return p(A),l(me,N)?(A.enumerable?(l(V,H)&&V[H][N]&&(V[H][N]=!1),A=S(A,{enumerable:b(0,!1)})):(l(V,H)||Ne(V,H,b(1,{})),V[H][N]=!0),nt(V,N,A)):Ne(V,N,A)},Ze=function(V,W){p(V);var A=g(W),N=x(A).concat(w(A));return L(N,function(y){(!i||Ct.call(A,y))&&Be(V,y,A[y])}),V},$e=function(V,W){return W===void 0?S(V):Ze(S(V),W)},Ct=function(V){var W=m(V),A=Fe.call(this,W);return this===Ae&&l(me,W)&&!l(Oe,W)?!1:A||!l(this,W)||!l(me,W)||l(this,H)&&this[H][W]?A:!0},bt=function(V,W){var A=g(V),N=m(W);if(!(A===Ae&&l(me,N)&&!l(Oe,N))){var y=et(A,N);return y&&l(me,N)&&!(l(A,H)&&A[H][N])&&(y.enumerable=!0),y}},Mt=function(V){var W=Pe(g(V)),A=[];return L(W,function(N){!l(me,N)&&!l(K,N)&&A.push(N)}),A},w=function(V){var W=V===Ae,A=Pe(W?Oe:g(V)),N=[];return L(A,function(y){l(me,y)&&(!W||l(Ae,y))&&N.push(me[y])}),N};if(a||(ke=function(){if(this instanceof ke)throw TypeError("Symbol is not a constructor");var V=!arguments.length||arguments[0]===void 0?void 0:v(arguments[0]),W=ue(V),A=function(N){this===Ae&&A.call(Oe,N),l(this,H)&&l(this[H],W)&&(this[H][W]=!1),nt(this,W,b(1,N))};return i&&tt&&nt(Ae,W,{configurable:!0,set:A}),it(W,V)},q(ke[G],"toString",function(){return De(this).tag}),q(ke,"withoutSetter",function(D){return it(ue(D),D)}),k.f=Ct,F.f=Be,P.f=bt,E.f=C.f=Mt,R.f=w,ge.f=function(D){return it(ve(D),D)},i&&(Ne(ke[G],"description",{configurable:!0,get:function(){return De(this).description}}),r||q(Ae,"propertyIsEnumerable",Ct,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!a,sham:!a},{Symbol:ke}),L(x(Ie),function(D){ye(D)}),n({target:pe,stat:!0,forced:!a},{for:function(D){var V=v(D);if(l(ae,V))return ae[V];var W=ke(V);return ae[V]=W,le[W]=V,W},keyFor:function(V){if(!h(V))throw TypeError(V+" is not a symbol");if(l(le,V))return le[V]},useSetter:function(){tt=!0},useSimple:function(){tt=!1}}),n({target:"Object",stat:!0,forced:!a,sham:!i},{create:$e,defineProperty:Be,defineProperties:Ze,getOwnPropertyDescriptor:bt}),n({target:"Object",stat:!0,forced:!a},{getOwnPropertyNames:Mt,getOwnPropertySymbols:w}),n({target:"Object",stat:!0,forced:s(function(){R.f(1)})},{getOwnPropertySymbols:function(V){return R.f(_(V))}}),st){var ee=!a||s(function(){var D=ke();return st([D])!="[null]"||st({a:D})!="{}"||st(Object(D))!="{}"});n({target:"JSON",stat:!0,forced:ee},{stringify:function(V,W,A){for(var N=[V],y=1,_e;arguments.length>y;)N.push(arguments[y++]);if(_e=W,!(!f(W)&&V===void 0||h(V)))return c(W)||(W=function(Xe,xe){if(u(_e)&&(xe=_e.call(this,Xe,xe)),!h(xe))return xe}),N[1]=W,st.apply(null,N)}})}if(!ke[G][Se]){var he=ke[G].valueOf;q(ke[G],Se,function(){return he.apply(this,arguments)})}return Me(ke,pe),K[H]=!0,qc}var od={},ld;function bS(){if(ld)return od;ld=1;var n=Q(),e=dt(),t=Ye(),r=Tt(),i=pt(),a=ct(),s=xt().f,l=Yl(),c=t.Symbol;if(e&&i(c)&&(!("description"in c.prototype)||c().description!==void 0)){var u={},f=function(){var v=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),b=this instanceof f?new c(v):v===void 0?c():c(v);return v===""&&(u[b]=!0),b};l(f,c);var h=f.prototype=c.prototype;h.constructor=f;var p=h.toString,_=String(c("test"))=="Symbol(test)",g=/^Symbol\((.*)\)[^)]+$/;s(h,"description",{configurable:!0,get:function(){var v=a(this)?this.valueOf():this,b=p.call(v);if(r(u,v))return"";var S=_?b.slice(7,-1):b.replace(g,"$1");return S===""?void 0:S}}),n({global:!0,forced:!0},{Symbol:f})}return od}var cd={},ud;function xS(){if(ud)return cd;ud=1;var n=jt();return n("asyncIterator"),cd}var dd={},fd;function ES(){if(fd)return dd;fd=1;var n=jt();return n("hasInstance"),dd}var hd={},_d;function SS(){if(_d)return hd;_d=1;var n=jt();return n("isConcatSpreadable"),hd}var pd={},vd;function wS(){if(vd)return pd;vd=1;var n=jt();return n("iterator"),pd}var gd={},md;function CS(){if(md)return gd;md=1;var n=jt();return n("match"),gd}var yd={},bd;function RS(){if(bd)return yd;bd=1;var n=jt();return n("matchAll"),yd}var xd={},Ed;function IS(){if(Ed)return xd;Ed=1;var n=jt();return n("replace"),xd}var Sd={},wd;function AS(){if(wd)return Sd;wd=1;var n=jt();return n("search"),Sd}var Cd={},Rd;function TS(){if(Rd)return Cd;Rd=1;var n=jt();return n("species"),Cd}var Id={},Ad;function kS(){if(Ad)return Id;Ad=1;var n=jt();return n("split"),Id}var Td={},kd;function PS(){if(kd)return Td;kd=1;var n=jt();return n("toPrimitive"),Td}var Pd={},Fd;function FS(){if(Fd)return Pd;Fd=1;var n=jt();return n("toStringTag"),Pd}var Md={},Od;function MS(){if(Od)return Md;Od=1;var n=jt();return n("unscopables"),Md}var Ld={},ls,Dd;function tc(){if(Dd)return ls;Dd=1;var n=Ue();return ls=!n(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),ls}var cs,Nd;function ir(){if(Nd)return cs;Nd=1;var n=Tt(),e=pt(),t=Et(),r=vi(),i=tc(),a=r("IE_PROTO"),s=Object.prototype;return cs=i?Object.getPrototypeOf:function(l){var c=t(l);if(n(c,a))return c[a];var u=c.constructor;return e(u)&&c instanceof u?u.prototype:c instanceof Object?s:null},cs}var us,qd;function e1(){if(qd)return us;qd=1;var n=pt();return us=function(e){if(typeof e=="object"||n(e))return e;throw TypeError("Can't set "+String(e)+" as a prototype")},us}var ds,Vd;function br(){if(Vd)return ds;Vd=1;var n=ut(),e=e1();return ds=Object.setPrototypeOf||("__proto__"in{}?(function(){var t=!1,r={},i;try{i=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,i.call(r,[]),t=r instanceof Array}catch{}return function(s,l){return n(s),e(l),t?i.call(s,l):s.__proto__=l,s}})():void 0),ds}var fs,Kd;function OS(){if(Kd)return fs;Kd=1;var n=ct(),e=$t();return fs=function(t,r){n(r)&&"cause"in r&&e(t,"cause",r.cause)},fs}var hs,Ud;function qn(){return Ud||(Ud=1,hs={}),hs}var _s,Bd;function rc(){if(Bd)return _s;Bd=1;var n=ft(),e=qn(),t=n("iterator"),r=Array.prototype;return _s=function(i){return i!==void 0&&(e.Array===i||r[t]===i)},_s}var ps,Xd;function Vn(){if(Xd)return ps;Xd=1;var n=Gr(),e=yr(),t=qn(),r=ft(),i=r("iterator");return ps=function(a){if(a!=null)return e(a,i)||e(a,"@@iterator")||t[n(a)]},ps}var vs,Hd;function gi(){if(Hd)return vs;Hd=1;var n=Qt(),e=ut(),t=Vn();return vs=function(r,i){var a=arguments.length<2?t(r):i;if(n(a))return e(a.call(r));throw TypeError(String(r)+" is not iterable")},vs}var gs,Qd;function t1(){if(Qd)return gs;Qd=1;var n=ut(),e=yr();return gs=function(t,r,i){var a,s;n(t);try{if(a=e(t,"return"),!a){if(r==="throw")throw i;return i}a=a.call(t)}catch(l){s=!0,a=l}if(r==="throw")throw i;if(s)throw a;return n(a),i},gs}var ms,jd;function Nr(){if(jd)return ms;jd=1;var n=ut(),e=rc(),t=kt(),r=Dr(),i=gi(),a=Vn(),s=t1(),l=function(c,u){this.stopped=c,this.result=u};return ms=function(c,u,f){var h=f&&f.that,p=!!(f&&f.AS_ENTRIES),_=!!(f&&f.IS_ITERATOR),g=!!(f&&f.INTERRUPTED),m=r(u,h,1+p+g),v,b,S,x,E,C,R,P=function(k){return v&&s(v,"normal",k),new l(!0,k)},F=function(k){return p?(n(k),g?m(k[0],k[1],P):m(k[0],k[1])):g?m(k,P):m(k)};if(_)v=c;else{if(b=a(c),!b)throw TypeError(String(c)+" is not iterable");if(e(b)){for(S=0,x=t(c);x>S;S++)if(E=F(c[S]),E&&E instanceof l)return E;return new l(!1)}v=i(c,b)}for(C=v.next;!(R=C.call(v)).done;){try{E=F(R.value)}catch(k){s(v,"throw",k)}if(typeof E=="object"&&E&&E instanceof l)return E}return new l(!1)},ms}var Wd;function LS(){if(Wd)return Ld;Wd=1;var n=Q(),e=ir(),t=br(),r=Yl(),i=lr(),a=$t(),s=gr(),l=OS(),c=Nr(),u=vt(),f=function(p,_){var g=this,m=arguments.length>2?arguments[2]:void 0;if(!(g instanceof f))return new f(p,_,m);t&&(g=t(new Error(void 0),e(g))),_!==void 0&&a(g,"message",u(_)),l(g,m);var v=[];return c(p,v.push,{that:v}),a(g,"errors",v),g};return t?t(f,Error):r(f,Error),f.prototype=i(Error.prototype,{constructor:s(1,f),message:s(1,""),name:s(1,"AggregateError")}),n({global:!0},{AggregateError:f}),Ld}var zd={},ys,Gd;function xr(){if(Gd)return ys;Gd=1;var n=ft(),e=lr(),t=xt(),r=n("unscopables"),i=Array.prototype;return i[r]==null&&t.f(i,r,{configurable:!0,value:e(null)}),ys=function(a){i[r][a]=!0},ys}var $d;function DS(){if($d)return zd;$d=1;var n=Q(),e=Et(),t=kt(),r=Kt(),i=xr();return n({target:"Array",proto:!0},{at:function(s){var l=e(this),c=t(l),u=r(s),f=u>=0?u:c+u;return f<0||f>=c?void 0:l[f]}}),i("at"),zd}var Yd={},bs,Zd;function $r(){if(Zd)return bs;Zd=1;var n=Mr(),e=xt(),t=gr();return bs=function(r,i,a){var s=n(i);s in r?e.f(r,s,t(0,a)):r[s]=a},bs}var xs,Jd;function Kn(){if(Jd)return xs;Jd=1;var n=Ue(),e=ft(),t=Fr(),r=e("species");return xs=function(i){return t>=51||!n(function(){var a=[],s=a.constructor={};return s[r]=function(){return{foo:1}},a[i](Boolean).foo!==1})},xs}var ef;function NS(){if(ef)return Yd;ef=1;var n=Q(),e=Ue(),t=zr(),r=ct(),i=Et(),a=kt(),s=$r(),l=Nn(),c=Kn(),u=ft(),f=Fr(),h=u("isConcatSpreadable"),p=9007199254740991,_="Maximum allowed index exceeded",g=f>=51||!e(function(){var S=[];return S[h]=!1,S.concat()[0]!==S}),m=c("concat"),v=function(S){if(!r(S))return!1;var x=S[h];return x!==void 0?!!x:t(S)},b=!g||!m;return n({target:"Array",proto:!0,forced:b},{concat:function(x){var E=i(this),C=l(E,0),R=0,P,F,k,q,ce;for(P=-1,k=arguments.length;Pp)throw TypeError(_);for(F=0;F=p)throw TypeError(_);s(C,R++,ce)}return C.length=R,C}}),Yd}var tf={},Es,rf;function r1(){if(rf)return Es;rf=1;var n=Et(),e=Or(),t=kt(),r=Math.min;return Es=[].copyWithin||function(a,s){var l=n(this),c=t(l),u=e(a,c),f=e(s,c),h=arguments.length>2?arguments[2]:void 0,p=r((h===void 0?c:e(h,c))-f,c-u),_=1;for(f0;)f in l?l[u]=l[f]:delete l[u],u+=_,f+=_;return l},Es}var nf;function qS(){if(nf)return tf;nf=1;var n=Q(),e=r1(),t=xr();return n({target:"Array",proto:!0},{copyWithin:e}),t("copyWithin"),tf}var af={},Ss,sf;function Er(){if(sf)return Ss;sf=1;var n=Ue();return Ss=function(e,t){var r=[][e];return!!r&&n(function(){r.call(null,t||function(){throw 1},1)})},Ss}var of;function VS(){if(of)return af;of=1;var n=Q(),e=Ut().every,t=Er(),r=t("every");return n({target:"Array",proto:!0,forced:!r},{every:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),af}var lf={},ws,cf;function nc(){if(cf)return ws;cf=1;var n=Et(),e=Or(),t=kt();return ws=function(i){for(var a=n(this),s=t(a),l=arguments.length,c=e(l>1?arguments[1]:void 0,s),u=l>2?arguments[2]:void 0,f=u===void 0?s:e(u,s);f>c;)a[c++]=i;return a},ws}var uf;function KS(){if(uf)return lf;uf=1;var n=Q(),e=nc(),t=xr();return n({target:"Array",proto:!0},{fill:e}),t("fill"),lf}var df={},ff;function US(){if(ff)return df;ff=1;var n=Q(),e=Ut().filter,t=Kn(),r=t("filter");return n({target:"Array",proto:!0,forced:!r},{filter:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),df}var hf={},_f;function BS(){if(_f)return hf;_f=1;var n=Q(),e=Ut().find,t=xr(),r="find",i=!0;return r in[]&&Array(1)[r](function(){i=!1}),n({target:"Array",proto:!0,forced:i},{find:function(s){return e(this,s,arguments.length>1?arguments[1]:void 0)}}),t(r),hf}var pf={},vf;function XS(){if(vf)return pf;vf=1;var n=Q(),e=Ut().findIndex,t=xr(),r="findIndex",i=!0;return r in[]&&Array(1)[r](function(){i=!1}),n({target:"Array",proto:!0,forced:i},{findIndex:function(s){return e(this,s,arguments.length>1?arguments[1]:void 0)}}),t(r),pf}var gf={},Cs,mf;function n1(){if(mf)return Cs;mf=1;var n=zr(),e=kt(),t=Dr(),r=function(i,a,s,l,c,u,f,h){for(var p=c,_=0,g=f?t(f,h,3):!1,m,v;_0&&n(m))v=e(m),p=r(i,a,m,v,p,u-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");i[p]=m}p++}_++}return p};return Cs=r,Cs}var yf;function HS(){if(yf)return gf;yf=1;var n=Q(),e=n1(),t=Et(),r=kt(),i=Kt(),a=Nn();return n({target:"Array",proto:!0},{flat:function(){var l=arguments.length?arguments[0]:void 0,c=t(this),u=r(c),f=a(c,0);return f.length=e(f,c,c,u,0,l===void 0?1:i(l)),f}}),gf}var bf={},xf;function QS(){if(xf)return bf;xf=1;var n=Q(),e=n1(),t=Qt(),r=Et(),i=kt(),a=Nn();return n({target:"Array",proto:!0},{flatMap:function(l){var c=r(this),u=i(c),f;return t(l),f=a(c,0),f.length=e(f,c,c,u,0,1,l,arguments.length>1?arguments[1]:void 0),f}}),bf}var Ef={},Rs,Sf;function i1(){if(Sf)return Rs;Sf=1;var n=Ut().forEach,e=Er(),t=e("forEach");return Rs=t?[].forEach:function(i){return n(this,i,arguments.length>1?arguments[1]:void 0)},Rs}var wf;function jS(){if(wf)return Ef;wf=1;var n=Q(),e=i1();return n({target:"Array",proto:!0,forced:[].forEach!=e},{forEach:e}),Ef}var Cf={},Is,Rf;function WS(){if(Rf)return Is;Rf=1;var n=ut(),e=t1();return Is=function(t,r,i,a){try{return a?r(n(i)[0],i[1]):r(i)}catch(s){e(t,"throw",s)}},Is}var As,If;function a1(){if(If)return As;If=1;var n=Dr(),e=Et(),t=WS(),r=rc(),i=Dn(),a=kt(),s=$r(),l=gi(),c=Vn();return As=function(f){var h=e(f),p=i(this),_=arguments.length,g=_>1?arguments[1]:void 0,m=g!==void 0;m&&(g=n(g,_>2?arguments[2]:void 0,2));var v=c(h),b=0,S,x,E,C,R,P;if(v&&!(this==Array&&r(v)))for(C=l(h,v),R=C.next,x=p?new this:[];!(E=R.call(C)).done;b++)P=m?t(C,g,[E.value,b],!0):E.value,s(x,b,P);else for(S=a(h),x=p?new this(S):Array(S);S>b;b++)P=m?g(h[b],b):h[b],s(x,b,P);return x.length=b,x},As}var Ts,Af;function mi(){if(Af)return Ts;Af=1;var n=ft(),e=n("iterator"),t=!1;try{var r=0,i={next:function(){return{done:!!r++}},return:function(){t=!0}};i[e]=function(){return this},Array.from(i,function(){throw 2})}catch{}return Ts=function(a,s){if(!s&&!t)return!1;var l=!1;try{var c={};c[e]=function(){return{next:function(){return{done:l=!0}}}},a(c)}catch{}return l},Ts}var Tf;function zS(){if(Tf)return Cf;Tf=1;var n=Q(),e=a1(),t=mi(),r=!t(function(i){Array.from(i)});return n({target:"Array",stat:!0,forced:r},{from:e}),Cf}var kf={},Pf;function GS(){if(Pf)return kf;Pf=1;var n=Q(),e=Mn().includes,t=xr();return n({target:"Array",proto:!0},{includes:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),t("includes"),kf}var Ff={},Mf;function $S(){if(Mf)return Ff;Mf=1;var n=Q(),e=Mn().indexOf,t=Er(),r=[].indexOf,i=!!r&&1/[1].indexOf(1,-0)<0,a=t("indexOf");return n({target:"Array",proto:!0,forced:i||!a},{indexOf:function(l){return i?r.apply(this,arguments)||0:e(this,l,arguments.length>1?arguments[1]:void 0)}}),Ff}var Of={},Lf;function YS(){if(Lf)return Of;Lf=1;var n=Q(),e=zr();return n({target:"Array",stat:!0},{isArray:e}),Of}var ks,Df;function s1(){if(Df)return ks;Df=1;var n=Ue(),e=pt(),t=lr(),r=ir(),i=Ft(),a=ft(),s=nr(),l=a("iterator"),c=!1,u,f,h;[].keys&&(h=[].keys(),"next"in h?(f=r(r(h)),f!==Object.prototype&&(u=f)):c=!0);var p=u==null||n(function(){var _={};return u[l].call(_)!==_});return p?u={}:s&&(u=t(u)),e(u[l])||i(u,l,function(){return this}),ks={IteratorPrototype:u,BUGGY_SAFARI_ITERATORS:c},ks}var Ps,Nf;function ic(){if(Nf)return Ps;Nf=1;var n=s1().IteratorPrototype,e=lr(),t=gr(),r=cr(),i=qn(),a=function(){return this};return Ps=function(s,l,c){var u=l+" Iterator";return s.prototype=e(n,{next:t(1,c)}),r(s,u,!1,!0),i[u]=a,s},Ps}var Fs,qf;function ac(){if(qf)return Fs;qf=1;var n=Q(),e=nr(),t=Wr(),r=pt(),i=ic(),a=ir(),s=br(),l=cr(),c=$t(),u=Ft(),f=ft(),h=qn(),p=s1(),_=t.PROPER,g=t.CONFIGURABLE,m=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,b=f("iterator"),S="keys",x="values",E="entries",C=function(){return this};return Fs=function(R,P,F,k,q,ce,j){i(F,P,k);var K=function(G){if(G===q&&Me)return Me;if(!v&&G in ge)return ge[G];switch(G){case S:return function(){return new F(this,G)};case x:return function(){return new F(this,G)};case E:return function(){return new F(this,G)}}return function(){return new F(this)}},ue=P+" Iterator",ve=!1,ge=R.prototype,ye=ge[b]||ge["@@iterator"]||q&&ge[q],Me=!v&&ye||K(q),X=P=="Array"&&ge.entries||ye,L,H,pe;if(X&&(L=a(X.call(new R)),L!==Object.prototype&&L.next&&(!e&&a(L)!==m&&(s?s(L,m):r(L[b])||u(L,b,C)),l(L,ue,!0,!0),e&&(h[ue]=C))),_&&q==x&&ye&&ye.name!==x&&(!e&&g?c(ge,"name",x):(ve=!0,Me=function(){return ye.call(this)})),q)if(H={values:K(x),keys:ce?Me:K(S),entries:K(E)},j)for(pe in H)(v||ve||!(pe in ge))&&u(ge,pe,H[pe]);else n({target:P,proto:!0,forced:v||ve},H);return(!e||j)&&ge[b]!==Me&&u(ge,b,Me,{name:q}),h[P]=Me,H},Fs}var Ms,Vf;function yi(){if(Vf)return Ms;Vf=1;var n=Gt(),e=xr(),t=qn(),r=Vt(),i=ac(),a="Array Iterator",s=r.set,l=r.getterFor(a);return Ms=i(Array,"Array",function(c,u){s(this,{type:a,target:n(c),index:0,kind:u})},function(){var c=l(this),u=c.target,f=c.kind,h=c.index++;return!u||h>=u.length?(c.target=void 0,{value:void 0,done:!0}):f=="keys"?{value:h,done:!1}:f=="values"?{value:u[h],done:!1}:{value:[h,u[h]],done:!1}},"values"),t.Arguments=t.Array,e("keys"),e("values"),e("entries"),Ms}var Kf={},Uf;function ZS(){if(Uf)return Kf;Uf=1;var n=Q(),e=Tn(),t=Gt(),r=Er(),i=[].join,a=e!=Object,s=r("join",",");return n({target:"Array",proto:!0,forced:a||!s},{join:function(c){return i.call(t(this),c===void 0?",":c)}}),Kf}var Bf={},Os,Xf;function o1(){if(Xf)return Os;Xf=1;var n=Gt(),e=Kt(),t=kt(),r=Er(),i=Math.min,a=[].lastIndexOf,s=!!a&&1/[1].lastIndexOf(1,-0)<0,l=r("lastIndexOf"),c=s||!l;return Os=c?function(f){if(s)return a.apply(this,arguments)||0;var h=n(this),p=t(h),_=p-1;for(arguments.length>1&&(_=i(_,e(arguments[1]))),_<0&&(_=p+_);_>=0;_--)if(_ in h&&h[_]===f)return _||0;return-1}:a,Os}var Hf;function JS(){if(Hf)return Bf;Hf=1;var n=Q(),e=o1();return n({target:"Array",proto:!0,forced:e!==[].lastIndexOf},{lastIndexOf:e}),Bf}var Qf={},jf;function ew(){if(jf)return Qf;jf=1;var n=Q(),e=Ut().map,t=Kn(),r=t("map");return n({target:"Array",proto:!0,forced:!r},{map:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),Qf}var Wf={},zf;function tw(){if(zf)return Wf;zf=1;var n=Q(),e=Ue(),t=Dn(),r=$r(),i=e(function(){function a(){}return!(Array.of.call(a)instanceof a)});return n({target:"Array",stat:!0,forced:i},{of:function(){for(var s=0,l=arguments.length,c=new(t(this)?this:Array)(l);l>s;)r(c,s,arguments[s++]);return c.length=l,c}}),Wf}var Gf={},Ls,$f;function bi(){if($f)return Ls;$f=1;var n=Qt(),e=Et(),t=Tn(),r=kt(),i=function(a){return function(s,l,c,u){n(l);var f=e(s),h=t(f),p=r(f),_=a?p-1:0,g=a?-1:1;if(c<2)for(;;){if(_ in h){u=h[_],_+=g;break}if(_+=g,a?_<0:p<=_)throw TypeError("Reduce of empty array with no initial value")}for(;a?_>=0:p>_;_+=g)_ in h&&(u=l(u,h[_],_,f));return u}};return Ls={left:i(!1),right:i(!0)},Ls}var Ds,Yf;function ln(){if(Yf)return Ds;Yf=1;var n=jr(),e=Ye();return Ds=n(e.process)=="process",Ds}var Zf;function rw(){if(Zf)return Gf;Zf=1;var n=Q(),e=bi().left,t=Er(),r=Fr(),i=ln(),a=t("reduce"),s=!i&&r>79&&r<83;return n({target:"Array",proto:!0,forced:!a||s},{reduce:function(c){return e(this,c,arguments.length,arguments.length>1?arguments[1]:void 0)}}),Gf}var Jf={},eh;function nw(){if(eh)return Jf;eh=1;var n=Q(),e=bi().right,t=Er(),r=Fr(),i=ln(),a=t("reduceRight"),s=!i&&r>79&&r<83;return n({target:"Array",proto:!0,forced:!a||s},{reduceRight:function(c){return e(this,c,arguments.length,arguments.length>1?arguments[1]:void 0)}}),Jf}var th={},rh;function iw(){if(rh)return th;rh=1;var n=Q(),e=zr(),t=[].reverse,r=[1,2];return n({target:"Array",proto:!0,forced:String(r)===String(r.reverse())},{reverse:function(){return e(this)&&(this.length=this.length),t.call(this)}}),th}var nh={},ih;function aw(){if(ih)return nh;ih=1;var n=Q(),e=zr(),t=Dn(),r=ct(),i=Or(),a=kt(),s=Gt(),l=$r(),c=ft(),u=Kn(),f=u("slice"),h=c("species"),p=[].slice,_=Math.max;return n({target:"Array",proto:!0,forced:!f},{slice:function(m,v){var b=s(this),S=a(b),x=i(m,S),E=i(v===void 0?S:v,S),C,R,P;if(e(b)&&(C=b.constructor,t(C)&&(C===Array||e(C.prototype))?C=void 0:r(C)&&(C=C[h],C===null&&(C=void 0)),C===Array||C===void 0))return p.call(b,x,E);for(R=new(C===void 0?Array:C)(_(E-x,0)),P=0;x1?arguments[1]:void 0)}}),ah}var oh={},Ns,lh;function l1(){if(lh)return Ns;lh=1;var n=Math.floor,e=function(i,a){var s=i.length,l=n(s/2);return s<8?t(i,a):r(e(i.slice(0,l),a),e(i.slice(l),a),a)},t=function(i,a){for(var s=i.length,l=1,c,u;l0;)i[u]=i[--u];u!==l++&&(i[u]=c)}return i},r=function(i,a,s){for(var l=i.length,c=a.length,u=0,f=0,h=[];u3)){if(u)return!0;if(h)return h<603;var E="",C,R,P,F;for(C=65;C<76;C++){switch(R=String.fromCharCode(C),C){case 66:case 69:case 70:case 72:P=3;break;case 68:case 71:P=4;break;default:P=2}for(F=0;F<47;F++)p.push({k:R+F,v:P})}for(p.sort(function(k,q){return q.v-k.v}),F=0;Fi(R)?1:-1}};return n({target:"Array",proto:!0,forced:S},{sort:function(C){C!==void 0&&e(C);var R=t(this);if(b)return C===void 0?_.call(R):_.call(R,C);var P=[],F=r(R),k,q;for(q=0;qh)throw TypeError(p);for(R=a(v,C),P=0;Pb-C+E;P--)delete v[P-1]}else if(E>C)for(P=b-C;P>S;P--)F=P+C-1,k=P+E-1,F in v?v[k]=v[F]:delete v[k];for(P=0;P>1,g=c===23?e(2,-24)-e(2,-77):0,m=l<0||l===0&&1/l<0?1:0,v=0,b,S,x;for(l=n(l),l!=l||l===1/0?(S=l!=l?1:0,b=p):(b=t(r(l)/i),l*(x=e(2,-b))<1&&(b--,x*=2),b+_>=1?l+=g/x:l+=g*e(2,1-_),l*x>=2&&(b++,x/=2),b+_>=p?(S=0,b=p):b+_>=1?(S=(l*x-1)*e(2,c),b=b+_):(S=l*e(2,_-1)*e(2,c),b=0));c>=8;f[v++]=S&255,S/=256,c-=8);for(b=b<0;f[v++]=b&255,b/=256,h-=8);return f[--v]|=m*128,f},s=function(l,c){var u=l.length,f=u*8-c-1,h=(1<>1,_=f-7,g=u-1,m=l[g--],v=m&127,b;for(m>>=7;_>0;v=v*256+l[g],g--,_-=8);for(b=v&(1<<-_)-1,v>>=-_,_+=c;_>0;b=b*256+l[g],g--,_-=8);if(v===0)v=1-p;else{if(v===h)return b?NaN:m?-1/0:1/0;b=b+e(2,c),v=v-p}return(m?-1:1)*b*e(2,v-c)};return js={pack:a,unpack:s},js}var Ws,Ah;function xi(){if(Ah)return Ws;Ah=1;var n=Ye(),e=dt(),t=oc(),r=Wr(),i=$t(),a=un(),s=Ue(),l=qr(),c=Kt(),u=Yt(),f=d1(),h=fw(),p=ir(),_=br(),g=Lr().f,m=xt().f,v=nc(),b=cr(),S=Vt(),x=r.PROPER,E=r.CONFIGURABLE,C=S.get,R=S.set,P="ArrayBuffer",F="DataView",k="prototype",q="Wrong length",ce="Wrong index",j=n[P],K=j,ue=n[F],ve=ue&&ue[k],ge=Object.prototype,ye=n.RangeError,Me=h.pack,X=h.unpack,L=function(ae){return[ae&255]},H=function(ae){return[ae&255,ae>>8&255]},pe=function(ae){return[ae&255,ae>>8&255,ae>>16&255,ae>>24&255]},G=function(ae){return ae[3]<<24|ae[2]<<16|ae[1]<<8|ae[0]},Se=function(ae){return Me(ae,23,4)},Te=function(ae){return Me(ae,52,8)},De=function(ae,le){m(ae[k],le,{get:function(){return C(this)[le]}})},Ae=function(ae,le,Ie,Ge){var tt=f(Ie),nt=C(ae);if(tt+le>nt.byteLength)throw ye(ce);var it=C(nt.buffer).bytes,Be=tt+nt.byteOffset,Ze=it.slice(Be,Be+le);return Ge?Ze:Ze.reverse()},ke=function(ae,le,Ie,Ge,tt,nt){var it=f(Ie),Be=C(ae);if(it+le>Be.byteLength)throw ye(ce);for(var Ze=C(Be.buffer).bytes,$e=it+Be.byteOffset,Ct=Ge(+tt),bt=0;bttt)throw ye("Wrong offset");if(Ge=Ge===void 0?tt-nt:u(Ge),nt+Ge>tt)throw ye(q);R(this,{buffer:le,byteLength:Ge,byteOffset:nt}),e||(this.buffer=le,this.byteLength=Ge,this.byteOffset=nt)},e&&(De(K,"byteLength"),De(ue,"buffer"),De(ue,"byteLength"),De(ue,"byteOffset")),a(ue[k],{getInt8:function(le){return Ae(this,1,le)[0]<<24>>24},getUint8:function(le){return Ae(this,1,le)[0]},getInt16:function(le){var Ie=Ae(this,2,le,arguments.length>1?arguments[1]:void 0);return(Ie[1]<<8|Ie[0])<<16>>16},getUint16:function(le){var Ie=Ae(this,2,le,arguments.length>1?arguments[1]:void 0);return Ie[1]<<8|Ie[0]},getInt32:function(le){return G(Ae(this,4,le,arguments.length>1?arguments[1]:void 0))},getUint32:function(le){return G(Ae(this,4,le,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(le){return X(Ae(this,4,le,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(le){return X(Ae(this,8,le,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(le,Ie){ke(this,1,le,L,Ie)},setUint8:function(le,Ie){ke(this,1,le,L,Ie)},setInt16:function(le,Ie){ke(this,2,le,H,Ie,arguments.length>2?arguments[2]:void 0)},setUint16:function(le,Ie){ke(this,2,le,H,Ie,arguments.length>2?arguments[2]:void 0)},setInt32:function(le,Ie){ke(this,4,le,pe,Ie,arguments.length>2?arguments[2]:void 0)},setUint32:function(le,Ie){ke(this,4,le,pe,Ie,arguments.length>2?arguments[2]:void 0)},setFloat32:function(le,Ie){ke(this,4,le,Se,Ie,arguments.length>2?arguments[2]:void 0)},setFloat64:function(le,Ie){ke(this,8,le,Te,Ie,arguments.length>2?arguments[2]:void 0)}});else{var st=x&&j.name!==P;if(!s(function(){j(1)})||!s(function(){new j(-1)})||s(function(){return new j,new j(1.5),new j(NaN),st&&!E})){K=function(le){return l(this,K),new j(f(le))};for(var et=K[k]=j[k],Ne=g(j),Pe=0,Fe;Ne.length>Pe;)(Fe=Ne[Pe++])in K||i(K,Fe,j[Fe]);et.constructor=K}else st&&E&&i(j,"name",P);_&&p(ve)!==ge&&_(ve,ge);var me=new ue(new K(2)),Oe=ve.setInt8;me.setInt8(0,2147483648),me.setInt8(1,2147483649),(me.getInt8(0)||!me.getInt8(1))&&a(ve,{setInt8:function(le,Ie){Oe.call(this,le,Ie<<24>>24)},setUint8:function(le,Ie){Oe.call(this,le,Ie<<24>>24)}},{unsafe:!0})}return b(K,P),b(ue,F),Ws={ArrayBuffer:K,DataView:ue},Ws}var Th;function hw(){if(Th)return Eh;Th=1;var n=Q(),e=Ye(),t=xi(),r=cn(),i="ArrayBuffer",a=t[i],s=e[i];return n({global:!0,forced:s!==a},{ArrayBuffer:a}),r(i),Eh}var kh={},zs,Ph;function _t(){if(Ph)return zs;Ph=1;var n=oc(),e=dt(),t=Ye(),r=pt(),i=ct(),a=Tt(),s=Gr(),l=Hl(),c=$t(),u=Ft(),f=xt().f,h=ir(),p=br(),_=ft(),g=Pn(),m=t.Int8Array,v=m&&m.prototype,b=t.Uint8ClampedArray,S=b&&b.prototype,x=m&&h(m),E=v&&h(v),C=Object.prototype,R=C.isPrototypeOf,P=_("toStringTag"),F=g("TYPED_ARRAY_TAG"),k=g("TYPED_ARRAY_CONSTRUCTOR"),q=n&&!!p&&s(t.opera)!=="Opera",ce=!1,j,K,ue,ve={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},ge={BigInt64Array:8,BigUint64Array:8},ye=function(Se){if(!i(Se))return!1;var Te=s(Se);return Te==="DataView"||a(ve,Te)||a(ge,Te)},Me=function(G){if(!i(G))return!1;var Se=s(G);return a(ve,Se)||a(ge,Se)},X=function(G){if(Me(G))return G;throw TypeError("Target is not a typed array")},L=function(G){if(r(G)&&(!p||R.call(x,G)))return G;throw TypeError(l(G)+" is not a typed array constructor")},H=function(G,Se,Te){if(e){if(Te)for(var De in ve){var Ae=t[De];if(Ae&&a(Ae.prototype,G))try{delete Ae.prototype[G]}catch{}}(!E[G]||Te)&&u(E,G,Te?Se:q&&v[G]||Se)}},pe=function(G,Se,Te){var De,Ae;if(e){if(p){if(Te){for(De in ve)if(Ae=t[De],Ae&&a(Ae,G))try{delete Ae[G]}catch{}}if(!x[G]||Te)try{return u(x,G,Te?Se:q&&x[G]||Se)}catch{}else return}for(De in ve)Ae=t[De],Ae&&(!Ae[G]||Te)&&u(Ae,G,Se)}};for(j in ve)K=t[j],ue=K&&K.prototype,ue?c(ue,k,K):q=!1;for(j in ge)K=t[j],ue=K&&K.prototype,ue&&c(ue,k,K);if((!q||!r(x)||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},q))for(j in ve)t[j]&&p(t[j],x);if((!q||!E||E===C)&&(E=x.prototype,q))for(j in ve)t[j]&&p(t[j].prototype,E);if(q&&h(S)!==E&&p(S,E),e&&!a(E,P)){ce=!0,f(E,P,{get:function(){return i(this)?this[F]:void 0}});for(j in ve)t[j]&&c(t[j],F,j)}return zs={NATIVE_ARRAY_BUFFER_VIEWS:q,TYPED_ARRAY_CONSTRUCTOR:k,TYPED_ARRAY_TAG:ce&&F,aTypedArray:X,aTypedArrayConstructor:L,exportTypedArrayMethod:H,exportTypedArrayStaticMethod:pe,isView:ye,isTypedArray:Me,TypedArray:x,TypedArrayPrototype:E},zs}var Fh;function _w(){if(Fh)return kh;Fh=1;var n=Q(),e=_t(),t=e.NATIVE_ARRAY_BUFFER_VIEWS;return n({target:"ArrayBuffer",stat:!0,forced:!t},{isView:e.isView}),kh}var Mh={},Gs,Oh;function lc(){if(Oh)return Gs;Oh=1;var n=Dn(),e=Hl();return Gs=function(t){if(n(t))return t;throw TypeError(e(t)+" is not a constructor")},Gs}var $s,Lh;function dn(){if(Lh)return $s;Lh=1;var n=ut(),e=lc(),t=ft(),r=t("species");return $s=function(i,a){var s=n(i).constructor,l;return s===void 0||(l=n(s)[r])==null?a:e(l)},$s}var Dh;function pw(){if(Dh)return Mh;Dh=1;var n=Q(),e=Ue(),t=xi(),r=ut(),i=Or(),a=Yt(),s=dn(),l=t.ArrayBuffer,c=t.DataView,u=l.prototype.slice,f=e(function(){return!new l(2).slice(1,void 0).byteLength});return n({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:f},{slice:function(p,_){if(u!==void 0&&_===void 0)return u.call(r(this),p);for(var g=r(this).byteLength,m=i(p,g),v=i(_===void 0?g:_,g),b=new(s(this,l))(a(v-m)),S=new c(this),x=new c(b),E=0;m0;(l>>>=1)&&(a+=a))l&1&&(s+=a);return s},Ys}var Zs,Gh;function uc(){if(Gh)return Zs;Gh=1;var n=Yt(),e=vt(),t=cc(),r=Dt(),i=Math.ceil,a=function(s){return function(l,c,u){var f=e(r(l)),h=n(c),p=f.length,_=u===void 0?" ":e(u),g,m;return h<=p||_==""?f:(g=h-p,m=t.call(_,i(g/_.length)),m.length>g&&(m=m.slice(0,g)),s?f+m:m+f)}};return Zs={start:a(!1),end:a(!0)},Zs}var Js,$h;function xw(){if($h)return Js;$h=1;var n=Ue(),e=uc().start,t=Math.abs,r=Date.prototype,i=r.getTime,a=r.toISOString;return Js=n(function(){return a.call(new Date(-5e13-1))!="0385-07-25T07:06:39.999Z"})||!n(function(){a.call(new Date(NaN))})?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var l=this,c=l.getUTCFullYear(),u=l.getUTCMilliseconds(),f=c<0?"-":c>9999?"+":"";return f+e(t(c),f?6:4,0)+"-"+e(l.getUTCMonth()+1,2,0)+"-"+e(l.getUTCDate(),2,0)+"T"+e(l.getUTCHours(),2,0)+":"+e(l.getUTCMinutes(),2,0)+":"+e(l.getUTCSeconds(),2,0)+"."+e(u,3,0)+"Z"}:a,Js}var Yh;function Ew(){if(Yh)return Wh;Yh=1;var n=Q(),e=xw();return n({target:"Date",proto:!0,forced:Date.prototype.toISOString!==e},{toISOString:e}),Wh}var Zh={},Jh;function Sw(){if(Jh)return Zh;Jh=1;var n=Q(),e=Ue(),t=Et(),r=Wl(),i=e(function(){return new Date(NaN).toJSON()!==null||Date.prototype.toJSON.call({toISOString:function(){return 1}})!==1});return n({target:"Date",proto:!0,forced:i},{toJSON:function(s){var l=t(this),c=r(l,"number");return typeof c=="number"&&!isFinite(c)?null:l.toISOString()}}),Zh}var e_={},eo,t_;function ww(){if(t_)return eo;t_=1;var n=ut(),e=Wx();return eo=function(t){if(n(this),t==="string"||t==="default")t="string";else if(t!=="number")throw TypeError("Incorrect hint");return e(this,t)},eo}var r_;function Cw(){if(r_)return e_;r_=1;var n=Ft(),e=ww(),t=ft(),r=t("toPrimitive"),i=Date.prototype;return r in i||n(i,r,e),e_}var n_={},i_;function Rw(){if(i_)return n_;i_=1;var n=Ft(),e=Date.prototype,t="Invalid Date",r="toString",i=e[r],a=e.getTime;return String(new Date(NaN))!=t&&n(e,r,function(){var l=a.call(this);return l===l?i.call(this):t}),n_}var a_={},s_;function Iw(){if(s_)return a_;s_=1;var n=Q(),e=vt(),t=/[\w*+\-./@]/,r=function(i,a){for(var s=i.toString(16);s.length1?arguments[1]:void 0,3),k;k=k?k.next:P.first;)for(F(k.value,k.key,this);k&&k.removed;)k=k.previous},has:function(R){return!!E(this,R)}}),t(b.prototype,m?{get:function(R){var P=E(this,R);return P&&P.value},set:function(R,P){return x(this,R===0?0:R,P)}}:{add:function(R){return x(this,R=R===0?0:R,R)}}),c&&n(b.prototype,"size",{get:function(){return S(this).size}}),b},setStrong:function(_,g,m){var v=g+" Iterator",b=p(g),S=p(v);s(_,g,function(x,E){h(this,{type:v,target:x,state:b(x),kind:E,last:void 0})},function(){for(var x=S(this),E=x.kind,C=x.last;C&&C.removed;)C=C.previous;return!x.target||!(x.last=C=C?C.next:x.state.first)?(x.target=void 0,{value:void 0,done:!0}):E=="keys"?{value:C.key,done:!1}:E=="values"?{value:C.value,done:!1}:{value:[C.key,C.value],done:!1}},m?"entries":"values",!m,!0),l(g)}},so}var oo,C_;function Ow(){if(C_)return oo;C_=1;var n=Si(),e=h1();return oo=n("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},e),oo}var R_={},lo,I_;function _1(){if(I_)return lo;I_=1;var n=Math.log;return lo=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:n(1+t)},lo}var A_;function Lw(){if(A_)return R_;A_=1;var n=Q(),e=_1(),t=Math.acosh,r=Math.log,i=Math.sqrt,a=Math.LN2,s=!t||Math.floor(t(Number.MAX_VALUE))!=710||t(1/0)!=1/0;return n({target:"Math",stat:!0,forced:s},{acosh:function(c){return(c=+c)<1?NaN:c>9490626562425156e-8?r(c)+a:e(c-1+i(c-1)*i(c+1))}}),R_}var T_={},k_;function Dw(){if(k_)return T_;k_=1;var n=Q(),e=Math.asinh,t=Math.log,r=Math.sqrt;function i(a){return!isFinite(a=+a)||a==0?a:a<0?-i(-a):t(a+r(a*a+1))}return n({target:"Math",stat:!0,forced:!(e&&1/e(0)>0)},{asinh:i}),T_}var P_={},F_;function Nw(){if(F_)return P_;F_=1;var n=Q(),e=Math.atanh,t=Math.log;return n({target:"Math",stat:!0,forced:!(e&&1/e(-0)<0)},{atanh:function(i){return(i=+i)==0?i:t((1+i)/(1-i))/2}}),P_}var M_={},co,O_;function dc(){return O_||(O_=1,co=Math.sign||function(e){return(e=+e)==0||e!=e?e:e<0?-1:1}),co}var L_;function qw(){if(L_)return M_;L_=1;var n=Q(),e=dc(),t=Math.abs,r=Math.pow;return n({target:"Math",stat:!0},{cbrt:function(a){return e(a=+a)*r(t(a),1/3)}}),M_}var D_={},N_;function Vw(){if(N_)return D_;N_=1;var n=Q(),e=Math.floor,t=Math.log,r=Math.LOG2E;return n({target:"Math",stat:!0},{clz32:function(a){return(a>>>=0)?31-e(t(a+.5)*r):32}}),D_}var q_={},uo,V_;function wi(){if(V_)return uo;V_=1;var n=Math.expm1,e=Math.exp;return uo=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||n(-2e-17)!=-2e-17?function(r){return(r=+r)==0?r:r>-1e-6&&r<1e-6?r+r*r/2:e(r)-1}:n,uo}var K_;function Kw(){if(K_)return q_;K_=1;var n=Q(),e=wi(),t=Math.cosh,r=Math.abs,i=Math.E;return n({target:"Math",stat:!0,forced:!t||t(710)===1/0},{cosh:function(s){var l=e(r(s)-1)+1;return(l+1/(l*i*i))*(i/2)}}),q_}var U_={},B_;function Uw(){if(B_)return U_;B_=1;var n=Q(),e=wi();return n({target:"Math",stat:!0,forced:e!=Math.expm1},{expm1:e}),U_}var X_={},fo,H_;function Bw(){if(H_)return fo;H_=1;var n=dc(),e=Math.abs,t=Math.pow,r=t(2,-52),i=t(2,-23),a=t(2,127)*(2-i),s=t(2,-126),l=function(c){return c+1/r-1/r};return fo=Math.fround||function(u){var f=e(u),h=n(u),p,_;return fa||_!=_?h*(1/0):h*_)},fo}var Q_;function Xw(){if(Q_)return X_;Q_=1;var n=Q(),e=Bw();return n({target:"Math",stat:!0},{fround:e}),X_}var j_={},W_;function Hw(){if(W_)return j_;W_=1;var n=Q(),e=Math.hypot,t=Math.abs,r=Math.sqrt,i=!!e&&e(1/0,NaN)!==1/0;return n({target:"Math",stat:!0,forced:i},{hypot:function(s,l){for(var c=0,u=0,f=arguments.length,h=0,p,_;u0?(_=p/h,c+=_*_):c+=p;return h===1/0?1/0:h*r(c)}}),j_}var z_={},G_;function Qw(){if(G_)return z_;G_=1;var n=Q(),e=Ue(),t=Math.imul,r=e(function(){return t(4294967295,5)!=-5||t.length!=2});return n({target:"Math",stat:!0,forced:r},{imul:function(a,s){var l=65535,c=+a,u=+s,f=l&c,h=l&u;return 0|f*h+((l&c>>>16)*h+f*(l&u>>>16)<<16>>>0)}}),z_}var $_={},Y_;function jw(){if(Y_)return $_;Y_=1;var n=Q(),e=Math.log,t=Math.LOG10E;return n({target:"Math",stat:!0},{log10:function(i){return e(i)*t}}),$_}var Z_={},J_;function Ww(){if(J_)return Z_;J_=1;var n=Q(),e=_1();return n({target:"Math",stat:!0},{log1p:e}),Z_}var ep={},tp;function zw(){if(tp)return ep;tp=1;var n=Q(),e=Math.log,t=Math.LN2;return n({target:"Math",stat:!0},{log2:function(i){return e(i)/t}}),ep}var rp={},np;function Gw(){if(np)return rp;np=1;var n=Q(),e=dc();return n({target:"Math",stat:!0},{sign:e}),rp}var ip={},ap;function $w(){if(ap)return ip;ap=1;var n=Q(),e=Ue(),t=wi(),r=Math.abs,i=Math.exp,a=Math.E,s=e(function(){return Math.sinh(-2e-17)!=-2e-17});return n({target:"Math",stat:!0,forced:s},{sinh:function(c){return r(c=+c)<1?(t(c)-t(-c))/2:(i(c-1)-i(-c-1))*(a/2)}}),ip}var sp={},op;function Yw(){if(op)return sp;op=1;var n=Q(),e=wi(),t=Math.exp;return n({target:"Math",stat:!0},{tanh:function(i){var a=e(i=+i),s=e(-i);return a==1/0?1:s==1/0?-1:(a-s)/(t(i)+t(-i))}}),sp}var lp={},cp;function Zw(){if(cp)return lp;cp=1;var n=cr();return n(Math,"Math",!0),lp}var up={},dp;function Jw(){if(dp)return up;dp=1;var n=Q(),e=Math.ceil,t=Math.floor;return n({target:"Math",stat:!0},{trunc:function(i){return(i>0?t:e)(i)}}),up}var fp={},ho,hp;function fc(){if(hp)return ho;hp=1;var n=1 .valueOf;return ho=function(e){return n.call(e)},ho}var _o,_p;function Ci(){return _p||(_p=1,_o=` +\v\f\r                 \u2028\u2029\uFEFF`),_o}var po,pp;function fn(){if(pp)return po;pp=1;var n=Dt(),e=vt(),t=Ci(),r="["+t+"]",i=RegExp("^"+r+r+"*"),a=RegExp(r+r+"*$"),s=function(l){return function(c){var u=e(n(c));return l&1&&(u=u.replace(i,"")),l&2&&(u=u.replace(a,"")),u}};return po={start:s(1),end:s(2),trim:s(3)},po}var vp;function eC(){if(vp)return fp;vp=1;var n=dt(),e=Ye(),t=On(),r=Ft(),i=Tt(),a=Ei(),s=kn(),l=Wl(),c=Ue(),u=Lr().f,f=Bt().f,h=xt().f,p=fc(),_=fn().trim,g="Number",m=e[g],v=m.prototype,b=function(P){var F=l(P,"number");return typeof F=="bigint"?F:S(F)},S=function(P){var F=l(P,"number"),k,q,ce,j,K,ue,ve,ge;if(s(F))throw TypeError("Cannot convert a Symbol value to a number");if(typeof F=="string"&&F.length>2){if(F=_(F),k=F.charCodeAt(0),k===43||k===45){if(q=F.charCodeAt(2),q===88||q===120)return NaN}else if(k===48){switch(F.charCodeAt(1)){case 66:case 98:ce=2,j=49;break;case 79:case 111:ce=8,j=55;break;default:return+F}for(K=F.slice(2),ue=K.length,ve=0;vej)return NaN;return parseInt(K,ce)}}return+F};if(t(g,!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var x=function(F){var k=arguments.length<1?0:m(b(F)),q=this;return q instanceof x&&c(function(){p(q)})?a(Object(k),q,x):k},E=n?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),C=0,R;E.length>C;C++)i(m,R=E[C])&&!i(x,R)&&h(x,R,f(m,R));x.prototype=v,v.constructor=x,r(e,g,x)}return fp}var gp={},mp;function tC(){if(mp)return gp;mp=1;var n=Q();return n({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)}),gp}var yp={},vo,bp;function rC(){if(bp)return vo;bp=1;var n=Ye(),e=n.isFinite;return vo=Number.isFinite||function(r){return typeof r=="number"&&e(r)},vo}var xp;function nC(){if(xp)return yp;xp=1;var n=Q(),e=rC();return n({target:"Number",stat:!0},{isFinite:e}),yp}var Ep={},go,Sp;function hc(){if(Sp)return go;Sp=1;var n=ct(),e=Math.floor;return go=Number.isInteger||function(r){return!n(r)&&isFinite(r)&&e(r)===r},go}var wp;function iC(){if(wp)return Ep;wp=1;var n=Q(),e=hc();return n({target:"Number",stat:!0},{isInteger:e}),Ep}var Cp={},Rp;function aC(){if(Rp)return Cp;Rp=1;var n=Q();return n({target:"Number",stat:!0},{isNaN:function(t){return t!=t}}),Cp}var Ip={},Ap;function sC(){if(Ap)return Ip;Ap=1;var n=Q(),e=hc(),t=Math.abs;return n({target:"Number",stat:!0},{isSafeInteger:function(i){return e(i)&&t(i)<=9007199254740991}}),Ip}var Tp={},kp;function oC(){if(kp)return Tp;kp=1;var n=Q();return n({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Tp}var Pp={},Fp;function lC(){if(Fp)return Pp;Fp=1;var n=Q();return n({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991}),Pp}var Mp={},mo,Op;function p1(){if(Op)return mo;Op=1;var n=Ye(),e=Ue(),t=vt(),r=fn().trim,i=Ci(),a=n.parseFloat,s=n.Symbol,l=s&&s.iterator,c=1/a(i+"-0")!==-1/0||l&&!e(function(){a(Object(l))});return mo=c?function(f){var h=r(t(f)),p=a(h);return p===0&&h.charAt(0)=="-"?-0:p}:a,mo}var Lp;function cC(){if(Lp)return Mp;Lp=1;var n=Q(),e=p1();return n({target:"Number",stat:!0,forced:Number.parseFloat!=e},{parseFloat:e}),Mp}var Dp={},yo,Np;function v1(){if(Np)return yo;Np=1;var n=Ye(),e=Ue(),t=vt(),r=fn().trim,i=Ci(),a=n.parseInt,s=n.Symbol,l=s&&s.iterator,c=/^[+-]?0x/i,u=a(i+"08")!==8||a(i+"0x16")!==22||l&&!e(function(){a(Object(l))});return yo=u?function(h,p){var _=r(t(h));return a(_,p>>>0||(c.test(_)?16:10))}:a,yo}var qp;function uC(){if(qp)return Dp;qp=1;var n=Q(),e=v1();return n({target:"Number",stat:!0,forced:Number.parseInt!=e},{parseInt:e}),Dp}var Vp={},Kp;function dC(){if(Kp)return Vp;Kp=1;var n=Q(),e=Kt(),t=fc(),r=cc(),i=Ue(),a=1 .toFixed,s=Math.floor,l=function(_,g,m){return g===0?m:g%2===1?l(_,g-1,m*_):l(_*_,g/2,m)},c=function(_){for(var g=0,m=_;m>=4096;)g+=12,m/=4096;for(;m>=2;)g+=1,m/=2;return g},u=function(_,g,m){for(var v=-1,b=m;++v<6;)b+=g*_[v],_[v]=b%1e7,b=s(b/1e7)},f=function(_,g){for(var m=6,v=0;--m>=0;)v+=_[m],_[m]=s(v/g),v=v%g*1e7},h=function(_){for(var g=6,m="";--g>=0;)if(m!==""||g===0||_[g]!==0){var v=String(_[g]);m=m===""?v:m+r.call("0",7-v.length)+v}return m},p=a&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128")||!i(function(){a.call({})});return n({target:"Number",proto:!0,forced:p},{toFixed:function(g){var m=t(this),v=e(g),b=[0,0,0,0,0,0],S="",x="0",E,C,R,P;if(v<0||v>20)throw RangeError("Incorrect fraction digits");if(m!=m)return"NaN";if(m<=-1e21||m>=1e21)return String(m);if(m<0&&(S="-",m=-m),m>1e-21)if(E=c(m*l(2,69,1))-69,C=E<0?m*l(2,-E,1):m/l(2,E,1),C*=4503599627370496,E=52-E,E>0){for(u(b,0,C),R=v;R>=7;)u(b,1e7,0),R-=7;for(u(b,l(10,R,1),0),R=E-1;R>=23;)f(b,1<<23),R-=23;f(b,1<0?(P=x.length,x=S+(P<=v?"0."+r.call("0",v-P)+x:x.slice(0,P-v)+"."+x.slice(P-v))):x=S+x,x}}),Vp}var Up={},Bp;function fC(){if(Bp)return Up;Bp=1;var n=Q(),e=Ue(),t=fc(),r=1 .toPrecision,i=e(function(){return r.call(1,void 0)!=="1"})||!e(function(){r.call({})});return n({target:"Number",proto:!0,forced:i},{toPrecision:function(s){return s===void 0?r.call(t(this)):r.call(t(this),s)}}),Up}var Xp={},bo,Hp;function g1(){if(Hp)return bo;Hp=1;var n=dt(),e=Ue(),t=Ln(),r=Gl(),i=fi(),a=Et(),s=Tn(),l=Object.assign,c=Object.defineProperty;return bo=!l||e(function(){if(n&&l({b:1},l(c({},"a",{enumerable:!0,get:function(){c(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var u={},f={},h=Symbol(),p="abcdefghijklmnopqrst";return u[h]=7,p.split("").forEach(function(_){f[_]=_}),l({},u)[h]!=7||t(l({},f)).join("")!=p})?function(f,h){for(var p=a(f),_=arguments.length,g=1,m=r.f,v=i.f;_>g;)for(var b=s(arguments[g++]),S=m?t(b).concat(m(b)):t(b),x=S.length,E=0,C;x>E;)C=S[E++],(!n||v.call(b,C))&&(p[C]=b[C]);return p}:l,bo}var Qp;function hC(){if(Qp)return Xp;Qp=1;var n=Q(),e=g1();return n({target:"Object",stat:!0,forced:Object.assign!==e},{assign:e}),Xp}var jp={},Wp;function _C(){if(Wp)return jp;Wp=1;var n=Q(),e=dt(),t=lr();return n({target:"Object",stat:!0,sham:!e},{create:t}),jp}var zp={},xo,Gp;function Ri(){if(Gp)return xo;Gp=1;var n=nr(),e=Ye(),t=Ue(),r=sc();return xo=n||!t(function(){if(!(r&&r<535)){var i=Math.random();__defineSetter__.call(null,i,function(){}),delete e[i]}}),xo}var $p;function pC(){if($p)return zp;$p=1;var n=Q(),e=dt(),t=Ri(),r=Qt(),i=Et(),a=xt();return e&&n({target:"Object",proto:!0,forced:t},{__defineGetter__:function(l,c){a.f(i(this),l,{get:r(c),enumerable:!0,configurable:!0})}}),zp}var Yp={},Zp;function vC(){if(Zp)return Yp;Zp=1;var n=Q(),e=dt(),t=Jl();return n({target:"Object",stat:!0,forced:!e,sham:!e},{defineProperties:t}),Yp}var Jp={},ev;function gC(){if(ev)return Jp;ev=1;var n=Q(),e=dt(),t=xt();return n({target:"Object",stat:!0,forced:!e,sham:!e},{defineProperty:t.f}),Jp}var tv={},rv;function mC(){if(rv)return tv;rv=1;var n=Q(),e=dt(),t=Ri(),r=Qt(),i=Et(),a=xt();return e&&n({target:"Object",proto:!0,forced:t},{__defineSetter__:function(l,c){a.f(i(this),l,{set:r(c),enumerable:!0,configurable:!0})}}),tv}var nv={},Eo,iv;function m1(){if(iv)return Eo;iv=1;var n=dt(),e=Ln(),t=Gt(),r=fi().f,i=function(a){return function(s){for(var l=t(s),c=e(l),u=c.length,f=0,h=[],p;u>f;)p=c[f++],(!n||r.call(l,p))&&h.push(a?[p,l[p]]:l[p]);return h}};return Eo={entries:i(!0),values:i(!1)},Eo}var av;function yC(){if(av)return nv;av=1;var n=Q(),e=m1().entries;return n({target:"Object",stat:!0},{entries:function(r){return e(r)}}),nv}var sv={},ov;function bC(){if(ov)return sv;ov=1;var n=Q(),e=Un(),t=Ue(),r=ct(),i=Yr().onFreeze,a=Object.freeze,s=t(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!e},{freeze:function(c){return a&&r(c)?a(i(c)):c}}),sv}var lv={},cv;function xC(){if(cv)return lv;cv=1;var n=Q(),e=Nr(),t=$r();return n({target:"Object",stat:!0},{fromEntries:function(i){var a={};return e(i,function(s,l){t(a,s,l)},{AS_ENTRIES:!0}),a}}),lv}var uv={},dv;function EC(){if(dv)return uv;dv=1;var n=Q(),e=Ue(),t=Gt(),r=Bt().f,i=dt(),a=e(function(){r(1)}),s=!i||a;return n({target:"Object",stat:!0,forced:s,sham:!i},{getOwnPropertyDescriptor:function(c,u){return r(t(c),u)}}),uv}var fv={},hv;function SC(){if(hv)return fv;hv=1;var n=Q(),e=dt(),t=$l(),r=Gt(),i=Bt(),a=$r();return n({target:"Object",stat:!0,sham:!e},{getOwnPropertyDescriptors:function(l){for(var c=r(l),u=i.f,f=t(c),h={},p=0,_,g;f.length>p;)g=u(c,_=f[p++]),g!==void 0&&a(h,_,g);return h}}),fv}var _v={},pv;function wC(){if(pv)return _v;pv=1;var n=Q(),e=Ue(),t=ec().f,r=e(function(){return!Object.getOwnPropertyNames(1)});return n({target:"Object",stat:!0,forced:r},{getOwnPropertyNames:t}),_v}var vv={},gv;function CC(){if(gv)return vv;gv=1;var n=Q(),e=Ue(),t=Et(),r=ir(),i=tc(),a=e(function(){r(1)});return n({target:"Object",stat:!0,forced:a,sham:!i},{getPrototypeOf:function(l){return r(t(l))}}),vv}var mv={},yv;function RC(){if(yv)return mv;yv=1;var n=Q(),e=Tt();return n({target:"Object",stat:!0},{hasOwn:e}),mv}var bv={},So,xv;function y1(){return xv||(xv=1,So=Object.is||function(e,t){return e===t?e!==0||1/e===1/t:e!=e&&t!=t}),So}var Ev;function IC(){if(Ev)return bv;Ev=1;var n=Q(),e=y1();return n({target:"Object",stat:!0},{is:e}),bv}var Sv={},wv;function AC(){if(wv)return Sv;wv=1;var n=Q(),e=Ue(),t=ct(),r=Object.isExtensible,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isExtensible:function(s){return t(s)?r?r(s):!0:!1}}),Sv}var Cv={},Rv;function TC(){if(Rv)return Cv;Rv=1;var n=Q(),e=Ue(),t=ct(),r=Object.isFrozen,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isFrozen:function(s){return t(s)?r?r(s):!1:!0}}),Cv}var Iv={},Av;function kC(){if(Av)return Iv;Av=1;var n=Q(),e=Ue(),t=ct(),r=Object.isSealed,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isSealed:function(s){return t(s)?r?r(s):!1:!0}}),Iv}var Tv={},kv;function PC(){if(kv)return Tv;kv=1;var n=Q(),e=Et(),t=Ln(),r=Ue(),i=r(function(){t(1)});return n({target:"Object",stat:!0,forced:i},{keys:function(s){return t(e(s))}}),Tv}var Pv={},Fv;function FC(){if(Fv)return Pv;Fv=1;var n=Q(),e=dt(),t=Ri(),r=Et(),i=Mr(),a=ir(),s=Bt().f;return e&&n({target:"Object",proto:!0,forced:t},{__lookupGetter__:function(c){var u=r(this),f=i(c),h;do if(h=s(u,f))return h.get;while(u=a(u))}}),Pv}var Mv={},Ov;function MC(){if(Ov)return Mv;Ov=1;var n=Q(),e=dt(),t=Ri(),r=Et(),i=Mr(),a=ir(),s=Bt().f;return e&&n({target:"Object",proto:!0,forced:t},{__lookupSetter__:function(c){var u=r(this),f=i(c),h;do if(h=s(u,f))return h.set;while(u=a(u))}}),Mv}var Lv={},Dv;function OC(){if(Dv)return Lv;Dv=1;var n=Q(),e=ct(),t=Yr().onFreeze,r=Un(),i=Ue(),a=Object.preventExtensions,s=i(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!r},{preventExtensions:function(c){return a&&e(c)?a(t(c)):c}}),Lv}var Nv={},qv;function LC(){if(qv)return Nv;qv=1;var n=Q(),e=ct(),t=Yr().onFreeze,r=Un(),i=Ue(),a=Object.seal,s=i(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!r},{seal:function(c){return a&&e(c)?a(t(c)):c}}),Nv}var Vv={},Kv;function DC(){if(Kv)return Vv;Kv=1;var n=Q(),e=br();return n({target:"Object",stat:!0},{setPrototypeOf:e}),Vv}var Uv={},wo,Bv;function NC(){if(Bv)return wo;Bv=1;var n=Zl(),e=Gr();return wo=n?{}.toString:function(){return"[object "+e(this)+"]"},wo}var Xv;function qC(){if(Xv)return Uv;Xv=1;var n=Zl(),e=Ft(),t=NC();return n||e(Object.prototype,"toString",t,{unsafe:!0}),Uv}var Hv={},Qv;function VC(){if(Qv)return Hv;Qv=1;var n=Q(),e=m1().values;return n({target:"Object",stat:!0},{values:function(r){return e(r)}}),Hv}var jv={},Wv;function KC(){if(Wv)return jv;Wv=1;var n=Q(),e=p1();return n({global:!0,forced:parseFloat!=e},{parseFloat:e}),jv}var zv={},Gv;function UC(){if(Gv)return zv;Gv=1;var n=Q(),e=v1();return n({global:!0,forced:parseInt!=e},{parseInt:e}),zv}var $v={},Co,Yv;function b1(){if(Yv)return Co;Yv=1;var n=Ye();return Co=n.Promise,Co}var Ro,Zv;function x1(){if(Zv)return Ro;Zv=1;var n=mr();return Ro=/(?:ipad|iphone|ipod).*applewebkit/i.test(n),Ro}var Io,Jv;function _c(){if(Jv)return Io;Jv=1;var n=Ye(),e=pt(),t=Ue(),r=Dr(),i=Yx(),a=_i(),s=x1(),l=ln(),c=n.setImmediate,u=n.clearImmediate,f=n.process,h=n.MessageChannel,p=n.Dispatch,_=0,g={},m="onreadystatechange",v,b,S,x;try{v=n.location}catch{}var E=function(F){if(g.hasOwnProperty(F)){var k=g[F];delete g[F],k()}},C=function(F){return function(){E(F)}},R=function(F){E(F.data)},P=function(F){n.postMessage(String(F),v.protocol+"//"+v.host)};return(!c||!u)&&(c=function(k){for(var q=[],ce=arguments.length,j=1;ce>j;)q.push(arguments[j++]);return g[++_]=function(){(e(k)?k:Function(k)).apply(void 0,q)},b(_),_},u=function(k){delete g[k]},l?b=function(F){f.nextTick(C(F))}:p&&p.now?b=function(F){p.now(C(F))}:h&&!s?(S=new h,x=S.port2,S.port1.onmessage=R,b=r(x.postMessage,x,1)):n.addEventListener&&e(n.postMessage)&&!n.importScripts&&v&&v.protocol!=="file:"&&!t(P)?(b=P,n.addEventListener("message",R,!1)):m in a("script")?b=function(F){i.appendChild(a("script"))[m]=function(){i.removeChild(this),E(F)}}:b=function(F){setTimeout(C(F),0)}),Io={set:c,clear:u},Io}var Ao,eg;function BC(){if(eg)return Ao;eg=1;var n=mr(),e=Ye();return Ao=/ipad|iphone|ipod/i.test(n)&&e.Pebble!==void 0,Ao}var To,tg;function XC(){if(tg)return To;tg=1;var n=mr();return To=/web0s(?!.*chrome)/i.test(n),To}var ko,rg;function E1(){if(rg)return ko;rg=1;var n=Ye(),e=Bt().f,t=_c().set,r=x1(),i=BC(),a=XC(),s=ln(),l=n.MutationObserver||n.WebKitMutationObserver,c=n.document,u=n.process,f=n.Promise,h=e(n,"queueMicrotask"),p=h&&h.value,_,g,m,v,b,S,x,E;return p||(_=function(){var C,R;for(s&&(C=u.domain)&&C.exit();g;){R=g.fn,g=g.next;try{R()}catch(P){throw g?v():m=void 0,P}}m=void 0,C&&C.enter()},!r&&!s&&!a&&l&&c?(b=!0,S=c.createTextNode(""),new l(_).observe(S,{characterData:!0}),v=function(){S.data=b=!b}):!i&&f&&f.resolve?(x=f.resolve(void 0),x.constructor=f,E=x.then,v=function(){E.call(x,_)}):s?v=function(){u.nextTick(_)}:v=function(){t.call(n,_)}),ko=p||function(C){var R={fn:C,next:void 0};m&&(m.next=R),g||(g=R,v()),m=R},ko}var Po={},ng;function Ii(){if(ng)return Po;ng=1;var n=Qt(),e=function(t){var r,i;this.promise=new t(function(a,s){if(r!==void 0||i!==void 0)throw TypeError("Bad Promise constructor");r=a,i=s}),this.resolve=n(r),this.reject=n(i)};return Po.f=function(t){return new e(t)},Po}var Fo,ig;function S1(){if(ig)return Fo;ig=1;var n=ut(),e=ct(),t=Ii();return Fo=function(r,i){if(n(r),e(i)&&i.constructor===r)return i;var a=t.f(r),s=a.resolve;return s(i),a.promise},Fo}var Mo,ag;function HC(){if(ag)return Mo;ag=1;var n=Ye();return Mo=function(e,t){var r=n.console;r&&r.error&&(arguments.length===1?r.error(e):r.error(e,t))},Mo}var Oo,sg;function pc(){return sg||(sg=1,Oo=function(n){try{return{error:!1,value:n()}}catch(e){return{error:!0,value:e}}}),Oo}var Lo,og;function QC(){return og||(og=1,Lo=typeof window=="object"),Lo}var lg;function jC(){if(lg)return $v;lg=1;var n=Q(),e=nr(),t=Ye(),r=Ht(),i=b1(),a=Ft(),s=un(),l=br(),c=cr(),u=cn(),f=Qt(),h=pt(),p=ct(),_=qr(),g=pi(),m=Nr(),v=mi(),b=dn(),S=_c().set,x=E1(),E=S1(),C=HC(),R=Ii(),P=pc(),F=Vt(),k=On(),q=ft(),ce=QC(),j=ln(),K=Fr(),ue=q("species"),ve="Promise",ge=F.get,ye=F.set,Me=F.getterFor(ve),X=i&&i.prototype,L=i,H=X,pe=t.TypeError,G=t.document,Se=t.process,Te=R.f,De=Te,Ae=!!(G&&G.createEvent&&t.dispatchEvent),ke=h(t.PromiseRejectionEvent),st="unhandledrejection",et="rejectionhandled",Ne=0,Pe=1,Fe=2,me=1,Oe=2,ae=!1,le,Ie,Ge,tt,nt=k(ve,function(){var D=g(L),V=D!==String(L);if(!V&&K===66||e&&!H.finally)return!0;if(K>=51&&/native code/.test(D))return!1;var W=new L(function(y){y(1)}),A=function(y){y(function(){},function(){})},N=W.constructor={};return N[ue]=A,ae=W.then(function(){})instanceof A,ae?!V&&ce&&!ke:!0}),it=nt||!v(function(D){L.all(D).catch(function(){})}),Be=function(D){var V;return p(D)&&h(V=D.then)?V:!1},Ze=function(D,V){if(!D.notified){D.notified=!0;var W=D.reactions;x(function(){for(var A=D.value,N=D.state==Pe,y=0;W.length>y;){var _e=W[y++],Xe=N?_e.ok:_e.fail,xe=_e.resolve,ze=_e.reject,Re=_e.domain,Je,se,de;try{Xe?(N||(D.rejection===Oe&&Mt(D),D.rejection=me),Xe===!0?Je=A:(Re&&Re.enter(),Je=Xe(A),Re&&(Re.exit(),de=!0)),Je===_e.promise?ze(pe("Promise-chain cycle")):(se=Be(Je))?se.call(Je,xe,ze):xe(Je)):ze(A)}catch(Xt){Re&&!de&&Re.exit(),ze(Xt)}}D.reactions=[],D.notified=!1,V&&!D.rejection&&Ct(D)})}},$e=function(D,V,W){var A,N;Ae?(A=G.createEvent("Event"),A.promise=V,A.reason=W,A.initEvent(D,!1,!0),t.dispatchEvent(A)):A={promise:V,reason:W},!ke&&(N=t["on"+D])?N(A):D===st&&C("Unhandled promise rejection",W)},Ct=function(D){S.call(t,function(){var V=D.facade,W=D.value,A=bt(D),N;if(A&&(N=P(function(){j?Se.emit("unhandledRejection",W,V):$e(st,V,W)}),D.rejection=j||bt(D)?Oe:me,N.error))throw N.value})},bt=function(D){return D.rejection!==me&&!D.parent},Mt=function(D){S.call(t,function(){var V=D.facade;j?Se.emit("rejectionHandled",V):$e(et,V,D.value)})},w=function(D,V,W){return function(A){D(V,A,W)}},ee=function(D,V,W){D.done||(D.done=!0,W&&(D=W),D.value=V,D.state=Fe,Ze(D,!0))},he=function(D,V,W){if(!D.done){D.done=!0,W&&(D=W);try{if(D.facade===V)throw pe("Promise can't be resolved itself");var A=Be(V);A?x(function(){var N={done:!1};try{A.call(V,w(he,N,D),w(ee,N,D))}catch(y){ee(N,y,D)}}):(D.value=V,D.state=Pe,Ze(D,!1))}catch(N){ee({done:!1},N,D)}}};if(nt&&(L=function(V){_(this,L,ve),f(V),le.call(this);var W=ge(this);try{V(w(he,W),w(ee,W))}catch(A){ee(W,A)}},H=L.prototype,le=function(V){ye(this,{type:ve,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Ne,value:void 0})},le.prototype=s(H,{then:function(V,W){var A=Me(this),N=Te(b(this,L));return N.ok=h(V)?V:!0,N.fail=h(W)&&W,N.domain=j?Se.domain:void 0,A.parent=!0,A.reactions.push(N),A.state!=Ne&&Ze(A,!1),N.promise},catch:function(D){return this.then(void 0,D)}}),Ie=function(){var D=new le,V=ge(D);this.promise=D,this.resolve=w(he,V),this.reject=w(ee,V)},R.f=Te=function(D){return D===L||D===Ge?new Ie(D):De(D)},!e&&h(i)&&X!==Object.prototype)){tt=X.then,ae||(a(X,"then",function(V,W){var A=this;return new L(function(N,y){tt.call(A,N,y)}).then(V,W)},{unsafe:!0}),a(X,"catch",H.catch,{unsafe:!0}));try{delete X.constructor}catch{}l&&l(X,H)}return n({global:!0,wrap:!0,forced:nt},{Promise:L}),c(L,ve,!1,!0),u(ve),Ge=r(ve),n({target:ve,stat:!0,forced:nt},{reject:function(V){var W=Te(this);return W.reject.call(void 0,V),W.promise}}),n({target:ve,stat:!0,forced:e||nt},{resolve:function(V){return E(e&&this===Ge?L:this,V)}}),n({target:ve,stat:!0,forced:it},{all:function(V){var W=this,A=Te(W),N=A.resolve,y=A.reject,_e=P(function(){var Xe=f(W.resolve),xe=[],ze=0,Re=1;m(V,function(Je){var se=ze++,de=!1;xe.push(void 0),Re++,Xe.call(W,Je).then(function(Xt){de||(de=!0,xe[se]=Xt,--Re||N(xe))},y)}),--Re||N(xe)});return _e.error&&y(_e.value),A.promise},race:function(V){var W=this,A=Te(W),N=A.reject,y=P(function(){var _e=f(W.resolve);m(V,function(Xe){_e.call(W,Xe).then(A.resolve,N)})});return y.error&&N(y.value),A.promise}}),$v}var cg={},ug;function WC(){if(ug)return cg;ug=1;var n=Q(),e=Qt(),t=Ii(),r=pc(),i=Nr();return n({target:"Promise",stat:!0},{allSettled:function(s){var l=this,c=t.f(l),u=c.resolve,f=c.reject,h=r(function(){var p=e(l.resolve),_=[],g=0,m=1;i(s,function(v){var b=g++,S=!1;_.push(void 0),m++,p.call(l,v).then(function(x){S||(S=!0,_[b]={status:"fulfilled",value:x},--m||u(_))},function(x){S||(S=!0,_[b]={status:"rejected",reason:x},--m||u(_))})}),--m||u(_)});return h.error&&f(h.value),c.promise}}),cg}var dg={},fg;function zC(){if(fg)return dg;fg=1;var n=Q(),e=Qt(),t=Ht(),r=Ii(),i=pc(),a=Nr(),s="No one promise resolved";return n({target:"Promise",stat:!0},{any:function(c){var u=this,f=r.f(u),h=f.resolve,p=f.reject,_=i(function(){var g=e(u.resolve),m=[],v=0,b=1,S=!1;a(c,function(x){var E=v++,C=!1;m.push(void 0),b++,g.call(u,x).then(function(R){C||S||(S=!0,h(R))},function(R){C||S||(C=!0,m[E]=R,--b||p(new(t("AggregateError"))(m,s)))})}),--b||p(new(t("AggregateError"))(m,s))});return _.error&&p(_.value),f.promise}}),dg}var hg={},_g;function GC(){if(_g)return hg;_g=1;var n=Q(),e=nr(),t=b1(),r=Ue(),i=Ht(),a=pt(),s=dn(),l=S1(),c=Ft(),u=!!t&&r(function(){t.prototype.finally.call({then:function(){}},function(){})});if(n({target:"Promise",proto:!0,real:!0,forced:u},{finally:function(h){var p=s(this,i("Promise")),_=a(h);return this.then(_?function(g){return l(p,h()).then(function(){return g})}:h,_?function(g){return l(p,h()).then(function(){throw g})}:h)}}),!e&&a(t)){var f=i("Promise").prototype.finally;t.prototype.finally!==f&&c(t.prototype,"finally",f,{unsafe:!0})}return hg}var pg={},vg;function $C(){if(vg)return pg;vg=1;var n=Q(),e=Ht(),t=Qt(),r=ut(),i=Ue(),a=e("Reflect","apply"),s=Function.apply,l=!i(function(){a(function(){})});return n({target:"Reflect",stat:!0,forced:l},{apply:function(u,f,h){return t(u),r(h),a?a(u,f,h):s.call(u,f,h)}}),pg}var gg={},mg;function YC(){if(mg)return gg;mg=1;var n=Q(),e=Ht(),t=lc(),r=ut(),i=ct(),a=lr(),s=f1(),l=Ue(),c=e("Reflect","construct"),u=l(function(){function p(){}return!(c(function(){},[],p)instanceof p)}),f=!l(function(){c(function(){})}),h=u||f;return n({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(_,g){t(_),r(g);var m=arguments.length<3?_:t(arguments[2]);if(f&&!u)return c(_,g,m);if(_==m){switch(g.length){case 0:return new _;case 1:return new _(g[0]);case 2:return new _(g[0],g[1]);case 3:return new _(g[0],g[1],g[2]);case 4:return new _(g[0],g[1],g[2],g[3])}var v=[null];return v.push.apply(v,g),new(s.apply(_,v))}var b=m.prototype,S=a(i(b)?b:Object.prototype),x=Function.apply.call(_,S,g);return i(x)?x:S}}),gg}var yg={},bg;function ZC(){if(bg)return yg;bg=1;var n=Q(),e=dt(),t=ut(),r=Mr(),i=xt(),a=Ue(),s=a(function(){Reflect.defineProperty(i.f({},1,{value:1}),1,{value:2})});return n({target:"Reflect",stat:!0,forced:s,sham:!e},{defineProperty:function(c,u,f){t(c);var h=r(u);t(f);try{return i.f(c,h,f),!0}catch{return!1}}}),yg}var xg={},Eg;function JC(){if(Eg)return xg;Eg=1;var n=Q(),e=ut(),t=Bt().f;return n({target:"Reflect",stat:!0},{deleteProperty:function(i,a){var s=t(e(i),a);return s&&!s.configurable?!1:delete i[a]}}),xg}var Sg={},Do,wg;function w1(){if(wg)return Do;wg=1;var n=Tt();return Do=function(e){return e!==void 0&&(n(e,"value")||n(e,"writable"))},Do}var Cg;function eR(){if(Cg)return Sg;Cg=1;var n=Q(),e=ct(),t=ut(),r=w1(),i=Bt(),a=ir();function s(l,c){var u=arguments.length<3?l:arguments[2],f,h;if(t(l)===u)return l[c];if(f=i.f(l,c),f)return r(f)?f.value:f.get===void 0?void 0:f.get.call(u);if(e(h=a(l)))return s(h,c,u)}return n({target:"Reflect",stat:!0},{get:s}),Sg}var Rg={},Ig;function tR(){if(Ig)return Rg;Ig=1;var n=Q(),e=dt(),t=ut(),r=Bt();return n({target:"Reflect",stat:!0,sham:!e},{getOwnPropertyDescriptor:function(a,s){return r.f(t(a),s)}}),Rg}var Ag={},Tg;function rR(){if(Tg)return Ag;Tg=1;var n=Q(),e=ut(),t=ir(),r=tc();return n({target:"Reflect",stat:!0,sham:!r},{getPrototypeOf:function(a){return t(e(a))}}),Ag}var kg={},Pg;function nR(){if(Pg)return kg;Pg=1;var n=Q();return n({target:"Reflect",stat:!0},{has:function(t,r){return r in t}}),kg}var Fg={},Mg;function iR(){if(Mg)return Fg;Mg=1;var n=Q(),e=ut(),t=Object.isExtensible;return n({target:"Reflect",stat:!0},{isExtensible:function(i){return e(i),t?t(i):!0}}),Fg}var Og={},Lg;function aR(){if(Lg)return Og;Lg=1;var n=Q(),e=$l();return n({target:"Reflect",stat:!0},{ownKeys:e}),Og}var Dg={},Ng;function sR(){if(Ng)return Dg;Ng=1;var n=Q(),e=Ht(),t=ut(),r=Un();return n({target:"Reflect",stat:!0,sham:!r},{preventExtensions:function(a){t(a);try{var s=e("Object","preventExtensions");return s&&s(a),!0}catch{return!1}}}),Dg}var qg={},Vg;function oR(){if(Vg)return qg;Vg=1;var n=Q(),e=ut(),t=ct(),r=w1(),i=Ue(),a=xt(),s=Bt(),l=ir(),c=gr();function u(h,p,_){var g=arguments.length<4?h:arguments[3],m=s.f(e(h),p),v,b,S;if(!m){if(t(b=l(h)))return u(b,p,_,g);m=c(0)}if(r(m)){if(m.writable===!1||!t(g))return!1;if(v=s.f(g,p)){if(v.get||v.set||v.writable===!1)return!1;v.value=_,a.f(g,p,v)}else a.f(g,p,c(0,_))}else{if(S=m.set,S===void 0)return!1;S.call(g,_)}return!0}var f=i(function(){var h=function(){},p=a.f(new h,"a",{configurable:!0});return Reflect.set(h.prototype,"a",1,p)!==!1});return n({target:"Reflect",stat:!0,forced:f},{set:u}),qg}var Kg={},Ug;function lR(){if(Ug)return Kg;Ug=1;var n=Q(),e=ut(),t=e1(),r=br();return r&&n({target:"Reflect",stat:!0},{setPrototypeOf:function(a,s){e(a),t(s);try{return r(a,s),!0}catch{return!1}}}),Kg}var Bg={},Xg;function cR(){if(Xg)return Bg;Xg=1;var n=Q(),e=Ye(),t=cr();return n({global:!0},{Reflect:{}}),t(e.Reflect,"Reflect",!0),Bg}var Hg={},No,Qg;function Bn(){if(Qg)return No;Qg=1;var n=ct(),e=jr(),t=ft(),r=t("match");return No=function(i){var a;return n(i)&&((a=i[r])!==void 0?!!a:e(i)=="RegExp")},No}var qo,jg;function hn(){if(jg)return qo;jg=1;var n=ut();return qo=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},qo}var Qn={},Wg;function Ai(){if(Wg)return Qn;Wg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Qn.UNSUPPORTED_Y=n(function(){var r=t("a","y");return r.lastIndex=2,r.exec("abcd")!=null}),Qn.BROKEN_CARET=n(function(){var r=t("^r","gy");return r.lastIndex=2,r.exec("str")!=null}),Qn}var Vo,zg;function vc(){if(zg)return Vo;zg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Vo=n(function(){var r=t(".","s");return!(r.dotAll&&r.exec(` +`)&&r.flags==="s")}),Vo}var Ko,Gg;function C1(){if(Gg)return Ko;Gg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Ko=n(function(){var r=t("(?b)","g");return r.exec("b").groups.a!=="b"||"b".replace(r,"$c")!=="bc"}),Ko}var $g;function uR(){if($g)return Hg;$g=1;var n=dt(),e=Ye(),t=On(),r=Ei(),i=$t(),a=xt().f,s=Lr().f,l=Bn(),c=vt(),u=hn(),f=Ai(),h=Ft(),p=Ue(),_=Tt(),g=Vt().enforce,m=cn(),v=ft(),b=vc(),S=C1(),x=v("match"),E=e.RegExp,C=E.prototype,R=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,P=/a/g,F=/a/g,k=new E(P)!==P,q=f.UNSUPPORTED_Y,ce=n&&(!k||q||b||S||p(function(){return F[x]=!1,E(P)!=P||E(F)==F||E(P,"i")!="/a/i"})),j=function(Me){for(var X=Me.length,L=0,H="",pe=!1,G;L<=X;L++){if(G=Me.charAt(L),G==="\\"){H+=G+Me.charAt(++L);continue}!pe&&G==="."?H+="[\\s\\S]":(G==="["?pe=!0:G==="]"&&(pe=!1),H+=G)}return H},K=function(Me){for(var X=Me.length,L=0,H="",pe=[],G={},Se=!1,Te=!1,De=0,Ae="",ke;L<=X;L++){if(ke=Me.charAt(L),ke==="\\")ke=ke+Me.charAt(++L);else if(ke==="]")Se=!1;else if(!Se)switch(!0){case ke==="[":Se=!0;break;case ke==="(":R.test(Me.slice(L+1))&&(L+=2,Te=!0),H+=ke,De++;continue;case(ke===">"&&Te):if(Ae===""||_(G,Ae))throw new SyntaxError("Invalid capture group name");G[Ae]=!0,pe.push([Ae,De]),Te=!1,Ae="";continue}Te?Ae+=ke:H+=ke}return[H,pe]};if(t("RegExp",ce)){for(var ue=function(X,L){var H=this instanceof ue,pe=l(X),G=L===void 0,Se=[],Te=X,De,Ae,ke,st,et,Ne;if(!H&&pe&&G&&X.constructor===ue)return X;if((pe||X instanceof ue)&&(X=X.source,G&&(L="flags"in Te?Te.flags:u.call(Te))),X=X===void 0?"":c(X),L=L===void 0?"":c(L),Te=X,b&&"dotAll"in P&&(Ae=!!L&&L.indexOf("s")>-1,Ae&&(L=L.replace(/s/g,""))),De=L,q&&"sticky"in P&&(ke=!!L&&L.indexOf("y")>-1,ke&&(L=L.replace(/y/g,""))),S&&(st=K(X),X=st[0],Se=st[1]),et=r(E(X,L),H?this:C,ue),(Ae||ke||Se.length)&&(Ne=g(et),Ae&&(Ne.dotAll=!0,Ne.raw=ue(j(X),De)),ke&&(Ne.sticky=!0),Se.length&&(Ne.groups=Se)),X!==Te)try{i(et,"source",Te===""?"(?:)":Te)}catch{}return et},ve=function(Me){Me in ue||a(ue,Me,{configurable:!0,get:function(){return E[Me]},set:function(X){E[Me]=X}})},ge=s(E),ye=0;ge.length>ye;)ve(ge[ye++]);C.constructor=ue,ue.prototype=C,h(e,"RegExp",ue)}return m("RegExp"),Hg}var Yg={},Zg;function dR(){if(Zg)return Yg;Zg=1;var n=dt(),e=vc(),t=xt().f,r=Vt().get,i=RegExp.prototype;return n&&e&&t(i,"dotAll",{configurable:!0,get:function(){if(this!==i){if(this instanceof RegExp)return!!r(this).dotAll;throw TypeError("Incompatible receiver, RegExp required")}}}),Yg}var Jg={},Uo,e0;function Ti(){if(e0)return Uo;e0=1;var n=vt(),e=hn(),t=Ai(),r=hi(),i=lr(),a=Vt().get,s=vc(),l=C1(),c=RegExp.prototype.exec,u=r("native-string-replace",String.prototype.replace),f=c,h=(function(){var m=/a/,v=/b*/g;return c.call(m,"a"),c.call(v,"a"),m.lastIndex!==0||v.lastIndex!==0})(),p=t.UNSUPPORTED_Y||t.BROKEN_CARET,_=/()??/.exec("")[1]!==void 0,g=h||_||p||s||l;return g&&(f=function(v){var b=this,S=a(b),x=n(v),E=S.raw,C,R,P,F,k,q,ce;if(E)return E.lastIndex=b.lastIndex,C=f.call(E,x),b.lastIndex=E.lastIndex,C;var j=S.groups,K=p&&b.sticky,ue=e.call(b),ve=b.source,ge=0,ye=x;if(K&&(ue=ue.replace("y",""),ue.indexOf("g")===-1&&(ue+="g"),ye=x.slice(b.lastIndex),b.lastIndex>0&&(!b.multiline||b.multiline&&x.charAt(b.lastIndex-1)!==` +`)&&(ve="(?: "+ve+")",ye=" "+ye,ge++),R=new RegExp("^(?:"+ve+")",ue)),_&&(R=new RegExp("^"+ve+"$(?!\\s)",ue)),h&&(P=b.lastIndex),F=c.call(K?R:b,ye),K?F?(F.input=F.input.slice(ge),F[0]=F[0].slice(ge),F.index=b.lastIndex,b.lastIndex+=F[0].length):b.lastIndex=0:h&&F&&(b.lastIndex=b.global?F.index+F[0].length:P),_&&F&&F.length>1&&u.call(F[0],R,function(){for(k=1;k=0?f:u+f;return h<0||h>=u?void 0:c.charAt(h)}}),d0}var h0={},Xo,_0;function ki(){if(_0)return Xo;_0=1;var n=Kt(),e=vt(),t=Dt(),r=function(i){return function(a,s){var l=e(t(a)),c=n(s),u=l.length,f,h;return c<0||c>=u?i?"":void 0:(f=l.charCodeAt(c),f<55296||f>56319||c+1===u||(h=l.charCodeAt(c+1))<56320||h>57343?i?l.charAt(c):f:i?l.slice(c,c+2):(f-55296<<10)+(h-56320)+65536)}};return Xo={codeAt:r(!1),charAt:r(!0)},Xo}var p0;function mR(){if(p0)return h0;p0=1;var n=Q(),e=ki().codeAt;return n({target:"String",proto:!0},{codePointAt:function(r){return e(this,r)}}),h0}var v0={},Ho,g0;function mc(){if(g0)return Ho;g0=1;var n=Bn();return Ho=function(e){if(n(e))throw TypeError("The method doesn't accept regular expressions");return e},Ho}var Qo,m0;function yc(){if(m0)return Qo;m0=1;var n=ft(),e=n("match");return Qo=function(t){var r=/./;try{"/./"[t](r)}catch{try{return r[e]=!1,"/./"[t](r)}catch{}}return!1},Qo}var y0;function yR(){if(y0)return v0;y0=1;var n=Q(),e=Bt().f,t=Yt(),r=vt(),i=mc(),a=Dt(),s=yc(),l=nr(),c="".endsWith,u=Math.min,f=s("endsWith"),h=!l&&!f&&!!(function(){var p=e(String.prototype,"endsWith");return p&&!p.writable})();return n({target:"String",proto:!0,forced:!h&&!f},{endsWith:function(_){var g=r(a(this));i(_);var m=arguments.length>1?arguments[1]:void 0,v=g.length,b=m===void 0?v:u(t(m),v),S=r(_);return c?c.call(g,S,b):g.slice(b-S.length,b)===S}}),v0}var b0={},x0;function bR(){if(x0)return b0;x0=1;var n=Q(),e=Or(),t=String.fromCharCode,r=String.fromCodePoint,i=!!r&&r.length!=1;return n({target:"String",stat:!0,forced:i},{fromCodePoint:function(s){for(var l=[],c=arguments.length,u=0,f;c>u;){if(f=+arguments[u++],e(f,1114111)!==f)throw RangeError(f+" is not a valid code point");l.push(f<65536?t(f):t(((f-=65536)>>10)+55296,f%1024+56320))}return l.join("")}}),b0}var E0={},S0;function xR(){if(S0)return E0;S0=1;var n=Q(),e=mc(),t=Dt(),r=vt(),i=yc();return n({target:"String",proto:!0,forced:!i("includes")},{includes:function(s){return!!~r(t(this)).indexOf(r(e(s)),arguments.length>1?arguments[1]:void 0)}}),E0}var w0={},C0;function R1(){if(C0)return w0;C0=1;var n=ki().charAt,e=vt(),t=Vt(),r=ac(),i="String Iterator",a=t.set,s=t.getterFor(i);return r(String,"String",function(l){a(this,{type:i,string:e(l),index:0})},function(){var c=s(this),u=c.string,f=c.index,h;return f>=u.length?{value:void 0,done:!0}:(h=n(u,f),c.index+=h.length,{value:h,done:!1})}),w0}var R0={},jo,I0;function Pi(){if(I0)return jo;I0=1,gc();var n=Ft(),e=Ti(),t=Ue(),r=ft(),i=$t(),a=r("species"),s=RegExp.prototype;return jo=function(l,c,u,f){var h=r(l),p=!t(function(){var v={};return v[h]=function(){return 7},""[l](v)!=7}),_=p&&!t(function(){var v=!1,b=/a/;return l==="split"&&(b={},b.constructor={},b.constructor[a]=function(){return b},b.flags="",b[h]=/./[h]),b.exec=function(){return v=!0,null},b[h](""),!v});if(!p||!_||u){var g=/./[h],m=c(h,""[l],function(v,b,S,x,E){var C=b.exec;return C===e||C===s.exec?p&&!E?{done:!0,value:g.call(b,S,x)}:{done:!0,value:v.call(S,b,x)}:{done:!1}});n(String.prototype,l,m[0]),n(s,h,m[1])}f&&i(s[h],"sham",!0)},jo}var Wo,A0;function Fi(){if(A0)return Wo;A0=1;var n=ki().charAt;return Wo=function(e,t,r){return t+(r?n(e,t).length:1)},Wo}var zo,T0;function Xn(){if(T0)return zo;T0=1;var n=ut(),e=pt(),t=jr(),r=Ti();return zo=function(i,a){var s=i.exec;if(e(s)){var l=s.call(i,a);return l!==null&&n(l),l}if(t(i)==="RegExp")return r.call(i,a);throw TypeError("RegExp#exec called on incompatible receiver")},zo}var k0;function ER(){if(k0)return R0;k0=1;var n=Pi(),e=ut(),t=Yt(),r=vt(),i=Dt(),a=yr(),s=Fi(),l=Xn();return n("match",function(c,u,f){return[function(p){var _=i(this),g=p==null?void 0:a(p,c);return g?g.call(p,_):new RegExp(p)[c](r(_))},function(h){var p=e(this),_=r(h),g=f(u,p,_);if(g.done)return g.value;if(!p.global)return l(p,_);var m=p.unicode;p.lastIndex=0;for(var v=[],b=0,S;(S=l(p,_))!==null;){var x=r(S[0]);v[b]=x,x===""&&(p.lastIndex=s(_,t(p.lastIndex),m)),b++}return b===0?null:v}]}),R0}var P0={},F0;function SR(){if(F0)return P0;F0=1;var n=Q(),e=ic(),t=Dt(),r=Yt(),i=vt(),a=ut(),s=jr(),l=Bn(),c=hn(),u=yr(),f=Ft(),h=Ue(),p=ft(),_=dn(),g=Fi(),m=Xn(),v=Vt(),b=nr(),S=p("matchAll"),x="RegExp String",E=x+" Iterator",C=v.set,R=v.getterFor(E),P=RegExp.prototype,F="".matchAll,k=!!F&&!h(function(){}),q=e(function(K,ue,ve,ge){C(this,{type:E,regexp:K,string:ue,global:ve,unicode:ge,done:!1})},x,function(){var K=R(this);if(K.done)return{value:void 0,done:!0};var ue=K.regexp,ve=K.string,ge=m(ue,ve);return ge===null?{value:void 0,done:K.done=!0}:K.global?(i(ge[0])===""&&(ue.lastIndex=g(ve,r(ue.lastIndex),K.unicode)),{value:ge,done:!1}):(K.done=!0,{value:ge,done:!1})}),ce=function(j){var K=a(this),ue=i(j),ve,ge,ye,Me,X,L;return ve=_(K,RegExp),ge=K.flags,ge===void 0&&K instanceof RegExp&&!("flags"in P)&&(ge=c.call(K)),ye=ge===void 0?"":i(ge),Me=new ve(ve===RegExp?K.source:K,ye),X=!!~ye.indexOf("g"),L=!!~ye.indexOf("u"),Me.lastIndex=r(K.lastIndex),new q(Me,ue,X,L)};return n({target:"String",proto:!0,forced:k},{matchAll:function(K){var ue=t(this),ve,ge,ye,Me;if(K!=null){if(l(K)&&(ve=i(t("flags"in P?K.flags:c.call(K))),!~ve.indexOf("g")))throw TypeError("`.matchAll` does not allow non-global regexes");if(k)return F.apply(ue,arguments);if(ye=u(K,S),ye===void 0&&b&&s(K)=="RegExp"&&(ye=ce),ye)return ye.call(K,ue)}else if(k)return F.apply(ue,arguments);return ge=i(ue),Me=new RegExp(K,"g"),b?ce.call(Me,ge):Me[S](ge)}}),b||S in P||f(P,S,ce),P0}var M0={},Go,O0;function I1(){if(O0)return Go;O0=1;var n=mr();return Go=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(n),Go}var L0;function wR(){if(L0)return M0;L0=1;var n=Q(),e=uc().end,t=I1();return n({target:"String",proto:!0,forced:t},{padEnd:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),M0}var D0={},N0;function CR(){if(N0)return D0;N0=1;var n=Q(),e=uc().start,t=I1();return n({target:"String",proto:!0,forced:t},{padStart:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),D0}var q0={},V0;function RR(){if(V0)return q0;V0=1;var n=Q(),e=Gt(),t=Et(),r=vt(),i=kt(),a=Array.prototype,s=a.push,l=a.join;return n({target:"String",stat:!0},{raw:function(u){for(var f=e(t(u).raw),h=i(f),p=arguments.length,_=[],g=0;h>g;){if(s.call(_,r(f[g++])),g===h)return l.call(_,"");g]*>)/g,i=/\$([$&'`]|\d{1,2})/g;return $o=function(a,s,l,c,u,f){var h=l+a.length,p=c.length,_=i;return u!==void 0&&(u=n(u),_=r),t.call(f,_,function(g,m){var v;switch(m.charAt(0)){case"$":return"$";case"&":return a;case"`":return s.slice(0,l);case"'":return s.slice(h);case"<":v=u[m.slice(1,-1)];break;default:var b=+m;if(b===0)return g;if(b>p){var S=e(b/10);return S===0?g:S<=p?c[S-1]===void 0?m.charAt(1):c[S-1]+m.charAt(1):g}v=c[b-1]}return v===void 0?"":v})},$o}var H0;function AR(){if(H0)return B0;H0=1;var n=Pi(),e=Ue(),t=ut(),r=pt(),i=Kt(),a=Yt(),s=vt(),l=Dt(),c=Fi(),u=yr(),f=A1(),h=Xn(),p=ft(),_=p("replace"),g=Math.max,m=Math.min,v=function(E){return E===void 0?E:String(E)},b=(function(){return"a".replace(/./,"$0")==="$0"})(),S=(function(){return/./[_]?/./[_]("a","$0")==="":!1})(),x=!e(function(){var E=/./;return E.exec=function(){var C=[];return C.groups={a:"7"},C},"".replace(E,"$")!=="7"});return n("replace",function(E,C,R){var P=S?"$":"$0";return[function(k,q){var ce=l(this),j=k==null?void 0:u(k,_);return j?j.call(k,ce,q):C.call(s(ce),k,q)},function(F,k){var q=t(this),ce=s(F);if(typeof k=="string"&&k.indexOf(P)===-1&&k.indexOf("$<")===-1){var j=R(C,q,ce,k);if(j.done)return j.value}var K=r(k);K||(k=s(k));var ue=q.global;if(ue){var ve=q.unicode;q.lastIndex=0}for(var ge=[];;){var ye=h(q,ce);if(ye===null||(ge.push(ye),!ue))break;var Me=s(ye[0]);Me===""&&(q.lastIndex=c(ce,a(q.lastIndex),ve))}for(var X="",L=0,H=0;H=L&&(X+=ce.slice(L,G)+ke,L=G+pe.length)}return X+ce.slice(L)}]},!x||!b||S),B0}var Q0={},j0;function TR(){if(j0)return Q0;j0=1;var n=Q(),e=Dt(),t=pt(),r=Bn(),i=vt(),a=yr(),s=hn(),l=A1(),c=ft(),u=nr(),f=c("replace"),h=RegExp.prototype,p=Math.max,_=function(g,m,v){return v>g.length?-1:m===""?v:g.indexOf(m,v)};return n({target:"String",proto:!0},{replaceAll:function(m,v){var b=e(this),S,x,E,C,R,P,F,k,q,ce=0,j=0,K="";if(m!=null){if(S=r(m),S&&(x=i(e("flags"in h?m.flags:s.call(m))),!~x.indexOf("g")))throw TypeError("`.replaceAll` does not allow non-global regexes");if(E=a(m,f),E)return E.call(m,b,v);if(u&&S)return i(b).replace(m,v)}for(C=i(b),R=i(m),P=t(v),P||(v=i(v)),F=R.length,k=p(1,F),ce=_(C,R,0);ce!==-1;)P?q=i(v(R,ce,C)):q=l(R,C,ce,[],void 0,v),K+=C.slice(j,ce)+q,j=ce+F,ce=_(C,R,ce+k);return j1||"".split(/.?/).length?C=function(R,P){var F=l(r(this)),k=P===void 0?v:P>>>0;if(k===0)return[];if(R===void 0)return[F];if(!e(R))return x.call(F,R,k);for(var q=[],ce=(R.ignoreCase?"i":"")+(R.multiline?"m":"")+(R.unicode?"u":"")+(R.sticky?"y":""),j=0,K=new RegExp(R.source,ce+"g"),ue,ve,ge;(ue=f.call(K,F))&&(ve=K.lastIndex,!(ve>j&&(q.push(F.slice(j,ue.index)),ue.length>1&&ue.index=k)));)K.lastIndex===ue.index&&K.lastIndex++;return j===F.length?(ge||!K.test(""))&&q.push(""):q.push(F.slice(j)),q.length>k?q.slice(0,k):q}:"0".split(void 0,0).length?C=function(R,P){return R===void 0&&P===0?[]:x.call(this,R,P)}:C=x,[function(P,F){var k=r(this),q=P==null?void 0:c(P,S);return q?q.call(P,k,F):C.call(l(k),P,F)},function(R,P){var F=t(this),k=l(R),q=E(C,F,k,P,C!==x);if(q.done)return q.value;var ce=i(F,RegExp),j=F.unicode,K=(F.ignoreCase?"i":"")+(F.multiline?"m":"")+(F.unicode?"u":"")+(_?"g":"y"),ue=new ce(_?"^(?:"+F.source+")":F,K),ve=P===void 0?v:P>>>0;if(ve===0)return[];if(k.length===0)return u(ue,k)===null?[k]:[];for(var ge=0,ye=0,Me=[];ye1?arguments[1]:void 0,g.length)),v=r(_);return c?c.call(g,v,m):g.slice(m,m+v.length)===v}}),Y0}var J0={},em;function MR(){if(em)return J0;em=1;var n=Q(),e=Dt(),t=Kt(),r=vt(),i="".slice,a=Math.max,s=Math.min,l=!"".substr||"ab".substr(-1)!=="b";return n({target:"String",proto:!0,forced:l},{substr:function(u,f){var h=r(e(this)),p=h.length,_=t(u),g,m;return _===1/0&&(_=0),_<0&&(_=a(p+_,0)),g=f===void 0?p:t(f),g<=0||g===1/0?"":(m=s(_+g,p),_>=m?"":i.call(h,_,m))}}),J0}var tm={},Yo,rm;function bc(){if(rm)return Yo;rm=1;var n=Wr().PROPER,e=Ue(),t=Ci(),r="​…᠎";return Yo=function(i){return e(function(){return!!t[i]()||r[i]()!==r||n&&t[i].name!==i})},Yo}var nm;function OR(){if(nm)return tm;nm=1;var n=Q(),e=fn().trim,t=bc();return n({target:"String",proto:!0,forced:t("trim")},{trim:function(){return e(this)}}),tm}var im={},am;function LR(){if(am)return im;am=1;var n=Q(),e=fn().end,t=bc(),r=t("trimEnd"),i=r?function(){return e(this)}:"".trimEnd;return n({target:"String",proto:!0,name:"trimEnd",forced:r},{trimEnd:i,trimRight:i}),im}var sm={},om;function DR(){if(om)return sm;om=1;var n=Q(),e=fn().start,t=bc(),r=t("trimStart"),i=r?function(){return e(this)}:"".trimStart;return n({target:"String",proto:!0,name:"trimStart",forced:r},{trimStart:i,trimLeft:i}),sm}var lm={},Zo,cm;function Zt(){if(cm)return Zo;cm=1;var n=Dt(),e=vt(),t=/"/g;return Zo=function(r,i,a,s){var l=e(n(r)),c="<"+i;return a!==""&&(c+=" "+a+'="'+e(s).replace(t,""")+'"'),c+">"+l+""},Zo}var Jo,um;function Jt(){if(um)return Jo;um=1;var n=Ue();return Jo=function(e){return n(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})},Jo}var dm;function NR(){if(dm)return lm;dm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("anchor")},{anchor:function(i){return e(this,"a","name",i)}}),lm}var fm={},hm;function qR(){if(hm)return fm;hm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("big")},{big:function(){return e(this,"big","","")}}),fm}var _m={},pm;function VR(){if(pm)return _m;pm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("blink")},{blink:function(){return e(this,"blink","","")}}),_m}var vm={},gm;function KR(){if(gm)return vm;gm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("bold")},{bold:function(){return e(this,"b","","")}}),vm}var mm={},ym;function UR(){if(ym)return mm;ym=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fixed")},{fixed:function(){return e(this,"tt","","")}}),mm}var bm={},xm;function BR(){if(xm)return bm;xm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fontcolor")},{fontcolor:function(i){return e(this,"font","color",i)}}),bm}var Em={},Sm;function XR(){if(Sm)return Em;Sm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fontsize")},{fontsize:function(i){return e(this,"font","size",i)}}),Em}var wm={},Cm;function HR(){if(Cm)return wm;Cm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("italics")},{italics:function(){return e(this,"i","","")}}),wm}var Rm={},Im;function QR(){if(Im)return Rm;Im=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("link")},{link:function(i){return e(this,"a","href",i)}}),Rm}var Am={},Tm;function jR(){if(Tm)return Am;Tm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("small")},{small:function(){return e(this,"small","","")}}),Am}var km={},Pm;function WR(){if(Pm)return km;Pm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("strike")},{strike:function(){return e(this,"strike","","")}}),km}var Fm={},Mm;function zR(){if(Mm)return Fm;Mm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("sub")},{sub:function(){return e(this,"sub","","")}}),Fm}var Om={},Lm;function GR(){if(Lm)return Om;Lm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("sup")},{sup:function(){return e(this,"sup","","")}}),Om}var Dm={},jn={exports:{}},el,Nm;function xc(){if(Nm)return el;Nm=1;var n=Ye(),e=Ue(),t=mi(),r=_t().NATIVE_ARRAY_BUFFER_VIEWS,i=n.ArrayBuffer,a=n.Int8Array;return el=!r||!e(function(){a(1)})||!e(function(){new a(-1)})||!t(function(s){new a,new a(null),new a(1.5),new a(s)},!0)||e(function(){return new a(new i(2),1,void 0).length!==1}),el}var tl,qm;function $R(){if(qm)return tl;qm=1;var n=Kt();return tl=function(e){var t=n(e);if(t<0)throw RangeError("The argument can't be less than 0");return t},tl}var rl,Vm;function T1(){if(Vm)return rl;Vm=1;var n=$R();return rl=function(e,t){var r=n(e);if(r%t)throw RangeError("Wrong offset");return r},rl}var nl,Km;function k1(){if(Km)return nl;Km=1;var n=lc(),e=Et(),t=kt(),r=gi(),i=Vn(),a=rc(),s=Dr(),l=_t().aTypedArrayConstructor;return nl=function(u){var f=n(this),h=e(u),p=arguments.length,_=p>1?arguments[1]:void 0,g=_!==void 0,m=i(h),v,b,S,x,E,C;if(m&&!a(m))for(E=r(h,m),C=E.next,h=[];!(x=C.call(E)).done;)h.push(x.value);for(g&&p>2&&(_=s(_,arguments[2],2)),b=t(h),S=new(l(f))(b),v=0;b>v;v++)S[v]=g?_(h[v],v):h[v];return S},nl}var Um;function Sr(){if(Um)return jn.exports;Um=1;var n=Q(),e=Ye(),t=dt(),r=xc(),i=_t(),a=xi(),s=qr(),l=gr(),c=$t(),u=hc(),f=Yt(),h=d1(),p=T1(),_=Mr(),g=Tt(),m=Gr(),v=ct(),b=kn(),S=lr(),x=br(),E=Lr().f,C=k1(),R=Ut().forEach,P=cn(),F=xt(),k=Bt(),q=Vt(),ce=Ei(),j=q.get,K=q.set,ue=F.f,ve=k.f,ge=Math.round,ye=e.RangeError,Me=a.ArrayBuffer,X=a.DataView,L=i.NATIVE_ARRAY_BUFFER_VIEWS,H=i.TYPED_ARRAY_CONSTRUCTOR,pe=i.TYPED_ARRAY_TAG,G=i.TypedArray,Se=i.TypedArrayPrototype,Te=i.aTypedArrayConstructor,De=i.isTypedArray,Ae="BYTES_PER_ELEMENT",ke="Wrong length",st=function(Oe,ae){for(var le=0,Ie=ae.length,Ge=new(Te(Oe))(Ie);Ie>le;)Ge[le]=ae[le++];return Ge},et=function(Oe,ae){ue(Oe,ae,{get:function(){return j(this)[ae]}})},Ne=function(Oe){var ae;return Oe instanceof Me||(ae=m(Oe))=="ArrayBuffer"||ae=="SharedArrayBuffer"},Pe=function(Oe,ae){return De(Oe)&&!b(ae)&&ae in Oe&&u(+ae)&&ae>=0},Fe=function(ae,le){return le=_(le),Pe(ae,le)?l(2,ae[le]):ve(ae,le)},me=function(ae,le,Ie){return le=_(le),Pe(ae,le)&&v(Ie)&&g(Ie,"value")&&!g(Ie,"get")&&!g(Ie,"set")&&!Ie.configurable&&(!g(Ie,"writable")||Ie.writable)&&(!g(Ie,"enumerable")||Ie.enumerable)?(ae[le]=Ie.value,ae):ue(ae,le,Ie)};return t?(L||(k.f=Fe,F.f=me,et(Se,"buffer"),et(Se,"byteOffset"),et(Se,"byteLength"),et(Se,"length")),n({target:"Object",stat:!0,forced:!L},{getOwnPropertyDescriptor:Fe,defineProperty:me}),jn.exports=function(Oe,ae,le){var Ie=Oe.match(/\d+$/)[0]/8,Ge=Oe+(le?"Clamped":"")+"Array",tt="get"+Oe,nt="set"+Oe,it=e[Ge],Be=it,Ze=Be&&Be.prototype,$e={},Ct=function(w,ee){var he=j(w);return he.view[tt](ee*Ie+he.byteOffset,!0)},bt=function(w,ee,he){var D=j(w);le&&(he=(he=ge(he))<0?0:he>255?255:he&255),D.view[nt](ee*Ie+D.byteOffset,he,!0)},Mt=function(w,ee){ue(w,ee,{get:function(){return Ct(this,ee)},set:function(he){return bt(this,ee,he)},enumerable:!0})};L?r&&(Be=ae(function(w,ee,he,D){return s(w,Be,Ge),ce((function(){return v(ee)?Ne(ee)?D!==void 0?new it(ee,p(he,Ie),D):he!==void 0?new it(ee,p(he,Ie)):new it(ee):De(ee)?st(Be,ee):C.call(Be,ee):new it(h(ee))})(),w,Be)}),x&&x(Be,G),R(E(it),function(w){w in Be||c(Be,w,it[w])}),Be.prototype=Ze):(Be=ae(function(w,ee,he,D){s(w,Be,Ge);var V=0,W=0,A,N,y;if(!v(ee))y=h(ee),N=y*Ie,A=new Me(N);else if(Ne(ee)){A=ee,W=p(he,Ie);var _e=ee.byteLength;if(D===void 0){if(_e%Ie||(N=_e-W,N<0))throw ye(ke)}else if(N=f(D)*Ie,N+W>_e)throw ye(ke);y=N/Ie}else return De(ee)?st(Be,ee):C.call(Be,ee);for(K(w,{buffer:A,byteOffset:W,byteLength:N,length:y,view:new X(A)});V=0?u:c+u;return f<0||f>=c?void 0:l[f]}),ay}var oy={},ly;function oI(){if(ly)return oy;ly=1;var n=_t(),e=r1(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("copyWithin",function(a,s){return e.call(t(this),a,s,arguments.length>2?arguments[2]:void 0)}),oy}var cy={},uy;function lI(){if(uy)return cy;uy=1;var n=_t(),e=Ut().every,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("every",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),cy}var dy={},fy;function cI(){if(fy)return dy;fy=1;var n=_t(),e=nc(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("fill",function(a){return e.apply(t(this),arguments)}),dy}var hy={},il,_y;function uI(){return _y||(_y=1,il=function(n,e){for(var t=0,r=e.length,i=new n(r);r>t;)i[t]=e[t++];return i}),il}var al,py;function Mi(){if(py)return al;py=1;var n=_t(),e=dn(),t=n.TYPED_ARRAY_CONSTRUCTOR,r=n.aTypedArrayConstructor;return al=function(i){return r(e(i,i[t]))},al}var sl,vy;function dI(){if(vy)return sl;vy=1;var n=uI(),e=Mi();return sl=function(t,r){return n(e(t),r)},sl}var gy;function fI(){if(gy)return hy;gy=1;var n=_t(),e=Ut().filter,t=dI(),r=n.aTypedArray,i=n.exportTypedArrayMethod;return i("filter",function(s){var l=e(r(this),s,arguments.length>1?arguments[1]:void 0);return t(this,l)}),hy}var my={},yy;function hI(){if(yy)return my;yy=1;var n=_t(),e=Ut().find,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("find",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),my}var by={},xy;function _I(){if(xy)return by;xy=1;var n=_t(),e=Ut().findIndex,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("findIndex",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),by}var Ey={},Sy;function pI(){if(Sy)return Ey;Sy=1;var n=_t(),e=Ut().forEach,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("forEach",function(a){e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ey}var wy={},Cy;function vI(){if(Cy)return wy;Cy=1;var n=xc(),e=_t().exportTypedArrayStaticMethod,t=k1();return e("from",t,n),wy}var Ry={},Iy;function gI(){if(Iy)return Ry;Iy=1;var n=_t(),e=Mn().includes,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("includes",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ry}var Ay={},Ty;function mI(){if(Ty)return Ay;Ty=1;var n=_t(),e=Mn().indexOf,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("indexOf",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ay}var ky={},Py;function yI(){if(Py)return ky;Py=1;var n=Ye(),e=Wr().PROPER,t=_t(),r=yi(),i=ft(),a=i("iterator"),s=n.Uint8Array,l=r.values,c=r.keys,u=r.entries,f=t.aTypedArray,h=t.exportTypedArrayMethod,p=s&&s.prototype[a],_=!!p&&p.name==="values",g=function(){return l.call(f(this))};return h("entries",function(){return u.call(f(this))}),h("keys",function(){return c.call(f(this))}),h("values",g,e&&!_),h(a,g,e&&!_),ky}var Fy={},My;function bI(){if(My)return Fy;My=1;var n=_t(),e=n.aTypedArray,t=n.exportTypedArrayMethod,r=[].join;return t("join",function(a){return r.apply(e(this),arguments)}),Fy}var Oy={},Ly;function xI(){if(Ly)return Oy;Ly=1;var n=_t(),e=o1(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("lastIndexOf",function(a){return e.apply(t(this),arguments)}),Oy}var Dy={},Ny;function EI(){if(Ny)return Dy;Ny=1;var n=_t(),e=Ut().map,t=Mi(),r=n.aTypedArray,i=n.exportTypedArrayMethod;return i("map",function(s){return e(r(this),s,arguments.length>1?arguments[1]:void 0,function(l,c){return new(t(l))(c)})}),Dy}var qy={},Vy;function SI(){if(Vy)return qy;Vy=1;var n=_t(),e=xc(),t=n.aTypedArrayConstructor,r=n.exportTypedArrayStaticMethod;return r("of",function(){for(var a=0,s=arguments.length,l=new(t(this))(s);s>a;)l[a]=arguments[a++];return l},e),qy}var Ky={},Uy;function wI(){if(Uy)return Ky;Uy=1;var n=_t(),e=bi().left,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("reduce",function(a){return e(t(this),a,arguments.length,arguments.length>1?arguments[1]:void 0)}),Ky}var By={},Xy;function CI(){if(Xy)return By;Xy=1;var n=_t(),e=bi().right,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("reduceRight",function(a){return e(t(this),a,arguments.length,arguments.length>1?arguments[1]:void 0)}),By}var Hy={},Qy;function RI(){if(Qy)return Hy;Qy=1;var n=_t(),e=n.aTypedArray,t=n.exportTypedArrayMethod,r=Math.floor;return t("reverse",function(){for(var a=this,s=e(a).length,l=r(s/2),c=0,u;c1?arguments[1]:void 0,1),h=this.length,p=r(u),_=e(p),g=0;if(_+f>h)throw RangeError("Wrong length");for(;g<_;)this[f+g]=p[g++]},l),jy}var zy={},Gy;function AI(){if(Gy)return zy;Gy=1;var n=_t(),e=Mi(),t=Ue(),r=n.aTypedArray,i=n.exportTypedArrayMethod,a=[].slice,s=t(function(){new Int8Array(1).slice()});return i("slice",function(c,u){for(var f=a.call(r(this),c,u),h=e(this),p=0,_=f.length,g=new h(_);_>p;)g[p]=f[p++];return g},s),zy}var $y={},Yy;function TI(){if(Yy)return $y;Yy=1;var n=_t(),e=Ut().some,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("some",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),$y}var Zy={},Jy;function kI(){if(Jy)return Zy;Jy=1;var n=_t(),e=Ye(),t=Ue(),r=Qt(),i=kt(),a=l1(),s=c1(),l=u1(),c=Fr(),u=sc(),f=n.aTypedArray,h=n.exportTypedArrayMethod,p=e.Uint16Array,_=p&&p.prototype.sort,g=!!_&&!t(function(){var b=new p(2);b.sort(null),b.sort({})}),m=!!_&&!t(function(){if(c)return c<74;if(s)return s<67;if(l)return!0;if(u)return u<602;var b=new p(516),S=Array(516),x,E;for(x=0;x<516;x++)E=x%4,b[x]=515-x,S[x]=x-2*E+3;for(b.sort(function(C,R){return(C/4|0)-(R/4|0)}),x=0;x<516;x++)if(b[x]!==S[x])return!0}),v=function(b){return function(S,x){return b!==void 0?+b(S,x)||0:x!==x?-1:S!==S?1:S===0&&x===0?1/S>0&&1/x<0?1:-1:S>x}};return h("sort",function(S){var x=this;if(S!==void 0&&r(S),m)return _.call(x,S);f(x);var E=i(x),C=Array(E),R;for(R=0;R2,h=f?i.call(arguments,2):void 0;return l(f?function(){(t(c)?c:Function(c)).apply(this,h)}:c,u)}};return n({global:!0,bind:!0,forced:a},{setTimeout:s(e.setTimeout),setInterval:s(e.setInterval)}),Eb}var wb={},dl,Cb;function O1(){if(Cb)return dl;Cb=1;var n=Ue(),e=ft(),t=nr(),r=e("iterator");return dl=!n(function(){var i=new URL("b?a=1&b=2&c=3","http://a"),a=i.searchParams,s="";return i.pathname="c%20d",a.forEach(function(l,c){a.delete("b"),s+=c+l}),t&&!i.toJSON||!a.sort||i.href!=="http://a/c%20d?a=1&c=3"||a.get("c")!=="3"||String(new URLSearchParams("?a=1"))!=="a=1"||!a[r]||new URL("https://a@b").username!=="a"||new URLSearchParams(new URLSearchParams("a=b")).get("a")!=="b"||new URL("http://тест").host!=="xn--e1aybc"||new URL("http://a#б").hash!=="#%D0%B1"||s!=="a1c3"||new URL("http://x",void 0).host!=="x"}),dl}var fl,Rb;function BI(){if(Rb)return fl;Rb=1;var n=2147483647,e=36,t=1,r=26,i=38,a=700,s=72,l=128,c="-",u=/[^\0-\u007E]/,f=/[.\u3002\uFF0E\uFF61]/g,h="Overflow: input needs wider integers to process",p=e-t,_=Math.floor,g=String.fromCharCode,m=function(x){for(var E=[],C=0,R=x.length;C=55296&&P<=56319&&C>1,x+=_(x/E);x>p*r>>1;R+=e)x=_(x/p);return _(R+(p+1)*x/(x+i))},S=function(x){var E=[];x=m(x);var C=x.length,R=l,P=0,F=s,k,q;for(k=0;k=R&&q_((n-P)/ue))throw RangeError(h);for(P+=(K-R)*ue,R=K,k=0;kn)throw RangeError(h);if(q==R){for(var ve=P,ge=e;;ge+=e){var ye=ge<=F?t:ge>=F+r?r:ge-F;if(ve0?arguments[0]:void 0,me=this,Oe=[],ae,le,Ie,Ge,tt,nt,it,Be,Ze;if(j(me,{type:q,entries:Oe,updateURL:function(){},updateSearchParams:Te}),Fe!==void 0)if(g(Fe))if(ae=x(Fe),ae)for(le=S(Fe,ae),Ie=le.next;!(Ge=Ie.call(le)).done;){if(tt=S(_(Ge.value)),nt=tt.next,(it=nt.call(tt)).done||(Be=nt.call(tt)).done||!nt.call(tt).done)throw TypeError("Expected sequence with length 2");Oe.push({key:m(it.value),value:m(Be.value)})}else for(Ze in Fe)f(Fe,Ze)&&Oe.push({key:Ze,value:m(Fe[Ze])});else Se(Oe,typeof Fe=="string"?Fe.charAt(0)==="?"?Fe.slice(1):Fe:m(Fe))},st=ke.prototype;if(i(st,{append:function(Fe,me){De(arguments.length,2);var Oe=K(this);Oe.entries.push({key:m(Fe),value:m(me)}),Oe.updateURL()},delete:function(Pe){De(arguments.length,1);for(var Fe=K(this),me=Fe.entries,Oe=m(Pe),ae=0;aeae.key){me.splice(le,0,ae);break}le===Ie&&me.push(ae)}Fe.updateURL()},forEach:function(Fe){for(var me=K(this).entries,Oe=h(Fe,arguments.length>1?arguments[1]:void 0,3),ae=0,le;ae1?et(arguments[1]):{})}}),u(R)){var Ne=function(Fe){return c(this,Ne,"Request"),new R(Fe,arguments.length>1?et(arguments[1]):{})};P.constructor=Ne,Ne.prototype=P,n({global:!0,forced:!0},{Request:Ne})}}return hl={URLSearchParams:ke,getState:K},hl}var Ab;function XI(){if(Ab)return wb;Ab=1,R1();var n=Q(),e=dt(),t=O1(),r=Ye(),i=Jl(),a=Ft(),s=qr(),l=Tt(),c=g1(),u=a1(),f=ki().codeAt,h=BI(),p=vt(),_=cr(),g=L1(),m=Vt(),v=r.URL,b=g.URLSearchParams,S=g.getState,x=m.set,E=m.getterFor("URL"),C=Math.floor,R=Math.pow,P="Invalid authority",F="Invalid scheme",k="Invalid host",q="Invalid port",ce=/[a-z]/i,j=/[\d+-.a-z]/i,K=/\d/,ue=/^0x/i,ve=/^[0-7]+$/,ge=/^\d+$/,ye=/^[\da-f]+$/i,Me=/[\0\t\n\r #%/:<>?@[\\\]^|]/,X=/[\0\t\n\r #/:<>?@[\\\]^|]/,L=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,H=/[\t\n\r]/g,pe,G=function(I,oe){var fe,be,we;if(oe.charAt(0)=="["){if(oe.charAt(oe.length-1)!="]"||(fe=Te(oe.slice(1,-1)),!fe))return k;I.host=fe}else if(me(I)){if(oe=h(oe),Me.test(oe)||(fe=Se(oe),fe===null))return k;I.host=fe}else{if(X.test(oe))return k;for(fe="",be=u(oe),we=0;we4)return I;for(be=[],we=0;we1&&rt.charAt(0)=="0"&&(He=ue.test(rt)?16:8,rt=rt.slice(He==8?1:2)),rt==="")yt=0;else{if(!(He==10?ge:He==8?ve:ye).test(rt))return I;yt=parseInt(rt,He)}be.push(yt)}for(we=0;we=R(256,5-fe))return null}else if(yt>255)return null;for(It=be.pop(),we=0;we6))return;for(yt=0;Lt();){if(It=null,yt>0)if(Lt()=="."&&yt<4)we++;else return;if(!K.test(Lt()))return;for(;K.test(Lt());){if(Pt=parseInt(Lt(),10),It===null)It=Pt;else{if(It==0)return;It=It*10+Pt}if(It>255)return;we++}oe[fe]=oe[fe]*256+It,yt++,(yt==2||yt==4)&&fe++}if(yt!=4)return;break}else if(Lt()==":"){if(we++,!Lt())return}else if(Lt())return;oe[fe++]=rt}if(be!==null)for(er=fe-be,fe=7;fe!=0&&er>0;)Ee=oe[fe],oe[fe--]=oe[be+er-1],oe[be+--er]=Ee;else if(fe!=8)return;return oe},De=function(I){for(var oe=null,fe=1,be=null,we=0,rt=0;rt<8;rt++)I[rt]!==0?(we>fe&&(oe=be,fe=we),be=null,we=0):(be===null&&(be=rt),++we);return we>fe&&(oe=be,fe=we),oe},Ae=function(I){var oe,fe,be,we;if(typeof I=="number"){for(oe=[],fe=0;fe<4;fe++)oe.unshift(I%256),I=C(I/256);return oe.join(".")}else if(typeof I=="object"){for(oe="",be=De(I),fe=0;fe<8;fe++)we&&I[fe]===0||(we&&(we=!1),be===fe?(oe+=fe?":":"::",we=!0):(oe+=I[fe].toString(16),fe<7&&(oe+=":")));return"["+oe+"]"}return I},ke={},st=c({},ke,{" ":1,'"':1,"<":1,">":1,"`":1}),et=c({},st,{"#":1,"?":1,"{":1,"}":1}),Ne=c({},et,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Pe=function(I,oe){var fe=f(I,0);return fe>32&&fe<127&&!l(oe,I)?I:encodeURIComponent(I)},Fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},me=function(I){return l(Fe,I.scheme)},Oe=function(I){return I.username!=""||I.password!=""},ae=function(I){return!I.host||I.cannotBeABaseURL||I.scheme=="file"},le=function(I,oe){var fe;return I.length==2&&ce.test(I.charAt(0))&&((fe=I.charAt(1))==":"||!oe&&fe=="|")},Ie=function(I){var oe;return I.length>1&&le(I.slice(0,2))&&(I.length==2||(oe=I.charAt(2))==="/"||oe==="\\"||oe==="?"||oe==="#")},Ge=function(I){var oe=I.path,fe=oe.length;fe&&(I.scheme!="file"||fe!=1||!le(oe[0],!0))&&oe.pop()},tt=function(I){return I==="."||I.toLowerCase()==="%2e"},nt=function(I){return I=I.toLowerCase(),I===".."||I==="%2e."||I===".%2e"||I==="%2e%2e"},it={},Be={},Ze={},$e={},Ct={},bt={},Mt={},w={},ee={},he={},D={},V={},W={},A={},N={},y={},_e={},Xe={},xe={},ze={},Re={},Je=function(I,oe,fe,be){var we=fe||it,rt=0,He="",yt=!1,It=!1,Pt=!1,er,Ee,Lt,fr;for(fe||(I.scheme="",I.username="",I.password="",I.host=null,I.port=null,I.path=[],I.query=null,I.fragment=null,I.cannotBeABaseURL=!1,oe=oe.replace(L,"")),oe=oe.replace(H,""),er=u(oe);rt<=er.length;){switch(Ee=er[rt],we){case it:if(Ee&&ce.test(Ee))He+=Ee.toLowerCase(),we=Be;else{if(fe)return F;we=Ze;continue}break;case Be:if(Ee&&(j.test(Ee)||Ee=="+"||Ee=="-"||Ee=="."))He+=Ee.toLowerCase();else if(Ee==":"){if(fe&&(me(I)!=l(Fe,He)||He=="file"&&(Oe(I)||I.port!==null)||I.scheme=="file"&&!I.host))return;if(I.scheme=He,fe){me(I)&&Fe[I.scheme]==I.port&&(I.port=null);return}He="",I.scheme=="file"?we=A:me(I)&&be&&be.scheme==I.scheme?we=$e:me(I)?we=w:er[rt+1]=="/"?(we=Ct,rt++):(I.cannotBeABaseURL=!0,I.path.push(""),we=xe)}else{if(fe)return F;He="",we=Ze,rt=0;continue}break;case Ze:if(!be||be.cannotBeABaseURL&&Ee!="#")return F;if(be.cannotBeABaseURL&&Ee=="#"){I.scheme=be.scheme,I.path=be.path.slice(),I.query=be.query,I.fragment="",I.cannotBeABaseURL=!0,we=Re;break}we=be.scheme=="file"?A:bt;continue;case $e:if(Ee=="/"&&er[rt+1]=="/")we=ee,rt++;else{we=bt;continue}break;case Ct:if(Ee=="/"){we=he;break}else{we=Xe;continue}case bt:if(I.scheme=be.scheme,Ee==pe)I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query=be.query;else if(Ee=="/"||Ee=="\\"&&me(I))we=Mt;else if(Ee=="?")I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query="",we=ze;else if(Ee=="#")I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query=be.query,I.fragment="",we=Re;else{I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.path.pop(),we=Xe;continue}break;case Mt:if(me(I)&&(Ee=="/"||Ee=="\\"))we=ee;else if(Ee=="/")we=he;else{I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,we=Xe;continue}break;case w:if(we=ee,Ee!="/"||He.charAt(rt+1)!="/")continue;rt++;break;case ee:if(Ee!="/"&&Ee!="\\"){we=he;continue}break;case he:if(Ee=="@"){yt&&(He="%40"+He),yt=!0,Lt=u(He);for(var Li=0;Li65535)return q;I.port=me(I)&&Di===Fe[I.scheme]?null:Di,He=""}if(fe)return;we=_e;continue}else return q;break;case A:if(I.scheme="file",Ee=="/"||Ee=="\\")we=N;else if(be&&be.scheme=="file")if(Ee==pe)I.host=be.host,I.path=be.path.slice(),I.query=be.query;else if(Ee=="?")I.host=be.host,I.path=be.path.slice(),I.query="",we=ze;else if(Ee=="#")I.host=be.host,I.path=be.path.slice(),I.query=be.query,I.fragment="",we=Re;else{Ie(er.slice(rt).join(""))||(I.host=be.host,I.path=be.path.slice(),Ge(I)),we=Xe;continue}else{we=Xe;continue}break;case N:if(Ee=="/"||Ee=="\\"){we=y;break}be&&be.scheme=="file"&&!Ie(er.slice(rt).join(""))&&(le(be.path[0],!0)?I.path.push(be.path[0]):I.host=be.host),we=Xe;continue;case y:if(Ee==pe||Ee=="/"||Ee=="\\"||Ee=="?"||Ee=="#"){if(!fe&&le(He))we=Xe;else if(He==""){if(I.host="",fe)return;we=_e}else{if(fr=G(I,He),fr)return fr;if(I.host=="localhost"&&(I.host=""),fe)return;He="",we=_e}continue}else He+=Ee;break;case _e:if(me(I)){if(we=Xe,Ee!="/"&&Ee!="\\")continue}else if(!fe&&Ee=="?")I.query="",we=ze;else if(!fe&&Ee=="#")I.fragment="",we=Re;else if(Ee!=pe&&(we=Xe,Ee!="/"))continue;break;case Xe:if(Ee==pe||Ee=="/"||Ee=="\\"&&me(I)||!fe&&(Ee=="?"||Ee=="#")){if(nt(He)?(Ge(I),Ee!="/"&&!(Ee=="\\"&&me(I))&&I.path.push("")):tt(He)?Ee!="/"&&!(Ee=="\\"&&me(I))&&I.path.push(""):(I.scheme=="file"&&!I.path.length&&le(He)&&(I.host&&(I.host=""),He=He.charAt(0)+":"),I.path.push(He)),He="",I.scheme=="file"&&(Ee==pe||Ee=="?"||Ee=="#"))for(;I.path.length>1&&I.path[0]==="";)I.path.shift();Ee=="?"?(I.query="",we=ze):Ee=="#"&&(I.fragment="",we=Re)}else He+=Pe(Ee,et);break;case xe:Ee=="?"?(I.query="",we=ze):Ee=="#"?(I.fragment="",we=Re):Ee!=pe&&(I.path[0]+=Pe(Ee,ke));break;case ze:!fe&&Ee=="#"?(I.fragment="",we=Re):Ee!=pe&&(Ee=="'"&&me(I)?I.query+="%27":Ee=="#"?I.query+="%23":I.query+=Pe(Ee,ke));break;case Re:Ee!=pe&&(I.fragment+=Pe(Ee,st));break}rt++}},se=function(oe){var fe=s(this,se,"URL"),be=arguments.length>1?arguments[1]:void 0,we=p(oe),rt=x(fe,{type:"URL"}),He,yt;if(be!==void 0){if(be instanceof se)He=E(be);else if(yt=Je(He={},p(be)),yt)throw TypeError(yt)}if(yt=Je(rt,we,null,He),yt)throw TypeError(yt);var It=rt.searchParams=new b,Pt=S(It);Pt.updateSearchParams(rt.query),Pt.updateURL=function(){rt.query=String(It)||null},e||(fe.href=Xt.call(fe),fe.origin=mt.call(fe),fe.protocol=d.call(fe),fe.username=te.call(fe),fe.password=T.call(fe),fe.host=U.call(fe),fe.hostname=B.call(fe),fe.port=Le.call(fe),fe.pathname=Qe.call(fe),fe.search=Ve.call(fe),fe.searchParams=Ot.call(fe),fe.hash=ot.call(fe))},de=se.prototype,Xt=function(){var I=E(this),oe=I.scheme,fe=I.username,be=I.password,we=I.host,rt=I.port,He=I.path,yt=I.query,It=I.fragment,Pt=oe+":";return we!==null?(Pt+="//",Oe(I)&&(Pt+=fe+(be?":"+be:"")+"@"),Pt+=Ae(we),rt!==null&&(Pt+=":"+rt)):oe=="file"&&(Pt+="//"),Pt+=I.cannotBeABaseURL?He[0]:He.length?"/"+He.join("/"):"",yt!==null&&(Pt+="?"+yt),It!==null&&(Pt+="#"+It),Pt},mt=function(){var I=E(this),oe=I.scheme,fe=I.port;if(oe=="blob")try{return new se(oe.path[0]).origin}catch{return"null"}return oe=="file"||!me(I)?"null":oe+"://"+Ae(I.host)+(fe!==null?":"+fe:"")},d=function(){return E(this).scheme+":"},te=function(){return E(this).username},T=function(){return E(this).password},U=function(){var I=E(this),oe=I.host,fe=I.port;return oe===null?"":fe===null?Ae(oe):Ae(oe)+":"+fe},B=function(){var I=E(this).host;return I===null?"":Ae(I)},Le=function(){var I=E(this).port;return I===null?"":String(I)},Qe=function(){var I=E(this),oe=I.path;return I.cannotBeABaseURL?oe[0]:oe.length?"/"+oe.join("/"):""},Ve=function(){var I=E(this).query;return I?"?"+I:""},Ot=function(){return E(this).searchParams},ot=function(){var I=E(this).fragment;return I?"#"+I:""},lt=function(I,oe){return{get:I,set:oe,configurable:!0,enumerable:!0}};if(e&&i(de,{href:lt(Xt,function(I){var oe=E(this),fe=p(I),be=Je(oe,fe);if(be)throw TypeError(be);S(oe.searchParams).updateSearchParams(oe.query)}),origin:lt(mt),protocol:lt(d,function(I){var oe=E(this);Je(oe,p(I)+":",it)}),username:lt(te,function(I){var oe=E(this),fe=u(p(I));if(!ae(oe)){oe.username="";for(var be=0;be=0;--pe){var G=this.tryEntries[pe],Se=G.completion;if(G.tryLoc==="root")return H("end");if(G.tryLoc<=this.prev){var Te=i.call(G,"catchLoc"),De=i.call(G,"finallyLoc");if(Te&&De){if(this.prev=0;--H){var pe=this.tryEntries[H];if(pe.tryLoc<=this.prev&&i.call(pe,"finallyLoc")&&this.prev=0;--L){var H=this.tryEntries[L];if(H.finallyLoc===X)return this.complete(H.completion,H.afterLoc),ve(H),S}},catch:function(X){for(var L=this.tryEntries.length-1;L>=0;--L){var H=this.tryEntries[L];if(H.tryLoc===X){var pe=H.completion;if(pe.type==="throw"){var G=pe.arg;ve(H)}return G}}throw new Error("illegal catch attempt")},delegateYield:function(X,L,H){return this.delegate={iterator:ye(X),resultName:L,nextLoc:H},this.method==="next"&&(this.arg=s),S}},t})(n.exports);try{regeneratorRuntime=e}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})(pl)),pl.exports}jI();let Mb="warn",z=()=>{},je=()=>{},at=()=>{},Ke=()=>{};function Ml(n){if(typeof n>"u"?n=Mb:Mb=n,z=je=at=Ke=()=>{},typeof window.console<"u")switch(n){case"debug":z=console.debug.bind(window.console);case"info":je=console.info.bind(window.console);case"warn":at=console.warn.bind(window.console);case"error":Ke=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+n+"'")}}Ml();class WI{constructor(){this.language="en",this.dictionary=void 0}setup(e){this.language="en";let t;typeof window.navigator.languages=="object"?t=window.navigator.languages:t=[navigator.language||navigator.userLanguage];for(let r=0;r0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function n(){Ec=!0,window.removeEventListener("touchstart",n,!1)},!1);let Ol=10*(window.devicePixelRatio||1);var Sx;const Ob=typeof((Sx=navigator.keyboard)==null?void 0:Sx.lock)=="function";let D1=!1;try{const n=document.createElement("canvas");n.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',n.style.cursor.indexOf("url")===0?(je("Data URI scheme cursor supported"),D1=!0):at("Data URI scheme cursor not supported")}catch(n){Ke("Data URI scheme cursor test exception: "+n)}const zI=D1;let N1=!0;try{const n=document.createElement("div");n.style.visibility="hidden",n.style.overflow="scroll",document.body.appendChild(n);const e=document.createElement("div");n.appendChild(e);const t=n.offsetWidth-e.offsetWidth;n.parentNode.removeChild(n),N1=t!=0}catch(n){Ke("Scrollbar test exception: "+n)}const GI=N1;function Br(){return navigator&&!!/mac/i.exec(navigator.platform)}function Jn(){return navigator&&!!/win/i.exec(navigator.platform)}function an(){return navigator&&(!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform))}function ei(){return navigator&&navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}function $I(){var n=navigator.userAgent;return an()||n.indexOf("OculusBrowser")!=-1||n.indexOf("SamsungBrowser")!=-1?!1:n.indexOf("Windows")!=-1||n.indexOf("Mac")!=-1||n.indexOf("X11")!=-1||n.indexOf("Linux")!=-1}function YI(){var n=window.navigator.userAgent,e=n.indexOf("MSIE "),t=!1;e>0&&(t=parseInt(n.substring(e+5,n.indexOf(".",e)),10));var r=n.indexOf("Trident/");if(r>0){var i=n.indexOf("rv:");t=parseInt(n.substring(i+3,n.indexOf(".",i)),10)}var a=n.indexOf("Edge/");return a>0&&(t=parseInt(n.substring(a+5,n.indexOf(".",a)),10)),t}function Ll(){return navigator&&!!/firefox/i.exec(navigator.userAgent)}function Lb(){return ei()||Ll()?!1:navigator.clipboard&&typeof navigator.clipboard.read=="function"}function Db(){return an()||YI()?!1:document.exitPointerLock}function Nb(n){return n.changedTouches?n.changedTouches[0]:n.touches?n.touches[0]:n}function Jr(n){n.stopPropagation(),n.preventDefault()}let vl=!1,q1=null;document.captureElement=null;function Ur(n){if(vl)return;const e=new n.constructor(n.type,n);vl=!0,document.captureElement?document.captureElement.dispatchEvent(e):q1.dispatchEvent(e),vl=!1,n.stopPropagation(),e.defaultPrevented&&n.preventDefault(),n.type==="mouseup"&&B1()}function V1(){const n=document.getElementById("noVNC_mouse_capture_elem");n.style.cursor=window.getComputedStyle(document.captureElement).cursor}const K1=new MutationObserver(V1);function U1(n){if(n.setCapture)n.setCapture(),document.captureElement=n;else{B1();let e=document.getElementById("noVNC_mouse_capture_elem");e===null&&(e=document.createElement("div"),e.id="noVNC_mouse_capture_elem",e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.width="100%",e.style.height="100%",e.style.zIndex=1e4,e.style.display="none",document.body.appendChild(e),e.addEventListener("contextmenu",Ur),e.addEventListener("mousemove",Ur),e.addEventListener("mouseup",Ur)),document.captureElement=n,K1.observe(n,{attributes:!0}),V1(),e.style.display="",window.addEventListener("mousemove",Ur),window.addEventListener("mouseup",Ur)}}function B1(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;q1=document.captureElement,document.captureElement=null,K1.disconnect();const n=document.getElementById("noVNC_mouse_capture_elem");n.style.display="none",window.removeEventListener("mousemove",Ur),window.removeEventListener("mouseup",Ur)}}const O={XK_BackSpace:65288,XK_Tab:65289,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Kana_Shift:65326,XK_Eisu_toggle:65328,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Next:65366,XK_End:65367,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Mode_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Enter:65421,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Next:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_F12:65481,XK_F13:65482,XK_F14:65483,XK_F15:65484,XK_F16:65485,XK_F17:65486,XK_F18:65487,XK_F19:65488,XK_F20:65489,XK_F21:65490,XK_F22:65491,XK_F23:65492,XK_F24:65493,XK_F25:65494,XK_F26:65495,XK_F27:65496,XK_F28:65497,XK_F29:65498,XK_F30:65499,XK_F31:65500,XK_F32:65501,XK_F33:65502,XK_F34:65503,XK_F35:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_equal:61,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_BrightnessAdjust:269025083,XF86XK_AudioRewind:269025086,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Excel:269025116,XF86XK_LogOff:269025121,XF86XK_New:269025128,XF86XK_Open:269025131,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Reply:269025138,XF86XK_Save:269025143,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Word:269025161,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Music:269025170,XF86XK_AudioForward:269025175,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_Hibernate:269025192,XF86XK_AudioMicMute:269025202,XF86XK_Next_VMode:269024802};function ZI(n){return n>>>0}function Sn(n){return n|0}function qb(n){var e=32768,t=1<<31,r=16384,i=n|0;return(n&t)!=0&&(i*=-1,i|=e),i|=r,i}function wn(n){typeof n=="string"&&(n=[...n].map(t=>t.charCodeAt(0)));let e=0;for(let t=0;t(n^crypto.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16))}function vn(n,e,t){const r=t.getBoundingClientRect();let i={x:0,y:0};return n=r.right?i.x=r.width-1:i.x=n-r.left,e=r.bottom?i.y=r.height-1:i.y=e-r.top,n>window.innerWidth?i.x+=n-window.innerWidth:n<0&&(i.x=n+r.left),e>window.innerHeight?i.y+=e-window.innerHeight:e<0&&(i.y=e+r.top),i}class JI{constructor(){this._listeners=new Map}addEventListener(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}removeEventListener(e,t){this._listeners.has(e)&&this._listeners.get(e).delete(t)}dispatchEvent(e){return this._listeners.has(e.type)?(this._listeners.get(e.type).forEach(t=>t.call(this,e)),!e.defaultPrevented):!0}}const eA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wn=Object.fromEntries(Array.from(eA).map((n,e)=>[e,n.charCodeAt(0)])),tA=new TextDecoder,rA={base64Pad:"=",encode(n){let e=n.length,t=e%3,r=Math.floor(e/3)*4+(t&&t+1),i=Math.ceil(e/3)*4,a=new Uint8Array(i);for(let l=0,c=0;c>18],a[l+1]=Wn[u>>12&63],a[l+2]=Wn[u>>6&63],a[l+3]=Wn[u&63]}let s=tA.decode(new Uint8Array(a.buffer,0,r));return t===1&&(s+="=="),t===2&&(s+="="),s},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(n,e=0){let t=n.indexOf("=")-e;t<0&&(t=n.length-e);const r=(t>>2)*3+Math.floor(t%4/1.5),i=new Uint8Array(r);let a=0,s=0;for(let l=0,c=e;c=8&&(a-=8,f||(i[l++]=s>>a&255),s&=(1<0&&(this._reportInterval=setInterval(()=>{this.generateReport()},e))}disable(){this._enabled=!1,this._reportInterval&&(clearInterval(this._reportInterval),this._reportInterval=null),z("Performance logging disabled")}start(e){if(!this._enabled)return 0;const t=performance.now(),r=performance.now();return this._loggingStats.startCalls++,this._loggingStats.totalStartTime+=performance.now()-t,r}end(e,t){if(!this._enabled||t===0)return;const r=performance.now(),i=performance.now()-t,a=this._metrics[e];if(!a){at(`Unknown performance metric: ${e}`),this._loggingStats.endCalls++,this._loggingStats.totalEndTime+=performance.now()-r;return}a.total+=i,a.count++,a.max=Math.max(a.max,i),a.samples.push(i),a.samples.length>this._maxSamples&&a.samples.shift(),e==="frameInterval"&&(a.min=Math.min(a.min,i)),i>this._criticalFrameThreshold?Ke(`CRITICAL: ${e} took ${i.toFixed(2)}ms (threshold: ${this._criticalFrameThreshold.toFixed(2)}ms)`):i>this._slowFrameThreshold&&at(`SLOW: ${e} took ${i.toFixed(2)}ms (threshold: ${this._slowFrameThreshold.toFixed(2)}ms)`),this._loggingStats.endCalls++;const s=performance.now()-r;this._loggingStats.totalEndTime+=s;const l=this._metrics.loggingOverhead;l.total+=s,l.count++,l.max=Math.max(l.max,s),l.samples.push(s),l.samples.length>this._maxSamples&&l.samples.shift()}recordFrameInterval(){if(!this._enabled)return;const e=performance.now();this._lastFrameTime>0&&(e-this._lastFrameTime,this.end("frameInterval",this._lastFrameTime)),this._lastFrameTime=e}_calculateStats(e){var l,c;if(e.count===0)return{avg:0,max:0,p95:0,p99:0,min:0,count:0};const t=e.total/e.count,r=[...e.samples].sort((u,f)=>u-f),i=Math.floor(r.length*.95),a=Math.floor(r.length*.99),s={avg:t.toFixed(2),max:e.max.toFixed(2),p95:((l=r[i])==null?void 0:l.toFixed(2))||0,p99:((c=r[a])==null?void 0:c.toFixed(2))||0,count:e.count};return e.min!==void 0&&e.min!==1/0&&(s.min=e.min.toFixed(2)),s}generateReport(){if(!this._enabled)return;const e=performance.now();z("=== PERFORMANCE REPORT ==="),z(`Target: ${this._targetFps} FPS (${this._targetFrameTime.toFixed(2)}ms per frame)`),z("");const t={"Network & Data":["frameRead"],"Video Decoding":["videoDecode","videoDecodeQueue"],"Frame Processing":["frameProcessing","rectProcessing","screenRouting"],Rendering:["canvasRender","webglRender","videoFrameRender"],"Queue Operations":["asyncQueuePush","asyncFrameComplete"],"Image Operations":["imageLoad","imageBitmapCreate"],"Multi-Monitor":["broadcastChannelSend"],"Frame Timing":["frameInterval","endToEnd"],"Logging Performance":["loggingOverhead"]};let r=[];for(const[u,f]of Object.entries(t)){z(`--- ${u} ---`);for(const h of f){const p=this._calculateStats(this._metrics[h]);if(p.count>0){const _=parseFloat(p.avg)>this._targetFrameTime,g=parseFloat(p.avg)>this._criticalFrameThreshold;if(z(`${g?"CRITICAL":_?"SLOW":""} ${h}:`),z(` Avg: ${p.avg}ms | Max: ${p.max}ms | P95: ${p.p95}ms | P99: ${p.p99}ms | Count: ${p.count}`),h==="frameInterval"){z(` Min: ${p.min}ms`);const v=(1e3/parseFloat(p.avg)).toFixed(2);z(` Actual FPS: ${v}`)}(g||_)&&r.push({operation:h,avg:parseFloat(p.avg),max:parseFloat(p.max),severity:g?"CRITICAL":"SLOW"})}}z("")}r.length>0?(at("=== BOTTLENECKS IDENTIFIED ==="),r.sort((u,f)=>f.avg-u.avg),r.forEach((u,f)=>{const h=(u.avg/this._targetFrameTime*100).toFixed(0);at(`${f+1}. [${u.severity}] ${u.operation}: ${u.avg.toFixed(2)}ms avg (${h}% of frame budget), ${u.max.toFixed(2)}ms max`)}),at(""),at("Recommendations:"),r.slice(0,3).forEach((u,f)=>{at(`${f+1}. Optimize ${u.operation} - currently using ${(u.avg/this._targetFrameTime*100).toFixed(0)}% of frame time budget`)})):z("OK - No bottlenecks detected - performance within targets"),z(""),z("--- Logging Performance Summary ---");const i=this._loggingStats.startCalls>0?(this._loggingStats.totalStartTime/this._loggingStats.startCalls).toFixed(4):0,a=this._loggingStats.endCalls>0?(this._loggingStats.totalEndTime/this._loggingStats.endCalls).toFixed(4):0;z(`Start calls: ${this._loggingStats.startCalls} (avg: ${i}ms per call)`),z(`End calls: ${this._loggingStats.endCalls} (avg: ${a}ms per call)`),z(`Total logging overhead: ${(this._loggingStats.totalStartTime+this._loggingStats.totalEndTime).toFixed(2)}ms`);const s=this._calculateStats(this._metrics.loggingOverhead);if(s.count>0){z(`Per-operation overhead: avg ${s.avg}ms | max ${s.max}ms | p95 ${s.p95}ms`);const u=(parseFloat(s.avg)/this._targetFrameTime*100).toFixed(2);parseFloat(u)>5?at(`WARNING Logging overhead is ${u}% of frame budget - consider reducing logging frequency`):z(`OK Logging overhead is acceptable (${u}% of frame budget)`)}const l=performance.now()-e;this._loggingStats.reportGenerationTime+=l,this._loggingStats.reportCount++;const c=(this._loggingStats.reportGenerationTime/this._loggingStats.reportCount).toFixed(2);z(`Report generation time: ${l.toFixed(2)}ms (avg: ${c}ms)`),z("=== END PERFORMANCE REPORT ===")}reset(){for(const e of Object.values(this._metrics))e.total=0,e.count=0,e.max=0,e.min=1/0,e.samples=[];this._lastFrameTime=0,this._loggingStats={startCalls:0,endCalls:0,totalStartTime:0,totalEndTime:0,reportGenerationTime:0,reportCount:0},z("Performance metrics reset")}getMetrics(){const e={};for(const[t,r]of Object.entries(this._metrics))e[t]=this._calculateStats(r);return e}getLoggingStats(){const e=this._loggingStats.startCalls>0?this._loggingStats.totalStartTime/this._loggingStats.startCalls:0,t=this._loggingStats.endCalls>0?this._loggingStats.totalEndTime/this._loggingStats.endCalls:0,r=this._loggingStats.reportCount>0?this._loggingStats.reportGenerationTime/this._loggingStats.reportCount:0,i=this._loggingStats.totalStartTime+this._loggingStats.totalEndTime,a=this._loggingStats.endCalls>0?i/this._loggingStats.endCalls/this._targetFrameTime*100:0;return{startCalls:this._loggingStats.startCalls,endCalls:this._loggingStats.endCalls,avgStartOverhead:e.toFixed(4)+"ms",avgEndOverhead:t.toFixed(4)+"ms",totalOverhead:i.toFixed(2)+"ms",reportCount:this._loggingStats.reportCount,avgReportTime:r.toFixed(2)+"ms",overheadPercentage:a.toFixed(2)+"%",isAcceptable:a<5}}}const Rt=new nA(60);class iA{constructor(e,t){if(this._target=e,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d",{alpha:!1}),this._visibleCtx=this._targetCtx,this._enableCanvasBuffer=!1,this._backbuffer=t,this._drawCtx=this._backbuffer.getContext("2d"),this._prevDrawStyle="",this._antiAliasing=0,this._transparentOverlayImg=null,this._transparentOverlayRect=null}get width(){return this._target.width}get height(){return this._target.height}get enableCanvasBuffer(){return this._enableCanvasBuffer}set enableCanvasBuffer(e){if(e!==this._enableCanvasBuffer){if(this._enableCanvasBuffer=e,this._targetCtx=e?this._drawCtx:this._visibleCtx,e&&this._target){let t=this._visibleCtx.getImageData(0,0,this._target.width,this._target.height);this._drawCtx.putImageData(t,0,0),this._transparentOverlayImg&&this.drawImage(this._transparentOverlayImg,this._transparentOverlayRect.x,this._transparentOverlayRect.y,this._transparentOverlayRect.width,this._transparentOverlayRect.height,!0)}else if(!e&&this._target){let t=this._drawCtx.getImageData(0,0,this._target.width,this._target.height);this._visibleCtx.putImageData(t,0,0)}}}get antiAliasing(){return this._antiAliasing}set antiAliasing(e){this._antiAliasing=e}get transparentOverlayImg(){return this._transparentOverlayImg}set transparentOverlayImg(e){this._transparentOverlayImg=e,this.enableCanvasBuffer=!0}get transparentOverlayRect(){return this._transparentOverlayRect}set transparentOverlayRect(e){this._transparentOverlayRect=e}drawTransparentOverlayImg(){this._transparentOverlayImg&&this.drawImage(this._transparentOverlayImg,this._transparentOverlayRect.x,this._transparentOverlayRect.y,this._transparentOverlayRect.width,this._transparentOverlayRect.height,!0)}viewportChangeSize(e,t){const r=this._target;if(r.width===e&&r.height===t)return!1;let i=null;return r.width>0&&r.height>0&&(i=this._visibleCtx.getImageData(0,0,r.width,r.height)),r.width=e,r.height=t,i&&this._visibleCtx.putImageData(i,0,0),!0}rescale(e,t,r,i,a,s){const l=this._target.style;(l.width!==t||l.height!==r)&&(l.width=t,l.height=r),je("Pixel Ratio: "+window.devicePixelRatio+", VNC Scale: "+e+"VNC Res: "+i+"x"+a+"y");const c=Math.abs(Math.ceil(window.devicePixelRatio)),u=navigator.userAgent.toLowerCase().indexOf("firefox")>-1;this.antiAliasing===2||this.antiAliasing===0&&e===1&&l.imageRendering!=="pixelated"&&c===window.devicePixelRatio&&s>0?(l.imageRendering=u?"crisp-edges":"pixelated",z("Smoothing disabled")):(this.antiAliasing===1||this.antiAliasing===0&&e!==1&&l.imageRendering!=="auto")&&(l.imageRendering="auto",z("Smoothing enabled"))}resize(e,t,r){this._prevDrawStyle="";let i=this._backbuffer;if(i!==void 0&&(r.length>0&&(e=r[0].serverWidth,t=r[0].serverHeight),i.width!==e||i.height!==t)){let a=null;i.width>0&&i.height>0&&(a=this._drawCtx.getImageData(0,0,i.width,i.height)),i.width!==e&&(i.width=e),i.height!==t&&(i.height=t),a&&this._drawCtx.putImageData(a,0,0)}}blitImage(e,t,r,i,a,s){let l;ArrayBuffer.isView(a)?l=new Uint8ClampedArray(a.buffer,a.byteOffset+s,r*i*4):l=new Uint8ClampedArray(a,a.length+s,r*i*4);let c=new ImageData(l,r,i);this._targetCtx.putImageData(c,e,t)}blitQoi(e,t,r){this._targetCtx.putImageData(e,t,r)}clearRect(e,t,r,i){this._targetCtx.clearRect(e,t,r,i)}copyImage(e,t,r,i,a,s){const l=this._targetCtx;let c=this._enableCanvasBuffer?this._backbuffer:this._target;l.mozImageSmoothingEnabled=!1,l.webkitImageSmoothingEnabled=!1,l.msImageSmoothingEnabled=!1,l.imageSmoothingEnabled=!1,l.drawImage(c,e,t,a,s,r,i,a,s)}drawImage(e,t,r,i,a,s=!1){const l=s&&this._enableCanvasBuffer?this._visibleCtx:this._targetCtx;e.width!==i||e.height!==a?l.drawImage(e,t,r,i,a):l.drawImage(e,t,r)}drawVideoFrame(e,t,r,i,a){const s=Rt.start("canvasRender");this._targetCtx.drawImage(e,t,r,i,a,0,0,i,a),Rt.end("canvasRender",s),e.close()}fillRect(e,t,r,i,a){this._setFillColor(a),this._targetCtx.fillRect(e,t,r,i)}putImage(e,t,r){this._targetCtx.putImageData(e,t,r)}_writeCtxBuffer(){this._backbuffer.width>0&&this._visibleCtx.drawImage(this._backbuffer,0,0)}_setFillColor(e){const t="rgb("+e[0]+","+e[1]+","+e[2]+")";t!==this._prevDrawStyle&&(this._targetCtx.fillStyle=t,this._prevDrawStyle=t)}dispose(){this._visibleCtx&&this._target&&this._visibleCtx.clearRect(0,0,this._target.width,this._target.height)}}const rn=class rn{constructor(e,t,r){if(this._canvas2D=e,this.gl=t,this._webglCanvas=r,this._lastWidth=0,this._lastHeight=0,this._isWebGL2=t instanceof WebGL2RenderingContext,this._watermarkCanvas=document.createElement("canvas"),this._watermarkCanvas.width=0,this._watermarkCanvas.height=0,this._watermarkCanvas.style.position="absolute",this._watermarkCanvas.style.left="0",this._watermarkCanvas.style.top="0",this._watermarkCanvas.style.pointerEvents="none",this._watermarkCanvas.style.zIndex="2",this._watermarkCanvas.style.width="0px",this._watermarkCanvas.style.height="0px",this._watermarkCtx=this._watermarkCanvas.getContext("2d"),r.parentNode){const i=r.parentNode;i instanceof Element&&window.getComputedStyle(i).position==="static"&&at("WebGLRenderer: parent element uses position:static; watermark overlay may be misaligned. Expected relative/absolute/fixed."),i.appendChild(this._watermarkCanvas)}this._logWebGLInfo(t),this._initShaders(t),this._initGeometry(t),this._initTexture(t),this._configureGLState(t,r)}_logWebGLInfo(e){je("WebGL Renderer Initialized"),je(`WebGL Version: ${e.getParameter(e.VERSION)}`),je(`WebGL2: ${this._isWebGL2}`),je(`WebGL Color: ${e.getParameter(e.RED_BITS)}, ${e.getParameter(e.GREEN_BITS)}, ${e.getParameter(e.BLUE_BITS)}, ${e.getParameter(e.ALPHA_BITS)}`),je(`WebGL Depth: ${e.getParameter(e.DEPTH_BITS)}, Stencil: ${e.getParameter(e.STENCIL_BITS)}`),je(`WebGL GLSL Version: ${e.getParameter(e.SHADING_LANGUAGE_VERSION)}`),je(`WebGL Vendor: ${e.getParameter(e.VENDOR)}`),je(`WebGL Renderer: ${e.getParameter(e.RENDERER)}`),je(`WebGL Max Texture Size: ${e.getParameter(e.MAX_TEXTURE_SIZE)}`),je(`WebGL Max Vertex Attrib: ${e.getParameter(e.MAX_VERTEX_ATTRIBS)}`),je(`WebGL Extensions: ${e.getSupportedExtensions()}`)}_initShaders(e){const t=this._compileShader(e,e.VERTEX_SHADER,rn.vertexShaderSource),r=this._compileShader(e,e.FRAGMENT_SHADER,rn.fragmentShaderSource);if(this.shaderProgram=e.createProgram(),e.attachShader(this.shaderProgram,t),e.attachShader(this.shaderProgram,r),e.linkProgram(this.shaderProgram),!e.getProgramParameter(this.shaderProgram,e.LINK_STATUS)){const i=e.getProgramInfoLog(this.shaderProgram);throw new Error(`Shader program linking failed: ${i}`)}e.useProgram(this.shaderProgram),e.deleteShader(t),e.deleteShader(r)}_initGeometry(e){const t=new Float32Array([-1,-1,-1,1,1,1,1,-1]);this._vertexBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW);const r=e.getAttribLocation(this.shaderProgram,"xy");e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(r),this._xyLocation=r}_initTexture(e){this._texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this._texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}_configureGLState(e,t){e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.DITHER),e.disable(e.BLEND),e.viewport(0,0,t.width,t.height)}get width(){return this._canvas2D.width}get height(){return this._canvas2D.height}get enableCanvasBuffer(){return this._canvas2D.enableCanvasBuffer}set enableCanvasBuffer(e){this._canvas2D.enableCanvasBuffer=e}get antiAliasing(){return this._canvas2D.antiAliasing}set antiAliasing(e){this._canvas2D.antiAliasing=e}get transparentOverlayImg(){return this._canvas2D.transparentOverlayImg}set transparentOverlayImg(e){this._canvas2D.transparentOverlayImg=e,this._canvas2D.enableCanvasBuffer=!0}get transparentOverlayRect(){return this._canvas2D.transparentOverlayRect}set transparentOverlayRect(e){this._canvas2D.transparentOverlayRect=e}_compileShader(e,t,r){const i=e.createShader(t);if(e.shaderSource(i,r),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS)){const a=t===e.VERTEX_SHADER?"Vertex":"Fragment",s=e.getShaderInfoLog(i);throw e.deleteShader(i),new Error(`${a} shader compilation failed: ${s}`)}return i}drawTransparentOverlayImg(){const e=this._canvas2D.transparentOverlayImg,t=this._canvas2D.transparentOverlayRect,r=this._canvas2D._target;if(!e||!t){this._watermarkCtx&&r&&this._watermarkCtx.clearRect(0,0,r.width,r.height);return}const i=r.width,a=r.height;(this._watermarkCanvas.width!==i||this._watermarkCanvas.height!==a)&&(this._watermarkCanvas.width=i,this._watermarkCanvas.height=a);const s=r.style;this._watermarkCanvas.style.width!==s.width&&(this._watermarkCanvas.style.width=s.width),this._watermarkCanvas.style.height!==s.height&&(this._watermarkCanvas.style.height=s.height),this._watermarkCtx.clearRect(0,0,i,a),e.width!==t.width||e.height!==t.height?this._watermarkCtx.drawImage(e,t.x,t.y,t.width,t.height):this._watermarkCtx.drawImage(e,t.x,t.y)}viewportChangeSize(e,t){const r=this._canvas2D.viewportChangeSize(e,t),i=this._canvas2D._target.style;return this._watermarkCanvas.style.width=i.width,this._watermarkCanvas.style.height=i.height,r}rescale(e,t,r,i,a,s){this._canvas2D.rescale(e,t,r,i,a,s);const l=this._canvas2D._target.style;this._watermarkCanvas.style.width=l.width,this._watermarkCanvas.style.height=l.height}resize(e,t,r){this._canvas2D.resize(e,t,r)}blitImage(e,t,r,i,a,s){this._canvas2D.blitImage(e,t,r,i,a,s)}blitQoi(e,t,r){this._canvas2D.blitQoi(e,t,r)}clearRect(e,t,r,i){this._canvas2D.clearRect(e,t,r,i)}copyImage(e,t,r,i,a,s){this._canvas2D.copyImage(e,t,r,i,a,s)}drawImage(e,t,r,i,a){this._canvas2D.drawImage(e,t,r,i,a)}drawVideoFrame(e,t,r,i,a){const s=Rt.start("webglRender"),l=this.gl,c=this._canvas2D._target.width,u=this._canvas2D._target.height;(this._lastWidth!==c||this._lastHeight!==u)&&this._resizeWebGLCanvas(c,u),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,e);const f=u-r-a;l.viewport(t,f,i,a),l.drawArrays(l.TRIANGLE_FAN,0,4),e.close(),Rt.end("webglRender",s)}_resizeWebGLCanvas(e,t){this._webglCanvas.width=e,this._webglCanvas.height=t;const r=this._canvas2D._target.style;this._webglCanvas.style.width=r.width,this._webglCanvas.style.height=r.height,this._watermarkCanvas.style.width=r.width,this._watermarkCanvas.style.height=r.height,this.gl.viewport(0,0,e,t),this._lastWidth=e,this._lastHeight=t}fillRect(e,t,r,i,a){this._canvas2D.fillRect(e,t,r,i,a)}_writeCtxBuffer(){this._canvas2D._writeCtxBuffer()}dispose(){var t,r,i;const e=this.gl;this._texture&&(e.deleteTexture(this._texture),this._texture=null),this._vertexBuffer&&(e.deleteBuffer(this._vertexBuffer),this._vertexBuffer=null),this.shaderProgram&&(e.deleteProgram(this.shaderProgram),this.shaderProgram=null),(t=this._webglCanvas)!=null&&t.parentNode&&this._webglCanvas.parentNode.removeChild(this._webglCanvas),(r=this._watermarkCanvas)!=null&&r.parentNode&&this._watermarkCanvas.parentNode.removeChild(this._watermarkCanvas),(i=this._canvas2D)==null||i.dispose(),this._canvas2D=null,this.gl=null,this._webglCanvas=null,this._watermarkCanvas=null,this._watermarkCtx=null}};Ni(rn,"vertexShaderSource",` + attribute vec2 xy; + varying highp vec2 uv; + + void main(void) { + gl_Position = vec4(xy, 0.0, 1.0); + uv = vec2((1.0 + xy.x) * 0.5, (1.0 - xy.y) * 0.5); + } + `),Ni(rn,"fragmentShaderSource",` + varying highp vec2 uv; + uniform sampler2D texture; + + void main(void) { + gl_FragColor = texture2D(texture, uv); + } + `);let Nl=rn;class aA{constructor(e,t,r,i="canvas2d"){z(">> Display.constructor"),this._asyncFrameQueue=[],this._maxAsyncFrameQueue=3,this._clearAsyncQueue(),this._syncFrameQueue=[],this._lastTransparentRectId="",this._flushing=!1,this._fbWidth=0,this._fbHeight=0,this._renderMs=0,this._backbuffer=document.createElement("canvas"),this._target=e;const a=new iA(e,this._backbuffer);if(i==="webgl"){const s=document.createElement("canvas"),l=s.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance",desynchronized:!0,preserveDrawingBuffer:!1})||s.getContext("webgl",{alpha:!1,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance",desynchronized:!0,preserveDrawingBuffer:!1});l?(s.width=0,s.height=0,s.style.position="absolute",s.style.left="0",s.style.top="0",s.style.pointerEvents="none",s.style.zIndex="1",s.style.width="0px",s.style.height="0px",e.parentNode&&e.parentNode.appendChild(s),this._renderer=new Nl(a,l,s),je("WebGL renderer initialized.")):(this._renderer=a,je("WebGL unavailable, falling back to Canvas2DRenderer."))}else this._renderer=a,je("Canvas2D renderer initialized.");z("User Agent: "+navigator.userAgent),this._flipCnt=0,this._lastFlip=Date.now(),this._droppedFrames=0,this._droppedFramesRate=0,this._droppedFramesCnt=0,this._droppedRects=0,this._forcedFrameCnt=0,this._missingFlipRect=0,this._lateFlipRect=0,this._frameStatsInterval=setInterval((function(){let s=Date.now()-this._lastFlip;if(s>0){if(this._fps=(this._flipCnt/(s/1e3)).toFixed(2),this._droppedFrames>this._droppedFramesCnt){let l=this._droppedFrames-this._droppedFramesCnt;this._droppedFramesRate=(l/(s/1e3)).toFixed(2)}else this._droppedFramesRate=0;this._droppedFramesCnt=this._droppedFrames}z("Dropped Frames: "+this._droppedFrames+" Dropped Rects: "+this._droppedRects+" Forced Frames: "+this._forcedFrameCnt+" Missing Flips: "+this._missingFlipRect+" Late Flips: "+this._lateFlipRect),this._flipCnt=0,this._lastFlip=Date.now()}).bind(this),5e3),this._maxScreens=4,this._scale=1,this._clipViewport=!1,this._fps=0,this._isPrimaryDisplay=r,this._screenID=X1(),this._screens=[{screenID:this._screenID,screenIndex:0,width:this._target.width,height:this._target.height,serverWidth:0,serverHeight:0,serverReportedWidth:0,serverReportedHeight:0,x:0,y:0,scale:1,relativePosition:0,relativePositionX:0,relativePositionY:0,pixelRatio:window.devicePixelRatio,containerHeight:this._target.parentNode.offsetHeight,containerWidth:this._target.parentNode.offsetWidth,channel:null,x2:0,y2:0}],this._threading=!0,this._primaryChannel=null,this._portRelayWorker=null,this._encodedFramePort=null,this._localDecoder=null,this._localDecoderCodec=null,this._localDecoderW=0,this._localDecoderH=0,this._localDecoderMeta=new Map,this._localDecoderTs=0,this._rfb=t,this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},this.onflush=()=>{},this._broadcastChannel=new BroadcastChannel(`channel_${this.screenID}`),this._isPrimaryDisplay||this._broadcastChannel.addEventListener("message",this._handleSecondaryDisplayMessage.bind(this)),z("<< Display.constructor")}get enableCanvasBuffer(){return this._renderer.enableCanvasBuffer}set enableCanvasBuffer(e){this._renderer.enableCanvasBuffer=e}get screens(){return this._screens}get screenID(){return this._screenID}get screenIndex(){return!this._isPrimaryDisplay&&this._screens[0].screenIndex==0?-1:this._screens[0].screenIndex}get antiAliasing(){return this._renderer.antiAliasing}set antiAliasing(e){this._renderer.antiAliasing=e,this._rescale(this._scale)}get scale(){return this._scale}set scale(e){this._rescale(e)}get threading(){return this._threading}set threading(e){this._threading=e}get clipViewport(){return this._clipViewport}set clipViewport(e){this._clipViewport=e;const t=this._screens[0];this.viewportChangeSize(t.width,t.height),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}get renderMs(){return this._renderMs}set renderMs(e){this._renderMs=e}get fps(){return this._fps}get droppedFps(){return this._droppedFramesRate}getClientRelativeCoordinates(e,t){for(let r=0;r=this._screens[r].x&&e<=this._screens[r].x+this._screens[r].serverWidth&&t>=this._screens[r].y&&t<=this._screens[r].y+this._screens[r].serverHeight)return{screenIndex:r,x:e-this._screens[r].x,y:t-this._screens[r].y}}getServerRelativeCoordinates(e,t,r){return e>=0&&e0&&this._screens[u].serverReportedHeight>0&&(s||this._screens[u].serverReportedWidth!==this._screens[u].serverWidth||this._screens[u].serverReportedHeight!==this._screens[u].serverHeight)&&!t&&!r)p=this._screens[u].serverReportedHeight,h=this._screens[u].serverReportedWidth;else if(h>1280&&!a&&e==1&&l==Ce.pseudoEncodingStreamingModeJpegWebp)p=Math.floor(1280*(p/h)),h=1280;else if(e==0&&!a&&l==Ce.pseudoEncodingStreamingModeJpegWebp)h=1280,p=720;else if(i)h=Math.floor(h*this._screens[u].pixelRatio),p=Math.floor(p*this._screens[u].pixelRatio),1/this._screens[u].pixelRatio;else if(((m=this._renderer)==null?void 0:m.antiAliasing)===0&&this._screens[u].pixelRatio>1&&h<1e3&h>0){je("Device Pixel ratio: "+this._screens[u].pixelRatio+" Reported Resolution: "+h+"x"+p);let v=1.5;this._screens[u].pixelRatio>2&&(v=2);let S=h*this._screens[u].pixelRatio*(1/v)/h;h=h*S,p=p*S,je("Small device with hDPI screen detected, auto scaling at "+S+" to "+h+"x"+p)}let _=this._screens[u].containerHeight/p,g=this._screens[u].containerWidth/h;for(this._screens[u].height=Math.floor(p*_),this._screens[u].width=Math.floor(h*g),this._screens[u].serverWidth=h,this._screens[u].serverHeight=p,this._screens[u].scale=Math.min(_,g),u=0;u0){const g=this._screens[_];if(g.serverHeight!==u||g.serverWidth!==c||g.width!==t||g.height!==r||g.containerHeight!==a||g.containerWidth!==s||g.scale!==l||g.pixelRatio!==i||g.x!==f||g.y!==h)return g.width=t,g.height=r,g.containerHeight=a,g.containerWidth=s,g.pixelRatio=i,g.scale=l,g.serverWidth=c,g.serverHeight=u,g.x=f,g.y=h,g.x2=g.x+g.serverWidth,g.y2=g.y+g.serverHeight,!0}else{for(let m=0;m{if(m.data.type==="port"){const v=this._screens[m.data.screenIndex];v&&(v.encodedFramePort=m.data.port,je(`[PRIMARY] encodedFramePort established for screen ${m.data.screenIndex}`))}}),this._portRelayWorker.port.postMessage({type:"primary_ready",screenIndex:g.screenIndex}),g.screenIndex}return!1}removeScreen(e){var r,i;let t=!1;if(this._isPrimaryDisplay){for(let a=1;a0&&((r=this._screens[a].channel)==null||r.postMessage({eventType:"registered",screenIndex:a}),(i=this._portRelayWorker)==null||i.port.postMessage({type:"primary_ready",screenIndex:a}));return t}else throw new Error("Secondary screens only allowed on primary display.")}viewportChangePos(e,t){const r=this._screens[0];e=Math.floor(e),t=Math.floor(t),this._clipViewport||(e=-r.width,t=-r.height);const i=r.x+r.width-1,a=r.y+r.height-1;e<0&&r.x+e<0&&(e=-r.x),i+e>=this._fbWidth&&(e-=i+e-this._fbWidth+1),r.y+t<0&&(t=-r.y),a+t>=this._fbHeight&&(t-=a+t-this._fbHeight+1),!(e===0&&t===0)&&z("viewportChange deltaX: "+e+", deltaY: "+t)}viewportChangeSize(e,t){var r;if((!this._clipViewport&&this._screens.length===1||typeof e>"u"||typeof t>"u")&&(z("Setting viewport to full display region"),e=this._fbWidth,t=this._fbHeight),e=Math.floor(e),t=Math.floor(t),e>this._fbWidth&&(e=this._fbWidth),t>this._fbHeight&&(t=this._fbHeight),(r=this._renderer)!=null&&r.viewportChangeSize(e,t)){const i=this._screens[0];i.serverWidth=e,i.serverHeight=t,this.viewportChangePos(0,0),this._rescale(this._scale)}}absX(e){return this._scale===0?0:Sn(e/this._scale+this._screens[0].x)}absY(e){return this._scale===0?0:Sn(e/this._scale+this._screens[0].y)}resize(e,t){var i;this._fbWidth=e,this._fbHeight=t,(i=this._renderer)==null||i.resize(e,t,this._screens);const r=this._screens[0];this.viewportChangeSize(r.serverWidth,r.serverHeight),this.viewportChangePos(0,0)}flip(e,t){this._asyncRenderQPush({type:"flip",frame_id:e,rect_cnt:t,screenLocations:[{screenIndex:0,x:0,y:0}]})}pending(){return this._asyncFrameQueue[this._maxAsyncFrameQueue-1][0]>0}flush(e=!0){this._asyncFrameComplete(0,!0),e&&this.onflush()}clear(){this._clearAsyncQueue()}dispose(){this._frameStatsInterval&&(clearInterval(this._frameStatsInterval),this._frameStatsInterval=null),this.clear(),this._renderer&&(this._renderer.dispose(),this._renderer=null)}fillRect(e,t,r,i,a,s,l){var c;if(l)(c=this._renderer)==null||c.fillRect(e,t,r,i,a);else{let u={type:"fill",x:e,y:t,width:r,height:i,color:a,frame_id:s};this._processRectScreens(u),this._asyncRenderQPush(u)}}copyImage(e,t,r,i,a,s,l,c){var u;if(c)(u=this._renderer)==null||u.copyImage(e,t,r,i,a,s);else{let f={type:"copy",oldX:e,oldY:t,x:r,y:i,width:a,height:s,frame_id:l};this._processRectScreens(f),this._asyncRenderQPush(f)}}_handleVidChunk(e,t){let r=e[0],i=e[1];e[2].close(),r.img=t.image,i._asyncRenderQPush(r)}imageRect(e,t,r,i,a,s,l){if(r===0||i===0)return;let c={type:"img",img:null,x:e,y:t,width:r,height:i,frame_id:l,mime:a};if(this._processRectScreens(c),c.inSecondary){let u="data: "+a+";base64,"+rA.encode(s);if(c.inPrimary){const f=new Image;c.img=f,c.type="img",f.src=u}else c.type="_img";c.inSecondary&&(c.src=u),this._asyncRenderQPush(c)}else if(typeof ImageDecoder<"u"&&this._threading){let u=new ImageDecoder({data:s,type:a});c.type="vid",u.decode().then(this._handleVidChunk.bind(null,[c,this,u]))}else{const u=new Blob([s],{type:a});createImageBitmap(u).then(f=>{c.type="bitmap",c.img=f,this._asyncRenderQPush(c)})}}enqueueVideoFrameRect(e,t,r,i,a,s){const l={type:"video_frame",screenId:e,frame:null,x:r,y:i,width:a,height:s,frame_id:t};e=a?r=e/i.serverWidth:r=t/i.serverHeight}this._rescale(r)}_handleSecondaryDisplayMessage(e){if(!(this._isPrimaryDisplay||!e.data))switch(e.data.eventType){case"rect":let t=e.data.rect;switch(t.screenLocations=[t.screenLocations[e.data.screenLocationIndex]],t.screenLocations[0].screenIndex=0,t.type){case"img":case"_img":t.img=new Image,t.img.src=t.src,t.type="img";break;case"transparent":createImageBitmap(t.arr).then((function(i){this._renderer.transparentOverlayImg=i}).bind(this)),this._renderer.transparentOverlayRect=t;break}this._syncFrameQueue.push(t),this._syncFrameQueue.length>5e3&&(this._syncFrameQueue.shift(),this._droppedRects++);break;case"frameComplete":window.requestAnimationFrame(()=>{this._pushSyncRects()});break;case"registered":if(!this._isPrimaryDisplay){const r=e.data.screenIndex;this._screens[0].screenIndex=r,je(`Screen with index (${r}) successfully registered with the primary display.`),this._screens.length>0&&this.resize(this._screens[0].serverWidth,this._screens[0].serverHeight);const i=new SharedWorker(new URL(""+new URL("port-relay-worker-DKkhJcwC.js",import.meta.url).href,import.meta.url));i.port.start(),i.port.onmessage=a=>{a.data.type==="port"&&(this._encodedFramePort=a.data.port,this._encodedFramePort.start(),this._encodedFramePort.onmessage=this._handleEncodedFrame.bind(this),je("[SECONDARY] encodedFramePort established"))},i.port.postMessage({type:"secondary_ready",screenIndex:r})}break}}_pushSyncRects(){var t,r,i;let e=0;e:for(;this._syncFrameQueue.length>0;){const a=this._syncFrameQueue[0],s=a.screenLocations[0];switch(a.type){case"copy":this.copyImage(s.oldX,s.oldY,s.x,s.y,a.width,a.height,a.frame_id,!0);break;case"fill":this.fillRect(s.x,s.y,a.width,a.height,a.color,a.frame_id,!0);break;case"blit":this.blitImage(s.x,s.y,a.width,a.height,a.data,0,a.frame_id,!0);break;case"blitQ":this.blitQoi(s.x,s.y,a.width,a.height,a.data,0,a.frame_id,!0);break;case"img":if(a.img.complete)this.drawImage(a.img,s.x,s.y,a.width,a.height);else if(this._syncFrameQueue.length>5e3)this._syncFrameQueue.shift(),this._droppedRects++;else break e;break;case"vid":this.drawImage(a.img,s.x,s.y,a.width,a.height),a.img.close();break;case"bitmap":this.drawImage(a.img,s.x,s.y,a.width,a.height),a.img.close();break;case"video_frame":this.drawVideoFrame(a.frame,s.x,s.y,a.width,a.height);break;default:this._syncFrameQueue.shift();continue}e++,this._syncFrameQueue.shift()}(t=this._renderer)!=null&&t.enableCanvasBuffer&&e>0&&((r=this._renderer)==null||r._writeCtxBuffer(),(i=this._renderer)==null||i.drawTransparentOverlayImg()),this._syncFrameQueue.length>0&&window.requestAnimationFrame(()=>{this._pushSyncRects()})}_flushRectsScreen(e){for(let t=0;t=0)e.type=="flip"&&(this._asyncFrameQueue[t][1]!==0&&at("Redundant flip rect, current rect_cnt: "+this._asyncFrameQueue[t][1]+", new rect_cnt: "+e.rect_cnt),this._asyncFrameQueue[t][1]+=e.rect_cnt,e.rect_cnt==0&&at("Invalid rect count")),this._asyncFrameQueue[t][1]>0&&this._asyncFrameQueue[t][2].length>=this._asyncFrameQueue[t][1]&&this._asyncFrameComplete(t);else if(e.frame_idi){if(this._asyncFrameQueue[0][3]==!0)at("Forced frame to canvas"),this._pushAsyncFrame(!0),this._droppedFrames+=e.frame_id-(i+1),this._forcedFrameCnt++;else{at("Old frame dropped");const c=this._asyncFrameQueue[0];for(const u of c[2])u.type==="video_frame"&&((s=u.frame)==null||s.close());this._asyncFrameQueue.shift(),this._droppedFrames+=e.frame_id-i}let l=e.type=="flip"?e.rect_cnt:0;this._asyncFrameQueue.push([e.frame_id,l,[e],l==1,0,0])}}_clearAsyncQueue(){var e;for(const t of this._asyncFrameQueue)for(const r of t[2])r.type==="video_frame"&&((e=r.frame)==null||e.close());this._droppedFrames+=this._asyncFrameQueue.length,this._asyncFrameQueue=[];for(let t=0;t=this._asyncFrameQueue.length)return;let r=this._asyncFrameQueue[e][4];if(t)for(this._asyncFrameQueue[e][1]==0?this._missingFlipRect++:this._asyncFrameQueue[e][1]!==this._asyncFrameQueue[e][2].length&&(this._droppedRects+=this._asyncFrameQueue[e][1]-this._asyncFrameQueue[e][2].length,this._asyncFrameQueue[e][2].length>this._asyncFrameQueue[e][1]&&at("Frame has more rects than the reported rect_cnt."));r{this._asyncFrameComplete(e)}),this._asyncFrameQueue[e][4]=r;return}r++}this._asyncFrameQueue[e][4]=r,this._asyncFrameQueue[e][3]=!0,t&&e==0?this._pushAsyncFrame(!0):window.requestAnimationFrame(()=>{this._pushAsyncFrame()})}_pushAsyncFrame(e=!1){var t,r,i,a,s,l,c,u;if(Rt.recordFrameInterval(),this._asyncFrameQueue[0][3]||e){const f=Rt.start("frameProcessing");let h=this._asyncFrameQueue[0][2],p=this._asyncFrameQueue.shift()[0];this._asyncFrameQueue.length{Rt.end("imageBitmapCreate",E);const R=Rt.start("broadcastChannelSend");this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:{type:"bitmap",img:C,x:v.x,y:v.y,width:v.width,height:v.height,frame_id:v.frame_id,screenLocations:v.screenLocations},screenLocationIndex:b},[C]),Rt.end("broadcastChannelSend",R),z(`[PRIMARY] ImageBitmap posted to secondary screen ${S.screenIndex}`)}).catch(C=>{Rt.end("imageBitmapCreate",E),Ke(`[PRIMARY] Failed to create ImageBitmap from VideoFrame: ${C.message}`)})}else v.frame.close();else at("[PRIMARY] VideoFrame has null format, skipping");break;case"img":case"_img":_++,this._screens[S.screenIndex].channel&&this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:{type:"img",img:null,x:v.x,y:v.y,width:v.width,height:v.height,frame_id:v.frame_id,screenLocations:v.screenLocations,src:v.src},screenLocationIndex:b});break;default:if(_++,v instanceof HTMLImageElement||(v==null?void 0:v.img)instanceof HTMLImageElement)at("Wrong rect type: "+v.type);else if(this._screens[S.screenIndex].channel)try{this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:v,screenLocationIndex:b})}catch(E){Ke(`Failed to post rect: ${E.message}, rect type: ${v.type}`)}}}}}if((a=this._renderer)!=null&&a.enableCanvasBuffer&&(g>0&&((s=this._renderer)==null||s._writeCtxBuffer()),(l=this._renderer)!=null&&l.transparentOverlayImg)){g>0&&((c=this._renderer)==null||c.drawTransparentOverlayImg());const m=(u=this._renderer)==null?void 0:u.transparentOverlayRect;if(_>0&&this._lastTransparentRectId!==m.hash_id)for(let v=1;v0)for(let m=1;m0&&window.requestAnimationFrame(()=>{this._pushAsyncFrame()})}else this._asyncFrameQueue[0][1]>0&&this._asyncFrameQueue[0][1]===this._asyncFrameQueue[0][2].length&&(this._asyncFrameQueue[0][5]+=1,this._asyncFrameQueue[0][5]>5&&this._pushAsyncFrame(!0))}_handleEncodedFrame(e){const{codec:t,keyFrame:r,data:i,x:a,y:s,width:l,height:c,frameId:u}=e.data;(!this._localDecoder||this._localDecoderCodec!==t||this._localDecoderW!==l||this._localDecoderH!==c)&&(this._localDecoder&&(this._localDecoder.close(),this._localDecoderMeta.clear()),this._localDecoder=new VideoDecoder({output:h=>{var _;const p=this._localDecoderMeta.get(h.timestamp);this._localDecoderMeta.delete(h.timestamp),p?(this.drawVideoFrame(h,p.x,p.y,p.width,p.height),(_=this._renderer)!=null&&_.enableCanvasBuffer&&(this._renderer._writeCtxBuffer(),this._renderer.drawTransparentOverlayImg())):h.close()},error:h=>{Ke("Secondary VideoDecoder error:",h),this._localDecoder=null}}),this._localDecoder.configure({codec:t,displayAspectWidth:l,displayAspectHeight:c,optimizeForLatency:!0}),this._localDecoderCodec=t,this._localDecoderW=l,this._localDecoderH=c);const f=++this._localDecoderTs;this._localDecoderMeta.set(f,{x:a,y:s,width:l,height:c,frameId:u}),this._localDecoder.decode(new EncodedVideoChunk({type:r?"key":"delta",data:i,timestamp:f}))}_processRectScreens(e){let t=[];if(e.type==="video_frame"){const r=this._screens[e.screenId];let i={x:0-(r.x-e.x),y:0-(r.y-e.y),screenIndex:e.screenId};t.push(i)}else{e.inPrimary=!1,e.inSecondary=!1;for(let r=0;ri.x2||i.x>e.x+e.width)&&(e.y>i.y2||i.y>e.y+e.height))){let a={x:0-(i.x-e.x),y:0-(i.y-e.y),screenIndex:r};e.type==="copy"&&(a.oldX=0-(i.x-e.oldX),a.oldY=0-(i.y-e.oldY)),t.push(a),r===0?e.inPrimary=!0:e.inSecondary=!0}}}e.screenLocations=t}_rescale(e){var a;this._scale=e;const t=this._screens[0],r=e*t.serverWidth+"px",i=e*t.serverHeight+"px";(a=this._renderer)==null||a.rescale(e,r,i,t.serverWidth,t.serverHeight,t.width),requestAnimationFrame(()=>{this._pushAsyncFrame()})}}var rr={},ml,Vb;function H1(){return Vb||(Vb=1,ml=(e,t,r,i)=>{let a=e&65535|0,s=e>>>16&65535|0,l=0;for(;r!==0;){l=r>2e3?2e3:r,r-=l;do a=a+t[i++]|0,s=s+a|0;while(--l);a%=65521,s%=65521}return a|s<<16|0}),ml}var yl,Kb;function Q1(){if(Kb)return yl;Kb=1;const n=()=>{let r,i=[];for(var a=0;a<256;a++){r=a;for(var s=0;s<8;s++)r=r&1?3988292384^r>>>1:r>>>1;i[a]=r}return i},e=new Uint32Array(n());return yl=(r,i,a,s)=>{const l=e,c=s+a;r^=-1;for(let u=s;u>>8^l[(r^i[u])&255];return r^-1},yl}var bl,Ub;function sA(){if(Ub)return bl;Ub=1;const n=16209,e=16191;return bl=function(r,i){let a,s,l,c,u,f,h,p,_,g,m,v,b,S,x,E,C,R,P,F,k,q,ce,j;const K=r.state;a=r.next_in,ce=r.input,s=a+(r.avail_in-5),l=r.next_out,j=r.output,c=l-(i-r.avail_out),u=l+(r.avail_out-257),f=K.dmax,h=K.wsize,p=K.whave,_=K.wnext,g=K.window,m=K.hold,v=K.bits,b=K.lencode,S=K.distcode,x=(1<>>24,m>>>=R,v-=R,R=C>>>16&255,R===0)j[l++]=C&65535;else if(R&16){P=C&65535,R&=15,R&&(v>>=R,v-=R),v<15&&(m+=ce[a++]<>>24,m>>>=R,v-=R,R=C>>>16&255,R&16){if(F=C&65535,R&=15,vf){r.msg="invalid distance too far back",K.mode=n;break e}if(m>>>=R,v-=R,R=l-c,F>R){if(R=F-R,R>p&&K.sane){r.msg="invalid distance too far back",K.mode=n;break e}if(k=0,q=g,_===0){if(k+=h-R,R2;)j[l++]=q[k++],j[l++]=q[k++],j[l++]=q[k++],P-=3;P&&(j[l++]=q[k++],P>1&&(j[l++]=q[k++]))}else{k=l-F;do j[l++]=j[k++],j[l++]=j[k++],j[l++]=j[k++],P-=3;while(P>2);P&&(j[l++]=j[k++],P>1&&(j[l++]=j[k++]))}}else if((R&64)===0){C=S[(C&65535)+(m&(1<>3,a-=P,v-=P<<3,m&=(1<{const x=S.bits;let E=0,C=0,R=0,P=0,F=0,k=0,q=0,ce=0,j=0,K=0,ue,ve,ge,ye,Me,X=null,L;const H=new Uint16Array(n+1),pe=new Uint16Array(n+1);let G=null,Se,Te,De;for(E=0;E<=n;E++)H[E]=0;for(C=0;C=1&&H[P]===0;P--);if(F>P&&(F=P),P===0)return m[v++]=1<<24|64<<16|0,m[v++]=1<<24|64<<16|0,S.bits=1,0;for(R=1;R0&&(h===r||P!==1))return-1;for(pe[1]=0,E=1;Ee||h===a&&j>t)return 1;for(;;){Se=E-q,b[C]+1=L?(Te=G[b[C]-L],De=X[b[C]-L]):(Te=96,De=0),ue=1<>q)+ve]=Se<<24|Te<<16|De|0;while(ve!==0);for(ue=1<>=1;if(ue!==0?(K&=ue-1,K+=ue):K=0,C++,--H[E]===0){if(E===P)break;E=p[_+b[C]]}if(E>F&&(K&ye)!==ge){for(q===0&&(q=F),Me+=R,k=E-q,ce=1<e||h===a&&j>t)return 1;ge=K&ye,m[ge]=F<<24|k<<16|Me-v|0}}return K!==0&&(m[Me+K]=E-q<<24|64<<16|0),S.bits=F,0},xl}var El,Xb;function j1(){return Xb||(Xb=1,El={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}),El}var Hb;function lA(){if(Hb)return rr;Hb=1;const n=H1(),e=Q1(),t=sA(),r=oA(),i=0,a=1,s=2,{Z_FINISH:l,Z_BLOCK:c,Z_TREES:u,Z_OK:f,Z_STREAM_END:h,Z_NEED_DICT:p,Z_STREAM_ERROR:_,Z_DATA_ERROR:g,Z_MEM_ERROR:m,Z_BUF_ERROR:v,Z_DEFLATED:b}=j1(),S=16180,x=16181,E=16182,C=16183,R=16184,P=16185,F=16186,k=16187,q=16188,ce=16189,j=16190,K=16191,ue=16192,ve=16193,ge=16194,ye=16195,Me=16196,X=16197,L=16198,H=16199,pe=16200,G=16201,Se=16202,Te=16203,De=16204,Ae=16205,ke=16206,st=16207,et=16208,Ne=16209,Pe=16210,Fe=16211,me=852,Oe=592,le=15,Ie=A=>(A>>>24&255)+(A>>>8&65280)+((A&65280)<<8)+((A&255)<<24);function Ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const tt=A=>{if(!A)return 1;const N=A.state;return!N||N.strm!==A||N.modeFe?1:0},nt=A=>{if(tt(A))return _;const N=A.state;return A.total_in=A.total_out=N.total=0,A.msg="",N.wrap&&(A.adler=N.wrap&1),N.mode=S,N.last=0,N.havedict=0,N.flags=-1,N.dmax=32768,N.head=null,N.hold=0,N.bits=0,N.lencode=N.lendyn=new Int32Array(me),N.distcode=N.distdyn=new Int32Array(Oe),N.sane=1,N.back=-1,f},it=A=>{if(tt(A))return _;const N=A.state;return N.wsize=0,N.whave=0,N.wnext=0,nt(A)},Be=(A,N)=>{let y;if(tt(A))return _;const _e=A.state;return N<0?(y=0,N=-N):(y=(N>>4)+5,N<48&&(N&=15)),N&&(N<8||N>15)?_:(_e.window!==null&&_e.wbits!==N&&(_e.window=null),_e.wrap=y,_e.wbits=N,it(A))},Ze=(A,N)=>{if(!A)return _;const y=new Ge;A.state=y,y.strm=A,y.window=null,y.mode=S;const _e=Be(A,N);return _e!==f&&(A.state=null),_e},$e=A=>Ze(A,le);let Ct=!0,bt,Mt;const w=A=>{if(Ct){bt=new Int32Array(512),Mt=new Int32Array(32);let N=0;for(;N<144;)A.lens[N++]=8;for(;N<256;)A.lens[N++]=9;for(;N<280;)A.lens[N++]=7;for(;N<288;)A.lens[N++]=8;for(r(a,A.lens,0,288,bt,0,A.work,{bits:9}),N=0;N<32;)A.lens[N++]=5;r(s,A.lens,0,32,Mt,0,A.work,{bits:5}),Ct=!1}A.lencode=bt,A.lenbits=9,A.distcode=Mt,A.distbits=5},ee=(A,N,y,_e)=>{let Xe;const xe=A.state;return xe.window===null&&(xe.wsize=1<=xe.wsize?(xe.window.set(N.subarray(y-xe.wsize,y),0),xe.wnext=0,xe.whave=xe.wsize):(Xe=xe.wsize-xe.wnext,Xe>_e&&(Xe=_e),xe.window.set(N.subarray(y-_e,y-_e+Xe),xe.wnext),_e-=Xe,_e?(xe.window.set(N.subarray(y-_e,y),0),xe.wnext=_e,xe.whave=xe.wsize):(xe.wnext+=Xe,xe.wnext===xe.wsize&&(xe.wnext=0),xe.whave{let y,_e,Xe,xe,ze,Re,Je,se,de,Xt,mt,d,te,T,U=0,B,Le,Qe,Ve,Ot,ot,lt,Nt;const St=new Uint8Array(4);let I,oe;const fe=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(tt(A)||!A.output||!A.input&&A.avail_in!==0)return _;y=A.state,y.mode===K&&(y.mode=ue),ze=A.next_out,Xe=A.output,Je=A.avail_out,xe=A.next_in,_e=A.input,Re=A.avail_in,se=y.hold,de=y.bits,Xt=Re,mt=Je,Nt=f;e:for(;;)switch(y.mode){case S:if(y.wrap===0){y.mode=ue;break}for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,y.check=e(y.check,St,2,0),se=0,de=0,y.mode=x;break}if(y.head&&(y.head.done=!1),!(y.wrap&1)||(((se&255)<<8)+(se>>8))%31){A.msg="incorrect header check",y.mode=Ne;break}if((se&15)!==b){A.msg="unknown compression method",y.mode=Ne;break}if(se>>>=4,de-=4,lt=(se&15)+8,y.wbits===0&&(y.wbits=lt),lt>15||lt>y.wbits){A.msg="invalid window size",y.mode=Ne;break}y.dmax=1<>8&1),y.flags&512&&y.wrap&4&&(St[0]=se&255,St[1]=se>>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0,y.mode=E;case E:for(;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,St[2]=se>>>16&255,St[3]=se>>>24&255,y.check=e(y.check,St,4,0)),se=0,de=0,y.mode=C;case C:for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>8),y.flags&512&&y.wrap&4&&(St[0]=se&255,St[1]=se>>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0,y.mode=R;case R:if(y.flags&1024){for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0}else y.head&&(y.head.extra=null);y.mode=P;case P:if(y.flags&1024&&(d=y.length,d>Re&&(d=Re),d&&(y.head&&(lt=y.head.extra_len-y.length,y.head.extra||(y.head.extra=new Uint8Array(y.head.extra_len)),y.head.extra.set(_e.subarray(xe,xe+d),lt)),y.flags&512&&y.wrap&4&&(y.check=e(y.check,_e,d,xe)),Re-=d,xe+=d,y.length-=d),y.length))break e;y.length=0,y.mode=F;case F:if(y.flags&2048){if(Re===0)break e;d=0;do lt=_e[xe+d++],y.head&<&&y.length<65536&&(y.head.name+=String.fromCharCode(lt));while(lt&&d>9&1,y.head.done=!0),A.adler=y.check=0,y.mode=K;break;case ce:for(;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=de&7,de-=de&7,y.mode=ke;break}for(;de<3;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=1,de-=1,se&3){case 0:y.mode=ve;break;case 1:if(w(y),y.mode=H,N===u){se>>>=2,de-=2;break e}break;case 2:y.mode=Me;break;case 3:A.msg="invalid block type",y.mode=Ne}se>>>=2,de-=2;break;case ve:for(se>>>=de&7,de-=de&7;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>16^65535)){A.msg="invalid stored block lengths",y.mode=Ne;break}if(y.length=se&65535,se=0,de=0,y.mode=ge,N===u)break e;case ge:y.mode=ye;case ye:if(d=y.length,d){if(d>Re&&(d=Re),d>Je&&(d=Je),d===0)break e;Xe.set(_e.subarray(xe,xe+d),ze),Re-=d,xe+=d,Je-=d,ze+=d,y.length-=d;break}y.mode=K;break;case Me:for(;de<14;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=5,de-=5,y.ndist=(se&31)+1,se>>>=5,de-=5,y.ncode=(se&15)+4,se>>>=4,de-=4,y.nlen>286||y.ndist>30){A.msg="too many length or distance symbols",y.mode=Ne;break}y.have=0,y.mode=X;case X:for(;y.have>>=3,de-=3}for(;y.have<19;)y.lens[fe[y.have++]]=0;if(y.lencode=y.lendyn,y.lenbits=7,I={bits:y.lenbits},Nt=r(i,y.lens,0,19,y.lencode,0,y.work,I),y.lenbits=I.bits,Nt){A.msg="invalid code lengths set",y.mode=Ne;break}y.have=0,y.mode=L;case L:for(;y.have>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=B,de-=B,y.lens[y.have++]=Qe;else{if(Qe===16){for(oe=B+2;de>>=B,de-=B,y.have===0){A.msg="invalid bit length repeat",y.mode=Ne;break}lt=y.lens[y.have-1],d=3+(se&3),se>>>=2,de-=2}else if(Qe===17){for(oe=B+3;de>>=B,de-=B,lt=0,d=3+(se&7),se>>>=3,de-=3}else{for(oe=B+7;de>>=B,de-=B,lt=0,d=11+(se&127),se>>>=7,de-=7}if(y.have+d>y.nlen+y.ndist){A.msg="invalid bit length repeat",y.mode=Ne;break}for(;d--;)y.lens[y.have++]=lt}}if(y.mode===Ne)break;if(y.lens[256]===0){A.msg="invalid code -- missing end-of-block",y.mode=Ne;break}if(y.lenbits=9,I={bits:y.lenbits},Nt=r(a,y.lens,0,y.nlen,y.lencode,0,y.work,I),y.lenbits=I.bits,Nt){A.msg="invalid literal/lengths set",y.mode=Ne;break}if(y.distbits=6,y.distcode=y.distdyn,I={bits:y.distbits},Nt=r(s,y.lens,y.nlen,y.ndist,y.distcode,0,y.work,I),y.distbits=I.bits,Nt){A.msg="invalid distances set",y.mode=Ne;break}if(y.mode=H,N===u)break e;case H:y.mode=pe;case pe:if(Re>=6&&Je>=258){A.next_out=ze,A.avail_out=Je,A.next_in=xe,A.avail_in=Re,y.hold=se,y.bits=de,t(A,mt),ze=A.next_out,Xe=A.output,Je=A.avail_out,xe=A.next_in,_e=A.input,Re=A.avail_in,se=y.hold,de=y.bits,y.mode===K&&(y.back=-1);break}for(y.back=0;U=y.lencode[se&(1<>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>Ve)],B=U>>>24,Le=U>>>16&255,Qe=U&65535,!(Ve+B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=Ve,de-=Ve,y.back+=Ve}if(se>>>=B,de-=B,y.back+=B,y.length=Qe,Le===0){y.mode=Ae;break}if(Le&32){y.back=-1,y.mode=K;break}if(Le&64){A.msg="invalid literal/length code",y.mode=Ne;break}y.extra=Le&15,y.mode=G;case G:if(y.extra){for(oe=y.extra;de>>=y.extra,de-=y.extra,y.back+=y.extra}y.was=y.length,y.mode=Se;case Se:for(;U=y.distcode[se&(1<>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>Ve)],B=U>>>24,Le=U>>>16&255,Qe=U&65535,!(Ve+B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=Ve,de-=Ve,y.back+=Ve}if(se>>>=B,de-=B,y.back+=B,Le&64){A.msg="invalid distance code",y.mode=Ne;break}y.offset=Qe,y.extra=Le&15,y.mode=Te;case Te:if(y.extra){for(oe=y.extra;de>>=y.extra,de-=y.extra,y.back+=y.extra}if(y.offset>y.dmax){A.msg="invalid distance too far back",y.mode=Ne;break}y.mode=De;case De:if(Je===0)break e;if(d=mt-Je,y.offset>d){if(d=y.offset-d,d>y.whave&&y.sane){A.msg="invalid distance too far back",y.mode=Ne;break}d>y.wnext?(d-=y.wnext,te=y.wsize-d):te=y.wnext-d,d>y.length&&(d=y.length),T=y.window}else T=Xe,te=ze-y.offset,d=y.length;d>Je&&(d=Je),Je-=d,y.length-=d;do Xe[ze++]=T[te++];while(--d);y.length===0&&(y.mode=pe);break;case Ae:if(Je===0)break e;Xe[ze++]=y.length,Je--,y.mode=pe;break;case ke:if(y.wrap){for(;de<32;){if(Re===0)break e;Re--,se|=_e[xe++]<{if(tt(A))return _;let N=A.state;return N.window&&(N.window=null),A.state=null,f},V=(A,N)=>{if(tt(A))return _;const y=A.state;return(y.wrap&2)===0?_:(y.head=N,N.done=!1,f)},W=(A,N)=>{const y=N.length;let _e,Xe,xe;return tt(A)||(_e=A.state,_e.wrap!==0&&_e.mode!==j)?_:_e.mode===j&&(Xe=1,Xe=n(Xe,N,y,0),Xe!==_e.check)?g:(xe=ee(A,N,y,y),xe?(_e.mode=Pe,m):(_e.havedict=1,f))};return rr.inflateReset=it,rr.inflateReset2=Be,rr.inflateResetKeep=nt,rr.inflateInit=$e,rr.inflateInit2=Ze,rr.inflate=he,rr.inflateEnd=D,rr.inflateGetHeader=V,rr.inflateSetDictionary=W,rr.inflateInfo="pako inflate (from Nodeca project)",rr}var Sl=lA(),wl,Qb;function cA(){if(Qb)return wl;Qb=1;function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}return wl=n,wl}var uA=cA();const W1=gS(uA);class ci{constructor(){this.strm=new W1,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),this.windowBits=5,Sl.inflateInit(this.strm,this.windowBits)}setInput(e){e?(this.strm.input=e,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(e){if(e>this.chunkSize&&(this.chunkSize=e,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=e,Sl.inflate(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=e)throw new Error("Incomplete zlib block, got "+this.strm.next_out+" expected "+e);return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){Sl.inflateReset(this.strm)}}var ar={},Vr={},jb;function dA(){if(jb)return Vr;jb=1;const n=4,e=0,t=1,r=2;function i(w){let ee=w.length;for(;--ee>=0;)w[ee]=0}const a=0,s=1,l=2,c=3,u=258,f=29,h=256,p=h+1+f,_=30,g=19,m=2*p+1,v=15,b=16,S=7,x=256,E=16,C=17,R=18,P=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),F=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),k=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),q=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ce=512,j=new Array((p+2)*2);i(j);const K=new Array(_*2);i(K);const ue=new Array(ce);i(ue);const ve=new Array(u-c+1);i(ve);const ge=new Array(f);i(ge);const ye=new Array(_);i(ye);function Me(w,ee,he,D,V){this.static_tree=w,this.extra_bits=ee,this.extra_base=he,this.elems=D,this.max_length=V,this.has_stree=w&&w.length}let X,L,H;function pe(w,ee){this.dyn_tree=w,this.max_code=0,this.stat_desc=ee}const G=w=>w<256?ue[w]:ue[256+(w>>>7)],Se=(w,ee)=>{w.pending_buf[w.pending++]=ee&255,w.pending_buf[w.pending++]=ee>>>8&255},Te=(w,ee,he)=>{w.bi_valid>b-he?(w.bi_buf|=ee<>b-w.bi_valid,w.bi_valid+=he-b):(w.bi_buf|=ee<{Te(w,he[ee*2],he[ee*2+1])},Ae=(w,ee)=>{let he=0;do he|=w&1,w>>>=1,he<<=1;while(--ee>0);return he>>>1},ke=w=>{w.bi_valid===16?(Se(w,w.bi_buf),w.bi_buf=0,w.bi_valid=0):w.bi_valid>=8&&(w.pending_buf[w.pending++]=w.bi_buf&255,w.bi_buf>>=8,w.bi_valid-=8)},st=(w,ee)=>{const he=ee.dyn_tree,D=ee.max_code,V=ee.stat_desc.static_tree,W=ee.stat_desc.has_stree,A=ee.stat_desc.extra_bits,N=ee.stat_desc.extra_base,y=ee.stat_desc.max_length;let _e,Xe,xe,ze,Re,Je,se=0;for(ze=0;ze<=v;ze++)w.bl_count[ze]=0;for(he[w.heap[w.heap_max]*2+1]=0,_e=w.heap_max+1;_ey&&(ze=y,se++),he[Xe*2+1]=ze,!(Xe>D)&&(w.bl_count[ze]++,Re=0,Xe>=N&&(Re=A[Xe-N]),Je=he[Xe*2],w.opt_len+=Je*(ze+Re),W&&(w.static_len+=Je*(V[Xe*2+1]+Re)));if(se!==0){do{for(ze=y-1;w.bl_count[ze]===0;)ze--;w.bl_count[ze]--,w.bl_count[ze+1]+=2,w.bl_count[y]--,se-=2}while(se>0);for(ze=y;ze!==0;ze--)for(Xe=w.bl_count[ze];Xe!==0;)xe=w.heap[--_e],!(xe>D)&&(he[xe*2+1]!==ze&&(w.opt_len+=(ze-he[xe*2+1])*he[xe*2],he[xe*2+1]=ze),Xe--)}},et=(w,ee,he)=>{const D=new Array(v+1);let V=0,W,A;for(W=1;W<=v;W++)V=V+he[W-1]<<1,D[W]=V;for(A=0;A<=ee;A++){let N=w[A*2+1];N!==0&&(w[A*2]=Ae(D[N]++,N))}},Ne=()=>{let w,ee,he,D,V;const W=new Array(v+1);for(he=0,D=0;D>=7;D<_;D++)for(ye[D]=V<<7,w=0;w<1<{let ee;for(ee=0;ee{w.bi_valid>8?Se(w,w.bi_buf):w.bi_valid>0&&(w.pending_buf[w.pending++]=w.bi_buf),w.bi_buf=0,w.bi_valid=0},me=(w,ee,he,D)=>{const V=ee*2,W=he*2;return w[V]{const D=w.heap[he];let V=he<<1;for(;V<=w.heap_len&&(V{let D,V,W=0,A,N;if(w.sym_next!==0)do D=w.pending_buf[w.sym_buf+W++]&255,D+=(w.pending_buf[w.sym_buf+W++]&255)<<8,V=w.pending_buf[w.sym_buf+W++],D===0?De(w,V,ee):(A=ve[V],De(w,A+h+1,ee),N=P[A],N!==0&&(V-=ge[A],Te(w,V,N)),D--,A=G(D),De(w,A,he),N=F[A],N!==0&&(D-=ye[A],Te(w,D,N)));while(W{const he=ee.dyn_tree,D=ee.stat_desc.static_tree,V=ee.stat_desc.has_stree,W=ee.stat_desc.elems;let A,N,y=-1,_e;for(w.heap_len=0,w.heap_max=m,A=0;A>1;A>=1;A--)Oe(w,he,A);_e=W;do A=w.heap[1],w.heap[1]=w.heap[w.heap_len--],Oe(w,he,1),N=w.heap[1],w.heap[--w.heap_max]=A,w.heap[--w.heap_max]=N,he[_e*2]=he[A*2]+he[N*2],w.depth[_e]=(w.depth[A]>=w.depth[N]?w.depth[A]:w.depth[N])+1,he[A*2+1]=he[N*2+1]=_e,w.heap[1]=_e++,Oe(w,he,1);while(w.heap_len>=2);w.heap[--w.heap_max]=w.heap[1],st(w,ee),et(he,y,w.bl_count)},Ie=(w,ee,he)=>{let D,V=-1,W,A=ee[1],N=0,y=7,_e=4;for(A===0&&(y=138,_e=3),ee[(he+1)*2+1]=65535,D=0;D<=he;D++)W=A,A=ee[(D+1)*2+1],!(++N{let D,V=-1,W,A=ee[1],N=0,y=7,_e=4;for(A===0&&(y=138,_e=3),D=0;D<=he;D++)if(W=A,A=ee[(D+1)*2+1],!(++N{let ee;for(Ie(w,w.dyn_ltree,w.l_desc.max_code),Ie(w,w.dyn_dtree,w.d_desc.max_code),le(w,w.bl_desc),ee=g-1;ee>=3&&w.bl_tree[q[ee]*2+1]===0;ee--);return w.opt_len+=3*(ee+1)+5+5+4,ee},nt=(w,ee,he,D)=>{let V;for(Te(w,ee-257,5),Te(w,he-1,5),Te(w,D-4,4),V=0;V{let ee=4093624447,he;for(he=0;he<=31;he++,ee>>>=1)if(ee&1&&w.dyn_ltree[he*2]!==0)return e;if(w.dyn_ltree[18]!==0||w.dyn_ltree[20]!==0||w.dyn_ltree[26]!==0)return t;for(he=32;he{Be||(Ne(),Be=!0),w.l_desc=new pe(w.dyn_ltree,X),w.d_desc=new pe(w.dyn_dtree,L),w.bl_desc=new pe(w.bl_tree,H),w.bi_buf=0,w.bi_valid=0,Pe(w)},$e=(w,ee,he,D)=>{Te(w,(a<<1)+(D?1:0),3),Fe(w),Se(w,he),Se(w,~he),he&&w.pending_buf.set(w.window.subarray(ee,ee+he),w.pending),w.pending+=he},Ct=w=>{Te(w,s<<1,3),De(w,x,j),ke(w)},bt=(w,ee,he,D)=>{let V,W,A=0;w.level>0?(w.strm.data_type===r&&(w.strm.data_type=it(w)),le(w,w.l_desc),le(w,w.d_desc),A=tt(w),V=w.opt_len+3+7>>>3,W=w.static_len+3+7>>>3,W<=V&&(V=W)):V=W=he+5,he+4<=V&&ee!==-1?$e(w,ee,he,D):w.strategy===n||W===V?(Te(w,(s<<1)+(D?1:0),3),ae(w,j,K)):(Te(w,(l<<1)+(D?1:0),3),nt(w,w.l_desc.max_code+1,w.d_desc.max_code+1,A+1),ae(w,w.dyn_ltree,w.dyn_dtree)),Pe(w),D&&Fe(w)},Mt=(w,ee,he)=>(w.pending_buf[w.sym_buf+w.sym_next++]=ee,w.pending_buf[w.sym_buf+w.sym_next++]=ee>>8,w.pending_buf[w.sym_buf+w.sym_next++]=he,ee===0?w.dyn_ltree[he*2]++:(w.matches++,ee--,w.dyn_ltree[(ve[he]+h+1)*2]++,w.dyn_dtree[G(ee)*2]++),w.sym_next===w.sym_end);return Vr._tr_init=Ze,Vr._tr_stored_block=$e,Vr._tr_flush_block=bt,Vr._tr_tally=Mt,Vr._tr_align=Ct,Vr}var Cl,Wb;function fA(){return Wb||(Wb=1,Cl={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}),Cl}var zb;function hA(){if(zb)return ar;zb=1;const{_tr_init:n,_tr_stored_block:e,_tr_flush_block:t,_tr_tally:r,_tr_align:i}=dA(),a=H1(),s=Q1(),l=fA(),{Z_NO_FLUSH:c,Z_PARTIAL_FLUSH:u,Z_FULL_FLUSH:f,Z_FINISH:h,Z_BLOCK:p,Z_OK:_,Z_STREAM_END:g,Z_STREAM_ERROR:m,Z_DATA_ERROR:v,Z_BUF_ERROR:b,Z_DEFAULT_COMPRESSION:S,Z_FILTERED:x,Z_HUFFMAN_ONLY:E,Z_RLE:C,Z_FIXED:R,Z_DEFAULT_STRATEGY:P,Z_UNKNOWN:F,Z_DEFLATED:k}=j1(),q=9,ce=15,j=8,ve=256+1+29,ge=30,ye=19,Me=2*ve+1,X=15,L=3,H=258,pe=H+L+1,G=32,Se=42,Te=57,De=69,Ae=73,ke=91,st=103,et=113,Ne=666,Pe=1,Fe=2,me=3,Oe=4,ae=3,le=(d,te)=>(d.msg=l[te],te),Ie=d=>d*2-(d>4?9:0),Ge=d=>{let te=d.length;for(;--te>=0;)d[te]=0},tt=d=>{let te,T,U,B=d.w_size;te=d.hash_size,U=te;do T=d.head[--U],d.head[U]=T>=B?T-B:0;while(--te);te=B,U=te;do T=d.prev[--U],d.prev[U]=T>=B?T-B:0;while(--te)};let it=(d,te,T)=>(te<{const te=d.state;let T=te.pending;T>d.avail_out&&(T=d.avail_out),T!==0&&(d.output.set(te.pending_buf.subarray(te.pending_out,te.pending_out+T),d.next_out),d.next_out+=T,te.pending_out+=T,d.total_out+=T,d.avail_out-=T,te.pending-=T,te.pending===0&&(te.pending_out=0))},Ze=(d,te)=>{t(d,d.block_start>=0?d.block_start:-1,d.strstart-d.block_start,te),d.block_start=d.strstart,Be(d.strm)},$e=(d,te)=>{d.pending_buf[d.pending++]=te},Ct=(d,te)=>{d.pending_buf[d.pending++]=te>>>8&255,d.pending_buf[d.pending++]=te&255},bt=(d,te,T,U)=>{let B=d.avail_in;return B>U&&(B=U),B===0?0:(d.avail_in-=B,te.set(d.input.subarray(d.next_in,d.next_in+B),T),d.state.wrap===1?d.adler=a(d.adler,te,B,T):d.state.wrap===2&&(d.adler=s(d.adler,te,B,T)),d.next_in+=B,d.total_in+=B,B)},Mt=(d,te)=>{let T=d.max_chain_length,U=d.strstart,B,Le,Qe=d.prev_length,Ve=d.nice_match;const Ot=d.strstart>d.w_size-pe?d.strstart-(d.w_size-pe):0,ot=d.window,lt=d.w_mask,Nt=d.prev,St=d.strstart+H;let I=ot[U+Qe-1],oe=ot[U+Qe];d.prev_length>=d.good_match&&(T>>=2),Ve>d.lookahead&&(Ve=d.lookahead);do if(B=te,!(ot[B+Qe]!==oe||ot[B+Qe-1]!==I||ot[B]!==ot[U]||ot[++B]!==ot[U+1])){U+=2,B++;do;while(ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&UQe){if(d.match_start=te,Qe=Le,Le>=Ve)break;I=ot[U+Qe-1],oe=ot[U+Qe]}}while((te=Nt[te<])>Ot&&--T!==0);return Qe<=d.lookahead?Qe:d.lookahead},w=d=>{const te=d.w_size;let T,U,B;do{if(U=d.window_size-d.lookahead-d.strstart,d.strstart>=te+(te-pe)&&(d.window.set(d.window.subarray(te,te+te-U),0),d.match_start-=te,d.strstart-=te,d.block_start-=te,d.insert>d.strstart&&(d.insert=d.strstart),tt(d),U+=te),d.strm.avail_in===0)break;if(T=bt(d.strm,d.window,d.strstart+d.lookahead,U),d.lookahead+=T,d.lookahead+d.insert>=L)for(B=d.strstart-d.insert,d.ins_h=d.window[B],d.ins_h=it(d,d.ins_h,d.window[B+1]);d.insert&&(d.ins_h=it(d,d.ins_h,d.window[B+L-1]),d.prev[B&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=B,B++,d.insert--,!(d.lookahead+d.insert{let T=d.pending_buf_size-5>d.w_size?d.w_size:d.pending_buf_size-5,U,B,Le,Qe=0,Ve=d.strm.avail_in;do{if(U=65535,Le=d.bi_valid+42>>3,d.strm.avail_outB+d.strm.avail_in&&(U=B+d.strm.avail_in),U>Le&&(U=Le),U>8,d.pending_buf[d.pending-2]=~U,d.pending_buf[d.pending-1]=~U>>8,Be(d.strm),B&&(B>U&&(B=U),d.strm.output.set(d.window.subarray(d.block_start,d.block_start+B),d.strm.next_out),d.strm.next_out+=B,d.strm.avail_out-=B,d.strm.total_out+=B,d.block_start+=B,U-=B),U&&(bt(d.strm,d.strm.output,d.strm.next_out,U),d.strm.next_out+=U,d.strm.avail_out-=U,d.strm.total_out+=U)}while(Qe===0);return Ve-=d.strm.avail_in,Ve&&(Ve>=d.w_size?(d.matches=2,d.window.set(d.strm.input.subarray(d.strm.next_in-d.w_size,d.strm.next_in),0),d.strstart=d.w_size,d.insert=d.strstart):(d.window_size-d.strstart<=Ve&&(d.strstart-=d.w_size,d.window.set(d.window.subarray(d.w_size,d.w_size+d.strstart),0),d.matches<2&&d.matches++,d.insert>d.strstart&&(d.insert=d.strstart)),d.window.set(d.strm.input.subarray(d.strm.next_in-Ve,d.strm.next_in),d.strstart),d.strstart+=Ve,d.insert+=Ve>d.w_size-d.insert?d.w_size-d.insert:Ve),d.block_start=d.strstart),d.high_waterLe&&d.block_start>=d.w_size&&(d.block_start-=d.w_size,d.strstart-=d.w_size,d.window.set(d.window.subarray(d.w_size,d.w_size+d.strstart),0),d.matches<2&&d.matches++,Le+=d.w_size,d.insert>d.strstart&&(d.insert=d.strstart)),Le>d.strm.avail_in&&(Le=d.strm.avail_in),Le&&(bt(d.strm,d.window,d.strstart,Le),d.strstart+=Le,d.insert+=Le>d.w_size-d.insert?d.w_size-d.insert:Le),d.high_water>3,Le=d.pending_buf_size-Le>65535?65535:d.pending_buf_size-Le,T=Le>d.w_size?d.w_size:Le,B=d.strstart-d.block_start,(B>=T||(B||te===h)&&te!==c&&d.strm.avail_in===0&&B<=Le)&&(U=B>Le?Le:B,Qe=te===h&&d.strm.avail_in===0&&U===B?1:0,e(d,d.block_start,U,Qe),d.block_start+=U,Be(d.strm)),Qe?me:Pe)},he=(d,te)=>{let T,U;for(;;){if(d.lookahead=L&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),T!==0&&d.strstart-T<=d.w_size-pe&&(d.match_length=Mt(d,T)),d.match_length>=L)if(U=r(d,d.strstart-d.match_start,d.match_length-L),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=L){d.match_length--;do d.strstart++,d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart;while(--d.match_length!==0);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=it(d,d.ins_h,d.window[d.strstart+1]);else U=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(U&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=d.strstart{let T,U,B;for(;;){if(d.lookahead=L&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=L-1,T!==0&&d.prev_length4096)&&(d.match_length=L-1)),d.prev_length>=L&&d.match_length<=d.prev_length){B=d.strstart+d.lookahead-L,U=r(d,d.strstart-1-d.prev_match,d.prev_length-L),d.lookahead-=d.prev_length-1,d.prev_length-=2;do++d.strstart<=B&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart);while(--d.prev_length!==0);if(d.match_available=0,d.match_length=L-1,d.strstart++,U&&(Ze(d,!1),d.strm.avail_out===0))return Pe}else if(d.match_available){if(U=r(d,0,d.window[d.strstart-1]),U&&Ze(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return Pe}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(U=r(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart{let T,U,B,Le;const Qe=d.window;for(;;){if(d.lookahead<=H){if(w(d),d.lookahead<=H&&te===c)return Pe;if(d.lookahead===0)break}if(d.match_length=0,d.lookahead>=L&&d.strstart>0&&(B=d.strstart-1,U=Qe[B],U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B])){Le=d.strstart+H;do;while(U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&Bd.lookahead&&(d.match_length=d.lookahead)}if(d.match_length>=L?(T=r(d,1,d.match_length-L),d.lookahead-=d.match_length,d.strstart+=d.match_length,d.match_length=0):(T=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++),T&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=0,te===h?(Ze(d,!0),d.strm.avail_out===0?me:Oe):d.sym_next&&(Ze(d,!1),d.strm.avail_out===0)?Pe:Fe},W=(d,te)=>{let T;for(;;){if(d.lookahead===0&&(w(d),d.lookahead===0)){if(te===c)return Pe;break}if(d.match_length=0,T=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++,T&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=0,te===h?(Ze(d,!0),d.strm.avail_out===0?me:Oe):d.sym_next&&(Ze(d,!1),d.strm.avail_out===0)?Pe:Fe};function A(d,te,T,U,B){this.good_length=d,this.max_lazy=te,this.nice_length=T,this.max_chain=U,this.func=B}const N=[new A(0,0,0,0,ee),new A(4,4,8,4,he),new A(4,5,16,8,he),new A(4,6,32,32,he),new A(4,4,16,16,D),new A(8,16,32,32,D),new A(8,16,128,128,D),new A(8,32,128,256,D),new A(32,128,258,1024,D),new A(32,258,258,4096,D)],y=d=>{d.window_size=2*d.w_size,Ge(d.head),d.max_lazy_match=N[d.level].max_lazy,d.good_match=N[d.level].good_length,d.nice_match=N[d.level].nice_length,d.max_chain_length=N[d.level].max_chain,d.strstart=0,d.block_start=0,d.lookahead=0,d.insert=0,d.match_length=d.prev_length=L-1,d.match_available=0,d.ins_h=0};function _e(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=k,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Me*2),this.dyn_dtree=new Uint16Array((2*ge+1)*2),this.bl_tree=new Uint16Array((2*ye+1)*2),Ge(this.dyn_ltree),Ge(this.dyn_dtree),Ge(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(X+1),this.heap=new Uint16Array(2*ve+1),Ge(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*ve+1),Ge(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Xe=d=>{if(!d)return 1;const te=d.state;return!te||te.strm!==d||te.status!==Se&&te.status!==Te&&te.status!==De&&te.status!==Ae&&te.status!==ke&&te.status!==st&&te.status!==et&&te.status!==Ne?1:0},xe=d=>{if(Xe(d))return le(d,m);d.total_in=d.total_out=0,d.data_type=F;const te=d.state;return te.pending=0,te.pending_out=0,te.wrap<0&&(te.wrap=-te.wrap),te.status=te.wrap===2?Te:te.wrap?Se:et,d.adler=te.wrap===2?0:1,te.last_flush=-2,n(te),_},ze=d=>{const te=xe(d);return te===_&&y(d.state),te},Re=(d,te)=>Xe(d)||d.state.wrap!==2?m:(d.state.gzhead=te,_),Je=(d,te,T,U,B,Le)=>{if(!d)return m;let Qe=1;if(te===S&&(te=6),U<0?(Qe=0,U=-U):U>15&&(Qe=2,U-=16),B<1||B>q||T!==k||U<8||U>15||te<0||te>9||Le<0||Le>R||U===8&&Qe!==1)return le(d,m);U===8&&(U=9);const Ve=new _e;return d.state=Ve,Ve.strm=d,Ve.status=Se,Ve.wrap=Qe,Ve.gzhead=null,Ve.w_bits=U,Ve.w_size=1<Je(d,te,k,ce,j,P),de=(d,te)=>{if(Xe(d)||te>p||te<0)return d?le(d,m):m;const T=d.state;if(!d.output||d.avail_in!==0&&!d.input||T.status===Ne&&te!==h)return le(d,d.avail_out===0?b:m);const U=T.last_flush;if(T.last_flush=te,T.pending!==0){if(Be(d),d.avail_out===0)return T.last_flush=-1,_}else if(d.avail_in===0&&Ie(te)<=Ie(U)&&te!==h)return le(d,b);if(T.status===Ne&&d.avail_in!==0)return le(d,b);if(T.status===Se&&T.wrap===0&&(T.status=et),T.status===Se){let B=k+(T.w_bits-8<<4)<<8,Le=-1;if(T.strategy>=E||T.level<2?Le=0:T.level<6?Le=1:T.level===6?Le=2:Le=3,B|=Le<<6,T.strstart!==0&&(B|=G),B+=31-B%31,Ct(T,B),T.strstart!==0&&(Ct(T,d.adler>>>16),Ct(T,d.adler&65535)),d.adler=1,T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(T.status===Te){if(d.adler=0,$e(T,31),$e(T,139),$e(T,8),T.gzhead)$e(T,(T.gzhead.text?1:0)+(T.gzhead.hcrc?2:0)+(T.gzhead.extra?4:0)+(T.gzhead.name?8:0)+(T.gzhead.comment?16:0)),$e(T,T.gzhead.time&255),$e(T,T.gzhead.time>>8&255),$e(T,T.gzhead.time>>16&255),$e(T,T.gzhead.time>>24&255),$e(T,T.level===9?2:T.strategy>=E||T.level<2?4:0),$e(T,T.gzhead.os&255),T.gzhead.extra&&T.gzhead.extra.length&&($e(T,T.gzhead.extra.length&255),$e(T,T.gzhead.extra.length>>8&255)),T.gzhead.hcrc&&(d.adler=s(d.adler,T.pending_buf,T.pending,0)),T.gzindex=0,T.status=De;else if($e(T,0),$e(T,0),$e(T,0),$e(T,0),$e(T,0),$e(T,T.level===9?2:T.strategy>=E||T.level<2?4:0),$e(T,ae),T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(T.status===De){if(T.gzhead.extra){let B=T.pending,Le=(T.gzhead.extra.length&65535)-T.gzindex;for(;T.pending+Le>T.pending_buf_size;){let Ve=T.pending_buf_size-T.pending;if(T.pending_buf.set(T.gzhead.extra.subarray(T.gzindex,T.gzindex+Ve),T.pending),T.pending=T.pending_buf_size,T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex+=Ve,Be(d),T.pending!==0)return T.last_flush=-1,_;B=0,Le-=Ve}let Qe=new Uint8Array(T.gzhead.extra);T.pending_buf.set(Qe.subarray(T.gzindex,T.gzindex+Le),T.pending),T.pending+=Le,T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex=0}T.status=Ae}if(T.status===Ae){if(T.gzhead.name){let B=T.pending,Le;do{if(T.pending===T.pending_buf_size){if(T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),Be(d),T.pending!==0)return T.last_flush=-1,_;B=0}T.gzindexB&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex=0}T.status=ke}if(T.status===ke){if(T.gzhead.comment){let B=T.pending,Le;do{if(T.pending===T.pending_buf_size){if(T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),Be(d),T.pending!==0)return T.last_flush=-1,_;B=0}T.gzindexB&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B))}T.status=st}if(T.status===st){if(T.gzhead.hcrc){if(T.pending+2>T.pending_buf_size&&(Be(d),T.pending!==0))return T.last_flush=-1,_;$e(T,d.adler&255),$e(T,d.adler>>8&255),d.adler=0}if(T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(d.avail_in!==0||T.lookahead!==0||te!==c&&T.status!==Ne){let B=T.level===0?ee(T,te):T.strategy===E?W(T,te):T.strategy===C?V(T,te):N[T.level].func(T,te);if((B===me||B===Oe)&&(T.status=Ne),B===Pe||B===me)return d.avail_out===0&&(T.last_flush=-1),_;if(B===Fe&&(te===u?i(T):te!==p&&(e(T,0,0,!1),te===f&&(Ge(T.head),T.lookahead===0&&(T.strstart=0,T.block_start=0,T.insert=0))),Be(d),d.avail_out===0))return T.last_flush=-1,_}return te!==h?_:T.wrap<=0?g:(T.wrap===2?($e(T,d.adler&255),$e(T,d.adler>>8&255),$e(T,d.adler>>16&255),$e(T,d.adler>>24&255),$e(T,d.total_in&255),$e(T,d.total_in>>8&255),$e(T,d.total_in>>16&255),$e(T,d.total_in>>24&255)):(Ct(T,d.adler>>>16),Ct(T,d.adler&65535)),Be(d),T.wrap>0&&(T.wrap=-T.wrap),T.pending!==0?_:g)},Xt=d=>{if(Xe(d))return m;const te=d.state.status;return d.state=null,te===et?le(d,v):_},mt=(d,te)=>{let T=te.length;if(Xe(d))return m;const U=d.state,B=U.wrap;if(B===2||B===1&&U.status!==Se||U.lookahead)return m;if(B===1&&(d.adler=a(d.adler,te,T,0)),U.wrap=0,T>=U.w_size){B===0&&(Ge(U.head),U.strstart=0,U.block_start=0,U.insert=0);let Ot=new Uint8Array(U.w_size);Ot.set(te.subarray(T-U.w_size,T),0),te=Ot,T=U.w_size}const Le=d.avail_in,Qe=d.next_in,Ve=d.input;for(d.avail_in=T,d.next_in=0,d.input=te,w(U);U.lookahead>=L;){let Ot=U.strstart,ot=U.lookahead-(L-1);do U.ins_h=it(U,U.ins_h,U.window[Ot+L-1]),U.prev[Ot&U.w_mask]=U.head[U.ins_h],U.head[U.ins_h]=Ot,Ot++;while(--ot);U.strstart=Ot,U.lookahead=L-1,w(U)}return U.strstart+=U.lookahead,U.block_start=U.strstart,U.insert=U.lookahead,U.lookahead=0,U.match_length=U.prev_length=L-1,U.match_available=0,d.next_in=Qe,d.input=Ve,d.avail_in=Le,U.wrap=B,_};return ar.deflateInit=se,ar.deflateInit2=Je,ar.deflateReset=ze,ar.deflateResetKeep=xe,ar.deflateSetHeader=Re,ar.deflate=de,ar.deflateEnd=Xt,ar.deflateSetDictionary=mt,ar.deflateInfo="pako deflate (from Nodeca project)",ar}var gn=hA();class _A{constructor(){this.strm=new W1,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),this.windowBits=5,gn.deflateInit(this.strm,this.windowBits)}deflate(e){this.strm.input=e,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let t=gn.deflate(this.strm,gn.Z_FULL_FLUSH),r=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(t<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let i=[r],a=r.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,t=gn.deflate(this.strm,gn.Z_FULL_FLUSH),t<0)throw new Error("zlib deflate failed");let c=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);a+=c.length,i.push(c)}while(this.strm.avail_in>0);let s=new Uint8Array(a),l=0;for(let c=0;c=32&&n<=255)return n;const e=pA[n];return e!==void 0?e:16777216|n}},Gb={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"},$b={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"},Pr={};function re(n,e){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,e,e]}function Oi(n,e,t){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,t,e]}function gt(n,e,t){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,e,t]}Oi("Alt",O.XK_Alt_L,O.XK_Alt_R);re("AltGraph",O.XK_ISO_Level3_Shift);re("CapsLock",O.XK_Caps_Lock);Oi("Control",O.XK_Control_L,O.XK_Control_R);Oi("Meta",O.XK_Super_L,O.XK_Super_R);re("NumLock",O.XK_Num_Lock);re("ScrollLock",O.XK_Scroll_Lock);Oi("Shift",O.XK_Shift_L,O.XK_Shift_R);gt("Enter",O.XK_Return,O.XK_KP_Enter);re("Tab",O.XK_Tab);gt(" ",O.XK_space,O.XK_KP_Space);gt("ArrowDown",O.XK_Down,O.XK_KP_Down);gt("ArrowLeft",O.XK_Left,O.XK_KP_Left);gt("ArrowRight",O.XK_Right,O.XK_KP_Right);gt("ArrowUp",O.XK_Up,O.XK_KP_Up);gt("End",O.XK_End,O.XK_KP_End);gt("Home",O.XK_Home,O.XK_KP_Home);gt("PageDown",O.XK_Next,O.XK_KP_Next);gt("PageUp",O.XK_Prior,O.XK_KP_Prior);re("Backspace",O.XK_BackSpace);gt("Clear",O.XK_Clear,O.XK_KP_Begin);re("Copy",O.XF86XK_Copy);re("Cut",O.XF86XK_Cut);gt("Delete",O.XK_Delete,O.XK_KP_Delete);gt("Insert",O.XK_Insert,O.XK_KP_Insert);re("Paste",O.XF86XK_Paste);re("Redo",O.XK_Redo);re("Undo",O.XK_Undo);re("Cancel",O.XK_Cancel);re("ContextMenu",O.XK_Menu);re("Escape",O.XK_Escape);re("Execute",O.XK_Execute);re("Find",O.XK_Find);re("Help",O.XK_Help);re("Pause",O.XK_Pause);re("Select",O.XK_Select);re("ZoomIn",O.XF86XK_ZoomIn);re("ZoomOut",O.XF86XK_ZoomOut);re("BrightnessDown",O.XF86XK_MonBrightnessDown);re("BrightnessUp",O.XF86XK_MonBrightnessUp);re("Eject",O.XF86XK_Eject);re("LogOff",O.XF86XK_LogOff);re("Power",O.XF86XK_PowerOff);re("PowerOff",O.XF86XK_PowerDown);re("PrintScreen",O.XK_Print);re("Hibernate",O.XF86XK_Hibernate);re("Standby",O.XF86XK_Standby);re("WakeUp",O.XF86XK_WakeUp);re("AllCandidates",O.XK_MultipleCandidate);re("Alphanumeric",O.XK_Eisu_toggle);re("CodeInput",O.XK_Codeinput);re("Compose",O.XK_Multi_key);re("Convert",O.XK_Henkan);re("GroupFirst",O.XK_ISO_First_Group);re("GroupLast",O.XK_ISO_Last_Group);re("GroupNext",O.XK_ISO_Next_Group);re("GroupPrevious",O.XK_ISO_Prev_Group);re("NonConvert",O.XK_Muhenkan);re("PreviousCandidate",O.XK_PreviousCandidate);re("SingleCandidate",O.XK_SingleCandidate);re("HangulMode",O.XK_Hangul);re("HanjaMode",O.XK_Hangul_Hanja);re("JunjaMode",O.XK_Hangul_Jeonja);re("Eisu",O.XK_Eisu_toggle);re("Hankaku",O.XK_Hankaku);re("Hiragana",O.XK_Hiragana);re("HiraganaKatakana",O.XK_Hiragana_Katakana);re("KanaMode",O.XK_Kana_Shift);re("KanjiMode",O.XK_Kanji);re("Katakana",O.XK_Katakana);re("Romaji",O.XK_Romaji);re("Zenkaku",O.XK_Zenkaku);re("ZenkakuHankaku",O.XK_Zenkaku_Hankaku);re("F1",O.XK_F1);re("F2",O.XK_F2);re("F3",O.XK_F3);re("F4",O.XK_F4);re("F5",O.XK_F5);re("F6",O.XK_F6);re("F7",O.XK_F7);re("F8",O.XK_F8);re("F9",O.XK_F9);re("F10",O.XK_F10);re("F11",O.XK_F11);re("F12",O.XK_F12);re("F13",O.XK_F13);re("F14",O.XK_F14);re("F15",O.XK_F15);re("F16",O.XK_F16);re("F17",O.XK_F17);re("F18",O.XK_F18);re("F19",O.XK_F19);re("F20",O.XK_F20);re("F21",O.XK_F21);re("F22",O.XK_F22);re("F23",O.XK_F23);re("F24",O.XK_F24);re("F25",O.XK_F25);re("F26",O.XK_F26);re("F27",O.XK_F27);re("F28",O.XK_F28);re("F29",O.XK_F29);re("F30",O.XK_F30);re("F31",O.XK_F31);re("F32",O.XK_F32);re("F33",O.XK_F33);re("F34",O.XK_F34);re("F35",O.XK_F35);re("Close",O.XF86XK_Close);re("MailForward",O.XF86XK_MailForward);re("MailReply",O.XF86XK_Reply);re("MailSend",O.XF86XK_Send);re("MediaFastForward",O.XF86XK_AudioForward);re("MediaPause",O.XF86XK_AudioPause);re("MediaPlay",O.XF86XK_AudioPlay);re("MediaRecord",O.XF86XK_AudioRecord);re("MediaRewind",O.XF86XK_AudioRewind);re("MediaStop",O.XF86XK_AudioStop);re("MediaTrackNext",O.XF86XK_AudioNext);re("MediaTrackPrevious",O.XF86XK_AudioPrev);re("New",O.XF86XK_New);re("Open",O.XF86XK_Open);re("Print",O.XK_Print);re("Save",O.XF86XK_Save);re("SpellCheck",O.XF86XK_Spell);re("AudioVolumeDown",O.XF86XK_AudioLowerVolume);re("AudioVolumeUp",O.XF86XK_AudioRaiseVolume);re("AudioVolumeMute",O.XF86XK_AudioMute);re("MicrophoneVolumeMute",O.XF86XK_AudioMicMute);re("LaunchApplication1",O.XF86XK_MyComputer);re("LaunchApplication2",O.XF86XK_Calculator);re("LaunchCalendar",O.XF86XK_Calendar);re("LaunchMail",O.XF86XK_Mail);re("LaunchMediaPlayer",O.XF86XK_AudioMedia);re("LaunchMusicPlayer",O.XF86XK_Music);re("LaunchPhone",O.XF86XK_Phone);re("LaunchScreenSaver",O.XF86XK_ScreenSaver);re("LaunchSpreadsheet",O.XF86XK_Excel);re("LaunchWebBrowser",O.XF86XK_WWW);re("LaunchWebCam",O.XF86XK_WebCam);re("LaunchWordProcessor",O.XF86XK_Word);re("BrowserBack",O.XF86XK_Back);re("BrowserFavorites",O.XF86XK_Favorites);re("BrowserForward",O.XF86XK_Forward);re("BrowserHome",O.XF86XK_HomePage);re("BrowserRefresh",O.XF86XK_Refresh);re("BrowserSearch",O.XF86XK_Search);re("BrowserStop",O.XF86XK_Stop);re("Dimmer",O.XF86XK_BrightnessAdjust);re("MediaAudioTrack",O.XF86XK_AudioCycleTrack);re("RandomToggle",O.XF86XK_AudioRandomPlay);re("SplitScreenToggle",O.XF86XK_SplitScreen);re("Subtitle",O.XF86XK_Subtitle);re("VideoModeNext",O.XF86XK_Next_VMode);gt("=",O.XK_equal,O.XK_KP_Equal);gt("+",O.XK_plus,O.XK_KP_Add);gt("-",O.XK_minus,O.XK_KP_Subtract);gt("*",O.XK_asterisk,O.XK_KP_Multiply);gt("/",O.XK_slash,O.XK_KP_Divide);gt(".",O.XK_period,O.XK_KP_Decimal);gt(",",O.XK_comma,O.XK_KP_Separator);gt("0",O.XK_0,O.XK_KP_0);gt("1",O.XK_1,O.XK_KP_1);gt("2",O.XK_2,O.XK_KP_2);gt("3",O.XK_3,O.XK_KP_3);gt("4",O.XK_4,O.XK_KP_4);gt("5",O.XK_5,O.XK_KP_5);gt("6",O.XK_6,O.XK_KP_6);gt("7",O.XK_7,O.XK_KP_7);gt("8",O.XK_8,O.XK_KP_8);gt("9",O.XK_9,O.XK_KP_9);function In(n){if(n.code){switch(n.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return n.code}if(n.keyCode in Gb){let e=Gb[n.keyCode];if(Br()&&e==="ContextMenu"&&(e="MetaRight"),n.location===2)switch(e){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(n.location===3)switch(e){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return e}return"Unidentified"}function vA(n){if(n.key!==void 0&&n.key!=="Unidentified"){switch(n.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(n.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return n.key==="\0"&&n.code==="NumpadDecimal"?"Delete":n.key}const e=In(n);return e in $b?$b[e]:n.charCode?String.fromCharCode(n.charCode):"Unidentified"}function gA(n){const e=vA(n);if(e==="Unidentified")return null;if(e in Pr){let r=n.location;if(e==="Meta"&&r===0&&(r=2),e==="Clear"&&r===3&&In(n)==="NumLock"&&(r=0),(r===void 0||r>3)&&(r=0),e==="Meta"){let i=In(n);if(i==="AltLeft")return O.XK_Meta_L;if(i==="AltRight")return O.XK_Meta_R}if(e==="Clear"&&In(n)==="NumLock")return O.XK_Num_Lock;if(Jn())switch(e){case"Zenkaku":case"Hankaku":return O.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return O.XK_Romaji}return Pr[e][r]}if(e.length!==1)return null;const t=e.charCodeAt();return t?Cn.lookup(t):null}const mA={48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9"},yA=16;class bA{constructor(e,t,r){this._screenInput=e,this._touchInput=t,this._keyDownList={},this._altGrArmed=!1,this._rfbKeyQueue=[],this._lastSendTime=0,this._layoutMap=null,r!=null&&r.getLayoutMap&&r.getLayoutMap().then(i=>{this._layoutMap=i,z("Loaded keyboard layout map")}).catch(i=>{Ke("Failed to get layout map:",i)}),this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this),compositionstart:this._handleCompositionStart.bind(this),compositionend:this._handleCompositionEnd.bind(this),compositionupdate:this._handleCompositionUpdate.bind(this),input:this._handleInput.bind(this)},this.onkeyevent=()=>{},this._enableIME=!1,this._imeStarted=!1,this._lastKeyboardInput=null,this._keyboardInputReset(),this._translateShortcuts=!0}get enableIME(){return this._enableIME}set enableIME(e){this._enableIME=e,this.focus()}get translateShortcuts(){return this._translateShortcuts}set translateShortcuts(e){this._translateShortcuts=e}clearKeysDown(e){if(e)for(const[t,r]of Object.entries(this._keyDownList))switch(t){case"ControlLeft":case"ControlRight":e.ctrlKey||(Ke("A control key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break;case"MetaLeft":case"MetaRight":e.metaKey||(Ke("A meta key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break;case"AltLeft":case"AltRight":e.altKey||(Ke("A alt key is stuck down, sending up. "),this._sendKeyEvent(r,t,!1));break;case"ShiftRight":case"ShiftLeft":e.shiftKey||(Ke("A shift key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break}}_scheduleRfbKeySend(){if(this._rfbKeyQueue.length===0)return;const e=t=>{if(t-this._lastSendTime>yA){for(;this._rfbKeyQueue.length>0;){const i=this._rfbKeyQueue.shift();z("onkeyevent "+(i.down?"down":"up")+", keysym: "+i.keysym,", code: "+i.code),this.onkeyevent(i.keysym,i.code,i.down)}this._lastSendTime=t}this._rfbKeyQueue.length>0&&requestAnimationFrame(e)};requestAnimationFrame(e)}_sendKeyEvent(e,t,r){if(r)this._keyDownList[t]=e;else{if(!(t in this._keyDownList))return;delete this._keyDownList[t]}this._rfbKeyQueue.push({keysym:e,code:t,down:r}),this._scheduleRfbKeySend()}_sendKeyStroke(e,t){this._sendKeyEvent(e,t,!0),this._sendKeyEvent(e,t,!1)}_getKeyCode(e){const t=In(e);if(t!=="Unidentified")return t;if(e.keyCode&&e.keyCode!==229)return"Platform"+e.keyCode;if(e.keyIdentifier){if(!e.keyIdentifier.startsWith("U+"))return e.keyIdentifier;const r=parseInt(e.keyIdentifier.substring(2),16);return"Platform"+String.fromCharCode(r).toUpperCase().charCodeAt()}return"Unidentified"}_handleCompositionStart(e){z("Composition started: "+e.data),this._imeStarted=!0,this._lastKeyboardInput=""}_handleCompositionUpdate(e){z("Composition update: "+e.data);const t=this._lastKeyboardInput,r=e.data;let i=0;if(this._imeStarted)this._sendKeyStroke(Cn.lookup(r.charCodeAt(0)),"Unidentified"),this._imeStarted=!1;else{for(let a=0;a0;a--)this._sendKeyStroke(O.XK_BackSpace,"Backspace");for(let a=i;a> Keyboard.allKeysUp");for(let e in this._keyDownList)this._sendKeyEvent(this._keyDownList[e],e,!1);z("<< Keyboard.allKeysUp")}_isIMEInteraction(e){return e.target!==this._touchInput||!this._enableIME?!1:e.keyCode===229?!0:e.keyCode in mA}_getLayoutChar(e){var t;return(t=this._layoutMap)!=null&&t.get(e)?this._layoutMap.get(e):null}focus(){this._enableIME?this._touchInput.focus():this._screenInput.focus()}blur(){this._enableIME?this._touchInput.blur():this._screenInput.blur()}grab(){this._screenInput.addEventListener("keydown",this._eventHandlers.keydown),this._screenInput.addEventListener("keyup",this._eventHandlers.keyup),this._touchInput.addEventListener("keydown",this._eventHandlers.keydown),this._touchInput.addEventListener("keyup",this._eventHandlers.keyup),this._touchInput.addEventListener("compositionstart",this._eventHandlers.compositionstart),this._touchInput.addEventListener("compositionupdate",this._eventHandlers.compositionupdate),this._touchInput.addEventListener("compositionend",this._eventHandlers.compositionend),this._touchInput.addEventListener("input",this._eventHandlers.input),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._screenInput.removeEventListener("keydown",this._eventHandlers.keydown),this._screenInput.removeEventListener("keyup",this._eventHandlers.keyup),this._touchInput.removeEventListener("keydown",this._eventHandlers.keydown),this._touchInput.removeEventListener("keyup",this._eventHandlers.keyup),this._touchInput.removeEventListener("compositionstart",this._eventHandlers.compositionstart),this._touchInput.removeEventListener("compositionupdate",this._eventHandlers.compositionupdate),this._touchInput.removeEventListener("compositionend",this._eventHandlers.compositionend),this._touchInput.removeEventListener("input",this._eventHandlers.input),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}}const Rl={DOCUMENT_START:0,DOCUMENT_CHUNK:1,DOCUMENT_END:2},xA=async n=>{const e=document.createElement("iframe");e.style.display="none",document.body.appendChild(e),e.onload=()=>{setTimeout(()=>{e.focus(),e.contentWindow.print()},1)};const t=new Blob([new Uint8Array(n)],{type:"application/pdf"});e.src=URL.createObjectURL(t)},EA=n=>{let e=0,t=0,r=[];const i=a=>{const s=Array.from(a),l=new Uint8Array(s).buffer,c=new DataView(l),u=c.getUint32(0,!1);switch(u){case Rl.DOCUMENT_START:e=c.getUint32(4,!1),t=0,console.log(`Downloading document for printing (${e}B)`);break;case Rl.DOCUMENT_CHUNK:let f=c.getUint32(4,!1),h=new Uint8Array(l,8);t+=f,r.push(...h),console.log(`Downloading document for printing (${t}/${e}B)`);break;case Rl.DOCUMENT_END:console.log(`Downloaded document for printing (${t}/${e}B)`),xA(r),t=0,e=0;break;default:console.error(`Unknown packet id: ${u}`);break}};n.subscribeUnixRelay("printer",i)};function SA(n){if(typeof n<"u")Ml(n);else{const e=document.location.href.match(/logging=([A-Za-z0-9._-]*)/);Ml(e||void 0)}}function wA(n,e){const t=new RegExp(".*[?&]"+n+"=([^&#]*)"),r=document.location.href.match(t);return typeof e>"u"&&(e=null),r?decodeURIComponent(r[1]):e}function CA(n,e){const t=new RegExp(".*[&#]"+n+"=([^&]*)"),r=document.location.hash.match(t);return typeof e>"u"&&(e=null),r?decodeURIComponent(r[1]):e}function hr(n,e){const t=CA(n);return t===null?wA(n,e):t}let kr={};function RA(){return!window.chrome||!window.chrome.storage?(kr={},Promise.resolve()):new Promise(n=>window.chrome.storage.sync.get(n)).then(n=>{kr=n})}function Yb(n,e){kr[n]=e}function vr(n,e){var t;kr[n]!==e&&(kr[n]=e);try{(t=window.chrome)!=null&&t.storage?window.chrome.storage.sync.set({[n]:e}):localStorage.setItem(n,e)}catch{console.log("Failed to write setting: "+n+" = "+e)}}function mn(n,e){let t;return n in kr||window.chrome&&window.chrome.storage?t=kr[n]:(t=localStorage.getItem(n),kr[n]=t),typeof t>"u"&&(t=null),t===null&&typeof e<"u"?e:t}function Wt(){try{return window.self!==window.top}catch{return!0}}const IA=n=>Array.from(n).map(e=>e.toString(16).padStart(2,"0").toUpperCase()).join("").replace(/ /g,""),z1=(n="")=>{if(n.length===0)return new Uint8Array(0);if(!/^[0-9a-fA-F]*$/.test(n))throw new Error(`invalid_hex_string: ${n}`);return new Uint8Array(n.match(/.{1,2}/g).map(e=>parseInt(e,16)))},G1=1,$1=2,Y1=3,Z1=4,J1=5,eE=6,Ir=128,Sc=129,Zb=n=>({[G1]:"REQUEST_STATUS",[$1]:"REQUEST_POWER_ON",[Y1]:"REQUEST_POWER_OFF",[Z1]:"REQUEST_RESET",[J1]:"REQUEST_TRANSMIT",[eE]:"REQUEST_INITIALIZE",[Ir]:"RESPONSE_ACK",[Sc]:"RESPONSE_ERROR"})[n]||`0x${n.toString(16).toUpperCase()}`,AA=(n,e=new Uint8Array(0))=>{if(n!==Ir&&n!==Sc)throw new Error("invalid_relay_response");const t=new Uint8Array(3+e.length);return t[0]=n,t[1]=e.length>>8&255,t[2]=e.length&255,t.set(e,3),t},TA=n=>{if(n.length<3)throw new Error("invalid_relay_packet");const e=n[0],t=n[1]<<8|n[2];if(n.length<3+t)throw new Error("invalid_relay_packet");return{command:e,payload:n.slice(3,3+t)}},kA="cjkohjfgidilbllbjkdhpoeonjanpomo";class PA{constructor(){this.context=null,this.cardAtr=null,this.cardHandle=null,this.activeProtocol=null,this.lastTransmitAt=null,this.lastRefreshAt=null}async refresh(){if(this.lastRefreshAt&&Date.now()-this.lastRefreshAt<1e3||this.lastTransmitAt&&Date.now()-this.lastTransmitAt<1e3)return;let e=null;try{if(e=await this._establishContext(),this.readers=await this._listReaders(e),this.readers.length==0)throw new Error("no_readers");this.cardAtr=await this._getStatusChange(e,this.readers[0]).then(({atr:r})=>r)}catch{this.context=null,this.readers=[],this.cardAtr=null,this.cardHandle=null,this.activeProtocol=null}const t={isExtensionEnabled:!!e,isReaderConnected:this.readers.length>0,isCardPresent:!!this.cardAtr};Wt()&&window.parent.postMessage({action:"smartcard_status",value:t},"*"),z(`smartcard.refresh: ${JSON.stringify(t,null,2)}`),this.lastRefreshAt=Date.now(),e&&await this._releaseContext(e)}async powerOn(){if(this.context=this.context||await this._establishContext(),!this.cardHandle||!this.activeProtocol){const{cardHandle:e,activeProtocol:t}=await this._connect(this.context,this.readers[0]);this.cardHandle=e,this.activeProtocol=t}}async powerOff(){this.context&&this.cardHandle&&(await this._disconnect(this.context,this.cardHandle),await this._releaseContext(this.context)),this.context=null,this.cardHandle=null,this.cardAtr=null,this.activeProtocol=null}async transmit(e){try{await this._beginTransaction()}catch{}try{return this.lastTransmitAt=Date.now(),await this._transmit(e)}catch(t){throw this.lastTransmitAt=null,t}finally{await this._endTransaction()}}async _establishContext(){return await this._callExtension("establish_context",0).then(([e,t])=>t)}async _releaseContext(e){return await this._callExtension("release_context",e).then(([t])=>t)}async _listReaders(e){return await this._callExtension("list_readers",e).then(([t,r])=>Array.isArray(r)?r:r.split(",").filter(Boolean))}async _getStatusChange(e,t){return await this._callExtension("get_status_change",e,0,1,0,0,t).then(([r,i,a,s,l])=>({status:r,readerCount:i,currentState:a,eventState:s,atr:l}))}async _connect(e,t){return await this._callExtension("connect",e,2,3,t).then(([r,i,a,s])=>({cardHandle:a,activeProtocol:s}))}async _disconnect(e,t){return await this._callExtension("disconnect",e,t,0).then(([r])=>r)}async _beginTransaction(){return await this._callExtension("begin_transaction",this.context,this.cardHandle).then(([e])=>e)}async _transmit(e){return await this._callExtension("transmit",this.context,this.cardHandle,this.activeProtocol,IA(e)).then(([t,r,i,a,s])=>z1(s))}async _endTransaction(e=0){return await this._callExtension("end_transaction",this.context,this.cardHandle,e).then(([t])=>t)}async _callExtension(e,...t){return new Promise((r,i)=>{const a="smartcard-relay",s=Date.now().toString()+Math.random().toString(36),l={deviceId:a,completionId:s,type:e,args:t.join(",")},c=u=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}u.status==="error"||u.result[0]!=="0x00000000"?i(new Error(u.result[0]||"0x80100001")):r(u.result)};chrome.runtime.sendMessage(kA,l,c)})}}const FA=async n=>{z("smartcard.initializeSmartcardRelay");const e=(r,i=new Uint8Array(0))=>{z(`smartcard.response: command=${Zb(r)}, payloadLen=${i.length}`);const a=AA(r,i);n.sendUnixRelayData("smartcard",a)},t=new PA;await t.refresh(),n.subscribeUnixRelay("smartcard",async r=>{try{const{command:i,payload:a}=TA(r);switch(z(`smartcard.request: command=${Zb(i)}, payloadLen=${a.length}`),i){case eE:e(Ir);break;case G1:await t.refresh(),e(Ir,t.cardAtr?z1(t.cardAtr):new Uint8Array(0));break;case $1:await t.powerOn(),e(Ir);break;case Y1:await t.powerOff(),e(Ir);break;case Z1:e(Ir);break;case J1:await t.powerOn();const s=await t.transmit(a);e(Ir,s);break;default:throw new Error(`Unknown binary command: 0x${i.toString(16)}`)}}catch(i){Ke(`Failed to process command: ${i.message}`),e(Sc,new TextEncoder().encode(i.message))}})},ur=0,Jb=1,ex=2,tx=4,rx=8,Il=16,yn=32,bn=64,Al=127,nx=50,MA=90,ix=250,OA=1e3,LA=1e3,DA=50;class NA{constructor(){this._target=null,this._state=Al,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(e){this.detach(),this._target=e,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(e){let t;switch(e.stopPropagation(),e.preventDefault(),e.type){case"touchstart":t=this._touchStart;break;case"touchmove":t=this._touchMove;break;case"touchend":case"touchcancel":t=this._touchEnd;break}for(let r=0;r0&&Date.now()-this._tracked[0].started>ix){this._state=ur,this._ignored.push(e);return}if(this._waitingRelease){this._state=ur,this._ignored.push(e);return}switch(this._tracked.push({id:e,started:Date.now(),active:!0,firstX:t,firstY:r,lastX:t,lastY:r,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=ur}}_touchMove(e,t,r){let i=this._tracked.find(l=>l.id===e);if(i===void 0)return;i.lastX=t,i.lastY=r;let a=t-i.firstX,s=r-i.firstY;if((i.firstX!==i.lastX||i.firstY!==i.lastY)&&(i.angle=Math.atan2(s,a)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(a,s)u.id!==e);if(Math.hypot(l.firstX-l.lastX,l.firstY-l.lastY)>nx){let u=Math.abs(i.angle-l.angle);u=Math.abs((u+180)%360-180),u>MA?this._state&=~yn:this._state&=~bn,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(e,t,r){if(this._ignored.indexOf(e)!==-1){this._ignored.splice(this._ignored.indexOf(e),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=Al,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=ur),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=~Il,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>ix&&(this._state=ur),this._tracked.some(a=>Date.now()-a.started>OA)&&(this._state=ur);let i=this._tracked.find(a=>a.id===e);if(i.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==ur)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let i=0;ie.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),LA)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=Il,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),DA)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let e=this._getAverageMovement(),t=Math.abs(e.x),r=Math.abs(e.y),i=this._getAverageDistance(),a=Math.abs(Math.hypot(i.first.x,i.first.y)-Math.hypot(i.last.x,i.last.y));r{this._target&&(t=document.elementFromPoint(e.clientX,e.clientY),this._updateVisibility(t))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(e){return e?e===this._target?!0:!(!this._target.contains(e)||window.getComputedStyle(e).cursor!=="none"):!1}_updateVisibility(e){this._captureIsActive()&&(e=document.captureElement),this._shouldShowCursor(e)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}}const Tl=40*1024*1024,ax={CONNECTING:"connecting",OPEN:"open"},zn={CONNECTING:[WebSocket.CONNECTING,ax.CONNECTING],OPEN:[WebSocket.OPEN,ax.OPEN]},sx=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"];class VA{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get sQ(){return this._sQ}get rQ(){return this._rQ}get rQi(){return this._rQi}set rQi(e){this._rQi=e}get rQlen(){return this._rQlen-this._rQi}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(e){this._rQi+=e}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(e){let t=0;for(let r=e-1;r>=0;r--)t+=this._rQ[this._rQi++]<"u"&&(e=this.rQlen);let t="";for(let r=0;r"u"&&(e=this.rQlen),this._rQi+=e,new Uint8Array(this._rQ.buffer,this._rQi-e,e)}rQshiftTo(e,t){t===void 0&&(t=this.rQlen),e.set(new Uint8Array(this._rQ.buffer,this._rQi,t)),this._rQi+=t}rQslice(e,t=this.rQlen){return new Uint8Array(this._rQ.buffer,this._rQi+e,t-e)}rQwait(e,t,r){if(this.rQlen0&&zn.OPEN.indexOf(this._websocket.readyState)>=0&&(this._websocket.send(this._encodeMessage()),this._sQlen=0)}send(e){this._sQ.set(e,this._sQlen),this._sQlen+=e.length,this.flush()}sendString(e){this.send(e.split("").map(t=>t.charCodeAt(0)))}off(e){this._eventHandlers[e]=()=>{}}on(e,t){this._eventHandlers[e]=t}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(e,t){this.attach(new WebSocket(e,t))}attach(e){this.init();const t=[...Object.keys(e),...Object.getOwnPropertyNames(Object.getPrototypeOf(e))];for(let a=0;a{z(">> WebSock.onopen"),this._websocket.protocol&&je("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),z("<< WebSock.onopen")};zn.OPEN.indexOf(this._websocket.readyState)>=0?r():this._websocket.onopen=r,this._websocket.onclose=a=>{z(">> WebSock.onclose"),this._eventHandlers.close(a),z("<< WebSock.onclose")},this._websocket.onerror=a=>{z(">> WebSock.onerror: "+a),this._eventHandlers.error(a),z("<< WebSock.onerror: "+a)}}close(){this._websocket&&((zn.CONNECTING.indexOf(this._websocket.readyState)>=0||zn.OPEN.indexOf(this._websocket.readyState)>=0)&&(je("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_encodeMessage(){return new Uint8Array(this._sQ.buffer,0,this._sQlen)}_expandCompactRQ(e){const t=(this._rQlen-this._rQi+e)*8,r=this._rQbufferSizeTl&&(this._rQbufferSize=Tl,this._rQbufferSize-this.rQlenthis._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.set(t,this._rQlen),this._rQlen+=t.length}_insertIntoMiddle(e){const t=new Uint8Array(e);t.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.copyWithin(this._rQi+t.length,this._rQi,this._rQlen-this._rQi),this._rQ.set(t,this._rQi),this._rQlen+=t.length}_recvMessage(e){this._DecodeMessage(e.data),this.rQlen>0?(this._eventHandlers.message(),this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0)):z("Ignoring empty message")}}const ox=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],KA=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],M=0;let $,Y,ne,Z,J,ie;$=65536;Y=1<<24;ne=$|Y;Z=4;J=1024;ie=Z|J;const lx=[ne|J,M|M,$|M,ne|ie,ne|Z,$|ie,M|Z,$|M,M|J,ne|J,ne|ie,M|J,Y|ie,ne|Z,Y|M,M|Z,M|ie,Y|J,Y|J,$|J,$|J,ne|M,ne|M,Y|ie,$|Z,Y|Z,Y|Z,$|Z,M|M,M|ie,$|ie,Y|M,$|M,ne|ie,M|Z,ne|M,ne|J,Y|M,Y|M,M|J,ne|Z,$|M,$|J,Y|Z,M|J,M|Z,Y|ie,$|ie,ne|ie,$|Z,ne|M,Y|ie,Y|Z,M|ie,$|ie,ne|J,M|ie,Y|J,Y|J,M|M,$|Z,$|J,M|M,ne|Z];$=1<<20;Y=1<<31;ne=$|Y;Z=32;J=32768;ie=Z|J;const cx=[ne|ie,Y|J,M|J,$|ie,$|M,M|Z,ne|Z,Y|ie,Y|Z,ne|ie,ne|J,Y|M,Y|J,$|M,M|Z,ne|Z,$|J,$|Z,Y|ie,M|M,Y|M,M|J,$|ie,ne|M,$|Z,Y|Z,M|M,$|J,M|ie,ne|J,ne|M,M|ie,M|M,$|ie,ne|Z,$|M,Y|ie,ne|M,ne|J,M|J,ne|M,Y|J,M|Z,ne|ie,$|ie,M|Z,M|J,Y|M,M|ie,ne|J,$|M,Y|Z,$|Z,Y|ie,Y|Z,$|Z,$|J,M|M,Y|J,M|ie,Y|M,ne|Z,ne|ie,$|J];$=1<<17;Y=1<<27;ne=$|Y;Z=8;J=512;ie=Z|J;const ux=[M|ie,ne|J,M|M,ne|Z,Y|J,M|M,$|ie,Y|J,$|Z,Y|Z,Y|Z,$|M,ne|ie,$|Z,ne|M,M|ie,Y|M,M|Z,ne|J,M|J,$|J,ne|M,ne|Z,$|ie,Y|ie,$|J,$|M,Y|ie,M|Z,ne|ie,M|J,Y|M,ne|J,Y|M,$|Z,M|ie,$|M,ne|J,Y|J,M|M,M|J,$|Z,ne|ie,Y|J,Y|Z,M|J,M|M,ne|Z,Y|ie,$|M,Y|M,ne|ie,M|Z,$|ie,$|J,Y|Z,ne|M,Y|ie,M|ie,ne|M,$|ie,M|Z,ne|Z,$|J];$=8192;Y=1<<23;ne=$|Y;Z=1;J=128;ie=Z|J;const dx=[ne|Z,$|ie,$|ie,M|J,ne|J,Y|ie,Y|Z,$|Z,M|M,ne|M,ne|M,ne|ie,M|ie,M|M,Y|J,Y|Z,M|Z,$|M,Y|M,ne|Z,M|J,Y|M,$|Z,$|J,Y|ie,M|Z,$|J,Y|J,$|M,ne|J,ne|ie,M|ie,Y|J,Y|Z,ne|M,ne|ie,M|ie,M|M,M|M,ne|M,$|J,Y|J,Y|ie,M|Z,ne|Z,$|ie,$|ie,M|J,ne|ie,M|ie,M|Z,$|M,Y|Z,$|Z,ne|J,Y|ie,$|Z,$|J,Y|M,ne|Z,M|J,Y|M,$|M,ne|J];$=1<<25;Y=1<<30;ne=$|Y;Z=256;J=1<<19;ie=Z|J;const fx=[M|Z,$|ie,$|J,ne|Z,M|J,M|Z,Y|M,$|J,Y|ie,M|J,$|Z,Y|ie,ne|Z,ne|J,M|ie,Y|M,$|M,Y|J,Y|J,M|M,Y|Z,ne|ie,ne|ie,$|Z,ne|J,Y|Z,M|M,ne|M,$|ie,$|M,ne|M,M|ie,M|J,ne|Z,M|Z,$|M,Y|M,$|J,ne|Z,Y|ie,$|Z,Y|M,ne|J,$|ie,Y|ie,M|Z,$|M,ne|J,ne|ie,M|ie,ne|M,ne|ie,$|J,M|M,Y|J,ne|M,M|ie,$|Z,Y|Z,M|J,M|M,Y|J,$|ie,Y|Z];$=1<<22;Y=1<<29;ne=$|Y;Z=16;J=16384;ie=Z|J;const hx=[Y|Z,ne|M,M|J,ne|ie,ne|M,M|Z,ne|ie,$|M,Y|J,$|ie,$|M,Y|Z,$|Z,Y|J,Y|M,M|ie,M|M,$|Z,Y|ie,M|J,$|J,Y|ie,M|Z,ne|Z,ne|Z,M|M,$|ie,ne|J,M|ie,$|J,ne|J,Y|M,Y|J,M|Z,ne|Z,$|J,ne|ie,$|M,M|ie,Y|Z,$|M,Y|J,Y|M,M|ie,Y|Z,ne|ie,$|J,ne|M,$|ie,ne|J,M|M,ne|Z,M|Z,M|J,ne|M,$|ie,M|J,$|Z,Y|ie,M|M,ne|J,Y|M,$|Z,Y|ie];$=1<<21;Y=1<<26;ne=$|Y;Z=2;J=2048;ie=Z|J;const _x=[$|M,ne|Z,Y|ie,M|M,M|J,Y|ie,$|ie,ne|J,ne|ie,$|M,M|M,Y|Z,M|Z,Y|M,ne|Z,M|ie,Y|J,$|ie,$|Z,Y|J,Y|Z,ne|M,ne|J,$|Z,ne|M,M|J,M|ie,ne|ie,$|J,M|Z,Y|M,$|J,Y|M,$|J,$|M,Y|ie,Y|ie,ne|Z,ne|Z,M|Z,$|Z,Y|M,Y|J,$|M,ne|J,M|ie,$|ie,ne|J,M|ie,Y|Z,ne|ie,ne|M,$|J,M|M,M|Z,ne|ie,M|M,$|ie,ne|M,M|J,Y|Z,Y|J,M|J,$|Z];$=1<<18;Y=1<<28;ne=$|Y;Z=64;J=4096;ie=Z|J;const px=[Y|ie,M|J,$|M,ne|ie,Y|M,Y|ie,M|Z,Y|M,$|Z,ne|M,ne|ie,$|J,ne|J,$|ie,M|J,M|Z,ne|M,Y|Z,Y|J,M|ie,$|J,$|Z,ne|Z,ne|J,M|ie,M|M,M|M,ne|Z,Y|Z,Y|J,$|ie,$|M,$|ie,$|M,ne|J,M|J,M|Z,ne|Z,M|J,$|ie,Y|J,M|Z,Y|Z,ne|M,ne|Z,Y|M,$|M,Y|ie,M|M,ne|ie,$|Z,Y|Z,ne|M,Y|J,Y|ie,M|M,ne|ie,$|J,$|J,M|ie,M|ie,$|Z,Y|M,ne|J];class UA{constructor(e){this.keys=[];const t=[],r=[],i=[];for(let a=0,s=56;a<56;++a,s-=8){s+=s<-5?65:s<-3?31:s<-1?63:s===27?35:0;const l=s&7;t[a]=(e[s>>>3]&1<>>10,this.keys[l]|=(u&4032)>>>6,++l,this.keys[l]=(c&258048)<<12,this.keys[l]|=(c&63)<<16,this.keys[l]|=(u&258048)>>>4,this.keys[l]|=u&63,++l}}enc8(e){const t=e.slice();let r=0,i,a,s;i=t[r++]<<24|t[r++]<<16|t[r++]<<8|t[r++],a=t[r++]<<24|t[r++]<<16|t[r++]<<8|t[r++],s=(i>>>4^a)&252645135,a^=s,i^=s<<4,s=(i>>>16^a)&65535,a^=s,i^=s<<16,s=(a>>>2^i)&858993459,i^=s,a^=s<<2,s=(a>>>8^i)&16711935,i^=s,a^=s<<8,a=a<<1|a>>>31&1,s=(i^a)&2863311530,i^=s,a^=s,i=i<<1|i>>>31&1;for(let l=0,c=0;l<8;++l){s=a<<28|a>>>4,s^=this.keys[c++];let u=_x[s&63];u|=fx[s>>>8&63],u|=ux[s>>>16&63],u|=lx[s>>>24&63],s=a^this.keys[c++],u|=px[s&63],u|=hx[s>>>8&63],u|=dx[s>>>16&63],u|=cx[s>>>24&63],i^=u,s=i<<28|i>>>4,s^=this.keys[c++],u=_x[s&63],u|=fx[s>>>8&63],u|=ux[s>>>16&63],u|=lx[s>>>24&63],s=i^this.keys[c++],u|=px[s&63],u|=hx[s>>>8&63],u|=dx[s>>>16&63],u|=cx[s>>>24&63],a^=u}for(a=a<<31|a>>>1,s=(i^a)&2863311530,i^=s,a^=s,i=i<<31|i>>>1,s=(i>>>8^a)&16711935,a^=s,i^=s<<8,s=(i>>>2^a)&858993459,a^=s,i^=s<<2,s=(a>>>16^i)&65535,i^=s,a^=s<<16,s=(a>>>4^i)&252645135,i^=s,a^=s<<4,s=[a,i],r=0;r<8;r++)t[r]=(s[r>>>2]>>>8*(3-r%4))%256,t[r]<0&&(t[r]+=256);return t}encrypt(e){return this.enc8(e.slice(0,8)).concat(this.enc8(e.slice(8,16)))}}const BA={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443},tn={msgTypeVideoEncoders:184,msgTypeKeepAlive:185,msgTypeServerDisconnect:186,msgTypeUserAddedToSession:253,msgTypeUserRemovedFromSession:254},xn={LEFT_BUTTON:1,MIDDLE_BUTTON:2,RIGHT_BUTTON:3,BACK_BUTTON:8,FORWARD_BUTTON:9};function Gn(n){return 1<>0&3)*255/3,v[b*4+1]=(g[m+b]>>2&3)*255/3,v[b*4+2]=(g[m+b]>>4&3)*255/3,v[b*4+3]=255;g=v,m=0}for(let v=0;v<_;v++)g[v*4+3]=255;return s.blitImage(e,h,r,p,g,m,c),a.rQskipBytes(p*f),this._lines-=p,!(this._lines>0)}}class QA{decodeRect(e,t,r,i,a,s,l,c){if(a.rQwait("COPYRECT",4))return!1;let u=a.rQshift16(),f=a.rQshift16();return r===0||i===0||s.copyImage(u,f,e,t,r,i,c),!0}}class jA{constructor(){this._subrects=0}decodeRect(e,t,r,i,a,s,l,c){if(this._subrects===0){if(a.rQwait("RRE",8))return!1;this._subrects=a.rQshift32();let u=a.rQshiftBytes(4);s.fillRect(e,t,r,i,u)}for(;this._subrects>0;){if(a.rQwait("RRE",12))return!1;let u=a.rQshiftBytes(4),f=a.rQshift16(),h=a.rQshift16(),p=a.rQshift16(),_=a.rQshift16();s.fillRect(e+f,t+h,p,_,u,c),this._subrects--}return!0}}class WA{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(e,t,r,i,a,s,l,c){for(this._tiles===0&&(this._tilesX=Math.ceil(r/16),this._tilesY=Math.ceil(i/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let u=1;if(a.rQwait("HEXTILE",u))return!1;let f=a.rQ,h=a.rQi,p=f[h];if(p>30)throw new Error("Illegal hextile subencoding (subencoding: "+p+")");const _=this._totalTiles-this._tiles,g=_%this._tilesX,m=Math.floor(_/this._tilesX),v=e+g*16,b=t+m*16,S=Math.min(16,e+r-v),x=Math.min(16,t+i-b);if(p&1)u+=S*x*4;else if(p&2&&(u+=4),p&4&&(u+=4),p&8){if(u++,a.rQwait("HEXTILE",u))return!1;let E=f[h+u-1];p&16?u+=E*6:u+=E*2}if(a.rQwait("HEXTILE",u))return!1;if(h++,p===0)this._lastsubencoding&1?z(" Ignoring blank after RAW"):s.fillRect(v,b,S,x,this._background,c);else if(p&1){let E=S*x;for(let C=0;C>4,k=P&15,q=f[h];h++;const ce=(q>>4)+1,j=(q&15)+1;this._subTile(F,k,ce,j,R)}}this._finishTile(s,c)}a.rQi=h,this._lastsubencoding=p,this._tiles--}return!0}_startTile(e,t,r,i,a){this._tileX=e,this._tileY=t,this._tileW=r,this._tileH=i;const s=a[0],l=a[1],c=a[2],u=this._tileBuffer;for(let f=0;fzt[e])}getSupportedCodecs(){return Object.keys(this._capabilities).filter(e=>this._capabilities[e])}getPreferredCodec(){return this._capabilities.AVC?dr.AVC:this._capabilities.HEVC?dr.HEVC:this._capabilities.AV1?dr.AV1:dr.AVC}}class $A{constructor(e,t){this._len=0,this._keyFrame=0,this._screenId=null,this._ctl=null,this._rfb=e,this._display=t,this._timestamp=0,this._timestampMap=new Map,this._decoders=new Map,this._decoderRecovery=!1,this._skippedFrames=0}decodeRect(e,t,r,i,a,s,l,c){if(this._ctl===null){if(a.rQwait("KasmVideo screen and compression-control",2))return!1;this._screenId=a.rQshift8(),this._ctl=a.rQshift8(),this._ctl=this._ctl>>4}let u;if(this._ctl===0)u=this._skipRect(e,t,r,i,a,s,l,c);else if(this._ctl===1||this._ctl===2||this._ctl===3)u=this._processVideoFrameRect(this._screenId,this._ctl,e,t,r,i,a,s,l,c);else throw new Error("Illegal KasmVideo compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null,this._screenId=null),u}_configureDecoder(e){z("Configuring decoder for screen: ",e.id," codec: ",$n[e.codec]," width: ",e.width," height: ",e.height);const t={codec:$n[e.codec],displayAspectWidth:e.width,displayAspectHeight:e.height,optimizeForLatency:!0};z("Applying decoder config: ",t);try{e.decoder.configure(t)}catch(r){Ke("Failed to configure decoder: ",r,"config:",t),this._handleDecoderError()}}_updateSize(e,t,r,i){z("Updated size: ",{width:r,height:i}),e.width=r,e.height=i,e.codec=t,this._configureDecoder(e)}_skipRect(e,t,r,i,a,s,l,c){return s.clearRect(e,t,r,i,0,c,!1),!0}_handleProcessVideoChunk(e){const t=performance.now()-this._decodingStartedTime;Rt.end("videoDecode",this._decodingStartedTime),z("Frame ",e," - Video frame processing time: ",t);const r=this._timestampMap.get(e.timestamp);if(!r){at("No metadata found for timestamp: ",e.timestamp),e.close();return}const{screenId:i,frameId:a,x:s,y:l,width:c,height:u}=r;z("frameId: ",a,"x: ",s,"y: ",l,"coded width: ",e.codedWidth,"coded height: ",e.codedHeight),this._display.videoFrameRect(i,e,a,s,l,c,u),this._timestampMap.delete(e.timestamp)}_handleDecoderError(e){Ke("Decoder error triggered - clearing all decoders and switching to image mode"),this._decoders.clear(),this._rfb.dispatchEvent(new CustomEvent("imagemode"))}_processVideoFrameRect(e,t,r,i,a,s,l,c,u,f){let[h,p]=this._readData(l);if(z("Screen: ",e," key_frame: ",h),p===null)return!1;if(this._decoderRecovery&&!h)return++this._skippedFrames,this._skippedFrames<=this._rfb.gop||(this._skippedFrames=0,this._decoderRecovery=!1,this._handleDecoderError()),!0;const _=this._display._screens[e];if(_!=null&&_.encodedFramePort){const v=p.buffer.slice(p.byteOffset,p.byteOffset+p.byteLength),b=r-_.x,S=i-_.y;return _.encodedFramePort.postMessage({type:"encoded_frame",codec:$n[t],keyFrame:!!h,data:v,x:b,y:S,width:a,height:s,frameId:f},[v]),c.enqueueVideoFrameRect(e,f,r,i,a,s),!0}let g;if(this._decoders.has(e)){if(g=this._decoders.get(e),g.decoder.state==="closed"&&!this._decoderRecovery)return this._decoderRecovery=!0,this._decoders.delete(e),this._rfb._requestFullRefresh(),!0}else g={id:e,width:a,height:s,decoder:new VideoDecoder({output:v=>{try{this._handleProcessVideoChunk(v)}catch(b){Ke("Error in _handleProcessVideoChunk: ",b),v.close()}},error:v=>{Ke("FATAL VideoDecoder error:",{message:v.message,name:v.name,decoderState:g.decoder.state}),this._handleDecoderError()}})},z("Created new decoder for screen: ",e),this._decoders.set(e,g);(a!==g.width||s!==g.height||t!==g.codec)&&this._updateSize(g,t,a,s);const m=new EncodedVideoChunk({type:h?"key":"delta",data:p,timestamp:++this._timestamp});z("Type ",m.type," timestamp: ",m.timestamp," bytelength ",m.byteLength),this._timestampMap.set(this._timestamp,{screenId:e,frameId:f,x:r,y:i,width:a,height:s});try{this._decodingStartedTime=Rt.start("videoDecode"),g.decoder.decode(m),this._decoderRecovery&&(this._skippedFrames=0,this._decoderRecovery=!1)}catch(v){Ke("DECODE FAILURE - Screen: ",e,"Key frame ",h," frame_id: ",f," x: ",r," y: ",i," width: ",a," height: ",s," codec: ",t," codec_string: ",$n[t]," decoder_state: ",g.decoder.state," error: ",v),this._handleDecoderError()}return!0}_readData(e){if(this._len===0){if(e.rQwait("KasmVideo",5))return[0,null];this._readTime=Rt.start("frameRead"),this._keyFrame=e.rQshift8();let i=e.rQshift8();this._len=i&127,i&128&&(i=e.rQshift8(),this._len|=(i&127)<<7,i&128&&(i=e.rQshift8(),this._len|=i<<14))}if(e.rQwait("KasmVideo",this._len))return[0,null];const t=e.rQshiftBytes(this._len),r=this._keyFrame;return this._len=0,this._keyFrame=0,Rt.end("frameRead",this._readTime),this._readTime=0,[r,t]}dispose(){for(let e of this._decoders.values())e.decoder.close();this._decoders.clear();for(let e of this._timestampMap.keys())this._timestampMap.delete(e)}}function YA(n){return new Worker(""+new URL("decoder-D4K3-zqk.js",import.meta.url).href,{name:n==null?void 0:n.name})}class tE{constructor(e){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._enableQOI=!1,this._displayGlobal=e,this._lastTransparentRectHash="",this._lastTransparentRectInfo="",this._zlibs=[];for(let t=0;t<4;t++)this._zlibs[t]=new ci;this._itzlib=new ci}get enableQOI(){return this._enableQOI}set enableQOI(e){this._enableQOI!==e&&(e?this._enableQOI=this._enableQOIWorkers():(this._enableQOI=!1,this._disableQOIWorkers()))}decodeRect(e,t,r,i,a,s,l,c){if(this._ctl===null){if(a.rQwait("TIGHT compression-control",1))return!1;this._ctl=a.rQshift8();for(let f=0;f<4;f++)this._ctl>>f&1&&(this._zlibs[f].reset(),je("Reset zlib stream "+f));this._ctl=this._ctl>>4}let u;if(this._ctl===8)u=this._fillRect(e,t,r,i,a,s,l,c);else if(this._ctl===9)u=this._jpegRect(e,t,r,i,a,s,l,c);else if(this._ctl===10)u=this._pngRect(e,t,r,i,a,s,l,c);else if((this._ctl&8)==0)u=this._basicRect(this._ctl,e,t,r,i,a,s,l,c);else if(this._ctl===11)u=this._webpRect(e,t,r,i,a,s,l,c);else if(this._ctl===12)u=this._qoiRect(e,t,r,i,a,s,l,c);else if(this._ctl===13)u=this._itRect(e,t,r,i,a,s,l,c);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null),u}_fillRect(e,t,r,i,a,s,l,c){if(a.rQwait("TIGHT",3))return!1;const u=a.rQi,f=a.rQ;return s.fillRect(e,t,r,i,[f[u],f[u+1],f[u+2]],c,!1),a.rQskipBytes(3),!0}_jpegRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/jpeg",u,c),!0)}_webpRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/webp",u,c),!0)}_processRectQ(){for(;this._availableWorkers.length>0&&this._qoiRects.length>0;){let t=this._availableWorkers.pop(),r=this._workers[t],i=this._qoiRects.shift();var e=new ArrayBuffer(i.data.length);new Uint8Array(e).set(new Uint8Array(i.data)),r.postMessage({x:i.x,y:i.y,width:i.width,height:i.height,depth:i.depth,frame_id:i.frame_id,image:e},[e])}}_qoiRect(e,t,r,i,a,s,l,c){let u=this._readData(a);if(u===null)return!1;if(this._enableQOI){let f=new Uint8Array(u),h={x:e,y:t,width:r,height:i,data:f,depth:l,frame_id:c};this._qoiRects.length<1e3?(this._qoiRects.push(h),this._processRectQ()):(at("QOI queue exceeded limit."),this._qoiRects.splice(0,500))}return!0}_itRect(e,t,r,i,a,s,l,c){let u=this._readData(a);if(u===null)return!1;let f=wn(u),h=`${e}.${t}.${r}.${i}`;if(f===this._lastTransparentRectHash&&h===this._lastTransparentRectInfo)s.dummyRect(e,t,r,i,c);else{const p=u[0],_=u[1],g=u[2],m=u[3],v=Math.floor(r*i/2+1);this._itzlib.reset(),this._itzlib.setInput(u.slice(4)),u=this._itzlib.inflate(v),this._itzlib.setInput(null);let b=new Uint8Array(r*i*4+4);for(let x=0,E=0;x=0;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255;for(let v=7;v>=8-r%8;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255}l.blitImage(e,t,r,i,u,0,c,!1)}_paletteRect(e,t,r,i,a,s,l,c){const u=this._getScratchBuffer(r*i*4),f=r*i*4;for(let h=0,p=0;h=4?this._threads=16:this._threads=8,this._workers=[],this._availableWorkers=[],this._qoiRects=[],this._rectQlooping=!1;for(let r=0;r{switch(this._availableWorkers.push(r),i.data.result){case 0:i.data.freemem=null;let a=new Uint8ClampedArray(i.data.data),s=new ImageData(a,i.data.img.width,i.data.img.height,{colorSpace:i.data.img.colorSpace});this._displayGlobal.blitQoi(i.data.x,i.data.y,i.data.width,i.data.height,s,0,i.data.frame_id,!1),this._processRectQ(),this._workers[r].postMessage({freemem:i.data.data});break;case 1:je("QOI Worker is now available.");break;case 2:je("Error on worker: "+i.error);break}};for(let r=0;r>4;let f;if(u===8)f=this._fillRect(e,t,r,i,a,s,l,c);else if(u===9)f=this._jpegRect(e,t,r,i,a,s,l,c);else if(u===10)f=this._pngRect(e,t,r,i,a,s,l,c);else if((u&8)==0)f=this._basicRect(u,e,t,r,i,a,s,l,c);else if(u===11)f=this._webpRect(e,t,r,i,a,s,l,c);else throw new Error("Illegal udp compression received (ctl: "+u+")");return f}_fillRect(e,t,r,i,a,s,l,c){return s.fillRect(e,t,r,i,[a[13],a[14],a[15]],c,this._directDraw),!0}_jpegRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/jpeg",u,c,this._directDraw),!0)}_webpRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/webp",u,c,this._directDraw),!0)}_pngRect(e,t,r,i,a,s,l,c){Ke("PNG received in UDP rect")}_basicRect(e,t,r,i,a,s,l,c,u){let f=s[12];for(let m=0;m<4;m++)f>>m&1&&this._zlibs[m].reset();let h=s[13],p=14,_=e&3;e&4||(h=0,p=13);let g;switch(h){case 0:g=this._copyFilter(_,t,r,i,a,s,l,c,u,p);break;case 1:g=this._paletteFilter(_,t,r,i,a,s,l,c,u);break;case 2:g=this._gradientFilter(_,t,r,i,a,s,l,c,u);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return g}_copyFilter(e,t,r,i,a,s,l,c,u,f=14){const h=i*a*3;if(h===0)return!0;if(h<12)s=s.slice(f,f+h);else{if(s=this._readData(s,f),s===null)return!1;this._zlibs[e].setInput(s),s=this._zlibs[e].inflate(h),this._zlibs[e].setInput(null)}let p=new Uint8Array(i*a*4);for(let _=0,g=0;_=0;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255;for(let v=7;v>=8-r%8;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255}l.blitImage(e,t,r,i,u,0,c,this._directDraw)}_paletteRect(e,t,r,i,a,s,l,c){const u=this._getScratchBuffer(r*i*4),f=r*i*4;for(let h=0,p=0;h> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=rT,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._canvas.overflow="hidden",this._screen.appendChild(this._canvas),this._cursor=new qA,this._cursorImage=We.cursors.none;try{this._display=new aA(this._canvas,this,this._isPrimaryDisplay,this._videoRenderingMode)}catch(l){throw Ke("Display exception: "+l),l}this._display.onflush=this._onFlush.bind(this),this._decoders[Ce.encodingRaw]=new HA,this._decoders[Ce.encodingCopyRect]=new QA,this._decoders[Ce.encodingRRE]=new jA,this._decoders[Ce.encodingHextile]=new WA,this._decoders[Ce.encodingKasmVideo]=new $A(this,this._display),this._decoders[Ce.encodingTight]=new tE(this._display),this._decoders[Ce.encodingTightPNG]=new ZA,this._decoders[Ce.encodingUDP]=new JA,this._keyboard=new bA(this._canvas,t,navigator.keyboard),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._gestures=new NA,this._isPrimaryDisplay&&this._setupWebSocket(),z("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this.lastActiveAt=Date.now(),this._viewOnly=!1,this._clipViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._lastVisibilityState="visible",this._showDotCursor=!1,i.showDotCursor!==void 0&&(at("Specifying showDotCursor as a RFB constructor argument is deprecated"),this._showDotCursor=i.showDotCursor),this._qualityLevel=6,this._compressionLevel=2,this._clipHash=0,this._hwEncoderProfile=eT.BASELINE,this._gop=this._frameRate,this._videoStreamQuality=23,this._qualityPreset=3,this._streamMode=Ce.pseudoEncodingStreamingModeJpegWebp}get connectionID(){return this._connectionID}get translateShortcuts(){return this._keyboard.translateShortcuts}set translateShortcuts(e){this._keyboard.translateShortcuts=e}get pointerLock(){return this._pointerLock}set pointerLock(e){this._pointerLock?window.document.exitPointerLock?(window.document.exitPointerLock(),this._pointerLockChanging=!0):window.document.mozExitPointerLock&&(window.document.mozExitPointerLock(),this._pointerLockChanging=!0):this._canvas.requestPointerLock?(this._canvas.requestPointerLock(),this._pointerLockChanging=!0):this._canvas.mozRequestPointerLock&&(this._canvas.mozRequestPointerLock(),this._pointerLockChanging=!0)}get pointerRelative(){return this._pointerRelativeEnabled}set pointerRelative(e){if(this._pointerRelativeEnabled=e,e){let t=this._display.scale===1?this._fbWidth:this._fbWidth*this._display.scale,r=this._display.scale===1?this._fbHeight:this._fbHeight*this._display.scale;this._pointerLockPos.x=Math.floor(t/2),this._pointerLockPos.y=Math.floor(r/2),this._mousePos={x:this._pointerLockPos.x,y:this._pointerLockPos.y},this._cursor.move(this._pointerLockPos.x,this._pointerLockPos.y)}}get keyboard(){return this._keyboard}get clipboardBinary(){return this._clipboardMode}set clipboardBinary(e){this._clipboardMode=e}get videoQuality(){return this._videoQuality}set videoQuality(e){(this._videoQuality<=1||e<=1)&&(this._pendingApplyResolutionChange=!0),this._videoQuality=e,this._pendingApplyEncodingChanges=!0}get preferBandwidth(){return this._preferBandwidth}set preferBandwidth(e){this._preferBandwidth=e,this._pendingApplyEncodingChanges=!0}get viewOnly(){return this._viewOnly}set viewOnly(e){z("Setting viewOnly to "+e),this._viewOnly=e,(this.isConnecting||this.isConnected)&&(e?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get touchButton(){return 0}set touchButton(e){at("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(e){this._clipViewport=e}get scaleViewport(){return this._scaleViewport}set scaleViewport(e){this._scaleViewport!==e&&(this._scaleViewport=e,this._pendingApplyResolutionChange=!0)}get resizeSession(){return this._resizeSession}set resizeSession(e){this._resizeSession=e,e&&(this.scaleViewport=!0,this._pendingApplyResolutionChange=!0)}get showDotCursor(){return this._showDotCursor}set showDotCursor(e){this._showDotCursor=e,this._refreshCursor()}get background(){return this._screen.style.background}set background(e){this._screen.style.background=e}get enableWebP(){return this._enableWebP}set enableWebP(e){this._enableWebP!==e&&(this._enableWebP=e,this._pendingApplyEncodingChanges=!0)}get enableQOI(){return this._enableQOI}set enableQOI(e){this._enableQOI!==e&&(this._decoders[Ce.encodingTight].enableQOI=e,this._enableQOI=this._decoders[Ce.encodingTight].enableQOI,this._enableQOI===e&&(this._pendingApplyEncodingChanges=!0))}get antiAliasing(){return this._display.antiAliasing}set antiAliasing(e){this._display.antiAliasing=e}get jpegVideoQuality(){return this._jpegVideoQuality}set jpegVideoQuality(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._jpegVideoQuality!==e&&(this._jpegVideoQuality=e,this._pendingApplyEncodingChanges=!0)}get webpVideoQuality(){return this._webpVideoQuality}set webpVideoQuality(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._webpVideoQuality!==e&&(this._webpVideoQuality=e,this._pendingApplyEncodingChanges=!0)}get treatLossless(){return this._treatLossless}set treatLossless(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._treatLossless!==e&&(this._treatLossless=e)}get dynamicQualityMin(){return this._dynamicQualityMin}set dynamicQualityMin(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._dynamicQualityMin!==e&&(this._dynamicQualityMin=e,this._pendingApplyEncodingChanges=!0)}get dynamicQualityMax(){return this._dynamicQualityMax}set dynamicQualityMax(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._dynamicQualityMax!==e&&(this._dynamicQualityMax=e,this._pendingApplyEncodingChanges=!0)}get videoArea(){return this._videoArea}set videoArea(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video area must be an integer between 0 and 100");return}this._videoArea!==e&&(this._videoArea=e,this._pendingApplyEncodingChanges=!0)}get videoTime(){return this._videoTime}set videoTime(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video time must be an integer between 0 and 100");return}this._videoTime!==e&&(this._videoTime=e,this._pendingApplyEncodingChanges=!0)}get videoOutTime(){return this._videoOutTime}set videoOutTime(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video out time must be an integer between 0 and 100");return}this._videoOutTime!==e&&(this._videoOutTime=e,this._pendingApplyEncodingChanges=!0)}get videoScaling(){return this._videoScaling}set videoScaling(e){if(!Number.isInteger(e)||e<0||e>2){Ke("video scaling must be an integer between 0 and 2");return}this._videoScaling!==e&&(this._videoScaling=e,this._pendingApplyEncodingChanges=!0)}get frameRate(){return this._frameRate}set frameRate(e){if(!Number.isInteger(e)||e<1||e>120){Ke("frame rate must be an integer between 1 and 120");return}this._frameRate!==e&&(this._frameRate=e,this._pendingApplyEncodingChanges=!0)}get maxVideoResolutionX(){return this._maxVideoResolutionX}set maxVideoResolutionX(e){if(!Number.isInteger(e)||e<100){Ke("max video resolution must be an integer greater than 100");return}this._maxVideoResolutionX!==e&&(this._maxVideoResolutionX=e,this._pendingApplyVideoRes=!0)}get maxVideoResolutionY(){return this._maxVideoResolutionY}set maxVideoResolutionY(e){if(!Number.isInteger(e)||e<100){Ke("max video resolution must be an integer greater than 100");return}this._maxVideoResolutionY!==e&&(this._maxVideoResolutionY=e,this._pendingApplyVideoRes=!0)}get forcedResolutionX(){return this._forcedResolutionX}set forcedResolutionX(e){e!==this._forcedResolutionX&&(this._forcedResolutionX=e,this._pendingApplyResolutionChange=!0)}get forcedResolutionY(){return this._forcedResolutionY}set forcedResolutionY(e){e!==this._forcedResolutionY&&(this._forcedResolutionY=e,this._pendingApplyResolutionChange=!0)}get qualityLevel(){return this._qualityLevel}set qualityLevel(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==e&&(this._qualityLevel=e,this._pendingApplyEncodingChanges=!0)}get compressionLevel(){return this._compressionLevel}set compressionLevel(e){if(!Number.isInteger(e)||e<0||e>9){Ke("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==e&&(this._compressionLevel=e,this.isConnected&&this._sendEncodings())}get isConnected(){return this._rfbConnectionState==="connected"}get isConnecting(){return this._rfbConnectionState==="connecting"}get statsFps(){return this._display.fps}get statsDroppedFps(){return this._display.droppedFps}get enableWebRTC(){return this._useUdp}set enableWebRTC(e){this._useUdp=e,e?this.isConnected&&this._transitConnectionState!==this.TransitConnectionStates.Udp&&this._sendUdpUpgrade():this.isConnected&&this._transitConnectionState!==this.TransitConnectionStates.Tcp&&this._sendUdpDowngrade()}get enableHiDpi(){return this._hiDpi}set enableHiDpi(e){e!==this._hiDpi&&(this._hiDpi=e,this._pendingApplyResolutionChange=!0,this._display.applyServerResolution(0,0,0))}get threading(){return this._threading}set threading(e){e!==this._threading&&(this._threading=e,this._display.threading=e)}get hwEncoderProfile(){return this._hwEncoderProfile}set hwEncoderProfile(e){e!==this._hwEncoderProfile&&(this._hwEncoderProfile=e,this._pendingApplyEncodingChanges=!0)}get gop(){return this._gop}set gop(e){e!==this._gop&&(this._gop=e,this._pendingApplyEncodingChanges=!0)}get videoStreamQuality(){return this._videoStreamQuality}set videoStreamQuality(e){e!==this._videoStreamQuality&&(this._videoStreamQuality=e,this._pendingApplyEncodingChanges=!0,this._pendingVideoQualityRefresh=!0)}get qualityPreset(){return this._qualityPreset}set qualityPreset(e){e!==this._qualityPreset&&(this._qualityPreset=e,this._pendingApplyEncodingChanges=!0)}get streamMode(){return this._streamMode}set streamMode(e){e!==this._streamMode&&(this._streamMode=e,this._pendingApplyEncodingChanges=!0)}refreshSecondaryDisplays(){this._display.screens.length>1&&this._proxyRFBMessage("applySettings",[this._hiDpi,this._clipViewport,this._scaleViewport,this._resizeSession,this._videoQuality,this._forcedResolutionX,this._forcedResolutionY])}attachSecondaryDisplay(e){this._updateConnectionState("connecting");const t=this._registerSecondaryDisplay(!1,e);return this._updateConnectionState("connected"),t}reattachSecondaryDisplay(e,t){return this._updateConnectionState("connecting"),this._registerSecondaryDisplay(e,t),this._updateConnectionState("connected"),e}applyScreenPlan(e){if(this._isPrimaryDisplay){let t=this._screenSize(),r=Number.MAX_SAFE_INTEGER,i=Number.MAX_SAFE_INTEGER,a=0;for(let l=0;lt.screens.length)throw new Error("Screen plan contained more screens then there are registered.");if(a1&&this.refreshSecondaryDisplays(),(this._resizeSession||this._forcedResolutionX&&this._forcedResolutionY)&&(this.dispatchEvent(new CustomEvent("screenregistered",{})),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500))),this._pendingApplyEncodingChanges&&(this._sendEncodings(),this._pendingVideoQualityRefresh&&(this._requestFullRefresh(),this._pendingVideoQualityRefresh=!1)),this._pendingApplyVideoRes=!1,this._pendingApplyEncodingChanges=!1,this._pendingApplyResolutionChange=!1):this._isPrimaryDisplay||(this._pendingApplyResolutionChange&&(this._scaleViewport&&this._clipViewport&&this._updateClip(),this._updateScale(),!this._scaleViewport&&this._clipViewport&&this._updateClip()),(this._resizeSession||this._forcedResolutionX&&this._forcedResolutionY)&&this._requestRemoteResize())}disconnect(){this._isPrimaryDisplay?(this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._proxyRFBMessage("disconnect")):(this._updateConnectionState("disconnecting"),this._unregisterSecondaryDisplay(),this._rfbConnectionState="")}terminate(){this._isPrimaryDisplay&&(this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._proxyRFBMessage("terminate"))}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(je("Sending Ctrl-Alt-Del"),this.sendKey(O.XK_Control_L,"ControlLeft",!0),this.sendKey(O.XK_Alt_L,"AltLeft",!0),this.sendKey(O.XK_Delete,"Delete",!0),this.sendKey(O.XK_Delete,"Delete",!1),this.sendKey(O.XK_Alt_L,"AltLeft",!1),this.sendKey(O.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(e,t,r){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(t!==null&&this._setLastActive(),r===void 0){this.sendKey(e,t,!0),this.sendKey(e,t,!1);return}const i=BA[t];if(this._qemuExtKeyEventSupported&&i)e=e||0,je("Sending key ("+(r?"down":"up")+"): keysym "+e+", scancode "+i),this._isPrimaryDisplay?We.messages.QEMUExtendedKeyEvent(this._sock,e,r,i):this._proxyRFBMessage("QEMUExtendedKeyEvent",[e,r,i]);else{if(!e)return;this._isPrimaryDisplay?We.messages.keyEvent(this._sock,e,r?1:0):this._proxyRFBMessage("keyEvent",[e,r?1:0])}}sendKeepAlive(){this._rfbConnectionState==="connected"&&(this._isPrimaryDisplay?We.messages.keepAlive(this._sock):this._proxyRFBMessage("keepAlive",[]))}focus(){this._keyboard.focus()}blur(){this._keyboard.blur()}checkLocalClipboard(){this.clipboardUp&&this.clipboardSeamless&&this._resendClipboardNextUserDrivenEvent&&(this._resendClipboardNextUserDrivenEvent=!1,this.clipboardBinary?navigator.clipboard.read().then(e=>{this.clipboardPasteDataFrom(e)},e=>{z("No data in clipboard: "+e)}):navigator.clipboard&&navigator.clipboard.readText&&navigator.clipboard.readText().then((function(e){this.clipboardPasteFrom(e)}).bind(this)).catch(function(){return z("Failed to read system clipboard")}))}clipboardPasteFrom(e){if(this._rfbConnectionState!=="connected"||this._viewOnly||!(typeof e=="string"&&e.length>0))return;let t=new TextEncoder().encode(e),r=wn(t);if(r===this._clipHash){z("No clipboard changes");return}else this._clipHash=r;let i=[],a=["text/plain"];i.push(t),this._isPrimaryDisplay?We.messages.sendBinaryClipboard(this._sock,i,a):this._proxyRFBMessage("sendBinaryClipboard",[i,a])}async clipboardPasteDataFrom(e){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;let t=[],r=[],i=0;for(let a=0;a0&&(this._isPrimaryDisplay?We.messages.sendBinaryClipboard(this._sock,t,r):this._proxyRFBMessage("sendBinaryClipboard",[t,r]))}requestBottleneckStats(){this._isPrimaryDisplay&&We.messages.requestStats(this._sock)}subscribeUnixRelay(e,t){this._isPrimaryDisplay&&(this._unixRelays=this._unixRelays||{},this._unixRelays[e]=t,We.messages.sendSubscribeUnixRelay(this._sock,e))}sendUnixRelayData(e,t){this._isPrimaryDisplay&&We.messages.sendUnixRelay(this._sock,e,t)}_setLastActive(){this.lastActiveAt=Date.now()}_changeTransitConnectionState(e){je("Transit state change from "+this._transitConnectionState.toString()+" to "+e.toString()),this._transitConnectionState=e}_setupWebSocket(){this._sock=new VA,this._sock.on("message",()=>{this._handleMessage()}),this._sock.on("open",()=>{this.isConnecting&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",z("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}),this._sock.on("close",e=>{z("WebSocket on-close event");let t="";if(e.code&&(t="(code: "+e.code,e.reason&&(t+=", reason: "+e.reason),t+=")"),typeof e.code=="number"&&(this._disconnectCode=e.code),e.reason&&(this._disconnectReason=e.reason),this._serverDisconnectNotice){const r=this._serverDisconnectNotice;r.reason&&!this._disconnectReason&&(this._disconnectReason=r.reason),this._rfbCleanDisconnect=!!r.graceful,this._lastServerDisconnectNotice=r,this._serverDisconnectNotice=null}else(e.wasClean===!1||e.code===1006)&&(this._rfbCleanDisconnect=!1);switch(this._rfbConnectionState){case"connecting":this._fail("Connection closed "+t);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+t);break;default:this._fail("Unexpected server disconnect before connecting "+t);break}this._sock.off("close"),this._rawChannel=null}),this._sock.on("error",e=>at("WebSocket on-error event")),setTimeout(this._updateConnectionState.bind(this,"connecting"))}_connect(){if(z(">> RFB.connect"),this._url&&this._isPrimaryDisplay)try{je(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols),this._setLastActive()}catch(e){e.name==="SyntaxError"?this._fail("Invalid host or port ("+e+")"):this._fail("Error when opening socket ("+e+")")}else if(this._isPrimaryDisplay)try{je(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel)}catch(e){this._fail("Error attaching channel ("+e+")")}if(this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),window.addEventListener("resize",this._eventHandlers.windowResize),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("focus",this._eventHandlers.handleFocusChange),window.addEventListener("focus",this._eventHandlers.handleFocusChange),window.addEventListener("blur",this._eventHandlers.handleFocusChange),document.addEventListener("visibilitychange",this._eventHandlers.handleVisibilityChange),window.addEventListener("mouseover",this._eventHandlers.handleMouseOut),an()&&this._canvas.addEventListener("touchend",this._eventHandlers.updateHiddenKeyboard),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),document.onpointerlockchange!==void 0?(document.addEventListener("pointerlockchange",this._eventHandlers.handlePointerLockChange,!1),document.addEventListener("pointerlockerror",this._eventHandlers.handlePointerLockError,!1)):document.onmozpointerlockchange!==void 0&&(document.addEventListener("mozpointerlockchange",this._eventHandlers.handlePointerLockChange,!1),document.addEventListener("mozpointerlockerror",this._eventHandlers.handlePointerLockError,!1)),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),this._resendClipboardNextUserDrivenEvent=!0,typeof RTCPeerConnection<"u"&&this._isPrimaryDisplay){this._udpBuffer=new Map,this._udpPeer=new RTCPeerConnection({iceServers:[{urls:["stun:stun.l.google.com:19302"]}]});let e=this._udpPeer;e.onicecandidate=function(i){i.candidate?z("received ice candidate",i.candidate):z("all candidates received")},e.ondatachannel=function(i){z("peer connection on data channel",i)},this._udpChannel=e.createDataChannel("webudp",{ordered:!1,maxRetransmits:0}),this._udpChannel.binaryType="arraybuffer",this._udpChannel.onerror=function(i){Ke("data channel error "+i.message),this._udpTransitFailures+=1,this._sendUdpDowngrade()},this._sock;let t=this._udpBuffer,r=this;this._udpChannel.onmessage=function(i){const a=new Uint8Array(i.data),s=parseInt(a[0]+(a[1]<<8)+(a[2]<<16)+(a[3]<<24),10),l=parseInt(a[4]+(a[5]<<8)+(a[6]<<16)+(a[7]<<24),10),c=parseInt(a[8]+(a[9]<<8)+(a[10]<<16)+(a[11]<<24),10);parseInt(a[12]+(a[13]<<8)+(a[14]<<16)+(a[15]<<24),10);const u=parseInt(a[16]+(a[17]<<8)+(a[18]<<16)+(a[19]<<24),10);if(r._transitConnectionState!==r.TransitConnectionStates.Udp&&(r._display.clear(),r._changeTransitConnectionState(r.TransitConnectionStates.Udp)),c==1)r._handleUdpRect(a.slice(20),u);else{const h=Date.now();if(t.has(s)){let p=t.get(s);if(p.recieved_pieces+=1,p.data[l]=a.slice(20),p.total_bytes+=p.data[l].length,p.total_pieces==p.recieved_pieces){var f=new Uint8Array(p.total_bytes);let _=0;for(let g=0;g> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),document.onpointerlockchange!==void 0?(document.removeEventListener("pointerlockchange",this._eventHandlers.handlePointerLockChange),document.removeEventListener("pointerlockerror",this._eventHandlers.handlePointerLockError)):document.onmozpointerlockchange!==void 0&&(document.removeEventListener("mozpointerlockchange",this._eventHandlers.handlePointerLockChange),document.removeEventListener("mozpointerlockerror",this._eventHandlers.handlePointerLockError)),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("focus",this._eventHandlers.handleFocusChange),window.removeEventListener("resize",this._eventHandlers.windowResize),window.removeEventListener("focus",this._eventHandlers.handleFocusChange),document.removeEventListener("visibilitychange",this._eventHandlers.handleVisibilityChange),this._keyboard.ungrab(),this._gestures.detach(),this._isPrimaryDisplay?this._sock.close():this._primaryDisplayChannel&&(this._primaryDisplayChannel.postMessage({eventType:"unregister",screenID:this._display.screenID}),this._primaryDisplayChannel.removeEventListener("message",this._handleSecondaryDisplayMessage),this._primaryDisplayChannel.close(),this._primaryDisplayChannel=null);try{this._target.removeChild(this._screen)}catch(e){if(e.name!=="NotFoundError")throw e}this._display.dispose(),clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),window.localStorage.removeItem("lastWindow"),z("<< RFB.disconnect")}_updateHiddenKeyboard(e){const t=Math.max(0,e.pageY-50);document.querySelector("#noVNC_keyboardinput").style.top=`${t}px`}_handleFocusChange(e){if(this._resendClipboardNextUserDrivenEvent=!0,e.type=="focus"&&e.currentTarget instanceof Window)if(this._lastVisibilityState==="visible"){const t=window.localStorage.getItem("lastWindow");z("Window focused while user switched between windows."),t!=e.currentTarget.name&&(this._sendLeftClickonNextMove=!0,window.localStorage.setItem("lastWindow",e.currentTarget.name))}else z("Window focused while user switched between tabs.");document.visibilityState==="visible"&&this._lastVisibilityState==="hidden"&&(z("Window is now visible."),this._lastVisibilityState=document.visibilityState)}_handleVisibilityChange(e){document.visibilityState==="hidden"&&(this._lastVisibilityState=document.visibilityState,z("Window is not visible."))}_focusCanvas(e){window.parent.postMessage({action:"enable_audio",value:null},"*"),!this._pointerLock&&this._pointerRelativeEnabled&&(this.pointerLock=!0),this._resendClipboardNextUserDrivenEvent&&this.checkLocalClipboard(),this.focusOnClick&&this.focus()}_setDesktopName(e){this._fbName=e,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_windowResize(e){window.requestAnimationFrame(()=>{this._screenSize(),this._updateClip(),this._updateScale()}),this.dispatchEvent(new CustomEvent("screenregistered",{})),this._resizeSession&&(clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500))}_updateClip(){const e=this._display.clipViewport;let t=this._clipViewport;if(this._scaleViewport&&(t=!1),e!==t&&(this._display.clipViewport=t),t){const r=this._screenSize();this._display.viewportChangeSize(r.screens[0].serverWidth,r.screens[0].serverHeight),this._fixScrollbars()}}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{const e=this._screenSize();this._display.autoscale(e.screens[0].width,e.screens[0].height,e.screens[0].scale)}this._fixScrollbars()}_requestRemoteResize(){if(clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._isPrimaryDisplay){if(this._viewOnly||!this._supportsSetDesktopSize||!this._resizeSession&&!this._forcedResolutionX&&!this._forcedResolutionY)return;for(let t=0;t0){let e=null;window.localStorage.getItem("autoPlacement")===null&&(e={left:window.screenLeft,top:window.screenTop}),this._registerSecondaryDisplay(this._display.screens[0],e)}}_requestFullRefresh(){We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight)}_screenSize(e){return this._display.getScreenSize(this.videoQuality,this.forcedResolutionX,this.forcedResolutionY,this._hiDpi,e,!this._resizeSession,this._streamMode)}_fixScrollbars(){const e=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=e}_updateConnectionState(e){const t=this._rfbConnectionState;if(e===t){z("Already in state '"+e+"', ignoring");return}if(t==="disconnected"){Ke("Tried changing state of a disconnected RFB object");return}switch(e){case"connected":if(t!=="connecting"){Ke("Bad transition to connected state, previous connection state: "+t);return}break;case"disconnected":if(t!=="disconnecting"){Ke("Bad transition to disconnected state, previous connection state: "+t);return}break;case"connecting":if(t!==""){Ke("Bad transition to connecting state, previous connection state: "+t);return}break;case"disconnecting":if(t!=="connected"&&t!=="connecting"){Ke("Bad transition to disconnecting state, previous connection state: "+t);return}break;case"proxied":break;default:Ke("Unknown connection state: "+e);return}switch(this._rfbConnectionState=e,z("New state '"+e+"', was '"+t+"'."),e==="connecting"&&(this._disconnectReason=null,this._disconnectCode=null,this._serverDisconnectNotice=null,this._lastServerDisconnectNotice=null,this._rfbCleanDisconnect=!0),this._disconnTimer&&e!=="disconnecting"&&(z("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._isPrimaryDisplay&&this._sock.off("close")),e){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._proxyRFBMessage("secondarydisconnected"),this._disconnect(),this._disconnTimer=setTimeout(()=>{Ke("Disconnection timed out."),this._updateConnectionState("disconnected")},tT*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect,reason:this._disconnectReason,code:this._disconnectCode,serverNotice:this._lastServerDisconnectNotice}})),this._disconnectReason=null,this._disconnectCode=null,this._lastServerDisconnectNotice=null;break}}_fail(e){switch(this._rfbConnectionState){case"disconnecting":Ke("Failed when disconnecting: "+e);break;case"connected":Ke("Failed while connected: "+e);break;case"connecting":Ke("Failed when connecting: "+e);break;default:Ke("RFB failure: "+e);break}return this._disconnectReason=e,this._disconnectCode=null,this._serverDisconnectNotice=null,this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(e,t){this._capabilities[e]=t,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_proxyRFBMessage(e,t){let r={eventType:e,args:t,screenID:this._display.screenID,screenIndex:this._display.screenIndex,mouseLastScreenIndex:this._mouseLastScreenIndex};this._controlChannel.postMessage(r)}_handleControlMessage(e){if(this._isPrimaryDisplay){let t;switch(e.data.eventType){case"register":const r={...e.data.details,screenID:e.data.screenID};let i=this._display.addScreen(e.data.screenID,e.data.width,e.data.height,e.data.pixelRatio,e.data.containerHeight,e.data.containerWidth,e.data.scale,e.data.serverWidth,e.data.serverHeight,e.data.x,e.data.y,e.data.windowId);this._proxyRFBMessage("screenRegistrationConfirmed",[this._display.screens[i].screenID,i]),this._sendEncodings(),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500),this.dispatchEvent(new CustomEvent("screenregistered",{detail:r})),je(`Secondary monitor (${e.data.screenID}) has been registered.`);break;case"reattach":this._display.addScreen(e.data.screenID,e.data.width,e.data.height,e.data.pixelRatio,e.data.containerHeight,e.data.containerWidth,e.data.scale,e.data.serverWidth,e.data.serverHeight,e.data.x,e.data.y,e.data.windowId),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500),this.dispatchEvent(new CustomEvent("screenregistered",{})),je(`Secondary monitor (${e.data.screenID}) has been reattached.`);break;case"unregister":if(this._display.removeScreen(e.data.screenID)){this.dispatchEvent(new CustomEvent("screenregistered",{})),je(`Secondary monitor (${e.data.screenID}) has been removed.`);const a=this._screenSize();We.messages.setDesktopSize(this._sock,a,this._screenFlags),this._sendEncodings(),this._updateContinuousUpdates(),this.dispatchEvent(new CustomEvent("screenregistered",{}))}else je(`Secondary monitor (${e.data.screenID}) not found.`);break;case"mousemove":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask!==0&&!e.data.args[2]&&(this._mouseButtonMask=0),We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),e.data.args[3]&&(this._mouseButtonMask|=1,We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseButtonMask&=-2,We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),z("Simulated Left Click on secondary display.")),this._setLastActive();break;case"mousedown":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask|=e.data.args[2],We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._setLastActive();break;case"mouseup":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask&=~e.data.args[2],We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._setLastActive();break;case"scroll":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,0,e.data.args[2],e.data.args[3]),this._setLastActive();break;case"keepAlive":We.messages.keepAlive(this._sock);break;case"keyEvent":We.messages.keyEvent(this._sock,...e.data.args),this._setLastActive();break;case"sendBinaryClipboard":We.messages.sendBinaryClipboard(this._sock,...e.data.args);break}}else switch(e.data.eventType){case"updateCursor":this._updateCursor(...e.data.args),this._mouseLastScreenIndex=e.data.mouseLastScreenIndex;break;case"receivedClipboard":e.data.mouseLastScreenIndex===this._display.screenIndex&&this._write_binary_clipboard(...e.data.args);break;case"disconnect":this.disconnect();break;case"terminate":this.disconnect(),window.close();break;case"applySettings":this._isPrimaryDisplay||(this.enableHiDpi=e.data.args[0],this.clipViewport=e.data.args[1],this.scaleViewport=e.data.args[2],this.resizeSession=e.data.args[3],this.videoQuality=e.data.args[4],this.scaleViewport=e.data.args[3],this.updateConnectionSettings());break;case"applyScreenPlan":e.data.args[0]==this._display.screenID&&(this._display.screens[0].screenIndex=e.data.args[1],this._display.screens[0].width=e.data.args[2],this._display.screens[0].height=e.data.args[3],this._display.screens[0].x=e.data.args[4],this._display.screens[0].y=e.data.args[5],this.updateConnectionSettings());break;case"screenRegistrationConfirmed":e.data.args[0]==this._display.screenID&&(this._display.screens[0].screenIndex=e.data.args[1]);break}}_unregisterSecondaryDisplay(){if(!this._isPrimaryDisplay){let e={eventType:"unregister",screenID:this._display.screenID};this._controlChannel.postMessage(e)}}_registerSecondaryDisplay(e=!1,t=null){if(!this._isPrimaryDisplay){const r=e?"reattach":"register";let i=this._screenSize();this._display.resize(i.screens[0].serverWidth,i.screens[0].serverHeight),this._display.autoscale(i.screens[0].serverWidth,i.screens[0].serverHeight,i.screens[0].scale);let a=i.screens[0];const s=new URLSearchParams(document.location.search).get("windowId");let l={eventType:r,screenID:a.screenID,windowId:s,width:a.width,height:a.height,x:e.x||0,y:e.y||0,pixelRatio:a.pixelRatio,scale:a.scale,serverWidth:a.serverWidth,serverHeight:a.serverHeight,containerWidth:a.containerWidth,containerHeight:a.containerHeight,channel:null,details:t};return this._controlChannel.postMessage(l),this._viewOnly||this._keyboard.grab(),a}}identify(e){let t={eventType:"identify",screens:e};this._controlChannel.postMessage(t)}_handleSecondaryDisplayMessage(e){this._isPrimaryDisplay}_handleMessage(){if(this._sock.rQlen===0){at("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":Ke("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQlen===0););break;default:this._initMsg();break}}_handleKeyEvent(e,t,r){this.sendKey(e,t,r)}_handleMouseOut(e){e.toElement!==null&&e.relatedTarget===null&&e.fromElement===null&&this._display.screens[0].pixelRatio!==window.devicePixelRatio&&(z("Window moved to another screen with different pixel ratio, sending resize request."),this._isPrimaryDisplay&&this._display.screens.length>1?this.dispatchEvent(new CustomEvent("screenregistered",{})):this._requestRemoteResize())}_handleMouse(e){if(e.type==="click"&&e.target!==this._canvas)return;if(e.stopPropagation(),e.type==="click"||e.type==="contextmenu"){e.preventDefault();return}let t;if(this._pointerLock&&!this._pointerRelativeEnabled){let i=this._display.scale===1?this._fbWidth:this._fbWidth*this._display.scale,a=this._display.scale===1?this._fbHeight:this._fbHeight*this._display.scale;t={x:this._mousePos.x+e.movementX,y:this._mousePos.y+e.movementY},t.x<0?t.x=0:t.x>i&&(t.x=i),t.y<0?t.y=0:t.y>a&&(t.y=a),this._cursor.move(t.x,t.y)}else this._pointerLock&&this._pointerRelativeEnabled?t={x:this._mousePos.x+e.movementX,y:this._mousePos.y+e.movementY}:t=vn(e.clientX,e.clientY,this._canvas);this._mouseLastScreenIndex=this._display.screenIndex,this._setLastActive();const r=this.mouseButtonMapper.get(e.button);switch(e.type){case"mousedown":(this._display.screens.length===0||window.self===window.top)&&e.preventDefault(),U1(this._canvas),Br()&&e.metaKey&&(this._keyboard._keyDownList.MetaLeft||this._keyboard._keyDownList.MetaRight)&&(this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaLeft,"MetaLeft",!1),this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaRight,"MetaRight",!1),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0)),this._keyboard.clearKeysDown(e),this._isPrimaryDisplay?this._handleMouseButton(t.x,t.y,!0,Gn(r)):this._proxyRFBMessage("mousedown",[t.x,t.y,Gn(r)]),z("Mouse Down");break;case"mouseup":e.preventDefault(),this._isPrimaryDisplay?this._handleMouseButton(t.x,t.y,!1,Gn(r)):this._proxyRFBMessage("mouseup",[t.x,t.y,Gn(r)]),z("Mouse Up");break;case"mousemove":e.preventDefault(),this._isPrimaryDisplay?this._handleMouseMove(t.x,t.y,e.buttons>0):(this._proxyRFBMessage("mousemove",[t.x,t.y,e.buttons>0,this._sendLeftClickonNextMove]),this._sendLeftClickonNextMove=!1);break;default:e.preventDefault();break}}_handleMouseButton(e,t,r,i){if(this.dragViewport)if(r&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:e,y:t},this._viewportHasMoved=!1;return}else{if(this._viewportDragging=!1,this._viewportHasMoved)return;this._sendMouse(e,t,i)}this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(e,t,this._mouseButtonMask)),r?this._mouseButtonMask|=i:this._mouseButtonMask&=~i,this._sendMouse(e,t,this._mouseButtonMask),this._sendLeftClickonNextMove=!1}_handleMouseMove(e,t,r,i=!1){if(this._viewportDragging){const a=this._viewportDragPos.x-e,s=this._viewportDragPos.y-t;(this._viewportHasMoved||Math.abs(a)>Ol||Math.abs(s)>Ol)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:e,y:t},this._display.viewportChangePos(a,s));return}if(this._display.screens.length>1&&this._mouseButtonMask!==0&&!r&&!i&&$I()&&(this._mouseButtonMask=0,z("Mouse event button down mismatch with current mask, resetting mask to 0.")),this._mousePos={x:e,y:t},this._mouseMoveTimer==null){const a=Date.now()-this._mouseLastMoveTime;a>mx?(this._sendMouse(e,t,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},mx-a)}this._sendLeftClickonNextMove&&this._display.screens.length>1&&(this._sendLeftClickonNextMove=!1,this._handleMouseButton(this._mousePos.x,this._mousePos.y,!0,1),this._handleMouseButton(this._mousePos.x,this._mousePos.y,!1,1))}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_handlePointerLockChange(e){document.pointerLockElement===this._canvas||document.mozPointerLockElement===this._canvas?(this._pointerLock=!0,this._cursor.setEmulateCursor(!0)):(this._pointerLock=!1,this._cursor.setEmulateCursor(!1)),this.dispatchEvent(new CustomEvent("inputlock",{detail:{pointer:this._pointerLock}}))}_handlePointerLockError(){this._pointerLockChanging=!1,this.dispatchEvent(new CustomEvent("inputlockerror",{detail:{pointer:this._pointerLock}}))}_sendMouse(e,t,r){if(this._rfbConnectionState==="connected"&&!this._viewOnly&&this._isPrimaryDisplay)if(this._pointerLock&&this._pointerRelativeEnabled){var i=qb(e-this._pointerLockPos.x),a=qb(t-this._pointerLockPos.y);We.messages.pointerEvent(this._sock,i,a,r),this._mousePos={x:this._pointerLockPos.x,y:this._pointerLockPos.y},this._cursor.move(this._pointerLockPos.x,this._pointerLockPos.y)}else We.messages.pointerEvent(this._sock,this._display.absX(e),this._display.absY(t),r)}_sendScroll(e,t,r,i){this._rfbConnectionState==="connected"&&(this._viewOnly||(this._isPrimaryDisplay?We.messages.pointerEvent(this._sock,this._display.absX(e),this._display.absY(t),0,r,i):this._proxyRFBMessage("scroll",[e,t,r,i])))}_handleWheel(e){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;e.stopPropagation(),e.preventDefault(),this._keyboard.clearKeysDown(e),Br()&&(this._keyboard._keyDownList.MetaLeft||this._keyboard._keyDownList.MetaRight)&&(this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaLeft,"MetaLeft",!1),this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaRight,"MetaRight",!1),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0)),e.ctrlKey&&!this._keyboard._keyDownList.ControlLeft&&(this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0),this._watchForPinchAndZoom=this._watchForPinchAndZoom||setInterval(()=>{+new Date-this._mouseLastPinchAndZoomTime>250&&(clearInterval(this._watchForPinchAndZoom),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!1),this._watchForPinchAndZoom=null,this._mouseLastPinchAndZoomTime=0)},10)),this._watchForPinchAndZoom&&(this._mouseLastPinchAndZoomTime=+new Date);let t=e.deltaX,r=e.deltaY;e.deltaMode!==0&&(t*=yx,r*=yx);const i=vn(e.clientX,e.clientY,this._canvas);this._sendScroll(i.x,i.y,t,r)}_fakeMouseMove(e,t,r){this._isPrimaryDisplay?(this._handleMouseMove(t,r,!1,!0),this._cursor.move(e.detail.clientX,e.detail.clientY)):(this._proxyRFBMessage("mousemove",[t,r,!0,!1]),this._cursor.move(e.detail.clientX,e.detail.clientY))}_handleTapEvent(e,t){let r=vn(e.detail.clientX,e.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTimewr;)this._fakeMouseButton(r.x,r.y,!0,8),this._fakeMouseButton(r.x,r.y,!1,8),this._gestureLastMagnitudeY+=wr;for(;e.detail.magnitudeY-this._gestureLastMagnitudeY<-wr;)this._fakeMouseButton(r.x,r.y,!0,16),this._fakeMouseButton(r.x,r.y,!1,16),this._gestureLastMagnitudeY-=wr;for(;e.detail.magnitudeX-this._gestureLastMagnitudeX>wr;)this._fakeMouseButton(r.x,r.y,!0,32),this._fakeMouseButton(r.x,r.y,!1,32),this._gestureLastMagnitudeX+=wr;for(;e.detail.magnitudeX-this._gestureLastMagnitudeX<-wr;)this._fakeMouseButton(r.x,r.y,!0,64),this._fakeMouseButton(r.x,r.y,!1,64),this._gestureLastMagnitudeX-=wr;break;case"pinch":if(this._fakeMouseMove(e,r.x,r.y),t=Math.hypot(e.detail.magnitudeX,e.detail.magnitudeY),Math.abs(t-this._gestureLastMagnitudeX)>En){for(this._handleKeyEvent(O.XK_Control_L,"ControlLeft",!0);t-this._gestureLastMagnitudeX>En;)this._fakeMouseButton(r.x,r.y,!0,8),this._fakeMouseButton(r.x,r.y,!1,8),this._gestureLastMagnitudeX+=En;for(;t-this._gestureLastMagnitudeX<-En;)this._fakeMouseButton(r.x,r.y,!0,16),this._fakeMouseButton(r.x,r.y,!1,16),this._gestureLastMagnitudeX-=En}this._handleKeyEvent(O.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(e.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this._fakeMouseMove(e,r.x,r.y),this._fakeMouseButton(r.x,r.y,!1,1);break;case"longpress":this._fakeMouseMove(e,r.x,r.y),this._fakeMouseButton(r.x,r.y,!1,4);break}break}}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;const e=this._sock.rQshiftStr(12).substr(4,7);je("Server ProtocolVersion: "+e);let t=0;switch(e){case"000.000":t=1;break;case"003.003":case"003.006":case"003.889":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+e)}if(t){let i="ID:"+this._repeaterID;for(;i.length<250;)i+="\0";return this._sock.sendString(i),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);const r="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sendString("RFB "+r+` +`),z("Sent ProtocolVersion: "+r),this._rfbInitState="Security"}_negotiateSecurity(){if(this._rfbVersion>=3.7){const e=this._sock.rQshift8();if(this._sock.rQwait("security type",e,1))return!1;if(e===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,this._initMsg();const t=this._sock.rQshiftBytes(e);if(z("Server security types: "+t),t.includes(1))this._rfbAuthScheme=1;else if(t.includes(22))this._rfbAuthScheme=22;else if(t.includes(16))this._rfbAuthScheme=16;else if(t.includes(2))this._rfbAuthScheme=2;else if(t.includes(19))this._rfbAuthScheme=19;else return this._fail("Unsupported security types (types: "+t+")");this._sock.send([this._rfbAuthScheme])}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,this._initMsg()}return this._rfbInitState="Authentication",z("Authenticating using scheme: "+this._rfbAuthScheme),this._initMsg()}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;const e=this._sock.rQshift32();let t="";if(e>0){if(this._sock.rQwait("reason",e,4))return!1;t=this._sock.rQshiftStr(e)}return t!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:t}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+t+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1;const e=String.fromCharCode(this._rfbCredentials.username.length)+String.fromCharCode(this._rfbCredentials.target.length)+this._rfbCredentials.username+this._rfbCredentials.target;return this._sock.sendString(e),this._rfbAuthScheme=2,this._negotiateAuthentication()}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;const e=this._sock.rQshift8(),t=this._sock.rQshift8();if(!(e==0&&t==2))return this._fail("Unsupported VeNCrypt version "+e+"."+t);this._sock.send([0,2]),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;const e=this._sock.rQshift8();if(e!=0)return this._fail("VeNCrypt failure "+e);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;const e=this._sock.rQshift8();if(e<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=e,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;const e=[];for(let t=0;t>24&255,e.length>>16&255,e.length>>8&255,e.length&255]),this._sock.send([t.length>>24&255,t.length>>16&255,t.length>>8&255,t.length&255]),this._sock.sendString(e),this._sock.sendString(t),this._rfbInitState="SecurityResult",!0}}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;this._rfbCredentials.password="";const e=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),t=We.genDES(this._rfbCredentials.password,e);return this._sock.send(t),this._rfbInitState="SecurityResult",!0}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.send([0,0,0,this._rfbCredentials.username.length]),this._sock.send([0,0,0,this._rfbCredentials.password.length]),this._sock.sendString(this._rfbCredentials.username),this._sock.sendString(this._rfbCredentials.password),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(e){const t={0:{vendor:"TGHT",signature:"NOTUNNEL"}},r={};for(let i=0;i0&&this._sock.rQwait("tunnel capabilities",16*i,4))return!1;if(this._rfbTightVNC=!0,i>0)return this._negotiateTightTunnels(i),!1}if(this._sock.rQwait("sub auth count",4))return!1;const e=this._sock.rQshift32();if(e===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*e,4))return!1;const t={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},r=[];for(let i=0;i=3.8?(this._rfbInitState="SecurityResult",!0):(this._rfbInitState="ClientInitialisation",this._initMsg());case 22:return this._negotiateXvpAuth();case 2:return this._negotiateStdVNCAuth();case 16:return this._negotiateTightAuth();case 19:return this._negotiateVeNCryptAuth();case 129:return this._negotiateTightUnixAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;const e=this._sock.rQshift32();return e===0?(this._rfbInitState="ClientInitialisation",z("Authentication OK"),this._initMsg()):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=e,this._initMsg()):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:e}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;const e=this._sock.rQshift16(),t=this._sock.rQshift16(),r=this._sock.rQshift8(),i=this._sock.rQshift8(),a=this._sock.rQshift8(),s=this._sock.rQshift8(),l=this._sock.rQshift16(),c=this._sock.rQshift16(),u=this._sock.rQshift16(),f=this._sock.rQshift8(),h=this._sock.rQshift8(),p=this._sock.rQshift8();this._sock.rQskipBytes(3);const _=this._sock.rQshift32();if(this._sock.rQwait("server init name",_,24))return!1;let g=this._sock.rQshiftStr(_);if(g=gl(g,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+_))return!1;const m=this._sock.rQshift16(),v=this._sock.rQshift16(),b=this._sock.rQshift16();this._sock.rQskipBytes(2);const S=(m+v+b)*16;if(this._sock.rQwait("TightVNC extended server init header",S,32+_))return!1;this._sock.rQskipBytes(16*m),this._sock.rQskipBytes(16*v),this._sock.rQskipBytes(16*b)}return je("Screen: "+e+"x"+t+", bpp: "+r+", depth: "+i+", bigEndian: "+a+", trueColor: "+s+", redMax: "+l+", greenMax: "+c+", blueMax: "+u+", redShift: "+f+", greenShift: "+h+", blueShift: "+p),this._setDesktopName(g),this._resize(e,t),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(at("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),We.messages.pixelFormat(this._sock,this._fbDepth,!0),We.messages.videoEncodersRequest(this._sock,this.videoCodecs),this._sendEncodings(),We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),EA(this),FA(this),!0}_hasWebp(){if(!this.enableWebP)return!1;var e=navigator.userAgent.toLowerCase(),t=e.match(/firefox\/([0-9]+)\./);return!!(t&&parseInt(t[1])>=65||(t=e.match(/chrome\/([0-9]+)\./),t&&parseInt(t[1])>=23))}_sendEncodings(){const e=[];this._display.screens.length===1?e.push(Ce.encodingCopyRect):z("Multiple displays detected, disabling copyrect encoding."),this._fbDepth===24&&(e.push(Ce.encodingTight),e.push(Ce.encodingTightPNG),e.push(Ce.encodingHextile),e.push(Ce.encodingRRE)),e.push(Ce.encodingRaw),e.push(Ce.pseudoEncodingQualityLevel0+this._qualityLevel),e.push(Ce.pseudoEncodingCompressLevel0+this._compressionLevel),e.push(Ce.pseudoEncodingDesktopSize),e.push(Ce.pseudoEncodingLastRect),e.push(Ce.pseudoEncodingQEMUExtendedKeyEvent),e.push(Ce.pseudoEncodingExtendedDesktopSize),e.push(Ce.pseudoEncodingXvp),e.push(Ce.pseudoEncodingFence),e.push(Ce.pseudoEncodingContinuousUpdates),e.push(Ce.pseudoEncodingDesktopName),e.push(Ce.pseudoEncodingExtendedClipboard),e.push(Ce.pseudoEncodingKasmDisconnectNotify),this._hasWebp()&&e.push(Ce.pseudoEncodingWEBP),this._enableQOI&&e.push(Ce.pseudoEncodingQOI),e.push(Ce.pseudoEncodingJpegVideoQualityLevel0+this.jpegVideoQuality),e.push(Ce.pseudoEncodingWebpVideoQualityLevel0+this.webpVideoQuality),e.push(Ce.pseudoEncodingTreatLosslessLevel0+this.treatLossless),e.push(Ce.pseudoEncodingDynamicQualityMinLevel0+this.dynamicQualityMin),e.push(Ce.pseudoEncodingDynamicQualityMaxLevel0+this.dynamicQualityMax),e.push(Ce.pseudoEncodingVideoAreaLevel1+this.videoArea-1),e.push(Ce.pseudoEncodingVideoTimeLevel0+this.videoTime),e.push(Ce.pseudoEncodingVideoOutTimeLevel1+this.videoOutTime-1),e.push(Ce.pseudoEncodingVideoScalingLevel0+this.videoScaling),e.push(Ce.pseudoEncodingFrameRateLevel10+this.frameRate-10),e.push(Ce.pseudoEncodingMaxVideoResolution),e.push(Ce.pseudoEncodingGOP1+this.gop),e.push(Ce.pseudoEncodingStreamingVideoQualityLevel0+this.videoStreamQuality),e.push(this.streamMode),this.preferBandwidth&&e.push(Ce.pseudoEncodingPreferBandwidth),this._fbDepth===24&&(e.push(Ce.pseudoEncodingVMwareCursor),e.push(Ce.pseudoEncodingCursor)),e.push(Ce.pseudoEncodingVMwareCursorPosition),We.messages.clientEncodings(this._sock,e)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.send([this._shared?1:0]),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_handleSetColourMapMsg(){return z("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(z("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let e=this._sock.rQshift32();if(e=Sn(e),this._sock.rQwait("ServerCutText content",Math.abs(e),8))return!1;if(e>=0){const t=this._sock.rQshiftStr(e);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:t}})),this._clipHash=0}else{e=Math.abs(e);const t=this._sock.rQshift32();let r=t&65535,i=t&4278190080;if(!!(i&bx)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let l=0;l<=15;l++){let c=1<0&&c.charAt(c.length-1)==="\0"&&(c=c.slice(0,-1)),c=c.replace(`\r +`,` +`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:c}}))}}else return this._fail("Unexpected action in extended clipboard message: "+i)}return!0}_handleBinaryClipboard(){if(z("HandleBinaryClipboard"),this._sock.rQwait("Binary Clipboard header",2,1))return!1;let e=this._sock.rQshift8(),t={},r=2,i="";je(e+" Clipboard items recieved."),z("Started clipbooard processing with Client sockjs buffer size "+this._sock.rQlen);for(let a=0;a0&&i.charAt(i.length-1)==="\0"&&(i=i.slice(0,-1)),z("Plain text clipboard recieved and placed in text element, size: "+i.length),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:i}}))),je("Processed binary clipboard (ID: "+s+") of MIME "+c+" of length "+u),!this.clipboardBinary)continue;t[c]=new Blob([f],{type:c});break;default:z("Mime type skipped: "+c);break}}return z("Finished processing binary clipboard with client sockjs buffer size "+this._sock.rQlen),Object.keys(t).length>0&&this.clipboardBinary&&(this._clipHash=0,this._mouseLastScreenIndex===0?this._write_binary_clipboard(t,i):this._proxyRFBMessage("receivedClipboard",[t,i])),!0}_write_binary_clipboard(e,t){navigator.clipboard.write([new ClipboardItem(e)]).then(()=>{t&&(this._clipHash=wn(t))},r=>{Ke("Error writing to client clipboard: "+r),t.length>0&&navigator.clipboard.writeText(t).then(()=>{this._clipHash=wn(t)},i=>{Ke("Error writing text to client clipboard: "+i)})})}_handle_server_stats_msg(){this._sock.rQskipBytes(3);const e=this._sock.rQshift32();if(this._sock.rQwait("KASM bottleneck stats",e,8))return!1;const t=this._sock.rQshiftStr(e);return z("Received KASM bottleneck stats:"),z(t),this.dispatchEvent(new CustomEvent("bottleneck_stats",{detail:{text:t}})),!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let e=this._sock.rQshift32(),t=this._sock.rQshift8();if(this._sock.rQwait("ServerFence payload",t,9))return!1;t>64&&(at("Bad payload length ("+t+") in fence response"),t=64);const r=this._sock.rQshiftStr(t);return this._supportsFence=!0,e&1<<31?(e&=3,We.messages.clientFence(this._sock,e,r),!0):this._fail("Unexpected fence response")}_handleXvpMsg(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskipBytes(1);const e=this._sock.rQshift8(),t=this._sock.rQshift8();switch(t){case 0:Ke("XVP Operation Failed");break;case 1:this._rfbXvpVer=e,je("XVP extensions enabled (version "+this._rfbXvpVer+")"),this._setCapability("power",!0);break;default:this._fail("Illegal server XVP message (msg: "+t+")");break}return!0}_handleUserJoin(){const e=this._sock.rQshift32();if(this._sock.rQwait("KASM Shared Session Join",e,32))return!1;const t=this._sock.rQshiftStr(e);return this.dispatchEvent(new CustomEvent("sharedSessionUserJoin",{detail:t})),!0}_handleUserLeft(){const e=this._sock.rQshift32();if(this._sock.rQwait("KASM Shared Session Left",e,32))return!1;const t=this._sock.rQshiftStr(e);return this.dispatchEvent(new CustomEvent("sharedSessionUserLeft",{detail:t})),!0}_normalMsg(){let e;this._FBU.rects>0?e=0:e=this._sock.rQshift8();let t,r;switch(e){case 0:return this._display.renderMs=0,r=this._framebufferUpdate(),r&&!this._enabledContinuousUpdates&&We.messages.fbUpdateRequest(this._sock,!0,0,0,this._fbWidth,this._fbHeight),this._trackFrameStats&&(We.messages.sendFrameStats(this._sock,this._display.fps,this._display.renderMs),this._trackFrameStats=!1),r;case 1:return this._handleSetColourMapMsg();case 2:return z("Bell"),this.dispatchEvent(new CustomEvent("bell",{detail:{}})),!0;case 3:return this._handleServerCutText();case 150:return t=!this._supportsContinuousUpdates,this._supportsContinuousUpdates=!0,this._enabledContinuousUpdates=!1,t&&(this._enabledContinuousUpdates=!0,this._updateContinuousUpdates(),je("Enabling continuous updates.")),!0;case 178:return this._handle_server_stats_msg();case 179:return this._trackFrameStats=!0,!0;case 180:return this._handleBinaryClipboard();case 181:return this._handleUdpUpgrade();case 182:return this._handleSubscribeUnixRelay();case 183:return this._handleUnixRelay();case tn.msgTypeServerDisconnect:return this._handleDisconnectNotify();case tn.msgTypeVideoEncoders:return this._handleServerVideoEncoders();case 248:return this._handleServerFenceMsg();case 250:return this._handleXvpMsg();case tn.msgTypeUserAddedToSession:return this._handleUserJoin();case tn.msgTypeUserRemovedFromSession:return this._handleUserLeft();default:return this._fail("Unexpected server message (type "+e+")"),z("sock.rQslice(0, 30): "+this._sock.rQslice(0,30)),!0}}_onFlush(){this._flushing=!1,this._sock.rQlen>0&&this._handleMessage()}_handleUdpRect(e,t){let r={x:(e[0]<<8)+e[1],y:(e[2]<<8)+e[3],width:(e[4]<<8)+e[5],height:(e[6]<<8)+e[7],encoding:parseInt((e[8]<<24)+(e[9]<<16)+(e[10]<<8)+e[11],10)};switch(r.encoding){case Ce.pseudoEncodingLastRect:this._display.flip(t,r.x+1),this._display.pending()&&this._display.flush(!1);break;case Ce.encodingTight:let i=this._decoders[Ce.encodingUDP];try{i.decodeRect(r.x,r.y,r.width,r.height,e,this._display,this._fbDepth,t)}catch(a){return this._fail("Error decoding rect: "+a),!1}break;default:return Ke("Invalid rect encoding via UDP: "+r.encoding),!1}return!0}_sendUdpUpgrade(){if(this._transitConnectionState==this.TransitConnectionStates.Upgrading)return;this._changeTransitConnectionState(this.TransitConnectionStates.Upgrading);let e=this._udpPeer,t=this._sock;e.createOffer().then(function(r){return e.setLocalDescription(r)}).then(function(){const r=t._sQ,i=t._sQlen,a=Uint8Array.from(Array.from(e.localDescription.sdp).map(s=>s.charCodeAt(0)));r[i]=181,r[i+1]=a.length>>8,r[i+2]=a.length,r.set(a,i+3),t._sQlen+=3+a.length,t.flush()}).catch(function(r){Ke("Failed to create offer "+r),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp),this._udpConnectFailures++})}_sendUdpDowngrade(){this._changeTransitConnectionState(this.TransitConnectionStates.Downgrading);const e=this._sock._sQ,t=this._sock._sQlen;e[t]=181,e[t+1]=0,e[t+2]=0,this._sock._sQlen+=3,this._sock.flush()}_handleUdpUpgrade(){if(this._sock.rQwait("UdpUgrade header",2,1))return!1;let e=this._sock.rQshift16();if(this._sock.rQwait("UdpUpgrade payload",e,3))return!1;const t=this._sock.rQshiftStr(e);let r=this._udpPeer;var i=JSON.parse(t);z("UDP Upgrade recieved from server: "+t),r.setRemoteDescription(new RTCSessionDescription(i.answer)).then((function(){var a=new RTCIceCandidate(i.candidate);r.addIceCandidate(a).then((function(){z("success in addicecandidate")}).bind(this)).catch((function(s){Ke("Failure in addIceCandidate",s),this._changeTransitConnectionState(this.TransitConnectionStates.Failure),this._udpConnectFailures++}).bind(this))}).bind(this)).catch((function(a){Ke("Failure in setRemoteDescription",a),this._changeTransitConnectionState(this.TransitConnectionStates.Failure),this._udpConnectFailures++}).bind(this))}_handleSubscribeUnixRelay(){if(this._sock.rQwait("SubscribeUnixRelay header",2,1))return!1;let e=this._sock.rQshift8(),t=this._sock.rQshift8();if(this._sock.rQwait("SubscribeUnixRelay message",t,3))return!1;const r=this._sock.rQshiftStr(t);e?je("Unix relay subscription succeeded"):at("Unix relay subscription failed, "+r)}_handleUnixRelay(){if(this._sock.rQwait("UnixRelay header",1,1))return!1;let e=this._sock.rQshift8();if(this._sock.rQwait("UnixRelay name",e,2))return!1;const t=this._sock.rQshiftStr(e);if(this._sock.rQwait("UnixRelay len",4,2+e))return!1;let r=this._sock.rQshift32();if(this._sock.rQwait("UnixRelay data",r,6+e))return!1;const i=this._sock.rQshiftBytes(r),a=this._unixRelays[t];a&&a(i)}_handleServerVideoEncoders(){if(this._sock.rQwait("VideoEncoders header",1,1))return!1;let e=this._sock.rQshift8();if(this._sock.rQwait("VideoEncoders data",e*13,1))return!1;let t=[],r={};for(let i=0;i0&&this._sock.rQwait("VideoEncoders presets",c*4))return!1;const u=[];for(let f=0;f0&&this._sock.rQwait("DisconnectNotify reason",t,8))return!1;let r=null;t>0&&(r=this._sock.rQshiftStr(t));const i=(e&1)!==0;return this._serverDisconnectNotice={flags:e,reason:r,graceful:i},r!==null&&(this._disconnectReason=r),i&&(this._rfbCleanDisconnect=!0),!0}_framebufferUpdate(){if(this._FBU.rects===0){if(this._sock.rQwait("FBU header",3,1))return!1;if(this._sock.rQskipBytes(1),this._FBU.rects=this._sock.rQshift16(),this._FBU.frame_id++,this._FBU.rect_total=0,this._display.pending())return this._flushing=!0,this._display.flush(),!1}for(;this._FBU.rects>0;){if(this._FBU.encoding===null){if(this._sock.rQwait("rect header",12))return!1;const e=this._sock.rQshiftBytes(12);this._FBU.x=(e[0]<<8)+e[1],this._FBU.y=(e[2]<<8)+e[3],this._FBU.width=(e[4]<<8)+e[5],this._FBU.height=(e[6]<<8)+e[7],this._FBU.encoding=parseInt((e[8]<<24)+(e[9]<<16)+(e[10]<<8)+e[11],10)}if(!this._handleRect())return!1;this._FBU.rects--,this._FBU.encoding=null}return this._FBU.rect_total>1&&this._display.flip(this._FBU.frame_id,this._FBU.rect_total),!0}_handleRect(){switch(this._FBU.encoding){case Ce.pseudoEncodingLastRect:return this._FBU.rect_total++,this._FBU.rects=1,!0;case Ce.pseudoEncodingVMwareCursor:return this._handleVMwareCursor();case Ce.pseudoEncodingVMwareCursorPosition:return this._handleVMwareCursorPosition();case Ce.pseudoEncodingCursor:return this._handleCursor();case Ce.pseudoEncodingQEMUExtendedKeyEvent:return this._qemuExtKeyEventSupported=!0,!0;case Ce.pseudoEncodingDesktopName:return this._handleDesktopName();case Ce.pseudoEncodingDesktopSize:return this._resize(this._FBU.width,this._FBU.height),!0;case Ce.pseudoEncodingExtendedDesktopSize:return this._handleExtendedDesktopSize();default:return this._handleDataRect()?(this._FBU.rect_total++,!0):!1}}_handleVMwareCursor(){const e=this._FBU.x,t=this._FBU.y,r=this._FBU.width,i=this._FBU.height;if(this._sock.rQwait("VMware cursor encoding",1))return!1;const a=this._sock.rQshift8();this._sock.rQshift8();let s;const l=4;if(a==0){if(s=new Array(r*i*l),this._sock.rQwait("VMware cursor classic encoding",r*i*l*2,2))return!1;let u=new Array(r*i);for(let h=0;h>8&255,g=p>>16&255,m=p>>24&255;s[h*l]=_,s[h*l+1]=g,s[h*l+2]=m,s[h*l+3]=255}else(u[h]&-256)==-256?f[h]==0?(s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=0):(f[h]&-256,s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=255):(s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=255)}else if(a==1){if(this._sock.rQwait("VMware cursor alpha encoding",r*i*4,2))return!1;s=new Array(r*i*l);for(let c=0;c>24&255,s[c*4+1]=u>>16&255,s[c*4+2]=u>>8&255,s[c*4+3]=u&255}}else return at("The given cursor type is not supported: "+a+" given."),!1;return this._updateCursor(s,e,t,r,i),!0}_handleVMwareCursorPosition(){const e=this._FBU.x,t=this._FBU.y;return this._pointerLock&&(this._mousePos={x:e,y:t}),!0}_handleCursor(){const e=this._FBU.x,t=this._FBU.y,r=this._FBU.width,i=this._FBU.height,a=r*i*4,s=Math.ceil(r/8)*i;let l=a+s;if(this._sock.rQwait("cursor encoding",l))return!1;const c=this._sock.rQshiftBytes(a),u=this._sock.rQshiftBytes(s);let f=new Uint8Array(r*i*4),h=0;for(let p=0;p1&&this._forceFullFrameUpdateAfterResize&&(this._forceFullFrameUpdateAfterResize=!1,clearTimeout(this._forceFullFrameUpdateTimeout),this._forceFullFrameUpdateTimeout=setTimeout((function(){We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight)}).bind(this),500)),!0}_handleDataRect(){const e=this._decoders[this._FBU.encoding];if(!e)return Ke("Unsupported encoding (encoding: "+this._FBU.encoding+")"),this.dispatchEvent(new CustomEvent("badencoding")),!1;try{return this._transitConnectionState==this.TransitConnectionStates.Udp||this._transitConnectionState==this.TransitConnectionStates.Failure?(this._transitConnectionState==this.TransitConnectionStates.Udp&&(at("Implicit UDP Transit Failure, TCP rects recieved while in UDP mode."),this._udpTransitFailures++),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp),this._display.clear(),this._useUdp&&(this._udpConnectFailures<3&&this._udpTransitFailures<3?setTimeout((function(){at("Attempting to connect via UDP again after failure."),this.enableWebRTC=!0}).bind(this),3e3):at("UDP connection failures exceeded limit, remaining on TCP transit."))):this._transitConnectionState==this.TransitConnectionStates.Downgrading&&(this._display.clear(),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp)),e.decodeRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,this._sock,this._display,this._fbDepth,this._FBU.frame_id)}catch(t){return this._fail("Error decoding rect: "+t),!1}}_updateContinuousUpdates(){this._enabledContinuousUpdates&&We.messages.enableContinuousUpdates(this._sock,!0,0,0,this._fbWidth,this._fbHeight)}_resize(e,t){this._fbWidth=e,this._fbHeight=t,this._display.resize(this._fbWidth,this._fbHeight),this._updateClip(),this._updateScale(),this._updateContinuousUpdates()}_xvpOp(e,t){this._rfbXvpVeri.charCodeAt(0));return new UA(r).encrypt(t)}}We.messages={keyEvent(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=4,r[i+1]=t,r[i+2]=0,r[i+3]=0,r[i+4]=e>>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e,n._sQlen+=8,n.flush()},QEMUExtendedKeyEvent(n,e,t,r){function i(c){const u=r>>8,f=r&255;return u===224&&f<127?f|128:c}const a=n._sQ,s=n._sQlen;a[s]=255,a[s+1]=0,a[s+2]=t>>8,a[s+3]=t,a[s+4]=e>>24,a[s+5]=e>>16,a[s+6]=e>>8,a[s+7]=e;const l=i(r);a[s+8]=l>>24,a[s+9]=l>>16,a[s+10]=l>>8,a[s+11]=l,n._sQlen+=12,n.flush()},pointerEvent(n,e,t,r,i=0,a=0){const s=n._sQ,l=n._sQlen;s[l]=5,s[l+1]=r>>8,s[l+2]=r,s[l+3]=e>>8,s[l+4]=e,s[l+5]=t>>8,s[l+6]=t,s[l+7]=i>>8,s[l+8]=i,s[l+9]=a>>8,s[l+10]=a,n._sQlen+=11,n.flush()},keepAlive(n){const e=n._sQ,t=n._sQlen;e[t]=tn.msgTypeKeepAlive,n._sQlen+=1,n.flush()},_buildExtendedClipboardFlags(n,e){let t=new Uint8Array(4),r=0,i=0;for(let a=0;a>24,t[1]=0,t[2]=0,t[3]=r,t},extendedClipboardProvide(n,e,t){let r=new _A,i=[];for(let l=0;l>24&255,c.length>>16&255,c.length>>8&255,c.length&255);for(let u=0;uparseInt(s)),r.sort((s,l)=>s-l),i.set(We.messages._buildExtendedClipboardFlags(e,[]));let a=4;for(let s=0;s>24,i[a+1]=t[r[s]]>>16,i[a+2]=t[r[s]]>>8,i[a+3]=t[r[s]]>>0,a+=4,i[3]|=1<>24,r[i+5]=a>>16,r[i+6]=a>>8,r[i+7]=a,n._sQlen+=8;let s=0,l=e.length;for(;l>0;){let c=Math.min(l,n._sQbufferSize-n._sQlen);for(let u=0;u>24,r[i++]=c>>16,r[i++]=c>>8,r[i++]=c,n._sQlen+=1+s.length+4;let u=0,f=l.length;for(;f>0;){let h=Math.min(f,n._sQbufferSize-n._sQlen);for(let p=0;p>24,r[i++]=a>>16,r[i++]=a>>8,r[i++]=a,n._sQlen+=2+e.length+4;let s=0,l=t.length;for(;l>0;){let c=Math.min(l,n._sQbufferSize-n._sQlen);for(let u=0;u>8,r[i+3]=e.serverWidth,r[i+4]=e.serverHeight>>8,r[i+5]=e.serverHeight,r[i+6]=e.screens.length,r[i+7]=0;let a=8;for(let s=0;s>24,r[i+a++]=s>>16,r[i+a++]=s>>8,r[i+a++]=s,r[i+a++]=e.screens[s].x>>8,r[i+a++]=e.screens[s].x,r[i+a++]=e.screens[s].y>>8,r[i+a++]=e.screens[s].y,r[i+a++]=e.screens[s].serverWidth>>8,r[i+a++]=e.screens[s].serverWidth,r[i+a++]=e.screens[s].serverHeight>>8,r[i+a++]=e.screens[s].serverHeight,r[i+a++]=t>>24,r[i+a++]=t>>16,r[i+a++]=t>>8,r[i+a++]=t;n._sQlen+=a,n.flush()},setMaxVideoResolution(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=252,r[i+1]=e>>8,r[i+2]=e,r[i+3]=t>>8,r[i+4]=t,n._sQlen+=5,n.flush()},clientFence(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=248,r[i+1]=0,r[i+2]=0,r[i+3]=0,r[i+4]=e>>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e;const a=t.length;r[i+8]=a;for(let s=0;s>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e,r[i+8]=t>>24,r[i+9]=t>>16,r[i+10]=t>>8,r[i+11]=t,n._sQlen+=12,n.flush())},enableContinuousUpdates(n,e,t,r,i,a){const s=n._sQ,l=n._sQlen;s[l]=150,s[l+1]=e,s[l+2]=t>>8,s[l+3]=t,s[l+4]=r>>8,s[l+5]=r,s[l+6]=i>>8,s[l+7]=i,s[l+8]=a>>8,s[l+9]=a,n._sQlen+=10,n.flush()},pixelFormat(n,e,t){const r=n._sQ,i=n._sQlen;let a;e>16?a=32:e>8?a=16:a=8;const s=Math.floor(e/3);r[i]=0,r[i+1]=0,r[i+2]=0,r[i+3]=0,r[i+4]=a,r[i+5]=e,r[i+6]=0,r[i+7]=t?1:0,r[i+8]=0,r[i+9]=(1<>8,t[r+3]=e.length;let i=r+4;for(let a=0;a>24,t[i+1]=s>>16,t[i+2]=s>>8,t[i+3]=s,i+=4}n._sQlen+=i-r,n.flush()},videoEncodersRequest(n,e){e==null&&(e=[]);const t=n._sQ,r=n._sQlen;t[r]=tn.msgTypeVideoEncoders,t[r+1]=e.length;let i=r+2;for(let a=0;a>24,t[i+1]=s>>16,t[i+2]=s>>8,t[i+3]=s,i+=4}n._sQlen+=i-r,n.flush()},fbUpdateRequest(n,e,t,r,i,a){const s=n._sQ,l=n._sQlen;typeof t>"u"&&(t=0),typeof r>"u"&&(r=0),s[l]=3,s[l+1]=e?1:0,s[l+2]=t>>8&255,s[l+3]=t&255,s[l+4]=r>>8&255,s[l+5]=r&255,s[l+6]=i>>8&255,s[l+7]=i&255,s[l+8]=a>>8&255,s[l+9]=a&255,n._sQlen+=10,n.flush()},xvpOp(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=250,r[i+1]=0,r[i+2]=e,r[i+3]=t,n._sQlen+=4,n.flush()}};We.cursors={none:{rgbaPixels:new Uint8Array,w:0,h:0,hotx:0,hoty:0},dot:{rgbaPixels:new Uint8Array([255,255,255,255,0,0,0,255,255,255,255,255,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,255,255,255,255,255]),w:3,h:3,hotx:1,hoty:1}};window._noVNC_has_module_support=!0;window.addEventListener("load",function(){if(!window._noVNC_has_module_support){var n=document.createElement("script");n.src="vendor/browser-es-module-loader/dist/browser-es-module-loader.js",document.head.appendChild(n)}});window.updateSetting=(n,e)=>{switch(vr(n,e),n){case"translate_shortcuts":o.updateShortcutTranslation();break}};const Ex="KasmVNC",o={connected:!1,desktopName:"",statusTimeout:null,hideKeyboardTimeout:null,idleControlbarTimeout:null,closeControlbarTimeout:null,controlbarGrabbed:!1,controlbarDrag:!1,controlbarMouseDownClientY:0,controlbarMouseDownOffsetY:0,inhibitReconnect:!0,reconnectCallback:null,reconnectPassword:null,monitors:[],sortedMonitors:[],selectedMonitor:null,refreshRotation:0,currentDisplay:null,displayWindows:new Map([["primary","primary"]]),registeredWindows:new Map([["primary","primary"]]),fpsChartTicks:[],monitorDragOk:!1,monitorStartX:0,monitorStartY:0,multiMonitorSupport:typeof BroadcastChannel<"u"&&typeof SharedWorker<"u",get supportsMultiMonitor(){return this.multiMonitorSupport},codecDetector:null,forcedCodecs:[],prime:async()=>{await RA();try{const n=await new GA().detect();o.codecDetector=n,z("Supported Codecs: ",n.getSupportedCodecs())}catch(n){at("Failed to detect codecs: ",n)}return document.readyState==="interactive"||document.readyState==="complete"?o.start():new Promise((n,e)=>{document.addEventListener("DOMContentLoaded",()=>o.start().then(n).catch(e))})},start(){if(window.location.href.includes("screen.html"))return;o.initSettings(),o.updateQuality(),Tr.translateDOM(),fetch("./package.json").then(e=>{if(!e.ok)throw Error(""+e.status+" "+e.statusText);return e.json()}).then(e=>{Array.from(document.getElementsByClassName("noVNC_version")).forEach(t=>t.innerText=e.version)}).catch(e=>{Ke("Couldn't fetch package.json: "+e),Array.from(document.getElementsByClassName("noVNC_version_wrapper")).concat(Array.from(document.getElementsByClassName("noVNC_version_separator"))).forEach(t=>t.style.display="none")}),Ec&&(document.documentElement.classList.add("noVNC_touch"),setTimeout(()=>window.scrollTo(0,1),100)),mn("controlbar_pos")==="right"&&o.toggleControlbarSide(),o.initFullscreen(),o.addKeyboardControlsPanelHandlers(),o.addControlbarHandlers(),o.addTouchSpecificHandlers(),o.addExtraKeysHandlers(),o.addGamingHandlers(),o.addMachineHandlers(),o.addConnectionControlHandlers(),o.addClipboardHandlers(),o.addSettingsHandlers(),o.addDisplaysHandler(),document.getElementById("noVNC_status").addEventListener("click",o.hideStatus),o.openControlbar(),o.updateVisualState("init"),document.documentElement.classList.remove("noVNC_loading");let n=hr("autoconnect",!0);return n==="true"||n=="1"?(n=!0,o.connect()):n=!1,window.parent.postMessage({action:"noVNC_initialized",value:null},"*"),window.addEventListener("message",e=>{typeof e.data!="object"||!e.data.action||(e.data.action==="show_keyboard_controls"?o.showKeyboardControls():e.data.action==="hide_keyboard_controls"&&o.hideKeyboardControls())}),window.addEventListener("beforeunload",e=>{const r=new URLSearchParams(window.location.search).get("windowId");o.rfb&&r&&o.rfb._unregisterSecondaryDisplay()}),window.addEventListener("unload",e=>{const r=new URLSearchParams(window.location.search).get("windowId");o.rfb&&!r&&o.disconnect()}),Promise.resolve(o.rfb)},initFullscreen(){!ei()&&(document.documentElement.requestFullscreen||document.documentElement.mozRequestFullScreen||document.documentElement.webkitRequestFullscreen||document.body.msRequestFullscreen)&&(o.showControlInput("noVNC_fullscreen_button"),o.addFullscreenHandlers())},initSettings(){const n=["error","warn","info","debug"];for(let a=0;a{const e=n.target,t=(parseFloat(e.getAttribute("data-x"))||0)+n.dx,r=(parseFloat(e.getAttribute("data-y"))||0)+n.dy;e.style.transform=`translate(${t}px, ${r}px)`,e.setAttribute("data-x",t),e.setAttribute("data-y",r)}}}),or(".keyboard-controls .handle").pointerEvents({holdDuration:350}).on("hold",n=>{const e=document.querySelector(".keyboard-controls"),t=e.classList.contains("is-open");e.classList.toggle("was-open",t),e.classList.toggle("is-open",!t),setTimeout(()=>e.classList.remove("was-open"),500)}),or(".keyboard-controls .handle").on("tap",n=>{n.dt<150&&o.toggleVirtualKeyboard()}),or(".keyboard-controls .button.ctrl").on("tap",o.toggleCtrl),or(".keyboard-controls .button.alt").on("tap",o.toggleAlt),or(".keyboard-controls .button.windows").on("tap",o.toggleWindows),or(".keyboard-controls .button.tab").on("tap",o.sendTab),or(".keyboard-controls .button.escape").on("tap",o.sendEsc),or(".keyboard-controls .button.ctrlaltdel").on("tap",o.sendCtrlAltDel)},addControlbarHandlers(){document.getElementById("noVNC_control_bar").addEventListener("mousemove",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mouseup",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mousedown",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("keydown",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mousedown",o.keepControlbar),document.getElementById("noVNC_control_bar").addEventListener("keydown",o.keepControlbar),o.addClickHandle("noVNC_view_drag_button",o.toggleViewDrag),document.getElementById("noVNC_control_bar_handle").addEventListener("mousedown",o.controlbarHandleMouseDown),document.getElementById("noVNC_control_bar_handle").addEventListener("mouseup",o.controlbarHandleMouseUp),document.getElementById("noVNC_control_bar_handle").addEventListener("mousemove",o.dragControlbarHandle),window.addEventListener("resize",o.updateControlbarHandle);const n=document.getElementsByClassName("noVNC_expander");for(let e=0;e!1),document.documentElement.addEventListener("mousedown",o.keepVirtualKeyboard,!0),document.getElementById("noVNC_control_bar").addEventListener("touchstart",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchmove",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchend",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("input",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchstart",o.keepControlbar),document.getElementById("noVNC_control_bar").addEventListener("input",o.keepControlbar),document.getElementById("noVNC_control_bar_handle").addEventListener("touchstart",o.controlbarHandleMouseDown),document.getElementById("noVNC_control_bar_handle").addEventListener("touchend",o.controlbarHandleMouseUp),document.getElementById("noVNC_control_bar_handle").addEventListener("touchmove",o.dragControlbarHandle)},addExtraKeysHandlers(){o.addClickHandle("noVNC_toggle_extra_keys_button",o.toggleExtraKeys),document.getElementById("noVNC_toggle_ctrl_button").addEventListener("click",o.toggleCtrl),document.getElementById("noVNC_toggle_windows_button").addEventListener("click",o.toggleWindows),document.getElementById("noVNC_toggle_alt_button").addEventListener("click",o.toggleAlt),document.getElementById("noVNC_send_tab_button").addEventListener("click",o.sendTab),document.getElementById("noVNC_send_esc_button").addEventListener("click",o.sendEsc),document.getElementById("noVNC_send_ctrl_alt_del_button").addEventListener("click",o.sendCtrlAltDel)},addGamingHandlers(){o.addClickHandle("noVNC_game_mode_button",o.toggleRelativePointer),document.getElementById("noVNC_setting_pointer_lock").addEventListener("click",o.togglePointerLock)},addMachineHandlers(){o.addClickHandle("noVNC_power_button",o.togglePowerPanel),document.getElementById("noVNC_shutdown_button").addEventListener("click",()=>o.rfb.machineShutdown()),document.getElementById("noVNC_reboot_button").addEventListener("click",()=>o.rfb.machineReboot()),document.getElementById("noVNC_reset_button").addEventListener("click",()=>o.rfb.machineReset())},addClipboardHandlers(){o.addClickHandle("noVNC_clipboard_button",o.toggleClipboardPanel),document.getElementById("noVNC_clipboard_text").addEventListener("change",o.clipboardSend),document.getElementById("noVNC_clipboard_clear_button").addEventListener("click",o.clipboardClear)},addSettingChangeHandler(n,e){const t=document.getElementById("noVNC_setting_"+n);e===void 0&&(e=()=>o.saveSetting(n)),t.addEventListener("change",e)},addSettingChangeHandlerByName(n){this.addSettingChangeHandler(n,o.updatePropertyName(n))},addSettingsHandlers(){o.addClickHandle("noVNC_settings_button",o.toggleSettingsPanel),document.getElementById("noVNC_setting_enable_perf_stats").addEventListener("click",o.showStats),document.getElementById("noVNC_setting_enable_threading").addEventListener("click",o.threading),document.getElementById("noVNC_auto_placement").addEventListener("change",o.setAutoPlacement),o.addSettingChangeHandler("encrypt"),o.addSettingChangeHandler("resize"),o.addSettingChangeHandler("resize",o.applyResizeMode),o.addSettingChangeHandler("resize",o.updateViewClip),o.addSettingChangeHandler("quality"),o.addSettingChangeHandler("quality",o.updateQuality),o.addSettingChangeHandler("dynamic_quality_min"),o.addSettingChangeHandler("dynamic_quality_min",o.updateQuality),o.addSettingChangeHandler("dynamic_quality_max"),o.addSettingChangeHandler("dynamic_quality_max",o.updateQuality),o.addSettingChangeHandler("translate_shortcuts"),o.addSettingChangeHandler("translate_shortcuts",o.updateShortcutTranslation),o.addSettingChangeHandler("treat_lossless"),o.addSettingChangeHandler("treat_lossless",o.updateQuality),o.addSettingChangeHandler("anti_aliasing"),o.addSettingChangeHandler("anti_aliasing",o.updateQuality),o.addSettingChangeHandler("video_rendering_mode"),o.addSettingChangeHandler("video_rendering_mode",o.updateVideoRenderingMode),o.addSettingChangeHandler("video_quality"),o.addSettingChangeHandler("video_quality",o.updateQuality),o.addSettingChangeHandler("jpeg_video_quality"),o.addSettingChangeHandler("jpeg_video_quality",o.updateQuality),o.addSettingChangeHandler("webp_video_quality"),o.addSettingChangeHandler("webp_video_quality",o.updateQuality),o.addSettingChangeHandler("video_area"),o.addSettingChangeHandler("video_area",o.updateQuality),o.addSettingChangeHandler("video_time"),o.addSettingChangeHandler("video_time",o.updateQuality),o.addSettingChangeHandler("video_out_time"),o.addSettingChangeHandler("video_out_time",o.updateQuality),o.addSettingChangeHandler("video_scaling"),o.addSettingChangeHandler("video_scaling",o.updateQuality),o.addSettingChangeHandler("max_video_resolution_x"),o.addSettingChangeHandler("max_video_resolution_x",o.updateQuality),o.addSettingChangeHandler("max_video_resolution_y"),o.addSettingChangeHandler("max_video_resolution_y",o.updateQuality),o.addSettingChangeHandler("framerate_image_mode",()=>{const n=o.getSettingElement("framerate_image_mode").value;o.getSettingElement("framerate_streaming_mode").value=n,vr("framerate_streaming_mode",n),o.updateQuality()}),o.addSettingChangeHandler("framerate_streaming_mode",()=>{const n=o.getSettingElement("framerate_streaming_mode").value;vr("framerate_streaming_mode",n),o.updateQuality()}),o.addSettingChangeHandler("compression"),o.addSettingChangeHandler("compression",o.updateCompression),o.addSettingChangeHandler("view_clip"),o.addSettingChangeHandler("view_clip",o.updateViewClip),o.addSettingChangeHandler("shared"),o.addSettingChangeHandler("view_only"),o.addSettingChangeHandler("view_only",o.updateViewOnly),o.addSettingChangeHandler("show_dot"),o.addSettingChangeHandler("show_dot",o.updateShowDotCursor),o.addSettingChangeHandler("host"),o.addSettingChangeHandler("port"),o.addSettingChangeHandler("path"),o.addSettingChangeHandler("repeaterID"),o.addSettingChangeHandler("logging"),o.addSettingChangeHandler("logging",o.updateLogging),o.addSettingChangeHandler("reconnect"),o.addSettingChangeHandler("reconnect_delay"),o.addSettingChangeHandler("enable_webp"),o.addSettingChangeHandler("clipboard_seamless"),o.addSettingChangeHandler("clipboard_up"),o.addSettingChangeHandler("clipboard_down"),o.addSettingChangeHandler("toggle_control_panel"),o.addSettingChangeHandler("virtual_keyboard_visible"),o.addSettingChangeHandler("virtual_keyboard_visible",o.toggleKeyboardControls),o.addSettingChangeHandler("enable_ime"),o.addSettingChangeHandler("enable_ime",o.toggleIMEMode),o.addSettingChangeHandler("enable_webrtc"),o.addSettingChangeHandler("enable_webrtc",o.toggleWebRTC),o.addSettingChangeHandler("enable_hidpi"),o.addSettingChangeHandler("enable_hidpi",o.enableHiDpi),o.addSettingChangeHandler("enable_threading"),o.addSettingChangeHandler("enable_threading",o.threading),o.addSettingChangeHandler(ht.STREAM_MODE,o.streamMode),o.addSettingChangeHandlerByName(ht.GOP),o.addSettingChangeHandlerByName(ht.VIDEO_STREAM_QUALITY)},addFullscreenHandlers(){o.addClickHandle("noVNC_fullscreen_button",o.toggleFullscreen),window.addEventListener("fullscreenchange",o.updateFullscreenButton),window.addEventListener("mozfullscreenchange",o.updateFullscreenButton),window.addEventListener("webkitfullscreenchange",o.updateFullscreenButton),window.addEventListener("msfullscreenchange",o.updateFullscreenButton)},addDisplaysHandler(){o.supportsMultiMonitor&&(o.showControlInput("noVNC_displays_button"),o.addClickHandle("noVNC_displays_button",o.openDisplays),o.addClickHandle("noVNC_close_displays",o.closeDisplays),o.addClickHandle("noVNC_identify_monitors_button",o._identify),o.addClickHandle("noVNC_addMonitor",o.addSecondaryMonitor),o.addClickHandle("noVNC_refreshMonitors",o.displaysRefresh))},setAutoPlacement(n){n.target.checked===!1?window.localStorage.setItem("autoPlacement",!1):window.localStorage.removeItem("autoPlacement")},isControlPanelItemClick(n){var e,t,r;return!((e=n==null?void 0:n.target)!=null&&e.classList)||!((t=n==null?void 0:n.target)!=null&&t.parentNode)?!1:n.target.classList.contains("noVNC_button")&&((r=n.target.parentNode)==null?void 0:r.id)!=="noVNC_modifiers"||n.target.classList.contains("noVNC_button_div")||n.target.classList.contains("noVNC_heading")},updateVisualState(n){document.documentElement.classList.remove("noVNC_connecting"),document.documentElement.classList.remove("noVNC_connected"),document.documentElement.classList.remove("noVNC_disconnecting"),document.documentElement.classList.remove("noVNC_reconnecting"),document.documentElement.classList.remove("noVNC_disconnected");const e=document.getElementById("noVNC_transition_text");switch(Wt()&&parent.postMessage({action:"connection_state",value:n},"*"),n){case"init":break;case"connecting":e.textContent=tr("Connecting..."),document.documentElement.classList.add("noVNC_connecting");break;case"connected":document.documentElement.classList.add("noVNC_connected");break;case"disconnecting":e.textContent=tr("Disconnecting..."),document.documentElement.classList.add("noVNC_disconnecting");break;case"disconnected":document.documentElement.classList.add("noVNC_disconnected");break;case"reconnecting":e.textContent=tr("Reconnecting..."),document.documentElement.classList.add("noVNC_reconnecting");break;default:Ke("Invalid visual state: "+n),o.showStatus(tr("Internal error"),"error");return}o.connected?(o.updateViewClip(),o.disableSetting("encrypt"),o.disableSetting("shared"),o.disableSetting("host"),o.disableSetting("port"),o.disableSetting("path"),o.disableSetting("repeaterID"),o.closeControlbarTimeout=setTimeout(o.closeControlbar,2e3)):(o.enableSetting("encrypt"),o.enableSetting("shared"),o.enableSetting("host"),o.enableSetting("port"),o.enableSetting("path"),o.enableSetting("repeaterID"),o.updatePowerButton(),o.keepControlbar()),o.closeAllPanels()},showStats(){o.statsInterval&&(clearInterval(o.statsInterval),o.statsInterval=null);const n=document.getElementById("noVNC_setting_enable_perf_stats"),e=n?n.checked:!1;o.saveSetting("enable_perf_stats"),e?(document.getElementById("noVNC_connection_stats").style.visibility="visible",document.getElementById("noVNC_fps_chart").style.visibility="visible",o.statsInterval=setInterval(function(){o.rfb!==void 0&&o.rfb.requestBottleneckStats()},5e3)):(document.getElementById("noVNC_connection_stats").style.visibility="hidden",document.getElementById("noVNC_fps_chart").style.visibility="hidden")},threading(){o.rfb&&(o.getSetting("enable_threading")?o.rfb.threading=!0:o.rfb.threading=!1),o.saveSetting("enable_threading")},updatePropertyName(n){return o.updateRfbProperty(n,n)},updateRfbProperty(n,e){return t=>{o.rfb&&(o.rfb[n]=Number(t.target.value)),o.saveSetting(e),o.updateQuality()}},gop(n){o.rfb&&(o.rfb.gop=Number(n.target.value)),o.saveSetting(ht.GOP)},videoStreamQuality(n){var e;o.rfb&&(o.rfb.videoStreamQuality=Number(n.target.value)),z("Saving quality:",n.target.value,"Stream mode:",o.getSetting(ht.STREAM_MODE)),z("Codec configs:",(e=o.rfb)==null?void 0:e.videoCodecConfigurations),o.saveSetting(ht.VIDEO_STREAM_QUALITY)},qualityPreset(n){o.rfb&&(o.rfb.qualityPreset=Number(n.target.value)),o.saveSetting(ht.PRESET)},streamMode(n){const e=Number(n.target.value);o.saveSetting(ht.STREAM_MODE),o.applyStreamMode(e,n.configuration)},applyStreamMode(n,e){var i,a,s,l;if(o.toggleStreamModeGroupVisibility(n),n!==Ce.pseudoEncodingStreamingModeJpegWebp){const c=e||((i=o.rfb)==null?void 0:i.videoCodecConfigurations[n]);if(Wt()){const u=(a=o.rfb)==null?void 0:a.videoCodecConfigurations[n].presets;if(u){const f=parseInt(mn("video_quality")),h=parseInt(o.getSetting(ht.VIDEO_STREAM_QUALITY));u[f]!==void 0&&h!==u[f]&&o.forceSetting(ht.VIDEO_STREAM_QUALITY,u[f],!1)}}o.updateQualitySliderRange(n,c)}o.updateQuality(),(s=o.rfb)==null||s._requestFullRefresh();const r=(l=[...o.getSettingElement(ht.STREAM_MODE).options].find(c=>Number(c.value)===n))==null?void 0:l.text;je("Switching to mode: ",r||"Unknown Mode ","value:",n),(!Wt()||o.getSettingElement(ht.SHOW_NOTIFICATIONS)||hr(ht.SHOW_NOTIFICATIONS))&&Rc(r||"Mode Changed")},initStreamModeSetting(n,e){const t=o.getSettingElement(ht.STREAM_MODE);if(!t)return;t.innerHTML="";const r={id:Ce.pseudoEncodingStreamingModeJpegWebp,label:"JPEG/WEBP (Images)"},i=[r],a=this.getAvailableStreamingModes(n);i.push(...a);const s=Number(o.getSetting(ht.STREAM_MODE)),l=this.getBestStreamingMode(i,r,s);i.sort((u,f)=>f.id-u.id).forEach(u=>{o.addOption(t,u.label,u.id)}),t.value=l;const c=e==null?void 0:e[l];o.streamMode({target:t,configuration:c}),z("Selected streaming mode: ",l),z("Codec configuration:",c),o.sendMessage("update_codecs",{current:t.value,codecs:i})},updateQualitySliderRange(n,e){const t=o.getSettingElement(ht.VIDEO_STREAM_QUALITY);if(!t)return;if(!e){t.min=1,t.max=50;return}t.min=e.minQuality,t.max=e.maxQuality;const r=parseInt(t.value);re.maxQuality&&(t.value=e.maxQuality);const i=document.getElementById("noVNC_setting_video_stream_quality_output");i&&(i.value=t.value),o.saveSetting(ht.VIDEO_STREAM_QUALITY)},getAvailableStreamingModes(n){let e=[];if(!Array.isArray(n)||n.length===0)return e;const t=o.forcedCodecs;n=t.length>0?t.filter(i=>n.includes(i)):n;const r=n.map(i=>{const a=vx[i]?vx[i]:`Codec ${i}`;return{id:i,label:a}});return e.push(...r),e},getBestStreamingMode(n,e,t){let r=e.id;if(o.forcedCodecs.length>0){const l=o.forcedCodecs.find(c=>n.some(u=>u.id===c));return l!==void 0?l:e.id}if(o.getSetting("fallback_image_mode"))return o.forceSetting("fallback_image_mode",!1,!1),je("Defaulting to image mode due to previous encoding error"),Ce.pseudoEncodingStreamingModeJpegWebp;const i=n.some(l=>l.id===t),a=n.map(l=>l.id),s=zA.filter(l=>a.includes(l));return r=i?t:Ce.pseudoEncodingStreamingModeJpegWebp,s.length>0&&r===Ce.pseudoEncodingStreamingModeJpegWebp&&(r=Math.min(...s)),r},showStatus(n,e,t,r=!1){if(Wt()&&!r)return;const i=document.getElementById("noVNC_status");if(typeof e>"u"&&(e="normal"),!(i.classList.contains("noVNC_open")&&(i.classList.contains("noVNC_status_error")||i.classList.contains("noVNC_status_warn")&&e==="normal"))){switch(clearTimeout(o.statusTimeout),e){case"error":i.classList.remove("noVNC_status_warn"),i.classList.remove("noVNC_status_normal"),i.classList.add("noVNC_status_error");break;case"warning":case"warn":i.classList.remove("noVNC_status_error"),i.classList.remove("noVNC_status_normal"),i.classList.add("noVNC_status_warn");break;case"normal":case"info":default:i.classList.remove("noVNC_status_error"),i.classList.remove("noVNC_status_warn"),i.classList.add("noVNC_status_normal");break}i.textContent=n,i.classList.add("noVNC_open"),typeof t>"u"&&(t=1500),e!=="error"&&(o.statusTimeout=window.setTimeout(o.hideStatus,t))}},hideStatus(){clearTimeout(o.statusTimeout),document.getElementById("noVNC_status").classList.remove("noVNC_open")},activateControlbar(n){clearTimeout(o.idleControlbarTimeout),document.getElementById("noVNC_control_bar_anchor").classList.remove("noVNC_idle"),o.idleControlbarTimeout=window.setTimeout(o.idleControlbar,2e3)},idleControlbar(){if(document.getElementById("noVNC_control_bar").contains(document.activeElement)&&document.hasFocus()){o.activateControlbar();return}document.getElementById("noVNC_control_bar_anchor").classList.add("noVNC_idle")},keepControlbar(){clearTimeout(o.closeControlbarTimeout)},openControlbar(){document.getElementById("noVNC_control_bar").classList.add("noVNC_open"),Wt()&&parent.postMessage({action:"control_open",value:"Control bar opened"},"*")},closeControlbar(){o.closeAllPanels(),document.getElementById("noVNC_control_bar").classList.remove("noVNC_open"),o.rfb&&o.rfb.focus(),Wt()&&parent.postMessage({action:"control_close",value:"Control bar closed"},"*")},toggleControlbar(){document.getElementById("noVNC_control_bar").classList.contains("noVNC_open")?o.closeControlbar():o.openControlbar()},toggleControlbarSide(){const n=document.getElementById("noVNC_control_bar");window.getComputedStyle(n).display!=="none"&&(n.style.transitionDuration="0s",n.addEventListener("transitionend",()=>n.style.transitionDuration=""));const t=document.getElementById("noVNC_control_bar_anchor");t.classList.contains("noVNC_right")?(vr("controlbar_pos","left"),t.classList.remove("noVNC_right")):(vr("controlbar_pos","right"),t.classList.add("noVNC_right")),o.controlbarDrag=!0},toggleStreamModeGroupVisibility(n){const e=n===Ce.pseudoEncodingStreamingModeJpegWebp,t=document.getElementById(gx.IMAGE_GROUP),r=document.getElementById(gx.VIDEO_GROUP);t&&(t.style.display=e?"block":"none"),r&&(r.style.display=e?"none":"block")},showControlbarHint(n){const e=document.getElementById("noVNC_control_bar_hint");n?e.classList.add("noVNC_active"):e.classList.remove("noVNC_active")},dragControlbarHandle(n){if(!o.controlbarGrabbed)return;const e=Nb(n),t=document.getElementById("noVNC_control_bar_anchor");if(e.clientXwindow.innerWidth*.9&&(t.classList.contains("noVNC_right")||o.toggleControlbarSide()),!o.controlbarDrag){if(Math.abs(e.clientY-o.controlbarMouseDownClientY)r.top+r.height-t-i&&(a=r.top+r.height-t-i),r.height> UI.clipboardReceive: "+n.detail.text.substr(0,40)+"..."),document.getElementById("noVNC_clipboard_text").value=n.detail.text,z("<< UI.clipboardReceive"))}},generateFpsChartPath(){if(this.fpsChartTicks.length===0)return"";const n=_r.WIDTH/(_r.MAX_POINTS-1),e=_r.HEIGHT/_r.MAX_FPS_VALUE;let t=`M 0 ${_r.HEIGHT}`;for(let r=0;r_r.MAX_POINTS&&o.fpsChartTicks.shift();const e=document.getElementById("noVNC_fps_chart_path");if(e&&e.setAttribute("d",o.generateFpsChartPath()),o.fpsChartTicks.length>0){const t=Math.max(...o.fpsChartTicks),r=Math.min(...o.fpsChartTicks),i=o.fpsChartTicks.reduce((a,s)=>a+s,0)/o.fpsChartTicks.length;document.getElementById("noVNC_fps_chart_max").textContent=`Max: ${t.toFixed(1)}`,document.getElementById("noVNC_fps_chart_min").textContent=`Min: ${r.toFixed(1)}`,document.getElementById("noVNC_fps_chart_avg").textContent=`Avg: ${i.toFixed(1)}`}},bottleneckStatsRecieve(n){if(o.rfb)try{let e=JSON.parse(n.detail.text),t=o.rfb.statsFps;document.getElementById("noVNC_connection_stats").innerHTML="CPU: "+e[0]+"/"+e[1]+" | Network: "+e[2]+"/"+e[3]+" | FPS: "+o.rfb.statsFps+" Dropped FPS: "+o.rfb.statsDroppedFps,o.updateFpsChart(Number(t)),console.log(n.detail.text)}catch{console.log("Invalid bottleneck stats recieved from server.")}},popupMessage:function(n,e){e||(e=500),setTimeout(o.showOverlay.bind(this,n,e),200)},clipboardClear(){document.getElementById("noVNC_clipboard_text").value="",o.rfb.clipboardPasteFrom("")},clipboardSend(){const n=document.getElementById("noVNC_clipboard_text").value;z(">> UI.clipboardSend: "+n.substr(0,40)+"..."),o.rfb.clipboardPasteFrom(n),z("<< UI.clipboardSend")},setConnectionQualityValues(){o.rfb.qualityLevel=parseInt(o.getSetting("quality")),o.rfb.antiAliasing=parseInt(o.getSetting("anti_aliasing")),o.rfb.dynamicQualityMin=parseInt(o.getSetting("dynamic_quality_min")),o.rfb.dynamicQualityMax=parseInt(o.getSetting("dynamic_quality_max")),o.rfb.jpegVideoQuality=parseInt(o.getSetting("jpeg_video_quality")),o.rfb.webpVideoQuality=parseInt(o.getSetting("webp_video_quality")),o.rfb.videoArea=parseInt(o.getSetting("video_area")),o.rfb.videoTime=parseInt(o.getSetting("video_time")),o.rfb.videoOutTime=parseInt(o.getSetting("video_out_time")),o.rfb.videoScaling=parseInt(o.getSetting("video_scaling")),o.rfb.treatLossless=parseInt(o.getSetting("treat_lossless")),o.rfb.maxVideoResolutionX=parseInt(o.getSetting("max_video_resolution_x")),o.rfb.maxVideoResolutionY=parseInt(o.getSetting("max_video_resolution_y")),o.rfb.streamMode=parseInt(o.getSetting(ht.STREAM_MODE));const n=o.rfb.streamMode===Ce.pseudoEncodingStreamingModeJpegWebp,e=n?"framerate_image_mode":"framerate_streaming_mode";o.rfb.frameRate=parseInt(o.getSetting(e)),je(`setConnectionQualityValues: streamMode=${o.rfb.streamMode}, isImageMode=${n}, reading from '${e}', frameRate=${o.rfb.frameRate}`),o.rfb.enableWebP=o.getSetting("enable_webp"),o.rfb.videoQuality=parseInt(o.getSetting("video_quality")),o.rfb.enableHiDpi=o.getSetting("enable_hidpi"),o.rfb.threading=o.getSetting("enable_threading"),o.rfb.gop=parseInt(o.getSetting(ht.GOP)),o.rfb.videoStreamQuality=parseInt(o.getSetting(ht.VIDEO_STREAM_QUALITY)),je("Loaded from localStorage - Quality: ",o.rfb.videoStreamQuality," Stream mode: ",o.rfb.streamMode," GOP:",o.rfb.gop)},connect(n,e){var s;if(z("UI.connect"),typeof o.rfb<"u")return;const t=o.getSetting("host"),r=o.getSetting("port"),i=o.getSetting("path");if(typeof e>"u"&&(e=hr("password"),o.reconnectPassword=e),e===null&&(e=void 0),o.hideStatus(),window.name="primaryDisplay",!t){Ke("Can't connect when host is: "+t),o.showStatus(tr("Must set host"),"error");return}o.updateVisualState("connecting");let a;a=o.getSetting("encrypt")?"wss":"ws",a+="://"+t,r&&(a+=":"+r),a+="/"+i,o.monitors=[],o.sortedMonitors=[],o.showControlInput("noVNC_displays_button"),o.rfb=new We(document.getElementById("noVNC_container"),document.getElementById("noVNC_keyboardinput"),a,{shared:o.getSetting("shared"),repeaterID:o.getSetting("repeaterID"),credentials:{password:e},videoRenderingMode:o.getSetting("video_rendering_mode")},(s=o.codecDetector)==null?void 0:s.getSupportedCodecIds(),!0),o.rfb.addEventListener("connect",o.connectFinished),o.rfb.addEventListener("badencoding",l=>{at("Reconnecting due to encoding error or corrupted frame..."),o.forceSetting("fallback_image_mode",!0,!1),o.forceReconnect=!0,o.disconnect()}),o.rfb.addEventListener("disconnect",o.disconnectFinished),o.rfb.addEventListener("credentialsrequired",o.credentials),o.rfb.addEventListener("securityfailure",o.securityFailed),o.rfb.addEventListener("capabilities",o.updatePowerButton),o.rfb.addEventListener("clipboard",o.clipboardReceive),o.rfb.addEventListener("bottleneck_stats",o.bottleneckStatsRecieve),o.rfb.addEventListener("bell",o.bell),o.rfb.addEventListener("desktopname",o.updateDesktopName),o.rfb.addEventListener("inputlock",o.inputLockChanged),o.rfb.addEventListener("inputlockerror",o.inputLockError),o.rfb.addEventListener("screenregistered",o.screenRegistered),o.rfb.addEventListener("sharedSessionUserJoin",o.sharedSessionUserJoin),o.rfb.addEventListener("sharedSessionUserLeft",o.sharedSessionUserLeft),o.rfb.addEventListener("imagemode",o.switchToImageMode),o.rfb.addEventListener("videocodecschange",l=>{var c,u,f;je("Codec configurations received:",(c=l.detail)==null?void 0:c.configurations),o.initStreamModeSetting((u=l.detail)==null?void 0:u.codecs,(f=l.detail)==null?void 0:f.configurations)}),o.rfb.translateShortcuts=o.getSetting("translate_shortcuts"),o.rfb.clipViewport=o.getSetting("view_clip"),o.rfb.scaleViewport=o.getSetting("resize")==="scale",o.rfb.resizeSession=o.getSetting("resize")==="remote",o.setConnectionQualityValues(),o.rfb.compressionLevel=parseInt(o.getSetting("compression")),o.rfb.showDotCursor=o.getSetting("show_dot"),o.rfb.idleDisconnect=o.getSetting("idle_disconnect"),o.rfb.pointerRelative=o.getSetting("pointer_relative"),o.rfb.clipboardUp=o.getSetting("clipboard_up"),o.rfb.clipboardDown=o.getSetting("clipboard_down"),o.rfb.clipboardSeamless=o.getSetting("clipboard_seamless"),o.rfb.keyboard.enableIME=o.getSetting("enable_ime"),o.rfb.clipboardBinary=Lb()&&o.rfb.clipboardSeamless,o.rfb.enableWebRTC=o.getSetting("enable_webrtc"),o.rfb.mouseButtonMapper=o.initMouseButtonMapper(),o.rfb.videoQuality===5&&(o.rfb.enableQOI=!0),Lb()&&navigator.permissions.query({name:"clipboard-read"}).then(l=>{z("binary clipboard enabled")}).catch(()=>{}),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&(o.rfb.clipboardSeamless=!1),o.rfb.preferLocalCursor=o.getSetting("prefer_local_cursor"),o.updateViewOnly(),Wt()?(window.addEventListener?window.addEventListener("message",o.receiveMessage,!1):window.attachEvent&&(window.attachEvent("onload",WindowLoad),window.attachEvent("message",o.receiveMessage)),o.rfb.clipboardDown&&o.rfb.addEventListener("clipboard",o.clipboardRx),o.rfb.addEventListener("disconnect",o.disconnectedRx),hr("show_control_bar")||document.getElementById("noVNC_control_bar_anchor").setAttribute("style","display: none"),o._sessionTimeoutInterval=setInterval(function(){if(o.rfb){const l=(Date.now()-o.rfb.lastActiveAt)/1e3;let c=1200;Number.isFinite(parseFloat(o.rfb.idleDisconnect))&&(c=parseFloat(o.rfb.idleDisconnect)*60),l>c?(at("Idle Disconnect reached, disconnecting rfb session..."),parent.postMessage({action:"idle_session_timeout",value:"Idle session timeout exceeded"},"*"),setTimeout(function(){window.location.replace("disconnected.html")},1e4)):o.rfb.sendKeepAlive()}},5e3)):document.getElementById("noVNC_status").style.visibility="visible",document.addEventListener("keyup",function(l){if(l.ctrlKey&&l.shiftKey)switch(l.keyCode){case 49:o.toggleNav();break;case 50:o.toggleRelativePointer();break;case 51:o.togglePointerLock();break}},!0)},disconnect(){o.rfb.disconnect(),o.connected=!1,o.inhibitReconnect=!0,o.updateVisualState("disconnecting"),clearInterval(o._sessionTimeoutInterval),o.hideControlInput("noVNC_displays_button")},reconnect(){o.reconnectCallback=null,!o.inhibitReconnect&&o.connect(null,o.reconnectPassword)},cancelReconnect(){o.reconnectCallback!==null&&(clearTimeout(o.reconnectCallback),o.reconnectCallback=null),o.updateVisualState("disconnected"),o.openControlbar()},connectFinished(n){o.connected=!0,o.inhibitReconnect=!1;let e;o.getSetting("encrypt")?e=tr("Connected (encrypted) to ")+o.desktopName:e=tr("Connected (unencrypted) to ")+o.desktopName,o.showStatus(e),o.showStats(),o.updateVisualState("connected"),o.rfb.focus()},disconnectFinished(n){const e=o.connected;if(o.connected=!1,o.rfb=void 0,o.monitors=[],o.sortedMonitors=[],!n.detail.clean)o.updateVisualState("disconnected"),e?o.showStatus(tr("Something went wrong, connection is closed"),"error"):o.showStatus(tr("Failed to connect to server"),"error");else if(o.getSetting("reconnect",!1)===!0&&!o.inhibitReconnect){o.updateVisualState("reconnecting");const t=parseInt(o.getSetting("reconnect_delay"));o.reconnectCallback=setTimeout(o.reconnect,t);return}else o.updateVisualState("disconnected"),o.showStatus(tr("Disconnected"),"normal");document.title=Ex,o.openControlbar(),o.forceReconnect&&(o.forceReconnect=!1,o.connect(null,o.reconnectPassword))},securityFailed(n){let e="";"reason"in n.detail?e=tr("New connection has been rejected with reason: ")+n.detail.reason:e=tr("New connection has been rejected"),o.showStatus(e,"error")},switchToImageMode(n){at("Switching to image mode due to decoder error or incompatibility");const e=o.getSettingElement(ht.STREAM_MODE),t=Ce.pseudoEncodingStreamingModeJpegWebp;e.value=t,o.forceSetting(ht.STREAM_MODE,t,!1),o.applyStreamMode(t);const r=[...e.options].map(i=>({id:Number(i.value),label:i.text}));o.sendMessage("update_codecs",{current:t,codecs:r})},sendMessage(n,e){Wt()&&parent.postMessage({action:n,value:e},"*")},receiveMessage(n){var e,t,r;if(n.data&&n.data.action)switch(z("Received message from parent window: "+n.data.action),n.data.action){case"clipboardsnd":o.rfb&&o.rfb.clipboardUp&&o.rfb.clipboardPasteFrom(n.data.value);break;case"setvideoquality":let i;if(n.data.qualityLevel!==void 0)i=parseInt(n.data.qualityLevel);else if(n.data.value!==void 0)i=parseInt(n.data.value);else{Ke("Invalid message received from parent window: "+n.data.action);break}const a=parseInt(o.getSetting(ht.STREAM_MODE)),s=a===Ce.pseudoEncodingStreamingModeJpegWebp,l=s?"video_quality":ht.VIDEO_STREAM_QUALITY,c=s?i:o.rfb.videoCodecConfigurations[a].presets[i];o.forceSetting(l,c,!1),n.data.frameRate!==void 0?(vr("framerate",n.data.frameRate),o.updateQuality(n.data.frameRate)):o.updateQuality();break;case"enable_game_mode":o.rfb&&!o.rfb.pointerRelative&&o.toggleRelativePointer();break;case"disable_game_mode":o.rfb&&o.rfb.pointerRelative&&o.toggleRelativePointer();break;case"enable_pointer_lock":o.rfb&&!o.rfb.pointerLock&&o.togglePointerLock();break;case"disable_pointer_lock":o.rfb&&o.rfb.pointerLock&&o.togglePointerLock();break;case"show_keyboard_controls":o.getSetting("virtual_keyboard_visible")||(o.forceSetting("virtual_keyboard_visible",!0,!1),o.showKeyboardControls());break;case"hide_keyboard_controls":o.getSetting("virtual_keyboard_visible")&&(o.forceSetting("virtual_keyboard_visible",!0,!1),o.hideKeyboardControls());break;case"enable_ime_mode":o.getSetting("enable_ime")||(o.forceSetting("enable_ime",!0,!1),o.toggleIMEMode());break;case"disable_ime_mode":o.getSetting("enable_ime")&&(o.forceSetting("enable_ime",!1,!1),o.toggleIMEMode());break;case"open_displays_mode":o.rfb&&o.openDisplays();break;case"close_displays_mode":o.closeDisplays();break;case"enable_webrtc":o.getSetting("enable_webrtc")||(o.forceSetting("enable_webrtc",!0,!1),o.toggleWebRTC());break;case"disable_webrtc":o.getSetting("enable_webrtc")&&(o.forceSetting("enable_webrtc",!1,!1),o.toggleWebRTC());break;case"resize":o.forceSetting("resize",n.data.value,!1),o.applyResizeMode();break;case"set_resolution":o.rfb&&(o.rfb.forcedResolutionX=n.data.value_x,o.rfb.forcedResolutionY=n.data.value_y,o.forceSetting("forced_resolution_x",n.data.value_x,!1),o.forceSetting("forced_resolution_y",n.data.value_y,!1),o.applyResizeMode());break;case"set_perf_stats":o.forceSetting("enable_perf_stats",n.data.value,!1),o.showStats();break;case"set_idle_timeout":const u=Math.ceil(n.data.value/60);o.forceSetting("idle_disconnect",u,!1),o.rfb.idleDisconnect=u,console.log(`Updated the idle timeout to ${n.data.value}s`);break;case"enable_hidpi":o.forceSetting("enable_hidpi",n.data.value,!1),o.enableHiDpi();break;case"control_displays":parent.postMessage({action:"can_control_displays",value:!0},"*");break;case"enable_threading":o.forceSetting("enable_threading",n.data.value,!1),o.threading();break;case"terminate":o.rfb&&o.rfb.terminate();break;case"set_streaming_mode":let f=Ce.pseudoEncodingStreamingModeJpegWebp;if(n.data.value!=="image"&&(f=parseInt(n.data.value)),o.forceSetting(ht.STREAM_MODE,f,!1),f!==Ce.pseudoEncodingStreamingModeJpegWebp){const h=parseInt(o.getSetting("video_quality")),p=(r=(t=(e=o.rfb)==null?void 0:e.videoCodecConfigurations)==null?void 0:t[f])==null?void 0:r.presets;if(Array.isArray(p)&&p.length>0){const _=Number.isFinite(h)?Math.max(0,Math.min(p.length-1,h)):0,g=p[_];g!==void 0&&o.forceSetting(ht.VIDEO_STREAM_QUALITY,g,!1)}}o.applyStreamMode(f);break;case"set_gop":o.forceSetting(ht.GOP,parseInt(n.data.value),!1),o.updateQuality();break}},disconnectedRx(n){const e=n.detail||{};parent.postMessage({action:"disconnectrx",value:e.reason},"*"),e.serverNotice&&e.serverNotice.graceful&&setTimeout(()=>window.location.replace("disconnected.html"),3e3)},toggleNav(){Wt()?parent.postMessage({action:"togglenav",value:null},"*"):(o.toggleControlbar(),o.keepControlbar(),o.activateControlbar(),o.controlbarGrabbed=!1,o.showControlbarHint(!1))},clipboardRx(n){parent.postMessage({action:"clipboardrx",value:n.detail.text},"*")},toggleFullscreen(){if(Wt()){parent.postMessage({action:"fullscreen",value:"Fullscreen clicked"},"*");return}document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?(Ob&&navigator.keyboard.unlock(),document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()):(document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen?document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):document.body.msRequestFullscreen&&document.body.msRequestFullscreen(),Ob&&navigator.keyboard.lock()),o.updateFullscreenButton()},updateFullscreenButton(){document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?document.getElementById("noVNC_fullscreen_button").classList.add("noVNC_selected"):document.getElementById("noVNC_fullscreen_button").classList.remove("noVNC_selected"),o.updatePointerLockButton()},applyResizeMode(){if(!o.rfb)return;const n=o.getSetting("resize");o.rfb.clipViewport=n!=="off",o.rfb.scaleViewport=n==="scale",o.rfb.resizeSession=n==="remote",o.rfb.idleDisconnect=o.getSetting("idle_disconnect"),o.rfb.videoQuality=o.getSetting("video_quality"),o.rfb.enableWebP=o.getSetting("enable_webp"),o.rfb.enableHiDpi=o.getSetting("enable_hidpi"),o.rfb.threading=o.getSetting("enable_threading"),o.rfb.resizeSession?(o.rfb.forcedResolutionX=null,o.rfb.forcedResolutionY=null):(o.rfb.forcedResolutionX=o.getSetting("forced_resolution_x",!1),o.rfb.forcedResolutionY=o.getSetting("forced_resolution_y",!1)),o.rfb.updateConnectionSettings()},_identify(n){o.identify(),o.rfb.identify(o.monitors)},identify(n){Rc("1")},openDisplays(){if(document.getElementById("noVNC_displays").classList.add("noVNC_open"),o.monitors.length<1&&o.rfb){let n=o.rfb.getScreenPlan();o.initMonitors(n)}o.monitors.length>0&&o.displayMonitors()},closeDisplays(){document.getElementById("noVNC_displays").classList.remove("noVNC_open")},displaysRefresh(){const n=o.refreshRotation+180;let e=o.rfb.getScreenPlan();document.getElementById("noVNC_refreshMonitors_icon").style.transform="rotate("+n+"deg)",o.refreshRotation=n,o.updateMonitors(e),o.recenter(),o.draw()},normalizePlacementValues(n){},increaseCurrentDisplay(n){const e=n.screens.length,t=n.screens.findIndex(r=>r===n.currentScreen);return e===1?0:(o.currentDisplay===null&&(o.currentDisplay=t),o.currentDisplay+=1,o.currentDisplay===t&&(o.currentDisplay+=1),o.currentDisplay>=e&&(o.currentDisplay=0),o.currentDisplay)},async addSecondaryMonitor(){let n=window.location.pathname.replace(/[^/]*$/,"");const e=X1();let t=`${window.location.protocol}//${window.location.host}${n}screen.html?windowId=${e}`;if(document.getElementById("noVNC_auto_placement").checked&&"getScreenDetails"in window){let a=!1;try{const{state:s}=await navigator.permissions.query({name:"window-management"});if(a=s==="granted"||s==="prompt",a&&window.screen.isExtended){const l=await window.getScreenDetails(),c=o.increaseCurrentDisplay(l);let u=l.screens[c];const f="left="+u.availLeft+",top="+u.availTop+",width="+u.availWidth+",height="+u.availHeight+",fullscreen";let h=window.open(t,"_blank",f);o.displayWindows.set(e,h);return}}catch(s){console.log(s)}}z(`Opening a secondary display ${t}`);let i=window.open(t,"_blank","toolbar=0,location=0,menubar=0");i&&o.displayWindows.set(e,i)},initMonitors(n){const{scale:e}=o.multiMonitorSettings();let t=[],r=!1,i=1;n.screens.forEach(s=>{parseFloat(s.pixelRatio)!=1&&(r=!0),t.push({id:s.screenID,x:s.x/e,y:s.y/e,w:s.serverWidth/e,h:s.serverHeight/e,pixelRatio:s.pixelRatio,scale:1,fill:"#eeeeeecc",isDragging:!1,num:i}),i++}),r?document.getElementById("noVNC_setting_enable_hidpi_option").classList.add("show"):document.getElementById("noVNC_setting_enable_hidpi_option").classList.remove("show"),o.monitors=t;let a=JSON.parse(JSON.stringify(t));o.sortedMonitors=a.sort((s,l)=>s.y>=l.y+l.h/2?1:s.x-l.x)},updateMonitors(n){o.initMonitors(n),o.recenter(),o.draw()},multiMonitorSettings(){const n=document.getElementById("noVNC_multiMonitorWidget");return{canvas:n,ctx:n.getContext("2d"),bb:n.getBoundingClientRect(),scale:12,canvasWidth:n.width,canvasHeight:n.height}},getMonitorEventCoords(n){const{bb:e,canvas:t}=o.multiMonitorSettings(),r=n.clientX||n.touches&&n.touches[0].clientX,i=n.clientY||n.touches&&n.touches[0].clientY,a=t.width/e.width,s=t.height/e.height;return{mx:parseInt((r-e.left)*a),my:parseInt((i-e.top)*s)}},monitorMouseDown(n){const e=o.sortedMonitors;n.preventDefault(),n.stopPropagation();const{mx:t,my:r}=o.getMonitorEventCoords(n);for(var i=0;ic&&tu&&rr.y>=i.y+i.h/2?1:r.x-i.x),o.recenter(),o.draw()},monitorMouseMove(n){const e=o.sortedMonitors;if(o.monitorDragOk){n.preventDefault(),n.stopPropagation();const{mx:s,my:l}=o.getMonitorEventCoords(n);for(var t=s-o.monitorStartX,r=l-o.monitorStartY,i=0;i1)for(var t=1;ti&&(r.x=i),r.xa&&r.x<=i&&(r.y=a),e=n[t]}},rect(n,e,t,r,i){n.beginPath(),typeof n.roundRect<"u"?n.roundRect(e,t,r,i,5):n.rect(e,t,r,i),n.stroke(),n.closePath(),n.fill()},draw(){const{ctx:n,canvasWidth:e,canvasHeight:t,scale:r}=o.multiMonitorSettings(),i=o.sortedMonitors;n.clearRect(0,0,e,t),n.rect(0,0,e,t);for(var a=0;aa&&(a=c.x+c.w),c.y+c.h>s&&(s=c.y+c.h)}const u=(e-a-i)/2,f=(t-s-r)/2;return{top:r,left:i,width:a,height:s,startLeft:u,startTop:f}},setScreenPlan(){let n=o.monitors,e=o.sortedMonitors;const{scale:t}=o.multiMonitorSettings(),{top:r,left:i,width:a,height:s}=o.getSizes(e),l=[];for(var c=0;cp.id===u.id);l.push({screenID:f.id,serverHeight:Math.round(f.h*t),serverWidth:Math.round(f.w*t),x:Math.round((f.x-i)*t),y:Math.round((f.y-r)*t)})}const h={serverHeight:Math.round(s*t),serverWidth:Math.round(a*t),screens:l};o.rfb&&o.rfb.applyScreenPlan(h)},displayMonitors(){const{canvas:n}=o.multiMonitorSettings();n.removeEventListener("mousedown",o.monitorMouseDown,!1),n.removeEventListener("mouseup",o.monitorMouseUp,!1),n.removeEventListener("mousemove",o.monitorMouseMove,!1),n.removeEventListener("touchstart",o.monitorMouseDown,!1),n.removeEventListener("touchend",o.monitorMouseUp,!1),n.removeEventListener("touchmove",o.monitorMouseMove,!1),n.addEventListener("mousedown",o.monitorMouseDown,!1),n.addEventListener("mouseup",o.monitorMouseUp,!1),n.addEventListener("mousemove",o.monitorMouseMove,!1),n.addEventListener("touchstart",o.monitorMouseDown,!1),n.addEventListener("touchend",o.monitorMouseUp,!1),n.addEventListener("touchmove",o.monitorMouseMove,!1),o.recenter(),o.draw()},updateViewClip(){if(!o.rfb)return;o.getSetting("resize")==="scale"?(o.forceSetting("view_clip",!1),o.rfb.clipViewport=!1):GI?(o.enableSetting("view_clip"),o.rfb.clipViewport=o.getSetting("view_clip")):(o.forceSetting("view_clip",!0),o.rfb.clipViewport=!0),o.updateViewDrag()},updatePointerLockButton(){o.connected&&(document.pointerLockElement!==void 0||document.mozPointerLockElement!==void 0)?(o.showControlInput("noVNC_setting_pointer_lock"),o.showControlInput("noVNC_game_mode_button")):(o.hideControlInput("noVNC_setting_pointer_lock"),o.hideControlInput("noVNC_game_mode_button"))},togglePointerLock(){Db()?(o.rfb.pointerLock=!o.rfb.pointerLock,o.getSetting("pointer_lock")!==o.rfb.pointerLock&&o.forceSetting("pointer_lock",o.rfb.pointerLock,!1)):(o.showStatus("Your browser does not support pointer lock.","info",1500,!0),o.forceSetting("pointer_lock",!1,!0))},toggleRelativePointer(n=null,e=null){if(!Db()){o.showStatus("Your browser does not support pointer lock.","info",1500,!0);return}var t=!o.rfb.pointerRelative;o.rfb.pointerLock!==t&&(o.rfb.pointerLock=t),o.rfb.pointerRelative!==t&&(o.rfb.pointerRelative=t),t?document.getElementById("noVNC_game_mode_button").classList.add("noVNC_selected"):(document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.forceSetting("pointer_lock",!1,!1)),o.sendMessage("enable_game_mode",t),o.sendMessage("enable_pointer_lock",t)},toggleViewDrag(){o.rfb&&(o.rfb.dragViewport=!o.rfb.dragViewport,o.updateViewDrag())},updateViewDrag(){if(!o.connected)return;const n=document.getElementById("noVNC_view_drag_button");!o.rfb.clipViewport&&o.rfb.dragViewport&&(o.rfb.dragViewport=!1),o.rfb.dragViewport?n.classList.add("noVNC_selected"):n.classList.remove("noVNC_selected"),o.rfb.clipViewport?o.showControlInput("noVNC_view_drag_button"):o.hideControlInput("noVNC_view_drag_button")},updateQuality(n){let e=parseInt(o.getSetting("video_quality")),t=!1;const r=parseInt(o.getSetting(ht.STREAM_MODE))===Ce.pseudoEncodingStreamingModeJpegWebp,i=a=>{o.forceSetting("framerate_image_mode",a),o.forceSetting("framerate_streaming_mode",a,!1),vr("framerate",a)};switch(e){case 10:o.enableSetting("dynamic_quality_min"),o.enableSetting("dynamic_quality_max"),o.enableSetting("treat_lossless"),o.enableSetting("video_time"),o.enableSetting("video_area"),o.enableSetting("max_video_resolution_x"),o.enableSetting("max_video_resolution_y"),o.enableSetting("jpeg_video_quality"),o.enableSetting("webp_video_quality"),o.enableSetting("framerate_image_mode"),o.enableSetting("video_scaling"),o.enableSetting("video_out_time");break;case 5:t=!0,n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("dynamic_quality_min",9),o.forceSetting("dynamic_quality_max",9),i(n),o.forceSetting("treat_lossless",9),o.forceSetting("video_time",100),o.forceSetting("video_area",100),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),o.forceSetting("jpeg_video_quality",9),o.forceSetting("webp_video_quality",9),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 4:n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("dynamic_quality_min",8),o.forceSetting("dynamic_quality_max",9),i(n),o.forceSetting("treat_lossless",9),o.forceSetting("video_time",100),o.forceSetting("video_area",100),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),o.forceSetting("jpeg_video_quality",9),o.forceSetting("webp_video_quality",9),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 3:n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("jpeg_video_quality",8),o.forceSetting("webp_video_quality",8),o.forceSetting("dynamic_quality_min",7),o.forceSetting("dynamic_quality_max",9),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),i(n),o.forceSetting("treat_lossless",8),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 1:n=n&&Number.isFinite(n)?n:sr.MIN,o.forceSetting("jpeg_video_quality",5),o.forceSetting("webp_video_quality",4),o.forceSetting("dynamic_quality_min",3),o.forceSetting("dynamic_quality_max",7),o.forceSetting("max_video_resolution_x",960),o.forceSetting("max_video_resolution_y",540),i(n),o.forceSetting("treat_lossless",7),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 2:case 0:default:r&&(n=n&&Number.isFinite(n)?n:sr.MIN,o.forceSetting("jpeg_video_quality",7),o.forceSetting("webp_video_quality",7),o.forceSetting("dynamic_quality_min",4),o.forceSetting("dynamic_quality_max",9),o.forceSetting("max_video_resolution_x",960),o.forceSetting("max_video_resolution_y",540),i(n||sr.MIN),o.forceSetting("treat_lossless",7),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3));break}o.rfb&&(o.setConnectionQualityValues(),o.rfb.enableQOI=t,o.rfb.updateConnectionSettings())},updateCompression(){o.rfb&&(o.rfb.compressionLevel=parseInt(o.getSetting("compression")))},updateVideoRenderingMode(){const n=o.getSetting("video_rendering_mode");je("Video rendering mode changed to: ",n),o.saveSetting("video_rendering_mode"),o.connected&&(o.forceReconnect=!0,o.disconnect())},updateShortcutTranslation(){o.rfb.translateShortcuts=o.getSetting("translate_shortcuts")},toggleKeyboardControls(){o.getSetting("virtual_keyboard_visible")?o.showKeyboardControls():o.hideKeyboardControls()},toggleIMEMode(){o.rfb&&(o.getSetting("enable_ime")?o.rfb.keyboard.enableIME=!0:o.rfb.keyboard.enableIME=!1)},toggleWebRTC(){if(o.rfb){if(typeof RTCPeerConnection>"u"){o.showStatus("This browser does not support WebRTC UDP Data Channels.","warn",5e3,!0);return}o.getSetting("enable_webrtc")?o.rfb.enableWebRTC=!0:o.rfb.enableWebRTC=!1,o.updateQuality()}},enableHiDpi(){o.rfb&&(o.getSetting("enable_hidpi")?o.rfb.enableHiDpi=!0:o.rfb.enableHiDpi=!1,o.applyResizeMode())},showKeyboardControls(){document.getElementById("noVNC_keyboard_control").classList.add("is-visible")},hideKeyboardControls(){document.getElementById("noVNC_keyboard_control").classList.remove("is-visible")},showVirtualKeyboard(){const n=document.getElementById("noVNC_keyboardinput");if(!(document.activeElement==n||!o.rfb)){o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.add("noVNC_selected"),n.focus();try{const e=n.value.length;n.setSelectionRange(e,e)}catch{}document.querySelector("canvas").addEventListener("touchstart",()=>{document.activeElement===n&&n.blur()},{once:!0})}},hideVirtualKeyboard(){const n=document.getElementById("noVNC_keyboardinput");document.activeElement!=n||!o.rfb||(o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.remove("noVNC_selected"),n.blur())},toggleVirtualKeyboard(){document.getElementById("noVNC_keyboard_button").classList.contains("noVNC_selected")?o.hideVirtualKeyboard():o.showVirtualKeyboard()},onfocusVirtualKeyboard(n){document.getElementById("noVNC_keyboard_button").classList.add("noVNC_selected"),o.rfb&&(o.rfb.focusOnClick=!1)},onblurVirtualKeyboard(n){document.getElementById("noVNC_keyboard_button").classList.remove("noVNC_selected"),o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.remove("noVNC_selected"),o.rfb&&(o.rfb.focusOnClick=!0)},keepVirtualKeyboard(n){const e=document.getElementById("noVNC_keyboardinput");if(document.activeElement==e){if(n.target.form!==void 0)switch(n.target.type){case"text":case"email":case"search":case"password":case"tel":case"url":case"textarea":case"select-one":case"select-multiple":return}n.preventDefault()}},openExtraKeys(){o.closeAllPanels(),o.openControlbar(),document.getElementById("noVNC_modifiers").classList.add("noVNC_open"),document.getElementById("noVNC_toggle_extra_keys_button").classList.add("noVNC_selected")},disableSoftwareKeyboard(){document.querySelector("#noVNC_keyboard_button").disabled=!0},enableSoftwareKeyboard(){document.querySelector("#noVNC_keyboard_button").disabled=!1},closeExtraKeys(){document.getElementById("noVNC_modifiers").classList.remove("noVNC_open"),document.getElementById("noVNC_toggle_extra_keys_button").classList.remove("noVNC_selected")},toggleExtraKeys(n){if(!o.isControlPanelItemClick(n))return!1;document.getElementById("noVNC_modifiers").classList.contains("noVNC_open")?o.closeExtraKeys():o.openExtraKeys()},sendEsc(){o.sendKey(O.XK_Escape,"Escape")},sendTab(){o.sendKey(O.XK_Tab,"Tab")},toggleCtrl(){const n=document.getElementById("noVNC_toggle_ctrl_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Control_L,"ControlLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Control_L,"ControlLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.ctrl").classList.toggle("selected")},toggleWindows(){const n=document.getElementById("noVNC_toggle_windows_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Super_L,"MetaLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Super_L,"MetaLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.windows").classList.toggle("selected")},toggleAlt(){const n=document.getElementById("noVNC_toggle_alt_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Alt_L,"AltLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Alt_L,"AltLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.alt").classList.toggle("selected")},sendCtrlAltDel(){o.rfb.sendCtrlAltDel(),o.rfb.focus(),o.idleControlbar()},sendKey(n,e,t){o.rfb.sendKey(n,e,t),document.getElementById("noVNC_keyboard_button").classList.contains("noVNC_selected")?document.getElementById("noVNC_keyboardinput").focus():o.rfb.focus(),o.idleControlbar()},updateViewOnly(){o.rfb&&(o.rfb.viewOnly=o.getSetting("view_only"),o.rfb.viewOnly?(o.hideControlInput("noVNC_keyboard_button"),o.hideControlInput("noVNC_toggle_extra_keys_button"),o.hideControlInput("noVNC_clipboard_button"),o.hideControlInput("noVNC_game_mode_button")):(o.showControlInput("noVNC_keyboard_button"),o.showControlInput("noVNC_toggle_extra_keys_button"),o.showControlInput("noVNC_clipboard_button"),o.showControlInput("noVNC_game_mode_button")))},updateShowDotCursor(){o.rfb&&(o.rfb.showDotCursor=o.getSetting("show_dot"))},updateLogging(){SA(o.getSetting("logging"))},updateDesktopName(n){o.desktopName=n.detail.name,document.title=n.detail.name+" - "+Ex},inputLockChanged(n){var e=document.getElementById("noVNC_setting_pointer_lock");document.getElementById("noVNC_game_mode_button"),n.detail.pointer?(e.checked=!0,o.sendMessage("enable_pointer_lock",!0),o.closeControlbar(),o.showStatus("Press Esc Key to Exit Pointer Lock Mode","warn",5e3,!0)):o.rfb.pointerRelative?o.showStatus("Game Mode paused, click on screen to resume Game Mode.","warn",5e3,!0):(o.forceSetting("pointer_lock",!1,!1),document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.sendMessage("enable_pointer_lock",!1))},inputLockError(n){o.showStatus("Unable to enter pointer lock mode.","warn",5e3,!0),o.rfb.pointerRelative=!1,document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.forceSetting("pointer_lock",!1,!1),o.sendMessage("enable_game_mode",!1),o.sendMessage("enable_pointer_lock",!1)},bell(n){if(hr("bell","on")==="on"){const e=document.getElementById("noVNC_bell").play();e&&e.catch(t=>{t.name==="NotAllowedError"||Ke("Unable to play bell: "+t)})}},screenRegistered(n){if(console.log("screen registered"),o.rfb){let e=o.rfb.getScreenPlan();if(n&&n.detail){const{left:t,top:r,screenID:i}=n.detail,a=e.screens.findIndex(s=>s.screenID===i);a>-1&&(e.screens[a].x=t,e.screens[a].y=r)}o.updateMonitors(e),o._identify(o.monitors)}},sharedSessionUserJoin(n){je("shared session user joined: "+n.detail),o.sendMessage("sharedSessionUserJoin",n.detail)},sharedSessionUserLeft(n){je("shared session user left: "+n.detail),o.sendMessage("sharedSessionUserLeft",n.detail)},addOption(n,e,t){const r=document.createElement("OPTION");r.text=e,r.value=t,n.options.add(r)}},aT=["af","af_ZA","am_ET","am","ar_AE","ar_BH","ar_DZ","ar_EG","ar_IN","ar_IQ","ar_JO","ar_KW","ar_LB","ar_LY","ar_MA","ar_OM","ar","ar_QA","ar_SA","ar_SD","ar_SY","ar_TN","ar_YE","az_AZ","az","be_BY","be","bg_BG","bg","bn_BD","bn_IN","bn","bs_BA","bs","ca_AD","ca_ES","ca_FR","ca_IT","ca","cs_CZ","cs","cy_GB","cy","da_DK","da","de_AT","de_BE","de_CH","de_DE","de_LU","de","el","es_AR","es_BO","es_CL","es_CO","es_CR","es_CU","es_DO","es_EC","es_ES","es_GT","es_HN","es_MX","es_NI","es_PA","es_PE","es","es_PR","es_PY","es_SV","es_US","es_UY","es_VE","et_EE","et","eu_ES","eu","fa_IR","fa","fi_FI","fi","fr_BE","fr_CA","fr_CH","fr_FR","fr_LU","fr","fy_DE","fy_NL","fy","ga_IE","ga","gd_GB","gd","gl_ES","gl","gu_IN","gu","ha_NG","ha","he_IL","he","hi_IN","hi","hr_HR","hr","ht_HT","ht","hu_HU","hu","hy_AM","hy","id_ID","id","ig_NG","ig","is_IS","is","it_CH","it_IT","it","ja_JP","ja","ka_GE","ka","kk_KZ","kk","km_KH","km","kn_IN","kn","ko_KR","ko","ku","ku_TR","ky_KG","ky","lb_LU","lb","lo_LA","lo","lt_LT","lt","lv_LV","lv","mg_MG","mg","mi_NZ","mi","mk_MK","mk","ml_IN","ml","mn_MN","mn","mr_IN","mr","ms_MY","ms","mt_MT","mt","my_MM","my","ne_NP","ne","nl_AW","nl_BE","nl_NL","nl","pa_IN","pa_PK","pa","pl_PL","pl","ps_AF","ps","pt_BR","pt","pt_PT","ro","ro_RO","ru","ru_RU","ru_UA","sd_IN","sd","si_LK","si","sk","sk_SK","sl","sl_SI","so_DJ","so_ET","so_KE","so","so_SO","sq_AL","sq_MK","sq","st","st_ZA","sv_FI","sv","sv_SE","sw_KE","sw","ta_IN","ta_LK","ta","te_IN","te","tg","tg_TJ","th","th_TH","tl_PH","tl","tr_CY","tr","tr_TR","tt","tt_RU","uk","uk_UA","ur_IN","ur_PK","ur","uz","uz_UZ","vi","vi_VN","xh","xh_ZA","yi","yi_US","yo_NG","yo","zh_CN","zh_TW","zu","zu_ZA"];Tr.setup(aT);Tr.language==="en"||Tr.dictionary!==void 0?o.prime():fetch("app/locale/"+Tr.language+".json").then(n=>{if(!n.ok)throw Error(""+n.status+" "+n.statusText);return n.json()}).then(n=>{Tr.dictionary=n}).catch(n=>Ke("Failed to load translations: "+n)).then(o.prime);export{z as D,Ke as E,XA as M,We as R,xn as X,Wt as a,Rc as b,Ll as c,ei as d,Lb as e,hr as g,SA as i,mn as r,Yb as s,vr as w}; diff --git a/src/ubuntu/install/trae_ai/vnc_startup.sh b/src/ubuntu/install/trae_ai/vnc_startup.sh new file mode 100644 index 00000000..df0f02cb --- /dev/null +++ b/src/ubuntu/install/trae_ai/vnc_startup.sh @@ -0,0 +1,645 @@ +#!/bin/bash +### every exit != 0 fails the script +set -e + +APP_NAME=$(basename "$0") + +log () { + if [ ! -z "${1}" ]; then + LOG_LEVEL="${2:-DEBUG}" + INGEST_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + echo "${INGEST_DATE} ${LOG_LEVEL} (${APP_NAME}): $1" + if [ ! -z "${KASM_API_JWT}" ] && [ ! -z "${KASM_API_HOST}" ] && [ ! -z "${KASM_API_PORT}" ]; then + set +e + http_proxy="" https_proxy="" curl https://${KASM_API_HOST}:${KASM_API_PORT}/api/kasm_session_log?token=${KASM_API_JWT} --max-time 1 -X POST -H 'Content-Type: application/json' -d '[{ "host": "'"${KASM_ID}"'", "application": "Session", "ingest_date": "'"${INGEST_DATE}"'", "message": "'"$1"'", "levelname": "'"${LOG_LEVEL}"'", "process": "'"${APP_NAME}"'", "kasm_user_name": "'"kasm_user"'", "kasm_id": "'"${KASM_ID}"'" }]' -k -s + set -e + fi + fi +} + +no_proxy="localhost,127.0.0.1" + +if [ -f /usr/bin/kasm-profile-sync ] && [ -f /usr/bin/kasm-profile-sync-2 ]; then + kasm_profile_sync_found=1 +fi + +# Set lang values +if [ -n "${LC_ALL}" ]; then + export LANG=${LC_ALL} + export LANGUAGE=${LC_ALL} +elif [ -n "${LANG}" ]; then + export LC_ALL=${LANG} + export LANGUAGE=${LANG} +fi + +# Set timezone from TZ environment variable +if [ -n "${TZ}" ]; then + ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime + echo "${TZ}" > /etc/timezone +fi + +# Dbus +export $(dbus-launch) + +# dict to store processes +declare -A KASM_PROCS + +# switch passwords to local variables +tmpval=$VNC_VIEW_ONLY_PW +unset VNC_VIEW_ONLY_PW +VNC_VIEW_ONLY_PW=$tmpval +tmpval=$VNC_PW +unset VNC_PW +VNC_PW=$tmpval + +BUILD_ARCH=$(uname -p) +if [ -z ${KASM_PROFILE_CHUNK_SIZE} ]; then + KASM_PROFILE_CHUNK_SIZE=100000 +fi +if [ -z ${DRINODE+x} ]; then + DRINODE="/dev/dri/renderD128" +fi +KASMNVC_HW3D='' +if [ ! -z ${HW3D+x} ]; then + KASMVNC_HW3D="-hw3d" +fi +STARTUP_COMPLETE=0 + +######## FUNCTION DECLARATIONS ########## + +## print out help +function help (){ + echo " + USAGE: + + OPTIONS: + -w, --wait (default) keeps the UI and the vncserver up until SIGINT or SIGTERM will received + -s, --skip skip the vnc startup and just execute the assigned command. + example: docker run kasmweb/core --skip bash + -d, --debug enables more detailed startup output + e.g. 'docker run kasmweb/core --debug bash' + -h, --help print out this help + " +} + +trap cleanup SIGINT SIGTERM SIGQUIT SIGHUP ERR + +function pull_profile (){ + if [ ! -z "$KASM_PROFILE_LDR" ]; then + if [ -z "$kasm_profile_sync_found" ]; then + echo >&2 "Profile sync not available" + sleep 3 + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + return + fi + + log "Downloading and unpacking user profile from object storage." + set +e + if [[ $DEBUG == true ]]; then + OUTPUT=$(http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --download /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT} --verbose 2>&1 ) + else + OUTPUT=$(http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --download /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT} 2>&1 ) + fi + + # log output of profile sync + while IFS= read -r line; do + log "$line" + done <<< "$OUTPUT" + + # exit and log a non-zero exit code + PROCESS_SYNC_EXIT_CODE=$? + set -e + if (( PROCESS_SYNC_EXIT_CODE > 1 )); then + log "Profile-sync failed with a non-recoverable error. See server side logs for more details." "ERROR" + exit 1 + fi + log "Profile load complete." + # Update the status of the container to running + sleep 3 + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + + # Reset the timer to prevent session recording monitor from exiting + SECONDS=0 + fi +} + +function profile_size_check(){ + if [ ! -z "$KASM_PROFILE_SIZE_LIMIT" ] + then + SIZE_CHECK_FAILED=false + while true + do + sleep 60 + CURRENT_SIZE=$(du -s $HOME | grep -Po '^\d+') + SIZE_LIMIT_MB=$(echo "$KASM_PROFILE_SIZE_LIMIT / 1000" | bc) + if [[ $CURRENT_SIZE -gt KASM_PROFILE_SIZE_LIMIT ]] + then + notify-send "Profile Size Exceeds Limit" "Your home profile has exceeded the size limit of ${SIZE_LIMIT_MB}MB. Changes on your desktop will not be saved between sessions until you reduce the size of your profile." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-x.svg -t 57000 + SIZE_CHECK_FAILED=true + else + if [ "$SIZE_CHECK_FAILED" = true ] ; then + SIZE_CHECK_FAILED=false + notify-send "Profile Size" "Your home profile size is now under the limit and will be saved when your session is terminated." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-logo.svg -t 57000 + fi + fi + + if [ -f /tmp/.kasm_container_shutdown_failure ]; then + notify-send "Profile Size" "Your profile failed to save. Contact your administrator for assistance." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-logo.svg -t 57000 + fi + done + fi +} + +## correct forwarding of shutdown signal +function cleanup () { + kill -s SIGTERM $! + exit 0 +} + +function start_kasmvnc (){ + log "Starting KasmVNC" + + DISPLAY_NUM=$(echo $DISPLAY | grep -Po ':\d+') + + if [[ $STARTUP_COMPLETE == 0 ]]; then + vncserver -kill $DISPLAY &> $STARTUPDIR/vnc_startup.log \ + || rm -rfv /tmp/.X*-lock /tmp/.X11-unix &> $STARTUPDIR/vnc_startup.log \ + || echo "no locks present" + fi + + rm -rf $HOME/.vnc/*.pid + echo "exit 0" > $HOME/.vnc/xstartup + chmod +x $HOME/.vnc/xstartup + + VNCOPTIONS="$VNCOPTIONS -select-de manual" + + if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then + VNCOPTIONS="$VNCOPTIONS -UnixRelay printer:/tmp/printer" + fi + + if [[ ${BUILD_ARCH} =~ ^aarch64$ && -f /lib/aarch64-linux-gnu/libgcc_s.so.1 ]] ; then + LD_PRELOAD=/lib/aarch64-linux-gnu/libgcc_s.so.1 vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + else + vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + fi + + KASM_PROCS['kasmvnc']=$(cat $HOME/.vnc/*${DISPLAY_NUM}.pid) + + #Disable X11 Screensaver + if [ "${DISTRO}" != "alpine" ]; then + echo "Disabling X Screensaver Functionality" + xset -dpms || true + xset s off || true + xset q || true + else + echo "Disabling of X Screensaver Functionality for $DISTRO is not required." + fi + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Websockify ----------------------------" + echo "Websockify PID: ${KASM_PROCS['kasmvnc']}"; + fi +} + +function start_window_manager (){ + echo -e "\n------------------ Xfce4 window manager startup------------------" + if [ "${START_XFCE4}" == "1" ] || [ "${START_DE}" == "xfce4-session" ]; then + if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + echo "Starting XFCE with VirtualGL using EGL device ${KASM_EGL_CARD}" + DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startxfce4 --replace & + else + echo "Starting XFCE" + DISPLAY=:1 /usr/bin/startxfce4 --replace & + fi + KASM_PROCS['window_manager']=$! + else + echo "Skipping XFCE Startup" + fi + echo -e "\n------------------ Openbox window manager startup------------------" + if [ "${START_DE}" == "openbox" ] ; then + /usr/bin/openbox-session & + KASM_PROCS['window_manager']=$! + else + echo "Skipping OpenBox Startup" + fi + echo -e "\n------------------ KDE window manager startup------------------" + if [ "${START_DE}" == "kde5" ] ; then + if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + echo "Starting KDE with VirtualGL using EGL device ${KASM_EGL_CARD}" + DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startplasma-x11 & + else + echo "Starting KDE" + DISPLAY=:1 /usr/bin/startplasma-x11 & + fi + KASM_PROCS['window_manager']=$! + else + echo "Skipping KDE Startup" + fi +} + +function start_audio_out_websocket (){ + if [[ ${KASM_SVC_AUDIO:-1} == 1 ]]; then + log 'Starting audio websocket server' + $STARTUPDIR/jsmpeg/kasm_audio_out-linux kasmaudio 8081 4901 ${HOME}/.vnc/self.pem ${HOME}/.vnc/self.pem "${KASM_USER}:$VNC_PW" & + + KASM_PROCS['kasm_audio_out_websocket']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Audio Out Websocket ----------------------------" + echo "Kasm Audio Out Websocket PID: ${KASM_PROCS['kasm_audio_out_websocket']}"; + fi + fi +} + +function start_audio_out (){ + if [[ ${KASM_SVC_AUDIO:-1} == 1 ]]; then + log 'Starting audio server' + + if [ "${START_PULSEAUDIO:-0}" == "1" ] ; + then + echo "Starting Pulse" + HOME=/var/run/pulse pulseaudio --start + fi + + if [[ $DEBUG == true ]]; then + echo 'Starting audio service in debug mode' + HOME=/var/run/pulse no_proxy=127.0.0.1 ffmpeg -v verbose -f pulse -fragment_size ${PULSEAUDIO_FRAGMENT_SIZE:-2000} -ar 44100 -i default -f mpegts -correct_ts_overflow 0 -codec:a mp2 -b:a 128k -ac 1 -muxdelay 0.001 http://127.0.0.1:8081/kasmaudio & + KASM_PROCS['kasm_audio_out']=$! + else + echo 'Starting audio service' + HOME=/var/run/pulse no_proxy=127.0.0.1 ffmpeg -f pulse -fragment_size ${PULSEAUDIO_FRAGMENT_SIZE:-2000} -ar 44100 -i default -f mpegts -correct_ts_overflow 0 -codec:a mp2 -b:a 128k -ac 1 -muxdelay 0.001 http://127.0.0.1:8081/kasmaudio > /dev/null 2>&1 & + KASM_PROCS['kasm_audio_out']=$! + echo -e "\n------------------ Started Audio Out ----------------------------" + echo "Kasm Audio Out PID: ${KASM_PROCS['kasm_audio_out']}"; + fi + fi +} + +function start_audio_in (){ + if [[ ${KASM_SVC_AUDIO_INPUT:-1} == 1 ]]; then + log 'Starting audio input server' + $STARTUPDIR/audio_input/kasm_audio_input_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + + KASM_PROCS['kasm_audio_in']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Audio Out Websocket ----------------------------" + echo "Kasm Audio In PID: ${KASM_PROCS['kasm_audio_in']}"; + fi + fi +} + +function start_upload (){ + if [[ ${KASM_SVC_UPLOADS:-1} == 1 ]]; then + log 'Starting upload server' + $STARTUPDIR/upload_server/kasm_upload_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --port 4902 --upload_dir ${HOME}/Uploads & + + KASM_PROCS['upload_server']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Upload Server ----------------------------" + echo "Upload Server PID: ${KASM_PROCS['upload_server']}"; + fi + fi +} + +function start_gamepad (){ + if [[ ${KASM_SVC_GAMEPAD:-1} == 1 ]]; then + log 'Starting gamepad server' + $STARTUPDIR/gamepad/kasm_gamepad_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + + KASM_PROCS['kasm_gamepad']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Gamepad Websocket ----------------------------" + echo "Kasm Gamepad PID: ${KASM_PROCS['kasm_gamepad']}"; + fi + fi +} + +function start_webcam (){ + if [[ ${KASM_SVC_WEBCAM:-1} == 1 ]] && [[ -e /dev/video0 ]]; then + log 'Starting webcam server' + if [[ $DEBUG == true ]]; then + $STARTUPDIR/webcam/kasm_webcam_server --debug --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + else + $STARTUPDIR/webcam/kasm_webcam_server --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + fi + + KASM_PROCS['kasm_webcam']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Webcam Websocket ----------------------------" + echo "Kasm Webcam PID: ${KASM_PROCS['kasm_webcam']}"; + fi + fi +} + +function start_printer (){ + if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then + log 'Starting printer service' + if [[ $DEBUG == true ]]; then + $STARTUPDIR/printer/kasm_printer_service --debug --directory $HOME/PDF --relay /tmp/printer & + else + $STARTUPDIR/printer/kasm_printer_service --directory $HOME/PDF --relay /tmp/printer & + fi + + KASM_PROCS['kasm_printer']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Printer Service ----------------------------" + echo "Kasm Printer PID: ${KASM_PROCS['kasm_printer']}"; + fi + fi +} + +function wait_on_printer (){ + # Wait for cups and the printer device to be created + if [[ ${KASM_SVC_PRINTER:-1} == 1 && ${KASM_PRINTER_WAIT:-0} == 1 ]]; then + log 'Waiting on printer service to be ready' + /usr/bin/printer_ready + log 'Printer is ready' + fi +} + + +function custom_startup (){ + custom_startup_script=/dockerstartup/custom_startup.sh + if [ -f "$custom_startup_script" ]; then + if [ ! -x "$custom_startup_script" ]; then + echo "${custom_startup_script}: not executable, exiting" + exit 1 + fi + + "$custom_startup_script" & + KASM_PROCS['custom_startup']=$! + log "Executed custom startup script." + fi +} + +function ensure_recorder_running () { + if [[ ${KASM_SVC_RECORDER:-0} != 1 ]]; then + return + fi + + local kasm_recorder_process="/dockerstartup/recorder/kasm_recorder_service" + local kasm_recorder_ack="/tmp/kasm_recorder.ack" + + if [[ -f "$kasm_recorder_ack" ]]; then + local ack_user=$(stat -c '%U' $kasm_recorder_ack) + if [[ "$ack_user" == "kasm-recorder" ]]; then + SECONDS=0 #SECONDS is a built in bash variable that is incremented approximately every second + kasm_recorder_pid="" + fi + fi + + local recorder_pid=$(pgrep -f "^$kasm_recorder_process") || true + + if [[ -z $kasm_recorder_pid ]]; then + # This leverages the outside while loop that calls this function to provider checking ever x seconds. + if [[ -z $recorder_pid ]] && (( $SECONDS > 15 )); then + log "$kasm_recorder_process: not started, exiting" "ERROR" + exit 0 + fi + + kasm_recorder_pid=$recorder_pid + else + if [[ -z $recorder_pid ]]; then + log "$kasm_recorder_process: not running, exiting" "ERROR" + exit 0 + fi + + recorder_user=$(ps -p $recorder_pid -o user=) + if [[ $recorder_user != "kasm-recorder" ]]; then + log "$kasm_recorder_process: not running as kasm-recorder, exiting" "ERROR" + exit 0 + fi + fi +} + +function ensure_recorder_terminates_gracefully () { + local kasm_recorder_process="/dockerstartup/recorder/kasm_recorder_service" + + while true + do + recorder_pid=$(pgrep -f "$kasm_recorder_process") || true + if [[ -z $recorder_pid ]]; then + break + fi + + sleep 1 + done +} + +function wait_for_egress_signal() { + egress_file="/dockerstartup/.egress_status" + + while [ ! -f "$egress_file" ]; do + sleep 1 + done + + egress_status=$(cat $egress_file) + + if [ "$egress_status" == "ready" ]; then + return + fi + + if [ "$egress_status" == "error" ]; then + echo "Failed to establish egress gateway. Exiting..." + exit 0 + fi +} + +function wait_for_network_devices() { + while true; do + interfaces=$(ip -o link show | awk '!/lo:/ && !/tun/' | awk -F: '/^[0-9]+: / {print $2}' | awk '{print $1}' | sed 's/@.*//') + if [ -z "$interfaces" ]; then + sleep 1 + continue + fi + + for interface in $interfaces; do + # ignore eth* interfaces if egress gateway is enabled + if [[ $interface == eth* && -z $KASM_SVC_EGRESS ]]; then + return + fi + + if [[ $interface == k-p-* ]]; then + wait_for_egress_signal + + if [ -z "$KASM_PROFILE_LDR" ]; then + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + fi + + return + fi + done + + sleep 1 + done +} + +############ END FUNCTION DECLARATIONS ########### + +if [[ $1 =~ -h|--help ]]; then + help + exit 0 +fi + +if [[ ${KASM_DEBUG:-0} == 1 ]]; then + echo -e "\n\n------------------ DEBUG KASM STARTUP -----------------" + export DEBUG=true + set -x +fi + +# wait for any network interface other than loopback to be up +# this is necessary because containers with egress gateways +# have a custom network interface setup that might not be ready +wait_for_network_devices + +# Syncronize user-space loaded persistent profiles +pull_profile + +# should also source $STARTUPDIR/generate_container_user +if [ -f $HOME/.bashrc ]; then + source $HOME/.bashrc +fi + +## resolve_vnc_connection +VNC_IP=$(hostname -i) +if [[ $DEBUG == true ]]; then + echo "IP Address used for external bind: $VNC_IP" +fi + +# Create cert for KasmVNC +mkdir -p ${HOME}/.vnc +openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ${HOME}/.vnc/self.pem -out ${HOME}/.vnc/self.pem -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" + +# first entry is control, second is view (if only one is valid for both) +mkdir -p "$HOME/.vnc" +PASSWD_PATH="$HOME/.kasmpasswd" +if [[ -f $PASSWD_PATH ]]; then + echo -e "\n--------- purging existing VNC password settings ---------" + rm -f $PASSWD_PATH +fi + +echo -e "${VNC_PW}\n${VNC_PW}\n" | kasmvncpasswd -u ${KASM_USER} -wo +echo -e "${VNC_PW}\n${VNC_PW}\n" | kasmvncpasswd -u kasm_viewer -r +chmod 600 $PASSWD_PATH + + +# start processes +wait_on_printer +start_kasmvnc +start_window_manager +start_audio_out_websocket +start_audio_out +start_audio_in +start_upload +# start_gamepad +profile_size_check & +# start_webcam +start_printer + +STARTUP_COMPLETE=1 + + +## log connect options +echo -e "\n\n------------------ KasmVNC environment started ------------------" + +# tail vncserver logs +tail -f $HOME/.vnc/*$DISPLAY.log & + +KASMIP=$(hostname -i) +log "Kasm User ${KASM_USER}(${KASM_USER_ID}) started container id ${HOSTNAME} with local IP address ${KASMIP}" "INFO" + +# start custom startup script +custom_startup + +# Monitor Kasm Services +sleep 3 +while : +do + for process in "${!KASM_PROCS[@]}"; do + if ! kill -0 "${KASM_PROCS[$process]}" ; then + + # If DLP Policy is set to fail secure, default is to be resilient + if [[ ${DLP_PROCESS_FAIL_SECURE:-0} == 1 ]]; then + log "DLP Policy violation, exiting container" "ERROR" + exit 1 + fi + + case $process in + kasmvnc) + if [ "$KASMVNC_AUTO_RECOVER" = true ] ; then + log "KasmVNC crashed, restarting" "WARNING" + start_kasmvnc + else + log "KasmVNC crashed, exiting container" "ERROR" + exit 1 + fi + ;; + window_manager) + log "Window manager crashed, restarting" "WARNING" + + if [[ ${KASM_SVC_RECORDER:-0} == 1 ]]; then + log "Waiting for recorder service to upload all pending recordings" + ensure_recorder_terminates_gracefully + log "Recorder service has terminated, exiting container" "ERROR" + exit 1 + fi + + start_window_manager + ;; + kasm_audio_out_websocket) + echo "Restarting Audio Out Websocket Service" + start_audio_out_websocket + ;; + kasm_audio_out) + echo "Restarting Audio Out Service" + start_audio_out + ;; + kasm_audio_in) + echo "Audio In Service Failed" + # TODO: Needs work in python project to support auto restart + # start_audio_in + ;; + upload_server) + echo "Restarting Upload Service" + # TODO: This will only work if both processes are killed, requires more work + start_upload + ;; + kasm_gamepad) + echo "Gamepad Service Failed" + # TODO: Needs work in python project to support auto restart + # start_gamepad + ;; + kasm_webcam) + echo "Webcam Service Failed" + # TODO: Needs work in python project to support auto restart + start_webcam + ;; + kasm_printer) + echo "Printer Service Failed" + # TODO: Needs work in python project to support auto restart + start_printer + ;; + custom_script) + echo "The custom startup script exited." + # custom startup scripts track the target process on their own, they should not exit + custom_startup + ;; + *) + echo "Unknown Service: $process" + ;; + esac + fi + done + + ensure_recorder_running + + sleep 3 +done + + +log "Exiting Kasm container" diff --git a/src/ubuntu/install/trae_cn/custom_startup.sh b/src/ubuntu/install/trae_cn/custom_startup.sh new file mode 100644 index 00000000..de0e4086 --- /dev/null +++ b/src/ubuntu/install/trae_cn/custom_startup.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +set -ex +START_COMMAND="trae-cn" + +TRAE_WORKDIR=${TRAE_WORKDIR:-"/trae-cn"} +mkdir -p ${TRAE_WORKDIR}/trae +[[ -e ~/.trae ]] || ln -s ${TRAE_WORKDIR}/trae ~/.trae +mkdir -p ${TRAE_WORKDIR}/trae-cn +[[ -e ~/.trae-cn ]] || ln -s ${TRAE_WORKDIR}/trae-cn ~/.trae-cn +mkdir -p ${TRAE_WORKDIR}/trae-cn-server +[[ -e ~/.trae-cn-server ]] || ln -s ${TRAE_WORKDIR}/trae-cn-server ~/.trae-cn-server +mkdir -p ${TRAE_WORKDIR}/trae-aicc +[[ -e ~/.trae-aicc ]] || ln -s ${TRAE_WORKDIR}/trae-aicc ~/.trae-aicc +mkdir -p ${TRAE_WORKDIR}/config +[[ -e ~/.config ]] || ln -s ${TRAE_WORKDIR}/config ~/.config +mkdir -p ${TRAE_WORKDIR}/trae +[[ -e ~/.trae ]] || ln -s ${TRAE_WORKDIR}/trae ~/.trae +mkdir -p ${TRAE_WORKDIR}/user-data +USER_DATA_DIR=${TRAE_WORKDIR}/user-data +mkdir -p ${TRAE_WORKDIR}/extensions +EXTENSIONS_DIR=${TRAE_WORKDIR}/extensions +mkdir -p ${TRAE_WORKDIR}/workspace +WORKSPACE_DIR=${TRAE_WORKDIR}/workspace + +if [[ $(id -u) == 0 ]]; then + START_COMMAND="$START_COMMAND --no-sandbox" +fi + +START_COMMAND="$START_COMMAND --user-data-dir=${USER_DATA_DIR} --extensions-dir=${EXTENSIONS_DIR} --add ${WORKSPACE_DIR}" + +PGREP_PATTERN="trae-cn" +export MAXIMIZE="true" +export MAXIMIZE_NAME="Trae CN" +MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh +DEFAULT_ARGS="" +ARGS=${APP_ARGS:-$DEFAULT_ARGS} + +options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit +eval set -- "$options" + +while [[ $1 != -- ]]; do + case $1 in + -g|--go) GO='true'; shift 1;; + -a|--assign) ASSIGN='true'; shift 1;; + -u|--url) OPT_URL=$2; shift 2;; + *) echo "bad option: $1" >&2; exit 1;; + esac +done +shift + +# Process non-option arguments. +for arg; do + echo "arg! $arg" +done + +FORCE=$2 + +kasm_exec() { + if [ -n "$OPT_URL" ] ; then + URL=$OPT_URL + elif [ -n "$1" ] ; then + URL=$1 + fi + + if [ -n "$URL" ] ; then + /usr/bin/filter_ready + /usr/bin/desktop_ready + bash ${MAXIMIZE_SCRIPT} & + $START_COMMAND $ARGS "$URL" + else + echo "No URL specified for exec command. Doing nothing." + fi +} + +kasm_startup() { + if [ -n "$KASM_URL" ] ; then + URL=$KASM_URL + elif [ -z "$URL" ] ; then + URL=$LAUNCH_URL + fi + + if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then + + echo "Entering process startup loop" + set +x + while true + do + if ! pgrep -f "$PGREP_PATTERN" > /dev/null + then + /usr/bin/filter_ready + /usr/bin/desktop_ready + set +e + bash ${MAXIMIZE_SCRIPT} & + $START_COMMAND $ARGS $URL + set -e + fi + sleep 1 + done + set -x + + fi + +} + +if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then + kasm_exec +else + kasm_startup +fi diff --git a/src/ubuntu/install/trae_cn/install_trae_cn.sh b/src/ubuntu/install/trae_cn/install_trae_cn.sh new file mode 100644 index 00000000..ba544f24 --- /dev/null +++ b/src/ubuntu/install/trae_cn/install_trae_cn.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +set -ex + +TRAE_DEB_URL="https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/2.3.27641/linux/Trae_CN-linux-x64.deb" + +# Install Trae CN +apt-get update +apt-get install -y ca-certificates wget +wget -q "${TRAE_DEB_URL}" -O trae_cn.deb +apt-get install -y ./trae_cn.deb + +# Provide a stable command name for startup scripts, regardless of the package's +# exact desktop entry or executable path. +cat >/usr/local/bin/trae-cn <<'EOF' +#!/usr/bin/env bash +set -e + +for candidate in \ + "/usr/bin/trae-cn" \ + "/usr/bin/trae" \ + "/usr/share/trae-cn/trae-cn" \ + "/usr/share/trae-cn/trae" \ + "/usr/share/trae/trae" \ + "/opt/Trae CN/trae-cn" \ + "/opt/Trae CN/trae" \ + "/opt/Trae/trae" +do + if [ -x "$candidate" ]; then + exec "$candidate" --no-sandbox "$@" + fi +done + +FOUND=$(find /usr/bin /usr/share /opt -maxdepth 4 -type f -perm -111 \( -iname 'trae' -o -iname 'trae-cn' \) 2>/dev/null | head -n 1) +if [ -n "$FOUND" ]; then + exec "$FOUND" --no-sandbox "$@" +fi + +echo "Unable to find the Trae CN executable." >&2 +exit 1 +EOF +chmod +x /usr/local/bin/trae-cn + +# Desktop icon +mkdir -p "$HOME/Desktop" +DESKTOP_FILE=$(find /usr/share/applications -maxdepth 1 -type f -iname '*trae*.desktop' | head -n 1) +if [ -n "$DESKTOP_FILE" ]; then + sed -i 's#^Exec=.*#Exec=/usr/local/bin/trae-cn %U#' "$DESKTOP_FILE" + cp "$DESKTOP_FILE" "$HOME/Desktop/trae-cn.desktop" +else + cat >"$HOME/Desktop/trae-cn.desktop" <<'EOF' +[Desktop Entry] +Name=Trae CN +Comment=AI coding agent +Exec=/usr/local/bin/trae-cn %U +Terminal=false +Type=Application +Icon=trae-cn +StartupNotify=true +Categories=Development;IDE; +EOF +fi +chmod +x "$HOME/Desktop/trae-cn.desktop" +chown 1000:1000 "$HOME/Desktop/trae-cn.desktop" +rm trae_cn.deb + +# Conveniences for python development +apt-get update +apt-get install -y python3-setuptools \ + python3-venv \ + python3-virtualenv + +# Cleanup for app layer +chown -R 1000:0 $HOME +find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \; +if [ -z ${SKIP_CLEAN+x} ]; then + apt-get autoclean + rm -rf \ + /var/lib/apt/lists/* \ + /var/tmp/* \ + /tmp/* +fi diff --git a/src/ubuntu/install/trae_cn/ui-BKiQa3b8.js b/src/ubuntu/install/trae_cn/ui-BKiQa3b8.js new file mode 100644 index 00000000..811b18b1 --- /dev/null +++ b/src/ubuntu/install/trae_cn/ui-BKiQa3b8.js @@ -0,0 +1,23 @@ +var rE=Object.defineProperty;var nE=(n,e,t)=>e in n?rE(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ni=(n,e,t)=>nE(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function t(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=t(i);fetch(i.href,a)}})();function wx(n,e){try{const t=document.getElementById("noVNC_fallback_errormsg");if(n.message==="ResizeObserver loop completed with undelivered notifications."||t.hasChildNodes())return!1;let r=document.createElement("div");if(r.classList.add("noVNC_message"),r.appendChild(document.createTextNode(n.message)),t.appendChild(r),n.filename){r=document.createElement("div"),r.className="noVNC_location";let i=n.filename;n.lineno!==void 0&&(i+=":"+n.lineno,n.colno!==void 0&&(i+=":"+n.colno)),r.appendChild(document.createTextNode(i)),t.appendChild(r)}e&&e.stack&&(r=document.createElement("div"),r.className="noVNC_stack",r.appendChild(document.createTextNode(e.stack)),t.appendChild(r)),document.getElementById("noVNC_fallback_error").classList.add("noVNC_open")}catch{document.write("noVNC encountered an error.")}try{document.activeElement&&document.activeElement.blur(),document.querySelectorAll("a[href], button, input, textarea, select, details, [tabindex]").forEach(r=>{r.setAttribute("tabindex","-1")})}catch{}return!1}window.addEventListener("error",n=>wx(n,n.error));window.addEventListener("unhandledrejection",n=>wx(n.reason,n.reason));function Rc(n){const e=document.getElementById("noVNC_notification_overlay");let t=["show"];n.length>1&&t.push("wide"),e.classList.add(...t),e.innerHTML=n,setTimeout(()=>{e.classList.remove(...t)},3500)}const wt={init:iE,document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function Zr(){}function iE(n){const e=n;wt.document=e.document,wt.DocumentFragment=e.DocumentFragment||Zr,wt.SVGElement=e.SVGElement||Zr,wt.SVGSVGElement=e.SVGSVGElement||Zr,wt.SVGElementInstance=e.SVGElementInstance||Zr,wt.Element=e.Element||Zr,wt.HTMLElement=e.HTMLElement||wt.Element,wt.Event=e.Event,wt.Touch=e.Touch||Zr,wt.PointerEvent=e.PointerEvent||e.MSPointerEvent}var Cx=n=>!!(n&&n.Window)&&n instanceof n.Window;let Rx,Qr;function Ix(n){Rx=n;const e=n.document.createTextNode("");e.ownerDocument!==n.document&&typeof n.wrap=="function"&&n.wrap(e)===e&&(n=n.wrap(n)),Qr=n}typeof window<"u"&&window&&Ix(window);function sn(n){return Cx(n)?n:(n.ownerDocument||n).defaultView||Qr.window}const aE=n=>n===Qr||Cx(n),sE=n=>ui(n)&&n.nodeType===11,ui=n=>!!n&&typeof n=="object",Ax=n=>typeof n=="function",oE=n=>typeof n=="number",lE=n=>typeof n=="boolean",cE=n=>typeof n=="string",uE=n=>{if(!n||typeof n!="object")return!1;const e=sn(n)||Qr;return/object|function/.test(typeof Element)?n instanceof Element||n instanceof e.Element:n.nodeType===1&&typeof n.nodeName=="string"},dE=n=>ui(n)&&!!n.constructor&&/function Object\b/.test(n.constructor.toString()),fE=n=>ui(n)&&typeof n.length<"u"&&Ax(n.splice);var qe={window:aE,docFrag:sE,object:ui,func:Ax,number:oE,bool:lE,string:cE,element:uE,plainObject:dE,array:fE};const At={init:hE,supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null};function hE(n){const e=wt.Element,t=n.navigator||{};At.supportsTouch="ontouchstart"in n||qe.func(n.DocumentTouch)&&wt.document instanceof n.DocumentTouch,At.supportsPointerEvent=t.pointerEnabled!==!1&&!!wt.PointerEvent,At.isIOS=/iP(hone|od|ad)/.test(t.platform),At.isIOS7=/iP(hone|od|ad)/.test(t.platform)&&/OS 7[^\d]/.test(t.appVersion),At.isIe9=/MSIE 9/.test(t.userAgent),At.isOperaMobile=t.appName==="Opera"&&At.supportsTouch&&/Presto/.test(t.userAgent),At.prefixedMatchesSelector="matches"in e.prototype?"matches":"webkitMatchesSelector"in e.prototype?"webkitMatchesSelector":"mozMatchesSelector"in e.prototype?"mozMatchesSelector":"oMatchesSelector"in e.prototype?"oMatchesSelector":"msMatchesSelector",At.pEventTypes=At.supportsPointerEvent?wt.PointerEvent===n.MSPointerEvent?{up:"MSPointerUp",down:"MSPointerDown",over:"mouseover",out:"mouseout",move:"MSPointerMove",cancel:"MSPointerCancel"}:{up:"pointerup",down:"pointerdown",over:"pointerover",out:"pointerout",move:"pointermove",cancel:"pointercancel"}:null,At.wheelEvent=wt.document&&"onmousewheel"in wt.document?"mousewheel":"wheel"}function Xr(n,e){if(n.contains)return n.contains(e);for(;e;){if(e===n)return!0;e=e.parentNode}return!1}function Tx(n,e){for(;qe.element(n);){if(Hr(n,e))return n;n=on(n)}return null}function on(n){let e=n.parentNode;if(qe.docFrag(e)){for(;(e=e.host)&&qe.docFrag(e););return e}return e}function Hr(n,e){return Qr!==Rx&&(e=e.replace(/\/deep\//g," ")),n[At.prefixedMatchesSelector](e)}function Ic(n,e,t){for(;qe.element(n);){if(Hr(n,e))return!0;if(n=on(n),n===t)return Hr(n,e)}return!1}function Ac(n){return n.correspondingUseElement||n}function _E(n){return n=n||Qr,{x:n.scrollX||n.document.documentElement.scrollLeft,y:n.scrollY||n.document.documentElement.scrollTop}}function kx(n){const e=n instanceof wt.SVGElement?n.getBoundingClientRect():n.getClientRects()[0];return e&&{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}}function ql(n){const e=kx(n);if(!At.isIOS7&&e){const t=_E(sn(n));e.left+=t.x,e.right+=t.x,e.top+=t.y,e.bottom+=t.y}return e}function Px(n){const e=[];for(;n;)e.push(n),n=on(n);return e}function Tc(n){return qe.string(n)?(wt.document.querySelector(n),!0):!1}function qt(n,e){for(const r in e)n[r]=e[r];return n}function pE(n,e,t){return n==="parent"?on(t):n==="self"?e.getRect(t):Tx(t,n)}function vE(n,e,t,r){let i=n;return qe.string(i)?i=pE(i,e,t):qe.func(i)&&(i=i(...r)),qe.element(i)&&(i=ql(i)),i}function gE(n){return n&&{x:"x"in n?n.x:n.left,y:"y"in n?n.y:n.top}}function mE(n,e,t){n.left&&(e.left+=t.x),n.right&&(e.right+=t.x),n.top&&(e.top+=t.y),n.bottom&&(e.bottom+=t.y),e.width=e.right-e.left,e.height=e.bottom-e.top}function Fx(n,e,t){const r=t&&n.options[t],a=r&&r.origin||n.options.origin,s=vE(a,n,e,[n&&e]);return gE(s)||{x:0,y:0}}class Vl{constructor(e){this.immediatePropagationStopped=!1,this.propagationStopped=!1,this._interaction=e}preventDefault(){}stopPropagation(){this.propagationStopped=!0}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}}Object.defineProperty(Vl.prototype,"interaction",{get(){return this._interaction._proxy},set(){}});var Kl=(n,e)=>Math.sqrt(n*n+e*e);const yE=["webkit","moz"];function ai(n,e){n.__set||(n.__set={});for(const t in e)yE.some(r=>t.indexOf(r)===0)||typeof n[t]!="function"&&t!=="__set"&&Object.defineProperty(n,t,{get(){return t in n.__set?n.__set[t]:n.__set[t]=e[t]},set(r){n.__set[t]=r},configurable:!0});return n}function qi(n,e){n.page=n.page||{},n.page.x=e.page.x,n.page.y=e.page.y,n.client=n.client||{},n.client.x=e.client.x,n.client.y=e.client.y,n.timeStamp=e.timeStamp}function bE(n,e,t){n.page.x=t.page.x-e.page.x,n.page.y=t.page.y-e.page.y,n.client.x=t.client.x-e.client.x,n.client.y=t.client.y-e.client.y,n.timeStamp=t.timeStamp-e.timeStamp}function xE(n,e){const t=Math.max(e.timeStamp/1e3,.001);n.page.x=e.page.x/t,n.page.y=e.page.y/t,n.client.x=e.client.x/t,n.client.y=e.client.y/t,n.timeStamp=t}function EE(n){n.page.x=0,n.page.y=0,n.client.x=0,n.client.y=0}function Mx(n){return n instanceof wt.Event||n instanceof wt.Touch}function si(n,e,t){return t=t||{},n=n||"page",t.x=e[n+"X"],t.y=e[n+"Y"],t}function SE(n,e){return e=e||{x:0,y:0},At.isOperaMobile&&Mx(n)?(si("screen",n,e),e.x+=window.scrollX,e.y+=window.scrollY):si("page",n,e),e}function wE(n,e){return e=e||{},At.isOperaMobile&&Mx(n)?si("screen",n,e):si("client",n,e),e}function An(n){return qe.number(n.pointerId)?n.pointerId:n.identifier}function CE(n,e,t){const r=e.length>1?Ox(e):e[0];SE(r,n.page),wE(r,n.client),n.timeStamp=t}function Ul(n){const e=[];return qe.array(n)?(e[0]=n[0],e[1]=n[1]):n.type==="touchend"?n.touches.length===1?(e[0]=n.touches[0],e[1]=n.changedTouches[0]):n.touches.length===0&&(e[0]=n.changedTouches[0],e[1]=n.changedTouches[1]):(e[0]=n.touches[0],e[1]=n.touches[1]),e}function Ox(n){const e={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0};for(const t of n)for(const r in e)e[r]+=t[r];for(const t in e)e[t]/=n.length;return e}function RE(n){if(!n.length)return null;const e=Ul(n),t=Math.min(e[0].pageX,e[1].pageX),r=Math.min(e[0].pageY,e[1].pageY),i=Math.max(e[0].pageX,e[1].pageX),a=Math.max(e[0].pageY,e[1].pageY);return{x:t,y:r,left:t,top:r,right:i,bottom:a,width:i-t,height:a-r}}function IE(n,e){const t=e+"X",r=e+"Y",i=Ul(n),a=i[0][t]-i[1][t],s=i[0][r]-i[1][r];return Kl(a,s)}function AE(n,e){const t=e+"X",r=e+"Y",i=Ul(n),a=i[1][t]-i[0][t],s=i[1][r]-i[0][r];return 180*Math.atan2(s,a)/Math.PI}function Lx(n){return qe.string(n.pointerType)?n.pointerType:qe.number(n.pointerType)?[void 0,void 0,"touch","pen","mouse"][n.pointerType]:/touch/.test(n.type||"")||n instanceof wt.Touch?"touch":"mouse"}function Dx(n){const e=qe.func(n.composedPath)?n.composedPath():n.path;return[Ac(e?e[0]:n.target),Ac(n.currentTarget)]}function _n(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}}class Nx extends Vl{constructor(e,t,r,i,a,s){if(super(a),ai(this,r),r!==t&&ai(this,t),this.timeStamp=s,this.originalEvent=r,this.type=e,this.pointerId=An(t),this.pointerType=Lx(t),this.target=i,this.currentTarget=null,e==="tap"){const l=a.getPointerIndex(t);this.dt=this.timeStamp-a.pointers[l].downTime;const c=this.timeStamp-a.tapTime;this.double=!!a.prevTap&&a.prevTap.type!=="doubletap"&&a.prevTap.target===this.target&&c<500}else e==="doubletap"&&(this.dt=t.timeStamp-a.tapTime,this.double=!0)}_subtractOrigin(e){let{x:t,y:r}=e;return this.pageX-=t,this.pageY-=r,this.clientX-=t,this.clientY-=r,this}_addOrigin(e){let{x:t,y:r}=e;return this.pageX+=t,this.pageY+=r,this.clientX+=t,this.clientY+=r,this}preventDefault(){this.originalEvent.preventDefault()}}const TE={holdDuration:600,ignoreFrom:null,allowFrom:null,origin:{x:0,y:0}},Rn={id:"pointer-events/base",before:["inertia","modifiers","auto-start","actions"],install:LE,listeners:{"interactions:new":kE,"interactions:update-pointer":PE,"interactions:move":FE,"interactions:down":(n,e)=>{ME(n,e),Ar(n,e)},"interactions:up":(n,e)=>{kl(n),Ar(n,e),OE(n,e)},"interactions:cancel":(n,e)=>{kl(n),Ar(n,e)}},PointerEvent:Nx,fire:Ar,collectEventTargets:qx,defaults:TE,types:{down:!0,move:!0,up:!0,cancel:!0,tap:!0,doubletap:!0,hold:!0}};function Ar(n,e){const{interaction:t,pointer:r,event:i,eventTarget:a,type:s,targets:l=qx(n,e)}=n,c=new Nx(s,r,i,a,t,e.now());e.fire("pointerEvents:new",{pointerEvent:c});const u={interaction:t,pointer:r,event:i,eventTarget:a,targets:l,type:s,pointerEvent:c};for(let f=0;f{var p,_;return h.eventable.options.holdDuration===((p=t.pointers[l])==null||(_=p.hold)==null?void 0:_.duration)})),f.targets}function kE(n){let{interaction:e}=n;e.prevTap=null,e.tapTime=0}function PE(n){let{down:e,pointerInfo:t}=n;!e&&t.hold||(t.hold={duration:1/0,timeout:null})}function kl(n){let{interaction:e,pointerIndex:t}=n;const r=e.pointers[t].hold;r&&r.timeout&&(clearTimeout(r.timeout),r.timeout=null)}function FE(n,e){const{interaction:t,pointer:r,event:i,eventTarget:a,duplicate:s}=n;!s&&(!t.pointerIsDown||t.pointerWasMoved)&&(t.pointerIsDown&&kl(n),Ar({interaction:t,pointer:r,event:i,eventTarget:a,type:"move"},e))}function ME(n,e){let{interaction:t,pointer:r,event:i,eventTarget:a,pointerIndex:s}=n;const l=t.pointers[s].hold,c=Px(a),u={interaction:t,pointer:r,event:i,eventTarget:a,type:"hold",targets:[],path:c,node:null};for(const h of c)u.node=h,e.fire("pointerEvents:collect-targets",u);if(!u.targets.length)return;let f=1/0;for(const h of u.targets){const p=h.eventable.options.holdDuration;p{Ar({interaction:t,eventTarget:a,pointer:r,event:i,type:"hold"},e)},f)}function OE(n,e){let{interaction:t,pointer:r,event:i,eventTarget:a}=n;t.pointerWasMoved||Ar({interaction:t,eventTarget:a,pointer:r,event:i,type:"tap"},e)}function LE(n){n.pointerEvents=Rn,n.defaults.actions.pointerEvents=Rn.defaults,qt(n.actions.phaselessTypes,Rn.types)}var DE=Object.freeze({__proto__:null,default:Rn});function NE(n){n.usePlugin(Rn);const{pointerEvents:e}=n;e.defaults.holdRepeatInterval=0,e.types.holdrepeat=n.actions.phaselessTypes.holdrepeat=!0}function qE(n){let{pointerEvent:e}=n;e.type==="hold"&&(e.count=(e.count||0)+1)}function VE(n,e){let{interaction:t,pointerEvent:r,eventTarget:i,targets:a}=n;if(r.type!=="hold"||!a.length)return;const s=a[0].eventable.options.holdRepeatInterval;s<=0||(t.holdIntervalHandle=setTimeout(()=>{e.pointerEvents.fire({interaction:t,eventTarget:i,type:"hold",pointer:r,event:r},e)},s))}function KE(n){let{interaction:e}=n;e.holdIntervalHandle&&(clearInterval(e.holdIntervalHandle),e.holdIntervalHandle=null)}const UE={id:"pointer-events/holdRepeat",install:NE,listeners:["move","up","cancel","endall"].reduce((n,e)=>(n[`pointerEvents:${e}`]=KE,n),{"pointerEvents:new":qE,"pointerEvents:fired":VE})};function BE(n){const{Interactable:e}=n;e.prototype.pointerEvents=function(r){return qt(this.events.options,r),this};const t=e.prototype._backCompatOption;e.prototype._backCompatOption=function(r,i){const a=t.call(this,r,i);return a===this&&(this.events.options[r]=i),a}}const XE={id:"pointer-events/interactableTargets",install:BE,listeners:{"pointerEvents:collect-targets":(n,e)=>{let{targets:t,node:r,type:i,eventTarget:a}=n;e.interactables.forEachMatch(r,s=>{const l=s.events,c=l.options;l.types[i]&&l.types[i].length&&s.testIgnoreAllow(c,r,a)&&t.push({node:r,eventable:l,props:{interactable:s}})})},"interactable:new":n=>{let{interactable:e}=n;e.events.getRect=function(t){return e.getRect(t)}},"interactable:set":(n,e)=>{let{interactable:t,options:r}=n;qt(t.events.options,e.pointerEvents.defaults),qt(t.events.options,r.pointerEvents||{})}}},HE={id:"pointer-events",install(n){n.usePlugin(DE),n.usePlugin(UE),n.usePlugin(XE)}},Vx=(n,e)=>{for(const t of e)n.push(t);return n},Kx=n=>Vx([],n),di=(n,e)=>{for(let t=0;tn[di(n,e)];function oi(n){const e={};for(const t in n){const r=n[t];qe.plainObject(r)?e[t]=oi(r):qe.array(r)?e[t]=Kx(r):e[t]=r}return e}let kc=0,pr,Kr;function QE(n){if(pr=n.requestAnimationFrame,Kr=n.cancelAnimationFrame,!pr){const e=["ms","moz","webkit","o"];for(const t of e)pr=n[`${t}RequestAnimationFrame`],Kr=n[`${t}CancelAnimationFrame`]||n[`${t}CancelRequestAnimationFrame`]}pr=pr&&pr.bind(n),Kr=Kr&&Kr.bind(n),pr||(pr=e=>{const t=Date.now(),r=Math.max(0,16-(t-kc)),i=n.setTimeout(()=>{e(t+r)},r);return kc=t+r,i},Kr=e=>clearTimeout(e))}var jE={request:n=>pr(n),cancel:n=>Kr(n),init:QE};function nn(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:i=>!0,r=arguments.length>3?arguments[3]:void 0;if(r=r||{},qe.string(n)&&n.search(" ")!==-1&&(n=Pc(n)),qe.array(n))return n.forEach(i=>nn(i,e,t,r)),r;if(qe.object(n)&&(e=n,n=""),qe.func(e)&&t(n))r[n]=r[n]||[],r[n].push(e);else if(qe.array(e))for(const i of e)nn(n,i,t,r);else if(qe.object(e))for(const i in e){const a=Pc(i).map(s=>`${n}${s}`);nn(a,e[i],t,r)}return r}function Pc(n){return n.trim().split(/ +/)}function Fc(n,e){for(const t of e){if(n.immediatePropagationStopped)break;t(n)}}class Ux{constructor(e){this.options=void 0,this.types={},this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.global=void 0,this.options=qt({},e||{})}fire(e){let t;const r=this.global;(t=this.types[e.type])&&Fc(e,t),!e.propagationStopped&&r&&(t=r[e.type])&&Fc(e,t)}on(e,t){const r=nn(e,t);for(e in r)this.types[e]=Vx(this.types[e]||[],r[e])}off(e,t){const r=nn(e,t);for(e in r){const i=this.types[e];if(!(!i||!i.length))for(const a of r[e]){const s=i.indexOf(a);s!==-1&&i.splice(s,1)}}}getRect(e){return null}}function WE(n){var e;const t=[],r={},i=[],a={add:s,remove:l,addDelegate:c,removeDelegate:u,delegateListener:f,delegateUseCapture:h,delegatedEvents:r,documents:i,targets:t,supportsOptions:!1,supportsPassive:!1};(e=n.document)==null||e.createElement("div").addEventListener("test",null,{get capture(){return a.supportsOptions=!0},get passive(){return a.supportsPassive=!0}}),n.events=a;function s(p,_,g,m){if(!p.addEventListener)return;const v=pn(m);let b=Yn(t,S=>S.eventTarget===p);b||(b={eventTarget:p,events:{}},t.push(b)),b.events[_]||(b.events[_]=[]),Yn(b.events[_],S=>S.func===g&&Hn(S.options,v))||(p.addEventListener(_,g,a.supportsOptions?v:v.capture),b.events[_].push({func:g,options:v}))}function l(p,_,g,m){if(!p.addEventListener||!p.removeEventListener)return;const v=di(t,E=>E.eventTarget===p),b=t[v];if(!b||!b.events)return;if(_==="all"){for(_ in b.events)b.events.hasOwnProperty(_)&&l(p,_,"all");return}let S=!1;const x=b.events[_];if(x)if(g==="all"){for(let E=x.length-1;E>=0;E--){const C=x[E];l(p,_,C.func,C.options)}return}else{const E=pn(m);for(let C=0;CE.selector===p&&E.context===_);x||(x={selector:p,context:_,listeners:[]},S.push(x)),x.listeners.push({func:m,options:b})}function u(p,_,g,m,v){const b=pn(v),S=r[g];let x=!1,E;if(S)for(E=S.length-1;E>=0;E--){const C=S[E];if(C.selector===p&&C.context===_){const{listeners:R}=C;for(let P=R.length-1;P>=0;P--){const F=R[P];if(F.func===m&&Hn(F.options,b)){R.splice(P,1),R.length||(S.splice(E,1),l(_,g,f),l(_,g,h,!0)),x=!0;break}}if(x)break}}}function f(p,_){const g=pn(_),m=new zE(p),v=r[p.type],[b]=Dx(p);let S=b;for(;qe.element(S);){for(let x=0;x(n[`interactions:${e}`]=ZE,n),{})};function Pl(n,e){let t=!1;return function(){return t||(Qr.console.warn(e),t=!0),n.apply(this,arguments)}}function tS(n,e){return n.name=e.name,n.axis=e.axis,n.edges=e.edges,n}const Bx={base:{preventDefault:"auto",deltaSource:"page"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};class Bl extends Vl{constructor(e,t,r,i,a,s,l){super(e),this.relatedTarget=null,this.screenX=void 0,this.screenY=void 0,this.button=void 0,this.buttons=void 0,this.ctrlKey=void 0,this.shiftKey=void 0,this.altKey=void 0,this.metaKey=void 0,this.page=void 0,this.client=void 0,this.delta=void 0,this.rect=void 0,this.x0=void 0,this.y0=void 0,this.t0=void 0,this.dt=void 0,this.duration=void 0,this.clientX0=void 0,this.clientY0=void 0,this.velocity=void 0,this.speed=void 0,this.swipe=void 0,this.axes=void 0,this.preEnd=void 0,a=a||e.element;const c=e.interactable,u=(c&&c.options||Bx).deltaSource,f=Fx(c,a,r),h=i==="start",p=i==="end",_=h?this:e.prevEvent,g=h?e.coords.start:p?{page:_.page,client:_.client,timeStamp:e.coords.cur.timeStamp}:e.coords.cur;this.page=qt({},g.page),this.client=qt({},g.client),this.rect=qt({},e.rect),this.timeStamp=g.timeStamp,p||(this.page.x-=f.x,this.page.y-=f.y,this.client.x-=f.x,this.client.y-=f.y),this.ctrlKey=t.ctrlKey,this.altKey=t.altKey,this.shiftKey=t.shiftKey,this.metaKey=t.metaKey,this.button=t.button,this.buttons=t.buttons,this.target=a,this.currentTarget=a,this.preEnd=s,this.type=l||r+(i||""),this.interactable=c,this.t0=h?e.pointers[e.pointers.length-1].downTime:_.t0,this.x0=e.coords.start.page.x-f.x,this.y0=e.coords.start.page.y-f.y,this.clientX0=e.coords.start.client.x-f.x,this.clientY0=e.coords.start.client.y-f.y,h||p?this.delta={x:0,y:0}:this.delta={x:this[u].x-_[u].x,y:this[u].y-_[u].y},this.dt=e.coords.delta.timeStamp,this.duration=this.timeStamp-this.t0,this.velocity=qt({},e.coords.velocity[u]),this.speed=Kl(this.velocity.x,this.velocity.y),this.swipe=p||i==="inertiastart"?this.getSwipe():null}getSwipe(){const e=this._interaction;if(e.prevEvent.speed<600||this.timeStamp-e.prevEvent.timeStamp>150)return null;let t=180*Math.atan2(e.prevEvent.velocityY,e.prevEvent.velocityX)/Math.PI;const r=22.5;t<0&&(t+=360);const i=135-r<=t&&t<225+r,a=225-r<=t&&t<315+r,s=!i&&(315-r<=t||t<45+r),l=!a&&45-r<=t&&t<135+r;return{up:a,down:l,left:i,right:s,angle:t,speed:e.prevEvent.speed,velocity:{x:e.prevEvent.velocityX,y:e.prevEvent.velocityY}}}preventDefault(){}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}stopPropagation(){this.propagationStopped=!0}}Object.defineProperties(Bl.prototype,{pageX:{get(){return this.page.x},set(n){this.page.x=n}},pageY:{get(){return this.page.y},set(n){this.page.y=n}},clientX:{get(){return this.client.x},set(n){this.client.x=n}},clientY:{get(){return this.client.y},set(n){this.client.y=n}},dx:{get(){return this.delta.x},set(n){this.delta.x=n}},dy:{get(){return this.delta.y},set(n){this.delta.y=n}},velocityX:{get(){return this.velocity.x},set(n){this.velocity.x=n}},velocityY:{get(){return this.velocity.y},set(n){this.velocity.y=n}}});class rS{constructor(e,t,r,i,a){this.id=void 0,this.pointer=void 0,this.event=void 0,this.downTime=void 0,this.downTarget=void 0,this.id=e,this.pointer=t,this.event=r,this.downTime=i,this.downTarget=a}}let nS=(function(n){return n.interactable="",n.element="",n.prepared="",n.pointerIsDown="",n.pointerWasMoved="",n._proxy="",n})({}),iS=(function(n){return n.start="",n.move="",n.end="",n.stop="",n.interacting="",n})({}),aS=0;class sS{get pointerMoveTolerance(){return 1}constructor(e){this.interactable=null,this.element=null,this.rect=null,this._rects=void 0,this.edges=null,this._scopeFire=void 0,this.prepared={name:null,axis:null,edges:null},this.pointerType=void 0,this.pointers=[],this.downEvent=null,this.downPointer={},this._latestPointer={pointer:null,event:null,eventTarget:null},this.prevEvent=null,this.pointerIsDown=!1,this.pointerWasMoved=!1,this._interacting=!1,this._ending=!1,this._stopped=!0,this._proxy=void 0,this.simulation=null,this.doMove=Pl(function(a){this.move(a)},"The interaction.doMove() method has been renamed to interaction.move()"),this.coords={start:_n(),prev:_n(),cur:_n(),delta:_n(),velocity:_n()},this._id=aS++;let{pointerType:t,scopeFire:r}=e;this._scopeFire=r,this.pointerType=t;const i=this;this._proxy={};for(const a in nS)Object.defineProperty(this._proxy,a,{get(){return i[a]}});for(const a in iS)Object.defineProperty(this._proxy,a,{value:function(){return i[a](...arguments)}});this._scopeFire("interactions:new",{interaction:this})}pointerDown(e,t,r){const i=this.updatePointer(e,t,r,!0),a=this.pointers[i];this._scopeFire("interactions:down",{pointer:e,event:t,eventTarget:r,pointerIndex:i,pointerInfo:a,type:"down",interaction:this})}start(e,t,r){return this.interacting()||!this.pointerIsDown||this.pointers.length<(e.name==="gesture"?2:1)||!t.options[e.name].enabled?!1:(tS(this.prepared,e),this.interactable=t,this.element=r,this.rect=t.getRect(r),this.edges=this.prepared.edges?qt({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:"start"})&&!this._stopped,this._interacting)}pointerMove(e,t,r){!this.simulation&&!(this.modification&&this.modification.endResult)&&this.updatePointer(e,t,r,!1);const i=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;let a,s;this.pointerIsDown&&!this.pointerWasMoved&&(a=this.coords.cur.client.x-this.coords.start.client.x,s=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=Kl(a,s)>this.pointerMoveTolerance);const l=this.getPointerIndex(e),c={pointer:e,pointerIndex:l,pointerInfo:this.pointers[l],event:t,type:"move",eventTarget:r,dx:a,dy:s,duplicate:i,interaction:this};i||xE(this.coords.velocity,this.coords.delta),this._scopeFire("interactions:move",c),!i&&!this.simulation&&(this.interacting()&&(c.type=null,this.move(c)),this.pointerWasMoved&&qi(this.coords.prev,this.coords.cur))}move(e){(!e||!e.event)&&EE(this.coords.delta),e=qt({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},e||{}),e.phase="move",this._doPhase(e)}pointerUp(e,t,r,i){let a=this.getPointerIndex(e);a===-1&&(a=this.updatePointer(e,t,r,!1));const s=/cancel$/i.test(t.type)?"cancel":"up";this._scopeFire(`interactions:${s}`,{pointer:e,pointerIndex:a,pointerInfo:this.pointers[a],event:t,eventTarget:r,type:s,curEventTarget:i,interaction:this}),this.simulation||this.end(t),this.removePointer(e,t)}documentBlur(e){this.end(e),this._scopeFire("interactions:blur",{event:e,type:"blur",interaction:this})}end(e){this._ending=!0,e=e||this._latestPointer.event;let t;this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:"end"})),this._ending=!1,t===!0&&this.stop()}currentAction(){return this._interacting?this.prepared.name:null}interacting(){return this._interacting}stop(){this._scopeFire("interactions:stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}getPointerIndex(e){const t=An(e);return this.pointerType==="mouse"||this.pointerType==="pen"?this.pointers.length-1:di(this.pointers,r=>r.id===t)}getPointerInfo(e){return this.pointers[this.getPointerIndex(e)]}updatePointer(e,t,r,i){const a=An(e);let s=this.getPointerIndex(e),l=this.pointers[s];return i=i===!1?!1:i||/(down|start)$/i.test(t.type),l?l.pointer=e:(l=new rS(a,e,t,null,null),s=this.pointers.length,this.pointers.push(l)),CE(this.coords.cur,this.pointers.map(c=>c.pointer),this._now()),bE(this.coords.delta,this.coords.prev,this.coords.cur),i&&(this.pointerIsDown=!0,l.downTime=this.coords.cur.timeStamp,l.downTarget=r,ai(this.downPointer,e),this.interacting()||(qi(this.coords.start,this.coords.cur),qi(this.coords.prev,this.coords.cur),this.downEvent=t,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,r),this._scopeFire("interactions:update-pointer",{pointer:e,event:t,eventTarget:r,down:i,pointerInfo:l,pointerIndex:s,interaction:this}),s}removePointer(e,t){const r=this.getPointerIndex(e);if(r===-1)return;const i=this.pointers[r];this._scopeFire("interactions:remove-pointer",{pointer:e,event:t,eventTarget:null,pointerIndex:r,pointerInfo:i,interaction:this}),this.pointers.splice(r,1),this.pointerIsDown=!1}_updateLatestPointer(e,t,r){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=r}destroy(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}_createPreparedEvent(e,t,r,i){return new Bl(this,e,this.prepared.name,t,this.element,r,i)}_fireEvent(e){var t;(t=this.interactable)==null||t.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}_doPhase(e){const{event:t,phase:r,preEnd:i,type:a}=e,{rect:s}=this;if(s&&r==="move"&&(mE(this.edges,s,this.coords.delta[this.interactable.options.deltaSource]),s.width=s.right-s.left,s.height=s.bottom-s.top),this._scopeFire(`interactions:before-action-${r}`,e)===!1)return!1;const c=e.iEvent=this._createPreparedEvent(t,r,i,a);return this._scopeFire(`interactions:action-${r}`,e),r==="start"&&(this.prevEvent=c),this._fireEvent(c),this._scopeFire(`interactions:after-action-${r}`,e),!0}_now(){return Date.now()}}const Fl={methodOrder:["simulationResume","mouseOrPen","hasPointer","idle"],search(n){for(const e of Fl.methodOrder){const t=Fl[e](n);if(t)return t}return null},simulationResume(n){let{pointerType:e,eventType:t,eventTarget:r,scope:i}=n;if(!/down|start/i.test(t))return null;for(const a of i.interactions.list){let s=r;if(a.simulation&&a.simulation.allowResume&&a.pointerType===e)for(;s;){if(s===a.element)return a;s=on(s)}}return null},mouseOrPen(n){let{pointerId:e,pointerType:t,eventType:r,scope:i}=n;if(t!=="mouse"&&t!=="pen")return null;let a;for(const s of i.interactions.list)if(s.pointerType===t){if(s.simulation&&!Mc(s,e))continue;if(s.interacting())return s;a||(a=s)}if(a)return a;for(const s of i.interactions.list)if(s.pointerType===t&&!(/down/i.test(r)&&s.simulation))return s;return null},hasPointer(n){let{pointerId:e,scope:t}=n;for(const r of t.interactions.list)if(Mc(r,e))return r;return null},idle(n){let{pointerType:e,scope:t}=n;for(const r of t.interactions.list){if(r.pointers.length===1){const i=r.interactable;if(i&&!(i.options.gesture&&i.options.gesture.enabled))continue}else if(r.pointers.length>=2)continue;if(!r.interacting()&&e===r.pointerType)return r}return null}};function Mc(n,e){return n.pointers.some(t=>{let{id:r}=t;return r===e})}const Xx=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function oS(n){const e={};for(const a of Xx)e[a]=Hx(a,n);const t=At.pEventTypes;let r;wt.PointerEvent?r=[{type:t.down,listener:i},{type:t.down,listener:e.pointerDown},{type:t.move,listener:e.pointerMove},{type:t.up,listener:e.pointerUp},{type:t.cancel,listener:e.pointerUp}]:r=[{type:"mousedown",listener:e.pointerDown},{type:"mousemove",listener:e.pointerMove},{type:"mouseup",listener:e.pointerUp},{type:"touchstart",listener:i},{type:"touchstart",listener:e.pointerDown},{type:"touchmove",listener:e.pointerMove},{type:"touchend",listener:e.pointerUp},{type:"touchcancel",listener:e.pointerUp}],r.push({type:"blur",listener(a){for(const s of n.interactions.list)s.documentBlur(a)}}),n.prevTouchTime=0,n.Interaction=class extends sS{get pointerMoveTolerance(){return n.interactions.pointerMoveTolerance}set pointerMoveTolerance(a){n.interactions.pointerMoveTolerance=a}_now(){return n.now()}},n.interactions={list:[],new(a){a.scopeFire=(l,c)=>n.fire(l,c);const s=new n.Interaction(a);return n.interactions.list.push(s),s},listeners:e,docEvents:r,pointerMoveTolerance:1};function i(){for(const a of n.interactions.list)if(!(!a.pointerIsDown||a.pointerType!=="touch"||a._interacting))for(const s of a.pointers)n.documents.some(l=>{let{doc:c}=l;return Xr(c,s.downTarget)})||a.removePointer(s.pointer,s.event)}n.usePlugin(eS)}function Hx(n,e){return function(t){const r=e.interactions.list,i=Lx(t),[a,s]=Dx(t),l=[];if(/^touch/.test(t.type)){e.prevTouchTime=e.now();for(const c of t.changedTouches){const u=c,f=An(u),h={pointer:u,pointerId:f,pointerType:i,eventType:t.type,eventTarget:a,curEventTarget:s,scope:e},p=Oc(h);l.push([h.pointer,h.eventTarget,h.curEventTarget,p])}}else{let c=!1;if(!At.supportsPointerEvent&&/mouse/.test(t.type)){for(let u=0;uVi(n,"add"),"scope:remove-document":n=>Vi(n,"remove"),"interactable:unset":(n,e)=>{let{interactable:t}=n;for(let r=e.interactions.list.length-1;r>=0;r--){const i=e.interactions.list[r];i.interactable===t&&(i.stop(),e.fire("interactions:destroy",{interaction:i}),i.destroy(),e.interactions.list.length>2&&e.interactions.list.splice(r,1))}}},onDocSignal:Vi,doOnInteractions:Hx,methodNames:Xx};function li(n,e){if(e.phaselessTypes[n])return!0;for(const t in e.map)if(n.indexOf(t)===0&&n.substr(t.length)in e.phases)return!0;return!1}var Cr=(function(n){return n[n.On=0]="On",n[n.Off=1]="Off",n})(Cr||{});class cS{get _defaults(){return{base:{},perAction:{},actions:{}}}constructor(e,t,r,i){this.target=void 0,this.options=void 0,this._actions=void 0,this.events=new Ux,this._context=void 0,this._win=void 0,this._doc=void 0,this._scopeEvents=void 0,this._actions=t.actions,this.target=e,this._context=t.context||r,this._win=sn(Tc(e)?this._context:e),this._doc=this._win.document,this._scopeEvents=i,this.set(t)}setOnEvents(e,t){return qe.func(t.onstart)&&this.on(`${e}start`,t.onstart),qe.func(t.onmove)&&this.on(`${e}move`,t.onmove),qe.func(t.onend)&&this.on(`${e}end`,t.onend),qe.func(t.oninertiastart)&&this.on(`${e}inertiastart`,t.oninertiastart),this}updatePerActionListeners(e,t,r){var i;const a=(i=this._actions.map[e])==null?void 0:i.filterEventType,s=l=>(a==null||a(l))&&li(l,this._actions);(qe.array(t)||qe.object(t))&&this._onOff(Cr.Off,e,t,void 0,s),(qe.array(r)||qe.object(r))&&this._onOff(Cr.On,e,r,void 0,s)}setPerAction(e,t){const r=this._defaults;for(const i in t){const a=i,s=this.options[e],l=t[a];a==="listeners"&&this.updatePerActionListeners(e,s.listeners,l),qe.array(l)?s[a]=Kx(l):qe.plainObject(l)?(s[a]=qt(s[a]||{},oi(l)),qe.object(r.perAction[a])&&"enabled"in r.perAction[a]&&(s[a].enabled=l.enabled!==!1)):qe.bool(l)&&qe.object(r.perAction[a])?s[a].enabled=l:s[a]=l}}getRect(e){return e=e||(qe.element(this.target)?this.target:null),qe.string(this.target)&&(e=e||this._context.querySelector(this.target)),ql(e)}rectChecker(e){return qe.func(e)?(this.getRect=t=>{const r=qt({},e.apply(this,t));return"width"in r||(r.width=r.right-r.left,r.height=r.bottom-r.top),r},this):e===null?(delete this.getRect,this):this.getRect}_backCompatOption(e,t){if(Tc(t)||qe.object(t)){this.options[e]=t;for(const r in this._actions.map)this.options[r][e]=t;return this}return this.options[e]}origin(e){return this._backCompatOption("origin",e)}deltaSource(e){return e==="page"||e==="client"?(this.options.deltaSource=e,this):this.options.deltaSource}getAllElements(){const{target:e}=this;return qe.string(e)?Array.from(this._context.querySelectorAll(e)):qe.func(e)&&e.getAllElements?e.getAllElements():qe.element(e)?[e]:[]}context(){return this._context}inContext(e){return this._context===e.ownerDocument||Xr(this._context,e)}testIgnoreAllow(e,t,r){return!this.testIgnore(e.ignoreFrom,t,r)&&this.testAllow(e.allowFrom,t,r)}testAllow(e,t,r){return e?qe.element(r)?qe.string(e)?Ic(r,e,t):qe.element(e)?Xr(e,r):!1:!1:!0}testIgnore(e,t,r){return!e||!qe.element(r)?!1:qe.string(e)?Ic(r,e,t):qe.element(e)?Xr(e,r):!1}fire(e){return this.events.fire(e),this}_onOff(e,t,r,i,a){qe.object(t)&&!qe.array(t)&&(i=r,r=null);const s=nn(t,r,a);for(let l in s){l==="wheel"&&(l=At.wheelEvent);for(const c of s[l])li(l,this._actions)?this.events[e===Cr.On?"on":"off"](l,c):qe.string(this.target)?this._scopeEvents[e===Cr.On?"addDelegate":"removeDelegate"](this.target,this._context,l,c,i):this._scopeEvents[e===Cr.On?"add":"remove"](this.target,l,c,i)}return this}on(e,t,r){return this._onOff(Cr.On,e,t,r)}off(e,t,r){return this._onOff(Cr.Off,e,t,r)}set(e){const t=this._defaults;qe.object(e)||(e={}),this.options=oi(t.base);for(const r in this._actions.methodDict){const i=r,a=this._actions.methodDict[i];this.options[i]={},this.setPerAction(i,qt(qt({},t.perAction),t.actions[i])),this[a](e[i])}for(const r in e){if(r==="getRect"){this.rectChecker(e.getRect);continue}qe.func(this[r])&&this[r](e[r])}return this}unset(){if(qe.string(this.target))for(const e in this._scopeEvents.delegatedEvents){const t=this._scopeEvents.delegatedEvents[e];for(let r=t.length-1;r>=0;r--){const{selector:i,context:a,listeners:s}=t[r];i===this.target&&a===this._context&&t.splice(r,1);for(let l=s.length-1;l>=0;l--)this._scopeEvents.removeDelegate(this.target,this._context,e,s[l][0],s[l][1])}}else this._scopeEvents.remove(this.target,"all")}}class uS{constructor(e){this.list=[],this.selectorMap={},this.scope=void 0,this.scope=e,e.addListeners({"interactable:unset":t=>{let{interactable:r}=t;const{target:i}=r,a=qe.string(i)?this.selectorMap[i]:i[this.scope.id],s=di(a,l=>l===r);a.splice(s,1)}})}new(e,t){t=qt(t||{},{actions:this.scope.actions});const r=new this.scope.Interactable(e,t,this.scope.document,this.scope.events);return this.scope.addDocument(r._doc),this.list.push(r),qe.string(e)?(this.selectorMap[e]||(this.selectorMap[e]=[]),this.selectorMap[e].push(r)):(r.target[this.scope.id]||Object.defineProperty(e,this.scope.id,{value:[],configurable:!0}),e[this.scope.id].push(r)),this.scope.fire("interactable:new",{target:e,options:t,interactable:r,win:this.scope._win}),r}getExisting(e,t){const r=t&&t.context||this.scope.document,i=qe.string(e),a=i?this.selectorMap[e]:e[this.scope.id];if(a)return Yn(a,s=>s._context===r&&(i||s.inContext(e)))}forEachMatch(e,t){for(const r of this.list){let i;if((qe.string(r.target)?qe.element(e)&&Hr(e,r.target):e===r.target)&&r.inContext(e)&&(i=t(r)),i!==void 0)return i}}}function dS(n){const e=(t,r)=>{let i=n.interactables.getExisting(t,r);return i||(i=n.interactables.new(t,r),i.events.global=e.globalEvents),i};return e.getPointerAverage=Ox,e.getTouchBBox=RE,e.getTouchDistance=IE,e.getTouchAngle=AE,e.getElementRect=ql,e.getElementClientRect=kx,e.matchesSelector=Hr,e.closest=Tx,e.globalEvents={},e.version="1.10.27",e.scope=n,e.use=function(t,r){return this.scope.usePlugin(t,r),this},e.isSet=function(t,r){return!!this.scope.interactables.get(t,r&&r.context)},e.on=Pl(function(r,i,a){if(qe.string(r)&&r.search(" ")!==-1&&(r=r.trim().split(/ +/)),qe.array(r)){for(const s of r)this.on(s,i,a);return this}if(qe.object(r)){for(const s in r)this.on(s,r[s],i);return this}return li(r,this.scope.actions)?this.globalEvents[r]?this.globalEvents[r].push(i):this.globalEvents[r]=[i]:this.scope.events.add(this.scope.document,r,i,{options:a}),this},"The interact.on() method is being deprecated"),e.off=Pl(function(r,i,a){if(qe.string(r)&&r.search(" ")!==-1&&(r=r.trim().split(/ +/)),qe.array(r)){for(const s of r)this.off(s,i,a);return this}if(qe.object(r)){for(const s in r)this.off(s,r[s],i);return this}if(li(r,this.scope.actions)){let s;r in this.globalEvents&&(s=this.globalEvents[r].indexOf(i))!==-1&&this.globalEvents[r].splice(s,1)}else this.scope.events.remove(this.scope.document,r,i,a);return this},"The interact.off() method is being deprecated"),e.debug=function(){return this.scope},e.supportsTouch=function(){return At.supportsTouch},e.supportsPointerEvent=function(){return At.supportsPointerEvent},e.stop=function(){for(const t of this.scope.interactions.list)t.stop();return this},e.pointerMoveTolerance=function(t){return qe.number(t)?(this.scope.interactions.pointerMoveTolerance=t,this):this.scope.interactions.pointerMoveTolerance},e.addDocument=function(t,r){this.scope.addDocument(t,r)},e.removeDocument=function(t){this.scope.removeDocument(t)},e}class fS{constructor(){this.id=`__interact_scope_${Math.floor(Math.random()*100)}`,this.isInitialized=!1,this.listenerMaps=[],this.browser=At,this.defaults=oi(Bx),this.Eventable=Ux,this.actions={map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}},this.interactStatic=dS(this),this.InteractEvent=Bl,this.Interactable=void 0,this.interactables=new uS(this),this._win=void 0,this.document=void 0,this.window=void 0,this.documents=[],this._plugins={list:[],map:{}},this.onWindowUnload=t=>this.removeDocument(t.target);const e=this;this.Interactable=class extends cS{get _defaults(){return e.defaults}set(t){return super.set(t),e.fire("interactable:set",{options:t,interactable:this}),this}unset(){super.unset();const t=e.interactables.list.indexOf(this);t<0||(e.interactables.list.splice(t,1),e.fire("interactable:unset",{interactable:this}))}}}addListeners(e,t){this.listenerMaps.push({id:t,map:e})}fire(e,t){for(const{map:{[e]:r}}of this.listenerMaps)if(r&&r(t,this,e)===!1)return!1}init(e){return this.isInitialized?this:hS(this,e)}pluginIsInstalled(e){const{id:t}=e;return t?!!this._plugins.map[t]:this._plugins.list.indexOf(e)!==-1}usePlugin(e,t){if(!this.isInitialized)return this;if(this.pluginIsInstalled(e))return this;if(e.id&&(this._plugins.map[e.id]=e),this._plugins.list.push(e),e.install&&e.install(this,t),e.listeners&&e.before){let r=0;const i=this.listenerMaps.length,a=e.before.reduce((s,l)=>(s[l]=!0,s[Lc(l)]=!0,s),{});for(;r{const{interaction:e,interactable:t,buttons:r}=n,i=t.options.drag;if(!(!(i&&i.enabled)||e.pointerIsDown&&/mouse|pointer/.test(e.pointerType)&&(r&t.options.drag.mouseButtons)===0))return n.action={name:"drag",axis:i.lockAxis==="start"?i.startAxis:i.lockAxis},!1}},draggable:vS,beforeMove:Ki,move:Dc,defaults:{startAxis:"xy",lockAxis:"xy"},getCursor(){return"move"},filterEventType:n=>n.search("drag")===0};or.use(Zn);var Nc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function gS(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var qc={},Ui,Vc;function Ye(){if(Vc)return Ui;Vc=1;var n=function(e){return e&&e.Math==Math&&e};return Ui=n(typeof globalThis=="object"&&globalThis)||n(typeof window=="object"&&window)||n(typeof self=="object"&&self)||n(typeof Nc=="object"&&Nc)||(function(){return this})()||Function("return this")(),Ui}var Bi={},Xi,Kc;function Ue(){return Kc||(Kc=1,Xi=function(n){try{return!!n()}catch{return!0}}),Xi}var Hi,Uc;function dt(){if(Uc)return Hi;Uc=1;var n=Ue();return Hi=!n(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),Hi}var Qi={},Bc;function fi(){if(Bc)return Qi;Bc=1;var n={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,t=e&&!n.call({1:2},1);return Qi.f=t?function(i){var a=e(this,i);return!!a&&a.enumerable}:n,Qi}var ji,Xc;function gr(){return Xc||(Xc=1,ji=function(n,e){return{enumerable:!(n&1),configurable:!(n&2),writable:!(n&4),value:e}}),ji}var Wi,Hc;function jr(){if(Hc)return Wi;Hc=1;var n={}.toString;return Wi=function(e){return n.call(e).slice(8,-1)},Wi}var zi,Qc;function Tn(){if(Qc)return zi;Qc=1;var n=Ue(),e=jr(),t="".split;return zi=n(function(){return!Object("z").propertyIsEnumerable(0)})?function(r){return e(r)=="String"?t.call(r,""):Object(r)}:Object,zi}var Gi,jc;function Dt(){return jc||(jc=1,Gi=function(n){if(n==null)throw TypeError("Can't call method on "+n);return n}),Gi}var $i,Wc;function Gt(){if(Wc)return $i;Wc=1;var n=Tn(),e=Dt();return $i=function(t){return n(e(t))},$i}var Yi,zc;function pt(){return zc||(zc=1,Yi=function(n){return typeof n=="function"}),Yi}var Zi,Gc;function ct(){if(Gc)return Zi;Gc=1;var n=pt();return Zi=function(e){return typeof e=="object"?e!==null:n(e)},Zi}var Ji,$c;function Ht(){if($c)return Ji;$c=1;var n=Ye(),e=pt(),t=function(r){return e(r)?r:void 0};return Ji=function(r,i){return arguments.length<2?t(n[r]):n[r]&&n[r][i]},Ji}var ea,Yc;function mr(){if(Yc)return ea;Yc=1;var n=Ht();return ea=n("navigator","userAgent")||"",ea}var ta,Zc;function Fr(){if(Zc)return ta;Zc=1;var n=Ye(),e=mr(),t=n.process,r=n.Deno,i=t&&t.versions||r&&r.version,a=i&&i.v8,s,l;return a?(s=a.split("."),l=s[0]<4?1:s[0]+s[1]):e&&(s=e.match(/Edge\/(\d+)/),(!s||s[1]>=74)&&(s=e.match(/Chrome\/(\d+)/),s&&(l=s[1]))),ta=l&&+l,ta}var ra,Jc;function Xl(){if(Jc)return ra;Jc=1;var n=Fr(),e=Ue();return ra=!!Object.getOwnPropertySymbols&&!e(function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}),ra}var na,eu;function jx(){if(eu)return na;eu=1;var n=Xl();return na=n&&!Symbol.sham&&typeof Symbol.iterator=="symbol",na}var ia,tu;function kn(){if(tu)return ia;tu=1;var n=pt(),e=Ht(),t=jx();return ia=t?function(r){return typeof r=="symbol"}:function(r){var i=e("Symbol");return n(i)&&Object(r)instanceof i},ia}var aa,ru;function Hl(){return ru||(ru=1,aa=function(n){try{return String(n)}catch{return"Object"}}),aa}var sa,nu;function Qt(){if(nu)return sa;nu=1;var n=pt(),e=Hl();return sa=function(t){if(n(t))return t;throw TypeError(e(t)+" is not a function")},sa}var oa,iu;function yr(){if(iu)return oa;iu=1;var n=Qt();return oa=function(e,t){var r=e[t];return r==null?void 0:n(r)},oa}var la,au;function Wx(){if(au)return la;au=1;var n=pt(),e=ct();return la=function(t,r){var i,a;if(r==="string"&&n(i=t.toString)&&!e(a=i.call(t))||n(i=t.valueOf)&&!e(a=i.call(t))||r!=="string"&&n(i=t.toString)&&!e(a=i.call(t)))return a;throw TypeError("Can't convert object to primitive value")},la}var ca={exports:{}},ua,su;function nr(){return su||(su=1,ua=!1),ua}var da,ou;function Ql(){if(ou)return da;ou=1;var n=Ye();return da=function(e,t){try{Object.defineProperty(n,e,{value:t,configurable:!0,writable:!0})}catch{n[e]=t}return t},da}var fa,lu;function jl(){if(lu)return fa;lu=1;var n=Ye(),e=Ql(),t="__core-js_shared__",r=n[t]||e(t,{});return fa=r,fa}var cu;function hi(){if(cu)return ca.exports;cu=1;var n=nr(),e=jl();return(ca.exports=function(t,r){return e[t]||(e[t]=r!==void 0?r:{})})("versions",[]).push({version:"3.18.3",mode:n?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"}),ca.exports}var ha,uu;function Et(){if(uu)return ha;uu=1;var n=Dt();return ha=function(e){return Object(n(e))},ha}var _a,du;function Tt(){if(du)return _a;du=1;var n=Et(),e={}.hasOwnProperty;return _a=Object.hasOwn||function(r,i){return e.call(n(r),i)},_a}var pa,fu;function Pn(){if(fu)return pa;fu=1;var n=0,e=Math.random();return pa=function(t){return"Symbol("+String(t===void 0?"":t)+")_"+(++n+e).toString(36)},pa}var va,hu;function ft(){if(hu)return va;hu=1;var n=Ye(),e=hi(),t=Tt(),r=Pn(),i=Xl(),a=jx(),s=e("wks"),l=n.Symbol,c=a?l:l&&l.withoutSetter||r;return va=function(u){return(!t(s,u)||!(i||typeof s[u]=="string"))&&(i&&t(l,u)?s[u]=l[u]:s[u]=c("Symbol."+u)),s[u]},va}var ga,_u;function Wl(){if(_u)return ga;_u=1;var n=ct(),e=kn(),t=yr(),r=Wx(),i=ft(),a=i("toPrimitive");return ga=function(s,l){if(!n(s)||e(s))return s;var c=t(s,a),u;if(c){if(l===void 0&&(l="default"),u=c.call(s,l),!n(u)||e(u))return u;throw TypeError("Can't convert object to primitive value")}return l===void 0&&(l="number"),r(s,l)},ga}var ma,pu;function Mr(){if(pu)return ma;pu=1;var n=Wl(),e=kn();return ma=function(t){var r=n(t,"string");return e(r)?r:String(r)},ma}var ya,vu;function _i(){if(vu)return ya;vu=1;var n=Ye(),e=ct(),t=n.document,r=e(t)&&e(t.createElement);return ya=function(i){return r?t.createElement(i):{}},ya}var ba,gu;function zx(){if(gu)return ba;gu=1;var n=dt(),e=Ue(),t=_i();return ba=!n&&!e(function(){return Object.defineProperty(t("div"),"a",{get:function(){return 7}}).a!=7}),ba}var mu;function Bt(){if(mu)return Bi;mu=1;var n=dt(),e=fi(),t=gr(),r=Gt(),i=Mr(),a=Tt(),s=zx(),l=Object.getOwnPropertyDescriptor;return Bi.f=n?l:function(u,f){if(u=r(u),f=i(f),s)try{return l(u,f)}catch{}if(a(u,f))return t(!e.f.call(u,f),u[f])},Bi}var xa={},Ea,yu;function ut(){if(yu)return Ea;yu=1;var n=ct();return Ea=function(e){if(n(e))return e;throw TypeError(String(e)+" is not an object")},Ea}var bu;function xt(){if(bu)return xa;bu=1;var n=dt(),e=zx(),t=ut(),r=Mr(),i=Object.defineProperty;return xa.f=n?i:function(s,l,c){if(t(s),l=r(l),t(c),e)try{return i(s,l,c)}catch{}if("get"in c||"set"in c)throw TypeError("Accessors not supported");return"value"in c&&(s[l]=c.value),s},xa}var Sa,xu;function $t(){if(xu)return Sa;xu=1;var n=dt(),e=xt(),t=gr();return Sa=n?function(r,i,a){return e.f(r,i,t(1,a))}:function(r,i,a){return r[i]=a,r},Sa}var wa={exports:{}},Ca,Eu;function pi(){if(Eu)return Ca;Eu=1;var n=pt(),e=jl(),t=Function.toString;return n(e.inspectSource)||(e.inspectSource=function(r){return t.call(r)}),Ca=e.inspectSource,Ca}var Ra,Su;function Gx(){if(Su)return Ra;Su=1;var n=Ye(),e=pt(),t=pi(),r=n.WeakMap;return Ra=e(r)&&/native code/.test(t(r)),Ra}var Ia,wu;function vi(){if(wu)return Ia;wu=1;var n=hi(),e=Pn(),t=n("keys");return Ia=function(r){return t[r]||(t[r]=e(r))},Ia}var Aa,Cu;function Fn(){return Cu||(Cu=1,Aa={}),Aa}var Ta,Ru;function Vt(){if(Ru)return Ta;Ru=1;var n=Gx(),e=Ye(),t=ct(),r=$t(),i=Tt(),a=jl(),s=vi(),l=Fn(),c="Object already initialized",u=e.WeakMap,f,h,p,_=function(E){return p(E)?h(E):f(E,{})},g=function(E){return function(C){var R;if(!t(C)||(R=h(C)).type!==E)throw TypeError("Incompatible receiver, "+E+" required");return R}};if(n||a.state){var m=a.state||(a.state=new u),v=m.get,b=m.has,S=m.set;f=function(E,C){if(b.call(m,E))throw new TypeError(c);return C.facade=E,S.call(m,E,C),C},h=function(E){return v.call(m,E)||{}},p=function(E){return b.call(m,E)}}else{var x=s("state");l[x]=!0,f=function(E,C){if(i(E,x))throw new TypeError(c);return C.facade=E,r(E,x,C),C},h=function(E){return i(E,x)?E[x]:{}},p=function(E){return i(E,x)}}return Ta={set:f,get:h,has:p,enforce:_,getterFor:g},Ta}var ka,Iu;function Wr(){if(Iu)return ka;Iu=1;var n=dt(),e=Tt(),t=Function.prototype,r=n&&Object.getOwnPropertyDescriptor,i=e(t,"name"),a=i&&(function(){}).name==="something",s=i&&(!n||n&&r(t,"name").configurable);return ka={EXISTS:i,PROPER:a,CONFIGURABLE:s},ka}var Au;function Ft(){if(Au)return wa.exports;Au=1;var n=Ye(),e=pt(),t=Tt(),r=$t(),i=Ql(),a=pi(),s=Vt(),l=Wr().CONFIGURABLE,c=s.get,u=s.enforce,f=String(String).split("String");return(wa.exports=function(h,p,_,g){var m=g?!!g.unsafe:!1,v=g?!!g.enumerable:!1,b=g?!!g.noTargetGet:!1,S=g&&g.name!==void 0?g.name:p,x;if(e(_)&&(String(S).slice(0,7)==="Symbol("&&(S="["+String(S).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!t(_,"name")||l&&_.name!==S)&&r(_,"name",S),x=u(_),x.source||(x.source=f.join(typeof S=="string"?S:""))),h===n){v?h[p]=_:i(p,_);return}else m?!b&&h[p]&&(v=!0):delete h[p];v?h[p]=_:r(h,p,_)})(Function.prototype,"toString",function(){return e(this)&&c(this).source||a(this)}),wa.exports}var Pa={},Fa,Tu;function Kt(){if(Tu)return Fa;Tu=1;var n=Math.ceil,e=Math.floor;return Fa=function(t){var r=+t;return r!==r||r===0?0:(r>0?e:n)(r)},Fa}var Ma,ku;function Or(){if(ku)return Ma;ku=1;var n=Kt(),e=Math.max,t=Math.min;return Ma=function(r,i){var a=n(r);return a<0?e(a+i,0):t(a,i)},Ma}var Oa,Pu;function Yt(){if(Pu)return Oa;Pu=1;var n=Kt(),e=Math.min;return Oa=function(t){return t>0?e(n(t),9007199254740991):0},Oa}var La,Fu;function kt(){if(Fu)return La;Fu=1;var n=Yt();return La=function(e){return n(e.length)},La}var Da,Mu;function Mn(){if(Mu)return Da;Mu=1;var n=Gt(),e=Or(),t=kt(),r=function(i){return function(a,s,l){var c=n(a),u=t(c),f=e(l,u),h;if(i&&s!=s){for(;u>f;)if(h=c[f++],h!=h)return!0}else for(;u>f;f++)if((i||f in c)&&c[f]===s)return i||f||0;return!i&&-1}};return Da={includes:r(!0),indexOf:r(!1)},Da}var Na,Ou;function $x(){if(Ou)return Na;Ou=1;var n=Tt(),e=Gt(),t=Mn().indexOf,r=Fn();return Na=function(i,a){var s=e(i),l=0,c=[],u;for(u in s)!n(r,u)&&n(s,u)&&c.push(u);for(;a.length>l;)n(s,u=a[l++])&&(~t(c,u)||c.push(u));return c},Na}var qa,Lu;function zl(){return Lu||(Lu=1,qa=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),qa}var Du;function Lr(){if(Du)return Pa;Du=1;var n=$x(),e=zl(),t=e.concat("length","prototype");return Pa.f=Object.getOwnPropertyNames||function(i){return n(i,t)},Pa}var Va={},Nu;function Gl(){return Nu||(Nu=1,Va.f=Object.getOwnPropertySymbols),Va}var Ka,qu;function $l(){if(qu)return Ka;qu=1;var n=Ht(),e=Lr(),t=Gl(),r=ut();return Ka=n("Reflect","ownKeys")||function(a){var s=e.f(r(a)),l=t.f;return l?s.concat(l(a)):s},Ka}var Ua,Vu;function Yl(){if(Vu)return Ua;Vu=1;var n=Tt(),e=$l(),t=Bt(),r=xt();return Ua=function(i,a){for(var s=e(a),l=r.f,c=t.f,u=0;uu;)e.f(a,f=l[u++],s[f]);return a},Ga}var $a,zu;function Yx(){if(zu)return $a;zu=1;var n=Ht();return $a=n("document","documentElement"),$a}var Ya,Gu;function lr(){if(Gu)return Ya;Gu=1;var n=ut(),e=Jl(),t=zl(),r=Fn(),i=Yx(),a=_i(),s=vi(),l=">",c="<",u="prototype",f="script",h=s("IE_PROTO"),p=function(){},_=function(S){return c+f+l+S+c+"/"+f+l},g=function(S){S.write(_("")),S.close();var x=S.parentWindow.Object;return S=null,x},m=function(){var S=a("iframe"),x="java"+f+":",E;return S.style.display="none",i.appendChild(S),S.src=String(x),E=S.contentWindow.document,E.open(),E.write(_("document.F=Object")),E.close(),E.F},v,b=function(){try{v=new ActiveXObject("htmlfile")}catch{}b=typeof document<"u"?document.domain&&v?g(v):m():g(v);for(var S=t.length;S--;)delete b[u][t[S]];return b()};return r[h]=!0,Ya=Object.create||function(x,E){var C;return x!==null?(p[u]=n(x),C=new p,p[u]=null,C[h]=x):C=b(),E===void 0?C:e(C,E)},Ya}var Za={},$u;function ec(){if($u)return Za;$u=1;var n=Gt(),e=Lr().f,t={}.toString,r=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],i=function(a){try{return e(a)}catch{return r.slice()}};return Za.f=function(s){return r&&t.call(s)=="[object Window]"?i(s):e(n(s))},Za}var Ja={},Yu;function Zx(){if(Yu)return Ja;Yu=1;var n=ft();return Ja.f=n,Ja}var es,Zu;function Jx(){if(Zu)return es;Zu=1;var n=Ye();return es=n,es}var ts,Ju;function jt(){if(Ju)return ts;Ju=1;var n=Jx(),e=Tt(),t=Zx(),r=xt().f;return ts=function(i){var a=n.Symbol||(n.Symbol={});e(a,i)||r(a,i,{value:t.f(i)})},ts}var rs,ed;function cr(){if(ed)return rs;ed=1;var n=xt().f,e=Tt(),t=ft(),r=t("toStringTag");return rs=function(i,a,s){i&&!e(i=s?i:i.prototype,r)&&n(i,r,{configurable:!0,value:a})},rs}var ns,td;function Dr(){if(td)return ns;td=1;var n=Qt();return ns=function(e,t,r){if(n(e),t===void 0)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(i){return e.call(t,i)};case 2:return function(i,a){return e.call(t,i,a)};case 3:return function(i,a,s){return e.call(t,i,a,s)}}return function(){return e.apply(t,arguments)}},ns}var is,rd;function Dn(){if(rd)return is;rd=1;var n=Ue(),e=pt(),t=Gr(),r=Ht(),i=pi(),a=[],s=r("Reflect","construct"),l=/^\s*(?:class|function)\b/,c=l.exec,u=!l.exec(function(){}),f=function(p){if(!e(p))return!1;try{return s(Object,a,p),!0}catch{return!1}},h=function(p){if(!e(p))return!1;switch(t(p)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return u||!!c.call(l,i(p))};return is=!s||n(function(){var p;return f(f.call)||!f(Object)||!f(function(){p=!0})||p})?h:f,is}var as,nd;function mS(){if(nd)return as;nd=1;var n=zr(),e=Dn(),t=ct(),r=ft(),i=r("species");return as=function(a){var s;return n(a)&&(s=a.constructor,e(s)&&(s===Array||n(s.prototype))?s=void 0:t(s)&&(s=s[i],s===null&&(s=void 0))),s===void 0?Array:s},as}var ss,id;function Nn(){if(id)return ss;id=1;var n=mS();return ss=function(e,t){return new(n(e))(t===0?0:t)},ss}var os,ad;function Ut(){if(ad)return os;ad=1;var n=Dr(),e=Tn(),t=Et(),r=kt(),i=Nn(),a=[].push,s=function(l){var c=l==1,u=l==2,f=l==3,h=l==4,p=l==6,_=l==7,g=l==5||p;return function(m,v,b,S){for(var x=t(m),E=e(x),C=n(v,b,3),R=r(E),P=0,F=S||i,k=c?F(m,R):u||_?F(m,0):void 0,q,ce;R>P;P++)if((g||P in E)&&(q=E[P],ce=C(q,P,x),l))if(c)k[P]=ce;else if(ce)switch(l){case 3:return!0;case 5:return q;case 6:return P;case 2:a.call(k,q)}else switch(l){case 4:return!1;case 7:a.call(k,q)}return p?-1:f||h?h:k}};return os={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)},os}var sd;function yS(){if(sd)return qc;sd=1;var n=Q(),e=Ye(),t=Ht(),r=nr(),i=dt(),a=Xl(),s=Ue(),l=Tt(),c=zr(),u=pt(),f=ct(),h=kn(),p=ut(),_=Et(),g=Gt(),m=Mr(),v=vt(),b=gr(),S=lr(),x=Ln(),E=Lr(),C=ec(),R=Gl(),P=Bt(),F=xt(),k=fi(),q=Ft(),ce=hi(),j=vi(),K=Fn(),ue=Pn(),ve=ft(),ge=Zx(),ye=jt(),Me=cr(),X=Vt(),L=Ut().forEach,H=j("hidden"),pe="Symbol",G="prototype",Se=ve("toPrimitive"),Te=X.set,De=X.getterFor(pe),Ae=Object[G],ke=e.Symbol,st=t("JSON","stringify"),et=P.f,Ne=F.f,Pe=C.f,Fe=k.f,me=ce("symbols"),Oe=ce("op-symbols"),ae=ce("string-to-symbol-registry"),le=ce("symbol-to-string-registry"),Ie=ce("wks"),Ge=e.QObject,tt=!Ge||!Ge[G]||!Ge[G].findChild,nt=i&&s(function(){return S(Ne({},"a",{get:function(){return Ne(this,"a",{value:7}).a}})).a!=7})?function(D,V,W){var A=et(Ae,V);A&&delete Ae[V],Ne(D,V,W),A&&D!==Ae&&Ne(Ae,V,A)}:Ne,it=function(D,V){var W=me[D]=S(ke[G]);return Te(W,{type:pe,tag:D,description:V}),i||(W.description=V),W},Be=function(V,W,A){V===Ae&&Be(Oe,W,A),p(V);var N=m(W);return p(A),l(me,N)?(A.enumerable?(l(V,H)&&V[H][N]&&(V[H][N]=!1),A=S(A,{enumerable:b(0,!1)})):(l(V,H)||Ne(V,H,b(1,{})),V[H][N]=!0),nt(V,N,A)):Ne(V,N,A)},Ze=function(V,W){p(V);var A=g(W),N=x(A).concat(w(A));return L(N,function(y){(!i||Ct.call(A,y))&&Be(V,y,A[y])}),V},$e=function(V,W){return W===void 0?S(V):Ze(S(V),W)},Ct=function(V){var W=m(V),A=Fe.call(this,W);return this===Ae&&l(me,W)&&!l(Oe,W)?!1:A||!l(this,W)||!l(me,W)||l(this,H)&&this[H][W]?A:!0},bt=function(V,W){var A=g(V),N=m(W);if(!(A===Ae&&l(me,N)&&!l(Oe,N))){var y=et(A,N);return y&&l(me,N)&&!(l(A,H)&&A[H][N])&&(y.enumerable=!0),y}},Mt=function(V){var W=Pe(g(V)),A=[];return L(W,function(N){!l(me,N)&&!l(K,N)&&A.push(N)}),A},w=function(V){var W=V===Ae,A=Pe(W?Oe:g(V)),N=[];return L(A,function(y){l(me,y)&&(!W||l(Ae,y))&&N.push(me[y])}),N};if(a||(ke=function(){if(this instanceof ke)throw TypeError("Symbol is not a constructor");var V=!arguments.length||arguments[0]===void 0?void 0:v(arguments[0]),W=ue(V),A=function(N){this===Ae&&A.call(Oe,N),l(this,H)&&l(this[H],W)&&(this[H][W]=!1),nt(this,W,b(1,N))};return i&&tt&&nt(Ae,W,{configurable:!0,set:A}),it(W,V)},q(ke[G],"toString",function(){return De(this).tag}),q(ke,"withoutSetter",function(D){return it(ue(D),D)}),k.f=Ct,F.f=Be,P.f=bt,E.f=C.f=Mt,R.f=w,ge.f=function(D){return it(ve(D),D)},i&&(Ne(ke[G],"description",{configurable:!0,get:function(){return De(this).description}}),r||q(Ae,"propertyIsEnumerable",Ct,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!a,sham:!a},{Symbol:ke}),L(x(Ie),function(D){ye(D)}),n({target:pe,stat:!0,forced:!a},{for:function(D){var V=v(D);if(l(ae,V))return ae[V];var W=ke(V);return ae[V]=W,le[W]=V,W},keyFor:function(V){if(!h(V))throw TypeError(V+" is not a symbol");if(l(le,V))return le[V]},useSetter:function(){tt=!0},useSimple:function(){tt=!1}}),n({target:"Object",stat:!0,forced:!a,sham:!i},{create:$e,defineProperty:Be,defineProperties:Ze,getOwnPropertyDescriptor:bt}),n({target:"Object",stat:!0,forced:!a},{getOwnPropertyNames:Mt,getOwnPropertySymbols:w}),n({target:"Object",stat:!0,forced:s(function(){R.f(1)})},{getOwnPropertySymbols:function(V){return R.f(_(V))}}),st){var ee=!a||s(function(){var D=ke();return st([D])!="[null]"||st({a:D})!="{}"||st(Object(D))!="{}"});n({target:"JSON",stat:!0,forced:ee},{stringify:function(V,W,A){for(var N=[V],y=1,_e;arguments.length>y;)N.push(arguments[y++]);if(_e=W,!(!f(W)&&V===void 0||h(V)))return c(W)||(W=function(Xe,xe){if(u(_e)&&(xe=_e.call(this,Xe,xe)),!h(xe))return xe}),N[1]=W,st.apply(null,N)}})}if(!ke[G][Se]){var he=ke[G].valueOf;q(ke[G],Se,function(){return he.apply(this,arguments)})}return Me(ke,pe),K[H]=!0,qc}var od={},ld;function bS(){if(ld)return od;ld=1;var n=Q(),e=dt(),t=Ye(),r=Tt(),i=pt(),a=ct(),s=xt().f,l=Yl(),c=t.Symbol;if(e&&i(c)&&(!("description"in c.prototype)||c().description!==void 0)){var u={},f=function(){var v=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),b=this instanceof f?new c(v):v===void 0?c():c(v);return v===""&&(u[b]=!0),b};l(f,c);var h=f.prototype=c.prototype;h.constructor=f;var p=h.toString,_=String(c("test"))=="Symbol(test)",g=/^Symbol\((.*)\)[^)]+$/;s(h,"description",{configurable:!0,get:function(){var v=a(this)?this.valueOf():this,b=p.call(v);if(r(u,v))return"";var S=_?b.slice(7,-1):b.replace(g,"$1");return S===""?void 0:S}}),n({global:!0,forced:!0},{Symbol:f})}return od}var cd={},ud;function xS(){if(ud)return cd;ud=1;var n=jt();return n("asyncIterator"),cd}var dd={},fd;function ES(){if(fd)return dd;fd=1;var n=jt();return n("hasInstance"),dd}var hd={},_d;function SS(){if(_d)return hd;_d=1;var n=jt();return n("isConcatSpreadable"),hd}var pd={},vd;function wS(){if(vd)return pd;vd=1;var n=jt();return n("iterator"),pd}var gd={},md;function CS(){if(md)return gd;md=1;var n=jt();return n("match"),gd}var yd={},bd;function RS(){if(bd)return yd;bd=1;var n=jt();return n("matchAll"),yd}var xd={},Ed;function IS(){if(Ed)return xd;Ed=1;var n=jt();return n("replace"),xd}var Sd={},wd;function AS(){if(wd)return Sd;wd=1;var n=jt();return n("search"),Sd}var Cd={},Rd;function TS(){if(Rd)return Cd;Rd=1;var n=jt();return n("species"),Cd}var Id={},Ad;function kS(){if(Ad)return Id;Ad=1;var n=jt();return n("split"),Id}var Td={},kd;function PS(){if(kd)return Td;kd=1;var n=jt();return n("toPrimitive"),Td}var Pd={},Fd;function FS(){if(Fd)return Pd;Fd=1;var n=jt();return n("toStringTag"),Pd}var Md={},Od;function MS(){if(Od)return Md;Od=1;var n=jt();return n("unscopables"),Md}var Ld={},ls,Dd;function tc(){if(Dd)return ls;Dd=1;var n=Ue();return ls=!n(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),ls}var cs,Nd;function ir(){if(Nd)return cs;Nd=1;var n=Tt(),e=pt(),t=Et(),r=vi(),i=tc(),a=r("IE_PROTO"),s=Object.prototype;return cs=i?Object.getPrototypeOf:function(l){var c=t(l);if(n(c,a))return c[a];var u=c.constructor;return e(u)&&c instanceof u?u.prototype:c instanceof Object?s:null},cs}var us,qd;function e1(){if(qd)return us;qd=1;var n=pt();return us=function(e){if(typeof e=="object"||n(e))return e;throw TypeError("Can't set "+String(e)+" as a prototype")},us}var ds,Vd;function br(){if(Vd)return ds;Vd=1;var n=ut(),e=e1();return ds=Object.setPrototypeOf||("__proto__"in{}?(function(){var t=!1,r={},i;try{i=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,i.call(r,[]),t=r instanceof Array}catch{}return function(s,l){return n(s),e(l),t?i.call(s,l):s.__proto__=l,s}})():void 0),ds}var fs,Kd;function OS(){if(Kd)return fs;Kd=1;var n=ct(),e=$t();return fs=function(t,r){n(r)&&"cause"in r&&e(t,"cause",r.cause)},fs}var hs,Ud;function qn(){return Ud||(Ud=1,hs={}),hs}var _s,Bd;function rc(){if(Bd)return _s;Bd=1;var n=ft(),e=qn(),t=n("iterator"),r=Array.prototype;return _s=function(i){return i!==void 0&&(e.Array===i||r[t]===i)},_s}var ps,Xd;function Vn(){if(Xd)return ps;Xd=1;var n=Gr(),e=yr(),t=qn(),r=ft(),i=r("iterator");return ps=function(a){if(a!=null)return e(a,i)||e(a,"@@iterator")||t[n(a)]},ps}var vs,Hd;function gi(){if(Hd)return vs;Hd=1;var n=Qt(),e=ut(),t=Vn();return vs=function(r,i){var a=arguments.length<2?t(r):i;if(n(a))return e(a.call(r));throw TypeError(String(r)+" is not iterable")},vs}var gs,Qd;function t1(){if(Qd)return gs;Qd=1;var n=ut(),e=yr();return gs=function(t,r,i){var a,s;n(t);try{if(a=e(t,"return"),!a){if(r==="throw")throw i;return i}a=a.call(t)}catch(l){s=!0,a=l}if(r==="throw")throw i;if(s)throw a;return n(a),i},gs}var ms,jd;function Nr(){if(jd)return ms;jd=1;var n=ut(),e=rc(),t=kt(),r=Dr(),i=gi(),a=Vn(),s=t1(),l=function(c,u){this.stopped=c,this.result=u};return ms=function(c,u,f){var h=f&&f.that,p=!!(f&&f.AS_ENTRIES),_=!!(f&&f.IS_ITERATOR),g=!!(f&&f.INTERRUPTED),m=r(u,h,1+p+g),v,b,S,x,E,C,R,P=function(k){return v&&s(v,"normal",k),new l(!0,k)},F=function(k){return p?(n(k),g?m(k[0],k[1],P):m(k[0],k[1])):g?m(k,P):m(k)};if(_)v=c;else{if(b=a(c),!b)throw TypeError(String(c)+" is not iterable");if(e(b)){for(S=0,x=t(c);x>S;S++)if(E=F(c[S]),E&&E instanceof l)return E;return new l(!1)}v=i(c,b)}for(C=v.next;!(R=C.call(v)).done;){try{E=F(R.value)}catch(k){s(v,"throw",k)}if(typeof E=="object"&&E&&E instanceof l)return E}return new l(!1)},ms}var Wd;function LS(){if(Wd)return Ld;Wd=1;var n=Q(),e=ir(),t=br(),r=Yl(),i=lr(),a=$t(),s=gr(),l=OS(),c=Nr(),u=vt(),f=function(p,_){var g=this,m=arguments.length>2?arguments[2]:void 0;if(!(g instanceof f))return new f(p,_,m);t&&(g=t(new Error(void 0),e(g))),_!==void 0&&a(g,"message",u(_)),l(g,m);var v=[];return c(p,v.push,{that:v}),a(g,"errors",v),g};return t?t(f,Error):r(f,Error),f.prototype=i(Error.prototype,{constructor:s(1,f),message:s(1,""),name:s(1,"AggregateError")}),n({global:!0},{AggregateError:f}),Ld}var zd={},ys,Gd;function xr(){if(Gd)return ys;Gd=1;var n=ft(),e=lr(),t=xt(),r=n("unscopables"),i=Array.prototype;return i[r]==null&&t.f(i,r,{configurable:!0,value:e(null)}),ys=function(a){i[r][a]=!0},ys}var $d;function DS(){if($d)return zd;$d=1;var n=Q(),e=Et(),t=kt(),r=Kt(),i=xr();return n({target:"Array",proto:!0},{at:function(s){var l=e(this),c=t(l),u=r(s),f=u>=0?u:c+u;return f<0||f>=c?void 0:l[f]}}),i("at"),zd}var Yd={},bs,Zd;function $r(){if(Zd)return bs;Zd=1;var n=Mr(),e=xt(),t=gr();return bs=function(r,i,a){var s=n(i);s in r?e.f(r,s,t(0,a)):r[s]=a},bs}var xs,Jd;function Kn(){if(Jd)return xs;Jd=1;var n=Ue(),e=ft(),t=Fr(),r=e("species");return xs=function(i){return t>=51||!n(function(){var a=[],s=a.constructor={};return s[r]=function(){return{foo:1}},a[i](Boolean).foo!==1})},xs}var ef;function NS(){if(ef)return Yd;ef=1;var n=Q(),e=Ue(),t=zr(),r=ct(),i=Et(),a=kt(),s=$r(),l=Nn(),c=Kn(),u=ft(),f=Fr(),h=u("isConcatSpreadable"),p=9007199254740991,_="Maximum allowed index exceeded",g=f>=51||!e(function(){var S=[];return S[h]=!1,S.concat()[0]!==S}),m=c("concat"),v=function(S){if(!r(S))return!1;var x=S[h];return x!==void 0?!!x:t(S)},b=!g||!m;return n({target:"Array",proto:!0,forced:b},{concat:function(x){var E=i(this),C=l(E,0),R=0,P,F,k,q,ce;for(P=-1,k=arguments.length;Pp)throw TypeError(_);for(F=0;F=p)throw TypeError(_);s(C,R++,ce)}return C.length=R,C}}),Yd}var tf={},Es,rf;function r1(){if(rf)return Es;rf=1;var n=Et(),e=Or(),t=kt(),r=Math.min;return Es=[].copyWithin||function(a,s){var l=n(this),c=t(l),u=e(a,c),f=e(s,c),h=arguments.length>2?arguments[2]:void 0,p=r((h===void 0?c:e(h,c))-f,c-u),_=1;for(f0;)f in l?l[u]=l[f]:delete l[u],u+=_,f+=_;return l},Es}var nf;function qS(){if(nf)return tf;nf=1;var n=Q(),e=r1(),t=xr();return n({target:"Array",proto:!0},{copyWithin:e}),t("copyWithin"),tf}var af={},Ss,sf;function Er(){if(sf)return Ss;sf=1;var n=Ue();return Ss=function(e,t){var r=[][e];return!!r&&n(function(){r.call(null,t||function(){throw 1},1)})},Ss}var of;function VS(){if(of)return af;of=1;var n=Q(),e=Ut().every,t=Er(),r=t("every");return n({target:"Array",proto:!0,forced:!r},{every:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),af}var lf={},ws,cf;function nc(){if(cf)return ws;cf=1;var n=Et(),e=Or(),t=kt();return ws=function(i){for(var a=n(this),s=t(a),l=arguments.length,c=e(l>1?arguments[1]:void 0,s),u=l>2?arguments[2]:void 0,f=u===void 0?s:e(u,s);f>c;)a[c++]=i;return a},ws}var uf;function KS(){if(uf)return lf;uf=1;var n=Q(),e=nc(),t=xr();return n({target:"Array",proto:!0},{fill:e}),t("fill"),lf}var df={},ff;function US(){if(ff)return df;ff=1;var n=Q(),e=Ut().filter,t=Kn(),r=t("filter");return n({target:"Array",proto:!0,forced:!r},{filter:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),df}var hf={},_f;function BS(){if(_f)return hf;_f=1;var n=Q(),e=Ut().find,t=xr(),r="find",i=!0;return r in[]&&Array(1)[r](function(){i=!1}),n({target:"Array",proto:!0,forced:i},{find:function(s){return e(this,s,arguments.length>1?arguments[1]:void 0)}}),t(r),hf}var pf={},vf;function XS(){if(vf)return pf;vf=1;var n=Q(),e=Ut().findIndex,t=xr(),r="findIndex",i=!0;return r in[]&&Array(1)[r](function(){i=!1}),n({target:"Array",proto:!0,forced:i},{findIndex:function(s){return e(this,s,arguments.length>1?arguments[1]:void 0)}}),t(r),pf}var gf={},Cs,mf;function n1(){if(mf)return Cs;mf=1;var n=zr(),e=kt(),t=Dr(),r=function(i,a,s,l,c,u,f,h){for(var p=c,_=0,g=f?t(f,h,3):!1,m,v;_0&&n(m))v=e(m),p=r(i,a,m,v,p,u-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");i[p]=m}p++}_++}return p};return Cs=r,Cs}var yf;function HS(){if(yf)return gf;yf=1;var n=Q(),e=n1(),t=Et(),r=kt(),i=Kt(),a=Nn();return n({target:"Array",proto:!0},{flat:function(){var l=arguments.length?arguments[0]:void 0,c=t(this),u=r(c),f=a(c,0);return f.length=e(f,c,c,u,0,l===void 0?1:i(l)),f}}),gf}var bf={},xf;function QS(){if(xf)return bf;xf=1;var n=Q(),e=n1(),t=Qt(),r=Et(),i=kt(),a=Nn();return n({target:"Array",proto:!0},{flatMap:function(l){var c=r(this),u=i(c),f;return t(l),f=a(c,0),f.length=e(f,c,c,u,0,1,l,arguments.length>1?arguments[1]:void 0),f}}),bf}var Ef={},Rs,Sf;function i1(){if(Sf)return Rs;Sf=1;var n=Ut().forEach,e=Er(),t=e("forEach");return Rs=t?[].forEach:function(i){return n(this,i,arguments.length>1?arguments[1]:void 0)},Rs}var wf;function jS(){if(wf)return Ef;wf=1;var n=Q(),e=i1();return n({target:"Array",proto:!0,forced:[].forEach!=e},{forEach:e}),Ef}var Cf={},Is,Rf;function WS(){if(Rf)return Is;Rf=1;var n=ut(),e=t1();return Is=function(t,r,i,a){try{return a?r(n(i)[0],i[1]):r(i)}catch(s){e(t,"throw",s)}},Is}var As,If;function a1(){if(If)return As;If=1;var n=Dr(),e=Et(),t=WS(),r=rc(),i=Dn(),a=kt(),s=$r(),l=gi(),c=Vn();return As=function(f){var h=e(f),p=i(this),_=arguments.length,g=_>1?arguments[1]:void 0,m=g!==void 0;m&&(g=n(g,_>2?arguments[2]:void 0,2));var v=c(h),b=0,S,x,E,C,R,P;if(v&&!(this==Array&&r(v)))for(C=l(h,v),R=C.next,x=p?new this:[];!(E=R.call(C)).done;b++)P=m?t(C,g,[E.value,b],!0):E.value,s(x,b,P);else for(S=a(h),x=p?new this(S):Array(S);S>b;b++)P=m?g(h[b],b):h[b],s(x,b,P);return x.length=b,x},As}var Ts,Af;function mi(){if(Af)return Ts;Af=1;var n=ft(),e=n("iterator"),t=!1;try{var r=0,i={next:function(){return{done:!!r++}},return:function(){t=!0}};i[e]=function(){return this},Array.from(i,function(){throw 2})}catch{}return Ts=function(a,s){if(!s&&!t)return!1;var l=!1;try{var c={};c[e]=function(){return{next:function(){return{done:l=!0}}}},a(c)}catch{}return l},Ts}var Tf;function zS(){if(Tf)return Cf;Tf=1;var n=Q(),e=a1(),t=mi(),r=!t(function(i){Array.from(i)});return n({target:"Array",stat:!0,forced:r},{from:e}),Cf}var kf={},Pf;function GS(){if(Pf)return kf;Pf=1;var n=Q(),e=Mn().includes,t=xr();return n({target:"Array",proto:!0},{includes:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),t("includes"),kf}var Ff={},Mf;function $S(){if(Mf)return Ff;Mf=1;var n=Q(),e=Mn().indexOf,t=Er(),r=[].indexOf,i=!!r&&1/[1].indexOf(1,-0)<0,a=t("indexOf");return n({target:"Array",proto:!0,forced:i||!a},{indexOf:function(l){return i?r.apply(this,arguments)||0:e(this,l,arguments.length>1?arguments[1]:void 0)}}),Ff}var Of={},Lf;function YS(){if(Lf)return Of;Lf=1;var n=Q(),e=zr();return n({target:"Array",stat:!0},{isArray:e}),Of}var ks,Df;function s1(){if(Df)return ks;Df=1;var n=Ue(),e=pt(),t=lr(),r=ir(),i=Ft(),a=ft(),s=nr(),l=a("iterator"),c=!1,u,f,h;[].keys&&(h=[].keys(),"next"in h?(f=r(r(h)),f!==Object.prototype&&(u=f)):c=!0);var p=u==null||n(function(){var _={};return u[l].call(_)!==_});return p?u={}:s&&(u=t(u)),e(u[l])||i(u,l,function(){return this}),ks={IteratorPrototype:u,BUGGY_SAFARI_ITERATORS:c},ks}var Ps,Nf;function ic(){if(Nf)return Ps;Nf=1;var n=s1().IteratorPrototype,e=lr(),t=gr(),r=cr(),i=qn(),a=function(){return this};return Ps=function(s,l,c){var u=l+" Iterator";return s.prototype=e(n,{next:t(1,c)}),r(s,u,!1,!0),i[u]=a,s},Ps}var Fs,qf;function ac(){if(qf)return Fs;qf=1;var n=Q(),e=nr(),t=Wr(),r=pt(),i=ic(),a=ir(),s=br(),l=cr(),c=$t(),u=Ft(),f=ft(),h=qn(),p=s1(),_=t.PROPER,g=t.CONFIGURABLE,m=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,b=f("iterator"),S="keys",x="values",E="entries",C=function(){return this};return Fs=function(R,P,F,k,q,ce,j){i(F,P,k);var K=function(G){if(G===q&&Me)return Me;if(!v&&G in ge)return ge[G];switch(G){case S:return function(){return new F(this,G)};case x:return function(){return new F(this,G)};case E:return function(){return new F(this,G)}}return function(){return new F(this)}},ue=P+" Iterator",ve=!1,ge=R.prototype,ye=ge[b]||ge["@@iterator"]||q&&ge[q],Me=!v&&ye||K(q),X=P=="Array"&&ge.entries||ye,L,H,pe;if(X&&(L=a(X.call(new R)),L!==Object.prototype&&L.next&&(!e&&a(L)!==m&&(s?s(L,m):r(L[b])||u(L,b,C)),l(L,ue,!0,!0),e&&(h[ue]=C))),_&&q==x&&ye&&ye.name!==x&&(!e&&g?c(ge,"name",x):(ve=!0,Me=function(){return ye.call(this)})),q)if(H={values:K(x),keys:ce?Me:K(S),entries:K(E)},j)for(pe in H)(v||ve||!(pe in ge))&&u(ge,pe,H[pe]);else n({target:P,proto:!0,forced:v||ve},H);return(!e||j)&&ge[b]!==Me&&u(ge,b,Me,{name:q}),h[P]=Me,H},Fs}var Ms,Vf;function yi(){if(Vf)return Ms;Vf=1;var n=Gt(),e=xr(),t=qn(),r=Vt(),i=ac(),a="Array Iterator",s=r.set,l=r.getterFor(a);return Ms=i(Array,"Array",function(c,u){s(this,{type:a,target:n(c),index:0,kind:u})},function(){var c=l(this),u=c.target,f=c.kind,h=c.index++;return!u||h>=u.length?(c.target=void 0,{value:void 0,done:!0}):f=="keys"?{value:h,done:!1}:f=="values"?{value:u[h],done:!1}:{value:[h,u[h]],done:!1}},"values"),t.Arguments=t.Array,e("keys"),e("values"),e("entries"),Ms}var Kf={},Uf;function ZS(){if(Uf)return Kf;Uf=1;var n=Q(),e=Tn(),t=Gt(),r=Er(),i=[].join,a=e!=Object,s=r("join",",");return n({target:"Array",proto:!0,forced:a||!s},{join:function(c){return i.call(t(this),c===void 0?",":c)}}),Kf}var Bf={},Os,Xf;function o1(){if(Xf)return Os;Xf=1;var n=Gt(),e=Kt(),t=kt(),r=Er(),i=Math.min,a=[].lastIndexOf,s=!!a&&1/[1].lastIndexOf(1,-0)<0,l=r("lastIndexOf"),c=s||!l;return Os=c?function(f){if(s)return a.apply(this,arguments)||0;var h=n(this),p=t(h),_=p-1;for(arguments.length>1&&(_=i(_,e(arguments[1]))),_<0&&(_=p+_);_>=0;_--)if(_ in h&&h[_]===f)return _||0;return-1}:a,Os}var Hf;function JS(){if(Hf)return Bf;Hf=1;var n=Q(),e=o1();return n({target:"Array",proto:!0,forced:e!==[].lastIndexOf},{lastIndexOf:e}),Bf}var Qf={},jf;function ew(){if(jf)return Qf;jf=1;var n=Q(),e=Ut().map,t=Kn(),r=t("map");return n({target:"Array",proto:!0,forced:!r},{map:function(a){return e(this,a,arguments.length>1?arguments[1]:void 0)}}),Qf}var Wf={},zf;function tw(){if(zf)return Wf;zf=1;var n=Q(),e=Ue(),t=Dn(),r=$r(),i=e(function(){function a(){}return!(Array.of.call(a)instanceof a)});return n({target:"Array",stat:!0,forced:i},{of:function(){for(var s=0,l=arguments.length,c=new(t(this)?this:Array)(l);l>s;)r(c,s,arguments[s++]);return c.length=l,c}}),Wf}var Gf={},Ls,$f;function bi(){if($f)return Ls;$f=1;var n=Qt(),e=Et(),t=Tn(),r=kt(),i=function(a){return function(s,l,c,u){n(l);var f=e(s),h=t(f),p=r(f),_=a?p-1:0,g=a?-1:1;if(c<2)for(;;){if(_ in h){u=h[_],_+=g;break}if(_+=g,a?_<0:p<=_)throw TypeError("Reduce of empty array with no initial value")}for(;a?_>=0:p>_;_+=g)_ in h&&(u=l(u,h[_],_,f));return u}};return Ls={left:i(!1),right:i(!0)},Ls}var Ds,Yf;function ln(){if(Yf)return Ds;Yf=1;var n=jr(),e=Ye();return Ds=n(e.process)=="process",Ds}var Zf;function rw(){if(Zf)return Gf;Zf=1;var n=Q(),e=bi().left,t=Er(),r=Fr(),i=ln(),a=t("reduce"),s=!i&&r>79&&r<83;return n({target:"Array",proto:!0,forced:!a||s},{reduce:function(c){return e(this,c,arguments.length,arguments.length>1?arguments[1]:void 0)}}),Gf}var Jf={},eh;function nw(){if(eh)return Jf;eh=1;var n=Q(),e=bi().right,t=Er(),r=Fr(),i=ln(),a=t("reduceRight"),s=!i&&r>79&&r<83;return n({target:"Array",proto:!0,forced:!a||s},{reduceRight:function(c){return e(this,c,arguments.length,arguments.length>1?arguments[1]:void 0)}}),Jf}var th={},rh;function iw(){if(rh)return th;rh=1;var n=Q(),e=zr(),t=[].reverse,r=[1,2];return n({target:"Array",proto:!0,forced:String(r)===String(r.reverse())},{reverse:function(){return e(this)&&(this.length=this.length),t.call(this)}}),th}var nh={},ih;function aw(){if(ih)return nh;ih=1;var n=Q(),e=zr(),t=Dn(),r=ct(),i=Or(),a=kt(),s=Gt(),l=$r(),c=ft(),u=Kn(),f=u("slice"),h=c("species"),p=[].slice,_=Math.max;return n({target:"Array",proto:!0,forced:!f},{slice:function(m,v){var b=s(this),S=a(b),x=i(m,S),E=i(v===void 0?S:v,S),C,R,P;if(e(b)&&(C=b.constructor,t(C)&&(C===Array||e(C.prototype))?C=void 0:r(C)&&(C=C[h],C===null&&(C=void 0)),C===Array||C===void 0))return p.call(b,x,E);for(R=new(C===void 0?Array:C)(_(E-x,0)),P=0;x1?arguments[1]:void 0)}}),ah}var oh={},Ns,lh;function l1(){if(lh)return Ns;lh=1;var n=Math.floor,e=function(i,a){var s=i.length,l=n(s/2);return s<8?t(i,a):r(e(i.slice(0,l),a),e(i.slice(l),a),a)},t=function(i,a){for(var s=i.length,l=1,c,u;l0;)i[u]=i[--u];u!==l++&&(i[u]=c)}return i},r=function(i,a,s){for(var l=i.length,c=a.length,u=0,f=0,h=[];u3)){if(u)return!0;if(h)return h<603;var E="",C,R,P,F;for(C=65;C<76;C++){switch(R=String.fromCharCode(C),C){case 66:case 69:case 70:case 72:P=3;break;case 68:case 71:P=4;break;default:P=2}for(F=0;F<47;F++)p.push({k:R+F,v:P})}for(p.sort(function(k,q){return q.v-k.v}),F=0;Fi(R)?1:-1}};return n({target:"Array",proto:!0,forced:S},{sort:function(C){C!==void 0&&e(C);var R=t(this);if(b)return C===void 0?_.call(R):_.call(R,C);var P=[],F=r(R),k,q;for(q=0;qh)throw TypeError(p);for(R=a(v,C),P=0;Pb-C+E;P--)delete v[P-1]}else if(E>C)for(P=b-C;P>S;P--)F=P+C-1,k=P+E-1,F in v?v[k]=v[F]:delete v[k];for(P=0;P>1,g=c===23?e(2,-24)-e(2,-77):0,m=l<0||l===0&&1/l<0?1:0,v=0,b,S,x;for(l=n(l),l!=l||l===1/0?(S=l!=l?1:0,b=p):(b=t(r(l)/i),l*(x=e(2,-b))<1&&(b--,x*=2),b+_>=1?l+=g/x:l+=g*e(2,1-_),l*x>=2&&(b++,x/=2),b+_>=p?(S=0,b=p):b+_>=1?(S=(l*x-1)*e(2,c),b=b+_):(S=l*e(2,_-1)*e(2,c),b=0));c>=8;f[v++]=S&255,S/=256,c-=8);for(b=b<0;f[v++]=b&255,b/=256,h-=8);return f[--v]|=m*128,f},s=function(l,c){var u=l.length,f=u*8-c-1,h=(1<>1,_=f-7,g=u-1,m=l[g--],v=m&127,b;for(m>>=7;_>0;v=v*256+l[g],g--,_-=8);for(b=v&(1<<-_)-1,v>>=-_,_+=c;_>0;b=b*256+l[g],g--,_-=8);if(v===0)v=1-p;else{if(v===h)return b?NaN:m?-1/0:1/0;b=b+e(2,c),v=v-p}return(m?-1:1)*b*e(2,v-c)};return js={pack:a,unpack:s},js}var Ws,Ah;function xi(){if(Ah)return Ws;Ah=1;var n=Ye(),e=dt(),t=oc(),r=Wr(),i=$t(),a=un(),s=Ue(),l=qr(),c=Kt(),u=Yt(),f=d1(),h=fw(),p=ir(),_=br(),g=Lr().f,m=xt().f,v=nc(),b=cr(),S=Vt(),x=r.PROPER,E=r.CONFIGURABLE,C=S.get,R=S.set,P="ArrayBuffer",F="DataView",k="prototype",q="Wrong length",ce="Wrong index",j=n[P],K=j,ue=n[F],ve=ue&&ue[k],ge=Object.prototype,ye=n.RangeError,Me=h.pack,X=h.unpack,L=function(ae){return[ae&255]},H=function(ae){return[ae&255,ae>>8&255]},pe=function(ae){return[ae&255,ae>>8&255,ae>>16&255,ae>>24&255]},G=function(ae){return ae[3]<<24|ae[2]<<16|ae[1]<<8|ae[0]},Se=function(ae){return Me(ae,23,4)},Te=function(ae){return Me(ae,52,8)},De=function(ae,le){m(ae[k],le,{get:function(){return C(this)[le]}})},Ae=function(ae,le,Ie,Ge){var tt=f(Ie),nt=C(ae);if(tt+le>nt.byteLength)throw ye(ce);var it=C(nt.buffer).bytes,Be=tt+nt.byteOffset,Ze=it.slice(Be,Be+le);return Ge?Ze:Ze.reverse()},ke=function(ae,le,Ie,Ge,tt,nt){var it=f(Ie),Be=C(ae);if(it+le>Be.byteLength)throw ye(ce);for(var Ze=C(Be.buffer).bytes,$e=it+Be.byteOffset,Ct=Ge(+tt),bt=0;bttt)throw ye("Wrong offset");if(Ge=Ge===void 0?tt-nt:u(Ge),nt+Ge>tt)throw ye(q);R(this,{buffer:le,byteLength:Ge,byteOffset:nt}),e||(this.buffer=le,this.byteLength=Ge,this.byteOffset=nt)},e&&(De(K,"byteLength"),De(ue,"buffer"),De(ue,"byteLength"),De(ue,"byteOffset")),a(ue[k],{getInt8:function(le){return Ae(this,1,le)[0]<<24>>24},getUint8:function(le){return Ae(this,1,le)[0]},getInt16:function(le){var Ie=Ae(this,2,le,arguments.length>1?arguments[1]:void 0);return(Ie[1]<<8|Ie[0])<<16>>16},getUint16:function(le){var Ie=Ae(this,2,le,arguments.length>1?arguments[1]:void 0);return Ie[1]<<8|Ie[0]},getInt32:function(le){return G(Ae(this,4,le,arguments.length>1?arguments[1]:void 0))},getUint32:function(le){return G(Ae(this,4,le,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(le){return X(Ae(this,4,le,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(le){return X(Ae(this,8,le,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(le,Ie){ke(this,1,le,L,Ie)},setUint8:function(le,Ie){ke(this,1,le,L,Ie)},setInt16:function(le,Ie){ke(this,2,le,H,Ie,arguments.length>2?arguments[2]:void 0)},setUint16:function(le,Ie){ke(this,2,le,H,Ie,arguments.length>2?arguments[2]:void 0)},setInt32:function(le,Ie){ke(this,4,le,pe,Ie,arguments.length>2?arguments[2]:void 0)},setUint32:function(le,Ie){ke(this,4,le,pe,Ie,arguments.length>2?arguments[2]:void 0)},setFloat32:function(le,Ie){ke(this,4,le,Se,Ie,arguments.length>2?arguments[2]:void 0)},setFloat64:function(le,Ie){ke(this,8,le,Te,Ie,arguments.length>2?arguments[2]:void 0)}});else{var st=x&&j.name!==P;if(!s(function(){j(1)})||!s(function(){new j(-1)})||s(function(){return new j,new j(1.5),new j(NaN),st&&!E})){K=function(le){return l(this,K),new j(f(le))};for(var et=K[k]=j[k],Ne=g(j),Pe=0,Fe;Ne.length>Pe;)(Fe=Ne[Pe++])in K||i(K,Fe,j[Fe]);et.constructor=K}else st&&E&&i(j,"name",P);_&&p(ve)!==ge&&_(ve,ge);var me=new ue(new K(2)),Oe=ve.setInt8;me.setInt8(0,2147483648),me.setInt8(1,2147483649),(me.getInt8(0)||!me.getInt8(1))&&a(ve,{setInt8:function(le,Ie){Oe.call(this,le,Ie<<24>>24)},setUint8:function(le,Ie){Oe.call(this,le,Ie<<24>>24)}},{unsafe:!0})}return b(K,P),b(ue,F),Ws={ArrayBuffer:K,DataView:ue},Ws}var Th;function hw(){if(Th)return Eh;Th=1;var n=Q(),e=Ye(),t=xi(),r=cn(),i="ArrayBuffer",a=t[i],s=e[i];return n({global:!0,forced:s!==a},{ArrayBuffer:a}),r(i),Eh}var kh={},zs,Ph;function _t(){if(Ph)return zs;Ph=1;var n=oc(),e=dt(),t=Ye(),r=pt(),i=ct(),a=Tt(),s=Gr(),l=Hl(),c=$t(),u=Ft(),f=xt().f,h=ir(),p=br(),_=ft(),g=Pn(),m=t.Int8Array,v=m&&m.prototype,b=t.Uint8ClampedArray,S=b&&b.prototype,x=m&&h(m),E=v&&h(v),C=Object.prototype,R=C.isPrototypeOf,P=_("toStringTag"),F=g("TYPED_ARRAY_TAG"),k=g("TYPED_ARRAY_CONSTRUCTOR"),q=n&&!!p&&s(t.opera)!=="Opera",ce=!1,j,K,ue,ve={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},ge={BigInt64Array:8,BigUint64Array:8},ye=function(Se){if(!i(Se))return!1;var Te=s(Se);return Te==="DataView"||a(ve,Te)||a(ge,Te)},Me=function(G){if(!i(G))return!1;var Se=s(G);return a(ve,Se)||a(ge,Se)},X=function(G){if(Me(G))return G;throw TypeError("Target is not a typed array")},L=function(G){if(r(G)&&(!p||R.call(x,G)))return G;throw TypeError(l(G)+" is not a typed array constructor")},H=function(G,Se,Te){if(e){if(Te)for(var De in ve){var Ae=t[De];if(Ae&&a(Ae.prototype,G))try{delete Ae.prototype[G]}catch{}}(!E[G]||Te)&&u(E,G,Te?Se:q&&v[G]||Se)}},pe=function(G,Se,Te){var De,Ae;if(e){if(p){if(Te){for(De in ve)if(Ae=t[De],Ae&&a(Ae,G))try{delete Ae[G]}catch{}}if(!x[G]||Te)try{return u(x,G,Te?Se:q&&x[G]||Se)}catch{}else return}for(De in ve)Ae=t[De],Ae&&(!Ae[G]||Te)&&u(Ae,G,Se)}};for(j in ve)K=t[j],ue=K&&K.prototype,ue?c(ue,k,K):q=!1;for(j in ge)K=t[j],ue=K&&K.prototype,ue&&c(ue,k,K);if((!q||!r(x)||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},q))for(j in ve)t[j]&&p(t[j],x);if((!q||!E||E===C)&&(E=x.prototype,q))for(j in ve)t[j]&&p(t[j].prototype,E);if(q&&h(S)!==E&&p(S,E),e&&!a(E,P)){ce=!0,f(E,P,{get:function(){return i(this)?this[F]:void 0}});for(j in ve)t[j]&&c(t[j],F,j)}return zs={NATIVE_ARRAY_BUFFER_VIEWS:q,TYPED_ARRAY_CONSTRUCTOR:k,TYPED_ARRAY_TAG:ce&&F,aTypedArray:X,aTypedArrayConstructor:L,exportTypedArrayMethod:H,exportTypedArrayStaticMethod:pe,isView:ye,isTypedArray:Me,TypedArray:x,TypedArrayPrototype:E},zs}var Fh;function _w(){if(Fh)return kh;Fh=1;var n=Q(),e=_t(),t=e.NATIVE_ARRAY_BUFFER_VIEWS;return n({target:"ArrayBuffer",stat:!0,forced:!t},{isView:e.isView}),kh}var Mh={},Gs,Oh;function lc(){if(Oh)return Gs;Oh=1;var n=Dn(),e=Hl();return Gs=function(t){if(n(t))return t;throw TypeError(e(t)+" is not a constructor")},Gs}var $s,Lh;function dn(){if(Lh)return $s;Lh=1;var n=ut(),e=lc(),t=ft(),r=t("species");return $s=function(i,a){var s=n(i).constructor,l;return s===void 0||(l=n(s)[r])==null?a:e(l)},$s}var Dh;function pw(){if(Dh)return Mh;Dh=1;var n=Q(),e=Ue(),t=xi(),r=ut(),i=Or(),a=Yt(),s=dn(),l=t.ArrayBuffer,c=t.DataView,u=l.prototype.slice,f=e(function(){return!new l(2).slice(1,void 0).byteLength});return n({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:f},{slice:function(p,_){if(u!==void 0&&_===void 0)return u.call(r(this),p);for(var g=r(this).byteLength,m=i(p,g),v=i(_===void 0?g:_,g),b=new(s(this,l))(a(v-m)),S=new c(this),x=new c(b),E=0;m0;(l>>>=1)&&(a+=a))l&1&&(s+=a);return s},Ys}var Zs,Gh;function uc(){if(Gh)return Zs;Gh=1;var n=Yt(),e=vt(),t=cc(),r=Dt(),i=Math.ceil,a=function(s){return function(l,c,u){var f=e(r(l)),h=n(c),p=f.length,_=u===void 0?" ":e(u),g,m;return h<=p||_==""?f:(g=h-p,m=t.call(_,i(g/_.length)),m.length>g&&(m=m.slice(0,g)),s?f+m:m+f)}};return Zs={start:a(!1),end:a(!0)},Zs}var Js,$h;function xw(){if($h)return Js;$h=1;var n=Ue(),e=uc().start,t=Math.abs,r=Date.prototype,i=r.getTime,a=r.toISOString;return Js=n(function(){return a.call(new Date(-5e13-1))!="0385-07-25T07:06:39.999Z"})||!n(function(){a.call(new Date(NaN))})?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var l=this,c=l.getUTCFullYear(),u=l.getUTCMilliseconds(),f=c<0?"-":c>9999?"+":"";return f+e(t(c),f?6:4,0)+"-"+e(l.getUTCMonth()+1,2,0)+"-"+e(l.getUTCDate(),2,0)+"T"+e(l.getUTCHours(),2,0)+":"+e(l.getUTCMinutes(),2,0)+":"+e(l.getUTCSeconds(),2,0)+"."+e(u,3,0)+"Z"}:a,Js}var Yh;function Ew(){if(Yh)return Wh;Yh=1;var n=Q(),e=xw();return n({target:"Date",proto:!0,forced:Date.prototype.toISOString!==e},{toISOString:e}),Wh}var Zh={},Jh;function Sw(){if(Jh)return Zh;Jh=1;var n=Q(),e=Ue(),t=Et(),r=Wl(),i=e(function(){return new Date(NaN).toJSON()!==null||Date.prototype.toJSON.call({toISOString:function(){return 1}})!==1});return n({target:"Date",proto:!0,forced:i},{toJSON:function(s){var l=t(this),c=r(l,"number");return typeof c=="number"&&!isFinite(c)?null:l.toISOString()}}),Zh}var e_={},eo,t_;function ww(){if(t_)return eo;t_=1;var n=ut(),e=Wx();return eo=function(t){if(n(this),t==="string"||t==="default")t="string";else if(t!=="number")throw TypeError("Incorrect hint");return e(this,t)},eo}var r_;function Cw(){if(r_)return e_;r_=1;var n=Ft(),e=ww(),t=ft(),r=t("toPrimitive"),i=Date.prototype;return r in i||n(i,r,e),e_}var n_={},i_;function Rw(){if(i_)return n_;i_=1;var n=Ft(),e=Date.prototype,t="Invalid Date",r="toString",i=e[r],a=e.getTime;return String(new Date(NaN))!=t&&n(e,r,function(){var l=a.call(this);return l===l?i.call(this):t}),n_}var a_={},s_;function Iw(){if(s_)return a_;s_=1;var n=Q(),e=vt(),t=/[\w*+\-./@]/,r=function(i,a){for(var s=i.toString(16);s.length1?arguments[1]:void 0,3),k;k=k?k.next:P.first;)for(F(k.value,k.key,this);k&&k.removed;)k=k.previous},has:function(R){return!!E(this,R)}}),t(b.prototype,m?{get:function(R){var P=E(this,R);return P&&P.value},set:function(R,P){return x(this,R===0?0:R,P)}}:{add:function(R){return x(this,R=R===0?0:R,R)}}),c&&n(b.prototype,"size",{get:function(){return S(this).size}}),b},setStrong:function(_,g,m){var v=g+" Iterator",b=p(g),S=p(v);s(_,g,function(x,E){h(this,{type:v,target:x,state:b(x),kind:E,last:void 0})},function(){for(var x=S(this),E=x.kind,C=x.last;C&&C.removed;)C=C.previous;return!x.target||!(x.last=C=C?C.next:x.state.first)?(x.target=void 0,{value:void 0,done:!0}):E=="keys"?{value:C.key,done:!1}:E=="values"?{value:C.value,done:!1}:{value:[C.key,C.value],done:!1}},m?"entries":"values",!m,!0),l(g)}},so}var oo,C_;function Ow(){if(C_)return oo;C_=1;var n=Si(),e=h1();return oo=n("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},e),oo}var R_={},lo,I_;function _1(){if(I_)return lo;I_=1;var n=Math.log;return lo=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:n(1+t)},lo}var A_;function Lw(){if(A_)return R_;A_=1;var n=Q(),e=_1(),t=Math.acosh,r=Math.log,i=Math.sqrt,a=Math.LN2,s=!t||Math.floor(t(Number.MAX_VALUE))!=710||t(1/0)!=1/0;return n({target:"Math",stat:!0,forced:s},{acosh:function(c){return(c=+c)<1?NaN:c>9490626562425156e-8?r(c)+a:e(c-1+i(c-1)*i(c+1))}}),R_}var T_={},k_;function Dw(){if(k_)return T_;k_=1;var n=Q(),e=Math.asinh,t=Math.log,r=Math.sqrt;function i(a){return!isFinite(a=+a)||a==0?a:a<0?-i(-a):t(a+r(a*a+1))}return n({target:"Math",stat:!0,forced:!(e&&1/e(0)>0)},{asinh:i}),T_}var P_={},F_;function Nw(){if(F_)return P_;F_=1;var n=Q(),e=Math.atanh,t=Math.log;return n({target:"Math",stat:!0,forced:!(e&&1/e(-0)<0)},{atanh:function(i){return(i=+i)==0?i:t((1+i)/(1-i))/2}}),P_}var M_={},co,O_;function dc(){return O_||(O_=1,co=Math.sign||function(e){return(e=+e)==0||e!=e?e:e<0?-1:1}),co}var L_;function qw(){if(L_)return M_;L_=1;var n=Q(),e=dc(),t=Math.abs,r=Math.pow;return n({target:"Math",stat:!0},{cbrt:function(a){return e(a=+a)*r(t(a),1/3)}}),M_}var D_={},N_;function Vw(){if(N_)return D_;N_=1;var n=Q(),e=Math.floor,t=Math.log,r=Math.LOG2E;return n({target:"Math",stat:!0},{clz32:function(a){return(a>>>=0)?31-e(t(a+.5)*r):32}}),D_}var q_={},uo,V_;function wi(){if(V_)return uo;V_=1;var n=Math.expm1,e=Math.exp;return uo=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||n(-2e-17)!=-2e-17?function(r){return(r=+r)==0?r:r>-1e-6&&r<1e-6?r+r*r/2:e(r)-1}:n,uo}var K_;function Kw(){if(K_)return q_;K_=1;var n=Q(),e=wi(),t=Math.cosh,r=Math.abs,i=Math.E;return n({target:"Math",stat:!0,forced:!t||t(710)===1/0},{cosh:function(s){var l=e(r(s)-1)+1;return(l+1/(l*i*i))*(i/2)}}),q_}var U_={},B_;function Uw(){if(B_)return U_;B_=1;var n=Q(),e=wi();return n({target:"Math",stat:!0,forced:e!=Math.expm1},{expm1:e}),U_}var X_={},fo,H_;function Bw(){if(H_)return fo;H_=1;var n=dc(),e=Math.abs,t=Math.pow,r=t(2,-52),i=t(2,-23),a=t(2,127)*(2-i),s=t(2,-126),l=function(c){return c+1/r-1/r};return fo=Math.fround||function(u){var f=e(u),h=n(u),p,_;return fa||_!=_?h*(1/0):h*_)},fo}var Q_;function Xw(){if(Q_)return X_;Q_=1;var n=Q(),e=Bw();return n({target:"Math",stat:!0},{fround:e}),X_}var j_={},W_;function Hw(){if(W_)return j_;W_=1;var n=Q(),e=Math.hypot,t=Math.abs,r=Math.sqrt,i=!!e&&e(1/0,NaN)!==1/0;return n({target:"Math",stat:!0,forced:i},{hypot:function(s,l){for(var c=0,u=0,f=arguments.length,h=0,p,_;u0?(_=p/h,c+=_*_):c+=p;return h===1/0?1/0:h*r(c)}}),j_}var z_={},G_;function Qw(){if(G_)return z_;G_=1;var n=Q(),e=Ue(),t=Math.imul,r=e(function(){return t(4294967295,5)!=-5||t.length!=2});return n({target:"Math",stat:!0,forced:r},{imul:function(a,s){var l=65535,c=+a,u=+s,f=l&c,h=l&u;return 0|f*h+((l&c>>>16)*h+f*(l&u>>>16)<<16>>>0)}}),z_}var $_={},Y_;function jw(){if(Y_)return $_;Y_=1;var n=Q(),e=Math.log,t=Math.LOG10E;return n({target:"Math",stat:!0},{log10:function(i){return e(i)*t}}),$_}var Z_={},J_;function Ww(){if(J_)return Z_;J_=1;var n=Q(),e=_1();return n({target:"Math",stat:!0},{log1p:e}),Z_}var ep={},tp;function zw(){if(tp)return ep;tp=1;var n=Q(),e=Math.log,t=Math.LN2;return n({target:"Math",stat:!0},{log2:function(i){return e(i)/t}}),ep}var rp={},np;function Gw(){if(np)return rp;np=1;var n=Q(),e=dc();return n({target:"Math",stat:!0},{sign:e}),rp}var ip={},ap;function $w(){if(ap)return ip;ap=1;var n=Q(),e=Ue(),t=wi(),r=Math.abs,i=Math.exp,a=Math.E,s=e(function(){return Math.sinh(-2e-17)!=-2e-17});return n({target:"Math",stat:!0,forced:s},{sinh:function(c){return r(c=+c)<1?(t(c)-t(-c))/2:(i(c-1)-i(-c-1))*(a/2)}}),ip}var sp={},op;function Yw(){if(op)return sp;op=1;var n=Q(),e=wi(),t=Math.exp;return n({target:"Math",stat:!0},{tanh:function(i){var a=e(i=+i),s=e(-i);return a==1/0?1:s==1/0?-1:(a-s)/(t(i)+t(-i))}}),sp}var lp={},cp;function Zw(){if(cp)return lp;cp=1;var n=cr();return n(Math,"Math",!0),lp}var up={},dp;function Jw(){if(dp)return up;dp=1;var n=Q(),e=Math.ceil,t=Math.floor;return n({target:"Math",stat:!0},{trunc:function(i){return(i>0?t:e)(i)}}),up}var fp={},ho,hp;function fc(){if(hp)return ho;hp=1;var n=1 .valueOf;return ho=function(e){return n.call(e)},ho}var _o,_p;function Ci(){return _p||(_p=1,_o=` +\v\f\r                 \u2028\u2029\uFEFF`),_o}var po,pp;function fn(){if(pp)return po;pp=1;var n=Dt(),e=vt(),t=Ci(),r="["+t+"]",i=RegExp("^"+r+r+"*"),a=RegExp(r+r+"*$"),s=function(l){return function(c){var u=e(n(c));return l&1&&(u=u.replace(i,"")),l&2&&(u=u.replace(a,"")),u}};return po={start:s(1),end:s(2),trim:s(3)},po}var vp;function eC(){if(vp)return fp;vp=1;var n=dt(),e=Ye(),t=On(),r=Ft(),i=Tt(),a=Ei(),s=kn(),l=Wl(),c=Ue(),u=Lr().f,f=Bt().f,h=xt().f,p=fc(),_=fn().trim,g="Number",m=e[g],v=m.prototype,b=function(P){var F=l(P,"number");return typeof F=="bigint"?F:S(F)},S=function(P){var F=l(P,"number"),k,q,ce,j,K,ue,ve,ge;if(s(F))throw TypeError("Cannot convert a Symbol value to a number");if(typeof F=="string"&&F.length>2){if(F=_(F),k=F.charCodeAt(0),k===43||k===45){if(q=F.charCodeAt(2),q===88||q===120)return NaN}else if(k===48){switch(F.charCodeAt(1)){case 66:case 98:ce=2,j=49;break;case 79:case 111:ce=8,j=55;break;default:return+F}for(K=F.slice(2),ue=K.length,ve=0;vej)return NaN;return parseInt(K,ce)}}return+F};if(t(g,!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var x=function(F){var k=arguments.length<1?0:m(b(F)),q=this;return q instanceof x&&c(function(){p(q)})?a(Object(k),q,x):k},E=n?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),C=0,R;E.length>C;C++)i(m,R=E[C])&&!i(x,R)&&h(x,R,f(m,R));x.prototype=v,v.constructor=x,r(e,g,x)}return fp}var gp={},mp;function tC(){if(mp)return gp;mp=1;var n=Q();return n({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)}),gp}var yp={},vo,bp;function rC(){if(bp)return vo;bp=1;var n=Ye(),e=n.isFinite;return vo=Number.isFinite||function(r){return typeof r=="number"&&e(r)},vo}var xp;function nC(){if(xp)return yp;xp=1;var n=Q(),e=rC();return n({target:"Number",stat:!0},{isFinite:e}),yp}var Ep={},go,Sp;function hc(){if(Sp)return go;Sp=1;var n=ct(),e=Math.floor;return go=Number.isInteger||function(r){return!n(r)&&isFinite(r)&&e(r)===r},go}var wp;function iC(){if(wp)return Ep;wp=1;var n=Q(),e=hc();return n({target:"Number",stat:!0},{isInteger:e}),Ep}var Cp={},Rp;function aC(){if(Rp)return Cp;Rp=1;var n=Q();return n({target:"Number",stat:!0},{isNaN:function(t){return t!=t}}),Cp}var Ip={},Ap;function sC(){if(Ap)return Ip;Ap=1;var n=Q(),e=hc(),t=Math.abs;return n({target:"Number",stat:!0},{isSafeInteger:function(i){return e(i)&&t(i)<=9007199254740991}}),Ip}var Tp={},kp;function oC(){if(kp)return Tp;kp=1;var n=Q();return n({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Tp}var Pp={},Fp;function lC(){if(Fp)return Pp;Fp=1;var n=Q();return n({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991}),Pp}var Mp={},mo,Op;function p1(){if(Op)return mo;Op=1;var n=Ye(),e=Ue(),t=vt(),r=fn().trim,i=Ci(),a=n.parseFloat,s=n.Symbol,l=s&&s.iterator,c=1/a(i+"-0")!==-1/0||l&&!e(function(){a(Object(l))});return mo=c?function(f){var h=r(t(f)),p=a(h);return p===0&&h.charAt(0)=="-"?-0:p}:a,mo}var Lp;function cC(){if(Lp)return Mp;Lp=1;var n=Q(),e=p1();return n({target:"Number",stat:!0,forced:Number.parseFloat!=e},{parseFloat:e}),Mp}var Dp={},yo,Np;function v1(){if(Np)return yo;Np=1;var n=Ye(),e=Ue(),t=vt(),r=fn().trim,i=Ci(),a=n.parseInt,s=n.Symbol,l=s&&s.iterator,c=/^[+-]?0x/i,u=a(i+"08")!==8||a(i+"0x16")!==22||l&&!e(function(){a(Object(l))});return yo=u?function(h,p){var _=r(t(h));return a(_,p>>>0||(c.test(_)?16:10))}:a,yo}var qp;function uC(){if(qp)return Dp;qp=1;var n=Q(),e=v1();return n({target:"Number",stat:!0,forced:Number.parseInt!=e},{parseInt:e}),Dp}var Vp={},Kp;function dC(){if(Kp)return Vp;Kp=1;var n=Q(),e=Kt(),t=fc(),r=cc(),i=Ue(),a=1 .toFixed,s=Math.floor,l=function(_,g,m){return g===0?m:g%2===1?l(_,g-1,m*_):l(_*_,g/2,m)},c=function(_){for(var g=0,m=_;m>=4096;)g+=12,m/=4096;for(;m>=2;)g+=1,m/=2;return g},u=function(_,g,m){for(var v=-1,b=m;++v<6;)b+=g*_[v],_[v]=b%1e7,b=s(b/1e7)},f=function(_,g){for(var m=6,v=0;--m>=0;)v+=_[m],_[m]=s(v/g),v=v%g*1e7},h=function(_){for(var g=6,m="";--g>=0;)if(m!==""||g===0||_[g]!==0){var v=String(_[g]);m=m===""?v:m+r.call("0",7-v.length)+v}return m},p=a&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128")||!i(function(){a.call({})});return n({target:"Number",proto:!0,forced:p},{toFixed:function(g){var m=t(this),v=e(g),b=[0,0,0,0,0,0],S="",x="0",E,C,R,P;if(v<0||v>20)throw RangeError("Incorrect fraction digits");if(m!=m)return"NaN";if(m<=-1e21||m>=1e21)return String(m);if(m<0&&(S="-",m=-m),m>1e-21)if(E=c(m*l(2,69,1))-69,C=E<0?m*l(2,-E,1):m/l(2,E,1),C*=4503599627370496,E=52-E,E>0){for(u(b,0,C),R=v;R>=7;)u(b,1e7,0),R-=7;for(u(b,l(10,R,1),0),R=E-1;R>=23;)f(b,1<<23),R-=23;f(b,1<0?(P=x.length,x=S+(P<=v?"0."+r.call("0",v-P)+x:x.slice(0,P-v)+"."+x.slice(P-v))):x=S+x,x}}),Vp}var Up={},Bp;function fC(){if(Bp)return Up;Bp=1;var n=Q(),e=Ue(),t=fc(),r=1 .toPrecision,i=e(function(){return r.call(1,void 0)!=="1"})||!e(function(){r.call({})});return n({target:"Number",proto:!0,forced:i},{toPrecision:function(s){return s===void 0?r.call(t(this)):r.call(t(this),s)}}),Up}var Xp={},bo,Hp;function g1(){if(Hp)return bo;Hp=1;var n=dt(),e=Ue(),t=Ln(),r=Gl(),i=fi(),a=Et(),s=Tn(),l=Object.assign,c=Object.defineProperty;return bo=!l||e(function(){if(n&&l({b:1},l(c({},"a",{enumerable:!0,get:function(){c(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var u={},f={},h=Symbol(),p="abcdefghijklmnopqrst";return u[h]=7,p.split("").forEach(function(_){f[_]=_}),l({},u)[h]!=7||t(l({},f)).join("")!=p})?function(f,h){for(var p=a(f),_=arguments.length,g=1,m=r.f,v=i.f;_>g;)for(var b=s(arguments[g++]),S=m?t(b).concat(m(b)):t(b),x=S.length,E=0,C;x>E;)C=S[E++],(!n||v.call(b,C))&&(p[C]=b[C]);return p}:l,bo}var Qp;function hC(){if(Qp)return Xp;Qp=1;var n=Q(),e=g1();return n({target:"Object",stat:!0,forced:Object.assign!==e},{assign:e}),Xp}var jp={},Wp;function _C(){if(Wp)return jp;Wp=1;var n=Q(),e=dt(),t=lr();return n({target:"Object",stat:!0,sham:!e},{create:t}),jp}var zp={},xo,Gp;function Ri(){if(Gp)return xo;Gp=1;var n=nr(),e=Ye(),t=Ue(),r=sc();return xo=n||!t(function(){if(!(r&&r<535)){var i=Math.random();__defineSetter__.call(null,i,function(){}),delete e[i]}}),xo}var $p;function pC(){if($p)return zp;$p=1;var n=Q(),e=dt(),t=Ri(),r=Qt(),i=Et(),a=xt();return e&&n({target:"Object",proto:!0,forced:t},{__defineGetter__:function(l,c){a.f(i(this),l,{get:r(c),enumerable:!0,configurable:!0})}}),zp}var Yp={},Zp;function vC(){if(Zp)return Yp;Zp=1;var n=Q(),e=dt(),t=Jl();return n({target:"Object",stat:!0,forced:!e,sham:!e},{defineProperties:t}),Yp}var Jp={},ev;function gC(){if(ev)return Jp;ev=1;var n=Q(),e=dt(),t=xt();return n({target:"Object",stat:!0,forced:!e,sham:!e},{defineProperty:t.f}),Jp}var tv={},rv;function mC(){if(rv)return tv;rv=1;var n=Q(),e=dt(),t=Ri(),r=Qt(),i=Et(),a=xt();return e&&n({target:"Object",proto:!0,forced:t},{__defineSetter__:function(l,c){a.f(i(this),l,{set:r(c),enumerable:!0,configurable:!0})}}),tv}var nv={},Eo,iv;function m1(){if(iv)return Eo;iv=1;var n=dt(),e=Ln(),t=Gt(),r=fi().f,i=function(a){return function(s){for(var l=t(s),c=e(l),u=c.length,f=0,h=[],p;u>f;)p=c[f++],(!n||r.call(l,p))&&h.push(a?[p,l[p]]:l[p]);return h}};return Eo={entries:i(!0),values:i(!1)},Eo}var av;function yC(){if(av)return nv;av=1;var n=Q(),e=m1().entries;return n({target:"Object",stat:!0},{entries:function(r){return e(r)}}),nv}var sv={},ov;function bC(){if(ov)return sv;ov=1;var n=Q(),e=Un(),t=Ue(),r=ct(),i=Yr().onFreeze,a=Object.freeze,s=t(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!e},{freeze:function(c){return a&&r(c)?a(i(c)):c}}),sv}var lv={},cv;function xC(){if(cv)return lv;cv=1;var n=Q(),e=Nr(),t=$r();return n({target:"Object",stat:!0},{fromEntries:function(i){var a={};return e(i,function(s,l){t(a,s,l)},{AS_ENTRIES:!0}),a}}),lv}var uv={},dv;function EC(){if(dv)return uv;dv=1;var n=Q(),e=Ue(),t=Gt(),r=Bt().f,i=dt(),a=e(function(){r(1)}),s=!i||a;return n({target:"Object",stat:!0,forced:s,sham:!i},{getOwnPropertyDescriptor:function(c,u){return r(t(c),u)}}),uv}var fv={},hv;function SC(){if(hv)return fv;hv=1;var n=Q(),e=dt(),t=$l(),r=Gt(),i=Bt(),a=$r();return n({target:"Object",stat:!0,sham:!e},{getOwnPropertyDescriptors:function(l){for(var c=r(l),u=i.f,f=t(c),h={},p=0,_,g;f.length>p;)g=u(c,_=f[p++]),g!==void 0&&a(h,_,g);return h}}),fv}var _v={},pv;function wC(){if(pv)return _v;pv=1;var n=Q(),e=Ue(),t=ec().f,r=e(function(){return!Object.getOwnPropertyNames(1)});return n({target:"Object",stat:!0,forced:r},{getOwnPropertyNames:t}),_v}var vv={},gv;function CC(){if(gv)return vv;gv=1;var n=Q(),e=Ue(),t=Et(),r=ir(),i=tc(),a=e(function(){r(1)});return n({target:"Object",stat:!0,forced:a,sham:!i},{getPrototypeOf:function(l){return r(t(l))}}),vv}var mv={},yv;function RC(){if(yv)return mv;yv=1;var n=Q(),e=Tt();return n({target:"Object",stat:!0},{hasOwn:e}),mv}var bv={},So,xv;function y1(){return xv||(xv=1,So=Object.is||function(e,t){return e===t?e!==0||1/e===1/t:e!=e&&t!=t}),So}var Ev;function IC(){if(Ev)return bv;Ev=1;var n=Q(),e=y1();return n({target:"Object",stat:!0},{is:e}),bv}var Sv={},wv;function AC(){if(wv)return Sv;wv=1;var n=Q(),e=Ue(),t=ct(),r=Object.isExtensible,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isExtensible:function(s){return t(s)?r?r(s):!0:!1}}),Sv}var Cv={},Rv;function TC(){if(Rv)return Cv;Rv=1;var n=Q(),e=Ue(),t=ct(),r=Object.isFrozen,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isFrozen:function(s){return t(s)?r?r(s):!1:!0}}),Cv}var Iv={},Av;function kC(){if(Av)return Iv;Av=1;var n=Q(),e=Ue(),t=ct(),r=Object.isSealed,i=e(function(){});return n({target:"Object",stat:!0,forced:i},{isSealed:function(s){return t(s)?r?r(s):!1:!0}}),Iv}var Tv={},kv;function PC(){if(kv)return Tv;kv=1;var n=Q(),e=Et(),t=Ln(),r=Ue(),i=r(function(){t(1)});return n({target:"Object",stat:!0,forced:i},{keys:function(s){return t(e(s))}}),Tv}var Pv={},Fv;function FC(){if(Fv)return Pv;Fv=1;var n=Q(),e=dt(),t=Ri(),r=Et(),i=Mr(),a=ir(),s=Bt().f;return e&&n({target:"Object",proto:!0,forced:t},{__lookupGetter__:function(c){var u=r(this),f=i(c),h;do if(h=s(u,f))return h.get;while(u=a(u))}}),Pv}var Mv={},Ov;function MC(){if(Ov)return Mv;Ov=1;var n=Q(),e=dt(),t=Ri(),r=Et(),i=Mr(),a=ir(),s=Bt().f;return e&&n({target:"Object",proto:!0,forced:t},{__lookupSetter__:function(c){var u=r(this),f=i(c),h;do if(h=s(u,f))return h.set;while(u=a(u))}}),Mv}var Lv={},Dv;function OC(){if(Dv)return Lv;Dv=1;var n=Q(),e=ct(),t=Yr().onFreeze,r=Un(),i=Ue(),a=Object.preventExtensions,s=i(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!r},{preventExtensions:function(c){return a&&e(c)?a(t(c)):c}}),Lv}var Nv={},qv;function LC(){if(qv)return Nv;qv=1;var n=Q(),e=ct(),t=Yr().onFreeze,r=Un(),i=Ue(),a=Object.seal,s=i(function(){a(1)});return n({target:"Object",stat:!0,forced:s,sham:!r},{seal:function(c){return a&&e(c)?a(t(c)):c}}),Nv}var Vv={},Kv;function DC(){if(Kv)return Vv;Kv=1;var n=Q(),e=br();return n({target:"Object",stat:!0},{setPrototypeOf:e}),Vv}var Uv={},wo,Bv;function NC(){if(Bv)return wo;Bv=1;var n=Zl(),e=Gr();return wo=n?{}.toString:function(){return"[object "+e(this)+"]"},wo}var Xv;function qC(){if(Xv)return Uv;Xv=1;var n=Zl(),e=Ft(),t=NC();return n||e(Object.prototype,"toString",t,{unsafe:!0}),Uv}var Hv={},Qv;function VC(){if(Qv)return Hv;Qv=1;var n=Q(),e=m1().values;return n({target:"Object",stat:!0},{values:function(r){return e(r)}}),Hv}var jv={},Wv;function KC(){if(Wv)return jv;Wv=1;var n=Q(),e=p1();return n({global:!0,forced:parseFloat!=e},{parseFloat:e}),jv}var zv={},Gv;function UC(){if(Gv)return zv;Gv=1;var n=Q(),e=v1();return n({global:!0,forced:parseInt!=e},{parseInt:e}),zv}var $v={},Co,Yv;function b1(){if(Yv)return Co;Yv=1;var n=Ye();return Co=n.Promise,Co}var Ro,Zv;function x1(){if(Zv)return Ro;Zv=1;var n=mr();return Ro=/(?:ipad|iphone|ipod).*applewebkit/i.test(n),Ro}var Io,Jv;function _c(){if(Jv)return Io;Jv=1;var n=Ye(),e=pt(),t=Ue(),r=Dr(),i=Yx(),a=_i(),s=x1(),l=ln(),c=n.setImmediate,u=n.clearImmediate,f=n.process,h=n.MessageChannel,p=n.Dispatch,_=0,g={},m="onreadystatechange",v,b,S,x;try{v=n.location}catch{}var E=function(F){if(g.hasOwnProperty(F)){var k=g[F];delete g[F],k()}},C=function(F){return function(){E(F)}},R=function(F){E(F.data)},P=function(F){n.postMessage(String(F),v.protocol+"//"+v.host)};return(!c||!u)&&(c=function(k){for(var q=[],ce=arguments.length,j=1;ce>j;)q.push(arguments[j++]);return g[++_]=function(){(e(k)?k:Function(k)).apply(void 0,q)},b(_),_},u=function(k){delete g[k]},l?b=function(F){f.nextTick(C(F))}:p&&p.now?b=function(F){p.now(C(F))}:h&&!s?(S=new h,x=S.port2,S.port1.onmessage=R,b=r(x.postMessage,x,1)):n.addEventListener&&e(n.postMessage)&&!n.importScripts&&v&&v.protocol!=="file:"&&!t(P)?(b=P,n.addEventListener("message",R,!1)):m in a("script")?b=function(F){i.appendChild(a("script"))[m]=function(){i.removeChild(this),E(F)}}:b=function(F){setTimeout(C(F),0)}),Io={set:c,clear:u},Io}var Ao,eg;function BC(){if(eg)return Ao;eg=1;var n=mr(),e=Ye();return Ao=/ipad|iphone|ipod/i.test(n)&&e.Pebble!==void 0,Ao}var To,tg;function XC(){if(tg)return To;tg=1;var n=mr();return To=/web0s(?!.*chrome)/i.test(n),To}var ko,rg;function E1(){if(rg)return ko;rg=1;var n=Ye(),e=Bt().f,t=_c().set,r=x1(),i=BC(),a=XC(),s=ln(),l=n.MutationObserver||n.WebKitMutationObserver,c=n.document,u=n.process,f=n.Promise,h=e(n,"queueMicrotask"),p=h&&h.value,_,g,m,v,b,S,x,E;return p||(_=function(){var C,R;for(s&&(C=u.domain)&&C.exit();g;){R=g.fn,g=g.next;try{R()}catch(P){throw g?v():m=void 0,P}}m=void 0,C&&C.enter()},!r&&!s&&!a&&l&&c?(b=!0,S=c.createTextNode(""),new l(_).observe(S,{characterData:!0}),v=function(){S.data=b=!b}):!i&&f&&f.resolve?(x=f.resolve(void 0),x.constructor=f,E=x.then,v=function(){E.call(x,_)}):s?v=function(){u.nextTick(_)}:v=function(){t.call(n,_)}),ko=p||function(C){var R={fn:C,next:void 0};m&&(m.next=R),g||(g=R,v()),m=R},ko}var Po={},ng;function Ii(){if(ng)return Po;ng=1;var n=Qt(),e=function(t){var r,i;this.promise=new t(function(a,s){if(r!==void 0||i!==void 0)throw TypeError("Bad Promise constructor");r=a,i=s}),this.resolve=n(r),this.reject=n(i)};return Po.f=function(t){return new e(t)},Po}var Fo,ig;function S1(){if(ig)return Fo;ig=1;var n=ut(),e=ct(),t=Ii();return Fo=function(r,i){if(n(r),e(i)&&i.constructor===r)return i;var a=t.f(r),s=a.resolve;return s(i),a.promise},Fo}var Mo,ag;function HC(){if(ag)return Mo;ag=1;var n=Ye();return Mo=function(e,t){var r=n.console;r&&r.error&&(arguments.length===1?r.error(e):r.error(e,t))},Mo}var Oo,sg;function pc(){return sg||(sg=1,Oo=function(n){try{return{error:!1,value:n()}}catch(e){return{error:!0,value:e}}}),Oo}var Lo,og;function QC(){return og||(og=1,Lo=typeof window=="object"),Lo}var lg;function jC(){if(lg)return $v;lg=1;var n=Q(),e=nr(),t=Ye(),r=Ht(),i=b1(),a=Ft(),s=un(),l=br(),c=cr(),u=cn(),f=Qt(),h=pt(),p=ct(),_=qr(),g=pi(),m=Nr(),v=mi(),b=dn(),S=_c().set,x=E1(),E=S1(),C=HC(),R=Ii(),P=pc(),F=Vt(),k=On(),q=ft(),ce=QC(),j=ln(),K=Fr(),ue=q("species"),ve="Promise",ge=F.get,ye=F.set,Me=F.getterFor(ve),X=i&&i.prototype,L=i,H=X,pe=t.TypeError,G=t.document,Se=t.process,Te=R.f,De=Te,Ae=!!(G&&G.createEvent&&t.dispatchEvent),ke=h(t.PromiseRejectionEvent),st="unhandledrejection",et="rejectionhandled",Ne=0,Pe=1,Fe=2,me=1,Oe=2,ae=!1,le,Ie,Ge,tt,nt=k(ve,function(){var D=g(L),V=D!==String(L);if(!V&&K===66||e&&!H.finally)return!0;if(K>=51&&/native code/.test(D))return!1;var W=new L(function(y){y(1)}),A=function(y){y(function(){},function(){})},N=W.constructor={};return N[ue]=A,ae=W.then(function(){})instanceof A,ae?!V&&ce&&!ke:!0}),it=nt||!v(function(D){L.all(D).catch(function(){})}),Be=function(D){var V;return p(D)&&h(V=D.then)?V:!1},Ze=function(D,V){if(!D.notified){D.notified=!0;var W=D.reactions;x(function(){for(var A=D.value,N=D.state==Pe,y=0;W.length>y;){var _e=W[y++],Xe=N?_e.ok:_e.fail,xe=_e.resolve,ze=_e.reject,Re=_e.domain,Je,se,de;try{Xe?(N||(D.rejection===Oe&&Mt(D),D.rejection=me),Xe===!0?Je=A:(Re&&Re.enter(),Je=Xe(A),Re&&(Re.exit(),de=!0)),Je===_e.promise?ze(pe("Promise-chain cycle")):(se=Be(Je))?se.call(Je,xe,ze):xe(Je)):ze(A)}catch(Xt){Re&&!de&&Re.exit(),ze(Xt)}}D.reactions=[],D.notified=!1,V&&!D.rejection&&Ct(D)})}},$e=function(D,V,W){var A,N;Ae?(A=G.createEvent("Event"),A.promise=V,A.reason=W,A.initEvent(D,!1,!0),t.dispatchEvent(A)):A={promise:V,reason:W},!ke&&(N=t["on"+D])?N(A):D===st&&C("Unhandled promise rejection",W)},Ct=function(D){S.call(t,function(){var V=D.facade,W=D.value,A=bt(D),N;if(A&&(N=P(function(){j?Se.emit("unhandledRejection",W,V):$e(st,V,W)}),D.rejection=j||bt(D)?Oe:me,N.error))throw N.value})},bt=function(D){return D.rejection!==me&&!D.parent},Mt=function(D){S.call(t,function(){var V=D.facade;j?Se.emit("rejectionHandled",V):$e(et,V,D.value)})},w=function(D,V,W){return function(A){D(V,A,W)}},ee=function(D,V,W){D.done||(D.done=!0,W&&(D=W),D.value=V,D.state=Fe,Ze(D,!0))},he=function(D,V,W){if(!D.done){D.done=!0,W&&(D=W);try{if(D.facade===V)throw pe("Promise can't be resolved itself");var A=Be(V);A?x(function(){var N={done:!1};try{A.call(V,w(he,N,D),w(ee,N,D))}catch(y){ee(N,y,D)}}):(D.value=V,D.state=Pe,Ze(D,!1))}catch(N){ee({done:!1},N,D)}}};if(nt&&(L=function(V){_(this,L,ve),f(V),le.call(this);var W=ge(this);try{V(w(he,W),w(ee,W))}catch(A){ee(W,A)}},H=L.prototype,le=function(V){ye(this,{type:ve,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Ne,value:void 0})},le.prototype=s(H,{then:function(V,W){var A=Me(this),N=Te(b(this,L));return N.ok=h(V)?V:!0,N.fail=h(W)&&W,N.domain=j?Se.domain:void 0,A.parent=!0,A.reactions.push(N),A.state!=Ne&&Ze(A,!1),N.promise},catch:function(D){return this.then(void 0,D)}}),Ie=function(){var D=new le,V=ge(D);this.promise=D,this.resolve=w(he,V),this.reject=w(ee,V)},R.f=Te=function(D){return D===L||D===Ge?new Ie(D):De(D)},!e&&h(i)&&X!==Object.prototype)){tt=X.then,ae||(a(X,"then",function(V,W){var A=this;return new L(function(N,y){tt.call(A,N,y)}).then(V,W)},{unsafe:!0}),a(X,"catch",H.catch,{unsafe:!0}));try{delete X.constructor}catch{}l&&l(X,H)}return n({global:!0,wrap:!0,forced:nt},{Promise:L}),c(L,ve,!1,!0),u(ve),Ge=r(ve),n({target:ve,stat:!0,forced:nt},{reject:function(V){var W=Te(this);return W.reject.call(void 0,V),W.promise}}),n({target:ve,stat:!0,forced:e||nt},{resolve:function(V){return E(e&&this===Ge?L:this,V)}}),n({target:ve,stat:!0,forced:it},{all:function(V){var W=this,A=Te(W),N=A.resolve,y=A.reject,_e=P(function(){var Xe=f(W.resolve),xe=[],ze=0,Re=1;m(V,function(Je){var se=ze++,de=!1;xe.push(void 0),Re++,Xe.call(W,Je).then(function(Xt){de||(de=!0,xe[se]=Xt,--Re||N(xe))},y)}),--Re||N(xe)});return _e.error&&y(_e.value),A.promise},race:function(V){var W=this,A=Te(W),N=A.reject,y=P(function(){var _e=f(W.resolve);m(V,function(Xe){_e.call(W,Xe).then(A.resolve,N)})});return y.error&&N(y.value),A.promise}}),$v}var cg={},ug;function WC(){if(ug)return cg;ug=1;var n=Q(),e=Qt(),t=Ii(),r=pc(),i=Nr();return n({target:"Promise",stat:!0},{allSettled:function(s){var l=this,c=t.f(l),u=c.resolve,f=c.reject,h=r(function(){var p=e(l.resolve),_=[],g=0,m=1;i(s,function(v){var b=g++,S=!1;_.push(void 0),m++,p.call(l,v).then(function(x){S||(S=!0,_[b]={status:"fulfilled",value:x},--m||u(_))},function(x){S||(S=!0,_[b]={status:"rejected",reason:x},--m||u(_))})}),--m||u(_)});return h.error&&f(h.value),c.promise}}),cg}var dg={},fg;function zC(){if(fg)return dg;fg=1;var n=Q(),e=Qt(),t=Ht(),r=Ii(),i=pc(),a=Nr(),s="No one promise resolved";return n({target:"Promise",stat:!0},{any:function(c){var u=this,f=r.f(u),h=f.resolve,p=f.reject,_=i(function(){var g=e(u.resolve),m=[],v=0,b=1,S=!1;a(c,function(x){var E=v++,C=!1;m.push(void 0),b++,g.call(u,x).then(function(R){C||S||(S=!0,h(R))},function(R){C||S||(C=!0,m[E]=R,--b||p(new(t("AggregateError"))(m,s)))})}),--b||p(new(t("AggregateError"))(m,s))});return _.error&&p(_.value),f.promise}}),dg}var hg={},_g;function GC(){if(_g)return hg;_g=1;var n=Q(),e=nr(),t=b1(),r=Ue(),i=Ht(),a=pt(),s=dn(),l=S1(),c=Ft(),u=!!t&&r(function(){t.prototype.finally.call({then:function(){}},function(){})});if(n({target:"Promise",proto:!0,real:!0,forced:u},{finally:function(h){var p=s(this,i("Promise")),_=a(h);return this.then(_?function(g){return l(p,h()).then(function(){return g})}:h,_?function(g){return l(p,h()).then(function(){throw g})}:h)}}),!e&&a(t)){var f=i("Promise").prototype.finally;t.prototype.finally!==f&&c(t.prototype,"finally",f,{unsafe:!0})}return hg}var pg={},vg;function $C(){if(vg)return pg;vg=1;var n=Q(),e=Ht(),t=Qt(),r=ut(),i=Ue(),a=e("Reflect","apply"),s=Function.apply,l=!i(function(){a(function(){})});return n({target:"Reflect",stat:!0,forced:l},{apply:function(u,f,h){return t(u),r(h),a?a(u,f,h):s.call(u,f,h)}}),pg}var gg={},mg;function YC(){if(mg)return gg;mg=1;var n=Q(),e=Ht(),t=lc(),r=ut(),i=ct(),a=lr(),s=f1(),l=Ue(),c=e("Reflect","construct"),u=l(function(){function p(){}return!(c(function(){},[],p)instanceof p)}),f=!l(function(){c(function(){})}),h=u||f;return n({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(_,g){t(_),r(g);var m=arguments.length<3?_:t(arguments[2]);if(f&&!u)return c(_,g,m);if(_==m){switch(g.length){case 0:return new _;case 1:return new _(g[0]);case 2:return new _(g[0],g[1]);case 3:return new _(g[0],g[1],g[2]);case 4:return new _(g[0],g[1],g[2],g[3])}var v=[null];return v.push.apply(v,g),new(s.apply(_,v))}var b=m.prototype,S=a(i(b)?b:Object.prototype),x=Function.apply.call(_,S,g);return i(x)?x:S}}),gg}var yg={},bg;function ZC(){if(bg)return yg;bg=1;var n=Q(),e=dt(),t=ut(),r=Mr(),i=xt(),a=Ue(),s=a(function(){Reflect.defineProperty(i.f({},1,{value:1}),1,{value:2})});return n({target:"Reflect",stat:!0,forced:s,sham:!e},{defineProperty:function(c,u,f){t(c);var h=r(u);t(f);try{return i.f(c,h,f),!0}catch{return!1}}}),yg}var xg={},Eg;function JC(){if(Eg)return xg;Eg=1;var n=Q(),e=ut(),t=Bt().f;return n({target:"Reflect",stat:!0},{deleteProperty:function(i,a){var s=t(e(i),a);return s&&!s.configurable?!1:delete i[a]}}),xg}var Sg={},Do,wg;function w1(){if(wg)return Do;wg=1;var n=Tt();return Do=function(e){return e!==void 0&&(n(e,"value")||n(e,"writable"))},Do}var Cg;function eR(){if(Cg)return Sg;Cg=1;var n=Q(),e=ct(),t=ut(),r=w1(),i=Bt(),a=ir();function s(l,c){var u=arguments.length<3?l:arguments[2],f,h;if(t(l)===u)return l[c];if(f=i.f(l,c),f)return r(f)?f.value:f.get===void 0?void 0:f.get.call(u);if(e(h=a(l)))return s(h,c,u)}return n({target:"Reflect",stat:!0},{get:s}),Sg}var Rg={},Ig;function tR(){if(Ig)return Rg;Ig=1;var n=Q(),e=dt(),t=ut(),r=Bt();return n({target:"Reflect",stat:!0,sham:!e},{getOwnPropertyDescriptor:function(a,s){return r.f(t(a),s)}}),Rg}var Ag={},Tg;function rR(){if(Tg)return Ag;Tg=1;var n=Q(),e=ut(),t=ir(),r=tc();return n({target:"Reflect",stat:!0,sham:!r},{getPrototypeOf:function(a){return t(e(a))}}),Ag}var kg={},Pg;function nR(){if(Pg)return kg;Pg=1;var n=Q();return n({target:"Reflect",stat:!0},{has:function(t,r){return r in t}}),kg}var Fg={},Mg;function iR(){if(Mg)return Fg;Mg=1;var n=Q(),e=ut(),t=Object.isExtensible;return n({target:"Reflect",stat:!0},{isExtensible:function(i){return e(i),t?t(i):!0}}),Fg}var Og={},Lg;function aR(){if(Lg)return Og;Lg=1;var n=Q(),e=$l();return n({target:"Reflect",stat:!0},{ownKeys:e}),Og}var Dg={},Ng;function sR(){if(Ng)return Dg;Ng=1;var n=Q(),e=Ht(),t=ut(),r=Un();return n({target:"Reflect",stat:!0,sham:!r},{preventExtensions:function(a){t(a);try{var s=e("Object","preventExtensions");return s&&s(a),!0}catch{return!1}}}),Dg}var qg={},Vg;function oR(){if(Vg)return qg;Vg=1;var n=Q(),e=ut(),t=ct(),r=w1(),i=Ue(),a=xt(),s=Bt(),l=ir(),c=gr();function u(h,p,_){var g=arguments.length<4?h:arguments[3],m=s.f(e(h),p),v,b,S;if(!m){if(t(b=l(h)))return u(b,p,_,g);m=c(0)}if(r(m)){if(m.writable===!1||!t(g))return!1;if(v=s.f(g,p)){if(v.get||v.set||v.writable===!1)return!1;v.value=_,a.f(g,p,v)}else a.f(g,p,c(0,_))}else{if(S=m.set,S===void 0)return!1;S.call(g,_)}return!0}var f=i(function(){var h=function(){},p=a.f(new h,"a",{configurable:!0});return Reflect.set(h.prototype,"a",1,p)!==!1});return n({target:"Reflect",stat:!0,forced:f},{set:u}),qg}var Kg={},Ug;function lR(){if(Ug)return Kg;Ug=1;var n=Q(),e=ut(),t=e1(),r=br();return r&&n({target:"Reflect",stat:!0},{setPrototypeOf:function(a,s){e(a),t(s);try{return r(a,s),!0}catch{return!1}}}),Kg}var Bg={},Xg;function cR(){if(Xg)return Bg;Xg=1;var n=Q(),e=Ye(),t=cr();return n({global:!0},{Reflect:{}}),t(e.Reflect,"Reflect",!0),Bg}var Hg={},No,Qg;function Bn(){if(Qg)return No;Qg=1;var n=ct(),e=jr(),t=ft(),r=t("match");return No=function(i){var a;return n(i)&&((a=i[r])!==void 0?!!a:e(i)=="RegExp")},No}var qo,jg;function hn(){if(jg)return qo;jg=1;var n=ut();return qo=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},qo}var Qn={},Wg;function Ai(){if(Wg)return Qn;Wg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Qn.UNSUPPORTED_Y=n(function(){var r=t("a","y");return r.lastIndex=2,r.exec("abcd")!=null}),Qn.BROKEN_CARET=n(function(){var r=t("^r","gy");return r.lastIndex=2,r.exec("str")!=null}),Qn}var Vo,zg;function vc(){if(zg)return Vo;zg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Vo=n(function(){var r=t(".","s");return!(r.dotAll&&r.exec(` +`)&&r.flags==="s")}),Vo}var Ko,Gg;function C1(){if(Gg)return Ko;Gg=1;var n=Ue(),e=Ye(),t=e.RegExp;return Ko=n(function(){var r=t("(?b)","g");return r.exec("b").groups.a!=="b"||"b".replace(r,"$c")!=="bc"}),Ko}var $g;function uR(){if($g)return Hg;$g=1;var n=dt(),e=Ye(),t=On(),r=Ei(),i=$t(),a=xt().f,s=Lr().f,l=Bn(),c=vt(),u=hn(),f=Ai(),h=Ft(),p=Ue(),_=Tt(),g=Vt().enforce,m=cn(),v=ft(),b=vc(),S=C1(),x=v("match"),E=e.RegExp,C=E.prototype,R=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,P=/a/g,F=/a/g,k=new E(P)!==P,q=f.UNSUPPORTED_Y,ce=n&&(!k||q||b||S||p(function(){return F[x]=!1,E(P)!=P||E(F)==F||E(P,"i")!="/a/i"})),j=function(Me){for(var X=Me.length,L=0,H="",pe=!1,G;L<=X;L++){if(G=Me.charAt(L),G==="\\"){H+=G+Me.charAt(++L);continue}!pe&&G==="."?H+="[\\s\\S]":(G==="["?pe=!0:G==="]"&&(pe=!1),H+=G)}return H},K=function(Me){for(var X=Me.length,L=0,H="",pe=[],G={},Se=!1,Te=!1,De=0,Ae="",ke;L<=X;L++){if(ke=Me.charAt(L),ke==="\\")ke=ke+Me.charAt(++L);else if(ke==="]")Se=!1;else if(!Se)switch(!0){case ke==="[":Se=!0;break;case ke==="(":R.test(Me.slice(L+1))&&(L+=2,Te=!0),H+=ke,De++;continue;case(ke===">"&&Te):if(Ae===""||_(G,Ae))throw new SyntaxError("Invalid capture group name");G[Ae]=!0,pe.push([Ae,De]),Te=!1,Ae="";continue}Te?Ae+=ke:H+=ke}return[H,pe]};if(t("RegExp",ce)){for(var ue=function(X,L){var H=this instanceof ue,pe=l(X),G=L===void 0,Se=[],Te=X,De,Ae,ke,st,et,Ne;if(!H&&pe&&G&&X.constructor===ue)return X;if((pe||X instanceof ue)&&(X=X.source,G&&(L="flags"in Te?Te.flags:u.call(Te))),X=X===void 0?"":c(X),L=L===void 0?"":c(L),Te=X,b&&"dotAll"in P&&(Ae=!!L&&L.indexOf("s")>-1,Ae&&(L=L.replace(/s/g,""))),De=L,q&&"sticky"in P&&(ke=!!L&&L.indexOf("y")>-1,ke&&(L=L.replace(/y/g,""))),S&&(st=K(X),X=st[0],Se=st[1]),et=r(E(X,L),H?this:C,ue),(Ae||ke||Se.length)&&(Ne=g(et),Ae&&(Ne.dotAll=!0,Ne.raw=ue(j(X),De)),ke&&(Ne.sticky=!0),Se.length&&(Ne.groups=Se)),X!==Te)try{i(et,"source",Te===""?"(?:)":Te)}catch{}return et},ve=function(Me){Me in ue||a(ue,Me,{configurable:!0,get:function(){return E[Me]},set:function(X){E[Me]=X}})},ge=s(E),ye=0;ge.length>ye;)ve(ge[ye++]);C.constructor=ue,ue.prototype=C,h(e,"RegExp",ue)}return m("RegExp"),Hg}var Yg={},Zg;function dR(){if(Zg)return Yg;Zg=1;var n=dt(),e=vc(),t=xt().f,r=Vt().get,i=RegExp.prototype;return n&&e&&t(i,"dotAll",{configurable:!0,get:function(){if(this!==i){if(this instanceof RegExp)return!!r(this).dotAll;throw TypeError("Incompatible receiver, RegExp required")}}}),Yg}var Jg={},Uo,e0;function Ti(){if(e0)return Uo;e0=1;var n=vt(),e=hn(),t=Ai(),r=hi(),i=lr(),a=Vt().get,s=vc(),l=C1(),c=RegExp.prototype.exec,u=r("native-string-replace",String.prototype.replace),f=c,h=(function(){var m=/a/,v=/b*/g;return c.call(m,"a"),c.call(v,"a"),m.lastIndex!==0||v.lastIndex!==0})(),p=t.UNSUPPORTED_Y||t.BROKEN_CARET,_=/()??/.exec("")[1]!==void 0,g=h||_||p||s||l;return g&&(f=function(v){var b=this,S=a(b),x=n(v),E=S.raw,C,R,P,F,k,q,ce;if(E)return E.lastIndex=b.lastIndex,C=f.call(E,x),b.lastIndex=E.lastIndex,C;var j=S.groups,K=p&&b.sticky,ue=e.call(b),ve=b.source,ge=0,ye=x;if(K&&(ue=ue.replace("y",""),ue.indexOf("g")===-1&&(ue+="g"),ye=x.slice(b.lastIndex),b.lastIndex>0&&(!b.multiline||b.multiline&&x.charAt(b.lastIndex-1)!==` +`)&&(ve="(?: "+ve+")",ye=" "+ye,ge++),R=new RegExp("^(?:"+ve+")",ue)),_&&(R=new RegExp("^"+ve+"$(?!\\s)",ue)),h&&(P=b.lastIndex),F=c.call(K?R:b,ye),K?F?(F.input=F.input.slice(ge),F[0]=F[0].slice(ge),F.index=b.lastIndex,b.lastIndex+=F[0].length):b.lastIndex=0:h&&F&&(b.lastIndex=b.global?F.index+F[0].length:P),_&&F&&F.length>1&&u.call(F[0],R,function(){for(k=1;k=0?f:u+f;return h<0||h>=u?void 0:c.charAt(h)}}),d0}var h0={},Xo,_0;function ki(){if(_0)return Xo;_0=1;var n=Kt(),e=vt(),t=Dt(),r=function(i){return function(a,s){var l=e(t(a)),c=n(s),u=l.length,f,h;return c<0||c>=u?i?"":void 0:(f=l.charCodeAt(c),f<55296||f>56319||c+1===u||(h=l.charCodeAt(c+1))<56320||h>57343?i?l.charAt(c):f:i?l.slice(c,c+2):(f-55296<<10)+(h-56320)+65536)}};return Xo={codeAt:r(!1),charAt:r(!0)},Xo}var p0;function mR(){if(p0)return h0;p0=1;var n=Q(),e=ki().codeAt;return n({target:"String",proto:!0},{codePointAt:function(r){return e(this,r)}}),h0}var v0={},Ho,g0;function mc(){if(g0)return Ho;g0=1;var n=Bn();return Ho=function(e){if(n(e))throw TypeError("The method doesn't accept regular expressions");return e},Ho}var Qo,m0;function yc(){if(m0)return Qo;m0=1;var n=ft(),e=n("match");return Qo=function(t){var r=/./;try{"/./"[t](r)}catch{try{return r[e]=!1,"/./"[t](r)}catch{}}return!1},Qo}var y0;function yR(){if(y0)return v0;y0=1;var n=Q(),e=Bt().f,t=Yt(),r=vt(),i=mc(),a=Dt(),s=yc(),l=nr(),c="".endsWith,u=Math.min,f=s("endsWith"),h=!l&&!f&&!!(function(){var p=e(String.prototype,"endsWith");return p&&!p.writable})();return n({target:"String",proto:!0,forced:!h&&!f},{endsWith:function(_){var g=r(a(this));i(_);var m=arguments.length>1?arguments[1]:void 0,v=g.length,b=m===void 0?v:u(t(m),v),S=r(_);return c?c.call(g,S,b):g.slice(b-S.length,b)===S}}),v0}var b0={},x0;function bR(){if(x0)return b0;x0=1;var n=Q(),e=Or(),t=String.fromCharCode,r=String.fromCodePoint,i=!!r&&r.length!=1;return n({target:"String",stat:!0,forced:i},{fromCodePoint:function(s){for(var l=[],c=arguments.length,u=0,f;c>u;){if(f=+arguments[u++],e(f,1114111)!==f)throw RangeError(f+" is not a valid code point");l.push(f<65536?t(f):t(((f-=65536)>>10)+55296,f%1024+56320))}return l.join("")}}),b0}var E0={},S0;function xR(){if(S0)return E0;S0=1;var n=Q(),e=mc(),t=Dt(),r=vt(),i=yc();return n({target:"String",proto:!0,forced:!i("includes")},{includes:function(s){return!!~r(t(this)).indexOf(r(e(s)),arguments.length>1?arguments[1]:void 0)}}),E0}var w0={},C0;function R1(){if(C0)return w0;C0=1;var n=ki().charAt,e=vt(),t=Vt(),r=ac(),i="String Iterator",a=t.set,s=t.getterFor(i);return r(String,"String",function(l){a(this,{type:i,string:e(l),index:0})},function(){var c=s(this),u=c.string,f=c.index,h;return f>=u.length?{value:void 0,done:!0}:(h=n(u,f),c.index+=h.length,{value:h,done:!1})}),w0}var R0={},jo,I0;function Pi(){if(I0)return jo;I0=1,gc();var n=Ft(),e=Ti(),t=Ue(),r=ft(),i=$t(),a=r("species"),s=RegExp.prototype;return jo=function(l,c,u,f){var h=r(l),p=!t(function(){var v={};return v[h]=function(){return 7},""[l](v)!=7}),_=p&&!t(function(){var v=!1,b=/a/;return l==="split"&&(b={},b.constructor={},b.constructor[a]=function(){return b},b.flags="",b[h]=/./[h]),b.exec=function(){return v=!0,null},b[h](""),!v});if(!p||!_||u){var g=/./[h],m=c(h,""[l],function(v,b,S,x,E){var C=b.exec;return C===e||C===s.exec?p&&!E?{done:!0,value:g.call(b,S,x)}:{done:!0,value:v.call(S,b,x)}:{done:!1}});n(String.prototype,l,m[0]),n(s,h,m[1])}f&&i(s[h],"sham",!0)},jo}var Wo,A0;function Fi(){if(A0)return Wo;A0=1;var n=ki().charAt;return Wo=function(e,t,r){return t+(r?n(e,t).length:1)},Wo}var zo,T0;function Xn(){if(T0)return zo;T0=1;var n=ut(),e=pt(),t=jr(),r=Ti();return zo=function(i,a){var s=i.exec;if(e(s)){var l=s.call(i,a);return l!==null&&n(l),l}if(t(i)==="RegExp")return r.call(i,a);throw TypeError("RegExp#exec called on incompatible receiver")},zo}var k0;function ER(){if(k0)return R0;k0=1;var n=Pi(),e=ut(),t=Yt(),r=vt(),i=Dt(),a=yr(),s=Fi(),l=Xn();return n("match",function(c,u,f){return[function(p){var _=i(this),g=p==null?void 0:a(p,c);return g?g.call(p,_):new RegExp(p)[c](r(_))},function(h){var p=e(this),_=r(h),g=f(u,p,_);if(g.done)return g.value;if(!p.global)return l(p,_);var m=p.unicode;p.lastIndex=0;for(var v=[],b=0,S;(S=l(p,_))!==null;){var x=r(S[0]);v[b]=x,x===""&&(p.lastIndex=s(_,t(p.lastIndex),m)),b++}return b===0?null:v}]}),R0}var P0={},F0;function SR(){if(F0)return P0;F0=1;var n=Q(),e=ic(),t=Dt(),r=Yt(),i=vt(),a=ut(),s=jr(),l=Bn(),c=hn(),u=yr(),f=Ft(),h=Ue(),p=ft(),_=dn(),g=Fi(),m=Xn(),v=Vt(),b=nr(),S=p("matchAll"),x="RegExp String",E=x+" Iterator",C=v.set,R=v.getterFor(E),P=RegExp.prototype,F="".matchAll,k=!!F&&!h(function(){}),q=e(function(K,ue,ve,ge){C(this,{type:E,regexp:K,string:ue,global:ve,unicode:ge,done:!1})},x,function(){var K=R(this);if(K.done)return{value:void 0,done:!0};var ue=K.regexp,ve=K.string,ge=m(ue,ve);return ge===null?{value:void 0,done:K.done=!0}:K.global?(i(ge[0])===""&&(ue.lastIndex=g(ve,r(ue.lastIndex),K.unicode)),{value:ge,done:!1}):(K.done=!0,{value:ge,done:!1})}),ce=function(j){var K=a(this),ue=i(j),ve,ge,ye,Me,X,L;return ve=_(K,RegExp),ge=K.flags,ge===void 0&&K instanceof RegExp&&!("flags"in P)&&(ge=c.call(K)),ye=ge===void 0?"":i(ge),Me=new ve(ve===RegExp?K.source:K,ye),X=!!~ye.indexOf("g"),L=!!~ye.indexOf("u"),Me.lastIndex=r(K.lastIndex),new q(Me,ue,X,L)};return n({target:"String",proto:!0,forced:k},{matchAll:function(K){var ue=t(this),ve,ge,ye,Me;if(K!=null){if(l(K)&&(ve=i(t("flags"in P?K.flags:c.call(K))),!~ve.indexOf("g")))throw TypeError("`.matchAll` does not allow non-global regexes");if(k)return F.apply(ue,arguments);if(ye=u(K,S),ye===void 0&&b&&s(K)=="RegExp"&&(ye=ce),ye)return ye.call(K,ue)}else if(k)return F.apply(ue,arguments);return ge=i(ue),Me=new RegExp(K,"g"),b?ce.call(Me,ge):Me[S](ge)}}),b||S in P||f(P,S,ce),P0}var M0={},Go,O0;function I1(){if(O0)return Go;O0=1;var n=mr();return Go=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(n),Go}var L0;function wR(){if(L0)return M0;L0=1;var n=Q(),e=uc().end,t=I1();return n({target:"String",proto:!0,forced:t},{padEnd:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),M0}var D0={},N0;function CR(){if(N0)return D0;N0=1;var n=Q(),e=uc().start,t=I1();return n({target:"String",proto:!0,forced:t},{padStart:function(i){return e(this,i,arguments.length>1?arguments[1]:void 0)}}),D0}var q0={},V0;function RR(){if(V0)return q0;V0=1;var n=Q(),e=Gt(),t=Et(),r=vt(),i=kt(),a=Array.prototype,s=a.push,l=a.join;return n({target:"String",stat:!0},{raw:function(u){for(var f=e(t(u).raw),h=i(f),p=arguments.length,_=[],g=0;h>g;){if(s.call(_,r(f[g++])),g===h)return l.call(_,"");g]*>)/g,i=/\$([$&'`]|\d{1,2})/g;return $o=function(a,s,l,c,u,f){var h=l+a.length,p=c.length,_=i;return u!==void 0&&(u=n(u),_=r),t.call(f,_,function(g,m){var v;switch(m.charAt(0)){case"$":return"$";case"&":return a;case"`":return s.slice(0,l);case"'":return s.slice(h);case"<":v=u[m.slice(1,-1)];break;default:var b=+m;if(b===0)return g;if(b>p){var S=e(b/10);return S===0?g:S<=p?c[S-1]===void 0?m.charAt(1):c[S-1]+m.charAt(1):g}v=c[b-1]}return v===void 0?"":v})},$o}var H0;function AR(){if(H0)return B0;H0=1;var n=Pi(),e=Ue(),t=ut(),r=pt(),i=Kt(),a=Yt(),s=vt(),l=Dt(),c=Fi(),u=yr(),f=A1(),h=Xn(),p=ft(),_=p("replace"),g=Math.max,m=Math.min,v=function(E){return E===void 0?E:String(E)},b=(function(){return"a".replace(/./,"$0")==="$0"})(),S=(function(){return/./[_]?/./[_]("a","$0")==="":!1})(),x=!e(function(){var E=/./;return E.exec=function(){var C=[];return C.groups={a:"7"},C},"".replace(E,"$")!=="7"});return n("replace",function(E,C,R){var P=S?"$":"$0";return[function(k,q){var ce=l(this),j=k==null?void 0:u(k,_);return j?j.call(k,ce,q):C.call(s(ce),k,q)},function(F,k){var q=t(this),ce=s(F);if(typeof k=="string"&&k.indexOf(P)===-1&&k.indexOf("$<")===-1){var j=R(C,q,ce,k);if(j.done)return j.value}var K=r(k);K||(k=s(k));var ue=q.global;if(ue){var ve=q.unicode;q.lastIndex=0}for(var ge=[];;){var ye=h(q,ce);if(ye===null||(ge.push(ye),!ue))break;var Me=s(ye[0]);Me===""&&(q.lastIndex=c(ce,a(q.lastIndex),ve))}for(var X="",L=0,H=0;H=L&&(X+=ce.slice(L,G)+ke,L=G+pe.length)}return X+ce.slice(L)}]},!x||!b||S),B0}var Q0={},j0;function TR(){if(j0)return Q0;j0=1;var n=Q(),e=Dt(),t=pt(),r=Bn(),i=vt(),a=yr(),s=hn(),l=A1(),c=ft(),u=nr(),f=c("replace"),h=RegExp.prototype,p=Math.max,_=function(g,m,v){return v>g.length?-1:m===""?v:g.indexOf(m,v)};return n({target:"String",proto:!0},{replaceAll:function(m,v){var b=e(this),S,x,E,C,R,P,F,k,q,ce=0,j=0,K="";if(m!=null){if(S=r(m),S&&(x=i(e("flags"in h?m.flags:s.call(m))),!~x.indexOf("g")))throw TypeError("`.replaceAll` does not allow non-global regexes");if(E=a(m,f),E)return E.call(m,b,v);if(u&&S)return i(b).replace(m,v)}for(C=i(b),R=i(m),P=t(v),P||(v=i(v)),F=R.length,k=p(1,F),ce=_(C,R,0);ce!==-1;)P?q=i(v(R,ce,C)):q=l(R,C,ce,[],void 0,v),K+=C.slice(j,ce)+q,j=ce+F,ce=_(C,R,ce+k);return j1||"".split(/.?/).length?C=function(R,P){var F=l(r(this)),k=P===void 0?v:P>>>0;if(k===0)return[];if(R===void 0)return[F];if(!e(R))return x.call(F,R,k);for(var q=[],ce=(R.ignoreCase?"i":"")+(R.multiline?"m":"")+(R.unicode?"u":"")+(R.sticky?"y":""),j=0,K=new RegExp(R.source,ce+"g"),ue,ve,ge;(ue=f.call(K,F))&&(ve=K.lastIndex,!(ve>j&&(q.push(F.slice(j,ue.index)),ue.length>1&&ue.index=k)));)K.lastIndex===ue.index&&K.lastIndex++;return j===F.length?(ge||!K.test(""))&&q.push(""):q.push(F.slice(j)),q.length>k?q.slice(0,k):q}:"0".split(void 0,0).length?C=function(R,P){return R===void 0&&P===0?[]:x.call(this,R,P)}:C=x,[function(P,F){var k=r(this),q=P==null?void 0:c(P,S);return q?q.call(P,k,F):C.call(l(k),P,F)},function(R,P){var F=t(this),k=l(R),q=E(C,F,k,P,C!==x);if(q.done)return q.value;var ce=i(F,RegExp),j=F.unicode,K=(F.ignoreCase?"i":"")+(F.multiline?"m":"")+(F.unicode?"u":"")+(_?"g":"y"),ue=new ce(_?"^(?:"+F.source+")":F,K),ve=P===void 0?v:P>>>0;if(ve===0)return[];if(k.length===0)return u(ue,k)===null?[k]:[];for(var ge=0,ye=0,Me=[];ye1?arguments[1]:void 0,g.length)),v=r(_);return c?c.call(g,v,m):g.slice(m,m+v.length)===v}}),Y0}var J0={},em;function MR(){if(em)return J0;em=1;var n=Q(),e=Dt(),t=Kt(),r=vt(),i="".slice,a=Math.max,s=Math.min,l=!"".substr||"ab".substr(-1)!=="b";return n({target:"String",proto:!0,forced:l},{substr:function(u,f){var h=r(e(this)),p=h.length,_=t(u),g,m;return _===1/0&&(_=0),_<0&&(_=a(p+_,0)),g=f===void 0?p:t(f),g<=0||g===1/0?"":(m=s(_+g,p),_>=m?"":i.call(h,_,m))}}),J0}var tm={},Yo,rm;function bc(){if(rm)return Yo;rm=1;var n=Wr().PROPER,e=Ue(),t=Ci(),r="​…᠎";return Yo=function(i){return e(function(){return!!t[i]()||r[i]()!==r||n&&t[i].name!==i})},Yo}var nm;function OR(){if(nm)return tm;nm=1;var n=Q(),e=fn().trim,t=bc();return n({target:"String",proto:!0,forced:t("trim")},{trim:function(){return e(this)}}),tm}var im={},am;function LR(){if(am)return im;am=1;var n=Q(),e=fn().end,t=bc(),r=t("trimEnd"),i=r?function(){return e(this)}:"".trimEnd;return n({target:"String",proto:!0,name:"trimEnd",forced:r},{trimEnd:i,trimRight:i}),im}var sm={},om;function DR(){if(om)return sm;om=1;var n=Q(),e=fn().start,t=bc(),r=t("trimStart"),i=r?function(){return e(this)}:"".trimStart;return n({target:"String",proto:!0,name:"trimStart",forced:r},{trimStart:i,trimLeft:i}),sm}var lm={},Zo,cm;function Zt(){if(cm)return Zo;cm=1;var n=Dt(),e=vt(),t=/"/g;return Zo=function(r,i,a,s){var l=e(n(r)),c="<"+i;return a!==""&&(c+=" "+a+'="'+e(s).replace(t,""")+'"'),c+">"+l+""},Zo}var Jo,um;function Jt(){if(um)return Jo;um=1;var n=Ue();return Jo=function(e){return n(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})},Jo}var dm;function NR(){if(dm)return lm;dm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("anchor")},{anchor:function(i){return e(this,"a","name",i)}}),lm}var fm={},hm;function qR(){if(hm)return fm;hm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("big")},{big:function(){return e(this,"big","","")}}),fm}var _m={},pm;function VR(){if(pm)return _m;pm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("blink")},{blink:function(){return e(this,"blink","","")}}),_m}var vm={},gm;function KR(){if(gm)return vm;gm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("bold")},{bold:function(){return e(this,"b","","")}}),vm}var mm={},ym;function UR(){if(ym)return mm;ym=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fixed")},{fixed:function(){return e(this,"tt","","")}}),mm}var bm={},xm;function BR(){if(xm)return bm;xm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fontcolor")},{fontcolor:function(i){return e(this,"font","color",i)}}),bm}var Em={},Sm;function XR(){if(Sm)return Em;Sm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("fontsize")},{fontsize:function(i){return e(this,"font","size",i)}}),Em}var wm={},Cm;function HR(){if(Cm)return wm;Cm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("italics")},{italics:function(){return e(this,"i","","")}}),wm}var Rm={},Im;function QR(){if(Im)return Rm;Im=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("link")},{link:function(i){return e(this,"a","href",i)}}),Rm}var Am={},Tm;function jR(){if(Tm)return Am;Tm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("small")},{small:function(){return e(this,"small","","")}}),Am}var km={},Pm;function WR(){if(Pm)return km;Pm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("strike")},{strike:function(){return e(this,"strike","","")}}),km}var Fm={},Mm;function zR(){if(Mm)return Fm;Mm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("sub")},{sub:function(){return e(this,"sub","","")}}),Fm}var Om={},Lm;function GR(){if(Lm)return Om;Lm=1;var n=Q(),e=Zt(),t=Jt();return n({target:"String",proto:!0,forced:t("sup")},{sup:function(){return e(this,"sup","","")}}),Om}var Dm={},jn={exports:{}},el,Nm;function xc(){if(Nm)return el;Nm=1;var n=Ye(),e=Ue(),t=mi(),r=_t().NATIVE_ARRAY_BUFFER_VIEWS,i=n.ArrayBuffer,a=n.Int8Array;return el=!r||!e(function(){a(1)})||!e(function(){new a(-1)})||!t(function(s){new a,new a(null),new a(1.5),new a(s)},!0)||e(function(){return new a(new i(2),1,void 0).length!==1}),el}var tl,qm;function $R(){if(qm)return tl;qm=1;var n=Kt();return tl=function(e){var t=n(e);if(t<0)throw RangeError("The argument can't be less than 0");return t},tl}var rl,Vm;function T1(){if(Vm)return rl;Vm=1;var n=$R();return rl=function(e,t){var r=n(e);if(r%t)throw RangeError("Wrong offset");return r},rl}var nl,Km;function k1(){if(Km)return nl;Km=1;var n=lc(),e=Et(),t=kt(),r=gi(),i=Vn(),a=rc(),s=Dr(),l=_t().aTypedArrayConstructor;return nl=function(u){var f=n(this),h=e(u),p=arguments.length,_=p>1?arguments[1]:void 0,g=_!==void 0,m=i(h),v,b,S,x,E,C;if(m&&!a(m))for(E=r(h,m),C=E.next,h=[];!(x=C.call(E)).done;)h.push(x.value);for(g&&p>2&&(_=s(_,arguments[2],2)),b=t(h),S=new(l(f))(b),v=0;b>v;v++)S[v]=g?_(h[v],v):h[v];return S},nl}var Um;function Sr(){if(Um)return jn.exports;Um=1;var n=Q(),e=Ye(),t=dt(),r=xc(),i=_t(),a=xi(),s=qr(),l=gr(),c=$t(),u=hc(),f=Yt(),h=d1(),p=T1(),_=Mr(),g=Tt(),m=Gr(),v=ct(),b=kn(),S=lr(),x=br(),E=Lr().f,C=k1(),R=Ut().forEach,P=cn(),F=xt(),k=Bt(),q=Vt(),ce=Ei(),j=q.get,K=q.set,ue=F.f,ve=k.f,ge=Math.round,ye=e.RangeError,Me=a.ArrayBuffer,X=a.DataView,L=i.NATIVE_ARRAY_BUFFER_VIEWS,H=i.TYPED_ARRAY_CONSTRUCTOR,pe=i.TYPED_ARRAY_TAG,G=i.TypedArray,Se=i.TypedArrayPrototype,Te=i.aTypedArrayConstructor,De=i.isTypedArray,Ae="BYTES_PER_ELEMENT",ke="Wrong length",st=function(Oe,ae){for(var le=0,Ie=ae.length,Ge=new(Te(Oe))(Ie);Ie>le;)Ge[le]=ae[le++];return Ge},et=function(Oe,ae){ue(Oe,ae,{get:function(){return j(this)[ae]}})},Ne=function(Oe){var ae;return Oe instanceof Me||(ae=m(Oe))=="ArrayBuffer"||ae=="SharedArrayBuffer"},Pe=function(Oe,ae){return De(Oe)&&!b(ae)&&ae in Oe&&u(+ae)&&ae>=0},Fe=function(ae,le){return le=_(le),Pe(ae,le)?l(2,ae[le]):ve(ae,le)},me=function(ae,le,Ie){return le=_(le),Pe(ae,le)&&v(Ie)&&g(Ie,"value")&&!g(Ie,"get")&&!g(Ie,"set")&&!Ie.configurable&&(!g(Ie,"writable")||Ie.writable)&&(!g(Ie,"enumerable")||Ie.enumerable)?(ae[le]=Ie.value,ae):ue(ae,le,Ie)};return t?(L||(k.f=Fe,F.f=me,et(Se,"buffer"),et(Se,"byteOffset"),et(Se,"byteLength"),et(Se,"length")),n({target:"Object",stat:!0,forced:!L},{getOwnPropertyDescriptor:Fe,defineProperty:me}),jn.exports=function(Oe,ae,le){var Ie=Oe.match(/\d+$/)[0]/8,Ge=Oe+(le?"Clamped":"")+"Array",tt="get"+Oe,nt="set"+Oe,it=e[Ge],Be=it,Ze=Be&&Be.prototype,$e={},Ct=function(w,ee){var he=j(w);return he.view[tt](ee*Ie+he.byteOffset,!0)},bt=function(w,ee,he){var D=j(w);le&&(he=(he=ge(he))<0?0:he>255?255:he&255),D.view[nt](ee*Ie+D.byteOffset,he,!0)},Mt=function(w,ee){ue(w,ee,{get:function(){return Ct(this,ee)},set:function(he){return bt(this,ee,he)},enumerable:!0})};L?r&&(Be=ae(function(w,ee,he,D){return s(w,Be,Ge),ce((function(){return v(ee)?Ne(ee)?D!==void 0?new it(ee,p(he,Ie),D):he!==void 0?new it(ee,p(he,Ie)):new it(ee):De(ee)?st(Be,ee):C.call(Be,ee):new it(h(ee))})(),w,Be)}),x&&x(Be,G),R(E(it),function(w){w in Be||c(Be,w,it[w])}),Be.prototype=Ze):(Be=ae(function(w,ee,he,D){s(w,Be,Ge);var V=0,W=0,A,N,y;if(!v(ee))y=h(ee),N=y*Ie,A=new Me(N);else if(Ne(ee)){A=ee,W=p(he,Ie);var _e=ee.byteLength;if(D===void 0){if(_e%Ie||(N=_e-W,N<0))throw ye(ke)}else if(N=f(D)*Ie,N+W>_e)throw ye(ke);y=N/Ie}else return De(ee)?st(Be,ee):C.call(Be,ee);for(K(w,{buffer:A,byteOffset:W,byteLength:N,length:y,view:new X(A)});V=0?u:c+u;return f<0||f>=c?void 0:l[f]}),ay}var oy={},ly;function oI(){if(ly)return oy;ly=1;var n=_t(),e=r1(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("copyWithin",function(a,s){return e.call(t(this),a,s,arguments.length>2?arguments[2]:void 0)}),oy}var cy={},uy;function lI(){if(uy)return cy;uy=1;var n=_t(),e=Ut().every,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("every",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),cy}var dy={},fy;function cI(){if(fy)return dy;fy=1;var n=_t(),e=nc(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("fill",function(a){return e.apply(t(this),arguments)}),dy}var hy={},il,_y;function uI(){return _y||(_y=1,il=function(n,e){for(var t=0,r=e.length,i=new n(r);r>t;)i[t]=e[t++];return i}),il}var al,py;function Mi(){if(py)return al;py=1;var n=_t(),e=dn(),t=n.TYPED_ARRAY_CONSTRUCTOR,r=n.aTypedArrayConstructor;return al=function(i){return r(e(i,i[t]))},al}var sl,vy;function dI(){if(vy)return sl;vy=1;var n=uI(),e=Mi();return sl=function(t,r){return n(e(t),r)},sl}var gy;function fI(){if(gy)return hy;gy=1;var n=_t(),e=Ut().filter,t=dI(),r=n.aTypedArray,i=n.exportTypedArrayMethod;return i("filter",function(s){var l=e(r(this),s,arguments.length>1?arguments[1]:void 0);return t(this,l)}),hy}var my={},yy;function hI(){if(yy)return my;yy=1;var n=_t(),e=Ut().find,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("find",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),my}var by={},xy;function _I(){if(xy)return by;xy=1;var n=_t(),e=Ut().findIndex,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("findIndex",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),by}var Ey={},Sy;function pI(){if(Sy)return Ey;Sy=1;var n=_t(),e=Ut().forEach,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("forEach",function(a){e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ey}var wy={},Cy;function vI(){if(Cy)return wy;Cy=1;var n=xc(),e=_t().exportTypedArrayStaticMethod,t=k1();return e("from",t,n),wy}var Ry={},Iy;function gI(){if(Iy)return Ry;Iy=1;var n=_t(),e=Mn().includes,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("includes",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ry}var Ay={},Ty;function mI(){if(Ty)return Ay;Ty=1;var n=_t(),e=Mn().indexOf,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("indexOf",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),Ay}var ky={},Py;function yI(){if(Py)return ky;Py=1;var n=Ye(),e=Wr().PROPER,t=_t(),r=yi(),i=ft(),a=i("iterator"),s=n.Uint8Array,l=r.values,c=r.keys,u=r.entries,f=t.aTypedArray,h=t.exportTypedArrayMethod,p=s&&s.prototype[a],_=!!p&&p.name==="values",g=function(){return l.call(f(this))};return h("entries",function(){return u.call(f(this))}),h("keys",function(){return c.call(f(this))}),h("values",g,e&&!_),h(a,g,e&&!_),ky}var Fy={},My;function bI(){if(My)return Fy;My=1;var n=_t(),e=n.aTypedArray,t=n.exportTypedArrayMethod,r=[].join;return t("join",function(a){return r.apply(e(this),arguments)}),Fy}var Oy={},Ly;function xI(){if(Ly)return Oy;Ly=1;var n=_t(),e=o1(),t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("lastIndexOf",function(a){return e.apply(t(this),arguments)}),Oy}var Dy={},Ny;function EI(){if(Ny)return Dy;Ny=1;var n=_t(),e=Ut().map,t=Mi(),r=n.aTypedArray,i=n.exportTypedArrayMethod;return i("map",function(s){return e(r(this),s,arguments.length>1?arguments[1]:void 0,function(l,c){return new(t(l))(c)})}),Dy}var qy={},Vy;function SI(){if(Vy)return qy;Vy=1;var n=_t(),e=xc(),t=n.aTypedArrayConstructor,r=n.exportTypedArrayStaticMethod;return r("of",function(){for(var a=0,s=arguments.length,l=new(t(this))(s);s>a;)l[a]=arguments[a++];return l},e),qy}var Ky={},Uy;function wI(){if(Uy)return Ky;Uy=1;var n=_t(),e=bi().left,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("reduce",function(a){return e(t(this),a,arguments.length,arguments.length>1?arguments[1]:void 0)}),Ky}var By={},Xy;function CI(){if(Xy)return By;Xy=1;var n=_t(),e=bi().right,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("reduceRight",function(a){return e(t(this),a,arguments.length,arguments.length>1?arguments[1]:void 0)}),By}var Hy={},Qy;function RI(){if(Qy)return Hy;Qy=1;var n=_t(),e=n.aTypedArray,t=n.exportTypedArrayMethod,r=Math.floor;return t("reverse",function(){for(var a=this,s=e(a).length,l=r(s/2),c=0,u;c1?arguments[1]:void 0,1),h=this.length,p=r(u),_=e(p),g=0;if(_+f>h)throw RangeError("Wrong length");for(;g<_;)this[f+g]=p[g++]},l),jy}var zy={},Gy;function AI(){if(Gy)return zy;Gy=1;var n=_t(),e=Mi(),t=Ue(),r=n.aTypedArray,i=n.exportTypedArrayMethod,a=[].slice,s=t(function(){new Int8Array(1).slice()});return i("slice",function(c,u){for(var f=a.call(r(this),c,u),h=e(this),p=0,_=f.length,g=new h(_);_>p;)g[p]=f[p++];return g},s),zy}var $y={},Yy;function TI(){if(Yy)return $y;Yy=1;var n=_t(),e=Ut().some,t=n.aTypedArray,r=n.exportTypedArrayMethod;return r("some",function(a){return e(t(this),a,arguments.length>1?arguments[1]:void 0)}),$y}var Zy={},Jy;function kI(){if(Jy)return Zy;Jy=1;var n=_t(),e=Ye(),t=Ue(),r=Qt(),i=kt(),a=l1(),s=c1(),l=u1(),c=Fr(),u=sc(),f=n.aTypedArray,h=n.exportTypedArrayMethod,p=e.Uint16Array,_=p&&p.prototype.sort,g=!!_&&!t(function(){var b=new p(2);b.sort(null),b.sort({})}),m=!!_&&!t(function(){if(c)return c<74;if(s)return s<67;if(l)return!0;if(u)return u<602;var b=new p(516),S=Array(516),x,E;for(x=0;x<516;x++)E=x%4,b[x]=515-x,S[x]=x-2*E+3;for(b.sort(function(C,R){return(C/4|0)-(R/4|0)}),x=0;x<516;x++)if(b[x]!==S[x])return!0}),v=function(b){return function(S,x){return b!==void 0?+b(S,x)||0:x!==x?-1:S!==S?1:S===0&&x===0?1/S>0&&1/x<0?1:-1:S>x}};return h("sort",function(S){var x=this;if(S!==void 0&&r(S),m)return _.call(x,S);f(x);var E=i(x),C=Array(E),R;for(R=0;R2,h=f?i.call(arguments,2):void 0;return l(f?function(){(t(c)?c:Function(c)).apply(this,h)}:c,u)}};return n({global:!0,bind:!0,forced:a},{setTimeout:s(e.setTimeout),setInterval:s(e.setInterval)}),Eb}var wb={},dl,Cb;function O1(){if(Cb)return dl;Cb=1;var n=Ue(),e=ft(),t=nr(),r=e("iterator");return dl=!n(function(){var i=new URL("b?a=1&b=2&c=3","http://a"),a=i.searchParams,s="";return i.pathname="c%20d",a.forEach(function(l,c){a.delete("b"),s+=c+l}),t&&!i.toJSON||!a.sort||i.href!=="http://a/c%20d?a=1&c=3"||a.get("c")!=="3"||String(new URLSearchParams("?a=1"))!=="a=1"||!a[r]||new URL("https://a@b").username!=="a"||new URLSearchParams(new URLSearchParams("a=b")).get("a")!=="b"||new URL("http://тест").host!=="xn--e1aybc"||new URL("http://a#б").hash!=="#%D0%B1"||s!=="a1c3"||new URL("http://x",void 0).host!=="x"}),dl}var fl,Rb;function BI(){if(Rb)return fl;Rb=1;var n=2147483647,e=36,t=1,r=26,i=38,a=700,s=72,l=128,c="-",u=/[^\0-\u007E]/,f=/[.\u3002\uFF0E\uFF61]/g,h="Overflow: input needs wider integers to process",p=e-t,_=Math.floor,g=String.fromCharCode,m=function(x){for(var E=[],C=0,R=x.length;C=55296&&P<=56319&&C>1,x+=_(x/E);x>p*r>>1;R+=e)x=_(x/p);return _(R+(p+1)*x/(x+i))},S=function(x){var E=[];x=m(x);var C=x.length,R=l,P=0,F=s,k,q;for(k=0;k=R&&q_((n-P)/ue))throw RangeError(h);for(P+=(K-R)*ue,R=K,k=0;kn)throw RangeError(h);if(q==R){for(var ve=P,ge=e;;ge+=e){var ye=ge<=F?t:ge>=F+r?r:ge-F;if(ve0?arguments[0]:void 0,me=this,Oe=[],ae,le,Ie,Ge,tt,nt,it,Be,Ze;if(j(me,{type:q,entries:Oe,updateURL:function(){},updateSearchParams:Te}),Fe!==void 0)if(g(Fe))if(ae=x(Fe),ae)for(le=S(Fe,ae),Ie=le.next;!(Ge=Ie.call(le)).done;){if(tt=S(_(Ge.value)),nt=tt.next,(it=nt.call(tt)).done||(Be=nt.call(tt)).done||!nt.call(tt).done)throw TypeError("Expected sequence with length 2");Oe.push({key:m(it.value),value:m(Be.value)})}else for(Ze in Fe)f(Fe,Ze)&&Oe.push({key:Ze,value:m(Fe[Ze])});else Se(Oe,typeof Fe=="string"?Fe.charAt(0)==="?"?Fe.slice(1):Fe:m(Fe))},st=ke.prototype;if(i(st,{append:function(Fe,me){De(arguments.length,2);var Oe=K(this);Oe.entries.push({key:m(Fe),value:m(me)}),Oe.updateURL()},delete:function(Pe){De(arguments.length,1);for(var Fe=K(this),me=Fe.entries,Oe=m(Pe),ae=0;aeae.key){me.splice(le,0,ae);break}le===Ie&&me.push(ae)}Fe.updateURL()},forEach:function(Fe){for(var me=K(this).entries,Oe=h(Fe,arguments.length>1?arguments[1]:void 0,3),ae=0,le;ae1?et(arguments[1]):{})}}),u(R)){var Ne=function(Fe){return c(this,Ne,"Request"),new R(Fe,arguments.length>1?et(arguments[1]):{})};P.constructor=Ne,Ne.prototype=P,n({global:!0,forced:!0},{Request:Ne})}}return hl={URLSearchParams:ke,getState:K},hl}var Ab;function XI(){if(Ab)return wb;Ab=1,R1();var n=Q(),e=dt(),t=O1(),r=Ye(),i=Jl(),a=Ft(),s=qr(),l=Tt(),c=g1(),u=a1(),f=ki().codeAt,h=BI(),p=vt(),_=cr(),g=L1(),m=Vt(),v=r.URL,b=g.URLSearchParams,S=g.getState,x=m.set,E=m.getterFor("URL"),C=Math.floor,R=Math.pow,P="Invalid authority",F="Invalid scheme",k="Invalid host",q="Invalid port",ce=/[a-z]/i,j=/[\d+-.a-z]/i,K=/\d/,ue=/^0x/i,ve=/^[0-7]+$/,ge=/^\d+$/,ye=/^[\da-f]+$/i,Me=/[\0\t\n\r #%/:<>?@[\\\]^|]/,X=/[\0\t\n\r #/:<>?@[\\\]^|]/,L=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,H=/[\t\n\r]/g,pe,G=function(I,oe){var fe,be,we;if(oe.charAt(0)=="["){if(oe.charAt(oe.length-1)!="]"||(fe=Te(oe.slice(1,-1)),!fe))return k;I.host=fe}else if(me(I)){if(oe=h(oe),Me.test(oe)||(fe=Se(oe),fe===null))return k;I.host=fe}else{if(X.test(oe))return k;for(fe="",be=u(oe),we=0;we4)return I;for(be=[],we=0;we1&&rt.charAt(0)=="0"&&(He=ue.test(rt)?16:8,rt=rt.slice(He==8?1:2)),rt==="")yt=0;else{if(!(He==10?ge:He==8?ve:ye).test(rt))return I;yt=parseInt(rt,He)}be.push(yt)}for(we=0;we=R(256,5-fe))return null}else if(yt>255)return null;for(It=be.pop(),we=0;we6))return;for(yt=0;Lt();){if(It=null,yt>0)if(Lt()=="."&&yt<4)we++;else return;if(!K.test(Lt()))return;for(;K.test(Lt());){if(Pt=parseInt(Lt(),10),It===null)It=Pt;else{if(It==0)return;It=It*10+Pt}if(It>255)return;we++}oe[fe]=oe[fe]*256+It,yt++,(yt==2||yt==4)&&fe++}if(yt!=4)return;break}else if(Lt()==":"){if(we++,!Lt())return}else if(Lt())return;oe[fe++]=rt}if(be!==null)for(er=fe-be,fe=7;fe!=0&&er>0;)Ee=oe[fe],oe[fe--]=oe[be+er-1],oe[be+--er]=Ee;else if(fe!=8)return;return oe},De=function(I){for(var oe=null,fe=1,be=null,we=0,rt=0;rt<8;rt++)I[rt]!==0?(we>fe&&(oe=be,fe=we),be=null,we=0):(be===null&&(be=rt),++we);return we>fe&&(oe=be,fe=we),oe},Ae=function(I){var oe,fe,be,we;if(typeof I=="number"){for(oe=[],fe=0;fe<4;fe++)oe.unshift(I%256),I=C(I/256);return oe.join(".")}else if(typeof I=="object"){for(oe="",be=De(I),fe=0;fe<8;fe++)we&&I[fe]===0||(we&&(we=!1),be===fe?(oe+=fe?":":"::",we=!0):(oe+=I[fe].toString(16),fe<7&&(oe+=":")));return"["+oe+"]"}return I},ke={},st=c({},ke,{" ":1,'"':1,"<":1,">":1,"`":1}),et=c({},st,{"#":1,"?":1,"{":1,"}":1}),Ne=c({},et,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Pe=function(I,oe){var fe=f(I,0);return fe>32&&fe<127&&!l(oe,I)?I:encodeURIComponent(I)},Fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},me=function(I){return l(Fe,I.scheme)},Oe=function(I){return I.username!=""||I.password!=""},ae=function(I){return!I.host||I.cannotBeABaseURL||I.scheme=="file"},le=function(I,oe){var fe;return I.length==2&&ce.test(I.charAt(0))&&((fe=I.charAt(1))==":"||!oe&&fe=="|")},Ie=function(I){var oe;return I.length>1&&le(I.slice(0,2))&&(I.length==2||(oe=I.charAt(2))==="/"||oe==="\\"||oe==="?"||oe==="#")},Ge=function(I){var oe=I.path,fe=oe.length;fe&&(I.scheme!="file"||fe!=1||!le(oe[0],!0))&&oe.pop()},tt=function(I){return I==="."||I.toLowerCase()==="%2e"},nt=function(I){return I=I.toLowerCase(),I===".."||I==="%2e."||I===".%2e"||I==="%2e%2e"},it={},Be={},Ze={},$e={},Ct={},bt={},Mt={},w={},ee={},he={},D={},V={},W={},A={},N={},y={},_e={},Xe={},xe={},ze={},Re={},Je=function(I,oe,fe,be){var we=fe||it,rt=0,He="",yt=!1,It=!1,Pt=!1,er,Ee,Lt,fr;for(fe||(I.scheme="",I.username="",I.password="",I.host=null,I.port=null,I.path=[],I.query=null,I.fragment=null,I.cannotBeABaseURL=!1,oe=oe.replace(L,"")),oe=oe.replace(H,""),er=u(oe);rt<=er.length;){switch(Ee=er[rt],we){case it:if(Ee&&ce.test(Ee))He+=Ee.toLowerCase(),we=Be;else{if(fe)return F;we=Ze;continue}break;case Be:if(Ee&&(j.test(Ee)||Ee=="+"||Ee=="-"||Ee=="."))He+=Ee.toLowerCase();else if(Ee==":"){if(fe&&(me(I)!=l(Fe,He)||He=="file"&&(Oe(I)||I.port!==null)||I.scheme=="file"&&!I.host))return;if(I.scheme=He,fe){me(I)&&Fe[I.scheme]==I.port&&(I.port=null);return}He="",I.scheme=="file"?we=A:me(I)&&be&&be.scheme==I.scheme?we=$e:me(I)?we=w:er[rt+1]=="/"?(we=Ct,rt++):(I.cannotBeABaseURL=!0,I.path.push(""),we=xe)}else{if(fe)return F;He="",we=Ze,rt=0;continue}break;case Ze:if(!be||be.cannotBeABaseURL&&Ee!="#")return F;if(be.cannotBeABaseURL&&Ee=="#"){I.scheme=be.scheme,I.path=be.path.slice(),I.query=be.query,I.fragment="",I.cannotBeABaseURL=!0,we=Re;break}we=be.scheme=="file"?A:bt;continue;case $e:if(Ee=="/"&&er[rt+1]=="/")we=ee,rt++;else{we=bt;continue}break;case Ct:if(Ee=="/"){we=he;break}else{we=Xe;continue}case bt:if(I.scheme=be.scheme,Ee==pe)I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query=be.query;else if(Ee=="/"||Ee=="\\"&&me(I))we=Mt;else if(Ee=="?")I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query="",we=ze;else if(Ee=="#")I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.query=be.query,I.fragment="",we=Re;else{I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,I.path=be.path.slice(),I.path.pop(),we=Xe;continue}break;case Mt:if(me(I)&&(Ee=="/"||Ee=="\\"))we=ee;else if(Ee=="/")we=he;else{I.username=be.username,I.password=be.password,I.host=be.host,I.port=be.port,we=Xe;continue}break;case w:if(we=ee,Ee!="/"||He.charAt(rt+1)!="/")continue;rt++;break;case ee:if(Ee!="/"&&Ee!="\\"){we=he;continue}break;case he:if(Ee=="@"){yt&&(He="%40"+He),yt=!0,Lt=u(He);for(var Li=0;Li65535)return q;I.port=me(I)&&Di===Fe[I.scheme]?null:Di,He=""}if(fe)return;we=_e;continue}else return q;break;case A:if(I.scheme="file",Ee=="/"||Ee=="\\")we=N;else if(be&&be.scheme=="file")if(Ee==pe)I.host=be.host,I.path=be.path.slice(),I.query=be.query;else if(Ee=="?")I.host=be.host,I.path=be.path.slice(),I.query="",we=ze;else if(Ee=="#")I.host=be.host,I.path=be.path.slice(),I.query=be.query,I.fragment="",we=Re;else{Ie(er.slice(rt).join(""))||(I.host=be.host,I.path=be.path.slice(),Ge(I)),we=Xe;continue}else{we=Xe;continue}break;case N:if(Ee=="/"||Ee=="\\"){we=y;break}be&&be.scheme=="file"&&!Ie(er.slice(rt).join(""))&&(le(be.path[0],!0)?I.path.push(be.path[0]):I.host=be.host),we=Xe;continue;case y:if(Ee==pe||Ee=="/"||Ee=="\\"||Ee=="?"||Ee=="#"){if(!fe&&le(He))we=Xe;else if(He==""){if(I.host="",fe)return;we=_e}else{if(fr=G(I,He),fr)return fr;if(I.host=="localhost"&&(I.host=""),fe)return;He="",we=_e}continue}else He+=Ee;break;case _e:if(me(I)){if(we=Xe,Ee!="/"&&Ee!="\\")continue}else if(!fe&&Ee=="?")I.query="",we=ze;else if(!fe&&Ee=="#")I.fragment="",we=Re;else if(Ee!=pe&&(we=Xe,Ee!="/"))continue;break;case Xe:if(Ee==pe||Ee=="/"||Ee=="\\"&&me(I)||!fe&&(Ee=="?"||Ee=="#")){if(nt(He)?(Ge(I),Ee!="/"&&!(Ee=="\\"&&me(I))&&I.path.push("")):tt(He)?Ee!="/"&&!(Ee=="\\"&&me(I))&&I.path.push(""):(I.scheme=="file"&&!I.path.length&&le(He)&&(I.host&&(I.host=""),He=He.charAt(0)+":"),I.path.push(He)),He="",I.scheme=="file"&&(Ee==pe||Ee=="?"||Ee=="#"))for(;I.path.length>1&&I.path[0]==="";)I.path.shift();Ee=="?"?(I.query="",we=ze):Ee=="#"&&(I.fragment="",we=Re)}else He+=Pe(Ee,et);break;case xe:Ee=="?"?(I.query="",we=ze):Ee=="#"?(I.fragment="",we=Re):Ee!=pe&&(I.path[0]+=Pe(Ee,ke));break;case ze:!fe&&Ee=="#"?(I.fragment="",we=Re):Ee!=pe&&(Ee=="'"&&me(I)?I.query+="%27":Ee=="#"?I.query+="%23":I.query+=Pe(Ee,ke));break;case Re:Ee!=pe&&(I.fragment+=Pe(Ee,st));break}rt++}},se=function(oe){var fe=s(this,se,"URL"),be=arguments.length>1?arguments[1]:void 0,we=p(oe),rt=x(fe,{type:"URL"}),He,yt;if(be!==void 0){if(be instanceof se)He=E(be);else if(yt=Je(He={},p(be)),yt)throw TypeError(yt)}if(yt=Je(rt,we,null,He),yt)throw TypeError(yt);var It=rt.searchParams=new b,Pt=S(It);Pt.updateSearchParams(rt.query),Pt.updateURL=function(){rt.query=String(It)||null},e||(fe.href=Xt.call(fe),fe.origin=mt.call(fe),fe.protocol=d.call(fe),fe.username=te.call(fe),fe.password=T.call(fe),fe.host=U.call(fe),fe.hostname=B.call(fe),fe.port=Le.call(fe),fe.pathname=Qe.call(fe),fe.search=Ve.call(fe),fe.searchParams=Ot.call(fe),fe.hash=ot.call(fe))},de=se.prototype,Xt=function(){var I=E(this),oe=I.scheme,fe=I.username,be=I.password,we=I.host,rt=I.port,He=I.path,yt=I.query,It=I.fragment,Pt=oe+":";return we!==null?(Pt+="//",Oe(I)&&(Pt+=fe+(be?":"+be:"")+"@"),Pt+=Ae(we),rt!==null&&(Pt+=":"+rt)):oe=="file"&&(Pt+="//"),Pt+=I.cannotBeABaseURL?He[0]:He.length?"/"+He.join("/"):"",yt!==null&&(Pt+="?"+yt),It!==null&&(Pt+="#"+It),Pt},mt=function(){var I=E(this),oe=I.scheme,fe=I.port;if(oe=="blob")try{return new se(oe.path[0]).origin}catch{return"null"}return oe=="file"||!me(I)?"null":oe+"://"+Ae(I.host)+(fe!==null?":"+fe:"")},d=function(){return E(this).scheme+":"},te=function(){return E(this).username},T=function(){return E(this).password},U=function(){var I=E(this),oe=I.host,fe=I.port;return oe===null?"":fe===null?Ae(oe):Ae(oe)+":"+fe},B=function(){var I=E(this).host;return I===null?"":Ae(I)},Le=function(){var I=E(this).port;return I===null?"":String(I)},Qe=function(){var I=E(this),oe=I.path;return I.cannotBeABaseURL?oe[0]:oe.length?"/"+oe.join("/"):""},Ve=function(){var I=E(this).query;return I?"?"+I:""},Ot=function(){return E(this).searchParams},ot=function(){var I=E(this).fragment;return I?"#"+I:""},lt=function(I,oe){return{get:I,set:oe,configurable:!0,enumerable:!0}};if(e&&i(de,{href:lt(Xt,function(I){var oe=E(this),fe=p(I),be=Je(oe,fe);if(be)throw TypeError(be);S(oe.searchParams).updateSearchParams(oe.query)}),origin:lt(mt),protocol:lt(d,function(I){var oe=E(this);Je(oe,p(I)+":",it)}),username:lt(te,function(I){var oe=E(this),fe=u(p(I));if(!ae(oe)){oe.username="";for(var be=0;be=0;--pe){var G=this.tryEntries[pe],Se=G.completion;if(G.tryLoc==="root")return H("end");if(G.tryLoc<=this.prev){var Te=i.call(G,"catchLoc"),De=i.call(G,"finallyLoc");if(Te&&De){if(this.prev=0;--H){var pe=this.tryEntries[H];if(pe.tryLoc<=this.prev&&i.call(pe,"finallyLoc")&&this.prev=0;--L){var H=this.tryEntries[L];if(H.finallyLoc===X)return this.complete(H.completion,H.afterLoc),ve(H),S}},catch:function(X){for(var L=this.tryEntries.length-1;L>=0;--L){var H=this.tryEntries[L];if(H.tryLoc===X){var pe=H.completion;if(pe.type==="throw"){var G=pe.arg;ve(H)}return G}}throw new Error("illegal catch attempt")},delegateYield:function(X,L,H){return this.delegate={iterator:ye(X),resultName:L,nextLoc:H},this.method==="next"&&(this.arg=s),S}},t})(n.exports);try{regeneratorRuntime=e}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})(pl)),pl.exports}jI();let Mb="warn",z=()=>{},je=()=>{},at=()=>{},Ke=()=>{};function Ml(n){if(typeof n>"u"?n=Mb:Mb=n,z=je=at=Ke=()=>{},typeof window.console<"u")switch(n){case"debug":z=console.debug.bind(window.console);case"info":je=console.info.bind(window.console);case"warn":at=console.warn.bind(window.console);case"error":Ke=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+n+"'")}}Ml();class WI{constructor(){this.language="en",this.dictionary=void 0}setup(e){this.language="en";let t;typeof window.navigator.languages=="object"?t=window.navigator.languages:t=[navigator.language||navigator.userLanguage];for(let r=0;r0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function n(){Ec=!0,window.removeEventListener("touchstart",n,!1)},!1);let Ol=10*(window.devicePixelRatio||1);var Sx;const Ob=typeof((Sx=navigator.keyboard)==null?void 0:Sx.lock)=="function";let D1=!1;try{const n=document.createElement("canvas");n.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',n.style.cursor.indexOf("url")===0?(je("Data URI scheme cursor supported"),D1=!0):at("Data URI scheme cursor not supported")}catch(n){Ke("Data URI scheme cursor test exception: "+n)}const zI=D1;let N1=!0;try{const n=document.createElement("div");n.style.visibility="hidden",n.style.overflow="scroll",document.body.appendChild(n);const e=document.createElement("div");n.appendChild(e);const t=n.offsetWidth-e.offsetWidth;n.parentNode.removeChild(n),N1=t!=0}catch(n){Ke("Scrollbar test exception: "+n)}const GI=N1;function Br(){return navigator&&!!/mac/i.exec(navigator.platform)}function Jn(){return navigator&&!!/win/i.exec(navigator.platform)}function an(){return navigator&&(!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform))}function ei(){return navigator&&navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1}function $I(){var n=navigator.userAgent;return an()||n.indexOf("OculusBrowser")!=-1||n.indexOf("SamsungBrowser")!=-1?!1:n.indexOf("Windows")!=-1||n.indexOf("Mac")!=-1||n.indexOf("X11")!=-1||n.indexOf("Linux")!=-1}function YI(){var n=window.navigator.userAgent,e=n.indexOf("MSIE "),t=!1;e>0&&(t=parseInt(n.substring(e+5,n.indexOf(".",e)),10));var r=n.indexOf("Trident/");if(r>0){var i=n.indexOf("rv:");t=parseInt(n.substring(i+3,n.indexOf(".",i)),10)}var a=n.indexOf("Edge/");return a>0&&(t=parseInt(n.substring(a+5,n.indexOf(".",a)),10)),t}function Ll(){return navigator&&!!/firefox/i.exec(navigator.userAgent)}function Lb(){return ei()||Ll()?!1:navigator.clipboard&&typeof navigator.clipboard.read=="function"}function Db(){return an()||YI()?!1:document.exitPointerLock}function Nb(n){return n.changedTouches?n.changedTouches[0]:n.touches?n.touches[0]:n}function Jr(n){n.stopPropagation(),n.preventDefault()}let vl=!1,q1=null;document.captureElement=null;function Ur(n){if(vl)return;const e=new n.constructor(n.type,n);vl=!0,document.captureElement?document.captureElement.dispatchEvent(e):q1.dispatchEvent(e),vl=!1,n.stopPropagation(),e.defaultPrevented&&n.preventDefault(),n.type==="mouseup"&&B1()}function V1(){const n=document.getElementById("noVNC_mouse_capture_elem");n.style.cursor=window.getComputedStyle(document.captureElement).cursor}const K1=new MutationObserver(V1);function U1(n){if(n.setCapture)n.setCapture(),document.captureElement=n;else{B1();let e=document.getElementById("noVNC_mouse_capture_elem");e===null&&(e=document.createElement("div"),e.id="noVNC_mouse_capture_elem",e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.width="100%",e.style.height="100%",e.style.zIndex=1e4,e.style.display="none",document.body.appendChild(e),e.addEventListener("contextmenu",Ur),e.addEventListener("mousemove",Ur),e.addEventListener("mouseup",Ur)),document.captureElement=n,K1.observe(n,{attributes:!0}),V1(),e.style.display="",window.addEventListener("mousemove",Ur),window.addEventListener("mouseup",Ur)}}function B1(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;q1=document.captureElement,document.captureElement=null,K1.disconnect();const n=document.getElementById("noVNC_mouse_capture_elem");n.style.display="none",window.removeEventListener("mousemove",Ur),window.removeEventListener("mouseup",Ur)}}const O={XK_BackSpace:65288,XK_Tab:65289,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Kana_Shift:65326,XK_Eisu_toggle:65328,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Next:65366,XK_End:65367,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Mode_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Enter:65421,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Next:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_F12:65481,XK_F13:65482,XK_F14:65483,XK_F15:65484,XK_F16:65485,XK_F17:65486,XK_F18:65487,XK_F19:65488,XK_F20:65489,XK_F21:65490,XK_F22:65491,XK_F23:65492,XK_F24:65493,XK_F25:65494,XK_F26:65495,XK_F27:65496,XK_F28:65497,XK_F29:65498,XK_F30:65499,XK_F31:65500,XK_F32:65501,XK_F33:65502,XK_F34:65503,XK_F35:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_equal:61,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_BrightnessAdjust:269025083,XF86XK_AudioRewind:269025086,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Excel:269025116,XF86XK_LogOff:269025121,XF86XK_New:269025128,XF86XK_Open:269025131,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Reply:269025138,XF86XK_Save:269025143,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Word:269025161,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Music:269025170,XF86XK_AudioForward:269025175,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_Hibernate:269025192,XF86XK_AudioMicMute:269025202,XF86XK_Next_VMode:269024802};function ZI(n){return n>>>0}function Sn(n){return n|0}function qb(n){var e=32768,t=1<<31,r=16384,i=n|0;return(n&t)!=0&&(i*=-1,i|=e),i|=r,i}function wn(n){typeof n=="string"&&(n=[...n].map(t=>t.charCodeAt(0)));let e=0;for(let t=0;t(n^crypto.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16))}function vn(n,e,t){const r=t.getBoundingClientRect();let i={x:0,y:0};return n=r.right?i.x=r.width-1:i.x=n-r.left,e=r.bottom?i.y=r.height-1:i.y=e-r.top,n>window.innerWidth?i.x+=n-window.innerWidth:n<0&&(i.x=n+r.left),e>window.innerHeight?i.y+=e-window.innerHeight:e<0&&(i.y=e+r.top),i}class JI{constructor(){this._listeners=new Map}addEventListener(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}removeEventListener(e,t){this._listeners.has(e)&&this._listeners.get(e).delete(t)}dispatchEvent(e){return this._listeners.has(e.type)?(this._listeners.get(e.type).forEach(t=>t.call(this,e)),!e.defaultPrevented):!0}}const eA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wn=Object.fromEntries(Array.from(eA).map((n,e)=>[e,n.charCodeAt(0)])),tA=new TextDecoder,rA={base64Pad:"=",encode(n){let e=n.length,t=e%3,r=Math.floor(e/3)*4+(t&&t+1),i=Math.ceil(e/3)*4,a=new Uint8Array(i);for(let l=0,c=0;c>18],a[l+1]=Wn[u>>12&63],a[l+2]=Wn[u>>6&63],a[l+3]=Wn[u&63]}let s=tA.decode(new Uint8Array(a.buffer,0,r));return t===1&&(s+="=="),t===2&&(s+="="),s},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(n,e=0){let t=n.indexOf("=")-e;t<0&&(t=n.length-e);const r=(t>>2)*3+Math.floor(t%4/1.5),i=new Uint8Array(r);let a=0,s=0;for(let l=0,c=e;c=8&&(a-=8,f||(i[l++]=s>>a&255),s&=(1<0&&(this._reportInterval=setInterval(()=>{this.generateReport()},e))}disable(){this._enabled=!1,this._reportInterval&&(clearInterval(this._reportInterval),this._reportInterval=null),z("Performance logging disabled")}start(e){if(!this._enabled)return 0;const t=performance.now(),r=performance.now();return this._loggingStats.startCalls++,this._loggingStats.totalStartTime+=performance.now()-t,r}end(e,t){if(!this._enabled||t===0)return;const r=performance.now(),i=performance.now()-t,a=this._metrics[e];if(!a){at(`Unknown performance metric: ${e}`),this._loggingStats.endCalls++,this._loggingStats.totalEndTime+=performance.now()-r;return}a.total+=i,a.count++,a.max=Math.max(a.max,i),a.samples.push(i),a.samples.length>this._maxSamples&&a.samples.shift(),e==="frameInterval"&&(a.min=Math.min(a.min,i)),i>this._criticalFrameThreshold?Ke(`CRITICAL: ${e} took ${i.toFixed(2)}ms (threshold: ${this._criticalFrameThreshold.toFixed(2)}ms)`):i>this._slowFrameThreshold&&at(`SLOW: ${e} took ${i.toFixed(2)}ms (threshold: ${this._slowFrameThreshold.toFixed(2)}ms)`),this._loggingStats.endCalls++;const s=performance.now()-r;this._loggingStats.totalEndTime+=s;const l=this._metrics.loggingOverhead;l.total+=s,l.count++,l.max=Math.max(l.max,s),l.samples.push(s),l.samples.length>this._maxSamples&&l.samples.shift()}recordFrameInterval(){if(!this._enabled)return;const e=performance.now();this._lastFrameTime>0&&(e-this._lastFrameTime,this.end("frameInterval",this._lastFrameTime)),this._lastFrameTime=e}_calculateStats(e){var l,c;if(e.count===0)return{avg:0,max:0,p95:0,p99:0,min:0,count:0};const t=e.total/e.count,r=[...e.samples].sort((u,f)=>u-f),i=Math.floor(r.length*.95),a=Math.floor(r.length*.99),s={avg:t.toFixed(2),max:e.max.toFixed(2),p95:((l=r[i])==null?void 0:l.toFixed(2))||0,p99:((c=r[a])==null?void 0:c.toFixed(2))||0,count:e.count};return e.min!==void 0&&e.min!==1/0&&(s.min=e.min.toFixed(2)),s}generateReport(){if(!this._enabled)return;const e=performance.now();z("=== PERFORMANCE REPORT ==="),z(`Target: ${this._targetFps} FPS (${this._targetFrameTime.toFixed(2)}ms per frame)`),z("");const t={"Network & Data":["frameRead"],"Video Decoding":["videoDecode","videoDecodeQueue"],"Frame Processing":["frameProcessing","rectProcessing","screenRouting"],Rendering:["canvasRender","webglRender","videoFrameRender"],"Queue Operations":["asyncQueuePush","asyncFrameComplete"],"Image Operations":["imageLoad","imageBitmapCreate"],"Multi-Monitor":["broadcastChannelSend"],"Frame Timing":["frameInterval","endToEnd"],"Logging Performance":["loggingOverhead"]};let r=[];for(const[u,f]of Object.entries(t)){z(`--- ${u} ---`);for(const h of f){const p=this._calculateStats(this._metrics[h]);if(p.count>0){const _=parseFloat(p.avg)>this._targetFrameTime,g=parseFloat(p.avg)>this._criticalFrameThreshold;if(z(`${g?"CRITICAL":_?"SLOW":""} ${h}:`),z(` Avg: ${p.avg}ms | Max: ${p.max}ms | P95: ${p.p95}ms | P99: ${p.p99}ms | Count: ${p.count}`),h==="frameInterval"){z(` Min: ${p.min}ms`);const v=(1e3/parseFloat(p.avg)).toFixed(2);z(` Actual FPS: ${v}`)}(g||_)&&r.push({operation:h,avg:parseFloat(p.avg),max:parseFloat(p.max),severity:g?"CRITICAL":"SLOW"})}}z("")}r.length>0?(at("=== BOTTLENECKS IDENTIFIED ==="),r.sort((u,f)=>f.avg-u.avg),r.forEach((u,f)=>{const h=(u.avg/this._targetFrameTime*100).toFixed(0);at(`${f+1}. [${u.severity}] ${u.operation}: ${u.avg.toFixed(2)}ms avg (${h}% of frame budget), ${u.max.toFixed(2)}ms max`)}),at(""),at("Recommendations:"),r.slice(0,3).forEach((u,f)=>{at(`${f+1}. Optimize ${u.operation} - currently using ${(u.avg/this._targetFrameTime*100).toFixed(0)}% of frame time budget`)})):z("OK - No bottlenecks detected - performance within targets"),z(""),z("--- Logging Performance Summary ---");const i=this._loggingStats.startCalls>0?(this._loggingStats.totalStartTime/this._loggingStats.startCalls).toFixed(4):0,a=this._loggingStats.endCalls>0?(this._loggingStats.totalEndTime/this._loggingStats.endCalls).toFixed(4):0;z(`Start calls: ${this._loggingStats.startCalls} (avg: ${i}ms per call)`),z(`End calls: ${this._loggingStats.endCalls} (avg: ${a}ms per call)`),z(`Total logging overhead: ${(this._loggingStats.totalStartTime+this._loggingStats.totalEndTime).toFixed(2)}ms`);const s=this._calculateStats(this._metrics.loggingOverhead);if(s.count>0){z(`Per-operation overhead: avg ${s.avg}ms | max ${s.max}ms | p95 ${s.p95}ms`);const u=(parseFloat(s.avg)/this._targetFrameTime*100).toFixed(2);parseFloat(u)>5?at(`WARNING Logging overhead is ${u}% of frame budget - consider reducing logging frequency`):z(`OK Logging overhead is acceptable (${u}% of frame budget)`)}const l=performance.now()-e;this._loggingStats.reportGenerationTime+=l,this._loggingStats.reportCount++;const c=(this._loggingStats.reportGenerationTime/this._loggingStats.reportCount).toFixed(2);z(`Report generation time: ${l.toFixed(2)}ms (avg: ${c}ms)`),z("=== END PERFORMANCE REPORT ===")}reset(){for(const e of Object.values(this._metrics))e.total=0,e.count=0,e.max=0,e.min=1/0,e.samples=[];this._lastFrameTime=0,this._loggingStats={startCalls:0,endCalls:0,totalStartTime:0,totalEndTime:0,reportGenerationTime:0,reportCount:0},z("Performance metrics reset")}getMetrics(){const e={};for(const[t,r]of Object.entries(this._metrics))e[t]=this._calculateStats(r);return e}getLoggingStats(){const e=this._loggingStats.startCalls>0?this._loggingStats.totalStartTime/this._loggingStats.startCalls:0,t=this._loggingStats.endCalls>0?this._loggingStats.totalEndTime/this._loggingStats.endCalls:0,r=this._loggingStats.reportCount>0?this._loggingStats.reportGenerationTime/this._loggingStats.reportCount:0,i=this._loggingStats.totalStartTime+this._loggingStats.totalEndTime,a=this._loggingStats.endCalls>0?i/this._loggingStats.endCalls/this._targetFrameTime*100:0;return{startCalls:this._loggingStats.startCalls,endCalls:this._loggingStats.endCalls,avgStartOverhead:e.toFixed(4)+"ms",avgEndOverhead:t.toFixed(4)+"ms",totalOverhead:i.toFixed(2)+"ms",reportCount:this._loggingStats.reportCount,avgReportTime:r.toFixed(2)+"ms",overheadPercentage:a.toFixed(2)+"%",isAcceptable:a<5}}}const Rt=new nA(60);class iA{constructor(e,t){if(this._target=e,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d",{alpha:!1}),this._visibleCtx=this._targetCtx,this._enableCanvasBuffer=!1,this._backbuffer=t,this._drawCtx=this._backbuffer.getContext("2d"),this._prevDrawStyle="",this._antiAliasing=0,this._transparentOverlayImg=null,this._transparentOverlayRect=null}get width(){return this._target.width}get height(){return this._target.height}get enableCanvasBuffer(){return this._enableCanvasBuffer}set enableCanvasBuffer(e){if(e!==this._enableCanvasBuffer){if(this._enableCanvasBuffer=e,this._targetCtx=e?this._drawCtx:this._visibleCtx,e&&this._target){let t=this._visibleCtx.getImageData(0,0,this._target.width,this._target.height);this._drawCtx.putImageData(t,0,0),this._transparentOverlayImg&&this.drawImage(this._transparentOverlayImg,this._transparentOverlayRect.x,this._transparentOverlayRect.y,this._transparentOverlayRect.width,this._transparentOverlayRect.height,!0)}else if(!e&&this._target){let t=this._drawCtx.getImageData(0,0,this._target.width,this._target.height);this._visibleCtx.putImageData(t,0,0)}}}get antiAliasing(){return this._antiAliasing}set antiAliasing(e){this._antiAliasing=e}get transparentOverlayImg(){return this._transparentOverlayImg}set transparentOverlayImg(e){this._transparentOverlayImg=e,this.enableCanvasBuffer=!0}get transparentOverlayRect(){return this._transparentOverlayRect}set transparentOverlayRect(e){this._transparentOverlayRect=e}drawTransparentOverlayImg(){this._transparentOverlayImg&&this.drawImage(this._transparentOverlayImg,this._transparentOverlayRect.x,this._transparentOverlayRect.y,this._transparentOverlayRect.width,this._transparentOverlayRect.height,!0)}viewportChangeSize(e,t){const r=this._target;if(r.width===e&&r.height===t)return!1;let i=null;return r.width>0&&r.height>0&&(i=this._visibleCtx.getImageData(0,0,r.width,r.height)),r.width=e,r.height=t,i&&this._visibleCtx.putImageData(i,0,0),!0}rescale(e,t,r,i,a,s){const l=this._target.style;(l.width!==t||l.height!==r)&&(l.width=t,l.height=r),je("Pixel Ratio: "+window.devicePixelRatio+", VNC Scale: "+e+"VNC Res: "+i+"x"+a+"y");const c=Math.abs(Math.ceil(window.devicePixelRatio)),u=navigator.userAgent.toLowerCase().indexOf("firefox")>-1;this.antiAliasing===2||this.antiAliasing===0&&e===1&&l.imageRendering!=="pixelated"&&c===window.devicePixelRatio&&s>0?(l.imageRendering=u?"crisp-edges":"pixelated",z("Smoothing disabled")):(this.antiAliasing===1||this.antiAliasing===0&&e!==1&&l.imageRendering!=="auto")&&(l.imageRendering="auto",z("Smoothing enabled"))}resize(e,t,r){this._prevDrawStyle="";let i=this._backbuffer;if(i!==void 0&&(r.length>0&&(e=r[0].serverWidth,t=r[0].serverHeight),i.width!==e||i.height!==t)){let a=null;i.width>0&&i.height>0&&(a=this._drawCtx.getImageData(0,0,i.width,i.height)),i.width!==e&&(i.width=e),i.height!==t&&(i.height=t),a&&this._drawCtx.putImageData(a,0,0)}}blitImage(e,t,r,i,a,s){let l;ArrayBuffer.isView(a)?l=new Uint8ClampedArray(a.buffer,a.byteOffset+s,r*i*4):l=new Uint8ClampedArray(a,a.length+s,r*i*4);let c=new ImageData(l,r,i);this._targetCtx.putImageData(c,e,t)}blitQoi(e,t,r){this._targetCtx.putImageData(e,t,r)}clearRect(e,t,r,i){this._targetCtx.clearRect(e,t,r,i)}copyImage(e,t,r,i,a,s){const l=this._targetCtx;let c=this._enableCanvasBuffer?this._backbuffer:this._target;l.mozImageSmoothingEnabled=!1,l.webkitImageSmoothingEnabled=!1,l.msImageSmoothingEnabled=!1,l.imageSmoothingEnabled=!1,l.drawImage(c,e,t,a,s,r,i,a,s)}drawImage(e,t,r,i,a,s=!1){const l=s&&this._enableCanvasBuffer?this._visibleCtx:this._targetCtx;e.width!==i||e.height!==a?l.drawImage(e,t,r,i,a):l.drawImage(e,t,r)}drawVideoFrame(e,t,r,i,a){const s=Rt.start("canvasRender");this._targetCtx.drawImage(e,t,r,i,a,0,0,i,a),Rt.end("canvasRender",s),e.close()}fillRect(e,t,r,i,a){this._setFillColor(a),this._targetCtx.fillRect(e,t,r,i)}putImage(e,t,r){this._targetCtx.putImageData(e,t,r)}_writeCtxBuffer(){this._backbuffer.width>0&&this._visibleCtx.drawImage(this._backbuffer,0,0)}_setFillColor(e){const t="rgb("+e[0]+","+e[1]+","+e[2]+")";t!==this._prevDrawStyle&&(this._targetCtx.fillStyle=t,this._prevDrawStyle=t)}dispose(){this._visibleCtx&&this._target&&this._visibleCtx.clearRect(0,0,this._target.width,this._target.height)}}const rn=class rn{constructor(e,t,r){if(this._canvas2D=e,this.gl=t,this._webglCanvas=r,this._lastWidth=0,this._lastHeight=0,this._isWebGL2=t instanceof WebGL2RenderingContext,this._watermarkCanvas=document.createElement("canvas"),this._watermarkCanvas.width=0,this._watermarkCanvas.height=0,this._watermarkCanvas.style.position="absolute",this._watermarkCanvas.style.left="0",this._watermarkCanvas.style.top="0",this._watermarkCanvas.style.pointerEvents="none",this._watermarkCanvas.style.zIndex="2",this._watermarkCanvas.style.width="0px",this._watermarkCanvas.style.height="0px",this._watermarkCtx=this._watermarkCanvas.getContext("2d"),r.parentNode){const i=r.parentNode;i instanceof Element&&window.getComputedStyle(i).position==="static"&&at("WebGLRenderer: parent element uses position:static; watermark overlay may be misaligned. Expected relative/absolute/fixed."),i.appendChild(this._watermarkCanvas)}this._logWebGLInfo(t),this._initShaders(t),this._initGeometry(t),this._initTexture(t),this._configureGLState(t,r)}_logWebGLInfo(e){je("WebGL Renderer Initialized"),je(`WebGL Version: ${e.getParameter(e.VERSION)}`),je(`WebGL2: ${this._isWebGL2}`),je(`WebGL Color: ${e.getParameter(e.RED_BITS)}, ${e.getParameter(e.GREEN_BITS)}, ${e.getParameter(e.BLUE_BITS)}, ${e.getParameter(e.ALPHA_BITS)}`),je(`WebGL Depth: ${e.getParameter(e.DEPTH_BITS)}, Stencil: ${e.getParameter(e.STENCIL_BITS)}`),je(`WebGL GLSL Version: ${e.getParameter(e.SHADING_LANGUAGE_VERSION)}`),je(`WebGL Vendor: ${e.getParameter(e.VENDOR)}`),je(`WebGL Renderer: ${e.getParameter(e.RENDERER)}`),je(`WebGL Max Texture Size: ${e.getParameter(e.MAX_TEXTURE_SIZE)}`),je(`WebGL Max Vertex Attrib: ${e.getParameter(e.MAX_VERTEX_ATTRIBS)}`),je(`WebGL Extensions: ${e.getSupportedExtensions()}`)}_initShaders(e){const t=this._compileShader(e,e.VERTEX_SHADER,rn.vertexShaderSource),r=this._compileShader(e,e.FRAGMENT_SHADER,rn.fragmentShaderSource);if(this.shaderProgram=e.createProgram(),e.attachShader(this.shaderProgram,t),e.attachShader(this.shaderProgram,r),e.linkProgram(this.shaderProgram),!e.getProgramParameter(this.shaderProgram,e.LINK_STATUS)){const i=e.getProgramInfoLog(this.shaderProgram);throw new Error(`Shader program linking failed: ${i}`)}e.useProgram(this.shaderProgram),e.deleteShader(t),e.deleteShader(r)}_initGeometry(e){const t=new Float32Array([-1,-1,-1,1,1,1,1,-1]);this._vertexBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW);const r=e.getAttribLocation(this.shaderProgram,"xy");e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(r),this._xyLocation=r}_initTexture(e){this._texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this._texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}_configureGLState(e,t){e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.DITHER),e.disable(e.BLEND),e.viewport(0,0,t.width,t.height)}get width(){return this._canvas2D.width}get height(){return this._canvas2D.height}get enableCanvasBuffer(){return this._canvas2D.enableCanvasBuffer}set enableCanvasBuffer(e){this._canvas2D.enableCanvasBuffer=e}get antiAliasing(){return this._canvas2D.antiAliasing}set antiAliasing(e){this._canvas2D.antiAliasing=e}get transparentOverlayImg(){return this._canvas2D.transparentOverlayImg}set transparentOverlayImg(e){this._canvas2D.transparentOverlayImg=e,this._canvas2D.enableCanvasBuffer=!0}get transparentOverlayRect(){return this._canvas2D.transparentOverlayRect}set transparentOverlayRect(e){this._canvas2D.transparentOverlayRect=e}_compileShader(e,t,r){const i=e.createShader(t);if(e.shaderSource(i,r),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS)){const a=t===e.VERTEX_SHADER?"Vertex":"Fragment",s=e.getShaderInfoLog(i);throw e.deleteShader(i),new Error(`${a} shader compilation failed: ${s}`)}return i}drawTransparentOverlayImg(){const e=this._canvas2D.transparentOverlayImg,t=this._canvas2D.transparentOverlayRect,r=this._canvas2D._target;if(!e||!t){this._watermarkCtx&&r&&this._watermarkCtx.clearRect(0,0,r.width,r.height);return}const i=r.width,a=r.height;(this._watermarkCanvas.width!==i||this._watermarkCanvas.height!==a)&&(this._watermarkCanvas.width=i,this._watermarkCanvas.height=a);const s=r.style;this._watermarkCanvas.style.width!==s.width&&(this._watermarkCanvas.style.width=s.width),this._watermarkCanvas.style.height!==s.height&&(this._watermarkCanvas.style.height=s.height),this._watermarkCtx.clearRect(0,0,i,a),e.width!==t.width||e.height!==t.height?this._watermarkCtx.drawImage(e,t.x,t.y,t.width,t.height):this._watermarkCtx.drawImage(e,t.x,t.y)}viewportChangeSize(e,t){const r=this._canvas2D.viewportChangeSize(e,t),i=this._canvas2D._target.style;return this._watermarkCanvas.style.width=i.width,this._watermarkCanvas.style.height=i.height,r}rescale(e,t,r,i,a,s){this._canvas2D.rescale(e,t,r,i,a,s);const l=this._canvas2D._target.style;this._watermarkCanvas.style.width=l.width,this._watermarkCanvas.style.height=l.height}resize(e,t,r){this._canvas2D.resize(e,t,r)}blitImage(e,t,r,i,a,s){this._canvas2D.blitImage(e,t,r,i,a,s)}blitQoi(e,t,r){this._canvas2D.blitQoi(e,t,r)}clearRect(e,t,r,i){this._canvas2D.clearRect(e,t,r,i)}copyImage(e,t,r,i,a,s){this._canvas2D.copyImage(e,t,r,i,a,s)}drawImage(e,t,r,i,a){this._canvas2D.drawImage(e,t,r,i,a)}drawVideoFrame(e,t,r,i,a){const s=Rt.start("webglRender"),l=this.gl,c=this._canvas2D._target.width,u=this._canvas2D._target.height;(this._lastWidth!==c||this._lastHeight!==u)&&this._resizeWebGLCanvas(c,u),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,e);const f=u-r-a;l.viewport(t,f,i,a),l.drawArrays(l.TRIANGLE_FAN,0,4),e.close(),Rt.end("webglRender",s)}_resizeWebGLCanvas(e,t){this._webglCanvas.width=e,this._webglCanvas.height=t;const r=this._canvas2D._target.style;this._webglCanvas.style.width=r.width,this._webglCanvas.style.height=r.height,this._watermarkCanvas.style.width=r.width,this._watermarkCanvas.style.height=r.height,this.gl.viewport(0,0,e,t),this._lastWidth=e,this._lastHeight=t}fillRect(e,t,r,i,a){this._canvas2D.fillRect(e,t,r,i,a)}_writeCtxBuffer(){this._canvas2D._writeCtxBuffer()}dispose(){var t,r,i;const e=this.gl;this._texture&&(e.deleteTexture(this._texture),this._texture=null),this._vertexBuffer&&(e.deleteBuffer(this._vertexBuffer),this._vertexBuffer=null),this.shaderProgram&&(e.deleteProgram(this.shaderProgram),this.shaderProgram=null),(t=this._webglCanvas)!=null&&t.parentNode&&this._webglCanvas.parentNode.removeChild(this._webglCanvas),(r=this._watermarkCanvas)!=null&&r.parentNode&&this._watermarkCanvas.parentNode.removeChild(this._watermarkCanvas),(i=this._canvas2D)==null||i.dispose(),this._canvas2D=null,this.gl=null,this._webglCanvas=null,this._watermarkCanvas=null,this._watermarkCtx=null}};Ni(rn,"vertexShaderSource",` + attribute vec2 xy; + varying highp vec2 uv; + + void main(void) { + gl_Position = vec4(xy, 0.0, 1.0); + uv = vec2((1.0 + xy.x) * 0.5, (1.0 - xy.y) * 0.5); + } + `),Ni(rn,"fragmentShaderSource",` + varying highp vec2 uv; + uniform sampler2D texture; + + void main(void) { + gl_FragColor = texture2D(texture, uv); + } + `);let Nl=rn;class aA{constructor(e,t,r,i="canvas2d"){z(">> Display.constructor"),this._asyncFrameQueue=[],this._maxAsyncFrameQueue=3,this._clearAsyncQueue(),this._syncFrameQueue=[],this._lastTransparentRectId="",this._flushing=!1,this._fbWidth=0,this._fbHeight=0,this._renderMs=0,this._backbuffer=document.createElement("canvas"),this._target=e;const a=new iA(e,this._backbuffer);if(i==="webgl"){const s=document.createElement("canvas"),l=s.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance",desynchronized:!0,preserveDrawingBuffer:!1})||s.getContext("webgl",{alpha:!1,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance",desynchronized:!0,preserveDrawingBuffer:!1});l?(s.width=0,s.height=0,s.style.position="absolute",s.style.left="0",s.style.top="0",s.style.pointerEvents="none",s.style.zIndex="1",s.style.width="0px",s.style.height="0px",e.parentNode&&e.parentNode.appendChild(s),this._renderer=new Nl(a,l,s),je("WebGL renderer initialized.")):(this._renderer=a,je("WebGL unavailable, falling back to Canvas2DRenderer."))}else this._renderer=a,je("Canvas2D renderer initialized.");z("User Agent: "+navigator.userAgent),this._flipCnt=0,this._lastFlip=Date.now(),this._droppedFrames=0,this._droppedFramesRate=0,this._droppedFramesCnt=0,this._droppedRects=0,this._forcedFrameCnt=0,this._missingFlipRect=0,this._lateFlipRect=0,this._frameStatsInterval=setInterval((function(){let s=Date.now()-this._lastFlip;if(s>0){if(this._fps=(this._flipCnt/(s/1e3)).toFixed(2),this._droppedFrames>this._droppedFramesCnt){let l=this._droppedFrames-this._droppedFramesCnt;this._droppedFramesRate=(l/(s/1e3)).toFixed(2)}else this._droppedFramesRate=0;this._droppedFramesCnt=this._droppedFrames}z("Dropped Frames: "+this._droppedFrames+" Dropped Rects: "+this._droppedRects+" Forced Frames: "+this._forcedFrameCnt+" Missing Flips: "+this._missingFlipRect+" Late Flips: "+this._lateFlipRect),this._flipCnt=0,this._lastFlip=Date.now()}).bind(this),5e3),this._maxScreens=4,this._scale=1,this._clipViewport=!1,this._fps=0,this._isPrimaryDisplay=r,this._screenID=X1(),this._screens=[{screenID:this._screenID,screenIndex:0,width:this._target.width,height:this._target.height,serverWidth:0,serverHeight:0,serverReportedWidth:0,serverReportedHeight:0,x:0,y:0,scale:1,relativePosition:0,relativePositionX:0,relativePositionY:0,pixelRatio:window.devicePixelRatio,containerHeight:this._target.parentNode.offsetHeight,containerWidth:this._target.parentNode.offsetWidth,channel:null,x2:0,y2:0}],this._threading=!0,this._primaryChannel=null,this._portRelayWorker=null,this._encodedFramePort=null,this._localDecoder=null,this._localDecoderCodec=null,this._localDecoderW=0,this._localDecoderH=0,this._localDecoderMeta=new Map,this._localDecoderTs=0,this._rfb=t,this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},this.onflush=()=>{},this._broadcastChannel=new BroadcastChannel(`channel_${this.screenID}`),this._isPrimaryDisplay||this._broadcastChannel.addEventListener("message",this._handleSecondaryDisplayMessage.bind(this)),z("<< Display.constructor")}get enableCanvasBuffer(){return this._renderer.enableCanvasBuffer}set enableCanvasBuffer(e){this._renderer.enableCanvasBuffer=e}get screens(){return this._screens}get screenID(){return this._screenID}get screenIndex(){return!this._isPrimaryDisplay&&this._screens[0].screenIndex==0?-1:this._screens[0].screenIndex}get antiAliasing(){return this._renderer.antiAliasing}set antiAliasing(e){this._renderer.antiAliasing=e,this._rescale(this._scale)}get scale(){return this._scale}set scale(e){this._rescale(e)}get threading(){return this._threading}set threading(e){this._threading=e}get clipViewport(){return this._clipViewport}set clipViewport(e){this._clipViewport=e;const t=this._screens[0];this.viewportChangeSize(t.width,t.height),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}get renderMs(){return this._renderMs}set renderMs(e){this._renderMs=e}get fps(){return this._fps}get droppedFps(){return this._droppedFramesRate}getClientRelativeCoordinates(e,t){for(let r=0;r=this._screens[r].x&&e<=this._screens[r].x+this._screens[r].serverWidth&&t>=this._screens[r].y&&t<=this._screens[r].y+this._screens[r].serverHeight)return{screenIndex:r,x:e-this._screens[r].x,y:t-this._screens[r].y}}getServerRelativeCoordinates(e,t,r){return e>=0&&e0&&this._screens[u].serverReportedHeight>0&&(s||this._screens[u].serverReportedWidth!==this._screens[u].serverWidth||this._screens[u].serverReportedHeight!==this._screens[u].serverHeight)&&!t&&!r)p=this._screens[u].serverReportedHeight,h=this._screens[u].serverReportedWidth;else if(h>1280&&!a&&e==1&&l==Ce.pseudoEncodingStreamingModeJpegWebp)p=Math.floor(1280*(p/h)),h=1280;else if(e==0&&!a&&l==Ce.pseudoEncodingStreamingModeJpegWebp)h=1280,p=720;else if(i)h=Math.floor(h*this._screens[u].pixelRatio),p=Math.floor(p*this._screens[u].pixelRatio),1/this._screens[u].pixelRatio;else if(((m=this._renderer)==null?void 0:m.antiAliasing)===0&&this._screens[u].pixelRatio>1&&h<1e3&h>0){je("Device Pixel ratio: "+this._screens[u].pixelRatio+" Reported Resolution: "+h+"x"+p);let v=1.5;this._screens[u].pixelRatio>2&&(v=2);let S=h*this._screens[u].pixelRatio*(1/v)/h;h=h*S,p=p*S,je("Small device with hDPI screen detected, auto scaling at "+S+" to "+h+"x"+p)}let _=this._screens[u].containerHeight/p,g=this._screens[u].containerWidth/h;for(this._screens[u].height=Math.floor(p*_),this._screens[u].width=Math.floor(h*g),this._screens[u].serverWidth=h,this._screens[u].serverHeight=p,this._screens[u].scale=Math.min(_,g),u=0;u0){const g=this._screens[_];if(g.serverHeight!==u||g.serverWidth!==c||g.width!==t||g.height!==r||g.containerHeight!==a||g.containerWidth!==s||g.scale!==l||g.pixelRatio!==i||g.x!==f||g.y!==h)return g.width=t,g.height=r,g.containerHeight=a,g.containerWidth=s,g.pixelRatio=i,g.scale=l,g.serverWidth=c,g.serverHeight=u,g.x=f,g.y=h,g.x2=g.x+g.serverWidth,g.y2=g.y+g.serverHeight,!0}else{for(let m=0;m{if(m.data.type==="port"){const v=this._screens[m.data.screenIndex];v&&(v.encodedFramePort=m.data.port,je(`[PRIMARY] encodedFramePort established for screen ${m.data.screenIndex}`))}}),this._portRelayWorker.port.postMessage({type:"primary_ready",screenIndex:g.screenIndex}),g.screenIndex}return!1}removeScreen(e){var r,i;let t=!1;if(this._isPrimaryDisplay){for(let a=1;a0&&((r=this._screens[a].channel)==null||r.postMessage({eventType:"registered",screenIndex:a}),(i=this._portRelayWorker)==null||i.port.postMessage({type:"primary_ready",screenIndex:a}));return t}else throw new Error("Secondary screens only allowed on primary display.")}viewportChangePos(e,t){const r=this._screens[0];e=Math.floor(e),t=Math.floor(t),this._clipViewport||(e=-r.width,t=-r.height);const i=r.x+r.width-1,a=r.y+r.height-1;e<0&&r.x+e<0&&(e=-r.x),i+e>=this._fbWidth&&(e-=i+e-this._fbWidth+1),r.y+t<0&&(t=-r.y),a+t>=this._fbHeight&&(t-=a+t-this._fbHeight+1),!(e===0&&t===0)&&z("viewportChange deltaX: "+e+", deltaY: "+t)}viewportChangeSize(e,t){var r;if((!this._clipViewport&&this._screens.length===1||typeof e>"u"||typeof t>"u")&&(z("Setting viewport to full display region"),e=this._fbWidth,t=this._fbHeight),e=Math.floor(e),t=Math.floor(t),e>this._fbWidth&&(e=this._fbWidth),t>this._fbHeight&&(t=this._fbHeight),(r=this._renderer)!=null&&r.viewportChangeSize(e,t)){const i=this._screens[0];i.serverWidth=e,i.serverHeight=t,this.viewportChangePos(0,0),this._rescale(this._scale)}}absX(e){return this._scale===0?0:Sn(e/this._scale+this._screens[0].x)}absY(e){return this._scale===0?0:Sn(e/this._scale+this._screens[0].y)}resize(e,t){var i;this._fbWidth=e,this._fbHeight=t,(i=this._renderer)==null||i.resize(e,t,this._screens);const r=this._screens[0];this.viewportChangeSize(r.serverWidth,r.serverHeight),this.viewportChangePos(0,0)}flip(e,t){this._asyncRenderQPush({type:"flip",frame_id:e,rect_cnt:t,screenLocations:[{screenIndex:0,x:0,y:0}]})}pending(){return this._asyncFrameQueue[this._maxAsyncFrameQueue-1][0]>0}flush(e=!0){this._asyncFrameComplete(0,!0),e&&this.onflush()}clear(){this._clearAsyncQueue()}dispose(){this._frameStatsInterval&&(clearInterval(this._frameStatsInterval),this._frameStatsInterval=null),this.clear(),this._renderer&&(this._renderer.dispose(),this._renderer=null)}fillRect(e,t,r,i,a,s,l){var c;if(l)(c=this._renderer)==null||c.fillRect(e,t,r,i,a);else{let u={type:"fill",x:e,y:t,width:r,height:i,color:a,frame_id:s};this._processRectScreens(u),this._asyncRenderQPush(u)}}copyImage(e,t,r,i,a,s,l,c){var u;if(c)(u=this._renderer)==null||u.copyImage(e,t,r,i,a,s);else{let f={type:"copy",oldX:e,oldY:t,x:r,y:i,width:a,height:s,frame_id:l};this._processRectScreens(f),this._asyncRenderQPush(f)}}_handleVidChunk(e,t){let r=e[0],i=e[1];e[2].close(),r.img=t.image,i._asyncRenderQPush(r)}imageRect(e,t,r,i,a,s,l){if(r===0||i===0)return;let c={type:"img",img:null,x:e,y:t,width:r,height:i,frame_id:l,mime:a};if(this._processRectScreens(c),c.inSecondary){let u="data: "+a+";base64,"+rA.encode(s);if(c.inPrimary){const f=new Image;c.img=f,c.type="img",f.src=u}else c.type="_img";c.inSecondary&&(c.src=u),this._asyncRenderQPush(c)}else if(typeof ImageDecoder<"u"&&this._threading){let u=new ImageDecoder({data:s,type:a});c.type="vid",u.decode().then(this._handleVidChunk.bind(null,[c,this,u]))}else{const u=new Blob([s],{type:a});createImageBitmap(u).then(f=>{c.type="bitmap",c.img=f,this._asyncRenderQPush(c)})}}enqueueVideoFrameRect(e,t,r,i,a,s){const l={type:"video_frame",screenId:e,frame:null,x:r,y:i,width:a,height:s,frame_id:t};e=a?r=e/i.serverWidth:r=t/i.serverHeight}this._rescale(r)}_handleSecondaryDisplayMessage(e){if(!(this._isPrimaryDisplay||!e.data))switch(e.data.eventType){case"rect":let t=e.data.rect;switch(t.screenLocations=[t.screenLocations[e.data.screenLocationIndex]],t.screenLocations[0].screenIndex=0,t.type){case"img":case"_img":t.img=new Image,t.img.src=t.src,t.type="img";break;case"transparent":createImageBitmap(t.arr).then((function(i){this._renderer.transparentOverlayImg=i}).bind(this)),this._renderer.transparentOverlayRect=t;break}this._syncFrameQueue.push(t),this._syncFrameQueue.length>5e3&&(this._syncFrameQueue.shift(),this._droppedRects++);break;case"frameComplete":window.requestAnimationFrame(()=>{this._pushSyncRects()});break;case"registered":if(!this._isPrimaryDisplay){const r=e.data.screenIndex;this._screens[0].screenIndex=r,je(`Screen with index (${r}) successfully registered with the primary display.`),this._screens.length>0&&this.resize(this._screens[0].serverWidth,this._screens[0].serverHeight);const i=new SharedWorker(new URL(""+new URL("port-relay-worker-DKkhJcwC.js",import.meta.url).href,import.meta.url));i.port.start(),i.port.onmessage=a=>{a.data.type==="port"&&(this._encodedFramePort=a.data.port,this._encodedFramePort.start(),this._encodedFramePort.onmessage=this._handleEncodedFrame.bind(this),je("[SECONDARY] encodedFramePort established"))},i.port.postMessage({type:"secondary_ready",screenIndex:r})}break}}_pushSyncRects(){var t,r,i;let e=0;e:for(;this._syncFrameQueue.length>0;){const a=this._syncFrameQueue[0],s=a.screenLocations[0];switch(a.type){case"copy":this.copyImage(s.oldX,s.oldY,s.x,s.y,a.width,a.height,a.frame_id,!0);break;case"fill":this.fillRect(s.x,s.y,a.width,a.height,a.color,a.frame_id,!0);break;case"blit":this.blitImage(s.x,s.y,a.width,a.height,a.data,0,a.frame_id,!0);break;case"blitQ":this.blitQoi(s.x,s.y,a.width,a.height,a.data,0,a.frame_id,!0);break;case"img":if(a.img.complete)this.drawImage(a.img,s.x,s.y,a.width,a.height);else if(this._syncFrameQueue.length>5e3)this._syncFrameQueue.shift(),this._droppedRects++;else break e;break;case"vid":this.drawImage(a.img,s.x,s.y,a.width,a.height),a.img.close();break;case"bitmap":this.drawImage(a.img,s.x,s.y,a.width,a.height),a.img.close();break;case"video_frame":this.drawVideoFrame(a.frame,s.x,s.y,a.width,a.height);break;default:this._syncFrameQueue.shift();continue}e++,this._syncFrameQueue.shift()}(t=this._renderer)!=null&&t.enableCanvasBuffer&&e>0&&((r=this._renderer)==null||r._writeCtxBuffer(),(i=this._renderer)==null||i.drawTransparentOverlayImg()),this._syncFrameQueue.length>0&&window.requestAnimationFrame(()=>{this._pushSyncRects()})}_flushRectsScreen(e){for(let t=0;t=0)e.type=="flip"&&(this._asyncFrameQueue[t][1]!==0&&at("Redundant flip rect, current rect_cnt: "+this._asyncFrameQueue[t][1]+", new rect_cnt: "+e.rect_cnt),this._asyncFrameQueue[t][1]+=e.rect_cnt,e.rect_cnt==0&&at("Invalid rect count")),this._asyncFrameQueue[t][1]>0&&this._asyncFrameQueue[t][2].length>=this._asyncFrameQueue[t][1]&&this._asyncFrameComplete(t);else if(e.frame_idi){if(this._asyncFrameQueue[0][3]==!0)at("Forced frame to canvas"),this._pushAsyncFrame(!0),this._droppedFrames+=e.frame_id-(i+1),this._forcedFrameCnt++;else{at("Old frame dropped");const c=this._asyncFrameQueue[0];for(const u of c[2])u.type==="video_frame"&&((s=u.frame)==null||s.close());this._asyncFrameQueue.shift(),this._droppedFrames+=e.frame_id-i}let l=e.type=="flip"?e.rect_cnt:0;this._asyncFrameQueue.push([e.frame_id,l,[e],l==1,0,0])}}_clearAsyncQueue(){var e;for(const t of this._asyncFrameQueue)for(const r of t[2])r.type==="video_frame"&&((e=r.frame)==null||e.close());this._droppedFrames+=this._asyncFrameQueue.length,this._asyncFrameQueue=[];for(let t=0;t=this._asyncFrameQueue.length)return;let r=this._asyncFrameQueue[e][4];if(t)for(this._asyncFrameQueue[e][1]==0?this._missingFlipRect++:this._asyncFrameQueue[e][1]!==this._asyncFrameQueue[e][2].length&&(this._droppedRects+=this._asyncFrameQueue[e][1]-this._asyncFrameQueue[e][2].length,this._asyncFrameQueue[e][2].length>this._asyncFrameQueue[e][1]&&at("Frame has more rects than the reported rect_cnt."));r{this._asyncFrameComplete(e)}),this._asyncFrameQueue[e][4]=r;return}r++}this._asyncFrameQueue[e][4]=r,this._asyncFrameQueue[e][3]=!0,t&&e==0?this._pushAsyncFrame(!0):window.requestAnimationFrame(()=>{this._pushAsyncFrame()})}_pushAsyncFrame(e=!1){var t,r,i,a,s,l,c,u;if(Rt.recordFrameInterval(),this._asyncFrameQueue[0][3]||e){const f=Rt.start("frameProcessing");let h=this._asyncFrameQueue[0][2],p=this._asyncFrameQueue.shift()[0];this._asyncFrameQueue.length{Rt.end("imageBitmapCreate",E);const R=Rt.start("broadcastChannelSend");this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:{type:"bitmap",img:C,x:v.x,y:v.y,width:v.width,height:v.height,frame_id:v.frame_id,screenLocations:v.screenLocations},screenLocationIndex:b},[C]),Rt.end("broadcastChannelSend",R),z(`[PRIMARY] ImageBitmap posted to secondary screen ${S.screenIndex}`)}).catch(C=>{Rt.end("imageBitmapCreate",E),Ke(`[PRIMARY] Failed to create ImageBitmap from VideoFrame: ${C.message}`)})}else v.frame.close();else at("[PRIMARY] VideoFrame has null format, skipping");break;case"img":case"_img":_++,this._screens[S.screenIndex].channel&&this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:{type:"img",img:null,x:v.x,y:v.y,width:v.width,height:v.height,frame_id:v.frame_id,screenLocations:v.screenLocations,src:v.src},screenLocationIndex:b});break;default:if(_++,v instanceof HTMLImageElement||(v==null?void 0:v.img)instanceof HTMLImageElement)at("Wrong rect type: "+v.type);else if(this._screens[S.screenIndex].channel)try{this._screens[S.screenIndex].channel.postMessage({eventType:"rect",rect:v,screenLocationIndex:b})}catch(E){Ke(`Failed to post rect: ${E.message}, rect type: ${v.type}`)}}}}}if((a=this._renderer)!=null&&a.enableCanvasBuffer&&(g>0&&((s=this._renderer)==null||s._writeCtxBuffer()),(l=this._renderer)!=null&&l.transparentOverlayImg)){g>0&&((c=this._renderer)==null||c.drawTransparentOverlayImg());const m=(u=this._renderer)==null?void 0:u.transparentOverlayRect;if(_>0&&this._lastTransparentRectId!==m.hash_id)for(let v=1;v0)for(let m=1;m0&&window.requestAnimationFrame(()=>{this._pushAsyncFrame()})}else this._asyncFrameQueue[0][1]>0&&this._asyncFrameQueue[0][1]===this._asyncFrameQueue[0][2].length&&(this._asyncFrameQueue[0][5]+=1,this._asyncFrameQueue[0][5]>5&&this._pushAsyncFrame(!0))}_handleEncodedFrame(e){const{codec:t,keyFrame:r,data:i,x:a,y:s,width:l,height:c,frameId:u}=e.data;(!this._localDecoder||this._localDecoderCodec!==t||this._localDecoderW!==l||this._localDecoderH!==c)&&(this._localDecoder&&(this._localDecoder.close(),this._localDecoderMeta.clear()),this._localDecoder=new VideoDecoder({output:h=>{var _;const p=this._localDecoderMeta.get(h.timestamp);this._localDecoderMeta.delete(h.timestamp),p?(this.drawVideoFrame(h,p.x,p.y,p.width,p.height),(_=this._renderer)!=null&&_.enableCanvasBuffer&&(this._renderer._writeCtxBuffer(),this._renderer.drawTransparentOverlayImg())):h.close()},error:h=>{Ke("Secondary VideoDecoder error:",h),this._localDecoder=null}}),this._localDecoder.configure({codec:t,displayAspectWidth:l,displayAspectHeight:c,optimizeForLatency:!0}),this._localDecoderCodec=t,this._localDecoderW=l,this._localDecoderH=c);const f=++this._localDecoderTs;this._localDecoderMeta.set(f,{x:a,y:s,width:l,height:c,frameId:u}),this._localDecoder.decode(new EncodedVideoChunk({type:r?"key":"delta",data:i,timestamp:f}))}_processRectScreens(e){let t=[];if(e.type==="video_frame"){const r=this._screens[e.screenId];let i={x:0-(r.x-e.x),y:0-(r.y-e.y),screenIndex:e.screenId};t.push(i)}else{e.inPrimary=!1,e.inSecondary=!1;for(let r=0;ri.x2||i.x>e.x+e.width)&&(e.y>i.y2||i.y>e.y+e.height))){let a={x:0-(i.x-e.x),y:0-(i.y-e.y),screenIndex:r};e.type==="copy"&&(a.oldX=0-(i.x-e.oldX),a.oldY=0-(i.y-e.oldY)),t.push(a),r===0?e.inPrimary=!0:e.inSecondary=!0}}}e.screenLocations=t}_rescale(e){var a;this._scale=e;const t=this._screens[0],r=e*t.serverWidth+"px",i=e*t.serverHeight+"px";(a=this._renderer)==null||a.rescale(e,r,i,t.serverWidth,t.serverHeight,t.width),requestAnimationFrame(()=>{this._pushAsyncFrame()})}}var rr={},ml,Vb;function H1(){return Vb||(Vb=1,ml=(e,t,r,i)=>{let a=e&65535|0,s=e>>>16&65535|0,l=0;for(;r!==0;){l=r>2e3?2e3:r,r-=l;do a=a+t[i++]|0,s=s+a|0;while(--l);a%=65521,s%=65521}return a|s<<16|0}),ml}var yl,Kb;function Q1(){if(Kb)return yl;Kb=1;const n=()=>{let r,i=[];for(var a=0;a<256;a++){r=a;for(var s=0;s<8;s++)r=r&1?3988292384^r>>>1:r>>>1;i[a]=r}return i},e=new Uint32Array(n());return yl=(r,i,a,s)=>{const l=e,c=s+a;r^=-1;for(let u=s;u>>8^l[(r^i[u])&255];return r^-1},yl}var bl,Ub;function sA(){if(Ub)return bl;Ub=1;const n=16209,e=16191;return bl=function(r,i){let a,s,l,c,u,f,h,p,_,g,m,v,b,S,x,E,C,R,P,F,k,q,ce,j;const K=r.state;a=r.next_in,ce=r.input,s=a+(r.avail_in-5),l=r.next_out,j=r.output,c=l-(i-r.avail_out),u=l+(r.avail_out-257),f=K.dmax,h=K.wsize,p=K.whave,_=K.wnext,g=K.window,m=K.hold,v=K.bits,b=K.lencode,S=K.distcode,x=(1<>>24,m>>>=R,v-=R,R=C>>>16&255,R===0)j[l++]=C&65535;else if(R&16){P=C&65535,R&=15,R&&(v>>=R,v-=R),v<15&&(m+=ce[a++]<>>24,m>>>=R,v-=R,R=C>>>16&255,R&16){if(F=C&65535,R&=15,vf){r.msg="invalid distance too far back",K.mode=n;break e}if(m>>>=R,v-=R,R=l-c,F>R){if(R=F-R,R>p&&K.sane){r.msg="invalid distance too far back",K.mode=n;break e}if(k=0,q=g,_===0){if(k+=h-R,R2;)j[l++]=q[k++],j[l++]=q[k++],j[l++]=q[k++],P-=3;P&&(j[l++]=q[k++],P>1&&(j[l++]=q[k++]))}else{k=l-F;do j[l++]=j[k++],j[l++]=j[k++],j[l++]=j[k++],P-=3;while(P>2);P&&(j[l++]=j[k++],P>1&&(j[l++]=j[k++]))}}else if((R&64)===0){C=S[(C&65535)+(m&(1<>3,a-=P,v-=P<<3,m&=(1<{const x=S.bits;let E=0,C=0,R=0,P=0,F=0,k=0,q=0,ce=0,j=0,K=0,ue,ve,ge,ye,Me,X=null,L;const H=new Uint16Array(n+1),pe=new Uint16Array(n+1);let G=null,Se,Te,De;for(E=0;E<=n;E++)H[E]=0;for(C=0;C=1&&H[P]===0;P--);if(F>P&&(F=P),P===0)return m[v++]=1<<24|64<<16|0,m[v++]=1<<24|64<<16|0,S.bits=1,0;for(R=1;R0&&(h===r||P!==1))return-1;for(pe[1]=0,E=1;Ee||h===a&&j>t)return 1;for(;;){Se=E-q,b[C]+1=L?(Te=G[b[C]-L],De=X[b[C]-L]):(Te=96,De=0),ue=1<>q)+ve]=Se<<24|Te<<16|De|0;while(ve!==0);for(ue=1<>=1;if(ue!==0?(K&=ue-1,K+=ue):K=0,C++,--H[E]===0){if(E===P)break;E=p[_+b[C]]}if(E>F&&(K&ye)!==ge){for(q===0&&(q=F),Me+=R,k=E-q,ce=1<e||h===a&&j>t)return 1;ge=K&ye,m[ge]=F<<24|k<<16|Me-v|0}}return K!==0&&(m[Me+K]=E-q<<24|64<<16|0),S.bits=F,0},xl}var El,Xb;function j1(){return Xb||(Xb=1,El={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}),El}var Hb;function lA(){if(Hb)return rr;Hb=1;const n=H1(),e=Q1(),t=sA(),r=oA(),i=0,a=1,s=2,{Z_FINISH:l,Z_BLOCK:c,Z_TREES:u,Z_OK:f,Z_STREAM_END:h,Z_NEED_DICT:p,Z_STREAM_ERROR:_,Z_DATA_ERROR:g,Z_MEM_ERROR:m,Z_BUF_ERROR:v,Z_DEFLATED:b}=j1(),S=16180,x=16181,E=16182,C=16183,R=16184,P=16185,F=16186,k=16187,q=16188,ce=16189,j=16190,K=16191,ue=16192,ve=16193,ge=16194,ye=16195,Me=16196,X=16197,L=16198,H=16199,pe=16200,G=16201,Se=16202,Te=16203,De=16204,Ae=16205,ke=16206,st=16207,et=16208,Ne=16209,Pe=16210,Fe=16211,me=852,Oe=592,le=15,Ie=A=>(A>>>24&255)+(A>>>8&65280)+((A&65280)<<8)+((A&255)<<24);function Ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const tt=A=>{if(!A)return 1;const N=A.state;return!N||N.strm!==A||N.modeFe?1:0},nt=A=>{if(tt(A))return _;const N=A.state;return A.total_in=A.total_out=N.total=0,A.msg="",N.wrap&&(A.adler=N.wrap&1),N.mode=S,N.last=0,N.havedict=0,N.flags=-1,N.dmax=32768,N.head=null,N.hold=0,N.bits=0,N.lencode=N.lendyn=new Int32Array(me),N.distcode=N.distdyn=new Int32Array(Oe),N.sane=1,N.back=-1,f},it=A=>{if(tt(A))return _;const N=A.state;return N.wsize=0,N.whave=0,N.wnext=0,nt(A)},Be=(A,N)=>{let y;if(tt(A))return _;const _e=A.state;return N<0?(y=0,N=-N):(y=(N>>4)+5,N<48&&(N&=15)),N&&(N<8||N>15)?_:(_e.window!==null&&_e.wbits!==N&&(_e.window=null),_e.wrap=y,_e.wbits=N,it(A))},Ze=(A,N)=>{if(!A)return _;const y=new Ge;A.state=y,y.strm=A,y.window=null,y.mode=S;const _e=Be(A,N);return _e!==f&&(A.state=null),_e},$e=A=>Ze(A,le);let Ct=!0,bt,Mt;const w=A=>{if(Ct){bt=new Int32Array(512),Mt=new Int32Array(32);let N=0;for(;N<144;)A.lens[N++]=8;for(;N<256;)A.lens[N++]=9;for(;N<280;)A.lens[N++]=7;for(;N<288;)A.lens[N++]=8;for(r(a,A.lens,0,288,bt,0,A.work,{bits:9}),N=0;N<32;)A.lens[N++]=5;r(s,A.lens,0,32,Mt,0,A.work,{bits:5}),Ct=!1}A.lencode=bt,A.lenbits=9,A.distcode=Mt,A.distbits=5},ee=(A,N,y,_e)=>{let Xe;const xe=A.state;return xe.window===null&&(xe.wsize=1<=xe.wsize?(xe.window.set(N.subarray(y-xe.wsize,y),0),xe.wnext=0,xe.whave=xe.wsize):(Xe=xe.wsize-xe.wnext,Xe>_e&&(Xe=_e),xe.window.set(N.subarray(y-_e,y-_e+Xe),xe.wnext),_e-=Xe,_e?(xe.window.set(N.subarray(y-_e,y),0),xe.wnext=_e,xe.whave=xe.wsize):(xe.wnext+=Xe,xe.wnext===xe.wsize&&(xe.wnext=0),xe.whave{let y,_e,Xe,xe,ze,Re,Je,se,de,Xt,mt,d,te,T,U=0,B,Le,Qe,Ve,Ot,ot,lt,Nt;const St=new Uint8Array(4);let I,oe;const fe=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(tt(A)||!A.output||!A.input&&A.avail_in!==0)return _;y=A.state,y.mode===K&&(y.mode=ue),ze=A.next_out,Xe=A.output,Je=A.avail_out,xe=A.next_in,_e=A.input,Re=A.avail_in,se=y.hold,de=y.bits,Xt=Re,mt=Je,Nt=f;e:for(;;)switch(y.mode){case S:if(y.wrap===0){y.mode=ue;break}for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,y.check=e(y.check,St,2,0),se=0,de=0,y.mode=x;break}if(y.head&&(y.head.done=!1),!(y.wrap&1)||(((se&255)<<8)+(se>>8))%31){A.msg="incorrect header check",y.mode=Ne;break}if((se&15)!==b){A.msg="unknown compression method",y.mode=Ne;break}if(se>>>=4,de-=4,lt=(se&15)+8,y.wbits===0&&(y.wbits=lt),lt>15||lt>y.wbits){A.msg="invalid window size",y.mode=Ne;break}y.dmax=1<>8&1),y.flags&512&&y.wrap&4&&(St[0]=se&255,St[1]=se>>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0,y.mode=E;case E:for(;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,St[2]=se>>>16&255,St[3]=se>>>24&255,y.check=e(y.check,St,4,0)),se=0,de=0,y.mode=C;case C:for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>8),y.flags&512&&y.wrap&4&&(St[0]=se&255,St[1]=se>>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0,y.mode=R;case R:if(y.flags&1024){for(;de<16;){if(Re===0)break e;Re--,se+=_e[xe++]<>>8&255,y.check=e(y.check,St,2,0)),se=0,de=0}else y.head&&(y.head.extra=null);y.mode=P;case P:if(y.flags&1024&&(d=y.length,d>Re&&(d=Re),d&&(y.head&&(lt=y.head.extra_len-y.length,y.head.extra||(y.head.extra=new Uint8Array(y.head.extra_len)),y.head.extra.set(_e.subarray(xe,xe+d),lt)),y.flags&512&&y.wrap&4&&(y.check=e(y.check,_e,d,xe)),Re-=d,xe+=d,y.length-=d),y.length))break e;y.length=0,y.mode=F;case F:if(y.flags&2048){if(Re===0)break e;d=0;do lt=_e[xe+d++],y.head&<&&y.length<65536&&(y.head.name+=String.fromCharCode(lt));while(lt&&d>9&1,y.head.done=!0),A.adler=y.check=0,y.mode=K;break;case ce:for(;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=de&7,de-=de&7,y.mode=ke;break}for(;de<3;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=1,de-=1,se&3){case 0:y.mode=ve;break;case 1:if(w(y),y.mode=H,N===u){se>>>=2,de-=2;break e}break;case 2:y.mode=Me;break;case 3:A.msg="invalid block type",y.mode=Ne}se>>>=2,de-=2;break;case ve:for(se>>>=de&7,de-=de&7;de<32;){if(Re===0)break e;Re--,se+=_e[xe++]<>>16^65535)){A.msg="invalid stored block lengths",y.mode=Ne;break}if(y.length=se&65535,se=0,de=0,y.mode=ge,N===u)break e;case ge:y.mode=ye;case ye:if(d=y.length,d){if(d>Re&&(d=Re),d>Je&&(d=Je),d===0)break e;Xe.set(_e.subarray(xe,xe+d),ze),Re-=d,xe+=d,Je-=d,ze+=d,y.length-=d;break}y.mode=K;break;case Me:for(;de<14;){if(Re===0)break e;Re--,se+=_e[xe++]<>>=5,de-=5,y.ndist=(se&31)+1,se>>>=5,de-=5,y.ncode=(se&15)+4,se>>>=4,de-=4,y.nlen>286||y.ndist>30){A.msg="too many length or distance symbols",y.mode=Ne;break}y.have=0,y.mode=X;case X:for(;y.have>>=3,de-=3}for(;y.have<19;)y.lens[fe[y.have++]]=0;if(y.lencode=y.lendyn,y.lenbits=7,I={bits:y.lenbits},Nt=r(i,y.lens,0,19,y.lencode,0,y.work,I),y.lenbits=I.bits,Nt){A.msg="invalid code lengths set",y.mode=Ne;break}y.have=0,y.mode=L;case L:for(;y.have>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=B,de-=B,y.lens[y.have++]=Qe;else{if(Qe===16){for(oe=B+2;de>>=B,de-=B,y.have===0){A.msg="invalid bit length repeat",y.mode=Ne;break}lt=y.lens[y.have-1],d=3+(se&3),se>>>=2,de-=2}else if(Qe===17){for(oe=B+3;de>>=B,de-=B,lt=0,d=3+(se&7),se>>>=3,de-=3}else{for(oe=B+7;de>>=B,de-=B,lt=0,d=11+(se&127),se>>>=7,de-=7}if(y.have+d>y.nlen+y.ndist){A.msg="invalid bit length repeat",y.mode=Ne;break}for(;d--;)y.lens[y.have++]=lt}}if(y.mode===Ne)break;if(y.lens[256]===0){A.msg="invalid code -- missing end-of-block",y.mode=Ne;break}if(y.lenbits=9,I={bits:y.lenbits},Nt=r(a,y.lens,0,y.nlen,y.lencode,0,y.work,I),y.lenbits=I.bits,Nt){A.msg="invalid literal/lengths set",y.mode=Ne;break}if(y.distbits=6,y.distcode=y.distdyn,I={bits:y.distbits},Nt=r(s,y.lens,y.nlen,y.ndist,y.distcode,0,y.work,I),y.distbits=I.bits,Nt){A.msg="invalid distances set",y.mode=Ne;break}if(y.mode=H,N===u)break e;case H:y.mode=pe;case pe:if(Re>=6&&Je>=258){A.next_out=ze,A.avail_out=Je,A.next_in=xe,A.avail_in=Re,y.hold=se,y.bits=de,t(A,mt),ze=A.next_out,Xe=A.output,Je=A.avail_out,xe=A.next_in,_e=A.input,Re=A.avail_in,se=y.hold,de=y.bits,y.mode===K&&(y.back=-1);break}for(y.back=0;U=y.lencode[se&(1<>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>Ve)],B=U>>>24,Le=U>>>16&255,Qe=U&65535,!(Ve+B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=Ve,de-=Ve,y.back+=Ve}if(se>>>=B,de-=B,y.back+=B,y.length=Qe,Le===0){y.mode=Ae;break}if(Le&32){y.back=-1,y.mode=K;break}if(Le&64){A.msg="invalid literal/length code",y.mode=Ne;break}y.extra=Le&15,y.mode=G;case G:if(y.extra){for(oe=y.extra;de>>=y.extra,de-=y.extra,y.back+=y.extra}y.was=y.length,y.mode=Se;case Se:for(;U=y.distcode[se&(1<>>24,Le=U>>>16&255,Qe=U&65535,!(B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>Ve)],B=U>>>24,Le=U>>>16&255,Qe=U&65535,!(Ve+B<=de);){if(Re===0)break e;Re--,se+=_e[xe++]<>>=Ve,de-=Ve,y.back+=Ve}if(se>>>=B,de-=B,y.back+=B,Le&64){A.msg="invalid distance code",y.mode=Ne;break}y.offset=Qe,y.extra=Le&15,y.mode=Te;case Te:if(y.extra){for(oe=y.extra;de>>=y.extra,de-=y.extra,y.back+=y.extra}if(y.offset>y.dmax){A.msg="invalid distance too far back",y.mode=Ne;break}y.mode=De;case De:if(Je===0)break e;if(d=mt-Je,y.offset>d){if(d=y.offset-d,d>y.whave&&y.sane){A.msg="invalid distance too far back",y.mode=Ne;break}d>y.wnext?(d-=y.wnext,te=y.wsize-d):te=y.wnext-d,d>y.length&&(d=y.length),T=y.window}else T=Xe,te=ze-y.offset,d=y.length;d>Je&&(d=Je),Je-=d,y.length-=d;do Xe[ze++]=T[te++];while(--d);y.length===0&&(y.mode=pe);break;case Ae:if(Je===0)break e;Xe[ze++]=y.length,Je--,y.mode=pe;break;case ke:if(y.wrap){for(;de<32;){if(Re===0)break e;Re--,se|=_e[xe++]<{if(tt(A))return _;let N=A.state;return N.window&&(N.window=null),A.state=null,f},V=(A,N)=>{if(tt(A))return _;const y=A.state;return(y.wrap&2)===0?_:(y.head=N,N.done=!1,f)},W=(A,N)=>{const y=N.length;let _e,Xe,xe;return tt(A)||(_e=A.state,_e.wrap!==0&&_e.mode!==j)?_:_e.mode===j&&(Xe=1,Xe=n(Xe,N,y,0),Xe!==_e.check)?g:(xe=ee(A,N,y,y),xe?(_e.mode=Pe,m):(_e.havedict=1,f))};return rr.inflateReset=it,rr.inflateReset2=Be,rr.inflateResetKeep=nt,rr.inflateInit=$e,rr.inflateInit2=Ze,rr.inflate=he,rr.inflateEnd=D,rr.inflateGetHeader=V,rr.inflateSetDictionary=W,rr.inflateInfo="pako inflate (from Nodeca project)",rr}var Sl=lA(),wl,Qb;function cA(){if(Qb)return wl;Qb=1;function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}return wl=n,wl}var uA=cA();const W1=gS(uA);class ci{constructor(){this.strm=new W1,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),this.windowBits=5,Sl.inflateInit(this.strm,this.windowBits)}setInput(e){e?(this.strm.input=e,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(e){if(e>this.chunkSize&&(this.chunkSize=e,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=e,Sl.inflate(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=e)throw new Error("Incomplete zlib block, got "+this.strm.next_out+" expected "+e);return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){Sl.inflateReset(this.strm)}}var ar={},Vr={},jb;function dA(){if(jb)return Vr;jb=1;const n=4,e=0,t=1,r=2;function i(w){let ee=w.length;for(;--ee>=0;)w[ee]=0}const a=0,s=1,l=2,c=3,u=258,f=29,h=256,p=h+1+f,_=30,g=19,m=2*p+1,v=15,b=16,S=7,x=256,E=16,C=17,R=18,P=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),F=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),k=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),q=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ce=512,j=new Array((p+2)*2);i(j);const K=new Array(_*2);i(K);const ue=new Array(ce);i(ue);const ve=new Array(u-c+1);i(ve);const ge=new Array(f);i(ge);const ye=new Array(_);i(ye);function Me(w,ee,he,D,V){this.static_tree=w,this.extra_bits=ee,this.extra_base=he,this.elems=D,this.max_length=V,this.has_stree=w&&w.length}let X,L,H;function pe(w,ee){this.dyn_tree=w,this.max_code=0,this.stat_desc=ee}const G=w=>w<256?ue[w]:ue[256+(w>>>7)],Se=(w,ee)=>{w.pending_buf[w.pending++]=ee&255,w.pending_buf[w.pending++]=ee>>>8&255},Te=(w,ee,he)=>{w.bi_valid>b-he?(w.bi_buf|=ee<>b-w.bi_valid,w.bi_valid+=he-b):(w.bi_buf|=ee<{Te(w,he[ee*2],he[ee*2+1])},Ae=(w,ee)=>{let he=0;do he|=w&1,w>>>=1,he<<=1;while(--ee>0);return he>>>1},ke=w=>{w.bi_valid===16?(Se(w,w.bi_buf),w.bi_buf=0,w.bi_valid=0):w.bi_valid>=8&&(w.pending_buf[w.pending++]=w.bi_buf&255,w.bi_buf>>=8,w.bi_valid-=8)},st=(w,ee)=>{const he=ee.dyn_tree,D=ee.max_code,V=ee.stat_desc.static_tree,W=ee.stat_desc.has_stree,A=ee.stat_desc.extra_bits,N=ee.stat_desc.extra_base,y=ee.stat_desc.max_length;let _e,Xe,xe,ze,Re,Je,se=0;for(ze=0;ze<=v;ze++)w.bl_count[ze]=0;for(he[w.heap[w.heap_max]*2+1]=0,_e=w.heap_max+1;_ey&&(ze=y,se++),he[Xe*2+1]=ze,!(Xe>D)&&(w.bl_count[ze]++,Re=0,Xe>=N&&(Re=A[Xe-N]),Je=he[Xe*2],w.opt_len+=Je*(ze+Re),W&&(w.static_len+=Je*(V[Xe*2+1]+Re)));if(se!==0){do{for(ze=y-1;w.bl_count[ze]===0;)ze--;w.bl_count[ze]--,w.bl_count[ze+1]+=2,w.bl_count[y]--,se-=2}while(se>0);for(ze=y;ze!==0;ze--)for(Xe=w.bl_count[ze];Xe!==0;)xe=w.heap[--_e],!(xe>D)&&(he[xe*2+1]!==ze&&(w.opt_len+=(ze-he[xe*2+1])*he[xe*2],he[xe*2+1]=ze),Xe--)}},et=(w,ee,he)=>{const D=new Array(v+1);let V=0,W,A;for(W=1;W<=v;W++)V=V+he[W-1]<<1,D[W]=V;for(A=0;A<=ee;A++){let N=w[A*2+1];N!==0&&(w[A*2]=Ae(D[N]++,N))}},Ne=()=>{let w,ee,he,D,V;const W=new Array(v+1);for(he=0,D=0;D>=7;D<_;D++)for(ye[D]=V<<7,w=0;w<1<{let ee;for(ee=0;ee{w.bi_valid>8?Se(w,w.bi_buf):w.bi_valid>0&&(w.pending_buf[w.pending++]=w.bi_buf),w.bi_buf=0,w.bi_valid=0},me=(w,ee,he,D)=>{const V=ee*2,W=he*2;return w[V]{const D=w.heap[he];let V=he<<1;for(;V<=w.heap_len&&(V{let D,V,W=0,A,N;if(w.sym_next!==0)do D=w.pending_buf[w.sym_buf+W++]&255,D+=(w.pending_buf[w.sym_buf+W++]&255)<<8,V=w.pending_buf[w.sym_buf+W++],D===0?De(w,V,ee):(A=ve[V],De(w,A+h+1,ee),N=P[A],N!==0&&(V-=ge[A],Te(w,V,N)),D--,A=G(D),De(w,A,he),N=F[A],N!==0&&(D-=ye[A],Te(w,D,N)));while(W{const he=ee.dyn_tree,D=ee.stat_desc.static_tree,V=ee.stat_desc.has_stree,W=ee.stat_desc.elems;let A,N,y=-1,_e;for(w.heap_len=0,w.heap_max=m,A=0;A>1;A>=1;A--)Oe(w,he,A);_e=W;do A=w.heap[1],w.heap[1]=w.heap[w.heap_len--],Oe(w,he,1),N=w.heap[1],w.heap[--w.heap_max]=A,w.heap[--w.heap_max]=N,he[_e*2]=he[A*2]+he[N*2],w.depth[_e]=(w.depth[A]>=w.depth[N]?w.depth[A]:w.depth[N])+1,he[A*2+1]=he[N*2+1]=_e,w.heap[1]=_e++,Oe(w,he,1);while(w.heap_len>=2);w.heap[--w.heap_max]=w.heap[1],st(w,ee),et(he,y,w.bl_count)},Ie=(w,ee,he)=>{let D,V=-1,W,A=ee[1],N=0,y=7,_e=4;for(A===0&&(y=138,_e=3),ee[(he+1)*2+1]=65535,D=0;D<=he;D++)W=A,A=ee[(D+1)*2+1],!(++N{let D,V=-1,W,A=ee[1],N=0,y=7,_e=4;for(A===0&&(y=138,_e=3),D=0;D<=he;D++)if(W=A,A=ee[(D+1)*2+1],!(++N{let ee;for(Ie(w,w.dyn_ltree,w.l_desc.max_code),Ie(w,w.dyn_dtree,w.d_desc.max_code),le(w,w.bl_desc),ee=g-1;ee>=3&&w.bl_tree[q[ee]*2+1]===0;ee--);return w.opt_len+=3*(ee+1)+5+5+4,ee},nt=(w,ee,he,D)=>{let V;for(Te(w,ee-257,5),Te(w,he-1,5),Te(w,D-4,4),V=0;V{let ee=4093624447,he;for(he=0;he<=31;he++,ee>>>=1)if(ee&1&&w.dyn_ltree[he*2]!==0)return e;if(w.dyn_ltree[18]!==0||w.dyn_ltree[20]!==0||w.dyn_ltree[26]!==0)return t;for(he=32;he{Be||(Ne(),Be=!0),w.l_desc=new pe(w.dyn_ltree,X),w.d_desc=new pe(w.dyn_dtree,L),w.bl_desc=new pe(w.bl_tree,H),w.bi_buf=0,w.bi_valid=0,Pe(w)},$e=(w,ee,he,D)=>{Te(w,(a<<1)+(D?1:0),3),Fe(w),Se(w,he),Se(w,~he),he&&w.pending_buf.set(w.window.subarray(ee,ee+he),w.pending),w.pending+=he},Ct=w=>{Te(w,s<<1,3),De(w,x,j),ke(w)},bt=(w,ee,he,D)=>{let V,W,A=0;w.level>0?(w.strm.data_type===r&&(w.strm.data_type=it(w)),le(w,w.l_desc),le(w,w.d_desc),A=tt(w),V=w.opt_len+3+7>>>3,W=w.static_len+3+7>>>3,W<=V&&(V=W)):V=W=he+5,he+4<=V&&ee!==-1?$e(w,ee,he,D):w.strategy===n||W===V?(Te(w,(s<<1)+(D?1:0),3),ae(w,j,K)):(Te(w,(l<<1)+(D?1:0),3),nt(w,w.l_desc.max_code+1,w.d_desc.max_code+1,A+1),ae(w,w.dyn_ltree,w.dyn_dtree)),Pe(w),D&&Fe(w)},Mt=(w,ee,he)=>(w.pending_buf[w.sym_buf+w.sym_next++]=ee,w.pending_buf[w.sym_buf+w.sym_next++]=ee>>8,w.pending_buf[w.sym_buf+w.sym_next++]=he,ee===0?w.dyn_ltree[he*2]++:(w.matches++,ee--,w.dyn_ltree[(ve[he]+h+1)*2]++,w.dyn_dtree[G(ee)*2]++),w.sym_next===w.sym_end);return Vr._tr_init=Ze,Vr._tr_stored_block=$e,Vr._tr_flush_block=bt,Vr._tr_tally=Mt,Vr._tr_align=Ct,Vr}var Cl,Wb;function fA(){return Wb||(Wb=1,Cl={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}),Cl}var zb;function hA(){if(zb)return ar;zb=1;const{_tr_init:n,_tr_stored_block:e,_tr_flush_block:t,_tr_tally:r,_tr_align:i}=dA(),a=H1(),s=Q1(),l=fA(),{Z_NO_FLUSH:c,Z_PARTIAL_FLUSH:u,Z_FULL_FLUSH:f,Z_FINISH:h,Z_BLOCK:p,Z_OK:_,Z_STREAM_END:g,Z_STREAM_ERROR:m,Z_DATA_ERROR:v,Z_BUF_ERROR:b,Z_DEFAULT_COMPRESSION:S,Z_FILTERED:x,Z_HUFFMAN_ONLY:E,Z_RLE:C,Z_FIXED:R,Z_DEFAULT_STRATEGY:P,Z_UNKNOWN:F,Z_DEFLATED:k}=j1(),q=9,ce=15,j=8,ve=256+1+29,ge=30,ye=19,Me=2*ve+1,X=15,L=3,H=258,pe=H+L+1,G=32,Se=42,Te=57,De=69,Ae=73,ke=91,st=103,et=113,Ne=666,Pe=1,Fe=2,me=3,Oe=4,ae=3,le=(d,te)=>(d.msg=l[te],te),Ie=d=>d*2-(d>4?9:0),Ge=d=>{let te=d.length;for(;--te>=0;)d[te]=0},tt=d=>{let te,T,U,B=d.w_size;te=d.hash_size,U=te;do T=d.head[--U],d.head[U]=T>=B?T-B:0;while(--te);te=B,U=te;do T=d.prev[--U],d.prev[U]=T>=B?T-B:0;while(--te)};let it=(d,te,T)=>(te<{const te=d.state;let T=te.pending;T>d.avail_out&&(T=d.avail_out),T!==0&&(d.output.set(te.pending_buf.subarray(te.pending_out,te.pending_out+T),d.next_out),d.next_out+=T,te.pending_out+=T,d.total_out+=T,d.avail_out-=T,te.pending-=T,te.pending===0&&(te.pending_out=0))},Ze=(d,te)=>{t(d,d.block_start>=0?d.block_start:-1,d.strstart-d.block_start,te),d.block_start=d.strstart,Be(d.strm)},$e=(d,te)=>{d.pending_buf[d.pending++]=te},Ct=(d,te)=>{d.pending_buf[d.pending++]=te>>>8&255,d.pending_buf[d.pending++]=te&255},bt=(d,te,T,U)=>{let B=d.avail_in;return B>U&&(B=U),B===0?0:(d.avail_in-=B,te.set(d.input.subarray(d.next_in,d.next_in+B),T),d.state.wrap===1?d.adler=a(d.adler,te,B,T):d.state.wrap===2&&(d.adler=s(d.adler,te,B,T)),d.next_in+=B,d.total_in+=B,B)},Mt=(d,te)=>{let T=d.max_chain_length,U=d.strstart,B,Le,Qe=d.prev_length,Ve=d.nice_match;const Ot=d.strstart>d.w_size-pe?d.strstart-(d.w_size-pe):0,ot=d.window,lt=d.w_mask,Nt=d.prev,St=d.strstart+H;let I=ot[U+Qe-1],oe=ot[U+Qe];d.prev_length>=d.good_match&&(T>>=2),Ve>d.lookahead&&(Ve=d.lookahead);do if(B=te,!(ot[B+Qe]!==oe||ot[B+Qe-1]!==I||ot[B]!==ot[U]||ot[++B]!==ot[U+1])){U+=2,B++;do;while(ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&ot[++U]===ot[++B]&&UQe){if(d.match_start=te,Qe=Le,Le>=Ve)break;I=ot[U+Qe-1],oe=ot[U+Qe]}}while((te=Nt[te<])>Ot&&--T!==0);return Qe<=d.lookahead?Qe:d.lookahead},w=d=>{const te=d.w_size;let T,U,B;do{if(U=d.window_size-d.lookahead-d.strstart,d.strstart>=te+(te-pe)&&(d.window.set(d.window.subarray(te,te+te-U),0),d.match_start-=te,d.strstart-=te,d.block_start-=te,d.insert>d.strstart&&(d.insert=d.strstart),tt(d),U+=te),d.strm.avail_in===0)break;if(T=bt(d.strm,d.window,d.strstart+d.lookahead,U),d.lookahead+=T,d.lookahead+d.insert>=L)for(B=d.strstart-d.insert,d.ins_h=d.window[B],d.ins_h=it(d,d.ins_h,d.window[B+1]);d.insert&&(d.ins_h=it(d,d.ins_h,d.window[B+L-1]),d.prev[B&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=B,B++,d.insert--,!(d.lookahead+d.insert{let T=d.pending_buf_size-5>d.w_size?d.w_size:d.pending_buf_size-5,U,B,Le,Qe=0,Ve=d.strm.avail_in;do{if(U=65535,Le=d.bi_valid+42>>3,d.strm.avail_outB+d.strm.avail_in&&(U=B+d.strm.avail_in),U>Le&&(U=Le),U>8,d.pending_buf[d.pending-2]=~U,d.pending_buf[d.pending-1]=~U>>8,Be(d.strm),B&&(B>U&&(B=U),d.strm.output.set(d.window.subarray(d.block_start,d.block_start+B),d.strm.next_out),d.strm.next_out+=B,d.strm.avail_out-=B,d.strm.total_out+=B,d.block_start+=B,U-=B),U&&(bt(d.strm,d.strm.output,d.strm.next_out,U),d.strm.next_out+=U,d.strm.avail_out-=U,d.strm.total_out+=U)}while(Qe===0);return Ve-=d.strm.avail_in,Ve&&(Ve>=d.w_size?(d.matches=2,d.window.set(d.strm.input.subarray(d.strm.next_in-d.w_size,d.strm.next_in),0),d.strstart=d.w_size,d.insert=d.strstart):(d.window_size-d.strstart<=Ve&&(d.strstart-=d.w_size,d.window.set(d.window.subarray(d.w_size,d.w_size+d.strstart),0),d.matches<2&&d.matches++,d.insert>d.strstart&&(d.insert=d.strstart)),d.window.set(d.strm.input.subarray(d.strm.next_in-Ve,d.strm.next_in),d.strstart),d.strstart+=Ve,d.insert+=Ve>d.w_size-d.insert?d.w_size-d.insert:Ve),d.block_start=d.strstart),d.high_waterLe&&d.block_start>=d.w_size&&(d.block_start-=d.w_size,d.strstart-=d.w_size,d.window.set(d.window.subarray(d.w_size,d.w_size+d.strstart),0),d.matches<2&&d.matches++,Le+=d.w_size,d.insert>d.strstart&&(d.insert=d.strstart)),Le>d.strm.avail_in&&(Le=d.strm.avail_in),Le&&(bt(d.strm,d.window,d.strstart,Le),d.strstart+=Le,d.insert+=Le>d.w_size-d.insert?d.w_size-d.insert:Le),d.high_water>3,Le=d.pending_buf_size-Le>65535?65535:d.pending_buf_size-Le,T=Le>d.w_size?d.w_size:Le,B=d.strstart-d.block_start,(B>=T||(B||te===h)&&te!==c&&d.strm.avail_in===0&&B<=Le)&&(U=B>Le?Le:B,Qe=te===h&&d.strm.avail_in===0&&U===B?1:0,e(d,d.block_start,U,Qe),d.block_start+=U,Be(d.strm)),Qe?me:Pe)},he=(d,te)=>{let T,U;for(;;){if(d.lookahead=L&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),T!==0&&d.strstart-T<=d.w_size-pe&&(d.match_length=Mt(d,T)),d.match_length>=L)if(U=r(d,d.strstart-d.match_start,d.match_length-L),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=L){d.match_length--;do d.strstart++,d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart;while(--d.match_length!==0);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=it(d,d.ins_h,d.window[d.strstart+1]);else U=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(U&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=d.strstart{let T,U,B;for(;;){if(d.lookahead=L&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=L-1,T!==0&&d.prev_length4096)&&(d.match_length=L-1)),d.prev_length>=L&&d.match_length<=d.prev_length){B=d.strstart+d.lookahead-L,U=r(d,d.strstart-1-d.prev_match,d.prev_length-L),d.lookahead-=d.prev_length-1,d.prev_length-=2;do++d.strstart<=B&&(d.ins_h=it(d,d.ins_h,d.window[d.strstart+L-1]),T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart);while(--d.prev_length!==0);if(d.match_available=0,d.match_length=L-1,d.strstart++,U&&(Ze(d,!1),d.strm.avail_out===0))return Pe}else if(d.match_available){if(U=r(d,0,d.window[d.strstart-1]),U&&Ze(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return Pe}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(U=r(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart{let T,U,B,Le;const Qe=d.window;for(;;){if(d.lookahead<=H){if(w(d),d.lookahead<=H&&te===c)return Pe;if(d.lookahead===0)break}if(d.match_length=0,d.lookahead>=L&&d.strstart>0&&(B=d.strstart-1,U=Qe[B],U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B])){Le=d.strstart+H;do;while(U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&U===Qe[++B]&&Bd.lookahead&&(d.match_length=d.lookahead)}if(d.match_length>=L?(T=r(d,1,d.match_length-L),d.lookahead-=d.match_length,d.strstart+=d.match_length,d.match_length=0):(T=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++),T&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=0,te===h?(Ze(d,!0),d.strm.avail_out===0?me:Oe):d.sym_next&&(Ze(d,!1),d.strm.avail_out===0)?Pe:Fe},W=(d,te)=>{let T;for(;;){if(d.lookahead===0&&(w(d),d.lookahead===0)){if(te===c)return Pe;break}if(d.match_length=0,T=r(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++,T&&(Ze(d,!1),d.strm.avail_out===0))return Pe}return d.insert=0,te===h?(Ze(d,!0),d.strm.avail_out===0?me:Oe):d.sym_next&&(Ze(d,!1),d.strm.avail_out===0)?Pe:Fe};function A(d,te,T,U,B){this.good_length=d,this.max_lazy=te,this.nice_length=T,this.max_chain=U,this.func=B}const N=[new A(0,0,0,0,ee),new A(4,4,8,4,he),new A(4,5,16,8,he),new A(4,6,32,32,he),new A(4,4,16,16,D),new A(8,16,32,32,D),new A(8,16,128,128,D),new A(8,32,128,256,D),new A(32,128,258,1024,D),new A(32,258,258,4096,D)],y=d=>{d.window_size=2*d.w_size,Ge(d.head),d.max_lazy_match=N[d.level].max_lazy,d.good_match=N[d.level].good_length,d.nice_match=N[d.level].nice_length,d.max_chain_length=N[d.level].max_chain,d.strstart=0,d.block_start=0,d.lookahead=0,d.insert=0,d.match_length=d.prev_length=L-1,d.match_available=0,d.ins_h=0};function _e(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=k,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Me*2),this.dyn_dtree=new Uint16Array((2*ge+1)*2),this.bl_tree=new Uint16Array((2*ye+1)*2),Ge(this.dyn_ltree),Ge(this.dyn_dtree),Ge(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(X+1),this.heap=new Uint16Array(2*ve+1),Ge(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*ve+1),Ge(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Xe=d=>{if(!d)return 1;const te=d.state;return!te||te.strm!==d||te.status!==Se&&te.status!==Te&&te.status!==De&&te.status!==Ae&&te.status!==ke&&te.status!==st&&te.status!==et&&te.status!==Ne?1:0},xe=d=>{if(Xe(d))return le(d,m);d.total_in=d.total_out=0,d.data_type=F;const te=d.state;return te.pending=0,te.pending_out=0,te.wrap<0&&(te.wrap=-te.wrap),te.status=te.wrap===2?Te:te.wrap?Se:et,d.adler=te.wrap===2?0:1,te.last_flush=-2,n(te),_},ze=d=>{const te=xe(d);return te===_&&y(d.state),te},Re=(d,te)=>Xe(d)||d.state.wrap!==2?m:(d.state.gzhead=te,_),Je=(d,te,T,U,B,Le)=>{if(!d)return m;let Qe=1;if(te===S&&(te=6),U<0?(Qe=0,U=-U):U>15&&(Qe=2,U-=16),B<1||B>q||T!==k||U<8||U>15||te<0||te>9||Le<0||Le>R||U===8&&Qe!==1)return le(d,m);U===8&&(U=9);const Ve=new _e;return d.state=Ve,Ve.strm=d,Ve.status=Se,Ve.wrap=Qe,Ve.gzhead=null,Ve.w_bits=U,Ve.w_size=1<Je(d,te,k,ce,j,P),de=(d,te)=>{if(Xe(d)||te>p||te<0)return d?le(d,m):m;const T=d.state;if(!d.output||d.avail_in!==0&&!d.input||T.status===Ne&&te!==h)return le(d,d.avail_out===0?b:m);const U=T.last_flush;if(T.last_flush=te,T.pending!==0){if(Be(d),d.avail_out===0)return T.last_flush=-1,_}else if(d.avail_in===0&&Ie(te)<=Ie(U)&&te!==h)return le(d,b);if(T.status===Ne&&d.avail_in!==0)return le(d,b);if(T.status===Se&&T.wrap===0&&(T.status=et),T.status===Se){let B=k+(T.w_bits-8<<4)<<8,Le=-1;if(T.strategy>=E||T.level<2?Le=0:T.level<6?Le=1:T.level===6?Le=2:Le=3,B|=Le<<6,T.strstart!==0&&(B|=G),B+=31-B%31,Ct(T,B),T.strstart!==0&&(Ct(T,d.adler>>>16),Ct(T,d.adler&65535)),d.adler=1,T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(T.status===Te){if(d.adler=0,$e(T,31),$e(T,139),$e(T,8),T.gzhead)$e(T,(T.gzhead.text?1:0)+(T.gzhead.hcrc?2:0)+(T.gzhead.extra?4:0)+(T.gzhead.name?8:0)+(T.gzhead.comment?16:0)),$e(T,T.gzhead.time&255),$e(T,T.gzhead.time>>8&255),$e(T,T.gzhead.time>>16&255),$e(T,T.gzhead.time>>24&255),$e(T,T.level===9?2:T.strategy>=E||T.level<2?4:0),$e(T,T.gzhead.os&255),T.gzhead.extra&&T.gzhead.extra.length&&($e(T,T.gzhead.extra.length&255),$e(T,T.gzhead.extra.length>>8&255)),T.gzhead.hcrc&&(d.adler=s(d.adler,T.pending_buf,T.pending,0)),T.gzindex=0,T.status=De;else if($e(T,0),$e(T,0),$e(T,0),$e(T,0),$e(T,0),$e(T,T.level===9?2:T.strategy>=E||T.level<2?4:0),$e(T,ae),T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(T.status===De){if(T.gzhead.extra){let B=T.pending,Le=(T.gzhead.extra.length&65535)-T.gzindex;for(;T.pending+Le>T.pending_buf_size;){let Ve=T.pending_buf_size-T.pending;if(T.pending_buf.set(T.gzhead.extra.subarray(T.gzindex,T.gzindex+Ve),T.pending),T.pending=T.pending_buf_size,T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex+=Ve,Be(d),T.pending!==0)return T.last_flush=-1,_;B=0,Le-=Ve}let Qe=new Uint8Array(T.gzhead.extra);T.pending_buf.set(Qe.subarray(T.gzindex,T.gzindex+Le),T.pending),T.pending+=Le,T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex=0}T.status=Ae}if(T.status===Ae){if(T.gzhead.name){let B=T.pending,Le;do{if(T.pending===T.pending_buf_size){if(T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),Be(d),T.pending!==0)return T.last_flush=-1,_;B=0}T.gzindexB&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),T.gzindex=0}T.status=ke}if(T.status===ke){if(T.gzhead.comment){let B=T.pending,Le;do{if(T.pending===T.pending_buf_size){if(T.gzhead.hcrc&&T.pending>B&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B)),Be(d),T.pending!==0)return T.last_flush=-1,_;B=0}T.gzindexB&&(d.adler=s(d.adler,T.pending_buf,T.pending-B,B))}T.status=st}if(T.status===st){if(T.gzhead.hcrc){if(T.pending+2>T.pending_buf_size&&(Be(d),T.pending!==0))return T.last_flush=-1,_;$e(T,d.adler&255),$e(T,d.adler>>8&255),d.adler=0}if(T.status=et,Be(d),T.pending!==0)return T.last_flush=-1,_}if(d.avail_in!==0||T.lookahead!==0||te!==c&&T.status!==Ne){let B=T.level===0?ee(T,te):T.strategy===E?W(T,te):T.strategy===C?V(T,te):N[T.level].func(T,te);if((B===me||B===Oe)&&(T.status=Ne),B===Pe||B===me)return d.avail_out===0&&(T.last_flush=-1),_;if(B===Fe&&(te===u?i(T):te!==p&&(e(T,0,0,!1),te===f&&(Ge(T.head),T.lookahead===0&&(T.strstart=0,T.block_start=0,T.insert=0))),Be(d),d.avail_out===0))return T.last_flush=-1,_}return te!==h?_:T.wrap<=0?g:(T.wrap===2?($e(T,d.adler&255),$e(T,d.adler>>8&255),$e(T,d.adler>>16&255),$e(T,d.adler>>24&255),$e(T,d.total_in&255),$e(T,d.total_in>>8&255),$e(T,d.total_in>>16&255),$e(T,d.total_in>>24&255)):(Ct(T,d.adler>>>16),Ct(T,d.adler&65535)),Be(d),T.wrap>0&&(T.wrap=-T.wrap),T.pending!==0?_:g)},Xt=d=>{if(Xe(d))return m;const te=d.state.status;return d.state=null,te===et?le(d,v):_},mt=(d,te)=>{let T=te.length;if(Xe(d))return m;const U=d.state,B=U.wrap;if(B===2||B===1&&U.status!==Se||U.lookahead)return m;if(B===1&&(d.adler=a(d.adler,te,T,0)),U.wrap=0,T>=U.w_size){B===0&&(Ge(U.head),U.strstart=0,U.block_start=0,U.insert=0);let Ot=new Uint8Array(U.w_size);Ot.set(te.subarray(T-U.w_size,T),0),te=Ot,T=U.w_size}const Le=d.avail_in,Qe=d.next_in,Ve=d.input;for(d.avail_in=T,d.next_in=0,d.input=te,w(U);U.lookahead>=L;){let Ot=U.strstart,ot=U.lookahead-(L-1);do U.ins_h=it(U,U.ins_h,U.window[Ot+L-1]),U.prev[Ot&U.w_mask]=U.head[U.ins_h],U.head[U.ins_h]=Ot,Ot++;while(--ot);U.strstart=Ot,U.lookahead=L-1,w(U)}return U.strstart+=U.lookahead,U.block_start=U.strstart,U.insert=U.lookahead,U.lookahead=0,U.match_length=U.prev_length=L-1,U.match_available=0,d.next_in=Qe,d.input=Ve,d.avail_in=Le,U.wrap=B,_};return ar.deflateInit=se,ar.deflateInit2=Je,ar.deflateReset=ze,ar.deflateResetKeep=xe,ar.deflateSetHeader=Re,ar.deflate=de,ar.deflateEnd=Xt,ar.deflateSetDictionary=mt,ar.deflateInfo="pako deflate (from Nodeca project)",ar}var gn=hA();class _A{constructor(){this.strm=new W1,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),this.windowBits=5,gn.deflateInit(this.strm,this.windowBits)}deflate(e){this.strm.input=e,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let t=gn.deflate(this.strm,gn.Z_FULL_FLUSH),r=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(t<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let i=[r],a=r.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,t=gn.deflate(this.strm,gn.Z_FULL_FLUSH),t<0)throw new Error("zlib deflate failed");let c=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);a+=c.length,i.push(c)}while(this.strm.avail_in>0);let s=new Uint8Array(a),l=0;for(let c=0;c=32&&n<=255)return n;const e=pA[n];return e!==void 0?e:16777216|n}},Gb={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"},$b={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"},Pr={};function re(n,e){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,e,e]}function Oi(n,e,t){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,t,e]}function gt(n,e,t){if(e===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+n+'"');if(n in Pr)throw new Error('Duplicate entry for key "'+n+'"');Pr[n]=[e,e,e,t]}Oi("Alt",O.XK_Alt_L,O.XK_Alt_R);re("AltGraph",O.XK_ISO_Level3_Shift);re("CapsLock",O.XK_Caps_Lock);Oi("Control",O.XK_Control_L,O.XK_Control_R);Oi("Meta",O.XK_Super_L,O.XK_Super_R);re("NumLock",O.XK_Num_Lock);re("ScrollLock",O.XK_Scroll_Lock);Oi("Shift",O.XK_Shift_L,O.XK_Shift_R);gt("Enter",O.XK_Return,O.XK_KP_Enter);re("Tab",O.XK_Tab);gt(" ",O.XK_space,O.XK_KP_Space);gt("ArrowDown",O.XK_Down,O.XK_KP_Down);gt("ArrowLeft",O.XK_Left,O.XK_KP_Left);gt("ArrowRight",O.XK_Right,O.XK_KP_Right);gt("ArrowUp",O.XK_Up,O.XK_KP_Up);gt("End",O.XK_End,O.XK_KP_End);gt("Home",O.XK_Home,O.XK_KP_Home);gt("PageDown",O.XK_Next,O.XK_KP_Next);gt("PageUp",O.XK_Prior,O.XK_KP_Prior);re("Backspace",O.XK_BackSpace);gt("Clear",O.XK_Clear,O.XK_KP_Begin);re("Copy",O.XF86XK_Copy);re("Cut",O.XF86XK_Cut);gt("Delete",O.XK_Delete,O.XK_KP_Delete);gt("Insert",O.XK_Insert,O.XK_KP_Insert);re("Paste",O.XF86XK_Paste);re("Redo",O.XK_Redo);re("Undo",O.XK_Undo);re("Cancel",O.XK_Cancel);re("ContextMenu",O.XK_Menu);re("Escape",O.XK_Escape);re("Execute",O.XK_Execute);re("Find",O.XK_Find);re("Help",O.XK_Help);re("Pause",O.XK_Pause);re("Select",O.XK_Select);re("ZoomIn",O.XF86XK_ZoomIn);re("ZoomOut",O.XF86XK_ZoomOut);re("BrightnessDown",O.XF86XK_MonBrightnessDown);re("BrightnessUp",O.XF86XK_MonBrightnessUp);re("Eject",O.XF86XK_Eject);re("LogOff",O.XF86XK_LogOff);re("Power",O.XF86XK_PowerOff);re("PowerOff",O.XF86XK_PowerDown);re("PrintScreen",O.XK_Print);re("Hibernate",O.XF86XK_Hibernate);re("Standby",O.XF86XK_Standby);re("WakeUp",O.XF86XK_WakeUp);re("AllCandidates",O.XK_MultipleCandidate);re("Alphanumeric",O.XK_Eisu_toggle);re("CodeInput",O.XK_Codeinput);re("Compose",O.XK_Multi_key);re("Convert",O.XK_Henkan);re("GroupFirst",O.XK_ISO_First_Group);re("GroupLast",O.XK_ISO_Last_Group);re("GroupNext",O.XK_ISO_Next_Group);re("GroupPrevious",O.XK_ISO_Prev_Group);re("NonConvert",O.XK_Muhenkan);re("PreviousCandidate",O.XK_PreviousCandidate);re("SingleCandidate",O.XK_SingleCandidate);re("HangulMode",O.XK_Hangul);re("HanjaMode",O.XK_Hangul_Hanja);re("JunjaMode",O.XK_Hangul_Jeonja);re("Eisu",O.XK_Eisu_toggle);re("Hankaku",O.XK_Hankaku);re("Hiragana",O.XK_Hiragana);re("HiraganaKatakana",O.XK_Hiragana_Katakana);re("KanaMode",O.XK_Kana_Shift);re("KanjiMode",O.XK_Kanji);re("Katakana",O.XK_Katakana);re("Romaji",O.XK_Romaji);re("Zenkaku",O.XK_Zenkaku);re("ZenkakuHankaku",O.XK_Zenkaku_Hankaku);re("F1",O.XK_F1);re("F2",O.XK_F2);re("F3",O.XK_F3);re("F4",O.XK_F4);re("F5",O.XK_F5);re("F6",O.XK_F6);re("F7",O.XK_F7);re("F8",O.XK_F8);re("F9",O.XK_F9);re("F10",O.XK_F10);re("F11",O.XK_F11);re("F12",O.XK_F12);re("F13",O.XK_F13);re("F14",O.XK_F14);re("F15",O.XK_F15);re("F16",O.XK_F16);re("F17",O.XK_F17);re("F18",O.XK_F18);re("F19",O.XK_F19);re("F20",O.XK_F20);re("F21",O.XK_F21);re("F22",O.XK_F22);re("F23",O.XK_F23);re("F24",O.XK_F24);re("F25",O.XK_F25);re("F26",O.XK_F26);re("F27",O.XK_F27);re("F28",O.XK_F28);re("F29",O.XK_F29);re("F30",O.XK_F30);re("F31",O.XK_F31);re("F32",O.XK_F32);re("F33",O.XK_F33);re("F34",O.XK_F34);re("F35",O.XK_F35);re("Close",O.XF86XK_Close);re("MailForward",O.XF86XK_MailForward);re("MailReply",O.XF86XK_Reply);re("MailSend",O.XF86XK_Send);re("MediaFastForward",O.XF86XK_AudioForward);re("MediaPause",O.XF86XK_AudioPause);re("MediaPlay",O.XF86XK_AudioPlay);re("MediaRecord",O.XF86XK_AudioRecord);re("MediaRewind",O.XF86XK_AudioRewind);re("MediaStop",O.XF86XK_AudioStop);re("MediaTrackNext",O.XF86XK_AudioNext);re("MediaTrackPrevious",O.XF86XK_AudioPrev);re("New",O.XF86XK_New);re("Open",O.XF86XK_Open);re("Print",O.XK_Print);re("Save",O.XF86XK_Save);re("SpellCheck",O.XF86XK_Spell);re("AudioVolumeDown",O.XF86XK_AudioLowerVolume);re("AudioVolumeUp",O.XF86XK_AudioRaiseVolume);re("AudioVolumeMute",O.XF86XK_AudioMute);re("MicrophoneVolumeMute",O.XF86XK_AudioMicMute);re("LaunchApplication1",O.XF86XK_MyComputer);re("LaunchApplication2",O.XF86XK_Calculator);re("LaunchCalendar",O.XF86XK_Calendar);re("LaunchMail",O.XF86XK_Mail);re("LaunchMediaPlayer",O.XF86XK_AudioMedia);re("LaunchMusicPlayer",O.XF86XK_Music);re("LaunchPhone",O.XF86XK_Phone);re("LaunchScreenSaver",O.XF86XK_ScreenSaver);re("LaunchSpreadsheet",O.XF86XK_Excel);re("LaunchWebBrowser",O.XF86XK_WWW);re("LaunchWebCam",O.XF86XK_WebCam);re("LaunchWordProcessor",O.XF86XK_Word);re("BrowserBack",O.XF86XK_Back);re("BrowserFavorites",O.XF86XK_Favorites);re("BrowserForward",O.XF86XK_Forward);re("BrowserHome",O.XF86XK_HomePage);re("BrowserRefresh",O.XF86XK_Refresh);re("BrowserSearch",O.XF86XK_Search);re("BrowserStop",O.XF86XK_Stop);re("Dimmer",O.XF86XK_BrightnessAdjust);re("MediaAudioTrack",O.XF86XK_AudioCycleTrack);re("RandomToggle",O.XF86XK_AudioRandomPlay);re("SplitScreenToggle",O.XF86XK_SplitScreen);re("Subtitle",O.XF86XK_Subtitle);re("VideoModeNext",O.XF86XK_Next_VMode);gt("=",O.XK_equal,O.XK_KP_Equal);gt("+",O.XK_plus,O.XK_KP_Add);gt("-",O.XK_minus,O.XK_KP_Subtract);gt("*",O.XK_asterisk,O.XK_KP_Multiply);gt("/",O.XK_slash,O.XK_KP_Divide);gt(".",O.XK_period,O.XK_KP_Decimal);gt(",",O.XK_comma,O.XK_KP_Separator);gt("0",O.XK_0,O.XK_KP_0);gt("1",O.XK_1,O.XK_KP_1);gt("2",O.XK_2,O.XK_KP_2);gt("3",O.XK_3,O.XK_KP_3);gt("4",O.XK_4,O.XK_KP_4);gt("5",O.XK_5,O.XK_KP_5);gt("6",O.XK_6,O.XK_KP_6);gt("7",O.XK_7,O.XK_KP_7);gt("8",O.XK_8,O.XK_KP_8);gt("9",O.XK_9,O.XK_KP_9);function In(n){if(n.code){switch(n.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return n.code}if(n.keyCode in Gb){let e=Gb[n.keyCode];if(Br()&&e==="ContextMenu"&&(e="MetaRight"),n.location===2)switch(e){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(n.location===3)switch(e){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return e}return"Unidentified"}function vA(n){if(n.key!==void 0&&n.key!=="Unidentified"){switch(n.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(n.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return n.key==="\0"&&n.code==="NumpadDecimal"?"Delete":n.key}const e=In(n);return e in $b?$b[e]:n.charCode?String.fromCharCode(n.charCode):"Unidentified"}function gA(n){const e=vA(n);if(e==="Unidentified")return null;if(e in Pr){let r=n.location;if(e==="Meta"&&r===0&&(r=2),e==="Clear"&&r===3&&In(n)==="NumLock"&&(r=0),(r===void 0||r>3)&&(r=0),e==="Meta"){let i=In(n);if(i==="AltLeft")return O.XK_Meta_L;if(i==="AltRight")return O.XK_Meta_R}if(e==="Clear"&&In(n)==="NumLock")return O.XK_Num_Lock;if(Jn())switch(e){case"Zenkaku":case"Hankaku":return O.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return O.XK_Romaji}return Pr[e][r]}if(e.length!==1)return null;const t=e.charCodeAt();return t?Cn.lookup(t):null}const mA={48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9"},yA=16;class bA{constructor(e,t,r){this._screenInput=e,this._touchInput=t,this._keyDownList={},this._altGrArmed=!1,this._rfbKeyQueue=[],this._lastSendTime=0,this._layoutMap=null,r!=null&&r.getLayoutMap&&r.getLayoutMap().then(i=>{this._layoutMap=i,z("Loaded keyboard layout map")}).catch(i=>{Ke("Failed to get layout map:",i)}),this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this),compositionstart:this._handleCompositionStart.bind(this),compositionend:this._handleCompositionEnd.bind(this),compositionupdate:this._handleCompositionUpdate.bind(this),input:this._handleInput.bind(this)},this.onkeyevent=()=>{},this._enableIME=!1,this._imeStarted=!1,this._lastKeyboardInput=null,this._keyboardInputReset(),this._translateShortcuts=!0}get enableIME(){return this._enableIME}set enableIME(e){this._enableIME=e,this.focus()}get translateShortcuts(){return this._translateShortcuts}set translateShortcuts(e){this._translateShortcuts=e}clearKeysDown(e){if(e)for(const[t,r]of Object.entries(this._keyDownList))switch(t){case"ControlLeft":case"ControlRight":e.ctrlKey||(Ke("A control key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break;case"MetaLeft":case"MetaRight":e.metaKey||(Ke("A meta key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break;case"AltLeft":case"AltRight":e.altKey||(Ke("A alt key is stuck down, sending up. "),this._sendKeyEvent(r,t,!1));break;case"ShiftRight":case"ShiftLeft":e.shiftKey||(Ke("A shift key is stuck down, sending up."),this._sendKeyEvent(r,t,!1));break}}_scheduleRfbKeySend(){if(this._rfbKeyQueue.length===0)return;const e=t=>{if(t-this._lastSendTime>yA){for(;this._rfbKeyQueue.length>0;){const i=this._rfbKeyQueue.shift();z("onkeyevent "+(i.down?"down":"up")+", keysym: "+i.keysym,", code: "+i.code),this.onkeyevent(i.keysym,i.code,i.down)}this._lastSendTime=t}this._rfbKeyQueue.length>0&&requestAnimationFrame(e)};requestAnimationFrame(e)}_sendKeyEvent(e,t,r){if(r)this._keyDownList[t]=e;else{if(!(t in this._keyDownList))return;delete this._keyDownList[t]}this._rfbKeyQueue.push({keysym:e,code:t,down:r}),this._scheduleRfbKeySend()}_sendKeyStroke(e,t){this._sendKeyEvent(e,t,!0),this._sendKeyEvent(e,t,!1)}_getKeyCode(e){const t=In(e);if(t!=="Unidentified")return t;if(e.keyCode&&e.keyCode!==229)return"Platform"+e.keyCode;if(e.keyIdentifier){if(!e.keyIdentifier.startsWith("U+"))return e.keyIdentifier;const r=parseInt(e.keyIdentifier.substring(2),16);return"Platform"+String.fromCharCode(r).toUpperCase().charCodeAt()}return"Unidentified"}_handleCompositionStart(e){z("Composition started: "+e.data),this._imeStarted=!0,this._lastKeyboardInput=""}_handleCompositionUpdate(e){z("Composition update: "+e.data);const t=this._lastKeyboardInput,r=e.data;let i=0;if(this._imeStarted)this._sendKeyStroke(Cn.lookup(r.charCodeAt(0)),"Unidentified"),this._imeStarted=!1;else{for(let a=0;a0;a--)this._sendKeyStroke(O.XK_BackSpace,"Backspace");for(let a=i;a> Keyboard.allKeysUp");for(let e in this._keyDownList)this._sendKeyEvent(this._keyDownList[e],e,!1);z("<< Keyboard.allKeysUp")}_isIMEInteraction(e){return e.target!==this._touchInput||!this._enableIME?!1:e.keyCode===229?!0:e.keyCode in mA}_getLayoutChar(e){var t;return(t=this._layoutMap)!=null&&t.get(e)?this._layoutMap.get(e):null}focus(){this._enableIME?this._touchInput.focus():this._screenInput.focus()}blur(){this._enableIME?this._touchInput.blur():this._screenInput.blur()}grab(){this._screenInput.addEventListener("keydown",this._eventHandlers.keydown),this._screenInput.addEventListener("keyup",this._eventHandlers.keyup),this._touchInput.addEventListener("keydown",this._eventHandlers.keydown),this._touchInput.addEventListener("keyup",this._eventHandlers.keyup),this._touchInput.addEventListener("compositionstart",this._eventHandlers.compositionstart),this._touchInput.addEventListener("compositionupdate",this._eventHandlers.compositionupdate),this._touchInput.addEventListener("compositionend",this._eventHandlers.compositionend),this._touchInput.addEventListener("input",this._eventHandlers.input),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._screenInput.removeEventListener("keydown",this._eventHandlers.keydown),this._screenInput.removeEventListener("keyup",this._eventHandlers.keyup),this._touchInput.removeEventListener("keydown",this._eventHandlers.keydown),this._touchInput.removeEventListener("keyup",this._eventHandlers.keyup),this._touchInput.removeEventListener("compositionstart",this._eventHandlers.compositionstart),this._touchInput.removeEventListener("compositionupdate",this._eventHandlers.compositionupdate),this._touchInput.removeEventListener("compositionend",this._eventHandlers.compositionend),this._touchInput.removeEventListener("input",this._eventHandlers.input),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}}const Rl={DOCUMENT_START:0,DOCUMENT_CHUNK:1,DOCUMENT_END:2},xA=async n=>{const e=document.createElement("iframe");e.style.display="none",document.body.appendChild(e),e.onload=()=>{setTimeout(()=>{e.focus(),e.contentWindow.print()},1)};const t=new Blob([new Uint8Array(n)],{type:"application/pdf"});e.src=URL.createObjectURL(t)},EA=n=>{let e=0,t=0,r=[];const i=a=>{const s=Array.from(a),l=new Uint8Array(s).buffer,c=new DataView(l),u=c.getUint32(0,!1);switch(u){case Rl.DOCUMENT_START:e=c.getUint32(4,!1),t=0,console.log(`Downloading document for printing (${e}B)`);break;case Rl.DOCUMENT_CHUNK:let f=c.getUint32(4,!1),h=new Uint8Array(l,8);t+=f,r.push(...h),console.log(`Downloading document for printing (${t}/${e}B)`);break;case Rl.DOCUMENT_END:console.log(`Downloaded document for printing (${t}/${e}B)`),xA(r),t=0,e=0;break;default:console.error(`Unknown packet id: ${u}`);break}};n.subscribeUnixRelay("printer",i)};function SA(n){if(typeof n<"u")Ml(n);else{const e=document.location.href.match(/logging=([A-Za-z0-9._-]*)/);Ml(e||void 0)}}function wA(n,e){const t=new RegExp(".*[?&]"+n+"=([^&#]*)"),r=document.location.href.match(t);return typeof e>"u"&&(e=null),r?decodeURIComponent(r[1]):e}function CA(n,e){const t=new RegExp(".*[&#]"+n+"=([^&]*)"),r=document.location.hash.match(t);return typeof e>"u"&&(e=null),r?decodeURIComponent(r[1]):e}function hr(n,e){const t=CA(n);return t===null?wA(n,e):t}let kr={};function RA(){return!window.chrome||!window.chrome.storage?(kr={},Promise.resolve()):new Promise(n=>window.chrome.storage.sync.get(n)).then(n=>{kr=n})}function Yb(n,e){kr[n]=e}function vr(n,e){var t;kr[n]!==e&&(kr[n]=e);try{(t=window.chrome)!=null&&t.storage?window.chrome.storage.sync.set({[n]:e}):localStorage.setItem(n,e)}catch{console.log("Failed to write setting: "+n+" = "+e)}}function mn(n,e){let t;return n in kr||window.chrome&&window.chrome.storage?t=kr[n]:(t=localStorage.getItem(n),kr[n]=t),typeof t>"u"&&(t=null),t===null&&typeof e<"u"?e:t}function Wt(){try{return window.self!==window.top}catch{return!0}}const IA=n=>Array.from(n).map(e=>e.toString(16).padStart(2,"0").toUpperCase()).join("").replace(/ /g,""),z1=(n="")=>{if(n.length===0)return new Uint8Array(0);if(!/^[0-9a-fA-F]*$/.test(n))throw new Error(`invalid_hex_string: ${n}`);return new Uint8Array(n.match(/.{1,2}/g).map(e=>parseInt(e,16)))},G1=1,$1=2,Y1=3,Z1=4,J1=5,eE=6,Ir=128,Sc=129,Zb=n=>({[G1]:"REQUEST_STATUS",[$1]:"REQUEST_POWER_ON",[Y1]:"REQUEST_POWER_OFF",[Z1]:"REQUEST_RESET",[J1]:"REQUEST_TRANSMIT",[eE]:"REQUEST_INITIALIZE",[Ir]:"RESPONSE_ACK",[Sc]:"RESPONSE_ERROR"})[n]||`0x${n.toString(16).toUpperCase()}`,AA=(n,e=new Uint8Array(0))=>{if(n!==Ir&&n!==Sc)throw new Error("invalid_relay_response");const t=new Uint8Array(3+e.length);return t[0]=n,t[1]=e.length>>8&255,t[2]=e.length&255,t.set(e,3),t},TA=n=>{if(n.length<3)throw new Error("invalid_relay_packet");const e=n[0],t=n[1]<<8|n[2];if(n.length<3+t)throw new Error("invalid_relay_packet");return{command:e,payload:n.slice(3,3+t)}},kA="cjkohjfgidilbllbjkdhpoeonjanpomo";class PA{constructor(){this.context=null,this.cardAtr=null,this.cardHandle=null,this.activeProtocol=null,this.lastTransmitAt=null,this.lastRefreshAt=null}async refresh(){if(this.lastRefreshAt&&Date.now()-this.lastRefreshAt<1e3||this.lastTransmitAt&&Date.now()-this.lastTransmitAt<1e3)return;let e=null;try{if(e=await this._establishContext(),this.readers=await this._listReaders(e),this.readers.length==0)throw new Error("no_readers");this.cardAtr=await this._getStatusChange(e,this.readers[0]).then(({atr:r})=>r)}catch{this.context=null,this.readers=[],this.cardAtr=null,this.cardHandle=null,this.activeProtocol=null}const t={isExtensionEnabled:!!e,isReaderConnected:this.readers.length>0,isCardPresent:!!this.cardAtr};Wt()&&window.parent.postMessage({action:"smartcard_status",value:t},"*"),z(`smartcard.refresh: ${JSON.stringify(t,null,2)}`),this.lastRefreshAt=Date.now(),e&&await this._releaseContext(e)}async powerOn(){if(this.context=this.context||await this._establishContext(),!this.cardHandle||!this.activeProtocol){const{cardHandle:e,activeProtocol:t}=await this._connect(this.context,this.readers[0]);this.cardHandle=e,this.activeProtocol=t}}async powerOff(){this.context&&this.cardHandle&&(await this._disconnect(this.context,this.cardHandle),await this._releaseContext(this.context)),this.context=null,this.cardHandle=null,this.cardAtr=null,this.activeProtocol=null}async transmit(e){try{await this._beginTransaction()}catch{}try{return this.lastTransmitAt=Date.now(),await this._transmit(e)}catch(t){throw this.lastTransmitAt=null,t}finally{await this._endTransaction()}}async _establishContext(){return await this._callExtension("establish_context",0).then(([e,t])=>t)}async _releaseContext(e){return await this._callExtension("release_context",e).then(([t])=>t)}async _listReaders(e){return await this._callExtension("list_readers",e).then(([t,r])=>Array.isArray(r)?r:r.split(",").filter(Boolean))}async _getStatusChange(e,t){return await this._callExtension("get_status_change",e,0,1,0,0,t).then(([r,i,a,s,l])=>({status:r,readerCount:i,currentState:a,eventState:s,atr:l}))}async _connect(e,t){return await this._callExtension("connect",e,2,3,t).then(([r,i,a,s])=>({cardHandle:a,activeProtocol:s}))}async _disconnect(e,t){return await this._callExtension("disconnect",e,t,0).then(([r])=>r)}async _beginTransaction(){return await this._callExtension("begin_transaction",this.context,this.cardHandle).then(([e])=>e)}async _transmit(e){return await this._callExtension("transmit",this.context,this.cardHandle,this.activeProtocol,IA(e)).then(([t,r,i,a,s])=>z1(s))}async _endTransaction(e=0){return await this._callExtension("end_transaction",this.context,this.cardHandle,e).then(([t])=>t)}async _callExtension(e,...t){return new Promise((r,i)=>{const a="smartcard-relay",s=Date.now().toString()+Math.random().toString(36),l={deviceId:a,completionId:s,type:e,args:t.join(",")},c=u=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}u.status==="error"||u.result[0]!=="0x00000000"?i(new Error(u.result[0]||"0x80100001")):r(u.result)};chrome.runtime.sendMessage(kA,l,c)})}}const FA=async n=>{z("smartcard.initializeSmartcardRelay");const e=(r,i=new Uint8Array(0))=>{z(`smartcard.response: command=${Zb(r)}, payloadLen=${i.length}`);const a=AA(r,i);n.sendUnixRelayData("smartcard",a)},t=new PA;await t.refresh(),n.subscribeUnixRelay("smartcard",async r=>{try{const{command:i,payload:a}=TA(r);switch(z(`smartcard.request: command=${Zb(i)}, payloadLen=${a.length}`),i){case eE:e(Ir);break;case G1:await t.refresh(),e(Ir,t.cardAtr?z1(t.cardAtr):new Uint8Array(0));break;case $1:await t.powerOn(),e(Ir);break;case Y1:await t.powerOff(),e(Ir);break;case Z1:e(Ir);break;case J1:await t.powerOn();const s=await t.transmit(a);e(Ir,s);break;default:throw new Error(`Unknown binary command: 0x${i.toString(16)}`)}}catch(i){Ke(`Failed to process command: ${i.message}`),e(Sc,new TextEncoder().encode(i.message))}})},ur=0,Jb=1,ex=2,tx=4,rx=8,Il=16,yn=32,bn=64,Al=127,nx=50,MA=90,ix=250,OA=1e3,LA=1e3,DA=50;class NA{constructor(){this._target=null,this._state=Al,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(e){this.detach(),this._target=e,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(e){let t;switch(e.stopPropagation(),e.preventDefault(),e.type){case"touchstart":t=this._touchStart;break;case"touchmove":t=this._touchMove;break;case"touchend":case"touchcancel":t=this._touchEnd;break}for(let r=0;r0&&Date.now()-this._tracked[0].started>ix){this._state=ur,this._ignored.push(e);return}if(this._waitingRelease){this._state=ur,this._ignored.push(e);return}switch(this._tracked.push({id:e,started:Date.now(),active:!0,firstX:t,firstY:r,lastX:t,lastY:r,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=ur}}_touchMove(e,t,r){let i=this._tracked.find(l=>l.id===e);if(i===void 0)return;i.lastX=t,i.lastY=r;let a=t-i.firstX,s=r-i.firstY;if((i.firstX!==i.lastX||i.firstY!==i.lastY)&&(i.angle=Math.atan2(s,a)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(a,s)u.id!==e);if(Math.hypot(l.firstX-l.lastX,l.firstY-l.lastY)>nx){let u=Math.abs(i.angle-l.angle);u=Math.abs((u+180)%360-180),u>MA?this._state&=~yn:this._state&=~bn,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(e,t,r){if(this._ignored.indexOf(e)!==-1){this._ignored.splice(this._ignored.indexOf(e),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=Al,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=ur),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=~Il,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>ix&&(this._state=ur),this._tracked.some(a=>Date.now()-a.started>OA)&&(this._state=ur);let i=this._tracked.find(a=>a.id===e);if(i.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==ur)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let i=0;ie.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),LA)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=Il,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),DA)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let e=this._getAverageMovement(),t=Math.abs(e.x),r=Math.abs(e.y),i=this._getAverageDistance(),a=Math.abs(Math.hypot(i.first.x,i.first.y)-Math.hypot(i.last.x,i.last.y));r{this._target&&(t=document.elementFromPoint(e.clientX,e.clientY),this._updateVisibility(t))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(e){return e?e===this._target?!0:!(!this._target.contains(e)||window.getComputedStyle(e).cursor!=="none"):!1}_updateVisibility(e){this._captureIsActive()&&(e=document.captureElement),this._shouldShowCursor(e)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}}const Tl=40*1024*1024,ax={CONNECTING:"connecting",OPEN:"open"},zn={CONNECTING:[WebSocket.CONNECTING,ax.CONNECTING],OPEN:[WebSocket.OPEN,ax.OPEN]},sx=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"];class VA{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get sQ(){return this._sQ}get rQ(){return this._rQ}get rQi(){return this._rQi}set rQi(e){this._rQi=e}get rQlen(){return this._rQlen-this._rQi}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(e){this._rQi+=e}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(e){let t=0;for(let r=e-1;r>=0;r--)t+=this._rQ[this._rQi++]<"u"&&(e=this.rQlen);let t="";for(let r=0;r"u"&&(e=this.rQlen),this._rQi+=e,new Uint8Array(this._rQ.buffer,this._rQi-e,e)}rQshiftTo(e,t){t===void 0&&(t=this.rQlen),e.set(new Uint8Array(this._rQ.buffer,this._rQi,t)),this._rQi+=t}rQslice(e,t=this.rQlen){return new Uint8Array(this._rQ.buffer,this._rQi+e,t-e)}rQwait(e,t,r){if(this.rQlen0&&zn.OPEN.indexOf(this._websocket.readyState)>=0&&(this._websocket.send(this._encodeMessage()),this._sQlen=0)}send(e){this._sQ.set(e,this._sQlen),this._sQlen+=e.length,this.flush()}sendString(e){this.send(e.split("").map(t=>t.charCodeAt(0)))}off(e){this._eventHandlers[e]=()=>{}}on(e,t){this._eventHandlers[e]=t}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(e,t){this.attach(new WebSocket(e,t))}attach(e){this.init();const t=[...Object.keys(e),...Object.getOwnPropertyNames(Object.getPrototypeOf(e))];for(let a=0;a{z(">> WebSock.onopen"),this._websocket.protocol&&je("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),z("<< WebSock.onopen")};zn.OPEN.indexOf(this._websocket.readyState)>=0?r():this._websocket.onopen=r,this._websocket.onclose=a=>{z(">> WebSock.onclose"),this._eventHandlers.close(a),z("<< WebSock.onclose")},this._websocket.onerror=a=>{z(">> WebSock.onerror: "+a),this._eventHandlers.error(a),z("<< WebSock.onerror: "+a)}}close(){this._websocket&&((zn.CONNECTING.indexOf(this._websocket.readyState)>=0||zn.OPEN.indexOf(this._websocket.readyState)>=0)&&(je("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_encodeMessage(){return new Uint8Array(this._sQ.buffer,0,this._sQlen)}_expandCompactRQ(e){const t=(this._rQlen-this._rQi+e)*8,r=this._rQbufferSizeTl&&(this._rQbufferSize=Tl,this._rQbufferSize-this.rQlenthis._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.set(t,this._rQlen),this._rQlen+=t.length}_insertIntoMiddle(e){const t=new Uint8Array(e);t.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.copyWithin(this._rQi+t.length,this._rQi,this._rQlen-this._rQi),this._rQ.set(t,this._rQi),this._rQlen+=t.length}_recvMessage(e){this._DecodeMessage(e.data),this.rQlen>0?(this._eventHandlers.message(),this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0)):z("Ignoring empty message")}}const ox=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],KA=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],M=0;let $,Y,ne,Z,J,ie;$=65536;Y=1<<24;ne=$|Y;Z=4;J=1024;ie=Z|J;const lx=[ne|J,M|M,$|M,ne|ie,ne|Z,$|ie,M|Z,$|M,M|J,ne|J,ne|ie,M|J,Y|ie,ne|Z,Y|M,M|Z,M|ie,Y|J,Y|J,$|J,$|J,ne|M,ne|M,Y|ie,$|Z,Y|Z,Y|Z,$|Z,M|M,M|ie,$|ie,Y|M,$|M,ne|ie,M|Z,ne|M,ne|J,Y|M,Y|M,M|J,ne|Z,$|M,$|J,Y|Z,M|J,M|Z,Y|ie,$|ie,ne|ie,$|Z,ne|M,Y|ie,Y|Z,M|ie,$|ie,ne|J,M|ie,Y|J,Y|J,M|M,$|Z,$|J,M|M,ne|Z];$=1<<20;Y=1<<31;ne=$|Y;Z=32;J=32768;ie=Z|J;const cx=[ne|ie,Y|J,M|J,$|ie,$|M,M|Z,ne|Z,Y|ie,Y|Z,ne|ie,ne|J,Y|M,Y|J,$|M,M|Z,ne|Z,$|J,$|Z,Y|ie,M|M,Y|M,M|J,$|ie,ne|M,$|Z,Y|Z,M|M,$|J,M|ie,ne|J,ne|M,M|ie,M|M,$|ie,ne|Z,$|M,Y|ie,ne|M,ne|J,M|J,ne|M,Y|J,M|Z,ne|ie,$|ie,M|Z,M|J,Y|M,M|ie,ne|J,$|M,Y|Z,$|Z,Y|ie,Y|Z,$|Z,$|J,M|M,Y|J,M|ie,Y|M,ne|Z,ne|ie,$|J];$=1<<17;Y=1<<27;ne=$|Y;Z=8;J=512;ie=Z|J;const ux=[M|ie,ne|J,M|M,ne|Z,Y|J,M|M,$|ie,Y|J,$|Z,Y|Z,Y|Z,$|M,ne|ie,$|Z,ne|M,M|ie,Y|M,M|Z,ne|J,M|J,$|J,ne|M,ne|Z,$|ie,Y|ie,$|J,$|M,Y|ie,M|Z,ne|ie,M|J,Y|M,ne|J,Y|M,$|Z,M|ie,$|M,ne|J,Y|J,M|M,M|J,$|Z,ne|ie,Y|J,Y|Z,M|J,M|M,ne|Z,Y|ie,$|M,Y|M,ne|ie,M|Z,$|ie,$|J,Y|Z,ne|M,Y|ie,M|ie,ne|M,$|ie,M|Z,ne|Z,$|J];$=8192;Y=1<<23;ne=$|Y;Z=1;J=128;ie=Z|J;const dx=[ne|Z,$|ie,$|ie,M|J,ne|J,Y|ie,Y|Z,$|Z,M|M,ne|M,ne|M,ne|ie,M|ie,M|M,Y|J,Y|Z,M|Z,$|M,Y|M,ne|Z,M|J,Y|M,$|Z,$|J,Y|ie,M|Z,$|J,Y|J,$|M,ne|J,ne|ie,M|ie,Y|J,Y|Z,ne|M,ne|ie,M|ie,M|M,M|M,ne|M,$|J,Y|J,Y|ie,M|Z,ne|Z,$|ie,$|ie,M|J,ne|ie,M|ie,M|Z,$|M,Y|Z,$|Z,ne|J,Y|ie,$|Z,$|J,Y|M,ne|Z,M|J,Y|M,$|M,ne|J];$=1<<25;Y=1<<30;ne=$|Y;Z=256;J=1<<19;ie=Z|J;const fx=[M|Z,$|ie,$|J,ne|Z,M|J,M|Z,Y|M,$|J,Y|ie,M|J,$|Z,Y|ie,ne|Z,ne|J,M|ie,Y|M,$|M,Y|J,Y|J,M|M,Y|Z,ne|ie,ne|ie,$|Z,ne|J,Y|Z,M|M,ne|M,$|ie,$|M,ne|M,M|ie,M|J,ne|Z,M|Z,$|M,Y|M,$|J,ne|Z,Y|ie,$|Z,Y|M,ne|J,$|ie,Y|ie,M|Z,$|M,ne|J,ne|ie,M|ie,ne|M,ne|ie,$|J,M|M,Y|J,ne|M,M|ie,$|Z,Y|Z,M|J,M|M,Y|J,$|ie,Y|Z];$=1<<22;Y=1<<29;ne=$|Y;Z=16;J=16384;ie=Z|J;const hx=[Y|Z,ne|M,M|J,ne|ie,ne|M,M|Z,ne|ie,$|M,Y|J,$|ie,$|M,Y|Z,$|Z,Y|J,Y|M,M|ie,M|M,$|Z,Y|ie,M|J,$|J,Y|ie,M|Z,ne|Z,ne|Z,M|M,$|ie,ne|J,M|ie,$|J,ne|J,Y|M,Y|J,M|Z,ne|Z,$|J,ne|ie,$|M,M|ie,Y|Z,$|M,Y|J,Y|M,M|ie,Y|Z,ne|ie,$|J,ne|M,$|ie,ne|J,M|M,ne|Z,M|Z,M|J,ne|M,$|ie,M|J,$|Z,Y|ie,M|M,ne|J,Y|M,$|Z,Y|ie];$=1<<21;Y=1<<26;ne=$|Y;Z=2;J=2048;ie=Z|J;const _x=[$|M,ne|Z,Y|ie,M|M,M|J,Y|ie,$|ie,ne|J,ne|ie,$|M,M|M,Y|Z,M|Z,Y|M,ne|Z,M|ie,Y|J,$|ie,$|Z,Y|J,Y|Z,ne|M,ne|J,$|Z,ne|M,M|J,M|ie,ne|ie,$|J,M|Z,Y|M,$|J,Y|M,$|J,$|M,Y|ie,Y|ie,ne|Z,ne|Z,M|Z,$|Z,Y|M,Y|J,$|M,ne|J,M|ie,$|ie,ne|J,M|ie,Y|Z,ne|ie,ne|M,$|J,M|M,M|Z,ne|ie,M|M,$|ie,ne|M,M|J,Y|Z,Y|J,M|J,$|Z];$=1<<18;Y=1<<28;ne=$|Y;Z=64;J=4096;ie=Z|J;const px=[Y|ie,M|J,$|M,ne|ie,Y|M,Y|ie,M|Z,Y|M,$|Z,ne|M,ne|ie,$|J,ne|J,$|ie,M|J,M|Z,ne|M,Y|Z,Y|J,M|ie,$|J,$|Z,ne|Z,ne|J,M|ie,M|M,M|M,ne|Z,Y|Z,Y|J,$|ie,$|M,$|ie,$|M,ne|J,M|J,M|Z,ne|Z,M|J,$|ie,Y|J,M|Z,Y|Z,ne|M,ne|Z,Y|M,$|M,Y|ie,M|M,ne|ie,$|Z,Y|Z,ne|M,Y|J,Y|ie,M|M,ne|ie,$|J,$|J,M|ie,M|ie,$|Z,Y|M,ne|J];class UA{constructor(e){this.keys=[];const t=[],r=[],i=[];for(let a=0,s=56;a<56;++a,s-=8){s+=s<-5?65:s<-3?31:s<-1?63:s===27?35:0;const l=s&7;t[a]=(e[s>>>3]&1<>>10,this.keys[l]|=(u&4032)>>>6,++l,this.keys[l]=(c&258048)<<12,this.keys[l]|=(c&63)<<16,this.keys[l]|=(u&258048)>>>4,this.keys[l]|=u&63,++l}}enc8(e){const t=e.slice();let r=0,i,a,s;i=t[r++]<<24|t[r++]<<16|t[r++]<<8|t[r++],a=t[r++]<<24|t[r++]<<16|t[r++]<<8|t[r++],s=(i>>>4^a)&252645135,a^=s,i^=s<<4,s=(i>>>16^a)&65535,a^=s,i^=s<<16,s=(a>>>2^i)&858993459,i^=s,a^=s<<2,s=(a>>>8^i)&16711935,i^=s,a^=s<<8,a=a<<1|a>>>31&1,s=(i^a)&2863311530,i^=s,a^=s,i=i<<1|i>>>31&1;for(let l=0,c=0;l<8;++l){s=a<<28|a>>>4,s^=this.keys[c++];let u=_x[s&63];u|=fx[s>>>8&63],u|=ux[s>>>16&63],u|=lx[s>>>24&63],s=a^this.keys[c++],u|=px[s&63],u|=hx[s>>>8&63],u|=dx[s>>>16&63],u|=cx[s>>>24&63],i^=u,s=i<<28|i>>>4,s^=this.keys[c++],u=_x[s&63],u|=fx[s>>>8&63],u|=ux[s>>>16&63],u|=lx[s>>>24&63],s=i^this.keys[c++],u|=px[s&63],u|=hx[s>>>8&63],u|=dx[s>>>16&63],u|=cx[s>>>24&63],a^=u}for(a=a<<31|a>>>1,s=(i^a)&2863311530,i^=s,a^=s,i=i<<31|i>>>1,s=(i>>>8^a)&16711935,a^=s,i^=s<<8,s=(i>>>2^a)&858993459,a^=s,i^=s<<2,s=(a>>>16^i)&65535,i^=s,a^=s<<16,s=(a>>>4^i)&252645135,i^=s,a^=s<<4,s=[a,i],r=0;r<8;r++)t[r]=(s[r>>>2]>>>8*(3-r%4))%256,t[r]<0&&(t[r]+=256);return t}encrypt(e){return this.enc8(e.slice(0,8)).concat(this.enc8(e.slice(8,16)))}}const BA={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443},tn={msgTypeVideoEncoders:184,msgTypeKeepAlive:185,msgTypeServerDisconnect:186,msgTypeUserAddedToSession:253,msgTypeUserRemovedFromSession:254},xn={LEFT_BUTTON:1,MIDDLE_BUTTON:2,RIGHT_BUTTON:3,BACK_BUTTON:8,FORWARD_BUTTON:9};function Gn(n){return 1<>0&3)*255/3,v[b*4+1]=(g[m+b]>>2&3)*255/3,v[b*4+2]=(g[m+b]>>4&3)*255/3,v[b*4+3]=255;g=v,m=0}for(let v=0;v<_;v++)g[v*4+3]=255;return s.blitImage(e,h,r,p,g,m,c),a.rQskipBytes(p*f),this._lines-=p,!(this._lines>0)}}class QA{decodeRect(e,t,r,i,a,s,l,c){if(a.rQwait("COPYRECT",4))return!1;let u=a.rQshift16(),f=a.rQshift16();return r===0||i===0||s.copyImage(u,f,e,t,r,i,c),!0}}class jA{constructor(){this._subrects=0}decodeRect(e,t,r,i,a,s,l,c){if(this._subrects===0){if(a.rQwait("RRE",8))return!1;this._subrects=a.rQshift32();let u=a.rQshiftBytes(4);s.fillRect(e,t,r,i,u)}for(;this._subrects>0;){if(a.rQwait("RRE",12))return!1;let u=a.rQshiftBytes(4),f=a.rQshift16(),h=a.rQshift16(),p=a.rQshift16(),_=a.rQshift16();s.fillRect(e+f,t+h,p,_,u,c),this._subrects--}return!0}}class WA{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(e,t,r,i,a,s,l,c){for(this._tiles===0&&(this._tilesX=Math.ceil(r/16),this._tilesY=Math.ceil(i/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let u=1;if(a.rQwait("HEXTILE",u))return!1;let f=a.rQ,h=a.rQi,p=f[h];if(p>30)throw new Error("Illegal hextile subencoding (subencoding: "+p+")");const _=this._totalTiles-this._tiles,g=_%this._tilesX,m=Math.floor(_/this._tilesX),v=e+g*16,b=t+m*16,S=Math.min(16,e+r-v),x=Math.min(16,t+i-b);if(p&1)u+=S*x*4;else if(p&2&&(u+=4),p&4&&(u+=4),p&8){if(u++,a.rQwait("HEXTILE",u))return!1;let E=f[h+u-1];p&16?u+=E*6:u+=E*2}if(a.rQwait("HEXTILE",u))return!1;if(h++,p===0)this._lastsubencoding&1?z(" Ignoring blank after RAW"):s.fillRect(v,b,S,x,this._background,c);else if(p&1){let E=S*x;for(let C=0;C>4,k=P&15,q=f[h];h++;const ce=(q>>4)+1,j=(q&15)+1;this._subTile(F,k,ce,j,R)}}this._finishTile(s,c)}a.rQi=h,this._lastsubencoding=p,this._tiles--}return!0}_startTile(e,t,r,i,a){this._tileX=e,this._tileY=t,this._tileW=r,this._tileH=i;const s=a[0],l=a[1],c=a[2],u=this._tileBuffer;for(let f=0;fzt[e])}getSupportedCodecs(){return Object.keys(this._capabilities).filter(e=>this._capabilities[e])}getPreferredCodec(){return this._capabilities.AVC?dr.AVC:this._capabilities.HEVC?dr.HEVC:this._capabilities.AV1?dr.AV1:dr.AVC}}class $A{constructor(e,t){this._len=0,this._keyFrame=0,this._screenId=null,this._ctl=null,this._rfb=e,this._display=t,this._timestamp=0,this._timestampMap=new Map,this._decoders=new Map,this._decoderRecovery=!1,this._skippedFrames=0}decodeRect(e,t,r,i,a,s,l,c){if(this._ctl===null){if(a.rQwait("KasmVideo screen and compression-control",2))return!1;this._screenId=a.rQshift8(),this._ctl=a.rQshift8(),this._ctl=this._ctl>>4}let u;if(this._ctl===0)u=this._skipRect(e,t,r,i,a,s,l,c);else if(this._ctl===1||this._ctl===2||this._ctl===3)u=this._processVideoFrameRect(this._screenId,this._ctl,e,t,r,i,a,s,l,c);else throw new Error("Illegal KasmVideo compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null,this._screenId=null),u}_configureDecoder(e){z("Configuring decoder for screen: ",e.id," codec: ",$n[e.codec]," width: ",e.width," height: ",e.height);const t={codec:$n[e.codec],displayAspectWidth:e.width,displayAspectHeight:e.height,optimizeForLatency:!0};z("Applying decoder config: ",t);try{e.decoder.configure(t)}catch(r){Ke("Failed to configure decoder: ",r,"config:",t),this._handleDecoderError()}}_updateSize(e,t,r,i){z("Updated size: ",{width:r,height:i}),e.width=r,e.height=i,e.codec=t,this._configureDecoder(e)}_skipRect(e,t,r,i,a,s,l,c){return s.clearRect(e,t,r,i,0,c,!1),!0}_handleProcessVideoChunk(e){const t=performance.now()-this._decodingStartedTime;Rt.end("videoDecode",this._decodingStartedTime),z("Frame ",e," - Video frame processing time: ",t);const r=this._timestampMap.get(e.timestamp);if(!r){at("No metadata found for timestamp: ",e.timestamp),e.close();return}const{screenId:i,frameId:a,x:s,y:l,width:c,height:u}=r;z("frameId: ",a,"x: ",s,"y: ",l,"coded width: ",e.codedWidth,"coded height: ",e.codedHeight),this._display.videoFrameRect(i,e,a,s,l,c,u),this._timestampMap.delete(e.timestamp)}_handleDecoderError(e){Ke("Decoder error triggered - clearing all decoders and switching to image mode"),this._decoders.clear(),this._rfb.dispatchEvent(new CustomEvent("imagemode"))}_processVideoFrameRect(e,t,r,i,a,s,l,c,u,f){let[h,p]=this._readData(l);if(z("Screen: ",e," key_frame: ",h),p===null)return!1;if(this._decoderRecovery&&!h)return++this._skippedFrames,this._skippedFrames<=this._rfb.gop||(this._skippedFrames=0,this._decoderRecovery=!1,this._handleDecoderError()),!0;const _=this._display._screens[e];if(_!=null&&_.encodedFramePort){const v=p.buffer.slice(p.byteOffset,p.byteOffset+p.byteLength),b=r-_.x,S=i-_.y;return _.encodedFramePort.postMessage({type:"encoded_frame",codec:$n[t],keyFrame:!!h,data:v,x:b,y:S,width:a,height:s,frameId:f},[v]),c.enqueueVideoFrameRect(e,f,r,i,a,s),!0}let g;if(this._decoders.has(e)){if(g=this._decoders.get(e),g.decoder.state==="closed"&&!this._decoderRecovery)return this._decoderRecovery=!0,this._decoders.delete(e),this._rfb._requestFullRefresh(),!0}else g={id:e,width:a,height:s,decoder:new VideoDecoder({output:v=>{try{this._handleProcessVideoChunk(v)}catch(b){Ke("Error in _handleProcessVideoChunk: ",b),v.close()}},error:v=>{Ke("FATAL VideoDecoder error:",{message:v.message,name:v.name,decoderState:g.decoder.state}),this._handleDecoderError()}})},z("Created new decoder for screen: ",e),this._decoders.set(e,g);(a!==g.width||s!==g.height||t!==g.codec)&&this._updateSize(g,t,a,s);const m=new EncodedVideoChunk({type:h?"key":"delta",data:p,timestamp:++this._timestamp});z("Type ",m.type," timestamp: ",m.timestamp," bytelength ",m.byteLength),this._timestampMap.set(this._timestamp,{screenId:e,frameId:f,x:r,y:i,width:a,height:s});try{this._decodingStartedTime=Rt.start("videoDecode"),g.decoder.decode(m),this._decoderRecovery&&(this._skippedFrames=0,this._decoderRecovery=!1)}catch(v){Ke("DECODE FAILURE - Screen: ",e,"Key frame ",h," frame_id: ",f," x: ",r," y: ",i," width: ",a," height: ",s," codec: ",t," codec_string: ",$n[t]," decoder_state: ",g.decoder.state," error: ",v),this._handleDecoderError()}return!0}_readData(e){if(this._len===0){if(e.rQwait("KasmVideo",5))return[0,null];this._readTime=Rt.start("frameRead"),this._keyFrame=e.rQshift8();let i=e.rQshift8();this._len=i&127,i&128&&(i=e.rQshift8(),this._len|=(i&127)<<7,i&128&&(i=e.rQshift8(),this._len|=i<<14))}if(e.rQwait("KasmVideo",this._len))return[0,null];const t=e.rQshiftBytes(this._len),r=this._keyFrame;return this._len=0,this._keyFrame=0,Rt.end("frameRead",this._readTime),this._readTime=0,[r,t]}dispose(){for(let e of this._decoders.values())e.decoder.close();this._decoders.clear();for(let e of this._timestampMap.keys())this._timestampMap.delete(e)}}function YA(n){return new Worker(""+new URL("decoder-D4K3-zqk.js",import.meta.url).href,{name:n==null?void 0:n.name})}class tE{constructor(e){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._enableQOI=!1,this._displayGlobal=e,this._lastTransparentRectHash="",this._lastTransparentRectInfo="",this._zlibs=[];for(let t=0;t<4;t++)this._zlibs[t]=new ci;this._itzlib=new ci}get enableQOI(){return this._enableQOI}set enableQOI(e){this._enableQOI!==e&&(e?this._enableQOI=this._enableQOIWorkers():(this._enableQOI=!1,this._disableQOIWorkers()))}decodeRect(e,t,r,i,a,s,l,c){if(this._ctl===null){if(a.rQwait("TIGHT compression-control",1))return!1;this._ctl=a.rQshift8();for(let f=0;f<4;f++)this._ctl>>f&1&&(this._zlibs[f].reset(),je("Reset zlib stream "+f));this._ctl=this._ctl>>4}let u;if(this._ctl===8)u=this._fillRect(e,t,r,i,a,s,l,c);else if(this._ctl===9)u=this._jpegRect(e,t,r,i,a,s,l,c);else if(this._ctl===10)u=this._pngRect(e,t,r,i,a,s,l,c);else if((this._ctl&8)==0)u=this._basicRect(this._ctl,e,t,r,i,a,s,l,c);else if(this._ctl===11)u=this._webpRect(e,t,r,i,a,s,l,c);else if(this._ctl===12)u=this._qoiRect(e,t,r,i,a,s,l,c);else if(this._ctl===13)u=this._itRect(e,t,r,i,a,s,l,c);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null),u}_fillRect(e,t,r,i,a,s,l,c){if(a.rQwait("TIGHT",3))return!1;const u=a.rQi,f=a.rQ;return s.fillRect(e,t,r,i,[f[u],f[u+1],f[u+2]],c,!1),a.rQskipBytes(3),!0}_jpegRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/jpeg",u,c),!0)}_webpRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/webp",u,c),!0)}_processRectQ(){for(;this._availableWorkers.length>0&&this._qoiRects.length>0;){let t=this._availableWorkers.pop(),r=this._workers[t],i=this._qoiRects.shift();var e=new ArrayBuffer(i.data.length);new Uint8Array(e).set(new Uint8Array(i.data)),r.postMessage({x:i.x,y:i.y,width:i.width,height:i.height,depth:i.depth,frame_id:i.frame_id,image:e},[e])}}_qoiRect(e,t,r,i,a,s,l,c){let u=this._readData(a);if(u===null)return!1;if(this._enableQOI){let f=new Uint8Array(u),h={x:e,y:t,width:r,height:i,data:f,depth:l,frame_id:c};this._qoiRects.length<1e3?(this._qoiRects.push(h),this._processRectQ()):(at("QOI queue exceeded limit."),this._qoiRects.splice(0,500))}return!0}_itRect(e,t,r,i,a,s,l,c){let u=this._readData(a);if(u===null)return!1;let f=wn(u),h=`${e}.${t}.${r}.${i}`;if(f===this._lastTransparentRectHash&&h===this._lastTransparentRectInfo)s.dummyRect(e,t,r,i,c);else{const p=u[0],_=u[1],g=u[2],m=u[3],v=Math.floor(r*i/2+1);this._itzlib.reset(),this._itzlib.setInput(u.slice(4)),u=this._itzlib.inflate(v),this._itzlib.setInput(null);let b=new Uint8Array(r*i*4+4);for(let x=0,E=0;x=0;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255;for(let v=7;v>=8-r%8;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255}l.blitImage(e,t,r,i,u,0,c,!1)}_paletteRect(e,t,r,i,a,s,l,c){const u=this._getScratchBuffer(r*i*4),f=r*i*4;for(let h=0,p=0;h=4?this._threads=16:this._threads=8,this._workers=[],this._availableWorkers=[],this._qoiRects=[],this._rectQlooping=!1;for(let r=0;r{switch(this._availableWorkers.push(r),i.data.result){case 0:i.data.freemem=null;let a=new Uint8ClampedArray(i.data.data),s=new ImageData(a,i.data.img.width,i.data.img.height,{colorSpace:i.data.img.colorSpace});this._displayGlobal.blitQoi(i.data.x,i.data.y,i.data.width,i.data.height,s,0,i.data.frame_id,!1),this._processRectQ(),this._workers[r].postMessage({freemem:i.data.data});break;case 1:je("QOI Worker is now available.");break;case 2:je("Error on worker: "+i.error);break}};for(let r=0;r>4;let f;if(u===8)f=this._fillRect(e,t,r,i,a,s,l,c);else if(u===9)f=this._jpegRect(e,t,r,i,a,s,l,c);else if(u===10)f=this._pngRect(e,t,r,i,a,s,l,c);else if((u&8)==0)f=this._basicRect(u,e,t,r,i,a,s,l,c);else if(u===11)f=this._webpRect(e,t,r,i,a,s,l,c);else throw new Error("Illegal udp compression received (ctl: "+u+")");return f}_fillRect(e,t,r,i,a,s,l,c){return s.fillRect(e,t,r,i,[a[13],a[14],a[15]],c,this._directDraw),!0}_jpegRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/jpeg",u,c,this._directDraw),!0)}_webpRect(e,t,r,i,a,s,l,c){let u=this._readData(a);return u===null?!1:(s.imageRect(e,t,r,i,"image/webp",u,c,this._directDraw),!0)}_pngRect(e,t,r,i,a,s,l,c){Ke("PNG received in UDP rect")}_basicRect(e,t,r,i,a,s,l,c,u){let f=s[12];for(let m=0;m<4;m++)f>>m&1&&this._zlibs[m].reset();let h=s[13],p=14,_=e&3;e&4||(h=0,p=13);let g;switch(h){case 0:g=this._copyFilter(_,t,r,i,a,s,l,c,u,p);break;case 1:g=this._paletteFilter(_,t,r,i,a,s,l,c,u);break;case 2:g=this._gradientFilter(_,t,r,i,a,s,l,c,u);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return g}_copyFilter(e,t,r,i,a,s,l,c,u,f=14){const h=i*a*3;if(h===0)return!0;if(h<12)s=s.slice(f,f+h);else{if(s=this._readData(s,f),s===null)return!1;this._zlibs[e].setInput(s),s=this._zlibs[e].inflate(h),this._zlibs[e].setInput(null)}let p=new Uint8Array(i*a*4);for(let _=0,g=0;_=0;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255;for(let v=7;v>=8-r%8;v--)_=(p*r+m*8+7-v)*4,g=(a[p*f+m]>>v&1)*3,u[_]=s[g],u[_+1]=s[g+1],u[_+2]=s[g+2],u[_+3]=255}l.blitImage(e,t,r,i,u,0,c,this._directDraw)}_paletteRect(e,t,r,i,a,s,l,c){const u=this._getScratchBuffer(r*i*4),f=r*i*4;for(let h=0,p=0;h> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=rT,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._canvas.overflow="hidden",this._screen.appendChild(this._canvas),this._cursor=new qA,this._cursorImage=We.cursors.none;try{this._display=new aA(this._canvas,this,this._isPrimaryDisplay,this._videoRenderingMode)}catch(l){throw Ke("Display exception: "+l),l}this._display.onflush=this._onFlush.bind(this),this._decoders[Ce.encodingRaw]=new HA,this._decoders[Ce.encodingCopyRect]=new QA,this._decoders[Ce.encodingRRE]=new jA,this._decoders[Ce.encodingHextile]=new WA,this._decoders[Ce.encodingKasmVideo]=new $A(this,this._display),this._decoders[Ce.encodingTight]=new tE(this._display),this._decoders[Ce.encodingTightPNG]=new ZA,this._decoders[Ce.encodingUDP]=new JA,this._keyboard=new bA(this._canvas,t,navigator.keyboard),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._gestures=new NA,this._isPrimaryDisplay&&this._setupWebSocket(),z("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this.lastActiveAt=Date.now(),this._viewOnly=!1,this._clipViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._lastVisibilityState="visible",this._showDotCursor=!1,i.showDotCursor!==void 0&&(at("Specifying showDotCursor as a RFB constructor argument is deprecated"),this._showDotCursor=i.showDotCursor),this._qualityLevel=6,this._compressionLevel=2,this._clipHash=0,this._hwEncoderProfile=eT.BASELINE,this._gop=this._frameRate,this._videoStreamQuality=23,this._qualityPreset=3,this._streamMode=Ce.pseudoEncodingStreamingModeJpegWebp}get connectionID(){return this._connectionID}get translateShortcuts(){return this._keyboard.translateShortcuts}set translateShortcuts(e){this._keyboard.translateShortcuts=e}get pointerLock(){return this._pointerLock}set pointerLock(e){this._pointerLock?window.document.exitPointerLock?(window.document.exitPointerLock(),this._pointerLockChanging=!0):window.document.mozExitPointerLock&&(window.document.mozExitPointerLock(),this._pointerLockChanging=!0):this._canvas.requestPointerLock?(this._canvas.requestPointerLock(),this._pointerLockChanging=!0):this._canvas.mozRequestPointerLock&&(this._canvas.mozRequestPointerLock(),this._pointerLockChanging=!0)}get pointerRelative(){return this._pointerRelativeEnabled}set pointerRelative(e){if(this._pointerRelativeEnabled=e,e){let t=this._display.scale===1?this._fbWidth:this._fbWidth*this._display.scale,r=this._display.scale===1?this._fbHeight:this._fbHeight*this._display.scale;this._pointerLockPos.x=Math.floor(t/2),this._pointerLockPos.y=Math.floor(r/2),this._mousePos={x:this._pointerLockPos.x,y:this._pointerLockPos.y},this._cursor.move(this._pointerLockPos.x,this._pointerLockPos.y)}}get keyboard(){return this._keyboard}get clipboardBinary(){return this._clipboardMode}set clipboardBinary(e){this._clipboardMode=e}get videoQuality(){return this._videoQuality}set videoQuality(e){(this._videoQuality<=1||e<=1)&&(this._pendingApplyResolutionChange=!0),this._videoQuality=e,this._pendingApplyEncodingChanges=!0}get preferBandwidth(){return this._preferBandwidth}set preferBandwidth(e){this._preferBandwidth=e,this._pendingApplyEncodingChanges=!0}get viewOnly(){return this._viewOnly}set viewOnly(e){z("Setting viewOnly to "+e),this._viewOnly=e,(this.isConnecting||this.isConnected)&&(e?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get touchButton(){return 0}set touchButton(e){at("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(e){this._clipViewport=e}get scaleViewport(){return this._scaleViewport}set scaleViewport(e){this._scaleViewport!==e&&(this._scaleViewport=e,this._pendingApplyResolutionChange=!0)}get resizeSession(){return this._resizeSession}set resizeSession(e){this._resizeSession=e,e&&(this.scaleViewport=!0,this._pendingApplyResolutionChange=!0)}get showDotCursor(){return this._showDotCursor}set showDotCursor(e){this._showDotCursor=e,this._refreshCursor()}get background(){return this._screen.style.background}set background(e){this._screen.style.background=e}get enableWebP(){return this._enableWebP}set enableWebP(e){this._enableWebP!==e&&(this._enableWebP=e,this._pendingApplyEncodingChanges=!0)}get enableQOI(){return this._enableQOI}set enableQOI(e){this._enableQOI!==e&&(this._decoders[Ce.encodingTight].enableQOI=e,this._enableQOI=this._decoders[Ce.encodingTight].enableQOI,this._enableQOI===e&&(this._pendingApplyEncodingChanges=!0))}get antiAliasing(){return this._display.antiAliasing}set antiAliasing(e){this._display.antiAliasing=e}get jpegVideoQuality(){return this._jpegVideoQuality}set jpegVideoQuality(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._jpegVideoQuality!==e&&(this._jpegVideoQuality=e,this._pendingApplyEncodingChanges=!0)}get webpVideoQuality(){return this._webpVideoQuality}set webpVideoQuality(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._webpVideoQuality!==e&&(this._webpVideoQuality=e,this._pendingApplyEncodingChanges=!0)}get treatLossless(){return this._treatLossless}set treatLossless(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._treatLossless!==e&&(this._treatLossless=e)}get dynamicQualityMin(){return this._dynamicQualityMin}set dynamicQualityMin(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._dynamicQualityMin!==e&&(this._dynamicQualityMin=e,this._pendingApplyEncodingChanges=!0)}get dynamicQualityMax(){return this._dynamicQualityMax}set dynamicQualityMax(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._dynamicQualityMax!==e&&(this._dynamicQualityMax=e,this._pendingApplyEncodingChanges=!0)}get videoArea(){return this._videoArea}set videoArea(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video area must be an integer between 0 and 100");return}this._videoArea!==e&&(this._videoArea=e,this._pendingApplyEncodingChanges=!0)}get videoTime(){return this._videoTime}set videoTime(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video time must be an integer between 0 and 100");return}this._videoTime!==e&&(this._videoTime=e,this._pendingApplyEncodingChanges=!0)}get videoOutTime(){return this._videoOutTime}set videoOutTime(e){if(!Number.isInteger(e)||e<0||e>100){Ke("video out time must be an integer between 0 and 100");return}this._videoOutTime!==e&&(this._videoOutTime=e,this._pendingApplyEncodingChanges=!0)}get videoScaling(){return this._videoScaling}set videoScaling(e){if(!Number.isInteger(e)||e<0||e>2){Ke("video scaling must be an integer between 0 and 2");return}this._videoScaling!==e&&(this._videoScaling=e,this._pendingApplyEncodingChanges=!0)}get frameRate(){return this._frameRate}set frameRate(e){if(!Number.isInteger(e)||e<1||e>120){Ke("frame rate must be an integer between 1 and 120");return}this._frameRate!==e&&(this._frameRate=e,this._pendingApplyEncodingChanges=!0)}get maxVideoResolutionX(){return this._maxVideoResolutionX}set maxVideoResolutionX(e){if(!Number.isInteger(e)||e<100){Ke("max video resolution must be an integer greater than 100");return}this._maxVideoResolutionX!==e&&(this._maxVideoResolutionX=e,this._pendingApplyVideoRes=!0)}get maxVideoResolutionY(){return this._maxVideoResolutionY}set maxVideoResolutionY(e){if(!Number.isInteger(e)||e<100){Ke("max video resolution must be an integer greater than 100");return}this._maxVideoResolutionY!==e&&(this._maxVideoResolutionY=e,this._pendingApplyVideoRes=!0)}get forcedResolutionX(){return this._forcedResolutionX}set forcedResolutionX(e){e!==this._forcedResolutionX&&(this._forcedResolutionX=e,this._pendingApplyResolutionChange=!0)}get forcedResolutionY(){return this._forcedResolutionY}set forcedResolutionY(e){e!==this._forcedResolutionY&&(this._forcedResolutionY=e,this._pendingApplyResolutionChange=!0)}get qualityLevel(){return this._qualityLevel}set qualityLevel(e){if(!Number.isInteger(e)||e<0||e>9){Ke("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==e&&(this._qualityLevel=e,this._pendingApplyEncodingChanges=!0)}get compressionLevel(){return this._compressionLevel}set compressionLevel(e){if(!Number.isInteger(e)||e<0||e>9){Ke("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==e&&(this._compressionLevel=e,this.isConnected&&this._sendEncodings())}get isConnected(){return this._rfbConnectionState==="connected"}get isConnecting(){return this._rfbConnectionState==="connecting"}get statsFps(){return this._display.fps}get statsDroppedFps(){return this._display.droppedFps}get enableWebRTC(){return this._useUdp}set enableWebRTC(e){this._useUdp=e,e?this.isConnected&&this._transitConnectionState!==this.TransitConnectionStates.Udp&&this._sendUdpUpgrade():this.isConnected&&this._transitConnectionState!==this.TransitConnectionStates.Tcp&&this._sendUdpDowngrade()}get enableHiDpi(){return this._hiDpi}set enableHiDpi(e){e!==this._hiDpi&&(this._hiDpi=e,this._pendingApplyResolutionChange=!0,this._display.applyServerResolution(0,0,0))}get threading(){return this._threading}set threading(e){e!==this._threading&&(this._threading=e,this._display.threading=e)}get hwEncoderProfile(){return this._hwEncoderProfile}set hwEncoderProfile(e){e!==this._hwEncoderProfile&&(this._hwEncoderProfile=e,this._pendingApplyEncodingChanges=!0)}get gop(){return this._gop}set gop(e){e!==this._gop&&(this._gop=e,this._pendingApplyEncodingChanges=!0)}get videoStreamQuality(){return this._videoStreamQuality}set videoStreamQuality(e){e!==this._videoStreamQuality&&(this._videoStreamQuality=e,this._pendingApplyEncodingChanges=!0,this._pendingVideoQualityRefresh=!0)}get qualityPreset(){return this._qualityPreset}set qualityPreset(e){e!==this._qualityPreset&&(this._qualityPreset=e,this._pendingApplyEncodingChanges=!0)}get streamMode(){return this._streamMode}set streamMode(e){e!==this._streamMode&&(this._streamMode=e,this._pendingApplyEncodingChanges=!0)}refreshSecondaryDisplays(){this._display.screens.length>1&&this._proxyRFBMessage("applySettings",[this._hiDpi,this._clipViewport,this._scaleViewport,this._resizeSession,this._videoQuality,this._forcedResolutionX,this._forcedResolutionY])}attachSecondaryDisplay(e){this._updateConnectionState("connecting");const t=this._registerSecondaryDisplay(!1,e);return this._updateConnectionState("connected"),t}reattachSecondaryDisplay(e,t){return this._updateConnectionState("connecting"),this._registerSecondaryDisplay(e,t),this._updateConnectionState("connected"),e}applyScreenPlan(e){if(this._isPrimaryDisplay){let t=this._screenSize(),r=Number.MAX_SAFE_INTEGER,i=Number.MAX_SAFE_INTEGER,a=0;for(let l=0;lt.screens.length)throw new Error("Screen plan contained more screens then there are registered.");if(a1&&this.refreshSecondaryDisplays(),(this._resizeSession||this._forcedResolutionX&&this._forcedResolutionY)&&(this.dispatchEvent(new CustomEvent("screenregistered",{})),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500))),this._pendingApplyEncodingChanges&&(this._sendEncodings(),this._pendingVideoQualityRefresh&&(this._requestFullRefresh(),this._pendingVideoQualityRefresh=!1)),this._pendingApplyVideoRes=!1,this._pendingApplyEncodingChanges=!1,this._pendingApplyResolutionChange=!1):this._isPrimaryDisplay||(this._pendingApplyResolutionChange&&(this._scaleViewport&&this._clipViewport&&this._updateClip(),this._updateScale(),!this._scaleViewport&&this._clipViewport&&this._updateClip()),(this._resizeSession||this._forcedResolutionX&&this._forcedResolutionY)&&this._requestRemoteResize())}disconnect(){this._isPrimaryDisplay?(this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._proxyRFBMessage("disconnect")):(this._updateConnectionState("disconnecting"),this._unregisterSecondaryDisplay(),this._rfbConnectionState="")}terminate(){this._isPrimaryDisplay&&(this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._proxyRFBMessage("terminate"))}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(je("Sending Ctrl-Alt-Del"),this.sendKey(O.XK_Control_L,"ControlLeft",!0),this.sendKey(O.XK_Alt_L,"AltLeft",!0),this.sendKey(O.XK_Delete,"Delete",!0),this.sendKey(O.XK_Delete,"Delete",!1),this.sendKey(O.XK_Alt_L,"AltLeft",!1),this.sendKey(O.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(e,t,r){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(t!==null&&this._setLastActive(),r===void 0){this.sendKey(e,t,!0),this.sendKey(e,t,!1);return}const i=BA[t];if(this._qemuExtKeyEventSupported&&i)e=e||0,je("Sending key ("+(r?"down":"up")+"): keysym "+e+", scancode "+i),this._isPrimaryDisplay?We.messages.QEMUExtendedKeyEvent(this._sock,e,r,i):this._proxyRFBMessage("QEMUExtendedKeyEvent",[e,r,i]);else{if(!e)return;this._isPrimaryDisplay?We.messages.keyEvent(this._sock,e,r?1:0):this._proxyRFBMessage("keyEvent",[e,r?1:0])}}sendKeepAlive(){this._rfbConnectionState==="connected"&&(this._isPrimaryDisplay?We.messages.keepAlive(this._sock):this._proxyRFBMessage("keepAlive",[]))}focus(){this._keyboard.focus()}blur(){this._keyboard.blur()}checkLocalClipboard(){this.clipboardUp&&this.clipboardSeamless&&this._resendClipboardNextUserDrivenEvent&&(this._resendClipboardNextUserDrivenEvent=!1,this.clipboardBinary?navigator.clipboard.read().then(e=>{this.clipboardPasteDataFrom(e)},e=>{z("No data in clipboard: "+e)}):navigator.clipboard&&navigator.clipboard.readText&&navigator.clipboard.readText().then((function(e){this.clipboardPasteFrom(e)}).bind(this)).catch(function(){return z("Failed to read system clipboard")}))}clipboardPasteFrom(e){if(this._rfbConnectionState!=="connected"||this._viewOnly||!(typeof e=="string"&&e.length>0))return;let t=new TextEncoder().encode(e),r=wn(t);if(r===this._clipHash){z("No clipboard changes");return}else this._clipHash=r;let i=[],a=["text/plain"];i.push(t),this._isPrimaryDisplay?We.messages.sendBinaryClipboard(this._sock,i,a):this._proxyRFBMessage("sendBinaryClipboard",[i,a])}async clipboardPasteDataFrom(e){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;let t=[],r=[],i=0;for(let a=0;a0&&(this._isPrimaryDisplay?We.messages.sendBinaryClipboard(this._sock,t,r):this._proxyRFBMessage("sendBinaryClipboard",[t,r]))}requestBottleneckStats(){this._isPrimaryDisplay&&We.messages.requestStats(this._sock)}subscribeUnixRelay(e,t){this._isPrimaryDisplay&&(this._unixRelays=this._unixRelays||{},this._unixRelays[e]=t,We.messages.sendSubscribeUnixRelay(this._sock,e))}sendUnixRelayData(e,t){this._isPrimaryDisplay&&We.messages.sendUnixRelay(this._sock,e,t)}_setLastActive(){this.lastActiveAt=Date.now()}_changeTransitConnectionState(e){je("Transit state change from "+this._transitConnectionState.toString()+" to "+e.toString()),this._transitConnectionState=e}_setupWebSocket(){this._sock=new VA,this._sock.on("message",()=>{this._handleMessage()}),this._sock.on("open",()=>{this.isConnecting&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",z("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}),this._sock.on("close",e=>{z("WebSocket on-close event");let t="";if(e.code&&(t="(code: "+e.code,e.reason&&(t+=", reason: "+e.reason),t+=")"),typeof e.code=="number"&&(this._disconnectCode=e.code),e.reason&&(this._disconnectReason=e.reason),this._serverDisconnectNotice){const r=this._serverDisconnectNotice;r.reason&&!this._disconnectReason&&(this._disconnectReason=r.reason),this._rfbCleanDisconnect=!!r.graceful,this._lastServerDisconnectNotice=r,this._serverDisconnectNotice=null}else(e.wasClean===!1||e.code===1006)&&(this._rfbCleanDisconnect=!1);switch(this._rfbConnectionState){case"connecting":this._fail("Connection closed "+t);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+t);break;default:this._fail("Unexpected server disconnect before connecting "+t);break}this._sock.off("close"),this._rawChannel=null}),this._sock.on("error",e=>at("WebSocket on-error event")),setTimeout(this._updateConnectionState.bind(this,"connecting"))}_connect(){if(z(">> RFB.connect"),this._url&&this._isPrimaryDisplay)try{je(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols),this._setLastActive()}catch(e){e.name==="SyntaxError"?this._fail("Invalid host or port ("+e+")"):this._fail("Error when opening socket ("+e+")")}else if(this._isPrimaryDisplay)try{je(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel)}catch(e){this._fail("Error attaching channel ("+e+")")}if(this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),window.addEventListener("resize",this._eventHandlers.windowResize),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("focus",this._eventHandlers.handleFocusChange),window.addEventListener("focus",this._eventHandlers.handleFocusChange),window.addEventListener("blur",this._eventHandlers.handleFocusChange),document.addEventListener("visibilitychange",this._eventHandlers.handleVisibilityChange),window.addEventListener("mouseover",this._eventHandlers.handleMouseOut),an()&&this._canvas.addEventListener("touchend",this._eventHandlers.updateHiddenKeyboard),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),document.onpointerlockchange!==void 0?(document.addEventListener("pointerlockchange",this._eventHandlers.handlePointerLockChange,!1),document.addEventListener("pointerlockerror",this._eventHandlers.handlePointerLockError,!1)):document.onmozpointerlockchange!==void 0&&(document.addEventListener("mozpointerlockchange",this._eventHandlers.handlePointerLockChange,!1),document.addEventListener("mozpointerlockerror",this._eventHandlers.handlePointerLockError,!1)),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),this._resendClipboardNextUserDrivenEvent=!0,typeof RTCPeerConnection<"u"&&this._isPrimaryDisplay){this._udpBuffer=new Map,this._udpPeer=new RTCPeerConnection({iceServers:[{urls:["stun:stun.l.google.com:19302"]}]});let e=this._udpPeer;e.onicecandidate=function(i){i.candidate?z("received ice candidate",i.candidate):z("all candidates received")},e.ondatachannel=function(i){z("peer connection on data channel",i)},this._udpChannel=e.createDataChannel("webudp",{ordered:!1,maxRetransmits:0}),this._udpChannel.binaryType="arraybuffer",this._udpChannel.onerror=function(i){Ke("data channel error "+i.message),this._udpTransitFailures+=1,this._sendUdpDowngrade()},this._sock;let t=this._udpBuffer,r=this;this._udpChannel.onmessage=function(i){const a=new Uint8Array(i.data),s=parseInt(a[0]+(a[1]<<8)+(a[2]<<16)+(a[3]<<24),10),l=parseInt(a[4]+(a[5]<<8)+(a[6]<<16)+(a[7]<<24),10),c=parseInt(a[8]+(a[9]<<8)+(a[10]<<16)+(a[11]<<24),10);parseInt(a[12]+(a[13]<<8)+(a[14]<<16)+(a[15]<<24),10);const u=parseInt(a[16]+(a[17]<<8)+(a[18]<<16)+(a[19]<<24),10);if(r._transitConnectionState!==r.TransitConnectionStates.Udp&&(r._display.clear(),r._changeTransitConnectionState(r.TransitConnectionStates.Udp)),c==1)r._handleUdpRect(a.slice(20),u);else{const h=Date.now();if(t.has(s)){let p=t.get(s);if(p.recieved_pieces+=1,p.data[l]=a.slice(20),p.total_bytes+=p.data[l].length,p.total_pieces==p.recieved_pieces){var f=new Uint8Array(p.total_bytes);let _=0;for(let g=0;g> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),document.onpointerlockchange!==void 0?(document.removeEventListener("pointerlockchange",this._eventHandlers.handlePointerLockChange),document.removeEventListener("pointerlockerror",this._eventHandlers.handlePointerLockError)):document.onmozpointerlockchange!==void 0&&(document.removeEventListener("mozpointerlockchange",this._eventHandlers.handlePointerLockChange),document.removeEventListener("mozpointerlockerror",this._eventHandlers.handlePointerLockError)),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("focus",this._eventHandlers.handleFocusChange),window.removeEventListener("resize",this._eventHandlers.windowResize),window.removeEventListener("focus",this._eventHandlers.handleFocusChange),document.removeEventListener("visibilitychange",this._eventHandlers.handleVisibilityChange),this._keyboard.ungrab(),this._gestures.detach(),this._isPrimaryDisplay?this._sock.close():this._primaryDisplayChannel&&(this._primaryDisplayChannel.postMessage({eventType:"unregister",screenID:this._display.screenID}),this._primaryDisplayChannel.removeEventListener("message",this._handleSecondaryDisplayMessage),this._primaryDisplayChannel.close(),this._primaryDisplayChannel=null);try{this._target.removeChild(this._screen)}catch(e){if(e.name!=="NotFoundError")throw e}this._display.dispose(),clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),window.localStorage.removeItem("lastWindow"),z("<< RFB.disconnect")}_updateHiddenKeyboard(e){const t=Math.max(0,e.pageY-50);document.querySelector("#noVNC_keyboardinput").style.top=`${t}px`}_handleFocusChange(e){if(this._resendClipboardNextUserDrivenEvent=!0,e.type=="focus"&&e.currentTarget instanceof Window)if(this._lastVisibilityState==="visible"){const t=window.localStorage.getItem("lastWindow");z("Window focused while user switched between windows."),t!=e.currentTarget.name&&(this._sendLeftClickonNextMove=!0,window.localStorage.setItem("lastWindow",e.currentTarget.name))}else z("Window focused while user switched between tabs.");document.visibilityState==="visible"&&this._lastVisibilityState==="hidden"&&(z("Window is now visible."),this._lastVisibilityState=document.visibilityState)}_handleVisibilityChange(e){document.visibilityState==="hidden"&&(this._lastVisibilityState=document.visibilityState,z("Window is not visible."))}_focusCanvas(e){window.parent.postMessage({action:"enable_audio",value:null},"*"),!this._pointerLock&&this._pointerRelativeEnabled&&(this.pointerLock=!0),this._resendClipboardNextUserDrivenEvent&&this.checkLocalClipboard(),this.focusOnClick&&this.focus()}_setDesktopName(e){this._fbName=e,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_windowResize(e){window.requestAnimationFrame(()=>{this._screenSize(),this._updateClip(),this._updateScale()}),this.dispatchEvent(new CustomEvent("screenregistered",{})),this._resizeSession&&(clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500))}_updateClip(){const e=this._display.clipViewport;let t=this._clipViewport;if(this._scaleViewport&&(t=!1),e!==t&&(this._display.clipViewport=t),t){const r=this._screenSize();this._display.viewportChangeSize(r.screens[0].serverWidth,r.screens[0].serverHeight),this._fixScrollbars()}}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{const e=this._screenSize();this._display.autoscale(e.screens[0].width,e.screens[0].height,e.screens[0].scale)}this._fixScrollbars()}_requestRemoteResize(){if(clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._isPrimaryDisplay){if(this._viewOnly||!this._supportsSetDesktopSize||!this._resizeSession&&!this._forcedResolutionX&&!this._forcedResolutionY)return;for(let t=0;t0){let e=null;window.localStorage.getItem("autoPlacement")===null&&(e={left:window.screenLeft,top:window.screenTop}),this._registerSecondaryDisplay(this._display.screens[0],e)}}_requestFullRefresh(){We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight)}_screenSize(e){return this._display.getScreenSize(this.videoQuality,this.forcedResolutionX,this.forcedResolutionY,this._hiDpi,e,!this._resizeSession,this._streamMode)}_fixScrollbars(){const e=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=e}_updateConnectionState(e){const t=this._rfbConnectionState;if(e===t){z("Already in state '"+e+"', ignoring");return}if(t==="disconnected"){Ke("Tried changing state of a disconnected RFB object");return}switch(e){case"connected":if(t!=="connecting"){Ke("Bad transition to connected state, previous connection state: "+t);return}break;case"disconnected":if(t!=="disconnecting"){Ke("Bad transition to disconnected state, previous connection state: "+t);return}break;case"connecting":if(t!==""){Ke("Bad transition to connecting state, previous connection state: "+t);return}break;case"disconnecting":if(t!=="connected"&&t!=="connecting"){Ke("Bad transition to disconnecting state, previous connection state: "+t);return}break;case"proxied":break;default:Ke("Unknown connection state: "+e);return}switch(this._rfbConnectionState=e,z("New state '"+e+"', was '"+t+"'."),e==="connecting"&&(this._disconnectReason=null,this._disconnectCode=null,this._serverDisconnectNotice=null,this._lastServerDisconnectNotice=null,this._rfbCleanDisconnect=!0),this._disconnTimer&&e!=="disconnecting"&&(z("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._isPrimaryDisplay&&this._sock.off("close")),e){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._proxyRFBMessage("secondarydisconnected"),this._disconnect(),this._disconnTimer=setTimeout(()=>{Ke("Disconnection timed out."),this._updateConnectionState("disconnected")},tT*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect,reason:this._disconnectReason,code:this._disconnectCode,serverNotice:this._lastServerDisconnectNotice}})),this._disconnectReason=null,this._disconnectCode=null,this._lastServerDisconnectNotice=null;break}}_fail(e){switch(this._rfbConnectionState){case"disconnecting":Ke("Failed when disconnecting: "+e);break;case"connected":Ke("Failed while connected: "+e);break;case"connecting":Ke("Failed when connecting: "+e);break;default:Ke("RFB failure: "+e);break}return this._disconnectReason=e,this._disconnectCode=null,this._serverDisconnectNotice=null,this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(e,t){this._capabilities[e]=t,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_proxyRFBMessage(e,t){let r={eventType:e,args:t,screenID:this._display.screenID,screenIndex:this._display.screenIndex,mouseLastScreenIndex:this._mouseLastScreenIndex};this._controlChannel.postMessage(r)}_handleControlMessage(e){if(this._isPrimaryDisplay){let t;switch(e.data.eventType){case"register":const r={...e.data.details,screenID:e.data.screenID};let i=this._display.addScreen(e.data.screenID,e.data.width,e.data.height,e.data.pixelRatio,e.data.containerHeight,e.data.containerWidth,e.data.scale,e.data.serverWidth,e.data.serverHeight,e.data.x,e.data.y,e.data.windowId);this._proxyRFBMessage("screenRegistrationConfirmed",[this._display.screens[i].screenID,i]),this._sendEncodings(),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500),this.dispatchEvent(new CustomEvent("screenregistered",{detail:r})),je(`Secondary monitor (${e.data.screenID}) has been registered.`);break;case"reattach":this._display.addScreen(e.data.screenID,e.data.width,e.data.height,e.data.pixelRatio,e.data.containerHeight,e.data.containerWidth,e.data.scale,e.data.serverWidth,e.data.serverHeight,e.data.x,e.data.y,e.data.windowId),clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),500),this.dispatchEvent(new CustomEvent("screenregistered",{})),je(`Secondary monitor (${e.data.screenID}) has been reattached.`);break;case"unregister":if(this._display.removeScreen(e.data.screenID)){this.dispatchEvent(new CustomEvent("screenregistered",{})),je(`Secondary monitor (${e.data.screenID}) has been removed.`);const a=this._screenSize();We.messages.setDesktopSize(this._sock,a,this._screenFlags),this._sendEncodings(),this._updateContinuousUpdates(),this.dispatchEvent(new CustomEvent("screenregistered",{}))}else je(`Secondary monitor (${e.data.screenID}) not found.`);break;case"mousemove":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask!==0&&!e.data.args[2]&&(this._mouseButtonMask=0),We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),e.data.args[3]&&(this._mouseButtonMask|=1,We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseButtonMask&=-2,We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),z("Simulated Left Click on secondary display.")),this._setLastActive();break;case"mousedown":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask|=e.data.args[2],We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._setLastActive();break;case"mouseup":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},this._mouseButtonMask&=~e.data.args[2],We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._setLastActive();break;case"scroll":t=this._display.getServerRelativeCoordinates(e.data.screenIndex,e.data.args[0],e.data.args[1]),this._mouseLastScreenIndex=e.data.screenIndex,this._mousePos={x:t[0],y:t[1]},We.messages.pointerEvent(this._sock,this._mousePos.x,this._mousePos.y,0,e.data.args[2],e.data.args[3]),this._setLastActive();break;case"keepAlive":We.messages.keepAlive(this._sock);break;case"keyEvent":We.messages.keyEvent(this._sock,...e.data.args),this._setLastActive();break;case"sendBinaryClipboard":We.messages.sendBinaryClipboard(this._sock,...e.data.args);break}}else switch(e.data.eventType){case"updateCursor":this._updateCursor(...e.data.args),this._mouseLastScreenIndex=e.data.mouseLastScreenIndex;break;case"receivedClipboard":e.data.mouseLastScreenIndex===this._display.screenIndex&&this._write_binary_clipboard(...e.data.args);break;case"disconnect":this.disconnect();break;case"terminate":this.disconnect(),window.close();break;case"applySettings":this._isPrimaryDisplay||(this.enableHiDpi=e.data.args[0],this.clipViewport=e.data.args[1],this.scaleViewport=e.data.args[2],this.resizeSession=e.data.args[3],this.videoQuality=e.data.args[4],this.scaleViewport=e.data.args[3],this.updateConnectionSettings());break;case"applyScreenPlan":e.data.args[0]==this._display.screenID&&(this._display.screens[0].screenIndex=e.data.args[1],this._display.screens[0].width=e.data.args[2],this._display.screens[0].height=e.data.args[3],this._display.screens[0].x=e.data.args[4],this._display.screens[0].y=e.data.args[5],this.updateConnectionSettings());break;case"screenRegistrationConfirmed":e.data.args[0]==this._display.screenID&&(this._display.screens[0].screenIndex=e.data.args[1]);break}}_unregisterSecondaryDisplay(){if(!this._isPrimaryDisplay){let e={eventType:"unregister",screenID:this._display.screenID};this._controlChannel.postMessage(e)}}_registerSecondaryDisplay(e=!1,t=null){if(!this._isPrimaryDisplay){const r=e?"reattach":"register";let i=this._screenSize();this._display.resize(i.screens[0].serverWidth,i.screens[0].serverHeight),this._display.autoscale(i.screens[0].serverWidth,i.screens[0].serverHeight,i.screens[0].scale);let a=i.screens[0];const s=new URLSearchParams(document.location.search).get("windowId");let l={eventType:r,screenID:a.screenID,windowId:s,width:a.width,height:a.height,x:e.x||0,y:e.y||0,pixelRatio:a.pixelRatio,scale:a.scale,serverWidth:a.serverWidth,serverHeight:a.serverHeight,containerWidth:a.containerWidth,containerHeight:a.containerHeight,channel:null,details:t};return this._controlChannel.postMessage(l),this._viewOnly||this._keyboard.grab(),a}}identify(e){let t={eventType:"identify",screens:e};this._controlChannel.postMessage(t)}_handleSecondaryDisplayMessage(e){this._isPrimaryDisplay}_handleMessage(){if(this._sock.rQlen===0){at("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":Ke("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQlen===0););break;default:this._initMsg();break}}_handleKeyEvent(e,t,r){this.sendKey(e,t,r)}_handleMouseOut(e){e.toElement!==null&&e.relatedTarget===null&&e.fromElement===null&&this._display.screens[0].pixelRatio!==window.devicePixelRatio&&(z("Window moved to another screen with different pixel ratio, sending resize request."),this._isPrimaryDisplay&&this._display.screens.length>1?this.dispatchEvent(new CustomEvent("screenregistered",{})):this._requestRemoteResize())}_handleMouse(e){if(e.type==="click"&&e.target!==this._canvas)return;if(e.stopPropagation(),e.type==="click"||e.type==="contextmenu"){e.preventDefault();return}let t;if(this._pointerLock&&!this._pointerRelativeEnabled){let i=this._display.scale===1?this._fbWidth:this._fbWidth*this._display.scale,a=this._display.scale===1?this._fbHeight:this._fbHeight*this._display.scale;t={x:this._mousePos.x+e.movementX,y:this._mousePos.y+e.movementY},t.x<0?t.x=0:t.x>i&&(t.x=i),t.y<0?t.y=0:t.y>a&&(t.y=a),this._cursor.move(t.x,t.y)}else this._pointerLock&&this._pointerRelativeEnabled?t={x:this._mousePos.x+e.movementX,y:this._mousePos.y+e.movementY}:t=vn(e.clientX,e.clientY,this._canvas);this._mouseLastScreenIndex=this._display.screenIndex,this._setLastActive();const r=this.mouseButtonMapper.get(e.button);switch(e.type){case"mousedown":(this._display.screens.length===0||window.self===window.top)&&e.preventDefault(),U1(this._canvas),Br()&&e.metaKey&&(this._keyboard._keyDownList.MetaLeft||this._keyboard._keyDownList.MetaRight)&&(this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaLeft,"MetaLeft",!1),this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaRight,"MetaRight",!1),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0)),this._keyboard.clearKeysDown(e),this._isPrimaryDisplay?this._handleMouseButton(t.x,t.y,!0,Gn(r)):this._proxyRFBMessage("mousedown",[t.x,t.y,Gn(r)]),z("Mouse Down");break;case"mouseup":e.preventDefault(),this._isPrimaryDisplay?this._handleMouseButton(t.x,t.y,!1,Gn(r)):this._proxyRFBMessage("mouseup",[t.x,t.y,Gn(r)]),z("Mouse Up");break;case"mousemove":e.preventDefault(),this._isPrimaryDisplay?this._handleMouseMove(t.x,t.y,e.buttons>0):(this._proxyRFBMessage("mousemove",[t.x,t.y,e.buttons>0,this._sendLeftClickonNextMove]),this._sendLeftClickonNextMove=!1);break;default:e.preventDefault();break}}_handleMouseButton(e,t,r,i){if(this.dragViewport)if(r&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:e,y:t},this._viewportHasMoved=!1;return}else{if(this._viewportDragging=!1,this._viewportHasMoved)return;this._sendMouse(e,t,i)}this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(e,t,this._mouseButtonMask)),r?this._mouseButtonMask|=i:this._mouseButtonMask&=~i,this._sendMouse(e,t,this._mouseButtonMask),this._sendLeftClickonNextMove=!1}_handleMouseMove(e,t,r,i=!1){if(this._viewportDragging){const a=this._viewportDragPos.x-e,s=this._viewportDragPos.y-t;(this._viewportHasMoved||Math.abs(a)>Ol||Math.abs(s)>Ol)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:e,y:t},this._display.viewportChangePos(a,s));return}if(this._display.screens.length>1&&this._mouseButtonMask!==0&&!r&&!i&&$I()&&(this._mouseButtonMask=0,z("Mouse event button down mismatch with current mask, resetting mask to 0.")),this._mousePos={x:e,y:t},this._mouseMoveTimer==null){const a=Date.now()-this._mouseLastMoveTime;a>mx?(this._sendMouse(e,t,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},mx-a)}this._sendLeftClickonNextMove&&this._display.screens.length>1&&(this._sendLeftClickonNextMove=!1,this._handleMouseButton(this._mousePos.x,this._mousePos.y,!0,1),this._handleMouseButton(this._mousePos.x,this._mousePos.y,!1,1))}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_handlePointerLockChange(e){document.pointerLockElement===this._canvas||document.mozPointerLockElement===this._canvas?(this._pointerLock=!0,this._cursor.setEmulateCursor(!0)):(this._pointerLock=!1,this._cursor.setEmulateCursor(!1)),this.dispatchEvent(new CustomEvent("inputlock",{detail:{pointer:this._pointerLock}}))}_handlePointerLockError(){this._pointerLockChanging=!1,this.dispatchEvent(new CustomEvent("inputlockerror",{detail:{pointer:this._pointerLock}}))}_sendMouse(e,t,r){if(this._rfbConnectionState==="connected"&&!this._viewOnly&&this._isPrimaryDisplay)if(this._pointerLock&&this._pointerRelativeEnabled){var i=qb(e-this._pointerLockPos.x),a=qb(t-this._pointerLockPos.y);We.messages.pointerEvent(this._sock,i,a,r),this._mousePos={x:this._pointerLockPos.x,y:this._pointerLockPos.y},this._cursor.move(this._pointerLockPos.x,this._pointerLockPos.y)}else We.messages.pointerEvent(this._sock,this._display.absX(e),this._display.absY(t),r)}_sendScroll(e,t,r,i){this._rfbConnectionState==="connected"&&(this._viewOnly||(this._isPrimaryDisplay?We.messages.pointerEvent(this._sock,this._display.absX(e),this._display.absY(t),0,r,i):this._proxyRFBMessage("scroll",[e,t,r,i])))}_handleWheel(e){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;e.stopPropagation(),e.preventDefault(),this._keyboard.clearKeysDown(e),Br()&&(this._keyboard._keyDownList.MetaLeft||this._keyboard._keyDownList.MetaRight)&&(this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaLeft,"MetaLeft",!1),this._keyboard._sendKeyEvent(this._keyboard._keyDownList.MetaRight,"MetaRight",!1),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0)),e.ctrlKey&&!this._keyboard._keyDownList.ControlLeft&&(this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!0),this._watchForPinchAndZoom=this._watchForPinchAndZoom||setInterval(()=>{+new Date-this._mouseLastPinchAndZoomTime>250&&(clearInterval(this._watchForPinchAndZoom),this._keyboard._sendKeyEvent(O.XK_Control_L,"ControlLeft",!1),this._watchForPinchAndZoom=null,this._mouseLastPinchAndZoomTime=0)},10)),this._watchForPinchAndZoom&&(this._mouseLastPinchAndZoomTime=+new Date);let t=e.deltaX,r=e.deltaY;e.deltaMode!==0&&(t*=yx,r*=yx);const i=vn(e.clientX,e.clientY,this._canvas);this._sendScroll(i.x,i.y,t,r)}_fakeMouseMove(e,t,r){this._isPrimaryDisplay?(this._handleMouseMove(t,r,!1,!0),this._cursor.move(e.detail.clientX,e.detail.clientY)):(this._proxyRFBMessage("mousemove",[t,r,!0,!1]),this._cursor.move(e.detail.clientX,e.detail.clientY))}_handleTapEvent(e,t){let r=vn(e.detail.clientX,e.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTimewr;)this._fakeMouseButton(r.x,r.y,!0,8),this._fakeMouseButton(r.x,r.y,!1,8),this._gestureLastMagnitudeY+=wr;for(;e.detail.magnitudeY-this._gestureLastMagnitudeY<-wr;)this._fakeMouseButton(r.x,r.y,!0,16),this._fakeMouseButton(r.x,r.y,!1,16),this._gestureLastMagnitudeY-=wr;for(;e.detail.magnitudeX-this._gestureLastMagnitudeX>wr;)this._fakeMouseButton(r.x,r.y,!0,32),this._fakeMouseButton(r.x,r.y,!1,32),this._gestureLastMagnitudeX+=wr;for(;e.detail.magnitudeX-this._gestureLastMagnitudeX<-wr;)this._fakeMouseButton(r.x,r.y,!0,64),this._fakeMouseButton(r.x,r.y,!1,64),this._gestureLastMagnitudeX-=wr;break;case"pinch":if(this._fakeMouseMove(e,r.x,r.y),t=Math.hypot(e.detail.magnitudeX,e.detail.magnitudeY),Math.abs(t-this._gestureLastMagnitudeX)>En){for(this._handleKeyEvent(O.XK_Control_L,"ControlLeft",!0);t-this._gestureLastMagnitudeX>En;)this._fakeMouseButton(r.x,r.y,!0,8),this._fakeMouseButton(r.x,r.y,!1,8),this._gestureLastMagnitudeX+=En;for(;t-this._gestureLastMagnitudeX<-En;)this._fakeMouseButton(r.x,r.y,!0,16),this._fakeMouseButton(r.x,r.y,!1,16),this._gestureLastMagnitudeX-=En}this._handleKeyEvent(O.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(e.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this._fakeMouseMove(e,r.x,r.y),this._fakeMouseButton(r.x,r.y,!1,1);break;case"longpress":this._fakeMouseMove(e,r.x,r.y),this._fakeMouseButton(r.x,r.y,!1,4);break}break}}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;const e=this._sock.rQshiftStr(12).substr(4,7);je("Server ProtocolVersion: "+e);let t=0;switch(e){case"000.000":t=1;break;case"003.003":case"003.006":case"003.889":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+e)}if(t){let i="ID:"+this._repeaterID;for(;i.length<250;)i+="\0";return this._sock.sendString(i),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);const r="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sendString("RFB "+r+` +`),z("Sent ProtocolVersion: "+r),this._rfbInitState="Security"}_negotiateSecurity(){if(this._rfbVersion>=3.7){const e=this._sock.rQshift8();if(this._sock.rQwait("security type",e,1))return!1;if(e===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,this._initMsg();const t=this._sock.rQshiftBytes(e);if(z("Server security types: "+t),t.includes(1))this._rfbAuthScheme=1;else if(t.includes(22))this._rfbAuthScheme=22;else if(t.includes(16))this._rfbAuthScheme=16;else if(t.includes(2))this._rfbAuthScheme=2;else if(t.includes(19))this._rfbAuthScheme=19;else return this._fail("Unsupported security types (types: "+t+")");this._sock.send([this._rfbAuthScheme])}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,this._initMsg()}return this._rfbInitState="Authentication",z("Authenticating using scheme: "+this._rfbAuthScheme),this._initMsg()}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;const e=this._sock.rQshift32();let t="";if(e>0){if(this._sock.rQwait("reason",e,4))return!1;t=this._sock.rQshiftStr(e)}return t!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:t}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+t+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1;const e=String.fromCharCode(this._rfbCredentials.username.length)+String.fromCharCode(this._rfbCredentials.target.length)+this._rfbCredentials.username+this._rfbCredentials.target;return this._sock.sendString(e),this._rfbAuthScheme=2,this._negotiateAuthentication()}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;const e=this._sock.rQshift8(),t=this._sock.rQshift8();if(!(e==0&&t==2))return this._fail("Unsupported VeNCrypt version "+e+"."+t);this._sock.send([0,2]),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;const e=this._sock.rQshift8();if(e!=0)return this._fail("VeNCrypt failure "+e);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;const e=this._sock.rQshift8();if(e<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=e,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;const e=[];for(let t=0;t>24&255,e.length>>16&255,e.length>>8&255,e.length&255]),this._sock.send([t.length>>24&255,t.length>>16&255,t.length>>8&255,t.length&255]),this._sock.sendString(e),this._sock.sendString(t),this._rfbInitState="SecurityResult",!0}}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;this._rfbCredentials.password="";const e=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),t=We.genDES(this._rfbCredentials.password,e);return this._sock.send(t),this._rfbInitState="SecurityResult",!0}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.send([0,0,0,this._rfbCredentials.username.length]),this._sock.send([0,0,0,this._rfbCredentials.password.length]),this._sock.sendString(this._rfbCredentials.username),this._sock.sendString(this._rfbCredentials.password),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(e){const t={0:{vendor:"TGHT",signature:"NOTUNNEL"}},r={};for(let i=0;i0&&this._sock.rQwait("tunnel capabilities",16*i,4))return!1;if(this._rfbTightVNC=!0,i>0)return this._negotiateTightTunnels(i),!1}if(this._sock.rQwait("sub auth count",4))return!1;const e=this._sock.rQshift32();if(e===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*e,4))return!1;const t={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},r=[];for(let i=0;i=3.8?(this._rfbInitState="SecurityResult",!0):(this._rfbInitState="ClientInitialisation",this._initMsg());case 22:return this._negotiateXvpAuth();case 2:return this._negotiateStdVNCAuth();case 16:return this._negotiateTightAuth();case 19:return this._negotiateVeNCryptAuth();case 129:return this._negotiateTightUnixAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;const e=this._sock.rQshift32();return e===0?(this._rfbInitState="ClientInitialisation",z("Authentication OK"),this._initMsg()):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=e,this._initMsg()):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:e}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;const e=this._sock.rQshift16(),t=this._sock.rQshift16(),r=this._sock.rQshift8(),i=this._sock.rQshift8(),a=this._sock.rQshift8(),s=this._sock.rQshift8(),l=this._sock.rQshift16(),c=this._sock.rQshift16(),u=this._sock.rQshift16(),f=this._sock.rQshift8(),h=this._sock.rQshift8(),p=this._sock.rQshift8();this._sock.rQskipBytes(3);const _=this._sock.rQshift32();if(this._sock.rQwait("server init name",_,24))return!1;let g=this._sock.rQshiftStr(_);if(g=gl(g,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+_))return!1;const m=this._sock.rQshift16(),v=this._sock.rQshift16(),b=this._sock.rQshift16();this._sock.rQskipBytes(2);const S=(m+v+b)*16;if(this._sock.rQwait("TightVNC extended server init header",S,32+_))return!1;this._sock.rQskipBytes(16*m),this._sock.rQskipBytes(16*v),this._sock.rQskipBytes(16*b)}return je("Screen: "+e+"x"+t+", bpp: "+r+", depth: "+i+", bigEndian: "+a+", trueColor: "+s+", redMax: "+l+", greenMax: "+c+", blueMax: "+u+", redShift: "+f+", greenShift: "+h+", blueShift: "+p),this._setDesktopName(g),this._resize(e,t),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(at("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),We.messages.pixelFormat(this._sock,this._fbDepth,!0),We.messages.videoEncodersRequest(this._sock,this.videoCodecs),this._sendEncodings(),We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),EA(this),FA(this),!0}_hasWebp(){if(!this.enableWebP)return!1;var e=navigator.userAgent.toLowerCase(),t=e.match(/firefox\/([0-9]+)\./);return!!(t&&parseInt(t[1])>=65||(t=e.match(/chrome\/([0-9]+)\./),t&&parseInt(t[1])>=23))}_sendEncodings(){const e=[];this._display.screens.length===1?e.push(Ce.encodingCopyRect):z("Multiple displays detected, disabling copyrect encoding."),this._fbDepth===24&&(e.push(Ce.encodingTight),e.push(Ce.encodingTightPNG),e.push(Ce.encodingHextile),e.push(Ce.encodingRRE)),e.push(Ce.encodingRaw),e.push(Ce.pseudoEncodingQualityLevel0+this._qualityLevel),e.push(Ce.pseudoEncodingCompressLevel0+this._compressionLevel),e.push(Ce.pseudoEncodingDesktopSize),e.push(Ce.pseudoEncodingLastRect),e.push(Ce.pseudoEncodingQEMUExtendedKeyEvent),e.push(Ce.pseudoEncodingExtendedDesktopSize),e.push(Ce.pseudoEncodingXvp),e.push(Ce.pseudoEncodingFence),e.push(Ce.pseudoEncodingContinuousUpdates),e.push(Ce.pseudoEncodingDesktopName),e.push(Ce.pseudoEncodingExtendedClipboard),e.push(Ce.pseudoEncodingKasmDisconnectNotify),this._hasWebp()&&e.push(Ce.pseudoEncodingWEBP),this._enableQOI&&e.push(Ce.pseudoEncodingQOI),e.push(Ce.pseudoEncodingJpegVideoQualityLevel0+this.jpegVideoQuality),e.push(Ce.pseudoEncodingWebpVideoQualityLevel0+this.webpVideoQuality),e.push(Ce.pseudoEncodingTreatLosslessLevel0+this.treatLossless),e.push(Ce.pseudoEncodingDynamicQualityMinLevel0+this.dynamicQualityMin),e.push(Ce.pseudoEncodingDynamicQualityMaxLevel0+this.dynamicQualityMax),e.push(Ce.pseudoEncodingVideoAreaLevel1+this.videoArea-1),e.push(Ce.pseudoEncodingVideoTimeLevel0+this.videoTime),e.push(Ce.pseudoEncodingVideoOutTimeLevel1+this.videoOutTime-1),e.push(Ce.pseudoEncodingVideoScalingLevel0+this.videoScaling),e.push(Ce.pseudoEncodingFrameRateLevel10+this.frameRate-10),e.push(Ce.pseudoEncodingMaxVideoResolution),e.push(Ce.pseudoEncodingGOP1+this.gop),e.push(Ce.pseudoEncodingStreamingVideoQualityLevel0+this.videoStreamQuality),e.push(this.streamMode),this.preferBandwidth&&e.push(Ce.pseudoEncodingPreferBandwidth),this._fbDepth===24&&(e.push(Ce.pseudoEncodingVMwareCursor),e.push(Ce.pseudoEncodingCursor)),e.push(Ce.pseudoEncodingVMwareCursorPosition),We.messages.clientEncodings(this._sock,e)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.send([this._shared?1:0]),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_handleSetColourMapMsg(){return z("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(z("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let e=this._sock.rQshift32();if(e=Sn(e),this._sock.rQwait("ServerCutText content",Math.abs(e),8))return!1;if(e>=0){const t=this._sock.rQshiftStr(e);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:t}})),this._clipHash=0}else{e=Math.abs(e);const t=this._sock.rQshift32();let r=t&65535,i=t&4278190080;if(!!(i&bx)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let l=0;l<=15;l++){let c=1<0&&c.charAt(c.length-1)==="\0"&&(c=c.slice(0,-1)),c=c.replace(`\r +`,` +`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:c}}))}}else return this._fail("Unexpected action in extended clipboard message: "+i)}return!0}_handleBinaryClipboard(){if(z("HandleBinaryClipboard"),this._sock.rQwait("Binary Clipboard header",2,1))return!1;let e=this._sock.rQshift8(),t={},r=2,i="";je(e+" Clipboard items recieved."),z("Started clipbooard processing with Client sockjs buffer size "+this._sock.rQlen);for(let a=0;a0&&i.charAt(i.length-1)==="\0"&&(i=i.slice(0,-1)),z("Plain text clipboard recieved and placed in text element, size: "+i.length),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:i}}))),je("Processed binary clipboard (ID: "+s+") of MIME "+c+" of length "+u),!this.clipboardBinary)continue;t[c]=new Blob([f],{type:c});break;default:z("Mime type skipped: "+c);break}}return z("Finished processing binary clipboard with client sockjs buffer size "+this._sock.rQlen),Object.keys(t).length>0&&this.clipboardBinary&&(this._clipHash=0,this._mouseLastScreenIndex===0?this._write_binary_clipboard(t,i):this._proxyRFBMessage("receivedClipboard",[t,i])),!0}_write_binary_clipboard(e,t){navigator.clipboard.write([new ClipboardItem(e)]).then(()=>{t&&(this._clipHash=wn(t))},r=>{Ke("Error writing to client clipboard: "+r),t.length>0&&navigator.clipboard.writeText(t).then(()=>{this._clipHash=wn(t)},i=>{Ke("Error writing text to client clipboard: "+i)})})}_handle_server_stats_msg(){this._sock.rQskipBytes(3);const e=this._sock.rQshift32();if(this._sock.rQwait("KASM bottleneck stats",e,8))return!1;const t=this._sock.rQshiftStr(e);return z("Received KASM bottleneck stats:"),z(t),this.dispatchEvent(new CustomEvent("bottleneck_stats",{detail:{text:t}})),!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let e=this._sock.rQshift32(),t=this._sock.rQshift8();if(this._sock.rQwait("ServerFence payload",t,9))return!1;t>64&&(at("Bad payload length ("+t+") in fence response"),t=64);const r=this._sock.rQshiftStr(t);return this._supportsFence=!0,e&1<<31?(e&=3,We.messages.clientFence(this._sock,e,r),!0):this._fail("Unexpected fence response")}_handleXvpMsg(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskipBytes(1);const e=this._sock.rQshift8(),t=this._sock.rQshift8();switch(t){case 0:Ke("XVP Operation Failed");break;case 1:this._rfbXvpVer=e,je("XVP extensions enabled (version "+this._rfbXvpVer+")"),this._setCapability("power",!0);break;default:this._fail("Illegal server XVP message (msg: "+t+")");break}return!0}_handleUserJoin(){const e=this._sock.rQshift32();if(this._sock.rQwait("KASM Shared Session Join",e,32))return!1;const t=this._sock.rQshiftStr(e);return this.dispatchEvent(new CustomEvent("sharedSessionUserJoin",{detail:t})),!0}_handleUserLeft(){const e=this._sock.rQshift32();if(this._sock.rQwait("KASM Shared Session Left",e,32))return!1;const t=this._sock.rQshiftStr(e);return this.dispatchEvent(new CustomEvent("sharedSessionUserLeft",{detail:t})),!0}_normalMsg(){let e;this._FBU.rects>0?e=0:e=this._sock.rQshift8();let t,r;switch(e){case 0:return this._display.renderMs=0,r=this._framebufferUpdate(),r&&!this._enabledContinuousUpdates&&We.messages.fbUpdateRequest(this._sock,!0,0,0,this._fbWidth,this._fbHeight),this._trackFrameStats&&(We.messages.sendFrameStats(this._sock,this._display.fps,this._display.renderMs),this._trackFrameStats=!1),r;case 1:return this._handleSetColourMapMsg();case 2:return z("Bell"),this.dispatchEvent(new CustomEvent("bell",{detail:{}})),!0;case 3:return this._handleServerCutText();case 150:return t=!this._supportsContinuousUpdates,this._supportsContinuousUpdates=!0,this._enabledContinuousUpdates=!1,t&&(this._enabledContinuousUpdates=!0,this._updateContinuousUpdates(),je("Enabling continuous updates.")),!0;case 178:return this._handle_server_stats_msg();case 179:return this._trackFrameStats=!0,!0;case 180:return this._handleBinaryClipboard();case 181:return this._handleUdpUpgrade();case 182:return this._handleSubscribeUnixRelay();case 183:return this._handleUnixRelay();case tn.msgTypeServerDisconnect:return this._handleDisconnectNotify();case tn.msgTypeVideoEncoders:return this._handleServerVideoEncoders();case 248:return this._handleServerFenceMsg();case 250:return this._handleXvpMsg();case tn.msgTypeUserAddedToSession:return this._handleUserJoin();case tn.msgTypeUserRemovedFromSession:return this._handleUserLeft();default:return this._fail("Unexpected server message (type "+e+")"),z("sock.rQslice(0, 30): "+this._sock.rQslice(0,30)),!0}}_onFlush(){this._flushing=!1,this._sock.rQlen>0&&this._handleMessage()}_handleUdpRect(e,t){let r={x:(e[0]<<8)+e[1],y:(e[2]<<8)+e[3],width:(e[4]<<8)+e[5],height:(e[6]<<8)+e[7],encoding:parseInt((e[8]<<24)+(e[9]<<16)+(e[10]<<8)+e[11],10)};switch(r.encoding){case Ce.pseudoEncodingLastRect:this._display.flip(t,r.x+1),this._display.pending()&&this._display.flush(!1);break;case Ce.encodingTight:let i=this._decoders[Ce.encodingUDP];try{i.decodeRect(r.x,r.y,r.width,r.height,e,this._display,this._fbDepth,t)}catch(a){return this._fail("Error decoding rect: "+a),!1}break;default:return Ke("Invalid rect encoding via UDP: "+r.encoding),!1}return!0}_sendUdpUpgrade(){if(this._transitConnectionState==this.TransitConnectionStates.Upgrading)return;this._changeTransitConnectionState(this.TransitConnectionStates.Upgrading);let e=this._udpPeer,t=this._sock;e.createOffer().then(function(r){return e.setLocalDescription(r)}).then(function(){const r=t._sQ,i=t._sQlen,a=Uint8Array.from(Array.from(e.localDescription.sdp).map(s=>s.charCodeAt(0)));r[i]=181,r[i+1]=a.length>>8,r[i+2]=a.length,r.set(a,i+3),t._sQlen+=3+a.length,t.flush()}).catch(function(r){Ke("Failed to create offer "+r),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp),this._udpConnectFailures++})}_sendUdpDowngrade(){this._changeTransitConnectionState(this.TransitConnectionStates.Downgrading);const e=this._sock._sQ,t=this._sock._sQlen;e[t]=181,e[t+1]=0,e[t+2]=0,this._sock._sQlen+=3,this._sock.flush()}_handleUdpUpgrade(){if(this._sock.rQwait("UdpUgrade header",2,1))return!1;let e=this._sock.rQshift16();if(this._sock.rQwait("UdpUpgrade payload",e,3))return!1;const t=this._sock.rQshiftStr(e);let r=this._udpPeer;var i=JSON.parse(t);z("UDP Upgrade recieved from server: "+t),r.setRemoteDescription(new RTCSessionDescription(i.answer)).then((function(){var a=new RTCIceCandidate(i.candidate);r.addIceCandidate(a).then((function(){z("success in addicecandidate")}).bind(this)).catch((function(s){Ke("Failure in addIceCandidate",s),this._changeTransitConnectionState(this.TransitConnectionStates.Failure),this._udpConnectFailures++}).bind(this))}).bind(this)).catch((function(a){Ke("Failure in setRemoteDescription",a),this._changeTransitConnectionState(this.TransitConnectionStates.Failure),this._udpConnectFailures++}).bind(this))}_handleSubscribeUnixRelay(){if(this._sock.rQwait("SubscribeUnixRelay header",2,1))return!1;let e=this._sock.rQshift8(),t=this._sock.rQshift8();if(this._sock.rQwait("SubscribeUnixRelay message",t,3))return!1;const r=this._sock.rQshiftStr(t);e?je("Unix relay subscription succeeded"):at("Unix relay subscription failed, "+r)}_handleUnixRelay(){if(this._sock.rQwait("UnixRelay header",1,1))return!1;let e=this._sock.rQshift8();if(this._sock.rQwait("UnixRelay name",e,2))return!1;const t=this._sock.rQshiftStr(e);if(this._sock.rQwait("UnixRelay len",4,2+e))return!1;let r=this._sock.rQshift32();if(this._sock.rQwait("UnixRelay data",r,6+e))return!1;const i=this._sock.rQshiftBytes(r),a=this._unixRelays[t];a&&a(i)}_handleServerVideoEncoders(){if(this._sock.rQwait("VideoEncoders header",1,1))return!1;let e=this._sock.rQshift8();if(this._sock.rQwait("VideoEncoders data",e*13,1))return!1;let t=[],r={};for(let i=0;i0&&this._sock.rQwait("VideoEncoders presets",c*4))return!1;const u=[];for(let f=0;f0&&this._sock.rQwait("DisconnectNotify reason",t,8))return!1;let r=null;t>0&&(r=this._sock.rQshiftStr(t));const i=(e&1)!==0;return this._serverDisconnectNotice={flags:e,reason:r,graceful:i},r!==null&&(this._disconnectReason=r),i&&(this._rfbCleanDisconnect=!0),!0}_framebufferUpdate(){if(this._FBU.rects===0){if(this._sock.rQwait("FBU header",3,1))return!1;if(this._sock.rQskipBytes(1),this._FBU.rects=this._sock.rQshift16(),this._FBU.frame_id++,this._FBU.rect_total=0,this._display.pending())return this._flushing=!0,this._display.flush(),!1}for(;this._FBU.rects>0;){if(this._FBU.encoding===null){if(this._sock.rQwait("rect header",12))return!1;const e=this._sock.rQshiftBytes(12);this._FBU.x=(e[0]<<8)+e[1],this._FBU.y=(e[2]<<8)+e[3],this._FBU.width=(e[4]<<8)+e[5],this._FBU.height=(e[6]<<8)+e[7],this._FBU.encoding=parseInt((e[8]<<24)+(e[9]<<16)+(e[10]<<8)+e[11],10)}if(!this._handleRect())return!1;this._FBU.rects--,this._FBU.encoding=null}return this._FBU.rect_total>1&&this._display.flip(this._FBU.frame_id,this._FBU.rect_total),!0}_handleRect(){switch(this._FBU.encoding){case Ce.pseudoEncodingLastRect:return this._FBU.rect_total++,this._FBU.rects=1,!0;case Ce.pseudoEncodingVMwareCursor:return this._handleVMwareCursor();case Ce.pseudoEncodingVMwareCursorPosition:return this._handleVMwareCursorPosition();case Ce.pseudoEncodingCursor:return this._handleCursor();case Ce.pseudoEncodingQEMUExtendedKeyEvent:return this._qemuExtKeyEventSupported=!0,!0;case Ce.pseudoEncodingDesktopName:return this._handleDesktopName();case Ce.pseudoEncodingDesktopSize:return this._resize(this._FBU.width,this._FBU.height),!0;case Ce.pseudoEncodingExtendedDesktopSize:return this._handleExtendedDesktopSize();default:return this._handleDataRect()?(this._FBU.rect_total++,!0):!1}}_handleVMwareCursor(){const e=this._FBU.x,t=this._FBU.y,r=this._FBU.width,i=this._FBU.height;if(this._sock.rQwait("VMware cursor encoding",1))return!1;const a=this._sock.rQshift8();this._sock.rQshift8();let s;const l=4;if(a==0){if(s=new Array(r*i*l),this._sock.rQwait("VMware cursor classic encoding",r*i*l*2,2))return!1;let u=new Array(r*i);for(let h=0;h>8&255,g=p>>16&255,m=p>>24&255;s[h*l]=_,s[h*l+1]=g,s[h*l+2]=m,s[h*l+3]=255}else(u[h]&-256)==-256?f[h]==0?(s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=0):(f[h]&-256,s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=255):(s[h*l]=0,s[h*l+1]=0,s[h*l+2]=0,s[h*l+3]=255)}else if(a==1){if(this._sock.rQwait("VMware cursor alpha encoding",r*i*4,2))return!1;s=new Array(r*i*l);for(let c=0;c>24&255,s[c*4+1]=u>>16&255,s[c*4+2]=u>>8&255,s[c*4+3]=u&255}}else return at("The given cursor type is not supported: "+a+" given."),!1;return this._updateCursor(s,e,t,r,i),!0}_handleVMwareCursorPosition(){const e=this._FBU.x,t=this._FBU.y;return this._pointerLock&&(this._mousePos={x:e,y:t}),!0}_handleCursor(){const e=this._FBU.x,t=this._FBU.y,r=this._FBU.width,i=this._FBU.height,a=r*i*4,s=Math.ceil(r/8)*i;let l=a+s;if(this._sock.rQwait("cursor encoding",l))return!1;const c=this._sock.rQshiftBytes(a),u=this._sock.rQshiftBytes(s);let f=new Uint8Array(r*i*4),h=0;for(let p=0;p1&&this._forceFullFrameUpdateAfterResize&&(this._forceFullFrameUpdateAfterResize=!1,clearTimeout(this._forceFullFrameUpdateTimeout),this._forceFullFrameUpdateTimeout=setTimeout((function(){We.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight)}).bind(this),500)),!0}_handleDataRect(){const e=this._decoders[this._FBU.encoding];if(!e)return Ke("Unsupported encoding (encoding: "+this._FBU.encoding+")"),this.dispatchEvent(new CustomEvent("badencoding")),!1;try{return this._transitConnectionState==this.TransitConnectionStates.Udp||this._transitConnectionState==this.TransitConnectionStates.Failure?(this._transitConnectionState==this.TransitConnectionStates.Udp&&(at("Implicit UDP Transit Failure, TCP rects recieved while in UDP mode."),this._udpTransitFailures++),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp),this._display.clear(),this._useUdp&&(this._udpConnectFailures<3&&this._udpTransitFailures<3?setTimeout((function(){at("Attempting to connect via UDP again after failure."),this.enableWebRTC=!0}).bind(this),3e3):at("UDP connection failures exceeded limit, remaining on TCP transit."))):this._transitConnectionState==this.TransitConnectionStates.Downgrading&&(this._display.clear(),this._changeTransitConnectionState(this.TransitConnectionStates.Tcp)),e.decodeRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,this._sock,this._display,this._fbDepth,this._FBU.frame_id)}catch(t){return this._fail("Error decoding rect: "+t),!1}}_updateContinuousUpdates(){this._enabledContinuousUpdates&&We.messages.enableContinuousUpdates(this._sock,!0,0,0,this._fbWidth,this._fbHeight)}_resize(e,t){this._fbWidth=e,this._fbHeight=t,this._display.resize(this._fbWidth,this._fbHeight),this._updateClip(),this._updateScale(),this._updateContinuousUpdates()}_xvpOp(e,t){this._rfbXvpVeri.charCodeAt(0));return new UA(r).encrypt(t)}}We.messages={keyEvent(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=4,r[i+1]=t,r[i+2]=0,r[i+3]=0,r[i+4]=e>>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e,n._sQlen+=8,n.flush()},QEMUExtendedKeyEvent(n,e,t,r){function i(c){const u=r>>8,f=r&255;return u===224&&f<127?f|128:c}const a=n._sQ,s=n._sQlen;a[s]=255,a[s+1]=0,a[s+2]=t>>8,a[s+3]=t,a[s+4]=e>>24,a[s+5]=e>>16,a[s+6]=e>>8,a[s+7]=e;const l=i(r);a[s+8]=l>>24,a[s+9]=l>>16,a[s+10]=l>>8,a[s+11]=l,n._sQlen+=12,n.flush()},pointerEvent(n,e,t,r,i=0,a=0){const s=n._sQ,l=n._sQlen;s[l]=5,s[l+1]=r>>8,s[l+2]=r,s[l+3]=e>>8,s[l+4]=e,s[l+5]=t>>8,s[l+6]=t,s[l+7]=i>>8,s[l+8]=i,s[l+9]=a>>8,s[l+10]=a,n._sQlen+=11,n.flush()},keepAlive(n){const e=n._sQ,t=n._sQlen;e[t]=tn.msgTypeKeepAlive,n._sQlen+=1,n.flush()},_buildExtendedClipboardFlags(n,e){let t=new Uint8Array(4),r=0,i=0;for(let a=0;a>24,t[1]=0,t[2]=0,t[3]=r,t},extendedClipboardProvide(n,e,t){let r=new _A,i=[];for(let l=0;l>24&255,c.length>>16&255,c.length>>8&255,c.length&255);for(let u=0;uparseInt(s)),r.sort((s,l)=>s-l),i.set(We.messages._buildExtendedClipboardFlags(e,[]));let a=4;for(let s=0;s>24,i[a+1]=t[r[s]]>>16,i[a+2]=t[r[s]]>>8,i[a+3]=t[r[s]]>>0,a+=4,i[3]|=1<>24,r[i+5]=a>>16,r[i+6]=a>>8,r[i+7]=a,n._sQlen+=8;let s=0,l=e.length;for(;l>0;){let c=Math.min(l,n._sQbufferSize-n._sQlen);for(let u=0;u>24,r[i++]=c>>16,r[i++]=c>>8,r[i++]=c,n._sQlen+=1+s.length+4;let u=0,f=l.length;for(;f>0;){let h=Math.min(f,n._sQbufferSize-n._sQlen);for(let p=0;p>24,r[i++]=a>>16,r[i++]=a>>8,r[i++]=a,n._sQlen+=2+e.length+4;let s=0,l=t.length;for(;l>0;){let c=Math.min(l,n._sQbufferSize-n._sQlen);for(let u=0;u>8,r[i+3]=e.serverWidth,r[i+4]=e.serverHeight>>8,r[i+5]=e.serverHeight,r[i+6]=e.screens.length,r[i+7]=0;let a=8;for(let s=0;s>24,r[i+a++]=s>>16,r[i+a++]=s>>8,r[i+a++]=s,r[i+a++]=e.screens[s].x>>8,r[i+a++]=e.screens[s].x,r[i+a++]=e.screens[s].y>>8,r[i+a++]=e.screens[s].y,r[i+a++]=e.screens[s].serverWidth>>8,r[i+a++]=e.screens[s].serverWidth,r[i+a++]=e.screens[s].serverHeight>>8,r[i+a++]=e.screens[s].serverHeight,r[i+a++]=t>>24,r[i+a++]=t>>16,r[i+a++]=t>>8,r[i+a++]=t;n._sQlen+=a,n.flush()},setMaxVideoResolution(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=252,r[i+1]=e>>8,r[i+2]=e,r[i+3]=t>>8,r[i+4]=t,n._sQlen+=5,n.flush()},clientFence(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=248,r[i+1]=0,r[i+2]=0,r[i+3]=0,r[i+4]=e>>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e;const a=t.length;r[i+8]=a;for(let s=0;s>24,r[i+5]=e>>16,r[i+6]=e>>8,r[i+7]=e,r[i+8]=t>>24,r[i+9]=t>>16,r[i+10]=t>>8,r[i+11]=t,n._sQlen+=12,n.flush())},enableContinuousUpdates(n,e,t,r,i,a){const s=n._sQ,l=n._sQlen;s[l]=150,s[l+1]=e,s[l+2]=t>>8,s[l+3]=t,s[l+4]=r>>8,s[l+5]=r,s[l+6]=i>>8,s[l+7]=i,s[l+8]=a>>8,s[l+9]=a,n._sQlen+=10,n.flush()},pixelFormat(n,e,t){const r=n._sQ,i=n._sQlen;let a;e>16?a=32:e>8?a=16:a=8;const s=Math.floor(e/3);r[i]=0,r[i+1]=0,r[i+2]=0,r[i+3]=0,r[i+4]=a,r[i+5]=e,r[i+6]=0,r[i+7]=t?1:0,r[i+8]=0,r[i+9]=(1<>8,t[r+3]=e.length;let i=r+4;for(let a=0;a>24,t[i+1]=s>>16,t[i+2]=s>>8,t[i+3]=s,i+=4}n._sQlen+=i-r,n.flush()},videoEncodersRequest(n,e){e==null&&(e=[]);const t=n._sQ,r=n._sQlen;t[r]=tn.msgTypeVideoEncoders,t[r+1]=e.length;let i=r+2;for(let a=0;a>24,t[i+1]=s>>16,t[i+2]=s>>8,t[i+3]=s,i+=4}n._sQlen+=i-r,n.flush()},fbUpdateRequest(n,e,t,r,i,a){const s=n._sQ,l=n._sQlen;typeof t>"u"&&(t=0),typeof r>"u"&&(r=0),s[l]=3,s[l+1]=e?1:0,s[l+2]=t>>8&255,s[l+3]=t&255,s[l+4]=r>>8&255,s[l+5]=r&255,s[l+6]=i>>8&255,s[l+7]=i&255,s[l+8]=a>>8&255,s[l+9]=a&255,n._sQlen+=10,n.flush()},xvpOp(n,e,t){const r=n._sQ,i=n._sQlen;r[i]=250,r[i+1]=0,r[i+2]=e,r[i+3]=t,n._sQlen+=4,n.flush()}};We.cursors={none:{rgbaPixels:new Uint8Array,w:0,h:0,hotx:0,hoty:0},dot:{rgbaPixels:new Uint8Array([255,255,255,255,0,0,0,255,255,255,255,255,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,255,255,255,255,255]),w:3,h:3,hotx:1,hoty:1}};window._noVNC_has_module_support=!0;window.addEventListener("load",function(){if(!window._noVNC_has_module_support){var n=document.createElement("script");n.src="vendor/browser-es-module-loader/dist/browser-es-module-loader.js",document.head.appendChild(n)}});window.updateSetting=(n,e)=>{switch(vr(n,e),n){case"translate_shortcuts":o.updateShortcutTranslation();break}};const Ex="KasmVNC",o={connected:!1,desktopName:"",statusTimeout:null,hideKeyboardTimeout:null,idleControlbarTimeout:null,closeControlbarTimeout:null,controlbarGrabbed:!1,controlbarDrag:!1,controlbarMouseDownClientY:0,controlbarMouseDownOffsetY:0,inhibitReconnect:!0,reconnectCallback:null,reconnectPassword:null,monitors:[],sortedMonitors:[],selectedMonitor:null,refreshRotation:0,currentDisplay:null,displayWindows:new Map([["primary","primary"]]),registeredWindows:new Map([["primary","primary"]]),fpsChartTicks:[],monitorDragOk:!1,monitorStartX:0,monitorStartY:0,multiMonitorSupport:typeof BroadcastChannel<"u"&&typeof SharedWorker<"u",get supportsMultiMonitor(){return this.multiMonitorSupport},codecDetector:null,forcedCodecs:[],prime:async()=>{await RA();try{const n=await new GA().detect();o.codecDetector=n,z("Supported Codecs: ",n.getSupportedCodecs())}catch(n){at("Failed to detect codecs: ",n)}return document.readyState==="interactive"||document.readyState==="complete"?o.start():new Promise((n,e)=>{document.addEventListener("DOMContentLoaded",()=>o.start().then(n).catch(e))})},start(){if(window.location.href.includes("screen.html"))return;o.initSettings(),o.updateQuality(),Tr.translateDOM(),fetch("./package.json").then(e=>{if(!e.ok)throw Error(""+e.status+" "+e.statusText);return e.json()}).then(e=>{Array.from(document.getElementsByClassName("noVNC_version")).forEach(t=>t.innerText=e.version)}).catch(e=>{Ke("Couldn't fetch package.json: "+e),Array.from(document.getElementsByClassName("noVNC_version_wrapper")).concat(Array.from(document.getElementsByClassName("noVNC_version_separator"))).forEach(t=>t.style.display="none")}),Ec&&(document.documentElement.classList.add("noVNC_touch"),setTimeout(()=>window.scrollTo(0,1),100)),mn("controlbar_pos")==="right"&&o.toggleControlbarSide(),o.initFullscreen(),o.addKeyboardControlsPanelHandlers(),o.addControlbarHandlers(),o.addTouchSpecificHandlers(),o.addExtraKeysHandlers(),o.addGamingHandlers(),o.addMachineHandlers(),o.addConnectionControlHandlers(),o.addClipboardHandlers(),o.addSettingsHandlers(),o.addDisplaysHandler(),document.getElementById("noVNC_status").addEventListener("click",o.hideStatus),o.openControlbar(),o.updateVisualState("init"),document.documentElement.classList.remove("noVNC_loading");let n=hr("autoconnect",!0);return n==="true"||n=="1"?(n=!0,o.connect()):n=!1,window.parent.postMessage({action:"noVNC_initialized",value:null},"*"),window.addEventListener("message",e=>{typeof e.data!="object"||!e.data.action||(e.data.action==="show_keyboard_controls"?o.showKeyboardControls():e.data.action==="hide_keyboard_controls"&&o.hideKeyboardControls())}),window.addEventListener("beforeunload",e=>{const r=new URLSearchParams(window.location.search).get("windowId");o.rfb&&r&&o.rfb._unregisterSecondaryDisplay()}),window.addEventListener("unload",e=>{const r=new URLSearchParams(window.location.search).get("windowId");o.rfb&&!r&&o.disconnect()}),Promise.resolve(o.rfb)},initFullscreen(){!ei()&&(document.documentElement.requestFullscreen||document.documentElement.mozRequestFullScreen||document.documentElement.webkitRequestFullscreen||document.body.msRequestFullscreen)&&(o.showControlInput("noVNC_fullscreen_button"),o.addFullscreenHandlers())},initSettings(){const n=["error","warn","info","debug"];for(let a=0;a{const e=n.target,t=(parseFloat(e.getAttribute("data-x"))||0)+n.dx,r=(parseFloat(e.getAttribute("data-y"))||0)+n.dy;e.style.transform=`translate(${t}px, ${r}px)`,e.setAttribute("data-x",t),e.setAttribute("data-y",r)}}}),or(".keyboard-controls .handle").pointerEvents({holdDuration:350}).on("hold",n=>{const e=document.querySelector(".keyboard-controls"),t=e.classList.contains("is-open");e.classList.toggle("was-open",t),e.classList.toggle("is-open",!t),setTimeout(()=>e.classList.remove("was-open"),500)}),or(".keyboard-controls .handle").on("tap",n=>{n.dt<150&&o.toggleVirtualKeyboard()}),or(".keyboard-controls .button.ctrl").on("tap",o.toggleCtrl),or(".keyboard-controls .button.alt").on("tap",o.toggleAlt),or(".keyboard-controls .button.windows").on("tap",o.toggleWindows),or(".keyboard-controls .button.tab").on("tap",o.sendTab),or(".keyboard-controls .button.escape").on("tap",o.sendEsc),or(".keyboard-controls .button.ctrlaltdel").on("tap",o.sendCtrlAltDel)},addControlbarHandlers(){document.getElementById("noVNC_control_bar").addEventListener("mousemove",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mouseup",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mousedown",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("keydown",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("mousedown",o.keepControlbar),document.getElementById("noVNC_control_bar").addEventListener("keydown",o.keepControlbar),o.addClickHandle("noVNC_view_drag_button",o.toggleViewDrag),document.getElementById("noVNC_control_bar_handle").addEventListener("mousedown",o.controlbarHandleMouseDown),document.getElementById("noVNC_control_bar_handle").addEventListener("mouseup",o.controlbarHandleMouseUp),document.getElementById("noVNC_control_bar_handle").addEventListener("mousemove",o.dragControlbarHandle),window.addEventListener("resize",o.updateControlbarHandle);const n=document.getElementsByClassName("noVNC_expander");for(let e=0;e!1),document.documentElement.addEventListener("mousedown",o.keepVirtualKeyboard,!0),document.getElementById("noVNC_control_bar").addEventListener("touchstart",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchmove",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchend",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("input",o.activateControlbar),document.getElementById("noVNC_control_bar").addEventListener("touchstart",o.keepControlbar),document.getElementById("noVNC_control_bar").addEventListener("input",o.keepControlbar),document.getElementById("noVNC_control_bar_handle").addEventListener("touchstart",o.controlbarHandleMouseDown),document.getElementById("noVNC_control_bar_handle").addEventListener("touchend",o.controlbarHandleMouseUp),document.getElementById("noVNC_control_bar_handle").addEventListener("touchmove",o.dragControlbarHandle)},addExtraKeysHandlers(){o.addClickHandle("noVNC_toggle_extra_keys_button",o.toggleExtraKeys),document.getElementById("noVNC_toggle_ctrl_button").addEventListener("click",o.toggleCtrl),document.getElementById("noVNC_toggle_windows_button").addEventListener("click",o.toggleWindows),document.getElementById("noVNC_toggle_alt_button").addEventListener("click",o.toggleAlt),document.getElementById("noVNC_send_tab_button").addEventListener("click",o.sendTab),document.getElementById("noVNC_send_esc_button").addEventListener("click",o.sendEsc),document.getElementById("noVNC_send_ctrl_alt_del_button").addEventListener("click",o.sendCtrlAltDel)},addGamingHandlers(){o.addClickHandle("noVNC_game_mode_button",o.toggleRelativePointer),document.getElementById("noVNC_setting_pointer_lock").addEventListener("click",o.togglePointerLock)},addMachineHandlers(){o.addClickHandle("noVNC_power_button",o.togglePowerPanel),document.getElementById("noVNC_shutdown_button").addEventListener("click",()=>o.rfb.machineShutdown()),document.getElementById("noVNC_reboot_button").addEventListener("click",()=>o.rfb.machineReboot()),document.getElementById("noVNC_reset_button").addEventListener("click",()=>o.rfb.machineReset())},addClipboardHandlers(){o.addClickHandle("noVNC_clipboard_button",o.toggleClipboardPanel),document.getElementById("noVNC_clipboard_text").addEventListener("change",o.clipboardSend),document.getElementById("noVNC_clipboard_clear_button").addEventListener("click",o.clipboardClear)},addSettingChangeHandler(n,e){const t=document.getElementById("noVNC_setting_"+n);e===void 0&&(e=()=>o.saveSetting(n)),t.addEventListener("change",e)},addSettingChangeHandlerByName(n){this.addSettingChangeHandler(n,o.updatePropertyName(n))},addSettingsHandlers(){o.addClickHandle("noVNC_settings_button",o.toggleSettingsPanel),document.getElementById("noVNC_setting_enable_perf_stats").addEventListener("click",o.showStats),document.getElementById("noVNC_setting_enable_threading").addEventListener("click",o.threading),document.getElementById("noVNC_auto_placement").addEventListener("change",o.setAutoPlacement),o.addSettingChangeHandler("encrypt"),o.addSettingChangeHandler("resize"),o.addSettingChangeHandler("resize",o.applyResizeMode),o.addSettingChangeHandler("resize",o.updateViewClip),o.addSettingChangeHandler("quality"),o.addSettingChangeHandler("quality",o.updateQuality),o.addSettingChangeHandler("dynamic_quality_min"),o.addSettingChangeHandler("dynamic_quality_min",o.updateQuality),o.addSettingChangeHandler("dynamic_quality_max"),o.addSettingChangeHandler("dynamic_quality_max",o.updateQuality),o.addSettingChangeHandler("translate_shortcuts"),o.addSettingChangeHandler("translate_shortcuts",o.updateShortcutTranslation),o.addSettingChangeHandler("treat_lossless"),o.addSettingChangeHandler("treat_lossless",o.updateQuality),o.addSettingChangeHandler("anti_aliasing"),o.addSettingChangeHandler("anti_aliasing",o.updateQuality),o.addSettingChangeHandler("video_rendering_mode"),o.addSettingChangeHandler("video_rendering_mode",o.updateVideoRenderingMode),o.addSettingChangeHandler("video_quality"),o.addSettingChangeHandler("video_quality",o.updateQuality),o.addSettingChangeHandler("jpeg_video_quality"),o.addSettingChangeHandler("jpeg_video_quality",o.updateQuality),o.addSettingChangeHandler("webp_video_quality"),o.addSettingChangeHandler("webp_video_quality",o.updateQuality),o.addSettingChangeHandler("video_area"),o.addSettingChangeHandler("video_area",o.updateQuality),o.addSettingChangeHandler("video_time"),o.addSettingChangeHandler("video_time",o.updateQuality),o.addSettingChangeHandler("video_out_time"),o.addSettingChangeHandler("video_out_time",o.updateQuality),o.addSettingChangeHandler("video_scaling"),o.addSettingChangeHandler("video_scaling",o.updateQuality),o.addSettingChangeHandler("max_video_resolution_x"),o.addSettingChangeHandler("max_video_resolution_x",o.updateQuality),o.addSettingChangeHandler("max_video_resolution_y"),o.addSettingChangeHandler("max_video_resolution_y",o.updateQuality),o.addSettingChangeHandler("framerate_image_mode",()=>{const n=o.getSettingElement("framerate_image_mode").value;o.getSettingElement("framerate_streaming_mode").value=n,vr("framerate_streaming_mode",n),o.updateQuality()}),o.addSettingChangeHandler("framerate_streaming_mode",()=>{const n=o.getSettingElement("framerate_streaming_mode").value;vr("framerate_streaming_mode",n),o.updateQuality()}),o.addSettingChangeHandler("compression"),o.addSettingChangeHandler("compression",o.updateCompression),o.addSettingChangeHandler("view_clip"),o.addSettingChangeHandler("view_clip",o.updateViewClip),o.addSettingChangeHandler("shared"),o.addSettingChangeHandler("view_only"),o.addSettingChangeHandler("view_only",o.updateViewOnly),o.addSettingChangeHandler("show_dot"),o.addSettingChangeHandler("show_dot",o.updateShowDotCursor),o.addSettingChangeHandler("host"),o.addSettingChangeHandler("port"),o.addSettingChangeHandler("path"),o.addSettingChangeHandler("repeaterID"),o.addSettingChangeHandler("logging"),o.addSettingChangeHandler("logging",o.updateLogging),o.addSettingChangeHandler("reconnect"),o.addSettingChangeHandler("reconnect_delay"),o.addSettingChangeHandler("enable_webp"),o.addSettingChangeHandler("clipboard_seamless"),o.addSettingChangeHandler("clipboard_up"),o.addSettingChangeHandler("clipboard_down"),o.addSettingChangeHandler("toggle_control_panel"),o.addSettingChangeHandler("virtual_keyboard_visible"),o.addSettingChangeHandler("virtual_keyboard_visible",o.toggleKeyboardControls),o.addSettingChangeHandler("enable_ime"),o.addSettingChangeHandler("enable_ime",o.toggleIMEMode),o.addSettingChangeHandler("enable_webrtc"),o.addSettingChangeHandler("enable_webrtc",o.toggleWebRTC),o.addSettingChangeHandler("enable_hidpi"),o.addSettingChangeHandler("enable_hidpi",o.enableHiDpi),o.addSettingChangeHandler("enable_threading"),o.addSettingChangeHandler("enable_threading",o.threading),o.addSettingChangeHandler(ht.STREAM_MODE,o.streamMode),o.addSettingChangeHandlerByName(ht.GOP),o.addSettingChangeHandlerByName(ht.VIDEO_STREAM_QUALITY)},addFullscreenHandlers(){o.addClickHandle("noVNC_fullscreen_button",o.toggleFullscreen),window.addEventListener("fullscreenchange",o.updateFullscreenButton),window.addEventListener("mozfullscreenchange",o.updateFullscreenButton),window.addEventListener("webkitfullscreenchange",o.updateFullscreenButton),window.addEventListener("msfullscreenchange",o.updateFullscreenButton)},addDisplaysHandler(){o.supportsMultiMonitor&&(o.showControlInput("noVNC_displays_button"),o.addClickHandle("noVNC_displays_button",o.openDisplays),o.addClickHandle("noVNC_close_displays",o.closeDisplays),o.addClickHandle("noVNC_identify_monitors_button",o._identify),o.addClickHandle("noVNC_addMonitor",o.addSecondaryMonitor),o.addClickHandle("noVNC_refreshMonitors",o.displaysRefresh))},setAutoPlacement(n){n.target.checked===!1?window.localStorage.setItem("autoPlacement",!1):window.localStorage.removeItem("autoPlacement")},isControlPanelItemClick(n){var e,t,r;return!((e=n==null?void 0:n.target)!=null&&e.classList)||!((t=n==null?void 0:n.target)!=null&&t.parentNode)?!1:n.target.classList.contains("noVNC_button")&&((r=n.target.parentNode)==null?void 0:r.id)!=="noVNC_modifiers"||n.target.classList.contains("noVNC_button_div")||n.target.classList.contains("noVNC_heading")},updateVisualState(n){document.documentElement.classList.remove("noVNC_connecting"),document.documentElement.classList.remove("noVNC_connected"),document.documentElement.classList.remove("noVNC_disconnecting"),document.documentElement.classList.remove("noVNC_reconnecting"),document.documentElement.classList.remove("noVNC_disconnected");const e=document.getElementById("noVNC_transition_text");switch(Wt()&&parent.postMessage({action:"connection_state",value:n},"*"),n){case"init":break;case"connecting":e.textContent=tr("Connecting..."),document.documentElement.classList.add("noVNC_connecting");break;case"connected":document.documentElement.classList.add("noVNC_connected");break;case"disconnecting":e.textContent=tr("Disconnecting..."),document.documentElement.classList.add("noVNC_disconnecting");break;case"disconnected":document.documentElement.classList.add("noVNC_disconnected");break;case"reconnecting":e.textContent=tr("Reconnecting..."),document.documentElement.classList.add("noVNC_reconnecting");break;default:Ke("Invalid visual state: "+n),o.showStatus(tr("Internal error"),"error");return}o.connected?(o.updateViewClip(),o.disableSetting("encrypt"),o.disableSetting("shared"),o.disableSetting("host"),o.disableSetting("port"),o.disableSetting("path"),o.disableSetting("repeaterID"),o.closeControlbarTimeout=setTimeout(o.closeControlbar,2e3)):(o.enableSetting("encrypt"),o.enableSetting("shared"),o.enableSetting("host"),o.enableSetting("port"),o.enableSetting("path"),o.enableSetting("repeaterID"),o.updatePowerButton(),o.keepControlbar()),o.closeAllPanels()},showStats(){o.statsInterval&&(clearInterval(o.statsInterval),o.statsInterval=null);const n=document.getElementById("noVNC_setting_enable_perf_stats"),e=n?n.checked:!1;o.saveSetting("enable_perf_stats"),e?(document.getElementById("noVNC_connection_stats").style.visibility="visible",document.getElementById("noVNC_fps_chart").style.visibility="visible",o.statsInterval=setInterval(function(){o.rfb!==void 0&&o.rfb.requestBottleneckStats()},5e3)):(document.getElementById("noVNC_connection_stats").style.visibility="hidden",document.getElementById("noVNC_fps_chart").style.visibility="hidden")},threading(){o.rfb&&(o.getSetting("enable_threading")?o.rfb.threading=!0:o.rfb.threading=!1),o.saveSetting("enable_threading")},updatePropertyName(n){return o.updateRfbProperty(n,n)},updateRfbProperty(n,e){return t=>{o.rfb&&(o.rfb[n]=Number(t.target.value)),o.saveSetting(e),o.updateQuality()}},gop(n){o.rfb&&(o.rfb.gop=Number(n.target.value)),o.saveSetting(ht.GOP)},videoStreamQuality(n){var e;o.rfb&&(o.rfb.videoStreamQuality=Number(n.target.value)),z("Saving quality:",n.target.value,"Stream mode:",o.getSetting(ht.STREAM_MODE)),z("Codec configs:",(e=o.rfb)==null?void 0:e.videoCodecConfigurations),o.saveSetting(ht.VIDEO_STREAM_QUALITY)},qualityPreset(n){o.rfb&&(o.rfb.qualityPreset=Number(n.target.value)),o.saveSetting(ht.PRESET)},streamMode(n){const e=Number(n.target.value);o.saveSetting(ht.STREAM_MODE),o.applyStreamMode(e,n.configuration)},applyStreamMode(n,e){var i,a,s,l;if(o.toggleStreamModeGroupVisibility(n),n!==Ce.pseudoEncodingStreamingModeJpegWebp){const c=e||((i=o.rfb)==null?void 0:i.videoCodecConfigurations[n]);if(Wt()){const u=(a=o.rfb)==null?void 0:a.videoCodecConfigurations[n].presets;if(u){const f=parseInt(mn("video_quality")),h=parseInt(o.getSetting(ht.VIDEO_STREAM_QUALITY));u[f]!==void 0&&h!==u[f]&&o.forceSetting(ht.VIDEO_STREAM_QUALITY,u[f],!1)}}o.updateQualitySliderRange(n,c)}o.updateQuality(),(s=o.rfb)==null||s._requestFullRefresh();const r=(l=[...o.getSettingElement(ht.STREAM_MODE).options].find(c=>Number(c.value)===n))==null?void 0:l.text;je("Switching to mode: ",r||"Unknown Mode ","value:",n),(!Wt()||o.getSettingElement(ht.SHOW_NOTIFICATIONS)||hr(ht.SHOW_NOTIFICATIONS))&&Rc(r||"Mode Changed")},initStreamModeSetting(n,e){const t=o.getSettingElement(ht.STREAM_MODE);if(!t)return;t.innerHTML="";const r={id:Ce.pseudoEncodingStreamingModeJpegWebp,label:"JPEG/WEBP (Images)"},i=[r],a=this.getAvailableStreamingModes(n);i.push(...a);const s=Number(o.getSetting(ht.STREAM_MODE)),l=this.getBestStreamingMode(i,r,s);i.sort((u,f)=>f.id-u.id).forEach(u=>{o.addOption(t,u.label,u.id)}),t.value=l;const c=e==null?void 0:e[l];o.streamMode({target:t,configuration:c}),z("Selected streaming mode: ",l),z("Codec configuration:",c),o.sendMessage("update_codecs",{current:t.value,codecs:i})},updateQualitySliderRange(n,e){const t=o.getSettingElement(ht.VIDEO_STREAM_QUALITY);if(!t)return;if(!e){t.min=1,t.max=50;return}t.min=e.minQuality,t.max=e.maxQuality;const r=parseInt(t.value);re.maxQuality&&(t.value=e.maxQuality);const i=document.getElementById("noVNC_setting_video_stream_quality_output");i&&(i.value=t.value),o.saveSetting(ht.VIDEO_STREAM_QUALITY)},getAvailableStreamingModes(n){let e=[];if(!Array.isArray(n)||n.length===0)return e;const t=o.forcedCodecs;n=t.length>0?t.filter(i=>n.includes(i)):n;const r=n.map(i=>{const a=vx[i]?vx[i]:`Codec ${i}`;return{id:i,label:a}});return e.push(...r),e},getBestStreamingMode(n,e,t){let r=e.id;if(o.forcedCodecs.length>0){const l=o.forcedCodecs.find(c=>n.some(u=>u.id===c));return l!==void 0?l:e.id}if(o.getSetting("fallback_image_mode"))return o.forceSetting("fallback_image_mode",!1,!1),je("Defaulting to image mode due to previous encoding error"),Ce.pseudoEncodingStreamingModeJpegWebp;const i=n.some(l=>l.id===t),a=n.map(l=>l.id),s=zA.filter(l=>a.includes(l));return r=i?t:Ce.pseudoEncodingStreamingModeJpegWebp,s.length>0&&r===Ce.pseudoEncodingStreamingModeJpegWebp&&(r=Math.min(...s)),r},showStatus(n,e,t,r=!1){if(Wt()&&!r)return;const i=document.getElementById("noVNC_status");if(typeof e>"u"&&(e="normal"),!(i.classList.contains("noVNC_open")&&(i.classList.contains("noVNC_status_error")||i.classList.contains("noVNC_status_warn")&&e==="normal"))){switch(clearTimeout(o.statusTimeout),e){case"error":i.classList.remove("noVNC_status_warn"),i.classList.remove("noVNC_status_normal"),i.classList.add("noVNC_status_error");break;case"warning":case"warn":i.classList.remove("noVNC_status_error"),i.classList.remove("noVNC_status_normal"),i.classList.add("noVNC_status_warn");break;case"normal":case"info":default:i.classList.remove("noVNC_status_error"),i.classList.remove("noVNC_status_warn"),i.classList.add("noVNC_status_normal");break}i.textContent=n,i.classList.add("noVNC_open"),typeof t>"u"&&(t=1500),e!=="error"&&(o.statusTimeout=window.setTimeout(o.hideStatus,t))}},hideStatus(){clearTimeout(o.statusTimeout),document.getElementById("noVNC_status").classList.remove("noVNC_open")},activateControlbar(n){clearTimeout(o.idleControlbarTimeout),document.getElementById("noVNC_control_bar_anchor").classList.remove("noVNC_idle"),o.idleControlbarTimeout=window.setTimeout(o.idleControlbar,2e3)},idleControlbar(){if(document.getElementById("noVNC_control_bar").contains(document.activeElement)&&document.hasFocus()){o.activateControlbar();return}document.getElementById("noVNC_control_bar_anchor").classList.add("noVNC_idle")},keepControlbar(){clearTimeout(o.closeControlbarTimeout)},openControlbar(){document.getElementById("noVNC_control_bar").classList.add("noVNC_open"),Wt()&&parent.postMessage({action:"control_open",value:"Control bar opened"},"*")},closeControlbar(){o.closeAllPanels(),document.getElementById("noVNC_control_bar").classList.remove("noVNC_open"),o.rfb&&o.rfb.focus(),Wt()&&parent.postMessage({action:"control_close",value:"Control bar closed"},"*")},toggleControlbar(){document.getElementById("noVNC_control_bar").classList.contains("noVNC_open")?o.closeControlbar():o.openControlbar()},toggleControlbarSide(){const n=document.getElementById("noVNC_control_bar");window.getComputedStyle(n).display!=="none"&&(n.style.transitionDuration="0s",n.addEventListener("transitionend",()=>n.style.transitionDuration=""));const t=document.getElementById("noVNC_control_bar_anchor");t.classList.contains("noVNC_right")?(vr("controlbar_pos","left"),t.classList.remove("noVNC_right")):(vr("controlbar_pos","right"),t.classList.add("noVNC_right")),o.controlbarDrag=!0},toggleStreamModeGroupVisibility(n){const e=n===Ce.pseudoEncodingStreamingModeJpegWebp,t=document.getElementById(gx.IMAGE_GROUP),r=document.getElementById(gx.VIDEO_GROUP);t&&(t.style.display=e?"block":"none"),r&&(r.style.display=e?"none":"block")},showControlbarHint(n){const e=document.getElementById("noVNC_control_bar_hint");n?e.classList.add("noVNC_active"):e.classList.remove("noVNC_active")},dragControlbarHandle(n){if(!o.controlbarGrabbed)return;const e=Nb(n),t=document.getElementById("noVNC_control_bar_anchor");if(e.clientXwindow.innerWidth*.9&&(t.classList.contains("noVNC_right")||o.toggleControlbarSide()),!o.controlbarDrag){if(Math.abs(e.clientY-o.controlbarMouseDownClientY)r.top+r.height-t-i&&(a=r.top+r.height-t-i),r.height> UI.clipboardReceive: "+n.detail.text.substr(0,40)+"..."),document.getElementById("noVNC_clipboard_text").value=n.detail.text,z("<< UI.clipboardReceive"))}},generateFpsChartPath(){if(this.fpsChartTicks.length===0)return"";const n=_r.WIDTH/(_r.MAX_POINTS-1),e=_r.HEIGHT/_r.MAX_FPS_VALUE;let t=`M 0 ${_r.HEIGHT}`;for(let r=0;r_r.MAX_POINTS&&o.fpsChartTicks.shift();const e=document.getElementById("noVNC_fps_chart_path");if(e&&e.setAttribute("d",o.generateFpsChartPath()),o.fpsChartTicks.length>0){const t=Math.max(...o.fpsChartTicks),r=Math.min(...o.fpsChartTicks),i=o.fpsChartTicks.reduce((a,s)=>a+s,0)/o.fpsChartTicks.length;document.getElementById("noVNC_fps_chart_max").textContent=`Max: ${t.toFixed(1)}`,document.getElementById("noVNC_fps_chart_min").textContent=`Min: ${r.toFixed(1)}`,document.getElementById("noVNC_fps_chart_avg").textContent=`Avg: ${i.toFixed(1)}`}},bottleneckStatsRecieve(n){if(o.rfb)try{let e=JSON.parse(n.detail.text),t=o.rfb.statsFps;document.getElementById("noVNC_connection_stats").innerHTML="CPU: "+e[0]+"/"+e[1]+" | Network: "+e[2]+"/"+e[3]+" | FPS: "+o.rfb.statsFps+" Dropped FPS: "+o.rfb.statsDroppedFps,o.updateFpsChart(Number(t)),console.log(n.detail.text)}catch{console.log("Invalid bottleneck stats recieved from server.")}},popupMessage:function(n,e){e||(e=500),setTimeout(o.showOverlay.bind(this,n,e),200)},clipboardClear(){document.getElementById("noVNC_clipboard_text").value="",o.rfb.clipboardPasteFrom("")},clipboardSend(){const n=document.getElementById("noVNC_clipboard_text").value;z(">> UI.clipboardSend: "+n.substr(0,40)+"..."),o.rfb.clipboardPasteFrom(n),z("<< UI.clipboardSend")},setConnectionQualityValues(){o.rfb.qualityLevel=parseInt(o.getSetting("quality")),o.rfb.antiAliasing=parseInt(o.getSetting("anti_aliasing")),o.rfb.dynamicQualityMin=parseInt(o.getSetting("dynamic_quality_min")),o.rfb.dynamicQualityMax=parseInt(o.getSetting("dynamic_quality_max")),o.rfb.jpegVideoQuality=parseInt(o.getSetting("jpeg_video_quality")),o.rfb.webpVideoQuality=parseInt(o.getSetting("webp_video_quality")),o.rfb.videoArea=parseInt(o.getSetting("video_area")),o.rfb.videoTime=parseInt(o.getSetting("video_time")),o.rfb.videoOutTime=parseInt(o.getSetting("video_out_time")),o.rfb.videoScaling=parseInt(o.getSetting("video_scaling")),o.rfb.treatLossless=parseInt(o.getSetting("treat_lossless")),o.rfb.maxVideoResolutionX=parseInt(o.getSetting("max_video_resolution_x")),o.rfb.maxVideoResolutionY=parseInt(o.getSetting("max_video_resolution_y")),o.rfb.streamMode=parseInt(o.getSetting(ht.STREAM_MODE));const n=o.rfb.streamMode===Ce.pseudoEncodingStreamingModeJpegWebp,e=n?"framerate_image_mode":"framerate_streaming_mode";o.rfb.frameRate=parseInt(o.getSetting(e)),je(`setConnectionQualityValues: streamMode=${o.rfb.streamMode}, isImageMode=${n}, reading from '${e}', frameRate=${o.rfb.frameRate}`),o.rfb.enableWebP=o.getSetting("enable_webp"),o.rfb.videoQuality=parseInt(o.getSetting("video_quality")),o.rfb.enableHiDpi=o.getSetting("enable_hidpi"),o.rfb.threading=o.getSetting("enable_threading"),o.rfb.gop=parseInt(o.getSetting(ht.GOP)),o.rfb.videoStreamQuality=parseInt(o.getSetting(ht.VIDEO_STREAM_QUALITY)),je("Loaded from localStorage - Quality: ",o.rfb.videoStreamQuality," Stream mode: ",o.rfb.streamMode," GOP:",o.rfb.gop)},connect(n,e){var s;if(z("UI.connect"),typeof o.rfb<"u")return;const t=o.getSetting("host"),r=o.getSetting("port"),i=o.getSetting("path");if(typeof e>"u"&&(e=hr("password"),o.reconnectPassword=e),e===null&&(e=void 0),o.hideStatus(),window.name="primaryDisplay",!t){Ke("Can't connect when host is: "+t),o.showStatus(tr("Must set host"),"error");return}o.updateVisualState("connecting");let a;a=o.getSetting("encrypt")?"wss":"ws",a+="://"+t,r&&(a+=":"+r),a+="/"+i,o.monitors=[],o.sortedMonitors=[],o.showControlInput("noVNC_displays_button"),o.rfb=new We(document.getElementById("noVNC_container"),document.getElementById("noVNC_keyboardinput"),a,{shared:o.getSetting("shared"),repeaterID:o.getSetting("repeaterID"),credentials:{password:e},videoRenderingMode:o.getSetting("video_rendering_mode")},(s=o.codecDetector)==null?void 0:s.getSupportedCodecIds(),!0),o.rfb.addEventListener("connect",o.connectFinished),o.rfb.addEventListener("badencoding",l=>{at("Reconnecting due to encoding error or corrupted frame..."),o.forceSetting("fallback_image_mode",!0,!1),o.forceReconnect=!0,o.disconnect()}),o.rfb.addEventListener("disconnect",o.disconnectFinished),o.rfb.addEventListener("credentialsrequired",o.credentials),o.rfb.addEventListener("securityfailure",o.securityFailed),o.rfb.addEventListener("capabilities",o.updatePowerButton),o.rfb.addEventListener("clipboard",o.clipboardReceive),o.rfb.addEventListener("bottleneck_stats",o.bottleneckStatsRecieve),o.rfb.addEventListener("bell",o.bell),o.rfb.addEventListener("desktopname",o.updateDesktopName),o.rfb.addEventListener("inputlock",o.inputLockChanged),o.rfb.addEventListener("inputlockerror",o.inputLockError),o.rfb.addEventListener("screenregistered",o.screenRegistered),o.rfb.addEventListener("sharedSessionUserJoin",o.sharedSessionUserJoin),o.rfb.addEventListener("sharedSessionUserLeft",o.sharedSessionUserLeft),o.rfb.addEventListener("imagemode",o.switchToImageMode),o.rfb.addEventListener("videocodecschange",l=>{var c,u,f;je("Codec configurations received:",(c=l.detail)==null?void 0:c.configurations),o.initStreamModeSetting((u=l.detail)==null?void 0:u.codecs,(f=l.detail)==null?void 0:f.configurations)}),o.rfb.translateShortcuts=o.getSetting("translate_shortcuts"),o.rfb.clipViewport=o.getSetting("view_clip"),o.rfb.scaleViewport=o.getSetting("resize")==="scale",o.rfb.resizeSession=o.getSetting("resize")==="remote",o.setConnectionQualityValues(),o.rfb.compressionLevel=parseInt(o.getSetting("compression")),o.rfb.showDotCursor=o.getSetting("show_dot"),o.rfb.idleDisconnect=o.getSetting("idle_disconnect"),o.rfb.pointerRelative=o.getSetting("pointer_relative"),o.rfb.clipboardUp=o.getSetting("clipboard_up"),o.rfb.clipboardDown=o.getSetting("clipboard_down"),o.rfb.clipboardSeamless=o.getSetting("clipboard_seamless"),o.rfb.keyboard.enableIME=o.getSetting("enable_ime"),o.rfb.clipboardBinary=Lb()&&o.rfb.clipboardSeamless,o.rfb.enableWebRTC=o.getSetting("enable_webrtc"),o.rfb.mouseButtonMapper=o.initMouseButtonMapper(),o.rfb.videoQuality===5&&(o.rfb.enableQOI=!0),Lb()&&navigator.permissions.query({name:"clipboard-read"}).then(l=>{z("binary clipboard enabled")}).catch(()=>{}),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&(o.rfb.clipboardSeamless=!1),o.rfb.preferLocalCursor=o.getSetting("prefer_local_cursor"),o.updateViewOnly(),Wt()?(window.addEventListener?window.addEventListener("message",o.receiveMessage,!1):window.attachEvent&&(window.attachEvent("onload",WindowLoad),window.attachEvent("message",o.receiveMessage)),o.rfb.clipboardDown&&o.rfb.addEventListener("clipboard",o.clipboardRx),o.rfb.addEventListener("disconnect",o.disconnectedRx),hr("show_control_bar")||document.getElementById("noVNC_control_bar_anchor").setAttribute("style","display: none"),o._sessionTimeoutInterval=setInterval(function(){if(o.rfb){const l=(Date.now()-o.rfb.lastActiveAt)/1e3;let c=1200;Number.isFinite(parseFloat(o.rfb.idleDisconnect))&&(c=parseFloat(o.rfb.idleDisconnect)*60),l>c?(at("Idle Disconnect reached, disconnecting rfb session..."),parent.postMessage({action:"idle_session_timeout",value:"Idle session timeout exceeded"},"*"),setTimeout(function(){window.location.replace("disconnected.html")},1e4)):o.rfb.sendKeepAlive()}},5e3)):document.getElementById("noVNC_status").style.visibility="visible",document.addEventListener("keyup",function(l){if(l.ctrlKey&&l.shiftKey)switch(l.keyCode){case 49:o.toggleNav();break;case 50:o.toggleRelativePointer();break;case 51:o.togglePointerLock();break}},!0)},disconnect(){o.rfb.disconnect(),o.connected=!1,o.inhibitReconnect=!0,o.updateVisualState("disconnecting"),clearInterval(o._sessionTimeoutInterval),o.hideControlInput("noVNC_displays_button")},reconnect(){o.reconnectCallback=null,!o.inhibitReconnect&&o.connect(null,o.reconnectPassword)},cancelReconnect(){o.reconnectCallback!==null&&(clearTimeout(o.reconnectCallback),o.reconnectCallback=null),o.updateVisualState("disconnected"),o.openControlbar()},connectFinished(n){o.connected=!0,o.inhibitReconnect=!1;let e;o.getSetting("encrypt")?e=tr("Connected (encrypted) to ")+o.desktopName:e=tr("Connected (unencrypted) to ")+o.desktopName,o.showStatus(e),o.showStats(),o.updateVisualState("connected"),o.rfb.focus()},disconnectFinished(n){const e=o.connected;if(o.connected=!1,o.rfb=void 0,o.monitors=[],o.sortedMonitors=[],!n.detail.clean)o.updateVisualState("disconnected"),e?o.showStatus(tr("Something went wrong, connection is closed"),"error"):o.showStatus(tr("Failed to connect to server"),"error");else if(o.getSetting("reconnect",!1)===!0&&!o.inhibitReconnect){o.updateVisualState("reconnecting");const t=parseInt(o.getSetting("reconnect_delay"));o.reconnectCallback=setTimeout(o.reconnect,t);return}else o.updateVisualState("disconnected"),o.showStatus(tr("Disconnected"),"normal");document.title=Ex,o.openControlbar(),o.forceReconnect&&(o.forceReconnect=!1,o.connect(null,o.reconnectPassword))},securityFailed(n){let e="";"reason"in n.detail?e=tr("New connection has been rejected with reason: ")+n.detail.reason:e=tr("New connection has been rejected"),o.showStatus(e,"error")},switchToImageMode(n){at("Switching to image mode due to decoder error or incompatibility");const e=o.getSettingElement(ht.STREAM_MODE),t=Ce.pseudoEncodingStreamingModeJpegWebp;e.value=t,o.forceSetting(ht.STREAM_MODE,t,!1),o.applyStreamMode(t);const r=[...e.options].map(i=>({id:Number(i.value),label:i.text}));o.sendMessage("update_codecs",{current:t,codecs:r})},sendMessage(n,e){Wt()&&parent.postMessage({action:n,value:e},"*")},receiveMessage(n){var e,t,r;if(n.data&&n.data.action)switch(z("Received message from parent window: "+n.data.action),n.data.action){case"clipboardsnd":o.rfb&&o.rfb.clipboardUp&&o.rfb.clipboardPasteFrom(n.data.value);break;case"setvideoquality":let i;if(n.data.qualityLevel!==void 0)i=parseInt(n.data.qualityLevel);else if(n.data.value!==void 0)i=parseInt(n.data.value);else{Ke("Invalid message received from parent window: "+n.data.action);break}const a=parseInt(o.getSetting(ht.STREAM_MODE)),s=a===Ce.pseudoEncodingStreamingModeJpegWebp,l=s?"video_quality":ht.VIDEO_STREAM_QUALITY,c=s?i:o.rfb.videoCodecConfigurations[a].presets[i];o.forceSetting(l,c,!1),n.data.frameRate!==void 0?(vr("framerate",n.data.frameRate),o.updateQuality(n.data.frameRate)):o.updateQuality();break;case"enable_game_mode":o.rfb&&!o.rfb.pointerRelative&&o.toggleRelativePointer();break;case"disable_game_mode":o.rfb&&o.rfb.pointerRelative&&o.toggleRelativePointer();break;case"enable_pointer_lock":o.rfb&&!o.rfb.pointerLock&&o.togglePointerLock();break;case"disable_pointer_lock":o.rfb&&o.rfb.pointerLock&&o.togglePointerLock();break;case"show_keyboard_controls":o.getSetting("virtual_keyboard_visible")||(o.forceSetting("virtual_keyboard_visible",!0,!1),o.showKeyboardControls());break;case"hide_keyboard_controls":o.getSetting("virtual_keyboard_visible")&&(o.forceSetting("virtual_keyboard_visible",!0,!1),o.hideKeyboardControls());break;case"enable_ime_mode":o.getSetting("enable_ime")||(o.forceSetting("enable_ime",!0,!1),o.toggleIMEMode());break;case"disable_ime_mode":o.getSetting("enable_ime")&&(o.forceSetting("enable_ime",!1,!1),o.toggleIMEMode());break;case"open_displays_mode":o.rfb&&o.openDisplays();break;case"close_displays_mode":o.closeDisplays();break;case"enable_webrtc":o.getSetting("enable_webrtc")||(o.forceSetting("enable_webrtc",!0,!1),o.toggleWebRTC());break;case"disable_webrtc":o.getSetting("enable_webrtc")&&(o.forceSetting("enable_webrtc",!1,!1),o.toggleWebRTC());break;case"resize":o.forceSetting("resize",n.data.value,!1),o.applyResizeMode();break;case"set_resolution":o.rfb&&(o.rfb.forcedResolutionX=n.data.value_x,o.rfb.forcedResolutionY=n.data.value_y,o.forceSetting("forced_resolution_x",n.data.value_x,!1),o.forceSetting("forced_resolution_y",n.data.value_y,!1),o.applyResizeMode());break;case"set_perf_stats":o.forceSetting("enable_perf_stats",n.data.value,!1),o.showStats();break;case"set_idle_timeout":const u=Math.ceil(n.data.value/60);o.forceSetting("idle_disconnect",u,!1),o.rfb.idleDisconnect=u,console.log(`Updated the idle timeout to ${n.data.value}s`);break;case"enable_hidpi":o.forceSetting("enable_hidpi",n.data.value,!1),o.enableHiDpi();break;case"control_displays":parent.postMessage({action:"can_control_displays",value:!0},"*");break;case"enable_threading":o.forceSetting("enable_threading",n.data.value,!1),o.threading();break;case"terminate":o.rfb&&o.rfb.terminate();break;case"set_streaming_mode":let f=Ce.pseudoEncodingStreamingModeJpegWebp;if(n.data.value!=="image"&&(f=parseInt(n.data.value)),o.forceSetting(ht.STREAM_MODE,f,!1),f!==Ce.pseudoEncodingStreamingModeJpegWebp){const h=parseInt(o.getSetting("video_quality")),p=(r=(t=(e=o.rfb)==null?void 0:e.videoCodecConfigurations)==null?void 0:t[f])==null?void 0:r.presets;if(Array.isArray(p)&&p.length>0){const _=Number.isFinite(h)?Math.max(0,Math.min(p.length-1,h)):0,g=p[_];g!==void 0&&o.forceSetting(ht.VIDEO_STREAM_QUALITY,g,!1)}}o.applyStreamMode(f);break;case"set_gop":o.forceSetting(ht.GOP,parseInt(n.data.value),!1),o.updateQuality();break}},disconnectedRx(n){const e=n.detail||{};parent.postMessage({action:"disconnectrx",value:e.reason},"*"),e.serverNotice&&e.serverNotice.graceful&&setTimeout(()=>window.location.replace("disconnected.html"),3e3)},toggleNav(){Wt()?parent.postMessage({action:"togglenav",value:null},"*"):(o.toggleControlbar(),o.keepControlbar(),o.activateControlbar(),o.controlbarGrabbed=!1,o.showControlbarHint(!1))},clipboardRx(n){parent.postMessage({action:"clipboardrx",value:n.detail.text},"*")},toggleFullscreen(){if(Wt()){parent.postMessage({action:"fullscreen",value:"Fullscreen clicked"},"*");return}document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?(Ob&&navigator.keyboard.unlock(),document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()):(document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen?document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):document.body.msRequestFullscreen&&document.body.msRequestFullscreen(),Ob&&navigator.keyboard.lock()),o.updateFullscreenButton()},updateFullscreenButton(){document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?document.getElementById("noVNC_fullscreen_button").classList.add("noVNC_selected"):document.getElementById("noVNC_fullscreen_button").classList.remove("noVNC_selected"),o.updatePointerLockButton()},applyResizeMode(){if(!o.rfb)return;const n=o.getSetting("resize");o.rfb.clipViewport=n!=="off",o.rfb.scaleViewport=n==="scale",o.rfb.resizeSession=n==="remote",o.rfb.idleDisconnect=o.getSetting("idle_disconnect"),o.rfb.videoQuality=o.getSetting("video_quality"),o.rfb.enableWebP=o.getSetting("enable_webp"),o.rfb.enableHiDpi=o.getSetting("enable_hidpi"),o.rfb.threading=o.getSetting("enable_threading"),o.rfb.resizeSession?(o.rfb.forcedResolutionX=null,o.rfb.forcedResolutionY=null):(o.rfb.forcedResolutionX=o.getSetting("forced_resolution_x",!1),o.rfb.forcedResolutionY=o.getSetting("forced_resolution_y",!1)),o.rfb.updateConnectionSettings()},_identify(n){o.identify(),o.rfb.identify(o.monitors)},identify(n){Rc("1")},openDisplays(){if(document.getElementById("noVNC_displays").classList.add("noVNC_open"),o.monitors.length<1&&o.rfb){let n=o.rfb.getScreenPlan();o.initMonitors(n)}o.monitors.length>0&&o.displayMonitors()},closeDisplays(){document.getElementById("noVNC_displays").classList.remove("noVNC_open")},displaysRefresh(){const n=o.refreshRotation+180;let e=o.rfb.getScreenPlan();document.getElementById("noVNC_refreshMonitors_icon").style.transform="rotate("+n+"deg)",o.refreshRotation=n,o.updateMonitors(e),o.recenter(),o.draw()},normalizePlacementValues(n){},increaseCurrentDisplay(n){const e=n.screens.length,t=n.screens.findIndex(r=>r===n.currentScreen);return e===1?0:(o.currentDisplay===null&&(o.currentDisplay=t),o.currentDisplay+=1,o.currentDisplay===t&&(o.currentDisplay+=1),o.currentDisplay>=e&&(o.currentDisplay=0),o.currentDisplay)},async addSecondaryMonitor(){let n=window.location.pathname.replace(/[^/]*$/,"");const e=X1();let t=`${window.location.protocol}//${window.location.host}${n}screen.html?windowId=${e}`;if(document.getElementById("noVNC_auto_placement").checked&&"getScreenDetails"in window){let a=!1;try{const{state:s}=await navigator.permissions.query({name:"window-management"});if(a=s==="granted"||s==="prompt",a&&window.screen.isExtended){const l=await window.getScreenDetails(),c=o.increaseCurrentDisplay(l);let u=l.screens[c];const f="left="+u.availLeft+",top="+u.availTop+",width="+u.availWidth+",height="+u.availHeight+",fullscreen";let h=window.open(t,"_blank",f);o.displayWindows.set(e,h);return}}catch(s){console.log(s)}}z(`Opening a secondary display ${t}`);let i=window.open(t,"_blank","toolbar=0,location=0,menubar=0");i&&o.displayWindows.set(e,i)},initMonitors(n){const{scale:e}=o.multiMonitorSettings();let t=[],r=!1,i=1;n.screens.forEach(s=>{parseFloat(s.pixelRatio)!=1&&(r=!0),t.push({id:s.screenID,x:s.x/e,y:s.y/e,w:s.serverWidth/e,h:s.serverHeight/e,pixelRatio:s.pixelRatio,scale:1,fill:"#eeeeeecc",isDragging:!1,num:i}),i++}),r?document.getElementById("noVNC_setting_enable_hidpi_option").classList.add("show"):document.getElementById("noVNC_setting_enable_hidpi_option").classList.remove("show"),o.monitors=t;let a=JSON.parse(JSON.stringify(t));o.sortedMonitors=a.sort((s,l)=>s.y>=l.y+l.h/2?1:s.x-l.x)},updateMonitors(n){o.initMonitors(n),o.recenter(),o.draw()},multiMonitorSettings(){const n=document.getElementById("noVNC_multiMonitorWidget");return{canvas:n,ctx:n.getContext("2d"),bb:n.getBoundingClientRect(),scale:12,canvasWidth:n.width,canvasHeight:n.height}},getMonitorEventCoords(n){const{bb:e,canvas:t}=o.multiMonitorSettings(),r=n.clientX||n.touches&&n.touches[0].clientX,i=n.clientY||n.touches&&n.touches[0].clientY,a=t.width/e.width,s=t.height/e.height;return{mx:parseInt((r-e.left)*a),my:parseInt((i-e.top)*s)}},monitorMouseDown(n){const e=o.sortedMonitors;n.preventDefault(),n.stopPropagation();const{mx:t,my:r}=o.getMonitorEventCoords(n);for(var i=0;ic&&tu&&rr.y>=i.y+i.h/2?1:r.x-i.x),o.recenter(),o.draw()},monitorMouseMove(n){const e=o.sortedMonitors;if(o.monitorDragOk){n.preventDefault(),n.stopPropagation();const{mx:s,my:l}=o.getMonitorEventCoords(n);for(var t=s-o.monitorStartX,r=l-o.monitorStartY,i=0;i1)for(var t=1;ti&&(r.x=i),r.xa&&r.x<=i&&(r.y=a),e=n[t]}},rect(n,e,t,r,i){n.beginPath(),typeof n.roundRect<"u"?n.roundRect(e,t,r,i,5):n.rect(e,t,r,i),n.stroke(),n.closePath(),n.fill()},draw(){const{ctx:n,canvasWidth:e,canvasHeight:t,scale:r}=o.multiMonitorSettings(),i=o.sortedMonitors;n.clearRect(0,0,e,t),n.rect(0,0,e,t);for(var a=0;aa&&(a=c.x+c.w),c.y+c.h>s&&(s=c.y+c.h)}const u=(e-a-i)/2,f=(t-s-r)/2;return{top:r,left:i,width:a,height:s,startLeft:u,startTop:f}},setScreenPlan(){let n=o.monitors,e=o.sortedMonitors;const{scale:t}=o.multiMonitorSettings(),{top:r,left:i,width:a,height:s}=o.getSizes(e),l=[];for(var c=0;cp.id===u.id);l.push({screenID:f.id,serverHeight:Math.round(f.h*t),serverWidth:Math.round(f.w*t),x:Math.round((f.x-i)*t),y:Math.round((f.y-r)*t)})}const h={serverHeight:Math.round(s*t),serverWidth:Math.round(a*t),screens:l};o.rfb&&o.rfb.applyScreenPlan(h)},displayMonitors(){const{canvas:n}=o.multiMonitorSettings();n.removeEventListener("mousedown",o.monitorMouseDown,!1),n.removeEventListener("mouseup",o.monitorMouseUp,!1),n.removeEventListener("mousemove",o.monitorMouseMove,!1),n.removeEventListener("touchstart",o.monitorMouseDown,!1),n.removeEventListener("touchend",o.monitorMouseUp,!1),n.removeEventListener("touchmove",o.monitorMouseMove,!1),n.addEventListener("mousedown",o.monitorMouseDown,!1),n.addEventListener("mouseup",o.monitorMouseUp,!1),n.addEventListener("mousemove",o.monitorMouseMove,!1),n.addEventListener("touchstart",o.monitorMouseDown,!1),n.addEventListener("touchend",o.monitorMouseUp,!1),n.addEventListener("touchmove",o.monitorMouseMove,!1),o.recenter(),o.draw()},updateViewClip(){if(!o.rfb)return;o.getSetting("resize")==="scale"?(o.forceSetting("view_clip",!1),o.rfb.clipViewport=!1):GI?(o.enableSetting("view_clip"),o.rfb.clipViewport=o.getSetting("view_clip")):(o.forceSetting("view_clip",!0),o.rfb.clipViewport=!0),o.updateViewDrag()},updatePointerLockButton(){o.connected&&(document.pointerLockElement!==void 0||document.mozPointerLockElement!==void 0)?(o.showControlInput("noVNC_setting_pointer_lock"),o.showControlInput("noVNC_game_mode_button")):(o.hideControlInput("noVNC_setting_pointer_lock"),o.hideControlInput("noVNC_game_mode_button"))},togglePointerLock(){Db()?(o.rfb.pointerLock=!o.rfb.pointerLock,o.getSetting("pointer_lock")!==o.rfb.pointerLock&&o.forceSetting("pointer_lock",o.rfb.pointerLock,!1)):(o.showStatus("Your browser does not support pointer lock.","info",1500,!0),o.forceSetting("pointer_lock",!1,!0))},toggleRelativePointer(n=null,e=null){if(!Db()){o.showStatus("Your browser does not support pointer lock.","info",1500,!0);return}var t=!o.rfb.pointerRelative;o.rfb.pointerLock!==t&&(o.rfb.pointerLock=t),o.rfb.pointerRelative!==t&&(o.rfb.pointerRelative=t),t?document.getElementById("noVNC_game_mode_button").classList.add("noVNC_selected"):(document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.forceSetting("pointer_lock",!1,!1)),o.sendMessage("enable_game_mode",t),o.sendMessage("enable_pointer_lock",t)},toggleViewDrag(){o.rfb&&(o.rfb.dragViewport=!o.rfb.dragViewport,o.updateViewDrag())},updateViewDrag(){if(!o.connected)return;const n=document.getElementById("noVNC_view_drag_button");!o.rfb.clipViewport&&o.rfb.dragViewport&&(o.rfb.dragViewport=!1),o.rfb.dragViewport?n.classList.add("noVNC_selected"):n.classList.remove("noVNC_selected"),o.rfb.clipViewport?o.showControlInput("noVNC_view_drag_button"):o.hideControlInput("noVNC_view_drag_button")},updateQuality(n){let e=parseInt(o.getSetting("video_quality")),t=!1;const r=parseInt(o.getSetting(ht.STREAM_MODE))===Ce.pseudoEncodingStreamingModeJpegWebp,i=a=>{o.forceSetting("framerate_image_mode",a),o.forceSetting("framerate_streaming_mode",a,!1),vr("framerate",a)};switch(e){case 10:o.enableSetting("dynamic_quality_min"),o.enableSetting("dynamic_quality_max"),o.enableSetting("treat_lossless"),o.enableSetting("video_time"),o.enableSetting("video_area"),o.enableSetting("max_video_resolution_x"),o.enableSetting("max_video_resolution_y"),o.enableSetting("jpeg_video_quality"),o.enableSetting("webp_video_quality"),o.enableSetting("framerate_image_mode"),o.enableSetting("video_scaling"),o.enableSetting("video_out_time");break;case 5:t=!0,n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("dynamic_quality_min",9),o.forceSetting("dynamic_quality_max",9),i(n),o.forceSetting("treat_lossless",9),o.forceSetting("video_time",100),o.forceSetting("video_area",100),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),o.forceSetting("jpeg_video_quality",9),o.forceSetting("webp_video_quality",9),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 4:n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("dynamic_quality_min",8),o.forceSetting("dynamic_quality_max",9),i(n),o.forceSetting("treat_lossless",9),o.forceSetting("video_time",100),o.forceSetting("video_area",100),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),o.forceSetting("jpeg_video_quality",9),o.forceSetting("webp_video_quality",9),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 3:n=n&&Number.isFinite(n)?n:sr.MAX,o.forceSetting("jpeg_video_quality",8),o.forceSetting("webp_video_quality",8),o.forceSetting("dynamic_quality_min",7),o.forceSetting("dynamic_quality_max",9),o.forceSetting("max_video_resolution_x",1920),o.forceSetting("max_video_resolution_y",1080),i(n),o.forceSetting("treat_lossless",8),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 1:n=n&&Number.isFinite(n)?n:sr.MIN,o.forceSetting("jpeg_video_quality",5),o.forceSetting("webp_video_quality",4),o.forceSetting("dynamic_quality_min",3),o.forceSetting("dynamic_quality_max",7),o.forceSetting("max_video_resolution_x",960),o.forceSetting("max_video_resolution_y",540),i(n),o.forceSetting("treat_lossless",7),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3);break;case 2:case 0:default:r&&(n=n&&Number.isFinite(n)?n:sr.MIN,o.forceSetting("jpeg_video_quality",7),o.forceSetting("webp_video_quality",7),o.forceSetting("dynamic_quality_min",4),o.forceSetting("dynamic_quality_max",9),o.forceSetting("max_video_resolution_x",960),o.forceSetting("max_video_resolution_y",540),i(n||sr.MIN),o.forceSetting("treat_lossless",7),o.forceSetting("video_time",5),o.forceSetting("video_area",65),o.forceSetting("video_scaling",0),o.forceSetting("video_out_time",3));break}o.rfb&&(o.setConnectionQualityValues(),o.rfb.enableQOI=t,o.rfb.updateConnectionSettings())},updateCompression(){o.rfb&&(o.rfb.compressionLevel=parseInt(o.getSetting("compression")))},updateVideoRenderingMode(){const n=o.getSetting("video_rendering_mode");je("Video rendering mode changed to: ",n),o.saveSetting("video_rendering_mode"),o.connected&&(o.forceReconnect=!0,o.disconnect())},updateShortcutTranslation(){o.rfb.translateShortcuts=o.getSetting("translate_shortcuts")},toggleKeyboardControls(){o.getSetting("virtual_keyboard_visible")?o.showKeyboardControls():o.hideKeyboardControls()},toggleIMEMode(){o.rfb&&(o.getSetting("enable_ime")?o.rfb.keyboard.enableIME=!0:o.rfb.keyboard.enableIME=!1)},toggleWebRTC(){if(o.rfb){if(typeof RTCPeerConnection>"u"){o.showStatus("This browser does not support WebRTC UDP Data Channels.","warn",5e3,!0);return}o.getSetting("enable_webrtc")?o.rfb.enableWebRTC=!0:o.rfb.enableWebRTC=!1,o.updateQuality()}},enableHiDpi(){o.rfb&&(o.getSetting("enable_hidpi")?o.rfb.enableHiDpi=!0:o.rfb.enableHiDpi=!1,o.applyResizeMode())},showKeyboardControls(){document.getElementById("noVNC_keyboard_control").classList.add("is-visible")},hideKeyboardControls(){document.getElementById("noVNC_keyboard_control").classList.remove("is-visible")},showVirtualKeyboard(){const n=document.getElementById("noVNC_keyboardinput");if(!(document.activeElement==n||!o.rfb)){o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.add("noVNC_selected"),n.focus();try{const e=n.value.length;n.setSelectionRange(e,e)}catch{}document.querySelector("canvas").addEventListener("touchstart",()=>{document.activeElement===n&&n.blur()},{once:!0})}},hideVirtualKeyboard(){const n=document.getElementById("noVNC_keyboardinput");document.activeElement!=n||!o.rfb||(o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.remove("noVNC_selected"),n.blur())},toggleVirtualKeyboard(){document.getElementById("noVNC_keyboard_button").classList.contains("noVNC_selected")?o.hideVirtualKeyboard():o.showVirtualKeyboard()},onfocusVirtualKeyboard(n){document.getElementById("noVNC_keyboard_button").classList.add("noVNC_selected"),o.rfb&&(o.rfb.focusOnClick=!1)},onblurVirtualKeyboard(n){document.getElementById("noVNC_keyboard_button").classList.remove("noVNC_selected"),o.getSetting("virtual_keyboard_visible")&&document.getElementById("noVNC_keyboard_control_handle").classList.remove("noVNC_selected"),o.rfb&&(o.rfb.focusOnClick=!0)},keepVirtualKeyboard(n){const e=document.getElementById("noVNC_keyboardinput");if(document.activeElement==e){if(n.target.form!==void 0)switch(n.target.type){case"text":case"email":case"search":case"password":case"tel":case"url":case"textarea":case"select-one":case"select-multiple":return}n.preventDefault()}},openExtraKeys(){o.closeAllPanels(),o.openControlbar(),document.getElementById("noVNC_modifiers").classList.add("noVNC_open"),document.getElementById("noVNC_toggle_extra_keys_button").classList.add("noVNC_selected")},disableSoftwareKeyboard(){document.querySelector("#noVNC_keyboard_button").disabled=!0},enableSoftwareKeyboard(){document.querySelector("#noVNC_keyboard_button").disabled=!1},closeExtraKeys(){document.getElementById("noVNC_modifiers").classList.remove("noVNC_open"),document.getElementById("noVNC_toggle_extra_keys_button").classList.remove("noVNC_selected")},toggleExtraKeys(n){if(!o.isControlPanelItemClick(n))return!1;document.getElementById("noVNC_modifiers").classList.contains("noVNC_open")?o.closeExtraKeys():o.openExtraKeys()},sendEsc(){o.sendKey(O.XK_Escape,"Escape")},sendTab(){o.sendKey(O.XK_Tab,"Tab")},toggleCtrl(){const n=document.getElementById("noVNC_toggle_ctrl_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Control_L,"ControlLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Control_L,"ControlLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.ctrl").classList.toggle("selected")},toggleWindows(){const n=document.getElementById("noVNC_toggle_windows_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Super_L,"MetaLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Super_L,"MetaLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.windows").classList.toggle("selected")},toggleAlt(){const n=document.getElementById("noVNC_toggle_alt_button");n.classList.contains("noVNC_selected")?(o.sendKey(O.XK_Alt_L,"AltLeft",!1),n.classList.remove("noVNC_selected")):(o.sendKey(O.XK_Alt_L,"AltLeft",!0),n.classList.add("noVNC_selected")),document.querySelector(".keyboard-controls .button.alt").classList.toggle("selected")},sendCtrlAltDel(){o.rfb.sendCtrlAltDel(),o.rfb.focus(),o.idleControlbar()},sendKey(n,e,t){o.rfb.sendKey(n,e,t),document.getElementById("noVNC_keyboard_button").classList.contains("noVNC_selected")?document.getElementById("noVNC_keyboardinput").focus():o.rfb.focus(),o.idleControlbar()},updateViewOnly(){o.rfb&&(o.rfb.viewOnly=o.getSetting("view_only"),o.rfb.viewOnly?(o.hideControlInput("noVNC_keyboard_button"),o.hideControlInput("noVNC_toggle_extra_keys_button"),o.hideControlInput("noVNC_clipboard_button"),o.hideControlInput("noVNC_game_mode_button")):(o.showControlInput("noVNC_keyboard_button"),o.showControlInput("noVNC_toggle_extra_keys_button"),o.showControlInput("noVNC_clipboard_button"),o.showControlInput("noVNC_game_mode_button")))},updateShowDotCursor(){o.rfb&&(o.rfb.showDotCursor=o.getSetting("show_dot"))},updateLogging(){SA(o.getSetting("logging"))},updateDesktopName(n){o.desktopName=n.detail.name,document.title=n.detail.name+" - "+Ex},inputLockChanged(n){var e=document.getElementById("noVNC_setting_pointer_lock");document.getElementById("noVNC_game_mode_button"),n.detail.pointer?(e.checked=!0,o.sendMessage("enable_pointer_lock",!0),o.closeControlbar(),o.showStatus("Press Esc Key to Exit Pointer Lock Mode","warn",5e3,!0)):o.rfb.pointerRelative?o.showStatus("Game Mode paused, click on screen to resume Game Mode.","warn",5e3,!0):(o.forceSetting("pointer_lock",!1,!1),document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.sendMessage("enable_pointer_lock",!1))},inputLockError(n){o.showStatus("Unable to enter pointer lock mode.","warn",5e3,!0),o.rfb.pointerRelative=!1,document.getElementById("noVNC_game_mode_button").classList.remove("noVNC_selected"),o.forceSetting("pointer_lock",!1,!1),o.sendMessage("enable_game_mode",!1),o.sendMessage("enable_pointer_lock",!1)},bell(n){if(hr("bell","on")==="on"){const e=document.getElementById("noVNC_bell").play();e&&e.catch(t=>{t.name==="NotAllowedError"||Ke("Unable to play bell: "+t)})}},screenRegistered(n){if(console.log("screen registered"),o.rfb){let e=o.rfb.getScreenPlan();if(n&&n.detail){const{left:t,top:r,screenID:i}=n.detail,a=e.screens.findIndex(s=>s.screenID===i);a>-1&&(e.screens[a].x=t,e.screens[a].y=r)}o.updateMonitors(e),o._identify(o.monitors)}},sharedSessionUserJoin(n){je("shared session user joined: "+n.detail),o.sendMessage("sharedSessionUserJoin",n.detail)},sharedSessionUserLeft(n){je("shared session user left: "+n.detail),o.sendMessage("sharedSessionUserLeft",n.detail)},addOption(n,e,t){const r=document.createElement("OPTION");r.text=e,r.value=t,n.options.add(r)}},aT=["af","af_ZA","am_ET","am","ar_AE","ar_BH","ar_DZ","ar_EG","ar_IN","ar_IQ","ar_JO","ar_KW","ar_LB","ar_LY","ar_MA","ar_OM","ar","ar_QA","ar_SA","ar_SD","ar_SY","ar_TN","ar_YE","az_AZ","az","be_BY","be","bg_BG","bg","bn_BD","bn_IN","bn","bs_BA","bs","ca_AD","ca_ES","ca_FR","ca_IT","ca","cs_CZ","cs","cy_GB","cy","da_DK","da","de_AT","de_BE","de_CH","de_DE","de_LU","de","el","es_AR","es_BO","es_CL","es_CO","es_CR","es_CU","es_DO","es_EC","es_ES","es_GT","es_HN","es_MX","es_NI","es_PA","es_PE","es","es_PR","es_PY","es_SV","es_US","es_UY","es_VE","et_EE","et","eu_ES","eu","fa_IR","fa","fi_FI","fi","fr_BE","fr_CA","fr_CH","fr_FR","fr_LU","fr","fy_DE","fy_NL","fy","ga_IE","ga","gd_GB","gd","gl_ES","gl","gu_IN","gu","ha_NG","ha","he_IL","he","hi_IN","hi","hr_HR","hr","ht_HT","ht","hu_HU","hu","hy_AM","hy","id_ID","id","ig_NG","ig","is_IS","is","it_CH","it_IT","it","ja_JP","ja","ka_GE","ka","kk_KZ","kk","km_KH","km","kn_IN","kn","ko_KR","ko","ku","ku_TR","ky_KG","ky","lb_LU","lb","lo_LA","lo","lt_LT","lt","lv_LV","lv","mg_MG","mg","mi_NZ","mi","mk_MK","mk","ml_IN","ml","mn_MN","mn","mr_IN","mr","ms_MY","ms","mt_MT","mt","my_MM","my","ne_NP","ne","nl_AW","nl_BE","nl_NL","nl","pa_IN","pa_PK","pa","pl_PL","pl","ps_AF","ps","pt_BR","pt","pt_PT","ro","ro_RO","ru","ru_RU","ru_UA","sd_IN","sd","si_LK","si","sk","sk_SK","sl","sl_SI","so_DJ","so_ET","so_KE","so","so_SO","sq_AL","sq_MK","sq","st","st_ZA","sv_FI","sv","sv_SE","sw_KE","sw","ta_IN","ta_LK","ta","te_IN","te","tg","tg_TJ","th","th_TH","tl_PH","tl","tr_CY","tr","tr_TR","tt","tt_RU","uk","uk_UA","ur_IN","ur_PK","ur","uz","uz_UZ","vi","vi_VN","xh","xh_ZA","yi","yi_US","yo_NG","yo","zh_CN","zh_TW","zu","zu_ZA"];Tr.setup(aT);Tr.language==="en"||Tr.dictionary!==void 0?o.prime():fetch("app/locale/"+Tr.language+".json").then(n=>{if(!n.ok)throw Error(""+n.status+" "+n.statusText);return n.json()}).then(n=>{Tr.dictionary=n}).catch(n=>Ke("Failed to load translations: "+n)).then(o.prime);export{z as D,Ke as E,XA as M,We as R,xn as X,Wt as a,Rc as b,Ll as c,ei as d,Lb as e,hr as g,SA as i,mn as r,Yb as s,vr as w}; diff --git a/src/ubuntu/install/trae_cn/vnc_startup.sh b/src/ubuntu/install/trae_cn/vnc_startup.sh new file mode 100644 index 00000000..df0f02cb --- /dev/null +++ b/src/ubuntu/install/trae_cn/vnc_startup.sh @@ -0,0 +1,645 @@ +#!/bin/bash +### every exit != 0 fails the script +set -e + +APP_NAME=$(basename "$0") + +log () { + if [ ! -z "${1}" ]; then + LOG_LEVEL="${2:-DEBUG}" + INGEST_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + echo "${INGEST_DATE} ${LOG_LEVEL} (${APP_NAME}): $1" + if [ ! -z "${KASM_API_JWT}" ] && [ ! -z "${KASM_API_HOST}" ] && [ ! -z "${KASM_API_PORT}" ]; then + set +e + http_proxy="" https_proxy="" curl https://${KASM_API_HOST}:${KASM_API_PORT}/api/kasm_session_log?token=${KASM_API_JWT} --max-time 1 -X POST -H 'Content-Type: application/json' -d '[{ "host": "'"${KASM_ID}"'", "application": "Session", "ingest_date": "'"${INGEST_DATE}"'", "message": "'"$1"'", "levelname": "'"${LOG_LEVEL}"'", "process": "'"${APP_NAME}"'", "kasm_user_name": "'"kasm_user"'", "kasm_id": "'"${KASM_ID}"'" }]' -k -s + set -e + fi + fi +} + +no_proxy="localhost,127.0.0.1" + +if [ -f /usr/bin/kasm-profile-sync ] && [ -f /usr/bin/kasm-profile-sync-2 ]; then + kasm_profile_sync_found=1 +fi + +# Set lang values +if [ -n "${LC_ALL}" ]; then + export LANG=${LC_ALL} + export LANGUAGE=${LC_ALL} +elif [ -n "${LANG}" ]; then + export LC_ALL=${LANG} + export LANGUAGE=${LANG} +fi + +# Set timezone from TZ environment variable +if [ -n "${TZ}" ]; then + ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime + echo "${TZ}" > /etc/timezone +fi + +# Dbus +export $(dbus-launch) + +# dict to store processes +declare -A KASM_PROCS + +# switch passwords to local variables +tmpval=$VNC_VIEW_ONLY_PW +unset VNC_VIEW_ONLY_PW +VNC_VIEW_ONLY_PW=$tmpval +tmpval=$VNC_PW +unset VNC_PW +VNC_PW=$tmpval + +BUILD_ARCH=$(uname -p) +if [ -z ${KASM_PROFILE_CHUNK_SIZE} ]; then + KASM_PROFILE_CHUNK_SIZE=100000 +fi +if [ -z ${DRINODE+x} ]; then + DRINODE="/dev/dri/renderD128" +fi +KASMNVC_HW3D='' +if [ ! -z ${HW3D+x} ]; then + KASMVNC_HW3D="-hw3d" +fi +STARTUP_COMPLETE=0 + +######## FUNCTION DECLARATIONS ########## + +## print out help +function help (){ + echo " + USAGE: + + OPTIONS: + -w, --wait (default) keeps the UI and the vncserver up until SIGINT or SIGTERM will received + -s, --skip skip the vnc startup and just execute the assigned command. + example: docker run kasmweb/core --skip bash + -d, --debug enables more detailed startup output + e.g. 'docker run kasmweb/core --debug bash' + -h, --help print out this help + " +} + +trap cleanup SIGINT SIGTERM SIGQUIT SIGHUP ERR + +function pull_profile (){ + if [ ! -z "$KASM_PROFILE_LDR" ]; then + if [ -z "$kasm_profile_sync_found" ]; then + echo >&2 "Profile sync not available" + sleep 3 + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + return + fi + + log "Downloading and unpacking user profile from object storage." + set +e + if [[ $DEBUG == true ]]; then + OUTPUT=$(http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --download /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT} --verbose 2>&1 ) + else + OUTPUT=$(http_proxy="" https_proxy="" /usr/bin/kasm-profile-sync --download /home/kasm-user --insecure --remote ${KASM_API_HOST} --port ${KASM_API_PORT} -c ${KASM_PROFILE_CHUNK_SIZE} --token ${KASM_API_JWT} 2>&1 ) + fi + + # log output of profile sync + while IFS= read -r line; do + log "$line" + done <<< "$OUTPUT" + + # exit and log a non-zero exit code + PROCESS_SYNC_EXIT_CODE=$? + set -e + if (( PROCESS_SYNC_EXIT_CODE > 1 )); then + log "Profile-sync failed with a non-recoverable error. See server side logs for more details." "ERROR" + exit 1 + fi + log "Profile load complete." + # Update the status of the container to running + sleep 3 + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + + # Reset the timer to prevent session recording monitor from exiting + SECONDS=0 + fi +} + +function profile_size_check(){ + if [ ! -z "$KASM_PROFILE_SIZE_LIMIT" ] + then + SIZE_CHECK_FAILED=false + while true + do + sleep 60 + CURRENT_SIZE=$(du -s $HOME | grep -Po '^\d+') + SIZE_LIMIT_MB=$(echo "$KASM_PROFILE_SIZE_LIMIT / 1000" | bc) + if [[ $CURRENT_SIZE -gt KASM_PROFILE_SIZE_LIMIT ]] + then + notify-send "Profile Size Exceeds Limit" "Your home profile has exceeded the size limit of ${SIZE_LIMIT_MB}MB. Changes on your desktop will not be saved between sessions until you reduce the size of your profile." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-x.svg -t 57000 + SIZE_CHECK_FAILED=true + else + if [ "$SIZE_CHECK_FAILED" = true ] ; then + SIZE_CHECK_FAILED=false + notify-send "Profile Size" "Your home profile size is now under the limit and will be saved when your session is terminated." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-logo.svg -t 57000 + fi + fi + + if [ -f /tmp/.kasm_container_shutdown_failure ]; then + notify-send "Profile Size" "Your profile failed to save. Contact your administrator for assistance." -i /usr/share/icons/ubuntu-mono-dark/apps/22/dropboxstatus-logo.svg -t 57000 + fi + done + fi +} + +## correct forwarding of shutdown signal +function cleanup () { + kill -s SIGTERM $! + exit 0 +} + +function start_kasmvnc (){ + log "Starting KasmVNC" + + DISPLAY_NUM=$(echo $DISPLAY | grep -Po ':\d+') + + if [[ $STARTUP_COMPLETE == 0 ]]; then + vncserver -kill $DISPLAY &> $STARTUPDIR/vnc_startup.log \ + || rm -rfv /tmp/.X*-lock /tmp/.X11-unix &> $STARTUPDIR/vnc_startup.log \ + || echo "no locks present" + fi + + rm -rf $HOME/.vnc/*.pid + echo "exit 0" > $HOME/.vnc/xstartup + chmod +x $HOME/.vnc/xstartup + + VNCOPTIONS="$VNCOPTIONS -select-de manual" + + if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then + VNCOPTIONS="$VNCOPTIONS -UnixRelay printer:/tmp/printer" + fi + + if [[ ${BUILD_ARCH} =~ ^aarch64$ && -f /lib/aarch64-linux-gnu/libgcc_s.so.1 ]] ; then + LD_PRELOAD=/lib/aarch64-linux-gnu/libgcc_s.so.1 vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + else + vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + fi + + KASM_PROCS['kasmvnc']=$(cat $HOME/.vnc/*${DISPLAY_NUM}.pid) + + #Disable X11 Screensaver + if [ "${DISTRO}" != "alpine" ]; then + echo "Disabling X Screensaver Functionality" + xset -dpms || true + xset s off || true + xset q || true + else + echo "Disabling of X Screensaver Functionality for $DISTRO is not required." + fi + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Websockify ----------------------------" + echo "Websockify PID: ${KASM_PROCS['kasmvnc']}"; + fi +} + +function start_window_manager (){ + echo -e "\n------------------ Xfce4 window manager startup------------------" + if [ "${START_XFCE4}" == "1" ] || [ "${START_DE}" == "xfce4-session" ]; then + if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + echo "Starting XFCE with VirtualGL using EGL device ${KASM_EGL_CARD}" + DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startxfce4 --replace & + else + echo "Starting XFCE" + DISPLAY=:1 /usr/bin/startxfce4 --replace & + fi + KASM_PROCS['window_manager']=$! + else + echo "Skipping XFCE Startup" + fi + echo -e "\n------------------ Openbox window manager startup------------------" + if [ "${START_DE}" == "openbox" ] ; then + /usr/bin/openbox-session & + KASM_PROCS['window_manager']=$! + else + echo "Skipping OpenBox Startup" + fi + echo -e "\n------------------ KDE window manager startup------------------" + if [ "${START_DE}" == "kde5" ] ; then + if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + echo "Starting KDE with VirtualGL using EGL device ${KASM_EGL_CARD}" + DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startplasma-x11 & + else + echo "Starting KDE" + DISPLAY=:1 /usr/bin/startplasma-x11 & + fi + KASM_PROCS['window_manager']=$! + else + echo "Skipping KDE Startup" + fi +} + +function start_audio_out_websocket (){ + if [[ ${KASM_SVC_AUDIO:-1} == 1 ]]; then + log 'Starting audio websocket server' + $STARTUPDIR/jsmpeg/kasm_audio_out-linux kasmaudio 8081 4901 ${HOME}/.vnc/self.pem ${HOME}/.vnc/self.pem "${KASM_USER}:$VNC_PW" & + + KASM_PROCS['kasm_audio_out_websocket']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Audio Out Websocket ----------------------------" + echo "Kasm Audio Out Websocket PID: ${KASM_PROCS['kasm_audio_out_websocket']}"; + fi + fi +} + +function start_audio_out (){ + if [[ ${KASM_SVC_AUDIO:-1} == 1 ]]; then + log 'Starting audio server' + + if [ "${START_PULSEAUDIO:-0}" == "1" ] ; + then + echo "Starting Pulse" + HOME=/var/run/pulse pulseaudio --start + fi + + if [[ $DEBUG == true ]]; then + echo 'Starting audio service in debug mode' + HOME=/var/run/pulse no_proxy=127.0.0.1 ffmpeg -v verbose -f pulse -fragment_size ${PULSEAUDIO_FRAGMENT_SIZE:-2000} -ar 44100 -i default -f mpegts -correct_ts_overflow 0 -codec:a mp2 -b:a 128k -ac 1 -muxdelay 0.001 http://127.0.0.1:8081/kasmaudio & + KASM_PROCS['kasm_audio_out']=$! + else + echo 'Starting audio service' + HOME=/var/run/pulse no_proxy=127.0.0.1 ffmpeg -f pulse -fragment_size ${PULSEAUDIO_FRAGMENT_SIZE:-2000} -ar 44100 -i default -f mpegts -correct_ts_overflow 0 -codec:a mp2 -b:a 128k -ac 1 -muxdelay 0.001 http://127.0.0.1:8081/kasmaudio > /dev/null 2>&1 & + KASM_PROCS['kasm_audio_out']=$! + echo -e "\n------------------ Started Audio Out ----------------------------" + echo "Kasm Audio Out PID: ${KASM_PROCS['kasm_audio_out']}"; + fi + fi +} + +function start_audio_in (){ + if [[ ${KASM_SVC_AUDIO_INPUT:-1} == 1 ]]; then + log 'Starting audio input server' + $STARTUPDIR/audio_input/kasm_audio_input_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + + KASM_PROCS['kasm_audio_in']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Audio Out Websocket ----------------------------" + echo "Kasm Audio In PID: ${KASM_PROCS['kasm_audio_in']}"; + fi + fi +} + +function start_upload (){ + if [[ ${KASM_SVC_UPLOADS:-1} == 1 ]]; then + log 'Starting upload server' + $STARTUPDIR/upload_server/kasm_upload_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --port 4902 --upload_dir ${HOME}/Uploads & + + KASM_PROCS['upload_server']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Upload Server ----------------------------" + echo "Upload Server PID: ${KASM_PROCS['upload_server']}"; + fi + fi +} + +function start_gamepad (){ + if [[ ${KASM_SVC_GAMEPAD:-1} == 1 ]]; then + log 'Starting gamepad server' + $STARTUPDIR/gamepad/kasm_gamepad_server --ssl --auth-token "${KASM_USER}:$VNC_PW" --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + + KASM_PROCS['kasm_gamepad']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Gamepad Websocket ----------------------------" + echo "Kasm Gamepad PID: ${KASM_PROCS['kasm_gamepad']}"; + fi + fi +} + +function start_webcam (){ + if [[ ${KASM_SVC_WEBCAM:-1} == 1 ]] && [[ -e /dev/video0 ]]; then + log 'Starting webcam server' + if [[ $DEBUG == true ]]; then + $STARTUPDIR/webcam/kasm_webcam_server --debug --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + else + $STARTUPDIR/webcam/kasm_webcam_server --port 4905 --ssl --cert ${HOME}/.vnc/self.pem --certkey ${HOME}/.vnc/self.pem & + fi + + KASM_PROCS['kasm_webcam']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Webcam Websocket ----------------------------" + echo "Kasm Webcam PID: ${KASM_PROCS['kasm_webcam']}"; + fi + fi +} + +function start_printer (){ + if [[ ${KASM_SVC_PRINTER:-1} == 1 ]]; then + log 'Starting printer service' + if [[ $DEBUG == true ]]; then + $STARTUPDIR/printer/kasm_printer_service --debug --directory $HOME/PDF --relay /tmp/printer & + else + $STARTUPDIR/printer/kasm_printer_service --directory $HOME/PDF --relay /tmp/printer & + fi + + KASM_PROCS['kasm_printer']=$! + + if [[ $DEBUG == true ]]; then + echo -e "\n------------------ Started Printer Service ----------------------------" + echo "Kasm Printer PID: ${KASM_PROCS['kasm_printer']}"; + fi + fi +} + +function wait_on_printer (){ + # Wait for cups and the printer device to be created + if [[ ${KASM_SVC_PRINTER:-1} == 1 && ${KASM_PRINTER_WAIT:-0} == 1 ]]; then + log 'Waiting on printer service to be ready' + /usr/bin/printer_ready + log 'Printer is ready' + fi +} + + +function custom_startup (){ + custom_startup_script=/dockerstartup/custom_startup.sh + if [ -f "$custom_startup_script" ]; then + if [ ! -x "$custom_startup_script" ]; then + echo "${custom_startup_script}: not executable, exiting" + exit 1 + fi + + "$custom_startup_script" & + KASM_PROCS['custom_startup']=$! + log "Executed custom startup script." + fi +} + +function ensure_recorder_running () { + if [[ ${KASM_SVC_RECORDER:-0} != 1 ]]; then + return + fi + + local kasm_recorder_process="/dockerstartup/recorder/kasm_recorder_service" + local kasm_recorder_ack="/tmp/kasm_recorder.ack" + + if [[ -f "$kasm_recorder_ack" ]]; then + local ack_user=$(stat -c '%U' $kasm_recorder_ack) + if [[ "$ack_user" == "kasm-recorder" ]]; then + SECONDS=0 #SECONDS is a built in bash variable that is incremented approximately every second + kasm_recorder_pid="" + fi + fi + + local recorder_pid=$(pgrep -f "^$kasm_recorder_process") || true + + if [[ -z $kasm_recorder_pid ]]; then + # This leverages the outside while loop that calls this function to provider checking ever x seconds. + if [[ -z $recorder_pid ]] && (( $SECONDS > 15 )); then + log "$kasm_recorder_process: not started, exiting" "ERROR" + exit 0 + fi + + kasm_recorder_pid=$recorder_pid + else + if [[ -z $recorder_pid ]]; then + log "$kasm_recorder_process: not running, exiting" "ERROR" + exit 0 + fi + + recorder_user=$(ps -p $recorder_pid -o user=) + if [[ $recorder_user != "kasm-recorder" ]]; then + log "$kasm_recorder_process: not running as kasm-recorder, exiting" "ERROR" + exit 0 + fi + fi +} + +function ensure_recorder_terminates_gracefully () { + local kasm_recorder_process="/dockerstartup/recorder/kasm_recorder_service" + + while true + do + recorder_pid=$(pgrep -f "$kasm_recorder_process") || true + if [[ -z $recorder_pid ]]; then + break + fi + + sleep 1 + done +} + +function wait_for_egress_signal() { + egress_file="/dockerstartup/.egress_status" + + while [ ! -f "$egress_file" ]; do + sleep 1 + done + + egress_status=$(cat $egress_file) + + if [ "$egress_status" == "ready" ]; then + return + fi + + if [ "$egress_status" == "error" ]; then + echo "Failed to establish egress gateway. Exiting..." + exit 0 + fi +} + +function wait_for_network_devices() { + while true; do + interfaces=$(ip -o link show | awk '!/lo:/ && !/tun/' | awk -F: '/^[0-9]+: / {print $2}' | awk '{print $1}' | sed 's/@.*//') + if [ -z "$interfaces" ]; then + sleep 1 + continue + fi + + for interface in $interfaces; do + # ignore eth* interfaces if egress gateway is enabled + if [[ $interface == eth* && -z $KASM_SVC_EGRESS ]]; then + return + fi + + if [[ $interface == k-p-* ]]; then + wait_for_egress_signal + + if [ -z "$KASM_PROFILE_LDR" ]; then + http_proxy="" https_proxy="" curl -k "https://${KASM_API_HOST}:${KASM_API_PORT}/api/set_kasm_session_status?token=${KASM_API_JWT}" -H 'Content-Type: application/json' -d '{"status": "running"}' + fi + + return + fi + done + + sleep 1 + done +} + +############ END FUNCTION DECLARATIONS ########### + +if [[ $1 =~ -h|--help ]]; then + help + exit 0 +fi + +if [[ ${KASM_DEBUG:-0} == 1 ]]; then + echo -e "\n\n------------------ DEBUG KASM STARTUP -----------------" + export DEBUG=true + set -x +fi + +# wait for any network interface other than loopback to be up +# this is necessary because containers with egress gateways +# have a custom network interface setup that might not be ready +wait_for_network_devices + +# Syncronize user-space loaded persistent profiles +pull_profile + +# should also source $STARTUPDIR/generate_container_user +if [ -f $HOME/.bashrc ]; then + source $HOME/.bashrc +fi + +## resolve_vnc_connection +VNC_IP=$(hostname -i) +if [[ $DEBUG == true ]]; then + echo "IP Address used for external bind: $VNC_IP" +fi + +# Create cert for KasmVNC +mkdir -p ${HOME}/.vnc +openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ${HOME}/.vnc/self.pem -out ${HOME}/.vnc/self.pem -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" + +# first entry is control, second is view (if only one is valid for both) +mkdir -p "$HOME/.vnc" +PASSWD_PATH="$HOME/.kasmpasswd" +if [[ -f $PASSWD_PATH ]]; then + echo -e "\n--------- purging existing VNC password settings ---------" + rm -f $PASSWD_PATH +fi + +echo -e "${VNC_PW}\n${VNC_PW}\n" | kasmvncpasswd -u ${KASM_USER} -wo +echo -e "${VNC_PW}\n${VNC_PW}\n" | kasmvncpasswd -u kasm_viewer -r +chmod 600 $PASSWD_PATH + + +# start processes +wait_on_printer +start_kasmvnc +start_window_manager +start_audio_out_websocket +start_audio_out +start_audio_in +start_upload +# start_gamepad +profile_size_check & +# start_webcam +start_printer + +STARTUP_COMPLETE=1 + + +## log connect options +echo -e "\n\n------------------ KasmVNC environment started ------------------" + +# tail vncserver logs +tail -f $HOME/.vnc/*$DISPLAY.log & + +KASMIP=$(hostname -i) +log "Kasm User ${KASM_USER}(${KASM_USER_ID}) started container id ${HOSTNAME} with local IP address ${KASMIP}" "INFO" + +# start custom startup script +custom_startup + +# Monitor Kasm Services +sleep 3 +while : +do + for process in "${!KASM_PROCS[@]}"; do + if ! kill -0 "${KASM_PROCS[$process]}" ; then + + # If DLP Policy is set to fail secure, default is to be resilient + if [[ ${DLP_PROCESS_FAIL_SECURE:-0} == 1 ]]; then + log "DLP Policy violation, exiting container" "ERROR" + exit 1 + fi + + case $process in + kasmvnc) + if [ "$KASMVNC_AUTO_RECOVER" = true ] ; then + log "KasmVNC crashed, restarting" "WARNING" + start_kasmvnc + else + log "KasmVNC crashed, exiting container" "ERROR" + exit 1 + fi + ;; + window_manager) + log "Window manager crashed, restarting" "WARNING" + + if [[ ${KASM_SVC_RECORDER:-0} == 1 ]]; then + log "Waiting for recorder service to upload all pending recordings" + ensure_recorder_terminates_gracefully + log "Recorder service has terminated, exiting container" "ERROR" + exit 1 + fi + + start_window_manager + ;; + kasm_audio_out_websocket) + echo "Restarting Audio Out Websocket Service" + start_audio_out_websocket + ;; + kasm_audio_out) + echo "Restarting Audio Out Service" + start_audio_out + ;; + kasm_audio_in) + echo "Audio In Service Failed" + # TODO: Needs work in python project to support auto restart + # start_audio_in + ;; + upload_server) + echo "Restarting Upload Service" + # TODO: This will only work if both processes are killed, requires more work + start_upload + ;; + kasm_gamepad) + echo "Gamepad Service Failed" + # TODO: Needs work in python project to support auto restart + # start_gamepad + ;; + kasm_webcam) + echo "Webcam Service Failed" + # TODO: Needs work in python project to support auto restart + start_webcam + ;; + kasm_printer) + echo "Printer Service Failed" + # TODO: Needs work in python project to support auto restart + start_printer + ;; + custom_script) + echo "The custom startup script exited." + # custom startup scripts track the target process on their own, they should not exit + custom_startup + ;; + *) + echo "Unknown Service: $process" + ;; + esac + fi + done + + ensure_recorder_running + + sleep 3 +done + + +log "Exiting Kasm container"